Am Montag, 15. August 2022, 06:34:33 CEST schrieb Samuel Holland: > D1 contains two pairs of LDOs. Since they have similar bindings, and > they always exist together, put them in a single driver. > > The analog LDOs are relatively boring, with a single linear range. Their > one quirk is that a bandgap reference must be calibrated for them to > produce the correct voltage. > > The system LDOs have the complication that their voltage step is not an > integer, so a custom .list_voltage is needed to get the rounding right. > > Signed-off-by: Samuel Holland <samuel@xxxxxxxxxxxx> > --- > > Changes in v3: > - Adjust control flow in sun20i_regulator_get_regmap() for clarity > > Changes in v2: > - Use decimal numbers for .n_voltages instead of field widths > - Get the regmap from the parent device instead of a property/phandle > > drivers/regulator/Kconfig | 8 + > drivers/regulator/Makefile | 1 + > drivers/regulator/sun20i-regulator.c | 232 +++++++++++++++++++++++++++ > 3 files changed, 241 insertions(+) > create mode 100644 drivers/regulator/sun20i-regulator.c > > diff --git a/drivers/regulator/Kconfig b/drivers/regulator/Kconfig > index 23e3e4a35cc9..0c5727173fa0 100644 > --- a/drivers/regulator/Kconfig > +++ b/drivers/regulator/Kconfig > @@ -1262,6 +1262,14 @@ config REGULATOR_STW481X_VMMC > This driver supports the internal VMMC regulator in the STw481x > PMIC chips. > > +config REGULATOR_SUN20I > + tristate "Allwinner D1 internal LDOs" > + depends on ARCH_SUNXI || COMPILE_TEST > + depends on MFD_SYSCON && NVMEM > + default ARCH_SUNXI > + help > + This driver supports the internal LDOs in the Allwinner D1 SoC. > + > config REGULATOR_SY7636A > tristate "Silergy SY7636A voltage regulator" > help > diff --git a/drivers/regulator/Makefile b/drivers/regulator/Makefile > index fa49bb6cc544..5dff112eb015 100644 > --- a/drivers/regulator/Makefile > +++ b/drivers/regulator/Makefile > @@ -148,6 +148,7 @@ obj-$(CONFIG_REGULATOR_STM32_VREFBUF) += stm32-vrefbuf.o > obj-$(CONFIG_REGULATOR_STM32_PWR) += stm32-pwr.o > obj-$(CONFIG_REGULATOR_STPMIC1) += stpmic1_regulator.o > obj-$(CONFIG_REGULATOR_STW481X_VMMC) += stw481x-vmmc.o > +obj-$(CONFIG_REGULATOR_SUN20I) += sun20i-regulator.o > obj-$(CONFIG_REGULATOR_SY7636A) += sy7636a-regulator.o > obj-$(CONFIG_REGULATOR_SY8106A) += sy8106a-regulator.o > obj-$(CONFIG_REGULATOR_SY8824X) += sy8824x.o > diff --git a/drivers/regulator/sun20i-regulator.c b/drivers/regulator/sun20i-regulator.c > new file mode 100644 > index 000000000000..46f3927d7d10 > --- /dev/null > +++ b/drivers/regulator/sun20i-regulator.c > @@ -0,0 +1,232 @@ > +// SPDX-License-Identifier: GPL-2.0-only > +// > +// Copyright (c) 2021-2022 Samuel Holland <samuel@xxxxxxxxxxxx> > +// nit: shouldn't the comment look like /* * Copyright (c) 2021-2022 Samuel Holland <samuel@xxxxxxxxxxxx> */ otherwise looks great Reviewed-by: Heiko Stuebner <heiko@xxxxxxxxx> Tested-by: Heiko Stuebner <heiko@xxxxxxxxx>