intel / intel/ipu6-drivers

TPS68470 board-data missing for HP Elite x2 1012 G2 (dual-camera IPU3, ov5670 + ov7251)

Open
#452 0 comments 1 reaction 0 assignees View on GitHub
Dominant language
C
Stars
251
Forks
75
PR merge metrics
No merged PRs in 30d

Description

**System**
- Model: HP Elite x2 1012 G2
- Manufacturer: HP
- Board: 82CA
- Distro: Linux Mint 22.x (Ubuntu 24.04 base)
- Kernel: 6.17.0-35-generic

**Hardware**
Intel IPU3 (Kaby Lake) with two CSI-2 sensors:
- `ov5670` at ACPI `INT3479:00` (i2c-INT3479:00)
- `ov7251` at ACPI `INT347E:00` (i2c-INT347E:00)
Both are powered via a single TPS68470 PMIC at `i2c-INT3472:05`.

**Problem**
The TPS68470 driver fails to find board data for this model:
[ 23.998713] int3472-tps68470 i2c-INT3472:05: TPS68470 REVID: 0x21
[ 23.999058] int3472-tps68470 i2c-INT3472:05: error -ENODEV: No board-data found for this model

Downstream effects, all consistent with the PMIC never being configured:
- `ov7251`'s i2c device (`i2c-INT347E:00`) never appears under `/sys/bus/i2c/devices/` at all.
- `ov5670` does enumerate, but only via dummy regulator fallback:
[ 24.207615] ov5670 i2c-INT3479:00: supply dvdd not found, using dummy regulator
[ 24.207767] ov5670 i2c-INT3479:00: supply dovdd not found, using dummy regulator
- `media-ctl -d /dev/media0 -p` shows `ov5670` registered but with 0 links, and `ov7251` absent from the graph entirely — no CSI-2 link ever gets created for either camera.

**Why I think this is a board-data gap, not something else**
`INT3472:05` is the same PMIC instance number as the already-supported `Latitude 7212 Rugged Extreme Tablet` entry in `tps68470_board_data.c`, and that board also uses `ov5670`/`INT3479:00` with regulator names `avdd`/`dvdd`/`dovdd`. This looks like the same reference design, just missing a DMI entry for this HP model. Unlike the Dell board, this one also has a second sensor (`ov7251`) sharing the same PMIC, which I don't see covered by any existing entry.

**Draft patch (untested — pin numbers are a guess, only covers ov5670)**

```c
static const struct int3472_tps68470_board_data hp_elitex2_1012g2_tps68470_board_data = {
.dev_name = "i2c-INT3472:05",
.tps68470_regulator_pdata = &dell_7212_tps68470_pdata,
.n_gpiod_lookups = 1,
.tps68470_gpio_lookup_tables = {
&dell_7212_int3479_gpios,
},
};
```
```c
{
.matches = {
DMI_EXACT_MATCH(DMI_SYS_VENDOR, "HP"),
DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "HP Elite x2 1012 G2"),
},
.driver_data = (void *)&hp_elitex2_1012g2_tps68470_board_data,
},
```

**What I'm looking for**
1. Confirmation/correction of the GPIO pin numbers for `ov5670`'s reset/powerdown lines on this board.
2. Guidance on the second sensor (`ov7251`) — no existing board-data entry covers a two-sensor TPS68470 setup, so I'm not sure what GPIO config it needs.

Happy to test patches, pull a DSDT dump, or run any other diagnostic on the actual hardware if that helps.

Contributor guide

Open the contributing guide

Research direction

Start in tps68470_board_data.c by comparing the Latitude 7212 entry with the HP Elite x2 1012 G2 hardware described here. Use a DSDT dump and the existing kernel logs to verify GPIO mappings for both ov5670 and ov7251, then test the board-data changes and confirm both sensors enumerate with CSI-2 links in media-ctl.

Written by the indexing model from the issue text.

Assessment

Tech stack
c, linux
Domain
embedded-iot, operating-systems
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
42/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.