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]

 



Hi Hans,

Thanks for the set.

On Wed, Jun 12, 2024 at 12:42:20PM +0200, Hans de Goede wrote:
> It seems that all Dell laptops with IPU6 camera or the Tiger Lake,

"Seems that"? I don't argue against though as I have little information on
this, in fact only two systems.

> 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.

Is there still a need to include linux/dmi.h?

> 
> 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"),

I believe the patch adding XPS 9320 has been merged so reverting that first
might help backporting. Or maybe it's only in Rafael's testing/for-next
branches and so can be dropped easily?

> -		},
> -	},
> -	{ }
> +#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

-- 
Kind regards,

Sakari Ailus




[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