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

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

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

Pull x86 platform driver updates from Ilpo Järvinen:

 - amd/pmf: Report system state changes using existing input events

 - asus-wmi: Zenbook 2023 camera LED disable support and fix TUF laptop
   keyboard RGB LED sysfs interface

 - dell-pc: Fan modes / platform profile support

 - hp-wmi: Fix platform profile switching on Omen/Victus laptops

 - intel/ISST: Use only TPMI interface when TPMI and legacy interfaces
   are available

 - intel/pmc: LTR restore support to pair with LTR ignore

 - intel/tpmi: Performance Limit Reasons (PLR) and APIC <-> Punit CPU
   numbering mapping support

 - WMI: driver override support and docs improvements

 - lenovo-yoga-c630: Support for EC (platform/arm64)

 - platform/arm64: Fix build with COMPILE_TEST (broke after addition of
   C630)

 - tools: Intel Speed Select Turbo Ratio Limit fix

 - Miscellaneous cleanups / refactoring / improvements

* tag 'platform-drivers-x86-v6.11-1' of git://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86: (65 commits)
  platform/x86: asus-wmi: fix TUF laptop RGB variant
  platform/x86/intel/tpmi/plr: Fix output in plr_print_bits()
  Docs/admin-guide: Remove pmf leftover reference from the index
  platform/x86: ideapad-laptop: use cleanup.h
  platform/x86: hp-wmi: Fix implementation of the platform_profile_omen_get function
  platform: arm64: EC_LENOVO_YOGA_C630 should depend on ARCH_QCOM
  platform: arm64: EC_ACER_ASPIRE1 should depend on ARCH_QCOM
  platform/x86/amd/pmf: Remove update system state document
  platform/x86/amd/pmf: Use existing input event codes to update system states
  platform/x86: hp-wmi: Fix platform profile option switch bug on Omen and Victus laptops
  platform/x86:intel/pmc: Add support to undo ltr_ignore
  platform/x86:intel/pmc: Use the Elvis operator
  platform/x86:intel/pmc: Use DEFINE_SHOW_STORE_ATTRIBUTE macro
  platform/x86:intel/pmc: Remove unneeded min_t check
  platform/x86:intel/pmc: Add support to show ltr_ignore value
  platform/x86:intel/pmc: Move pmc assignment closer to first usage
  platform/x86:intel/pmc: Convert index variables to be unsigned
  platform/x86:intel/pmc: Simplify mutex usage with cleanup helpers
  platform/x86:intel/pmc: Use the return value of pmc_core_send_msg
  tools/power/x86/intel-speed-select: v1.20 release
  ...
parents e2f710f9 d8b17a36
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -29,3 +29,12 @@ Example:
echo 0,0x20,0xff > mem_write
echo 1,64,64 > mem_write
Users:		Debugging, any user space test suite

What:		/sys/kernel/debug/tpmi-<n>/plr/domain<n>/status
Date:		Aug 2024
KernelVersion:	6.11
Contact:	Tero Kristo <tero.kristo@linux.intel.com>
Description:
Shows the currently active Performance Limit Reasons for die level and the
individual CPUs under the die. The contents of this file are sticky, and
clearing all the statuses can be done by writing "0\n" to this file.
+81 −0
Original line number Diff line number Diff line
What:		/sys/bus/wmi/devices/.../driver_override
Date:		February 2024
Contact:	Armin Wolf <W_Armin@gmx.de>
Description:
		This file allows the driver for a device to be specified which
		will override standard ID table matching.
		When specified, only a driver with a name matching the value
		written to driver_override will have an opportunity to bind
		to the device.
		The override is specified by writing a string to the
		driver_override file (echo wmi-event-dummy > driver_override).
		The override may be cleared with an empty string (echo > \
		driver_override) which returns the device to standard matching
		rules binding.
		Writing to driver_override does not automatically unbind the
		device from its current driver or make any attempt to automatically
		load the specified driver. If no driver with a matching name is
		currently loaded in the kernel, the device will not bind to any
		driver.
		This also allows devices to opt-out of driver binding using a
		driver_override name such as "none". Only a single driver may be
		specified in the override, there is no support for parsing delimiters.

What:		/sys/bus/wmi/devices/.../modalias
Date:		November 20:15
Contact:	Andy Lutomirski <luto@kernel.org>
Description:
		This file contains the MODALIAS value emitted by uevent for a
		given WMI device.

		Format: wmi:XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX.

What:		/sys/bus/wmi/devices/.../guid
Date:		November 2015
Contact:	Andy Lutomirski <luto@kernel.org>
Description:
		This file contains the GUID used to match WMI devices to
		compatible WMI drivers. This GUID is not necessarily unique
		inside a given machine, it is solely used to identify the
		interface exposed by a given WMI device.

What:		/sys/bus/wmi/devices/.../object_id
Date:		November 2015
Contact:	Andy Lutomirski <luto@kernel.org>
Description:
		This file contains the WMI object ID used internally to construct
		the ACPI method names used by non-event WMI devices. It contains
		two ASCII letters.

What:		/sys/bus/wmi/devices/.../notify_id
Date:		November 2015
Contact:	Andy Lutomirski <luto@kernel.org>
Description:
		This file contains the WMI notify ID used internally to map ACPI
		events to WMI event devices. It contains two ASCII letters.

What:		/sys/bus/wmi/devices/.../instance_count
Date:		November 2015
Contact:	Andy Lutomirski <luto@kernel.org>
Description:
		This file contains the number of WMI object instances being
		present on a given WMI device. It contains a non-negative
		number.

What:		/sys/bus/wmi/devices/.../expensive
Date:		November 2015
Contact:	Andy Lutomirski <luto@kernel.org>
Description:
		This file contains a boolean flag signaling if interacting with
		the given WMI device will consume significant CPU resources.
		The WMI driver core will take care of enabling/disabling such
		WMI devices.

What:		/sys/bus/wmi/devices/.../setable
Date:		May 2017
Contact:	Darren Hart (VMware) <dvhart@infradead.org>
Description:
		This file contains a boolean flags signaling the data block
		aassociated with the given WMI device is writable. If the
		given WMI device is not associated with a data block, then
		this file will not exist.
+0 −1
Original line number Diff line number Diff line
@@ -121,7 +121,6 @@ configure specific aspects of kernel behavior to your liking.
   parport
   perf-security
   pm/index
   pmf
   pnp
   rapidio
   RAS/index

Documentation/admin-guide/pmf.rst

deleted100644 → 0
+0 −24
Original line number Diff line number Diff line
.. SPDX-License-Identifier: GPL-2.0

Set udev rules for PMF Smart PC Builder
---------------------------------------

AMD PMF(Platform Management Framework) Smart PC Solution builder has to set the system states
like S0i3, Screen lock, hibernate etc, based on the output actions provided by the PMF
TA (Trusted Application).

In order for this to work the PMF driver generates a uevent for userspace to react to. Below are
sample udev rules that can facilitate this experience when a machine has PMF Smart PC solution builder
enabled.

Please add the following line(s) to
``/etc/udev/rules.d/99-local.rules``::

        DRIVERS=="amd-pmf", ACTION=="change", ENV{EVENT_ID}=="0", RUN+="/usr/bin/systemctl suspend"
        DRIVERS=="amd-pmf", ACTION=="change", ENV{EVENT_ID}=="1", RUN+="/usr/bin/systemctl hibernate"
        DRIVERS=="amd-pmf", ACTION=="change", ENV{EVENT_ID}=="2", RUN+="/bin/loginctl lock-sessions"

EVENT_ID values:
0= Put the system to S0i3/S2Idle
1= Put the system to hibernate
2= Lock the screen
+83 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/platform/lenovo,yoga-c630-ec.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Lenovo Yoga C630 Embedded Controller.

maintainers:
  - Bjorn Andersson <andersson@kernel.org>

description:
  The Qualcomm Snapdragon-based Lenovo Yoga C630 has an Embedded Controller
  (EC) which handles things such as battery and USB Type-C. This binding
  describes the interface, on an I2C bus, to this EC.

properties:
  compatible:
    const: lenovo,yoga-c630-ec

  reg:
    const: 0x70

  '#address-cells':
    const: 1

  '#size-cells':
    const: 0

  interrupts:
    maxItems: 1

patternProperties:
  '^connector@[01]$':
    $ref: /schemas/connector/usb-connector.yaml#

    properties:
      reg:
        maxItems: 1

    unevaluatedProperties: false

required:
  - compatible
  - reg
  - interrupts

additionalProperties: false

examples:
  - |+
    #include <dt-bindings/interrupt-controller/irq.h>
    i2c1 {
        clock-frequency = <400000>;

        #address-cells = <1>;
        #size-cells = <0>;

        embedded-controller@70 {
            compatible = "lenovo,yoga-c630-ec";
            reg = <0x70>;

            interrupts-extended = <&tlmm 20 IRQ_TYPE_LEVEL_HIGH>;

            #address-cells = <1>;
            #size-cells = <0>;

            connector@0 {
                compatible = "usb-c-connector";
                reg = <0>;
                power-role = "source";
                data-role = "host";
            };

            connector@1 {
                compatible = "usb-c-connector";
                reg = <1>;
                power-role = "source";
                data-role = "host";
            };
        };
    };
...
Loading