Files
omarchy-pkgs/pkgbuilds/intel-ipu7-camera/0006-camhal-ipu75xa-ov08x40-Intel-CVS-formats.patch
T
Spencer Bull 5501e168f7 Fix Intel IPU7 camera on Linux 7.2 by adopting the CVS V4L2 bridge
Linux 7.2 changed how the Intel CVS controller (ACPI INTC10E1 on Panther
Lake) appears to the IPU. ipu-bridge now places it between the sensor and
the IPU CSI2 receiver, like IVSC, and the new in-tree drivers/media/i2c/cvs
driver provides the matching "Intel CVS" V4L2 bridge sub-device. Our
out-of-tree vision-drivers intel_cvs has no sub-device and displaces the
in-tree module of the same name, so on 7.2 the sensor never joins the
media graph and the HAL reports "No sensors available". Both linux-ptl
7.2.3 and linux-omarchy 7.2.5 fail this way.

Ship the in-tree 7.2 CVS driver verbatim as DKMS module intel-cvs for 7.2+
kernels. Arch-derived kernel configs cannot enable CONFIG_VIDEO_INTEL_CVS
themselves: it sits under a menu hidden by MEDIA_HIDE_ANCILLARY_SUBDRV, so
olddefconfig drops it. Keep vision-drivers for kernels before 7.2. Both
dkms.conf files carry a BUILD_EXCLUSIVE_KERNEL regex that the pacman dkms
hook honours.

Teach the camera HAL about the bridge with upstream ipu7-camera-hal commit
f167239 (MediaControl routes the sensor link through "Intel CVS" and finds
the I2C bus through it) and add "Intel CVS" pad formats to the ipu75xa
ov08x40 config so link validation passes. Links stay sensor to CSI2 in the
config and are rewritten at runtime, so the same files work on 7.1.
2026-09-12 14:34:36 -05:00

33 lines
1.5 KiB
Diff

From: Spencer Bull <spencer@omarchy.org>
Subject: [PATCH] ipu75xa: set Intel CVS pad formats for ov08x40
On Linux 7.2 the "Intel CVS" bridge entity sits between ov08x40 and the
IPU7 CSI2 receiver. Its sink pad format must be set to the sensor format
(the source pad mirrors the sink) or link validation fails at stream-on.
Mirrors the upstream ipu8 change in ipu7-camera-hal commit f167239b3ecf.
Only formats are added; links stay sensor -> CSI2 in the config because
MediaControl rewrites them through the bridge at runtime, so this config
also keeps working on kernels without the CVS entity (a format entry for
a missing entity is logged and skipped).
---
diff --git i/config/linux/ipu75xa/sensors/ov08x40-uf.json w/config/linux/ipu75xa/sensors/ov08x40-uf.json
index ff31df5..483bf1d 100644
--- i/config/linux/ipu75xa/sensors/ov08x40-uf.json
+++ w/config/linux/ipu75xa/sensors/ov08x40-uf.json
@@ -31,6 +31,14 @@
"name": "ov08x40 $I2CBUS", "pad": 0, "width": 3856, "height": 2176,
"format": "V4L2_MBUS_FMT_SGRBG10_1X10"
},
+ {
+ "name": "Intel CVS", "pad": 0, "width": 3856, "height": 2176,
+ "format": "V4L2_MBUS_FMT_SGRBG10_1X10"
+ },
+ {
+ "name": "Intel CVS", "pad": 1, "width": 3856, "height": 2176,
+ "format": "V4L2_MBUS_FMT_SGRBG10_1X10"
+ },
{
"name": "Intel IPU7 CSI2 $CSI_PORT", "pad": 0, "width": 3856, "height": 2176,
"format": "V4L2_MBUS_FMT_SGRBG10_1X10"