Lines Matching refs:rfkill
68 struct rfkill *rfkill_dev;
118 struct rfkill_rk_data *rfkill = dev; in rfkill_rk_wake_host_irq() local
124 wake_lock_timeout(&rfkill->bt_irq_wl, in rfkill_rk_wake_host_irq()
148 static int rfkill_rk_setup_wake_irq(struct rfkill_rk_data *rfkill, int flag) in rfkill_rk_setup_wake_irq() argument
151 struct rfkill_rk_irq *irq = &rfkill->pdata->wake_host_irq; in rfkill_rk_setup_wake_irq()
154 rfkill->irq_req = 0; in rfkill_rk_setup_wake_irq()
155 ret = rfkill_rk_setup_gpio(rfkill->pdev, &irq->gpio, in rfkill_rk_setup_wake_irq()
156 rfkill->pdata->name, "wake_host"); in rfkill_rk_setup_wake_irq()
161 if (rfkill->irq_req) { in rfkill_rk_setup_wake_irq()
162 rfkill->irq_req = 0; in rfkill_rk_setup_wake_irq()
163 free_irq(irq->irq, rfkill); in rfkill_rk_setup_wake_irq()
172 irq->name, rfkill); in rfkill_rk_setup_wake_irq()
175 rfkill->irq_req = 1; in rfkill_rk_setup_wake_irq()
186 free_irq(irq->irq, rfkill); in rfkill_rk_setup_wake_irq()
193 static inline void rfkill_rk_sleep_bt_internal(struct rfkill_rk_data *rfkill, in rfkill_rk_sleep_bt_internal() argument
196 struct rfkill_rk_gpio *wake = &rfkill->pdata->wake_gpio; in rfkill_rk_sleep_bt_internal()
204 if (rfkill_rk_setup_gpio(rfkill->pdev, wake, in rfkill_rk_sleep_bt_internal()
205 rfkill->pdata->name, "wake") != 0) { in rfkill_rk_sleep_bt_internal()
220 struct rfkill_rk_data *rfkill = NULL; in rfkill_rk_delay_sleep_bt() local
224 rfkill = container_of(work, struct rfkill_rk_data, in rfkill_rk_delay_sleep_bt()
227 rfkill_rk_sleep_bt_internal(rfkill, BT_SLEEP); in rfkill_rk_delay_sleep_bt()
232 struct rfkill_rk_data *rfkill = g_rfkill; in rfkill_rk_sleep_bt() local
237 if (!rfkill) { in rfkill_rk_sleep_bt()
242 wake = &rfkill->pdata->wake_gpio; in rfkill_rk_sleep_bt()
248 cancel_delayed_work_sync(&rfkill->bt_sleep_delay_work); in rfkill_rk_sleep_bt()
250 rfkill_rk_sleep_bt_internal(rfkill, sleep); in rfkill_rk_sleep_bt()
254 schedule_delayed_work(&rfkill->bt_sleep_delay_work, in rfkill_rk_sleep_bt()
280 struct rfkill_rk_data *rfkill = data; in rfkill_rk_set_power() local
281 struct rfkill_rk_gpio *wake_host = &rfkill->pdata->wake_host_irq.gpio; in rfkill_rk_set_power()
282 struct rfkill_rk_gpio *poweron = &rfkill->pdata->poweron_gpio; in rfkill_rk_set_power()
283 struct rfkill_rk_gpio *reset = &rfkill->pdata->reset_gpio; in rfkill_rk_set_power()
284 struct rfkill_rk_gpio *rts = &rfkill->pdata->rts_gpio; in rfkill_rk_set_power()
285 struct pinctrl *pinctrl = rfkill->pdata->pinctrl; in rfkill_rk_set_power()
293 toggle = rfkill->pdata->power_toggle; in rfkill_rk_set_power()
355 rfkill_rk_setup_wake_irq(rfkill, 1); in rfkill_rk_set_power()
389 struct rfkill_rk_data *rfkill = g_rfkill; in rfkill_rk_pm_prepare() local
395 if (!rfkill) in rfkill_rk_pm_prepare()
398 rts = &rfkill->pdata->rts_gpio; in rfkill_rk_pm_prepare()
399 wake_host_irq = &rfkill->pdata->wake_host_irq; in rfkill_rk_pm_prepare()
402 if (rfkill->pdata->pinctrl && gpio_is_valid(rts->io)) { in rfkill_rk_pm_prepare()
404 pinctrl_select_state(rfkill->pdata->pinctrl, rts->gpio_state); in rfkill_rk_pm_prepare()
419 rfkill_init_sw_state(rfkill->rfkill_dev, BT_BLOCKED); in rfkill_rk_pm_prepare()
420 rfkill_set_sw_state(rfkill->rfkill_dev, BT_BLOCKED); in rfkill_rk_pm_prepare()
421 rfkill_set_hw_state(rfkill->rfkill_dev, false); in rfkill_rk_pm_prepare()
422 rfkill_rk_set_power(rfkill, BT_BLOCKED); in rfkill_rk_pm_prepare()
430 struct rfkill_rk_data *rfkill = g_rfkill; in rfkill_rk_pm_complete() local
436 if (!rfkill) in rfkill_rk_pm_complete()
439 wake_host_irq = &rfkill->pdata->wake_host_irq; in rfkill_rk_pm_complete()
440 rts = &rfkill->pdata->rts_gpio; in rfkill_rk_pm_complete()
447 if (rfkill->pdata->pinctrl && gpio_is_valid(rts->io)) { in rfkill_rk_pm_complete()
450 pinctrl_select_state(rfkill->pdata->pinctrl, rts->default_state); in rfkill_rk_pm_complete()
603 struct rfkill_rk_data *rfkill; in rfkill_rk_probe() local
631 rfkill = devm_kzalloc(&pdev->dev, sizeof(*rfkill), GFP_KERNEL); in rfkill_rk_probe()
632 if (!rfkill) in rfkill_rk_probe()
635 rfkill->pdata = pdata; in rfkill_rk_probe()
636 rfkill->pdev = pdev; in rfkill_rk_probe()
637 g_rfkill = rfkill; in rfkill_rk_probe()
684 ret = rfkill_rk_setup_gpio(pdev, &pdata->rts_gpio, rfkill->pdata->name, in rfkill_rk_probe()
689 wake_lock_init(&rfkill->bt_irq_wl, WAKE_LOCK_SUSPEND, in rfkill_rk_probe()
692 ret = rfkill_rk_setup_wake_irq(rfkill, 0); in rfkill_rk_probe()
697 rfkill->rfkill_dev = rfkill_alloc(pdata->name, &pdev->dev, pdata->type, in rfkill_rk_probe()
698 &rfkill_rk_ops, rfkill); in rfkill_rk_probe()
699 if (!rfkill->rfkill_dev) in rfkill_rk_probe()
702 rfkill_init_sw_state(rfkill->rfkill_dev, BT_BLOCKED); in rfkill_rk_probe()
703 rfkill_set_sw_state(rfkill->rfkill_dev, BT_BLOCKED); in rfkill_rk_probe()
704 rfkill_set_hw_state(rfkill->rfkill_dev, false); in rfkill_rk_probe()
705 ret = rfkill_register(rfkill->rfkill_dev); in rfkill_rk_probe()
709 INIT_DELAYED_WORK(&rfkill->bt_sleep_delay_work, in rfkill_rk_probe()
723 platform_set_drvdata(pdev, rfkill); in rfkill_rk_probe()
730 rfkill_destroy(rfkill->rfkill_dev); in rfkill_rk_probe()
736 wake_lock_destroy(&rfkill->bt_irq_wl); in rfkill_rk_probe()
745 struct rfkill_rk_data *rfkill = platform_get_drvdata(pdev); in rfkill_rk_remove() local
749 rfkill_unregister(rfkill->rfkill_dev); in rfkill_rk_remove()
750 rfkill_destroy(rfkill->rfkill_dev); in rfkill_rk_remove()
752 cancel_delayed_work_sync(&rfkill->bt_sleep_delay_work); in rfkill_rk_remove()
755 if (gpio_is_valid(rfkill->pdata->rts_gpio.io)) in rfkill_rk_remove()
756 gpio_free(rfkill->pdata->rts_gpio.io); in rfkill_rk_remove()
758 if (gpio_is_valid(rfkill->pdata->wake_host_irq.gpio.io)) { in rfkill_rk_remove()
759 free_irq(rfkill->pdata->wake_host_irq.irq, rfkill); in rfkill_rk_remove()
761 gpio_free(rfkill->pdata->wake_host_irq.gpio.io); in rfkill_rk_remove()
766 if (gpio_is_valid(rfkill->pdata->wake_gpio.io)) in rfkill_rk_remove()
767 gpio_free(rfkill->pdata->wake_gpio.io); in rfkill_rk_remove()
770 if (gpio_is_valid(rfkill->pdata->reset_gpio.io)) in rfkill_rk_remove()
771 gpio_free(rfkill->pdata->reset_gpio.io); in rfkill_rk_remove()
773 if (gpio_is_valid(rfkill->pdata->poweron_gpio.io)) in rfkill_rk_remove()
774 gpio_free(rfkill->pdata->poweron_gpio.io); in rfkill_rk_remove()
775 clk_disable_unprepare(rfkill->pdata->ext_clk); in rfkill_rk_remove()
776 wake_lock_destroy(&rfkill->bt_irq_wl); in rfkill_rk_remove()