/* * Microchip PolarFire SoC machine interface * * Copyright (c) 2020 Wind River Systems, Inc. * * Author: * Bin Meng * * This program is free software; you can redistribute it and/or modify it * under the terms and conditions of the GNU General Public License, * version 2 or later, as published by the Free Software Foundation. * * This program is distributed in the hope it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * more details. * * You should have received a copy of the GNU General Public License along with * this program. If not, see . */ #ifndef HW_MICROCHIP_PFSOC_H #define HW_MICROCHIP_PFSOC_H #include "hw/boards.h" #include "hw/char/mchp_pfsoc_mmuart.h" #include "hw/cpu/cluster.h" #include "hw/dma/sifive_pdma.h" #include "hw/misc/mchp_pfsoc_dmc.h" #include "hw/misc/mchp_pfsoc_ioscb.h" #include "hw/misc/mchp_pfsoc_sysreg.h" #include "hw/net/cadence_gem.h" #include "hw/sd/cadence_sdhci.h" #include "hw/riscv/riscv_hart.h" typedef struct MicrochipPFSoCState { /*< private >*/ DeviceState parent_obj; /*< public >*/ CPUClusterState e_cluster; CPUClusterState u_cluster; RISCVHartArrayState e_cpus; RISCVHartArrayState u_cpus; DeviceState *plic; MchpPfSoCDdrSgmiiPhyState ddr_sgmii_phy; MchpPfSoCDdrCfgState ddr_cfg; MchpPfSoCIoscbState ioscb; MchpPfSoCMMUartState *serial0; MchpPfSoCMMUartState *serial1; MchpPfSoCMMUartState *serial2; MchpPfSoCMMUartState *serial3; MchpPfSoCMMUartState *serial4; MchpPfSoCSysregState sysreg; SiFivePDMAState dma; CadenceGEMState gem0; CadenceGEMState gem1; CadenceSDHCIState sdhci; } MicrochipPFSoCState; #define TYPE_MICROCHIP_PFSOC "microchip.pfsoc" #define MICROCHIP_PFSOC(obj) \ OBJECT_CHECK(MicrochipPFSoCState, (obj), TYPE_MICROCHIP_PFSOC) typedef struct MicrochipIcicleKitState { /*< private >*/ MachineState parent_obj; /*< public >*/ MicrochipPFSoCState soc; } MicrochipIcicleKitState; #define TYPE_MICROCHIP_ICICLE_KIT_MACHINE \ MACHINE_TYPE_NAME("microchip-icicle-kit") #define MICROCHIP_ICICLE_KIT_MACHINE(obj) \ OBJECT_CHECK(MicrochipIcicleKitState, (obj), \ TYPE_MICROCHIP_ICICLE_KIT_MACHINE) enum { MICROCHIP_PFSOC_RSVD0, MICROCHIP_PFSOC_DEBUG, MICROCHIP_PFSOC_E51_DTIM, MICROCHIP_PFSOC_BUSERR_UNIT0, MICROCHIP_PFSOC_BUSERR_UNIT1, MICROCHIP_PFSOC_BUSERR_UNIT2, MICROCHIP_PFSOC_BUSERR_UNIT3, MICROCHIP_PFSOC_BUSERR_UNIT4, MICROCHIP_PFSOC_CLINT, MICROCHIP_PFSOC_L2CC, MICROCHIP_PFSOC_DMA, MICROCHIP_PFSOC_L2LIM, MICROCHIP_PFSOC_PLIC, MICROCHIP_PFSOC_MMUART0, MICROCHIP_PFSOC_WDOG0, MICROCHIP_PFSOC_SYSREG, MICROCHIP_PFSOC_AXISW, MICROCHIP_PFSOC_MPUCFG, MICROCHIP_PFSOC_FMETER, MICROCHIP_PFSOC_DDR_SGMII_PHY, MICROCHIP_PFSOC_EMMC_SD, MICROCHIP_PFSOC_DDR_CFG, MICROCHIP_PFSOC_MMUART1, MICROCHIP_PFSOC_MMUART2, MICROCHIP_PFSOC_MMUART3, MICROCHIP_PFSOC_MMUART4, MICROCHIP_PFSOC_WDOG1, MICROCHIP_PFSOC_WDOG2, MICROCHIP_PFSOC_WDOG3, MICROCHIP_PFSOC_WDOG4, MICROCHIP_PFSOC_SPI0, MICROCHIP_PFSOC_SPI1, MICROCHIP_PFSOC_I2C0, MICROCHIP_PFSOC_I2C1, MICROCHIP_PFSOC_CAN0, MICROCHIP_PFSOC_CAN1, MICROCHIP_PFSOC_GEM0, MICROCHIP_PFSOC_GEM1, MICROCHIP_PFSOC_GPIO0, MICROCHIP_PFSOC_GPIO1, MICROCHIP_PFSOC_GPIO2, MICROCHIP_PFSOC_RTC, MICROCHIP_PFSOC_ENVM_CFG, MICROCHIP_PFSOC_ENVM_DATA, MICROCHIP_PFSOC_USB, MICROCHIP_PFSOC_QSPI_XIP, MICROCHIP_PFSOC_IOSCB, MICROCHIP_PFSOC_FABRIC_FIC0, MICROCHIP_PFSOC_FABRIC_FIC1, MICROCHIP_PFSOC_FABRIC_FIC3, MICROCHIP_PFSOC_DRAM_LO, MICROCHIP_PFSOC_DRAM_LO_ALIAS, MICROCHIP_PFSOC_DRAM_HI, MICROCHIP_PFSOC_DRAM_HI_ALIAS }; enum { MICROCHIP_PFSOC_DMA_IRQ0 = 5, MICROCHIP_PFSOC_DMA_IRQ1 = 6, MICROCHIP_PFSOC_DMA_IRQ2 = 7, MICROCHIP_PFSOC_DMA_IRQ3 = 8, MICROCHIP_PFSOC_DMA_IRQ4 = 9, MICROCHIP_PFSOC_DMA_IRQ5 = 10, MICROCHIP_PFSOC_DMA_IRQ6 = 11, MICROCHIP_PFSOC_DMA_IRQ7 = 12, MICROCHIP_PFSOC_GEM0_IRQ = 64, MICROCHIP_PFSOC_GEM1_IRQ = 70, MICROCHIP_PFSOC_EMMC_SD_IRQ = 88, MICROCHIP_PFSOC_MMUART0_IRQ = 90, MICROCHIP_PFSOC_MMUART1_IRQ = 91, MICROCHIP_PFSOC_MMUART2_IRQ = 92, MICROCHIP_PFSOC_MMUART3_IRQ = 93, MICROCHIP_PFSOC_MMUART4_IRQ = 94, MICROCHIP_PFSOC_MAILBOX_IRQ = 96, }; #define MICROCHIP_PFSOC_MANAGEMENT_CPU_COUNT 1 #define MICROCHIP_PFSOC_COMPUTE_CPU_COUNT 4 #define MICROCHIP_PFSOC_PLIC_NUM_SOURCES 187 #define MICROCHIP_PFSOC_PLIC_NUM_PRIORITIES 7 #define MICROCHIP_PFSOC_PLIC_PRIORITY_BASE 0x00 #define MICROCHIP_PFSOC_PLIC_PENDING_BASE 0x1000 #define MICROCHIP_PFSOC_PLIC_ENABLE_BASE 0x2000 #define MICROCHIP_PFSOC_PLIC_ENABLE_STRIDE 0x80 #define MICROCHIP_PFSOC_PLIC_CONTEXT_BASE 0x200000 #define MICROCHIP_PFSOC_PLIC_CONTEXT_STRIDE 0x1000 #endif /* HW_MICROCHIP_PFSOC_H */