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