| /* |
| * i.MX 8M Plus SoC Definitions |
| * |
| * Copyright (c) 2024, Bernhard Beschow <shentey@gmail.com> |
| * |
| * SPDX-License-Identifier: GPL-2.0-or-later |
| */ |
| |
| #ifndef FSL_IMX8MP_H |
| #define FSL_IMX8MP_H |
| |
| #include "cpu.h" |
| #include "hw/char/imx_serial.h" |
| #include "hw/gpio/imx_gpio.h" |
| #include "hw/i2c/imx_i2c.h" |
| #include "hw/intc/arm_gicv3_common.h" |
| #include "hw/misc/imx7_snvs.h" |
| #include "hw/misc/imx8mp_analog.h" |
| #include "hw/misc/imx8mp_ccm.h" |
| #include "hw/net/imx_fec.h" |
| #include "hw/or-irq.h" |
| #include "hw/pci-host/designware.h" |
| #include "hw/pci-host/fsl_imx8m_phy.h" |
| #include "hw/sd/sdhci.h" |
| #include "hw/ssi/imx_spi.h" |
| #include "hw/timer/imx_gpt.h" |
| #include "hw/usb/hcd-dwc3.h" |
| #include "hw/watchdog/wdt_imx2.h" |
| #include "hw/sysbus.h" |
| #include "qom/object.h" |
| #include "qemu/units.h" |
| |
| #define TYPE_FSL_IMX8MP "fsl-imx8mp" |
| OBJECT_DECLARE_SIMPLE_TYPE(FslImx8mpState, FSL_IMX8MP) |
| |
| #define FSL_IMX8MP_RAM_START 0x40000000 |
| #define FSL_IMX8MP_RAM_SIZE_MAX (8 * GiB) |
| |
| enum FslImx8mpConfiguration { |
| FSL_IMX8MP_NUM_CPUS = 4, |
| FSL_IMX8MP_NUM_ECSPIS = 3, |
| FSL_IMX8MP_NUM_GPIOS = 5, |
| FSL_IMX8MP_NUM_GPTS = 6, |
| FSL_IMX8MP_NUM_I2CS = 6, |
| FSL_IMX8MP_NUM_IRQS = 160, |
| FSL_IMX8MP_NUM_UARTS = 4, |
| FSL_IMX8MP_NUM_USBS = 2, |
| FSL_IMX8MP_NUM_USDHCS = 3, |
| FSL_IMX8MP_NUM_WDTS = 3, |
| }; |
| |
| struct FslImx8mpState { |
| SysBusDevice parent_obj; |
| |
| ARMCPU cpu[FSL_IMX8MP_NUM_CPUS]; |
| GICv3State gic; |
| IMXGPTState gpt[FSL_IMX8MP_NUM_GPTS]; |
| IMXGPIOState gpio[FSL_IMX8MP_NUM_GPIOS]; |
| IMX8MPCCMState ccm; |
| IMX8MPAnalogState analog; |
| IMX7SNVSState snvs; |
| IMXSPIState spi[FSL_IMX8MP_NUM_ECSPIS]; |
| IMXI2CState i2c[FSL_IMX8MP_NUM_I2CS]; |
| IMXSerialState uart[FSL_IMX8MP_NUM_UARTS]; |
| IMXFECState enet; |
| SDHCIState usdhc[FSL_IMX8MP_NUM_USDHCS]; |
| IMX2WdtState wdt[FSL_IMX8MP_NUM_WDTS]; |
| USBDWC3 usb[FSL_IMX8MP_NUM_USBS]; |
| DesignwarePCIEHost pcie; |
| FslImx8mPciePhyState pcie_phy; |
| OrIRQState gpt5_gpt6_irq; |
| MemoryRegion ocram; |
| |
| uint32_t phy_num; |
| bool phy_connected; |
| }; |
| |
| enum FslImx8mpMemoryRegions { |
| FSL_IMX8MP_A53_DAP, |
| FSL_IMX8MP_AIPS1_CONFIGURATION, |
| FSL_IMX8MP_AIPS2_CONFIGURATION, |
| FSL_IMX8MP_AIPS3_CONFIGURATION, |
| FSL_IMX8MP_AIPS4_CONFIGURATION, |
| FSL_IMX8MP_AIPS5_CONFIGURATION, |
| FSL_IMX8MP_ANA_OSC, |
| FSL_IMX8MP_ANA_PLL, |
| FSL_IMX8MP_ANA_TSENSOR, |
| FSL_IMX8MP_APBH_DMA, |
| FSL_IMX8MP_ASRC, |
| FSL_IMX8MP_AUDIO_BLK_CTRL, |
| FSL_IMX8MP_AUDIO_DSP, |
| FSL_IMX8MP_AUDIO_XCVR_RX, |
| FSL_IMX8MP_AUD_IRQ_STEER, |
| FSL_IMX8MP_BOOT_ROM, |
| FSL_IMX8MP_BOOT_ROM_PROTECTED, |
| FSL_IMX8MP_CAAM, |
| FSL_IMX8MP_CAAM_MEM, |
| FSL_IMX8MP_CCM, |
| FSL_IMX8MP_CSU, |
| FSL_IMX8MP_DDR_BLK_CTRL, |
| FSL_IMX8MP_DDR_CTL, |
| FSL_IMX8MP_DDR_PERF_MON, |
| FSL_IMX8MP_DDR_PHY, |
| FSL_IMX8MP_DDR_PHY_BROADCAST, |
| FSL_IMX8MP_ECSPI1, |
| FSL_IMX8MP_ECSPI2, |
| FSL_IMX8MP_ECSPI3, |
| FSL_IMX8MP_EDMA_CHANNELS, |
| FSL_IMX8MP_EDMA_MANAGEMENT_PAGE, |
| FSL_IMX8MP_ENET1, |
| FSL_IMX8MP_ENET2_TSN, |
| FSL_IMX8MP_FLEXCAN1, |
| FSL_IMX8MP_FLEXCAN2, |
| FSL_IMX8MP_GIC_DIST, |
| FSL_IMX8MP_GIC_REDIST, |
| FSL_IMX8MP_GPC, |
| FSL_IMX8MP_GPIO1, |
| FSL_IMX8MP_GPIO2, |
| FSL_IMX8MP_GPIO3, |
| FSL_IMX8MP_GPIO4, |
| FSL_IMX8MP_GPIO5, |
| FSL_IMX8MP_GPT1, |
| FSL_IMX8MP_GPT2, |
| FSL_IMX8MP_GPT3, |
| FSL_IMX8MP_GPT4, |
| FSL_IMX8MP_GPT5, |
| FSL_IMX8MP_GPT6, |
| FSL_IMX8MP_GPU2D, |
| FSL_IMX8MP_GPU3D, |
| FSL_IMX8MP_HDMI_TX, |
| FSL_IMX8MP_HDMI_TX_AUDLNK_MSTR, |
| FSL_IMX8MP_HSIO_BLK_CTL, |
| FSL_IMX8MP_I2C1, |
| FSL_IMX8MP_I2C2, |
| FSL_IMX8MP_I2C3, |
| FSL_IMX8MP_I2C4, |
| FSL_IMX8MP_I2C5, |
| FSL_IMX8MP_I2C6, |
| FSL_IMX8MP_INTERCONNECT, |
| FSL_IMX8MP_IOMUXC, |
| FSL_IMX8MP_IOMUXC_GPR, |
| FSL_IMX8MP_IPS_DEWARP, |
| FSL_IMX8MP_ISI, |
| FSL_IMX8MP_ISP1, |
| FSL_IMX8MP_ISP2, |
| FSL_IMX8MP_LCDIF1, |
| FSL_IMX8MP_LCDIF2, |
| FSL_IMX8MP_MEDIA_BLK_CTL, |
| FSL_IMX8MP_MIPI_CSI1, |
| FSL_IMX8MP_MIPI_CSI2, |
| FSL_IMX8MP_MIPI_DSI1, |
| FSL_IMX8MP_MU_1_A, |
| FSL_IMX8MP_MU_1_B, |
| FSL_IMX8MP_MU_2_A, |
| FSL_IMX8MP_MU_2_B, |
| FSL_IMX8MP_MU_3_A, |
| FSL_IMX8MP_MU_3_B, |
| FSL_IMX8MP_NPU, |
| FSL_IMX8MP_OCOTP_CTRL, |
| FSL_IMX8MP_OCRAM, |
| FSL_IMX8MP_OCRAM_S, |
| FSL_IMX8MP_PCIE1, |
| FSL_IMX8MP_PCIE1_MEM, |
| FSL_IMX8MP_PCIE_PHY1, |
| FSL_IMX8MP_PDM, |
| FSL_IMX8MP_PERFMON1, |
| FSL_IMX8MP_PERFMON2, |
| FSL_IMX8MP_PWM1, |
| FSL_IMX8MP_PWM2, |
| FSL_IMX8MP_PWM3, |
| FSL_IMX8MP_PWM4, |
| FSL_IMX8MP_QOSC, |
| FSL_IMX8MP_QSPI, |
| FSL_IMX8MP_QSPI1_RX_BUFFER, |
| FSL_IMX8MP_QSPI1_TX_BUFFER, |
| FSL_IMX8MP_QSPI_MEM, |
| FSL_IMX8MP_RAM, |
| FSL_IMX8MP_RDC, |
| FSL_IMX8MP_SAI1, |
| FSL_IMX8MP_SAI2, |
| FSL_IMX8MP_SAI3, |
| FSL_IMX8MP_SAI5, |
| FSL_IMX8MP_SAI6, |
| FSL_IMX8MP_SAI7, |
| FSL_IMX8MP_SDMA1, |
| FSL_IMX8MP_SDMA2, |
| FSL_IMX8MP_SDMA3, |
| FSL_IMX8MP_SEMAPHORE1, |
| FSL_IMX8MP_SEMAPHORE2, |
| FSL_IMX8MP_SEMAPHORE_HS, |
| FSL_IMX8MP_SNVS_HP, |
| FSL_IMX8MP_SPBA1, |
| FSL_IMX8MP_SPBA2, |
| FSL_IMX8MP_SRC, |
| FSL_IMX8MP_SYSCNT_CMP, |
| FSL_IMX8MP_SYSCNT_CTRL, |
| FSL_IMX8MP_SYSCNT_RD, |
| FSL_IMX8MP_TCM_DTCM, |
| FSL_IMX8MP_TCM_ITCM, |
| FSL_IMX8MP_TZASC, |
| FSL_IMX8MP_UART1, |
| FSL_IMX8MP_UART2, |
| FSL_IMX8MP_UART3, |
| FSL_IMX8MP_UART4, |
| FSL_IMX8MP_USB1, |
| FSL_IMX8MP_USB2, |
| FSL_IMX8MP_USB1_DEV, |
| FSL_IMX8MP_USB2_DEV, |
| FSL_IMX8MP_USB1_OTG, |
| FSL_IMX8MP_USB2_OTG, |
| FSL_IMX8MP_USB1_GLUE, |
| FSL_IMX8MP_USB2_GLUE, |
| FSL_IMX8MP_USDHC1, |
| FSL_IMX8MP_USDHC2, |
| FSL_IMX8MP_USDHC3, |
| FSL_IMX8MP_VPU, |
| FSL_IMX8MP_VPU_BLK_CTRL, |
| FSL_IMX8MP_VPU_G1_DECODER, |
| FSL_IMX8MP_VPU_G2_DECODER, |
| FSL_IMX8MP_VPU_VC8000E_ENCODER, |
| FSL_IMX8MP_WDOG1, |
| FSL_IMX8MP_WDOG2, |
| FSL_IMX8MP_WDOG3, |
| }; |
| |
| enum FslImx8mpIrqs { |
| FSL_IMX8MP_USDHC1_IRQ = 22, |
| FSL_IMX8MP_USDHC2_IRQ = 23, |
| FSL_IMX8MP_USDHC3_IRQ = 24, |
| |
| FSL_IMX8MP_UART1_IRQ = 26, |
| FSL_IMX8MP_UART2_IRQ = 27, |
| FSL_IMX8MP_UART3_IRQ = 28, |
| FSL_IMX8MP_UART4_IRQ = 29, |
| FSL_IMX8MP_UART5_IRQ = 30, |
| FSL_IMX8MP_UART6_IRQ = 16, |
| |
| FSL_IMX8MP_ECSPI1_IRQ = 31, |
| FSL_IMX8MP_ECSPI2_IRQ = 32, |
| FSL_IMX8MP_ECSPI3_IRQ = 33, |
| |
| FSL_IMX8MP_I2C1_IRQ = 35, |
| FSL_IMX8MP_I2C2_IRQ = 36, |
| FSL_IMX8MP_I2C3_IRQ = 37, |
| FSL_IMX8MP_I2C4_IRQ = 38, |
| |
| FSL_IMX8MP_USB1_IRQ = 40, |
| FSL_IMX8MP_USB2_IRQ = 41, |
| |
| FSL_IMX8MP_GPT1_IRQ = 55, |
| FSL_IMX8MP_GPT2_IRQ = 54, |
| FSL_IMX8MP_GPT3_IRQ = 53, |
| FSL_IMX8MP_GPT4_IRQ = 52, |
| FSL_IMX8MP_GPT5_GPT6_IRQ = 51, |
| |
| FSL_IMX8MP_GPIO1_LOW_IRQ = 64, |
| FSL_IMX8MP_GPIO1_HIGH_IRQ = 65, |
| FSL_IMX8MP_GPIO2_LOW_IRQ = 66, |
| FSL_IMX8MP_GPIO2_HIGH_IRQ = 67, |
| FSL_IMX8MP_GPIO3_LOW_IRQ = 68, |
| FSL_IMX8MP_GPIO3_HIGH_IRQ = 69, |
| FSL_IMX8MP_GPIO4_LOW_IRQ = 70, |
| FSL_IMX8MP_GPIO4_HIGH_IRQ = 71, |
| FSL_IMX8MP_GPIO5_LOW_IRQ = 72, |
| FSL_IMX8MP_GPIO5_HIGH_IRQ = 73, |
| |
| FSL_IMX8MP_I2C5_IRQ = 76, |
| FSL_IMX8MP_I2C6_IRQ = 77, |
| |
| FSL_IMX8MP_WDOG1_IRQ = 78, |
| FSL_IMX8MP_WDOG2_IRQ = 79, |
| FSL_IMX8MP_WDOG3_IRQ = 10, |
| |
| FSL_IMX8MP_ENET1_MAC_IRQ = 118, |
| FSL_IMX6_ENET1_MAC_1588_IRQ = 121, |
| |
| FSL_IMX8MP_PCI_INTA_IRQ = 126, |
| FSL_IMX8MP_PCI_INTB_IRQ = 125, |
| FSL_IMX8MP_PCI_INTC_IRQ = 124, |
| FSL_IMX8MP_PCI_INTD_IRQ = 123, |
| FSL_IMX8MP_PCI_MSI_IRQ = 140, |
| }; |
| |
| #endif /* FSL_IMX8MP_H */ |