Commit 5fda5698 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

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

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

Pull x86 platform driver updates from Hans de Goede:

 - Intel PMC / PMT / TPMI / uncore-freq / vsec improvements and new
   platform support

 - AMD PMC / PMF improvements and new platform support

 - AMD ACPI based Wifi band RFI mitigation feature (WBRF)

 - WMI bus driver cleanups and improvements (Armin Wolf)

 - acer-wmi Predator PHN16-71 support

 - New Silicom network appliance EC LEDs / GPIOs driver

* tag 'platform-drivers-x86-v6.8-1' of git://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86: (96 commits)
  platform/x86/amd/pmc: Modify SMU message port for latest AMD platform
  platform/x86/amd/pmc: Add 1Ah family series to STB support list
  platform/x86/amd/pmc: Add idlemask support for 1Ah family
  platform/x86/amd/pmc: call amd_pmc_get_ip_info() during driver probe
  platform/x86/amd/pmc: Add VPE information for AMDI000A platform
  platform/x86/amd/pmc: Send OS_HINT command for AMDI000A platform
  platform/x86/amd/pmf: Return a status code only as a constant in two functions
  platform/x86/amd/pmf: Return directly after a failed apmf_if_call() in apmf_sbios_heartbeat_notify()
  platform/x86: wmi: linux/wmi.h: fix Excess kernel-doc description warning
  platform/x86/intel/pmc: Add missing extern
  platform/x86/intel/pmc/lnl: Add GBE LTR ignore during suspend
  platform/x86/intel/pmc/arl: Add GBE LTR ignore during suspend
  platform/x86: intel-uncore-freq: Add additional client processors
  platform/x86: Remove "X86 PLATFORM DRIVERS - ARCH" from MAINTAINERS
  platform/x86: hp-bioscfg: Removed needless asm-generic
  platform/x86/intel/pmc: Add Lunar Lake M support to intel_pmc_core driver
  platform/x86/intel/pmc: Add Arrow Lake S support to intel_pmc_core driver
  platform/x86/intel/pmc: Add ssram_init flag in PMC discovery in Meteor Lake
  platform/x86/intel/pmc: Move common code to core.c
  platform/x86/intel/pmc: Add PSON residency counter for Alder Lake
  ...
parents b9b56eb2 236f7d80
Loading
Loading
Loading
Loading
+29 −0
Original line number Diff line number Diff line
What:		/sys/devices/platform/silicom-platform/uc_version
Date:		November 2023
KernelVersion:	6.7
Contact:	Henry Shi <henrys@silicom-usa.com>
Description:
		This file allows to read microcontroller firmware
		version of current platform.

What:		/sys/devices/platform/silicom-platform/power_cycle
Date:		November 2023
KernelVersion:	6.7
Contact:	Henry Shi <henrys@silicom-usa.com>
		This file allow user to power cycle the platform.
		Default value is 0; when set to 1, it powers down
		the platform, waits 5 seconds, then powers on the
		device. It returns to default value after power cycle.

		0 - default value.

What:		/sys/devices/platform/silicom-platform/efuse_status
Date:		November 2023
KernelVersion:	6.7
Contact:	Henry Shi <henrys@silicom-usa.com>
Description:
		This file is read only. It returns the current
		OTP status:

		0 - not programmed.
		1 - programmed.
+1 −0
Original line number Diff line number Diff line
@@ -119,6 +119,7 @@ configure specific aspects of kernel behavior to your liking.
   parport
   perf-security
   pm/index
   pmf
   pnp
   rapidio
   ras
+24 −0
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
+1 −0
Original line number Diff line number Diff line
@@ -115,6 +115,7 @@ available subsections can be seen below.
   hte/index
   wmi
   dpll
   wbrf

.. only::  subproject and html

+78 −0
Original line number Diff line number Diff line
.. SPDX-License-Identifier: GPL-2.0-or-later

=================================
WBRF - Wifi Band RFI Mitigations
=================================

Due to electrical and mechanical constraints in certain platform designs
there may be likely interference of relatively high-powered harmonics of
the GPU memory clocks with local radio module frequency bands used by
certain Wifi bands.

To mitigate possible RFI interference producers can advertise the
frequencies in use and consumers can use this information to avoid using
these frequencies for sensitive features.

When a platform is known to have this issue with any contained devices,
the platform designer will advertise the availability of this feature via
ACPI devices with a device specific method (_DSM).
* Producers with this _DSM will be able to advertise the frequencies in use.
* Consumers with this _DSM will be able to register for notifications of
frequencies in use.

Some general terms
==================

Producer: such component who can produce high-powered radio frequency
Consumer: such component who can adjust its in-use frequency in
response to the radio frequencies of other components to mitigate the
possible RFI.

To make the mechanism function, those producers should notify active use
of their particular frequencies so that other consumers can make relative
internal adjustments as necessary to avoid this resonance.

ACPI interface
==============

Although initially used by for wifi + dGPU use cases, the ACPI interface
can be scaled to any type of device that a platform designer discovers
can cause interference.

The GUID used for the _DSM is 7B7656CF-DC3D-4C1C-83E9-66E721DE3070.

3 functions are available in this _DSM:

* 0: discover # of functions available
* 1: record RF bands in use
* 2: retrieve RF bands in use

Driver programming interface
============================

.. kernel-doc:: drivers/platform/x86/amd/wbrf.c

Sample Usage
=============

The expected flow for the producers:
1. During probe, call `acpi_amd_wbrf_supported_producer` to check if WBRF
can be enabled for the device.
2. On using some frequency band, call `acpi_amd_wbrf_add_remove` with 'add'
param to get other consumers properly notified.
3. Or on stopping using some frequency band, call
`acpi_amd_wbrf_add_remove` with 'remove' param to get other consumers notified.

The expected flow for the consumers:
1. During probe, call `acpi_amd_wbrf_supported_consumer` to check if WBRF
can be enabled for the device.
2. Call `amd_wbrf_register_notifier` to register for notification
of frequency band change(add or remove) from other producers.
3. Call the `amd_wbrf_retrieve_freq_band` initally to retrieve
current active frequency bands considering some producers may broadcast
such information before the consumer is up.
4. On receiving a notification for frequency band change, run
`amd_wbrf_retrieve_freq_band` again to retrieve the latest
active frequency bands.
5. During driver cleanup, call `amd_wbrf_unregister_notifier` to
unregister the notifier.
Loading