platform-drivers-x86 for v7.0-4

New HW Support and Fixes:
 
 - 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)
 
 The following is an automated shortlog grouped by driver:
 
 amd: pmc:
  -  Add Thinkpad L14 Gen3 to quirk_s2idle_bug
 
 asus-armoury:
  -  add support for FA607NU
  -  add support for GU605MU
  -  add support for GV302XU
 
 intel-uncore-freq:
  -  Handle autonomous UFS status bit
  -  Increase minor version
 
 ISST:
  -  Increase minor version
  -  Reset core count to 0
 -----BEGIN PGP SIGNATURE-----
 
 iHUEABYIAB0WIQSCSUwRdwTNL2MhaBlZrE9hU+XOMQUCadeRLQAKCRBZrE9hU+XO
 MUZcAP4zQhma28s27tvEW1vgiwXN+DkasYw2ujLpvbYuRIGAawEAnPnAlQD27btE
 mN1VbuaQ0NTXpfURaHFW9M8n4u56hAE=
 =KAhE
 -----END PGP SIGNATURE-----

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
master
Linus Torvalds 2026-04-09 08:34:08 -07:00
commit acfa7a3544
4 changed files with 106 additions and 3 deletions

View File

@ -203,6 +203,15 @@ static const struct dmi_system_id fwbug_list[] = {
DMI_MATCH(DMI_PRODUCT_NAME, "82XQ"),
}
},
/* https://bugzilla.kernel.org/show_bug.cgi?id=221273 */
{
.ident = "Thinkpad L14 Gen3",
.driver_data = &quirk_s2idle_bug,
.matches = {
DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
DMI_MATCH(DMI_PRODUCT_NAME, "21C6"),
}
},
/* https://gitlab.freedesktop.org/drm/amd/-/issues/4434 */
{
.ident = "Lenovo Yoga 6 13ALC6",

View File

@ -592,6 +592,37 @@ static const struct dmi_system_id power_limits[] = {
},
},
},
{
.matches = {
DMI_MATCH(DMI_BOARD_NAME, "FA607NU"),
},
.driver_data = &(struct power_data) {
.ac_data = &(struct power_limits) {
.ppt_pl1_spl_min = 15,
.ppt_pl1_spl_max = 80,
.ppt_pl2_sppt_min = 35,
.ppt_pl2_sppt_max = 80,
.ppt_pl3_fppt_min = 35,
.ppt_pl3_fppt_max = 80,
.nv_dynamic_boost_min = 5,
.nv_dynamic_boost_max = 25,
.nv_temp_target_min = 75,
.nv_temp_target_max = 87,
},
.dc_data = &(struct power_limits) {
.ppt_pl1_spl_min = 25,
.ppt_pl1_spl_def = 45,
.ppt_pl1_spl_max = 65,
.ppt_pl2_sppt_min = 25,
.ppt_pl2_sppt_def = 54,
.ppt_pl2_sppt_max = 65,
.ppt_pl3_fppt_min = 25,
.ppt_pl3_fppt_max = 65,
.nv_temp_target_min = 75,
.nv_temp_target_max = 87,
},
},
},
{
.matches = {
DMI_MATCH(DMI_BOARD_NAME, "FA607P"),
@ -1309,6 +1340,34 @@ static const struct dmi_system_id power_limits[] = {
.requires_fan_curve = true,
},
},
{
.matches = {
DMI_MATCH(DMI_BOARD_NAME, "GU605MU"),
},
.driver_data = &(struct power_data) {
.ac_data = &(struct power_limits) {
.ppt_pl1_spl_min = 28,
.ppt_pl1_spl_max = 90,
.ppt_pl2_sppt_min = 28,
.ppt_pl2_sppt_max = 135,
.nv_dynamic_boost_min = 5,
.nv_dynamic_boost_max = 20,
.nv_temp_target_min = 75,
.nv_temp_target_max = 87,
.nv_tgp_min = 55,
.nv_tgp_max = 85,
},
.dc_data = &(struct power_limits) {
.ppt_pl1_spl_min = 25,
.ppt_pl1_spl_max = 35,
.ppt_pl2_sppt_min = 38,
.ppt_pl2_sppt_max = 53,
.nv_temp_target_min = 75,
.nv_temp_target_max = 87,
},
.requires_fan_curve = true,
},
},
{
.matches = {
DMI_MATCH(DMI_BOARD_NAME, "GU605M"),
@ -1376,6 +1435,33 @@ static const struct dmi_system_id power_limits[] = {
},
},
},
{
.matches = {
DMI_MATCH(DMI_BOARD_NAME, "GV302XU"),
},
.driver_data = &(struct power_data) {
.ac_data = &(struct power_limits) {
.ppt_pl1_spl_min = 15,
.ppt_pl1_spl_max = 55,
.ppt_pl2_sppt_min = 25,
.ppt_pl2_sppt_max = 60,
.ppt_pl3_fppt_min = 35,
.ppt_pl3_fppt_max = 65,
.nv_temp_target_min = 75,
.nv_temp_target_max = 87,
},
.dc_data = &(struct power_limits) {
.ppt_pl1_spl_min = 15,
.ppt_pl1_spl_max = 35,
.ppt_pl2_sppt_min = 25,
.ppt_pl2_sppt_max = 35,
.ppt_pl3_fppt_min = 35,
.ppt_pl3_fppt_max = 65,
.nv_temp_target_min = 75,
.nv_temp_target_max = 87,
},
},
},
{
.matches = {
DMI_MATCH(DMI_BOARD_NAME, "GV302XV"),

View File

@ -36,7 +36,7 @@
/* Supported SST hardware version by this driver */
#define ISST_MAJOR_VERSION 0
#define ISST_MINOR_VERSION 2
#define ISST_MINOR_VERSION 3
/*
* 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)
SST_MUL_FACTOR_FREQ)
}
memset(turbo_freq.bucket_core_counts, 0, sizeof(turbo_freq.bucket_core_counts));
if (feature_rev >= 2) {
bool has_tf_info_8 = false;

View File

@ -31,7 +31,7 @@
#include "uncore-frequency-common.h"
#define UNCORE_MAJOR_VERSION 0
#define UNCORE_MINOR_VERSION 2
#define UNCORE_MINOR_VERSION 3
#define UNCORE_ELC_SUPPORTED_VERSION 2
#define UNCORE_HEADER_INDEX 0
#define UNCORE_FABRIC_CLUSTER_OFFSET 8
@ -537,6 +537,7 @@ static void set_cdie_id(int domain_id, struct tpmi_uncore_cluster_info *cluster_
#define UNCORE_VERSION_MASK GENMASK_ULL(7, 0)
#define UNCORE_LOCAL_FABRIC_CLUSTER_ID_MASK GENMASK_ULL(15, 8)
#define UNCORE_CLUSTER_OFF_MASK GENMASK_ULL(7, 0)
#define UNCORE_AUTONOMOUS_UFS_DISABLED BIT(32)
#define UNCORE_MAX_CLUSTER_PER_DOMAIN 8
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_
for (i = 0; i < num_resources; ++i) {
struct tpmi_uncore_power_domain_info *pd_info;
bool auto_ufs_enabled;
struct resource *res;
u64 cluster_offset;
u8 cluster_mask;
@ -647,6 +649,8 @@ static int uncore_probe(struct auxiliary_device *auxdev, const struct auxiliary_
continue;
}
auto_ufs_enabled = !(header & UNCORE_AUTONOMOUS_UFS_DISABLED);
/* Find out number of clusters in this resource */
pd_info->cluster_count = hweight8(cluster_mask);
@ -689,7 +693,9 @@ static int uncore_probe(struct auxiliary_device *auxdev, const struct auxiliary_
cluster_info->uncore_root = tpmi_uncore;
if (TPMI_MINOR_VERSION(pd_info->ufs_header_ver) >= UNCORE_ELC_SUPPORTED_VERSION)
if ((TPMI_MINOR_VERSION(pd_info->ufs_header_ver) >=
UNCORE_ELC_SUPPORTED_VERSION) &&
auto_ufs_enabled)
cluster_info->elc_supported = true;
ret = uncore_freq_add_entry(&cluster_info->uncore_data, 0);