Unverified Commit 98b94b6e authored by Frieder Schrempf's avatar Frieder Schrempf Committed by Mark Brown
Browse files

regulator: pca9450: Clear PRESET_EN bit to fix BUCK1/2/3 voltage setting



The driver uses the DVS registers PCA9450_REG_BUCKxOUT_DVS0 to set the
voltage for the buck regulators 1, 2 and 3. This has no effect as the
PRESET_EN bit is set by default and therefore the preset values are used
instead, which are set to 850 mV.

To fix this we clear the PRESET_EN bit at time of initialization.

Fixes: 0935ff5f ("regulator: pca9450: add pca9450 pmic driver")
Cc: <stable@vger.kernel.org>
Signed-off-by: default avatarFrieder Schrempf <frieder.schrempf@kontron.de>
Link: https://lore.kernel.org/r/20210222115229.166620-1-frieder.schrempf@kontron.de


Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent dfe03bca
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -797,6 +797,14 @@ static int pca9450_i2c_probe(struct i2c_client *i2c,
		return ret;
	}

	/* Clear PRESET_EN bit in BUCK123_DVS to use DVS registers */
	ret = regmap_clear_bits(pca9450->regmap, PCA9450_REG_BUCK123_DVS,
				BUCK123_PRESET_EN);
	if (ret) {
		dev_err(&i2c->dev, "Failed to clear PRESET_EN bit: %d\n", ret);
		return ret;
	}

	/* Set reset behavior on assertion of WDOG_B signal */
	ret = regmap_update_bits(pca9450->regmap, PCA9450_REG_RESET_CTRL,
				WDOG_B_CFG_MASK, WDOG_B_CFG_COLD_LDO12);
+3 −0
Original line number Diff line number Diff line
@@ -147,6 +147,9 @@ enum {
#define BUCK6_FPWM			0x04
#define BUCK6_ENMODE_MASK		0x03

/* PCA9450_REG_BUCK123_PRESET_EN bit */
#define BUCK123_PRESET_EN		0x80

/* PCA9450_BUCK1OUT_DVS0 bits */
#define BUCK1OUT_DVS0_MASK		0x7F
#define BUCK1OUT_DVS0_DEFAULT		0x14