mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-08-31 04:46:30 -04:00
media: ipu-bridge: check all DMI entries when overriding sensor rotation
A machine can have more than one sensor whose rotation needs to be
overridden, which takes one upside_down_sensor_dmi_ids[] entry per
sensor, all sharing the same DMI match but with different ACPI HIDs in
driver_data.
ipu_bridge_parse_rotation() uses dmi_first_match(), which always stops
at the first entry matching the running machine, so any further entry
for the same machine is unreachable and only one sensor per machine can
ever be corrected.
Walk the whole table and match every entry for the running machine
against the sensor's ACPI HID instead.
Fixes: b75710155a ("media: ipu-bridge: Add DMI quirk for Dell XPS laptops with upside down sensors")
Cc: stable@vger.kernel.org
Signed-off-by: José María Martín <jmmartinf@hotmail.com>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
This commit is contained in:
committed by
Sakari Ailus
parent
47d82b6053
commit
4900cad020
@@ -357,9 +357,11 @@ static u32 ipu_bridge_parse_rotation(struct acpi_device *adev,
|
||||
{
|
||||
const struct dmi_system_id *dmi_id;
|
||||
|
||||
dmi_id = dmi_first_match(upside_down_sensor_dmi_ids);
|
||||
if (dmi_id && acpi_dev_hid_match(adev, dmi_id->driver_data))
|
||||
return 180;
|
||||
/* A machine may have one entry per sensor, so check all matches. */
|
||||
for (dmi_id = dmi_first_match(upside_down_sensor_dmi_ids); dmi_id;
|
||||
dmi_id = dmi_first_match(dmi_id + 1))
|
||||
if (acpi_dev_hid_match(adev, dmi_id->driver_data))
|
||||
return 180;
|
||||
|
||||
switch (ssdb->degree) {
|
||||
case IPU_SENSOR_ROTATION_NORMAL:
|
||||
|
||||
Reference in New Issue
Block a user