Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge tag 'acpi-6.13-rc1-2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm

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

+37 -30
+1 -1
drivers/acpi/arm64/init.c
··· 2 2 #include <linux/acpi.h> 3 3 #include "init.h" 4 4 5 - void __init acpi_arm_init(void) 5 + void __init acpi_arch_init(void) 6 6 { 7 7 if (IS_ENABLED(CONFIG_ACPI_AGDI)) 8 8 acpi_agdi_init();
+3 -2
drivers/acpi/bus.c
··· 1434 1434 struct kobject *acpi_kobj; 1435 1435 EXPORT_SYMBOL_GPL(acpi_kobj); 1436 1436 1437 + void __weak __init acpi_arch_init(void) { } 1438 + 1437 1439 static int __init acpi_init(void) 1438 1440 { 1439 1441 int result; ··· 1463 1461 acpi_viot_early_init(); 1464 1462 acpi_hest_init(); 1465 1463 acpi_ghes_init(); 1466 - acpi_arm_init(); 1467 - acpi_riscv_init(); 1464 + acpi_arch_init(); 1468 1465 acpi_scan_init(); 1469 1466 acpi_ec_init(); 1470 1467 acpi_debugfs_init();
+6 -6
drivers/acpi/processor_idle.c
··· 800 800 state->enter = acpi_idle_enter; 801 801 802 802 state->flags = 0; 803 - if (cx->type == ACPI_STATE_C1 || cx->type == ACPI_STATE_C2 || 804 - cx->type == ACPI_STATE_C3) { 805 - state->enter_dead = acpi_idle_play_dead; 806 - if (cx->type != ACPI_STATE_C3) 807 - drv->safe_state_index = count; 808 - } 803 + 804 + state->enter_dead = acpi_idle_play_dead; 805 + 806 + if (cx->type == ACPI_STATE_C1 || cx->type == ACPI_STATE_C2) 807 + drv->safe_state_index = count; 808 + 809 809 /* 810 810 * Halt-induced C1 is not good for ->enter_s2idle, because it 811 811 * re-enables interrupts on exit. Moreover, C1 is generally not
+1 -1
drivers/acpi/riscv/init.c
··· 7 7 #include <linux/acpi.h> 8 8 #include "init.h" 9 9 10 - void __init acpi_riscv_init(void) 10 + void __init acpi_arch_init(void) 11 11 { 12 12 riscv_acpi_init_gsi_mapping(); 13 13 }
+25 -9
drivers/acpi/x86/utils.c
··· 296 296 /* 297 297 * 2. Devices which also have the skip i2c/serdev quirks and which 298 298 * need the x86-android-tablets module to properly work. 299 + * Sorted alphabetically. 299 300 */ 300 301 #if IS_ENABLED(CONFIG_X86_ANDROID_TABLETS) 301 302 { ··· 310 309 ACPI_QUIRK_SKIP_GPIO_EVENT_HANDLERS), 311 310 }, 312 311 { 312 + /* Acer Iconia One 8 A1-840 (non FHD version) */ 313 + .matches = { 314 + DMI_MATCH(DMI_SYS_VENDOR, "Insyde"), 315 + DMI_MATCH(DMI_PRODUCT_NAME, "BayTrail"), 316 + /* Above strings are too generic also match BIOS date */ 317 + DMI_MATCH(DMI_BIOS_DATE, "04/01/2014"), 318 + }, 319 + .driver_data = (void *)(ACPI_QUIRK_SKIP_I2C_CLIENTS | 320 + ACPI_QUIRK_SKIP_ACPI_AC_AND_BATTERY | 321 + ACPI_QUIRK_SKIP_GPIO_EVENT_HANDLERS), 322 + }, 323 + { 324 + /* Asus ME176C tablet */ 313 325 .matches = { 314 326 DMI_EXACT_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."), 315 327 DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "ME176C"), 316 328 }, 317 329 .driver_data = (void *)(ACPI_QUIRK_SKIP_I2C_CLIENTS | 318 330 ACPI_QUIRK_UART1_TTY_UART2_SKIP | 331 + ACPI_QUIRK_SKIP_ACPI_AC_AND_BATTERY | 332 + ACPI_QUIRK_SKIP_GPIO_EVENT_HANDLERS), 333 + }, 334 + { 335 + /* Asus TF103C transformer 2-in-1 */ 336 + .matches = { 337 + DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."), 338 + DMI_MATCH(DMI_PRODUCT_NAME, "TF103C"), 339 + }, 340 + .driver_data = (void *)(ACPI_QUIRK_SKIP_I2C_CLIENTS | 319 341 ACPI_QUIRK_SKIP_ACPI_AC_AND_BATTERY | 320 342 ACPI_QUIRK_SKIP_GPIO_EVENT_HANDLERS), 321 343 }, ··· 351 327 }, 352 328 .driver_data = (void *)(ACPI_QUIRK_SKIP_I2C_CLIENTS | 353 329 ACPI_QUIRK_UART1_SKIP | 354 - ACPI_QUIRK_SKIP_ACPI_AC_AND_BATTERY | 355 - ACPI_QUIRK_SKIP_GPIO_EVENT_HANDLERS), 356 - }, 357 - { 358 - .matches = { 359 - DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."), 360 - DMI_MATCH(DMI_PRODUCT_NAME, "TF103C"), 361 - }, 362 - .driver_data = (void *)(ACPI_QUIRK_SKIP_I2C_CLIENTS | 363 330 ACPI_QUIRK_SKIP_ACPI_AC_AND_BATTERY | 364 331 ACPI_QUIRK_SKIP_GPIO_EVENT_HANDLERS), 365 332 }, ··· 440 425 { "10EC5640", 0 }, /* RealTek ALC5640 audio codec */ 441 426 { "10EC5651", 0 }, /* RealTek ALC5651 audio codec */ 442 427 { "INT33F4", 0 }, /* X-Powers AXP288 PMIC */ 428 + { "INT33F5", 0 }, /* TI Dollar Cove PMIC */ 443 429 { "INT33FD", 0 }, /* Intel Crystal Cove PMIC */ 444 430 { "INT34D3", 0 }, /* Intel Whiskey Cove PMIC */ 445 431 { "NPCE69A", 0 }, /* Asus Transformer keyboard dock */
+1 -11
include/linux/acpi.h
··· 1530 1530 } 1531 1531 #endif 1532 1532 1533 - #ifdef CONFIG_ARM64 1534 - void acpi_arm_init(void); 1535 - #else 1536 - static inline void acpi_arm_init(void) { } 1537 - #endif 1538 - 1539 - #ifdef CONFIG_RISCV 1540 - void acpi_riscv_init(void); 1541 - #else 1542 - static inline void acpi_riscv_init(void) { } 1543 - #endif 1533 + void acpi_arch_init(void); 1544 1534 1545 1535 #ifdef CONFIG_ACPI_PCC 1546 1536 void acpi_init_pcc(void);