From 208033c97d0f53c40a67836e1eaebcf996a71c3a Mon Sep 17 00:00:00 2001 From: weiweij Date: Tue, 12 Apr 2022 11:29:45 +0800 Subject: [PATCH] charger: add gpio request protection for WLS control For WLS gpio control, if GPIO is requested failed. We should block the driver. Or if the driver use the gpio that is requested failed, there will be some unexpected problems. Change-Id: I8460d64032d673e5fcd32acd135e1f7b65f677d3 Reviewed-on: https://gerrit.mot.com/2239374 SLTApproved: Slta Waiver SME-Granted: SME Approvals Granted Reviewed-by: Huosheng Liao Tested-by: Jira Key Reviewed-by: Haijian Ma Submit-Approved: Jira Key --- drivers/power/bq2589x_chg_mmi/bq2589x_charger.c | 8 +++++--- drivers/power/sgm4154x_chg_mmi/sgm4154x_charger.c | 8 +++++--- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/drivers/power/bq2589x_chg_mmi/bq2589x_charger.c b/drivers/power/bq2589x_chg_mmi/bq2589x_charger.c index 9a0f419f82a5..5c2d17d09a84 100644 --- a/drivers/power/bq2589x_chg_mmi/bq2589x_charger.c +++ b/drivers/power/bq2589x_chg_mmi/bq2589x_charger.c @@ -1416,10 +1416,12 @@ static int bq2589x_parse_dt(struct device *dev, struct bq2589x *bq) if (gpio_is_valid(bq->wls_en_gpio)) { ret = gpio_request(bq->wls_en_gpio, "mmi wls en pin"); - if (ret) + if (ret) { dev_err(bq->dev, "%s: %d gpio(wls en) request failed\n", __func__, bq->wls_en_gpio); - else - gpio_direction_output(bq->wls_en_gpio, 0);//default enable wls charge + return ret; + } + + gpio_direction_output(bq->wls_en_gpio, 0);//default enable wls charge } ret = of_property_read_u32(np, "ti,bq2589x,vbus-volt-high-level", &pe.high_volt_level); diff --git a/drivers/power/sgm4154x_chg_mmi/sgm4154x_charger.c b/drivers/power/sgm4154x_chg_mmi/sgm4154x_charger.c index d382139ea1c6..0b843a89a073 100644 --- a/drivers/power/sgm4154x_chg_mmi/sgm4154x_charger.c +++ b/drivers/power/sgm4154x_chg_mmi/sgm4154x_charger.c @@ -2495,10 +2495,12 @@ static int sgm4154x_parse_dt(struct sgm4154x_device *sgm) if (gpio_is_valid(sgm->wls_en_gpio)) { ret = gpio_request(sgm->wls_en_gpio, "mmi wls en pin"); - if (ret) + if (ret) { dev_err(sgm->dev, "%s: %d gpio(wls en) request failed\n", __func__, sgm->wls_en_gpio); - else - gpio_direction_output(sgm->wls_en_gpio, 0);//default enable wls charge + return ret; + } + + gpio_direction_output(sgm->wls_en_gpio, 0);//default enable wls charge } /* sw jeita */