Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'platform-drivers-x86-v6.15-6' of git://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86

Pull x86 platform drivers fixes from Ilpo Järvinen:

- dell-wmi-sysman: Avoid buffer overflow in current_password_store()

- fujitsu-laptop: Support Lifebook S2110 hotkeys

- intel/pmc: Fix Arrow Lake U/H NPU PCI ID

- think-lmi: Fix attribute name usage for non-compliant items

- thinkpad_acpi: Ignore battery threshold change event notification

* tag 'platform-drivers-x86-v6.15-6' of git://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86:
platform/x86/intel/pmc: Fix Arrow Lake U/H NPU PCI ID
platform/x86: think-lmi: Fix attribute name usage for non-compliant items
platform/x86: thinkpad_acpi: Ignore battery threshold change event notification
platform/x86: dell-wmi-sysman: Avoid buffer overflow in current_password_store()
platform/x86: fujitsu-laptop: Support Lifebook S2110 hotkeys

+52 -18
+1 -1
drivers/platform/x86/dell/dell-wmi-sysman/passobj-attributes.c
··· 45 45 int length; 46 46 47 47 length = strlen(buf); 48 - if (buf[length-1] == '\n') 48 + if (length && buf[length - 1] == '\n') 49 49 length--; 50 50 51 51 /* firmware does verifiation of min/max password length,
+29 -4
drivers/platform/x86/fujitsu-laptop.c
··· 17 17 /* 18 18 * fujitsu-laptop.c - Fujitsu laptop support, providing access to additional 19 19 * features made available on a range of Fujitsu laptops including the 20 - * P2xxx/P5xxx/S6xxx/S7xxx series. 20 + * P2xxx/P5xxx/S2xxx/S6xxx/S7xxx series. 21 21 * 22 22 * This driver implements a vendor-specific backlight control interface for 23 23 * Fujitsu laptops and provides support for hotkeys present on certain Fujitsu 24 24 * laptops. 25 25 * 26 - * This driver has been tested on a Fujitsu Lifebook S6410, S7020 and 26 + * This driver has been tested on a Fujitsu Lifebook S2110, S6410, S7020 and 27 27 * P8010. It should work on most P-series and S-series Lifebooks, but 28 28 * YMMV. 29 29 * ··· 107 107 #define KEY2_CODE 0x411 108 108 #define KEY3_CODE 0x412 109 109 #define KEY4_CODE 0x413 110 - #define KEY5_CODE 0x420 110 + #define KEY5_CODE 0x414 111 + #define KEY6_CODE 0x415 112 + #define KEY7_CODE 0x416 113 + #define KEY8_CODE 0x417 114 + #define KEY9_CODE 0x420 111 115 112 116 /* Hotkey ringbuffer limits */ 113 117 #define MAX_HOTKEY_RINGBUFFER_SIZE 100 ··· 564 560 { KE_KEY, KEY2_CODE, { KEY_PROG2 } }, 565 561 { KE_KEY, KEY3_CODE, { KEY_PROG3 } }, 566 562 { KE_KEY, KEY4_CODE, { KEY_PROG4 } }, 567 - { KE_KEY, KEY5_CODE, { KEY_RFKILL } }, 563 + { KE_KEY, KEY9_CODE, { KEY_RFKILL } }, 568 564 /* Soft keys read from status flags */ 569 565 { KE_KEY, FLAG_RFKILL, { KEY_RFKILL } }, 570 566 { KE_KEY, FLAG_TOUCHPAD_TOGGLE, { KEY_TOUCHPAD_TOGGLE } }, ··· 585 581 { KE_KEY, KEY2_CODE, { KEY_PROG2 } }, 586 582 { KE_KEY, KEY3_CODE, { KEY_SWITCHVIDEOMODE } }, /* "Presentation" */ 587 583 { KE_KEY, KEY4_CODE, { KEY_WWW } }, /* "WWW" */ 584 + { KE_END, 0 } 585 + }; 586 + 587 + static const struct key_entry keymap_s2110[] = { 588 + { KE_KEY, KEY1_CODE, { KEY_PROG1 } }, /* "A" */ 589 + { KE_KEY, KEY2_CODE, { KEY_PROG2 } }, /* "B" */ 590 + { KE_KEY, KEY3_CODE, { KEY_WWW } }, /* "Internet" */ 591 + { KE_KEY, KEY4_CODE, { KEY_EMAIL } }, /* "E-mail" */ 592 + { KE_KEY, KEY5_CODE, { KEY_STOPCD } }, 593 + { KE_KEY, KEY6_CODE, { KEY_PLAYPAUSE } }, 594 + { KE_KEY, KEY7_CODE, { KEY_PREVIOUSSONG } }, 595 + { KE_KEY, KEY8_CODE, { KEY_NEXTSONG } }, 588 596 { KE_END, 0 } 589 597 }; 590 598 ··· 636 620 DMI_MATCH(DMI_PRODUCT_NAME, "LifeBook P8010"), 637 621 }, 638 622 .driver_data = (void *)keymap_p8010 623 + }, 624 + { 625 + .callback = fujitsu_laptop_dmi_keymap_override, 626 + .ident = "Fujitsu LifeBook S2110", 627 + .matches = { 628 + DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU SIEMENS"), 629 + DMI_MATCH(DMI_PRODUCT_NAME, "LIFEBOOK S2110"), 630 + }, 631 + .driver_data = (void *)keymap_s2110 639 632 }, 640 633 {} 641 634 };
+2 -1
drivers/platform/x86/intel/pmc/arl.c
··· 681 681 682 682 #define ARL_NPU_PCI_DEV 0xad1d 683 683 #define ARL_GNA_PCI_DEV 0xae4c 684 + #define ARL_H_NPU_PCI_DEV 0x7d1d 684 685 #define ARL_H_GNA_PCI_DEV 0x774c 685 686 /* 686 687 * Set power state of select devices that do not have drivers to D3 ··· 695 694 696 695 static void arl_h_d3_fixup(void) 697 696 { 698 - pmc_core_set_device_d3(ARL_NPU_PCI_DEV); 697 + pmc_core_set_device_d3(ARL_H_NPU_PCI_DEV); 699 698 pmc_core_set_device_d3(ARL_H_GNA_PCI_DEV); 700 699 } 701 700
+14 -12
drivers/platform/x86/think-lmi.c
··· 1061 1061 ret = -EINVAL; 1062 1062 goto out; 1063 1063 } 1064 - set_str = kasprintf(GFP_KERNEL, "%s,%s,%s", setting->display_name, 1065 - new_setting, tlmi_priv.pwd_admin->signature); 1064 + set_str = kasprintf(GFP_KERNEL, "%s,%s,%s", setting->name, 1065 + new_setting, tlmi_priv.pwd_admin->signature); 1066 1066 if (!set_str) { 1067 1067 ret = -ENOMEM; 1068 1068 goto out; ··· 1092 1092 goto out; 1093 1093 } 1094 1094 1095 - set_str = kasprintf(GFP_KERNEL, "%s,%s;", setting->display_name, 1095 + set_str = kasprintf(GFP_KERNEL, "%s,%s;", setting->name, 1096 1096 new_setting); 1097 1097 if (!set_str) { 1098 1098 ret = -ENOMEM; ··· 1120 1120 } 1121 1121 1122 1122 if (auth_str) 1123 - set_str = kasprintf(GFP_KERNEL, "%s,%s,%s", setting->display_name, 1124 - new_setting, auth_str); 1123 + set_str = kasprintf(GFP_KERNEL, "%s,%s,%s", setting->name, 1124 + new_setting, auth_str); 1125 1125 else 1126 - set_str = kasprintf(GFP_KERNEL, "%s,%s;", setting->display_name, 1127 - new_setting); 1126 + set_str = kasprintf(GFP_KERNEL, "%s,%s;", setting->name, 1127 + new_setting); 1128 1128 if (!set_str) { 1129 1129 ret = -ENOMEM; 1130 1130 goto out; ··· 1629 1629 continue; 1630 1630 } 1631 1631 1632 - /* It is not allowed to have '/' for file name. Convert it into '\'. */ 1633 - strreplace(item, '/', '\\'); 1634 - 1635 1632 /* Remove the value part */ 1636 1633 strreplace(item, ',', '\0'); 1637 1634 ··· 1641 1644 } 1642 1645 setting->wdev = wdev; 1643 1646 setting->index = i; 1647 + 1648 + strscpy(setting->name, item); 1649 + /* It is not allowed to have '/' for file name. Convert it into '\'. */ 1650 + strreplace(item, '/', '\\'); 1644 1651 strscpy(setting->display_name, item); 1652 + 1645 1653 /* If BIOS selections supported, load those */ 1646 1654 if (tlmi_priv.can_get_bios_selections) { 1647 - ret = tlmi_get_bios_selections(setting->display_name, 1648 - &setting->possible_values); 1655 + ret = tlmi_get_bios_selections(setting->name, 1656 + &setting->possible_values); 1649 1657 if (ret || !setting->possible_values) 1650 1658 pr_info("Error retrieving possible values for %d : %s\n", 1651 1659 i, setting->display_name);
+1
drivers/platform/x86/think-lmi.h
··· 90 90 struct kobject kobj; 91 91 struct wmi_device *wdev; 92 92 int index; 93 + char name[TLMI_SETTINGS_MAXLEN]; 93 94 char display_name[TLMI_SETTINGS_MAXLEN]; 94 95 char *possible_values; 95 96 };
+5
drivers/platform/x86/thinkpad_acpi.c
··· 231 231 /* Thermal events */ 232 232 TP_HKEY_EV_ALARM_BAT_HOT = 0x6011, /* battery too hot */ 233 233 TP_HKEY_EV_ALARM_BAT_XHOT = 0x6012, /* battery critically hot */ 234 + TP_HKEY_EV_ALARM_BAT_LIM_CHANGE = 0x6013, /* battery charge limit changed*/ 234 235 TP_HKEY_EV_ALARM_SENSOR_HOT = 0x6021, /* sensor too hot */ 235 236 TP_HKEY_EV_ALARM_SENSOR_XHOT = 0x6022, /* sensor critically hot */ 236 237 TP_HKEY_EV_THM_TABLE_CHANGED = 0x6030, /* windows; thermal table changed */ ··· 3778 3777 pr_alert("THERMAL EMERGENCY: battery is extremely hot!\n"); 3779 3778 /* recommended action: immediate sleep/hibernate */ 3780 3779 break; 3780 + case TP_HKEY_EV_ALARM_BAT_LIM_CHANGE: 3781 + pr_debug("Battery Info: battery charge threshold changed\n"); 3782 + /* User changed charging threshold. No action needed */ 3783 + return true; 3781 3784 case TP_HKEY_EV_ALARM_SENSOR_HOT: 3782 3785 pr_crit("THERMAL ALARM: a sensor reports something is too hot!\n"); 3783 3786 /* recommended action: warn user through gui, that */