Skip to content

Commit 54de8b8

Browse files
committed
Merge tag 'platform-drivers-x86-v7.0-2' of git://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86
Pull x86 platform driver fixes from Ilpo Järvinen: - alienware-wmi-wmax: Add G-Mode support to m18 laptops - asus-armoury: Add support for FA401UM, G733QS, GX650RX - dell-wmi-sysman: Don't hex dump plaintext password data - hp-bioscfg: Support large number of enumeration attributes - hp-wmi: Add support for Omen 14-fb1xxx, 16-xd0xxx, 16-wf0xxx, and Victus-d0xxx - int3472: Handle GPIO type 0x10 (DOVDD) - intel-hid: - Add Dell 14 & 16 Plus 2-in-1 to dmi_vgbs_allow_list - Enable 5-button array on ThinkPad X1 Fold 16 Gen 1 - mellanox: mlxreg: Fix kernel-doc warnings - oxpec: Add support for OneXPlayer X1 Air, X1z, APEX, and Aokzoe A2 Pro - redmi-wmi: Add more Fn hotkey mappings - thinkpad_acpi: Fix errors reading battery thresholds - touchscreen_dmi: Add quirk for y-inverted Goodix touchscreen on SUPI S10 - uniwill-laptop: - FN lock/super key lock attributes rename - Fix crash on unexpected battery event - A special key combination can alter FN lock status so mark it volatile - Handle FN lock event * tag 'platform-drivers-x86-v7.0-2' of git://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86: (27 commits) platform/x86: dell-wmi-sysman: Don't hex dump plaintext password data platform_data/mlxreg: mlxreg.h: fix all kernel-doc warnings platform/x86: asus-armoury: add support for FA401UM platform/x86: asus-armoury: add support for GX650RX platform/x86: hp-bioscfg: Support allocations of larger data platform/x86: oxpec: Add support for Aokzoe A2 Pro platform/x86: oxpec: Add support for OneXPlayer X1 Air platform/x86: oxpec: Add support for OneXPlayer X1z platform/x86: oxpec: Add support for OneXPlayer APEX platform/x86: uniwill-laptop: Handle FN lock event platform/x86: uniwill-laptop: Mark FN lock status as being volatile platform/x86: uniwill-laptop: Fix crash on unexpected battery event platform/x86: uniwill-laptop: Rename FN lock and super key lock attrs platform/x86: redmi-wmi: Add more hotkey mappings platform/x86: alienware-wmi-wmax: Add G-Mode support to m18 laptops platform/x86: hp-wmi: add Omen 14-fb1xxx (board 8E41) support platform/x86: dell-wmi: Add audio/mic mute key codes platform/x86: hp-wmi: Add Victus 16-d0xxx support platform/x86: intel-hid: Enable 5-button array on ThinkPad X1 Fold 16 Gen 1 platform/x86: int3472: Handle GPIO type 0x10 (DOVDD) ...
2 parents 9a881ea + d1a196e commit 54de8b8

18 files changed

Lines changed: 294 additions & 63 deletions

File tree

Documentation/ABI/testing/sysfs-driver-uniwill-laptop

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
What: /sys/bus/platform/devices/INOU0000:XX/fn_lock_toggle_enable
1+
What: /sys/bus/platform/devices/INOU0000:XX/fn_lock
22
Date: November 2025
33
KernelVersion: 6.19
44
Contact: Armin Wolf <W_Armin@gmx.de>
@@ -8,15 +8,15 @@ Description:
88

99
Reading this file returns the current enable status of the FN lock functionality.
1010

11-
What: /sys/bus/platform/devices/INOU0000:XX/super_key_toggle_enable
11+
What: /sys/bus/platform/devices/INOU0000:XX/super_key_enable
1212
Date: November 2025
1313
KernelVersion: 6.19
1414
Contact: Armin Wolf <W_Armin@gmx.de>
1515
Description:
16-
Allows userspace applications to enable/disable the super key functionality
17-
of the integrated keyboard by writing "1"/"0" into this file.
16+
Allows userspace applications to enable/disable the super key of the integrated
17+
keyboard by writing "1"/"0" into this file.
1818

19-
Reading this file returns the current enable status of the super key functionality.
19+
Reading this file returns the current enable status of the super key.
2020

2121
What: /sys/bus/platform/devices/INOU0000:XX/touchpad_toggle_enable
2222
Date: November 2025

Documentation/admin-guide/laptops/uniwill-laptop.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ Keyboard settings
2424

2525
The ``uniwill-laptop`` driver allows the user to enable/disable:
2626

27-
- the FN and super key lock functionality of the integrated keyboard
27+
- the FN lock and super key of the integrated keyboard
2828
- the touchpad toggle functionality of the integrated touchpad
2929

3030
See Documentation/ABI/testing/sysfs-driver-uniwill-laptop for details.

drivers/platform/x86/asus-armoury.h

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -346,6 +346,35 @@ struct power_data {
346346
* _def is not required and will be assumed to be default == max if missing.
347347
*/
348348
static const struct dmi_system_id power_limits[] = {
349+
{
350+
.matches = {
351+
DMI_MATCH(DMI_BOARD_NAME, "FA401UM"),
352+
},
353+
.driver_data = &(struct power_data) {
354+
.ac_data = &(struct power_limits) {
355+
.ppt_pl1_spl_min = 15,
356+
.ppt_pl1_spl_max = 80,
357+
.ppt_pl2_sppt_min = 35,
358+
.ppt_pl2_sppt_max = 80,
359+
.ppt_pl3_fppt_min = 35,
360+
.ppt_pl3_fppt_max = 80,
361+
.nv_dynamic_boost_min = 5,
362+
.nv_dynamic_boost_max = 15,
363+
.nv_temp_target_min = 75,
364+
.nv_temp_target_max = 87,
365+
},
366+
.dc_data = &(struct power_limits) {
367+
.ppt_pl1_spl_min = 25,
368+
.ppt_pl1_spl_max = 35,
369+
.ppt_pl2_sppt_min = 31,
370+
.ppt_pl2_sppt_max = 44,
371+
.ppt_pl3_fppt_min = 45,
372+
.ppt_pl3_fppt_max = 65,
373+
.nv_temp_target_min = 75,
374+
.nv_temp_target_max = 87,
375+
},
376+
},
377+
},
349378
{
350379
.matches = {
351380
DMI_MATCH(DMI_BOARD_NAME, "FA401UV"),
@@ -1457,6 +1486,38 @@ static const struct dmi_system_id power_limits[] = {
14571486
},
14581487
},
14591488
},
1489+
{
1490+
.matches = {
1491+
DMI_MATCH(DMI_BOARD_NAME, "GX650RX"),
1492+
},
1493+
.driver_data = &(struct power_data) {
1494+
.ac_data = &(struct power_limits) {
1495+
.ppt_pl1_spl_min = 28,
1496+
.ppt_pl1_spl_def = 70,
1497+
.ppt_pl1_spl_max = 90,
1498+
.ppt_pl2_sppt_min = 28,
1499+
.ppt_pl2_sppt_def = 70,
1500+
.ppt_pl2_sppt_max = 100,
1501+
.ppt_pl3_fppt_min = 28,
1502+
.ppt_pl3_fppt_def = 110,
1503+
.ppt_pl3_fppt_max = 125,
1504+
.nv_dynamic_boost_min = 5,
1505+
.nv_dynamic_boost_max = 25,
1506+
.nv_temp_target_min = 76,
1507+
.nv_temp_target_max = 87,
1508+
},
1509+
.dc_data = &(struct power_limits) {
1510+
.ppt_pl1_spl_min = 28,
1511+
.ppt_pl1_spl_max = 50,
1512+
.ppt_pl2_sppt_min = 28,
1513+
.ppt_pl2_sppt_max = 50,
1514+
.ppt_pl3_fppt_min = 28,
1515+
.ppt_pl3_fppt_max = 65,
1516+
.nv_temp_target_min = 76,
1517+
.nv_temp_target_max = 87,
1518+
},
1519+
},
1520+
},
14601521
{
14611522
.matches = {
14621523
DMI_MATCH(DMI_BOARD_NAME, "G513I"),
@@ -1708,6 +1769,20 @@ static const struct dmi_system_id power_limits[] = {
17081769
.requires_fan_curve = true,
17091770
},
17101771
},
1772+
{
1773+
.matches = {
1774+
DMI_MATCH(DMI_BOARD_NAME, "G733QS"),
1775+
},
1776+
.driver_data = &(struct power_data) {
1777+
.ac_data = &(struct power_limits) {
1778+
.ppt_pl1_spl_min = 15,
1779+
.ppt_pl1_spl_max = 80,
1780+
.ppt_pl2_sppt_min = 15,
1781+
.ppt_pl2_sppt_max = 80,
1782+
},
1783+
.requires_fan_curve = false,
1784+
},
1785+
},
17111786
{
17121787
.matches = {
17131788
DMI_MATCH(DMI_BOARD_NAME, "G814J"),

drivers/platform/x86/dell/alienware-wmi-wmax.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,7 @@ static const struct dmi_system_id awcc_dmi_table[] __initconst = {
175175
DMI_MATCH(DMI_SYS_VENDOR, "Alienware"),
176176
DMI_MATCH(DMI_PRODUCT_NAME, "Alienware m18"),
177177
},
178-
.driver_data = &generic_quirks,
178+
.driver_data = &g_series_quirks,
179179
},
180180
{
181181
.ident = "Alienware x15",

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,12 @@ static const struct dmi_system_id dell_wmi_smbios_list[] __initconst = {
8080
static const struct key_entry dell_wmi_keymap_type_0000[] = {
8181
{ KE_IGNORE, 0x003a, { KEY_CAPSLOCK } },
8282

83+
/* Audio mute toggle */
84+
{ KE_KEY, 0x0109, { KEY_MUTE } },
85+
86+
/* Mic mute toggle */
87+
{ KE_KEY, 0x0150, { KEY_MICMUTE } },
88+
8389
/* Meta key lock */
8490
{ KE_IGNORE, 0xe000, { KEY_RIGHTMETA } },
8591

drivers/platform/x86/dell/dell-wmi-sysman/passwordattr-interface.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,6 @@ int set_new_password(const char *password_type, const char *new)
9393
if (ret < 0)
9494
goto out;
9595

96-
print_hex_dump_bytes("set new password data: ", DUMP_PREFIX_NONE, buffer, buffer_size);
9796
ret = call_password_interface(wmi_priv.password_attr_wdev, buffer, buffer_size);
9897
/* on success copy the new password to current password */
9998
if (!ret)

drivers/platform/x86/hp/hp-bioscfg/enum-attributes.c

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -94,8 +94,11 @@ int hp_alloc_enumeration_data(void)
9494
bioscfg_drv.enumeration_instances_count =
9595
hp_get_instance_count(HP_WMI_BIOS_ENUMERATION_GUID);
9696

97-
bioscfg_drv.enumeration_data = kzalloc_objs(*bioscfg_drv.enumeration_data,
98-
bioscfg_drv.enumeration_instances_count);
97+
if (!bioscfg_drv.enumeration_instances_count)
98+
return -EINVAL;
99+
bioscfg_drv.enumeration_data = kvcalloc(bioscfg_drv.enumeration_instances_count,
100+
sizeof(*bioscfg_drv.enumeration_data), GFP_KERNEL);
101+
99102
if (!bioscfg_drv.enumeration_data) {
100103
bioscfg_drv.enumeration_instances_count = 0;
101104
return -ENOMEM;
@@ -444,6 +447,6 @@ void hp_exit_enumeration_attributes(void)
444447
}
445448
bioscfg_drv.enumeration_instances_count = 0;
446449

447-
kfree(bioscfg_drv.enumeration_data);
450+
kvfree(bioscfg_drv.enumeration_data);
448451
bioscfg_drv.enumeration_data = NULL;
449452
}

drivers/platform/x86/hp/hp-wmi.c

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,7 @@ static const char * const omen_thermal_profile_boards[] = {
146146
"8900", "8901", "8902", "8912", "8917", "8918", "8949", "894A", "89EB",
147147
"8A15", "8A42",
148148
"8BAD",
149+
"8E41",
149150
};
150151

151152
/* DMI Board names of Omen laptops that are specifically set to be thermal
@@ -166,17 +167,26 @@ static const char * const omen_timed_thermal_profile_boards[] = {
166167
"8BAD",
167168
};
168169

169-
/* DMI Board names of Victus 16-d1xxx laptops */
170+
/* DMI Board names of Victus 16-d laptops */
170171
static const char * const victus_thermal_profile_boards[] = {
172+
"88F8",
171173
"8A25",
172174
};
173175

174176
/* DMI Board names of Victus 16-r and Victus 16-s laptops */
175177
static const struct dmi_system_id victus_s_thermal_profile_boards[] __initconst = {
178+
{
179+
.matches = { DMI_MATCH(DMI_BOARD_NAME, "8BAB") },
180+
.driver_data = (void *)&omen_v1_thermal_params,
181+
},
176182
{
177183
.matches = { DMI_MATCH(DMI_BOARD_NAME, "8BBE") },
178184
.driver_data = (void *)&victus_s_thermal_params,
179185
},
186+
{
187+
.matches = { DMI_MATCH(DMI_BOARD_NAME, "8BCD") },
188+
.driver_data = (void *)&omen_v1_thermal_params,
189+
},
180190
{
181191
.matches = { DMI_MATCH(DMI_BOARD_NAME, "8BD4") },
182192
.driver_data = (void *)&victus_s_thermal_params,

drivers/platform/x86/intel/hid.c

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,13 @@ static const struct dmi_system_id button_array_table[] = {
135135
DMI_MATCH(DMI_PRODUCT_FAMILY, "ThinkPad X1 Tablet Gen 2"),
136136
},
137137
},
138+
{
139+
.ident = "Lenovo ThinkPad X1 Fold 16 Gen 1",
140+
.matches = {
141+
DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"),
142+
DMI_MATCH(DMI_PRODUCT_FAMILY, "ThinkPad X1 Fold 16 Gen 1"),
143+
},
144+
},
138145
{
139146
.ident = "Microsoft Surface Go 3",
140147
.matches = {
@@ -189,6 +196,18 @@ static const struct dmi_system_id dmi_vgbs_allow_list[] = {
189196
DMI_MATCH(DMI_PRODUCT_NAME, "Dell Pro Rugged 12 Tablet RA02260"),
190197
},
191198
},
199+
{
200+
.matches = {
201+
DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
202+
DMI_MATCH(DMI_PRODUCT_NAME, "Dell 14 Plus 2-in-1 DB04250"),
203+
},
204+
},
205+
{
206+
.matches = {
207+
DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
208+
DMI_MATCH(DMI_PRODUCT_NAME, "Dell 16 Plus 2-in-1 DB06250"),
209+
},
210+
},
192211
{ }
193212
};
194213

drivers/platform/x86/intel/int3472/discrete.c

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -223,6 +223,10 @@ static void int3472_get_con_id_and_polarity(struct int3472_discrete_device *int3
223223
*con_id = "avdd";
224224
*gpio_flags = GPIO_ACTIVE_HIGH;
225225
break;
226+
case INT3472_GPIO_TYPE_DOVDD:
227+
*con_id = "dovdd";
228+
*gpio_flags = GPIO_ACTIVE_HIGH;
229+
break;
226230
case INT3472_GPIO_TYPE_HANDSHAKE:
227231
*con_id = "dvdd";
228232
*gpio_flags = GPIO_ACTIVE_HIGH;
@@ -251,6 +255,7 @@ static void int3472_get_con_id_and_polarity(struct int3472_discrete_device *int3
251255
* 0x0b Power enable
252256
* 0x0c Clock enable
253257
* 0x0d Privacy LED
258+
* 0x10 DOVDD (digital I/O voltage)
254259
* 0x13 Hotplug detect
255260
*
256261
* There are some known platform specific quirks where that does not quite
@@ -332,6 +337,7 @@ static int skl_int3472_handle_gpio_resources(struct acpi_resource *ares,
332337
case INT3472_GPIO_TYPE_CLK_ENABLE:
333338
case INT3472_GPIO_TYPE_PRIVACY_LED:
334339
case INT3472_GPIO_TYPE_POWER_ENABLE:
340+
case INT3472_GPIO_TYPE_DOVDD:
335341
case INT3472_GPIO_TYPE_HANDSHAKE:
336342
gpio = skl_int3472_gpiod_get_from_temp_lookup(int3472, agpio, con_id, gpio_flags);
337343
if (IS_ERR(gpio)) {
@@ -356,6 +362,7 @@ static int skl_int3472_handle_gpio_resources(struct acpi_resource *ares,
356362
case INT3472_GPIO_TYPE_POWER_ENABLE:
357363
second_sensor = int3472->quirks.avdd_second_sensor;
358364
fallthrough;
365+
case INT3472_GPIO_TYPE_DOVDD:
359366
case INT3472_GPIO_TYPE_HANDSHAKE:
360367
ret = skl_int3472_register_regulator(int3472, gpio, enable_time_us,
361368
con_id, second_sensor);

0 commit comments

Comments
 (0)