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*035a38faSJackson Donaldson #include "hw/misc/max78000_gcr.h" 1565714d3eSJackson Donaldson #include "hw/misc/max78000_icc.h" 16a670bb8aSJackson Donaldson #include "hw/char/max78000_uart.h" 1751eb283dSJackson Donaldson #include "qom/object.h" 1851eb283dSJackson Donaldson 1951eb283dSJackson Donaldson #define TYPE_MAX78000_SOC "max78000-soc" 2051eb283dSJackson Donaldson OBJECT_DECLARE_SIMPLE_TYPE(MAX78000State, MAX78000_SOC) 2151eb283dSJackson Donaldson 2251eb283dSJackson Donaldson #define FLASH_BASE_ADDRESS 0x10000000 2351eb283dSJackson Donaldson #define FLASH_SIZE (512 * 1024) 2451eb283dSJackson Donaldson #define SRAM_BASE_ADDRESS 0x20000000 2551eb283dSJackson Donaldson #define SRAM_SIZE (128 * 1024) 2651eb283dSJackson Donaldson 2765714d3eSJackson Donaldson /* The MAX78k has 2 instruction caches; only icc0 matters, icc1 is for RISC */ 2865714d3eSJackson Donaldson #define MAX78000_NUM_ICC 2 29a670bb8aSJackson Donaldson #define MAX78000_NUM_UART 3 3065714d3eSJackson Donaldson 3151eb283dSJackson Donaldson struct MAX78000State { 3251eb283dSJackson Donaldson SysBusDevice parent_obj; 3351eb283dSJackson Donaldson 3451eb283dSJackson Donaldson ARMv7MState armv7m; 3551eb283dSJackson Donaldson 3651eb283dSJackson Donaldson MemoryRegion sram; 3751eb283dSJackson Donaldson MemoryRegion flash; 3851eb283dSJackson Donaldson 39*035a38faSJackson Donaldson Max78000GcrState gcr; 4065714d3eSJackson Donaldson Max78000IccState icc[MAX78000_NUM_ICC]; 41a670bb8aSJackson Donaldson Max78000UartState uart[MAX78000_NUM_UART]; 4265714d3eSJackson Donaldson 4351eb283dSJackson Donaldson Clock *sysclk; 4451eb283dSJackson Donaldson }; 4551eb283dSJackson Donaldson 4651eb283dSJackson Donaldson #endif 47