Part Number: TDA4VM
Hello, everyone.
I created a v4l2 camera driver for the board tda4vm. I'm new to the board, so I opted to start with a clear stream from the Nvidia Jetson board, which I've had some experience with. It was all well, and I was able to stream from my RGGB12 3840x2160 camera.
Then I adjust the driver for TDA4VM board and it all wen't fine, it writes it's registers to serializer, deserializer and camera. There are no concerns here; it successfully probes.
Then I run the following commands to link the media to /dev/video2:
media-ctl -d /dev/media0 --set-v4l2 '"cdns_csi2rx.4504000.csi-bridge":0 [fmt:SRGGB12_1X12/3840x2160]' media-ctl -d /dev/media0 --links '"cdns_csi2rx.4504000.csi-bridge":1 -> "4500000.ticsi2rx":0[1]'
And afterwards using yavta, to get frames:
yavta /dev/video2 -c8 -f SRGGB12 -F5.raw -s 3840x2160
However when I execute the yavta command, it just hangs, and doesn't capture any frames at all.
I looked through the forum and discovered a couple of others that had similar problems as myself, but none of the solutions they found worked.
How can I solve this problem ?
Here's the dtso file for my camera.
/dts-v1/;
/plugin/;
#include <dt-bindings/gpio/gpio.h>
#include "k3-pinctrl.h"
&{/} {
clk_s5k1h1sb_fixed: s5k1h1sb-xclk {
compatible = "fixed-clock";
#clock-cells = <0>;
clock-frequency = <25000000>;
};
};
&main_pmx0 {
csi2_exp_pins_default: csi2-exp-pins-default {
pinctrl-single,pins = <
J721E_IOPAD(0x140, PIN_OUTPUT, 7) /* (AG29) PRG0_PRU1_GPO16.GPIO0_79 */
>;
};
};
&main_i2c3 {
status = "okay";
#address-cells = <1>;
#size-cells = <0>;
i2c-switch@70 {
compatible = "nxp,pca9543";
#address-cells = <1>;
#size-cells = <0>;
reg = <0x70>;
ti_cam0_i2c: i2c@0 {
#address-cells = <1>;
#size-cells = <0>;
reg = <0>;
dser_0: max9296@28 {
compatible = "max9296_gmsl2";
reg = <0x28>;
csi-mode = "2x4";
max-src = <1>;
};
ser_prim_0: max9295_prim@40 {
compatible = "max9295_gmsl2";
reg = <0x40>;
is-prim-ser;
gmsl-dser-device = <&dser_0>;
rclkout;
};
s5k1h1sb_serdes_0@10 {
compatible = "samsung_s5k1h1sb";
reg = <0x10>;
def-addr = <0x10>;
clocks = <&clk_s5k1h1sb_fixed>;
gmsl-ser-device = <&ser_prim_0>;
gmsl-dser-device = <&dser_0>;
port{
csi2_cam0: endpoint {
clock-lanes = <0>;
data-lanes = <1 2>;
remote-endpoint = <&csi2rx0_in_sensor>;
link-frequencies = /bits/ 64 <215000000>;
};
};
gmsl-link {
src-csi-port = "b";
dst-csi-port = "a";
serdes-csi-link = "a";
csi-mode = "1x4";
st-vc = <0>;
vc-id = <0>;
num-lanes = <2>;
streams = "yuv422";
};
};
};
};
};
&csi0_port0 {
status = "okay";
csi2rx0_in_sensor: endpoint {
remote-endpoint = <&csi2_cam0>;
bus-type = <4>; /* CSI2 DPHY */
clock-lanes = <0>;
data-lanes = <1 2>;
};
};Thanks.
