1*34602f99SAndreas Konopik /* 2*34602f99SAndreas Konopik * Infineon tc27x SoC System emulation. 3*34602f99SAndreas Konopik * 4*34602f99SAndreas Konopik * Copyright (c) 2020 Andreas Konopik <andreas.konopik@efs-auto.de> 5*34602f99SAndreas Konopik * Copyright (c) 2020 David Brenken <david.brenken@efs-auto.de> 6*34602f99SAndreas Konopik * 7*34602f99SAndreas Konopik * This library is free software; you can redistribute it and/or 8*34602f99SAndreas Konopik * modify it under the terms of the GNU Lesser General Public 9*34602f99SAndreas Konopik * License as published by the Free Software Foundation; either 10*34602f99SAndreas Konopik * version 2 of the License, or (at your option) any later version. 11*34602f99SAndreas Konopik * 12*34602f99SAndreas Konopik * This library is distributed in the hope that it will be useful, 13*34602f99SAndreas Konopik * but WITHOUT ANY WARRANTY; without even the implied warranty of 14*34602f99SAndreas Konopik * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15*34602f99SAndreas Konopik * Lesser General Public License for more details. 16*34602f99SAndreas Konopik * 17*34602f99SAndreas Konopik * You should have received a copy of the GNU Lesser General Public 18*34602f99SAndreas Konopik * License along with this library; if not, see <http://www.gnu.org/licenses/>. 19*34602f99SAndreas Konopik */ 20*34602f99SAndreas Konopik 21*34602f99SAndreas Konopik #ifndef TC27X_SoC_H 22*34602f99SAndreas Konopik #define TC27X_SoC_H 23*34602f99SAndreas Konopik 24*34602f99SAndreas Konopik #include "hw/sysbus.h" 25*34602f99SAndreas Konopik #include "target/tricore/cpu.h" 26*34602f99SAndreas Konopik #include "qom/object.h" 27*34602f99SAndreas Konopik 28*34602f99SAndreas Konopik #define TYPE_TC27X_SOC ("tc27x-soc") 29*34602f99SAndreas Konopik OBJECT_DECLARE_TYPE(TC27XSoCState, TC27XSoCClass, TC27X_SOC) 30*34602f99SAndreas Konopik 31*34602f99SAndreas Konopik typedef struct TC27XSoCCPUMemState { 32*34602f99SAndreas Konopik 33*34602f99SAndreas Konopik MemoryRegion dspr; 34*34602f99SAndreas Konopik MemoryRegion pspr; 35*34602f99SAndreas Konopik 36*34602f99SAndreas Konopik MemoryRegion dcache; 37*34602f99SAndreas Konopik MemoryRegion dtag; 38*34602f99SAndreas Konopik MemoryRegion pcache; 39*34602f99SAndreas Konopik MemoryRegion ptag; 40*34602f99SAndreas Konopik 41*34602f99SAndreas Konopik } TC27XSoCCPUMemState; 42*34602f99SAndreas Konopik 43*34602f99SAndreas Konopik typedef struct TC27XSoCFlashMemState { 44*34602f99SAndreas Konopik 45*34602f99SAndreas Konopik MemoryRegion pflash0_c; 46*34602f99SAndreas Konopik MemoryRegion pflash1_c; 47*34602f99SAndreas Konopik MemoryRegion pflash0_u; 48*34602f99SAndreas Konopik MemoryRegion pflash1_u; 49*34602f99SAndreas Konopik MemoryRegion dflash0; 50*34602f99SAndreas Konopik MemoryRegion dflash1; 51*34602f99SAndreas Konopik MemoryRegion olda_c; 52*34602f99SAndreas Konopik MemoryRegion olda_u; 53*34602f99SAndreas Konopik MemoryRegion brom_c; 54*34602f99SAndreas Konopik MemoryRegion brom_u; 55*34602f99SAndreas Konopik MemoryRegion lmuram_c; 56*34602f99SAndreas Konopik MemoryRegion lmuram_u; 57*34602f99SAndreas Konopik MemoryRegion emem_c; 58*34602f99SAndreas Konopik MemoryRegion emem_u; 59*34602f99SAndreas Konopik 60*34602f99SAndreas Konopik } TC27XSoCFlashMemState; 61*34602f99SAndreas Konopik 62*34602f99SAndreas Konopik typedef struct TC27XSoCState { 63*34602f99SAndreas Konopik /*< private >*/ 64*34602f99SAndreas Konopik SysBusDevice parent_obj; 65*34602f99SAndreas Konopik 66*34602f99SAndreas Konopik /*< public >*/ 67*34602f99SAndreas Konopik TriCoreCPU cpu; 68*34602f99SAndreas Konopik 69*34602f99SAndreas Konopik MemoryRegion dsprX; 70*34602f99SAndreas Konopik MemoryRegion psprX; 71*34602f99SAndreas Konopik 72*34602f99SAndreas Konopik TC27XSoCCPUMemState cpu0mem; 73*34602f99SAndreas Konopik TC27XSoCCPUMemState cpu1mem; 74*34602f99SAndreas Konopik TC27XSoCCPUMemState cpu2mem; 75*34602f99SAndreas Konopik 76*34602f99SAndreas Konopik TC27XSoCFlashMemState flashmem; 77*34602f99SAndreas Konopik 78*34602f99SAndreas Konopik } TC27XSoCState; 79*34602f99SAndreas Konopik 80*34602f99SAndreas Konopik typedef struct MemmapEntry { 81*34602f99SAndreas Konopik hwaddr base; 82*34602f99SAndreas Konopik hwaddr size; 83*34602f99SAndreas Konopik } MemmapEntry; 84*34602f99SAndreas Konopik 85*34602f99SAndreas Konopik typedef struct TC27XSoCClass { 86*34602f99SAndreas Konopik DeviceClass parent_class; 87*34602f99SAndreas Konopik 88*34602f99SAndreas Konopik const char *name; 89*34602f99SAndreas Konopik const char *cpu_type; 90*34602f99SAndreas Konopik const MemmapEntry *memmap; 91*34602f99SAndreas Konopik uint32_t num_cpus; 92*34602f99SAndreas Konopik } TC27XSoCClass; 93*34602f99SAndreas Konopik 94*34602f99SAndreas Konopik enum { 95*34602f99SAndreas Konopik TC27XD_DSPR2, 96*34602f99SAndreas Konopik TC27XD_DCACHE2, 97*34602f99SAndreas Konopik TC27XD_DTAG2, 98*34602f99SAndreas Konopik TC27XD_PSPR2, 99*34602f99SAndreas Konopik TC27XD_PCACHE2, 100*34602f99SAndreas Konopik TC27XD_PTAG2, 101*34602f99SAndreas Konopik TC27XD_DSPR1, 102*34602f99SAndreas Konopik TC27XD_DCACHE1, 103*34602f99SAndreas Konopik TC27XD_DTAG1, 104*34602f99SAndreas Konopik TC27XD_PSPR1, 105*34602f99SAndreas Konopik TC27XD_PCACHE1, 106*34602f99SAndreas Konopik TC27XD_PTAG1, 107*34602f99SAndreas Konopik TC27XD_DSPR0, 108*34602f99SAndreas Konopik TC27XD_PSPR0, 109*34602f99SAndreas Konopik TC27XD_PCACHE0, 110*34602f99SAndreas Konopik TC27XD_PTAG0, 111*34602f99SAndreas Konopik TC27XD_PFLASH0_C, 112*34602f99SAndreas Konopik TC27XD_PFLASH1_C, 113*34602f99SAndreas Konopik TC27XD_OLDA_C, 114*34602f99SAndreas Konopik TC27XD_BROM_C, 115*34602f99SAndreas Konopik TC27XD_LMURAM_C, 116*34602f99SAndreas Konopik TC27XD_EMEM_C, 117*34602f99SAndreas Konopik TC27XD_PFLASH0_U, 118*34602f99SAndreas Konopik TC27XD_PFLASH1_U, 119*34602f99SAndreas Konopik TC27XD_DFLASH0, 120*34602f99SAndreas Konopik TC27XD_DFLASH1, 121*34602f99SAndreas Konopik TC27XD_OLDA_U, 122*34602f99SAndreas Konopik TC27XD_BROM_U, 123*34602f99SAndreas Konopik TC27XD_LMURAM_U, 124*34602f99SAndreas Konopik TC27XD_EMEM_U, 125*34602f99SAndreas Konopik TC27XD_PSPRX, 126*34602f99SAndreas Konopik TC27XD_DSPRX, 127*34602f99SAndreas Konopik }; 128*34602f99SAndreas Konopik 129*34602f99SAndreas Konopik #endif 130