.. SPDX-License-Identifier: GPL-2.0-or-later

====================
Alienware WMI Driver
====================

Kurt Borja <kuurtb@gmail.com>

This is a driver for the "WMAX" WMI device, which is found in most Dell gaming
laptops and controls various special features.

Before the launch of M-Series laptops (~2018), the "WMAX" device controlled
basic RGB lighting, deep sleep mode, HDMI mode and amplifier status.

Later, this device was completely repurpused. Now it mostly deals with thermal
profiles, sensor monitoring and overclocking. This interface is named "AWCC" and
is known to be used by the AWCC OEM application to control these features.

The alienware-wmi driver controls both interfaces.

AWCC Interface
==============

WMI device documentation: Documentation/wmi/devices/alienware-wmi.rst

Supported devices
-----------------

- Alienware M-Series laptops
- Alienware X-Series laptops
- Alienware Aurora Desktops
- Dell G-Series laptops

If you believe your device supports the AWCC interface and you don't have any of
the features described in this document, try the following alienware-wmi module
parameters:

- ``force_platform_profile=1``: Forces probing for platform profile support
- ``force_hwmon=1``: Forces probing for HWMON support

If the module loads successfully with these parameters, consider submitting a
patch adding your model to the ``awcc_dmi_table`` located in
``drivers/platform/x86/dell/alienware-wmi-wmax.c`` or contacting the maintainer
for further guidance.

Status
------

The following features are currently supported:

- :ref:`Platform Profile <platform-profile>`:

  - Thermal profile control

  - G-Mode toggling

- :ref:`HWMON <hwmon>`:

  - Sensor monitoring

  - Manual fan control

.. _platform-profile:

Platform Profile
----------------

The AWCC interface exposes various firmware defined thermal profiles. These are
exposed to user-space through the Platform Profile class interface. Refer to
:ref:`sysfs-class-platform-profile <abi_file_testing_sysfs_class_platform_profile>`
for more information.

The name of the platform-profile class device exported by this driver is
"alienware-wmi" and it's path can be found with:

::

 grep -l "alienware-wmi" /sys/class/platform-profile/platform-profile-*/name | sed 's|/[^/]*$||'

If the device supports G-Mode, it is also toggled when selecting the
``performance`` profile.

.. note::
   You may set the ``force_gmode`` module parameter to always try to toggle this
   feature, without checking if your model supports it.

.. _hwmon:

HWMON
-----

The AWCC interface also supports sensor monitoring and manual fan control. Both
of these features are exposed to user-space through the HWMON interface.

The name of the hwmon class device exported by this driver is "alienware_wmi"
and it's path can be found with:

::

 grep -l "alienware_wmi" /sys/class/hwmon/hwmon*/name | sed 's|/[^/]*$||'

Sensor monitoring is done through the standard HWMON interface. Refer to
:ref:`sysfs-class-hwmon <abi_file_testing_sysfs_class_hwmon>` for more
information.

Manual fan control on the other hand, is not exposed directly by the AWCC
interface. Instead it let's us control a fan `boost` value. This `boost` value
has the following approximate behavior over the fan pwm:

::

 pwm = pwm_base + (fan_boost / 255) * (pwm_max - pwm_base)

Due to the above behavior, the fan `boost` control is exposed to user-space
through the following, custom hwmon sysfs attribute:

=============================== ======= =======================================
Name				Perm	Description
=============================== ======= =======================================
fan[1-4]_boost			RW	Fan boost value.

					Integer value between 0 and 255
=============================== ======= =======================================

.. note::
   In some devices, manual fan control only works reliably if the ``custom``
   platform profile is selected.
