Lines Matching refs:rfkill

14 /* Rock-chips rfkill driver for bluetooth
21 #include <linux/rfkill.h>
25 #include <linux/rfkill-bt.h>
26 #include <linux/rfkill-wlan.h>
36 #include <uapi/linux/rfkill.h>
68 struct rfkill *rfkill_dev;
118 struct rfkill_rk_data *rfkill = dev;
124 wake_lock_timeout(&rfkill->bt_irq_wl,
148 static int rfkill_rk_setup_wake_irq(struct rfkill_rk_data *rfkill, int flag)
151 struct rfkill_rk_irq *irq = &rfkill->pdata->wake_host_irq;
154 rfkill->irq_req = 0;
155 ret = rfkill_rk_setup_gpio(rfkill->pdev, &irq->gpio,
156 rfkill->pdata->name, "wake_host");
161 if (rfkill->irq_req) {
162 rfkill->irq_req = 0;
163 free_irq(irq->irq, rfkill);
172 irq->name, rfkill);
175 rfkill->irq_req = 1;
186 free_irq(irq->irq, rfkill);
193 static inline void rfkill_rk_sleep_bt_internal(struct rfkill_rk_data *rfkill,
196 struct rfkill_rk_gpio *wake = &rfkill->pdata->wake_gpio;
204 if (rfkill_rk_setup_gpio(rfkill->pdev, wake,
205 rfkill->pdata->name, "wake") != 0) {
220 struct rfkill_rk_data *rfkill = NULL;
224 rfkill = container_of(work, struct rfkill_rk_data,
227 rfkill_rk_sleep_bt_internal(rfkill, BT_SLEEP);
232 struct rfkill_rk_data *rfkill = g_rfkill;
237 if (!rfkill) {
242 wake = &rfkill->pdata->wake_gpio;
248 cancel_delayed_work_sync(&rfkill->bt_sleep_delay_work);
250 rfkill_rk_sleep_bt_internal(rfkill, sleep);
254 schedule_delayed_work(&rfkill->bt_sleep_delay_work,
267 LOG("%s: rfkill-bt driver has not Successful initialized\n",
280 struct rfkill_rk_data *rfkill = data;
281 struct rfkill_rk_gpio *wake_host = &rfkill->pdata->wake_host_irq.gpio;
282 struct rfkill_rk_gpio *poweron = &rfkill->pdata->poweron_gpio;
283 struct rfkill_rk_gpio *reset = &rfkill->pdata->reset_gpio;
284 struct rfkill_rk_gpio *rts = &rfkill->pdata->rts_gpio;
285 struct pinctrl *pinctrl = rfkill->pdata->pinctrl;
293 toggle = rfkill->pdata->power_toggle;
352 rfkill_rk_setup_wake_irq(rfkill, 1);
386 struct rfkill_rk_data *rfkill = g_rfkill;
392 if (!rfkill)
395 rts = &rfkill->pdata->rts_gpio;
396 wake_host_irq = &rfkill->pdata->wake_host_irq;
399 if (rfkill->pdata->pinctrl && gpio_is_valid(rts->io)) {
401 pinctrl_select_state(rfkill->pdata->pinctrl, rts->gpio_state);
416 rfkill_init_sw_state(rfkill->rfkill_dev, BT_BLOCKED);
417 rfkill_set_sw_state(rfkill->rfkill_dev, BT_BLOCKED);
418 rfkill_set_hw_state(rfkill->rfkill_dev, false);
419 rfkill_rk_set_power(rfkill, BT_BLOCKED);
427 struct rfkill_rk_data *rfkill = g_rfkill;
433 if (!rfkill)
436 wake_host_irq = &rfkill->pdata->wake_host_irq;
437 rts = &rfkill->pdata->rts_gpio;
444 if (rfkill->pdata->pinctrl && gpio_is_valid(rts->io)) {
447 pinctrl_select_state(rfkill->pdata->pinctrl, rts->default_state);
600 struct rfkill_rk_data *rfkill;
628 rfkill = devm_kzalloc(&pdev->dev, sizeof(*rfkill), GFP_KERNEL);
629 if (!rfkill)
632 rfkill->pdata = pdata;
633 rfkill->pdev = pdev;
634 g_rfkill = rfkill;
681 ret = rfkill_rk_setup_gpio(pdev, &pdata->rts_gpio, rfkill->pdata->name,
686 wake_lock_init(&rfkill->bt_irq_wl, WAKE_LOCK_SUSPEND,
689 ret = rfkill_rk_setup_wake_irq(rfkill, 0);
693 DBG("setup rfkill\n");
694 rfkill->rfkill_dev = rfkill_alloc(pdata->name, &pdev->dev, pdata->type,
695 &rfkill_rk_ops, rfkill);
696 if (!rfkill->rfkill_dev)
699 rfkill_init_sw_state(rfkill->rfkill_dev, BT_BLOCKED);
700 rfkill_set_sw_state(rfkill->rfkill_dev, BT_BLOCKED);
701 rfkill_set_hw_state(rfkill->rfkill_dev, false);
702 ret = rfkill_register(rfkill->rfkill_dev);
706 INIT_DELAYED_WORK(&rfkill->bt_sleep_delay_work,
709 //rfkill_rk_set_power(rfkill, BT_BLOCKED);
720 platform_set_drvdata(pdev, rfkill);
727 rfkill_destroy(rfkill->rfkill_dev);
733 wake_lock_destroy(&rfkill->bt_irq_wl);
742 struct rfkill_rk_data *rfkill = platform_get_drvdata(pdev);
746 rfkill_unregister(rfkill->rfkill_dev);
747 rfkill_destroy(rfkill->rfkill_dev);
749 cancel_delayed_work_sync(&rfkill->bt_sleep_delay_work);
752 if (gpio_is_valid(rfkill->pdata->rts_gpio.io))
753 gpio_free(rfkill->pdata->rts_gpio.io);
755 if (gpio_is_valid(rfkill->pdata->wake_host_irq.gpio.io)) {
756 free_irq(rfkill->pdata->wake_host_irq.irq, rfkill);
758 gpio_free(rfkill->pdata->wake_host_irq.gpio.io);
763 if (gpio_is_valid(rfkill->pdata->wake_gpio.io))
764 gpio_free(rfkill->pdata->wake_gpio.io);
767 if (gpio_is_valid(rfkill->pdata->reset_gpio.io))
768 gpio_free(rfkill->pdata->reset_gpio.io);
770 if (gpio_is_valid(rfkill->pdata->poweron_gpio.io))
771 gpio_free(rfkill->pdata->poweron_gpio.io);
772 clk_disable_unprepare(rfkill->pdata->ext_clk);
773 wake_lock_destroy(&rfkill->bt_irq_wl);
824 MODULE_DESCRIPTION("rock-chips rfkill for Bluetooth v0.3");