summaryrefslogtreecommitdiff
path: root/plat
diff options
context:
space:
mode:
authorMarco Felsch <m.felsch@pengutronix.de>2023-09-05 17:15:35 +0200
committerMarco Felsch <m.felsch@pengutronix.de>2023-10-05 16:02:10 +0200
commit8d150c9524b1459b61c9d881100e20da827c1bd0 (patch)
treea0b99baf494992f0d6094cffa671e84d858e6e74 /plat
parent17eebc76b7230ca9501932b93d238ea5b72d8ab2 (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.c19
-rw-r--r--plat/imx/imx8m/imx8mm/imx8mm_bl31_setup.c5
-rw-r--r--plat/imx/imx8m/imx8mm/platform.mk1
-rw-r--r--plat/imx/imx8m/imx8mn/imx8mn_bl31_setup.c5
-rw-r--r--plat/imx/imx8m/imx8mn/platform.mk1
-rw-r--r--plat/imx/imx8m/imx8mp/imx8mp_bl31_setup.c5
-rw-r--r--plat/imx/imx8m/imx8mp/platform.mk1
-rw-r--r--plat/imx/imx8m/include/imx8m_snvs.h12
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