summaryrefslogtreecommitdiff
path: root/plat/imx/imx8m/imx8mq/imx8mq_misc.c
diff options
context:
space:
mode:
Diffstat (limited to 'plat/imx/imx8m/imx8mq/imx8mq_misc.c')
-rw-r--r--plat/imx/imx8m/imx8mq/imx8mq_misc.c41
1 files changed, 41 insertions, 0 deletions
diff --git a/plat/imx/imx8m/imx8mq/imx8mq_misc.c b/plat/imx/imx8m/imx8mq/imx8mq_misc.c
index 17213660..9ee3b2ad 100644
--- a/plat/imx/imx8m/imx8mq/imx8mq_misc.c
+++ b/plat/imx/imx8m/imx8mq/imx8mq_misc.c
@@ -31,3 +31,44 @@ int imx_src_handler(uint32_t smc_fid, u_register_t x1, u_register_t x2,
return 0;
}
+
+int imx_noc_handler(uint32_t smc_fid, u_register_t x1, u_register_t x2,
+ u_register_t x3)
+{
+ if (IMX_SIP_NOC_LCDIF == x1) {
+ /* config NOC for VPU */
+ mmio_write_32(IMX_NOC_BASE + 0x108, 0x34);
+ mmio_write_32(IMX_NOC_BASE + 0x10c, 0x1);
+ mmio_write_32(IMX_NOC_BASE + 0x110, 0x500);
+ mmio_write_32(IMX_NOC_BASE + 0x114, 0x30);
+ /* config NOC for CPU */
+ mmio_write_32(IMX_NOC_BASE + 0x188, 0x34);
+ mmio_write_32(IMX_NOC_BASE + 0x18c, 0x1);
+ mmio_write_32(IMX_NOC_BASE + 0x190, 0x500);
+ mmio_write_32(IMX_NOC_BASE + 0x194, 0x30);
+ } else if (IMX_SIP_NOC_PRIORITY == x1) {
+ switch(x2) {
+ case NOC_GPU_PRIORITY:
+ mmio_write_32(IMX_NOC_BASE + 0x008, x3);
+ break;
+ case NOC_DCSS_PRIORITY:
+ mmio_write_32(IMX_NOC_BASE + 0x088, x3);
+ break;
+ case NOC_VPU_PRIORITY:
+ mmio_write_32(IMX_NOC_BASE + 0x108, x3);
+ break;
+ case NOC_CPU_PRIORITY:
+ mmio_write_32(IMX_NOC_BASE + 0x188, x3);
+ break;
+ case NOC_MIX_PRIORITY:
+ mmio_write_32(IMX_NOC_BASE + 0x288, x3);
+ break;
+ default:
+ return SMC_UNK;
+ };
+ } else {
+ return SMC_UNK;
+ }
+
+ return 0;
+}