static int __init smdk6410_btsleep_probe(struct platform_device *pdev) #endif /* #ifdef CONFIG_MACH_JET */ #endif /* #ifdef CONFIG_MACH_SPICA */ #endif /* #ifdef CONFIG_MACH_INSTINCTQ */ { int rc = 0; bt_sleep = rfkill_allocate(&pdev->dev, RFKILL_TYPE_BLUETOOTH); if (!bt_sleep) return -ENOMEM; bt_sleep->name = bt_name; bt_sleep->state = RFKILL_STATE_UNBLOCKED; /* userspace cannot take exclusive control */ bt_sleep->user_claim_unsupported = 1; bt_sleep->user_claim = 0; bt_sleep->data = NULL; // user data bt_sleep->toggle_radio = bluetooth_set_sleep; rc = rfkill_register(bt_sleep); if (rc) rfkill_free(bt_sleep); #ifdef CONFIG_MACH_INSTINCTQ printk("[BT] rfkill_force_state(bt_sleep, RFKILL_STATE_UNBLOCKED) \n"); #else printk(KERN_DEBUG "[BT] rfkill_force_state(bt_sleep, RFKILL_STATE_UNBLOCKED) \n"); #endif /* #ifdef CONFIG_MACH_INSTINCTQ */ rfkill_force_state(bt_sleep, RFKILL_STATE_UNBLOCKED); bluetooth_set_sleep(NULL, RFKILL_STATE_UNBLOCKED); return rc; }
static int __init jupiter_btsleep_probe(struct platform_device *pdev) { int rc = 0; bt_sleep = rfkill_allocate(&pdev->dev, RFKILL_TYPE_BLUETOOTH); if (!bt_sleep) return -ENOMEM; bt_sleep->name = "bt_sleep"; bt_sleep->state = 1; bt_sleep->state = RFKILL_STATE_SOFT_BLOCKED; /* userspace cannot take exclusive control */ bt_sleep->user_claim_unsupported = 1; bt_sleep->user_claim = 0; bt_sleep->data = NULL; // user data bt_sleep->toggle_radio = bluetooth_set_sleep; rc = rfkill_register(bt_sleep); if (rc) rfkill_free(bt_sleep); printk(KERN_DEBUG "[BT] rfkill_force_state(bt_sleep, RFKILL_STATE_UNBLOCKED) \n"); rfkill_force_state(bt_sleep, RFKILL_STATE_UNBLOCKED); bluetooth_set_sleep(NULL, RFKILL_STATE_UNBLOCKED); return rc; }
static void bluetooth_update_rfk(void) { int result; if (!bluetooth_rfkill) return; result = bluetooth_get_radiosw(); if (result < 0) return; rfkill_force_state(bluetooth_rfkill, result); }
static int __init jupiter_rfkill_probe(struct platform_device *pdev) { int rc = 0; int irq,ret; //Initialize wake locks wake_lock_init(&rfkill_wake_lock, WAKE_LOCK_SUSPEND, "board-rfkill"); wake_lock_init(&bt_wake_lock, WAKE_LOCK_SUSPEND, "bt-rfkill"); //BT Host Wake IRQ irq = IRQ_BT_HOST_WAKE; set_irq_type(irq, IRQ_TYPE_EDGE_BOTH); ret = request_irq(irq, bt_host_wake_irq_handler, 0, "bt_host_wake_irq_handler", NULL); if(ret < 0) printk(KERN_ERR "[BT] Request_irq failed \n"); set_irq_type(irq, IRQ_TYPE_EDGE_BOTH); // enable_irq(IRQ_EINT(22)); //RFKILL init - default to bluetooth off rfkill_switch_all(RFKILL_TYPE_BLUETOOTH, RFKILL_STATE_SOFT_BLOCKED); bt_rfk = rfkill_allocate(&pdev->dev, RFKILL_TYPE_BLUETOOTH); if (!bt_rfk) return -ENOMEM; bt_rfk->name = bt_name; bt_rfk->state = RFKILL_STATE_SOFT_BLOCKED; /* userspace cannot take exclusive control */ bt_rfk->user_claim_unsupported = 1; bt_rfk->user_claim = 0; bt_rfk->data = NULL; // user data bt_rfk->toggle_radio = bluetooth_set_power; printk(KERN_DEBUG "[BT] rfkill_register(bt_rfk) \n"); rc = rfkill_register(bt_rfk); if (rc) { printk (KERN_ERR "***********ERROR IN REGISTERING THE RFKILL***********\n"); rfkill_free(bt_rfk); } bluetooth_set_power(NULL, RFKILL_STATE_SOFT_BLOCKED); rfkill_force_state(bt_rfk, RFKILL_STATE_SOFT_BLOCKED); return rc; }
static void rt2x00rfkill_poll(struct work_struct *work) { struct rt2x00_dev *rt2x00dev = container_of(work, struct rt2x00_dev, rfkill_work.work); enum rfkill_state state; if (!test_bit(RFKILL_STATE_REGISTERED, &rt2x00dev->rfkill_state) || !test_bit(CONFIG_SUPPORT_HW_BUTTON, &rt2x00dev->flags)) return; /* * Poll latest state and report it to rfkill who should sort * out if the state should be toggled or not. */ if (!rt2x00rfkill_get_state(rt2x00dev, &state)) rfkill_force_state(rt2x00dev->rfkill, state); queue_delayed_work(rt2x00dev->hw->workqueue, &rt2x00dev->rfkill_work, RFKILL_POLL_INTERVAL); }
static int __init apollo_rfkill_probe(struct platform_device *pdev) { int ret; s5p_config_gpio_alive_table(ARRAY_SIZE(bt_gpio_table), bt_gpio_table); /* Host Wake IRQ */ wake_lock_init(&bt_host_wakelock, WAKE_LOCK_SUSPEND, "bt_host_wake"); bt_rfkill = rfkill_allocate(&pdev->dev, RFKILL_TYPE_BLUETOOTH); if (!bt_rfkill) goto err_rfkill; bt_rfkill->name = "bt_rfkill"; /* userspace cannot take exclusive control */ bt_rfkill->user_claim_unsupported = 1; bt_rfkill->user_claim = 0; bt_rfkill->data = pdev; /* user data */ bt_rfkill->toggle_radio = bluetooth_set_power; /* set bt_rfkill default state to off */ rfkill_set_default(RFKILL_TYPE_BLUETOOTH, RFKILL_STATE_SOFT_BLOCKED); ret = rfkill_register(bt_rfkill); if (ret) { rfkill_free(bt_rfkill); goto err_rfkill; } #ifdef BT_SLEEP_ENABLE wake_lock_init(&bt_wakelock, WAKE_LOCK_SUSPEND, "bt_wake"); bt_sleep = rfkill_allocate(&pdev->dev, RFKILL_TYPE_BLUETOOTH); if (!bt_sleep) goto err_sleep; bt_sleep->name = "bt_sleep"; /* userspace cannot take exclusive control */ bt_sleep->user_claim_unsupported = 1; bt_sleep->user_claim = 0; bt_sleep->data = NULL; /* user data */ bt_sleep->toggle_radio = bluetooth_set_sleep; ret = rfkill_register(bt_sleep); if (ret) { rfkill_free(bt_sleep); goto err_sleep; } /* set bt_sleep default state to wake_unlock */ rfkill_force_state(bt_sleep, RFKILL_STATE_UNBLOCKED); #endif /* BT_SLEEP_ENABLE */ return 0; err_sleep: wake_lock_destroy(&bt_wakelock); rfkill_unregister(bt_rfkill); err_rfkill: wake_lock_destroy(&bt_host_wakelock); return ret; }