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 Sakari,

On 6/12/24 2:07 PM, Sakari Ailus wrote:
> 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.

Well it seems that all Dell laptops have the ACPI MIPI DISCO and
at least for all of them there is no "mipi-img-clock-frequency" and
since all our sensor drivers check for a "clock-frequency" attribute now
this is breaking things everywhere AFAICT.

At least that is what is happening on the Dell Latitude 9420 (Tiger Lake)
which I noticed was also broken since ACPI MIPI DISCO support landed in 6.8.

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

Yes for the dmi_name_in_vendors() check.

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

I already asked Rafael to drop that since it has not been send to
Linus yet. The idea was that backporting would actually be easier
without adding that to the mix.

Regards,

Hans


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





[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