mirror of
https://github.com/Fishwaldo/u-boot.git
synced 2025-03-18 13:11:31 +00:00
board: stm32mp1: add timeout for I/O compensation ready
This patch avoids infinite loop when I/O compensation failed, it adds a 1s timeout to detect error. Signed-off-by: Patrick Delaunay <patrick.delaunay@st.com> Reviewed-by: Patrice Chotard <patrice.chotard@st.com>
This commit is contained in:
parent
3cab9aae45
commit
5ef642c173
1 changed files with 12 additions and 4 deletions
|
@ -32,6 +32,7 @@
|
|||
#include <asm/arch/sys_proto.h>
|
||||
#include <jffs2/load_kernel.h>
|
||||
#include <linux/err.h>
|
||||
#include <linux/iopoll.h>
|
||||
#include <power/regulator.h>
|
||||
#include <usb/dwc2_udc.h>
|
||||
|
||||
|
@ -463,10 +464,10 @@ static void sysconf_init(void)
|
|||
struct udevice *pwr_dev;
|
||||
struct udevice *pwr_reg;
|
||||
struct udevice *dev;
|
||||
int ret;
|
||||
u32 otp = 0;
|
||||
#endif
|
||||
u32 bootr;
|
||||
int ret;
|
||||
u32 bootr, val;
|
||||
|
||||
syscfg = (u8 *)syscon_get_first_range(STM32MP_SYSCON_SYSCFG);
|
||||
|
||||
|
@ -543,8 +544,15 @@ static void sysconf_init(void)
|
|||
*/
|
||||
writel(SYSCFG_CMPENSETR_MPU_EN, syscfg + SYSCFG_CMPENSETR);
|
||||
|
||||
while (!(readl(syscfg + SYSCFG_CMPCR) & SYSCFG_CMPCR_READY))
|
||||
;
|
||||
/* poll until ready (1s timeout) */
|
||||
ret = readl_poll_timeout(syscfg + SYSCFG_CMPCR, val,
|
||||
val & SYSCFG_CMPCR_READY,
|
||||
1000000);
|
||||
if (ret) {
|
||||
pr_err("SYSCFG: I/O compensation failed, timeout.\n");
|
||||
led_error_blink(10);
|
||||
}
|
||||
|
||||
clrbits_le32(syscfg + SYSCFG_CMPCR, SYSCFG_CMPCR_SW_CTRL);
|
||||
#endif
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue