mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-01-11 17:10:13 +00:00
platform-drivers-x86 for v6.19-2
Fixes and New HW Support
- alienware-wmi-wmax: Area-51, x16, and 16X Aurora laptops support
- asus-armoury:
- Fix FA507R PPT data
- Add TDP data for more laptop models
- asus-nb-wmi: Asus Zenbook 14 display toggle key support
- dell-lis3lv02d: Dell Latitude 5400 support
- hp-bioscfg: Fix out-of-bounds array access in ACPI package parsing
- ibm_rtl: Fix EBDA signature search pointer arithmetic
- ideapad-laptop: Reassign KEY_CUT to KEY_SELECTIVE_SCREENSHOT
- intel/pmt:
- Fix kobject memory leak on init failure
- Use valid pointers on error handling path
- intel/vsec: Correct kernel doc comments
- mellanox: mlxbf-pmc: Fix event names
- msi-laptop: Add sysfs_remove_group()
- samsumg-galaxybook: Do not cast pointer to a shorter type
- think-lmi: WMI certificate thumbprint support for ThinkCenter
- uniwill: Tuxedo Book BA15 Gen10 support
The following is an automated shortlog grouped by driver:
alienware-wmi-wmax:
- Add AWCC support for Alienware x16
- Add support for Alienware 16X Aurora
- Add support for new Area-51 laptops
asus-armoury:
- add support for FA608UM
- add support for G615LR
- add support for G835LW
- add support for GA403WR
- add support for GU605CR
- fix ppt data for FA507R
asus-nb-wmi:
- Add keymap for display toggle
dell-lis3lv02d:
- Add Latitude 5400
hp-bioscfg:
- Fix out-of-bounds array access in ACPI package parsing
ibm_rtl:
- fix EBDA signature search pointer arithmetic
ideapad-laptop:
- Reassign KEY_CUT to KEY_SELECTIVE_SCREENSHOT
intel/pmt/discovery:
- use valid device pointer in dev_err_probe
intel/pmt:
- Fix kobject memory leak on init failure
intel/vsec:
- correct kernel-doc comments
mlxbf-pmc:
- Remove trailing whitespaces from event names
msi-laptop:
- add missing sysfs_remove_group()
samsung-galaxybook:
- Fix problematic pointer cast
think-lmi:
- Add WMI certificate thumbprint support for ThinkCenter
uniwill:
- Add TUXEDO Book BA15 Gen10
-----BEGIN PGP SIGNATURE-----
iHUEABYIAB0WIQSCSUwRdwTNL2MhaBlZrE9hU+XOMQUCaVT4igAKCRBZrE9hU+XO
MTB4AQCIWd1/VEyiHw7nLVraCvVcG25m+E61XkALpP3KHzuWsAD/ejev+eNcng9W
G+TnUShOsVJ3w++juDHX1PNG7CSNqQ4=
=tvjU
-----END PGP SIGNATURE-----
Merge tag 'platform-drivers-x86-v6.19-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: Area-51, x16, and 16X Aurora laptops support
- asus-armoury:
- Fix FA507R PPT data
- Add TDP data for more laptop models
- asus-nb-wmi: Asus Zenbook 14 display toggle key support
- dell-lis3lv02d: Dell Latitude 5400 support
- hp-bioscfg: Fix out-of-bounds array access in ACPI package parsing
- ibm_rtl: Fix EBDA signature search pointer arithmetic
- ideapad-laptop: Reassign KEY_CUT to KEY_SELECTIVE_SCREENSHOT
- intel/pmt:
- Fix kobject memory leak on init failure
- Use valid pointers on error handling path
- intel/vsec: Correct kernel doc comments
- mellanox: mlxbf-pmc: Fix event names
- msi-laptop: Add sysfs_remove_group()
- samsumg-galaxybook: Do not cast pointer to a shorter type
- think-lmi: WMI certificate thumbprint support for ThinkCenter
- uniwill: Tuxedo Book BA15 Gen10 support
* tag 'platform-drivers-x86-v6.19-2' of git://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86: (22 commits)
platform/x86: asus-armoury: add support for G835LW
platform/x86: asus-armoury: fix ppt data for FA507R
platform/x86/intel/pmt/discovery: use valid device pointer in dev_err_probe
platform/x86: hp-bioscfg: Fix out-of-bounds array access in ACPI package parsing
platform/x86: asus-armoury: add support for G615LR
platform/x86: asus-armoury: add support for FA608UM
platform/x86: asus-armoury: add support for GA403WR
platform/x86: asus-armoury: add support for GU605CR
platform/x86: ideapad-laptop: Reassign KEY_CUT to KEY_SELECTIVE_SCREENSHOT
platform/x86: samsung-galaxybook: Fix problematic pointer cast
platform/x86/intel/pmt: Fix kobject memory leak on init failure
platform/x86/intel/vsec: correct kernel-doc comments
platform/x86: ibm_rtl: fix EBDA signature search pointer arithmetic
platform/x86: msi-laptop: add missing sysfs_remove_group()
platform/x86: think-lmi: Add WMI certificate thumbprint support for ThinkCenter
platform/x86: dell-lis3lv02d: Add Latitude 5400
platform/mellanox: mlxbf-pmc: Remove trailing whitespaces from event names
platform/x86: asus-nb-wmi: Add keymap for display toggle
platform/x86/uniwill: Add TUXEDO Book BA15 Gen10
platform/x86: alienware-wmi-wmax: Add support for Alienware 16X Aurora
...
This commit is contained in:
commit
9528d5c091
@ -801,18 +801,18 @@ static const struct mlxbf_pmc_events mlxbf_pmc_llt_miss_events[] = {
|
|||||||
{11, "GDC_MISS_MACHINE_CHI_TXDAT"},
|
{11, "GDC_MISS_MACHINE_CHI_TXDAT"},
|
||||||
{12, "GDC_MISS_MACHINE_CHI_RXDAT"},
|
{12, "GDC_MISS_MACHINE_CHI_RXDAT"},
|
||||||
{13, "GDC_MISS_MACHINE_G_FIFO_FF_EXEC0_0"},
|
{13, "GDC_MISS_MACHINE_G_FIFO_FF_EXEC0_0"},
|
||||||
{14, "GDC_MISS_MACHINE_G_FIFO_FF_EXEC0_1 "},
|
{14, "GDC_MISS_MACHINE_G_FIFO_FF_EXEC0_1"},
|
||||||
{15, "GDC_MISS_MACHINE_G_FIFO_FF_EXEC0_2"},
|
{15, "GDC_MISS_MACHINE_G_FIFO_FF_EXEC0_2"},
|
||||||
{16, "GDC_MISS_MACHINE_G_FIFO_FF_EXEC0_3 "},
|
{16, "GDC_MISS_MACHINE_G_FIFO_FF_EXEC0_3"},
|
||||||
{17, "GDC_MISS_MACHINE_G_FIFO_FF_EXEC1_0 "},
|
{17, "GDC_MISS_MACHINE_G_FIFO_FF_EXEC1_0"},
|
||||||
{18, "GDC_MISS_MACHINE_G_FIFO_FF_EXEC1_1 "},
|
{18, "GDC_MISS_MACHINE_G_FIFO_FF_EXEC1_1"},
|
||||||
{19, "GDC_MISS_MACHINE_G_FIFO_FF_EXEC1_2 "},
|
{19, "GDC_MISS_MACHINE_G_FIFO_FF_EXEC1_2"},
|
||||||
{20, "GDC_MISS_MACHINE_G_FIFO_FF_EXEC1_3 "},
|
{20, "GDC_MISS_MACHINE_G_FIFO_FF_EXEC1_3"},
|
||||||
{21, "GDC_MISS_MACHINE_G_FIFO_FF_EXEC_DONE0_0"},
|
{21, "GDC_MISS_MACHINE_G_FIFO_FF_EXEC_DONE0_0"},
|
||||||
{22, "GDC_MISS_MACHINE_G_FIFO_FF_EXEC_DONE0_1"},
|
{22, "GDC_MISS_MACHINE_G_FIFO_FF_EXEC_DONE0_1"},
|
||||||
{23, "GDC_MISS_MACHINE_G_FIFO_FF_EXEC_DONE0_2"},
|
{23, "GDC_MISS_MACHINE_G_FIFO_FF_EXEC_DONE0_2"},
|
||||||
{24, "GDC_MISS_MACHINE_G_FIFO_FF_EXEC_DONE0_3"},
|
{24, "GDC_MISS_MACHINE_G_FIFO_FF_EXEC_DONE0_3"},
|
||||||
{25, "GDC_MISS_MACHINE_G_FIFO_FF_EXEC_DONE1_0 "},
|
{25, "GDC_MISS_MACHINE_G_FIFO_FF_EXEC_DONE1_0"},
|
||||||
{26, "GDC_MISS_MACHINE_G_FIFO_FF_EXEC_DONE1_1"},
|
{26, "GDC_MISS_MACHINE_G_FIFO_FF_EXEC_DONE1_1"},
|
||||||
{27, "GDC_MISS_MACHINE_G_FIFO_FF_EXEC_DONE1_2"},
|
{27, "GDC_MISS_MACHINE_G_FIFO_FF_EXEC_DONE1_2"},
|
||||||
{28, "GDC_MISS_MACHINE_G_FIFO_FF_EXEC_DONE1_3"},
|
{28, "GDC_MISS_MACHINE_G_FIFO_FF_EXEC_DONE1_3"},
|
||||||
|
|||||||
@ -449,12 +449,27 @@ static const struct dmi_system_id power_limits[] = {
|
|||||||
.ac_data = &(struct power_limits) {
|
.ac_data = &(struct power_limits) {
|
||||||
.ppt_pl1_spl_min = 15,
|
.ppt_pl1_spl_min = 15,
|
||||||
.ppt_pl1_spl_max = 80,
|
.ppt_pl1_spl_max = 80,
|
||||||
.ppt_pl2_sppt_min = 25,
|
.ppt_pl2_sppt_min = 35,
|
||||||
.ppt_pl2_sppt_max = 80,
|
.ppt_pl2_sppt_max = 80,
|
||||||
.ppt_pl3_fppt_min = 35,
|
.ppt_pl3_fppt_min = 35,
|
||||||
.ppt_pl3_fppt_max = 80
|
.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 = 15,
|
||||||
|
.ppt_pl1_spl_def = 45,
|
||||||
|
.ppt_pl1_spl_max = 65,
|
||||||
|
.ppt_pl2_sppt_min = 35,
|
||||||
|
.ppt_pl2_sppt_def = 54,
|
||||||
|
.ppt_pl2_sppt_max = 65,
|
||||||
|
.ppt_pl3_fppt_min = 35,
|
||||||
|
.ppt_pl3_fppt_max = 65,
|
||||||
|
.nv_temp_target_min = 75,
|
||||||
|
.nv_temp_target_max = 87,
|
||||||
},
|
},
|
||||||
.dc_data = NULL,
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -552,6 +567,42 @@ static const struct dmi_system_id power_limits[] = {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
.matches = {
|
||||||
|
DMI_MATCH(DMI_BOARD_NAME, "FA608UM"),
|
||||||
|
},
|
||||||
|
.driver_data = &(struct power_data) {
|
||||||
|
.ac_data = &(struct power_limits) {
|
||||||
|
.ppt_pl1_spl_min = 15,
|
||||||
|
.ppt_pl1_spl_def = 45,
|
||||||
|
.ppt_pl1_spl_max = 90,
|
||||||
|
.ppt_pl2_sppt_min = 35,
|
||||||
|
.ppt_pl2_sppt_def = 54,
|
||||||
|
.ppt_pl2_sppt_max = 90,
|
||||||
|
.ppt_pl3_fppt_min = 35,
|
||||||
|
.ppt_pl3_fppt_def = 90,
|
||||||
|
.ppt_pl3_fppt_max = 65,
|
||||||
|
.nv_dynamic_boost_min = 10,
|
||||||
|
.nv_dynamic_boost_max = 15,
|
||||||
|
.nv_temp_target_min = 75,
|
||||||
|
.nv_temp_target_max = 87,
|
||||||
|
.nv_tgp_min = 55,
|
||||||
|
.nv_tgp_max = 100,
|
||||||
|
},
|
||||||
|
.dc_data = &(struct power_limits) {
|
||||||
|
.ppt_pl1_spl_min = 15,
|
||||||
|
.ppt_pl1_spl_def = 45,
|
||||||
|
.ppt_pl1_spl_max = 65,
|
||||||
|
.ppt_pl2_sppt_min = 35,
|
||||||
|
.ppt_pl2_sppt_def = 54,
|
||||||
|
.ppt_pl2_sppt_max = 65,
|
||||||
|
.ppt_pl3_fppt_min = 35,
|
||||||
|
.ppt_pl3_fppt_max = 65,
|
||||||
|
.nv_temp_target_min = 75,
|
||||||
|
.nv_temp_target_max = 87,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
{
|
{
|
||||||
.matches = {
|
.matches = {
|
||||||
DMI_MATCH(DMI_BOARD_NAME, "FA608WI"),
|
DMI_MATCH(DMI_BOARD_NAME, "FA608WI"),
|
||||||
@ -822,6 +873,38 @@ static const struct dmi_system_id power_limits[] = {
|
|||||||
.requires_fan_curve = true,
|
.requires_fan_curve = true,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
.matches = {
|
||||||
|
DMI_MATCH(DMI_BOARD_NAME, "GA403WR"),
|
||||||
|
},
|
||||||
|
.driver_data = &(struct power_data) {
|
||||||
|
.ac_data = &(struct power_limits) {
|
||||||
|
.ppt_pl1_spl_min = 15,
|
||||||
|
.ppt_pl1_spl_max = 80,
|
||||||
|
.ppt_pl2_sppt_min = 25,
|
||||||
|
.ppt_pl2_sppt_max = 80,
|
||||||
|
.ppt_pl3_fppt_min = 35,
|
||||||
|
.ppt_pl3_fppt_max = 80,
|
||||||
|
.nv_dynamic_boost_min = 0,
|
||||||
|
.nv_dynamic_boost_max = 25,
|
||||||
|
.nv_temp_target_min = 75,
|
||||||
|
.nv_temp_target_max = 87,
|
||||||
|
.nv_tgp_min = 80,
|
||||||
|
.nv_tgp_max = 95,
|
||||||
|
},
|
||||||
|
.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,
|
||||||
|
},
|
||||||
|
.requires_fan_curve = true,
|
||||||
|
},
|
||||||
|
},
|
||||||
{
|
{
|
||||||
.matches = {
|
.matches = {
|
||||||
DMI_MATCH(DMI_BOARD_NAME, "GA503QR"),
|
DMI_MATCH(DMI_BOARD_NAME, "GA503QR"),
|
||||||
@ -950,6 +1033,35 @@ static const struct dmi_system_id power_limits[] = {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
.matches = {
|
||||||
|
DMI_MATCH(DMI_BOARD_NAME, "GU605CR"),
|
||||||
|
},
|
||||||
|
.driver_data = &(struct power_data) {
|
||||||
|
.ac_data = &(struct power_limits) {
|
||||||
|
.ppt_pl1_spl_min = 30,
|
||||||
|
.ppt_pl1_spl_max = 85,
|
||||||
|
.ppt_pl2_sppt_min = 38,
|
||||||
|
.ppt_pl2_sppt_max = 110,
|
||||||
|
.nv_dynamic_boost_min = 5,
|
||||||
|
.nv_dynamic_boost_max = 20,
|
||||||
|
.nv_temp_target_min = 75,
|
||||||
|
.nv_temp_target_max = 87,
|
||||||
|
.nv_tgp_min = 80,
|
||||||
|
.nv_tgp_def = 90,
|
||||||
|
.nv_tgp_max = 105,
|
||||||
|
},
|
||||||
|
.dc_data = &(struct power_limits) {
|
||||||
|
.ppt_pl1_spl_min = 30,
|
||||||
|
.ppt_pl1_spl_max = 85,
|
||||||
|
.ppt_pl2_sppt_min = 38,
|
||||||
|
.ppt_pl2_sppt_max = 110,
|
||||||
|
.nv_temp_target_min = 75,
|
||||||
|
.nv_temp_target_max = 87,
|
||||||
|
},
|
||||||
|
.requires_fan_curve = true,
|
||||||
|
},
|
||||||
|
},
|
||||||
{
|
{
|
||||||
.matches = {
|
.matches = {
|
||||||
DMI_MATCH(DMI_BOARD_NAME, "GU605CW"),
|
DMI_MATCH(DMI_BOARD_NAME, "GU605CW"),
|
||||||
@ -1260,6 +1372,35 @@ static const struct dmi_system_id power_limits[] = {
|
|||||||
.requires_fan_curve = true,
|
.requires_fan_curve = true,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
.matches = {
|
||||||
|
DMI_MATCH(DMI_BOARD_NAME, "G615LR"),
|
||||||
|
},
|
||||||
|
.driver_data = &(struct power_data) {
|
||||||
|
.ac_data = &(struct power_limits) {
|
||||||
|
.ppt_pl1_spl_min = 28,
|
||||||
|
.ppt_pl1_spl_def = 140,
|
||||||
|
.ppt_pl1_spl_max = 175,
|
||||||
|
.ppt_pl2_sppt_min = 28,
|
||||||
|
.ppt_pl2_sppt_max = 175,
|
||||||
|
.nv_temp_target_min = 75,
|
||||||
|
.nv_temp_target_max = 87,
|
||||||
|
.nv_dynamic_boost_min = 5,
|
||||||
|
.nv_dynamic_boost_max = 25,
|
||||||
|
.nv_tgp_min = 65,
|
||||||
|
.nv_tgp_max = 115,
|
||||||
|
},
|
||||||
|
.dc_data = &(struct power_limits) {
|
||||||
|
.ppt_pl1_spl_min = 25,
|
||||||
|
.ppt_pl1_spl_max = 55,
|
||||||
|
.ppt_pl2_sppt_min = 25,
|
||||||
|
.ppt_pl2_sppt_max = 70,
|
||||||
|
.nv_temp_target_min = 75,
|
||||||
|
.nv_temp_target_max = 87,
|
||||||
|
},
|
||||||
|
.requires_fan_curve = true,
|
||||||
|
},
|
||||||
|
},
|
||||||
{
|
{
|
||||||
.matches = {
|
.matches = {
|
||||||
DMI_MATCH(DMI_BOARD_NAME, "G634J"),
|
DMI_MATCH(DMI_BOARD_NAME, "G634J"),
|
||||||
@ -1426,6 +1567,35 @@ static const struct dmi_system_id power_limits[] = {
|
|||||||
.requires_fan_curve = true,
|
.requires_fan_curve = true,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
.matches = {
|
||||||
|
DMI_MATCH(DMI_BOARD_NAME, "G835LW"),
|
||||||
|
},
|
||||||
|
.driver_data = &(struct power_data) {
|
||||||
|
.ac_data = &(struct power_limits) {
|
||||||
|
.ppt_pl1_spl_min = 28,
|
||||||
|
.ppt_pl1_spl_def = 140,
|
||||||
|
.ppt_pl1_spl_max = 175,
|
||||||
|
.ppt_pl2_sppt_min = 28,
|
||||||
|
.ppt_pl2_sppt_max = 175,
|
||||||
|
.nv_dynamic_boost_min = 5,
|
||||||
|
.nv_dynamic_boost_max = 25,
|
||||||
|
.nv_temp_target_min = 75,
|
||||||
|
.nv_temp_target_max = 87,
|
||||||
|
.nv_tgp_min = 80,
|
||||||
|
.nv_tgp_max = 150,
|
||||||
|
},
|
||||||
|
.dc_data = &(struct power_limits) {
|
||||||
|
.ppt_pl1_spl_min = 25,
|
||||||
|
.ppt_pl1_spl_max = 55,
|
||||||
|
.ppt_pl2_sppt_min = 25,
|
||||||
|
.ppt_pl2_sppt_max = 70,
|
||||||
|
.nv_temp_target_min = 75,
|
||||||
|
.nv_temp_target_max = 87,
|
||||||
|
},
|
||||||
|
.requires_fan_curve = true,
|
||||||
|
},
|
||||||
|
},
|
||||||
{
|
{
|
||||||
.matches = {
|
.matches = {
|
||||||
DMI_MATCH(DMI_BOARD_NAME, "H7606W"),
|
DMI_MATCH(DMI_BOARD_NAME, "H7606W"),
|
||||||
|
|||||||
@ -580,6 +580,7 @@ static const struct key_entry asus_nb_wmi_keymap[] = {
|
|||||||
{ KE_KEY, 0x2a, { KEY_SELECTIVE_SCREENSHOT } },
|
{ KE_KEY, 0x2a, { KEY_SELECTIVE_SCREENSHOT } },
|
||||||
{ KE_IGNORE, 0x2b, }, /* PrintScreen (also send via PS/2) on newer models */
|
{ KE_IGNORE, 0x2b, }, /* PrintScreen (also send via PS/2) on newer models */
|
||||||
{ KE_IGNORE, 0x2c, }, /* CapsLock (also send via PS/2) on newer models */
|
{ KE_IGNORE, 0x2c, }, /* CapsLock (also send via PS/2) on newer models */
|
||||||
|
{ KE_KEY, 0x2d, { KEY_DISPLAYTOGGLE } },
|
||||||
{ KE_KEY, 0x30, { KEY_VOLUMEUP } },
|
{ KE_KEY, 0x30, { KEY_VOLUMEUP } },
|
||||||
{ KE_KEY, 0x31, { KEY_VOLUMEDOWN } },
|
{ KE_KEY, 0x31, { KEY_VOLUMEDOWN } },
|
||||||
{ KE_KEY, 0x32, { KEY_MUTE } },
|
{ KE_KEY, 0x32, { KEY_MUTE } },
|
||||||
|
|||||||
@ -89,6 +89,30 @@ static struct awcc_quirks generic_quirks = {
|
|||||||
static struct awcc_quirks empty_quirks;
|
static struct awcc_quirks empty_quirks;
|
||||||
|
|
||||||
static const struct dmi_system_id awcc_dmi_table[] __initconst = {
|
static const struct dmi_system_id awcc_dmi_table[] __initconst = {
|
||||||
|
{
|
||||||
|
.ident = "Alienware 16 Area-51",
|
||||||
|
.matches = {
|
||||||
|
DMI_MATCH(DMI_SYS_VENDOR, "Alienware"),
|
||||||
|
DMI_MATCH(DMI_PRODUCT_NAME, "Alienware 16 Area-51"),
|
||||||
|
},
|
||||||
|
.driver_data = &g_series_quirks,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.ident = "Alienware 16X Aurora",
|
||||||
|
.matches = {
|
||||||
|
DMI_MATCH(DMI_SYS_VENDOR, "Alienware"),
|
||||||
|
DMI_MATCH(DMI_PRODUCT_NAME, "Alienware 16X Aurora"),
|
||||||
|
},
|
||||||
|
.driver_data = &g_series_quirks,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.ident = "Alienware 18 Area-51",
|
||||||
|
.matches = {
|
||||||
|
DMI_MATCH(DMI_SYS_VENDOR, "Alienware"),
|
||||||
|
DMI_MATCH(DMI_PRODUCT_NAME, "Alienware 18 Area-51"),
|
||||||
|
},
|
||||||
|
.driver_data = &g_series_quirks,
|
||||||
|
},
|
||||||
{
|
{
|
||||||
.ident = "Alienware 16 Aurora",
|
.ident = "Alienware 16 Aurora",
|
||||||
.matches = {
|
.matches = {
|
||||||
@ -161,6 +185,14 @@ static const struct dmi_system_id awcc_dmi_table[] __initconst = {
|
|||||||
},
|
},
|
||||||
.driver_data = &generic_quirks,
|
.driver_data = &generic_quirks,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
.ident = "Alienware x16",
|
||||||
|
.matches = {
|
||||||
|
DMI_MATCH(DMI_SYS_VENDOR, "Alienware"),
|
||||||
|
DMI_MATCH(DMI_PRODUCT_NAME, "Alienware x16"),
|
||||||
|
},
|
||||||
|
.driver_data = &g_series_quirks,
|
||||||
|
},
|
||||||
{
|
{
|
||||||
.ident = "Alienware x17",
|
.ident = "Alienware x17",
|
||||||
.matches = {
|
.matches = {
|
||||||
|
|||||||
@ -44,6 +44,7 @@ static const struct dmi_system_id lis3lv02d_devices[] __initconst = {
|
|||||||
/*
|
/*
|
||||||
* Additional individual entries were added after verification.
|
* Additional individual entries were added after verification.
|
||||||
*/
|
*/
|
||||||
|
DELL_LIS3LV02D_DMI_ENTRY("Latitude 5400", 0x29),
|
||||||
DELL_LIS3LV02D_DMI_ENTRY("Latitude 5480", 0x29),
|
DELL_LIS3LV02D_DMI_ENTRY("Latitude 5480", 0x29),
|
||||||
DELL_LIS3LV02D_DMI_ENTRY("Latitude 5500", 0x29),
|
DELL_LIS3LV02D_DMI_ENTRY("Latitude 5500", 0x29),
|
||||||
DELL_LIS3LV02D_DMI_ENTRY("Latitude E6330", 0x29),
|
DELL_LIS3LV02D_DMI_ENTRY("Latitude E6330", 0x29),
|
||||||
|
|||||||
@ -207,7 +207,7 @@ static int hp_populate_enumeration_elements_from_package(union acpi_object *enum
|
|||||||
case PREREQUISITES:
|
case PREREQUISITES:
|
||||||
size = min_t(u32, enum_data->common.prerequisites_size, MAX_PREREQUISITES_SIZE);
|
size = min_t(u32, enum_data->common.prerequisites_size, MAX_PREREQUISITES_SIZE);
|
||||||
for (reqs = 0; reqs < size; reqs++) {
|
for (reqs = 0; reqs < size; reqs++) {
|
||||||
if (elem >= enum_obj_count) {
|
if (elem + reqs >= enum_obj_count) {
|
||||||
pr_err("Error enum-objects package is too small\n");
|
pr_err("Error enum-objects package is too small\n");
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
@ -255,7 +255,7 @@ static int hp_populate_enumeration_elements_from_package(union acpi_object *enum
|
|||||||
|
|
||||||
for (pos_values = 0; pos_values < size && pos_values < MAX_VALUES_SIZE;
|
for (pos_values = 0; pos_values < size && pos_values < MAX_VALUES_SIZE;
|
||||||
pos_values++) {
|
pos_values++) {
|
||||||
if (elem >= enum_obj_count) {
|
if (elem + pos_values >= enum_obj_count) {
|
||||||
pr_err("Error enum-objects package is too small\n");
|
pr_err("Error enum-objects package is too small\n");
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -227,7 +227,7 @@ static int hp_populate_integer_elements_from_package(union acpi_object *integer_
|
|||||||
size = min_t(u32, integer_data->common.prerequisites_size, MAX_PREREQUISITES_SIZE);
|
size = min_t(u32, integer_data->common.prerequisites_size, MAX_PREREQUISITES_SIZE);
|
||||||
|
|
||||||
for (reqs = 0; reqs < size; reqs++) {
|
for (reqs = 0; reqs < size; reqs++) {
|
||||||
if (elem >= integer_obj_count) {
|
if (elem + reqs >= integer_obj_count) {
|
||||||
pr_err("Error elem-objects package is too small\n");
|
pr_err("Error elem-objects package is too small\n");
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -216,6 +216,11 @@ static int hp_populate_ordered_list_elements_from_package(union acpi_object *ord
|
|||||||
size = min_t(u32, ordered_list_data->common.prerequisites_size,
|
size = min_t(u32, ordered_list_data->common.prerequisites_size,
|
||||||
MAX_PREREQUISITES_SIZE);
|
MAX_PREREQUISITES_SIZE);
|
||||||
for (reqs = 0; reqs < size; reqs++) {
|
for (reqs = 0; reqs < size; reqs++) {
|
||||||
|
if (elem + reqs >= order_obj_count) {
|
||||||
|
pr_err("Error elem-objects package is too small\n");
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
|
||||||
ret = hp_convert_hexstr_to_str(order_obj[elem + reqs].string.pointer,
|
ret = hp_convert_hexstr_to_str(order_obj[elem + reqs].string.pointer,
|
||||||
order_obj[elem + reqs].string.length,
|
order_obj[elem + reqs].string.length,
|
||||||
&str_value, &value_len);
|
&str_value, &value_len);
|
||||||
|
|||||||
@ -303,6 +303,11 @@ static int hp_populate_password_elements_from_package(union acpi_object *passwor
|
|||||||
MAX_PREREQUISITES_SIZE);
|
MAX_PREREQUISITES_SIZE);
|
||||||
|
|
||||||
for (reqs = 0; reqs < size; reqs++) {
|
for (reqs = 0; reqs < size; reqs++) {
|
||||||
|
if (elem + reqs >= password_obj_count) {
|
||||||
|
pr_err("Error elem-objects package is too small\n");
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
|
||||||
ret = hp_convert_hexstr_to_str(password_obj[elem + reqs].string.pointer,
|
ret = hp_convert_hexstr_to_str(password_obj[elem + reqs].string.pointer,
|
||||||
password_obj[elem + reqs].string.length,
|
password_obj[elem + reqs].string.length,
|
||||||
&str_value, &value_len);
|
&str_value, &value_len);
|
||||||
|
|||||||
@ -217,7 +217,7 @@ static int hp_populate_string_elements_from_package(union acpi_object *string_ob
|
|||||||
MAX_PREREQUISITES_SIZE);
|
MAX_PREREQUISITES_SIZE);
|
||||||
|
|
||||||
for (reqs = 0; reqs < size; reqs++) {
|
for (reqs = 0; reqs < size; reqs++) {
|
||||||
if (elem >= string_obj_count) {
|
if (elem + reqs >= string_obj_count) {
|
||||||
pr_err("Error elem-objects package is too small\n");
|
pr_err("Error elem-objects package is too small\n");
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -273,7 +273,7 @@ static int __init ibm_rtl_init(void) {
|
|||||||
/* search for the _RTL_ signature at the start of the table */
|
/* search for the _RTL_ signature at the start of the table */
|
||||||
for (i = 0 ; i < ebda_size/sizeof(unsigned int); i++) {
|
for (i = 0 ; i < ebda_size/sizeof(unsigned int); i++) {
|
||||||
struct ibm_rtl_table __iomem * tmp;
|
struct ibm_rtl_table __iomem * tmp;
|
||||||
tmp = (struct ibm_rtl_table __iomem *) (ebda_map+i);
|
tmp = (struct ibm_rtl_table __iomem *) (ebda_map + i*sizeof(unsigned int));
|
||||||
if ((readq(&tmp->signature) & RTL_MASK) == RTL_SIGNATURE) {
|
if ((readq(&tmp->signature) & RTL_MASK) == RTL_SIGNATURE) {
|
||||||
phys_addr_t addr;
|
phys_addr_t addr;
|
||||||
unsigned int plen;
|
unsigned int plen;
|
||||||
|
|||||||
@ -503,8 +503,10 @@ static int pmt_features_discovery(struct pmt_features_priv *priv,
|
|||||||
|
|
||||||
ret = kobject_init_and_add(&feature->kobj, ktype, &priv->dev->kobj,
|
ret = kobject_init_and_add(&feature->kobj, ktype, &priv->dev->kobj,
|
||||||
"%s", pmt_feature_names[feature->id]);
|
"%s", pmt_feature_names[feature->id]);
|
||||||
if (ret)
|
if (ret) {
|
||||||
|
kobject_put(&feature->kobj);
|
||||||
return ret;
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
kobject_uevent(&feature->kobj, KOBJ_ADD);
|
kobject_uevent(&feature->kobj, KOBJ_ADD);
|
||||||
pmt_features_add_feat(feature);
|
pmt_features_add_feat(feature);
|
||||||
@ -546,9 +548,9 @@ static int pmt_features_probe(struct auxiliary_device *auxdev, const struct auxi
|
|||||||
priv->dev = device_create(&intel_pmt_class, &auxdev->dev, MKDEV(0, 0), priv,
|
priv->dev = device_create(&intel_pmt_class, &auxdev->dev, MKDEV(0, 0), priv,
|
||||||
"%s-%s", "features", dev_name(priv->parent));
|
"%s-%s", "features", dev_name(priv->parent));
|
||||||
if (IS_ERR(priv->dev))
|
if (IS_ERR(priv->dev))
|
||||||
return dev_err_probe(priv->dev, PTR_ERR(priv->dev),
|
return dev_err_probe(&auxdev->dev, PTR_ERR(priv->dev),
|
||||||
"Could not create %s-%s device node\n",
|
"Could not create %s-%s device node\n",
|
||||||
"features", dev_name(priv->dev));
|
"features", dev_name(priv->parent));
|
||||||
|
|
||||||
/* Initialize each feature */
|
/* Initialize each feature */
|
||||||
for (i = 0; i < ivdev->num_resources; i++) {
|
for (i = 0; i < ivdev->num_resources; i++) {
|
||||||
|
|||||||
@ -1367,7 +1367,7 @@ static const struct key_entry ideapad_keymap[] = {
|
|||||||
/* Performance toggle also Fn+Q, handled inside ideapad_wmi_notify() */
|
/* Performance toggle also Fn+Q, handled inside ideapad_wmi_notify() */
|
||||||
{ KE_KEY, 0x3d | IDEAPAD_WMI_KEY, { KEY_PROG4 } },
|
{ KE_KEY, 0x3d | IDEAPAD_WMI_KEY, { KEY_PROG4 } },
|
||||||
/* shift + prtsc */
|
/* shift + prtsc */
|
||||||
{ KE_KEY, 0x2d | IDEAPAD_WMI_KEY, { KEY_CUT } },
|
{ KE_KEY, 0x2d | IDEAPAD_WMI_KEY, { KEY_SELECTIVE_SCREENSHOT } },
|
||||||
{ KE_KEY, 0x29 | IDEAPAD_WMI_KEY, { KEY_TOUCHPAD_TOGGLE } },
|
{ KE_KEY, 0x29 | IDEAPAD_WMI_KEY, { KEY_TOUCHPAD_TOGGLE } },
|
||||||
{ KE_KEY, 0x2a | IDEAPAD_WMI_KEY, { KEY_ROOT_MENU } },
|
{ KE_KEY, 0x2a | IDEAPAD_WMI_KEY, { KEY_ROOT_MENU } },
|
||||||
|
|
||||||
|
|||||||
@ -195,7 +195,7 @@ static const struct tlmi_cert_guids thinkpad_cert_guid = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
static const struct tlmi_cert_guids thinkcenter_cert_guid = {
|
static const struct tlmi_cert_guids thinkcenter_cert_guid = {
|
||||||
.thumbprint = NULL,
|
.thumbprint = LENOVO_CERT_THUMBPRINT_GUID, /* Same GUID as TP */
|
||||||
.set_bios_setting = LENOVO_TC_SET_BIOS_SETTING_CERT_GUID,
|
.set_bios_setting = LENOVO_TC_SET_BIOS_SETTING_CERT_GUID,
|
||||||
.save_bios_setting = LENOVO_TC_SAVE_BIOS_SETTING_CERT_GUID,
|
.save_bios_setting = LENOVO_TC_SAVE_BIOS_SETTING_CERT_GUID,
|
||||||
.cert_to_password = LENOVO_TC_CERT_TO_PASSWORD_GUID,
|
.cert_to_password = LENOVO_TC_CERT_TO_PASSWORD_GUID,
|
||||||
@ -709,6 +709,10 @@ static ssize_t cert_thumbprint(char *buf, const char *arg, int count)
|
|||||||
if (!tlmi_priv.cert_guid->thumbprint)
|
if (!tlmi_priv.cert_guid->thumbprint)
|
||||||
return -EOPNOTSUPP;
|
return -EOPNOTSUPP;
|
||||||
|
|
||||||
|
/* Older ThinkCenter BIOS may not have support */
|
||||||
|
if (!wmi_has_guid(tlmi_priv.cert_guid->thumbprint))
|
||||||
|
return -EOPNOTSUPP;
|
||||||
|
|
||||||
status = wmi_evaluate_method(tlmi_priv.cert_guid->thumbprint, 0, 0, &input, &output);
|
status = wmi_evaluate_method(tlmi_priv.cert_guid->thumbprint, 0, 0, &input, &output);
|
||||||
if (ACPI_FAILURE(status)) {
|
if (ACPI_FAILURE(status)) {
|
||||||
kfree(output.pointer);
|
kfree(output.pointer);
|
||||||
|
|||||||
@ -1130,6 +1130,9 @@ static void __exit msi_cleanup(void)
|
|||||||
sysfs_remove_group(&msipf_device->dev.kobj, &msipf_attribute_group);
|
sysfs_remove_group(&msipf_device->dev.kobj, &msipf_attribute_group);
|
||||||
if (!quirks->old_ec_model && threeg_exists)
|
if (!quirks->old_ec_model && threeg_exists)
|
||||||
device_remove_file(&msipf_device->dev, &dev_attr_threeg);
|
device_remove_file(&msipf_device->dev, &dev_attr_threeg);
|
||||||
|
if (quirks->old_ec_model)
|
||||||
|
sysfs_remove_group(&msipf_device->dev.kobj,
|
||||||
|
&msipf_old_attribute_group);
|
||||||
platform_device_unregister(msipf_device);
|
platform_device_unregister(msipf_device);
|
||||||
platform_driver_unregister(&msipf_driver);
|
platform_driver_unregister(&msipf_driver);
|
||||||
backlight_device_unregister(msibl_device);
|
backlight_device_unregister(msibl_device);
|
||||||
|
|||||||
@ -442,12 +442,13 @@ static int galaxybook_battery_ext_property_get(struct power_supply *psy,
|
|||||||
union power_supply_propval *val)
|
union power_supply_propval *val)
|
||||||
{
|
{
|
||||||
struct samsung_galaxybook *galaxybook = ext_data;
|
struct samsung_galaxybook *galaxybook = ext_data;
|
||||||
|
u8 value;
|
||||||
int err;
|
int err;
|
||||||
|
|
||||||
if (psp != POWER_SUPPLY_PROP_CHARGE_CONTROL_END_THRESHOLD)
|
if (psp != POWER_SUPPLY_PROP_CHARGE_CONTROL_END_THRESHOLD)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
err = charge_control_end_threshold_acpi_get(galaxybook, (u8 *)&val->intval);
|
err = charge_control_end_threshold_acpi_get(galaxybook, &value);
|
||||||
if (err)
|
if (err)
|
||||||
return err;
|
return err;
|
||||||
|
|
||||||
@ -455,8 +456,10 @@ static int galaxybook_battery_ext_property_get(struct power_supply *psy,
|
|||||||
* device stores "no end threshold" as 0 instead of 100;
|
* device stores "no end threshold" as 0 instead of 100;
|
||||||
* if device has 0, report 100
|
* if device has 0, report 100
|
||||||
*/
|
*/
|
||||||
if (val->intval == 0)
|
if (value == 0)
|
||||||
val->intval = 100;
|
value = 100;
|
||||||
|
|
||||||
|
val->intval = value;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1844,6 +1844,13 @@ static const struct dmi_system_id uniwill_dmi_table[] __initconst = {
|
|||||||
DMI_EXACT_MATCH(DMI_BOARD_NAME, "X6AR5xxY_mLED"),
|
DMI_EXACT_MATCH(DMI_BOARD_NAME, "X6AR5xxY_mLED"),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
.ident = "TUXEDO Book BA15 Gen10 AMD",
|
||||||
|
.matches = {
|
||||||
|
DMI_MATCH(DMI_SYS_VENDOR, "TUXEDO"),
|
||||||
|
DMI_EXACT_MATCH(DMI_BOARD_NAME, "PF5PU1G"),
|
||||||
|
},
|
||||||
|
},
|
||||||
{
|
{
|
||||||
.ident = "TUXEDO Pulse 14 Gen1 AMD",
|
.ident = "TUXEDO Pulse 14 Gen1 AMD",
|
||||||
.matches = {
|
.matches = {
|
||||||
|
|||||||
@ -80,13 +80,13 @@ enum intel_vsec_quirks {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* struct pmt_callbacks - Callback infrastructure for PMT devices
|
* struct pmt_callbacks - Callback infrastructure for PMT devices
|
||||||
* ->read_telem() when specified, called by client driver to access PMT data (instead
|
* @read_telem: when specified, called by client driver to access PMT
|
||||||
* of direct copy).
|
* data (instead of direct copy).
|
||||||
* @pdev: PCI device reference for the callback's use
|
* * pdev: PCI device reference for the callback's use
|
||||||
* @guid: ID of data to acccss
|
* * guid: ID of data to acccss
|
||||||
* @data: buffer for the data to be copied
|
* * data: buffer for the data to be copied
|
||||||
* @off: offset into the requested buffer
|
* * off: offset into the requested buffer
|
||||||
* @count: size of buffer
|
* * count: size of buffer
|
||||||
*/
|
*/
|
||||||
struct pmt_callbacks {
|
struct pmt_callbacks {
|
||||||
int (*read_telem)(struct pci_dev *pdev, u32 guid, u64 *data, loff_t off, u32 count);
|
int (*read_telem)(struct pci_dev *pdev, u32 guid, u64 *data, loff_t off, u32 count);
|
||||||
@ -120,7 +120,7 @@ struct intel_vsec_platform_info {
|
|||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* struct intel_sec_device - Auxbus specific device information
|
* struct intel_vsec_device - Auxbus specific device information
|
||||||
* @auxdev: auxbus device struct for auxbus access
|
* @auxdev: auxbus device struct for auxbus access
|
||||||
* @pcidev: pci device associated with the device
|
* @pcidev: pci device associated with the device
|
||||||
* @resource: any resources shared by the parent
|
* @resource: any resources shared by the parent
|
||||||
@ -128,6 +128,7 @@ struct intel_vsec_platform_info {
|
|||||||
* @num_resources: number of resources
|
* @num_resources: number of resources
|
||||||
* @id: xarray id
|
* @id: xarray id
|
||||||
* @priv_data: any private data needed
|
* @priv_data: any private data needed
|
||||||
|
* @priv_data_size: size of private data area
|
||||||
* @quirks: specified quirks
|
* @quirks: specified quirks
|
||||||
* @base_addr: base address of entries (if specified)
|
* @base_addr: base address of entries (if specified)
|
||||||
* @cap_id: the enumerated id of the vsec feature
|
* @cap_id: the enumerated id of the vsec feature
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user