mirror of
https://github.com/u-boot/u-boot.git
synced 2025-04-30 16:35:37 +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 <asm/arch/sys_proto.h>
|
||||||
#include <jffs2/load_kernel.h>
|
#include <jffs2/load_kernel.h>
|
||||||
#include <linux/err.h>
|
#include <linux/err.h>
|
||||||
|
#include <linux/iopoll.h>
|
||||||
#include <power/regulator.h>
|
#include <power/regulator.h>
|
||||||
#include <usb/dwc2_udc.h>
|
#include <usb/dwc2_udc.h>
|
||||||
|
|
||||||
|
@ -463,10 +464,10 @@ static void sysconf_init(void)
|
||||||
struct udevice *pwr_dev;
|
struct udevice *pwr_dev;
|
||||||
struct udevice *pwr_reg;
|
struct udevice *pwr_reg;
|
||||||
struct udevice *dev;
|
struct udevice *dev;
|
||||||
int ret;
|
|
||||||
u32 otp = 0;
|
u32 otp = 0;
|
||||||
#endif
|
#endif
|
||||||
u32 bootr;
|
int ret;
|
||||||
|
u32 bootr, val;
|
||||||
|
|
||||||
syscfg = (u8 *)syscon_get_first_range(STM32MP_SYSCON_SYSCFG);
|
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);
|
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);
|
clrbits_le32(syscfg + SYSCFG_CMPCR, SYSCFG_CMPCR_SW_CTRL);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue