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:
How to properly integrate a new sensor driver (IMX708) into the RK3566 rkisp_v5 media pipeline
-
entity initialization
-
pad formats
-
links to
rockchip-csi2-dphyandrkisp-csi-subdev -
correct integration via
v4l2_subdevand media controller API
Reference Rockchip sensor drivers for RK3566
(For example: IMX219 or OV5647 drivers customized by Radxa/Rockchip.)
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/media0exists;/dev/media1is 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!