Skip to content

Commit

Permalink
power: supply: bq24190_charger: Enable devicetree config
Browse files Browse the repository at this point in the history
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 <[email protected]>
Signed-off-by: Liam Breck <[email protected]>
Acked-by: Tony Lindgren <[email protected]>
Signed-off-by: Sebastian Reichel <[email protected]>
  • Loading branch information
Liam Breck authored and sre committed Aug 29, 2017
1 parent 3c72785 commit a4c7590
Showing 1 changed file with 36 additions and 20 deletions.
56 changes: 36 additions & 20 deletions drivers/power/supply/bq24190_charger.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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)
Expand Down Expand Up @@ -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)
{
Expand Down Expand Up @@ -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;
}
Expand Down Expand Up @@ -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),
Expand All @@ -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;
}
Expand Down Expand Up @@ -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) {
Expand Down

0 comments on commit a4c7590

Please sign in to comment.