regulator: tps65086: Select dedicated regulator config for chip variant

Some configurations differ between chip variants, e,g. the register
to control the on of state of LDOA1 and SWB2. Thus, it is necessary
to choose the correct configuration for a dedicated device.
If the wrong configuration was used, the LDOA1 output that was
disabled by the bootloader was enabled in  Kernel again.

Each chip variant gets its dedicated configuration selected by
the chip ID previously collected from MFD probe function.
The VTT enum value (tps65086_regulators) is shifted because not all
chip variants have a separate SWB2 switch. Sometimes they are merged.
So the configuration possibilities differ, thus the regulator
configuration arrays have a different length.

Signed-off-by: Andre Werner <andre.werner@systec-electronic.com>
Link: https://lore.kernel.org/r/20230818083721.29790-5-andre.werner@systec-electronic.com
Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
Andre Werner
2023-08-18 10:37:24 +02:00
committed by Mark Brown
parent 1c6350f2d3
commit 3a5e6e4985
2 changed files with 183 additions and 8 deletions

View File

@@ -99,6 +99,8 @@ enum tps65086_irqs {
TPS65086_IRQ_FAULT,
};
struct tps65086_regulator_config;
/**
* struct tps65086 - state holder for the tps65086 driver
*
@@ -108,6 +110,7 @@ struct tps65086 {
struct device *dev;
struct regmap *regmap;
unsigned int chip_id;
const struct tps65086_regulator_config *reg_config;
/* IRQ Data */
int irq;