summaryrefslogtreecommitdiff
path: root/plat/imx/imx8mq
diff options
context:
space:
mode:
authorSilvano di Ninno <silvano.dininno@nxp.com>2018-05-17 17:32:10 +0200
committerAbel Vesa <abel.vesa@nxp.com>2018-06-11 10:33:03 +0300
commit7dd1b741efdc60ca6b5eaafc9d863744beb7064e (patch)
tree2d1a1dcf8f172b0d090b182a6255ccbfc79792eb /plat/imx/imx8mq
parentddac82579f52819dc24e6bf5eb23f9fd354844fb (diff)
MLK-18343-2: plat: imx8mm: add support for RDC and CSU
move CSU and RDC driver to common/i.mx8m folder and enable the driver for i.mx8mm Signed-off-by: Silvano di Ninno <silvano.dininno@nxp.com> Reviewed-by: Aymen Sghaier <aymen.sghaier@nxp.com>
Diffstat (limited to 'plat/imx/imx8mq')
-rw-r--r--plat/imx/imx8mq/imx_csu.c289
-rw-r--r--plat/imx/imx8mq/imx_rdc.c187
-rw-r--r--plat/imx/imx8mq/include/imx_csu.h217
-rw-r--r--plat/imx/imx8mq/include/imx_rdc.h224
-rw-r--r--plat/imx/imx8mq/platform.mk4
5 files changed, 2 insertions, 919 deletions
diff --git a/plat/imx/imx8mq/imx_csu.c b/plat/imx/imx8mq/imx_csu.c
deleted file mode 100644
index 85c1caf8..00000000
--- a/plat/imx/imx8mq/imx_csu.c
+++ /dev/null
@@ -1,289 +0,0 @@
-/*
- * Copyright 2017 NXP
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
-
-#include <debug.h>
-#include <stdlib.h>
-#include <stdint.h>
-#include <platform_def.h>
-#include <utils_def.h>
-#include <mmio.h>
-#include <imx_csu.h>
-
-#define CSU_HP0_OFFSET (0x200)
-#define CSU_HP1_OFFSET (0x204)
-#define CSU_SA_OFFSET (0x218)
-#define CSU_HPC0_OFFSET (0x358)
-#define CSU_HPC1_OFFSET (0x35C)
-
-
-/* Default CSU slaves CSLn settings */
-static struct csu_slave_conf csu_def_csl_conf[] = {
- {CSU_CSLn_GPIO1, CSU_RW, 0},
- {CSU_CSLn_GPIO2, CSU_RW, 0},
- {CSU_CSLn_GPIO3, CSU_RW, 0},
- {CSU_CSLn_GPIO4, CSU_RW, 0},
-#if defined (CSU_RDC_TEST)
- {CSU_CSLn_GPIO5, CSU_SSRW, 0},
-#else
- {CSU_CSLn_GPIO5, CSU_RW, 0},
-#endif
- {CSU_CSLn_Reserved1, CSU_RW, 0},
- {CSU_CSLn_ANA_TSENSOR, CSU_RW, 0},
- {CSU_CSLn_ANA_OSC, CSU_RW, 0},
- {CSU_CSLn_WDOG1, CSU_RW, 0},
- {CSU_CSLn_WDOG2, CSU_RW, 0},
- {CSU_CSLn_WDOG3, CSU_RW, 0},
- {CSU_CSLn_SDMA2, CSU_RW, 0},
- {CSU_CSLn_GPT1, CSU_RW, 0},
- {CSU_CSLn_GPT2, CSU_RW, 0},
- {CSU_CSLn_GPT3, CSU_RW, 0},
- {CSU_CSLn_ROMCP, CSU_RW, 0},
- {CSU_CSLn_LCDIF, CSU_RW, 0},
- {CSU_CSLn_IOMUXC, CSU_RW, 0},
- {CSU_CSLn_IOMUXC_GPR, CSU_RW, 0},
- {CSU_CSLn_OCOTP_CTRL, CSU_RW, 0},
- {CSU_CSLn_ANATOP_PLL, CSU_RW, 0},
- {CSU_CSLn_SNVS_HP, CSU_RW, 0},
- {CSU_CSLn_CCM, CSU_RW, 0},
- {CSU_CSLn_SRC, CSU_RW, 0},
- {CSU_CSLn_GPC, CSU_RW, 0},
- {CSU_CSLn_SEMAPHORE1, CSU_RW, 0},
- {CSU_CSLn_SEMAPHORE2, CSU_RW, 0},
- {CSU_CSLn_RDC, CSU_RW, 0},
- {CSU_CSLn_CSU, CSU_RW, 0},
- {CSU_CSLn_MST0, CSU_RW, 0},
- {CSU_CSLn_MST1, CSU_RW, 0},
- {CSU_CSLn_MST2, CSU_RW, 0},
- {CSU_CSLn_MST3, CSU_RW, 0},
- {CSU_CSLn_HDMI_SEC, CSU_RW, 0},
- {CSU_CSLn_PWM1, CSU_RW, 0},
- {CSU_CSLn_PWM2, CSU_RW, 0},
- {CSU_CSLn_PWM3, CSU_RW, 0},
- {CSU_CSLn_PWM4, CSU_RW, 0},
- {CSU_CSLn_SysCounter_RD, CSU_RW, 0},
- {CSU_CSLn_SysCounter_CMP, CSU_RW, 0},
- {CSU_CSLn_SysCounter_CTRL, CSU_RW, 0},
- {CSU_CSLn_HDMI_CTRL, CSU_RW, 0},
- {CSU_CSLn_GPT6, CSU_RW, 0},
- {CSU_CSLn_GPT5, CSU_RW, 0},
- {CSU_CSLn_GPT4, CSU_RW, 0},
- {CSU_CSLn_TZASC, CSU_RW, 0},
- {CSU_CSLn_MTR, CSU_RW, 0},
- {CSU_CSLn_PERFMON1, CSU_RW, 0},
- {CSU_CSLn_PERFMON2, CSU_RW, 0},
- {CSU_CSLn_PLATFORM_CTRL, CSU_RW, 0},
- {CSU_CSLn_QoSC, CSU_RW, 0},
- {CSU_CSLn_MIPI_PHY, CSU_RW, 0},
- {CSU_CSLn_MIPI_DSI, CSU_RW, 0},
- {CSU_CSLn_I2C1, CSU_RW, 0},
- {CSU_CSLn_I2C2, CSU_RW, 0},
- {CSU_CSLn_I2C3, CSU_RW, 0},
- {CSU_CSLn_I2C4, CSU_RW, 0},
- {CSU_CSLn_UART4, CSU_RW, 0},
- {CSU_CSLn_MIPI_CSI1, CSU_RW, 0},
- {CSU_CSLn_MIPI_CSI_PHY1, CSU_RW, 0},
- {CSU_CSLn_CSI1, CSU_RW, 0},
- {CSU_CSLn_MU_A, CSU_RW, 0},
- {CSU_CSLn_MU_B, CSU_RW, 0},
- {CSU_CSLn_SEMAPHORE_HS, CSU_RW, 0},
- {CSU_CSLn_SAI1, CSU_RW, 0},
- {CSU_CSLn_SAI6, CSU_RW, 0},
- {CSU_CSLn_SAI5, CSU_RW, 0},
- {CSU_CSLn_SAI4, CSU_RW, 0},
- {CSU_CSLn_USDHC1, CSU_RW, 0},
- {CSU_CSLn_USDHC2, CSU_RW, 0},
- {CSU_CSLn_MIPI_CSI2, CSU_RW, 0},
- {CSU_CSLn_MIPI_CSI_PHY2, CSU_RW, 0},
- {CSU_CSLn_CSI2, CSU_RW, 0},
- {CSU_CSLn_QSPI, CSU_RW, 0},
- {CSU_CSLn_SDMA1, CSU_RW, 0},
- {CSU_CSLn_ENET1, CSU_RW, 0},
- {CSU_CSLn_SPDIF1, CSU_RW, 0},
- {CSU_CSLn_ECSPI1, CSU_RW, 0},
- {CSU_CSLn_ECSPI2, CSU_RW, 0},
- {CSU_CSLn_ECSPI3, CSU_RW, 0},
- {CSU_CSLn_UART1, CSU_RW, 0},
- {CSU_CSLn_UART3, CSU_RW, 0},
- {CSU_CSLn_UART2, CSU_RW, 0},
- {CSU_CSLn_SPDIF2, CSU_RW, 0},
- {CSU_CSLn_SAI2, CSU_RW, 0},
- {CSU_CSLn_SAI3, CSU_RW, 0},
- {CSU_CSLn_SPBA1, CSU_RW, 0},
- {CSU_CSLn_MOD_EN3, CSU_RW, 0},
- {CSU_CSLn_MOD_EN0, CSU_RW, 0},
- {CSU_CSLn_CAAM, CSU_RW, 0},
- {CSU_CSLn_DDRC_SEC, CSU_RW, 0},
- {CSU_CSLn_GIC_EXSC, CSU_RW, 0},
- {CSU_CSLn_USB_EXSC, CSU_RW, 0},
- {CSU_CSLn_OCRAM_TZ, CSU_RW, 0},
- {CSU_CSLn_OCRAM_S_TZ, CSU_RW, 0},
- {CSU_CSLn_VPU_SEC, CSU_RW, 0},
- {CSU_CSLn_DAP_EXSC, CSU_RW, 0},
- {CSU_CSLn_ROMCP_SEC, CSU_RW, 0},
- {CSU_CSLn_APBHDMA_SEC, CSU_RW, 0},
- {CSU_CSLn_M4_SEC, CSU_RW, 0},
- {CSU_CSLn_QSPI_SEC, CSU_RW, 0},
- {CSU_CSLn_GPU_EXSC, CSU_RW, 0},
- {CSU_CSLn_Internal1, CSU_RW, 0},
- {CSU_CSLn_Internal2, CSU_RW, 0},
- {CSU_CSLn_Internal3, CSU_RW, 0},
- {CSU_CSLn_Internal4, CSU_RW, 0},
- {CSU_CSLn_Internal5, CSU_RW, 0},
- {CSU_CSLn_Internal6, CSU_RW, 0},
-};
-
-/* Default Secure Access configuration */
-static struct csu_sa_conf sa_def_configs[] = {
- {CSU_SA_VPU, 1, 1},
- {CSU_SA_GPU, 1, 1},
- {CSU_SA_DCSS, 1, 1},
-};
-
-void csu_set_slave_index_mode(enum csu_csln_idx index,
- uint16_t mode, uint8_t lock)
-{
- uintptr_t reg;
- uint32_t tmp;
- uint16_t read_mode;
- uint8_t read_lock = 0;
-
- /* Check if CSLn is locked or the value is same as written */
- csu_get_slave_index_mode(index, &read_mode, &read_lock);
- if (read_lock) {
- NOTICE("CSU CSLn(%d) already locked with mode:0x%x\n", index, read_mode);
- return;
- }
- if (read_mode == mode) {
- NOTICE("CSU CSLn(%d) mode 0x%x already written\n", index, read_mode);
- return;
- }
- reg = (uintptr_t)(IMX_CSU_BASE + (index / 2) * 4);
- tmp = mmio_read_32(reg);
-
- if (lock)
- mode |= 1 << 8;
-
- if (index % 2) {
- tmp &= 0x0000ffff;
- tmp |= mode << 16;
- } else {
- tmp &= 0xffff0000;
- tmp |= mode;
- }
- mmio_write_32(reg, tmp);
-}
-
-void csu_get_slave_index_mode(enum csu_csln_idx index,
- uint16_t *mode, uint8_t *lock)
-{
- uintptr_t reg;
- uint32_t tmp;
-
- reg = (uintptr_t)(IMX_CSU_BASE + (index / 2) * 4);
- tmp = mmio_read_32(reg);
- if (index % 2)
- tmp = tmp >> 16;
-
- tmp &= 0x1ff;
-
- *mode = tmp & 0xff;
- *lock = tmp >> 8;
-}
-
-void csu_set_slaves_modes(struct csu_slave_conf *csu_config, uint32_t count)
-{
- int i;
-
- for (i = 0; i < count; i++) {
- csu_set_slave_index_mode(csu_config[i].index, csu_config[i].mode, csu_config[i].lock);
- }
-}
-
-void csu_set_default_slaves_modes(void)
-{
- NOTICE("csu_set_default_slaves_modes: count = %d \n", (int)ARRAY_SIZE(csu_def_csl_conf));
- csu_set_slaves_modes(csu_def_csl_conf, (uint32_t)ARRAY_SIZE(csu_def_csl_conf));
-}
-
-void csu_set_hp_index_config(enum csu_hp_idx index, uint8_t enable,
- uint8_t set_control, uint8_t lock)
-{
- uint32_t tmp, value;
- uintptr_t reg;
-
- if (index < 16){
- reg = (uintptr_t)(IMX_CSU_BASE + CSU_HP0_OFFSET);
- tmp = mmio_read_32(reg);
- value = 0x3 << (index * 2);
- tmp &= ~value;
- value = (lock * 2 | enable) << (index * 2);
- tmp |= value;
- mmio_write_32(reg, tmp);
- if (set_control) {
- reg = (uintptr_t)(IMX_CSU_BASE + CSU_HPC0_OFFSET);
- tmp = mmio_read_32(reg);
- value = (lock * 2 | set_control) << (index * 2);
- tmp &= ~value;
- tmp |= value;
- mmio_write_32(reg, tmp);
- }
- } else {
- reg = (uintptr_t)(IMX_CSU_BASE + CSU_HP1_OFFSET);
- mmio_write_32(reg,lock * 2 | enable);
- if (set_control) {
- reg = (uintptr_t)(IMX_CSU_BASE + CSU_HPC1_OFFSET);
- mmio_write_32(reg,lock * 2 | set_control);
- }
- }
-}
-
-void csu_set_sa_index_config(enum csu_sa_idx index,
- uint8_t enable, uint8_t lock)
-{
- uint32_t tmp, value;
- uintptr_t reg;
-
- reg = (uintptr_t)(IMX_CSU_BASE + CSU_SA_OFFSET);
- tmp = mmio_read_32((uintptr_t)reg);
- value = 0x3 << (index * 2);
- tmp &= ~value;
- value = (lock * 2 | enable) << (index * 2);
- tmp |= value;
- mmio_write_32(reg, tmp);
-}
-
-void csu_get_sa_index_config(enum csu_sa_idx index,
- uint8_t *enable, uint8_t *lock)
-{
- uint32_t tmp;
- uintptr_t reg;
-
- reg = (uintptr_t)(IMX_CSU_BASE + CSU_SA_OFFSET);
- tmp = mmio_read_32((uintptr_t)reg);
- *enable = (tmp >> (index * 2)) & 1;
- *lock = (tmp >> (index * 2 + 1)) & 1;
-}
-
-void csu_set_sa_configs(struct csu_sa_conf *sa_conf, uint32_t count)
-{
- int i;
-
- for (i = 0; i < count; i++)
- csu_set_sa_index_config(sa_conf[i].index,
- sa_conf[i].enable, sa_conf[i].lock);
-}
-
-void csu_set_default_secure_configs(void)
-{
- csu_set_sa_configs(sa_def_configs, (uint32_t)ARRAY_SIZE(sa_def_configs));
-}
-
-#if defined (CSU_RDC_TEST)
-void csu_test(void)
-{
- csu_set_default_slaves_modes();
-}
-#endif
diff --git a/plat/imx/imx8mq/imx_rdc.c b/plat/imx/imx8mq/imx_rdc.c
deleted file mode 100644
index 1929c99b..00000000
--- a/plat/imx/imx8mq/imx_rdc.c
+++ /dev/null
@@ -1,187 +0,0 @@
-/*
- * Copyright 2017 NXP
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
-
-#include <debug.h>
-#include <errno.h>
-#include <stdlib.h>
-#include <stdint.h>
-#include <platform_def.h>
-#include <utils_def.h>
-#include <imx_rdc.h>
-#include <mmio.h>
-
-/*
- * Read RDC settings for one peripheral
- * read the given domains field and lock bit
- * for the given PDAP index [0..118]
- */
-int imx_rdc_get_pdap(struct rdc_pdap_conf *p)
-{
- struct imx_rdc_regs *imx_rdc = (struct imx_rdc_regs *)IMX_RDC_BASE;
- uint32_t reg = 0;
-
- reg = mmio_read_32((uintptr_t)&imx_rdc->pdap[p->index]);
- p->lock = (reg & RDC_PDAP_LCK_MASK) >> RDC_PDAP_LCK_SHIFT;
- p->domains = reg & 0xFF;
-
- return 0;
-}
-
-/*
- * Write RDC settings for one peripheral
- * Check before write if is already locked then skip
- */
-int imx_rdc_set_pdap(struct rdc_pdap_conf *p)
-{
- struct imx_rdc_regs *imx_rdc = (struct imx_rdc_regs *)IMX_RDC_BASE;
- struct rdc_pdap_conf r;
- uint32_t i, reg = 0;
- uint8_t multi_domain = 0;
-
- /* Check if locked */
- r.index = p->index;
- imx_rdc_get_pdap(&r);
- if (r.lock) {
- WARN("RDC_PDAPn %d is already locked \n", p->index);
- return -ENOENT;
- }
-
- /* Check if no domain assigned */
- if (p->domains == 0)
- return -EINVAL;
- reg |= p->domains;
-
- /* Check if SREQ is needed */
- for (i = 0; i < 7; i += 2)
- multi_domain += ((p->domains >> i) & 0x3) ? 1 : 0;
- if (multi_domain > 1)
- reg |= RDC_PDAP_SREQ_MASK;
- /* Setup Lock from input */
- reg |= p->lock << RDC_PDAP_LCK_SHIFT;
- mmio_write_32((uintptr_t)&imx_rdc->pdap[p->index], reg);
-
- return 0;
-}
-
-/*
- * Setup RDC settings for multiple peripherals
- */
-int imx_rdc_set_peripherals(struct rdc_pdap_conf *peripherals_list,
- uint32_t count)
-{
- int i, ret;
-
- for (i = 0; i < count; i++) {
- ret = imx_rdc_set_pdap(&peripherals_list[i]);
- if (ret)
- return ret;
- }
-
- return 0;
-}
-
-/*
- * Read RDC setting for one master
- * For the given index in p.index it returns the lock bit
- * and the domain field into p structure.
- */
-int imx_rdc_get_mda(struct rdc_mda_conf *p)
-{
- struct imx_rdc_regs *imx_rdc = (struct imx_rdc_regs *)IMX_RDC_BASE;
- uint32_t reg = 0;
-
- reg = mmio_read_32((uintptr_t)&imx_rdc->mda[p->index]);
- p->domain = reg & RDC_MDA_DID_MASK;
- p->lock = (reg & RDC_MDA_LCK_MASK) >> RDC_MDA_LCK_SHIFT;
- return 0;
-}
-
-/*
- * Write RDC setting for one master
- */
-int imx_rdc_set_mda(struct rdc_mda_conf *p)
-{
- struct imx_rdc_regs *imx_rdc = (struct imx_rdc_regs *)IMX_RDC_BASE;
- struct rdc_mda_conf r;
- uint32_t reg = 0;
- int ret = 0;
-
- /* Check if it is locked */
- r.index = p->index;
- imx_rdc_get_mda(&r);
- if (!r.lock) {
- reg = (p->domain & RDC_MDA_DID_MASK)
- | ((p->lock << RDC_MDA_LCK_SHIFT) & RDC_MDA_LCK_MASK);
- NOTICE("imx_rdc_setup_mda(): write addr=0x%p, reg=0x%x\n",
- &imx_rdc->mda[p->index], reg);
- mmio_write_32((uintptr_t)&imx_rdc->mda[p->index], reg);
- } else {
- WARN("RDC_MDAn %d is already locked \n", p->index);
- ret = -ENOENT;
- }
-
- return ret;
-}
-
-/*
- * Setup RDC settings for multiple masters
- */
-int imx_rdc_set_masters(struct rdc_mda_conf *masters_list, uint32_t count)
-{
- int i, ret;
-
- for (i = 0; i < count; i++) {
- ret = imx_rdc_set_mda(&masters_list[i]);
- if (ret)
- break;
- }
-
- return ret;
-}
-
-#if defined (CSU_RDC_TEST)
-/* Default peripherals settings as an example */
-static struct rdc_pdap_conf periph_config[] = {
- {RDC_PDAP_GPIO4, 0x30, 0},
-};
-
-
-/* Default masters settings as an example */
-static struct rdc_mda_conf masters_config[] = {
- {RDC_MDA_A53, 0, 0},
-};
-#else
-/* Default peripherals settings as an example */
-static struct rdc_pdap_conf periph_config[] = {
- {RDC_PDAP_GPIO1, 0x3, 0},
- {RDC_PDAP_GPIO2, 0x3, 0},
- {RDC_PDAP_GPIO3, 0x3, 0},
- {RDC_PDAP_GPIO4, 0x3, 0},
- {RDC_PDAP_GPIO5, 0x3, 0},
-};
-
-/* Default masters settings as an example */
-static struct rdc_mda_conf masters_config[] = {
- {RDC_MDA_A53, 0, 0},
- {RDC_MDA_CAAM, 0, 0},
-};
-#endif
-void imx_rdc_set_peripherals_default(void)
-{
- imx_rdc_set_peripherals(periph_config, ARRAY_SIZE(periph_config));
-}
-
-void imx_rdc_set_masters_default(void)
-{
- imx_rdc_set_masters(masters_config, ARRAY_SIZE(masters_config));
-}
-#if defined (CSU_RDC_TEST)
-void rdc_test(void)
-{
- imx_rdc_set_peripherals_default();
- imx_rdc_set_masters_default();
-}
-#endif
diff --git a/plat/imx/imx8mq/include/imx_csu.h b/plat/imx/imx8mq/include/imx_csu.h
deleted file mode 100644
index a4ae9abd..00000000
--- a/plat/imx/imx8mq/include/imx_csu.h
+++ /dev/null
@@ -1,217 +0,0 @@
-/*
- * Copyright 2017 NXP
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
-
-#ifndef __IMX_CSU_H__
-#define __IMX_CSU_H__
-
-enum csu_mode {
- CSU_NSR = 0x08,
- CSU_NSW = 0x80,
- CSU_NSRW = 0x88,
- CSU_NUR = 0x04,
- CSU_NUW = 0x40,
- CSU_NURW = 0x44,
- CSU_SSR = 0x02,
- CSU_SSW = 0x20,
- CSU_SSRW = 0x22,
- CSU_SUR = 0x01,
- CSU_SUW = 0x10,
- CSU_SURW = 0x11,
- CSU_RW = 0xff,
-};
-
-enum csu_csln_idx {
- CSU_CSLn_GPIO1 = 0,
- CSU_CSLn_GPIO2 = 1,
- CSU_CSLn_GPIO3 = 2,
- CSU_CSLn_GPIO4 = 3,
- CSU_CSLn_GPIO5 = 4,
- CSU_CSLn_Reserved1 = 5,
- CSU_CSLn_ANA_TSENSOR = 6,
- CSU_CSLn_ANA_OSC = 7,
- CSU_CSLn_WDOG1 = 8,
- CSU_CSLn_WDOG2 = 9,
- CSU_CSLn_WDOG3 = 10,
- CSU_CSLn_Reserved2 = 11,
- CSU_CSLn_SDMA2 = 12,
- CSU_CSLn_GPT1 = 13,
- CSU_CSLn_GPT2 = 14,
- CSU_CSLn_GPT3 = 15,
- CSU_CSLn_Reserved3 = 16,
- CSU_CSLn_ROMCP = 17,
- CSU_CSLn_LCDIF = 18,
- CSU_CSLn_IOMUXC = 19,
- CSU_CSLn_IOMUXC_GPR = 20,
- CSU_CSLn_OCOTP_CTRL = 21,
- CSU_CSLn_ANATOP_PLL = 22,
- CSU_CSLn_SNVS_HP = 23,
- CSU_CSLn_CCM = 24,
- CSU_CSLn_SRC = 25,
- CSU_CSLn_GPC = 26,
- CSU_CSLn_SEMAPHORE1 = 27,
- CSU_CSLn_SEMAPHORE2 = 28,
- CSU_CSLn_RDC = 29,
- CSU_CSLn_CSU = 30,
- CSU_CSLn_Reserved4 = 31,
- CSU_CSLn_MST0 = 32,
- CSU_CSLn_MST1 = 33,
- CSU_CSLn_MST2 = 34,
- CSU_CSLn_MST3 = 35,
- CSU_CSLn_HDMI_SEC = 36,
- CSU_CSLn_Reserved5 = 37,
- CSU_CSLn_PWM1 = 38,
- CSU_CSLn_PWM2 = 39,
- CSU_CSLn_PWM3 = 40,
- CSU_CSLn_PWM4 = 41,
- CSU_CSLn_SysCounter_RD = 42,
- CSU_CSLn_SysCounter_CMP = 43,
- CSU_CSLn_SysCounter_CTRL = 44,
- CSU_CSLn_HDMI_CTRL = 45,
- CSU_CSLn_GPT6 = 46,
- CSU_CSLn_GPT5 = 47,
- CSU_CSLn_GPT4 = 48,
- CSU_CSLn_TZASC = 56,
- CSU_CSLn_MTR = 59,
- CSU_CSLn_PERFMON1 = 60,
- CSU_CSLn_PERFMON2 = 61,
- CSU_CSLn_PLATFORM_CTRL = 62,
- CSU_CSLn_QoSC = 63,
- CSU_CSLn_MIPI_PHY = 64,
- CSU_CSLn_MIPI_DSI = 65,
- CSU_CSLn_I2C1 = 66,
- CSU_CSLn_I2C2 = 67,
- CSU_CSLn_I2C3 = 68,
- CSU_CSLn_I2C4 = 69,
- CSU_CSLn_UART4 = 70,
- CSU_CSLn_MIPI_CSI1 = 71,
- CSU_CSLn_MIPI_CSI_PHY1 = 72,
- CSU_CSLn_CSI1 = 73,
- CSU_CSLn_MU_A = 74,
- CSU_CSLn_MU_B = 75,
- CSU_CSLn_SEMAPHORE_HS = 76,
- CSU_CSLn_Internal1 = 77,
- CSU_CSLn_SAI1 = 78,
- CSU_CSLn_Reserved7 = 79,
- CSU_CSLn_SAI6 = 80,
- CSU_CSLn_SAI5 = 81,
- CSU_CSLn_SAI4 = 82,
- CSU_CSLn_Internal2 = 83,
- CSU_CSLn_USDHC1 = 84,
- CSU_CSLn_USDHC2 = 85,
- CSU_CSLn_MIPI_CSI2 = 86,
- CSU_CSLn_MIPI_CSI_PHY2 = 87,
- CSU_CSLn_CSI2 = 88,
- CSU_CSLn_Internal3 = 89,
- CSU_CSLn_Reserved10 = 90,
- CSU_CSLn_QSPI = 91,
- CSU_CSLn_Reserved11 = 92,
- CSU_CSLn_SDMA1 = 93,
- CSU_CSLn_ENET1 = 94,
- CSU_CSLn_Reserved12 = 95,
- CSU_CSLn_Internal4 = 96,
- CSU_CSLn_SPDIF1 = 97,
- CSU_CSLn_ECSPI1 = 98,
- CSU_CSLn_ECSPI2 = 99,
- CSU_CSLn_ECSPI3 = 100,
- CSU_CSLn_Reserved14 = 101,
- CSU_CSLn_UART1 = 102,
- CSU_CSLn_Internal5 = 103,
- CSU_CSLn_UART3 = 104,
- CSU_CSLn_UART2 = 105,
- CSU_CSLn_SPDIF2 = 106,
- CSU_CSLn_SAI2 = 107,
- CSU_CSLn_SAI3 = 108,
- CSU_CSLn_Reserved16 = 109,
- CSU_CSLn_Internal6 = 110,
- CSU_CSLn_SPBA1 = 111,
- CSU_CSLn_MOD_EN3 = 112,
- CSU_CSLn_MOD_EN0 = 113,
- CSU_CSLn_CAAM = 114,
- CSU_CSLn_DDRC_SEC = 115,
- CSU_CSLn_GIC_EXSC = 116,
- CSU_CSLn_USB_EXSC = 117,
- CSU_CSLn_OCRAM_TZ = 118,
- CSU_CSLn_OCRAM_S_TZ = 119,
- CSU_CSLn_VPU_SEC = 120,
- CSU_CSLn_DAP_EXSC = 121,
- CSU_CSLn_ROMCP_SEC = 122,
- CSU_CSLn_APBHDMA_SEC = 123,
- CSU_CSLn_M4_SEC = 124,
- CSU_CSLn_QSPI_SEC = 125,
- CSU_CSLn_GPU_EXSC = 126,
- CSU_CSLn_PCIE = 127,
-};
-
-enum csu_hp_idx {
- CSU_HP_A53,
- CSU_HP_M4,
- CSU_HP_SDMA1,
- CSU_HP_CSI,
- CSU_HP_USB,
- CSU_HP_PCIE,
- CSU_HP_VPU,
- CSU_HP_GPU,
- CSU_HP_APBHDMA,
- CSU_HP_ENET,
- CSU_HP_USDHC1,
- CSU_HP_USDHC2,
- CSU_HP_DCSS,
- CSU_HP_HUGO,
- CSU_HP_DAP,
- CSU_HP_SDMA2,
- CSU_HP_CAAM,
-};
-
-enum csu_sa_idx {
- CSU_SA_M4,
- CSU_SA_SDMA1,
- CSU_SA_CSI,
- CSU_SA_USB,
- CSU_SA_PCIE,
- CSU_SA_VPU,
- CSU_SA_GPU,
- CSU_SA_APBHDMA,
- CSU_SA_ENET,
- CSU_SA_USDHC1,
- CSU_SA_USDHC2,
- CSU_SA_DCSS,
- CSU_SA_HUGO,
- CSU_SA_DAP,
- CSU_SA_SDMA2,
- CSU_SA_CAAM,
-};
-
-struct csu_slave_conf {
- enum csu_csln_idx index;
- uint16_t mode;
- uint16_t lock;
-};
-
-struct csu_sa_conf {
- enum csu_sa_idx index;
- uint8_t enable;
- uint8_t lock;
-};
-
-void csu_set_slave_index_mode(enum csu_csln_idx index,
- uint16_t mode, uint8_t lock);
-void csu_get_slave_index_mode(enum csu_csln_idx index,
- uint16_t *mode, uint8_t *lock);
-void csu_set_slaves_modes(struct csu_slave_conf *csu_config, uint32_t count);
-void csu_set_default_slaves_modes(void);
-void csu_set_hp_index_config(enum csu_hp_idx index, uint8_t enable,
- uint8_t set_control, uint8_t lock);
-void csu_set_sa_index_config(enum csu_sa_idx index, uint8_t enable,
- uint8_t lock);
-void csu_get_sa_index_config(enum csu_sa_idx index, uint8_t *enable,
- uint8_t *lock);
-void csu_set_sa_configs(struct csu_sa_conf *sa_configs, uint32_t count);
-void csu_set_default_secure_configs(void);
-
-#if defined (CSU_RDC_TEST)
-void csu_test(void);
-#endif
-#endif /* __IMX_CSU_H__ */
diff --git a/plat/imx/imx8mq/include/imx_rdc.h b/plat/imx/imx8mq/include/imx_rdc.h
deleted file mode 100644
index 1b7179cc..00000000
--- a/plat/imx/imx8mq/include/imx_rdc.h
+++ /dev/null
@@ -1,224 +0,0 @@
-/*
- * Copyright 2017 NXP
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
-
-#ifndef __IMX_RDC_H__
-#define __IMX_RDC_H__
-
-/* Masters index */
-enum rdc_mda_idx {
- RDC_MDA_A53 = 0,
- RDC_MDA_M4 = 1,
- RDC_MDA_PCIE_CTRL1 = 2,
- RDC_MDA_PCIE_CTRL2 = 3,
- RDC_MDA_VPU_DEC = 4,
- RDC_MDA_LCDIF = 5,
- RDC_MDA_CSI1 = 6,
- RDC_MDA_CSI2 = 7,
- RDC_MDA_Coresight = 8,
- RDC_MDA_DAP = 9,
- RDC_MDA_CAAM = 10,
- RDC_MDA_SDMAp = 11,
- RDC_MDA_SDMAb = 12,
- RDC_MDA_APBHDMA = 13,
- RDC_MDA_RAWNAND = 14,
- RDC_MDA_uSDHC1 = 15,
- RDC_MDA_uSDHC2 = 16,
- RDC_MDA_DCSS = 17,
- RDC_MDA_GPU = 18,
- RDC_MDA_USB1 = 19,
- RDC_MDA_USB2 = 20,
- RDC_MDA_TESTPORT = 21,
- RDC_MDA_ENET1_TX = 22,
- RDC_MDA_ENET1_RX = 23,
- RDC_MDA_SDMA2 = 24,
- RDC_MDA_Reserved = 25,
- RDC_MDA_SDMA1 = 26,
-};
-
-/* Peripherals index */
-enum rdc_pdap_idx {
- RDC_PDAP_GPIO1 = 0,
- RDC_PDAP_GPIO2 = 1,
- RDC_PDAP_GPIO3 = 2,
- RDC_PDAP_GPIO4 = 3,
- RDC_PDAP_GPIO5 = 4,
- RDC_PDAP_Reserved1 = 5,
- RDC_PDAP_ANA_TSENSOR = 6,
- RDC_PDAP_ANA_OSC = 7,
- RDC_PDAP_WDOG1 = 8,
- RDC_PDAP_WDOG2 = 9,
- RDC_PDAP_WDOG3 = 10,
- RDC_PDAP_Reserved2 = 11,
- RDC_PDAP_SDMA2 = 12,
- RDC_PDAP_GPT1 = 13,
- RDC_PDAP_GPT2 = 14,
- RDC_PDAP_GPT3 = 15,
- RDC_PDAP_Reserved3 = 16,
- RDC_PDAP_ROMCP = 17,
- RDC_PDAP_LCDIF = 18,
- RDC_PDAP_IOMUXC = 19,
- RDC_PDAP_IOMUXC_GPR = 20,
- RDC_PDAP_OCOTP_CTRL = 21,
- RDC_PDAP_ANATOP_PLL = 22,
- RDC_PDAP_SNVS_HP = 23,
- RDC_PDAP_CCM = 24,
- RDC_PDAP_SRC = 25,
- RDC_PDAP_GPC = 26,
- RDC_PDAP_SEMAPHORE1 = 27,
- RDC_PDAP_SEMAPHORE2 = 28,
- RDC_PDAP_RDC = 29,
- RDC_PDAP_CSU = 30,
- RDC_PDAP_Reserved4 = 31,
- RDC_PDAP_MST0 = 32,
- RDC_PDAP_MST1 = 33,
- RDC_PDAP_MST2 = 34,
- RDC_PDAP_MST3 = 35,
- RDC_PDAP_HDMI_SEC = 36,
- RDC_PDAP_Reserved5 = 37,
- RDC_PDAP_PWM1 = 38,
- RDC_PDAP_PWM2 = 39,
- RDC_PDAP_PWM3 = 40,
- RDC_PDAP_PWM4 = 41,
- RDC_PDAP_SysCounter_RD = 42,
- RDC_PDAP_SysCounter_CMP = 43,
- RDC_PDAP_SysCounter_CTRL = 44,
- RDC_PDAP_HDMI_CTRL = 45,
- RDC_PDAP_GPT6 = 46,
- RDC_PDAP_GPT5 = 47,
- RDC_PDAP_GPT4 = 48,
- RDC_PDAP_TZASC = 56,
- RDC_PDAP_MTR = 59,
- RDC_PDAP_PERFMON1 = 60,
- RDC_PDAP_PERFMON2 = 61,
- RDC_PDAP_PLATFORM_CTRL = 62,
- RDC_PDAP_QoSC = 63,
- RDC_PDAP_MIPI_PHY = 64,
- RDC_PDAP_MIPI_DSI = 65,
- RDC_PDAP_I2C1 = 66,
- RDC_PDAP_I2C2 = 67,
- RDC_PDAP_I2C3 = 68,
- RDC_PDAP_I2C4 = 69,
- RDC_PDAP_UART4 = 70,
- RDC_PDAP_MIPI_CSI1 = 71,
- RDC_PDAP_MIPI_CSI_PHY1 = 72,
- RDC_PDAP_CSI1 = 73,
- RDC_PDAP_MU_A = 74,
- RDC_PDAP_MU_B = 75,
- RDC_PDAP_SEMAPHORE_HS = 76,
- RDC_PDAP_Reserved6 = 77,
- RDC_PDAP_SAI1 = 78,
- RDC_PDAP_Reserved7 = 79,
- RDC_PDAP_SAI6 = 80,
- RDC_PDAP_SAI5 = 81,
- RDC_PDAP_SAI4 = 82,
- RDC_PDAP_Reserved8 = 83,
- RDC_PDAP_USDHC1 = 84,
- RDC_PDAP_USDHC2 = 85,
- RDC_PDAP_MIPI_CSI2 = 86,
- RDC_PDAP_MIPI_CSI_PHY2 = 87,
- RDC_PDAP_CSI2 = 88,
- RDC_PDAP_Reserved9 = 89,
- RDC_PDAP_Reserved10 = 90,
- RDC_PDAP_QSPI = 91,
- RDC_PDAP_Reserved11 = 92,
- RDC_PDAP_SDMA1 = 93,
- RDC_PDAP_ENET1 = 94,
- RDC_PDAP_Reserved12 = 95,
- RDC_PDAP_Reserved13 = 96,
- RDC_PDAP_SPDIF1 = 97,
- RDC_PDAP_ECSPI1 = 98,
- RDC_PDAP_ECSPI2 = 99,
- RDC_PDAP_ECSPI3 = 100,
- RDC_PDAP_Reserved14 = 101,
- RDC_PDAP_UART1 = 102,
- RDC_PDAP_Reserved15 = 103,
- RDC_PDAP_UART3 = 104,
- RDC_PDAP_UART2 = 105,
- RDC_PDAP_SPDIF2 = 106,
- RDC_PDAP_SAI2 = 107,
- RDC_PDAP_SAI3 = 108,
- RDC_PDAP_Reserved16 = 109,
- RDC_PDAP_Reserved17 = 110,
- RDC_PDAP_SPBA1 = 111,
- RDC_PDAP_CAAM = 114,
- RDC_PDAP_DDRC_SEC = 115,
- RDC_PDAP_GIC_EXSC = 116,
- RDC_PDAP_USB_EXSC = 117,
- RDC_PDAP_OCRAM_TZ = 118,
- RDC_PDAP_OCRAM_S_TZ = 119,
- RDC_PDAP_VPU_SEC = 120,
- RDC_PDAP_DAP_EXSC = 121,
- RDC_PDAP_ROMCP_SEC = 122,
- RDC_PDAP_APBHDMA_SEC = 123,
- RDC_PDAP_M4_SEC = 124,
- RDC_PDAP_QSPI_SEC = 125,
- RDC_PDAP_GPU_EXSC = 126,
- RDC_PDAP_PCIE = 127,
-};
-
-/* RDC registers mapping */
-struct imx_rdc_regs {
- uint32_t vir; /* Version information */
- uint32_t reserved1[8];
- uint32_t stat; /* Status */
- uint32_t intctrl; /* Interrupt and Control */
- uint32_t intstat; /* Interrupt Status */
- uint32_t reserved2[116];
- uint32_t mda[27]; /* Master Domain Assignment */
- uint32_t reserved3[101];
- uint32_t pdap[118]; /* Peripheral Domain Access Permissions */
- uint32_t reserved4[138];
- struct {
- uint32_t mrsa; /* Memory Region Start Address */
- uint32_t mrea; /* Memory Region End Address */
- uint32_t mrc; /* Memory Region Control */
- uint32_t mrvs; /* Memory Region Violation Status */
- } mem_region[52];
-};
-
-struct rdc_pdap_conf {
- enum rdc_pdap_idx index; /* Peripheral index */
- uint8_t domains; /* Assigned domains */
- uint8_t lock; /* Lock */
-};
-
-struct rdc_mda_conf {
- enum rdc_mda_idx index; /* Master index */
- uint8_t domain; /* Assigned domain */
- uint8_t lock; /* Lock */
-};
-
-#define RDC_MDA_DID_SHIFT 0
-#define RDC_MDA_DID_MASK (0x3 << RDC_MDA_DID_SHIFT)
-#define RDC_MDA_LCK_SHIFT 31
-#define RDC_MDA_LCK_MASK (0x1 << RDC_MDA_LCK_SHIFT)
-
-#define RDC_PDAP_DW_SHIFT(domain) ((domain) << 1)
-#define RDC_PDAP_DR_SHIFT(domain) (1 + RDC_PDAP_DW_SHIFT(domain))
-#define RDC_PDAP_DW_MASK(domain) (1 << RDC_PDAP_DW_SHIFT(domain))
-#define RDC_PDAP_DR_MASK(domain) (1 << RDC_PDAP_DR_SHIFT(domain))
-#define RDC_PDAP_DRW_MASK(domain) (RDC_PDAP_DW_MASK(domain) | \
- RDC_PDAP_DR_MASK(domain))
-
-#define RDC_PDAP_SREQ_SHIFT 30
-#define RDC_PDAP_SREQ_MASK (0x1 << RDC_PDAP_SREQ_SHIFT)
-#define RDC_PDAP_LCK_SHIFT 31
-#define RDC_PDAP_LCK_MASK (0x1 << RDC_PDAP_LCK_SHIFT)
-
-int imx_rdc_get_pdap(struct rdc_pdap_conf *p);
-int imx_rdc_set_pdap(struct rdc_pdap_conf *p);
-int imx_rdc_set_peripherals(struct rdc_pdap_conf *peripheral_list,
- uint32_t count);
-void imx_rdc_set_peripherals_default(void);
-int imx_rdc_get_mda(struct rdc_mda_conf *p);
-int imx_rdc_set_mda(struct rdc_mda_conf *p);
-int imx_rdc_set_masters(struct rdc_mda_conf *masters_list, uint32_t count);
-void imx_rdc_set_masters_default(void);
-
-#if defined (CSU_RDC_TEST)
-void rdc_test(void);
-#endif
-#endif /* __IMX_RDC_H__*/
diff --git a/plat/imx/imx8mq/platform.mk b/plat/imx/imx8mq/platform.mk
index 4065e452..8cddf99a 100644
--- a/plat/imx/imx8mq/platform.mk
+++ b/plat/imx/imx8mq/platform.mk
@@ -21,8 +21,8 @@ BL31_SOURCES += plat/imx/common/imx8_helpers.S \
plat/imx/common/imx8m/hab.c \
plat/imx/imx8mq/gpc.c \
plat/imx/imx8mq/imx8mq_psci.c \
- plat/imx/imx8mq/imx_csu.c \
- plat/imx/imx8mq/imx_rdc.c \
+ plat/imx/common/imx8m/imx_csu.c \
+ plat/imx/common/imx8m/imx_rdc.c \
plat/imx/common/imx8_topology.c \
plat/common/plat_psci_common.c \
lib/xlat_tables/aarch64/xlat_tables.c \