X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=net%2Frfkill%2Frfkill-bt.c;h=332eb47b09868128631c96b11ea5ed2fb442b398;hb=e46c9b02e2422e7b8f8a63ff53f1f8eddc23b247;hp=a1a156c22efdabd1777a410f6ca9f7daafda0df5;hpb=f40cf81b65d1431e358991b06a79da0b0ff1b0b4;p=firefly-linux-kernel-4.4.55.git diff --git a/net/rfkill/rfkill-bt.c b/net/rfkill/rfkill-bt.c old mode 100755 new mode 100644 index a1a156c22efd..332eb47b0986 --- a/net/rfkill/rfkill-bt.c +++ b/net/rfkill/rfkill-bt.c @@ -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;