Skip to content

Commit acfa7a3

Browse files
committed
Merge tag 'platform-drivers-x86-v7.0-4' of git://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86
Pull x86 platform drivers fixes from Ilpo Järvinen: - amd/pmc: Add Thinkpad L14 Gen3 to quirk_s2idle_bug - asus-armoury: Add support for FA607NU, GU605MU, and GV302XU. - intel-uncore-freq: Handle autonomous UFS status bit - ISST: Handle cases with less than max buckets correctly - intel-uncore-freq & ISST: Mark minor version 3 supported (no additional driver changes required) * tag 'platform-drivers-x86-v7.0-4' of git://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86: platform/x86: asus-armoury: add support for GU605MU platform/x86: asus-armoury: add support for FA607NU platform/x86: asus-armoury: add support for GV302XU platform/x86/amd: pmc: Add Thinkpad L14 Gen3 to quirk_s2idle_bug platform/x86/intel-uncore-freq: Increase minor version platform/x86: ISST: Increase minor version platform/x86/intel-uncore-freq: Handle autonomous UFS status bit platform/x86: ISST: Reset core count to 0
2 parents 7f87a5e + 5d48666 commit acfa7a3

4 files changed

Lines changed: 106 additions & 3 deletions

File tree

drivers/platform/x86/amd/pmc/pmc-quirks.c

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -203,6 +203,15 @@ static const struct dmi_system_id fwbug_list[] = {
203203
DMI_MATCH(DMI_PRODUCT_NAME, "82XQ"),
204204
}
205205
},
206+
/* https://bugzilla.kernel.org/show_bug.cgi?id=221273 */
207+
{
208+
.ident = "Thinkpad L14 Gen3",
209+
.driver_data = &quirk_s2idle_bug,
210+
.matches = {
211+
DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
212+
DMI_MATCH(DMI_PRODUCT_NAME, "21C6"),
213+
}
214+
},
206215
/* https://gitlab.freedesktop.org/drm/amd/-/issues/4434 */
207216
{
208217
.ident = "Lenovo Yoga 6 13ALC6",

drivers/platform/x86/asus-armoury.h

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -592,6 +592,37 @@ static const struct dmi_system_id power_limits[] = {
592592
},
593593
},
594594
},
595+
{
596+
.matches = {
597+
DMI_MATCH(DMI_BOARD_NAME, "FA607NU"),
598+
},
599+
.driver_data = &(struct power_data) {
600+
.ac_data = &(struct power_limits) {
601+
.ppt_pl1_spl_min = 15,
602+
.ppt_pl1_spl_max = 80,
603+
.ppt_pl2_sppt_min = 35,
604+
.ppt_pl2_sppt_max = 80,
605+
.ppt_pl3_fppt_min = 35,
606+
.ppt_pl3_fppt_max = 80,
607+
.nv_dynamic_boost_min = 5,
608+
.nv_dynamic_boost_max = 25,
609+
.nv_temp_target_min = 75,
610+
.nv_temp_target_max = 87,
611+
},
612+
.dc_data = &(struct power_limits) {
613+
.ppt_pl1_spl_min = 25,
614+
.ppt_pl1_spl_def = 45,
615+
.ppt_pl1_spl_max = 65,
616+
.ppt_pl2_sppt_min = 25,
617+
.ppt_pl2_sppt_def = 54,
618+
.ppt_pl2_sppt_max = 65,
619+
.ppt_pl3_fppt_min = 25,
620+
.ppt_pl3_fppt_max = 65,
621+
.nv_temp_target_min = 75,
622+
.nv_temp_target_max = 87,
623+
},
624+
},
625+
},
595626
{
596627
.matches = {
597628
DMI_MATCH(DMI_BOARD_NAME, "FA607P"),
@@ -1309,6 +1340,34 @@ static const struct dmi_system_id power_limits[] = {
13091340
.requires_fan_curve = true,
13101341
},
13111342
},
1343+
{
1344+
.matches = {
1345+
DMI_MATCH(DMI_BOARD_NAME, "GU605MU"),
1346+
},
1347+
.driver_data = &(struct power_data) {
1348+
.ac_data = &(struct power_limits) {
1349+
.ppt_pl1_spl_min = 28,
1350+
.ppt_pl1_spl_max = 90,
1351+
.ppt_pl2_sppt_min = 28,
1352+
.ppt_pl2_sppt_max = 135,
1353+
.nv_dynamic_boost_min = 5,
1354+
.nv_dynamic_boost_max = 20,
1355+
.nv_temp_target_min = 75,
1356+
.nv_temp_target_max = 87,
1357+
.nv_tgp_min = 55,
1358+
.nv_tgp_max = 85,
1359+
},
1360+
.dc_data = &(struct power_limits) {
1361+
.ppt_pl1_spl_min = 25,
1362+
.ppt_pl1_spl_max = 35,
1363+
.ppt_pl2_sppt_min = 38,
1364+
.ppt_pl2_sppt_max = 53,
1365+
.nv_temp_target_min = 75,
1366+
.nv_temp_target_max = 87,
1367+
},
1368+
.requires_fan_curve = true,
1369+
},
1370+
},
13121371
{
13131372
.matches = {
13141373
DMI_MATCH(DMI_BOARD_NAME, "GU605M"),
@@ -1376,6 +1435,33 @@ static const struct dmi_system_id power_limits[] = {
13761435
},
13771436
},
13781437
},
1438+
{
1439+
.matches = {
1440+
DMI_MATCH(DMI_BOARD_NAME, "GV302XU"),
1441+
},
1442+
.driver_data = &(struct power_data) {
1443+
.ac_data = &(struct power_limits) {
1444+
.ppt_pl1_spl_min = 15,
1445+
.ppt_pl1_spl_max = 55,
1446+
.ppt_pl2_sppt_min = 25,
1447+
.ppt_pl2_sppt_max = 60,
1448+
.ppt_pl3_fppt_min = 35,
1449+
.ppt_pl3_fppt_max = 65,
1450+
.nv_temp_target_min = 75,
1451+
.nv_temp_target_max = 87,
1452+
},
1453+
.dc_data = &(struct power_limits) {
1454+
.ppt_pl1_spl_min = 15,
1455+
.ppt_pl1_spl_max = 35,
1456+
.ppt_pl2_sppt_min = 25,
1457+
.ppt_pl2_sppt_max = 35,
1458+
.ppt_pl3_fppt_min = 35,
1459+
.ppt_pl3_fppt_max = 65,
1460+
.nv_temp_target_min = 75,
1461+
.nv_temp_target_max = 87,
1462+
},
1463+
},
1464+
},
13791465
{
13801466
.matches = {
13811467
DMI_MATCH(DMI_BOARD_NAME, "GV302XV"),

drivers/platform/x86/intel/speed_select_if/isst_tpmi_core.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636

3737
/* Supported SST hardware version by this driver */
3838
#define ISST_MAJOR_VERSION 0
39-
#define ISST_MINOR_VERSION 2
39+
#define ISST_MINOR_VERSION 3
4040

4141
/*
4242
* Used to indicate if value read from MMIO needs to get multiplied
@@ -1461,6 +1461,8 @@ static int isst_if_get_turbo_freq_info(void __user *argp)
14611461
SST_MUL_FACTOR_FREQ)
14621462
}
14631463

1464+
memset(turbo_freq.bucket_core_counts, 0, sizeof(turbo_freq.bucket_core_counts));
1465+
14641466
if (feature_rev >= 2) {
14651467
bool has_tf_info_8 = false;
14661468

drivers/platform/x86/intel/uncore-frequency/uncore-frequency-tpmi.c

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
#include "uncore-frequency-common.h"
3232

3333
#define UNCORE_MAJOR_VERSION 0
34-
#define UNCORE_MINOR_VERSION 2
34+
#define UNCORE_MINOR_VERSION 3
3535
#define UNCORE_ELC_SUPPORTED_VERSION 2
3636
#define UNCORE_HEADER_INDEX 0
3737
#define UNCORE_FABRIC_CLUSTER_OFFSET 8
@@ -537,6 +537,7 @@ static void set_cdie_id(int domain_id, struct tpmi_uncore_cluster_info *cluster_
537537
#define UNCORE_VERSION_MASK GENMASK_ULL(7, 0)
538538
#define UNCORE_LOCAL_FABRIC_CLUSTER_ID_MASK GENMASK_ULL(15, 8)
539539
#define UNCORE_CLUSTER_OFF_MASK GENMASK_ULL(7, 0)
540+
#define UNCORE_AUTONOMOUS_UFS_DISABLED BIT(32)
540541
#define UNCORE_MAX_CLUSTER_PER_DOMAIN 8
541542

542543
static int uncore_probe(struct auxiliary_device *auxdev, const struct auxiliary_device_id *id)
@@ -598,6 +599,7 @@ static int uncore_probe(struct auxiliary_device *auxdev, const struct auxiliary_
598599

599600
for (i = 0; i < num_resources; ++i) {
600601
struct tpmi_uncore_power_domain_info *pd_info;
602+
bool auto_ufs_enabled;
601603
struct resource *res;
602604
u64 cluster_offset;
603605
u8 cluster_mask;
@@ -647,6 +649,8 @@ static int uncore_probe(struct auxiliary_device *auxdev, const struct auxiliary_
647649
continue;
648650
}
649651

652+
auto_ufs_enabled = !(header & UNCORE_AUTONOMOUS_UFS_DISABLED);
653+
650654
/* Find out number of clusters in this resource */
651655
pd_info->cluster_count = hweight8(cluster_mask);
652656

@@ -689,7 +693,9 @@ static int uncore_probe(struct auxiliary_device *auxdev, const struct auxiliary_
689693

690694
cluster_info->uncore_root = tpmi_uncore;
691695

692-
if (TPMI_MINOR_VERSION(pd_info->ufs_header_ver) >= UNCORE_ELC_SUPPORTED_VERSION)
696+
if ((TPMI_MINOR_VERSION(pd_info->ufs_header_ver) >=
697+
UNCORE_ELC_SUPPORTED_VERSION) &&
698+
auto_ufs_enabled)
693699
cluster_info->elc_supported = true;
694700

695701
ret = uncore_freq_add_entry(&cluster_info->uncore_data, 0);

0 commit comments

Comments
 (0)