mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/netdev/net.git/
synced 2026-04-01 22:37:41 -04:00
Merge tag 'platform-drivers-x86-v7.0-3' of git://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86
Pull x86 platform driver fixes from Ilpo Järvinen:
"Fixes and New HW Support. The trivial drop of unused gz_chain_head is
not exactly fixes material but it allows other work to avoid problems
so I decided to take it in along with the fixes.
- amd/hsmp: Fix typo in error message
- asus-armoury: Add support for G614FP, GA503QM, GZ302EAC, and GZ302EAC
- asus-nb-wmi: Add DMI quirk for ASUS ROG Flow Z13-KJP GZ302EAC
- hp-wmi: Support for Omen 16-k0xxx, 16-wf1xxx, 16-xf0xxx
- intel-hid: Disable wakeup_mode during hibernation
- ISST:
- Check HWP support before MSR access
- Correct locked bit width
- lenovo: wmi-gamezone: Drop unused gz_chain_head
- olpc-xo175-ec: Fix overflow error message"
* tag 'platform-drivers-x86-v7.0-3' of git://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86:
platform/x86: ISST: Correct locked bit width
platform/x86: intel-hid: disable wakeup_mode during hibernation
platform/x86: asus-armoury: add support for GZ302EA and GZ302EAC
platform/x86: asus-nb-wmi: add DMI quirk for ASUS ROG Flow Z13-KJP GZ302EAC
platform/x86/amd/hsmp: Fix typo in error message
platform/olpc: olpc-xo175-ec: Fix overflow error message to print inlen
platform/x86: lenovo: wmi-gamezone: Drop gz_chain_head
platform/x86: ISST: Check HWP support before MSR access
platform/x86: hp-wmi: Add support for Omen 16-k0xxx (8A4D)
platform/x86: hp-wmi: Add support for Omen 16-wf1xxx (8C76)
platform/x86: hp-wmi: Add Omen 16-xf0xxx (8BCA) support
platform/x86: asus-armoury: add support for G614FP
platform/x86: asus-armoury: add support for GA503QM
MAINTAINERS: change email address of Denis Benato
This commit is contained in:
@@ -3986,7 +3986,7 @@ F: drivers/hwmon/asus-ec-sensors.c
|
||||
ASUS NOTEBOOKS AND EEEPC ACPI/WMI EXTRAS DRIVERS
|
||||
M: Corentin Chary <corentin.chary@gmail.com>
|
||||
M: Luke D. Jones <luke@ljones.dev>
|
||||
M: Denis Benato <benato.denis96@gmail.com>
|
||||
M: Denis Benato <denis.benato@linux.dev>
|
||||
L: platform-driver-x86@vger.kernel.org
|
||||
S: Maintained
|
||||
W: https://asus-linux.org/
|
||||
|
||||
@@ -482,7 +482,7 @@ static int olpc_xo175_ec_cmd(u8 cmd, u8 *inbuf, size_t inlen, u8 *resp,
|
||||
dev_dbg(dev, "CMD %x, %zd bytes expected\n", cmd, resp_len);
|
||||
|
||||
if (inlen > 5) {
|
||||
dev_err(dev, "command len %zd too big!\n", resp_len);
|
||||
dev_err(dev, "command len %zd too big!\n", inlen);
|
||||
return -EOVERFLOW;
|
||||
}
|
||||
|
||||
|
||||
@@ -117,7 +117,7 @@ static int __hsmp_send_message(struct hsmp_socket *sock, struct hsmp_message *ms
|
||||
}
|
||||
|
||||
if (unlikely(mbox_status == HSMP_STATUS_NOT_READY)) {
|
||||
dev_err(sock->dev, "Message ID 0x%X failure : SMU tmeout (status = 0x%X)\n",
|
||||
dev_err(sock->dev, "Message ID 0x%X failure : SMU timeout (status = 0x%X)\n",
|
||||
msg->msg_id, mbox_status);
|
||||
return -ETIMEDOUT;
|
||||
} else if (unlikely(mbox_status == HSMP_ERR_INVALID_MSG)) {
|
||||
|
||||
@@ -1080,6 +1080,20 @@ static const struct dmi_system_id power_limits[] = {
|
||||
.requires_fan_curve = true,
|
||||
},
|
||||
},
|
||||
{
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_BOARD_NAME, "GA503QM"),
|
||||
},
|
||||
.driver_data = &(struct power_data) {
|
||||
.ac_data = &(struct power_limits) {
|
||||
.ppt_pl1_spl_min = 15,
|
||||
.ppt_pl1_spl_def = 35,
|
||||
.ppt_pl1_spl_max = 80,
|
||||
.ppt_pl2_sppt_min = 65,
|
||||
.ppt_pl2_sppt_max = 80,
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_BOARD_NAME, "GA503QR"),
|
||||
@@ -1518,6 +1532,35 @@ static const struct dmi_system_id power_limits[] = {
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_BOARD_NAME, "GZ302EA"),
|
||||
},
|
||||
.driver_data = &(struct power_data) {
|
||||
.ac_data = &(struct power_limits) {
|
||||
.ppt_pl1_spl_min = 28,
|
||||
.ppt_pl1_spl_def = 60,
|
||||
.ppt_pl1_spl_max = 80,
|
||||
.ppt_pl2_sppt_min = 32,
|
||||
.ppt_pl2_sppt_def = 75,
|
||||
.ppt_pl2_sppt_max = 92,
|
||||
.ppt_pl3_fppt_min = 45,
|
||||
.ppt_pl3_fppt_def = 86,
|
||||
.ppt_pl3_fppt_max = 93,
|
||||
},
|
||||
.dc_data = &(struct power_limits) {
|
||||
.ppt_pl1_spl_min = 28,
|
||||
.ppt_pl1_spl_def = 45,
|
||||
.ppt_pl1_spl_max = 80,
|
||||
.ppt_pl2_sppt_min = 32,
|
||||
.ppt_pl2_sppt_def = 52,
|
||||
.ppt_pl2_sppt_max = 92,
|
||||
.ppt_pl3_fppt_min = 45,
|
||||
.ppt_pl3_fppt_def = 71,
|
||||
.ppt_pl3_fppt_max = 93,
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_BOARD_NAME, "G513I"),
|
||||
@@ -1596,6 +1639,40 @@ static const struct dmi_system_id power_limits[] = {
|
||||
.requires_fan_curve = true,
|
||||
},
|
||||
},
|
||||
{
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_BOARD_NAME, "G614FP"),
|
||||
},
|
||||
.driver_data = &(struct power_data) {
|
||||
.ac_data = &(struct power_limits) {
|
||||
.ppt_pl1_spl_min = 30,
|
||||
.ppt_pl1_spl_max = 120,
|
||||
.ppt_pl2_sppt_min = 65,
|
||||
.ppt_pl2_sppt_def = 140,
|
||||
.ppt_pl2_sppt_max = 165,
|
||||
.ppt_pl3_fppt_min = 65,
|
||||
.ppt_pl3_fppt_def = 140,
|
||||
.ppt_pl3_fppt_max = 165,
|
||||
.nv_temp_target_min = 75,
|
||||
.nv_temp_target_max = 87,
|
||||
.nv_dynamic_boost_min = 5,
|
||||
.nv_dynamic_boost_max = 15,
|
||||
.nv_tgp_min = 50,
|
||||
.nv_tgp_max = 100,
|
||||
},
|
||||
.dc_data = &(struct power_limits) {
|
||||
.ppt_pl1_spl_min = 25,
|
||||
.ppt_pl1_spl_max = 65,
|
||||
.ppt_pl2_sppt_min = 25,
|
||||
.ppt_pl2_sppt_max = 65,
|
||||
.ppt_pl3_fppt_min = 35,
|
||||
.ppt_pl3_fppt_max = 75,
|
||||
.nv_temp_target_min = 75,
|
||||
.nv_temp_target_max = 87,
|
||||
},
|
||||
.requires_fan_curve = true,
|
||||
},
|
||||
},
|
||||
{
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_BOARD_NAME, "G614J"),
|
||||
|
||||
@@ -548,7 +548,7 @@ static const struct dmi_system_id asus_quirks[] = {
|
||||
.callback = dmi_matched,
|
||||
.ident = "ASUS ROG Z13",
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
|
||||
DMI_MATCH(DMI_SYS_VENDOR, "ASUS"),
|
||||
DMI_MATCH(DMI_PRODUCT_NAME, "ROG Flow Z13"),
|
||||
},
|
||||
.driver_data = &quirk_asus_z13,
|
||||
|
||||
@@ -120,6 +120,13 @@ static const struct thermal_profile_params omen_v1_thermal_params = {
|
||||
.ec_tp_offset = HP_VICTUS_S_EC_THERMAL_PROFILE_OFFSET,
|
||||
};
|
||||
|
||||
static const struct thermal_profile_params omen_v1_legacy_thermal_params = {
|
||||
.performance = HP_OMEN_V1_THERMAL_PROFILE_PERFORMANCE,
|
||||
.balanced = HP_OMEN_V1_THERMAL_PROFILE_DEFAULT,
|
||||
.low_power = HP_OMEN_V1_THERMAL_PROFILE_DEFAULT,
|
||||
.ec_tp_offset = HP_OMEN_EC_THERMAL_PROFILE_OFFSET,
|
||||
};
|
||||
|
||||
/*
|
||||
* A generic pointer for the currently-active board's thermal profile
|
||||
* parameters.
|
||||
@@ -175,6 +182,10 @@ static const char * const victus_thermal_profile_boards[] = {
|
||||
|
||||
/* DMI Board names of Victus 16-r and Victus 16-s laptops */
|
||||
static const struct dmi_system_id victus_s_thermal_profile_boards[] __initconst = {
|
||||
{
|
||||
.matches = { DMI_MATCH(DMI_BOARD_NAME, "8A4D") },
|
||||
.driver_data = (void *)&omen_v1_legacy_thermal_params,
|
||||
},
|
||||
{
|
||||
.matches = { DMI_MATCH(DMI_BOARD_NAME, "8BAB") },
|
||||
.driver_data = (void *)&omen_v1_thermal_params,
|
||||
@@ -183,6 +194,10 @@ static const struct dmi_system_id victus_s_thermal_profile_boards[] __initconst
|
||||
.matches = { DMI_MATCH(DMI_BOARD_NAME, "8BBE") },
|
||||
.driver_data = (void *)&victus_s_thermal_params,
|
||||
},
|
||||
{
|
||||
.matches = { DMI_MATCH(DMI_BOARD_NAME, "8BCA") },
|
||||
.driver_data = (void *)&omen_v1_thermal_params,
|
||||
},
|
||||
{
|
||||
.matches = { DMI_MATCH(DMI_BOARD_NAME, "8BCD") },
|
||||
.driver_data = (void *)&omen_v1_thermal_params,
|
||||
@@ -195,6 +210,10 @@ static const struct dmi_system_id victus_s_thermal_profile_boards[] __initconst
|
||||
.matches = { DMI_MATCH(DMI_BOARD_NAME, "8BD5") },
|
||||
.driver_data = (void *)&victus_s_thermal_params,
|
||||
},
|
||||
{
|
||||
.matches = { DMI_MATCH(DMI_BOARD_NAME, "8C76") },
|
||||
.driver_data = (void *)&omen_v1_thermal_params,
|
||||
},
|
||||
{
|
||||
.matches = { DMI_MATCH(DMI_BOARD_NAME, "8C78") },
|
||||
.driver_data = (void *)&omen_v1_thermal_params,
|
||||
|
||||
@@ -438,6 +438,14 @@ static int intel_hid_pl_suspend_handler(struct device *device)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int intel_hid_pl_freeze_handler(struct device *device)
|
||||
{
|
||||
struct intel_hid_priv *priv = dev_get_drvdata(device);
|
||||
|
||||
priv->wakeup_mode = false;
|
||||
return intel_hid_pl_suspend_handler(device);
|
||||
}
|
||||
|
||||
static int intel_hid_pl_resume_handler(struct device *device)
|
||||
{
|
||||
intel_hid_pm_complete(device);
|
||||
@@ -452,7 +460,7 @@ static int intel_hid_pl_resume_handler(struct device *device)
|
||||
static const struct dev_pm_ops intel_hid_pl_pm_ops = {
|
||||
.prepare = intel_hid_pm_prepare,
|
||||
.complete = intel_hid_pm_complete,
|
||||
.freeze = intel_hid_pl_suspend_handler,
|
||||
.freeze = intel_hid_pl_freeze_handler,
|
||||
.thaw = intel_hid_pl_resume_handler,
|
||||
.restore = intel_hid_pl_resume_handler,
|
||||
.suspend = intel_hid_pl_suspend_handler,
|
||||
|
||||
@@ -558,6 +558,9 @@ static bool disable_dynamic_sst_features(void)
|
||||
{
|
||||
u64 value;
|
||||
|
||||
if (!static_cpu_has(X86_FEATURE_HWP))
|
||||
return true;
|
||||
|
||||
rdmsrq(MSR_PM_ENABLE, value);
|
||||
return !(value & 0x1);
|
||||
}
|
||||
@@ -869,7 +872,7 @@ static int isst_if_get_perf_level(void __user *argp)
|
||||
_read_pp_info("current_level", perf_level.current_level, SST_PP_STATUS_OFFSET,
|
||||
SST_PP_LEVEL_START, SST_PP_LEVEL_WIDTH, SST_MUL_FACTOR_NONE)
|
||||
_read_pp_info("locked", perf_level.locked, SST_PP_STATUS_OFFSET,
|
||||
SST_PP_LOCK_START, SST_PP_LEVEL_WIDTH, SST_MUL_FACTOR_NONE)
|
||||
SST_PP_LOCK_START, SST_PP_LOCK_WIDTH, SST_MUL_FACTOR_NONE)
|
||||
_read_pp_info("feature_state", perf_level.feature_state, SST_PP_STATUS_OFFSET,
|
||||
SST_PP_FEATURE_STATE_START, SST_PP_FEATURE_STATE_WIDTH, SST_MUL_FACTOR_NONE)
|
||||
perf_level.enabled = !!(power_domain_info->sst_header.cap_mask & BIT(1));
|
||||
|
||||
@@ -31,8 +31,6 @@
|
||||
#define LWMI_GZ_METHOD_ID_SMARTFAN_SET 44
|
||||
#define LWMI_GZ_METHOD_ID_SMARTFAN_GET 45
|
||||
|
||||
static BLOCKING_NOTIFIER_HEAD(gz_chain_head);
|
||||
|
||||
struct lwmi_gz_priv {
|
||||
enum thermal_mode current_mode;
|
||||
struct notifier_block event_nb;
|
||||
|
||||
Reference in New Issue
Block a user