From 6778948f9de86c3cfaf36725a7c87dcff9ba247f Mon Sep 17 00:00:00 2001 From: hc <hc@nodka.com> Date: Mon, 11 Dec 2023 08:20:59 +0000 Subject: [PATCH] kernel_5.10 no rt --- kernel/net/rfkill/rfkill-bt.c | 25 ++++++++++++------------- 1 files changed, 12 insertions(+), 13 deletions(-) diff --git a/kernel/net/rfkill/rfkill-bt.c b/kernel/net/rfkill/rfkill-bt.c index 719a23d..73b802c 100644 --- a/kernel/net/rfkill/rfkill-bt.c +++ b/kernel/net/rfkill/rfkill-bt.c @@ -175,15 +175,11 @@ rfkill->irq_req = 1; LOG("** disable irq\n"); disable_irq(irq->irq); - ret = enable_irq_wake(irq->irq); - if (ret) - goto fail3; + /*ret = disable_irq_wake(irq->irq);init irq wake is disabled,no need to disable*/ } return ret; -fail3: - free_irq(irq->irq, rfkill); fail2: gpio_free(irq->gpio.io); fail1: @@ -292,12 +288,6 @@ toggle = rfkill->pdata->power_toggle; - if (toggle) { - if (rfkill_get_wifi_power_state(&wifi_power)) { - LOG("%s: cannot get wifi power state!\n", __func__); - return -1; - } - } DBG("%s: toggle = %s\n", __func__, toggle ? "true" : "false"); @@ -323,8 +313,6 @@ gpio_direction_output(poweron->io, poweron->enable); msleep(20); - if (gpio_is_valid(wake_host->io)) - gpio_direction_input(wake_host->io); } } @@ -335,6 +323,11 @@ msleep(20); gpio_direction_output(reset->io, reset->enable); } + } + + if (gpio_is_valid(wake_host->io)) { + LOG("%s: set bt wake_host input!\n", __func__); + gpio_direction_input(wake_host->io); } if (pinctrl && gpio_is_valid(rts->io)) { @@ -369,6 +362,10 @@ } } if (toggle) { + if (rfkill_get_wifi_power_state(&wifi_power)) { + LOG("%s: cannot get wifi power state!\n", __func__); + return -EPERM; + } if (!wifi_power) { LOG("%s: bt will set vbat to low\n", __func__); rfkill_set_wifi_bt_power(0); @@ -410,6 +407,7 @@ if (gpio_is_valid(wake_host_irq->gpio.io) && bt_power_state) { DBG("enable irq for bt wakeup host\n"); enable_irq(wake_host_irq->irq); + enable_irq_wake(wake_host_irq->irq); } #ifdef CONFIG_RFKILL_RESET @@ -439,6 +437,7 @@ if (gpio_is_valid(wake_host_irq->gpio.io) && bt_power_state) { LOG("** disable irq\n"); disable_irq(wake_host_irq->irq); + disable_irq_wake(wake_host_irq->irq); } if (rfkill->pdata->pinctrl && gpio_is_valid(rts->io)) { -- Gitblit v1.6.2