[PATCH] mx7ulp: Only enable LDO if it is not already enabled

LDO mode may be already enabled by the ROM and enabling it again can cause U-Boot to hang.
Avoid this problem by only enabling LDO mode if it is initially disabled.
Reported-by: Jorge Ramirez-Ortiz jorge@foundries.io Signed-off-by: Fabio Estevam festevam@gmail.com --- arch/arm/mach-imx/mx7ulp/soc.c | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-)
diff --git a/arch/arm/mach-imx/mx7ulp/soc.c b/arch/arm/mach-imx/mx7ulp/soc.c index 8345b01398..4d84193dec 100644 --- a/arch/arm/mach-imx/mx7ulp/soc.c +++ b/arch/arm/mach-imx/mx7ulp/soc.c @@ -117,11 +117,28 @@ void init_wdog(void) disable_wdog(WDG2_RBASE); }
+#define PMC0_BASE_ADDR 0x410a1000 +#define PMC0_CTRL 0x28 +#define PMC0_CTRL_LDOEN BIT(31) + +static bool ldo_mode_is_enabled(void) +{ + unsigned int reg; + + reg = readl(PMC0_BASE_ADDR + PMC0_CTRL); + if (reg & PMC0_CTRL_LDOEN) + return true; + else + return false; +} #if defined(CONFIG_LDO_ENABLED_MODE) static void init_ldo_mode(void) { unsigned int reg;
+ if (ldo_mode_is_enabled()) + return; + /* Set LDOOKDIS */ setbits_le32(PMC0_BASE_ADDR + PMC0_CTRL, PMC0_CTRL_LDOOKDIS);
@@ -190,21 +207,6 @@ const char *get_imx_type(u32 imxtype) return "7ULP"; }
-#define PMC0_BASE_ADDR 0x410a1000 -#define PMC0_CTRL 0x28 -#define PMC0_CTRL_LDOEN BIT(31) - -static bool ldo_mode_is_enabled(void) -{ - unsigned int reg; - - reg = readl(PMC0_BASE_ADDR + PMC0_CTRL); - if (reg & PMC0_CTRL_LDOEN) - return true; - else - return false; -} - int print_cpuinfo(void) { u32 cpurev;

Hi Jorge,
On Fri, Jan 17, 2020 at 4:07 PM Fabio Estevam festevam@gmail.com wrote:
LDO mode may be already enabled by the ROM and enabling it again can cause U-Boot to hang.
Avoid this problem by only enabling LDO mode if it is initially disabled.
Reported-by: Jorge Ramirez-Ortiz jorge@foundries.io Signed-off-by: Fabio Estevam festevam@gmail.com
Please test this patch when you have a chance and if it works for you please provide your Tested-by tag.
Thanks

On 20/01/20 13:20:11, Fabio Estevam wrote:
Hi Jorge,
On Fri, Jan 17, 2020 at 4:07 PM Fabio Estevam festevam@gmail.com wrote:
LDO mode may be already enabled by the ROM and enabling it again can cause U-Boot to hang.
Avoid this problem by only enabling LDO mode if it is initially disabled.
Reported-by: Jorge Ramirez-Ortiz jorge@foundries.io Signed-off-by: Fabio Estevam festevam@gmail.com
Please test this patch when you have a chance and if it works for you please provide your Tested-by tag.
hi Favio
yes I did test it the other day. Do you need me to re-submit your patch or you can add my Tested-by: just as per the reported by?
Thanks

Hi Jorge,
On Mon, Jan 20, 2020 at 2:38 PM Jorge Ramirez-Ortiz, Foundries jorge@foundries.io wrote:
hi Favio
yes I did test it the other day. Do you need me to re-submit your patch or you can add my Tested-by: just as per the reported by?
Just reply to this email with your Tested-by and patchwork will pick it.
Thanks

On 17/01/20 16:07:14, Fabio Estevam wrote:
LDO mode may be already enabled by the ROM and enabling it again can cause U-Boot to hang.
Avoid this problem by only enabling LDO mode if it is initially disabled.
Reported-by: Jorge Ramirez-Ortiz jorge@foundries.io
Tested-by: Jorge Ramirez-Ortiz jorge@foundries.io
Signed-off-by: Fabio Estevam festevam@gmail.com
arch/arm/mach-imx/mx7ulp/soc.c | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-)
diff --git a/arch/arm/mach-imx/mx7ulp/soc.c b/arch/arm/mach-imx/mx7ulp/soc.c index 8345b01398..4d84193dec 100644 --- a/arch/arm/mach-imx/mx7ulp/soc.c +++ b/arch/arm/mach-imx/mx7ulp/soc.c @@ -117,11 +117,28 @@ void init_wdog(void) disable_wdog(WDG2_RBASE); }
+#define PMC0_BASE_ADDR 0x410a1000 +#define PMC0_CTRL 0x28 +#define PMC0_CTRL_LDOEN BIT(31)
+static bool ldo_mode_is_enabled(void) +{
- unsigned int reg;
- reg = readl(PMC0_BASE_ADDR + PMC0_CTRL);
- if (reg & PMC0_CTRL_LDOEN)
return true;
- else
return false;
+} #if defined(CONFIG_LDO_ENABLED_MODE) static void init_ldo_mode(void) { unsigned int reg;
- if (ldo_mode_is_enabled())
return;
- /* Set LDOOKDIS */ setbits_le32(PMC0_BASE_ADDR + PMC0_CTRL, PMC0_CTRL_LDOOKDIS);
@@ -190,21 +207,6 @@ const char *get_imx_type(u32 imxtype) return "7ULP"; }
-#define PMC0_BASE_ADDR 0x410a1000 -#define PMC0_CTRL 0x28 -#define PMC0_CTRL_LDOEN BIT(31)
-static bool ldo_mode_is_enabled(void) -{
- unsigned int reg;
- reg = readl(PMC0_BASE_ADDR + PMC0_CTRL);
- if (reg & PMC0_CTRL_LDOEN)
return true;
- else
return false;
-}
int print_cpuinfo(void) { u32 cpurev; -- 2.17.1

Hi Fabio,
On 17/01/20 20:07, Fabio Estevam wrote:
LDO mode may be already enabled by the ROM and enabling it again can cause U-Boot to hang.
Avoid this problem by only enabling LDO mode if it is initially disabled.
Reported-by: Jorge Ramirez-Ortiz jorge@foundries.io Signed-off-by: Fabio Estevam festevam@gmail.com
arch/arm/mach-imx/mx7ulp/soc.c | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-)
diff --git a/arch/arm/mach-imx/mx7ulp/soc.c b/arch/arm/mach-imx/mx7ulp/soc.c index 8345b01398..4d84193dec 100644 --- a/arch/arm/mach-imx/mx7ulp/soc.c +++ b/arch/arm/mach-imx/mx7ulp/soc.c @@ -117,11 +117,28 @@ void init_wdog(void) disable_wdog(WDG2_RBASE); }
+#define PMC0_BASE_ADDR 0x410a1000 +#define PMC0_CTRL 0x28 +#define PMC0_CTRL_LDOEN BIT(31)
But are they not already defined at the beginning of the file ? They were duplicated later, and you let them duplicated.
Best regards, Stefano
+static bool ldo_mode_is_enabled(void) +{
- unsigned int reg;
- reg = readl(PMC0_BASE_ADDR + PMC0_CTRL);
- if (reg & PMC0_CTRL_LDOEN)
return true;
- else
return false;
+} #if defined(CONFIG_LDO_ENABLED_MODE) static void init_ldo_mode(void) { unsigned int reg;
- if (ldo_mode_is_enabled())
return;
- /* Set LDOOKDIS */ setbits_le32(PMC0_BASE_ADDR + PMC0_CTRL, PMC0_CTRL_LDOOKDIS);
@@ -190,21 +207,6 @@ const char *get_imx_type(u32 imxtype) return "7ULP"; }
-#define PMC0_BASE_ADDR 0x410a1000 -#define PMC0_CTRL 0x28 -#define PMC0_CTRL_LDOEN BIT(31)
-static bool ldo_mode_is_enabled(void) -{
- unsigned int reg;
- reg = readl(PMC0_BASE_ADDR + PMC0_CTRL);
- if (reg & PMC0_CTRL_LDOEN)
return true;
- else
return false;
-}
int print_cpuinfo(void) { u32 cpurev;

Hi Stefano,
On Mon, Feb 3, 2020 at 8:34 AM Stefano Babic sbabic@denx.de wrote:
But are they not already defined at the beginning of the file ? They were duplicated later, and you let them duplicated.
Good catch. I have just sent a v2 series fixing this.
Thanks
participants (3)
-
Fabio Estevam
-
Jorge Ramirez-Ortiz, Foundries
-
Stefano Babic