On 7.3 the in-tree IPU6 isys driver can be runtime-suspended while
isys_probe() is still running, before it has set drvdata. The suspend
callback then dereferences a NULL isys, oopses, and psys never probes,
so /dev/ipu-psys0 is missing and the camera HAL fails with "Failed to
open PSYS".
Patch the isys runtime PM callbacks to return early when drvdata is
not set yet. The patched module is built on its own from the kernel
source and installed under updates/, so it overrides the in-tree one
without having to rebuild the whole kernel.
With the default 6 icamerasrc buffers the camera HAL ran out of pending
requests and dropped every fourth sensor frame, capping output at ~22.5 fps.
Using 10 buffers keeps the request queue fed and restores 30 fps.
Adds hardware.ipu6 for the built-in MIPI camera, plus two overlay
fixes needed for it to actually work on this hardware:
- Pin icamerasrc-ipu6epmtl to the same release tag already used by
ipu6-camera-bins/ipu6-camera-hal (20250923_ov02e). The version
nixpkgs currently pulls is an Intel internal IoT/Panther-Lake
validation build whose device table only lists external USB
AR0234 test sensors, never the real ov08x40, so the camera never
gets selected.
- Patch ipu6-camera-hal's hardcoded IVSC/CVS entity name from
"Intel IVSC CSI" (the out-of-tree ivsc driver's name) to "Intel
CVS" (the mainlined intel_cvs driver's name). The mismatch broke
I2C bus address resolution for the sensor, which cascaded into
wrong stream configs and black/missing video.