diff options
-rw-r--r-- | plat/imx/imx8mq/include/platform_def.h | 1 | ||||
-rw-r--r-- | plat/imx/imx8mq/src.c | 7 |
2 files changed, 7 insertions, 1 deletions
diff --git a/plat/imx/imx8mq/include/platform_def.h b/plat/imx/imx8mq/include/platform_def.h index 7f3a2c82..f2c3d112 100644 --- a/plat/imx/imx8mq/include/platform_def.h +++ b/plat/imx/imx8mq/include/platform_def.h @@ -53,6 +53,7 @@ #define IMX_AIPS1_BASE 0x30200000 #define IMX_AIPS3_ARB_BASE 0x30800000 #define IMX_ANAMIX_BASE 0x30360000 +#define IMX_OCOTP_BASE 0x30350000 #define IMX_CCM_BASE 0x30380000 #define IMX_SRC_BASE 0x30390000 #define IMX_GPC_BASE 0x303a0000 diff --git a/plat/imx/imx8mq/src.c b/plat/imx/imx8mq/src.c index eb36c239..2ba6c1a1 100644 --- a/plat/imx/imx8mq/src.c +++ b/plat/imx/imx8mq/src.c @@ -25,6 +25,7 @@ #define DIGPROG 0x6c #define SW_INFO_A0 0x800 #define SW_INFO_B0 0x83C +#define SW_INFO_B1 0x40 int imx_src_handler(uint32_t smc_fid, u_register_t x1, u_register_t x2, u_register_t x3) @@ -59,9 +60,13 @@ int imx_soc_handler(uint32_t smc_fid, u_register_t x1, u_register_t x2, rom_version = mmio_read_32(IMX_ROM_BASE + SW_INFO_A0); if (rom_version != 0x10) { rom_version = mmio_read_32(IMX_ROM_BASE + SW_INFO_B0); - if (rom_version >= 0x20) { + if (rom_version == 0x20) { val &= ~0xff; val |= rom_version; + } else if (mmio_read_32(IMX_OCOTP_BASE + SW_INFO_B1) + == 0xff0055aa) { + /* 0xff0055aa is magic number for B1 */ + val = 0x21; } } |