| /* |
| * Infineon tc27x SoC System emulation. |
| * |
| * Copyright (c) 2020 Andreas Konopik <andreas.konopik@efs-auto.de> |
| * Copyright (c) 2020 David Brenken <david.brenken@efs-auto.de> |
| * |
| * This library is free software; you can redistribute it and/or |
| * modify it under the terms of the GNU Lesser General Public |
| * License as published by the Free Software Foundation; either |
| * version 2 of the License, or (at your option) any later version. |
| * |
| * This library is distributed in the hope that it will be useful, |
| * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| * Lesser General Public License for more details. |
| * |
| * You should have received a copy of the GNU Lesser General Public |
| * License along with this library; if not, see <http://www.gnu.org/licenses/>. |
| */ |
| |
| #ifndef TC27X_SOC_H |
| #define TC27X_SOC_H |
| |
| #include "hw/sysbus.h" |
| #include "target/tricore/cpu.h" |
| #include "qom/object.h" |
| |
| #define TYPE_TC27X_SOC ("tc27x-soc") |
| OBJECT_DECLARE_TYPE(TC27XSoCState, TC27XSoCClass, TC27X_SOC) |
| |
| typedef struct TC27XSoCCPUMemState { |
| |
| MemoryRegion dspr; |
| MemoryRegion pspr; |
| |
| MemoryRegion dcache; |
| MemoryRegion dtag; |
| MemoryRegion pcache; |
| MemoryRegion ptag; |
| |
| } TC27XSoCCPUMemState; |
| |
| typedef struct TC27XSoCFlashMemState { |
| |
| MemoryRegion pflash0_c; |
| MemoryRegion pflash1_c; |
| MemoryRegion pflash0_u; |
| MemoryRegion pflash1_u; |
| MemoryRegion dflash0; |
| MemoryRegion dflash1; |
| MemoryRegion olda_c; |
| MemoryRegion olda_u; |
| MemoryRegion brom_c; |
| MemoryRegion brom_u; |
| MemoryRegion lmuram_c; |
| MemoryRegion lmuram_u; |
| MemoryRegion emem_c; |
| MemoryRegion emem_u; |
| |
| } TC27XSoCFlashMemState; |
| |
| typedef struct TC27XSoCState { |
| /*< private >*/ |
| SysBusDevice parent_obj; |
| |
| /*< public >*/ |
| TriCoreCPU cpu; |
| |
| MemoryRegion dsprX; |
| MemoryRegion psprX; |
| |
| TC27XSoCCPUMemState cpu0mem; |
| TC27XSoCCPUMemState cpu1mem; |
| TC27XSoCCPUMemState cpu2mem; |
| |
| TC27XSoCFlashMemState flashmem; |
| |
| } TC27XSoCState; |
| |
| typedef struct MemmapEntry { |
| hwaddr base; |
| hwaddr size; |
| } MemmapEntry; |
| |
| typedef struct TC27XSoCClass { |
| DeviceClass parent_class; |
| |
| const char *name; |
| const char *cpu_type; |
| const MemmapEntry *memmap; |
| uint32_t num_cpus; |
| } TC27XSoCClass; |
| |
| enum { |
| TC27XD_DSPR2, |
| TC27XD_DCACHE2, |
| TC27XD_DTAG2, |
| TC27XD_PSPR2, |
| TC27XD_PCACHE2, |
| TC27XD_PTAG2, |
| TC27XD_DSPR1, |
| TC27XD_DCACHE1, |
| TC27XD_DTAG1, |
| TC27XD_PSPR1, |
| TC27XD_PCACHE1, |
| TC27XD_PTAG1, |
| TC27XD_DSPR0, |
| TC27XD_PSPR0, |
| TC27XD_PCACHE0, |
| TC27XD_PTAG0, |
| TC27XD_PFLASH0_C, |
| TC27XD_PFLASH1_C, |
| TC27XD_OLDA_C, |
| TC27XD_BROM_C, |
| TC27XD_LMURAM_C, |
| TC27XD_EMEM_C, |
| TC27XD_PFLASH0_U, |
| TC27XD_PFLASH1_U, |
| TC27XD_DFLASH0, |
| TC27XD_DFLASH1, |
| TC27XD_OLDA_U, |
| TC27XD_BROM_U, |
| TC27XD_LMURAM_U, |
| TC27XD_EMEM_U, |
| TC27XD_PSPRX, |
| TC27XD_DSPRX, |
| }; |
| |
| #endif |