
Add mx7 secure boot support, reuse existing mx6 hab
Signed-off-by: Adrian Alonso aalonso@freescale.com --- Changes for V2: - Split from original patch to track mx7 change set hab: rework support for imx6/imx7
arch/arm/imx-common/hab.c | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-)
diff --git a/arch/arm/imx-common/hab.c b/arch/arm/imx-common/hab.c index 9ee0f12..565a838 100644 --- a/arch/arm/imx-common/hab.c +++ b/arch/arm/imx-common/hab.c @@ -261,12 +261,25 @@ uint8_t hab_engines[16] = { bool is_hab_enabled(void) { struct ocotp_regs *ocotp = (struct ocotp_regs *)OCOTP_BASE_ADDR; + uint32_t reg; +#if CONFIG_MX7 + struct fuse_bank *bank = &ocotp->bank[1]; + struct fuse_bank1_regs *fuse = + (struct fuse_bank1_regs *)bank->fuse_regs; + reg = readl(&fuse->cfg0); +#elif CONFIG_MX6 struct fuse_bank *bank = &ocotp->bank[0]; struct fuse_bank0_regs *fuse = (struct fuse_bank0_regs *)bank->fuse_regs; - uint32_t reg = readl(&fuse->cfg5); + reg = readl(&fuse->cfg5); +#endif + + if (is_soc_type(MXC_SOC_MX7)) + return (reg & 0x2000000) == 0x2000000; + else if (is_soc_type(MXC_SOC_MX6)) + return (reg & 0x2) == 0x2;
- return (reg & 0x2) == 0x2; + return 0; }
static inline uint8_t get_idx(uint8_t *list, uint8_t tgt) @@ -414,7 +427,7 @@ uint32_t authenticate_image(uint32_t ddr_start, uint32_t image_size) * crash. */ /* Check MMU enabled */ - if (get_cr() & CR_M) { + if (is_soc_type(MXC_SOC_MX6) && get_cr() & CR_M) { if (is_cpu_type(MXC_CPU_MX6Q) || is_cpu_type(MXC_CPU_MX6D)) { /*