diff options
author | Ye.Li <B37916@freescale.com> | 2014-07-16 13:53:34 +0800 |
---|---|---|
committer | Ye.Li <B37916@freescale.com> | 2014-07-17 13:09:40 +0800 |
commit | 54a0803b29c5ab459bedfb2c68c1e94b89866aa1 (patch) | |
tree | 62e0cda8d1b5950b9719fd266e829bc7272cb094 /arch | |
parent | d74815051120adcad041f4480db49402db4f9823 (diff) | |
download | u-boot-imx-54a0803b29c5ab459bedfb2c68c1e94b89866aa1.zip u-boot-imx-54a0803b29c5ab459bedfb2c68c1e94b89866aa1.tar.gz u-boot-imx-54a0803b29c5ab459bedfb2c68c1e94b89866aa1.tar.bz2 |
ENGR00322860 iMX6SX: Add function to check M4 status before booting
Add new function "arch_auxiliary_core_check_up" to check whether M4
is already up. Therefore, avoid starting M4 again when it is running.
Signed-off-by: Ye.Li <B37916@freescale.com>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/arm/cpu/armv7/mx6/soc.c | 13 | ||||
-rw-r--r-- | arch/arm/include/asm/arch-mx6/sys_proto.h | 1 |
2 files changed, 14 insertions, 0 deletions
diff --git a/arch/arm/cpu/armv7/mx6/soc.c b/arch/arm/cpu/armv7/mx6/soc.c index 001b9ab..e4393b3 100644 --- a/arch/arm/cpu/armv7/mx6/soc.c +++ b/arch/arm/cpu/armv7/mx6/soc.c @@ -628,6 +628,19 @@ int arch_auxiliary_core_up(u32 core_id, u32 boot_private_data) return 0; } + +int arch_auxiliary_core_check_up(u32 core_id) +{ + struct src *src_reg = (struct src *)SRC_BASE_ADDR; + unsigned val; + + val = readl(&src_reg->scr); + + if (val & 0x00000010) + return 0; /* assert in reset */ + + return 1; +} #endif void boot_mode_apply(unsigned cfg_val) diff --git a/arch/arm/include/asm/arch-mx6/sys_proto.h b/arch/arm/include/asm/arch-mx6/sys_proto.h index df7a0a2..f358c36 100644 --- a/arch/arm/include/asm/arch-mx6/sys_proto.h +++ b/arch/arm/include/asm/arch-mx6/sys_proto.h @@ -32,6 +32,7 @@ void ldo_mode_set(int ldo_bypass); #ifdef CONFIG_MX6SX int arch_auxiliary_core_up(u32 core_id, u32 boot_private_data); +int arch_auxiliary_core_check_up(u32 core_id); #endif /* |