|
@@ -47,17 +47,14 @@ static int rfkill_gpio_set_power(void *data, bool blocked)
|
|
|
{
|
|
|
struct rfkill_gpio_data *rfkill = data;
|
|
|
|
|
|
- if (blocked) {
|
|
|
- gpiod_set_value(rfkill->shutdown_gpio, 0);
|
|
|
- gpiod_set_value(rfkill->reset_gpio, 0);
|
|
|
- if (!IS_ERR(rfkill->clk) && rfkill->clk_enabled)
|
|
|
- clk_disable(rfkill->clk);
|
|
|
- } else {
|
|
|
- if (!IS_ERR(rfkill->clk) && !rfkill->clk_enabled)
|
|
|
- clk_enable(rfkill->clk);
|
|
|
- gpiod_set_value(rfkill->reset_gpio, 1);
|
|
|
- gpiod_set_value(rfkill->shutdown_gpio, 1);
|
|
|
- }
|
|
|
+ if (!blocked && !IS_ERR(rfkill->clk) && !rfkill->clk_enabled)
|
|
|
+ clk_enable(rfkill->clk);
|
|
|
+
|
|
|
+ gpiod_set_value_cansleep(rfkill->shutdown_gpio, !blocked);
|
|
|
+ gpiod_set_value_cansleep(rfkill->reset_gpio, !blocked);
|
|
|
+
|
|
|
+ if (blocked && !IS_ERR(rfkill->clk) && rfkill->clk_enabled)
|
|
|
+ clk_disable(rfkill->clk);
|
|
|
|
|
|
rfkill->clk_enabled = blocked;
|
|
|
|