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