Re: [PATCH 1/2] ACPI: scan: Ignore camera graph port nodes on all Dell Tiger, Alder and Raptor Lake models

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Jun 12, 2024 at 12:42 PM Hans de Goede <hdegoede@xxxxxxxxxx> wrote:
>
> It seems that all Dell laptops with IPU6 camera or the Tiger Lake,
> Alder Lake and Raptor Lake generations have broken ACPI MIPI DISCO
> information.
>
> Instead of adding a lot of DMI quirks for this, check for these CPU
> generations and disable ACPI MIPI DISCO support on all Dell laptops
> with these CPU generations.
>
> Fixes: bd721b934323 ("ACPI: scan: Extract CSI-2 connection graph from _CRS")
> Cc: stable@xxxxxxxxxxxxxxx
> Signed-off-by: Hans de Goede <hdegoede@xxxxxxxxxx>
> ---
>  drivers/acpi/internal.h       |  4 ++++
>  drivers/acpi/mipi-disco-img.c | 28 +++++++++++++++++++---------
>  2 files changed, 23 insertions(+), 9 deletions(-)
>
> diff --git a/drivers/acpi/internal.h b/drivers/acpi/internal.h
> index 2a0e9fc7b74c..601b670356e5 100644
> --- a/drivers/acpi/internal.h
> +++ b/drivers/acpi/internal.h
> @@ -302,6 +302,10 @@ void acpi_mipi_check_crs_csi2(acpi_handle handle);
>  void acpi_mipi_scan_crs_csi2(void);
>  void acpi_mipi_init_crs_csi2_swnodes(void);
>  void acpi_mipi_crs_csi2_cleanup(void);
> +#ifdef CONFIG_X86
>  bool acpi_graph_ignore_port(acpi_handle handle);
> +#else
> +static inline bool acpi_graph_ignore_port(acpi_handle handle) { return false; }
> +#endif
>
>  #endif /* _ACPI_INTERNAL_H_ */
> diff --git a/drivers/acpi/mipi-disco-img.c b/drivers/acpi/mipi-disco-img.c
> index d05413a0672a..0ab13751f0db 100644
> --- a/drivers/acpi/mipi-disco-img.c
> +++ b/drivers/acpi/mipi-disco-img.c
> @@ -725,14 +725,20 @@ void acpi_mipi_crs_csi2_cleanup(void)
>                 acpi_mipi_del_crs_csi2(csi2);
>  }
>
> -static const struct dmi_system_id dmi_ignore_port_nodes[] = {
> -       {
> -               .matches = {
> -                       DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
> -                       DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "XPS 9315"),
> -               },
> -       },
> -       { }
> +#ifdef CONFIG_X86
> +#include <asm/cpu_device_id.h>
> +#include <asm/intel-family.h>
> +
> +/* CPU matches for Dell generations with broken ACPI MIPI DISCO info */
> +static const struct x86_cpu_id dell_broken_mipi_disco_cpu_gens[] = {
> +       X86_MATCH_INTEL_FAM6_MODEL(TIGERLAKE, NULL),
> +       X86_MATCH_INTEL_FAM6_MODEL(TIGERLAKE_L, NULL),
> +       X86_MATCH_INTEL_FAM6_MODEL(ALDERLAKE, NULL),
> +       X86_MATCH_INTEL_FAM6_MODEL(ALDERLAKE_L, NULL),
> +       X86_MATCH_INTEL_FAM6_MODEL(RAPTORLAKE, NULL),
> +       X86_MATCH_INTEL_FAM6_MODEL(RAPTORLAKE_P, NULL),
> +       X86_MATCH_INTEL_FAM6_MODEL(RAPTORLAKE_S, NULL),
> +       {}
>  };
>
>  static const char *strnext(const char *s1, const char *s2)
> @@ -761,7 +767,10 @@ bool acpi_graph_ignore_port(acpi_handle handle)
>         static bool dmi_tested, ignore_port;
>
>         if (!dmi_tested) {
> -               ignore_port = dmi_first_match(dmi_ignore_port_nodes);
> +               if (dmi_name_in_vendors("Dell Inc.") &&
> +                   x86_match_cpu(dell_broken_mipi_disco_cpu_gens))
> +                       ignore_port = true;
> +
>                 dmi_tested = true;
>         }
>
> @@ -794,3 +803,4 @@ bool acpi_graph_ignore_port(acpi_handle handle)
>         kfree(orig_path);
>         return false;
>  }
> +#endif
> --

I'm inclined to apply this one with the changelog adjusted as
requested by Sakari.

Can you please make the changes in the changelog and resend?





[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux