xref: /openbmc/qemu/include/hw/arm/max78000_soc.h (revision 0edc2afe0c8197bbcb98f948c609fb74c9b1ffd5)
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