[PATCH v2 0/5] Enable dual cameras on Dell Latitude 5285 2-in-1

Thierry Chatard posted 5 patches 1 week, 2 days ago
drivers/mfd/intel-lpss-acpi.c                 |  32 +++
drivers/media/i2c/ov8858.c                    |  10 +-
drivers/media/pci/intel/ipu-bridge.c          |   2 ++
drivers/platform/x86/intel/int3472/tps68470.c | 201 ++++++++++++++++++
.../x86/intel/int3472/tps68470_board_data.c   | 163 ++++++++++++++
5 files changed, 407 insertions(+), 1 deletion(-)
[PATCH v2 0/5] Enable dual cameras on Dell Latitude 5285 2-in-1
Posted by Thierry Chatard 1 week, 2 days ago
Changes in v2:
- patch 2: split trailing statements in aml_parse_int() onto separate
  lines (checkpatch); add kernel-doc @param descriptions to
  aml_parse_int(), dell5285_gnvs_from_table(), and dell5285_gnvs_find()
  (kernel test robot); add Reported-by/Closes tags
- patch 3: wrap long lines in commit message (checkpatch)

The Dell Latitude 5285 2-in-1 has two cameras (OV5670 front, OV8858
rear) connected through a TPS68470 PMIC/clock/GPIO hub. All five patches
are required for a working system; each is self-contained and
bisect-safe.

Hardware topology
-----------------
  Front camera:  OV5670 (ACPI INT3479), I2C4 / INT3446
  Rear camera:   OV8858 (ACPI INT3477), I2C2 / i2c_designware.3
  PMIC:          TPS68470 (ACPI INT3472:05), addr 0x4D, on I2C2
  ISP:           Intel IPU3 (ipu3_cio2 + ipu3-imgu)

The OV8858 is daisy-chained behind the TPS68470 S_I2C passthrough port.
The TPS68470 VSIO regulator controls S_I2C_CTL (reg 0x43); marking it
always_on keeps the passthrough active from boot so OV8858 is reachable
on I2C2 at probe time.

Four problems must be fixed in combination:

patch 1/5 - intel_lpss: The BIOS claims the same MMIO region for both
  GEXP and INT3446 (I2C4). Without this quirk the kernel rejects INT3446
  as a resource conflict and the front camera's I2C bus never comes up.

patch 2/5 - GNVS fixup: With I2C4 available, ipu_bridge still does not
  create the front camera client because _DEP on INT3479 returns the
  root PCI bus instead of the INT3472 handle. Root cause: BIOS leaves
  GNVS fields C0TP, L0CL, L1CL at zero. Fix: scan DSDT/SSDTs for the
  GNVS OperationRegion at TPS68470 probe time and write 0x02 (19.2 MHz)
  into all three fields before ipu_bridge evaluates _DEP.

patch 3/5 - TPS68470 board data: No board data existed for this machine,
  so no PMIC regulators or GPIOs were configured for either sensor.

patch 4/5 - ipu-bridge: INT3477 (OV8858) was unknown to ipu_bridge, so
  it was skipped at CSI-2 enumeration.

patch 5/5 - ov8858 driver: No ACPI match for INT3477, and the driver did
  not request the vsio supply needed by the S_I2C passthrough.

Tested on Dell Latitude 5285 2-in-1, Ubuntu 25.10, kernel 6.17.0-19.
Both cameras appear in libcamera and are usable in applications.
Note: the IPU3 IMGU can only run one pipeline at a time, so front and
rear camera use is mutually exclusive.

Thierry Chatard (5):
  platform/x86: intel_lpss: add resource conflict quirk for Dell
    Latitude 5285
  platform/x86: int3472: tps68470: fix GNVS clock fields for Dell
    Latitude 5285
  platform/x86: int3472: tps68470: add board data for Dell Latitude 5285
  media: ipu-bridge: add sensor configuration for OV8858 (INT3477)
  media: ov8858: add ACPI device ID INT3477 and vsio power supply

 drivers/mfd/intel-lpss-acpi.c                 |  32 +++
 drivers/media/i2c/ov8858.c                    |  10 +-
 drivers/media/pci/intel/ipu-bridge.c          |   2 ++
 drivers/platform/x86/intel/int3472/tps68470.c | 201 ++++++++++++++++++
 .../x86/intel/int3472/tps68470_board_data.c   | 163 ++++++++++++++
 5 files changed, 407 insertions(+), 1 deletion(-)

base-commit: 6de23f81a4be5ee86a4df4fde0ca0c7bf67aecd1
--
2.51.0