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> Tested-by: Jorge Ramirez-Ortiz <jorge@foundries.io> Reviewed-by: Peng Fan <peng.fan@nxp.com>
This commit is contained in:
		
							parent
							
								
									2cfdb3bca7
								
							
						
					
					
						commit
						cbc81b735e
					
				|  | @ -118,12 +118,26 @@ void init_wdog(void) | |||
| 	disable_wdog(WDG2_RBASE); | ||||
| } | ||||
| 
 | ||||
| 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_SPL) || (defined(CONFIG_SPL) && defined(CONFIG_SPL_BUILD)) | ||||
| #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); | ||||
| 
 | ||||
|  | @ -193,17 +207,6 @@ const char *get_imx_type(u32 imxtype) | |||
| 	return "7ULP"; | ||||
| } | ||||
| 
 | ||||
| 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; | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue