On Sun, Aug 23, 2026 at 10:39:26PM +0200, Linus Walleij wrote:
> Add regulator support for LDO AUX3 on AB8500 and AB8505 PMICs.
> AUX3 supplies the removable SD card on the upstream Ux500 Samsung
> device trees.
>
> Support the AB8505-specific 3.05 V selector override and clear it after
> programming an ordinary voltage. Treat both normal and low-power modes
> as enabled and select the supported voltage closest to a requested
> target. AB8500 cut 2.0 or later is assumed.
>
> Imply the regulator core for ARCH_U8500 so the driver can instantiate
> from the upstream device trees.
>
> Signed-off-by: Linus Walleij <[email protected]>
> ---
> MAINTAINERS | 1 +
> arch/arm/Kconfig | 2 +
> drivers/power/pmic/ab8500.c | 1 +
> drivers/power/regulator/Kconfig | 7 ++
> drivers/power/regulator/Makefile | 1 +
> drivers/power/regulator/ab8500.c | 168
> +++++++++++++++++++++++++++++++++++++++
> 6 files changed, 180 insertions(+)
>
> [...]
> diff --git a/drivers/power/regulator/ab8500.c
> b/drivers/power/regulator/ab8500.c
> new file mode 100644
> index 000000000000..4eab7fcd0f40
> --- /dev/null
> +++ b/drivers/power/regulator/ab8500.c
> @@ -0,0 +1,168 @@
> +// SPDX-License-Identifier: GPL-2.0+
> +/* ST-Ericsson AB8500/AB8505 LDO AUX3 regulator */
> +
> +#include <dm.h>
> +#include <dm/lists.h>
> +#include <linux/errno.h>
> +#include <power/ab8500.h>
> +#include <power/pmic.h>
> +#include <power/regulator.h>
> +
> +#define AB8500_VAUX3_REGU AB8500_REGU_CTRL2(0x0a)
> +#define AB8500_VAUX3_SEL AB8500_REGU_CTRL2(0x21)
> +#define AB8500_VAUX3_EN_MASK GENMASK(1, 0)
> +#define AB8500_VAUX3_REGU_EN BIT(0)
> +#define AB8500_VAUX3_SEL_MASK GENMASK(2, 0)
> +#define AB8505_VAUX3_SEL3 AB8500_REGU_CTRL2(0x01)
> +#define AB8505_VAUX3_SEL3_MASK BIT(4)
> +#define AB8505_VAUX3_SEL3_UV 3050000
I'm a bit confused by this list now, please either have all register
addresses (AB8500_REGU_CTRL2(...)) at the top, followed by the bitmasks
or make it interleaved (probably better for readability), i.e.
+#define AB8500_VAUX3_REGU AB8500_REGU_CTRL2(0x0a)
+#define AB8500_VAUX3_EN_MASK GENMASK(1, 0) /* <-- would be also good
to rename this for consistency */
+#define AB8500_VAUX3_REGU_EN BIT(0)
+#define AB8500_VAUX3_SEL AB8500_REGU_CTRL2(0x21)
+#define AB8500_VAUX3_SEL_MASK GENMASK(2, 0)
+#define AB8505_VAUX3_SEL3 AB8500_REGU_CTRL2(0x01)
+#define AB8505_VAUX3_SEL3_MASK BIT(4)
+#define AB8505_VAUX3_SEL3_UV 3050000
Am I blind or do we have no support for the AB8505 3.05V in the Linux
regulator driver?
Thanks,
Stephan