-
Notifications
You must be signed in to change notification settings - Fork 220
Description
Hello,
I am working on getting the Sony IMX708 (Raspberry Pi Camera Module 3) running on Radxa Zero 3W (RK3566).
I have already completed the following steps:
✔️ 1. IMX708 kernel driver successfully ported from Raspberry Pi kernel
The original RPi driver was adapted and fixed to build on Radxa’s kernel:
missing headers (linux/unaligned.h → asm/unaligned.h)
V4L2 API differences (v4l2_subdev_state_get_format, _get_crop, etc.)
probe signature differences (imx708_probe(client, id))
I compiled the module externally and loaded it successfully:
imx708: loading out-of-tree module taints kernel.
imx708 2-001a: camera module ID 0x0381
So the sensor initializes correctly over I²C.
✔️ 2. Device-tree overlay created and loaded successfully
I modified the radxa-zero3-rpi-camera-v2 overlay to match IMX708:
compatible = "sony,imx708"
reg = <0x1a>
clock-names = "inclk"
added required:
link-frequencies = /bits/ 64 <450000000>;
After loading the overlay, the IMX708 probe works fully (no clock or DT errors).
✔️ 3. The sensor appears on I²C and responds properly
i2cdetect -y 2:
0x1a
Kernel:
imx708 2-001a: camera module ID 0x0381
✔️ 4. The ISP (rkisp) and CSI links are initialized
media-ctl -d /dev/media0 --print-topology shows:
rockchip-csi2-dphy0
rkisp-csi-subdev
rkisp-isp-subdev
rkisp_mainpath, rkisp_selfpath, etc.
All CSI/ISP internal links are in ENABLED state.
❌ Problem
Although the sensor probes successfully, it does not appear as a media entity.
/dev/media0 contains only ISP and CSI nodes, but no entity for IMX708.
As a result, when attempting to start streaming:
v4l2-ctl -d /dev/video0 --stream-mmap --stream-count=1
I get:
VIDIOC_STREAMON returned -1 (No such device)
This indicates the ISP pipeline has no active upstream video source because the IMX708 sensor was never registered into the media graph.
❓ What I believe is missing
The IMX708 driver I ported is written for Raspberry Pi’s Unicam pipeline, not for Rockchip’s rkisp_v5 media architecture.
Therefore it does not implement the Rockchip-specific media entity structure, pad definitions, and routing links needed for:
IMX708 → MIPI-CSI2 → rkisp-csi-subdev → rkisp-isp-subdev → rkisp_mainpath (/dev/video0)
Without being registered as a media entity, the ISP cannot pull frames from the sensor.
🙏 What I need help with
I am looking for guidance or examples on:
1️⃣ How to properly integrate a new sensor driver (IMX708) into the RK3566 rkisp_v5 media pipeline
entity initialization
pad formats
links to rockchip-csi2-dphy and rkisp-csi-subdev
correct integration via v4l2_subdev and media controller API
2️⃣ Reference Rockchip sensor drivers for RK3566
(For example: IMX219 or OV5647 drivers customized by Radxa/Rockchip.)
3️⃣ Any existing work or patches adding IMX708 to Rockchip platforms
🧩 Additional details
Board: Radxa Zero 3W (AIC8800W WiFi)
Kernel: 6.1.84-10-rk2410-nocsf
Only /dev/media0 exists; /dev/media1 is absent.
Schematic: Sensor appears on I²C2 (address 0x1a), CSI2 interface, DPHY0.
💬 Summary
The IMX708 is fully detected and initialized by the driver, but it is not registered as a media entity in the Rockchip ISP graph, so streaming cannot start.
I would appreciate guidance on how to properly adapt/extend the driver so that rkisp_v5 recognizes IMX708 as a valid upstream source.
Thank you!