xref: /qemu/include/hw/arm/fsl-imx8mp.h (revision 487967bed65083db33561edc1255ced422bfbff5)
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