diff options
author | Marco Felsch <m.felsch@pengutronix.de> | 2023-09-05 17:15:35 +0200 |
---|---|---|
committer | Marco Felsch <m.felsch@pengutronix.de> | 2023-10-05 16:02:10 +0200 |
commit | 8d150c9524b1459b61c9d881100e20da827c1bd0 (patch) | |
tree | a0b99baf494992f0d6094cffa671e84d858e6e74 /plat | |
parent | 17eebc76b7230ca9501932b93d238ea5b72d8ab2 (diff) |
feat(imx8m): enable snvs privileged registers access
Allow non-privileged access to all SNVS registers in case of no TEE is
available.
Signed-off-by: Marco Felsch <m.felsch@pengutronix.de>
Change-Id: I44686a3639a68c72c7eacc80691c294d5c32c9ae
Diffstat (limited to 'plat')
-rw-r--r-- | plat/imx/imx8m/imx8m_snvs.c | 19 | ||||
-rw-r--r-- | plat/imx/imx8m/imx8mm/imx8mm_bl31_setup.c | 5 | ||||
-rw-r--r-- | plat/imx/imx8m/imx8mm/platform.mk | 1 | ||||
-rw-r--r-- | plat/imx/imx8m/imx8mn/imx8mn_bl31_setup.c | 5 | ||||
-rw-r--r-- | plat/imx/imx8m/imx8mn/platform.mk | 1 | ||||
-rw-r--r-- | plat/imx/imx8m/imx8mp/imx8mp_bl31_setup.c | 5 | ||||
-rw-r--r-- | plat/imx/imx8m/imx8mp/platform.mk | 1 | ||||
-rw-r--r-- | plat/imx/imx8m/include/imx8m_snvs.h | 12 |
8 files changed, 49 insertions, 0 deletions
diff --git a/plat/imx/imx8m/imx8m_snvs.c b/plat/imx/imx8m/imx8m_snvs.c new file mode 100644 index 000000000..7874a6869 --- /dev/null +++ b/plat/imx/imx8m/imx8m_snvs.c @@ -0,0 +1,19 @@ +/* + * Copyright 2022-2023 NXP + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include <lib/mmio.h> +#include <platform_def.h> + +#define SNVS_HPCOMR U(0x04) +#define SNVS_NPSWA_EN BIT(31) + +void enable_snvs_privileged_access(void) +{ + unsigned int val; + + val = mmio_read_32(IMX_SNVS_BASE + SNVS_HPCOMR); + mmio_write_32(IMX_SNVS_BASE + SNVS_HPCOMR, val | SNVS_NPSWA_EN); +} diff --git a/plat/imx/imx8m/imx8mm/imx8mm_bl31_setup.c b/plat/imx/imx8m/imx8mm/imx8mm_bl31_setup.c index c8a3adf8f..405a8f992 100644 --- a/plat/imx/imx8m/imx8mm/imx8mm_bl31_setup.c +++ b/plat/imx/imx8m/imx8mm/imx8mm_bl31_setup.c @@ -29,6 +29,7 @@ #include <imx8m_caam.h> #include <imx8m_ccm.h> #include <imx8m_csu.h> +#include <imx8m_snvs.h> #include <plat_imx8.h> #define TRUSTY_PARAMS_LEN_BYTES (4096*2) @@ -187,6 +188,10 @@ void bl31_early_platform_setup2(u_register_t arg0, u_register_t arg1, #endif #endif +#if !defined(SPD_opteed) && !defined(SPD_trusty) + enable_snvs_privileged_access(); +#endif + bl31_tzc380_setup(); } diff --git a/plat/imx/imx8m/imx8mm/platform.mk b/plat/imx/imx8m/imx8mm/platform.mk index 6f6daf8d5..97f4f2488 100644 --- a/plat/imx/imx8m/imx8mm/platform.mk +++ b/plat/imx/imx8m/imx8mm/platform.mk @@ -39,6 +39,7 @@ BL31_SOURCES += plat/imx/common/imx8_helpers.S \ plat/imx/imx8m/imx8m_caam.c \ plat/imx/imx8m/imx8m_ccm.c \ plat/imx/imx8m/imx8m_psci_common.c \ + plat/imx/imx8m/imx8m_snvs.c \ plat/imx/imx8m/imx8mm/imx8mm_bl31_setup.c \ plat/imx/imx8m/imx8mm/imx8mm_psci.c \ plat/imx/imx8m/imx8mm/gpc.c \ diff --git a/plat/imx/imx8m/imx8mn/imx8mn_bl31_setup.c b/plat/imx/imx8m/imx8mn/imx8mn_bl31_setup.c index 147249ee5..9117cf0ea 100644 --- a/plat/imx/imx8m/imx8mn/imx8mn_bl31_setup.c +++ b/plat/imx/imx8m/imx8mn/imx8mn_bl31_setup.c @@ -27,6 +27,7 @@ #include <imx8m_caam.h> #include <imx8m_ccm.h> #include <imx8m_csu.h> +#include <imx8m_snvs.h> #include <platform_def.h> #include <plat_imx8.h> @@ -184,6 +185,10 @@ void bl31_early_platform_setup2(u_register_t arg0, u_register_t arg1, #endif #endif +#if !defined(SPD_opteed) && !defined(SPD_trusty) + enable_snvs_privileged_access(); +#endif + bl31_tzc380_setup(); } diff --git a/plat/imx/imx8m/imx8mn/platform.mk b/plat/imx/imx8m/imx8mn/platform.mk index a6b43f213..e0826e29a 100644 --- a/plat/imx/imx8m/imx8mn/platform.mk +++ b/plat/imx/imx8m/imx8mn/platform.mk @@ -34,6 +34,7 @@ BL31_SOURCES += plat/imx/common/imx8_helpers.S \ plat/imx/imx8m/imx8m_ccm.c \ plat/imx/imx8m/imx8m_csu.c \ plat/imx/imx8m/imx8m_psci_common.c \ + plat/imx/imx8m/imx8m_snvs.c \ plat/imx/imx8m/imx8mn/imx8mn_bl31_setup.c \ plat/imx/imx8m/imx8mn/imx8mn_psci.c \ plat/imx/imx8m/imx8mn/gpc.c \ diff --git a/plat/imx/imx8m/imx8mp/imx8mp_bl31_setup.c b/plat/imx/imx8m/imx8mp/imx8mp_bl31_setup.c index b0a41c741..1f527bfde 100644 --- a/plat/imx/imx8m/imx8mp/imx8mp_bl31_setup.c +++ b/plat/imx/imx8m/imx8mp/imx8mp_bl31_setup.c @@ -27,6 +27,7 @@ #include <imx8m_caam.h> #include <imx8m_ccm.h> #include <imx8m_csu.h> +#include <imx8m_snvs.h> #include <platform_def.h> #include <plat_imx8.h> @@ -180,6 +181,10 @@ void bl31_early_platform_setup2(u_register_t arg0, u_register_t arg1, #endif #endif +#if !defined(SPD_opteed) && !defined(SPD_trusty) + enable_snvs_privileged_access(); +#endif + bl31_tzc380_setup(); } diff --git a/plat/imx/imx8m/imx8mp/platform.mk b/plat/imx/imx8m/imx8mp/platform.mk index a8400a4f9..ce6907195 100644 --- a/plat/imx/imx8m/imx8mp/platform.mk +++ b/plat/imx/imx8m/imx8mp/platform.mk @@ -35,6 +35,7 @@ BL31_SOURCES += plat/imx/common/imx8_helpers.S \ plat/imx/imx8m/imx8m_ccm.c \ plat/imx/imx8m/imx8m_csu.c \ plat/imx/imx8m/imx8m_psci_common.c \ + plat/imx/imx8m/imx8m_snvs.c \ plat/imx/imx8m/imx8mp/imx8mp_bl31_setup.c \ plat/imx/imx8m/imx8mp/imx8mp_psci.c \ plat/imx/imx8m/imx8mp/gpc.c \ diff --git a/plat/imx/imx8m/include/imx8m_snvs.h b/plat/imx/imx8m/include/imx8m_snvs.h new file mode 100644 index 000000000..799e1d558 --- /dev/null +++ b/plat/imx/imx8m/include/imx8m_snvs.h @@ -0,0 +1,12 @@ +/* + * Copyright 2022-2023 NXP + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef IMX8M_SNVS_H +#define IMX8M_SNVS_H + +void enable_snvs_privileged_access(void); + +#endif |