1a017f53eSJackson Donaldson /* 2a017f53eSJackson Donaldson * MAX78000 Global Control Register 3a017f53eSJackson Donaldson * 4a017f53eSJackson Donaldson * Copyright (c) 2025 Jackson Donaldson <jcksn@duck.com> 5a017f53eSJackson Donaldson * 6a017f53eSJackson Donaldson * SPDX-License-Identifier: GPL-2.0-or-later 7a017f53eSJackson Donaldson */ 8a017f53eSJackson Donaldson #ifndef HW_MAX78000_GCR_H 9a017f53eSJackson Donaldson #define HW_MAX78000_GCR_H 10a017f53eSJackson Donaldson 11a017f53eSJackson Donaldson #include "hw/sysbus.h" 12a017f53eSJackson Donaldson #include "qom/object.h" 13a017f53eSJackson Donaldson 14a017f53eSJackson Donaldson #define TYPE_MAX78000_GCR "max78000-gcr" 15a017f53eSJackson Donaldson OBJECT_DECLARE_SIMPLE_TYPE(Max78000GcrState, MAX78000_GCR) 16a017f53eSJackson Donaldson 17a017f53eSJackson Donaldson #define SYSCTRL 0x0 18a017f53eSJackson Donaldson #define RST0 0x4 19a017f53eSJackson Donaldson #define CLKCTRL 0x8 20a017f53eSJackson Donaldson #define PM 0xc 21a017f53eSJackson Donaldson #define PCLKDIV 0x18 22a017f53eSJackson Donaldson #define PCLKDIS0 0x24 23a017f53eSJackson Donaldson #define MEMCTRL 0x28 24a017f53eSJackson Donaldson #define MEMZ 0x2c 25a017f53eSJackson Donaldson #define SYSST 0x40 26a017f53eSJackson Donaldson #define RST1 0x44 27a017f53eSJackson Donaldson #define PCKDIS1 0x48 28a017f53eSJackson Donaldson #define EVENTEN 0x4c 29a017f53eSJackson Donaldson #define REVISION 0x50 30a017f53eSJackson Donaldson #define SYSIE 0x54 31a017f53eSJackson Donaldson #define ECCERR 0x64 32a017f53eSJackson Donaldson #define ECCED 0x68 33a017f53eSJackson Donaldson #define ECCIE 0x6c 34a017f53eSJackson Donaldson #define ECCADDR 0x70 35a017f53eSJackson Donaldson 36a017f53eSJackson Donaldson /* RST0 */ 37a017f53eSJackson Donaldson #define SYSTEM_RESET (1 << 31) 38a017f53eSJackson Donaldson #define PERIPHERAL_RESET (1 << 30) 39a017f53eSJackson Donaldson #define SOFT_RESET (1 << 29) 40a017f53eSJackson Donaldson #define UART2_RESET (1 << 28) 41a017f53eSJackson Donaldson 42a017f53eSJackson Donaldson #define ADC_RESET (1 << 26) 43a017f53eSJackson Donaldson #define CNN_RESET (1 << 25) 44a017f53eSJackson Donaldson #define TRNG_RESET (1 << 24) 45a017f53eSJackson Donaldson 46a017f53eSJackson Donaldson #define RTC_RESET (1 << 17) 47a017f53eSJackson Donaldson #define I2C0_RESET (1 << 16) 48a017f53eSJackson Donaldson 49a017f53eSJackson Donaldson #define SPI1_RESET (1 << 13) 50a017f53eSJackson Donaldson #define UART1_RESET (1 << 12) 51a017f53eSJackson Donaldson #define UART0_RESET (1 << 11) 52a017f53eSJackson Donaldson 53a017f53eSJackson Donaldson #define TMR3_RESET (1 << 8) 54a017f53eSJackson Donaldson #define TMR2_RESET (1 << 7) 55a017f53eSJackson Donaldson #define TMR1_RESET (1 << 6) 56a017f53eSJackson Donaldson #define TMR0_RESET (1 << 5) 57a017f53eSJackson Donaldson 58a017f53eSJackson Donaldson #define GPIO1_RESET (1 << 3) 59a017f53eSJackson Donaldson #define GPIO0_RESET (1 << 2) 60a017f53eSJackson Donaldson #define WDT0_RESET (1 << 1) 61a017f53eSJackson Donaldson #define DMA_RESET (1 << 0) 62a017f53eSJackson Donaldson 63a017f53eSJackson Donaldson /* CLKCTRL */ 64a017f53eSJackson Donaldson #define SYSCLK_RDY (1 << 13) 65a017f53eSJackson Donaldson 66a017f53eSJackson Donaldson /* MEMZ */ 67a017f53eSJackson Donaldson #define ram0 (1 << 0) 68a017f53eSJackson Donaldson #define ram1 (1 << 1) 69a017f53eSJackson Donaldson #define ram2 (1 << 2) 70a017f53eSJackson Donaldson #define ram3 (1 << 3) 71a017f53eSJackson Donaldson 72a017f53eSJackson Donaldson /* RST1 */ 73a017f53eSJackson Donaldson #define CPU1_RESET (1 << 31) 74a017f53eSJackson Donaldson 75a017f53eSJackson Donaldson #define SIMO_RESET (1 << 25) 76a017f53eSJackson Donaldson #define DVS_RESET (1 << 24) 77a017f53eSJackson Donaldson 78a017f53eSJackson Donaldson #define I2C2_RESET (1 << 20) 79a017f53eSJackson Donaldson #define I2S_RESET (1 << 19) 80a017f53eSJackson Donaldson 81a017f53eSJackson Donaldson #define SMPHR_RESET (1 << 16) 82a017f53eSJackson Donaldson 83a017f53eSJackson Donaldson #define SPI0_RESET (1 << 11) 84a017f53eSJackson Donaldson #define AES_RESET (1 << 10) 85a017f53eSJackson Donaldson #define CRC_RESET (1 << 9) 86a017f53eSJackson Donaldson 87a017f53eSJackson Donaldson #define PT_RESET (1 << 1) 88a017f53eSJackson Donaldson #define I2C1_RESET (1 << 0) 89a017f53eSJackson Donaldson 90a017f53eSJackson Donaldson 91a017f53eSJackson Donaldson #define SYSRAM0_START 0x20000000 92a017f53eSJackson Donaldson #define SYSRAM1_START 0x20008000 93a017f53eSJackson Donaldson #define SYSRAM2_START 0x20010000 94a017f53eSJackson Donaldson #define SYSRAM3_START 0x2001C000 95a017f53eSJackson Donaldson 96a017f53eSJackson Donaldson struct Max78000GcrState { 97a017f53eSJackson Donaldson SysBusDevice parent_obj; 98a017f53eSJackson Donaldson 99a017f53eSJackson Donaldson MemoryRegion mmio; 100a017f53eSJackson Donaldson 101a017f53eSJackson Donaldson uint32_t sysctrl; 102a017f53eSJackson Donaldson uint32_t rst0; 103a017f53eSJackson Donaldson uint32_t clkctrl; 104a017f53eSJackson Donaldson uint32_t pm; 105a017f53eSJackson Donaldson uint32_t pclkdiv; 106a017f53eSJackson Donaldson uint32_t pclkdis0; 107a017f53eSJackson Donaldson uint32_t memctrl; 108a017f53eSJackson Donaldson uint32_t memz; 109a017f53eSJackson Donaldson uint32_t sysst; 110a017f53eSJackson Donaldson uint32_t rst1; 111a017f53eSJackson Donaldson uint32_t pckdis1; 112a017f53eSJackson Donaldson uint32_t eventen; 113a017f53eSJackson Donaldson uint32_t revision; 114a017f53eSJackson Donaldson uint32_t sysie; 115a017f53eSJackson Donaldson uint32_t eccerr; 116a017f53eSJackson Donaldson uint32_t ecced; 117a017f53eSJackson Donaldson uint32_t eccie; 118a017f53eSJackson Donaldson uint32_t eccaddr; 119a017f53eSJackson Donaldson 120a017f53eSJackson Donaldson MemoryRegion *sram; 121a017f53eSJackson Donaldson AddressSpace sram_as; 122a017f53eSJackson Donaldson 123a017f53eSJackson Donaldson DeviceState *uart0; 124a017f53eSJackson Donaldson DeviceState *uart1; 125a017f53eSJackson Donaldson DeviceState *uart2; 126069852d1SJackson Donaldson DeviceState *trng; 127*33dfff7eSJackson Donaldson DeviceState *aes; 128a017f53eSJackson Donaldson 129a017f53eSJackson Donaldson }; 130a017f53eSJackson Donaldson 131a017f53eSJackson Donaldson #endif 132