1 /*
2  * Copyright (c) 2023 Intel Corporation
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  */
6 
7 #ifndef _PM_REGS_H_
8 #define _PM_REGS_H_
9 
10 #include "sedi_soc_regs.h"
11 
12 #ifndef BIT
13 #define BIT(x)	(1U << (x))
14 #endif
15 
16 /* PMU Registers */
17 #define PMU_SRAM_PG_EN			(SEDI_PMU_BASE + 0x0)
18 #define PMU_SRAM_PWR_STATUS		(SEDI_PMU_BASE + 0xF60)
19 #define PMU_SRAM_DEEPSLEEP		(SEDI_PMU_BASE + 0xF38)
20 #define PMU_PMC_HOST_RST_CTL		(SEDI_PMU_BASE + 0xF20)
21 #define PMU_SW_PG_REQ			(SEDI_PMU_BASE + 0xF14)
22 #define PMU_PMC_PG_WAKE			(SEDI_PMU_BASE + 0xF18)
23 #define PMU_INTERNAL_PCE		(SEDI_PMU_BASE + 0xF30)
24 #define PMU_D3_STATUS			(SEDI_PMU_BASE + 0x100)
25 #define PMU_GPIO_WAKE_MASK0		(SEDI_PMU_BASE + 0x250)
26 #define PMU_GPIO_WAKE_MASK1		(SEDI_PMU_BASE + 0x254)
27 #define PMU_HOST_RST_B			BIT(0)
28 #define PMU_PCE_SHADOW_MASK		0x1F
29 #define PMU_PCE_PG_ALLOWED		BIT(4)
30 #define PMU_PCE_CHANGE_MASK		BIT(9)
31 #define PMU_PCE_CHANGE_DETECTED		BIT(8)
32 #define PMU_PCE_PMCRE			BIT(0)
33 #define PMU_SW_PG_REQ_B_VAL		BIT(0)
34 #define PMU_SW_PG_REQ_B_RISE		BIT(1)
35 #define PMU_SW_PG_REQ_B_FALL		BIT(2)
36 #define PMU_PMC_PG_WAKE_VAL		BIT(0)
37 #define PMU_PMC_PG_WAKE_RISE		BIT(1)
38 #define PMU_PMC_PG_WAKE_FALL		BIT(2)
39 #define PMU_PCE_PG_ALLOWED		BIT(4)
40 #define PMU_D0I3_ENABLE_MASK		BIT(23)
41 #define PMU_D3_BIT_SET			BIT(16)
42 #define PMU_D3_BIT_RISING_EDGE_STATUS	BIT(17)
43 #define PMU_D3_BIT_FALLING_EDGE_STATUS	BIT(18)
44 #define PMU_D3_BIT_RISING_EDGE_MASK	BIT(19)
45 #define PMU_D3_BIT_FALLING_EDGE_MASK	BIT(20)
46 #define PMU_BME_BIT_SET			BIT(24)
47 #define PMU_BME_BIT_RISING_EDGE_STATUS	BIT(25)
48 #define PMU_BME_BIT_FALLING_EDGE_STATUS	BIT(26)
49 #define PMU_BME_BIT_RISING_EDGE_MASK	BIT(27)
50 #define PMU_BME_BIT_FALLING_EDGE_MASK	BIT(28)
51 
52 #define PMU_ISH_FABRIC_CNT		(SEDI_PMU_BASE + 0x18)
53 #define PMU_PGCB_CLKGATE_CTRL		(SEDI_PMU_BASE + 0x54)
54 
55 #define PMU_VNN_REQ			(SEDI_PMU_BASE + 0x3c)
56 #define VNN_REQ_IPC_HOST_WRITE		BIT(3)
57 
58 #define PMU_VNN_REQ_ACK			(SEDI_PMU_BASE + 0x40)
59 #define PMU_VNN_REQ_ACK_STATUS		BIT(0)
60 
61 #define PMU_VNNAON_RED			(SEDI_PMU_BASE + 0x58)
62 
63 #define PMU_RST_PREP			(SEDI_PMU_BASE + 0x5c)
64 #define PMU_RST_PREP_GET		BIT(0)
65 #define PMU_RST_PREP_AVAIL		BIT(1)
66 #define PMU_RST_PREP_INT_MASK		BIT(31)
67 
68 #define VNN_ID_DMA0			4
69 #define VNN_ID_DMA(chan)		(VNN_ID_DMA0 + chan)
70 
71 #define PMU_MASK_EVENT			(SEDI_PMU_BASE + 0x10)
72 #define PMU_MASK_EVENT_BIT_GPIO(pin)	BIT(pin)
73 #define PMU_MASK_EVENT_BIT_HPET		BIT(16)
74 #define PMU_MASK_EVENT_BIT_IPC		BIT(17)
75 #define PMU_MASK_EVENT_BIT_D3		BIT(18)
76 #define PMU_MASK_EVENT_BIT_DMA		BIT(19)
77 #define PMU_MASK_EVENT_BIT_I2C0		BIT(20)
78 #define PMU_MASK_EVENT_BIT_I2C1		BIT(21)
79 #define PMU_MASK_EVENT_BIT_SPI		BIT(22)
80 #define PMU_MASK_EVENT_BIT_UART		BIT(23)
81 #define PMU_MASK_EVENT_BIT_ALL		(0xffffffff)
82 
83 #define PMU_RF_ROM_PWR_CTRL		(SEDI_PMU_BASE + 0x30)
84 
85 #define PMU_LDO_CTRL			(SEDI_PMU_BASE + 0x44)
86 #define PMU_LDO_ENABLE_BIT		BIT(0)
87 #define PMU_LDO_RETENTION_BIT		BIT(1)
88 #define PMU_LDO_CALIBRATION_BIT		BIT(2)
89 #define PMU_LDO_READY_BIT		BIT(3)
90 
91 /* CCU Registers */
92 #define CCU_TCG_EN			(SEDI_CCU_BASE + 0x0)
93 #define CCU_BCG_EN			(SEDI_CCU_BASE + 0x4)
94 #define CCU_WDT_CD			(SEDI_CCU_BASE + 0x7c)
95 #define CCU_RST_HST			(SEDI_CCU_BASE + 0x3c)
96 #define CCU_TCG_ENABLE			(SEDI_CCU_BASE + 0x40)
97 #define CCU_BCG_ENABLE			(SEDI_CCU_BASE + 0x44)
98 #define CCU_BCG_MIA			(SEDI_CCU_BASE + 0x4)
99 #define CCU_BCG_UART			(SEDI_CCU_BASE + 0x8)
100 #define CCU_BCG_I2C			(SEDI_CCU_BASE + 0xc)
101 #define CCU_BCG_SPI			(SEDI_CCU_BASE + 0x10)
102 #define CCU_BCG_GPIO			(SEDI_CCU_BASE + 0x14)
103 #define CCU_BCG_DMA			(SEDI_CCU_BASE + 0x28)
104 #define CCU_AONCG_EN			(SEDI_CCU_BASE + 0xdc)
105 #define CCU_BCG_BIT_MIA			BIT(0)
106 #define CCU_BCG_BIT_DMA			BIT(1)
107 #define CCU_BCG_BIT_I2C0		BIT(2)
108 #define CCU_BCG_BIT_I2C1		BIT(3)
109 #define CCU_BCG_BIT_SPI			BIT(4)
110 #define CCU_BCG_BIT_SRAM		BIT(5)
111 #define CCU_BCG_BIT_HPET		BIT(6)
112 #define CCU_BCG_BIT_UART		BIT(7)
113 #define CCU_BCG_BIT_GPIO		BIT(8)
114 #define CCU_BCG_BIT_I2C2		BIT(9)
115 #define CCU_BCG_BIT_SPI2		BIT(10)
116 #define CCU_BCG_BIT_ALL			(0x7ff)
117 
118 #define CCU_SW_RST			BIT(0)
119 #define CCU_WDT_RST			BIT(1)
120 #define CCU_MIASS_RST			BIT(2)
121 #define CCU_SRECC_RST			BIT(3)
122 
123 /* MISC registers */
124 #define MISC_REG_BASE			SEDI_MISC_BASE
125 #define DMA_REG_BASE			SEDI_IREG_BASE(DMA, 0)
126 #define DMA_MISC_OFFSET			0x1000
127 #define DMA_MISC_BASE			(DMA_REG_BASE + DMA_MISC_OFFSET)
128 #define MISC_CHID_CFG_REG		(DMA_MISC_BASE + 0x400)
129 #define MISC_DMA_CTL_REG(ch)		(DMA_MISC_BASE + (4 * (ch)))
130 #define MISC_SRC_FILLIN_DMA(ch)		(DMA_MISC_BASE + 0x100 + (4 * (ch)))
131 #define MISC_DST_FILLIN_DMA(ch)		(DMA_MISC_BASE + 0x200 + (4 * (ch)))
132 #define MISC_ISH_ECC_ERR_SRESP		(DMA_MISC_BASE + 0x404)
133 #define MISC_ISH_RTC_COUNTER0		(MISC_REG_BASE + 0x70)
134 #define MISC_ISH_RTC_COUNTER1		(MISC_REG_BASE + 0x74)
135 
136 /* DMA registers */
137 #define DMA_CH_REGS_SIZE		0x58
138 #define DMA_CLR_BLOCK_REG		(DMA_REG_BASE + 0x340)
139 #define DMA_CLR_ERR_REG			(DMA_REG_BASE + 0x358)
140 #define DMA_EN_REG_ADDR			(DMA_REG_BASE + 0x3A0)
141 #define DMA_EN_REG			(DMA_EN_REG_ADDR)
142 #define DMA_CFG_REG			(DMA_REG_BASE + 0x398)
143 #define DMA_PSIZE_01			(DMA_REG_BASE + 0x400)
144 #define DMA_PSIZE_CHAN0_SIZE		512
145 #define DMA_PSIZE_CHAN0_OFFSET		0
146 #define DMA_PSIZE_CHAN1_SIZE		128
147 #define DMA_PSIZE_CHAN1_OFFSET		13
148 #define DMA_PSIZE_UPDATE		BIT(26)
149 #define DMA_MAX_CHANNEL			4
150 #define DMA_SAR(chan)			(chan + 0x000)
151 #define DMA_DAR(chan)			(chan + 0x008)
152 #define DMA_LLP(chan)			(chan + 0x010)
153 #define DMA_CTL_LOW(chan)		(chan + 0x018)
154 #define DMA_CTL_HIGH(chan)		(chan + 0x018 + 0x4)
155 #define DMA_CTL_INT_ENABLE		BIT(0)
156 #define DMA_CTL_DST_TR_WIDTH_SHIFT	1
157 #define DMA_CTL_SRC_TR_WIDTH_SHIFT	4
158 #define DMA_CTL_DINC_SHIFT		7
159 #define DMA_CTL_SINC_SHIFT		9
160 #define DMA_CTL_ADDR_INC		0
161 #define DMA_CTL_DEST_MSIZE_SHIFT	11
162 #define DMA_CTL_SRC_MSIZE_SHIFT		14
163 #define DMA_CTL_TT_FC_SHIFT		20
164 #define DMA_CTL_TT_FC_M2M_DMAC		0
165 #define DMA_ENABLE			BIT(0)
166 #define DMA_CH_EN_BIT(n)		BIT(n)
167 #define DMA_CH_EN_WE_BIT(n)		BIT(8 + (n))
168 #define DMA_MAX_BLOCK_SIZE		(4096)
169 #define SRC_TR_WIDTH			2
170 #define SRC_BURST_SIZE			3
171 #define DEST_TR_WIDTH			2
172 #define DEST_BURST_SIZE			3
173 
174 /* GPIO Registers */
175 #define ISH_GPIO_BASE			SEDI_IREG_BASE(GPIO, 0)
176 #define ISH_GPIO_GCCR			(ISH_GPIO_BASE + 0x000)
177 #define ISH_GPIO_GPLR			(ISH_GPIO_BASE + 0x004)
178 #define ISH_GPIO_GPDR			(ISH_GPIO_BASE + 0x01C)
179 #define ISH_GPIO_GPSR			(ISH_GPIO_BASE + 0x034)
180 #define ISH_GPIO_GPCR			(ISH_GPIO_BASE + 0x04C)
181 #define ISH_GPIO_GRER			(ISH_GPIO_BASE + 0x064)
182 #define ISH_GPIO_GFER			(ISH_GPIO_BASE + 0x07C)
183 #define ISH_GPIO_GFBR			(ISH_GPIO_BASE + 0x094)
184 #define ISH_GPIO_GIMR			(ISH_GPIO_BASE + 0x0AC)
185 #define ISH_GPIO_GISR			(ISH_GPIO_BASE + 0x0C4)
186 #define ISH_GPIO_GWMR			(ISH_GPIO_BASE + 0x100)
187 #define ISH_GPIO_GWSR			(ISH_GPIO_BASE + 0x118)
188 #define ISH_GPIO_GSEC			(ISH_GPIO_BASE + 0x130)
189 
190 /* SRAM control registers */
191 #define ISH_SRAM_CTRL_BASE		0x10500000
192 #define ISH_SRAM_CTRL_CSFGR		(ISH_SRAM_CTRL_BASE + 0x00)
193 #define ISH_SRAM_CTRL_INTR		(ISH_SRAM_CTRL_BASE + 0x04)
194 #define ISH_SRAM_CTRL_INTR_MASK		(ISH_SRAM_CTRL_BASE + 0x08)
195 #define ISH_SRAM_CTRL_ERASE_CTRL	(ISH_SRAM_CTRL_BASE + 0x0c)
196 #define ISH_SRAM_CTRL_ERASE_ADDR	(ISH_SRAM_CTRL_BASE + 0x10)
197 #define ISH_SRAM_CTRL_BANK_STATUS	(ISH_SRAM_CTRL_BASE + 0x2c)
198 
199 /* WDT (Watchdog Timer) Registers */
200 #define ISH_WDT_BASE			SEDI_REG_BASE(WDT)
201 #define WDT_CONTROL			(ISH_WDT_BASE + 0x0)
202 #define WDT_RELOAD			(ISH_WDT_BASE + 0x4)
203 #define WDT_VALUES			(ISH_WDT_BASE + 0x8)
204 #define WDT_CONTROL_ENABLE_BIT		BIT(17)
205 
206 #define ISH_RST_REG			(SEDI_REG_BASE(IPC_HOST) + 0x10000 + 0x44)
207 #define IPC_PIMR_CIM_SEC		(SEDI_REG_BASE(IPC_HOST) + 0x10000 + 0x10)
208 #define IPC_UMA_RANGE_LOWER_1		(SEDI_REG_BASE(IPC_HOST) + 0x384)
209 #define IPC_ISH2HOST_DOORBELL_ADDR	(SEDI_REG_BASE(IPC_HOST) + 0x54)
210 
211 #define LAPIC_SPUR			(SEDI_LAPIC_BASE + 0x00F0)
212 #define LAPIC_EOI			(SEDI_LAPIC_BASE + 0x00B0)
213 #define LAPIC_SPUR_RESET		0xFF
214 #define LAPIC_ENABLE			0x100
215 
216 #define IOAPIC_NUM_RTES 64
217 
218 #define SEDI_VEC_RESET_PREP		112
219 #define SEDI_VEC_PMU2IOAPIC		113
220 #define SEDI_VEC_PCIEDEV		114
221 
222 /* SRAM memory definitions */
223 #define CONFIG_RAM_BASE			0xFF200000
224 #define CONFIG_RAM_SIZE			0x000A0000
225 #define CONFIG_RAM_BANK_SIZE		0x00010000
226 #define CONFIG_RAM_BANKS		(CONFIG_RAM_SIZE / CONFIG_RAM_BANK_SIZE)
227 #define CONFIG_RAM_BANK_MASK		0xFFFFF
228 #define CONFIG_RAM_BANK_TILE_MASK	(CONFIG_RAM_BANK_MASK)
229 
230 #define AON_SP_RESERVED (8)
231 
232 /* AON memory definitions */
233 #define CONFIG_AON_RAM_BASE		0xFF800000
234 #define CONFIG_AON_RAM_SIZE		0x00002000
235 #define CONFIG_AON_PERSISTENT_SIZE	0x180
236 #define CONFIG_AON_PERSISTENT_BASE	(CONFIG_AON_RAM_BASE    \
237 					 + CONFIG_AON_RAM_SIZE  \
238 					 - CONFIG_AON_PERSISTENT_SIZE)
239 
240 #endif
241