Which system do you use? Android, Ubuntu, OOWOW or others?
ubuntu
Which version of system do you use? Khadas official images, self built images, or others?
self built images
Please describe your issue below:
我尝试做转接板让edge2开发板支持raw-mipi-sc132m相机。
更改摄像头设备树如下:
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/ {
vcc_mipidphy0: vcc-mipidcphy0-regulator {//cam2-sc132m
status = "okay";
compatible = "regulator-fixed";
gpio = <&gpio1 RK_PB2 GPIO_ACTIVE_HIGH>;
pinctrl-names = "default";
pinctrl-0 = <&mipidphy0_pwr>;
regulator-name = "vcc_mipidphy0";
enable-active-high;
regulator-always-on;
};
};
&csi2_dcphy0 {//cam2
status = "okay";
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
#address-cells = <1>;
#size-cells = <0>;
mipi_in_dcphy0: endpoint@1 {
reg = <1>;
remote-endpoint = <&mvcam_out0>;
data-lanes = <1 2>;
};
};
port@1 {
reg = <1>;
#address-cells = <1>;
#size-cells = <0>;
csidcphy0_out: endpoint@0 {
reg = <0>;
remote-endpoint = <&mipi0_csi2_input>;
};
};
};
};
&mipi_dcphy0 {
status = "okay";
};
&csi2_dcphy1 {//cam1
status = "okay";
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
#address-cells = <1>;
#size-cells = <0>;
mipi_in_dcphy1: endpoint@1 {
reg = <1>;
remote-endpoint = <&imx415f_out1>;
data-lanes = <1 2 3 4>;
};
};
port@1 {
reg = <1>;
#address-cells = <1>;
#size-cells = <0>;
csidcphy1_out: endpoint@0 {
reg = <0>;
remote-endpoint = <&mipi1_csi2_input>;
};
};
};
};
&mipi_dcphy1 {
status = "okay";
};
&csi2_dphy0 {//cam3
status = "okay";
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
#address-cells = <1>;
#size-cells = <0>;
mipidphy0_in_ucam0: endpoint@1 {
reg = <1>;
remote-endpoint = <&imx415c_out0>;
data-lanes = <1 2 3 4>;
};
};
port@1 {
reg = <1>;
#address-cells = <1>;
#size-cells = <0>;
csidphy0_out: endpoint@0 {
reg = <0>;
remote-endpoint = <&mipi2_csi2_input>;
};
};
};
};
&csi2_dphy0_hw {
status = "okay";
};
&i2c4 {//cam2
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&i2c4m3_xfer>;
dw9714b: dw9714b@c {
compatible = "dongwoon,dw9714";
status = "disable";
reg = <0x0c>;
pinctrl-names = "focusb_gpios";
pinctrl-0 = <&focusb_gpio>;
focus-gpios = <&gpio1 RK_PA0 GPIO_ACTIVE_HIGH>;
rockchip,vcm-start-current = <20>;
rockchip,vcm-rated-current = <76>;
rockchip,vcm-step-mode = <0>;
rockchip,camera-module-index = <0>;
rockchip,camera-module-facing = "back";
};
imx415b: imx415b@1a {
compatible = "sony,imx415";
status = "disable";
reg = <0x1a>;
clocks = <&cru CLK_MIPI_CAMARAOUT_M1>;
clock-names = "xvclk";
power-domains = <&power RK3588_PD_VI>;
pinctrl-names = "default", "camb_gpios";
pinctrl-0 = <&mipim1_camera1_clk>, <&camb_gpio>;
rockchip,grf = <&sys_grf>;
reset-gpios = <&gpio1 RK_PB2 GPIO_ACTIVE_LOW>;
pwdn-gpios = <&gpio1 RK_PB3 GPIO_ACTIVE_HIGH>;
rockchip,camera-module-index = <0>;
rockchip,camera-module-facing = "back";
rockchip,camera-module-name = "CMK-OT2022-PX1";
rockchip,camera-module-lens-name = "IR0147-50IRC-8M-F20";
lens-focus = <&dw9714b>;
port {
imx415b_out0: endpoint {
remote-endpoint = <&mipi_in_dcphy0>;
data-lanes = <1 2 3 4>;
};
};
};
mvcam: mvcam@3b{
compatible = "veye,mvcam";
status = "okay";
reg = <0x3b>;
clocks = <&cru CLK_MIPI_CAMARAOUT_M1>;
clock-names = "xvclk";
pinctrl-names = "default";
pinctrl-0 = <&mipim1_camera1_clk>;
power-domains = <&power RK3588_PD_VI>;
//power-gpios = <&gpio1 RK_PC4 GPIO_ACTIVE_LOW>;
reset-gpios = <&gpio3 RK_PA6 GPIO_ACTIVE_HIGH>;//用原来的19和20引脚,SC132M似乎不需要考虑这两个引脚
pwdn-gpios = <&gpio1 RK_PB3 GPIO_ACTIVE_HIGH>;
//avdd-supply = <&vcc_mipidcphy0>;
//firefly,clkout-enabled-index = <0>;
rockchip,camera-module-index = <0>;
rockchip,camera-module-facing = "back";
rockchip,camera-module-name = "NC";
rockchip,camera-module-lens-name = "NC";
port {
mvcam_out0: endpoint {
remote-endpoint = <&mipi_in_dcphy0>;
data-lanes = <1 2>;
};
};
};
};
&i2c3 {//cam1
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&i2c3m0_xfer>;
dw9714f: dw9714f@c {
compatible = "dongwoon,dw9714";
status = "okay";
reg = <0x0c>;
pinctrl-names = "focusf_gpios";
pinctrl-0 = <&focusf_gpio>;
focus-gpios = <&gpio1 RK_PA1 GPIO_ACTIVE_HIGH>;
rockchip,vcm-start-current = <20>;
rockchip,vcm-rated-current = <76>;
rockchip,vcm-step-mode = <0>;
rockchip,camera-module-index = <1>;
rockchip,camera-module-facing = "front";
};
imx415f: imx415f@1a {
compatible = "sony,imx415";
status = "okay";
reg = <0x1a>;
clocks = <&cru CLK_MIPI_CAMARAOUT_M2>;
clock-names = "xvclk";
power-domains = <&power RK3588_PD_VI>;
pinctrl-names = "default", "camf_gpios";
pinctrl-0 = <&mipim1_camera2_clk>, <&camf_gpio>;
rockchip,grf = <&sys_grf>;
reset-gpios = <&gpio3 RK_PC6 GPIO_ACTIVE_LOW>;
pwdn-gpios = <&gpio3 RK_PC5 GPIO_ACTIVE_HIGH>;
rockchip,camera-module-index = <1>;
rockchip,camera-module-facing = "front";
rockchip,camera-module-name = "CMK-OT2022-PX1";
rockchip,camera-module-lens-name = "IR0147-50IRC-8M-F20";
lens-focus = <&dw9714f>;
port {
imx415f_out1: endpoint {
remote-endpoint = <&mipi_in_dcphy1>;
data-lanes = <1 2 3 4>;
};
};
};
};
&i2c8 {//cam3
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&i2c8m2_xfer>;
dw9714c: dw9714c@c {
compatible = "dongwoon,dw9714";
status = "okay";
reg = <0x0c>;
pinctrl-names = "focusc_gpios";
pinctrl-0 = <&focusc_gpio>;
focus-gpios = <&gpio1 RK_PA6 GPIO_ACTIVE_HIGH>;
rockchip,vcm-start-current = <20>;
rockchip,vcm-rated-current = <76>;
rockchip,vcm-step-mode = <0>;
rockchip,camera-module-index = <0>;
rockchip,camera-module-facing = "back";
};
imx415: imx415@1a {
compatible = "sony,imx415";
reg = <0x1a>;
clocks = <&cru CLK_MIPI_CAMARAOUT_M3>;
clock-names = "xvclk";
pinctrl-names = "default", "camc_gpios";
pinctrl-0 = <&mipim1_camera3_clk>, <&camc_gpio>;
power-domains = <&power RK3588_PD_VI>;
reset-gpios = <&gpio3 RK_PB4 GPIO_ACTIVE_LOW>;
pwdn-gpios = <&gpio1 RK_PA4 GPIO_ACTIVE_HIGH>;
rockchip,camera-module-index = <0>;
rockchip,camera-module-facing = "back";
rockchip,camera-module-name = "CMK-OT2022-PX1";
rockchip,camera-module-lens-name = "IR0147-50IRC-8M-F20";
lens-focus = <&dw9714c>;
port {
imx415c_out0: endpoint {
remote-endpoint = <&mipidphy0_in_ucam0>;
data-lanes = <1 2 3 4>;
};
};
};
};
&pinctrl {
cam {
mipidphy0_pwr: mipidphy0-pwr {
rockchip,pins =
/* camera power en */
<1 RK_PB2 RK_FUNC_GPIO &pcfg_output_high>;
};
camf_gpio: camf-gpio {//imx415
rockchip,pins =
<3 RK_PC6 RK_FUNC_GPIO &pcfg_pull_none>,
<3 RK_PC5 RK_FUNC_GPIO &pcfg_pull_none>;
};
camb_gpio: camb-gpio {//imx415
rockchip,pins =
<1 RK_PB2 RK_FUNC_GPIO &pcfg_pull_none>,
<1 RK_PB3 RK_FUNC_GPIO &pcfg_pull_none>;
};
camc_gpio: camc-gpio {//imx415
rockchip,pins =
<3 RK_PB4 RK_FUNC_GPIO &pcfg_pull_none>,
<1 RK_PA4 RK_FUNC_GPIO &pcfg_pull_none>;
};
focusb_gpio: focusb-gpio {//dw9714
rockchip,pins =
<1 RK_PA0 RK_FUNC_GPIO &pcfg_pull_none>;
};
focusf_gpio: focusf-gpio {//dw9714
rockchip,pins =
<1 RK_PA1 RK_FUNC_GPIO &pcfg_pull_none>;
};
focusc_gpio: focusc-gpio {//dw9714
rockchip,pins =
<1 RK_PA6 RK_FUNC_GPIO &pcfg_pull_none>;
};
};
};
&mipi0_csi2 {//cam2
status = "okay";
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
#address-cells = <1>;
#size-cells = <0>;
mipi0_csi2_input: endpoint@1 {
reg = <1>;
remote-endpoint = <&csidcphy0_out>;
};
};
port@1 {
reg = <1>;
#address-cells = <1>;
#size-cells = <0>;
mipi0_csi2_output: endpoint@0 {
reg = <0>;
remote-endpoint = <&cif_mipi_in0>;
};
};
};
};
&mipi1_csi2 {//cam1
status = "okay";
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
#address-cells = <1>;
#size-cells = <0>;
mipi1_csi2_input: endpoint@1 {
reg = <1>;
remote-endpoint = <&csidcphy1_out>;
};
};
port@1 {
reg = <1>;
#address-cells = <1>;
#size-cells = <0>;
mipi1_csi2_output: endpoint@0 {
reg = <0>;
remote-endpoint = <&cif_mipi_in1>;
};
};
};
};
&mipi2_csi2 {//cam3
status = "okay";
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
#address-cells = <1>;
#size-cells = <0>;
mipi2_csi2_input: endpoint@1 {
reg = <1>;
remote-endpoint = <&csidphy0_out>;
};
};
port@1 {
reg = <1>;
#address-cells = <1>;
#size-cells = <0>;
mipi2_csi2_output: endpoint@0 {
reg = <0>;
remote-endpoint = <&cif_mipi2_in0>;
};
};
};
};
&rkcif {
status = "okay";
};
&rkcif_mipi_lvds {
status = "okay";
port {
cif_mipi_in0: endpoint {
remote-endpoint = <&mipi0_csi2_output>;
};
};
};
&rkcif_mipi_lvds_sditf {
status = "okay";
port {
mipi_lvds_sditf: endpoint {
remote-endpoint = <&isp0_vir0>;
};
};
};
&rkcif_mipi_lvds1 {
status = "okay";
port {
cif_mipi_in1: endpoint {
remote-endpoint = <&mipi1_csi2_output>;
};
};
};
&rkcif_mipi_lvds1_sditf {
status = "okay";
port {
mipi1_lvds_sditf: endpoint {
remote-endpoint = <&isp0_vir1>;
};
};
};
&rkcif_mipi_lvds2 {
status = "okay";
port {
cif_mipi2_in0: endpoint {
remote-endpoint = <&mipi2_csi2_output>;
};
};
};
&rkcif_mipi_lvds2_sditf {
status = "okay";
port {
mipi_lvds2_sditf: endpoint {
remote-endpoint = <&isp1_vir0>;
};
};
};
&rkcif_mmu {
status = "okay";
};
&rkisp0 {
status = "okay";
};
&isp0_mmu {
status = "okay";
};
&rkisp0_vir0 {
status = "okay";
port {
#address-cells = <1>;
#size-cells = <0>;
isp0_vir0: endpoint@0 {
reg = <0>;
remote-endpoint = <&mipi_lvds_sditf>;
};
};
};
&rkisp0_vir1 {
status = "okay";
port {
#address-cells = <1>;
#size-cells = <0>;
isp0_vir1: endpoint@0 {
reg = <0>;
remote-endpoint = <&mipi1_lvds_sditf>;
};
};
};
&rkisp1 {
status = "okay";
};
&isp1_mmu {
status = "okay";
};
&rkisp1_vir0 {
status = "okay";
port {
#address-cells = <1>;
#size-cells = <0>;
isp1_vir0: endpoint@0 {
reg = <0>;
remote-endpoint = <&mipi_lvds2_sditf>;
};
};
};
能够识别到相机:
[ 10.868932] mvcam 4-003b: veye mv series camera driver version: 01.01.04
[ 11.872574] mvcam 4-003b: camera is: RAW-MIPI-SC132M
[ 11.873598] mvcam 4-003b: firmware version: 0x1040000
[ 11.877481] mvcam 4-003b: mvcam_get_mipifeature: lane num 2, datarate 1500000000 bps
[ 11.877588] mvcam 4-003b: Success to get mvcam endpoint data lanes, dts uses 2 lanes
[ 11.891182] mvcam 4-003b: mvcam_enum_controls success
我可以确定i2c-4没有问题。
但是使用命令
v4l2-ctl -d /dev/video0 --set-fmt-video=width=1080,height=1280,pixelformat=GREY --stream-mmap --stream-count=1 --stream-to=y8-1088x1280.raw
在dmesg中会有:
[ 1189.005947] rockchip-csi2-dphy csi2-dcphy0: csi2_dphy_update_sensor_mbus fail to get dphy param, used default value
[ 1189.009415] rockchip-csi2-dphy csi2-dcphy0: csi2_dphy_update_sensor_mbus fail to get dphy param, used default value
[ 1189.009978] rockchip-mipi-csi2 fdd10000.mipi0-csi2: stream on, src_sd: 000000002ff232b9, sd_name:rockchip-csi2-dphy0
[ 1189.010005] rockchip-mipi-csi2 fdd10000.mipi0-csi2: stream ON
[ 1189.010037] rockchip-csi2-dphy csi2-dcphy0: csi2_dphy_update_sensor_mbus fail to get dphy param, used default value
[ 1189.010057] rockchip-csi2-dphy csi2-dcphy0: csi2_dphy_update_sensor_mbus fail to get dphy param, used default value
[ 1189.010084] rockchip-csi2-dphy csi2-dcphy0: csi2_dphy_update_sensor_mbus fail to get dphy param, used default value
<[ 1189.032767] rockchip-mipi-csi2 fdd10000.mipi0-csi2: stream off, src_sd: 000000002ff232b9, sd_name:rockchip-csi2-dphy0
[ 1189.032803] rockchip-mipi-csi2 fdd10000.mipi0-csi2: stream OFF
并且生成的文件大小为0
之后我通过v4l2-ctl -L发现:
[ 3120.790050] rockchip-csi2-dphy csi2-dcphy0: csi2_dphy_update_sensor_mbus fail to get dphy param, used default value
我不知道哪里出现了问题,请问我该如何排查,谢谢。