You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
qemu/include/hw/arm/fsl-imx8mp.h

285 lines
7.3 KiB
C

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