mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2026-09-22 09:34:56 +02:00
Merge tag 'thermal-6.15-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm
Pull thermal control fixes from Rafael Wysocki: "Add missing DVFS support flags for the Lunar Lake and Panther Lake platforms to the int340x Intel thermal driver and fix DLVR support for Panther Lake in it (Srinivas Pandruvada)" * tag 'thermal-6.15-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: thermal: intel: int340x: Fix Panther Lake DLVR support thermal: intel: int340x: Add missing DVFS support flags
This commit is contained in:
@@ -485,7 +485,7 @@ static const struct pci_device_id proc_thermal_pci_ids[] = {
|
||||
{ PCI_DEVICE_DATA(INTEL, ADL_THERMAL, PROC_THERMAL_FEATURE_RAPL |
|
||||
PROC_THERMAL_FEATURE_FIVR | PROC_THERMAL_FEATURE_DVFS | PROC_THERMAL_FEATURE_WT_REQ) },
|
||||
{ PCI_DEVICE_DATA(INTEL, LNLM_THERMAL, PROC_THERMAL_FEATURE_MSI_SUPPORT |
|
||||
PROC_THERMAL_FEATURE_RAPL | PROC_THERMAL_FEATURE_DLVR |
|
||||
PROC_THERMAL_FEATURE_RAPL | PROC_THERMAL_FEATURE_DLVR | PROC_THERMAL_FEATURE_DVFS |
|
||||
PROC_THERMAL_FEATURE_WT_HINT | PROC_THERMAL_FEATURE_POWER_FLOOR) },
|
||||
{ PCI_DEVICE_DATA(INTEL, MTLP_THERMAL, PROC_THERMAL_FEATURE_RAPL |
|
||||
PROC_THERMAL_FEATURE_FIVR | PROC_THERMAL_FEATURE_DVFS | PROC_THERMAL_FEATURE_DLVR |
|
||||
@@ -495,8 +495,9 @@ static const struct pci_device_id proc_thermal_pci_ids[] = {
|
||||
{ PCI_DEVICE_DATA(INTEL, RPL_THERMAL, PROC_THERMAL_FEATURE_RAPL |
|
||||
PROC_THERMAL_FEATURE_FIVR | PROC_THERMAL_FEATURE_DVFS | PROC_THERMAL_FEATURE_WT_REQ) },
|
||||
{ PCI_DEVICE_DATA(INTEL, PTL_THERMAL, PROC_THERMAL_FEATURE_RAPL |
|
||||
PROC_THERMAL_FEATURE_DLVR | PROC_THERMAL_FEATURE_MSI_SUPPORT |
|
||||
PROC_THERMAL_FEATURE_WT_HINT | PROC_THERMAL_FEATURE_POWER_FLOOR) },
|
||||
PROC_THERMAL_FEATURE_DLVR | PROC_THERMAL_FEATURE_DVFS |
|
||||
PROC_THERMAL_FEATURE_MSI_SUPPORT | PROC_THERMAL_FEATURE_WT_HINT |
|
||||
PROC_THERMAL_FEATURE_POWER_FLOOR) },
|
||||
{ },
|
||||
};
|
||||
|
||||
|
||||
@@ -166,15 +166,18 @@ static const struct mmio_reg adl_dvfs_mmio_regs[] = {
|
||||
{ 0, 0x5A40, 1, 0x1, 0}, /* rfi_disable */
|
||||
};
|
||||
|
||||
static const struct mapping_table *dlvr_mapping;
|
||||
static const struct mmio_reg *dlvr_mmio_regs_table;
|
||||
|
||||
#define RFIM_SHOW(suffix, table)\
|
||||
static ssize_t suffix##_show(struct device *dev,\
|
||||
struct device_attribute *attr,\
|
||||
char *buf)\
|
||||
{\
|
||||
const struct mapping_table *mapping = NULL;\
|
||||
const struct mmio_reg *mmio_regs = dlvr_mmio_regs_table;\
|
||||
const struct mapping_table *mapping = dlvr_mapping;\
|
||||
struct proc_thermal_device *proc_priv;\
|
||||
struct pci_dev *pdev = to_pci_dev(dev);\
|
||||
const struct mmio_reg *mmio_regs;\
|
||||
const char **match_strs;\
|
||||
int ret, err;\
|
||||
u32 reg_val;\
|
||||
@@ -186,12 +189,6 @@ static ssize_t suffix##_show(struct device *dev,\
|
||||
mmio_regs = adl_dvfs_mmio_regs;\
|
||||
} else if (table == 2) { \
|
||||
match_strs = (const char **)dlvr_strings;\
|
||||
if (pdev->device == PCI_DEVICE_ID_INTEL_LNLM_THERMAL) {\
|
||||
mmio_regs = lnl_dlvr_mmio_regs;\
|
||||
mapping = lnl_dlvr_mapping;\
|
||||
} else {\
|
||||
mmio_regs = dlvr_mmio_regs;\
|
||||
} \
|
||||
} else {\
|
||||
match_strs = (const char **)fivr_strings;\
|
||||
mmio_regs = tgl_fivr_mmio_regs;\
|
||||
@@ -214,12 +211,12 @@ static ssize_t suffix##_store(struct device *dev,\
|
||||
struct device_attribute *attr,\
|
||||
const char *buf, size_t count)\
|
||||
{\
|
||||
const struct mapping_table *mapping = NULL;\
|
||||
const struct mmio_reg *mmio_regs = dlvr_mmio_regs_table;\
|
||||
const struct mapping_table *mapping = dlvr_mapping;\
|
||||
struct proc_thermal_device *proc_priv;\
|
||||
struct pci_dev *pdev = to_pci_dev(dev);\
|
||||
unsigned int input;\
|
||||
const char **match_strs;\
|
||||
const struct mmio_reg *mmio_regs;\
|
||||
int ret, err;\
|
||||
u32 reg_val;\
|
||||
u32 mask;\
|
||||
@@ -230,12 +227,6 @@ static ssize_t suffix##_store(struct device *dev,\
|
||||
mmio_regs = adl_dvfs_mmio_regs;\
|
||||
} else if (table == 2) { \
|
||||
match_strs = (const char **)dlvr_strings;\
|
||||
if (pdev->device == PCI_DEVICE_ID_INTEL_LNLM_THERMAL) {\
|
||||
mmio_regs = lnl_dlvr_mmio_regs;\
|
||||
mapping = lnl_dlvr_mapping;\
|
||||
} else {\
|
||||
mmio_regs = dlvr_mmio_regs;\
|
||||
} \
|
||||
} else {\
|
||||
match_strs = (const char **)fivr_strings;\
|
||||
mmio_regs = tgl_fivr_mmio_regs;\
|
||||
@@ -448,6 +439,16 @@ int proc_thermal_rfim_add(struct pci_dev *pdev, struct proc_thermal_device *proc
|
||||
}
|
||||
|
||||
if (proc_priv->mmio_feature_mask & PROC_THERMAL_FEATURE_DLVR) {
|
||||
switch (pdev->device) {
|
||||
case PCI_DEVICE_ID_INTEL_LNLM_THERMAL:
|
||||
case PCI_DEVICE_ID_INTEL_PTL_THERMAL:
|
||||
dlvr_mmio_regs_table = lnl_dlvr_mmio_regs;
|
||||
dlvr_mapping = lnl_dlvr_mapping;
|
||||
break;
|
||||
default:
|
||||
dlvr_mmio_regs_table = dlvr_mmio_regs;
|
||||
break;
|
||||
}
|
||||
ret = sysfs_create_group(&pdev->dev.kobj, &dlvr_attribute_group);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
Reference in New Issue
Block a user