Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a4c7590b authored by Liam Breck's avatar Liam Breck Committed by Sebastian Reichel
Browse files

power: supply: bq24190_charger: Enable devicetree config



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: default avatarLiam Breck <kernel@networkimprov.net>
Acked-by: default avatarTony Lindgren <tony@atomide.com>
Signed-off-by: default avatarSebastian Reichel <sebastian.reichel@collabora.co.uk>
parent 3c72785a
Loading
Loading
Loading
Loading
+36 −20
Original line number Diff line number Diff line
@@ -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) {