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

Commit 46b9d13a authored by Charles Keepax's avatar Charles Keepax Committed by Samuel Ortiz
Browse files

mfd: arizona: Sync regcache after reset



In the absence of a physical reset line the chip is reset by writing the
first register, which is done after the register patch has been applied.
This patch synchronises the register cache after the reset to preserve
any register changes that had been applied.

Signed-off-by: default avatarCharles Keepax <ckeepax@opensource.wolfsonmicro.com>
Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: default avatarSamuel Ortiz <sameo@linux.intel.com>
parent 3ebef34d
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -415,11 +415,19 @@ int __devinit arizona_dev_init(struct arizona *arizona)

	/* If we have a /RESET GPIO we'll already be reset */
	if (!arizona->pdata.reset) {
		regcache_mark_dirty(arizona->regmap);

		ret = regmap_write(arizona->regmap, ARIZONA_SOFTWARE_RESET, 0);
		if (ret != 0) {
			dev_err(dev, "Failed to reset device: %d\n", ret);
			goto err_reset;
		}

		ret = regcache_sync(arizona->regmap);
		if (ret != 0) {
			dev_err(dev, "Failed to sync device: %d\n", ret);
			goto err_reset;
		}
	}

	ret = arizona_wait_for_boot(arizona);