Commit 872cf28b authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'platform-drivers-x86-v6.11-4' of...

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

Pull x86 platform driver fixes from Ilpo Järvinen:

 - ISST: Fix an error-handling corner case

 - platform/surface: aggregator: Minor corner case fix and new HW
   support

* tag 'platform-drivers-x86-v6.11-4' of git://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86:
  platform/x86: ISST: Fix return value on last invalid resource
  platform/surface: aggregator: Fix warning when controller is destroyed in probe
  platform/surface: aggregator_registry: Add support for Surface Laptop 6
  platform/surface: aggregator_registry: Add fan and thermal sensor support for Surface Laptop 5
  platform/surface: aggregator_registry: Add support for Surface Laptop Studio 2
  platform/surface: aggregator_registry: Add support for Surface Laptop Go 3
  platform/surface: aggregator_registry: Add Support for Surface Pro 10
  platform/x86: asus-wmi: Add quirk for ROG Ally X
parents 5c6154ff 46ee21e9
...@@ -1354,7 +1354,8 @@ void ssam_controller_destroy(struct ssam_controller *ctrl) ...@@ -1354,7 +1354,8 @@ void ssam_controller_destroy(struct ssam_controller *ctrl)
if (ctrl->state == SSAM_CONTROLLER_UNINITIALIZED) if (ctrl->state == SSAM_CONTROLLER_UNINITIALIZED)
return; return;
WARN_ON(ctrl->state != SSAM_CONTROLLER_STOPPED); WARN_ON(ctrl->state != SSAM_CONTROLLER_STOPPED &&
ctrl->state != SSAM_CONTROLLER_INITIALIZED);
/* /*
* Note: New events could still have been received after the previous * Note: New events could still have been received after the previous
......
...@@ -265,16 +265,34 @@ static const struct software_node *ssam_node_group_sl5[] = { ...@@ -265,16 +265,34 @@ static const struct software_node *ssam_node_group_sl5[] = {
&ssam_node_root, &ssam_node_root,
&ssam_node_bat_ac, &ssam_node_bat_ac,
&ssam_node_bat_main, &ssam_node_bat_main,
&ssam_node_tmp_perf_profile, &ssam_node_tmp_perf_profile_with_fan,
&ssam_node_tmp_sensors,
&ssam_node_fan_speed,
&ssam_node_hid_main_keyboard,
&ssam_node_hid_main_touchpad,
&ssam_node_hid_main_iid5,
&ssam_node_hid_sam_ucm_ucsi,
NULL,
};
/* Devices for Surface Laptop 6. */
static const struct software_node *ssam_node_group_sl6[] = {
&ssam_node_root,
&ssam_node_bat_ac,
&ssam_node_bat_main,
&ssam_node_tmp_perf_profile_with_fan,
&ssam_node_tmp_sensors,
&ssam_node_fan_speed,
&ssam_node_hid_main_keyboard, &ssam_node_hid_main_keyboard,
&ssam_node_hid_main_touchpad, &ssam_node_hid_main_touchpad,
&ssam_node_hid_main_iid5, &ssam_node_hid_main_iid5,
&ssam_node_hid_sam_sensors,
&ssam_node_hid_sam_ucm_ucsi, &ssam_node_hid_sam_ucm_ucsi,
NULL, NULL,
}; };
/* Devices for Surface Laptop Studio. */ /* Devices for Surface Laptop Studio 1. */
static const struct software_node *ssam_node_group_sls[] = { static const struct software_node *ssam_node_group_sls1[] = {
&ssam_node_root, &ssam_node_root,
&ssam_node_bat_ac, &ssam_node_bat_ac,
&ssam_node_bat_main, &ssam_node_bat_main,
...@@ -289,6 +307,22 @@ static const struct software_node *ssam_node_group_sls[] = { ...@@ -289,6 +307,22 @@ static const struct software_node *ssam_node_group_sls[] = {
NULL, NULL,
}; };
/* Devices for Surface Laptop Studio 2. */
static const struct software_node *ssam_node_group_sls2[] = {
&ssam_node_root,
&ssam_node_bat_ac,
&ssam_node_bat_main,
&ssam_node_tmp_perf_profile_with_fan,
&ssam_node_tmp_sensors,
&ssam_node_fan_speed,
&ssam_node_pos_tablet_switch,
&ssam_node_hid_sam_keyboard,
&ssam_node_hid_sam_penstash,
&ssam_node_hid_sam_sensors,
&ssam_node_hid_sam_ucm_ucsi,
NULL,
};
/* Devices for Surface Laptop Go. */ /* Devices for Surface Laptop Go. */
static const struct software_node *ssam_node_group_slg1[] = { static const struct software_node *ssam_node_group_slg1[] = {
&ssam_node_root, &ssam_node_root,
...@@ -324,7 +358,7 @@ static const struct software_node *ssam_node_group_sp8[] = { ...@@ -324,7 +358,7 @@ static const struct software_node *ssam_node_group_sp8[] = {
NULL, NULL,
}; };
/* Devices for Surface Pro 9 */ /* Devices for Surface Pro 9 and 10 */
static const struct software_node *ssam_node_group_sp9[] = { static const struct software_node *ssam_node_group_sp9[] = {
&ssam_node_root, &ssam_node_root,
&ssam_node_hub_kip, &ssam_node_hub_kip,
...@@ -365,6 +399,9 @@ static const struct acpi_device_id ssam_platform_hub_match[] = { ...@@ -365,6 +399,9 @@ static const struct acpi_device_id ssam_platform_hub_match[] = {
/* Surface Pro 9 */ /* Surface Pro 9 */
{ "MSHW0343", (unsigned long)ssam_node_group_sp9 }, { "MSHW0343", (unsigned long)ssam_node_group_sp9 },
/* Surface Pro 10 */
{ "MSHW0510", (unsigned long)ssam_node_group_sp9 },
/* Surface Book 2 */ /* Surface Book 2 */
{ "MSHW0107", (unsigned long)ssam_node_group_gen5 }, { "MSHW0107", (unsigned long)ssam_node_group_gen5 },
...@@ -389,14 +426,23 @@ static const struct acpi_device_id ssam_platform_hub_match[] = { ...@@ -389,14 +426,23 @@ static const struct acpi_device_id ssam_platform_hub_match[] = {
/* Surface Laptop 5 */ /* Surface Laptop 5 */
{ "MSHW0350", (unsigned long)ssam_node_group_sl5 }, { "MSHW0350", (unsigned long)ssam_node_group_sl5 },
/* Surface Laptop 6 */
{ "MSHW0530", (unsigned long)ssam_node_group_sl6 },
/* Surface Laptop Go 1 */ /* Surface Laptop Go 1 */
{ "MSHW0118", (unsigned long)ssam_node_group_slg1 }, { "MSHW0118", (unsigned long)ssam_node_group_slg1 },
/* Surface Laptop Go 2 */ /* Surface Laptop Go 2 */
{ "MSHW0290", (unsigned long)ssam_node_group_slg1 }, { "MSHW0290", (unsigned long)ssam_node_group_slg1 },
/* Surface Laptop Studio */ /* Surface Laptop Go 3 */
{ "MSHW0123", (unsigned long)ssam_node_group_sls }, { "MSHW0440", (unsigned long)ssam_node_group_slg1 },
/* Surface Laptop Studio 1 */
{ "MSHW0123", (unsigned long)ssam_node_group_sls1 },
/* Surface Laptop Studio 2 */
{ "MSHW0360", (unsigned long)ssam_node_group_sls2 },
{ }, { },
}; };
......
...@@ -146,6 +146,20 @@ static const char * const ashs_ids[] = { "ATK4001", "ATK4002", NULL }; ...@@ -146,6 +146,20 @@ static const char * const ashs_ids[] = { "ATK4001", "ATK4002", NULL };
static int throttle_thermal_policy_write(struct asus_wmi *); static int throttle_thermal_policy_write(struct asus_wmi *);
static const struct dmi_system_id asus_ally_mcu_quirk[] = {
{
.matches = {
DMI_MATCH(DMI_BOARD_NAME, "RC71L"),
},
},
{
.matches = {
DMI_MATCH(DMI_BOARD_NAME, "RC72L"),
},
},
{ },
};
static bool ashs_present(void) static bool ashs_present(void)
{ {
int i = 0; int i = 0;
...@@ -4685,7 +4699,7 @@ static int asus_wmi_add(struct platform_device *pdev) ...@@ -4685,7 +4699,7 @@ static int asus_wmi_add(struct platform_device *pdev)
asus->dgpu_disable_available = asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_DGPU); asus->dgpu_disable_available = asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_DGPU);
asus->kbd_rgb_state_available = asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_TUF_RGB_STATE); asus->kbd_rgb_state_available = asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_TUF_RGB_STATE);
asus->ally_mcu_usb_switch = acpi_has_method(NULL, ASUS_USB0_PWR_EC0_CSEE) asus->ally_mcu_usb_switch = acpi_has_method(NULL, ASUS_USB0_PWR_EC0_CSEE)
&& dmi_match(DMI_BOARD_NAME, "RC71L"); && dmi_check_system(asus_ally_mcu_quirk);
if (asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_MINI_LED_MODE)) if (asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_MINI_LED_MODE))
asus->mini_led_dev_id = ASUS_WMI_DEVID_MINI_LED_MODE; asus->mini_led_dev_id = ASUS_WMI_DEVID_MINI_LED_MODE;
......
...@@ -1549,8 +1549,7 @@ int tpmi_sst_dev_add(struct auxiliary_device *auxdev) ...@@ -1549,8 +1549,7 @@ int tpmi_sst_dev_add(struct auxiliary_device *auxdev)
goto unlock_free; goto unlock_free;
} }
ret = sst_main(auxdev, &pd_info[i]); if (sst_main(auxdev, &pd_info[i])) {
if (ret) {
/* /*
* This entry is not valid, hardware can partially * This entry is not valid, hardware can partially
* populate dies. In this case MMIO will have 0xFFs. * populate dies. In this case MMIO will have 0xFFs.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment