]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
platform/x86:intel/pmc: Enable SSRAM support for Wildcat Lake
authorXi Pardee <xi.pardee@linux.intel.com>
Wed, 5 Nov 2025 21:50:15 +0000 (13:50 -0800)
committerIlpo Järvinen <ilpo.jarvinen@linux.intel.com>
Fri, 7 Nov 2025 16:49:40 +0000 (18:49 +0200)
Enable Wildcat Lake platforms to achieve PMC information from
Intel PMC SSRAM Telemetry driver and substate requirements data
from telemetry region.

Signed-off-by: Xi Pardee <xi.pardee@linux.intel.com>
Link: https://patch.msgid.link/20251105215020.1984036-2-xi.pardee@linux.intel.com
Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
drivers/platform/x86/intel/pmc/core.h
drivers/platform/x86/intel/pmc/wcl.c

index 61c8d3c5faa0f9f0ddd973f15b139d121f9141aa..272fb4f57f34635435a30af7531b0110dc04185a 100644 (file)
@@ -304,6 +304,8 @@ enum ppfear_regs {
 /* Wildcat Lake */
 #define WCL_PMC_LTR_RESERVED                   0x1B64
 #define WCL_PCD_PMC_MMIO_REG_LEN               0x3178
+#define WCL_NUM_S0IX_BLOCKER                   94
+#define WCL_BLK_REQ_OFFSET                     50
 
 /* SSRAM PMC Device ID */
 /* LNL */
index 85e90a639e6519326a51e2f936cdd93bf2be8f4c..a45707e6364f2b0f6cd68d16dc9495566578fd8f 100644 (file)
@@ -11,6 +11,9 @@
 
 #include "core.h"
 
+/* PMC SSRAM PMT Telemetry GUIDS */
+#define PCDN_LPM_REQ_GUID 0x33747648
+
 static const struct pmc_bit_map wcl_pcdn_pfear_map[] = {
        {"PMC_0",               BIT(0)},
        {"FUSE_OSSE",           BIT(1)},
@@ -453,6 +456,17 @@ static const struct pmc_reg_map wcl_pcdn_reg_map = {
        .lpm_live_status_offset = MTL_LPM_LIVE_STATUS_OFFSET,
        .s0ix_blocker_maps = wcl_pcdn_blk_maps,
        .s0ix_blocker_offset = LNL_S0IX_BLOCKER_OFFSET,
+       .num_s0ix_blocker = WCL_NUM_S0IX_BLOCKER,
+       .blocker_req_offset = WCL_BLK_REQ_OFFSET,
+       .lpm_req_guid = PCDN_LPM_REQ_GUID,
+};
+
+static struct pmc_info wcl_pmc_info_list[] = {
+       {
+               .devid  = PMC_DEVID_WCL_PCDN,
+               .map    = &wcl_pcdn_reg_map,
+       },
+       {}
 };
 
 #define WCL_NPU_PCI_DEV                0xfd3e
@@ -479,8 +493,12 @@ static int wcl_core_init(struct pmc_dev *pmcdev, struct pmc_dev_info *pmc_dev_in
 }
 
 struct pmc_dev_info wcl_pmc_dev = {
+       .pci_func = 2,
+       .regmap_list = wcl_pmc_info_list,
        .map = &wcl_pcdn_reg_map,
+       .sub_req_show = &pmc_core_substate_blk_req_fops,
        .suspend = cnl_suspend,
        .resume = wcl_resume,
        .init = wcl_core_init,
+       .sub_req = pmc_core_pmt_get_blk_sub_req,
 };