From e1cbb2f68d51b817e63148d98d6b4c9e625565b2 Mon Sep 17 00:00:00 2001 From: Sungjun Park Date: Tue, 19 Apr 2016 17:45:57 -0700 Subject: [PATCH] bluetooth: Fix populating issue for no DT node In case no DT node name, it return error and doesn't go through other DT node for Bluetooth regulators. To support multiple Bluetooth chipset, it need to continue to check remaining DT node since some DT node maybe not available for some Bluetooth Chipset. Change-Id: I2427f674ef4889c39580dc2568a6b9566f03f8f2 Signed-off-by: Sungjun Park --- drivers/bluetooth/bluetooth-power.c | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/drivers/bluetooth/bluetooth-power.c b/drivers/bluetooth/bluetooth-power.c index 00cb1064ea13..77a463d8217e 100644 --- a/drivers/bluetooth/bluetooth-power.c +++ b/drivers/bluetooth/bluetooth-power.c @@ -248,7 +248,7 @@ static int bluetooth_power(int on) goto chip_pwd_fail; } } - if (bt_power_pdata->bt_gpio_sys_rst) { + if (bt_power_pdata->bt_gpio_sys_rst > 0) { rc = bt_configure_gpios(on); if (rc < 0) { BT_PWR_ERR("bt_power gpio config failed"); @@ -258,7 +258,7 @@ static int bluetooth_power(int on) } else { bt_configure_gpios(on); gpio_fail: - if (bt_power_pdata->bt_gpio_sys_rst) + if (bt_power_pdata->bt_gpio_sys_rst > 0) gpio_free(bt_power_pdata->bt_gpio_sys_rst); bt_vreg_disable(bt_power_pdata->bt_chip_pwd); chip_pwd_fail: @@ -440,46 +440,44 @@ static int bt_power_populate_dt_pinfo(struct platform_device *pdev) bt_power_pdata->bt_gpio_sys_rst = of_get_named_gpio(pdev->dev.of_node, "qca,bt-reset-gpio", 0); - if (bt_power_pdata->bt_gpio_sys_rst < 0) { + if (bt_power_pdata->bt_gpio_sys_rst < 0) BT_PWR_ERR("bt-reset-gpio not provided in device tree"); - return bt_power_pdata->bt_gpio_sys_rst; - } + rc = bt_dt_parse_vreg_info(&pdev->dev, &bt_power_pdata->bt_vdd_core, "qca,bt-vdd-core"); if (rc < 0) - return rc; + BT_PWR_ERR("bt-vdd-core not provided in device tree"); rc = bt_dt_parse_vreg_info(&pdev->dev, &bt_power_pdata->bt_vdd_io, "qca,bt-vdd-io"); if (rc < 0) - return rc; + BT_PWR_ERR("bt-vdd-io not provided in device tree"); rc = bt_dt_parse_vreg_info(&pdev->dev, &bt_power_pdata->bt_vdd_xtal, "qca,bt-vdd-xtal"); if (rc < 0) - return rc; + BT_PWR_ERR("bt-vdd-xtal not provided in device tree"); rc = bt_dt_parse_vreg_info(&pdev->dev, &bt_power_pdata->bt_vdd_pa, "qca,bt-vdd-pa"); if (rc < 0) - return rc; + BT_PWR_ERR("bt-vdd-pa not provided in device tree"); rc = bt_dt_parse_vreg_info(&pdev->dev, &bt_power_pdata->bt_vdd_ldo, "qca,bt-vdd-ldo"); if (rc < 0) - return rc; + BT_PWR_ERR("bt-vdd-ldo not provided in device tree"); rc = bt_dt_parse_vreg_info(&pdev->dev, &bt_power_pdata->bt_chip_pwd, "qca,bt-chip-pwd"); if (rc < 0) - return rc; - + BT_PWR_ERR("bt-chip-pwd not provided in device tree"); } bt_power_pdata->bt_power_setup = bluetooth_power;