/* * 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__ */