Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit be553754 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull ACPI updates from Rafael Wysocki:
 "These update the ACPICA code in the kernel to follow upstream revision
  20180313 which includes fixes related to the so-called module-level
  AML (mostly "if" type of statements outside of any methods) that
  should improve the handling of systems that load alternative SSDTs
  depending on the current configuration, for example, and event
  handling fixes related to disabling and enabling GPEs on system
  startup and on suspend/resume.

  Moreover, the ACPICA license boilerplate is replaced with SPDX license
  IDs which alone reduces the number of lines of ACPICA code in the
  kernel quite a bit.

  Also added is a new driver for the generic ACPI Time and Alarm Device
  (TAD). At the moment it only handles the most basic capabilities of
  the TAD, however.

  In addition to that the ACPI battery driver is improved to handle
  battery thresholds on ThinkPads, among other things, some bugs are
  fixed, a new backlight quirk is added and some documentation is
  updated.

  Specifics:

   - Update the in-kernel ACPICA code to upstream revision 20180313
     including:
      * Module-level AML code handling fixes and simplifications (Bob
        Moore, Erik Schmauss).
      * Fixes and cleanups related to messaging (Bob Moore).
      * Events handling fixes related to disabling and enabling GPEs
        (Erik Schmauss).
      * Introduction of SPDX license identifiers and removal of license
        boilerplate in multiple files (Erik Schmauss).
      * Assorted fixes and cleanups (Bob Moore, Erik Schmauss, Hans de
        Goede, Seunghun Han).

   - Add new basic driver for the ACPI Time and Alarm Device (Rafael
     Wysocki).

   - Modify the ACPI battery driver to support battery thresholds on
     Lenovo ThinkPads (Ognjen Galic, Colin Ian King).

   - Avoid reporting battery capacity over 100 in the ACPI battery
     driver in some cases (Laszlo Toth).

   - Make the kernel recognize an OEM _OSI string from Dell to avoid
     power management issues with NVidia GPUs in Dell platforms (Alex
     Hung).

   - Make the PCI IRQ management code handle missing _PRS cleanly (Alex
     Hung).

   - Fix uevent notifications related to device hotplut (Lee, Chun-Yi).

   - Prevent the ACPI PAD driver from leaking memory (Lenny Szubowicz).

   - Update the ACPI CPPC library code to include subspace IDs in the
     kernel messages logged by it (George Cherian).

   - Add backlight quirk for Samsung 670Z5E (Hans de Goede).

   - Add the NFIT and HMAT tables to the list of ACPI tables that can be
     overridden via initrd (Dan Williams).

   - Fix and clean up some ACPI documentation and Kconfig help language
     (Aishwarya Pant, Randy Dunlap).

   - Replace license boilerplate with an SPDX license ID in the ACPI
     PMIC operation region handling code (Rajmohan Mani)"

* tag 'acpi-4.17-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: (39 commits)
  ACPI: acpi_pad: Fix memory leak in power saving threads
  ACPI / video: Add quirk to force acpi-video backlight on Samsung 670Z5E
  ACPI: Add Time and Alarm Device (TAD) driver
  ACPI / scan: Send change uevent with offine environmental data
  ACPI / Kconfig: Update ACPI_PROCFS_POWER help text
  ACPI / OSI: Add OEM _OSI strings to disable NVidia RTD3
  ACPICA: Update version to 20180313
  ACPICA: Cleanup/simplify module-level code support
  ACPICA: Events: add a return on failure from acpi_hw_register_read
  ACPICA: adding SPDX headers
  ACPICA: Rename a global for clarity, no functional change
  ACPICA: macros: fix ACPI_ERROR_NAMESPACE macro
  ACPICA: Change a compile-time option to a runtime option
  ACPICA: Remove calling of _STA from acpi_get_object_info()
  ACPICA: AML Debug Object: Don't ignore output of zero-length strings
  ACPICA: Fix memory leak on unusual memory leak
  ACPICA: Events: Dispatch GPEs after enabling for the first time
  ACPICA: Events: Add parallel GPE handling support to fix potential redundant _Exx evaluations
  ACPICA: Events: Stop unconditionally clearing ACPI IRQs during suspend/resume
  ACPICA: acpi: acpica: fix acpi operand cache leak in nseval.c
  ...
parents 642e7fd2 49076b2c
Loading
Loading
Loading
Loading
+37 −0
Original line number Diff line number Diff line
@@ -56,3 +56,40 @@ Description:
		Writing 1 to this attribute will trigger hot removal of
		this device object.  This file exists for every device
		object that has _EJ0 method.

What:		/sys/bus/acpi/devices/.../status
Date:		Jan, 2014
Contact:	Rafael J. Wysocki <rjw@rjwysocki.net>
Description:
		(RO) Returns the ACPI device status: enabled, disabled or
		functioning or present, if the method _STA is present.

		The return value is a decimal integer representing the device's
		status bitmap:

		Bit [0] –  Set if the device is present.
		Bit [1] –  Set if the device is enabled and decoding its
		           resources.
		Bit [2] –  Set if the device should be shown in the UI.
		Bit [3] –  Set if the device is functioning properly (cleared if
		           device failed its diagnostics).
		Bit [4] –  Set if the battery is present.
		Bits [31:5] –  Reserved (must be cleared)

		If bit [0] is clear, then bit 1 must also be clear (a device
		that is not present cannot be enabled).

		Bit 0 can be clear (not present) with bit [3] set (device is
		functional).  This case is used to indicate a valid device for
		which no device driver should be loaded.

		More special cases are covered in the ACPI specification.

What:		/sys/bus/acpi/devices/.../hrv
Date:		Apr, 2016
Contact:	Rafael J. Wysocki <rjw@rjwysocki.net>
Description:
		(RO) Allows users to read the hardware version of non-PCI
		hardware, if the _HRV control method is present.  It is mostly
		useful for non-PCI devices because lspci can list the hardware
		version for PCI devices.
+113 −0
Original line number Diff line number Diff line
		ACPI Time and Alarm (TAD) device attributes.

What:		/sys/bus/platform/devices/ACPI000E:00/caps
Date:		March 2018
Contact:	Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Description:
		(RO) Hexadecimal bitmask of the TAD attributes are reported by
		the platform firmware (see ACPI 6.2, section 9.18.2):

		BIT(0): AC wakeup implemented if set
		BIT(1): DC wakeup implemented if set
		BIT(2): Get/set real time features implemented if set
		BIT(3): Real time accuracy in milliseconds if set
		BIT(4): Correct status reported for wakeups from S4/S5 if set
		BIT(5): The AC timer wakes up from S4 if set
		BIT(6): The AC timer wakes up from S5 if set
		BIT(7): The DC timer wakes up from S4 if set
		BIT(8): The DC timer wakes up from S5 if set

		The other bits are reserved.

What:		/sys/bus/platform/devices/ACPI000E:00/ac_alarm
Date:		March 2018
Contact:	Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Description:
		(RW) The AC alarm timer value.

		Reads return the current AC alarm timer value in seconds or
		"disabled", if the AC alarm is not set to wake up the system.

		Write a new AC alarm timer value in seconds or "disabled" to it
		to set the AC alarm timer or to disable it, respectively.

		If the AC alarm timer is set through this attribute and it
		expires, it will immediately wake up the system from the S3
		sleep state (and from S4/S5 too if supported) until its status
		is explicitly cleared via the ac_status attribute.

What:		/sys/bus/platform/devices/ACPI000E:00/ac_policy
Date:		March 2018
Contact:	Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Description:
		(RW) The AC alarm expired timer wake policy (see ACPI 6.2,
		Section 9.18 for details).

		Reads return the current expired timer wake delay for the AC
		alarm timer or "never", if the policy is to discard AC timer
		wakeups if the system is on DC power.

		Write a new expired timer wake delay for the AC alarm timer in
		seconds or "never" to it to set the expired timer wake delay for
		the AC alarm timer or to set its expired wake policy to discard
		wakeups if the system is on DC power, respectively.

What:		/sys/bus/platform/devices/ACPI000E:00/ac_status
Date:		March 2018
Contact:	Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Description:
		(RW) The AC alarm status.

		Reads return a hexadecimal bitmask representing the AC alarm
		timer status with the following meaning of bits (see ACPI 6.2,
		Section 9.18.5):

		Bit(0): The timer has expired if set.
		Bit(1): The timer has woken up the system from a sleep state
		        (S3 or S4/S5 if supported) if set.

		The other bits are reserved.

		Reads also cause the AC alarm timer status to be reset.

		Another way to reset the the status of the AC alarm timer is to
		write (the number) 0 to this file.

		If the status return value indicates that the timer has expired,
		it will immediately wake up the system from the S3 sleep state
		(and from S4/S5 too if supported) until its status is explicitly
		cleared through this attribute.

What:		/sys/bus/platform/devices/ACPI000E:00/dc_alarm
Date:		March 2018
Contact:	Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Description:
		(RW,optional) The DC alarm timer value.

		This attribute is only present if the TAD supports a separate
		DC timer.

		It is analogous to the ac_alarm attribute.

What:		/sys/bus/platform/devices/ACPI000E:00/dc_policy
Date:		March 2018
Contact:	Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Description:
		(RW,optional) The DC alarm expired timer wake policy.

		This attribute is only present if the TAD supports a separate
		DC timer.

		It is analogous to the ac_policy attribute.

What:		/sys/bus/platform/devices/ACPI000E:00/dc_status
Date:		March 2018
Contact:	Rafael J. Wysocki <rafael.j.wysocki@intel.com>

Description:
		(RW,optional) The DC alarm status.

		This attribute is only present if the TAD supports a separate
		DC timer.

		It is analogous to the ac_status attribute.
+17 −4
Original line number Diff line number Diff line
@@ -105,14 +105,14 @@ config ACPI_PROCFS_POWER
          deprecated power /proc/acpi/ directories to exist, even when
          they have been replaced by functions in /sys.
          The deprecated directories (and their replacements) include:
	  /proc/acpi/battery/* (/sys/class/power_supply/*)
	  /proc/acpi/ac_adapter/* (sys/class/power_supply/*)
	  /proc/acpi/battery/* (/sys/class/power_supply/*) and
	  /proc/acpi/ac_adapter/* (sys/class/power_supply/*).
	  This option has no effect on /proc/acpi/ directories
	  and functions, which do not yet exist in /sys
	  and functions which do not yet exist in /sys.
	  This option, together with the proc directories, will be
	  deleted in the future.

	  Say N to delete power /proc/acpi/ directories that have moved to /sys/
	  Say N to delete power /proc/acpi/ directories that have moved to /sys.

config ACPI_REV_OVERRIDE_POSSIBLE
	bool "Allow supported ACPI revision to be overridden"
@@ -217,6 +217,19 @@ config ACPI_FAN
	  To compile this driver as a module, choose M here:
	  the module will be called fan.

config ACPI_TAD
	tristate "ACPI Time and Alarm (TAD) Device Support"
	depends on SYSFS && PM_SLEEP
	help
	  The ACPI Time and Alarm (TAD) device is an alternative to the Real
	  Time Clock (RTC).  Its wake timers allow the system to transition from
	  the S3 (or optionally S4/S5) state to S0 state after a time period
	  elapses.  In comparison with the RTC Alarm, the TAD provides a larger
	  scale of flexibility in the wake timers.  The time capabilities of the
	  TAD maintain the time of day information across platform power
	  transitions, and keep track of time even when the platform is turned
	  off.

config ACPI_DOCK
	bool "Dock"
	help
+1 −0
Original line number Diff line number Diff line
@@ -70,6 +70,7 @@ obj-$(CONFIG_ACPI_AC) += ac.o
obj-$(CONFIG_ACPI_BUTTON)	+= button.o
obj-$(CONFIG_ACPI_FAN)		+= fan.o
obj-$(CONFIG_ACPI_VIDEO)	+= video.o
obj-$(CONFIG_ACPI_TAD)		+= acpi_tad.o
obj-$(CONFIG_ACPI_PCI_SLOT)	+= pci_slot.o
obj-$(CONFIG_ACPI_PROCESSOR)	+= processor.o
obj-$(CONFIG_ACPI)		+= container.o
+1 −1
Original line number Diff line number Diff line
@@ -33,7 +33,7 @@
#include <linux/platform_device.h>
#include <linux/power_supply.h>
#include <linux/acpi.h>
#include "battery.h"
#include <acpi/battery.h>

#define PREFIX "ACPI: "

Loading