xref: /openbmc/qemu/include/hw/arm/max78000_soc.h (revision 5adeb160322ff827f3e81f38e9481fb4896670e8)
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"
14035a38faSJackson Donaldson #include "hw/misc/max78000_gcr.h"
1565714d3eSJackson Donaldson #include "hw/misc/max78000_icc.h"
16a670bb8aSJackson Donaldson #include "hw/char/max78000_uart.h"
17*5adeb160SJackson Donaldson #include "hw/misc/max78000_trng.h"
1851eb283dSJackson Donaldson #include "qom/object.h"
1951eb283dSJackson Donaldson 
2051eb283dSJackson Donaldson #define TYPE_MAX78000_SOC "max78000-soc"
2151eb283dSJackson Donaldson OBJECT_DECLARE_SIMPLE_TYPE(MAX78000State, MAX78000_SOC)
2251eb283dSJackson Donaldson 
2351eb283dSJackson Donaldson #define FLASH_BASE_ADDRESS 0x10000000
2451eb283dSJackson Donaldson #define FLASH_SIZE (512 * 1024)
2551eb283dSJackson Donaldson #define SRAM_BASE_ADDRESS 0x20000000
2651eb283dSJackson Donaldson #define SRAM_SIZE (128 * 1024)
2751eb283dSJackson Donaldson 
2865714d3eSJackson Donaldson /* The MAX78k has 2 instruction caches; only icc0 matters, icc1 is for RISC */
2965714d3eSJackson Donaldson #define MAX78000_NUM_ICC 2
30a670bb8aSJackson Donaldson #define MAX78000_NUM_UART 3
3165714d3eSJackson Donaldson 
3251eb283dSJackson Donaldson struct MAX78000State {
3351eb283dSJackson Donaldson     SysBusDevice parent_obj;
3451eb283dSJackson Donaldson 
3551eb283dSJackson Donaldson     ARMv7MState armv7m;
3651eb283dSJackson Donaldson 
3751eb283dSJackson Donaldson     MemoryRegion sram;
3851eb283dSJackson Donaldson     MemoryRegion flash;
3951eb283dSJackson Donaldson 
40035a38faSJackson Donaldson     Max78000GcrState gcr;
4165714d3eSJackson Donaldson     Max78000IccState icc[MAX78000_NUM_ICC];
42a670bb8aSJackson Donaldson     Max78000UartState uart[MAX78000_NUM_UART];
43*5adeb160SJackson Donaldson     Max78000TrngState trng;
4465714d3eSJackson Donaldson 
4551eb283dSJackson Donaldson     Clock *sysclk;
4651eb283dSJackson Donaldson };
4751eb283dSJackson Donaldson 
4851eb283dSJackson Donaldson #endif
49