Commit c8d9f2c7 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge tag 'platform-drivers-x86-v6.12-2' of...

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

Pull x86 platform driver fixes from Hans de Goede:

 - Intel PMC fix for suspend/resume issues on some Sky and Kaby Lake
   laptops

 - Intel Diamond Rapids hw-id additions

 - Documentation and MAINTAINERS fixes

 - Some other small fixes

* tag 'platform-drivers-x86-v6.12-2' of git://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86:
  platform/x86: x86-android-tablets: Fix use after free on platform_device_register() errors
  platform/x86: wmi: Update WMI driver API documentation
  platform/x86: dell-ddv: Fix typo in documentation
  platform/x86: dell-sysman: add support for alienware products
  platform/x86/intel: power-domains: Add Diamond Rapids support
  platform/x86: ISST: Add Diamond Rapids to support list
  platform/x86:intel/pmc: Disable ACPI PM Timer disabling on Sky and Kaby Lake
  platform/x86: dell-laptop: Do not fail when encountering unsupported batteries
  MAINTAINERS: Update Intel In Field Scan(IFS) entry
  platform/x86: ISST: Fix the KASAN report slab-out-of-bounds bug
parents 4563243e 2fae3129
Loading
Loading
Loading
Loading
+5 −6
Original line number Diff line number Diff line
@@ -7,12 +7,11 @@ WMI Driver API
The WMI driver core supports a more modern bus-based interface for interacting
with WMI devices, and an older GUID-based interface. The latter interface is
considered to be deprecated, so new WMI drivers should generally avoid it since
it has some issues with multiple WMI devices and events sharing the same GUIDs
and/or notification IDs. The modern bus-based interface instead maps each
WMI device to a :c:type:`struct wmi_device <wmi_device>`, so it supports
WMI devices sharing GUIDs and/or notification IDs. Drivers can then register
a :c:type:`struct wmi_driver <wmi_driver>`, which will be bound to compatible
WMI devices by the driver core.
it has some issues with multiple WMI devices sharing the same GUID.
The modern bus-based interface instead maps each WMI device to a
:c:type:`struct wmi_device <wmi_device>`, so it supports WMI devices sharing the
same GUID. Drivers can then register a :c:type:`struct wmi_driver <wmi_driver>`
which will be bound to compatible WMI devices by the driver core.

.. kernel-doc:: include/linux/wmi.h
   :internal:
+2 −2
Original line number Diff line number Diff line
@@ -8,7 +8,7 @@ Introduction
============

Many Dell notebooks made after ~2020 support a WMI-based interface for
retrieving various system data like battery temperature, ePPID, diagostic data
retrieving various system data like battery temperature, ePPID, diagnostic data
and fan/thermal sensor data.

This interface is likely used by the `Dell Data Vault` software on Windows,
@@ -277,7 +277,7 @@ Reverse-Engineering the DDV WMI interface
4. Try to deduce the meaning of a certain WMI method by comparing the control
   flow with other ACPI methods (_BIX or _BIF for battery related methods
   for example).
5. Use the built-in UEFI diagostics to view sensor types/values for fan/thermal
5. Use the built-in UEFI diagnostics to view sensor types/values for fan/thermal
   related methods (sometimes overwriting static ACPI data fields can be used
   to test different sensor type values, since on some machines this data is
   not reinitialized upon a warm reset).
+1 −1
Original line number Diff line number Diff line
@@ -11499,7 +11499,7 @@ F: include/uapi/linux/idxd.h
INTEL IN FIELD SCAN (IFS) DEVICE
M:	Jithu Joseph <jithu.joseph@intel.com>
R:	Ashok Raj <ashok.raj@intel.com>
R:	Ashok Raj <ashok.raj.linux@gmail.com>
R:	Tony Luck <tony.luck@intel.com>
S:	Maintained
F:	drivers/platform/x86/intel/ifs
+12 −3
Original line number Diff line number Diff line
@@ -2391,12 +2391,18 @@ static struct attribute *dell_battery_attrs[] = {
};
ATTRIBUTE_GROUPS(dell_battery);

static bool dell_battery_supported(struct power_supply *battery)
{
	/* We currently only support the primary battery */
	return strcmp(battery->desc->name, "BAT0") == 0;
}

static int dell_battery_add(struct power_supply *battery,
		struct acpi_battery_hook *hook)
{
	/* this currently only supports the primary battery */
	if (strcmp(battery->desc->name, "BAT0") != 0)
		return -ENODEV;
	/* Return 0 instead of an error to avoid being unloaded */
	if (!dell_battery_supported(battery))
		return 0;

	return device_add_groups(&battery->dev, dell_battery_groups);
}
@@ -2404,6 +2410,9 @@ static int dell_battery_add(struct power_supply *battery,
static int dell_battery_remove(struct power_supply *battery,
		struct acpi_battery_hook *hook)
{
	if (!dell_battery_supported(battery))
		return 0;

	device_remove_groups(&battery->dev, dell_battery_groups);
	return 0;
}
+1 −0
Original line number Diff line number Diff line
@@ -521,6 +521,7 @@ static int __init sysman_init(void)
	int ret = 0;

	if (!dmi_find_device(DMI_DEV_TYPE_OEM_STRING, "Dell System", NULL) &&
	    !dmi_find_device(DMI_DEV_TYPE_OEM_STRING, "Alienware", NULL) &&
	    !dmi_find_device(DMI_DEV_TYPE_OEM_STRING, "www.dell.com", NULL)) {
		pr_err("Unable to run on non-Dell system\n");
		return -ENODEV;
Loading