151eb283dSJackson Donaldson /* 251eb283dSJackson Donaldson * MAX78000 SOC 351eb283dSJackson Donaldson * 451eb283dSJackson Donaldson * Copyright (c) 2025 Jackson Donaldson <jcksn@duck.com> 551eb283dSJackson Donaldson * 651eb283dSJackson Donaldson * SPDX-License-Identifier: GPL-2.0-or-later 751eb283dSJackson Donaldson */ 851eb283dSJackson Donaldson 951eb283dSJackson Donaldson #ifndef HW_ARM_MAX78000_SOC_H 1051eb283dSJackson Donaldson #define HW_ARM_MAX78000_SOC_H 1151eb283dSJackson Donaldson 1251eb283dSJackson Donaldson #include "hw/or-irq.h" 1351eb283dSJackson Donaldson #include "hw/arm/armv7m.h" 14*4b3a1eb0SJackson Donaldson #include "hw/misc/max78000_aes.h" 15035a38faSJackson Donaldson #include "hw/misc/max78000_gcr.h" 1665714d3eSJackson Donaldson #include "hw/misc/max78000_icc.h" 17a670bb8aSJackson Donaldson #include "hw/char/max78000_uart.h" 185adeb160SJackson Donaldson #include "hw/misc/max78000_trng.h" 1951eb283dSJackson Donaldson #include "qom/object.h" 2051eb283dSJackson Donaldson 2151eb283dSJackson Donaldson #define TYPE_MAX78000_SOC "max78000-soc" 2251eb283dSJackson Donaldson OBJECT_DECLARE_SIMPLE_TYPE(MAX78000State, MAX78000_SOC) 2351eb283dSJackson Donaldson 2451eb283dSJackson Donaldson #define FLASH_BASE_ADDRESS 0x10000000 2551eb283dSJackson Donaldson #define FLASH_SIZE (512 * 1024) 2651eb283dSJackson Donaldson #define SRAM_BASE_ADDRESS 0x20000000 2751eb283dSJackson Donaldson #define SRAM_SIZE (128 * 1024) 2851eb283dSJackson Donaldson 2965714d3eSJackson Donaldson /* The MAX78k has 2 instruction caches; only icc0 matters, icc1 is for RISC */ 3065714d3eSJackson Donaldson #define MAX78000_NUM_ICC 2 31a670bb8aSJackson Donaldson #define MAX78000_NUM_UART 3 3265714d3eSJackson Donaldson 3351eb283dSJackson Donaldson struct MAX78000State { 3451eb283dSJackson Donaldson SysBusDevice parent_obj; 3551eb283dSJackson Donaldson 3651eb283dSJackson Donaldson ARMv7MState armv7m; 3751eb283dSJackson Donaldson 3851eb283dSJackson Donaldson MemoryRegion sram; 3951eb283dSJackson Donaldson MemoryRegion flash; 4051eb283dSJackson Donaldson 41035a38faSJackson Donaldson Max78000GcrState gcr; 4265714d3eSJackson Donaldson Max78000IccState icc[MAX78000_NUM_ICC]; 43a670bb8aSJackson Donaldson Max78000UartState uart[MAX78000_NUM_UART]; 445adeb160SJackson Donaldson Max78000TrngState trng; 45*4b3a1eb0SJackson Donaldson Max78000AesState aes; 4665714d3eSJackson Donaldson 4751eb283dSJackson Donaldson Clock *sysclk; 4851eb283dSJackson Donaldson }; 4951eb283dSJackson Donaldson 5051eb283dSJackson Donaldson #endif 51