Requesting support for OmniVision OV5678 sensor (ACPI ID: OVTI5678) used in Lenovo IdeaPad Duet 5 12IRU8 and other recent 2-in-1 laptops.
- Dominant language
- C
- Stars
- 251
- Forks
- 75
- PR merge metrics
- No merged PRs in 30d
Description
## Hardware Information
- **Laptop**: Lenovo IdeaPad Duet 5 12IRU8 (Model 83B3)
- **Operating System**: Fedora Linux (kernel 6.17.9-300.fc43.x86_64)
- **Camera Sensor**: OmniVision OV5678
- **ACPI Device ID**: `OVTI5678`
- **I2C Bus**: i2c-3 (i2c_designware.3, address 0x36 likely)
- **Camera PMIC**: TPS68470 (INT3472)
- **IPU**: Intel IPU6
## Camera Specifications
According to Lenovo specifications:
- **Front Camera**: 5MP Fixed-Focus with IR support (for Windows Hello)
- **Rear Camera**: 5MP Auto-Focus
- **Sensor Type**: RGB-IR (Bayer 4x4 format, similar to OV01A1S)
## Current Status
### Hardware Detection ✅
```bash
$ ls -la /sys/bus/i2c/devices/ | grep OVTI
i2c-OVTI5678:00 -> .../i2c-3/i2c-OVTI5678:00
$ cat /sys/bus/i2c/devices/i2c-OVTI5678:00/modalias
acpi:OVTI5678:
$ cat /sys/bus/i2c/devices/i2c-OVTI5678:00/waiting_for_supplier
0
```
### IPU6 Infrastructure ✅
All required components are loaded:
- ✅ `intel_ipu6` and `intel_ipu6_isys`
- ✅ `ivsc_csi` and `mei_vsc`
- ✅ `intel_skl_int3472_tps68470`, `tps68470_regulator`, `clk_tps68470`
- ✅ IPU6 firmware present in `/lib/firmware/intel/ipu/`
- ✅ IPU6 camera HAL installed
### Missing: Sensor Driver ❌
No driver in the mainline kernel or ipu6-drivers repository supports `OVTI5678`.
## What I've Tried
I created a custom driver by adapting `ov01a1s.c`:
1. Changed ACPI ID to `OVTI5678`
2. Renamed all symbols from `ov01a1s` to `ov5678`
3. Compiled, signed (Secure Boot), and loaded successfully
### Result
The driver loads and recognizes the device:
```bash
$ modinfo ov5678 | grep alias
alias: acpi*:OVTI5678:*
$ lsmod | grep ov5678
ov5678 24576 0
```
However, probe fails at hardware configuration check:
```bash
$ sudo dmesg | grep ov5678
ov5678 i2c-OVTI5678:00: failed to check hwcfg: -517
```
**Analysis**: Error -517 (EPROBE_DEFER) occurs in the `ov5678_check_hwcfg()` function. The ov01a1s-based driver expects different hardware resources than what OV5678 actually needs:
- Clock frequencies
- Regulator names/voltages
- GPIO configurations
- ACPI _DSM method parameters
## Request
Could you please add official support for the OV5678 sensor to ipu6-drivers?
I've gotten 90% of the way there - the entire stack is working and the driver successfully binds to the device. The remaining 10% requires OV5678-specific hardware configuration that needs:
- OV5678 sensor specifications (clock rates, power requirements)
- Correct regulator/GPIO mappings
- ACPI configuration specific to this sensor
## Affected Devices
The OV5678 sensor (OVTI5678) is used in:
- **Lenovo IdeaPad Duet 5 12IRU8** (my device)
- **Dell Latitude 7320** (mentioned in issue #24)
- Likely other recent Intel-based 2-in-1 convertibles with Windows Hello
## Additional Context
**Reference**: Issue #24 also mentions OV5678 support needed for Dell Latitude 7320.
**Technical Notes**:
- OV5678 uses similar RGB-IR Bayer 4x4 format as OV01A1S
- Based on Lenovo specs, it's a 5MP sensor with dual RGB-IR capability
- Hardware dependencies (INT3472 PMIC) are already met
## Files Available
I can provide:
- Complete ACPI DSDT tables (`/tmp/dsdt.dsl`)
- Custom driver source (`ov5678.c`)
- Full `dmesg` output
- Hardware topology information
- Any additional debugging information needed
## Workaround
None available. Camera is completely non-functional on Linux without proper driver support.
## Willingness to Help
I'm happy to:
- Test patches
- Provide debugging logs
- Test different configurations
- Contribute to driver development if guidance is provided
Thank you for maintaining this project!
Contributor guide
Assessment
This issue has not been assessed yet.