[BUG] Lenovo ThinkPad X12 Detachable Gen 2 (21LK001LGE): INT3472 discrete missing board-data / broken _DEP for OV8856 rear camera
- Dominant language
- C
- Stars
- 251
- Forks
- 75
- PR merge metrics
- No merged PRs in 30d
Description
[acpidump.bin.gz](https://github.com/user-attachments/files/29594381/acpidump.bin.gz)
***
`[BUG] Lenovo ThinkPad X12 Detachable Gen 2 (21LK001LGE): INT3472 discrete missing board-data / broken _DEP for OV8856 rear camera`
---
### Description:
Hello,
I am trying to get the camera system working on the new **Lenovo ThinkPad X12 Detachable Gen 2** under Linux (Kernel 7.1.2/7.6.2).
While the front camera (Chicony USB UVC) works out of the box, the rear camera (**OmniVision OV8856**, ACPI ID: `OVTI8856:00`) fails to probe with an I2C read timeout (error `-5`).
#### Hardware & Environment:
* **System:** Lenovo ThinkPad X12 Detachable Gen 2 [1.1.5]
* **DMI board_name / product_name:** `21LK001LGE`
* **Platform:** Intel Meteor Lake (Core Ultra)
* **Sensor:** OmniVision OV8856 (`OVTI8856:00`)
* **Kernel:** Custom Gentoo build (v7.1.2 / v7.6.2)
#### Symptoms & Logs:
Upon boot, the `ov8856` driver attempts to probe but times out on `i2c_designware.2` [2.1.8]:
```text
[ 12.129093] i2c_designware i2c_designware.2: controller timed out
[ 12.129110] ov8856 i2c-OVTI8856:00: failed to find sensor: -5
[ 12.129125] ov8856 i2c-OVTI8856:00: probe with driver ov8856 failed with error -5
```
During earlier debugging, `intel_skl_int3472_discrete` loaded but threw the following warning [1.2.8, 2.4.4]:
```text
[ 3453.889943] int3472-discrete INT3472:01: INT3472 seems to have no dependents.
```
Because of this missing ACPI dependency (`_DEP` / `_PLD`), the driver failed to map any power regulators or clocks to the sensor [2.3.2, 2.4.4].
#### Debugging & Root Cause Analysis:
1. **Bypassing the ACPI dependency bug:**
We patched `drivers/platform/x86/intel/int3472/common.c` in `skl_int3472_get_sensor_adev_and_name` to include a manual fallback for `"OVTI8856"` when `acpi_dev_get_next_consumer_dev` returns NULL.
With this patch, the driver successfully binds to `INT3472:01` without throwing any warnings.
2. **Missing Board-Data:**
Even though the driver successfully binds with the fallback patch, the `ov8856` sensor still times out with `-5`. This is because there is no matching DMI board-data entry for `21LK001LGE` in `drivers/platform/x86/intel/int3472/discrete.c` [3.4.4].
The driver does not know which physical GPIO pins to toggle (reset/powerdown) or which clock to register, leaving the camera unpowered [3.1.1, 3.4.4].
#### Attached Files:
I have attached the `acpidump` from this system (`acpidump.bin`).
Could you please help analyze the ACPI tables to extract the correct GPIO/clock configuration and add the corresponding DMI board-data quirk for the **ThinkPad X12 Detachable Gen 2 (21LK001LGE)** to `discrete.c`? [3.4.4]
Thank you very much for your help!
Contributor guide
Research direction
Start by analyzing the attached acpidump.bin.gz and reading drivers/platform/x86/intel/int3472/common.c, especially skl_int3472_get_sensor_adev_and_name, and discrete.c. Confirm the ACPI dependency and OV8856 GPIO/clock details, then add the 21LK001LGE board-data quirk so the rear sensor powers up and probes without the I2C timeout.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- c, linux
- Domain
- computer-vision, operating-systems
- Issue type
- Bug
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100