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

Reply via email to