]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/blob - drivers/media/pci/intel/ipu6/ipu-platform-buttress-regs.h
e91524c8e7f7bc02771d2969991acefae5dc651f
[mirror_ubuntu-jammy-kernel.git] / drivers / media / pci / intel / ipu6 / ipu-platform-buttress-regs.h
1 /* SPDX-License-Identifier: GPL-2.0 */
2 /* Copyright (C) 2020 Intel Corporation */
3
4 #ifndef IPU_PLATFORM_BUTTRESS_REGS_H
5 #define IPU_PLATFORM_BUTTRESS_REGS_H
6
7 /* IS_WORKPOINT_REQ */
8 #define IPU_BUTTRESS_REG_IS_FREQ_CTL 0x34
9 /* PS_WORKPOINT_REQ */
10 #define IPU_BUTTRESS_REG_PS_FREQ_CTL 0x38
11
12 #define IPU_BUTTRESS_IS_FREQ_RATIO_MASK 0xff
13 #define IPU_BUTTRESS_PS_FREQ_RATIO_MASK 0xff
14
15 #define IPU_IS_FREQ_MAX 533
16 #define IPU_IS_FREQ_MIN 200
17 #define IPU_PS_FREQ_MAX 450
18 #define IPU_IS_FREQ_RATIO_BASE 25
19 #define IPU_PS_FREQ_RATIO_BASE 25
20 #define IPU_BUTTRESS_IS_FREQ_CTL_DIVISOR_MASK 0xff
21 #define IPU_BUTTRESS_PS_FREQ_CTL_DIVISOR_MASK 0xff
22
23 /* should be tuned for real silicon */
24 #define IPU_IS_FREQ_CTL_DEFAULT_RATIO 0x08
25 #define IPU_PS_FREQ_CTL_DEFAULT_RATIO 0x10
26
27 #define IPU_IS_FREQ_CTL_DEFAULT_QOS_FLOOR_RATIO 0x10
28 #define IPU_PS_FREQ_CTL_DEFAULT_QOS_FLOOR_RATIO 0x0708
29
30 #define IPU_BUTTRESS_PWR_STATE_IS_PWR_SHIFT 3
31 #define IPU_BUTTRESS_PWR_STATE_IS_PWR_MASK \
32 (0x3 << IPU_BUTTRESS_PWR_STATE_IS_PWR_SHIFT)
33
34 #define IPU_BUTTRESS_PWR_STATE_PS_PWR_SHIFT 6
35 #define IPU_BUTTRESS_PWR_STATE_PS_PWR_MASK \
36 (0x3 << IPU_BUTTRESS_PWR_STATE_PS_PWR_SHIFT)
37
38 #define IPU_BUTTRESS_PWR_STATE_DN_DONE 0x0
39 #define IPU_BUTTRESS_PWR_STATE_UP_PROCESS 0x1
40 #define IPU_BUTTRESS_PWR_STATE_DN_PROCESS 0x2
41 #define IPU_BUTTRESS_PWR_STATE_UP_DONE 0x3
42
43 #define IPU_BUTTRESS_REG_FPGA_SUPPORT_0 0x270
44 #define IPU_BUTTRESS_REG_FPGA_SUPPORT_1 0x274
45 #define IPU_BUTTRESS_REG_FPGA_SUPPORT_2 0x278
46 #define IPU_BUTTRESS_REG_FPGA_SUPPORT_3 0x27c
47 #define IPU_BUTTRESS_REG_FPGA_SUPPORT_4 0x280
48 #define IPU_BUTTRESS_REG_FPGA_SUPPORT_5 0x284
49 #define IPU_BUTTRESS_REG_FPGA_SUPPORT_6 0x288
50 #define IPU_BUTTRESS_REG_FPGA_SUPPORT_7 0x28c
51
52 #define BUTTRESS_REG_WDT 0x8
53 #define BUTTRESS_REG_BTRS_CTRL 0xc
54 #define BUTTRESS_REG_BTRS_CTRL_STALL_MODE_VC0 BIT(0)
55 #define BUTTRESS_REG_BTRS_CTRL_STALL_MODE_VC1 BIT(1)
56
57 #define BUTTRESS_REG_FW_RESET_CTL 0x30
58 #define BUTTRESS_FW_RESET_CTL_START BIT(0)
59 #define BUTTRESS_FW_RESET_CTL_DONE BIT(1)
60
61 #define BUTTRESS_REG_IS_FREQ_CTL 0x34
62
63 #define BUTTRESS_IS_FREQ_CTL_DIVISOR_MASK 0xf
64
65 #define BUTTRESS_REG_PS_FREQ_CTL 0x38
66
67 #define BUTTRESS_PS_FREQ_CTL_RATIO_MASK 0xff
68
69 #define BUTTRESS_FREQ_CTL_START BIT(31)
70 #define BUTTRESS_FREQ_CTL_START_SHIFT 31
71 #define BUTTRESS_FREQ_CTL_QOS_FLOOR_SHIFT 8
72 #define BUTTRESS_FREQ_CTL_QOS_FLOOR_MASK (0xff << 8)
73
74 #define BUTTRESS_REG_PWR_STATE 0x5c
75
76 #define BUTTRESS_PWR_STATE_IS_PWR_SHIFT 3
77 #define BUTTRESS_PWR_STATE_IS_PWR_MASK (0x3 << 3)
78
79 #define BUTTRESS_PWR_STATE_PS_PWR_SHIFT 6
80 #define BUTTRESS_PWR_STATE_PS_PWR_MASK (0x3 << 6)
81
82 #define BUTTRESS_PWR_STATE_RESET 0x0
83 #define BUTTRESS_PWR_STATE_PWR_ON_DONE 0x1
84 #define BUTTRESS_PWR_STATE_PWR_RDY 0x3
85 #define BUTTRESS_PWR_STATE_PWR_IDLE 0x4
86
87 #define BUTTRESS_PWR_STATE_HH_STATUS_SHIFT 11
88 #define BUTTRESS_PWR_STATE_HH_STATUS_MASK (0x3 << 11)
89
90 enum {
91 BUTTRESS_PWR_STATE_HH_STATE_IDLE,
92 BUTTRESS_PWR_STATE_HH_STATE_IN_PRGS,
93 BUTTRESS_PWR_STATE_HH_STATE_DONE,
94 BUTTRESS_PWR_STATE_HH_STATE_ERR,
95 };
96
97 #define BUTTRESS_PWR_STATE_IS_PWR_FSM_SHIFT 19
98 #define BUTTRESS_PWR_STATE_IS_PWR_FSM_MASK (0xf << 19)
99
100 #define BUTTRESS_PWR_STATE_IS_PWR_FSM_IDLE 0x0
101 #define BUTTRESS_PWR_STATE_IS_PWR_FSM_WAIT_4_PLL_CMP 0x1
102 #define BUTTRESS_PWR_STATE_IS_PWR_FSM_WAIT_4_CLKACK 0x2
103 #define BUTTRESS_PWR_STATE_IS_PWR_FSM_WAIT_4_PG_ACK 0x3
104 #define BUTTRESS_PWR_STATE_IS_PWR_FSM_RST_ASSRT_CYCLES 0x4
105 #define BUTTRESS_PWR_STATE_IS_PWR_FSM_STOP_CLK_CYCLES1 0x5
106 #define BUTTRESS_PWR_STATE_IS_PWR_FSM_STOP_CLK_CYCLES2 0x6
107 #define BUTTRESS_PWR_STATE_IS_PWR_FSM_RST_DEASSRT_CYCLES 0x7
108 #define BUTTRESS_PWR_STATE_IS_PWR_FSM_WAIT_4_FUSE_WR_CMP 0x8
109 #define BUTTRESS_PWR_STATE_IS_PWR_FSM_BRK_POINT 0x9
110 #define BUTTRESS_PWR_STATE_IS_PWR_FSM_IS_RDY 0xa
111 #define BUTTRESS_PWR_STATE_IS_PWR_FSM_HALT_HALTED 0xb
112 #define BUTTRESS_PWR_STATE_IS_PWR_FSM_RST_DURATION_CNT3 0xc
113 #define BUTTRESS_PWR_STATE_IS_PWR_FSM_WAIT_4_CLKACK_PD 0xd
114 #define BUTTRESS_PWR_STATE_IS_PWR_FSM_PD_BRK_POINT 0xe
115 #define BUTTRESS_PWR_STATE_IS_PWR_FSM_WAIT_4_PD_PG_ACK0 0xf
116
117 #define BUTTRESS_PWR_STATE_PS_PWR_FSM_SHIFT 24
118 #define BUTTRESS_PWR_STATE_PS_PWR_FSM_MASK (0x1f << 24)
119
120 #define BUTTRESS_PWR_STATE_PS_PWR_FSM_IDLE 0x0
121 #define BUTTRESS_PWR_STATE_PS_PWR_FSM_WAIT_PU_PLL_IP_RDY 0x1
122 #define BUTTRESS_PWR_STATE_PS_PWR_FSM_WAIT_RO_PRE_CNT_EXH 0x2
123 #define BUTTRESS_PWR_STATE_PS_PWR_FSM_WAIT_PU_VGI_PWRGOOD 0x3
124 #define BUTTRESS_PWR_STATE_PS_PWR_FSM_WAIT_RO_POST_CNT_EXH 0x4
125 #define BUTTRESS_PWR_STATE_PS_PWR_FSM_WR_PLL_RATIO 0x5
126 #define BUTTRESS_PWR_STATE_PS_PWR_FSM_WAIT_PU_PLL_CMP 0x6
127 #define BUTTRESS_PWR_STATE_PS_PWR_FSM_WAIT_PU_CLKACK 0x7
128 #define BUTTRESS_PWR_STATE_PS_PWR_FSM_RST_ASSRT_CYCLES 0x8
129 #define BUTTRESS_PWR_STATE_PS_PWR_FSM_STOP_CLK_CYCLES1 0x9
130 #define BUTTRESS_PWR_STATE_PS_PWR_FSM_STOP_CLK_CYCLES2 0xa
131 #define BUTTRESS_PWR_STATE_PS_PWR_FSM_RST_DEASSRT_CYCLES 0xb
132 #define BUTTRESS_PWR_STATE_PS_PWR_FSM_PU_BRK_PNT 0xc
133 #define BUTTRESS_PWR_STATE_PS_PWR_FSM_WAIT_FUSE_ACCPT 0xd
134 #define BUTTRESS_PWR_STATE_PS_PWR_FSM_PS_PWR_UP 0xf
135 #define BUTTRESS_PWR_STATE_PS_PWR_FSM_WAIT_4_HALTED 0x10
136 #define BUTTRESS_PWR_STATE_PS_PWR_FSM_RESET_CNT3 0x11
137 #define BUTTRESS_PWR_STATE_PS_PWR_FSM_WAIT_PD_CLKACK 0x12
138 #define BUTTRESS_PWR_STATE_PS_PWR_FSM_WAIT_PD_OFF_IND 0x13
139 #define BUTTRESS_PWR_STATE_PS_PWR_FSM_WAIT_DVFS_PH4 0x14
140 #define BUTTRESS_PWR_STATE_PS_PWR_FSM_WAIT_DVFS_PLL_CMP 0x15
141 #define BUTTRESS_PWR_STATE_PS_PWR_FSM_WAIT_DVFS_CLKACK 0x16
142
143 #define BUTTRESS_REG_SECURITY_CTL 0x300
144
145 #define BUTTRESS_SECURITY_CTL_FW_SECURE_MODE BIT(16)
146 #define BUTTRESS_SECURITY_CTL_FW_SETUP_SHIFT 0
147 #define BUTTRESS_SECURITY_CTL_FW_SETUP_MASK 0x1f
148
149 #define BUTTRESS_SECURITY_CTL_FW_SETUP_DONE 0x1
150 #define BUTTRESS_SECURITY_CTL_AUTH_DONE 0x2
151 #define BUTTRESS_SECURITY_CTL_AUTH_FAILED 0x8
152
153 #define BUTTRESS_REG_SENSOR_FREQ_CTL 0x16c
154
155 #define BUTTRESS_SENSOR_FREQ_CTL_OSC_OUT_FREQ_DEFAULT(i) \
156 (0x1b << ((i) * 10))
157 #define BUTTRESS_SENSOR_FREQ_CTL_OSC_OUT_FREQ_SHIFT(i) ((i) * 10)
158 #define BUTTRESS_SENSOR_FREQ_CTL_OSC_OUT_FREQ_MASK(i) \
159 (0x1ff << ((i) * 10))
160
161 #define BUTTRESS_SENSOR_CLK_FREQ_6P75MHZ 0x176
162 #define BUTTRESS_SENSOR_CLK_FREQ_8MHZ 0x164
163 #define BUTTRESS_SENSOR_CLK_FREQ_9P6MHZ 0x2
164 #define BUTTRESS_SENSOR_CLK_FREQ_12MHZ 0x1b2
165 #define BUTTRESS_SENSOR_CLK_FREQ_13P6MHZ 0x1ac
166 #define BUTTRESS_SENSOR_CLK_FREQ_14P4MHZ 0x1cc
167 #define BUTTRESS_SENSOR_CLK_FREQ_15P8MHZ 0x1a6
168 #define BUTTRESS_SENSOR_CLK_FREQ_16P2MHZ 0xca
169 #define BUTTRESS_SENSOR_CLK_FREQ_17P3MHZ 0x12e
170 #define BUTTRESS_SENSOR_CLK_FREQ_18P6MHZ 0x1c0
171 #define BUTTRESS_SENSOR_CLK_FREQ_19P2MHZ 0x0
172 #define BUTTRESS_SENSOR_CLK_FREQ_24MHZ 0xb2
173 #define BUTTRESS_SENSOR_CLK_FREQ_26MHZ 0xae
174 #define BUTTRESS_SENSOR_CLK_FREQ_27MHZ 0x196
175
176 #define BUTTRESS_SENSOR_FREQ_CTL_LJPLL_FB_RATIO_MASK 0xff
177 #define BUTTRESS_SENSOR_FREQ_CTL_SEL_MIPICLK_A_SHIFT 8
178 #define BUTTRESS_SENSOR_FREQ_CTL_SEL_MIPICLK_A_MASK (0x2 << 8)
179 #define BUTTRESS_SENSOR_FREQ_CTL_SEL_MIPICLK_C_SHIFT 10
180 #define BUTTRESS_SENSOR_FREQ_CTL_SEL_MIPICLK_C_MASK (0x2 << 10)
181 #define BUTTRESS_SENSOR_FREQ_CTL_LJPLL_FORCE_OFF_SHIFT 12
182 #define BUTTRESS_SENSOR_FREQ_CTL_LJPLL_REF_RATIO_SHIFT 14
183 #define BUTTRESS_SENSOR_FREQ_CTL_LJPLL_REF_RATIO_MASK (0x2 << 14)
184 #define BUTTRESS_SENSOR_FREQ_CTL_LJPLL_PVD_RATIO_SHIFT 16
185 #define BUTTRESS_SENSOR_FREQ_CTL_LJPLL_PVD_RATIO_MASK (0x2 << 16)
186 #define BUTTRESS_SENSOR_FREQ_CTL_LJPLL_OUTPUT_RATIO_SHIFT 18
187 #define BUTTRESS_SENSOR_FREQ_CTL_LJPLL_OUTPUT_RATIO_MASK (0x2 << 18)
188 #define BUTTRESS_SENSOR_FREQ_CTL_START_SHIFT 31
189
190 #define BUTTRESS_REG_SENSOR_CLK_CTL 0x170
191
192 /* 0 <= i <= 2 */
193 #define BUTTRESS_SENSOR_CLK_CTL_OSC_CLK_OUT_EN_SHIFT(i) ((i) * 2)
194 #define BUTTRESS_SENSOR_CLK_CTL_OSC_CLK_OUT_SEL_SHIFT(i) ((i) * 2 + 1)
195
196 #define BUTTRESS_REG_FW_SOURCE_BASE_LO 0x78
197 #define BUTTRESS_REG_FW_SOURCE_BASE_HI 0x7C
198 #define BUTTRESS_REG_FW_SOURCE_SIZE 0x80
199
200 #define BUTTRESS_REG_ISR_STATUS 0x90
201 #define BUTTRESS_REG_ISR_ENABLED_STATUS 0x94
202 #define BUTTRESS_REG_ISR_ENABLE 0x98
203 #define BUTTRESS_REG_ISR_CLEAR 0x9C
204
205 #define BUTTRESS_ISR_IS_IRQ BIT(0)
206 #define BUTTRESS_ISR_PS_IRQ BIT(1)
207 #define BUTTRESS_ISR_IPC_EXEC_DONE_BY_CSE BIT(2)
208 #define BUTTRESS_ISR_IPC_EXEC_DONE_BY_ISH BIT(3)
209 #define BUTTRESS_ISR_IPC_FROM_CSE_IS_WAITING BIT(4)
210 #define BUTTRESS_ISR_IPC_FROM_ISH_IS_WAITING BIT(5)
211 #define BUTTRESS_ISR_CSE_CSR_SET BIT(6)
212 #define BUTTRESS_ISR_ISH_CSR_SET BIT(7)
213 #define BUTTRESS_ISR_SPURIOUS_CMP BIT(8)
214 #define BUTTRESS_ISR_WATCHDOG_EXPIRED BIT(9)
215 #define BUTTRESS_ISR_PUNIT_2_IUNIT_IRQ BIT(10)
216 #define BUTTRESS_ISR_SAI_VIOLATION BIT(11)
217 #define BUTTRESS_ISR_HW_ASSERTION BIT(12)
218
219 #define BUTTRESS_REG_IU2CSEDB0 0x100
220
221 #define BUTTRESS_IU2CSEDB0_BUSY BIT(31)
222 #define BUTTRESS_IU2CSEDB0_SHORT_FORMAT_SHIFT 27
223 #define BUTTRESS_IU2CSEDB0_CLIENT_ID_SHIFT 10
224 #define BUTTRESS_IU2CSEDB0_IPC_CLIENT_ID_VAL 2
225
226 #define BUTTRESS_REG_IU2CSEDATA0 0x104
227
228 #define BUTTRESS_IU2CSEDATA0_IPC_BOOT_LOAD 1
229 #define BUTTRESS_IU2CSEDATA0_IPC_AUTH_RUN 2
230 #define BUTTRESS_IU2CSEDATA0_IPC_AUTH_REPLACE 3
231 #define BUTTRESS_IU2CSEDATA0_IPC_UPDATE_SECURE_TOUCH 16
232
233 #define BUTTRESS_CSE2IUDATA0_IPC_BOOT_LOAD_DONE 1
234 #define BUTTRESS_CSE2IUDATA0_IPC_AUTH_RUN_DONE 2
235 #define BUTTRESS_CSE2IUDATA0_IPC_AUTH_REPLACE_DONE 4
236 #define BUTTRESS_CSE2IUDATA0_IPC_UPDATE_SECURE_TOUCH_DONE 16
237
238 #define BUTTRESS_REG_IU2CSECSR 0x108
239
240 #define BUTTRESS_IU2CSECSR_IPC_PEER_COMP_ACTIONS_RST_PHASE1 BIT(0)
241 #define BUTTRESS_IU2CSECSR_IPC_PEER_COMP_ACTIONS_RST_PHASE2 BIT(1)
242 #define BUTTRESS_IU2CSECSR_IPC_PEER_QUERIED_IP_COMP_ACTIONS_RST_PHASE BIT(2)
243 #define BUTTRESS_IU2CSECSR_IPC_PEER_ASSERTED_REG_VALID_REQ BIT(3)
244 #define BUTTRESS_IU2CSECSR_IPC_PEER_ACKED_REG_VALID BIT(4)
245 #define BUTTRESS_IU2CSECSR_IPC_PEER_DEASSERTED_REG_VALID_REQ BIT(5)
246
247 #define BUTTRESS_REG_CSE2IUDB0 0x304
248 #define BUTTRESS_REG_CSE2IUCSR 0x30C
249 #define BUTTRESS_REG_CSE2IUDATA0 0x308
250
251 /* 0x20 == NACK, 0xf == unknown command */
252 #define BUTTRESS_CSE2IUDATA0_IPC_NACK 0xf20
253 #define BUTTRESS_CSE2IUDATA0_IPC_NACK_MASK 0xffff
254
255 #define BUTTRESS_REG_ISH2IUCSR 0x50
256 #define BUTTRESS_REG_ISH2IUDB0 0x54
257 #define BUTTRESS_REG_ISH2IUDATA0 0x58
258
259 #define BUTTRESS_REG_IU2ISHDB0 0x10C
260 #define BUTTRESS_REG_IU2ISHDATA0 0x110
261 #define BUTTRESS_REG_IU2ISHDATA1 0x114
262 #define BUTTRESS_REG_IU2ISHCSR 0x118
263
264 #define BUTTRESS_REG_ISH_START_DETECT 0x198
265 #define BUTTRESS_REG_ISH_START_DETECT_MASK 0x19C
266
267 #define BUTTRESS_REG_FABRIC_CMD 0x88
268
269 #define BUTTRESS_FABRIC_CMD_START_TSC_SYNC BIT(0)
270 #define BUTTRESS_FABRIC_CMD_IS_DRAIN BIT(4)
271
272 #define BUTTRESS_REG_TSW_CTL 0x120
273 #define BUTTRESS_TSW_CTL_SOFT_RESET BIT(8)
274
275 #define BUTTRESS_REG_TSC_LO 0x164
276 #define BUTTRESS_REG_TSC_HI 0x168
277
278 #define BUTTRESS_REG_CSI2_PORT_CONFIG_AB 0x200
279 #define BUTTRESS_CSI2_PORT_CONFIG_AB_MUX_MASK 0x1f
280 #define BUTTRESS_CSI2_PORT_CONFIG_AB_COMBO_SHIFT_B0 16
281
282 #define BUTTRESS_REG_PS_FREQ_CAPABILITIES 0xf7498
283
284 #define BUTTRESS_PS_FREQ_CAPABILITIES_LAST_RESOLVED_RATIO_SHIFT 24
285 #define BUTTRESS_PS_FREQ_CAPABILITIES_LAST_RESOLVED_RATIO_MASK (0xff << 24)
286 #define BUTTRESS_PS_FREQ_CAPABILITIES_MAX_RATIO_SHIFT 16
287 #define BUTTRESS_PS_FREQ_CAPABILITIES_MAX_RATIO_MASK (0xff << 16)
288 #define BUTTRESS_PS_FREQ_CAPABILITIES_EFFICIENT_RATIO_SHIFT 8
289 #define BUTTRESS_PS_FREQ_CAPABILITIES_EFFICIENT_RATIO_MASK (0xff << 8)
290 #define BUTTRESS_PS_FREQ_CAPABILITIES_MIN_RATIO_SHIFT 0
291 #define BUTTRESS_PS_FREQ_CAPABILITIES_MIN_RATIO_MASK (0xff)
292
293 #define BUTTRESS_IRQS (BUTTRESS_ISR_IPC_FROM_CSE_IS_WAITING | \
294 BUTTRESS_ISR_IPC_EXEC_DONE_BY_CSE | \
295 BUTTRESS_ISR_IS_IRQ | \
296 BUTTRESS_ISR_PS_IRQ)
297
298 #define IPU6SE_ISYS_PHY_0_BASE 0x10000
299
300 /* only use BB0, BB2, BB4, and BB6 on PHY0 */
301 #define IPU6SE_ISYS_PHY_BB_NUM 4
302
303 /* offset from PHY base */
304 #define PHY_CSI_CFG 0xc0
305 #define PHY_CSI_RCOMP_CONTROL 0xc8
306 #define PHY_CSI_BSCAN_EXCLUDE 0xd8
307
308 #define PHY_CPHY_DLL_OVRD(x) (0x100 + 0x100 * (x))
309 #define PHY_DPHY_DLL_OVRD(x) (0x14c + 0x100 * (x))
310 #define PHY_CPHY_RX_CONTROL1(x) (0x110 + 0x100 * (x))
311 #define PHY_CPHY_RX_CONTROL2(x) (0x114 + 0x100 * (x))
312 #define PHY_DPHY_CFG(x) (0x148 + 0x100 * (x))
313 #define PHY_BB_AFE_CONFIG(x) (0x174 + 0x100 * (x))
314
315 #endif /* IPU_PLATFORM_BUTTRESS_REGS_H */