lkml.org 
[lkml]   [2020]   [Jun]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.4 126/314] power: supply: lp8788: Fix an error handling path in lp8788_charger_probe()
    Date
    From: Christophe JAILLET <christophe.jaillet@wanadoo.fr>

    [ Upstream commit 934ed3847a4ebc75b655659c4d2349ba4337941c ]

    In the probe function, in case of error, resources allocated in
    'lp8788_setup_adc_channel()' must be released.

    This can be achieved easily by using the devm_ variant of
    'iio_channel_get()'.
    This has the extra benefit to simplify the remove function and to axe the
    'lp8788_release_adc_channel()' function which is now useless.

    Fixes: 98a276649358 ("power_supply: Add new lp8788 charger driver")
    Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
    Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/power/supply/lp8788-charger.c | 18 ++----------------
    1 file changed, 2 insertions(+), 16 deletions(-)

    diff --git a/drivers/power/supply/lp8788-charger.c b/drivers/power/supply/lp8788-charger.c
    index 84a206f42a8e9..e7931ffb7151d 100644
    --- a/drivers/power/supply/lp8788-charger.c
    +++ b/drivers/power/supply/lp8788-charger.c
    @@ -572,27 +572,14 @@ static void lp8788_setup_adc_channel(struct device *dev,
    return;

    /* ADC channel for battery voltage */
    - chan = iio_channel_get(dev, pdata->adc_vbatt);
    + chan = devm_iio_channel_get(dev, pdata->adc_vbatt);
    pchg->chan[LP8788_VBATT] = IS_ERR(chan) ? NULL : chan;

    /* ADC channel for battery temperature */
    - chan = iio_channel_get(dev, pdata->adc_batt_temp);
    + chan = devm_iio_channel_get(dev, pdata->adc_batt_temp);
    pchg->chan[LP8788_BATT_TEMP] = IS_ERR(chan) ? NULL : chan;
    }

    -static void lp8788_release_adc_channel(struct lp8788_charger *pchg)
    -{
    - int i;
    -
    - for (i = 0; i < LP8788_NUM_CHG_ADC; i++) {
    - if (!pchg->chan[i])
    - continue;
    -
    - iio_channel_release(pchg->chan[i]);
    - pchg->chan[i] = NULL;
    - }
    -}
    -
    static ssize_t lp8788_show_charger_status(struct device *dev,
    struct device_attribute *attr, char *buf)
    {
    @@ -735,7 +722,6 @@ static int lp8788_charger_remove(struct platform_device *pdev)
    flush_work(&pchg->charger_work);
    lp8788_irq_unregister(pdev, pchg);
    lp8788_psy_unregister(pchg);
    - lp8788_release_adc_channel(pchg);

    return 0;
    }
    --
    2.25.1


    \
     
     \ /
      Last update: 2020-06-23 23:20    [W:4.065 / U:0.012 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site