Skip to content

Commit 1193e20

Browse files
committed
Merge tag 'platform-drivers-x86-v6.16-1' of git://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86
Pull x86 platform drivers updates from Ilpo Järvinen: "The changes are mostly business as usual. Besides pdx86 changes, there are a few power supply changes needed for related pdx86 features, move of oxpec driver from hwmon (oxp-sensors) to pdx86, and one FW version warning to hid-asus. Highlights: - alienware-wmi-wmax: - Add HWMON support - Add ABI and admin-guide documentation - Expose GPIO debug methods through debug FS - Support manual fan control and "custom" thermal profile - amd/hsmp: - Add sysfs files to show HSMP telemetry - Report power readings and limits via hwmon - amd/isp4: Add AMD ISP platform config for OV05C10 - asus-wmi: - Refactor Ally suspend/resume to work better with older FW - hid-asus: check ROG Ally MCU version and warn about old FW versions - dasharo-acpi: - Add driver for Dasharo devices supporting fans and temperatures monitoring - dell-ddv: - Expose the battery health and manufacture date to userspace using power supply extensions - Implement the battery matching algorithm - dell-pc: - Improve error propagation - Use faux device - int3472: - Add delays to avoid GPIO regulator spikes - Add handshake pin support - Make regulator supply name configurable and allow registering more than 1 GPIO regulator - Map mt9m114 powerdown pin to powerenable - intel/pmc: Add separate SSRAM Telemetry driver - intel-uncore-freq: Add attributes to show agent types and die ID - ISST: - Support SST-TF revision 2 (allows more cores per bucket) - Support SST-PP revision 2 (fabric 1 frequencies) - Remove unnecessary SST MSRs restore (the package retains MSRs despite CPU offlining) - mellanox: Add support for SN2201, SN4280, SN5610, and SN5640 - mellanox: mlxbf-pmc: Support additional PMC blocks - oxpec: - Add OneXFly variants - Add support for charge limit, charge thresholds, and turbo LED - Distinguish current X1 variants to avoid unwanted matching to new variants - Follow hwmon conventions - Move from hwmon/oxp-sensors to platform/x86 to match the enlarged scope - power supply: - Add inhibit-charge-awake (needed by oxpec) - Add additional battery health status values ("blown fuse" and "cell imbalance") (needed by dell-ddv) - powerwell-ec: Add driver for Portwell EC supporting GPIO and watchdog - thinkpad-acpi: Support camera shutter switch hotkey - tuxedo: Add virtual LampArray for TUXEDO NB04 devices - tools/power/x86/intel-speed-select: - Support displaying SST-PP revision 2 fields - Skip uncore frequency update on newer generations of CPUs - Miscellaneous cleanups / refactoring / improvements" * tag 'platform-drivers-x86-v6.16-1' of git://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86: (112 commits) thermal/drivers/acerhdf: Constify struct thermal_zone_device_ops platform/x86/amd/hsmp: fix building with CONFIG_HWMON=m platform/x86: asus-wmi: fix build without CONFIG_SUSPEND docs: ABI: Fix "aassociated" to "associated" platform/x86: Add AMD ISP platform config for OV05C10 Documentation: admin-guide: pm: Add documentation for die_id platform/x86/intel-uncore-freq: Add attributes to show die_id platform/x86/intel: power-domains: Add interface to get Linux die ID Documentation: admin-guide: pm: Add documentation for agent_types platform/x86/intel-uncore-freq: Add attributes to show agent types platform/x86/tuxedo: Prevent invalid Kconfig state platform/x86: dell-ddv: Expose the battery health to userspace platform/x86: dell-ddv: Expose the battery manufacture date to userspace platform/x86: dell-ddv: Implement the battery matching algorithm power: supply: core: Add additional health status values platform/x86/amd/hsmp: acpi: Add sysfs files to display HSMP telemetry platform/x86/amd/hsmp: Report power via hwmon sensors platform/x86/amd/hsmp: Use a single DRIVER_VERSION for all hsmp modules platform/mellanox: mlxreg-dpu: Fix smatch warnings platform: mellanox: nvsw-sn2200: Fix .items in nvsw_sn2201_busbar_hotplug ...
2 parents 9d230d5 + 9c96808 commit 1193e20

File tree

103 files changed

+10311
-3205
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

103 files changed

+10311
-3205
lines changed

Documentation/ABI/stable/sysfs-driver-mlxreg-io

Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -715,3 +715,101 @@ Description: This file shows 1 in case the system reset happened due to the
715715
switch board.
716716

717717
The file is read only.
718+
719+
What: /sys/devices/platform/mlxplat/mlxreg-io/hwmon/hwmon*/global_wp_request
720+
Date: May 2025
721+
KernelVersion: 6.16
722+
Contact: Vadim Pasternak <vadimp@nvidia.com>
723+
Description: This file when written 1 activates request to allow access to
724+
the write protected flashes. Such request can be performed only
725+
for system equipped with BMC (Board Management Controller),
726+
which can grant access to protected flashes. In case BMC allows
727+
access - it will respond with "global_wp_response". BMC decides
728+
regarding time window of granted access. After granted window is
729+
expired, BMC will change value back to 0.
730+
Default value is 0.
731+
732+
The file is read/write.
733+
734+
What: /sys/devices/platform/mlxplat/mlxreg-io/hwmon/hwmon*/global_wp_response
735+
Date: May 2025
736+
KernelVersion: 6.16
737+
Contact: Vadim Pasternak <vadimp@nvidia.com>
738+
Description: This file, when set 1, indicates that access to protected
739+
flashes have been granted to host CPU by BMC.
740+
Default value is 0.
741+
742+
The file is read only.
743+
744+
What: /sys/devices/platform/mlxplat/mlxreg-io/hwmon/hwmon*/shutdown_unlock
745+
Date: May 2025
746+
KernelVersion: 6.16
747+
Contact: Vadim Pasternak <vadimp@nvidia.com>
748+
Description: When ASICs are getting overheated, system protection
749+
hardware mechanism enforces system reboot. After system
750+
reboot ASICs come up in locked state. To unlock ASICs,
751+
this file should be written 1
752+
Default value is 0.
753+
754+
The file is read/write.
755+
756+
What: /sys/devices/platform/mlxplat/i2c_mlxcpld.*/i2c-*/i2c-*/*-00**/mlxreg-io.*/hwmon/hwmon*/boot_progress
757+
Date: May 2025
758+
KernelVersion: 6.16
759+
Contact: Vadim Pasternak <vadimp@nvidia.com>
760+
Description: These files show the Data Process Unit board boot progress
761+
state. Valid states are:
762+
- 4 : OS starting.
763+
- 5 : OS running.
764+
- 6 : Low-Power Standby.
765+
766+
The file is read only.
767+
768+
What: /sys/devices/platform/mlxplat/i2c_mlxcpld.*/i2c-*/i2c-*/*-00**/mlxreg-io.*/hwmon/hwmon*/dpu_id
769+
Date: May 2025
770+
KernelVersion: 6.16
771+
Contact: Vadim Pasternak <vadimp@nvidia.com>
772+
Description: This file shows hardware Id of Data Process Unit board.
773+
774+
The file is read only.
775+
776+
What: /sys/devices/platform/mlxplat/i2c_mlxcpld.*/i2c-*/i2c-*/*-00**/mlxreg-io.*/hwmon/hwmon*/reset_aux_pwr_or_reload
777+
What: /sys/devices/platform/mlxplat/i2c_mlxcpld.*/i2c-*/i2c-*/*-00**/mlxreg-io.*/hwmon/hwmon*/reset_dpu_thermal
778+
What: /sys/devices/platform/mlxplat/i2c_mlxcpld.*/i2c-*/i2c-*/*-00**/mlxreg-io.*/hwmon/hwmon*/reset_from_main_board
779+
Date: May 2025
780+
KernelVersion: 6.16
781+
Contact: Vadim Pasternak <vadimp@nvidia.com>
782+
Description: These files expose the cause of the most recent reset of the Data
783+
Processing Unit (DPU) board. The possible causes are:
784+
- Power auxiliary outage or power reload.
785+
- Thermal shutdown.
786+
- Reset request from the main board.
787+
Value 1 in file means this is reset cause, 0 - otherwise. Only one of
788+
the above causes could be 1 at the same time, representing only last
789+
reset cause.
790+
791+
The files are read only.
792+
793+
What: /sys/devices/platform/mlxplat/i2c_mlxcpld.*/i2c-*/i2c-*/*-00**/mlxreg-io.*/hwmon/hwmon*/perst_rst
794+
What: /sys/devices/platform/mlxplat/i2c_mlxcpld.*/i2c-*/i2c-*/*-00**/mlxreg-io.*/hwmon/hwmon*/phy_rst
795+
What: /sys/devices/platform/mlxplat/i2c_mlxcpld.*/i2c-*/i2c-*/*-00**/mlxreg-io.*/hwmon/hwmon*/tpm_rst
796+
What: /sys/devices/platform/mlxplat/i2c_mlxcpld.*/i2c-*/i2c-*/*-00**/mlxreg-io.*/hwmon/hwmon*/usbphy_rst
797+
Date: May 2025
798+
KernelVersion: 6.16
799+
Contact: Vadim Pasternak <vadimp@nvidia.com>
800+
Description: These files allow to reset hardware components of Data Process
801+
Unit board. Respectively PCI, Ethernet PHY, TPM and USB PHY
802+
resets.
803+
Default values for all the attributes is 1. Writing 0 will
804+
cause reset of the related component.
805+
806+
The files are read/write.
807+
808+
What: /sys/devices/platform/mlxplat/i2c_mlxcpld.*/i2c-*/i2c-*/*-00**/mlxreg-io.*/hwmon/hwmon*/ufm_upgrade
809+
Date: May 2025
810+
KernelVersion: 6.16
811+
Contact: Vadim Pasternak <vadimp@nvidia.com>
812+
Description: These files show status of Unified Fabric Manager upgrade.
813+
state. 0 - means upgrade is done, 1 - otherwise.
814+
815+
The file is read only.
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
What: /sys/kernel/debug/alienware-wmi-<wmi_device_name>/system_description
2+
Date: March 2025
3+
KernelVersion: 6.15
4+
Contact: Kurt Borja <kuurtb@gmail.com>
5+
Description:
6+
This file exposes the raw ``system_description`` number reported
7+
by the WMAX device.
8+
9+
Only present on devices with the AWCC interface.
10+
11+
See Documentation/admin-guide/laptops/alienware-wmi.rst for
12+
details.
13+
14+
RO
15+
16+
What: /sys/kernel/debug/alienware-wmi-<wmi_device_name>/hwmon_data
17+
Date: March 2025
18+
KernelVersion: 6.15
19+
Contact: Kurt Borja <kuurtb@gmail.com>
20+
Description:
21+
This file exposes HWMON private data.
22+
23+
Includes fan sensor count, temperature sensor count, internal
24+
fan IDs and internal temp IDs.
25+
26+
See Documentation/admin-guide/laptops/alienware-wmi.rst for
27+
details.
28+
29+
RO
30+
31+
What: /sys/kernel/debug/alienware-wmi-<wmi_device_name>/pprof_data
32+
Date: March 2025
33+
KernelVersion: 6.15
34+
Contact: Kurt Borja <kuurtb@gmail.com>
35+
Description:
36+
This file exposes Platform Profile private data.
37+
38+
Includes internal mapping to platform profiles and thermal
39+
profile IDs.
40+
41+
See Documentation/admin-guide/laptops/alienware-wmi.rst for
42+
details.
43+
44+
RO
45+
46+
What: /sys/kernel/debug/alienware-wmi-<wmi_device_name>/gpio_ctl/total_gpios
47+
Date: May 2025
48+
KernelVersion: 6.16
49+
Contact: Kurt Borja <kuurtb@gmail.com>
50+
Description:
51+
Total number of GPIO pins reported by the device.
52+
53+
RO
54+
55+
What: /sys/kernel/debug/alienware-wmi-<wmi_device_name>/gpio_ctl/pinX
56+
Date: May 2025
57+
KernelVersion: 6.16
58+
Contact: Kurt Borja <kuurtb@gmail.com>
59+
Description:
60+
This file controls GPIO pin X status.
61+
62+
See Documentation/wmi/devices/alienware-wmi.rst for details.
63+
64+
RW

Documentation/ABI/testing/sysfs-bus-wmi

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,6 @@ Date: May 2017
7676
Contact: Darren Hart (VMware) <dvhart@infradead.org>
7777
Description:
7878
This file contains a boolean flags signaling the data block
79-
aassociated with the given WMI device is writable. If the
79+
associated with the given WMI device is writable. If the
8080
given WMI device is not associated with a data block, then
8181
this file will not exist.

Documentation/ABI/testing/sysfs-class-power

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -456,7 +456,7 @@ Description:
456456
"Over voltage", "Under voltage", "Unspecified failure", "Cold",
457457
"Watchdog timer expire", "Safety timer expire",
458458
"Over current", "Calibration required", "Warm",
459-
"Cool", "Hot", "No battery"
459+
"Cool", "Hot", "No battery", "Blown fuse", "Cell imbalance"
460460

461461
What: /sys/class/power_supply/<supply_name>/precharge_current
462462
Date: June 2017
@@ -508,11 +508,12 @@ Description:
508508
Access: Read, Write
509509

510510
Valid values:
511-
================ ====================================
512-
auto: Charge normally, respect thresholds
513-
inhibit-charge: Do not charge while AC is attached
514-
force-discharge: Force discharge while AC is attached
515-
================ ====================================
511+
===================== ========================================
512+
auto: Charge normally, respect thresholds
513+
inhibit-charge: Do not charge while AC is attached
514+
inhibit-charge-awake: inhibit-charge only when device is awake
515+
force-discharge: Force discharge while AC is attached
516+
===================== ========================================
516517

517518
What: /sys/class/power_supply/<supply_name>/technology
518519
Date: May 2007
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
What: /sys/class/hwmon/hwmonX/fanY_boost
2+
Date: March 2025
3+
KernelVersion: 6.15
4+
Contact: Kurt Borja <kuurtb@gmail.com>
5+
Description:
6+
This file exposes fan boost control for Dell gaming laptops with
7+
the AWCC WMI interface.
8+
9+
See Documentation/admin-guide/laptops/alienware-wmi.rst for
10+
details.
11+
12+
Integer value in the range 0 to 255
13+
14+
RW
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
What: /sys/devices/platform/<platform>/tt_toggle
2+
Date: Jun 2023
3+
KernelVersion: 6.5
4+
Contact: "Antheas Kapenekakis" <lkml@antheas.dev>
5+
Description:
6+
Takeover TDP controls from the device. OneXPlayer devices have a
7+
turbo button that can be used to switch between two TDP modes
8+
(usually 15W and 25W). By setting this attribute to 1, this
9+
functionality is disabled, handing TDP control over to (Windows)
10+
userspace software and the Turbo button turns into a keyboard
11+
shortcut over the AT keyboard of the device. In addition,
12+
using this setting is a prerequisite for PWM control for most
13+
newer models (otherwise it NOOPs).
14+
15+
What: /sys/devices/platform/<platform>/tt_led
16+
Date: April 2025
17+
KernelVersion: 6.16
18+
Contact: "Antheas Kapenekakis" <lkml@antheas.dev>
19+
Description:
20+
Some OneXPlayer devices (e.g., X1 series) feature a little LED
21+
nested in the Turbo button. This LED is illuminated when the
22+
device is in the higher TDP mode (e.g., 25W). Once tt_toggle
23+
is engaged, this LED is left dangling to its last state. This
24+
attribute allows userspace to control the LED state manually
25+
(either with 1 or 0). Only a subset of devices contain this LED.
Lines changed: 127 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,127 @@
1+
.. SPDX-License-Identifier: GPL-2.0-or-later
2+
3+
====================
4+
Alienware WMI Driver
5+
====================
6+
7+
Kurt Borja <kuurtb@gmail.com>
8+
9+
This is a driver for the "WMAX" WMI device, which is found in most Dell gaming
10+
laptops and controls various special features.
11+
12+
Before the launch of M-Series laptops (~2018), the "WMAX" device controlled
13+
basic RGB lighting, deep sleep mode, HDMI mode and amplifier status.
14+
15+
Later, this device was completely repurpused. Now it mostly deals with thermal
16+
profiles, sensor monitoring and overclocking. This interface is named "AWCC" and
17+
is known to be used by the AWCC OEM application to control these features.
18+
19+
The alienware-wmi driver controls both interfaces.
20+
21+
AWCC Interface
22+
==============
23+
24+
WMI device documentation: Documentation/wmi/devices/alienware-wmi.rst
25+
26+
Supported devices
27+
-----------------
28+
29+
- Alienware M-Series laptops
30+
- Alienware X-Series laptops
31+
- Alienware Aurora Desktops
32+
- Dell G-Series laptops
33+
34+
If you believe your device supports the AWCC interface and you don't have any of
35+
the features described in this document, try the following alienware-wmi module
36+
parameters:
37+
38+
- ``force_platform_profile=1``: Forces probing for platform profile support
39+
- ``force_hwmon=1``: Forces probing for HWMON support
40+
41+
If the module loads successfully with these parameters, consider submitting a
42+
patch adding your model to the ``awcc_dmi_table`` located in
43+
``drivers/platform/x86/dell/alienware-wmi-wmax.c`` or contacting the maintainer
44+
for further guidance.
45+
46+
Status
47+
------
48+
49+
The following features are currently supported:
50+
51+
- :ref:`Platform Profile <platform-profile>`:
52+
53+
- Thermal profile control
54+
55+
- G-Mode toggling
56+
57+
- :ref:`HWMON <hwmon>`:
58+
59+
- Sensor monitoring
60+
61+
- Manual fan control
62+
63+
.. _platform-profile:
64+
65+
Platform Profile
66+
----------------
67+
68+
The AWCC interface exposes various firmware defined thermal profiles. These are
69+
exposed to user-space through the Platform Profile class interface. Refer to
70+
:ref:`sysfs-class-platform-profile <abi_file_testing_sysfs_class_platform_profile>`
71+
for more information.
72+
73+
The name of the platform-profile class device exported by this driver is
74+
"alienware-wmi" and it's path can be found with:
75+
76+
::
77+
78+
grep -l "alienware-wmi" /sys/class/platform-profile/platform-profile-*/name | sed 's|/[^/]*$||'
79+
80+
If the device supports G-Mode, it is also toggled when selecting the
81+
``performance`` profile.
82+
83+
.. note::
84+
You may set the ``force_gmode`` module parameter to always try to toggle this
85+
feature, without checking if your model supports it.
86+
87+
.. _hwmon:
88+
89+
HWMON
90+
-----
91+
92+
The AWCC interface also supports sensor monitoring and manual fan control. Both
93+
of these features are exposed to user-space through the HWMON interface.
94+
95+
The name of the hwmon class device exported by this driver is "alienware_wmi"
96+
and it's path can be found with:
97+
98+
::
99+
100+
grep -l "alienware_wmi" /sys/class/hwmon/hwmon*/name | sed 's|/[^/]*$||'
101+
102+
Sensor monitoring is done through the standard HWMON interface. Refer to
103+
:ref:`sysfs-class-hwmon <abi_file_testing_sysfs_class_hwmon>` for more
104+
information.
105+
106+
Manual fan control on the other hand, is not exposed directly by the AWCC
107+
interface. Instead it let's us control a fan `boost` value. This `boost` value
108+
has the following aproximate behavior over the fan pwm:
109+
110+
::
111+
112+
pwm = pwm_base + (fan_boost / 255) * (pwm_max - pwm_base)
113+
114+
Due to the above behavior, the fan `boost` control is exposed to user-space
115+
through the following, custom hwmon sysfs attribute:
116+
117+
=============================== ======= =======================================
118+
Name Perm Description
119+
=============================== ======= =======================================
120+
fan[1-4]_boost RW Fan boost value.
121+
122+
Integer value between 0 and 255
123+
=============================== ======= =======================================
124+
125+
.. note::
126+
In some devices, manual fan control only works reliably if the ``custom``
127+
platform profile is selected.

Documentation/admin-guide/laptops/index.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ Laptop Drivers
77
.. toctree::
88
:maxdepth: 1
99

10+
alienware-wmi
1011
asus-laptop
1112
disk-shock-protection
1213
laptop-mode

0 commit comments

Comments
 (0)