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>
63 struct rfkill *rfkill_dev;
113 struct rfkill_rk_data *rfkill = dev;
119 wake_lock_timeout(&rfkill->bt_irq_wl, msecs_to_jiffies(BT_IRQ_WAKELOCK_TIMEOUT));
141 static int rfkill_rk_setup_wake_irq(struct rfkill_rk_data *rfkill, int flag)
144 struct rfkill_rk_irq *irq = &rfkill->pdata->wake_host_irq;
147 rfkill->irq_req = 0;
148 ret = rfkill_rk_setup_gpio(rfkill->pdev, &irq->gpio, rfkill->pdata->name, "wake_host");
154 if (rfkill->irq_req) {
155 rfkill->irq_req = 0;
156 free_irq(irq->irq, rfkill);
163 rfkill);
167 rfkill->irq_req = 1;
179 free_irq(irq->irq, rfkill);
186 static inline void rfkill_rk_sleep_bt_internal(struct rfkill_rk_data *rfkill, bool sleep)
188 struct rfkill_rk_gpio *wake = &rfkill->pdata->wake_gpio;
196 if (rfkill_rk_setup_gpio(rfkill->pdev, wake, rfkill->pdata->name, "wake") != 0) {
211 struct rfkill_rk_data *rfkill = NULL;
215 rfkill = container_of(work, struct rfkill_rk_data, bt_sleep_delay_work.work);
217 rfkill_rk_sleep_bt_internal(rfkill, BT_SLEEP);
222 struct rfkill_rk_data *rfkill = g_rfkill;
228 if (!rfkill) {
233 wake = &rfkill->pdata->wake_gpio;
239 ret = cancel_delayed_work_sync(&rfkill->bt_sleep_delay_work);
241 rfkill_rk_sleep_bt_internal(rfkill, sleep);
245 schedule_delayed_work(&rfkill->bt_sleep_delay_work, msecs_to_jiffies(BT_WAKEUP_TIMEOUT));
257 LOG("%s: rfkill-bt driver has not Successful initialized\n", __func__);
269 struct rfkill_rk_data *rfkill = data;
270 struct rfkill_rk_gpio *wake_host = &rfkill->pdata->wake_host_irq.gpio;
271 struct rfkill_rk_gpio *poweron = &rfkill->pdata->poweron_gpio;
272 struct rfkill_rk_gpio *reset = &rfkill->pdata->reset_gpio;
273 struct rfkill_rk_gpio *rts = &rfkill->pdata->rts_gpio;
274 struct pinctrl *pinctrl = rfkill->pdata->pinctrl;
282 toggle = rfkill->pdata->power_toggle;
339 rfkill_rk_setup_wake_irq(rfkill, 1);
371 struct rfkill_rk_data *rfkill = g_rfkill;
374 struct pinctrl *pinctrl = rfkill->pdata->pinctrl;
378 if (!rfkill) {
382 rts = &rfkill->pdata->rts_gpio;
383 wake_host_irq = &rfkill->pdata->wake_host_irq;
403 rfkill_set_states(rfkill->rfkill_dev, BT_BLOCKED, false);
404 rfkill_rk_set_power(rfkill, BT_BLOCKED);
412 struct rfkill_rk_data *rfkill = g_rfkill;
415 struct pinctrl *pinctrl = rfkill->pdata->pinctrl;
419 if (!rfkill) {
423 wake_host_irq = &rfkill->pdata->wake_host_irq;
424 rts = &rfkill->pdata->rts_gpio;
581 struct rfkill_rk_data *rfkill;
608 rfkill = devm_kzalloc(&pdev->dev, sizeof(*rfkill), GFP_KERNEL);
609 if (!rfkill) {
613 rfkill->pdata = pdata;
614 rfkill->pdev = pdev;
615 g_rfkill = rfkill;
662 ret = rfkill_rk_setup_gpio(pdev, &pdata->rts_gpio, rfkill->pdata->name, "rts");
667 wake_lock_init(&rfkill->bt_irq_wl, WAKE_LOCK_SUSPEND, "rfkill_rk_irq_wl");
669 ret = rfkill_rk_setup_wake_irq(rfkill, 0);
674 DBG("setup rfkill\n");
675 rfkill->rfkill_dev = rfkill_alloc(pdata->name, &pdev->dev, pdata->type, &rfkill_rk_ops, rfkill);
676 if (!rfkill->rfkill_dev) {
680 rfkill_set_states(rfkill->rfkill_dev, BT_BLOCKED, false);
681 ret = rfkill_register(rfkill->rfkill_dev);
686 INIT_DELAYED_WORK(&rfkill->bt_sleep_delay_work, rfkill_rk_delay_sleep_bt);
696 platform_set_drvdata(pdev, rfkill);
703 rfkill_destroy(rfkill->rfkill_dev);
709 wake_lock_destroy(&rfkill->bt_irq_wl);
718 struct rfkill_rk_data *rfkill = platform_get_drvdata(pdev);
722 rfkill_unregister(rfkill->rfkill_dev);
723 rfkill_destroy(rfkill->rfkill_dev);
725 cancel_delayed_work_sync(&rfkill->bt_sleep_delay_work);
728 if (gpio_is_valid(rfkill->pdata->rts_gpio.io)) {
729 gpio_free(rfkill->pdata->rts_gpio.io);
732 if (gpio_is_valid(rfkill->pdata->wake_host_irq.gpio.io)) {
733 free_irq(rfkill->pdata->wake_host_irq.irq, rfkill);
735 gpio_free(rfkill->pdata->wake_host_irq.gpio.io);
740 if (gpio_is_valid(rfkill->pdata->wake_gpio.io)) {
741 gpio_free(rfkill->pdata->wake_gpio.io);
745 if (gpio_is_valid(rfkill->pdata->reset_gpio.io)) {
746 gpio_free(rfkill->pdata->reset_gpio.io);
749 if (gpio_is_valid(rfkill->pdata->poweron_gpio.io)) {
750 gpio_free(rfkill->pdata->poweron_gpio.io);
752 clk_disable_unprepare(rfkill->pdata->ext_clk);
753 wake_lock_destroy(&rfkill->bt_irq_wl);
803 MODULE_DESCRIPTION("rock-chips rfkill for Bluetooth v0.3");