Skip to content

Commit 284a2f8

Browse files
committed
Merge tag 'platform-drivers-x86-v6.12-3' of git://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86
Pull x86 platform driver fixes from Hans de Goede: - Asus thermal profile fix, fixing performance issues on Lunar Lake - Intel PMC: one revert for a lockdep issue and one bugfix - Dell WMI: Ignore some WMI events on suspend/resume to silence warnings * tag 'platform-drivers-x86-v6.12-3' of git://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86: platform/x86: asus-wmi: Fix thermal profile initialization platform/x86: dell-wmi: Ignore suspend notifications platform/x86/intel/pmc: Fix pmc_core_iounmap to call iounmap for valid addresses platform/x86:intel/pmc: Revert "Enable the ACPI PM Timer to be turned off when suspended"
2 parents 7bec465 + b012170 commit 284a2f8

File tree

10 files changed

+22
-65
lines changed

10 files changed

+22
-65
lines changed

drivers/platform/x86/asus-wmi.c

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3908,6 +3908,16 @@ static int platform_profile_setup(struct asus_wmi *asus)
39083908
if (!asus->throttle_thermal_policy_dev)
39093909
return 0;
39103910

3911+
/*
3912+
* We need to set the default thermal profile during probe or otherwise
3913+
* the system will often remain in silent mode, causing low performance.
3914+
*/
3915+
err = throttle_thermal_policy_set_default(asus);
3916+
if (err < 0) {
3917+
pr_warn("Failed to set default thermal profile\n");
3918+
return err;
3919+
}
3920+
39113921
dev_info(dev, "Using throttle_thermal_policy for platform_profile support\n");
39123922

39133923
asus->platform_profile_handler.profile_get = asus_wmi_platform_profile_get;

drivers/platform/x86/dell/dell-wmi-base.c

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -264,6 +264,15 @@ static const struct key_entry dell_wmi_keymap_type_0010[] = {
264264
/*Speaker Mute*/
265265
{ KE_KEY, 0x109, { KEY_MUTE} },
266266

267+
/* S2Idle screen off */
268+
{ KE_IGNORE, 0x120, { KEY_RESERVED }},
269+
270+
/* Leaving S4 or S2Idle suspend */
271+
{ KE_IGNORE, 0x130, { KEY_RESERVED }},
272+
273+
/* Entering S2Idle suspend */
274+
{ KE_IGNORE, 0x140, { KEY_RESERVED }},
275+
267276
/* Mic mute */
268277
{ KE_KEY, 0x150, { KEY_MICMUTE } },
269278

drivers/platform/x86/intel/pmc/adl.c

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -295,8 +295,6 @@ const struct pmc_reg_map adl_reg_map = {
295295
.ppfear_buckets = CNP_PPFEAR_NUM_ENTRIES,
296296
.pm_cfg_offset = CNP_PMC_PM_CFG_OFFSET,
297297
.pm_read_disable_bit = CNP_PMC_READ_DISABLE_BIT,
298-
.acpi_pm_tmr_ctl_offset = SPT_PMC_ACPI_PM_TMR_CTL_OFFSET,
299-
.acpi_pm_tmr_disable_bit = SPT_PMC_BIT_ACPI_PM_TMR_DISABLE,
300298
.ltr_ignore_max = ADL_NUM_IP_IGN_ALLOWED,
301299
.lpm_num_modes = ADL_LPM_NUM_MODES,
302300
.lpm_num_maps = ADL_LPM_NUM_MAPS,

drivers/platform/x86/intel/pmc/cnp.c

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -200,8 +200,6 @@ const struct pmc_reg_map cnp_reg_map = {
200200
.ppfear_buckets = CNP_PPFEAR_NUM_ENTRIES,
201201
.pm_cfg_offset = CNP_PMC_PM_CFG_OFFSET,
202202
.pm_read_disable_bit = CNP_PMC_READ_DISABLE_BIT,
203-
.acpi_pm_tmr_ctl_offset = SPT_PMC_ACPI_PM_TMR_CTL_OFFSET,
204-
.acpi_pm_tmr_disable_bit = SPT_PMC_BIT_ACPI_PM_TMR_DISABLE,
205203
.ltr_ignore_max = CNP_NUM_IP_IGN_ALLOWED,
206204
.etr3_offset = ETR3_OFFSET,
207205
};

drivers/platform/x86/intel/pmc/core.c

Lines changed: 0 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111

1212
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
1313

14-
#include <linux/acpi_pmtmr.h>
1514
#include <linux/bitfield.h>
1615
#include <linux/debugfs.h>
1716
#include <linux/delay.h>
@@ -1258,39 +1257,6 @@ static bool pmc_core_is_pson_residency_enabled(struct pmc_dev *pmcdev)
12581257
return val == 1;
12591258
}
12601259

1261-
/*
1262-
* Enable or disable ACPI PM Timer
1263-
*
1264-
* This function is intended to be a callback for ACPI PM suspend/resume event.
1265-
* The ACPI PM Timer is enabled on resume only if it was enabled during suspend.
1266-
*/
1267-
static void pmc_core_acpi_pm_timer_suspend_resume(void *data, bool suspend)
1268-
{
1269-
struct pmc_dev *pmcdev = data;
1270-
struct pmc *pmc = pmcdev->pmcs[PMC_IDX_MAIN];
1271-
const struct pmc_reg_map *map = pmc->map;
1272-
bool enabled;
1273-
u32 reg;
1274-
1275-
if (!map->acpi_pm_tmr_ctl_offset)
1276-
return;
1277-
1278-
guard(mutex)(&pmcdev->lock);
1279-
1280-
if (!suspend && !pmcdev->enable_acpi_pm_timer_on_resume)
1281-
return;
1282-
1283-
reg = pmc_core_reg_read(pmc, map->acpi_pm_tmr_ctl_offset);
1284-
enabled = !(reg & map->acpi_pm_tmr_disable_bit);
1285-
if (suspend)
1286-
reg |= map->acpi_pm_tmr_disable_bit;
1287-
else
1288-
reg &= ~map->acpi_pm_tmr_disable_bit;
1289-
pmc_core_reg_write(pmc, map->acpi_pm_tmr_ctl_offset, reg);
1290-
1291-
pmcdev->enable_acpi_pm_timer_on_resume = suspend && enabled;
1292-
}
1293-
12941260
static void pmc_core_dbgfs_unregister(struct pmc_dev *pmcdev)
12951261
{
12961262
debugfs_remove_recursive(pmcdev->dbgfs_dir);
@@ -1486,7 +1452,6 @@ static int pmc_core_probe(struct platform_device *pdev)
14861452
struct pmc_dev *pmcdev;
14871453
const struct x86_cpu_id *cpu_id;
14881454
int (*core_init)(struct pmc_dev *pmcdev);
1489-
const struct pmc_reg_map *map;
14901455
struct pmc *primary_pmc;
14911456
int ret;
14921457

@@ -1545,11 +1510,6 @@ static int pmc_core_probe(struct platform_device *pdev)
15451510
pm_report_max_hw_sleep(FIELD_MAX(SLP_S0_RES_COUNTER_MASK) *
15461511
pmc_core_adjust_slp_s0_step(primary_pmc, 1));
15471512

1548-
map = primary_pmc->map;
1549-
if (map->acpi_pm_tmr_ctl_offset)
1550-
acpi_pmtmr_register_suspend_resume_callback(pmc_core_acpi_pm_timer_suspend_resume,
1551-
pmcdev);
1552-
15531513
device_initialized = true;
15541514
dev_info(&pdev->dev, " initialized\n");
15551515

@@ -1559,12 +1519,6 @@ static int pmc_core_probe(struct platform_device *pdev)
15591519
static void pmc_core_remove(struct platform_device *pdev)
15601520
{
15611521
struct pmc_dev *pmcdev = platform_get_drvdata(pdev);
1562-
const struct pmc *pmc = pmcdev->pmcs[PMC_IDX_MAIN];
1563-
const struct pmc_reg_map *map = pmc->map;
1564-
1565-
if (map->acpi_pm_tmr_ctl_offset)
1566-
acpi_pmtmr_unregister_suspend_resume_callback();
1567-
15681522
pmc_core_dbgfs_unregister(pmcdev);
15691523
pmc_core_clean_structure(pdev);
15701524
}

drivers/platform/x86/intel/pmc/core.h

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -68,8 +68,6 @@ struct telem_endpoint;
6868
#define SPT_PMC_LTR_SCC 0x3A0
6969
#define SPT_PMC_LTR_ISH 0x3A4
7070

71-
#define SPT_PMC_ACPI_PM_TMR_CTL_OFFSET 0x18FC
72-
7371
/* Sunrise Point: PGD PFET Enable Ack Status Registers */
7472
enum ppfear_regs {
7573
SPT_PMC_XRAM_PPFEAR0A = 0x590,
@@ -150,8 +148,6 @@ enum ppfear_regs {
150148
#define SPT_PMC_VRIC1_SLPS0LVEN BIT(13)
151149
#define SPT_PMC_VRIC1_XTALSDQDIS BIT(22)
152150

153-
#define SPT_PMC_BIT_ACPI_PM_TMR_DISABLE BIT(1)
154-
155151
/* Cannonlake Power Management Controller register offsets */
156152
#define CNP_PMC_SLPS0_DBG_OFFSET 0x10B4
157153
#define CNP_PMC_PM_CFG_OFFSET 0x1818
@@ -355,8 +351,6 @@ struct pmc_reg_map {
355351
const u8 *lpm_reg_index;
356352
const u32 pson_residency_offset;
357353
const u32 pson_residency_counter_step;
358-
const u32 acpi_pm_tmr_ctl_offset;
359-
const u32 acpi_pm_tmr_disable_bit;
360354
};
361355

362356
/**
@@ -432,8 +426,6 @@ struct pmc_dev {
432426
u32 die_c6_offset;
433427
struct telem_endpoint *punit_ep;
434428
struct pmc_info *regmap_list;
435-
436-
bool enable_acpi_pm_timer_on_resume;
437429
};
438430

439431
enum pmc_index {

drivers/platform/x86/intel/pmc/core_ssram.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
#define LPM_REG_COUNT 28
3030
#define LPM_MODE_OFFSET 1
3131

32-
DEFINE_FREE(pmc_core_iounmap, void __iomem *, iounmap(_T));
32+
DEFINE_FREE(pmc_core_iounmap, void __iomem *, if (_T) iounmap(_T))
3333

3434
static u32 pmc_core_find_guid(struct pmc_info *list, const struct pmc_reg_map *map)
3535
{
@@ -262,6 +262,8 @@ pmc_core_ssram_get_pmc(struct pmc_dev *pmcdev, int pmc_idx, u32 offset)
262262

263263
ssram_base = ssram_pcidev->resource[0].start;
264264
tmp_ssram = ioremap(ssram_base, SSRAM_HDR_SIZE);
265+
if (!tmp_ssram)
266+
return -ENOMEM;
265267

266268
if (pmc_idx != PMC_IDX_MAIN) {
267269
/*

drivers/platform/x86/intel/pmc/icl.c

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,6 @@ const struct pmc_reg_map icl_reg_map = {
4646
.ppfear_buckets = ICL_PPFEAR_NUM_ENTRIES,
4747
.pm_cfg_offset = CNP_PMC_PM_CFG_OFFSET,
4848
.pm_read_disable_bit = CNP_PMC_READ_DISABLE_BIT,
49-
.acpi_pm_tmr_ctl_offset = SPT_PMC_ACPI_PM_TMR_CTL_OFFSET,
50-
.acpi_pm_tmr_disable_bit = SPT_PMC_BIT_ACPI_PM_TMR_DISABLE,
5149
.ltr_ignore_max = ICL_NUM_IP_IGN_ALLOWED,
5250
.etr3_offset = ETR3_OFFSET,
5351
};

drivers/platform/x86/intel/pmc/mtl.c

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -462,8 +462,6 @@ const struct pmc_reg_map mtl_socm_reg_map = {
462462
.ppfear_buckets = MTL_SOCM_PPFEAR_NUM_ENTRIES,
463463
.pm_cfg_offset = CNP_PMC_PM_CFG_OFFSET,
464464
.pm_read_disable_bit = CNP_PMC_READ_DISABLE_BIT,
465-
.acpi_pm_tmr_ctl_offset = SPT_PMC_ACPI_PM_TMR_CTL_OFFSET,
466-
.acpi_pm_tmr_disable_bit = SPT_PMC_BIT_ACPI_PM_TMR_DISABLE,
467465
.lpm_num_maps = ADL_LPM_NUM_MAPS,
468466
.ltr_ignore_max = MTL_SOCM_NUM_IP_IGN_ALLOWED,
469467
.lpm_res_counter_step_x2 = TGL_PMC_LPM_RES_COUNTER_STEP_X2,

drivers/platform/x86/intel/pmc/tgl.c

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -197,8 +197,6 @@ const struct pmc_reg_map tgl_reg_map = {
197197
.ppfear_buckets = ICL_PPFEAR_NUM_ENTRIES,
198198
.pm_cfg_offset = CNP_PMC_PM_CFG_OFFSET,
199199
.pm_read_disable_bit = CNP_PMC_READ_DISABLE_BIT,
200-
.acpi_pm_tmr_ctl_offset = SPT_PMC_ACPI_PM_TMR_CTL_OFFSET,
201-
.acpi_pm_tmr_disable_bit = SPT_PMC_BIT_ACPI_PM_TMR_DISABLE,
202200
.ltr_ignore_max = TGL_NUM_IP_IGN_ALLOWED,
203201
.lpm_num_maps = TGL_LPM_NUM_MAPS,
204202
.lpm_res_counter_step_x2 = TGL_PMC_LPM_RES_COUNTER_STEP_X2,

0 commit comments

Comments
 (0)