Commit b86545e0 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull more ACPI updates from Rafael Wysocki:
 "These add a common init function for arch-specific ACPI
  initialization, clean up idle states initialization in the ACPI
  processor_idle driver and update quirks:

   - Introduce acpi_arch_init() for architecture-specific ACPI subsystem
     initialization (Miao Wang)

   - Clean up Asus quirks in acpi_quirk_skip_dmi_ids[] and add a quirk
     to skip I2C clients on Acer Iconia One 8 A1-840 (Hans de Goede)

   - Make the ACPI processor_idle driver use acpi_idle_play_dead() for
     all idle states regardless of their types (Rafael Wysocki)"

* tag 'acpi-6.13-rc1-2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
  ACPI: introduce acpi_arch_init()
  ACPI: x86: Clean up Asus entries in acpi_quirk_skip_dmi_ids[]
  ACPI: x86: Add skip i2c clients quirk for Acer Iconia One 8 A1-840
  ACPI: processor_idle: Use acpi_idle_play_dead() for all C-states
parents 79525e24 6f683c7f
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -2,7 +2,7 @@
#include <linux/acpi.h>
#include "init.h"

void __init acpi_arm_init(void)
void __init acpi_arch_init(void)
{
	if (IS_ENABLED(CONFIG_ACPI_AGDI))
		acpi_agdi_init();
+3 −2
Original line number Diff line number Diff line
@@ -1434,6 +1434,8 @@ static int __init acpi_bus_init(void)
struct kobject *acpi_kobj;
EXPORT_SYMBOL_GPL(acpi_kobj);

void __weak __init acpi_arch_init(void) { }

static int __init acpi_init(void)
{
	int result;
@@ -1461,8 +1463,7 @@ static int __init acpi_init(void)
	acpi_viot_early_init();
	acpi_hest_init();
	acpi_ghes_init();
	acpi_arm_init();
	acpi_riscv_init();
	acpi_arch_init();
	acpi_scan_init();
	acpi_ec_init();
	acpi_debugfs_init();
+6 −6
Original line number Diff line number Diff line
@@ -800,12 +800,12 @@ static int acpi_processor_setup_cstates(struct acpi_processor *pr)
		state->enter = acpi_idle_enter;

		state->flags = 0;
		if (cx->type == ACPI_STATE_C1 || cx->type == ACPI_STATE_C2 ||
		    cx->type == ACPI_STATE_C3) {

		state->enter_dead = acpi_idle_play_dead;
			if (cx->type != ACPI_STATE_C3)

		if (cx->type == ACPI_STATE_C1 || cx->type == ACPI_STATE_C2)
			drv->safe_state_index = count;
		}

		/*
		 * Halt-induced C1 is not good for ->enter_s2idle, because it
		 * re-enables interrupts on exit.  Moreover, C1 is generally not
+1 −1
Original line number Diff line number Diff line
@@ -7,7 +7,7 @@
#include <linux/acpi.h>
#include "init.h"

void __init acpi_riscv_init(void)
void __init acpi_arch_init(void)
{
	riscv_acpi_init_gsi_mapping();
}
+23 −7
Original line number Diff line number Diff line
@@ -296,6 +296,7 @@ static const struct dmi_system_id acpi_quirk_skip_dmi_ids[] = {
	/*
	 * 2. Devices which also have the skip i2c/serdev quirks and which
	 *    need the x86-android-tablets module to properly work.
	 *    Sorted alphabetically.
	 */
#if IS_ENABLED(CONFIG_X86_ANDROID_TABLETS)
	{
@@ -309,6 +310,19 @@ static const struct dmi_system_id acpi_quirk_skip_dmi_ids[] = {
					ACPI_QUIRK_SKIP_GPIO_EVENT_HANDLERS),
	},
	{
		/* Acer Iconia One 8 A1-840 (non FHD version) */
		.matches = {
			DMI_MATCH(DMI_SYS_VENDOR, "Insyde"),
			DMI_MATCH(DMI_PRODUCT_NAME, "BayTrail"),
			/* Above strings are too generic also match BIOS date */
			DMI_MATCH(DMI_BIOS_DATE, "04/01/2014"),
		},
		.driver_data = (void *)(ACPI_QUIRK_SKIP_I2C_CLIENTS |
					ACPI_QUIRK_SKIP_ACPI_AC_AND_BATTERY |
					ACPI_QUIRK_SKIP_GPIO_EVENT_HANDLERS),
	},
	{
		/* Asus ME176C tablet */
		.matches = {
			DMI_EXACT_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
			DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "ME176C"),
@@ -319,23 +333,24 @@ static const struct dmi_system_id acpi_quirk_skip_dmi_ids[] = {
					ACPI_QUIRK_SKIP_GPIO_EVENT_HANDLERS),
	},
	{
		/* Lenovo Yoga Book X90F/L */
		/* Asus TF103C transformer 2-in-1 */
		.matches = {
			DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Intel Corporation"),
			DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "CHERRYVIEW D1 PLATFORM"),
			DMI_EXACT_MATCH(DMI_PRODUCT_VERSION, "YETI-11"),
			DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
			DMI_MATCH(DMI_PRODUCT_NAME, "TF103C"),
		},
		.driver_data = (void *)(ACPI_QUIRK_SKIP_I2C_CLIENTS |
					ACPI_QUIRK_UART1_SKIP |
					ACPI_QUIRK_SKIP_ACPI_AC_AND_BATTERY |
					ACPI_QUIRK_SKIP_GPIO_EVENT_HANDLERS),
	},
	{
		/* Lenovo Yoga Book X90F/L */
		.matches = {
			DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
			DMI_MATCH(DMI_PRODUCT_NAME, "TF103C"),
			DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Intel Corporation"),
			DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "CHERRYVIEW D1 PLATFORM"),
			DMI_EXACT_MATCH(DMI_PRODUCT_VERSION, "YETI-11"),
		},
		.driver_data = (void *)(ACPI_QUIRK_SKIP_I2C_CLIENTS |
					ACPI_QUIRK_UART1_SKIP |
					ACPI_QUIRK_SKIP_ACPI_AC_AND_BATTERY |
					ACPI_QUIRK_SKIP_GPIO_EVENT_HANDLERS),
	},
@@ -425,6 +440,7 @@ static const struct acpi_device_id i2c_acpi_known_good_ids[] = {
	{ "10EC5640", 0 }, /* RealTek ALC5640 audio codec */
	{ "10EC5651", 0 }, /* RealTek ALC5651 audio codec */
	{ "INT33F4", 0 },  /* X-Powers AXP288 PMIC */
	{ "INT33F5", 0 },  /* TI Dollar Cove PMIC */
	{ "INT33FD", 0 },  /* Intel Crystal Cove PMIC */
	{ "INT34D3", 0 },  /* Intel Whiskey Cove PMIC */
	{ "NPCE69A", 0 },  /* Asus Transformer keyboard dock */
Loading