1*3e48767aSKurt Borja.. SPDX-License-Identifier: GPL-2.0-or-later 2*3e48767aSKurt Borja 3*3e48767aSKurt Borja==================== 4*3e48767aSKurt BorjaAlienware WMI Driver 5*3e48767aSKurt Borja==================== 6*3e48767aSKurt Borja 7*3e48767aSKurt BorjaKurt Borja <kuurtb@gmail.com> 8*3e48767aSKurt Borja 9*3e48767aSKurt BorjaThis is a driver for the "WMAX" WMI device, which is found in most Dell gaming 10*3e48767aSKurt Borjalaptops and controls various special features. 11*3e48767aSKurt Borja 12*3e48767aSKurt BorjaBefore the launch of M-Series laptops (~2018), the "WMAX" device controlled 13*3e48767aSKurt Borjabasic RGB lighting, deep sleep mode, HDMI mode and amplifier status. 14*3e48767aSKurt Borja 15*3e48767aSKurt BorjaLater, this device was completely repurpused. Now it mostly deals with thermal 16*3e48767aSKurt Borjaprofiles, sensor monitoring and overclocking. This interface is named "AWCC" and 17*3e48767aSKurt Borjais known to be used by the AWCC OEM application to control these features. 18*3e48767aSKurt Borja 19*3e48767aSKurt BorjaThe alienware-wmi driver controls both interfaces. 20*3e48767aSKurt Borja 21*3e48767aSKurt BorjaAWCC Interface 22*3e48767aSKurt Borja============== 23*3e48767aSKurt Borja 24*3e48767aSKurt BorjaWMI device documentation: Documentation/wmi/devices/alienware-wmi.rst 25*3e48767aSKurt Borja 26*3e48767aSKurt BorjaSupported devices 27*3e48767aSKurt Borja----------------- 28*3e48767aSKurt Borja 29*3e48767aSKurt Borja- Alienware M-Series laptops 30*3e48767aSKurt Borja- Alienware X-Series laptops 31*3e48767aSKurt Borja- Alienware Aurora Desktops 32*3e48767aSKurt Borja- Dell G-Series laptops 33*3e48767aSKurt Borja 34*3e48767aSKurt BorjaIf you believe your device supports the AWCC interface and you don't have any of 35*3e48767aSKurt Borjathe features described in this document, try the following alienware-wmi module 36*3e48767aSKurt Borjaparameters: 37*3e48767aSKurt Borja 38*3e48767aSKurt Borja- ``force_platform_profile=1``: Forces probing for platform profile support 39*3e48767aSKurt Borja- ``force_hwmon=1``: Forces probing for HWMON support 40*3e48767aSKurt Borja 41*3e48767aSKurt BorjaIf the module loads successfully with these parameters, consider submitting a 42*3e48767aSKurt Borjapatch adding your model to the ``awcc_dmi_table`` located in 43*3e48767aSKurt Borja``drivers/platform/x86/dell/alienware-wmi-wmax.c`` or contacting the maintainer 44*3e48767aSKurt Borjafor further guidance. 45*3e48767aSKurt Borja 46*3e48767aSKurt BorjaStatus 47*3e48767aSKurt Borja------ 48*3e48767aSKurt Borja 49*3e48767aSKurt BorjaThe following features are currently supported: 50*3e48767aSKurt Borja 51*3e48767aSKurt Borja- :ref:`Platform Profile <platform-profile>`: 52*3e48767aSKurt Borja 53*3e48767aSKurt Borja - Thermal profile control 54*3e48767aSKurt Borja 55*3e48767aSKurt Borja - G-Mode toggling 56*3e48767aSKurt Borja 57*3e48767aSKurt Borja- :ref:`HWMON <hwmon>`: 58*3e48767aSKurt Borja 59*3e48767aSKurt Borja - Sensor monitoring 60*3e48767aSKurt Borja 61*3e48767aSKurt Borja - Manual fan control 62*3e48767aSKurt Borja 63*3e48767aSKurt Borja.. _platform-profile: 64*3e48767aSKurt Borja 65*3e48767aSKurt BorjaPlatform Profile 66*3e48767aSKurt Borja---------------- 67*3e48767aSKurt Borja 68*3e48767aSKurt BorjaThe AWCC interface exposes various firmware defined thermal profiles. These are 69*3e48767aSKurt Borjaexposed to user-space through the Platform Profile class interface. Refer to 70*3e48767aSKurt Borja:ref:`sysfs-class-platform-profile <abi_file_testing_sysfs_class_platform_profile>` 71*3e48767aSKurt Borjafor more information. 72*3e48767aSKurt Borja 73*3e48767aSKurt BorjaThe name of the platform-profile class device exported by this driver is 74*3e48767aSKurt Borja"alienware-wmi" and it's path can be found with: 75*3e48767aSKurt Borja 76*3e48767aSKurt Borja:: 77*3e48767aSKurt Borja 78*3e48767aSKurt Borja grep -l "alienware-wmi" /sys/class/platform-profile/platform-profile-*/name | sed 's|/[^/]*$||' 79*3e48767aSKurt Borja 80*3e48767aSKurt BorjaIf the device supports G-Mode, it is also toggled when selecting the 81*3e48767aSKurt Borja``performance`` profile. 82*3e48767aSKurt Borja 83*3e48767aSKurt Borja.. note:: 84*3e48767aSKurt Borja You may set the ``force_gmode`` module parameter to always try to toggle this 85*3e48767aSKurt Borja feature, without checking if your model supports it. 86*3e48767aSKurt Borja 87*3e48767aSKurt Borja.. _hwmon: 88*3e48767aSKurt Borja 89*3e48767aSKurt BorjaHWMON 90*3e48767aSKurt Borja----- 91*3e48767aSKurt Borja 92*3e48767aSKurt BorjaThe AWCC interface also supports sensor monitoring and manual fan control. Both 93*3e48767aSKurt Borjaof these features are exposed to user-space through the HWMON interface. 94*3e48767aSKurt Borja 95*3e48767aSKurt BorjaThe name of the hwmon class device exported by this driver is "alienware_wmi" 96*3e48767aSKurt Borjaand it's path can be found with: 97*3e48767aSKurt Borja 98*3e48767aSKurt Borja:: 99*3e48767aSKurt Borja 100*3e48767aSKurt Borja grep -l "alienware_wmi" /sys/class/hwmon/hwmon*/name | sed 's|/[^/]*$||' 101*3e48767aSKurt Borja 102*3e48767aSKurt BorjaSensor monitoring is done through the standard HWMON interface. Refer to 103*3e48767aSKurt Borja:ref:`sysfs-class-hwmon <abi_file_testing_sysfs_class_hwmon>` for more 104*3e48767aSKurt Borjainformation. 105*3e48767aSKurt Borja 106*3e48767aSKurt BorjaManual fan control on the other hand, is not exposed directly by the AWCC 107*3e48767aSKurt Borjainterface. Instead it let's us control a fan `boost` value. This `boost` value 108*3e48767aSKurt Borjahas the following aproximate behavior over the fan pwm: 109*3e48767aSKurt Borja 110*3e48767aSKurt Borja:: 111*3e48767aSKurt Borja 112*3e48767aSKurt Borja pwm = pwm_base + (fan_boost / 255) * (pwm_max - pwm_base) 113*3e48767aSKurt Borja 114*3e48767aSKurt BorjaDue to the above behavior, the fan `boost` control is exposed to user-space 115*3e48767aSKurt Borjathrough the following, custom hwmon sysfs attribute: 116*3e48767aSKurt Borja 117*3e48767aSKurt Borja=============================== ======= ======================================= 118*3e48767aSKurt BorjaName Perm Description 119*3e48767aSKurt Borja=============================== ======= ======================================= 120*3e48767aSKurt Borjafan[1-4]_boost RW Fan boost value. 121*3e48767aSKurt Borja 122*3e48767aSKurt Borja Integer value between 0 and 255 123*3e48767aSKurt Borja=============================== ======= ======================================= 124*3e48767aSKurt Borja 125*3e48767aSKurt Borja.. note:: 126*3e48767aSKurt Borja In some devices, manual fan control only works reliably if the ``custom`` 127*3e48767aSKurt Borja platform profile is selected. 128