power: supply: bq24190_charger: Enable devicetree config
authorLiam Breck <kernel@networkimprov.net>
Mon, 28 Aug 2017 21:23:47 +0000 (14:23 -0700)
committerSebastian Reichel <sre@kernel.org>
Tue, 29 Aug 2017 21:08:38 +0000 (23:08 +0200)
Add get_config(). Rename set_mode_host() to set_config().
Call get_config() and hw_init() after power_supply_register().
No functional changes.

Cc: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Liam Breck <kernel@networkimprov.net>
Acked-by: Tony Lindgren <tony@atomide.com>
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.co.uk>
drivers/power/supply/bq24190_charger.c

index 4cb5741cbb46210af9cb17bfd142321728100689..6e651fe2743fcfaa1b042dd89e8eed8ab98410c3 100644 (file)
@@ -504,15 +504,7 @@ static int bq24190_sysfs_create_group(struct bq24190_dev_info *bdi)
 static inline void bq24190_sysfs_remove_group(struct bq24190_dev_info *bdi) {}
 #endif
 
-/*
- * According to the "Host Mode and default Mode" section of the
- * manual, a write to any register causes the bq24190 to switch
- * from default mode to host mode.  It will switch back to default
- * mode after a WDT timeout unless the WDT is turned off as well.
- * So, by simply turning off the WDT, we accomplish both with the
- * same write.
- */
-static int bq24190_set_mode_host(struct bq24190_dev_info *bdi)
+static int bq24190_set_config(struct bq24190_dev_info *bdi)
 {
        int ret;
        u8 v;
@@ -523,9 +515,22 @@ static int bq24190_set_mode_host(struct bq24190_dev_info *bdi)
 
        bdi->watchdog = ((v & BQ24190_REG_CTTC_WATCHDOG_MASK) >>
                                        BQ24190_REG_CTTC_WATCHDOG_SHIFT);
+
+       /*
+        * According to the "Host Mode and default Mode" section of the
+        * manual, a write to any register causes the bq24190 to switch
+        * from default mode to host mode.  It will switch back to default
+        * mode after a WDT timeout unless the WDT is turned off as well.
+        * So, by simply turning off the WDT, we accomplish both with the
+        * same write.
+        */
        v &= ~BQ24190_REG_CTTC_WATCHDOG_MASK;
 
-       return bq24190_write(bdi, BQ24190_REG_CTTC, v);
+       ret = bq24190_write(bdi, BQ24190_REG_CTTC, v);
+       if (ret < 0)
+               return ret;
+
+       return 0;
 }
 
 static int bq24190_register_reset(struct bq24190_dev_info *bdi)
@@ -1495,13 +1500,18 @@ static int bq24190_hw_init(struct bq24190_dev_info *bdi)
        if (ret < 0)
                return ret;
 
-       ret = bq24190_set_mode_host(bdi);
+       ret = bq24190_set_config(bdi);
        if (ret < 0)
                return ret;
 
        return bq24190_read(bdi, BQ24190_REG_SS, &bdi->ss_reg);
 }
 
+static int bq24190_get_config(struct bq24190_dev_info *bdi)
+{
+       return 0;
+}
+
 static int bq24190_probe(struct i2c_client *client,
                const struct i2c_device_id *id)
 {
@@ -1532,7 +1542,7 @@ static int bq24190_probe(struct i2c_client *client,
 
        i2c_set_clientdata(client, bdi);
 
-       if (!client->irq) {
+       if (client->irq <= 0) {
                dev_err(dev, "Can't get irq info\n");
                return -EINVAL;
        }
@@ -1565,12 +1575,6 @@ static int bq24190_probe(struct i2c_client *client,
                goto out_pmrt;
        }
 
-       ret = bq24190_hw_init(bdi);
-       if (ret < 0) {
-               dev_err(dev, "Hardware init failed\n");
-               goto out_pmrt;
-       }
-
        charger_cfg.drv_data = bdi;
        charger_cfg.supplied_to = bq24190_charger_supplied_to;
        charger_cfg.num_supplicants = ARRAY_SIZE(bq24190_charger_supplied_to),
@@ -1595,8 +1599,20 @@ static int bq24190_probe(struct i2c_client *client,
                }
        }
 
+       ret = bq24190_get_config(bdi);
+       if (ret < 0) {
+               dev_err(dev, "Can't get devicetree config\n");
+               goto out_charger;
+       }
+
+       ret = bq24190_hw_init(bdi);
+       if (ret < 0) {
+               dev_err(dev, "Hardware init failed\n");
+               goto out_charger;
+       }
+
        ret = bq24190_sysfs_create_group(bdi);
-       if (ret) {
+       if (ret < 0) {
                dev_err(dev, "Can't create sysfs entries\n");
                goto out_charger;
        }
@@ -1739,7 +1755,7 @@ static __maybe_unused int bq24190_pm_resume(struct device *dev)
        }
 
        bq24190_register_reset(bdi);
-       bq24190_set_mode_host(bdi);
+       bq24190_set_config(bdi);
        bq24190_read(bdi, BQ24190_REG_SS, &bdi->ss_reg);
 
        if (error >= 0) {