2018-08-31 12:59:42

by Philipp Zabel

[permalink] [raw]
Subject: [PATCH] regulator: da9063: fix DT probing with constraints

Commit 1c892e38ce59 ("regulator: da9063: Handle less LDOs on DA9063L")
reordered the da9063_regulator_info[] array, but not the DA9063_ID_*
regulator ids and not the da9063_matches[] array, because ids are used
as indices in the array initializer. This mismatch between regulator id
and da9063_regulator_info[] array index causes the driver probe to fail
because constraints from DT are not applied to the correct regulator:

da9063 0-0058: Device detected (chip-ID: 0x61, var-ID: 0x50)
DA9063_BMEM: Bringing 900000uV into 3300000-3300000uV
DA9063_LDO9: Bringing 3300000uV into 2500000-2500000uV
DA9063_LDO1: Bringing 900000uV into 3300000-3300000uV
DA9063_LDO1: failed to apply 3300000-3300000uV constraint(-22)

This patch reorders the DA9063_ID_* as apparently intended, and with
them the entries in the da90630_matches[] array.

Fixes: 1c892e38ce59 ("regulator: da9063: Handle less LDOs on DA9063L")
Signed-off-by: Philipp Zabel <[email protected]>
Cc: Marek Vasut <[email protected]>
Cc: Mark Brown <[email protected]>
Cc: Geert Uytterhoeven <[email protected]>
Cc: Lee Jones <[email protected]>
---
include/linux/mfd/da9063/pdata.h | 16 +++++++++-------
1 file changed, 9 insertions(+), 7 deletions(-)

diff --git a/include/linux/mfd/da9063/pdata.h b/include/linux/mfd/da9063/pdata.h
index 8a125701ef7b..50bed4f89c1a 100644
--- a/include/linux/mfd/da9063/pdata.h
+++ b/include/linux/mfd/da9063/pdata.h
@@ -21,7 +21,7 @@
/*
* Regulator configuration
*/
-/* DA9063 regulator IDs */
+/* DA9063 and DA9063L regulator IDs */
enum {
/* BUCKs */
DA9063_ID_BCORE1,
@@ -37,18 +37,20 @@ enum {
DA9063_ID_BMEM_BIO_MERGED,
/* When two BUCKs are merged, they cannot be reused separately */

- /* LDOs */
+ /* LDOs on both DA9063 and DA9063L */
+ DA9063_ID_LDO3,
+ DA9063_ID_LDO7,
+ DA9063_ID_LDO8,
+ DA9063_ID_LDO9,
+ DA9063_ID_LDO11,
+
+ /* DA9063-only LDOs */
DA9063_ID_LDO1,
DA9063_ID_LDO2,
- DA9063_ID_LDO3,
DA9063_ID_LDO4,
DA9063_ID_LDO5,
DA9063_ID_LDO6,
- DA9063_ID_LDO7,
- DA9063_ID_LDO8,
- DA9063_ID_LDO9,
DA9063_ID_LDO10,
- DA9063_ID_LDO11,
};

/* Regulators platform data */
--
2.18.0



2018-08-31 13:13:30

by Marek Vasut

[permalink] [raw]
Subject: Re: [PATCH] regulator: da9063: fix DT probing with constraints

On 08/31/2018 02:34 PM, Philipp Zabel wrote:
> Commit 1c892e38ce59 ("regulator: da9063: Handle less LDOs on DA9063L")
> reordered the da9063_regulator_info[] array, but not the DA9063_ID_*
> regulator ids and not the da9063_matches[] array, because ids are used
> as indices in the array initializer. This mismatch between regulator id
> and da9063_regulator_info[] array index causes the driver probe to fail
> because constraints from DT are not applied to the correct regulator:
>
> da9063 0-0058: Device detected (chip-ID: 0x61, var-ID: 0x50)
> DA9063_BMEM: Bringing 900000uV into 3300000-3300000uV
> DA9063_LDO9: Bringing 3300000uV into 2500000-2500000uV
> DA9063_LDO1: Bringing 900000uV into 3300000-3300000uV
> DA9063_LDO1: failed to apply 3300000-3300000uV constraint(-22)
>
> This patch reorders the DA9063_ID_* as apparently intended, and with
> them the entries in the da90630_matches[] array.
>
> Fixes: 1c892e38ce59 ("regulator: da9063: Handle less LDOs on DA9063L")
> Signed-off-by: Philipp Zabel <[email protected]>
> Cc: Marek Vasut <[email protected]>
> Cc: Mark Brown <[email protected]>
> Cc: Geert Uytterhoeven <[email protected]>
> Cc: Lee Jones <[email protected]>

Thanks

Reviewed-by: Marek Vasut <[email protected]>

> ---
> include/linux/mfd/da9063/pdata.h | 16 +++++++++-------
> 1 file changed, 9 insertions(+), 7 deletions(-)
>
> diff --git a/include/linux/mfd/da9063/pdata.h b/include/linux/mfd/da9063/pdata.h
> index 8a125701ef7b..50bed4f89c1a 100644
> --- a/include/linux/mfd/da9063/pdata.h
> +++ b/include/linux/mfd/da9063/pdata.h
> @@ -21,7 +21,7 @@
> /*
> * Regulator configuration
> */
> -/* DA9063 regulator IDs */
> +/* DA9063 and DA9063L regulator IDs */
> enum {
> /* BUCKs */
> DA9063_ID_BCORE1,
> @@ -37,18 +37,20 @@ enum {
> DA9063_ID_BMEM_BIO_MERGED,
> /* When two BUCKs are merged, they cannot be reused separately */
>
> - /* LDOs */
> + /* LDOs on both DA9063 and DA9063L */
> + DA9063_ID_LDO3,
> + DA9063_ID_LDO7,
> + DA9063_ID_LDO8,
> + DA9063_ID_LDO9,
> + DA9063_ID_LDO11,
> +
> + /* DA9063-only LDOs */
> DA9063_ID_LDO1,
> DA9063_ID_LDO2,
> - DA9063_ID_LDO3,
> DA9063_ID_LDO4,
> DA9063_ID_LDO5,
> DA9063_ID_LDO6,
> - DA9063_ID_LDO7,
> - DA9063_ID_LDO8,
> - DA9063_ID_LDO9,
> DA9063_ID_LDO10,
> - DA9063_ID_LDO11,
> };
>
> /* Regulators platform data */
>


--
Best regards,
Marek Vasut

2018-08-31 13:29:59

by Geert Uytterhoeven

[permalink] [raw]
Subject: Re: [PATCH] regulator: da9063: fix DT probing with constraints

Hi Philipp,

On Fri, Aug 31, 2018 at 2:34 PM Philipp Zabel <[email protected]> wrote:
> Commit 1c892e38ce59 ("regulator: da9063: Handle less LDOs on DA9063L")
> reordered the da9063_regulator_info[] array, but not the DA9063_ID_*
> regulator ids and not the da9063_matches[] array, because ids are used
> as indices in the array initializer. This mismatch between regulator id
> and da9063_regulator_info[] array index causes the driver probe to fail
> because constraints from DT are not applied to the correct regulator:
>
> da9063 0-0058: Device detected (chip-ID: 0x61, var-ID: 0x50)
> DA9063_BMEM: Bringing 900000uV into 3300000-3300000uV
> DA9063_LDO9: Bringing 3300000uV into 2500000-2500000uV
> DA9063_LDO1: Bringing 900000uV into 3300000-3300000uV
> DA9063_LDO1: failed to apply 3300000-3300000uV constraint(-22)

My apologies for failing to notice that.

> This patch reorders the DA9063_ID_* as apparently intended, and with
> them the entries in the da90630_matches[] array.
>
> Fixes: 1c892e38ce59 ("regulator: da9063: Handle less LDOs on DA9063L")
> Signed-off-by: Philipp Zabel <[email protected]>

Reviewed-by: Geert Uytterhoeven <[email protected]>

Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds

2018-09-10 15:58:44

by Lee Jones

[permalink] [raw]
Subject: Re: [PATCH] regulator: da9063: fix DT probing with constraints

On Fri, 31 Aug 2018, Philipp Zabel wrote:

> Commit 1c892e38ce59 ("regulator: da9063: Handle less LDOs on DA9063L")
> reordered the da9063_regulator_info[] array, but not the DA9063_ID_*
> regulator ids and not the da9063_matches[] array, because ids are used
> as indices in the array initializer. This mismatch between regulator id
> and da9063_regulator_info[] array index causes the driver probe to fail
> because constraints from DT are not applied to the correct regulator:
>
> da9063 0-0058: Device detected (chip-ID: 0x61, var-ID: 0x50)
> DA9063_BMEM: Bringing 900000uV into 3300000-3300000uV
> DA9063_LDO9: Bringing 3300000uV into 2500000-2500000uV
> DA9063_LDO1: Bringing 900000uV into 3300000-3300000uV
> DA9063_LDO1: failed to apply 3300000-3300000uV constraint(-22)
>
> This patch reorders the DA9063_ID_* as apparently intended, and with
> them the entries in the da90630_matches[] array.
>
> Fixes: 1c892e38ce59 ("regulator: da9063: Handle less LDOs on DA9063L")
> Signed-off-by: Philipp Zabel <[email protected]>
> Cc: Marek Vasut <[email protected]>
> Cc: Mark Brown <[email protected]>
> Cc: Geert Uytterhoeven <[email protected]>
> Cc: Lee Jones <[email protected]>
> ---
> include/linux/mfd/da9063/pdata.h | 16 +++++++++-------
> 1 file changed, 9 insertions(+), 7 deletions(-)

This is an MFD patch.

I'll make the necessary changes and apply it.

--
Lee Jones [李琼斯]
Linaro Services Technical Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog