156f6e31eSBin Meng /* 256f6e31eSBin Meng * Microchip PolarFire SoC machine interface 356f6e31eSBin Meng * 456f6e31eSBin Meng * Copyright (c) 2020 Wind River Systems, Inc. 556f6e31eSBin Meng * 656f6e31eSBin Meng * Author: 756f6e31eSBin Meng * Bin Meng <bin.meng@windriver.com> 856f6e31eSBin Meng * 956f6e31eSBin Meng * This program is free software; you can redistribute it and/or modify it 1056f6e31eSBin Meng * under the terms and conditions of the GNU General Public License, 1156f6e31eSBin Meng * version 2 or later, as published by the Free Software Foundation. 1256f6e31eSBin Meng * 1356f6e31eSBin Meng * This program is distributed in the hope it will be useful, but WITHOUT 1456f6e31eSBin Meng * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 1556f6e31eSBin Meng * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 1656f6e31eSBin Meng * more details. 1756f6e31eSBin Meng * 1856f6e31eSBin Meng * You should have received a copy of the GNU General Public License along with 1956f6e31eSBin Meng * this program. If not, see <http://www.gnu.org/licenses/>. 2056f6e31eSBin Meng */ 2156f6e31eSBin Meng 2256f6e31eSBin Meng #ifndef HW_MICROCHIP_PFSOC_H 2356f6e31eSBin Meng #define HW_MICROCHIP_PFSOC_H 2456f6e31eSBin Meng 25*8f2ac39dSBin Meng #include "hw/char/mchp_pfsoc_mmuart.h" 26*8f2ac39dSBin Meng 2756f6e31eSBin Meng typedef struct MicrochipPFSoCState { 2856f6e31eSBin Meng /*< private >*/ 2956f6e31eSBin Meng DeviceState parent_obj; 3056f6e31eSBin Meng 3156f6e31eSBin Meng /*< public >*/ 3256f6e31eSBin Meng CPUClusterState e_cluster; 3356f6e31eSBin Meng CPUClusterState u_cluster; 3456f6e31eSBin Meng RISCVHartArrayState e_cpus; 3556f6e31eSBin Meng RISCVHartArrayState u_cpus; 3656f6e31eSBin Meng DeviceState *plic; 37*8f2ac39dSBin Meng MchpPfSoCMMUartState *serial0; 38*8f2ac39dSBin Meng MchpPfSoCMMUartState *serial1; 39*8f2ac39dSBin Meng MchpPfSoCMMUartState *serial2; 40*8f2ac39dSBin Meng MchpPfSoCMMUartState *serial3; 41*8f2ac39dSBin Meng MchpPfSoCMMUartState *serial4; 4256f6e31eSBin Meng } MicrochipPFSoCState; 4356f6e31eSBin Meng 4456f6e31eSBin Meng #define TYPE_MICROCHIP_PFSOC "microchip.pfsoc" 4556f6e31eSBin Meng #define MICROCHIP_PFSOC(obj) \ 4656f6e31eSBin Meng OBJECT_CHECK(MicrochipPFSoCState, (obj), TYPE_MICROCHIP_PFSOC) 4756f6e31eSBin Meng 4856f6e31eSBin Meng typedef struct MicrochipIcicleKitState { 4956f6e31eSBin Meng /*< private >*/ 5056f6e31eSBin Meng MachineState parent_obj; 5156f6e31eSBin Meng 5256f6e31eSBin Meng /*< public >*/ 5356f6e31eSBin Meng MicrochipPFSoCState soc; 5456f6e31eSBin Meng } MicrochipIcicleKitState; 5556f6e31eSBin Meng 5656f6e31eSBin Meng #define TYPE_MICROCHIP_ICICLE_KIT_MACHINE \ 5756f6e31eSBin Meng MACHINE_TYPE_NAME("microchip-icicle-kit") 5856f6e31eSBin Meng #define MICROCHIP_ICICLE_KIT_MACHINE(obj) \ 5956f6e31eSBin Meng OBJECT_CHECK(MicrochipIcicleKitState, (obj), \ 6056f6e31eSBin Meng TYPE_MICROCHIP_ICICLE_KIT_MACHINE) 6156f6e31eSBin Meng 6256f6e31eSBin Meng enum { 6356f6e31eSBin Meng MICROCHIP_PFSOC_DEBUG, 6456f6e31eSBin Meng MICROCHIP_PFSOC_E51_DTIM, 6556f6e31eSBin Meng MICROCHIP_PFSOC_BUSERR_UNIT0, 6656f6e31eSBin Meng MICROCHIP_PFSOC_BUSERR_UNIT1, 6756f6e31eSBin Meng MICROCHIP_PFSOC_BUSERR_UNIT2, 6856f6e31eSBin Meng MICROCHIP_PFSOC_BUSERR_UNIT3, 6956f6e31eSBin Meng MICROCHIP_PFSOC_BUSERR_UNIT4, 7056f6e31eSBin Meng MICROCHIP_PFSOC_CLINT, 7156f6e31eSBin Meng MICROCHIP_PFSOC_L2CC, 7256f6e31eSBin Meng MICROCHIP_PFSOC_L2LIM, 7356f6e31eSBin Meng MICROCHIP_PFSOC_PLIC, 74*8f2ac39dSBin Meng MICROCHIP_PFSOC_MMUART0, 7556f6e31eSBin Meng MICROCHIP_PFSOC_SYSREG, 7656f6e31eSBin Meng MICROCHIP_PFSOC_MPUCFG, 77*8f2ac39dSBin Meng MICROCHIP_PFSOC_MMUART1, 78*8f2ac39dSBin Meng MICROCHIP_PFSOC_MMUART2, 79*8f2ac39dSBin Meng MICROCHIP_PFSOC_MMUART3, 80*8f2ac39dSBin Meng MICROCHIP_PFSOC_MMUART4, 8156f6e31eSBin Meng MICROCHIP_PFSOC_ENVM_CFG, 8256f6e31eSBin Meng MICROCHIP_PFSOC_ENVM_DATA, 8356f6e31eSBin Meng MICROCHIP_PFSOC_IOSCB_CFG, 8456f6e31eSBin Meng MICROCHIP_PFSOC_DRAM, 8556f6e31eSBin Meng }; 8656f6e31eSBin Meng 87*8f2ac39dSBin Meng enum { 88*8f2ac39dSBin Meng MICROCHIP_PFSOC_MMUART0_IRQ = 90, 89*8f2ac39dSBin Meng MICROCHIP_PFSOC_MMUART1_IRQ = 91, 90*8f2ac39dSBin Meng MICROCHIP_PFSOC_MMUART2_IRQ = 92, 91*8f2ac39dSBin Meng MICROCHIP_PFSOC_MMUART3_IRQ = 93, 92*8f2ac39dSBin Meng MICROCHIP_PFSOC_MMUART4_IRQ = 94, 93*8f2ac39dSBin Meng }; 94*8f2ac39dSBin Meng 9556f6e31eSBin Meng #define MICROCHIP_PFSOC_MANAGEMENT_CPU_COUNT 1 9656f6e31eSBin Meng #define MICROCHIP_PFSOC_COMPUTE_CPU_COUNT 4 9756f6e31eSBin Meng 9856f6e31eSBin Meng #define MICROCHIP_PFSOC_PLIC_HART_CONFIG "MS" 9956f6e31eSBin Meng #define MICROCHIP_PFSOC_PLIC_NUM_SOURCES 185 10056f6e31eSBin Meng #define MICROCHIP_PFSOC_PLIC_NUM_PRIORITIES 7 10156f6e31eSBin Meng #define MICROCHIP_PFSOC_PLIC_PRIORITY_BASE 0x04 10256f6e31eSBin Meng #define MICROCHIP_PFSOC_PLIC_PENDING_BASE 0x1000 10356f6e31eSBin Meng #define MICROCHIP_PFSOC_PLIC_ENABLE_BASE 0x2000 10456f6e31eSBin Meng #define MICROCHIP_PFSOC_PLIC_ENABLE_STRIDE 0x80 10556f6e31eSBin Meng #define MICROCHIP_PFSOC_PLIC_CONTEXT_BASE 0x200000 10656f6e31eSBin Meng #define MICROCHIP_PFSOC_PLIC_CONTEXT_STRIDE 0x1000 10756f6e31eSBin Meng 10856f6e31eSBin Meng #endif /* HW_MICROCHIP_PFSOC_H */ 109