1 /* 2 * i.MX 8M Plus SoC Definitions 3 * 4 * Copyright (c) 2024, Bernhard Beschow <shentey@gmail.com> 5 * 6 * SPDX-License-Identifier: GPL-2.0-or-later 7 */ 8 9 #ifndef FSL_IMX8MP_H 10 #define FSL_IMX8MP_H 11 12 #include "cpu.h" 13 #include "hw/char/imx_serial.h" 14 #include "hw/intc/arm_gicv3_common.h" 15 #include "hw/misc/imx7_snvs.h" 16 #include "hw/misc/imx8mp_analog.h" 17 #include "hw/misc/imx8mp_ccm.h" 18 #include "qom/object.h" 19 #include "qemu/units.h" 20 21 #define TYPE_FSL_IMX8MP "fsl-imx8mp" 22 OBJECT_DECLARE_SIMPLE_TYPE(FslImx8mpState, FSL_IMX8MP) 23 24 #define FSL_IMX8MP_RAM_START 0x40000000 25 #define FSL_IMX8MP_RAM_SIZE_MAX (8 * GiB) 26 27 enum FslImx8mpConfiguration { 28 FSL_IMX8MP_NUM_CPUS = 4, 29 FSL_IMX8MP_NUM_IRQS = 160, 30 FSL_IMX8MP_NUM_UARTS = 4, 31 }; 32 33 struct FslImx8mpState { 34 DeviceState parent_obj; 35 36 ARMCPU cpu[FSL_IMX8MP_NUM_CPUS]; 37 GICv3State gic; 38 IMX8MPCCMState ccm; 39 IMX8MPAnalogState analog; 40 IMX7SNVSState snvs; 41 IMXSerialState uart[FSL_IMX8MP_NUM_UARTS]; 42 }; 43 44 enum FslImx8mpMemoryRegions { 45 FSL_IMX8MP_A53_DAP, 46 FSL_IMX8MP_AIPS1_CONFIGURATION, 47 FSL_IMX8MP_AIPS2_CONFIGURATION, 48 FSL_IMX8MP_AIPS3_CONFIGURATION, 49 FSL_IMX8MP_AIPS4_CONFIGURATION, 50 FSL_IMX8MP_AIPS5_CONFIGURATION, 51 FSL_IMX8MP_ANA_OSC, 52 FSL_IMX8MP_ANA_PLL, 53 FSL_IMX8MP_ANA_TSENSOR, 54 FSL_IMX8MP_APBH_DMA, 55 FSL_IMX8MP_ASRC, 56 FSL_IMX8MP_AUDIO_BLK_CTRL, 57 FSL_IMX8MP_AUDIO_DSP, 58 FSL_IMX8MP_AUDIO_XCVR_RX, 59 FSL_IMX8MP_AUD_IRQ_STEER, 60 FSL_IMX8MP_BOOT_ROM, 61 FSL_IMX8MP_BOOT_ROM_PROTECTED, 62 FSL_IMX8MP_CAAM, 63 FSL_IMX8MP_CAAM_MEM, 64 FSL_IMX8MP_CCM, 65 FSL_IMX8MP_CSU, 66 FSL_IMX8MP_DDR_BLK_CTRL, 67 FSL_IMX8MP_DDR_CTL, 68 FSL_IMX8MP_DDR_PERF_MON, 69 FSL_IMX8MP_DDR_PHY, 70 FSL_IMX8MP_DDR_PHY_BROADCAST, 71 FSL_IMX8MP_ECSPI1, 72 FSL_IMX8MP_ECSPI2, 73 FSL_IMX8MP_ECSPI3, 74 FSL_IMX8MP_EDMA_CHANNELS, 75 FSL_IMX8MP_EDMA_MANAGEMENT_PAGE, 76 FSL_IMX8MP_ENET1, 77 FSL_IMX8MP_ENET2_TSN, 78 FSL_IMX8MP_FLEXCAN1, 79 FSL_IMX8MP_FLEXCAN2, 80 FSL_IMX8MP_GIC_DIST, 81 FSL_IMX8MP_GIC_REDIST, 82 FSL_IMX8MP_GPC, 83 FSL_IMX8MP_GPIO1, 84 FSL_IMX8MP_GPIO2, 85 FSL_IMX8MP_GPIO3, 86 FSL_IMX8MP_GPIO4, 87 FSL_IMX8MP_GPIO5, 88 FSL_IMX8MP_GPT1, 89 FSL_IMX8MP_GPT2, 90 FSL_IMX8MP_GPT3, 91 FSL_IMX8MP_GPT4, 92 FSL_IMX8MP_GPT5, 93 FSL_IMX8MP_GPT6, 94 FSL_IMX8MP_GPU2D, 95 FSL_IMX8MP_GPU3D, 96 FSL_IMX8MP_HDMI_TX, 97 FSL_IMX8MP_HDMI_TX_AUDLNK_MSTR, 98 FSL_IMX8MP_HSIO_BLK_CTL, 99 FSL_IMX8MP_I2C1, 100 FSL_IMX8MP_I2C2, 101 FSL_IMX8MP_I2C3, 102 FSL_IMX8MP_I2C4, 103 FSL_IMX8MP_I2C5, 104 FSL_IMX8MP_I2C6, 105 FSL_IMX8MP_INTERCONNECT, 106 FSL_IMX8MP_IOMUXC, 107 FSL_IMX8MP_IOMUXC_GPR, 108 FSL_IMX8MP_IPS_DEWARP, 109 FSL_IMX8MP_ISI, 110 FSL_IMX8MP_ISP1, 111 FSL_IMX8MP_ISP2, 112 FSL_IMX8MP_LCDIF1, 113 FSL_IMX8MP_LCDIF2, 114 FSL_IMX8MP_MEDIA_BLK_CTL, 115 FSL_IMX8MP_MIPI_CSI1, 116 FSL_IMX8MP_MIPI_CSI2, 117 FSL_IMX8MP_MIPI_DSI1, 118 FSL_IMX8MP_MU_1_A, 119 FSL_IMX8MP_MU_1_B, 120 FSL_IMX8MP_MU_2_A, 121 FSL_IMX8MP_MU_2_B, 122 FSL_IMX8MP_MU_3_A, 123 FSL_IMX8MP_MU_3_B, 124 FSL_IMX8MP_NPU, 125 FSL_IMX8MP_OCOTP_CTRL, 126 FSL_IMX8MP_OCRAM, 127 FSL_IMX8MP_OCRAM_S, 128 FSL_IMX8MP_PCIE1, 129 FSL_IMX8MP_PCIE1_MEM, 130 FSL_IMX8MP_PCIE_PHY1, 131 FSL_IMX8MP_PDM, 132 FSL_IMX8MP_PERFMON1, 133 FSL_IMX8MP_PERFMON2, 134 FSL_IMX8MP_PWM1, 135 FSL_IMX8MP_PWM2, 136 FSL_IMX8MP_PWM3, 137 FSL_IMX8MP_PWM4, 138 FSL_IMX8MP_QOSC, 139 FSL_IMX8MP_QSPI, 140 FSL_IMX8MP_QSPI1_RX_BUFFER, 141 FSL_IMX8MP_QSPI1_TX_BUFFER, 142 FSL_IMX8MP_QSPI_MEM, 143 FSL_IMX8MP_RAM, 144 FSL_IMX8MP_RDC, 145 FSL_IMX8MP_SAI1, 146 FSL_IMX8MP_SAI2, 147 FSL_IMX8MP_SAI3, 148 FSL_IMX8MP_SAI5, 149 FSL_IMX8MP_SAI6, 150 FSL_IMX8MP_SAI7, 151 FSL_IMX8MP_SDMA1, 152 FSL_IMX8MP_SDMA2, 153 FSL_IMX8MP_SDMA3, 154 FSL_IMX8MP_SEMAPHORE1, 155 FSL_IMX8MP_SEMAPHORE2, 156 FSL_IMX8MP_SEMAPHORE_HS, 157 FSL_IMX8MP_SNVS_HP, 158 FSL_IMX8MP_SPBA1, 159 FSL_IMX8MP_SPBA2, 160 FSL_IMX8MP_SRC, 161 FSL_IMX8MP_SYSCNT_CMP, 162 FSL_IMX8MP_SYSCNT_CTRL, 163 FSL_IMX8MP_SYSCNT_RD, 164 FSL_IMX8MP_TCM_DTCM, 165 FSL_IMX8MP_TCM_ITCM, 166 FSL_IMX8MP_TZASC, 167 FSL_IMX8MP_UART1, 168 FSL_IMX8MP_UART2, 169 FSL_IMX8MP_UART3, 170 FSL_IMX8MP_UART4, 171 FSL_IMX8MP_USB1, 172 FSL_IMX8MP_USB2, 173 FSL_IMX8MP_USDHC1, 174 FSL_IMX8MP_USDHC2, 175 FSL_IMX8MP_USDHC3, 176 FSL_IMX8MP_VPU, 177 FSL_IMX8MP_VPU_BLK_CTRL, 178 FSL_IMX8MP_VPU_G1_DECODER, 179 FSL_IMX8MP_VPU_G2_DECODER, 180 FSL_IMX8MP_VPU_VC8000E_ENCODER, 181 FSL_IMX8MP_WDOG1, 182 FSL_IMX8MP_WDOG2, 183 FSL_IMX8MP_WDOG3, 184 }; 185 186 enum FslImx8mpIrqs { 187 FSL_IMX8MP_UART1_IRQ = 26, 188 FSL_IMX8MP_UART2_IRQ = 27, 189 FSL_IMX8MP_UART3_IRQ = 28, 190 FSL_IMX8MP_UART4_IRQ = 29, 191 FSL_IMX8MP_UART5_IRQ = 30, 192 FSL_IMX8MP_UART6_IRQ = 16, 193 }; 194 195 #endif /* FSL_IMX8MP_H */ 196