xref: /linux/drivers/platform/x86/intel/pmc/nvl.c (revision f31c00c377ccf07c85442712f7c940a855cb3371)
1*41354f4cSXi Pardee // SPDX-License-Identifier: GPL-2.0
2*41354f4cSXi Pardee /*
3*41354f4cSXi Pardee  * This file contains platform specific structure definitions
4*41354f4cSXi Pardee  * and init function used by Nova Lake PCH.
5*41354f4cSXi Pardee  *
6*41354f4cSXi Pardee  * Copyright (c) 2026, Intel Corporation.
7*41354f4cSXi Pardee  */
8*41354f4cSXi Pardee 
9*41354f4cSXi Pardee #include <linux/bits.h>
10*41354f4cSXi Pardee #include <linux/pci.h>
11*41354f4cSXi Pardee 
12*41354f4cSXi Pardee #include "core.h"
13*41354f4cSXi Pardee 
14*41354f4cSXi Pardee /* PMC SSRAM PMT Telemetry GUIDS */
15*41354f4cSXi Pardee #define PCDH_LPM_REQ_GUID 0x01093101
16*41354f4cSXi Pardee #define PCHS_LPM_REQ_GUID 0x01092101
17*41354f4cSXi Pardee #define PCDS_LPM_REQ_GUID 0x01091102
18*41354f4cSXi Pardee 
19*41354f4cSXi Pardee /*
20*41354f4cSXi Pardee  * Die Mapping to Product.
21*41354f4cSXi Pardee  * Product PCDDie PCHDie
22*41354f4cSXi Pardee  * NVL-H   PCD-H  None
23*41354f4cSXi Pardee  * NVL-S   PCD-S  PCH-S
24*41354f4cSXi Pardee  */
25*41354f4cSXi Pardee 
26*41354f4cSXi Pardee static const struct pmc_bit_map nvl_pcdh_pfear_map[] = {
27*41354f4cSXi Pardee 	{"PMC_PGD0",                 BIT(0)},
28*41354f4cSXi Pardee 	{"FUSE_OSSE_PGD0",           BIT(1)},
29*41354f4cSXi Pardee 	{"SPI_PGD0",                 BIT(2)},
30*41354f4cSXi Pardee 	{"XHCI_PGD0",                BIT(3)},
31*41354f4cSXi Pardee 	{"SPA_PGD0",                 BIT(4)},
32*41354f4cSXi Pardee 	{"SPB_PGD0",                 BIT(5)},
33*41354f4cSXi Pardee 	{"MPFPW2_PGD0",              BIT(6)},
34*41354f4cSXi Pardee 	{"GBE_PGD0",                 BIT(7)},
35*41354f4cSXi Pardee 
36*41354f4cSXi Pardee 	{"SBR16B20_PGD0",            BIT(0)},
37*41354f4cSXi Pardee 	{"DBG_SBR_PGD0",             BIT(1)},
38*41354f4cSXi Pardee 	{"SBR16B7_PGD0",             BIT(2)},
39*41354f4cSXi Pardee 	{"STRC_PGD0",                BIT(3)},
40*41354f4cSXi Pardee 	{"SBR16B8_PGD0",             BIT(4)},
41*41354f4cSXi Pardee 	{"D2D_DISP_PGD1",            BIT(5)},
42*41354f4cSXi Pardee 	{"LPSS_PGD0",                BIT(6)},
43*41354f4cSXi Pardee 	{"LPC_PGD0",                 BIT(7)},
44*41354f4cSXi Pardee 
45*41354f4cSXi Pardee 	{"SMB_PGD0",                 BIT(0)},
46*41354f4cSXi Pardee 	{"ISH_PGD0",                 BIT(1)},
47*41354f4cSXi Pardee 	{"SBR16B2_PGD0",             BIT(2)},
48*41354f4cSXi Pardee 	{"NPK_PGD0",                 BIT(3)},
49*41354f4cSXi Pardee 	{"D2D_NOC_PGD1",             BIT(4)},
50*41354f4cSXi Pardee 	{"DBG_SBR16B_PGD0",          BIT(5)},
51*41354f4cSXi Pardee 	{"FUSE_PGD0",                BIT(6)},
52*41354f4cSXi Pardee 	{"SBR16B0_PGD0",             BIT(7)},
53*41354f4cSXi Pardee 
54*41354f4cSXi Pardee 	{"P2SB0_PGD0",               BIT(0)},
55*41354f4cSXi Pardee 	{"OTG_PGD0",                 BIT(1)},
56*41354f4cSXi Pardee 	{"EXI_PGD0",                 BIT(2)},
57*41354f4cSXi Pardee 	{"CSE_PGD0",                 BIT(3)},
58*41354f4cSXi Pardee 	{"CSME_KVM_PGD0",            BIT(4)},
59*41354f4cSXi Pardee 	{"CSME_PMT_PGD0",            BIT(5)},
60*41354f4cSXi Pardee 	{"CSME_CLINK_PGD0",          BIT(6)},
61*41354f4cSXi Pardee 	{"SBR16B21_PGD0",            BIT(7)},
62*41354f4cSXi Pardee 
63*41354f4cSXi Pardee 	{"CSME_USBR_PGD0",           BIT(0)},
64*41354f4cSXi Pardee 	{"SBR16B22_PGD0",            BIT(1)},
65*41354f4cSXi Pardee 	{"CSME_SMT1_PGD0",           BIT(2)},
66*41354f4cSXi Pardee 	{"MPFPW1_PGD0",              BIT(3)},
67*41354f4cSXi Pardee 	{"CSME_SMS2_PGD0",           BIT(4)},
68*41354f4cSXi Pardee 	{"CSME_SMS_PGD0",            BIT(5)},
69*41354f4cSXi Pardee 	{"CSME_RTC_PGD0",            BIT(6)},
70*41354f4cSXi Pardee 	{"CSMEPSF_PGD0",             BIT(7)},
71*41354f4cSXi Pardee 
72*41354f4cSXi Pardee 	{"D2D_NOC_PGD0",             BIT(0)},
73*41354f4cSXi Pardee 	{"ESE_PGD0",                 BIT(1)},
74*41354f4cSXi Pardee 	{"SBR16B6_PGD0",             BIT(2)},
75*41354f4cSXi Pardee 	{"P2SB1_PGD0",               BIT(3)},
76*41354f4cSXi Pardee 	{"SBR16B3_PGD0",             BIT(4)},
77*41354f4cSXi Pardee 	{"OSSE_SMT1_PGD0",           BIT(5)},
78*41354f4cSXi Pardee 	{"D2D_DISP_PGD0",            BIT(6)},
79*41354f4cSXi Pardee 	{"SNPS_USB2_A_PGD0",         BIT(7)},
80*41354f4cSXi Pardee 
81*41354f4cSXi Pardee 	{"U3FPW1_PGD0",              BIT(0)},
82*41354f4cSXi Pardee 	{"FIA_X_PGD0",               BIT(1)},
83*41354f4cSXi Pardee 	{"PSF4_PGD0",                BIT(2)},
84*41354f4cSXi Pardee 	{"CNVI_PGD0",                BIT(3)},
85*41354f4cSXi Pardee 	{"UFSX2_PGD0",               BIT(4)},
86*41354f4cSXi Pardee 	{"ENDBG_PGD0",               BIT(5)},
87*41354f4cSXi Pardee 	{"DBC_PGD0",                 BIT(6)},
88*41354f4cSXi Pardee 	{"FIA_PG_PGD0",              BIT(7)},
89*41354f4cSXi Pardee 
90*41354f4cSXi Pardee 	{"D2D_IPU_PGD0",             BIT(0)},
91*41354f4cSXi Pardee 	{"NPK_PGD1",                 BIT(1)},
92*41354f4cSXi Pardee 	{"FIACPCB_X_PGD0",           BIT(2)},
93*41354f4cSXi Pardee 	{"SBR8B4_PGD0",              BIT(3)},
94*41354f4cSXi Pardee 	{"DBG_PSF_PGD0",             BIT(4)},
95*41354f4cSXi Pardee 	{"PSF6_PGD0",                BIT(5)},
96*41354f4cSXi Pardee 	{"UFSPW1_PGD0",              BIT(6)},
97*41354f4cSXi Pardee 	{"FIA_U_PGD0",               BIT(7)},
98*41354f4cSXi Pardee 
99*41354f4cSXi Pardee 	{"PSF8_PGD0",                BIT(0)},
100*41354f4cSXi Pardee 	{"SBR16B9_PGD0",             BIT(1)},
101*41354f4cSXi Pardee 	{"PSF0_PGD0",                BIT(2)},
102*41354f4cSXi Pardee 	{"FIACPCB_U_PGD0",           BIT(3)},
103*41354f4cSXi Pardee 	{"TAM_PGD0",                 BIT(4)},
104*41354f4cSXi Pardee 	{"D2D_NOC_PGD2",             BIT(5)},
105*41354f4cSXi Pardee 	{"SBR8B2_PGD0",              BIT(6)},
106*41354f4cSXi Pardee 	{"THC0_PGD0",                BIT(7)},
107*41354f4cSXi Pardee 
108*41354f4cSXi Pardee 	{"THC1_PGD0",                BIT(0)},
109*41354f4cSXi Pardee 	{"PMC_PGD1",                 BIT(1)},
110*41354f4cSXi Pardee 	{"DISP_PGA1_PGD0",           BIT(2)},
111*41354f4cSXi Pardee 	{"TCSS_PGD0",                BIT(3)},
112*41354f4cSXi Pardee 	{"DISP_PGA_PGD0",            BIT(4)},
113*41354f4cSXi Pardee 	{"SBR16B1_PGD0",             BIT(5)},
114*41354f4cSXi Pardee 	{"SBRG_PGD0",                BIT(6)},
115*41354f4cSXi Pardee 	{"PSF5_PGD0",                BIT(7)},
116*41354f4cSXi Pardee 
117*41354f4cSXi Pardee 	{"SBR8B3_PGD0",              BIT(0)},
118*41354f4cSXi Pardee 	{"ACE_PGD0",                 BIT(1)},
119*41354f4cSXi Pardee 	{"ACE_PGD1",                 BIT(2)},
120*41354f4cSXi Pardee 	{"ACE_PGD2",                 BIT(3)},
121*41354f4cSXi Pardee 	{"ACE_PGD3",                 BIT(4)},
122*41354f4cSXi Pardee 	{"ACE_PGD4",                 BIT(5)},
123*41354f4cSXi Pardee 	{"ACE_PGD5",                 BIT(6)},
124*41354f4cSXi Pardee 	{"ACE_PGD6",                 BIT(7)},
125*41354f4cSXi Pardee 
126*41354f4cSXi Pardee 	{"ACE_PGD7",                 BIT(0)},
127*41354f4cSXi Pardee 	{"ACE_PGD8",                 BIT(1)},
128*41354f4cSXi Pardee 	{"ACE_PGD9",                 BIT(2)},
129*41354f4cSXi Pardee 	{"ACE_PGD10",                BIT(3)},
130*41354f4cSXi Pardee 	{"FIACPCB_PG_PGD0",          BIT(4)},
131*41354f4cSXi Pardee 	{"SNPS_USB2_B_PGD0",         BIT(5)},
132*41354f4cSXi Pardee 	{"OSSE_PGD0",                BIT(6)},
133*41354f4cSXi Pardee 	{"SBR8B0_PGD0",              BIT(7)},
134*41354f4cSXi Pardee 
135*41354f4cSXi Pardee 	{"SBR16B4_PGD0",             BIT(0)},
136*41354f4cSXi Pardee 	{"CSME_PTIO_PGD0",           BIT(1)},
137*41354f4cSXi Pardee 	{}
138*41354f4cSXi Pardee };
139*41354f4cSXi Pardee 
140*41354f4cSXi Pardee static const struct pmc_bit_map *ext_nvl_pcdh_pfear_map[] = {
141*41354f4cSXi Pardee 	nvl_pcdh_pfear_map,
142*41354f4cSXi Pardee 	NULL
143*41354f4cSXi Pardee };
144*41354f4cSXi Pardee 
145*41354f4cSXi Pardee static const struct pmc_bit_map nvl_pcdh_clocksource_status_map[] = {
146*41354f4cSXi Pardee 	{"AON2_OFF_STS",                 BIT(0),	1},
147*41354f4cSXi Pardee 	{"AON3_OFF_STS",                 BIT(1),	0},
148*41354f4cSXi Pardee 	{"AON4_OFF_STS",                 BIT(2),	1},
149*41354f4cSXi Pardee 	{"AON5_OFF_STS",                 BIT(3),	1},
150*41354f4cSXi Pardee 	{"AON1_OFF_STS",                 BIT(4),	0},
151*41354f4cSXi Pardee 	{"XTAL_LVM_OFF_STS",             BIT(5),	0},
152*41354f4cSXi Pardee 	{"MPFPW1_0_PLL_OFF_STS",         BIT(6),	1},
153*41354f4cSXi Pardee 	{"D2D_PLL_OFF_STS",              BIT(7),	1},
154*41354f4cSXi Pardee 	{"USB3_PLL_OFF_STS",             BIT(8),	1},
155*41354f4cSXi Pardee 	{"AON3_SPL_OFF_STS",             BIT(9),	1},
156*41354f4cSXi Pardee 	{"MPFPW2_0_PLL_OFF_STS",         BIT(12),	1},
157*41354f4cSXi Pardee 	{"XTAL_AGGR_OFF_STS",            BIT(17),	1},
158*41354f4cSXi Pardee 	{"USB2_PLL_OFF_STS",             BIT(18),	0},
159*41354f4cSXi Pardee 	{"DDI2_PLL_OFF_STS",             BIT(19),	1},
160*41354f4cSXi Pardee 	{"SE_TCSS_PLL_OFF_STS",          BIT(20),	1},
161*41354f4cSXi Pardee 	{"DDI_PLL_OFF_STS",              BIT(21),	1},
162*41354f4cSXi Pardee 	{"FILTER_PLL_OFF_STS",           BIT(22),	1},
163*41354f4cSXi Pardee 	{"ACE_PLL_OFF_STS",              BIT(24),	0},
164*41354f4cSXi Pardee 	{"FABRIC_PLL_OFF_STS",           BIT(25),	1},
165*41354f4cSXi Pardee 	{"SOC_PLL_OFF_STS",              BIT(26),	1},
166*41354f4cSXi Pardee 	{"REF_PLL_OFF_STS",              BIT(28),	1},
167*41354f4cSXi Pardee 	{"IMG_PLL_OFF_STS",              BIT(29),	1},
168*41354f4cSXi Pardee 	{"GENLOCK_FILTER_PLL_OFF_STS",   BIT(30),	1},
169*41354f4cSXi Pardee 	{"RTC_PLL_OFF_STS",              BIT(31),	0},
170*41354f4cSXi Pardee 	{}
171*41354f4cSXi Pardee };
172*41354f4cSXi Pardee 
173*41354f4cSXi Pardee static const struct pmc_bit_map nvl_pcdh_power_gating_status_0_map[] = {
174*41354f4cSXi Pardee 	{"PMC_PGD0_PG_STS",              BIT(0),	0},
175*41354f4cSXi Pardee 	{"FUSE_OSSE_PGD0_PG_STS",	 BIT(1),	0},
176*41354f4cSXi Pardee 	{"ESPISPI_PGD0_PG_STS",          BIT(2),	0},
177*41354f4cSXi Pardee 	{"XHCI_PGD0_PG_STS",             BIT(3),	1},
178*41354f4cSXi Pardee 	{"SPA_PGD0_PG_STS",              BIT(4),	1},
179*41354f4cSXi Pardee 	{"SPB_PGD0_PG_STS",              BIT(5),	1},
180*41354f4cSXi Pardee 	{"MPFPW2_PGD0_PG_STS",           BIT(6),	0},
181*41354f4cSXi Pardee 	{"GBE_PGD0_PG_STS",              BIT(7),	1},
182*41354f4cSXi Pardee 	{"SBR16B20_PGD0_PG_STS",         BIT(8),	0},
183*41354f4cSXi Pardee 	{"DBG_PGD0_PG_STS",              BIT(9),	0},
184*41354f4cSXi Pardee 	{"SBR16B7_PGD0_PG_STS",          BIT(10),	0},
185*41354f4cSXi Pardee 	{"STRC_PGD0_PG_STS",             BIT(11),	0},
186*41354f4cSXi Pardee 	{"SBR16B8_PGD0_PG_STS",          BIT(12),	0},
187*41354f4cSXi Pardee 	{"D2D_DISP_PGD1_PG_STS",         BIT(13),	1},
188*41354f4cSXi Pardee 	{"LPSS_PGD0_PG_STS",             BIT(14),	1},
189*41354f4cSXi Pardee 	{"LPC_PGD0_PG_STS",              BIT(15),	0},
190*41354f4cSXi Pardee 	{"SMB_PGD0_PG_STS",              BIT(16),	0},
191*41354f4cSXi Pardee 	{"ISH_PGD0_PG_STS",              BIT(17),	0},
192*41354f4cSXi Pardee 	{"SBR16B2_PGD0_PG_STS",          BIT(18),	0},
193*41354f4cSXi Pardee 	{"NPK_PGD0_PG_STS",              BIT(19),	0},
194*41354f4cSXi Pardee 	{"D2D_NOC_PGD1_PG_STS",          BIT(20),	1},
195*41354f4cSXi Pardee 	{"DBG_SBR16B_PGD0_PG_STS",       BIT(21),	0},
196*41354f4cSXi Pardee 	{"FUSE_PGD0_PG_STS",             BIT(22),	0},
197*41354f4cSXi Pardee 	{"SBR16B0_PGD0_PG_STS",          BIT(23),	0},
198*41354f4cSXi Pardee 	{"P2SB0_PGD0_PG_STS",            BIT(24),	1},
199*41354f4cSXi Pardee 	{"XDCI_PGD0_PG_STS",             BIT(25),	1},
200*41354f4cSXi Pardee 	{"EXI_PGD0_PG_STS",              BIT(26),	0},
201*41354f4cSXi Pardee 	{"CSE_PGD0_PG_STS",              BIT(27),	1},
202*41354f4cSXi Pardee 	{"KVMCC_PGD0_PG_STS",            BIT(28),	1},
203*41354f4cSXi Pardee 	{"PMT_PGD0_PG_STS",              BIT(29),	1},
204*41354f4cSXi Pardee 	{"CLINK_PGD0_PG_STS",            BIT(30),	1},
205*41354f4cSXi Pardee 	{"SBR16B21_PGD0_PG_STS",         BIT(31),	0},
206*41354f4cSXi Pardee 	{}
207*41354f4cSXi Pardee };
208*41354f4cSXi Pardee 
209*41354f4cSXi Pardee static const struct pmc_bit_map nvl_pcdh_power_gating_status_1_map[] = {
210*41354f4cSXi Pardee 	{"USBR0_PGD0_PG_STS",            BIT(0),	1},
211*41354f4cSXi Pardee 	{"SBR16B22_PGD0_PG_STS",         BIT(1),	0},
212*41354f4cSXi Pardee 	{"SMT1_PGD0_PG_STS",             BIT(2),	1},
213*41354f4cSXi Pardee 	{"MPFPW1_PGD0_PG_STS",           BIT(3),	0},
214*41354f4cSXi Pardee 	{"SMS2_PGD0_PG_STS",             BIT(4),	1},
215*41354f4cSXi Pardee 	{"SMS1_PGD0_PG_STS",             BIT(5),	1},
216*41354f4cSXi Pardee 	{"CSMERTC_PGD0_PG_STS",          BIT(6),	0},
217*41354f4cSXi Pardee 	{"CSMEPSF_PGD0_PG_STS",          BIT(7),	0},
218*41354f4cSXi Pardee 	{"D2D_NOC_PGD0_PG_STS",          BIT(8),	0},
219*41354f4cSXi Pardee 	{"ESE_PGD0_PG_STS",              BIT(9),	1},
220*41354f4cSXi Pardee 	{"SBR16B6_PGD0_PG_STS",          BIT(10),	0},
221*41354f4cSXi Pardee 	{"P2SB1_PGD0_PG_STS",            BIT(11),	1},
222*41354f4cSXi Pardee 	{"SBR16B3_PGD0_PG_STS",          BIT(12),	0},
223*41354f4cSXi Pardee 	{"OSSE_SMT1_PGD0_PG_STS",        BIT(13),	1},
224*41354f4cSXi Pardee 	{"D2D_DISP_PGD0_PG_STS",         BIT(14),	1},
225*41354f4cSXi Pardee 	{"SNPA_USB2_A_PGD0_PG_STS",      BIT(15),	0},
226*41354f4cSXi Pardee 	{"U3FPW1_PGD0_PG_STS",           BIT(16),	0},
227*41354f4cSXi Pardee 	{"FIA_X_PGD0_PG_STS",            BIT(17),	0},
228*41354f4cSXi Pardee 	{"PSF4_PGD0_PG_STS",             BIT(18),	0},
229*41354f4cSXi Pardee 	{"CNVI_PGD0_PG_STS",             BIT(19),	0},
230*41354f4cSXi Pardee 	{"UFSX2_PGD0_PG_STS",            BIT(20),	1},
231*41354f4cSXi Pardee 	{"ENDBG_PGD0_PG_STS",            BIT(21),	0},
232*41354f4cSXi Pardee 	{"DBC_PGD0_PG_STS",              BIT(22),	0},
233*41354f4cSXi Pardee 	{"FIA_PG_PGD0_PG_STS",           BIT(23),	0},
234*41354f4cSXi Pardee 	{"D2D_IPU_PGD0_PG_STS",          BIT(24),	1},
235*41354f4cSXi Pardee 	{"NPK_PGD1_PG_STS",              BIT(25),	0},
236*41354f4cSXi Pardee 	{"FIACPCB_X_PGD0_PG_STS",        BIT(26),	0},
237*41354f4cSXi Pardee 	{"SBR8B4_PGD0_PG_STS",           BIT(27),	0},
238*41354f4cSXi Pardee 	{"DBG_PSF_PGD0_PG_STS",          BIT(28),	0},
239*41354f4cSXi Pardee 	{"PSF6_PGD0_PG_STS",             BIT(29),	0},
240*41354f4cSXi Pardee 	{"UFSPW1_PGD0_PG_STS",           BIT(30),	0},
241*41354f4cSXi Pardee 	{"FIA_U_PGD0_PG_STS",            BIT(31),	0},
242*41354f4cSXi Pardee 	{}
243*41354f4cSXi Pardee };
244*41354f4cSXi Pardee 
245*41354f4cSXi Pardee static const struct pmc_bit_map nvl_pcdh_power_gating_status_2_map[] = {
246*41354f4cSXi Pardee 	{"PSF8_PGD0_PG_STS",             BIT(0),	0},
247*41354f4cSXi Pardee 	{"SBR16B9_PGD0_PG_STS",          BIT(1),	0},
248*41354f4cSXi Pardee 	{"PSF0_PGD0_PG_STS",             BIT(2),	0},
249*41354f4cSXi Pardee 	{"FIACPCB_U_PGD0_PG_STS",        BIT(3),	0},
250*41354f4cSXi Pardee 	{"TAM_PGD0_PG_STS",              BIT(4),	1},
251*41354f4cSXi Pardee 	{"D2D_NOC_PGD2_PG_STS",          BIT(5),	1},
252*41354f4cSXi Pardee 	{"SBR8B2_PGD0_PG_STS",           BIT(6),	0},
253*41354f4cSXi Pardee 	{"THC0_PGD0_PG_STS",             BIT(7),	1},
254*41354f4cSXi Pardee 	{"THC1_PGD0_PG_STS",             BIT(8),	1},
255*41354f4cSXi Pardee 	{"PMC_PGD1_PG_STS",              BIT(9),	0},
256*41354f4cSXi Pardee 	{"DISP_PGA1_PGD0_PG_STS",        BIT(10),	0},
257*41354f4cSXi Pardee 	{"TCSS_PGD0_PG_STS",             BIT(11),	0},
258*41354f4cSXi Pardee 	{"DISP_PGA_PGD0_PG_STS",         BIT(12),	0},
259*41354f4cSXi Pardee 	{"SBR16B1_PGD0_PG_STS",          BIT(13),	0},
260*41354f4cSXi Pardee 	{"SBRG_PGD0_PG_STS",             BIT(14),	0},
261*41354f4cSXi Pardee 	{"PSF5_PGD0_PG_STS",             BIT(15),	0},
262*41354f4cSXi Pardee 	{"SBR8B3_PGD0_PG_STS",           BIT(16),	0},
263*41354f4cSXi Pardee 	{"ACE_PGD0_PG_STS",              BIT(17),	0},
264*41354f4cSXi Pardee 	{"ACE_PGD1_PG_STS",              BIT(18),	0},
265*41354f4cSXi Pardee 	{"ACE_PGD2_PG_STS",              BIT(19),	0},
266*41354f4cSXi Pardee 	{"ACE_PGD3_PG_STS",              BIT(20),	0},
267*41354f4cSXi Pardee 	{"ACE_PGD4_PG_STS",              BIT(21),	0},
268*41354f4cSXi Pardee 	{"ACE_PGD5_PG_STS",              BIT(22),	0},
269*41354f4cSXi Pardee 	{"ACE_PGD6_PG_STS",              BIT(23),	0},
270*41354f4cSXi Pardee 	{"ACE_PGD7_PG_STS",              BIT(24),	0},
271*41354f4cSXi Pardee 	{"ACE_PGD8_PG_STS",              BIT(25),	0},
272*41354f4cSXi Pardee 	{"ACE_PGD9_PG_STS",              BIT(26),	0},
273*41354f4cSXi Pardee 	{"ACE_PGD10_PG_STS",             BIT(27),	0},
274*41354f4cSXi Pardee 	{"FIACPCB_PG_PGD0_PG_STS",       BIT(28),	0},
275*41354f4cSXi Pardee 	{"SNPS_USB2_B_PGD0_PG_STS",      BIT(29),	0},
276*41354f4cSXi Pardee 	{"OSSE_PGD0_PG_STS",             BIT(30),	1},
277*41354f4cSXi Pardee 	{"SBR8B0_PGD0_PG_STS",           BIT(31),	0},
278*41354f4cSXi Pardee 	{}
279*41354f4cSXi Pardee };
280*41354f4cSXi Pardee 
281*41354f4cSXi Pardee static const struct pmc_bit_map nvl_pcdh_power_gating_status_3_map[] = {
282*41354f4cSXi Pardee 	{"SBR16B4_PGD0_PG_STS",          BIT(0),	0},
283*41354f4cSXi Pardee 	{"PTIO_PGD0_PG_STS",             BIT(1),	1},
284*41354f4cSXi Pardee 	{}
285*41354f4cSXi Pardee };
286*41354f4cSXi Pardee 
287*41354f4cSXi Pardee static const struct pmc_bit_map nvl_pcdh_d3_status_0_map[] = {
288*41354f4cSXi Pardee 	{"LPSS_D3_STS",                  BIT(3),	1},
289*41354f4cSXi Pardee 	{"XDCI_D3_STS",                  BIT(4),	1},
290*41354f4cSXi Pardee 	{"XHCI_D3_STS",                  BIT(5),	1},
291*41354f4cSXi Pardee 	{"OSSE_D3_STS",                  BIT(6),	0},
292*41354f4cSXi Pardee 	{"SPA_D3_STS",                   BIT(12),	0},
293*41354f4cSXi Pardee 	{"SPB_D3_STS",                   BIT(13),	0},
294*41354f4cSXi Pardee 	{"ESPISPI_D3_STS",               BIT(18),	0},
295*41354f4cSXi Pardee 	{"PSTH_D3_STS",                  BIT(21),	0},
296*41354f4cSXi Pardee 	{}
297*41354f4cSXi Pardee };
298*41354f4cSXi Pardee 
299*41354f4cSXi Pardee static const struct pmc_bit_map nvl_pcdh_d3_status_1_map[] = {
300*41354f4cSXi Pardee 	{"OSSE_SMT1_D3_STS",             BIT(0),	0},
301*41354f4cSXi Pardee 	{"GBE_D3_STS",                   BIT(19),	0},
302*41354f4cSXi Pardee 	{"ITSS_D3_STS",                  BIT(23),	0},
303*41354f4cSXi Pardee 	{"CNVI_D3_STS",                  BIT(27),	0},
304*41354f4cSXi Pardee 	{"UFSX2_D3_STS",                 BIT(28),	0},
305*41354f4cSXi Pardee 	{"ESE_D3_STS",                   BIT(29),	0},
306*41354f4cSXi Pardee 	{}
307*41354f4cSXi Pardee };
308*41354f4cSXi Pardee 
309*41354f4cSXi Pardee static const struct pmc_bit_map nvl_pcdh_d3_status_2_map[] = {
310*41354f4cSXi Pardee 	{"CSMERTC_D3_STS",               BIT(1),	0},
311*41354f4cSXi Pardee 	{"CSE_D3_STS",                   BIT(4),	0},
312*41354f4cSXi Pardee 	{"KVMCC_D3_STS",                 BIT(5),	0},
313*41354f4cSXi Pardee 	{"USBR0_D3_STS",                 BIT(6),	0},
314*41354f4cSXi Pardee 	{"ISH_D3_STS",                   BIT(7),	0},
315*41354f4cSXi Pardee 	{"SMT1_D3_STS",                  BIT(8),	0},
316*41354f4cSXi Pardee 	{"SMT2_D3_STS",                  BIT(9),	0},
317*41354f4cSXi Pardee 	{"SMT3_D3_STS",                  BIT(10),	0},
318*41354f4cSXi Pardee 	{"OSSE_SMT2_D3_STS",             BIT(11),	0},
319*41354f4cSXi Pardee 	{"CLINK_D3_STS",                 BIT(14),	0},
320*41354f4cSXi Pardee 	{"PTIO_D3_STS",                  BIT(16),	0},
321*41354f4cSXi Pardee 	{"PMT_D3_STS",                   BIT(17),	0},
322*41354f4cSXi Pardee 	{"SMS1_D3_STS",                  BIT(18),	0},
323*41354f4cSXi Pardee 	{"SMS2_D3_STS",                  BIT(19),	0},
324*41354f4cSXi Pardee 	{}
325*41354f4cSXi Pardee };
326*41354f4cSXi Pardee 
327*41354f4cSXi Pardee static const struct pmc_bit_map nvl_pcdh_d3_status_3_map[] = {
328*41354f4cSXi Pardee 	{"THC0_D3_STS",                  BIT(14),	1},
329*41354f4cSXi Pardee 	{"THC1_D3_STS",                  BIT(15),	1},
330*41354f4cSXi Pardee 	{"OSSE_SMT3_D3_STS",             BIT(16),	0},
331*41354f4cSXi Pardee 	{"ACE_D3_STS",                   BIT(23),	0},
332*41354f4cSXi Pardee 	{}
333*41354f4cSXi Pardee };
334*41354f4cSXi Pardee 
335*41354f4cSXi Pardee static const struct pmc_bit_map nvl_pcdh_vnn_req_status_0_map[] = {
336*41354f4cSXi Pardee 	{"LPSS_VNN_REQ_STS",             BIT(3),	1},
337*41354f4cSXi Pardee 	{"OSSE_VNN_REQ_STS",             BIT(6),	1},
338*41354f4cSXi Pardee 	{"ESPISPI_VNN_REQ_STS",          BIT(18),	1},
339*41354f4cSXi Pardee 	{}
340*41354f4cSXi Pardee };
341*41354f4cSXi Pardee 
342*41354f4cSXi Pardee static const struct pmc_bit_map nvl_pcdh_vnn_req_status_1_map[] = {
343*41354f4cSXi Pardee 	{"OSSE_SMT1_VNN_REQ_STS",        BIT(0),	1},
344*41354f4cSXi Pardee 	{"NPK_VNN_REQ_STS",              BIT(4),	1},
345*41354f4cSXi Pardee 	{"DFXAGG_VNN_REQ_STS",           BIT(8),	0},
346*41354f4cSXi Pardee 	{"EXI_VNN_REQ_STS",              BIT(9),	1},
347*41354f4cSXi Pardee 	{"P2D_VNN_REQ_STS",              BIT(18),	1},
348*41354f4cSXi Pardee 	{"GBE_VNN_REQ_STS",              BIT(19),	1},
349*41354f4cSXi Pardee 	{"SMB_VNN_REQ_STS",              BIT(25),	1},
350*41354f4cSXi Pardee 	{"LPC_VNN_REQ_STS",              BIT(26),	0},
351*41354f4cSXi Pardee 	{"ESE_VNN_REQ_STS",              BIT(29),	1},
352*41354f4cSXi Pardee 	{}
353*41354f4cSXi Pardee };
354*41354f4cSXi Pardee 
355*41354f4cSXi Pardee static const struct pmc_bit_map nvl_pcdh_vnn_req_status_2_map[] = {
356*41354f4cSXi Pardee 	{"CSMERTC_VNN_REQ_STS",          BIT(1),	1},
357*41354f4cSXi Pardee 	{"CSE_VNN_REQ_STS",              BIT(4),	1},
358*41354f4cSXi Pardee 	{"ISH_VNN_REQ_STS",              BIT(7),	1},
359*41354f4cSXi Pardee 	{"SMT1_VNN_REQ_STS",             BIT(8),	1},
360*41354f4cSXi Pardee 	{"CLINK_VNN_REQ_STS",            BIT(14),	1},
361*41354f4cSXi Pardee 	{"SMS1_VNN_REQ_STS",             BIT(18),	1},
362*41354f4cSXi Pardee 	{"SMS2_VNN_REQ_STS",             BIT(19),	1},
363*41354f4cSXi Pardee 	{"GPIOCOM4_VNN_REQ_STS",         BIT(20),	1},
364*41354f4cSXi Pardee 	{"GPIOCOM3_VNN_REQ_STS",         BIT(21),	1},
365*41354f4cSXi Pardee 	{"DISP_SHIM_VNN_REQ_STS",        BIT(22),	1},
366*41354f4cSXi Pardee 	{"GPIOCOM1_VNN_REQ_STS",         BIT(23),	1},
367*41354f4cSXi Pardee 	{"GPIOCOM0_VNN_REQ_STS",         BIT(24),	1},
368*41354f4cSXi Pardee 	{}
369*41354f4cSXi Pardee };
370*41354f4cSXi Pardee 
371*41354f4cSXi Pardee static const struct pmc_bit_map nvl_pcdh_vnn_req_status_3_map[] = {
372*41354f4cSXi Pardee 	{"DTS0_VNN_REQ_STS",             BIT(7),	0},
373*41354f4cSXi Pardee 	{"GPIOCOM5_VNN_REQ_STS",         BIT(11),	1},
374*41354f4cSXi Pardee 	{}
375*41354f4cSXi Pardee };
376*41354f4cSXi Pardee 
377*41354f4cSXi Pardee static const struct pmc_bit_map nvl_pcdh_vnn_misc_status_map[] = {
378*41354f4cSXi Pardee 	{"CPU_C10_REQ_STS",              BIT(0),	0},
379*41354f4cSXi Pardee 	{"TS_OFF_REQ_STS",               BIT(1),	0},
380*41354f4cSXi Pardee 	{"PNDE_MET_REQ_STS",             BIT(2),	1},
381*41354f4cSXi Pardee 	{"PG5_PMA0_REQ_STS",             BIT(3),	1},
382*41354f4cSXi Pardee 	{"FW_THROTTLE_ALLOWED_REQ_STS",  BIT(4),	0},
383*41354f4cSXi Pardee 	{"VNN_SOC_REQ_STS",              BIT(6),	1},
384*41354f4cSXi Pardee 	{"ISH_VNNAON_REQ_STS",           BIT(7),	0},
385*41354f4cSXi Pardee 	{"D2D_NOC_CFI_QACTIVE_REQ_STS",	 BIT(8),	1},
386*41354f4cSXi Pardee 	{"D2D_NOC_GPSB_QACTIVE_REQ_STS", BIT(9),	1},
387*41354f4cSXi Pardee 	{"D2D_IPU_QACTIVE_REQ_STS",      BIT(10),	1},
388*41354f4cSXi Pardee 	{"PLT_GREATER_REQ_STS",          BIT(11),	1},
389*41354f4cSXi Pardee 	{"ALL_SBR_IDLE_REQ_STS",         BIT(12),	0},
390*41354f4cSXi Pardee 	{"PMC_IDLE_FB_OCP_REQ_STS",      BIT(13),	0},
391*41354f4cSXi Pardee 	{"PM_SYNC_STATES_REQ_STS",       BIT(14),	0},
392*41354f4cSXi Pardee 	{"EA_REQ_STS",                   BIT(15),	0},
393*41354f4cSXi Pardee 	{"MPHY_CORE_OFF_REQ_STS",        BIT(16),	0},
394*41354f4cSXi Pardee 	{"BRK_EV_EN_REQ_STS",            BIT(17),	0},
395*41354f4cSXi Pardee 	{"AUTO_DEMO_EN_REQ_STS",         BIT(18),	0},
396*41354f4cSXi Pardee 	{"ITSS_CLK_SRC_REQ_STS",         BIT(19),	1},
397*41354f4cSXi Pardee 	{"ARC_IDLE_REQ_STS",             BIT(21),	0},
398*41354f4cSXi Pardee 	{"PG5_PMA1_REQ_STS",             BIT(22),	1},
399*41354f4cSXi Pardee 	{"FIA_DEEP_PM_REQ_STS",          BIT(23),	0},
400*41354f4cSXi Pardee 	{"XDCI_ATTACHED_REQ_STS",        BIT(24),	1},
401*41354f4cSXi Pardee 	{"ARC_INTERRUPT_WAKE_REQ_STS",   BIT(25),	0},
402*41354f4cSXi Pardee 	{"D2D_DISP_DDI_QACTIVE_REQ_STS", BIT(26),	1},
403*41354f4cSXi Pardee 	{"PRE_WAKE0_REQ_STS",            BIT(27),	1},
404*41354f4cSXi Pardee 	{"PRE_WAKE1_REQ_STS",            BIT(28),	1},
405*41354f4cSXi Pardee 	{"PRE_WAKE2_REQ_STS",            BIT(29),	1},
406*41354f4cSXi Pardee 	{"PG5_PMA2_GVNN",                BIT(30),	1},
407*41354f4cSXi Pardee 	{"D2D_DISP_EDP_QACTIVE_REQ_STS", BIT(31),	1},
408*41354f4cSXi Pardee 	{}
409*41354f4cSXi Pardee };
410*41354f4cSXi Pardee 
411*41354f4cSXi Pardee static const struct pmc_bit_map nvl_pcdh_rsc_status_map[] = {
412*41354f4cSXi Pardee 	{"CORE",		0,		1},
413*41354f4cSXi Pardee 	{"Memory",		0,		1},
414*41354f4cSXi Pardee 	{"PRIM_D2D",		0,		1},
415*41354f4cSXi Pardee 	{"PSF0",		0,		1},
416*41354f4cSXi Pardee 	{"PSF4",		0,		1},
417*41354f4cSXi Pardee 	{"PSF6",		0,		1},
418*41354f4cSXi Pardee 	{"PSF8",		0,		1},
419*41354f4cSXi Pardee 	{"SB",			0,		1},
420*41354f4cSXi Pardee 	{}
421*41354f4cSXi Pardee };
422*41354f4cSXi Pardee 
423*41354f4cSXi Pardee static const struct pmc_bit_map *nvl_pcdh_lpm_maps[] = {
424*41354f4cSXi Pardee 	nvl_pcdh_clocksource_status_map,
425*41354f4cSXi Pardee 	nvl_pcdh_power_gating_status_0_map,
426*41354f4cSXi Pardee 	nvl_pcdh_power_gating_status_1_map,
427*41354f4cSXi Pardee 	nvl_pcdh_power_gating_status_2_map,
428*41354f4cSXi Pardee 	nvl_pcdh_power_gating_status_3_map,
429*41354f4cSXi Pardee 	nvl_pcdh_d3_status_0_map,
430*41354f4cSXi Pardee 	nvl_pcdh_d3_status_1_map,
431*41354f4cSXi Pardee 	nvl_pcdh_d3_status_2_map,
432*41354f4cSXi Pardee 	nvl_pcdh_d3_status_3_map,
433*41354f4cSXi Pardee 	nvl_pcdh_vnn_req_status_0_map,
434*41354f4cSXi Pardee 	nvl_pcdh_vnn_req_status_1_map,
435*41354f4cSXi Pardee 	nvl_pcdh_vnn_req_status_2_map,
436*41354f4cSXi Pardee 	nvl_pcdh_vnn_req_status_3_map,
437*41354f4cSXi Pardee 	nvl_pcdh_vnn_misc_status_map,
438*41354f4cSXi Pardee 	ptl_pcdp_signal_status_map,
439*41354f4cSXi Pardee 	NULL
440*41354f4cSXi Pardee };
441*41354f4cSXi Pardee 
442*41354f4cSXi Pardee static const struct pmc_bit_map *nvl_pcdh_blk_maps[] = {
443*41354f4cSXi Pardee 	nvl_pcdh_power_gating_status_0_map,
444*41354f4cSXi Pardee 	nvl_pcdh_power_gating_status_1_map,
445*41354f4cSXi Pardee 	nvl_pcdh_power_gating_status_2_map,
446*41354f4cSXi Pardee 	nvl_pcdh_power_gating_status_3_map,
447*41354f4cSXi Pardee 	nvl_pcdh_rsc_status_map,
448*41354f4cSXi Pardee 	nvl_pcdh_vnn_req_status_0_map,
449*41354f4cSXi Pardee 	nvl_pcdh_vnn_req_status_1_map,
450*41354f4cSXi Pardee 	nvl_pcdh_vnn_req_status_2_map,
451*41354f4cSXi Pardee 	nvl_pcdh_vnn_req_status_3_map,
452*41354f4cSXi Pardee 	nvl_pcdh_d3_status_0_map,
453*41354f4cSXi Pardee 	nvl_pcdh_d3_status_1_map,
454*41354f4cSXi Pardee 	nvl_pcdh_d3_status_2_map,
455*41354f4cSXi Pardee 	nvl_pcdh_d3_status_3_map,
456*41354f4cSXi Pardee 	nvl_pcdh_clocksource_status_map,
457*41354f4cSXi Pardee 	nvl_pcdh_vnn_misc_status_map,
458*41354f4cSXi Pardee 	ptl_pcdp_signal_status_map,
459*41354f4cSXi Pardee 	NULL
460*41354f4cSXi Pardee };
461*41354f4cSXi Pardee 
462*41354f4cSXi Pardee static const struct pmc_bit_map nvl_pcds_pfear_map[] = {
463*41354f4cSXi Pardee 	{"PMC_PGD0",                 BIT(0)},
464*41354f4cSXi Pardee 	{"FUSE_OSSE_PGD0",           BIT(1)},
465*41354f4cSXi Pardee 	{"SPI_PGD0",                 BIT(2)},
466*41354f4cSXi Pardee 	{"XHCI_PGD0",                BIT(3)},
467*41354f4cSXi Pardee 	{"SPA_PGD0",                 BIT(4)},
468*41354f4cSXi Pardee 	{"SPB_PGD0",                 BIT(5)},
469*41354f4cSXi Pardee 	{"RSVD6",                    BIT(6)},
470*41354f4cSXi Pardee 	{"GBE_PGD0",                 BIT(7)},
471*41354f4cSXi Pardee 
472*41354f4cSXi Pardee 	{"RSVD8",                    BIT(0)},
473*41354f4cSXi Pardee 	{"RSVD9",                    BIT(1)},
474*41354f4cSXi Pardee 	{"SBR16B7_PGD0",             BIT(2)},
475*41354f4cSXi Pardee 	{"SBR16B21_PGD0",            BIT(3)},
476*41354f4cSXi Pardee 	{"RSVD12",                   BIT(4)},
477*41354f4cSXi Pardee 	{"D2D_DISP_PGD1",            BIT(5)},
478*41354f4cSXi Pardee 	{"LPSS_PGD0",                BIT(6)},
479*41354f4cSXi Pardee 	{"LPC_PGD0",                 BIT(7)},
480*41354f4cSXi Pardee 
481*41354f4cSXi Pardee 	{"SMB_PGD0",                 BIT(0)},
482*41354f4cSXi Pardee 	{"ISH_PGD0",                 BIT(1)},
483*41354f4cSXi Pardee 	{"SBR16B1_PGD0",             BIT(2)},
484*41354f4cSXi Pardee 	{"NPK_PGD0",                 BIT(3)},
485*41354f4cSXi Pardee 	{"D2D_NOC_PGD1",             BIT(4)},
486*41354f4cSXi Pardee 	{"DBG_SBR16B_PGD0",          BIT(5)},
487*41354f4cSXi Pardee 	{"FUSE_PGD0",                BIT(6)},
488*41354f4cSXi Pardee 	{"RSVD23",                   BIT(7)},
489*41354f4cSXi Pardee 
490*41354f4cSXi Pardee 	{"P2SB0_PGD0",               BIT(0)},
491*41354f4cSXi Pardee 	{"OTG_PGD0",                 BIT(1)},
492*41354f4cSXi Pardee 	{"EXI_PGD0",                 BIT(2)},
493*41354f4cSXi Pardee 	{"CSE_PGD0",                 BIT(3)},
494*41354f4cSXi Pardee 	{"CSME_KVM_PGD0",            BIT(4)},
495*41354f4cSXi Pardee 	{"CSME_PMT_PGD0",            BIT(5)},
496*41354f4cSXi Pardee 	{"CSME_CLINK_PGD0",          BIT(6)},
497*41354f4cSXi Pardee 	{"CSME_PTIO_PGD0",           BIT(7)},
498*41354f4cSXi Pardee 
499*41354f4cSXi Pardee 	{"CSME_USBR_PGD0",           BIT(0)},
500*41354f4cSXi Pardee 	{"SBR16B22_PGD0",            BIT(1)},
501*41354f4cSXi Pardee 	{"CSME_SMT1_PGD0",           BIT(2)},
502*41354f4cSXi Pardee 	{"P2SB1_PGD0",               BIT(3)},
503*41354f4cSXi Pardee 	{"CSME_SMS2_PGD0",           BIT(4)},
504*41354f4cSXi Pardee 	{"CSME_SMS_PGD0",            BIT(5)},
505*41354f4cSXi Pardee 	{"CSME_RTC_PGD0",            BIT(6)},
506*41354f4cSXi Pardee 	{"CSMEPSF_PGD0",             BIT(7)},
507*41354f4cSXi Pardee 
508*41354f4cSXi Pardee 	{"D2D_NOC_PGD0",             BIT(0)},
509*41354f4cSXi Pardee 	{"RSVD41",                   BIT(1)},
510*41354f4cSXi Pardee 	{"RSVD42",                   BIT(2)},
511*41354f4cSXi Pardee 	{"RSVD43",                   BIT(3)},
512*41354f4cSXi Pardee 	{"SBR16B2_PGD0",             BIT(4)},
513*41354f4cSXi Pardee 	{"OSSE_SMT1_PGD0",           BIT(5)},
514*41354f4cSXi Pardee 	{"D2D_DISP_PGD0",            BIT(6)},
515*41354f4cSXi Pardee 	{"RSVD47_PGD0",              BIT(7)},
516*41354f4cSXi Pardee 
517*41354f4cSXi Pardee 	{"RSVD48",                   BIT(0)},
518*41354f4cSXi Pardee 	{"DBG_PSF_PGD0",             BIT(1)},
519*41354f4cSXi Pardee 	{"RSVD50",                   BIT(2)},
520*41354f4cSXi Pardee 	{"CNVI_PGD0",                BIT(3)},
521*41354f4cSXi Pardee 	{"UFSX2_PGD0",               BIT(4)},
522*41354f4cSXi Pardee 	{"ENDBG_PGD0",               BIT(5)},
523*41354f4cSXi Pardee 	{"DBC_PGD0",                 BIT(6)},
524*41354f4cSXi Pardee 	{"SBR16B4_PGD0",             BIT(7)},
525*41354f4cSXi Pardee 
526*41354f4cSXi Pardee 	{"RSVD56",                   BIT(0)},
527*41354f4cSXi Pardee 	{"NPK_PGD1",                 BIT(1)},
528*41354f4cSXi Pardee 	{"RSVD58",                   BIT(2)},
529*41354f4cSXi Pardee 	{"SBR16B20_PGD0",            BIT(3)},
530*41354f4cSXi Pardee 	{"RSVD60",                   BIT(4)},
531*41354f4cSXi Pardee 	{"SBR8B20_PGD0",             BIT(5)},
532*41354f4cSXi Pardee 	{"RSVD62",                   BIT(6)},
533*41354f4cSXi Pardee 	{"FIA_U_PGD0",               BIT(7)},
534*41354f4cSXi Pardee 
535*41354f4cSXi Pardee 	{"PSF8_PGD0",                BIT(0)},
536*41354f4cSXi Pardee 	{"RSVD65",                   BIT(1)},
537*41354f4cSXi Pardee 	{"RSVD66",                   BIT(2)},
538*41354f4cSXi Pardee 	{"FIACPCB_U_PGD0",           BIT(3)},
539*41354f4cSXi Pardee 	{"TAM_PGD0",                 BIT(4)},
540*41354f4cSXi Pardee 	{"D2D_NOC_PGD2",             BIT(5)},
541*41354f4cSXi Pardee 	{"SBR8B2_PGD0",              BIT(6)},
542*41354f4cSXi Pardee 	{"THC0_PGD0",                BIT(7)},
543*41354f4cSXi Pardee 
544*41354f4cSXi Pardee 	{"THC1_PGD0",                BIT(0)},
545*41354f4cSXi Pardee 	{"PMC_PGD1",                 BIT(1)},
546*41354f4cSXi Pardee 	{"SBR16B3_PGD0",             BIT(2)},
547*41354f4cSXi Pardee 	{"TCSS_PGD0",                BIT(3)},
548*41354f4cSXi Pardee 	{"DISP_PGA_PGD0",            BIT(4)},
549*41354f4cSXi Pardee 	{"RSVD77",                   BIT(5)},
550*41354f4cSXi Pardee 	{"RSVD78",                   BIT(6)},
551*41354f4cSXi Pardee 	{"RSVD79",                   BIT(7)},
552*41354f4cSXi Pardee 
553*41354f4cSXi Pardee 	{"SBRG_PGD0",                BIT(0)},
554*41354f4cSXi Pardee 	{"RSVD81",                   BIT(1)},
555*41354f4cSXi Pardee 	{"SBR16B0_PGD0",             BIT(2)},
556*41354f4cSXi Pardee 	{"SBR8B0_PGD0",              BIT(3)},
557*41354f4cSXi Pardee 	{"PSF7_PGD0",                BIT(4)},
558*41354f4cSXi Pardee 	{"RSVD85",                   BIT(5)},
559*41354f4cSXi Pardee 	{"RSVD86",                   BIT(6)},
560*41354f4cSXi Pardee 	{"RSVD87",                   BIT(7)},
561*41354f4cSXi Pardee 
562*41354f4cSXi Pardee 	{"SBR16B6_PGD0",             BIT(0)},
563*41354f4cSXi Pardee 	{"PSD0_PGD0",                BIT(1)},
564*41354f4cSXi Pardee 	{"STRC_PGD0",                BIT(2)},
565*41354f4cSXi Pardee 	{"RSVD91",                   BIT(3)},
566*41354f4cSXi Pardee 	{"DBG_SBR_PGD0",             BIT(4)},
567*41354f4cSXi Pardee 	{"RSVD93",                   BIT(5)},
568*41354f4cSXi Pardee 	{"OSSE_PGD0",                BIT(6)},
569*41354f4cSXi Pardee 	{"DISP_PGA1_PGD0",           BIT(7)},
570*41354f4cSXi Pardee 	{}
571*41354f4cSXi Pardee };
572*41354f4cSXi Pardee 
573*41354f4cSXi Pardee static const struct pmc_bit_map *ext_nvl_pcds_pfear_map[] = {
574*41354f4cSXi Pardee 	nvl_pcds_pfear_map,
575*41354f4cSXi Pardee 	NULL
576*41354f4cSXi Pardee };
577*41354f4cSXi Pardee 
578*41354f4cSXi Pardee static const struct pmc_bit_map nvl_pcds_ltr_show_map[] = {
579*41354f4cSXi Pardee 	{"SOUTHPORT_A",		CNP_PMC_LTR_SPA},
580*41354f4cSXi Pardee 	{"SOUTHPORT_B",		CNP_PMC_LTR_SPB},
581*41354f4cSXi Pardee 	{"SATA",		CNP_PMC_LTR_SATA},
582*41354f4cSXi Pardee 	{"GIGABIT_ETHERNET",	CNP_PMC_LTR_GBE},
583*41354f4cSXi Pardee 	{"XHCI",		CNP_PMC_LTR_XHCI},
584*41354f4cSXi Pardee 	{"SOUTHPORT_F",		ADL_PMC_LTR_SPF},
585*41354f4cSXi Pardee 	{"ME",			CNP_PMC_LTR_ME},
586*41354f4cSXi Pardee 	{"SATA1",		CNP_PMC_LTR_EVA},
587*41354f4cSXi Pardee 	{"SOUTHPORT_C",		CNP_PMC_LTR_SPC},
588*41354f4cSXi Pardee 	{"HD_AUDIO",		CNP_PMC_LTR_AZ},
589*41354f4cSXi Pardee 	{"CNV",			CNP_PMC_LTR_CNV},
590*41354f4cSXi Pardee 	{"LPSS",		CNP_PMC_LTR_LPSS},
591*41354f4cSXi Pardee 	{"SOUTHPORT_D",		CNP_PMC_LTR_SPD},
592*41354f4cSXi Pardee 	{"SOUTHPORT_E",		CNP_PMC_LTR_SPE},
593*41354f4cSXi Pardee 	{"SATA2",		PTL_PMC_LTR_SATA2},
594*41354f4cSXi Pardee 	{"ESPI",		CNP_PMC_LTR_ESPI},
595*41354f4cSXi Pardee 	{"SCC",			CNP_PMC_LTR_SCC},
596*41354f4cSXi Pardee 	{"ISH",			CNP_PMC_LTR_ISH},
597*41354f4cSXi Pardee 	{"UFSX2",		CNP_PMC_LTR_UFSX2},
598*41354f4cSXi Pardee 	{"EMMC",		CNP_PMC_LTR_EMMC},
599*41354f4cSXi Pardee 	{"WIGIG",		ICL_PMC_LTR_WIGIG},
600*41354f4cSXi Pardee 	{"THC0",		TGL_PMC_LTR_THC0},
601*41354f4cSXi Pardee 	{"THC1",		TGL_PMC_LTR_THC1},
602*41354f4cSXi Pardee 	{"SOUTHPORT_G",		MTL_PMC_LTR_SPG},
603*41354f4cSXi Pardee 	{"RSVD",		NVL_PCDS_PMC_LTR_RESERVED},
604*41354f4cSXi Pardee 	{"IOE_PMC",		MTL_PMC_LTR_IOE_PMC},
605*41354f4cSXi Pardee 	{"DMI3",		ARL_PMC_LTR_DMI3},
606*41354f4cSXi Pardee 	{"OSSE",		LNL_PMC_LTR_OSSE},
607*41354f4cSXi Pardee 
608*41354f4cSXi Pardee 	/* Below two cannot be used for LTR_IGNORE */
609*41354f4cSXi Pardee 	{"CURRENT_PLATFORM",	PTL_PMC_LTR_CUR_PLT},
610*41354f4cSXi Pardee 	{"AGGREGATED_SYSTEM",	PTL_PMC_LTR_CUR_ASLT},
611*41354f4cSXi Pardee 	{}
612*41354f4cSXi Pardee };
613*41354f4cSXi Pardee 
614*41354f4cSXi Pardee static const struct pmc_bit_map nvl_pcds_clocksource_status_map[] = {
615*41354f4cSXi Pardee 	{"AON2_OFF_STS",                 BIT(0),	1},
616*41354f4cSXi Pardee 	{"AON3_OFF_STS",                 BIT(1),	0},
617*41354f4cSXi Pardee 	{"AON4_OFF_STS",                 BIT(2),	1},
618*41354f4cSXi Pardee 	{"AON5_OFF_STS",                 BIT(3),	1},
619*41354f4cSXi Pardee 	{"AON1_OFF_STS",                 BIT(4),	0},
620*41354f4cSXi Pardee 	{"XTAL_LVM_OFF_STS",             BIT(5),	0},
621*41354f4cSXi Pardee 	{"D2D_OFF_STS",                  BIT(8),	1},
622*41354f4cSXi Pardee 	{"AON3_SPL_OFF_STS",             BIT(9),	1},
623*41354f4cSXi Pardee 	{"XTAL_AGGR_OFF_STS",            BIT(17),	1},
624*41354f4cSXi Pardee 	{"BCLK_EXT_INJ_OFF_STS",         BIT(18),	1},
625*41354f4cSXi Pardee 	{"DDI2_PLL_OFF_STS",             BIT(19),	1},
626*41354f4cSXi Pardee 	{"SE_TCSS_PLL_OFF_STS",          BIT(20),	1},
627*41354f4cSXi Pardee 	{"DDI_PLL_OFF_STS",              BIT(21),	1},
628*41354f4cSXi Pardee 	{"FILTER_PLL_OFF_STS",           BIT(22),	1},
629*41354f4cSXi Pardee 	{"PHY_OC_EXT_INJ_OFF_STS",       BIT(23),	1},
630*41354f4cSXi Pardee 	{"ACE_PLL_OFF_STS",              BIT(24),	0},
631*41354f4cSXi Pardee 	{"FABRIC_PLL_OFF_STS",           BIT(25),	1},
632*41354f4cSXi Pardee 	{"SOC_PLL_OFF_STS",              BIT(26),	1},
633*41354f4cSXi Pardee 	{"REF_PLL_OFF_STS",              BIT(28),	1},
634*41354f4cSXi Pardee 	{"GENLOCK_FILTER_PLL_OFF_STS",   BIT(30),	1},
635*41354f4cSXi Pardee 	{"RTC_PLL_OFF_STS",              BIT(31),	0},
636*41354f4cSXi Pardee 	{}
637*41354f4cSXi Pardee };
638*41354f4cSXi Pardee 
639*41354f4cSXi Pardee static const struct pmc_bit_map nvl_pcds_power_gating_status_0_map[] = {
640*41354f4cSXi Pardee 	{"PMC_PGD0_PG_STS",              BIT(0),	0},
641*41354f4cSXi Pardee 	{"FUSE_OSSE_PGD0_PG_STS",	 BIT(1),	0},
642*41354f4cSXi Pardee 	{"ESPISPI_PGD0_PG_STS",          BIT(2),	0},
643*41354f4cSXi Pardee 	{"XHCI_PGD0_PG_STS",             BIT(3),	0},
644*41354f4cSXi Pardee 	{"SPA_PGD0_PG_STS",              BIT(4),	0},
645*41354f4cSXi Pardee 	{"SPB_PGD0_PG_STS",              BIT(5),	0},
646*41354f4cSXi Pardee 	{"RSVD_6",                       BIT(6),	0},
647*41354f4cSXi Pardee 	{"GBE_PGD0_PG_STS",              BIT(7),	0},
648*41354f4cSXi Pardee 	{"RSVD_8",                       BIT(8),	0},
649*41354f4cSXi Pardee 	{"RSVD_9",                       BIT(9),	0},
650*41354f4cSXi Pardee 	{"SBR16B7_PGD0_PG_STS",          BIT(10),	0},
651*41354f4cSXi Pardee 	{"SBR16B21_PGD0_PG_STS",         BIT(11),	0},
652*41354f4cSXi Pardee 	{"RSVD_12",                      BIT(12),	0},
653*41354f4cSXi Pardee 	{"D2D_DISP_PGD1_PG_STS",         BIT(13),	1},
654*41354f4cSXi Pardee 	{"LPSS_PGD0_PG_STS",             BIT(14),	0},
655*41354f4cSXi Pardee 	{"LPC_PGD0_PG_STS",              BIT(15),	0},
656*41354f4cSXi Pardee 	{"SMB_PGD0_PG_STS",              BIT(16),	0},
657*41354f4cSXi Pardee 	{"ISH_PGD0_PG_STS",              BIT(17),	0},
658*41354f4cSXi Pardee 	{"SBR16B1_PGD0_PG_STS",          BIT(18),	0},
659*41354f4cSXi Pardee 	{"NPK_PGD0_PG_STS",              BIT(19),	0},
660*41354f4cSXi Pardee 	{"D2D_NOC_PGD1_PG_STS",          BIT(20),	1},
661*41354f4cSXi Pardee 	{"DBG_SBR16B_PGD0_PG_STS",       BIT(21),	0},
662*41354f4cSXi Pardee 	{"FUSE_PGD0_PG_STS",             BIT(22),	0},
663*41354f4cSXi Pardee 	{"RSVD_23",                      BIT(23),	0},
664*41354f4cSXi Pardee 	{"P2SB0_PGD0_PG_STS",            BIT(24),	1},
665*41354f4cSXi Pardee 	{"XDCI_PGD0_PG_STS",             BIT(25),	0},
666*41354f4cSXi Pardee 	{"EXI_PGD0_PG_STS",              BIT(26),	0},
667*41354f4cSXi Pardee 	{"CSE_PGD0_PG_STS",              BIT(27),	1},
668*41354f4cSXi Pardee 	{"KVMCC_PGD0_PG_STS",            BIT(28),	0},
669*41354f4cSXi Pardee 	{"PMT_PGD0_PG_STS",              BIT(29),	0},
670*41354f4cSXi Pardee 	{"CLINK_PGD0_PG_STS",            BIT(30),	0},
671*41354f4cSXi Pardee 	{"PTIO_PGD0_PG_STS",             BIT(31),	0},
672*41354f4cSXi Pardee 	{}
673*41354f4cSXi Pardee };
674*41354f4cSXi Pardee 
675*41354f4cSXi Pardee static const struct pmc_bit_map nvl_pcds_power_gating_status_1_map[] = {
676*41354f4cSXi Pardee 	{"USBR0_PGD0_PG_STS",            BIT(0),	0},
677*41354f4cSXi Pardee 	{"SBR16B22_PGD0_PG_STS",         BIT(1),	0},
678*41354f4cSXi Pardee 	{"SMT1_PGD0_PG_STS",             BIT(2),	0},
679*41354f4cSXi Pardee 	{"P2SB1_PGD0_PG_STS",            BIT(3),	1},
680*41354f4cSXi Pardee 	{"SMS2_PGD0_PG_STS",             BIT(4),	0},
681*41354f4cSXi Pardee 	{"SMS1_PGD0_PG_STS",             BIT(5),	0},
682*41354f4cSXi Pardee 	{"CSMERTC_PGD0_PG_STS",          BIT(6),	0},
683*41354f4cSXi Pardee 	{"CSMEPSF_PGD0_PG_STS",          BIT(7),	0},
684*41354f4cSXi Pardee 	{"D2D_NOC_PGD0_PG_STS",          BIT(8),	0},
685*41354f4cSXi Pardee 	{"RSVD_9",                       BIT(9),	0},
686*41354f4cSXi Pardee 	{"RSVD_10",                      BIT(10),	0},
687*41354f4cSXi Pardee 	{"RSVD_11",                      BIT(11),	0},
688*41354f4cSXi Pardee 	{"SBR16B2_PGD0_PG_STS",          BIT(12),	0},
689*41354f4cSXi Pardee 	{"OSSE_SMT1_PGD0_PG_STS",        BIT(13),	1},
690*41354f4cSXi Pardee 	{"D2D_DISP_PGD0_PG_STS",         BIT(14),	1},
691*41354f4cSXi Pardee 	{"RSVD_15",                      BIT(15),	0},
692*41354f4cSXi Pardee 	{"RSVD_16",                      BIT(16),	0},
693*41354f4cSXi Pardee 	{"DBG_PSF_PGD0_PG_STS",          BIT(17),	0},
694*41354f4cSXi Pardee 	{"RSVD_18",                      BIT(18),	0},
695*41354f4cSXi Pardee 	{"CNVI_PGD0_PG_STS",             BIT(19),	0},
696*41354f4cSXi Pardee 	{"UFSX2_PGD0_PG_STS",            BIT(20),	0},
697*41354f4cSXi Pardee 	{"ENDBG_PGD0_PG_STS",            BIT(21),	0},
698*41354f4cSXi Pardee 	{"DBC_PGD0_PG_STS",              BIT(22),	0},
699*41354f4cSXi Pardee 	{"SBR16B4_PGD0_PG_STS",          BIT(23),	0},
700*41354f4cSXi Pardee 	{"RSVD_24",                      BIT(24),	0},
701*41354f4cSXi Pardee 	{"NPK_PGD1_PG_STS",              BIT(25),	0},
702*41354f4cSXi Pardee 	{"RSVD_26",                      BIT(26),	0},
703*41354f4cSXi Pardee 	{"SBR16B20_PGD0_PG_STS",         BIT(27),	0},
704*41354f4cSXi Pardee 	{"RSVD_28",                      BIT(28),	0},
705*41354f4cSXi Pardee 	{"SBR8B20_PGD0_PG_STS",          BIT(29),	0},
706*41354f4cSXi Pardee 	{"RSVD_30",                      BIT(30),	0},
707*41354f4cSXi Pardee 	{"FIA_U_PGD0_PG_STS",            BIT(31),	0},
708*41354f4cSXi Pardee 	{}
709*41354f4cSXi Pardee };
710*41354f4cSXi Pardee 
711*41354f4cSXi Pardee static const struct pmc_bit_map nvl_pcds_power_gating_status_2_map[] = {
712*41354f4cSXi Pardee 	{"PSF8_PGD0_PG_STS",             BIT(0),	0},
713*41354f4cSXi Pardee 	{"RSVD_1",                       BIT(1),	0},
714*41354f4cSXi Pardee 	{"RSVD_2",                       BIT(2),	0},
715*41354f4cSXi Pardee 	{"FIACPCB_U_PGD0_PG_STS",        BIT(3),	0},
716*41354f4cSXi Pardee 	{"TAM_PGD0_PG_STS",              BIT(4),	1},
717*41354f4cSXi Pardee 	{"D2D_NOC_PGD2_PG_STS",          BIT(5),	1},
718*41354f4cSXi Pardee 	{"SBR8B2_PGD0_PG_STS",           BIT(6),	0},
719*41354f4cSXi Pardee 	{"THC0_PGD0_PG_STS",             BIT(7),	0},
720*41354f4cSXi Pardee 	{"THC1_PGD0_PG_STS",             BIT(8),	0},
721*41354f4cSXi Pardee 	{"PMC_PGD1_PG_STS",              BIT(9),	0},
722*41354f4cSXi Pardee 	{"SBR16B3_PGD0_PG_STS",          BIT(10),	0},
723*41354f4cSXi Pardee 	{"TCSS_PGD0_PG_STS",             BIT(11),	0},
724*41354f4cSXi Pardee 	{"DISP_PGA_PGD0_PG_STS",         BIT(12),	0},
725*41354f4cSXi Pardee 	{"RSVD_13",                      BIT(13),	0},
726*41354f4cSXi Pardee 	{"RSVD_14",                      BIT(14),	0},
727*41354f4cSXi Pardee 	{"RSVD_15",                      BIT(15),	0},
728*41354f4cSXi Pardee 	{"SBRG_PGD0_PG_STS",             BIT(16),	0},
729*41354f4cSXi Pardee 	{"RSVD_17",                      BIT(17),	0},
730*41354f4cSXi Pardee 	{"SBR16B0_PGD0_PG_STS",          BIT(18),	0},
731*41354f4cSXi Pardee 	{"SBR8B0_PGD0_PG_STS",           BIT(19),	0},
732*41354f4cSXi Pardee 	{"PSF7_PGD0_PG_STS",             BIT(20),	0},
733*41354f4cSXi Pardee 	{"RSVD_21",                      BIT(21),	0},
734*41354f4cSXi Pardee 	{"RSVD_22",                      BIT(22),	0},
735*41354f4cSXi Pardee 	{"RSVD_23",                      BIT(23),	0},
736*41354f4cSXi Pardee 	{"SBR16B6_PGD0_PG_STS",          BIT(24),	0},
737*41354f4cSXi Pardee 	{"PSF0_PGD0_PG_STS",             BIT(25),	0},
738*41354f4cSXi Pardee 	{"STRC_PGD0_PG_STS",             BIT(26),	0},
739*41354f4cSXi Pardee 	{"RSVD_27",                      BIT(27),	0},
740*41354f4cSXi Pardee 	{"DBG_SBR_PGD0_PG_STS",          BIT(28),	0},
741*41354f4cSXi Pardee 	{"RSVD_29",                      BIT(29),	0},
742*41354f4cSXi Pardee 	{"OSSE_PGD0_PG_STS",             BIT(30),	1},
743*41354f4cSXi Pardee 	{"DISP_PGA1_PGD0_PG_STS",        BIT(31),	0},
744*41354f4cSXi Pardee 	{}
745*41354f4cSXi Pardee };
746*41354f4cSXi Pardee 
747*41354f4cSXi Pardee static const struct pmc_bit_map nvl_pcds_d3_status_0_map[] = {
748*41354f4cSXi Pardee 	{"LPSS_D3_STS",                  BIT(3),	1},
749*41354f4cSXi Pardee 	{"XDCI_D3_STS",                  BIT(4),	1},
750*41354f4cSXi Pardee 	{"XHCI_D3_STS",                  BIT(5),	1},
751*41354f4cSXi Pardee 	{"SPA_D3_STS",                   BIT(12),	0},
752*41354f4cSXi Pardee 	{"SPB_D3_STS",                   BIT(13),	0},
753*41354f4cSXi Pardee 	{"ESPISPI_D3_STS",               BIT(18),	0},
754*41354f4cSXi Pardee 	{"PSTH_D3_STS",                  BIT(21),	0},
755*41354f4cSXi Pardee 	{}
756*41354f4cSXi Pardee };
757*41354f4cSXi Pardee 
758*41354f4cSXi Pardee static const struct pmc_bit_map nvl_pcds_d3_status_1_map[] = {
759*41354f4cSXi Pardee 	{"OSSE_D3_STS",                  BIT(14),	0},
760*41354f4cSXi Pardee 	{"GBE_D3_STS",                   BIT(19),	0},
761*41354f4cSXi Pardee 	{"ITSS_D3_STS",                  BIT(23),	0},
762*41354f4cSXi Pardee 	{"CNVI_D3_STS",                  BIT(27),	0},
763*41354f4cSXi Pardee 	{"UFSX2_D3_STS",                 BIT(28),	0},
764*41354f4cSXi Pardee 	{}
765*41354f4cSXi Pardee };
766*41354f4cSXi Pardee 
767*41354f4cSXi Pardee static const struct pmc_bit_map nvl_pcds_d3_status_2_map[] = {
768*41354f4cSXi Pardee 	{"CSMERTC_D3_STS",               BIT(1),	0},
769*41354f4cSXi Pardee 	{"CSE_D3_STS",                   BIT(4),	0},
770*41354f4cSXi Pardee 	{"KVMCC_D3_STS",                 BIT(5),	0},
771*41354f4cSXi Pardee 	{"USBR0_D3_STS",                 BIT(6),	0},
772*41354f4cSXi Pardee 	{"ISH_D3_STS",                   BIT(7),	0},
773*41354f4cSXi Pardee 	{"SMT1_D3_STS",                  BIT(8),	0},
774*41354f4cSXi Pardee 	{"SMT2_D3_STS",                  BIT(9),	0},
775*41354f4cSXi Pardee 	{"SMT3_D3_STS",                  BIT(10),	0},
776*41354f4cSXi Pardee 	{"OSSE_SMT1_D3_STS",             BIT(12),	0},
777*41354f4cSXi Pardee 	{"CLINK_D3_STS",                 BIT(14),	0},
778*41354f4cSXi Pardee 	{"PTIO_D3_STS",                  BIT(16),	0},
779*41354f4cSXi Pardee 	{"PMT_D3_STS",                   BIT(17),	0},
780*41354f4cSXi Pardee 	{"SMS1_D3_STS",                  BIT(18),	0},
781*41354f4cSXi Pardee 	{"SMS2_D3_STS",                  BIT(19),	0},
782*41354f4cSXi Pardee 	{}
783*41354f4cSXi Pardee };
784*41354f4cSXi Pardee 
785*41354f4cSXi Pardee static const struct pmc_bit_map nvl_pcds_d3_status_3_map[] = {
786*41354f4cSXi Pardee 	{"OSSE_SMT2_D3_STS",             BIT(0),	0},
787*41354f4cSXi Pardee 	{"THC0_D3_STS",                  BIT(14),	1},
788*41354f4cSXi Pardee 	{"THC1_D3_STS",                  BIT(15),	1},
789*41354f4cSXi Pardee 	{"OSSE_SMT3_D3_STS",             BIT(19),	0},
790*41354f4cSXi Pardee 	{}
791*41354f4cSXi Pardee };
792*41354f4cSXi Pardee 
793*41354f4cSXi Pardee static const struct pmc_bit_map nvl_pcds_vnn_req_status_0_map[] = {
794*41354f4cSXi Pardee 	{"LPSS_VNN_REQ_STS",             BIT(3),	0},
795*41354f4cSXi Pardee 	{"ESPISPI_VNN_REQ_STS",          BIT(18),	1},
796*41354f4cSXi Pardee 	{}
797*41354f4cSXi Pardee };
798*41354f4cSXi Pardee 
799*41354f4cSXi Pardee static const struct pmc_bit_map nvl_pcds_vnn_req_status_1_map[] = {
800*41354f4cSXi Pardee 	{"NPK_VNN_REQ_STS",              BIT(4),	1},
801*41354f4cSXi Pardee 	{"DFXAGG_VNN_REQ_STS",           BIT(8),	0},
802*41354f4cSXi Pardee 	{"EXI_VNN_REQ_STS",              BIT(9),	1},
803*41354f4cSXi Pardee 	{"OSSE_VNN_REQ_STS",             BIT(14),	1},
804*41354f4cSXi Pardee 	{"P2D_VNN_REQ_STS",              BIT(18),	1},
805*41354f4cSXi Pardee 	{"GBE_VNN_REQ_STS",              BIT(19),	0},
806*41354f4cSXi Pardee 	{"SMB_VNN_REQ_STS",              BIT(25),	1},
807*41354f4cSXi Pardee 	{"LPC_VNN_REQ_STS",              BIT(26),	0},
808*41354f4cSXi Pardee 	{}
809*41354f4cSXi Pardee };
810*41354f4cSXi Pardee 
811*41354f4cSXi Pardee static const struct pmc_bit_map nvl_pcds_vnn_req_status_2_map[] = {
812*41354f4cSXi Pardee 	{"CSMERTC_VNN_REQ_STS",          BIT(1),	0},
813*41354f4cSXi Pardee 	{"CSE_VNN_REQ_STS",              BIT(4),	1},
814*41354f4cSXi Pardee 	{"ISH_VNN_REQ_STS",              BIT(7),	0},
815*41354f4cSXi Pardee 	{"SMT1_VNN_REQ_STS",             BIT(8),	0},
816*41354f4cSXi Pardee 	{"OSSE_SMT1_VNN_REQ_STS",        BIT(12),	1},
817*41354f4cSXi Pardee 	{"CLINK_VNN_REQ_STS",            BIT(14),	0},
818*41354f4cSXi Pardee 	{"SMS1_VNN_REQ_STS",             BIT(18),	0},
819*41354f4cSXi Pardee 	{"SMS2_VNN_REQ_STS",             BIT(19),	0},
820*41354f4cSXi Pardee 	{"GPIOCOM4_VNN_REQ_STS",         BIT(20),	0},
821*41354f4cSXi Pardee 	{"GPIOCOM3_VNN_REQ_STS",         BIT(21),	1},
822*41354f4cSXi Pardee 	{"GPIOCOM1_VNN_REQ_STS",         BIT(23),	1},
823*41354f4cSXi Pardee 	{"GPIOCOM0_VNN_REQ_STS",         BIT(24),	1},
824*41354f4cSXi Pardee 	{}
825*41354f4cSXi Pardee };
826*41354f4cSXi Pardee 
827*41354f4cSXi Pardee static const struct pmc_bit_map nvl_pcds_vnn_req_status_3_map[] = {
828*41354f4cSXi Pardee 	{"DISP_SHIM_VNN_REQ_STS",        BIT(4),	1},
829*41354f4cSXi Pardee 	{"DTS0_VNN_REQ_STS",             BIT(7),	0},
830*41354f4cSXi Pardee 	{"GPIOCOM5_VNN_REQ_STS",         BIT(11),	0},
831*41354f4cSXi Pardee 	{}
832*41354f4cSXi Pardee };
833*41354f4cSXi Pardee 
834*41354f4cSXi Pardee static const struct pmc_bit_map nvl_pcds_vnn_misc_status_map[] = {
835*41354f4cSXi Pardee 	{"CPU_C10_REQ_STS",              BIT(0),	0},
836*41354f4cSXi Pardee 	{"TS_OFF_REQ_STS",               BIT(1),	0},
837*41354f4cSXi Pardee 	{"PNDE_MET_REQ_STS",             BIT(2),	1},
838*41354f4cSXi Pardee 	{"PG5_PMA0_REQ_STS",             BIT(3),	1},
839*41354f4cSXi Pardee 	{"FW_THROTTLE_ALLOWED_REQ_STS",  BIT(4),	0},
840*41354f4cSXi Pardee 	{"VNN_SOC_REQ_STS",              BIT(6),	1},
841*41354f4cSXi Pardee 	{"ISH_VNNAON_REQ_STS",           BIT(7),	0},
842*41354f4cSXi Pardee 	{"D2D_NOC_CFI_QACTIVE_REQ_STS",	 BIT(8),	1},
843*41354f4cSXi Pardee 	{"D2D_NOC_GPSB_QACTIVE_REQ_STS", BIT(9),	1},
844*41354f4cSXi Pardee 	{"PLT_GREATER_REQ_STS",          BIT(11),	1},
845*41354f4cSXi Pardee 	{"ALL_SBR_IDLE_REQ_STS",         BIT(12),	0},
846*41354f4cSXi Pardee 	{"PMC_IDLE_FB_OCP_REQ_STS",      BIT(13),	0},
847*41354f4cSXi Pardee 	{"PM_SYNC_STATES_REQ_STS",       BIT(14),	0},
848*41354f4cSXi Pardee 	{"EA_REQ_STS",                   BIT(15),	0},
849*41354f4cSXi Pardee 	{"MPHY_CORE_OFF_REQ_STS",        BIT(16),	0},
850*41354f4cSXi Pardee 	{"BRK_EV_EN_REQ_STS",            BIT(17),	0},
851*41354f4cSXi Pardee 	{"AUTO_DEMO_EN_REQ_STS",         BIT(18),	0},
852*41354f4cSXi Pardee 	{"ITSS_CLK_SRC_REQ_STS",         BIT(19),	1},
853*41354f4cSXi Pardee 	{"ARC_IDLE_REQ_STS",             BIT(21),	0},
854*41354f4cSXi Pardee 	{"PG5_PMA1_REQ_STS",             BIT(22),	1},
855*41354f4cSXi Pardee 	{"DG5_PMA0_REQ_STS",             BIT(23),	1},
856*41354f4cSXi Pardee 	{"ARC_INTERRUPT_WAKE_REQ_STS",   BIT(25),	0},
857*41354f4cSXi Pardee 	{"D2D_DISP_DDI_QACTIVE_REQ_STS", BIT(26),	1},
858*41354f4cSXi Pardee 	{"PRE_WAKE0_REQ_STS",            BIT(27),	1},
859*41354f4cSXi Pardee 	{"PRE_WAKE1_REQ_STS",            BIT(28),	1},
860*41354f4cSXi Pardee 	{"PRE_WAKE2_REQ_STS",            BIT(29),	1},
861*41354f4cSXi Pardee 	{"D2D_DISP_EDP_QACTIVE_REQ_STS", BIT(31),	1},
862*41354f4cSXi Pardee 	{}
863*41354f4cSXi Pardee };
864*41354f4cSXi Pardee 
865*41354f4cSXi Pardee static const struct pmc_bit_map nvl_pcds_rsc_status_map[] = {
866*41354f4cSXi Pardee 	{"CORE",		0,		1},
867*41354f4cSXi Pardee 	{"Memory",		0,		1},
868*41354f4cSXi Pardee 	{"PRIM_D2D",		0,		1},
869*41354f4cSXi Pardee 	{"PSF0",		0,		1},
870*41354f4cSXi Pardee 	{"SB",			0,		1},
871*41354f4cSXi Pardee 	{}
872*41354f4cSXi Pardee };
873*41354f4cSXi Pardee 
874*41354f4cSXi Pardee static const struct pmc_bit_map nvl_pcds_signal_status_map[] = {
875*41354f4cSXi Pardee 	{"LSX_Wake0_STS",		 BIT(0),	0},
876*41354f4cSXi Pardee 	{"LSX_Wake1_STS",		 BIT(1),	0},
877*41354f4cSXi Pardee 	{"LSX_Wake2_STS",		 BIT(2),	0},
878*41354f4cSXi Pardee 	{"LSX_Wake3_STS",		 BIT(3),	0},
879*41354f4cSXi Pardee 	{"LSX_Wake4_STS",		 BIT(4),	0},
880*41354f4cSXi Pardee 	{"LSX_Wake5_STS",		 BIT(5),	0},
881*41354f4cSXi Pardee 	{"LSX_Wake6_STS",		 BIT(6),	0},
882*41354f4cSXi Pardee 	{"LSX_Wake7_STS",		 BIT(7),	0},
883*41354f4cSXi Pardee 	{"LPSS_Wake0_STS",		 BIT(8),	1},
884*41354f4cSXi Pardee 	{"LPSS_Wake1_STS",		 BIT(9),	1},
885*41354f4cSXi Pardee 	{"Int_Timer_SS_Wake0_STS",	 BIT(10),	1},
886*41354f4cSXi Pardee 	{"Int_Timer_SS_Wake1_STS",	 BIT(11),	1},
887*41354f4cSXi Pardee 	{"Int_Timer_SS_Wake2_STS",	 BIT(12),	1},
888*41354f4cSXi Pardee 	{"Int_Timer_SS_Wake3_STS",	 BIT(13),	1},
889*41354f4cSXi Pardee 	{"Int_Timer_SS_Wake4_STS",	 BIT(14),	1},
890*41354f4cSXi Pardee 	{"Int_Timer_SS_Wake5_STS",	 BIT(15),	1},
891*41354f4cSXi Pardee 	{}
892*41354f4cSXi Pardee };
893*41354f4cSXi Pardee 
894*41354f4cSXi Pardee static const struct pmc_bit_map *nvl_pcds_lpm_maps[] = {
895*41354f4cSXi Pardee 	nvl_pcds_clocksource_status_map,
896*41354f4cSXi Pardee 	nvl_pcds_power_gating_status_0_map,
897*41354f4cSXi Pardee 	nvl_pcds_power_gating_status_1_map,
898*41354f4cSXi Pardee 	nvl_pcds_power_gating_status_2_map,
899*41354f4cSXi Pardee 	nvl_pcds_d3_status_0_map,
900*41354f4cSXi Pardee 	nvl_pcds_d3_status_1_map,
901*41354f4cSXi Pardee 	nvl_pcds_d3_status_2_map,
902*41354f4cSXi Pardee 	nvl_pcds_d3_status_3_map,
903*41354f4cSXi Pardee 	nvl_pcds_vnn_req_status_0_map,
904*41354f4cSXi Pardee 	nvl_pcds_vnn_req_status_1_map,
905*41354f4cSXi Pardee 	nvl_pcds_vnn_req_status_2_map,
906*41354f4cSXi Pardee 	nvl_pcds_vnn_req_status_3_map,
907*41354f4cSXi Pardee 	nvl_pcds_vnn_misc_status_map,
908*41354f4cSXi Pardee 	nvl_pcds_signal_status_map,
909*41354f4cSXi Pardee 	NULL
910*41354f4cSXi Pardee };
911*41354f4cSXi Pardee 
912*41354f4cSXi Pardee static const struct pmc_bit_map *nvl_pcds_blk_maps[] = {
913*41354f4cSXi Pardee 	nvl_pcds_power_gating_status_0_map,
914*41354f4cSXi Pardee 	nvl_pcds_power_gating_status_1_map,
915*41354f4cSXi Pardee 	nvl_pcds_power_gating_status_2_map,
916*41354f4cSXi Pardee 	nvl_pcds_rsc_status_map,
917*41354f4cSXi Pardee 	nvl_pcds_vnn_req_status_0_map,
918*41354f4cSXi Pardee 	nvl_pcds_vnn_req_status_1_map,
919*41354f4cSXi Pardee 	nvl_pcds_vnn_req_status_2_map,
920*41354f4cSXi Pardee 	nvl_pcds_vnn_req_status_3_map,
921*41354f4cSXi Pardee 	nvl_pcds_d3_status_0_map,
922*41354f4cSXi Pardee 	nvl_pcds_d3_status_1_map,
923*41354f4cSXi Pardee 	nvl_pcds_d3_status_2_map,
924*41354f4cSXi Pardee 	nvl_pcds_d3_status_3_map,
925*41354f4cSXi Pardee 	nvl_pcds_clocksource_status_map,
926*41354f4cSXi Pardee 	nvl_pcds_vnn_misc_status_map,
927*41354f4cSXi Pardee 	nvl_pcds_signal_status_map,
928*41354f4cSXi Pardee 	NULL
929*41354f4cSXi Pardee };
930*41354f4cSXi Pardee 
931*41354f4cSXi Pardee static const struct pmc_bit_map nvl_pchs_pfear_map[] = {
932*41354f4cSXi Pardee 	{"PMC_PGD0",                 BIT(0)},
933*41354f4cSXi Pardee 	{"FIA_D_PGD0",               BIT(1)},
934*41354f4cSXi Pardee 	{"SPI_PGD0",                 BIT(2)},
935*41354f4cSXi Pardee 	{"XHCI_PGD0",                BIT(3)},
936*41354f4cSXi Pardee 	{"SPA_PGD0",                 BIT(4)},
937*41354f4cSXi Pardee 	{"SPB_PGD0",                 BIT(5)},
938*41354f4cSXi Pardee 	{"MPFPW2_PGD0",              BIT(6)},
939*41354f4cSXi Pardee 	{"GBE_PGD0",                 BIT(7)},
940*41354f4cSXi Pardee 
941*41354f4cSXi Pardee 	{"RSVD8",                    BIT(0)},
942*41354f4cSXi Pardee 	{"PSF3_PGD0",                BIT(1)},
943*41354f4cSXi Pardee 	{"SBR5_PGD0",                BIT(2)},
944*41354f4cSXi Pardee 	{"SBR0_PGD0",                BIT(3)},
945*41354f4cSXi Pardee 	{"RSVD12",                   BIT(4)},
946*41354f4cSXi Pardee 	{"D2D_DISP_PGD1",            BIT(5)},
947*41354f4cSXi Pardee 	{"LPSS_PGD0",                BIT(6)},
948*41354f4cSXi Pardee 	{"LPC_PGD0",                 BIT(7)},
949*41354f4cSXi Pardee 
950*41354f4cSXi Pardee 	{"SMB_PGD0",                 BIT(0)},
951*41354f4cSXi Pardee 	{"ISH_PGD0",                 BIT(1)},
952*41354f4cSXi Pardee 	{"P2SB_PGD0",                BIT(2)},
953*41354f4cSXi Pardee 	{"NPK_PGD0",                 BIT(3)},
954*41354f4cSXi Pardee 	{"D2D_NOC_PGD1",             BIT(4)},
955*41354f4cSXi Pardee 	{"EAH_PGD0",                 BIT(5)},
956*41354f4cSXi Pardee 	{"FUSE_PGD0",                BIT(6)},
957*41354f4cSXi Pardee 	{"SBR8_PGD0",                BIT(7)},
958*41354f4cSXi Pardee 
959*41354f4cSXi Pardee 	{"PSF7_PGD0",                BIT(0)},
960*41354f4cSXi Pardee 	{"OTG_PGD0",                 BIT(1)},
961*41354f4cSXi Pardee 	{"EXI_PGD0",                 BIT(2)},
962*41354f4cSXi Pardee 	{"CSE_PGD0",                 BIT(3)},
963*41354f4cSXi Pardee 	{"CSME_KVM_PGD0",            BIT(4)},
964*41354f4cSXi Pardee 	{"CSME_PMT_PGD0",            BIT(5)},
965*41354f4cSXi Pardee 	{"CSME_CLINK_PGD0",          BIT(6)},
966*41354f4cSXi Pardee 	{"CSME_PTIO_PGD0",           BIT(7)},
967*41354f4cSXi Pardee 
968*41354f4cSXi Pardee 	{"CSME_USBR_PGD0",           BIT(0)},
969*41354f4cSXi Pardee 	{"SBR1_PGD0",                BIT(1)},
970*41354f4cSXi Pardee 	{"CSME_SMT1_PGD0",           BIT(2)},
971*41354f4cSXi Pardee 	{"MPFPW1_PGD0",              BIT(3)},
972*41354f4cSXi Pardee 	{"CSME_SMS2_PGD0",           BIT(4)},
973*41354f4cSXi Pardee 	{"CSME_SMS_PGD0",            BIT(5)},
974*41354f4cSXi Pardee 	{"CSME_RTC_PGD0",            BIT(6)},
975*41354f4cSXi Pardee 	{"CSMEPSF_PGD0",             BIT(7)},
976*41354f4cSXi Pardee 
977*41354f4cSXi Pardee 	{"D2D_NOC_PGD0",             BIT(0)},
978*41354f4cSXi Pardee 	{"ESE_PGD0",                 BIT(1)},
979*41354f4cSXi Pardee 	{"SBR2_PGD0",                BIT(2)},
980*41354f4cSXi Pardee 	{"SBR3_PGD0",                BIT(3)},
981*41354f4cSXi Pardee 	{"SBR4_PGD0",                BIT(4)},
982*41354f4cSXi Pardee 	{"RSVD45",                   BIT(5)},
983*41354f4cSXi Pardee 	{"D2D_DISP_PGD0",            BIT(6)},
984*41354f4cSXi Pardee 	{"PSF1_PGD0",                BIT(7)},
985*41354f4cSXi Pardee 
986*41354f4cSXi Pardee 	{"U3FPW1_PGD0",              BIT(0)},
987*41354f4cSXi Pardee 	{"DMI3FPW_PGD0",             BIT(1)},
988*41354f4cSXi Pardee 	{"PSF4_PGD0",                BIT(2)},
989*41354f4cSXi Pardee 	{"CNVI_PGD0",                BIT(3)},
990*41354f4cSXi Pardee 	{"RSVD52",                   BIT(4)},
991*41354f4cSXi Pardee 	{"ENDBG_PGD0",               BIT(5)},
992*41354f4cSXi Pardee 	{"DBC_PGD0",                 BIT(6)},
993*41354f4cSXi Pardee 	{"SMT4_PGD0",                BIT(7)},
994*41354f4cSXi Pardee 
995*41354f4cSXi Pardee 	{"RSVD56",                   BIT(0)},
996*41354f4cSXi Pardee 	{"NPK_PGD1",                 BIT(1)},
997*41354f4cSXi Pardee 	{"RSVD58",                   BIT(2)},
998*41354f4cSXi Pardee 	{"DMI3_PGD0",                BIT(3)},
999*41354f4cSXi Pardee 	{"RSVD60",                   BIT(4)},
1000*41354f4cSXi Pardee 	{"FIACPCB_D_PGD0",           BIT(5)},
1001*41354f4cSXi Pardee 	{"RSVD62",                   BIT(6)},
1002*41354f4cSXi Pardee 	{"FIA_U_PGD0",               BIT(7)},
1003*41354f4cSXi Pardee 
1004*41354f4cSXi Pardee 	{"FIACPCB_PGS_PGD0",         BIT(0)},
1005*41354f4cSXi Pardee 	{"FIA_PGS_PGD0",             BIT(1)},
1006*41354f4cSXi Pardee 	{"RSVD66",                   BIT(2)},
1007*41354f4cSXi Pardee 	{"FIACPCB_U_PGD0",           BIT(3)},
1008*41354f4cSXi Pardee 	{"TAM_PGD0",                 BIT(4)},
1009*41354f4cSXi Pardee 	{"D2D_NOC_PGD2",             BIT(5)},
1010*41354f4cSXi Pardee 	{"PSF2_PGD0",                BIT(6)},
1011*41354f4cSXi Pardee 	{"THC0_PGD0",                BIT(7)},
1012*41354f4cSXi Pardee 
1013*41354f4cSXi Pardee 	{"THC1_PGD0",                BIT(0)},
1014*41354f4cSXi Pardee 	{"PMC_PGD1",                 BIT(1)},
1015*41354f4cSXi Pardee 	{"SBR9_PGD0",                BIT(2)},
1016*41354f4cSXi Pardee 	{"U3FPW2_PGD0",              BIT(3)},
1017*41354f4cSXi Pardee 	{"RSVD76",                   BIT(4)},
1018*41354f4cSXi Pardee 	{"DBG_PSF_PGD0",             BIT(5)},
1019*41354f4cSXi Pardee 	{"DBG_SBR_PGD0",             BIT(6)},
1020*41354f4cSXi Pardee 	{"SBR6_PGD0",                BIT(7)},
1021*41354f4cSXi Pardee 
1022*41354f4cSXi Pardee 	{"SPC_PGD0",                 BIT(0)},
1023*41354f4cSXi Pardee 	{"ACE_PGD0",                 BIT(1)},
1024*41354f4cSXi Pardee 	{"ACE_PGD1",                 BIT(2)},
1025*41354f4cSXi Pardee 	{"ACE_PGD2",                 BIT(3)},
1026*41354f4cSXi Pardee 	{"ACE_PGD3",                 BIT(4)},
1027*41354f4cSXi Pardee 	{"ACE_PGD4",                 BIT(5)},
1028*41354f4cSXi Pardee 	{"ACE_PGD5",                 BIT(6)},
1029*41354f4cSXi Pardee 	{"ACE_PGD6",                 BIT(7)},
1030*41354f4cSXi Pardee 
1031*41354f4cSXi Pardee 	{"ACE_PGD7",                 BIT(0)},
1032*41354f4cSXi Pardee 	{"ACE_PGD8",                 BIT(1)},
1033*41354f4cSXi Pardee 	{"ACE_PGD9",                 BIT(2)},
1034*41354f4cSXi Pardee 	{"ACE_PGD10",                BIT(3)},
1035*41354f4cSXi Pardee 	{"U3FPW3_PGD0",              BIT(4)},
1036*41354f4cSXi Pardee 	{"SBR7_PGD0",                BIT(5)},
1037*41354f4cSXi Pardee 	{"OSSE_PGD0",                BIT(6)},
1038*41354f4cSXi Pardee 	{"ST_PGD0",                  BIT(7)},
1039*41354f4cSXi Pardee 	{}
1040*41354f4cSXi Pardee };
1041*41354f4cSXi Pardee 
1042*41354f4cSXi Pardee static const struct pmc_bit_map *ext_nvl_pchs_pfear_map[] = {
1043*41354f4cSXi Pardee 	nvl_pchs_pfear_map,
1044*41354f4cSXi Pardee 	NULL
1045*41354f4cSXi Pardee };
1046*41354f4cSXi Pardee 
1047*41354f4cSXi Pardee static const struct pmc_bit_map nvl_pchs_clocksource_status_map[] = {
1048*41354f4cSXi Pardee 	{"AON2_OFF_STS",                 BIT(0),	1},
1049*41354f4cSXi Pardee 	{"AON3_OFF_STS",                 BIT(1),	0},
1050*41354f4cSXi Pardee 	{"AON4_OFF_STS",                 BIT(2),	0},
1051*41354f4cSXi Pardee 	{"AON2_SPL_OFF_STS",             BIT(3),	0},
1052*41354f4cSXi Pardee 	{"AONL_OFF_STS",                 BIT(4),	0},
1053*41354f4cSXi Pardee 	{"XTAL_LVM_OFF_STS",             BIT(5),	0},
1054*41354f4cSXi Pardee 	{"AON5_OFF_STS",                 BIT(6),	0},
1055*41354f4cSXi Pardee 	{"USB3_PLL_OFF_STS",             BIT(8),	1},
1056*41354f4cSXi Pardee 	{"MAIN_CRO_OFF_STS",             BIT(11),	0},
1057*41354f4cSXi Pardee 	{"MAIN_DIVIDER_OFF_STS",         BIT(12),	1},
1058*41354f4cSXi Pardee 	{"REF_PLL_NON_OC_OFF_STS",       BIT(13),	1},
1059*41354f4cSXi Pardee 	{"DMI_PLL_OFF_STS",              BIT(14),	1},
1060*41354f4cSXi Pardee 	{"PHY_EXT_INJ_OFF_STS",          BIT(15),	1},
1061*41354f4cSXi Pardee 	{"AON6_MCRO_OFF_STS",            BIT(16),	0},
1062*41354f4cSXi Pardee 	{"XTAL_AGGR_OFF_STS",            BIT(17),	0},
1063*41354f4cSXi Pardee 	{"USB2_PLL_OFF_STS",             BIT(18),	1},
1064*41354f4cSXi Pardee 	{"GBE_PLL_OFF_STS",              BIT(21),	1},
1065*41354f4cSXi Pardee 	{"SATA_PLL_OFF_STS",             BIT(22),	1},
1066*41354f4cSXi Pardee 	{"PCIE0_PLL_OFF_STS",            BIT(23),	1},
1067*41354f4cSXi Pardee 	{"PCIE1_PLL_OFF_STS",            BIT(24),	1},
1068*41354f4cSXi Pardee 	{"FABRIC_PLL_OFF_STS",           BIT(25),	1},
1069*41354f4cSXi Pardee 	{"PCIE2_PLL_OFF_STS",            BIT(26),	1},
1070*41354f4cSXi Pardee 	{"REF_PLL_OFF_STS",              BIT(28),	1},
1071*41354f4cSXi Pardee 	{"REF38P4_PLL_OFF_STS",          BIT(31),	1},
1072*41354f4cSXi Pardee 	{}
1073*41354f4cSXi Pardee };
1074*41354f4cSXi Pardee 
1075*41354f4cSXi Pardee static const struct pmc_bit_map nvl_pchs_power_gating_status_0_map[] = {
1076*41354f4cSXi Pardee 	{"PMC_PGD0_PG_STS",              BIT(0),	0},
1077*41354f4cSXi Pardee 	{"FIA_D_PGD0_PG_STS",            BIT(1),	0},
1078*41354f4cSXi Pardee 	{"ESPISPI_PGD0_PG_STS",          BIT(2),	0},
1079*41354f4cSXi Pardee 	{"XHCI_PGD0_PG_STS",             BIT(3),	0},
1080*41354f4cSXi Pardee 	{"SPA_PGD0_PG_STS",              BIT(4),	1},
1081*41354f4cSXi Pardee 	{"SPB_PGD0_PG_STS",              BIT(5),	1},
1082*41354f4cSXi Pardee 	{"MPFPW2_PGD0_PG_STS",           BIT(6),	0},
1083*41354f4cSXi Pardee 	{"GBE_PGD0_PG_STS",              BIT(7),	1},
1084*41354f4cSXi Pardee 	{"RSVD_8",                       BIT(8),	0},
1085*41354f4cSXi Pardee 	{"PSF3_PGD0_PG_STS",             BIT(9),	0},
1086*41354f4cSXi Pardee 	{"SBR5_PGD0_PG_STS",             BIT(10),	0},
1087*41354f4cSXi Pardee 	{"SBR0_PGD0_PG_STS",             BIT(11),	0},
1088*41354f4cSXi Pardee 	{"RSVD_12",                      BIT(12),	0},
1089*41354f4cSXi Pardee 	{"D2D_DISP_PGD1_PG_STS",         BIT(13),	0},
1090*41354f4cSXi Pardee 	{"LPSS_PGD0_PG_STS",             BIT(14),	1},
1091*41354f4cSXi Pardee 	{"LPC_PGD0_PG_STS",              BIT(15),	0},
1092*41354f4cSXi Pardee 	{"SMB_PGD0_PG_STS",              BIT(16),	0},
1093*41354f4cSXi Pardee 	{"ISH_PGD0_PG_STS",              BIT(17),	0},
1094*41354f4cSXi Pardee 	{"P2S_PGD0_PG_STS",              BIT(18),	0},
1095*41354f4cSXi Pardee 	{"NPK_PGD0_PG_STS",              BIT(19),	0},
1096*41354f4cSXi Pardee 	{"D2D_NOC_PGD1_PG_STS",          BIT(20),	0},
1097*41354f4cSXi Pardee 	{"EAH_PGD0_PG_STS",              BIT(21),	0},
1098*41354f4cSXi Pardee 	{"FUSE_PGD0_PG_STS",             BIT(22),	0},
1099*41354f4cSXi Pardee 	{"SBR8_PGD0_PG_STS",             BIT(23),	0},
1100*41354f4cSXi Pardee 	{"PSF7_PGD0_PG_STS",             BIT(24),	0},
1101*41354f4cSXi Pardee 	{"XDCI_PGD0_PG_STS",             BIT(25),	1},
1102*41354f4cSXi Pardee 	{"EXI_PGD0_PG_STS",              BIT(26),	0},
1103*41354f4cSXi Pardee 	{"CSE_PGD0_PG_STS",              BIT(27),	1},
1104*41354f4cSXi Pardee 	{"KVMCC_PGD0_PG_STS",            BIT(28),	1},
1105*41354f4cSXi Pardee 	{"PMT_PGD0_PG_STS",              BIT(29),	1},
1106*41354f4cSXi Pardee 	{"CLINK_PGD0_PG_STS",            BIT(30),	1},
1107*41354f4cSXi Pardee 	{"PTIO_PGD0_PG_STS",             BIT(31),	1},
1108*41354f4cSXi Pardee 	{}
1109*41354f4cSXi Pardee };
1110*41354f4cSXi Pardee 
1111*41354f4cSXi Pardee static const struct pmc_bit_map nvl_pchs_power_gating_status_1_map[] = {
1112*41354f4cSXi Pardee 	{"USBR0_PGD0_PG_STS",            BIT(0),	1},
1113*41354f4cSXi Pardee 	{"SBR1_PGD0_PG_STS",             BIT(1),	0},
1114*41354f4cSXi Pardee 	{"SMT1_PGD0_PG_STS",             BIT(2),	1},
1115*41354f4cSXi Pardee 	{"MPFPW1_PGD0_PG_STS",           BIT(3),	0},
1116*41354f4cSXi Pardee 	{"SMS2_PGD0_PG_STS",             BIT(4),	1},
1117*41354f4cSXi Pardee 	{"SMS1_PGD0_PG_STS",             BIT(5),	1},
1118*41354f4cSXi Pardee 	{"CSMERTC_PGD0_PG_STS",          BIT(6),	0},
1119*41354f4cSXi Pardee 	{"CSMEPSF_PGD0_PG_STS",          BIT(7),	0},
1120*41354f4cSXi Pardee 	{"D2D_NOC_PGD0_PG_STS",          BIT(8),	0},
1121*41354f4cSXi Pardee 	{"ESE_PGD0_PG_STS",              BIT(9),	1},
1122*41354f4cSXi Pardee 	{"SBR2_PGD0_PG_STS",             BIT(10),	0},
1123*41354f4cSXi Pardee 	{"SBR3_PGD0_PG_STS",             BIT(11),	0},
1124*41354f4cSXi Pardee 	{"SBR4_PGD0_PG_STS",             BIT(12),	0},
1125*41354f4cSXi Pardee 	{"RSVD_13",                      BIT(13),	0},
1126*41354f4cSXi Pardee 	{"D2D_DISP_PGD0_PG_STS",         BIT(14),	0},
1127*41354f4cSXi Pardee 	{"PSF1_PGD0_PG_STS",             BIT(15),	0},
1128*41354f4cSXi Pardee 	{"U3FPW1_PGD0_PG_STS",           BIT(16),	0},
1129*41354f4cSXi Pardee 	{"DMI3FPW_PGD0_PG_STS",          BIT(17),	0},
1130*41354f4cSXi Pardee 	{"PSF4_PGD0_PG_STS",             BIT(18),	0},
1131*41354f4cSXi Pardee 	{"CNVI_PGD0_PG_STS",             BIT(19),	0},
1132*41354f4cSXi Pardee 	{"RSVD_20",                      BIT(20),	0},
1133*41354f4cSXi Pardee 	{"ENDBG_PGD0_PG_STS",            BIT(21),	0},
1134*41354f4cSXi Pardee 	{"DBC_PGD0_PG_STS",              BIT(22),	0},
1135*41354f4cSXi Pardee 	{"SMT4_PGD0_PG_STS",             BIT(23),	1},
1136*41354f4cSXi Pardee 	{"RSVD_24",                      BIT(24),	0},
1137*41354f4cSXi Pardee 	{"NPK_PGD1_PG_STS",              BIT(25),	0},
1138*41354f4cSXi Pardee 	{"RSVD_26",                      BIT(26),	0},
1139*41354f4cSXi Pardee 	{"DMI3_PGD0_PG_STS",             BIT(27),	1},
1140*41354f4cSXi Pardee 	{"RSVD_28",                      BIT(28),	0},
1141*41354f4cSXi Pardee 	{"FIACPCB_D_PGD0_PG_STS",        BIT(29),	0},
1142*41354f4cSXi Pardee 	{"RSVD_30",                      BIT(30),	0},
1143*41354f4cSXi Pardee 	{"FIA_U_PGD0_PG_STS",            BIT(31),	0},
1144*41354f4cSXi Pardee 	{}
1145*41354f4cSXi Pardee };
1146*41354f4cSXi Pardee 
1147*41354f4cSXi Pardee static const struct pmc_bit_map nvl_pchs_power_gating_status_2_map[] = {
1148*41354f4cSXi Pardee 	{"FIACPCB_PGS_PGD0_PG_STS",      BIT(0),	0},
1149*41354f4cSXi Pardee 	{"FIA_PGS_PGD0_PG_STS",          BIT(1),	0},
1150*41354f4cSXi Pardee 	{"RSVD_2",                       BIT(2),	0},
1151*41354f4cSXi Pardee 	{"FIACPCB_U_PGD0_PG_STS",        BIT(3),	0},
1152*41354f4cSXi Pardee 	{"TAM_PGD0_PG_STS",              BIT(4),	0},
1153*41354f4cSXi Pardee 	{"D2D_NOC_PGD2_PG_STS",          BIT(5),	0},
1154*41354f4cSXi Pardee 	{"PSF2_PGD0_PG_STS",             BIT(6),	0},
1155*41354f4cSXi Pardee 	{"THC0_PGD0_PG_STS",             BIT(7),	1},
1156*41354f4cSXi Pardee 	{"THC1_PGD0_PG_STS",             BIT(8),	1},
1157*41354f4cSXi Pardee 	{"PMC_PGD1_PG_STS",              BIT(9),	0},
1158*41354f4cSXi Pardee 	{"SBR9_PGA0_PGD0_PG_STS",        BIT(10),	0},
1159*41354f4cSXi Pardee 	{"U3FPW2_PGD0_PG_STS",           BIT(11),	0},
1160*41354f4cSXi Pardee 	{"RSVD_12",                      BIT(12),	0},
1161*41354f4cSXi Pardee 	{"DBG_PSF_PGD0_PG_STS",          BIT(13),	0},
1162*41354f4cSXi Pardee 	{"DBG_SBR_PGD0_PG_STS",          BIT(14),	0},
1163*41354f4cSXi Pardee 	{"SBR6_PGD0_PG_STS",             BIT(15),	0},
1164*41354f4cSXi Pardee 	{"SPC_PGD0_PG_STS",              BIT(16),	1},
1165*41354f4cSXi Pardee 	{"ACE_PGD0_PG_STS",              BIT(17),	0},
1166*41354f4cSXi Pardee 	{"ACE_PGD1_PG_STS",              BIT(18),	0},
1167*41354f4cSXi Pardee 	{"ACE_PGD2_PG_STS",              BIT(19),	0},
1168*41354f4cSXi Pardee 	{"ACE_PGD3_PG_STS",              BIT(20),	0},
1169*41354f4cSXi Pardee 	{"ACE_PGD4_PG_STS",              BIT(21),	0},
1170*41354f4cSXi Pardee 	{"ACE_PGD5_PG_STS",              BIT(22),	0},
1171*41354f4cSXi Pardee 	{"ACE_PGD6_PG_STS",              BIT(23),	0},
1172*41354f4cSXi Pardee 	{"ACE_PGD7_PG_STS",              BIT(24),	0},
1173*41354f4cSXi Pardee 	{"ACE_PGD8_PG_STS",              BIT(25),	0},
1174*41354f4cSXi Pardee 	{"ACE_PGD9_PG_STS",              BIT(26),	0},
1175*41354f4cSXi Pardee 	{"ACE_PGD10_PG_STS",             BIT(27),	0},
1176*41354f4cSXi Pardee 	{"U3FPW3_PGD0_PG_STS",           BIT(28),	0},
1177*41354f4cSXi Pardee 	{"SBR7_PGD0_PG_STS",             BIT(29),	0},
1178*41354f4cSXi Pardee 	{"OSSE_PGD0_PG_STS",             BIT(30),	0},
1179*41354f4cSXi Pardee 	{"SATA_PGD0_PG_STS",             BIT(31),	1},
1180*41354f4cSXi Pardee 	{}
1181*41354f4cSXi Pardee };
1182*41354f4cSXi Pardee 
1183*41354f4cSXi Pardee static const struct pmc_bit_map nvl_pchs_d3_status_0_map[] = {
1184*41354f4cSXi Pardee 	{"LPSS_D3_STS",                  BIT(3),	1},
1185*41354f4cSXi Pardee 	{"XDCI_D3_STS",                  BIT(4),	1},
1186*41354f4cSXi Pardee 	{"XHCI_D3_STS",                  BIT(5),	0},
1187*41354f4cSXi Pardee 	{"SPA_D3_STS",                   BIT(12),	0},
1188*41354f4cSXi Pardee 	{"SPB_D3_STS",                   BIT(13),	0},
1189*41354f4cSXi Pardee 	{"SPC_D3_STS",                   BIT(14),	0},
1190*41354f4cSXi Pardee 	{"ESPISPI_D3_STS",               BIT(18),	0},
1191*41354f4cSXi Pardee 	{"SATA_D3_STS",                  BIT(20),	1},
1192*41354f4cSXi Pardee 	{}
1193*41354f4cSXi Pardee };
1194*41354f4cSXi Pardee 
1195*41354f4cSXi Pardee static const struct pmc_bit_map nvl_pchs_d3_status_1_map[] = {
1196*41354f4cSXi Pardee 	{"OSSE_D3_STS",                  BIT(6),	0},
1197*41354f4cSXi Pardee 	{"GBE_D3_STS",                   BIT(19),	0},
1198*41354f4cSXi Pardee 	{"ITSS_D3_STS",                  BIT(23),	0},
1199*41354f4cSXi Pardee 	{"P2S_D3_STS",                   BIT(24),	0},
1200*41354f4cSXi Pardee 	{"CNVI_D3_STS",                  BIT(27),	0},
1201*41354f4cSXi Pardee 	{}
1202*41354f4cSXi Pardee };
1203*41354f4cSXi Pardee 
1204*41354f4cSXi Pardee static const struct pmc_bit_map nvl_pchs_d3_status_2_map[] = {
1205*41354f4cSXi Pardee 	{"CSMERTC_D3_STS",               BIT(1),	0},
1206*41354f4cSXi Pardee 	{"CSE_D3_STS",                   BIT(4),	0},
1207*41354f4cSXi Pardee 	{"KVMCC_D3_STS",                 BIT(5),	0},
1208*41354f4cSXi Pardee 	{"USBR0_D3_STS",                 BIT(6),	0},
1209*41354f4cSXi Pardee 	{"ISH_D3_STS",                   BIT(7),	0},
1210*41354f4cSXi Pardee 	{"SMT1_D3_STS",                  BIT(8),	0},
1211*41354f4cSXi Pardee 	{"SMT2_D3_STS",                  BIT(9),	0},
1212*41354f4cSXi Pardee 	{"SMT3_D3_STS",                  BIT(10),	0},
1213*41354f4cSXi Pardee 	{"SMT4_D3_STS",                  BIT(11),	0},
1214*41354f4cSXi Pardee 	{"SMT5_D3_STS",                  BIT(12),	0},
1215*41354f4cSXi Pardee 	{"SMT6_D3_STS",                  BIT(13),	0},
1216*41354f4cSXi Pardee 	{"CLINK_D3_STS",                 BIT(14),	0},
1217*41354f4cSXi Pardee 	{"PTIO_D3_STS",                  BIT(16),	0},
1218*41354f4cSXi Pardee 	{"PMT_D3_STS",                   BIT(17),	0},
1219*41354f4cSXi Pardee 	{"SMS1_D3_STS",                  BIT(18),	0},
1220*41354f4cSXi Pardee 	{"SMS2_D3_STS",                  BIT(19),	0},
1221*41354f4cSXi Pardee 	{}
1222*41354f4cSXi Pardee };
1223*41354f4cSXi Pardee 
1224*41354f4cSXi Pardee static const struct pmc_bit_map nvl_pchs_d3_status_3_map[] = {
1225*41354f4cSXi Pardee 	{"THC0_D3_STS",                  BIT(14),	0},
1226*41354f4cSXi Pardee 	{"THC1_D3_STS",                  BIT(15),	0},
1227*41354f4cSXi Pardee 	{"ACE_D3_STS",                   BIT(23),	0},
1228*41354f4cSXi Pardee 	{}
1229*41354f4cSXi Pardee };
1230*41354f4cSXi Pardee 
1231*41354f4cSXi Pardee static const struct pmc_bit_map nvl_pchs_vnn_req_status_1_map[] = {
1232*41354f4cSXi Pardee 	{"NPK_VNN_REQ_STS",              BIT(4),	0},
1233*41354f4cSXi Pardee 	{"OSSE_VNN_REQ_STS",             BIT(6),	0},
1234*41354f4cSXi Pardee 	{"DFXAGG_VNN_REQ_STS",           BIT(8),	0},
1235*41354f4cSXi Pardee 	{"EXI_VNN_REQ_STS",              BIT(9),	0},
1236*41354f4cSXi Pardee 	{"GBE_VNN_REQ_STS",              BIT(19),	0},
1237*41354f4cSXi Pardee 	{"SMB_VNN_REQ_STS",              BIT(25),	0},
1238*41354f4cSXi Pardee 	{"LPC_VNN_REQ_STS",              BIT(26),	0},
1239*41354f4cSXi Pardee 	{}
1240*41354f4cSXi Pardee };
1241*41354f4cSXi Pardee 
1242*41354f4cSXi Pardee static const struct pmc_bit_map nvl_pchs_vnn_req_status_2_map[] = {
1243*41354f4cSXi Pardee 	{"CSMERTC_VNN_REQ_STS",          BIT(1),	0},
1244*41354f4cSXi Pardee 	{"CSE_VNN_REQ_STS",              BIT(4),	0},
1245*41354f4cSXi Pardee 	{"ISH_VNN_REQ_STS",              BIT(7),	0},
1246*41354f4cSXi Pardee 	{"SMT1_VNN_REQ_STS",             BIT(8),	0},
1247*41354f4cSXi Pardee 	{"SMT4_VNN_REQ_STS",             BIT(11),	0},
1248*41354f4cSXi Pardee 	{"CLINK_VNN_REQ_STS",            BIT(14),	0},
1249*41354f4cSXi Pardee 	{"SMS1_VNN_REQ_STS",             BIT(18),	0},
1250*41354f4cSXi Pardee 	{"SMS2_VNN_REQ_STS",             BIT(19),	0},
1251*41354f4cSXi Pardee 	{"GPIOCOM4_VNN_REQ_STS",         BIT(20),	0},
1252*41354f4cSXi Pardee 	{"GPIOCOM3_VNN_REQ_STS",         BIT(21),	0},
1253*41354f4cSXi Pardee 	{"GPIOCOM2_VNN_REQ_STS",         BIT(22),	0},
1254*41354f4cSXi Pardee 	{"GPIOCOM1_VNN_REQ_STS",         BIT(23),	0},
1255*41354f4cSXi Pardee 	{"GPIOCOM0_VNN_REQ_STS",         BIT(24),	0},
1256*41354f4cSXi Pardee 	{}
1257*41354f4cSXi Pardee };
1258*41354f4cSXi Pardee 
1259*41354f4cSXi Pardee static const struct pmc_bit_map nvl_pchs_vnn_misc_status_map[] = {
1260*41354f4cSXi Pardee 	{"CPU_C10_REQ_STS",              BIT(0),	0},
1261*41354f4cSXi Pardee 	{"TS_OFF_REQ_STS",               BIT(1),	0},
1262*41354f4cSXi Pardee 	{"PNDE_MET_REQ_STS",             BIT(2),	1},
1263*41354f4cSXi Pardee 	{"PG5_PMA0_GVNN_REQ_STS",        BIT(3),	1},
1264*41354f4cSXi Pardee 	{"FW_THROTTLE_ALLOWED_REQ_STS",  BIT(4),	0},
1265*41354f4cSXi Pardee 	{"DMI_IN_L1_REQ_STS",            BIT(6),	0},
1266*41354f4cSXi Pardee 	{"ISH_VNNAON_REQ_STS",           BIT(7),	0},
1267*41354f4cSXi Pardee 	{"PLT_GREATER_REQ_STS",          BIT(11),	1},
1268*41354f4cSXi Pardee 	{"ALL_SBR_IDLE_REQ_STS",         BIT(12),	0},
1269*41354f4cSXi Pardee 	{"PMC_IDLE_FB_OCP_REQ_STS",      BIT(13),	0},
1270*41354f4cSXi Pardee 	{"PM_SYNC_STATES_REQ_STS",       BIT(14),	0},
1271*41354f4cSXi Pardee 	{"EA_REQ_STS",                   BIT(15),	0},
1272*41354f4cSXi Pardee 	{"DMI_CLKREQ_B_REQ_STS",         BIT(16),	0},
1273*41354f4cSXi Pardee 	{"BRK_EV_EN_REQ_STS",            BIT(17),	0},
1274*41354f4cSXi Pardee 	{"AUTO_DEMO_EN_REQ_STS",         BIT(18),	0},
1275*41354f4cSXi Pardee 	{"ITSS_CLK_SRC_REQ_STS",         BIT(19),	1},
1276*41354f4cSXi Pardee 	{"ARC_IDLE_REQ_STS",             BIT(21),	0},
1277*41354f4cSXi Pardee 	{"PG5_PMA1_GVNN_REQ_STS",        BIT(22),	1},
1278*41354f4cSXi Pardee 	{"FIA_DEEP_PM_REQ_STS",          BIT(23),	0},
1279*41354f4cSXi Pardee 	{"XDCI_ATTACHED_REQ_STS",        BIT(24),	0},
1280*41354f4cSXi Pardee 	{"ARC_INTERRUPT_WAKE_REQ_STS",   BIT(25),	0},
1281*41354f4cSXi Pardee 	{"PRE_WAKE0_REQ_STS",            BIT(27),	1},
1282*41354f4cSXi Pardee 	{"PRE_WAKE1_REQ_STS",            BIT(28),	1},
1283*41354f4cSXi Pardee 	{"PRE_WAKE2_EN_REQ_STS",         BIT(29),	0},
1284*41354f4cSXi Pardee 	{"PG5_PMA2_GVNN_REQ_STS",        BIT(30),	1},
1285*41354f4cSXi Pardee 	{}
1286*41354f4cSXi Pardee };
1287*41354f4cSXi Pardee 
1288*41354f4cSXi Pardee static const struct pmc_bit_map nvl_pchs_rsc_status_map[] = {
1289*41354f4cSXi Pardee 	{"Memory",		0,		1},
1290*41354f4cSXi Pardee 	{"Memory_NS",		0,		1},
1291*41354f4cSXi Pardee 	{"PSF1",		0,		1},
1292*41354f4cSXi Pardee 	{"PSF2",		0,		1},
1293*41354f4cSXi Pardee 	{"PSF3",		0,		1},
1294*41354f4cSXi Pardee 	{"REF_PLL",		0,		1},
1295*41354f4cSXi Pardee 	{"SB",			0,		1},
1296*41354f4cSXi Pardee 	{}
1297*41354f4cSXi Pardee };
1298*41354f4cSXi Pardee 
1299*41354f4cSXi Pardee static const struct pmc_bit_map *nvl_pchs_lpm_maps[] = {
1300*41354f4cSXi Pardee 	nvl_pchs_clocksource_status_map,
1301*41354f4cSXi Pardee 	nvl_pchs_power_gating_status_0_map,
1302*41354f4cSXi Pardee 	nvl_pchs_power_gating_status_1_map,
1303*41354f4cSXi Pardee 	nvl_pchs_power_gating_status_2_map,
1304*41354f4cSXi Pardee 	nvl_pchs_d3_status_0_map,
1305*41354f4cSXi Pardee 	nvl_pchs_d3_status_1_map,
1306*41354f4cSXi Pardee 	nvl_pchs_d3_status_2_map,
1307*41354f4cSXi Pardee 	nvl_pchs_d3_status_3_map,
1308*41354f4cSXi Pardee 	nvl_pcds_vnn_req_status_0_map,
1309*41354f4cSXi Pardee 	nvl_pchs_vnn_req_status_1_map,
1310*41354f4cSXi Pardee 	nvl_pchs_vnn_req_status_2_map,
1311*41354f4cSXi Pardee 	nvl_pcdh_vnn_req_status_3_map,
1312*41354f4cSXi Pardee 	nvl_pchs_vnn_misc_status_map,
1313*41354f4cSXi Pardee 	ptl_pcdp_signal_status_map,
1314*41354f4cSXi Pardee 	NULL
1315*41354f4cSXi Pardee };
1316*41354f4cSXi Pardee 
1317*41354f4cSXi Pardee static const struct pmc_bit_map *nvl_pchs_blk_maps[] = {
1318*41354f4cSXi Pardee 	nvl_pchs_power_gating_status_0_map,
1319*41354f4cSXi Pardee 	nvl_pchs_power_gating_status_1_map,
1320*41354f4cSXi Pardee 	nvl_pchs_power_gating_status_2_map,
1321*41354f4cSXi Pardee 	nvl_pchs_rsc_status_map,
1322*41354f4cSXi Pardee 	nvl_pchs_d3_status_0_map,
1323*41354f4cSXi Pardee 	nvl_pchs_clocksource_status_map,
1324*41354f4cSXi Pardee 	nvl_pchs_vnn_misc_status_map,
1325*41354f4cSXi Pardee 	NULL
1326*41354f4cSXi Pardee };
1327*41354f4cSXi Pardee 
1328*41354f4cSXi Pardee static const struct pmc_reg_map nvl_pcdh_reg_map = {
1329*41354f4cSXi Pardee 	.pfear_sts = ext_nvl_pcdh_pfear_map,
1330*41354f4cSXi Pardee 	.slp_s0_offset = CNP_PMC_SLP_S0_RES_COUNTER_OFFSET,
1331*41354f4cSXi Pardee 	.slp_s0_res_counter_step = TGL_PMC_SLP_S0_RES_COUNTER_STEP,
1332*41354f4cSXi Pardee 	.ltr_show_sts = ptl_pcdp_ltr_show_map,
1333*41354f4cSXi Pardee 	.msr_sts = msr_map,
1334*41354f4cSXi Pardee 	.ltr_ignore_offset = CNP_PMC_LTR_IGNORE_OFFSET,
1335*41354f4cSXi Pardee 	.regmap_length = NVL_PCDH_PMC_MMIO_REG_LEN,
1336*41354f4cSXi Pardee 	.ppfear0_offset = CNP_PMC_HOST_PPFEAR0A,
1337*41354f4cSXi Pardee 	.ppfear_buckets = NVL_PCDH_PPFEAR_NUM_ENTRIES,
1338*41354f4cSXi Pardee 	.pm_cfg_offset = CNP_PMC_PM_CFG_OFFSET,
1339*41354f4cSXi Pardee 	.pm_read_disable_bit = CNP_PMC_READ_DISABLE_BIT,
1340*41354f4cSXi Pardee 	.lpm_num_maps = NVL_LPM_NUM_MAPS,
1341*41354f4cSXi Pardee 	.ltr_ignore_max = LNL_NUM_IP_IGN_ALLOWED,
1342*41354f4cSXi Pardee 	.lpm_res_counter_step_x2 = TGL_PMC_LPM_RES_COUNTER_STEP_X2,
1343*41354f4cSXi Pardee 	.etr3_offset = ETR3_OFFSET,
1344*41354f4cSXi Pardee 	.lpm_sts_latch_en_offset = MTL_LPM_STATUS_LATCH_EN_OFFSET,
1345*41354f4cSXi Pardee 	.lpm_priority_offset = NVL_LPM_PRI_OFFSET,
1346*41354f4cSXi Pardee 	.lpm_en_offset = NVL_LPM_EN_OFFSET,
1347*41354f4cSXi Pardee 	.lpm_residency_offset = NVL_LPM_RESIDENCY_OFFSET,
1348*41354f4cSXi Pardee 	.lpm_sts = nvl_pcdh_lpm_maps,
1349*41354f4cSXi Pardee 	.lpm_status_offset = MTL_LPM_STATUS_OFFSET,
1350*41354f4cSXi Pardee 	.lpm_live_status_offset = NVL_LPM_LIVE_STATUS_OFFSET,
1351*41354f4cSXi Pardee 	.s0ix_blocker_maps = nvl_pcdh_blk_maps,
1352*41354f4cSXi Pardee 	.s0ix_blocker_offset = LNL_S0IX_BLOCKER_OFFSET,
1353*41354f4cSXi Pardee 	.num_s0ix_blocker = NVL_PCDH_NUM_S0IX_BLOCKER,
1354*41354f4cSXi Pardee 	.blocker_req_offset = NVL_PCDH_BLK_REQ_OFFSET,
1355*41354f4cSXi Pardee 	.lpm_req_guid = PCDH_LPM_REQ_GUID,
1356*41354f4cSXi Pardee };
1357*41354f4cSXi Pardee 
1358*41354f4cSXi Pardee static const struct pmc_reg_map nvl_pcds_reg_map = {
1359*41354f4cSXi Pardee 	.pfear_sts = ext_nvl_pcds_pfear_map,
1360*41354f4cSXi Pardee 	.slp_s0_offset = CNP_PMC_SLP_S0_RES_COUNTER_OFFSET,
1361*41354f4cSXi Pardee 	.slp_s0_res_counter_step = TGL_PMC_SLP_S0_RES_COUNTER_STEP,
1362*41354f4cSXi Pardee 	.ltr_show_sts = nvl_pcds_ltr_show_map,
1363*41354f4cSXi Pardee 	.msr_sts = msr_map,
1364*41354f4cSXi Pardee 	.ltr_ignore_offset = CNP_PMC_LTR_IGNORE_OFFSET,
1365*41354f4cSXi Pardee 	.regmap_length = NVL_PCDS_PMC_MMIO_REG_LEN,
1366*41354f4cSXi Pardee 	.ppfear0_offset = CNP_PMC_HOST_PPFEAR0A,
1367*41354f4cSXi Pardee 	.ppfear_buckets = LNL_PPFEAR_NUM_ENTRIES,
1368*41354f4cSXi Pardee 	.pm_cfg_offset = CNP_PMC_PM_CFG_OFFSET,
1369*41354f4cSXi Pardee 	.pm_read_disable_bit = CNP_PMC_READ_DISABLE_BIT,
1370*41354f4cSXi Pardee 	.lpm_num_maps = PTL_LPM_NUM_MAPS,
1371*41354f4cSXi Pardee 	.ltr_ignore_max = LNL_NUM_IP_IGN_ALLOWED,
1372*41354f4cSXi Pardee 	.lpm_res_counter_step_x2 = TGL_PMC_LPM_RES_COUNTER_STEP_X2,
1373*41354f4cSXi Pardee 	.etr3_offset = ETR3_OFFSET,
1374*41354f4cSXi Pardee 	.lpm_sts_latch_en_offset = MTL_LPM_STATUS_LATCH_EN_OFFSET,
1375*41354f4cSXi Pardee 	.lpm_priority_offset = MTL_LPM_PRI_OFFSET,
1376*41354f4cSXi Pardee 	.lpm_en_offset = MTL_LPM_EN_OFFSET,
1377*41354f4cSXi Pardee 	.lpm_residency_offset = MTL_LPM_RESIDENCY_OFFSET,
1378*41354f4cSXi Pardee 	.lpm_sts = nvl_pcds_lpm_maps,
1379*41354f4cSXi Pardee 	.lpm_status_offset = MTL_LPM_STATUS_OFFSET,
1380*41354f4cSXi Pardee 	.lpm_live_status_offset = MTL_LPM_LIVE_STATUS_OFFSET,
1381*41354f4cSXi Pardee 	.s0ix_blocker_maps = nvl_pcds_blk_maps,
1382*41354f4cSXi Pardee 	.s0ix_blocker_offset = LNL_S0IX_BLOCKER_OFFSET,
1383*41354f4cSXi Pardee 	.num_s0ix_blocker = NVL_PCDS_NUM_S0IX_BLOCKER,
1384*41354f4cSXi Pardee 	.lpm_req_guid = PCDS_LPM_REQ_GUID,
1385*41354f4cSXi Pardee 	.blocker_req_offset = NVL_PCDS_BLK_REQ_OFFSET,
1386*41354f4cSXi Pardee };
1387*41354f4cSXi Pardee 
1388*41354f4cSXi Pardee static const struct pmc_reg_map nvl_pchs_reg_map = {
1389*41354f4cSXi Pardee 	.pfear_sts = ext_nvl_pchs_pfear_map,
1390*41354f4cSXi Pardee 	.slp_s0_offset = CNP_PMC_SLP_S0_RES_COUNTER_OFFSET,
1391*41354f4cSXi Pardee 	.slp_s0_res_counter_step = TGL_PMC_SLP_S0_RES_COUNTER_STEP,
1392*41354f4cSXi Pardee 	.ltr_show_sts = ptl_pcdp_ltr_show_map,
1393*41354f4cSXi Pardee 	.msr_sts = msr_map,
1394*41354f4cSXi Pardee 	.ltr_ignore_offset = CNP_PMC_LTR_IGNORE_OFFSET,
1395*41354f4cSXi Pardee 	.regmap_length = NVL_PCHS_PMC_MMIO_REG_LEN,
1396*41354f4cSXi Pardee 	.ppfear0_offset = CNP_PMC_HOST_PPFEAR0A,
1397*41354f4cSXi Pardee 	.ppfear_buckets = LNL_PPFEAR_NUM_ENTRIES,
1398*41354f4cSXi Pardee 	.pm_cfg_offset = CNP_PMC_PM_CFG_OFFSET,
1399*41354f4cSXi Pardee 	.pm_read_disable_bit = CNP_PMC_READ_DISABLE_BIT,
1400*41354f4cSXi Pardee 	.lpm_num_maps = PTL_LPM_NUM_MAPS,
1401*41354f4cSXi Pardee 	.ltr_ignore_max = LNL_NUM_IP_IGN_ALLOWED,
1402*41354f4cSXi Pardee 	.lpm_res_counter_step_x2 = TGL_PMC_LPM_RES_COUNTER_STEP_X2,
1403*41354f4cSXi Pardee 	.etr3_offset = ETR3_OFFSET,
1404*41354f4cSXi Pardee 	.lpm_sts_latch_en_offset = MTL_LPM_STATUS_LATCH_EN_OFFSET,
1405*41354f4cSXi Pardee 	.lpm_priority_offset = MTL_LPM_PRI_OFFSET,
1406*41354f4cSXi Pardee 	.lpm_en_offset = MTL_LPM_EN_OFFSET,
1407*41354f4cSXi Pardee 	.lpm_residency_offset = MTL_LPM_RESIDENCY_OFFSET,
1408*41354f4cSXi Pardee 	.lpm_sts = nvl_pchs_lpm_maps,
1409*41354f4cSXi Pardee 	.lpm_status_offset = MTL_LPM_STATUS_OFFSET,
1410*41354f4cSXi Pardee 	.lpm_live_status_offset = MTL_LPM_LIVE_STATUS_OFFSET,
1411*41354f4cSXi Pardee 	.s0ix_blocker_maps = nvl_pchs_blk_maps,
1412*41354f4cSXi Pardee 	.s0ix_blocker_offset = LNL_S0IX_BLOCKER_OFFSET,
1413*41354f4cSXi Pardee 	.num_s0ix_blocker = NVL_PCHS_NUM_S0IX_BLOCKER,
1414*41354f4cSXi Pardee 	.blocker_req_offset = NVL_PCHS_BLK_REQ_OFFSET,
1415*41354f4cSXi Pardee 	.lpm_req_guid = PCHS_LPM_REQ_GUID,
1416*41354f4cSXi Pardee };
1417*41354f4cSXi Pardee 
1418*41354f4cSXi Pardee static struct pmc_info nvl_pmc_info_list[] = {
1419*41354f4cSXi Pardee 	{
1420*41354f4cSXi Pardee 		.devid	= PMC_DEVID_NVL_PCDH,
1421*41354f4cSXi Pardee 		.map	= &nvl_pcdh_reg_map,
1422*41354f4cSXi Pardee 	},
1423*41354f4cSXi Pardee 	{
1424*41354f4cSXi Pardee 		.devid  = PMC_DEVID_NVL_PCDS,
1425*41354f4cSXi Pardee 		.map    = &nvl_pcds_reg_map,
1426*41354f4cSXi Pardee 	},
1427*41354f4cSXi Pardee 	{
1428*41354f4cSXi Pardee 		.devid  = PMC_DEVID_NVL_PCHS,
1429*41354f4cSXi Pardee 		.map    = &nvl_pchs_reg_map,
1430*41354f4cSXi Pardee 	},
1431*41354f4cSXi Pardee 	{}
1432*41354f4cSXi Pardee };
1433*41354f4cSXi Pardee 
1434*41354f4cSXi Pardee static const char *nvl_ltr_block_counter_arr[] = {
1435*41354f4cSXi Pardee 	"PKGC_PREVENT_LTR_IADOMAIN",
1436*41354f4cSXi Pardee 	"PKGC_PREVENT_LTR_GDIE",
1437*41354f4cSXi Pardee 	"PKGC_PREVENT_LTR_PCH",
1438*41354f4cSXi Pardee 	"PKGC_PREVENT_LTR_DISPLAY",
1439*41354f4cSXi Pardee 	"PKGC_PREVENT_LTR_IPU",
1440*41354f4cSXi Pardee 	NULL
1441*41354f4cSXi Pardee };
1442*41354f4cSXi Pardee 
1443*41354f4cSXi Pardee static const char *nvl_pkgc_blocker_residency[] = {
1444*41354f4cSXi Pardee 	"PKGC_BLOCK_RESIDENCY_INVALID",
1445*41354f4cSXi Pardee 	"PKGC_BLOCK_RESIDENCY_MISC",
1446*41354f4cSXi Pardee 	"PKGC_BLOCK_RESIDENCY_CDIE_MISC",
1447*41354f4cSXi Pardee 	"PKGC_BLOCK_RESIDENCY_MEDIA_MISC",
1448*41354f4cSXi Pardee 	"PKGC_BLOCK_RESIDENCY_GT_MISC",
1449*41354f4cSXi Pardee 	"PKGC_BLOCK_RESIDENCY_HUBATOM_MISC",
1450*41354f4cSXi Pardee 	"PKGC_BLOCK_RESIDENCY_IPU_BUSY",
1451*41354f4cSXi Pardee 	"PKGC_BLOCK_RESIDENCY_IPU_LTR",
1452*41354f4cSXi Pardee 	"PKGC_BLOCK_RESIDENCY_IPU_TIMER",
1453*41354f4cSXi Pardee 	"PKGC_BLOCK_RESIDENCY_DISP_BUSY",
1454*41354f4cSXi Pardee 	"PKGC_BLOCK_RESIDENCY_DISP_LTR",
1455*41354f4cSXi Pardee 	"PKGC_BLOCK_RESIDENCY_DISP_TIMER",
1456*41354f4cSXi Pardee 	"PKGC_BLOCK_RESIDENCY_VPU_BUSY",
1457*41354f4cSXi Pardee 	"PKGC_BLOCK_RESIDENCY_VPU_TIMER",
1458*41354f4cSXi Pardee 	"PKGC_BLOCK_RESIDENCY_PMC_BUSY",
1459*41354f4cSXi Pardee 	"PKGC_BLOCK_RESIDENCY_PMC_LTR",
1460*41354f4cSXi Pardee 	"PKGC_BLOCK_RESIDENCY_PMC_TIMER",
1461*41354f4cSXi Pardee 	"PKGC_BLOCK_RESIDENCY_HUBATOM_ARAT",
1462*41354f4cSXi Pardee 	"PKGC_BLOCK_RESIDENCY_CDIE0_ARAT",
1463*41354f4cSXi Pardee 	"PKGC_BLOCK_RESIDENCY_CDIE1_ARAT",
1464*41354f4cSXi Pardee 	"PKGC_BLOCK_RESIDENCY_GT_ARAT",
1465*41354f4cSXi Pardee 	"PKGC_BLOCK_RESIDENCY_MEDIA_ARAT",
1466*41354f4cSXi Pardee 	"PKGC_BLOCK_RESIDENCY_DEMOTION",
1467*41354f4cSXi Pardee 	"PKGC_BLOCK_RESIDENCY_THERMALS",
1468*41354f4cSXi Pardee 	"PKGC_BLOCK_RESIDENCY_SNCU",
1469*41354f4cSXi Pardee 	"PKGC_BLOCK_RESIDENCY_SVTU",
1470*41354f4cSXi Pardee 	"PKGC_BLOCK_RESIDENCY_IAA",
1471*41354f4cSXi Pardee 	"PKGC_BLOCK_RESIDENCY_IOC",
1472*41354f4cSXi Pardee 	NULL,
1473*41354f4cSXi Pardee };
1474*41354f4cSXi Pardee 
1475*41354f4cSXi Pardee static const u8 nvl_pmc_list[] = {PMC_IDX_MAIN, PMC_IDX_PCH};
1476*41354f4cSXi Pardee 
1477*41354f4cSXi Pardee #define NVL_NPU_PCI_DEV                0xd71d
1478*41354f4cSXi Pardee 
1479*41354f4cSXi Pardee /*
1480*41354f4cSXi Pardee  * Set power state of select devices that do not have drivers to D3
1481*41354f4cSXi Pardee  * so that they do not block Package C entry.
1482*41354f4cSXi Pardee  */
1483*41354f4cSXi Pardee static void nvl_d3_fixup(void)
1484*41354f4cSXi Pardee {
1485*41354f4cSXi Pardee 	pmc_core_set_device_d3(NVL_NPU_PCI_DEV);
1486*41354f4cSXi Pardee }
1487*41354f4cSXi Pardee 
1488*41354f4cSXi Pardee static int nvl_resume(struct pmc_dev *pmcdev)
1489*41354f4cSXi Pardee {
1490*41354f4cSXi Pardee 	nvl_d3_fixup();
1491*41354f4cSXi Pardee 	return cnl_resume(pmcdev);
1492*41354f4cSXi Pardee }
1493*41354f4cSXi Pardee 
1494*41354f4cSXi Pardee static int nvl_core_init(struct pmc_dev *pmcdev, struct pmc_dev_info *pmc_dev_info)
1495*41354f4cSXi Pardee {
1496*41354f4cSXi Pardee 	nvl_d3_fixup();
1497*41354f4cSXi Pardee 	return generic_core_init(pmcdev, pmc_dev_info);
1498*41354f4cSXi Pardee }
1499*41354f4cSXi Pardee 
1500*41354f4cSXi Pardee static u32 nvl_pmt_dmu_guids[] = {NVL_PMT_DMU_GUID, 0x0};
1501*41354f4cSXi Pardee struct pmc_dev_info nvl_s_pmc_dev = {
1502*41354f4cSXi Pardee 	.num_pmcs = ARRAY_SIZE(nvl_pmc_list),
1503*41354f4cSXi Pardee 	.pmc_list = nvl_pmc_list,
1504*41354f4cSXi Pardee 	.regmap_list = nvl_pmc_info_list,
1505*41354f4cSXi Pardee 	.map = &nvl_pcds_reg_map,
1506*41354f4cSXi Pardee 	.sub_req_show = &pmc_core_substate_blk_req_fops,
1507*41354f4cSXi Pardee 	.suspend = cnl_suspend,
1508*41354f4cSXi Pardee 	.resume = nvl_resume,
1509*41354f4cSXi Pardee 	.init = nvl_core_init,
1510*41354f4cSXi Pardee 	.sub_req = pmc_core_pmt_get_blk_sub_req,
1511*41354f4cSXi Pardee 	.dmu_guids = nvl_pmt_dmu_guids,
1512*41354f4cSXi Pardee 	.pc_guid = NVL_PMT_PC_GUID,
1513*41354f4cSXi Pardee 	.pkgc_ltr_blocker_offset = NVL_LTR_BLK_OFFSET,
1514*41354f4cSXi Pardee 	.pkgc_ltr_blocker_counters = nvl_ltr_block_counter_arr,
1515*41354f4cSXi Pardee 	.pkgc_blocker_offset = NVL_PKGC_BLK_OFFSET,
1516*41354f4cSXi Pardee 	.pkgc_blocker_counters = nvl_pkgc_blocker_residency,
1517*41354f4cSXi Pardee 	.ssram_hidden = false,
1518*41354f4cSXi Pardee 	.die_c6_offset = NVL_PMT_DMU_DIE_C6_OFFSET,
1519*41354f4cSXi Pardee };
1520*41354f4cSXi Pardee 
1521*41354f4cSXi Pardee struct pmc_dev_info nvl_h_pmc_dev = {
1522*41354f4cSXi Pardee 	.num_pmcs = ARRAY_SIZE(nvl_pmc_list),
1523*41354f4cSXi Pardee 	.pmc_list = nvl_pmc_list,
1524*41354f4cSXi Pardee 	.regmap_list = nvl_pmc_info_list,
1525*41354f4cSXi Pardee 	.map = &nvl_pcdh_reg_map,
1526*41354f4cSXi Pardee 	.sub_req_show = &pmc_core_substate_blk_req_fops,
1527*41354f4cSXi Pardee 	.suspend = cnl_suspend,
1528*41354f4cSXi Pardee 	.resume = nvl_resume,
1529*41354f4cSXi Pardee 	.init = nvl_core_init,
1530*41354f4cSXi Pardee 	.sub_req = pmc_core_pmt_get_blk_sub_req,
1531*41354f4cSXi Pardee 	.dmu_guids = nvl_pmt_dmu_guids,
1532*41354f4cSXi Pardee 	.pc_guid = NVL_PMT_PC_GUID,
1533*41354f4cSXi Pardee 	.pkgc_ltr_blocker_offset = NVL_LTR_BLK_OFFSET,
1534*41354f4cSXi Pardee 	.pkgc_ltr_blocker_counters = nvl_ltr_block_counter_arr,
1535*41354f4cSXi Pardee 	.pkgc_blocker_offset = NVL_PKGC_BLK_OFFSET,
1536*41354f4cSXi Pardee 	.pkgc_blocker_counters = nvl_pkgc_blocker_residency,
1537*41354f4cSXi Pardee 	.ssram_hidden = false,
1538*41354f4cSXi Pardee 	.die_c6_offset = NVL_PMT_DMU_DIE_C6_OFFSET,
1539*41354f4cSXi Pardee };
1540