We need to get analog video into our Radxa CM3 and we have a lot of previous experience with ADV7281A-M with Pi4, etc. However we cannot get it to work with Radxa CM3. Our attempts have got as far as getting video0 device, but not streaming data.
Has anyone managed to get this IC with MIPI interface to the CM3?
Has anyone got an ADV7281A-M working with ROCK CM3?
Hello, We have a similar need and would like to connect an ADV7280A-M to a Radxa Rock 5B board. We modified the kernel with the BSP to enable the ADV7180 module and created the DTS overlay below. It is correctly added to the overlays using rsetup
, and the driver is properly initialized. The MIPI-CSI signals are indeed being sent, as I forced the FREERUN mode with color bars at 576i. However, I can’t get video output because I encounter an error from the rkcif
driver saying it requires a sensor-type input. Do you have a solution for this issue to get video on /dev/video0
?
DTS :
/dts-v1/;
/plugin/;
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/pinctrl/rockchip.h>
/ {
metadata {
title = “Enable ADV7280 without ISP”;
compatible = “radxa,rock-5b”;
category = “camera”;
exclusive = “csi2_dphy0”;
description = “ADV7280 directly connected to CIF without ISP.”;
};
};
&i2c3 {
status = “okay”;
#address-cells = <1>;
#size-cells = <0>;
adv7280: composite-in@21 {
compatible = "adi,adv7280-m";
reg = <0x21>;
/* Nom et orientation (cosmétique / libcamera) */
rockchip,camera-module-index = <0>;
rockchip,camera-module-facing = "back";
rockchip,camera-module-name = "adv7280a-m";
rockchip,camera-module-lens-name = "analog-in";
/* Alimentation / contrôle GPIO (si dispo) */
//reset-gpios = <&gpio1 10 GPIO_ACTIVE_LOW>;
//powerdown-gpios = <&gpio1 11 GPIO_ACTIVE_HIGH>;
/* Clock externe (si utilisée) */
//clocks = <&cru SCLK_CIF_OUT>;
//clock-names = "xvclk";
port {
adv7280_out: endpoint {
//bus-width = <8>;
bus-type = <4>; // MIPI CSI-2
data-lanes = <1>; // Une seule lane de données
clock-lanes = <0>; // Horloge sur lane 0
remote-endpoint = <&mipidphy0_in_ucam1>;
};
};
};
};
&csi2_dphy0_hw {
status = “okay”;
};
&csi2_dphy0 {
status = “okay”;
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
mipidphy0_in_ucam1: endpoint@2 {
reg = <2>;
remote-endpoint = <&adv7280_out>;
bus-width = <8>;
data-lanes = <1>;
};
};
port@1 {
reg = <1>;
csidphy0_out: endpoint@0 {
reg = <0>;
remote-endpoint = <&mipi2_csi2_input>;
};
};
};
};
&mipi2_csi2 {
status = “okay”;
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
mipi2_csi2_input: endpoint@1 {
reg = <1>;
remote-endpoint = <&csidphy0_out>;
};
};
port@1 {
reg = <1>;
mipi2_csi2_output: endpoint@0 {
reg = <0>;
remote-endpoint = <&cif_mipi2_in0>;
};
};
};
};
&rkcif {
status = “okay”;
};
&rkcif_mipi_lvds2 {
status = “okay”;
port {
cif_mipi2_in0: endpoint {
remote-endpoint = <&mipi2_csi2_output>;
};
};
};
/* Désactivation de l’ISP */
&rkcif_mipi_lvds2_sditf {
status = “disabled”;
};
&rkisp0 {
status = “disabled”;
};
&rkisp0_vir0 {
status = “disabled”;
};
&isp0_mmu {
status = “disabled”;
};
&rkcif_mmu {
status = “okay”; // reste nécessaire pour CIF
};
Initialization error :
platform csi2-dphy0: Fixed dependency cycle(s) with /mipi2-csi2
[ 4.251409] platform mipi2-csi2: Fixed dependency cycle(s) with /csi2-dphy0
[ 4.251577] platform mipi2-csi2: Fixed dependency cycle(s) with /rkcif-mipi-lvds2
[ 4.251601] platform rkcif-mipi-lvds2: Fixed dependency cycle(s) with /mipi2-csi2
[ 5.210413] rkcif rkcif-mipi-lvds2: Adding to iommu group 15
[ 5.210452] rkcif rkcif-mipi-lvds2: rkcif driver version: v00.02.00
[ 5.210614] rkcif rkcif-mipi-lvds2: attach to cif hw node
[ 5.210626] rkcif rkcif-mipi-lvds2: rkcif wait line 0
[ 5.210637] rkcif rkcif-mipi-lvds2: rkcif fastboot reserve bufs num 3
[ 5.212759] rkcif rkcif-mipi-lvds2: No memory-region-thunderboot specified
[ 5.213735] rockchip-mipi-csi2-hw fdd10000.mipi0-csi2-hw: enter mipi csi2 hw probe!
[ 5.213843] rockchip-mipi-csi2-hw fdd10000.mipi0-csi2-hw: probe success, v4l2_dev:mipi0-csi2-hw!
[ 5.213882] rockchip-mipi-csi2-hw fdd20000.mipi1-csi2-hw: enter mipi csi2 hw probe!
[ 5.213970] rockchip-mipi-csi2-hw fdd20000.mipi1-csi2-hw: probe success, v4l2_dev:mipi1-csi2-hw!
[ 5.214005] rockchip-mipi-csi2-hw fdd30000.mipi2-csi2-hw: enter mipi csi2 hw probe!
[ 5.214085] rockchip-mipi-csi2-hw fdd30000.mipi2-csi2-hw: probe success, v4l2_dev:mipi2-csi2-hw!
[ 5.214121] rockchip-mipi-csi2-hw fdd40000.mipi3-csi2-hw: enter mipi csi2 hw probe!
[ 5.214202] rockchip-mipi-csi2-hw fdd40000.mipi3-csi2-hw: probe success, v4l2_dev:mipi3-csi2-hw!
[ 5.214236] rockchip-mipi-csi2-hw fdd50000.mipi4-csi2-hw: enter mipi csi2 hw probe!
[ 5.214315] rockchip-mipi-csi2-hw fdd50000.mipi4-csi2-hw: probe success, v4l2_dev:mipi4-csi2-hw!
[ 5.214349] rockchip-mipi-csi2-hw fdd60000.mipi5-csi2-hw: enter mipi csi2 hw probe!
[ 5.214429] rockchip-mipi-csi2-hw fdd60000.mipi5-csi2-hw: probe success, v4l2_dev:mipi5-csi2-hw!
[ 5.214929] rockchip-mipi-csi2 mipi2-csi2: attach to csi2 hw node
[ 5.214951] rkcif rkcif-mipi-lvds2: Entity type for entity rockchip-mipi-csi2 was not initialized!
[ 5.214958] rockchip-mipi-csi2: Async registered subdev
[ 5.214995] rockchip-mipi-csi2: probe success, v4l2_dev:rkcif-mipi-lvds2!
[ 5.279979] rkcif-mipi-lvds2: rkcif_update_sensor_info: stream[0] get remote terminal sensor failed!
[ 5.280144] rkcif-mipi-lvds2: Async subdev notifier completed
[ 5.280239] rkcif-mipi-lvds2: rkcif_update_sensor_info: stream[0] get remote terminal sensor failed!
[ 5.280379] rkcif-mipi-lvds2: There is not terminal subdev, not synchronized with ISP
[ 5.326976] rkcif rkcif-mipi-lvds2: clear unready subdev num: 0
[ 5.327014] rkcif-mipi-lvds2: rkcif_update_sensor_info: stream[0] get remote terminal sensor failed!
[ 5.327068] rkcif-mipi-lvds2: There is not terminal subdev, not synchronized with ISP
[ 8.349744] rkcif-mipi-lvds2: rkcif_update_sensor_info: stream[0] get remote terminal sensor failed!
[ 8.350153] rkcif-mipi-lvds2: rkcif_update_sensor_info: stream[0] get remote terminal sensor failed!
[ 8.352635] rkcif-mipi-lvds2: rkcif_update_sensor_info: stream[2] get remote terminal sensor failed!
[ 8.353355] rkcif-mipi-lvds2: rkcif_update_sensor_info: stream[2] get remote terminal sensor failed!
[ 8.353457] stream_cif_mipi_id2: update sensor info failed -19