power: supply: axp288_charger: Use regmap_update_bits to set the input limits
authorHans de Goede <hdegoede@redhat.com>
Tue, 26 Dec 2017 12:59:03 +0000 (13:59 +0100)
committerSebastian Reichel <sebastian.reichel@collabora.co.uk>
Mon, 8 Jan 2018 17:38:57 +0000 (18:38 +0100)
Use regmap_update_bits in axp288_charger_set_vbus_inlmt, instead of DIY
code.

Reviewed-by: Chen-Yu Tsai <wens@csie.org>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.co.uk>
drivers/power/supply/axp288_charger.c

index 03f502e012c3869fc2558efec1cb4715c553c065..7b48afca1a1fdaec503094d9af6653c7058d2af4 100644 (file)
@@ -222,14 +222,8 @@ static inline int axp288_charger_set_vbus_inlmt(struct axp288_chrg_info *info,
                                           int inlmt)
 {
        int ret;
-       unsigned int val;
        u8 reg_val;
 
-       /* Read in limit register */
-       ret = regmap_read(info->regmap, AXP20X_CHRG_BAK_CTRL, &val);
-       if (ret < 0)
-               goto set_inlmt_fail;
-
        if (inlmt <= ILIM_100MA) {
                reg_val = CHRG_VBUS_ILIM_100MA;
                inlmt = ILIM_100MA;
@@ -253,15 +247,15 @@ static inline int axp288_charger_set_vbus_inlmt(struct axp288_chrg_info *info,
                inlmt = ILIM_3000MA;
        }
 
-       reg_val = (val & ~CHRG_VBUS_ILIM_MASK)
-                       | (reg_val << CHRG_VBUS_ILIM_BIT_POS);
-       ret = regmap_write(info->regmap, AXP20X_CHRG_BAK_CTRL, reg_val);
+       reg_val = reg_val << CHRG_VBUS_ILIM_BIT_POS;
+
+       ret = regmap_update_bits(info->regmap, AXP20X_CHRG_BAK_CTRL,
+                                CHRG_VBUS_ILIM_MASK, reg_val);
        if (ret >= 0)
                info->inlmt = inlmt;
        else
                dev_err(&info->pdev->dev, "charger BAK control %d\n", ret);
 
-set_inlmt_fail:
        return ret;
 }