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

Merge branch 'acpi-scan'

Merge ACPI device enumeration fixes for 6.10-rc5:

- Ignore MIPI camera graph port nodes created with the help of the
information from the ACPI tables on all Dell Tiger, Alder and Raptor
Lake models as that information is reported to be invalid on the
systems in question (Hans de Goede).

- Use new Intel CPU model matching macros in the MIPI DisCo for Imaging
part of ACPI device enumeration (Hans de Goede).

* acpi-scan:
ACPI: mipi-disco-img: Switch to new Intel CPU model defines
ACPI: scan: Ignore camera graph port nodes on all Dell Tiger, Alder and Raptor Lake models

+23 -9
+4
drivers/acpi/internal.h
··· 302 302 void acpi_mipi_scan_crs_csi2(void); 303 303 void acpi_mipi_init_crs_csi2_swnodes(void); 304 304 void acpi_mipi_crs_csi2_cleanup(void); 305 + #ifdef CONFIG_X86 305 306 bool acpi_graph_ignore_port(acpi_handle handle); 307 + #else 308 + static inline bool acpi_graph_ignore_port(acpi_handle handle) { return false; } 309 + #endif 306 310 307 311 #endif /* _ACPI_INTERNAL_H_ */
+19 -9
drivers/acpi/mipi-disco-img.c
··· 725 725 acpi_mipi_del_crs_csi2(csi2); 726 726 } 727 727 728 - static const struct dmi_system_id dmi_ignore_port_nodes[] = { 729 - { 730 - .matches = { 731 - DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Dell Inc."), 732 - DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "XPS 9315"), 733 - }, 734 - }, 735 - { } 728 + #ifdef CONFIG_X86 729 + #include <asm/cpu_device_id.h> 730 + #include <asm/intel-family.h> 731 + 732 + /* CPU matches for Dell generations with broken ACPI MIPI DISCO info */ 733 + static const struct x86_cpu_id dell_broken_mipi_disco_cpu_gens[] = { 734 + X86_MATCH_VFM(INTEL_TIGERLAKE, NULL), 735 + X86_MATCH_VFM(INTEL_TIGERLAKE_L, NULL), 736 + X86_MATCH_VFM(INTEL_ALDERLAKE, NULL), 737 + X86_MATCH_VFM(INTEL_ALDERLAKE_L, NULL), 738 + X86_MATCH_VFM(INTEL_RAPTORLAKE, NULL), 739 + X86_MATCH_VFM(INTEL_RAPTORLAKE_P, NULL), 740 + X86_MATCH_VFM(INTEL_RAPTORLAKE_S, NULL), 741 + {} 736 742 }; 737 743 738 744 static const char *strnext(const char *s1, const char *s2) ··· 767 761 static bool dmi_tested, ignore_port; 768 762 769 763 if (!dmi_tested) { 770 - ignore_port = dmi_first_match(dmi_ignore_port_nodes); 764 + if (dmi_name_in_vendors("Dell Inc.") && 765 + x86_match_cpu(dell_broken_mipi_disco_cpu_gens)) 766 + ignore_port = true; 767 + 771 768 dmi_tested = true; 772 769 } 773 770 ··· 803 794 kfree(orig_path); 804 795 return false; 805 796 } 797 + #endif