ARM64: DTS: Add rk3399-firefly uart4 device, node as /dev/ttyS1
[firefly-linux-kernel-4.4.55.git] / net / rfkill / rfkill-bt.c
old mode 100755 (executable)
new mode 100644 (file)
index a1a156c..332eb47
@@ -266,10 +266,8 @@ static int rfkill_rk_set_power(void *data, bool blocked)
        struct rfkill_rk_data *rfkill = data;
     struct rfkill_rk_gpio *poweron = &rfkill->pdata->poweron_gpio;
     struct rfkill_rk_gpio *reset = &rfkill->pdata->reset_gpio;
-#if defined(CONFIG_AP6210) || defined(CONFIG_AP6335)
     struct rfkill_rk_gpio* rts = &rfkill->pdata->rts_gpio;
     struct pinctrl *pinctrl = rfkill->pdata->pinctrl;
-#endif
     int power = 0, vref_ctrl_enable = 0;
     bool toggle = false;
 
@@ -289,8 +287,6 @@ static int rfkill_rk_set_power(void *data, bool blocked)
     }
 
        if (false == blocked) { 
-        if (1 == vref_ctrl_enable && 0 == power)
-            rockchip_wifi_ref_voltage(1);
 
         rfkill_rk_sleep_bt(BT_WAKEUP); // ensure bt is wakeup
 
@@ -307,7 +303,7 @@ static int rfkill_rk_set_power(void *data, bool blocked)
             msleep(20);
                        gpio_direction_output(reset->io, reset->enable);
         }
-#if defined(CONFIG_AP6210) || defined(CONFIG_AP6335)
+
         if (pinctrl != NULL && gpio_is_valid(rts->io))
         {
             pinctrl_select_state(pinctrl, rts->gpio_state);
@@ -318,7 +314,7 @@ static int rfkill_rk_set_power(void *data, bool blocked)
             gpio_direction_output(rts->io, !rts->enable);
             pinctrl_select_state(pinctrl, rts->default_state);
         }
-#endif
+
         bt_power_state = 1;
        LOG("bt turn on power\n");
        } else {
@@ -336,8 +332,6 @@ static int rfkill_rk_set_power(void *data, bool blocked)
             msleep(20);
         }
 
-        if (1 == vref_ctrl_enable && 0 == power)
-            rockchip_wifi_ref_voltage(0);
        }
 
        return 0;
@@ -528,7 +522,13 @@ static int bluetooth_platdata_parse_dt(struct device *dev,
         LOG("%s: get property: BT,wake_host_irq = %d.\n", __func__, gpio);
     } else data->wake_host_irq.gpio.io = -1;
 
-    return 0;
+       data->ext_clk = devm_clk_get(dev, "ext_clock");
+       if (IS_ERR(data->ext_clk)) {
+               LOG("%s: clk_get failed!!!.\n", __func__);
+       } else {
+               clk_prepare_enable(data->ext_clk);
+       }
+       return 0;
 }
 #endif //CONFIG_OF
 
@@ -573,10 +573,8 @@ static int rfkill_rk_probe(struct platform_device *pdev)
     pdata->type = RFKILL_TYPE_BLUETOOTH;
 
        rfkill = devm_kzalloc(&pdev->dev, sizeof(*rfkill), GFP_KERNEL);
-       if (!rfkill) {
-        kfree(pdata);
+       if (!rfkill)
                return -ENOMEM;
-    }
 
        rfkill->pdata = pdata;
     rfkill->pdev = pdev;
@@ -704,8 +702,7 @@ static int rfkill_rk_remove(struct platform_device *pdev)
     
     if (gpio_is_valid(rfkill->pdata->poweron_gpio.io))
         gpio_free(rfkill->pdata->poweron_gpio.io);
-
-    kfree(rfkill);
+       clk_disable_unprepare(rfkill->pdata->ext_clk);
     g_rfkill = NULL;
 
        return 0;