File Index
Files and directories
Sign in
FILE

mt8196-pm-domains.h

File preview with syntax highlighting.

linux-6.19.14/drivers/pmdomain/mediatek/mt8196-pm-domains.h C
  1/* SPDX-License-Identifier: GPL-2.0-only */
  2/*
  3 * Copyright (c) 2025 Collabora Ltd
  4 *                    AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
  5 */
  6
  7#ifndef __SOC_MEDIATEK_MT8196_PM_DOMAINS_H
  8#define __SOC_MEDIATEK_MT8196_PM_DOMAINS_H
  9
 10#include "mtk-pm-domains.h"
 11#include <dt-bindings/power/mediatek,mt8196-power.h>
 12
 13/*
 14 * MT8196 and MT6991 power domain support
 15 */
 16
 17/* INFRA TOP_AXI registers */
 18#define MT8196_TOP_AXI_PROT_EN_SET		0x4
 19#define MT8196_TOP_AXI_PROT_EN_CLR		0x8
 20#define MT8196_TOP_AXI_PROT_EN_STA		0xc
 21 #define MT8196_TOP_AXI_PROT_EN_SLEEP0_MD	BIT(29)
 22
 23#define MT8196_TOP_AXI_PROT_EN_1_SET		0x24
 24#define MT8196_TOP_AXI_PROT_EN_1_CLR		0x28
 25#define MT8196_TOP_AXI_PROT_EN_1_STA		0x2c
 26 #define MT8196_TOP_AXI_PROT_EN_1_SLEEP1_MD	BIT(0)
 27
 28/* SPM BUS_PROTECT registers */
 29#define MT8196_SPM_BUS_PROTECT_CON_SET		0xdc
 30#define MT8196_SPM_BUS_PROTECT_CON_CLR		0xe0
 31#define MT8196_SPM_BUS_PROTECT_RDY		0x208
 32 #define MT8196_SPM_PROT_EN_BUS_CONN		BIT(1)
 33 #define MT8196_SPM_PROT_EN_BUS_SSUSB_DP_PHY_P0	BIT(6)
 34 #define MT8196_SPM_PROT_EN_BUS_SSUSB_P0	BIT(7)
 35 #define MT8196_SPM_PROT_EN_BUS_SSUSB_P1	BIT(8)
 36 #define MT8196_SPM_PROT_EN_BUS_SSUSB_P23	BIT(9)
 37 #define MT8196_SPM_PROT_EN_BUS_SSUSB_PHY_P2	BIT(10)
 38 #define MT8196_SPM_PROT_EN_BUS_PEXTP_MAC0	BIT(13)
 39 #define MT8196_SPM_PROT_EN_BUS_PEXTP_MAC1	BIT(14)
 40 #define MT8196_SPM_PROT_EN_BUS_PEXTP_MAC2	BIT(15)
 41 #define MT8196_SPM_PROT_EN_BUS_PEXTP_PHY0	BIT(16)
 42 #define MT8196_SPM_PROT_EN_BUS_PEXTP_PHY1	BIT(17)
 43 #define MT8196_SPM_PROT_EN_BUS_PEXTP_PHY2	BIT(18)
 44 #define MT8196_SPM_PROT_EN_BUS_AUDIO		BIT(19)
 45 #define MT8196_SPM_PROT_EN_BUS_ADSP_TOP	BIT(21)
 46 #define MT8196_SPM_PROT_EN_BUS_ADSP_INFRA	BIT(22)
 47 #define MT8196_SPM_PROT_EN_BUS_ADSP_AO		BIT(23)
 48 #define MT8196_SPM_PROT_EN_BUS_MM_PROC		BIT(24)
 49
 50/* PWR_CON registers */
 51#define MT8196_PWR_ACK				BIT(30)
 52#define MT8196_PWR_ACK_2ND			BIT(31)
 53
 54static enum scpsys_bus_prot_block scpsys_bus_prot_blocks_mt8196[] = {
 55	BUS_PROT_BLOCK_INFRA, BUS_PROT_BLOCK_SPM
 56};
 57
 58static const struct scpsys_domain_data scpsys_domain_data_mt8196[] = {
 59	[MT8196_POWER_DOMAIN_MD] = {
 60		.name = "md",
 61		.sta_mask = MT8196_PWR_ACK,
 62		.sta2nd_mask = MT8196_PWR_ACK_2ND,
 63		.ctl_offs = 0xe00,
 64		.pwr_sta_offs = 0xe00,
 65		.pwr_sta2nd_offs = 0xe00,
 66		.ext_buck_iso_offs = 0xefc,
 67		.ext_buck_iso_mask = GENMASK(1, 0),
 68		.bp_cfg = {
 69			BUS_PROT_WR_IGN(INFRA, MT8196_TOP_AXI_PROT_EN_SLEEP0_MD,
 70					MT8196_TOP_AXI_PROT_EN_SET,
 71					MT8196_TOP_AXI_PROT_EN_CLR,
 72					MT8196_TOP_AXI_PROT_EN_STA),
 73			BUS_PROT_WR_IGN(INFRA, MT8196_TOP_AXI_PROT_EN_1_SLEEP1_MD,
 74					MT8196_TOP_AXI_PROT_EN_1_SET,
 75					MT8196_TOP_AXI_PROT_EN_1_CLR,
 76					MT8196_TOP_AXI_PROT_EN_1_STA),
 77		},
 78		.caps = MTK_SCPD_MODEM_PWRSEQ | MTK_SCPD_EXT_BUCK_ISO |
 79			MTK_SCPD_SKIP_RESET_B | MTK_SCPD_KEEP_DEFAULT_OFF,
 80	},
 81	[MT8196_POWER_DOMAIN_CONN] = {
 82		.name = "conn",
 83		.sta_mask = MT8196_PWR_ACK,
 84		.sta2nd_mask = MT8196_PWR_ACK_2ND,
 85		.ctl_offs = 0xe04,
 86		.pwr_sta_offs = 0xe04,
 87		.pwr_sta2nd_offs = 0xe04,
 88		.bp_cfg = {
 89			BUS_PROT_WR_IGN(SPM, MT8196_SPM_PROT_EN_BUS_CONN,
 90					MT8196_SPM_BUS_PROTECT_CON_SET,
 91					MT8196_SPM_BUS_PROTECT_CON_CLR,
 92					MT8196_SPM_BUS_PROTECT_RDY),
 93		},
 94		.caps = MTK_SCPD_KEEP_DEFAULT_OFF,
 95		.rtff_type = SCPSYS_RTFF_TYPE_GENERIC,
 96	},
 97	[MT8196_POWER_DOMAIN_SSUSB_DP_PHY_P0] = {
 98		.name = "ssusb-dp-phy-p0",
 99		.sta_mask = MT8196_PWR_ACK,
100		.sta2nd_mask = MT8196_PWR_ACK_2ND,
101		.ctl_offs = 0xe18,
102		.pwr_sta_offs = 0xe18,
103		.pwr_sta2nd_offs = 0xe18,
104		.bp_cfg = {
105			BUS_PROT_WR_IGN(SPM, MT8196_SPM_PROT_EN_BUS_SSUSB_DP_PHY_P0,
106					MT8196_SPM_BUS_PROTECT_CON_SET,
107					MT8196_SPM_BUS_PROTECT_CON_CLR,
108					MT8196_SPM_BUS_PROTECT_RDY),
109		},
110		.caps = MTK_SCPD_ALWAYS_ON,
111		.rtff_type = SCPSYS_RTFF_TYPE_GENERIC,
112	},
113	[MT8196_POWER_DOMAIN_SSUSB_P0] = {
114		.name = "ssusb-p0",
115		.sta_mask = MT8196_PWR_ACK,
116		.sta2nd_mask = MT8196_PWR_ACK_2ND,
117		.ctl_offs = 0xe1c,
118		.pwr_sta_offs = 0xe1c,
119		.pwr_sta2nd_offs = 0xe1c,
120		.sram_pdn_bits = BIT(8),
121		.sram_pdn_ack_bits = BIT(12),
122		.bp_cfg = {
123			BUS_PROT_WR_IGN(SPM, MT8196_SPM_PROT_EN_BUS_SSUSB_P0,
124					MT8196_SPM_BUS_PROTECT_CON_SET,
125					MT8196_SPM_BUS_PROTECT_CON_CLR,
126					MT8196_SPM_BUS_PROTECT_RDY),
127		},
128		.caps = MTK_SCPD_ALWAYS_ON,
129		.rtff_type = SCPSYS_RTFF_TYPE_GENERIC,
130	},
131	[MT8196_POWER_DOMAIN_SSUSB_P1] = {
132		.name = "ssusb-p1",
133		.sta_mask = MT8196_PWR_ACK,
134		.sta2nd_mask = MT8196_PWR_ACK_2ND,
135		.ctl_offs = 0xe20,
136		.pwr_sta_offs = 0xe20,
137		.pwr_sta2nd_offs = 0xe20,
138		.sram_pdn_bits = BIT(8),
139		.sram_pdn_ack_bits = BIT(12),
140		.bp_cfg = {
141			BUS_PROT_WR_IGN(SPM, MT8196_SPM_PROT_EN_BUS_SSUSB_P1,
142					MT8196_SPM_BUS_PROTECT_CON_SET,
143					MT8196_SPM_BUS_PROTECT_CON_CLR,
144					MT8196_SPM_BUS_PROTECT_RDY),
145		},
146		.caps = MTK_SCPD_ALWAYS_ON,
147		.rtff_type = SCPSYS_RTFF_TYPE_GENERIC,
148	},
149	[MT8196_POWER_DOMAIN_SSUSB_P23] = {
150		.name = "ssusb-p23",
151		.sta_mask = MT8196_PWR_ACK,
152		.sta2nd_mask = MT8196_PWR_ACK_2ND,
153		.ctl_offs = 0xe24,
154		.pwr_sta_offs = 0xe24,
155		.pwr_sta2nd_offs = 0xe24,
156		.bp_cfg = {
157			BUS_PROT_WR_IGN(SPM, MT8196_SPM_PROT_EN_BUS_SSUSB_P23,
158					MT8196_SPM_BUS_PROTECT_CON_SET,
159					MT8196_SPM_BUS_PROTECT_CON_CLR,
160					MT8196_SPM_BUS_PROTECT_RDY),
161		},
162		.caps = MTK_SCPD_KEEP_DEFAULT_OFF,
163		.rtff_type = SCPSYS_RTFF_TYPE_GENERIC,
164	},
165	[MT8196_POWER_DOMAIN_SSUSB_PHY_P2] = {
166		.name = "ssusb-phy-p2",
167		.sta_mask = MT8196_PWR_ACK,
168		.sta2nd_mask = MT8196_PWR_ACK_2ND,
169		.ctl_offs = 0xe28,
170		.pwr_sta_offs = 0xe28,
171		.pwr_sta2nd_offs = 0xe28,
172		.sram_pdn_bits = BIT(8),
173		.sram_pdn_ack_bits = BIT(12),
174		.bp_cfg = {
175			BUS_PROT_WR_IGN(SPM, MT8196_SPM_PROT_EN_BUS_SSUSB_PHY_P2,
176					MT8196_SPM_BUS_PROTECT_CON_SET,
177					MT8196_SPM_BUS_PROTECT_CON_CLR,
178					MT8196_SPM_BUS_PROTECT_RDY),
179		},
180		.caps = MTK_SCPD_KEEP_DEFAULT_OFF,
181		.rtff_type = SCPSYS_RTFF_TYPE_GENERIC,
182	},
183	[MT8196_POWER_DOMAIN_PEXTP_MAC0] = {
184		.name = "pextp-mac0",
185		.sta_mask = MT8196_PWR_ACK,
186		.sta2nd_mask = MT8196_PWR_ACK_2ND,
187		.ctl_offs = 0xe34,
188		.pwr_sta_offs = 0xe34,
189		.pwr_sta2nd_offs = 0xe34,
190		.sram_pdn_bits = BIT(8),
191		.sram_pdn_ack_bits = BIT(12),
192		.bp_cfg = {
193			BUS_PROT_WR_IGN(SPM, MT8196_SPM_PROT_EN_BUS_PEXTP_MAC0,
194					MT8196_SPM_BUS_PROTECT_CON_SET,
195					MT8196_SPM_BUS_PROTECT_CON_CLR,
196					MT8196_SPM_BUS_PROTECT_RDY),
197		},
198		.rtff_type = SCPSYS_RTFF_TYPE_PCIE_PHY,
199	},
200	[MT8196_POWER_DOMAIN_PEXTP_MAC1] = {
201		.name = "pextp-mac1",
202		.sta_mask = MT8196_PWR_ACK,
203		.sta2nd_mask = MT8196_PWR_ACK_2ND,
204		.ctl_offs = 0xe38,
205		.pwr_sta_offs = 0xe38,
206		.pwr_sta2nd_offs = 0xe38,
207		.sram_pdn_bits = BIT(8),
208		.sram_pdn_ack_bits = BIT(12),
209		.bp_cfg = {
210			BUS_PROT_WR_IGN(SPM, MT8196_SPM_PROT_EN_BUS_PEXTP_MAC1,
211					MT8196_SPM_BUS_PROTECT_CON_SET,
212					MT8196_SPM_BUS_PROTECT_CON_CLR,
213					MT8196_SPM_BUS_PROTECT_RDY),
214		},
215		.rtff_type = SCPSYS_RTFF_TYPE_PCIE_PHY,
216	},
217	[MT8196_POWER_DOMAIN_PEXTP_MAC2] = {
218		.name = "pextp-mac2",
219		.sta_mask = MT8196_PWR_ACK,
220		.sta2nd_mask = MT8196_PWR_ACK_2ND,
221		.ctl_offs = 0xe3c,
222		.pwr_sta_offs = 0xe3c,
223		.pwr_sta2nd_offs = 0xe3c,
224		.sram_pdn_bits = BIT(8),
225		.sram_pdn_ack_bits = BIT(12),
226		.bp_cfg = {
227			BUS_PROT_WR_IGN(SPM, MT8196_SPM_PROT_EN_BUS_PEXTP_MAC2,
228					MT8196_SPM_BUS_PROTECT_CON_SET,
229					MT8196_SPM_BUS_PROTECT_CON_CLR,
230					MT8196_SPM_BUS_PROTECT_RDY),
231		},
232		.rtff_type = SCPSYS_RTFF_TYPE_PCIE_PHY,
233	},
234	[MT8196_POWER_DOMAIN_PEXTP_PHY0] = {
235		.name = "pextp-phy0",
236		.sta_mask = MT8196_PWR_ACK,
237		.sta2nd_mask = MT8196_PWR_ACK_2ND,
238		.ctl_offs = 0xe40,
239		.pwr_sta_offs = 0xe40,
240		.pwr_sta2nd_offs = 0xe40,
241		.bp_cfg = {
242			BUS_PROT_WR_IGN(SPM, MT8196_SPM_PROT_EN_BUS_PEXTP_PHY0,
243					MT8196_SPM_BUS_PROTECT_CON_SET,
244					MT8196_SPM_BUS_PROTECT_CON_CLR,
245					MT8196_SPM_BUS_PROTECT_RDY),
246		},
247		.rtff_type = SCPSYS_RTFF_TYPE_PCIE_PHY,
248	},
249	[MT8196_POWER_DOMAIN_PEXTP_PHY1] = {
250		.name = "pextp-phy1",
251		.sta_mask = MT8196_PWR_ACK,
252		.sta2nd_mask = MT8196_PWR_ACK_2ND,
253		.ctl_offs = 0xe44,
254		.pwr_sta_offs = 0xe44,
255		.pwr_sta2nd_offs = 0xe44,
256		.bp_cfg = {
257			BUS_PROT_WR_IGN(SPM, MT8196_SPM_PROT_EN_BUS_PEXTP_PHY1,
258					MT8196_SPM_BUS_PROTECT_CON_SET,
259					MT8196_SPM_BUS_PROTECT_CON_CLR,
260					MT8196_SPM_BUS_PROTECT_RDY),
261		},
262		.rtff_type = SCPSYS_RTFF_TYPE_PCIE_PHY,
263	},
264	[MT8196_POWER_DOMAIN_PEXTP_PHY2] = {
265		.name = "pextp-phy2",
266		.sta_mask = MT8196_PWR_ACK,
267		.sta2nd_mask = MT8196_PWR_ACK_2ND,
268		.ctl_offs = 0xe48,
269		.pwr_sta_offs = 0xe48,
270		.pwr_sta2nd_offs = 0xe48,
271		.bp_cfg = {
272			BUS_PROT_WR_IGN(SPM, MT8196_SPM_PROT_EN_BUS_PEXTP_PHY2,
273					MT8196_SPM_BUS_PROTECT_CON_SET,
274					MT8196_SPM_BUS_PROTECT_CON_CLR,
275					MT8196_SPM_BUS_PROTECT_RDY),
276		},
277		.rtff_type = SCPSYS_RTFF_TYPE_PCIE_PHY,
278	},
279	[MT8196_POWER_DOMAIN_AUDIO] = {
280		.name = "audio",
281		.sta_mask = MT8196_PWR_ACK,
282		.sta2nd_mask = MT8196_PWR_ACK_2ND,
283		.ctl_offs = 0xe4c,
284		.pwr_sta_offs = 0xe4c,
285		.pwr_sta2nd_offs = 0xe4c,
286		.sram_pdn_bits = BIT(8),
287		.sram_pdn_ack_bits = BIT(12),
288		.bp_cfg = {
289			BUS_PROT_WR_IGN(SPM, MT8196_SPM_PROT_EN_BUS_AUDIO,
290					MT8196_SPM_BUS_PROTECT_CON_SET,
291					MT8196_SPM_BUS_PROTECT_CON_CLR,
292					MT8196_SPM_BUS_PROTECT_RDY),
293		},
294		.rtff_type = SCPSYS_RTFF_TYPE_GENERIC,
295	},
296	[MT8196_POWER_DOMAIN_ADSP_TOP_DORMANT] = {
297		.name = "adsp-top-dormant",
298		.sta_mask = MT8196_PWR_ACK,
299		.sta2nd_mask = MT8196_PWR_ACK_2ND,
300		.ctl_offs = 0xe54,
301		.pwr_sta_offs = 0xe54,
302		.pwr_sta2nd_offs = 0xe54,
303		/* Note: This is not managing powerdown (pdn), but sleep instead (slp) */
304		.sram_pdn_bits = BIT(9),
305		.sram_pdn_ack_bits = BIT(13),
306		.bp_cfg = {
307			BUS_PROT_WR_IGN(SPM, MT8196_SPM_PROT_EN_BUS_ADSP_TOP,
308					MT8196_SPM_BUS_PROTECT_CON_SET,
309					MT8196_SPM_BUS_PROTECT_CON_CLR,
310					MT8196_SPM_BUS_PROTECT_RDY),
311		},
312		.caps = MTK_SCPD_SRAM_ISO | MTK_SCPD_SRAM_PDN_INVERTED,
313	},
314	[MT8196_POWER_DOMAIN_ADSP_INFRA] = {
315		.name = "adsp-infra",
316		.sta_mask = MT8196_PWR_ACK,
317		.sta2nd_mask = MT8196_PWR_ACK_2ND,
318		.ctl_offs = 0xe58,
319		.pwr_sta_offs = 0xe58,
320		.pwr_sta2nd_offs = 0xe58,
321		.bp_cfg = {
322			BUS_PROT_WR_IGN(SPM, MT8196_SPM_PROT_EN_BUS_ADSP_INFRA,
323					MT8196_SPM_BUS_PROTECT_CON_SET,
324					MT8196_SPM_BUS_PROTECT_CON_CLR,
325					MT8196_SPM_BUS_PROTECT_RDY),
326		},
327		.caps = MTK_SCPD_ALWAYS_ON,
328		.rtff_type = SCPSYS_RTFF_TYPE_GENERIC,
329	},
330	[MT8196_POWER_DOMAIN_ADSP_AO] = {
331		.name = "adsp-ao",
332		.sta_mask = MT8196_PWR_ACK,
333		.sta2nd_mask = MT8196_PWR_ACK_2ND,
334		.ctl_offs = 0xe5c,
335		.pwr_sta_offs = 0xe5c,
336		.pwr_sta2nd_offs = 0xe5c,
337		.bp_cfg = {
338			BUS_PROT_WR_IGN(SPM, MT8196_SPM_PROT_EN_BUS_ADSP_AO,
339					MT8196_SPM_BUS_PROTECT_CON_SET,
340					MT8196_SPM_BUS_PROTECT_CON_CLR,
341					MT8196_SPM_BUS_PROTECT_RDY),
342		},
343		.caps = MTK_SCPD_ALWAYS_ON,
344		.rtff_type = SCPSYS_RTFF_TYPE_GENERIC,
345	},
346};
347
348static const struct scpsys_hwv_domain_data scpsys_hwv_domain_data_mt8196[] = {
349	[MT8196_POWER_DOMAIN_MM_PROC_DORMANT] = {
350		.name = "mm-proc-dormant",
351		.set = 0x0218,
352		.clr = 0x021c,
353		.done = 0x141c,
354		.en = 0x1410,
355		.set_sta = 0x146c,
356		.clr_sta = 0x1470,
357		.setclr_bit = 0,
358		.caps = MTK_SCPD_ALWAYS_ON,
359	},
360	[MT8196_POWER_DOMAIN_SSR] = {
361		.name = "ssrsys",
362		.set = 0x0218,
363		.clr = 0x021c,
364		.done = 0x141c,
365		.en = 0x1410,
366		.set_sta = 0x146c,
367		.clr_sta = 0x1470,
368		.setclr_bit = 1,
369	},
370};
371
372static const struct scpsys_hwv_domain_data hfrpsys_hwv_domain_data_mt8196[] = {
373	[MT8196_POWER_DOMAIN_VDE0] = {
374		.name = "vde0",
375		.set = 0x0218,
376		.clr = 0x021C,
377		.done = 0x141C,
378		.en = 0x1410,
379		.set_sta = 0x146C,
380		.clr_sta = 0x1470,
381		.setclr_bit = 7,
382	},
383	[MT8196_POWER_DOMAIN_VDE1] = {
384		.name = "vde1",
385		.set = 0x0218,
386		.clr = 0x021C,
387		.done = 0x141C,
388		.en = 0x1410,
389		.set_sta = 0x146C,
390		.clr_sta = 0x1470,
391		.setclr_bit = 8,
392	},
393	[MT8196_POWER_DOMAIN_VDE_VCORE0] = {
394		.name = "vde-vcore0",
395		.set = 0x0218,
396		.clr = 0x021C,
397		.done = 0x141C,
398		.en = 0x1410,
399		.set_sta = 0x146C,
400		.clr_sta = 0x1470,
401		.setclr_bit = 9,
402	},
403	[MT8196_POWER_DOMAIN_VEN0] = {
404		.name = "ven0",
405		.set = 0x0218,
406		.clr = 0x021C,
407		.done = 0x141C,
408		.en = 0x1410,
409		.set_sta = 0x146C,
410		.clr_sta = 0x1470,
411		.setclr_bit = 10,
412	},
413	[MT8196_POWER_DOMAIN_VEN1] = {
414		.name = "ven1",
415		.set = 0x0218,
416		.clr = 0x021C,
417		.done = 0x141C,
418		.en = 0x1410,
419		.set_sta = 0x146C,
420		.clr_sta = 0x1470,
421		.setclr_bit = 11,
422	},
423	[MT8196_POWER_DOMAIN_VEN2] = {
424		.name = "ven2",
425		.set = 0x0218,
426		.clr = 0x021C,
427		.done = 0x141C,
428		.en = 0x1410,
429		.set_sta = 0x146C,
430		.clr_sta = 0x1470,
431		.setclr_bit = 12,
432	},
433	[MT8196_POWER_DOMAIN_DISP_VCORE] = {
434		.name = "disp-vcore",
435		.set = 0x0218,
436		.clr = 0x021C,
437		.done = 0x141C,
438		.en = 0x1410,
439		.set_sta = 0x146C,
440		.clr_sta = 0x1470,
441		.setclr_bit = 24,
442	},
443	[MT8196_POWER_DOMAIN_DIS0_DORMANT] = {
444		.name = "dis0-dormant",
445		.set = 0x0218,
446		.clr = 0x021C,
447		.done = 0x141C,
448		.en = 0x1410,
449		.set_sta = 0x146C,
450		.clr_sta = 0x1470,
451		.setclr_bit = 25,
452	},
453	[MT8196_POWER_DOMAIN_DIS1_DORMANT] = {
454		.name = "dis1-dormant",
455		.set = 0x0218,
456		.clr = 0x021C,
457		.done = 0x141C,
458		.en = 0x1410,
459		.set_sta = 0x146C,
460		.clr_sta = 0x1470,
461		.setclr_bit = 26,
462	},
463	[MT8196_POWER_DOMAIN_OVL0_DORMANT] = {
464		.name = "ovl0-dormant",
465		.set = 0x0218,
466		.clr = 0x021C,
467		.done = 0x141C,
468		.en = 0x1410,
469		.set_sta = 0x146C,
470		.clr_sta = 0x1470,
471		.setclr_bit = 27,
472	},
473	[MT8196_POWER_DOMAIN_OVL1_DORMANT] = {
474		.name = "ovl1-dormant",
475		.set = 0x0218,
476		.clr = 0x021C,
477		.done = 0x141C,
478		.en = 0x1410,
479		.set_sta = 0x146C,
480		.clr_sta = 0x1470,
481		.setclr_bit = 28,
482	},
483	[MT8196_POWER_DOMAIN_DISP_EDPTX_DORMANT] = {
484		.name = "disp-edptx-dormant",
485		.set = 0x0218,
486		.clr = 0x021C,
487		.done = 0x141C,
488		.en = 0x1410,
489		.set_sta = 0x146C,
490		.clr_sta = 0x1470,
491		.setclr_bit = 29,
492	},
493	[MT8196_POWER_DOMAIN_DISP_DPTX_DORMANT] = {
494		.name = "disp-dptx-dormant",
495		.set = 0x0218,
496		.clr = 0x021C,
497		.done = 0x141C,
498		.en = 0x1410,
499		.set_sta = 0x146C,
500		.clr_sta = 0x1470,
501		.setclr_bit = 30,
502	},
503	[MT8196_POWER_DOMAIN_MML0_SHUTDOWN] = {
504		.name = "mml0-shutdown",
505		.set = 0x0218,
506		.clr = 0x021C,
507		.done = 0x141C,
508		.en = 0x1410,
509		.set_sta = 0x146C,
510		.clr_sta = 0x1470,
511		.setclr_bit = 31,
512	},
513	[MT8196_POWER_DOMAIN_MML1_SHUTDOWN] = {
514		.name = "mml1-shutdown",
515		.set = 0x0220,
516		.clr = 0x0224,
517		.done = 0x142C,
518		.en = 0x1420,
519		.set_sta = 0x1474,
520		.clr_sta = 0x1478,
521		.setclr_bit = 0,
522	},
523	[MT8196_POWER_DOMAIN_MM_INFRA0] = {
524		.name = "mm-infra0",
525		.set = 0x0220,
526		.clr = 0x0224,
527		.done = 0x142C,
528		.en = 0x1420,
529		.set_sta = 0x1474,
530		.clr_sta = 0x1478,
531		.setclr_bit = 1,
532	},
533	[MT8196_POWER_DOMAIN_MM_INFRA1] = {
534		.name = "mm-infra1",
535		.set = 0x0220,
536		.clr = 0x0224,
537		.done = 0x142C,
538		.en = 0x1420,
539		.set_sta = 0x1474,
540		.clr_sta = 0x1478,
541		.setclr_bit = 2,
542	},
543	[MT8196_POWER_DOMAIN_MM_INFRA_AO] = {
544		.name = "mm-infra-ao",
545		.set = 0x0220,
546		.clr = 0x0224,
547		.done = 0x142C,
548		.en = 0x1420,
549		.set_sta = 0x1474,
550		.clr_sta = 0x1478,
551		.setclr_bit = 3,
552	},
553	[MT8196_POWER_DOMAIN_CSI_BS_RX] = {
554		.name = "csi-bs-rx",
555		.set = 0x0220,
556		.clr = 0x0224,
557		.done = 0x142C,
558		.en = 0x1420,
559		.set_sta = 0x1474,
560		.clr_sta = 0x1478,
561		.setclr_bit = 5,
562	},
563	[MT8196_POWER_DOMAIN_CSI_LS_RX] = {
564		.name = "csi-ls-rx",
565		.set = 0x0220,
566		.clr = 0x0224,
567		.done = 0x142C,
568		.en = 0x1420,
569		.set_sta = 0x1474,
570		.clr_sta = 0x1478,
571		.setclr_bit = 6,
572	},
573	[MT8196_POWER_DOMAIN_DSI_PHY0] = {
574		.name = "dsi-phy0",
575		.set = 0x0220,
576		.clr = 0x0224,
577		.done = 0x142C,
578		.en = 0x1420,
579		.set_sta = 0x1474,
580		.clr_sta = 0x1478,
581		.setclr_bit = 7,
582	},
583	[MT8196_POWER_DOMAIN_DSI_PHY1] = {
584		.name = "dsi-phy1",
585		.set = 0x0220,
586		.clr = 0x0224,
587		.done = 0x142C,
588		.en = 0x1420,
589		.set_sta = 0x1474,
590		.clr_sta = 0x1478,
591		.setclr_bit = 8,
592	},
593	[MT8196_POWER_DOMAIN_DSI_PHY2] = {
594		.name = "dsi-phy2",
595		.set = 0x0220,
596		.clr = 0x0224,
597		.done = 0x142C,
598		.en = 0x1420,
599		.set_sta = 0x1474,
600		.clr_sta = 0x1478,
601		.setclr_bit = 9,
602	},
603};
604
605static const struct scpsys_soc_data mt8196_scpsys_data = {
606	.domains_data = scpsys_domain_data_mt8196,
607	.num_domains = ARRAY_SIZE(scpsys_domain_data_mt8196),
608	.bus_prot_blocks = scpsys_bus_prot_blocks_mt8196,
609	.num_bus_prot_blocks = ARRAY_SIZE(scpsys_bus_prot_blocks_mt8196),
610	.type = SCPSYS_MTCMOS_TYPE_DIRECT_CTL,
611};
612
613static const struct scpsys_soc_data mt8196_scpsys_hwv_data = {
614	.hwv_domains_data = scpsys_hwv_domain_data_mt8196,
615	.num_hwv_domains = ARRAY_SIZE(scpsys_hwv_domain_data_mt8196),
616	.type = SCPSYS_MTCMOS_TYPE_HW_VOTER,
617};
618
619static const struct scpsys_soc_data mt8196_hfrpsys_hwv_data = {
620	.hwv_domains_data = hfrpsys_hwv_domain_data_mt8196,
621	.num_hwv_domains = ARRAY_SIZE(hfrpsys_hwv_domain_data_mt8196),
622	.type = SCPSYS_MTCMOS_TYPE_HW_VOTER,
623};
624
625#endif /* __SOC_MEDIATEK_MT8196_PM_DOMAINS_H */
~/ Read-only file preview.