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

Merge tag 'platform-drivers-x86-v6.14-1' of...

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

Pull x86 platform driver updates from Ilpo Järvinen:
 "acer-wmi:
   - Add support for PH14-51, PH16-72, and Nitro AN515-58
   - Add proper hwmon support
   - Improve error handling when reading "gaming system info"
   - Replace direct EC reads for the current platform profile with WMI
     calls to handle EC address variations
   - Replace custom platform_profile cycling with the generic one

  ACPI:
   - platform_profile: Major refactoring and improvements
   - Support registering multiple platform_profile handlers concurrently
     to avoid the need to quirk which handler takes precedence
   - Support reporting "custom" profile for cases where the current
     profile is ambiguous or when settings tweaks are done outside the
     pre-defined profile
   - Abstract and layer platform_profile API better using the class_dev
     and drvdata
   - Various minor improvements
   - Add Documentation and kerneldoc

  amd/hsmp:
   - Add support for HSMP protocol v7

  amd/pmc:
   - Support AMD 1Ah family 70h
   - Support STB with Ryzen desktop SoCs

  amd/pmf:
   - Support Custom BIOS inputs for PMF TA
   - Support passing SRA sensor data from AMD SFH (HID) to PMF TA

  dell-smo8800:
   - Move SMO88xx quirk away from the generic i2c-i801 driver
   - Add accelerometer support for Dell Latitude E6330/E6430 and XPS
     9550
   - Support probing accelerometer for models yet to be listed in the
     DMI mapping table because ACPI lacks i2c-address for the
     accelerometer (behind a module parameter because probing might be
     dangerous)

  HID:
   - amd_sfh: Add support for exporting SRA sensor data

  hp-wmi:
   - Add fan and thermal support for Victus 16-s1000

  input:
   - Add key for phone linking
   - i8042: Add context for the i8042 filter to enable cleaning up the
     filter related global variables from pdx86 drivers

  lenovo-wmi-camera:
   - Use SW_CAMERA_LENS_COVER instead of KEY_CAMERA_ACCESS

  mellanox mlxbf-pmc:
   - Add support for monitoring cycle count
   - Add Documentation

  thinkpad_acpi:
   - Add support for phone link key

  tools/power/x86/intel-speed-select:
   - Fix Turbo Ratio Limit restore

  x86-android-tables:
   - Add support for Vexia EDU ATLA 10 Bluetooth and EC battery driver

  And miscellaneous cleanups / refactoring / improvements"

* tag 'platform-drivers-x86-v6.14-1' of git://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86: (133 commits)
  platform/x86: acer-wmi: Fix initialization of last_non_turbo_profile
  platform/x86: acer-wmi: Ignore AC events
  platform/mellanox: mlxreg-io: use sysfs_emit() instead of sprintf()
  platform/mellanox: mlxreg-hotplug: use sysfs_emit() instead of sprintf()
  platform/mellanox: mlxbf-bootctl: use sysfs_emit() instead of sprintf()
  platform/x86: hp-wmi: Add fan and thermal profile support for Victus 16-s1000
  ACPI: platform_profile: Add a prefix to log messages
  ACPI: platform_profile: Add documentation
  ACPI: platform_profile: Clean platform_profile_handler
  ACPI: platform_profile: Move platform_profile_handler
  ACPI: platform_profile: Remove platform_profile_handler from exported symbols
  platform/x86: thinkpad_acpi: Use devm_platform_profile_register()
  platform/x86: inspur_platform_profile: Use devm_platform_profile_register()
  platform/x86: hp-wmi: Use devm_platform_profile_register()
  platform/x86: ideapad-laptop: Use devm_platform_profile_register()
  platform/x86: dell-pc: Use devm_platform_profile_register()
  platform/x86: asus-wmi: Use devm_platform_profile_register()
  platform/x86: amd: pmf: sps: Use devm_platform_profile_register()
  platform/x86: acer-wmi: Use devm_platform_profile_register()
  platform/surface: surface_platform_profile: Use devm_platform_profile_register()
  ...
parents 113691ce 0da9a3f9
Loading
Loading
Loading
Loading
+48 −0
Original line number Diff line number Diff line
What:		/sys/class/platform-profile/platform-profile-X/name
Date:		March 2025
KernelVersion:	6.14
Description:	Name of the class device given by the driver.

		RO

What:		/sys/class/platform-profile/platform-profile-X/choices
Date:		March 2025
KernelVersion:	6.14
Description:	This file contains a space-separated list of profiles supported
		for this device.

		Drivers must use the following standard profile-names:

		====================	========================================
		low-power		Low power consumption
		cool			Cooler operation
		quiet			Quieter operation
		balanced		Balance between low power consumption
					and performance
		balanced-performance	Balance between performance and low
					power consumption with a slight bias
					towards performance
		performance		High performance operation
		custom			Driver defined custom profile
		====================	========================================

		RO

What:		/sys/class/platform-profile/platform-profile-X/profile
Date:		March 2025
KernelVersion:	6.14
Description:	Reading this file gives the current selected profile for this
		device. Writing this file with one of the strings from
		platform_profile_choices changes the profile to the new value.

		This file can be monitored for changes by polling for POLLPRI,
		POLLPRI will be signaled on any changes, independent of those
		changes coming from a userspace write; or coming from another
		source such as e.g. a hotkey triggered profile change handled
		either directly by the embedded-controller or fully handled
		inside the kernel.

		This file may also emit the string 'custom' to indicate
		that the driver is using a driver defined custom profile.

		RW
+64 −0
Original line number Diff line number Diff line
HID           Driver         Description
MLNXBFD0      mlxbf-pmc      Performance counters (BlueField-1)
MLNXBFD1      mlxbf-pmc      Performance counters (BlueField-2)
MLNXBFD2      mlxbf-pmc      Performance counters (BlueField-3)

What:		/sys/bus/platform/devices/<HID>/hwmon/hwmonX/<block>/event_list
Date:		Dec 2020
KernelVersion:	5.10
Contact:	"Shravan Kumar Ramani <shravankr@nvidia.com>"
Description:
		List of events supported by the counters in the specific block.
		It is used to extract the event number or ID associated with
		each event.

What:		/sys/bus/platform/devices/<HID>/hwmon/hwmonX/<block>/event<N>
Date:		Dec 2020
KernelVersion:	5.10
Contact:	"Shravan Kumar Ramani <shravankr@nvidia.com>"
Description:
		Event monitored by corresponding counter. This is used to
		program or read back the event that should be or is currently
		being monitored by counter<N>.

What:		/sys/bus/platform/devices/<HID>/hwmon/hwmonX/<block>/counter<N>
Date:		Dec 2020
KernelVersion:	5.10
Contact:	"Shravan Kumar Ramani <shravankr@nvidia.com>"
Description:
		Counter value of the event being monitored. This is used to
		read the counter value of the event which was programmed using
		event<N>. This is also used to clear or reset the counter value
		by writing 0 to the counter sysfs.

What:		/sys/bus/platform/devices/<HID>/hwmon/hwmonX/<block>/enable
Date:		Dec 2020
KernelVersion:	5.10
Contact:	"Shravan Kumar Ramani <shravankr@nvidia.com>"
Description:
		Start or stop counters. This is used to start the counters
		for monitoring the programmed events and also to stop the
		counters after the desired duration. Writing value 1 will
		start all the counters in the block, and writing 0 will
		stop all the counters together.

What:		/sys/bus/platform/devices/<HID>/hwmon/hwmonX/<block>/<reg>
Date:		Dec 2020
KernelVersion:	5.10
Contact:	"Shravan Kumar Ramani <shravankr@nvidia.com>"
Description:
		Value of register. This is used to read or reset the registers
		where various performance statistics are counted for each block.
		Writing 0 to the sysfs will clear the counter, writing any other
		value is not allowed.

What:		/sys/bus/platform/devices/<HID>/hwmon/hwmonX/<block>/count_clock
Date:		Mar 2025
KernelVersion:	6.14
Contact:	"Shravan Kumar Ramani <shravankr@nvidia.com>"
Description:
		Use a counter for counting cycles. This is used to repurpose/dedicate
		any of the counters in the block to counting cycles. Each counter is
		represented by a bit (bit 0 for counter0, bit1 for counter1 and so on)
		and setting the corresponding bit will reserve that specific counter
		for counting cycles and override the event<N> setting.
+5 −0
Original line number Diff line number Diff line
@@ -33,3 +33,8 @@ Description: Reading this file gives the current selected profile for this
		source such as e.g. a hotkey triggered profile change handled
		either directly by the embedded-controller or fully handled
		inside the kernel.

		This file may also emit the string 'custom' to indicate
		that multiple platform profiles drivers are in use but
		have different values.  This string can not be written to
		this interface and is solely for informational purposes.
+38 −0
Original line number Diff line number Diff line
@@ -40,3 +40,41 @@ added. Drivers which wish to introduce new profile names must:
 1. Explain why the existing profile names cannot be used.
 2. Add the new profile name, along with a clear description of the
    expected behaviour, to the sysfs-platform_profile ABI documentation.

"Custom" profile support
========================
The platform_profile class also supports profiles advertising a "custom"
profile. This is intended to be set by drivers when the setttings in the
driver have been modified in a way that a standard profile doesn't represent
the current state.

Multiple driver support
=======================
When multiple drivers on a system advertise a platform profile handler, the
platform profile handler core will only advertise the profiles that are
common between all drivers to the ``/sys/firmware/acpi`` interfaces.

This is to ensure there is no ambiguity on what the profile names mean when
all handlers don't support a profile.

Individual drivers will register a 'platform_profile' class device that has
similar semantics as the ``/sys/firmware/acpi/platform_profile`` interface.

To discover which driver is associated with a platform profile handler the
user can read the ``name`` attribute of the class device.

To discover available profiles from the class interface the user can read the
``choices`` attribute.

If a user wants to select a profile for a specific driver, they can do so
by writing to the ``profile`` attribute of the driver's class device.

This will allow users to set different profiles for different drivers on the
same system. If the selected profile by individual drivers differs the
platform profile handler core will display the profile 'custom' to indicate
that the profiles are not the same.

While the ``platform_profile`` attribute has the value ``custom``, writing a
common profile from ``platform_profile_choices`` to the platform_profile
attribute of the platform profile handler core will set the profile for all
drivers.
+4 −0
Original line number Diff line number Diff line
@@ -41,6 +41,10 @@ helps in understanding how the WMI device is supposed to work. The path of the A
method associated with a given WMI device can be retrieved using the ``lswmi`` utility
as mentioned above.

If you are attempting to port a driver to Linux and are working on a Windows
system, `WMIExplorer <https://github.com/vinaypamnani/wmie2>`_ can be useful
for inspecting available WMI methods and invoking them directly.

Basic WMI driver structure
--------------------------

Loading