Table of Contents
IPU3 Subsystem
The IPU3 subsystem consists of two hardware blocks:
- the “CIO2” (MIPI CSI-2 receiver) device that captures raw Bayer data from the camera sensor.
- the “ImgU” (Imaging Unit) device that processes the raw frames (demosaic, lens shading correction, etc.) and exposes output nodes.
Sensor -> CIO2 -> ImgU
Intel IPU3 webcams (the ones found in many Dell Latitude Rugged and Lenovo laptops) do not work through the old V4L2/uvcvideo pipeline. They require the userspace stack libcamera + pipewire, because the IPU3 hardware needs complex image processing that is not provided directly by the kernel.
On Debian 12, support is present but not enabled by default. Here is the correct way to get the camera working.
ilyas@fiorina:~$ v4l2-ctl --list-devices
ipu3-imgu (PCI:0000:00:05.0):
/dev/video0
/dev/video1
/dev/video2
/dev/video3
/dev/video4
/dev/video5
/dev/video6
/dev/video7
/dev/video8
/dev/video9
/dev/media0
Intel IPU3 CIO2 (PCI:0000:00:14.3):
/dev/video10
/dev/video11
/dev/video12
/dev/video13
/dev/media1
https://www.kernel.org/doc/html/v5.0/media/v4l-drivers/ipu3.html
https://docs.kernel.org/admin-guide/media/ipu3.html
Install & Configure
ilyas@fiorina:~$ sudo /sbin/dmidecode -s system-product-name
Latitude 7212 Rugged Extreme Tablet
ilyas@fiorina:~$ sudo /sbin/dmidecode -s system-manufacturer
Dell Inc.
ilyas@fiorina:~$ sudo dmesg | grep -i ipu
[ 8.975645] ipu3_imgu: module is from the staging directory, the quality is unknown, you have been warned.
[ 8.982028] ipu3-imgu 0000:00:05.0: enabling device (0000 -> 0002)
[ 8.982199] ipu3-imgu 0000:00:05.0: device 0x1919 (rev: 0x1)
[ 8.982222] ipu3-imgu 0000:00:05.0: physical base address 0x00000000df000000, 4194304 bytes
[ 9.027555] ipu3-cio2 0000:00:14.3: device 0x9d32 (rev: 0x1)
[ 9.065565] ipu3-imgu 0000:00:05.0: firmware: direct-loading firmware intel/irci_irci_ecr-master_20161208_0213_20170112_1500.bin
[ 9.065576] ipu3-imgu 0000:00:05.0: loaded firmware version irci_irci_ecr-master_20161208_0213_20170112_1500, 17 binaries, 1212984 bytes
ilyas@fiorina:~$ lspci -nn | grep -i 14.3
00:14.3 Multimedia controller [0480]: Intel Corporation CSI-2 Host Controller [8086:9d32] (rev 01)
The IPU3 driver is working at the kernel level.
intel/irci_irci_ecr-master_20161208_0213_20170112_1500.bin
IPU3 devices require:
- the CIO2 driver (detected)
- the IMGU pipeline (loaded)
- the correct ACPI camera sensor description
- userspace support (libcamera) for:
- sensor drivers
- tuning data
- JSON pipeline descriptions
IPU3 support in Linux is still incomplete for many laptops. Drivers exist, but the userspace stack must also cooperate.
Sometimes the IPU3 stack is initializing, but no camera sensors are being detected at all:
- CIO2 is detected (this is the MIPI bridge and input of the IPU3 pipeline)
- But no sensor drivers or I²C devices appear
- No ovXXXX or imxXXXX sensors probe
- No errors from sensors either — meaning nothing is described in ACPI
This is the classic IPU3 problem on many laptops.
IPU3 has 3 required layers:
- CIO2 — detected
- IMGU — detected, firmware loaded
- Sensor — missing
Without item 3, the pipeline cannot produce a V4L2 device. This is not a firmware issue. It is a platform integration issue.
Check if sensors are detected:
ilyas@fiorina:~$ ls /dev/v4l/by-path/
pci-0000:00:05.0-video-index0 pci-0000:00:05.0-video-index5 pci-0000:00:14.3-video-index0
pci-0000:00:05.0-video-index1 pci-0000:00:05.0-video-index6 pci-0000:00:14.3-video-index1
pci-0000:00:05.0-video-index2 pci-0000:00:05.0-video-index7 pci-0000:00:14.3-video-index2
pci-0000:00:05.0-video-index3 pci-0000:00:05.0-video-index8 pci-0000:00:14.3-video-index3
pci-0000:00:05.0-video-index4 pci-0000:00:05.0-video-index9
ilyas@fiorina:~$ sudo dmesg | grep -i cio2
[ 9.027555] ipu3-cio2 0000:00:14.3: device 0x9d32 (rev: 0x1)
Check available V4L2 devices:
ilyas@fiorina:~$ ls -l /dev/video*
crw-rw----+ 1 root video 81, 0 Nov 10 14:44 /dev/video0
crw-rw----+ 1 root video 81, 1 Nov 10 14:44 /dev/video1
crw-rw----+ 1 root video 81, 11 Nov 10 14:44 /dev/video10
crw-rw----+ 1 root video 81, 12 Nov 10 14:44 /dev/video11
crw-rw----+ 1 root video 81, 13 Nov 10 14:44 /dev/video12
crw-rw----+ 1 root video 81, 14 Nov 10 14:44 /dev/video13
crw-rw----+ 1 root video 81, 2 Nov 10 14:44 /dev/video2
crw-rw----+ 1 root video 81, 3 Nov 10 14:44 /dev/video3
crw-rw----+ 1 root video 81, 5 Nov 10 14:44 /dev/video4
crw-rw----+ 1 root video 81, 6 Nov 10 14:44 /dev/video5
crw-rw----+ 1 root video 81, 7 Nov 10 14:44 /dev/video6
crw-rw----+ 1 root video 81, 8 Nov 10 14:44 /dev/video7
crw-rw----+ 1 root video 81, 9 Nov 10 14:44 /dev/video8
crw-rw----+ 1 root video 81, 10 Nov 10 14:44 /dev/video9
Check media-controller devices:
ilyas@fiorina:~$ ls /dev/media*
/dev/media0 /dev/media1
Sensors are tiny chips like:
- ov5693
- ov7251
- imx135
- imx219
- ov8865
- ov2735
Check camera sensor drivers:
ilyas@fiorina:~$ sudo dmesg | grep -i ov
[ 0.000000] BIOS-provided physical RAM map:
[ 0.000937] e820: remove [mem 0x000a0000-0x000fffff] usable
[ 0.012017] Movable zone start for each node
[ 0.019245] ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl)
[ 0.019247] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level)
[ 0.125091] thermal_sys: Registered thermal governor 'fair_share'
[ 0.125091] thermal_sys: Registered thermal governor 'bang_bang'
[ 0.125091] thermal_sys: Registered thermal governor 'step_wise'
[ 0.125091] thermal_sys: Registered thermal governor 'user_space'
[ 0.125091] thermal_sys: Registered thermal governor 'power_allocator'
[ 0.125091] cpuidle: using governor ladder
[ 0.125091] cpuidle: using governor menu
[ 0.271459] NetLabel: protocols = UNLABELED CIPSOv4 CALIPSO
[ 0.761896] Key type fscrypt-provisioning registered
[ 9.442766] RAPL PMU: API unit is 2^-32 Joules, 5 fixed counters, 655360 ms ovfl timer
Now the question is: Which of the /dev/video devices corresponds to the actual camera stream?
Because IPU3 exposes many nodes:
- several metadata nodes
- several raw streams
- firmware interfaces
- statistics streams
Applications need to talk to the IPU3 pipeline via libcamera, not directly via V4L2.
Let’s identify the correct nodes.
Install media-ctl:
sudo apt install v4l-utils
Check /dev/media0 device:
ilyas@fiorina:~$ media-ctl -p -d /dev/media0
Media controller API version 6.1.76
Media device information
------------------------
driver ipu3-cio2
model Intel IPU3 CIO2
serial
bus info PCI:0000:00:14.3
hw revision 0x0
driver version 6.1.76
Device topology
- entity 1: ipu3-csi2 0 (2 pads, 1 link)
type V4L2 subdev subtype Unknown flags 0
device node name /dev/v4l-subdev0
pad0: Sink
[fmt:SGRBG10_1X10/1936x1096 field:none]
pad1: Source
[fmt:SGRBG10_1X10/1936x1096 field:none]
-> "ipu3-cio2 0":0 [ENABLED,IMMUTABLE]
- entity 4: ipu3-cio2 0 (1 pad, 1 link)
type Node subtype V4L flags 0
device node name /dev/video0
pad0: Sink
<- "ipu3-csi2 0":1 [ENABLED,IMMUTABLE]
- entity 10: ipu3-csi2 1 (2 pads, 1 link)
type V4L2 subdev subtype Unknown flags 0
device node name /dev/v4l-subdev3
pad0: Sink
[fmt:SGRBG10_1X10/1936x1096 field:none]
pad1: Source
[fmt:SGRBG10_1X10/1936x1096 field:none]
-> "ipu3-cio2 1":0 [ENABLED,IMMUTABLE]
- entity 13: ipu3-cio2 1 (1 pad, 1 link)
type Node subtype V4L flags 0
device node name /dev/video1
pad0: Sink
<- "ipu3-csi2 1":1 [ENABLED,IMMUTABLE]
- entity 19: ipu3-csi2 2 (2 pads, 1 link)
type V4L2 subdev subtype Unknown flags 0
device node name /dev/v4l-subdev4
pad0: Sink
[fmt:SGRBG10_1X10/1936x1096 field:none]
pad1: Source
[fmt:SGRBG10_1X10/1936x1096 field:none]
-> "ipu3-cio2 2":0 [ENABLED,IMMUTABLE]
- entity 22: ipu3-cio2 2 (1 pad, 1 link)
type Node subtype V4L flags 0
device node name /dev/video2
pad0: Sink
<- "ipu3-csi2 2":1 [ENABLED,IMMUTABLE]
- entity 28: ipu3-csi2 3 (2 pads, 1 link)
type V4L2 subdev subtype Unknown flags 0
device node name /dev/v4l-subdev5
pad0: Sink
[fmt:SGRBG10_1X10/1936x1096 field:none]
pad1: Source
[fmt:SGRBG10_1X10/1936x1096 field:none]
-> "ipu3-cio2 3":0 [ENABLED,IMMUTABLE]
- entity 31: ipu3-cio2 3 (1 pad, 1 link)
type Node subtype V4L flags 0
device node name /dev/video3
pad0: Sink
<- "ipu3-csi2 3":1 [ENABLED,IMMUTABLE]
Check /dev/media1 device:
ilyas@fiorina:~$ media-ctl -p -d /dev/media1
Media controller API version 6.1.76
Media device information
------------------------
driver ipu3-imgu
model ipu3-imgu
serial
bus info PCI:0000:00:05.0
hw revision 0x102807d3
driver version 6.1.76
Device topology
- entity 1: ipu3-imgu 0 (5 pads, 5 links)
type V4L2 subdev subtype Unknown flags 0
device node name /dev/v4l-subdev1
pad0: Sink
[fmt:FIXED/1920x1080 field:none colorspace:raw
crop:(0,0)/1920x1080
compose:(0,0)/1920x1080]
<- "ipu3-imgu 0 input":0 []
pad1: Sink
[fmt:FIXED/1920x1080 field:none colorspace:raw]
<- "ipu3-imgu 0 parameters":0 []
pad2: Source
[fmt:FIXED/1920x1080 field:none colorspace:raw]
-> "ipu3-imgu 0 output":0 [ENABLED,IMMUTABLE]
pad3: Source
[fmt:FIXED/1920x1080 field:none colorspace:raw]
-> "ipu3-imgu 0 viewfinder":0 []
pad4: Source
[fmt:FIXED/1920x1080 field:none colorspace:raw]
-> "ipu3-imgu 0 3a stat":0 []
- entity 7: ipu3-imgu 0 input (1 pad, 1 link)
type Node subtype V4L flags 0
device node name /dev/video4
pad0: Source
-> "ipu3-imgu 0":0 []
- entity 13: ipu3-imgu 0 parameters (1 pad, 1 link)
type Node subtype V4L flags 0
device node name /dev/video5
pad0: Source
-> "ipu3-imgu 0":1 []
- entity 19: ipu3-imgu 0 output (1 pad, 1 link)
type Node subtype V4L flags 0
device node name /dev/video6
pad0: Sink
<- "ipu3-imgu 0":2 [ENABLED,IMMUTABLE]
- entity 25: ipu3-imgu 0 viewfinder (1 pad, 1 link)
type Node subtype V4L flags 0
device node name /dev/video7
pad0: Sink
<- "ipu3-imgu 0":3 []
- entity 31: ipu3-imgu 0 3a stat (1 pad, 1 link)
type Node subtype V4L flags 0
device node name /dev/video8
pad0: Sink
<- "ipu3-imgu 0":4 []
- entity 37: ipu3-imgu 1 (5 pads, 5 links)
type V4L2 subdev subtype Unknown flags 0
device node name /dev/v4l-subdev2
pad0: Sink
[fmt:FIXED/1920x1080 field:none colorspace:raw
crop:(0,0)/1920x1080
compose:(0,0)/1920x1080]
<- "ipu3-imgu 1 input":0 []
pad1: Sink
[fmt:FIXED/1920x1080 field:none colorspace:raw]
<- "ipu3-imgu 1 parameters":0 []
pad2: Source
[fmt:FIXED/1920x1080 field:none colorspace:raw]
-> "ipu3-imgu 1 output":0 [ENABLED,IMMUTABLE]
pad3: Source
[fmt:FIXED/1920x1080 field:none colorspace:raw]
-> "ipu3-imgu 1 viewfinder":0 []
pad4: Source
[fmt:FIXED/1920x1080 field:none colorspace:raw]
-> "ipu3-imgu 1 3a stat":0 []
- entity 43: ipu3-imgu 1 input (1 pad, 1 link)
type Node subtype V4L flags 0
device node name /dev/video9
pad0: Source
-> "ipu3-imgu 1":0 []
- entity 49: ipu3-imgu 1 parameters (1 pad, 1 link)
type Node subtype V4L flags 0
device node name /dev/video10
pad0: Source
-> "ipu3-imgu 1":1 []
- entity 55: ipu3-imgu 1 output (1 pad, 1 link)
type Node subtype V4L flags 0
device node name /dev/video11
pad0: Sink
<- "ipu3-imgu 1":2 [ENABLED,IMMUTABLE]
- entity 61: ipu3-imgu 1 viewfinder (1 pad, 1 link)
type Node subtype V4L flags 0
device node name /dev/video12
pad0: Sink
<- "ipu3-imgu 1":3 []
- entity 67: ipu3-imgu 1 3a stat (1 pad, 1 link)
type Node subtype V4L flags 0
device node name /dev/video13
pad0: Sink
<- "ipu3-imgu 1":4 []
This means your IPU3 pipeline is fully initialized and complete.
- CIO2 nodes are active for all 4 ports (/dev/video0–3)
- IMGU nodes are active (/dev/video4–13)
- Formats are configured (SGRBG10 1936×1096)
- All links are established and enabled
- No missing or failed sensors are shown
This is what a working IPU3 setup looks like at the kernel and media-controller levels.
Kernel Configuration
Device Drivers → Multimedia support → Media ancillary drivers → Camera sensor devices
Enable OmniVision sensor drivers, for me its OV5670 because dmesg found it:
[ 12.343090] ipu3-cio2 0000:00:14.3: Found supported sensor INT3479:00.
make -j$(nproc) modules
sudo make modules_install
sudo depmod -a
systemctl reboot
Check the module is loaded:
ilyas@fiorina:~$ sudo lsmod | grep ov
overlay 208896 0
ov5670 28672 0
v4l2_fwnode 32768 2 ipu3_cio2,ov5670
v4l2_async 32768 3 v4l2_fwnode,ipu3_cio2,ov5670
videodev 368640 6 v4l2_async,v4l2_fwnode,ipu3_cio2,ov5670,videobuf2_v4l2,ipu3_imgu
mc 86016 7 v4l2_async,videodev,ipu3_cio2,ov5670,videobuf2_v4l2,videobuf2_common,ipu3_imgu
Inspect ACPI driver binding:
ilyas@fiorina:~$ cat /sys/bus/acpi/devices/INT3479:00/hid
INT3479
ilyas@fiorina:~$ cat /sys/bus/acpi/devices/INT3479:00/modalias
acpi:INT3479:INT3479:
ilyas@fiorina:~$ ls -l /sys/bus/i2c/devices/
total 0
lrwxrwxrwx 1 root root 0 Nov 11 00:47 i2c-0 -> ../../../devices/pci0000:00/0000:00:15.0/i2c_designware.0/i2c-0
lrwxrwxrwx 1 root root 0 Nov 11 00:47 i2c-1 -> ../../../devices/pci0000:00/0000:00:1f.4/i2c-1
lrwxrwxrwx 1 root root 0 Nov 11 00:47 i2c-2 -> ../../../devices/pci0000:00/0000:00:15.1/i2c_designware.1/i2c-2
lrwxrwxrwx 1 root root 0 Nov 11 00:47 i2c-3 -> ../../../devices/pci0000:00/0000:00:15.2/i2c_designware.2/i2c-3
lrwxrwxrwx 1 root root 0 Nov 11 01:03 i2c-4 -> ../../../devices/pci0000:00/0000:00:02.0/i2c-4
lrwxrwxrwx 1 root root 0 Nov 11 01:03 i2c-5 -> ../../../devices/pci0000:00/0000:00:02.0/i2c-5
lrwxrwxrwx 1 root root 0 Nov 11 01:03 i2c-6 -> ../../../devices/pci0000:00/0000:00:02.0/i2c-6
lrwxrwxrwx 1 root root 0 Nov 11 01:03 i2c-7 -> ../../../devices/pci0000:00/0000:00:02.0/drm/card0/card0-eDP-1/i2c-7
lrwxrwxrwx 1 root root 0 Nov 11 01:03 i2c-8 -> ../../../devices/pci0000:00/0000:00:02.0/drm/card0/card0-DP-1/i2c-8
lrwxrwxrwx 1 root root 0 Nov 11 00:47 i2c-INT3472:05 -> ../../../devices/pci0000:00/0000:00:15.2/i2c_designware.2/i2c-3/i2c-INT3472:05
Check whether the OV5670 driver knows about ACPI INT3479:
ilyas@fiorina:~$ sudo modinfo ov5670 | grep -i alias
alias: acpi*:INT3479:*
alias: of:N*T*Covti,ov5670C*
alias: of:N*T*Covti,ov5670
You want to see an alias like acpi*:INT3479:*.
If it’s missing, the driver won’t bind via ACPI then you’ll need a newer kernel or a tiny patch.
Verify the INT3472 “glue” drivers are present and loaded:
ilyas@fiorina:~$ lsmod | grep -E 'int347|tps68470'
intel_skl_int3472_tps68470 20480 0
intel_skl_int3472_discrete 28672 0
intel_skl_int3472_common 12288 2 intel_skl_int3472_tps68470,intel_skl_int3472_discrete
On IPU3 platforms, the ACPI “glue” for discrete sensors is critical:
intel_skl_int3472(the main glue)tps68470MFD + clk + regulator + gpio (on many Dells)
Check those modules are loaded:
sudo modprobe intel_skl_int3472
sudo modprobe tps68470
sudo modprobe clk-tps68470
sudo modprobe regulator-tps68470
sudo modprobe gpio-tps68470
If some modules don’t exist, enable these in your kernel config and rebuild modules only:
CONFIG_INTEL_SKL_INT3472 (<M> or Y)
CONFIG_MFD_TPS68470 (<M>)
CONFIG_CLK_TPS68470 (<M>)
CONFIG_REGULATOR_TPS68470 (<M>)
CONFIG_GPIO_TPS68470 (<M>)
Several Dell IPU3 designs rely on TPS68470 to power the sensor; without these, the sensor never probes.
See if the ACPI glue created a child I2C client:
ls -l /sys/bus/i2c/devices/ | grep -iE 'ov|3479'
lrwxrwxrwx 1 root root 0 Nov 11 00:47 i2c-0 -> ../../../devices/pci0000:00/0000:00:15.0/i2c_designware.0/i2c-0
lrwxrwxrwx 1 root root 0 Nov 11 00:47 i2c-1 -> ../../../devices/pci0000:00/0000:00:1f.4/i2c-1
lrwxrwxrwx 1 root root 0 Nov 11 00:47 i2c-2 -> ../../../devices/pci0000:00/0000:00:15.1/i2c_designware.1/i2c-2
lrwxrwxrwx 1 root root 0 Nov 11 00:47 i2c-3 -> ../../../devices/pci0000:00/0000:00:15.2/i2c_designware.2/i2c-3
lrwxrwxrwx 1 root root 0 Nov 11 01:03 i2c-4 -> ../../../devices/pci0000:00/0000:00:02.0/i2c-4
lrwxrwxrwx 1 root root 0 Nov 11 01:03 i2c-5 -> ../../../devices/pci0000:00/0000:00:02.0/i2c-5
lrwxrwxrwx 1 root root 0 Nov 11 01:03 i2c-6 -> ../../../devices/pci0000:00/0000:00:02.0/i2c-6
lrwxrwxrwx 1 root root 0 Nov 11 01:03 i2c-7 -> ../../../devices/pci0000:00/0000:00:02.0/drm/card0/card0-eDP-1/i2c-7
lrwxrwxrwx 1 root root 0 Nov 11 01:03 i2c-8 -> ../../../devices/pci0000:00/0000:00:02.0/drm/card0/card0-DP-1/i2c-8
lrwxrwxrwx 1 root root 0 Nov 11 00:47 i2c-INT3472:05 -> ../../../devices/pci0000:00/0000:00:15.2/i2c_designware.2/i2c-3/i2c-INT3472:05
Check the logs for the failing bind:
ilyas@fiorina:~$ sudo dmesg | grep -i -E 'int347|ov5670|cio2|fwnode|endpoint|regulator|clock|gpio'
[sudo] password for ilyas:
[ 0.017863] clocksource: refined-jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645519600211568 ns
[ 0.081806] clocksource: tsc-early: mask: 0xffffffffffffffff max_cycles: 0x26eae8729ef, max_idle_ns: 440795235156 ns
[ 0.126504] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns
[ 0.247082] acpi PNP0A08:00: _OSC: OS supports [ExtendedConfig ASPM ClockPM Segments MSI HPX-Type3]
[ 0.277943] PTP clock support registered
[ 0.309883] clocksource: Switched to clocksource tsc-early
[ 0.324008] clocksource: acpi_pm: mask: 0xffffff max_cycles: 0xffffff, max_idle_ns: 2085701024 ns
[ 0.353494] pci 0000:00:1f.1: [8086:9d20] type 00 class 0x058000 conventional PCI endpoint
[ 1.358302] tsc: Refined TSC clocksource calibration: 2711.999 MHz
[ 1.358315] clocksource: tsc: mask: 0xffffffffffffffff max_cycles: 0x271785701be, max_idle_ns: 440795203568 ns
[ 1.358335] clocksource: Switched to clocksource tsc
[ 3.843053] rtc_cmos 00:03: setting system clock to 2025-11-10T19:45:37 UTC (1762803937)
[ 3.851161] sched_clock: Marking stable (3844003630, 6268041)->(3893017514, -42745843)
[ 3.974666] clk: Disabling unused clocks
[ 102.091523] int3472-tps68470 i2c-INT3472:05: TPS68470 REVID: 0x21
[ 102.091684] int3472-tps68470 i2c-INT3472:05: error -ENODEV: No board-data found for this model
[ 102.436581] ipu3-cio2 0000:00:14.3: Found supported sensor INT3479:00
[ 102.436788] ipu3-cio2 0000:00:14.3: Connected 1 cameras
[ 102.437164] ipu3-cio2 0000:00:14.3: device 0x9d32 (rev: 0x1)
[ 102.774958] cfg80211: Loading compiled-in X.509 certificates for regulatory database
[ 105.419831] iwlwifi 0000:03:00.0: Registered PHC clock: iwlwifi-PTP, with index: 0
The blocker is right here in dmesg output:
int3472-tps68470 i2c-INT3472:05: TPS68470 REVID: 0x21
int3472-tps68470 i2c-INT3472:05: error -ENODEV: No board-data found for this model
That means the ACPI glue intel_skl_int3472_tps68470 found the TPS68470 PMIC (power/clock chip for the sensor), but your machine isn’t in the driver’s board-data (DMI) table. Without that, the driver can’t create the TPS68470 clock/regulator/GPIO devices, the OV5670 never powers up, no sensor entity in the media graph.
Edit kernel configuration:
- Device Drivers > GPIO Support > MFD GPIO Expanders > TPS68470 GPIO (M)
- Device Drivers > Voltage and Current Regulator Support > TI TPS68470 PMIC Regulators Driver (REGULATOR_TPS68470 [=m])
- Device Drivers > Common Clock Framework > Clock Driver for TI TPS68470 PMIC (COMMON_CLK_TPS68470 [=m])
- Power management and ACPI options > ACPI (Advanced Configuration and Power Interface) Support > ACPI operation region support for TPS68470 PMIC (TPS68470_PMIC_OPREGION [=m])
make -j3 modules
sudo make modules_install
sudo depmod -a
Install libcamera packages:
sudo apt update
sudo apt install libcamera-tools libcamera-ipa pipewire pipewire-media-session pipewire-alsa pipewire-pulse ibcamera-v4l2
Enable PipeWire:
systemctl --user --now enable pipewire pipewire-pulse