Skip to content

Commit 9c3255a

Browse files
committed
Merge tag 'platform-drivers-x86-v6.5-1' of git://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86
Pull x86 platform driver updates from Hans de Goede: "AMD PMC and PMF drivers: - Various bugfixes - Improved debugging support Intel PMC: - Refactor to support hw with multiple PMCs - Various other improvements / new hw support Intel Speed Select Technology (ISST): - TPMI Uncore Frequency + Cluster Level Power Controls - Various bugfixes - tools/intel-speed-select: Misc improvements Dell-DDV: Add documentation INT3472 ACPI camera sensor glue code: - Evaluate device's _DSM method to control imaging clock - Drop the need to have a table with per sensor-model info Lenovo Yogabook: - Refactor / rework to also support Android models Think-LMI: - Multiple improvements and fixes WMI: - Add proper API documentation for the WMI bus x86-android-tablets: - Misc new hw support Miscellaneous other cleanups / fixes" * tag 'platform-drivers-x86-v6.5-1' of git://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86: (91 commits) platform/x86:intel/pmc: Add Meteor Lake IOE-M PMC related maps platform/x86:intel/pmc: Add Meteor Lake IOE-P PMC related maps platform/x86:intel/pmc: Use SSRAM to discover pwrm base address of primary PMC platform/x86:intel/pmc: Discover PMC devices platform/x86:intel/pmc: Enable debugfs multiple PMC support platform/x86:intel/pmc: Add support to handle multiple PMCs platform/x86:intel/pmc: Combine core_init() and core_configure() platform/x86:intel/pmc: Update maps for Meteor Lake P/M platforms platform/x86/intel: tpmi: Remove hardcoded unit and offset platform/x86: int3472: discrete: Log a warning if the pin-numbers don't match platform/x86: int3472: discrete: Use FIELD_GET() on the GPIO _DSM return value platform/x86: int3472: discrete: Add alternative "AVDD" regulator supply name platform/x86: int3472: discrete: Add support for 1 GPIO regulator shared between 2 sensors platform/x86: int3472: discrete: Remove sensor_config-s platform/x86: int3472: discrete: Drop GPIO remapping support platform/x86: apple-gmux: don't use be32_to_cpu and cpu_to_be32 platform/x86/dell/dell-rbtn: Fix resources leaking on error path platform/x86: ISST: Fix usage counter platform/x86: ISST: Reset default callback on unregister platform/x86: int3472: Switch back to use struct i2c_driver's .probe() ...
2 parents 6cdbb09 + d2a7bd3 commit 9c3255a

Some content is hidden

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

70 files changed

+4518
-956
lines changed
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
What: /sys/bus/wmi/devices/05901221-D566-11D1-B2F0-00A0C9062910[-X]/bmof
2+
Date: Jun 2017
3+
KernelVersion: 4.13
4+
Description:
5+
Binary MOF metadata used to decribe the details of available ACPI WMI interfaces.
6+
7+
See Documentation/wmi/devices/wmi-bmof.rst for details.

Documentation/ABI/testing/debugfs-dell-wmi-ddv

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,32 @@ Date: September 2022
33
KernelVersion: 6.1
44
Contact: Armin Wolf <[email protected]>
55
Description:
6-
This file contains the contents of the fan sensor information buffer,
7-
which contains fan sensor entries and a terminating character (0xFF).
6+
This file contains the contents of the fan sensor information
7+
buffer, which contains fan sensor entries and a terminating
8+
character (0xFF).
89

9-
Each fan sensor entry consists of three bytes with an unknown meaning,
10-
interested people may use this file for reverse-engineering.
10+
Each fan sensor entry contains:
11+
12+
- fan type (single byte)
13+
- fan speed in RPM (two bytes, little endian)
14+
15+
See Documentation/wmi/devices/dell-wmi-ddv.rst for details.
1116

1217
What: /sys/kernel/debug/dell-wmi-ddv-<wmi_device_name>/thermal_sensor_information
1318
Date: September 2022
1419
KernelVersion: 6.1
1520
Contact: Armin Wolf <[email protected]>
1621
Description:
17-
This file contains the contents of the thermal sensor information buffer,
18-
which contains thermal sensor entries and a terminating character (0xFF).
22+
This file contains the contents of the thermal sensor information
23+
buffer, which contains thermal sensor entries and a terminating
24+
character (0xFF).
25+
26+
Each thermal sensor entry contains:
27+
28+
- thermal type (single byte)
29+
- current temperature (single byte)
30+
- min. temperature (single byte)
31+
- max. temperature (single byte)
32+
- unknown field (single byte)
1933

20-
Each thermal sensor entry consists of five bytes with an unknown meaning,
21-
interested people may use this file for reverse-engineering.
34+
See Documentation/wmi/devices/dell-wmi-ddv.rst for details.

Documentation/ABI/testing/sysfs-class-firmware-attributes

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -243,8 +243,8 @@ Description:
243243

244244
index:
245245
Used with HDD and NVME authentication to set the drive index
246-
that is being referenced (e.g hdd0, hdd1 etc)
247-
This attribute defaults to device 0.
246+
that is being referenced (e.g hdd1, hdd2 etc)
247+
This attribute defaults to device 1.
248248

249249
certificate, signature, save_signature:
250250
These attributes are used for certificate based authentication. This is

Documentation/ABI/testing/sysfs-platform-dell-wmi-ddv

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,7 @@ Date: September 2022
33
KernelVersion: 6.1
44
Contact: Armin Wolf <[email protected]>
55
Description:
6-
Reports the Dell ePPID (electronic Dell Piece Part Identification)
6+
Reports the Dell ePPID (electronic Piece Part Identification)
77
of the ACPI battery.
8+
9+
See Documentation/wmi/devices/dell-wmi-ddv.rst for details.

Documentation/ABI/testing/sysfs-platform-mellanox-bootctl

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,3 +75,12 @@ KernelVersion: 6.4
7575
Contact: "Liming Sun <[email protected]>"
7676
Description:
7777
The file used to access the BlueField boot fifo.
78+
79+
What: /sys/bus/platform/devices/MLNXBF04:00/rsh_log
80+
Date: May 2023
81+
KernelVersion: 6.4
82+
Contact: "Liming Sun <[email protected]>"
83+
Description:
84+
The file used to write BlueField boot log with the format
85+
"[INFO|WARN|ERR|ASSERT ]<msg>". Log level 'INFO' is used by
86+
default if not specified.

Documentation/admin-guide/pm/intel_uncore_frequency_scaling.rst

Lines changed: 56 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
Intel Uncore Frequency Scaling
66
==============================
77

8-
:Copyright: |copy| 2022 Intel Corporation
8+
:Copyright: |copy| 2022-2023 Intel Corporation
99

1010
:Author: Srinivas Pandruvada <[email protected]>
1111

@@ -58,3 +58,58 @@ Each package_*_die_* contains the following attributes:
5858

5959
``current_freq_khz``
6060
This attribute is used to get the current uncore frequency.
61+
62+
SoCs with TPMI (Topology Aware Register and PM Capsule Interface)
63+
-----------------------------------------------------------------
64+
65+
An SoC can contain multiple power domains with individual or collection
66+
of mesh partitions. This partition is called fabric cluster.
67+
68+
Certain type of meshes will need to run at the same frequency, they will
69+
be placed in the same fabric cluster. Benefit of fabric cluster is that it
70+
offers a scalable mechanism to deal with partitioned fabrics in a SoC.
71+
72+
The current sysfs interface supports controls at package and die level.
73+
This interface is not enough to support more granular control at
74+
fabric cluster level.
75+
76+
SoCs with the support of TPMI (Topology Aware Register and PM Capsule
77+
Interface), can have multiple power domains. Each power domain can
78+
contain one or more fabric clusters.
79+
80+
To represent controls at fabric cluster level in addition to the
81+
controls at package and die level (like systems without TPMI
82+
support), sysfs is enhanced. This granular interface is presented in the
83+
sysfs with directories names prefixed with "uncore". For example:
84+
uncore00, uncore01 etc.
85+
86+
The scope of control is specified by attributes "package_id", "domain_id"
87+
and "fabric_cluster_id" in the directory.
88+
89+
Attributes in each directory:
90+
91+
``domain_id``
92+
This attribute is used to get the power domain id of this instance.
93+
94+
``fabric_cluster_id``
95+
This attribute is used to get the fabric cluster id of this instance.
96+
97+
``package_id``
98+
This attribute is used to get the package id of this instance.
99+
100+
The other attributes are same as presented at package_*_die_* level.
101+
102+
In most of current use cases, the "max_freq_khz" and "min_freq_khz"
103+
is updated at "package_*_die_*" level. This model will be still supported
104+
with the following approach:
105+
106+
When user uses controls at "package_*_die_*" level, then every fabric
107+
cluster is affected in that package and die. For example: user changes
108+
"max_freq_khz" in the package_00_die_00, then "max_freq_khz" for uncore*
109+
directory with the same package id will be updated. In this case user can
110+
still update "max_freq_khz" at each uncore* level, which is more restrictive.
111+
Similarly, user can update "min_freq_khz" at "package_*_die_*" level
112+
to apply at each uncore* level.
113+
114+
Support for "current_freq_khz" is available only at each fabric cluster
115+
level (i.e., in uncore* directory).

Documentation/driver-api/index.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,7 @@ available subsections can be seen below.
113113
xillybus
114114
zorro
115115
hte/index
116+
wmi
116117

117118
.. only:: subproject and html
118119

Documentation/driver-api/wmi.rst

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
.. SPDX-License-Identifier: GPL-2.0-or-later
2+
3+
==============
4+
WMI Driver API
5+
==============
6+
7+
The WMI driver core supports a more modern bus-based interface for interacting
8+
with WMI devices, and an older GUID-based interface. The latter interface is
9+
considered to be deprecated, so new WMI drivers should generally avoid it since
10+
it has some issues with multiple WMI devices and events sharing the same GUIDs
11+
and/or notification IDs. The modern bus-based interface instead maps each
12+
WMI device to a :c:type:`struct wmi_device <wmi_device>`, so it supports
13+
WMI devices sharing GUIDs and/or notification IDs. Drivers can then register
14+
a :c:type:`struct wmi_driver <wmi_driver>`, which will be bound to compatible
15+
WMI devices by the driver core.
16+
17+
.. kernel-doc:: include/linux/wmi.h
18+
:internal:
19+
20+
.. kernel-doc:: drivers/platform/x86/wmi.c
21+
:export:

Documentation/subsystem-apis.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,3 +71,4 @@ Storage interfaces
7171
scheduler/index
7272
mhi/index
7373
peci/index
74+
wmi/index

Documentation/wmi/acpi-interface.rst

Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
.. SPDX-License-Identifier: GPL-2.0-or-later
2+
3+
==================
4+
ACPI WMI interface
5+
==================
6+
7+
The ACPI WMI interface is a proprietary extension of the ACPI specification made
8+
by Microsoft to allow hardware vendors to embed WMI (Windows Management Instrumentation)
9+
objects inside their ACPI firmware. Typical functions implemented over ACPI WMI
10+
are hotkey events on modern notebooks and configuration of BIOS options.
11+
12+
PNP0C14 ACPI device
13+
-------------------
14+
15+
Discovery of WMI objects is handled by defining ACPI devices with a PNP ID
16+
of ``PNP0C14``. These devices will contain a set of ACPI buffers and methods
17+
used for mapping and execution of WMI methods and/or queries. If there exist
18+
multiple of such devices, then each device is required to have a
19+
unique ACPI UID.
20+
21+
_WDG buffer
22+
-----------
23+
24+
The ``_WDG`` buffer is used to discover WMI objects and is required to be
25+
static. Its internal structure consists of data blocks with a size of 20 bytes,
26+
containing the following data:
27+
28+
======= =============== =====================================================
29+
Offset Size (in bytes) Content
30+
======= =============== =====================================================
31+
0x00 16 128 bit Variant 2 object GUID.
32+
0x10 2 2 character method ID or single byte notification ID.
33+
0x12 1 Object instance count.
34+
0x13 1 Object flags.
35+
======= =============== =====================================================
36+
37+
The WMI object flags control whether the method or notification ID is used:
38+
39+
- 0x1: Data block usage is expensive and must be explicitly enabled/disabled.
40+
- 0x2: Data block contains WMI methods.
41+
- 0x4: Data block contains ASCIZ string.
42+
- 0x8: Data block describes a WMI event, use notification ID instead
43+
of method ID.
44+
45+
Each WMI object GUID can appear multiple times inside a system.
46+
The method/notification ID is used to construct the ACPI method names used for
47+
interacting with the WMI object.
48+
49+
WQxx ACPI methods
50+
-----------------
51+
52+
If a data block does not contain WMI methods, then its content can be retrieved
53+
by this required ACPI method. The last two characters of the ACPI method name
54+
are the method ID of the data block to query. Their single parameter is an
55+
integer describing the instance which should be queried. This parameter can be
56+
omitted if the data block contains only a single instance.
57+
58+
WSxx ACPI methods
59+
-----------------
60+
61+
Similar to the ``WQxx`` ACPI methods, except that it is optional and takes an
62+
additional buffer as its second argument. The instance argument also cannot
63+
be omitted.
64+
65+
WMxx ACPI methods
66+
-----------------
67+
68+
Used for executing WMI methods associated with a data block. The last two
69+
characters of the ACPI method name are the method ID of the data block
70+
containing the WMI methods. Their first parameter is a integer describing the
71+
instance which methods should be executed. The second parameter is an integer
72+
describing the WMI method ID to execute, and the third parameter is a buffer
73+
containing the WMI method parameters. If the data block is marked as containing
74+
an ASCIZ string, then this buffer should contain an ASCIZ string. The ACPI
75+
method will return the result of the executed WMI method.
76+
77+
WExx ACPI methods
78+
-----------------
79+
80+
Used for optionally enabling/disabling WMI events, the last two characters of
81+
the ACPI method are the notification ID of the data block describing the WMI
82+
event as hexadecimal value. Their first parameter is an integer with a value
83+
of 0 if the WMI event should be disabled, other values will enable
84+
the WMI event.
85+
86+
WCxx ACPI methods
87+
-----------------
88+
Similar to the ``WExx`` ACPI methods, except that it controls data collection
89+
instead of events and thus the last two characters of the ACPI method name are
90+
the method ID of the data block to enable/disable.
91+
92+
_WED ACPI method
93+
----------------
94+
95+
Used to retrieve additional WMI event data, its single parameter is a integer
96+
holding the notification ID of the event.

0 commit comments

Comments
 (0)