20240423给飞凌的OK3588-C开发板适配OV13855【绿屏】查找问题

20240423给飞凌的OK3588-C开发板适配OV13855【绿屏】查找问题
2024/4/23 19:43


修改2个部分:
1、DTS中CAM1由ISP0处理修改为ISP1处理。【感觉修改为ISP1之后就不出错了,难道ISP0有问题?】
2、ov13855.c修改为 荣品的RK3588开发板提供的SDK Android12中获取的。【经过比对,感觉驱动改变不大!但是不做验证了】

https://item.taobao.com/item.htm?_u=nju3ku6aea&id=673538773484&skuId=5090826703397&spm=a1z09.2.0.0.34982e8dDrTMCB
瑞芯微RK3588开发板RK3588核心板rockchip 八核8K荣品RD-RK3588

RD-RK3588 链接:https://pan.baidu.com/s/1WAlkzARDpxV-2fd8gSPDiA 提取码:2*45

置顶发给新成员常见问题可以在Redmine 上在右上角搜索对应芯片型号查看
http://39.98.161.150:3088/issues/173
对应平台的的指导文档 可以通过wiki 查看
http://39.98.161.150:3000/#/
相关网站 若打不开请复制网页链接到游览器 或更换 Google Chrome 打开
对应版型的资料在群文件或 群公...
展开
653人已读


【初始分析结论】
1、由于OV13855的硬件是4LANE的,初始怀疑是否因为只接受到2LANE的数据。【还有2LANE丢失了所以发绿】
在ov13855.c的每一个函数都加入打印,经过跟踪代码,发现ov13855.c默认写死为4lane,
并且给0x3016寄存器写入了0x72。

今后方便的时候,可以增加设备节点,在打开摄像头的时候,直接读取0x3016寄存器,确定是几LANE在工作!
或者在/sys/class中增加访问访问节点!

当然也可以通过示波器/逻辑分析仪测量MIPI信号【HS信号需要高端仪器,千元机逻辑分析仪即可测试LP信号】


2、更换为ISP1之后OV13855貌似就不闪退了。

3、绿色偏色的问题根据百度找到的CSDN的解释,说是驱动的问题。但是这个驱动在Orange pi5的Android12下可以正常点亮OV13855的,并以4K分辨率正常录像。当然接到飞凌OK3588-C和Orange pi5上的OV13855不是同一个!

https://blog.csdn.net/lj13329216157/article/details/132663037
RV1126 Linux IPC摄像机 索尼IMX415 摄像头调试

如果看到图像颜色不对、充满条纹等情况。像这样:

先别慌,至少有图像了不是。到这一步了至少说明通信时没问题了。应该检查摄像头参数或者驱动有没有设置对。由于驱动是系统自带的,出问题的可能性很小,我们先不管他。


详细的调试步骤:
1、看下在/etc/iqfiles目录下都有什么文件,另外,摄像头适配信息用需要下面的命令排查下,
root@ok3588:/etc/iqfiles# 
root@ok3588:/etc/iqfiles# ls -l
total 15208
-rw-r--r-- 1 root root  294239 Mar  9  2023 gc02m2_LMM248_M2116A-223.json
-rw-r--r-- 1 root root  294091 Mar  9  2023 gc02m2_SLD-S10-M258-V1_TR215-H211.json
-rw-r--r-- 1 root root  294069 Mar  9  2023 gc02m2_THDS11073_YH-021B.json
-rw-r--r-- 1 root root  294128 Mar  9  2023 gc02m2_default_M216A.json
-rw-r--r-- 1 root root  293649 Mar  9  2023 gc2053_default_JX8006.json
-rw-r--r-- 1 root root  294204 Mar  9  2023 gc2093_SIDB205300385-VA_default.json
-rw-r--r-- 1 root root  294129 Mar  9  2023 gc2093_default_JX8006.json
-rw-r--r-- 1 root root  256457 Mar  9  2023 gc2385_HS5885-BNSM1018-V01_default.json
-rw-r--r-- 1 root root  292956 Mar  9  2023 gc4663_KS-ND-M1-V2_6040-A41-650IR.json
-rw-r--r-- 1 root root  293920 Mar  9  2023 gc5025_KYT-8647-V1_OPT532.json
-rw-r--r-- 1 root root  404181 Mar  9  2023 gc5035_XHG-RKX11F-V5_HR232H65.json
-rw-r--r-- 1 root root  294256 Mar  9  2023 gc5035_default_M512.json
-rw-r--r-- 1 root root  293492 Mar  9  2023 gc5035_default_PC5322-M5.json
-rw-r--r-- 1 root root  293941 Mar  9  2023 gc8034_RK-CMK-8M-2-v1_CK8401.json
-rw-r--r-- 1 root root  293996 Mar  9  2023 hi556_KYT-8607-V1.0_default.json
-rw-r--r-- 1 root root  293981 Mar  9  2023 hi846_KYT-8648-V1_YG589.json
-rw-r--r-- 1 root root  445263 Mar  9  2023 imx327_CMK-OT1607-FV1_M12-40IRC-4MP-F16.json
-rw-r--r-- 1 root root  689785 Mar  9  2023 imx415_CMK-OT2022-PX1_IR0147-50IRC-8M-F20.json
-rw-r--r-- 1 root root  804694 Mar  9  2023 imx464_CMK-OT1980-PX1_SHG102.json
-rw-r--r-- 1 root root  404659 Mar  9  2023 os04a10_CMK-OT1607-FV1_M12-40IRC-4MP-F16.json
-rw-r--r-- 1 root root  404194 Mar  9  2023 os04a10_CMK-OT1607-FV1_M12-60IRC-4MP-F16.json
-rw-r--r-- 1 root root 1544148 Mar  9  2023 os04a10_DH3588AVS6_default.json
-rw-r--r-- 1 root root  682975 Mar  9  2023 os04a10hk_CMK-OT1607-FV1_M12-40IRC-4MP-F16.json
-rw-r--r-- 1 root root  294181 Mar  9  2023 os08a10_RS-8MTP659-V1_default.json
-rw-r--r-- 1 root root  301041 Mar  9  2023 ov13850_ZC-OV13850R2A-V1_Largan-50064B31.json
-rw-r--r-- 1 root root  236952 Sep 15  2023 ov13850_forlinx_default.json
-rw-r--r-- 1 root root  338139 Mar  9  2023 ov13855_CMK-OT2016-FV1_default.json
-rw-r--r-- 1 root root  442537 Mar  9  2023 ov50c40_HZGA06_ZE0082C1.json
-rw-r--r-- 1 root root  404985 Mar  9  2023 ov5648_LMM248_YXC-M804A2.json
-rw-r--r-- 1 root root  404743 Mar  9  2023 ov5648_THDS11073_Largan-40122a1.json
-rw-r--r-- 1 root root  404649 Mar  9  2023 ov5670_LM50A60-V2_YXC-M804A2.json
-rw-r--r-- 1 root root  255381 Mar  9  2023 ov5695_TongJu_CHT842-MD.json
-rw-r--r-- 1 root root  404611 Mar  9  2023 ov8858_HS5885-BNSM1018-V01_default.json
-rw-r--r-- 1 root root  294070 Mar  9  2023 ov8858_HS8858-EB1008-V02_JX0843.json
-rw-r--r-- 1 root root  294049 Mar  9  2023 ov8858_SLD-S10-M258-V1_DL820B-D.json
-rw-r--r-- 1 root root  404292 Mar  9  2023 ov8858_XHG-RKX11B-V10_default.json
-rw-r--r-- 1 root root  404577 Mar  9  2023 s5k5e9_SHVK11-V3_HX-M0568E.json
-rw-r--r-- 1 root root  301122 Mar  9  2023 sc200ai_default_TP-8009A-IR.json
-rw-r--r-- 1 root root  293872 Mar  9  2023 sc200ai_default_TP-8009A-RGB.json
-rw-r--r-- 1 root root  294103 Mar  9  2023 sp250a_LM50A60-V2_M2116A-223.json
root@ok3588:/etc/iqfiles# 


2、v4l2-ctl --list-devices
root@ok3588:/etc/iqfiles# 
root@ok3588:/etc/iqfiles# v4l2-ctl --list-devices
rk_hdmirx (fdee0000.hdmirx-controller):
    /dev/video17

rkisp-statistics (platform: rkisp):
    /dev/video15
    /dev/video16

rkcif-mipi-lvds (platform:rkcif):
    /dev/media0

rkcif (platform:rkcif-mipi-lvds):
    /dev/video0
    /dev/video1
    /dev/video2
    /dev/video3

    /dev/video4
    /dev/video5
    /dev/video6
    /dev/video7

rkisp_mainpath (platform:rkisp1-vir0):
    /dev/video8
    /dev/video9
    /dev/video10
    /dev/video11
    /dev/video12
    /dev/video13
    /dev/video14
    /dev/media1

root@ok3588:/etc/iqfiles# 

3、media-ctl -p -d /dev/media* 具体设备号需要看您适配的哪个
root@ok3588:/etc/iqfiles# media-ctl -p -d /dev/media*
Media controller API version 5.10.66

Media device information
------------------------
driver          rkcif
model           rkcif-mipi-lvds
serial          
bus info        
hw revision     0x0
driver version  5.10.66

Device topology
- entity 1: stream_cif_mipi_id0 (1 pad, 8 links)
            type Node subtype V4L flags 0
            device node name /dev/video0
    pad0: Sink
        <- "rockchip-mipi-csi2":1 [ENABLED]
        <- "rockchip-mipi-csi2":2 []
        <- "rockchip-mipi-csi2":3 []
        <- "rockchip-mipi-csi2":4 []
        <- "rockchip-mipi-csi2":5 []
        <- "rockchip-mipi-csi2":6 []
        <- "rockchip-mipi-csi2":7 []
        <- "rockchip-mipi-csi2":8 []

- entity 5: stream_cif_mipi_id1 (1 pad, 8 links)
            type Node subtype V4L flags 0
            device node name /dev/video1
    pad0: Sink
        <- "rockchip-mipi-csi2":1 []
        <- "rockchip-mipi-csi2":2 [ENABLED]
        <- "rockchip-mipi-csi2":3 []
        <- "rockchip-mipi-csi2":4 []
        <- "rockchip-mipi-csi2":5 []
        <- "rockchip-mipi-csi2":6 []
        <- "rockchip-mipi-csi2":7 []
        <- "rockchip-mipi-csi2":8 []

- entity 9: stream_cif_mipi_id2 (1 pad, 8 links)
            type Node subtype V4L flags 0
            device node name /dev/video2
    pad0: Sink
        <- "rockchip-mipi-csi2":1 []
        <- "rockchip-mipi-csi2":2 []
        <- "rockchip-mipi-csi2":3 [ENABLED]
        <- "rockchip-mipi-csi2":4 []
        <- "rockchip-mipi-csi2":5 []
        <- "rockchip-mipi-csi2":6 []
        <- "rockchip-mipi-csi2":7 []
        <- "rockchip-mipi-csi2":8 []

- entity 13: stream_cif_mipi_id3 (1 pad, 8 links)
             type Node subtype V4L flags 0
             device node name /dev/video3
    pad0: Sink
        <- "rockchip-mipi-csi2":1 []
        <- "rockchip-mipi-csi2":2 []
        <- "rockchip-mipi-csi2":3 []
        <- "rockchip-mipi-csi2":4 [ENABLED]
        <- "rockchip-mipi-csi2":5 []
        <- "rockchip-mipi-csi2":6 []
        <- "rockchip-mipi-csi2":7 []
        <- "rockchip-mipi-csi2":8 []

- entity 17: rkcif_scale_ch0 (1 pad, 8 links)
             type Node subtype V4L flags 0
             device node name /dev/video4
    pad0: Sink
        <- "rockchip-mipi-csi2":1 []
        <- "rockchip-mipi-csi2":2 []
        <- "rockchip-mipi-csi2":3 []
        <- "rockchip-mipi-csi2":4 []
        <- "rockchip-mipi-csi2":5 [ENABLED]
        <- "rockchip-mipi-csi2":6 []
        <- "rockchip-mipi-csi2":7 []
        <- "rockchip-mipi-csi2":8 []

- entity 21: rkcif_scale_ch1 (1 pad, 8 links)
             type Node subtype V4L flags 0
             device node name /dev/video5
    pad0: Sink
        <- "rockchip-mipi-csi2":1 []
        <- "rockchip-mipi-csi2":2 []
        <- "rockchip-mipi-csi2":3 []
        <- "rockchip-mipi-csi2":4 []
        <- "rockchip-mipi-csi2":5 []
        <- "rockchip-mipi-csi2":6 [ENABLED]
        <- "rockchip-mipi-csi2":7 []
        <- "rockchip-mipi-csi2":8 []

- entity 25: rkcif_scale_ch2 (1 pad, 8 links)
             type Node subtype V4L flags 0
             device node name /dev/video6
    pad0: Sink
        <- "rockchip-mipi-csi2":1 []
        <- "rockchip-mipi-csi2":2 []
        <- "rockchip-mipi-csi2":3 []
        <- "rockchip-mipi-csi2":4 []
        <- "rockchip-mipi-csi2":5 []
        <- "rockchip-mipi-csi2":6 []
        <- "rockchip-mipi-csi2":7 [ENABLED]
        <- "rockchip-mipi-csi2":8 []

- entity 29: rkcif_scale_ch3 (1 pad, 8 links)
             type Node subtype V4L flags 0
             device node name /dev/video7
    pad0: Sink
        <- "rockchip-mipi-csi2":1 []
        <- "rockchip-mipi-csi2":2 []
        <- "rockchip-mipi-csi2":3 []
        <- "rockchip-mipi-csi2":4 []
        <- "rockchip-mipi-csi2":5 []
        <- "rockchip-mipi-csi2":6 []
        <- "rockchip-mipi-csi2":7 []
        <- "rockchip-mipi-csi2":8 [ENABLED]

- entity 33: rockchip-mipi-csi2 (9 pads, 65 links)
             type V4L2 subdev subtype Unknown flags 0
             device node name /dev/v4l-subdev0
    pad0: Sink
        [fmt:SBGGR10_1X10/4224x3136 field:none
         crop.bounds:(0,0)/4224x3136
         crop:(0,0)/4224x3136]
        <- "rockchip-csi2-dphy0":1 [ENABLED]
    pad1: Source
        -> "stream_cif_mipi_id0":0 [ENABLED]
        -> "stream_cif_mipi_id1":0 []
        -> "stream_cif_mipi_id2":0 []
        -> "stream_cif_mipi_id3":0 []
        -> "rkcif_scale_ch0":0 []
        -> "rkcif_scale_ch1":0 []
        -> "rkcif_scale_ch2":0 []
        -> "rkcif_scale_ch3":0 []
    pad2: Source
        -> "stream_cif_mipi_id0":0 []
        -> "stream_cif_mipi_id1":0 [ENABLED]
        -> "stream_cif_mipi_id2":0 []
        -> "stream_cif_mipi_id3":0 []
        -> "rkcif_scale_ch0":0 []
        -> "rkcif_scale_ch1":0 []
        -> "rkcif_scale_ch2":0 []
        -> "rkcif_scale_ch3":0 []
    pad3: Source
        -> "stream_cif_mipi_id0":0 []
        -> "stream_cif_mipi_id1":0 []
        -> "stream_cif_mipi_id2":0 [ENABLED]
        -> "stream_cif_mipi_id3":0 []
        -> "rkcif_scale_ch0":0 []
        -> "rkcif_scale_ch1":0 []
        -> "rkcif_scale_ch2":0 []
        -> "rkcif_scale_ch3":0 []
    pad4: Source
        -> "stream_cif_mipi_id0":0 []
        -> "stream_cif_mipi_id1":0 []
        -> "stream_cif_mipi_id2":0 []
        -> "stream_cif_mipi_id3":0 [ENABLED]
        -> "rkcif_scale_ch0":0 []
        -> "rkcif_scale_ch1":0 []
        -> "rkcif_scale_ch2":0 []
        -> "rkcif_scale_ch3":0 []
    pad5: Source
        -> "stream_cif_mipi_id0":0 []
        -> "stream_cif_mipi_id1":0 []
        -> "stream_cif_mipi_id2":0 []
        -> "stream_cif_mipi_id3":0 []
        -> "rkcif_scale_ch0":0 [ENABLED]
        -> "rkcif_scale_ch1":0 []
        -> "rkcif_scale_ch2":0 []
        -> "rkcif_scale_ch3":0 []
    pad6: Source
        -> "stream_cif_mipi_id0":0 []
        -> "stream_cif_mipi_id1":0 []
        -> "stream_cif_mipi_id2":0 []
        -> "stream_cif_mipi_id3":0 []
        -> "rkcif_scale_ch0":0 []
        -> "rkcif_scale_ch1":0 [ENABLED]
        -> "rkcif_scale_ch2":0 []
        -> "rkcif_scale_ch3":0 []
    pad7: Source
        -> "stream_cif_mipi_id0":0 []
        -> "stream_cif_mipi_id1":0 []
        -> "stream_cif_mipi_id2":0 []
        -> "stream_cif_mipi_id3":0 []
        -> "rkcif_scale_ch0":0 []
        -> "rkcif_scale_ch1":0 []
        -> "rkcif_scale_ch2":0 [ENABLED]
        -> "rkcif_scale_ch3":0 []
    pad8: Source
        -> "stream_cif_mipi_id0":0 []
        -> "stream_cif_mipi_id1":0 []
        -> "stream_cif_mipi_id2":0 []
        -> "stream_cif_mipi_id3":0 []
        -> "rkcif_scale_ch0":0 []
        -> "rkcif_scale_ch1":0 []
        -> "rkcif_scale_ch2":0 []
        -> "rkcif_scale_ch3":0 [ENABLED]

- entity 43: rockchip-csi2-dphy0 (2 pads, 2 links)
             type V4L2 subdev subtype Unknown flags 0
             device node name /dev/v4l-subdev1
    pad0: Sink
        [fmt:SBGGR10_1X10/4224x3136@10000/300000 field:none
         crop.bounds:(0,0)/4224x3136]
        <- "m00_b_ov13855 3-0036":0 [ENABLED]
    pad1: Source
        -> "rockchip-mipi-csi2":0 [ENABLED]

- entity 48: m00_b_ov13855 3-0036 (1 pad, 1 link)
             type V4L2 subdev subtype Sensor flags 0
             device node name /dev/v4l-subdev2
    pad0: Source
        [fmt:SBGGR10_1X10/4224x3136@10000/300000 field:none
         crop.bounds:(0,0)/4224x3136]
        -> "rockchip-csi2-dphy0":0 [ENABLED]

- entity 52: m00_b_vm149c 3-000c (0 pad, 0 link)
             type V4L2 subdev subtype Lens flags 0
             device node name /dev/v4l-subdev3

root@ok3588:/etc/iqfiles# 
root@ok3588:/etc/iqfiles# 
【摄像头介入CAM0】
4、另外您是预览的哪个video节点呢?
/dev/video0
/dev/video1
/dev/video2
/dev/video3

gst-launch-1.0 v4l2src device=/dev/video0 ! video/x-raw, format=NV12, width=3840,height=2160, framerate=30/1 ! waylandsink

/dev/video4
/dev/video5
/dev/video6
/dev/video7

【打开出错了】


5、打开摄像头之后的隐患排查:
[  914.097118] rockchip-csi2-dphy csi2-dcphy0: csi2_dphy_update_sensor_mbus fail to get dphy param, used default value
[  914.097124] rockchip-csi2-dphy csi2-dcphy0: csi2_dphy_update_sensor_mbus fail to get dphy param, used default value

开关 飞凌开发板 附带的 OV13850。就会出现 警告信息。看字面 意思是在 驱动中更新 DPHY/MIPI的 信息失败了?请问 是啥原因呢?

ov13850在驱动中没有注册get_param函数,实际这个函数并不影响使用


Y:\OK3588_Linux_fs\kernel\drivers\phy\rockchip\phy-rockchip-csi2-dphy.c
    if (dphy->drv_data->vendor == PHY_VENDOR_SAMSUNG) {
        ret = v4l2_subdev_call(sensor_sd, core, ioctl,
                       RKMODULE_GET_CSI_DPHY_PARAM,
                       dphy->dphy_param);
        if (ret) {
            dev_info(dphy->dev, "%s fail to get dphy param, used default value\n",
                __func__);
            ret = 0;
        }
    }


6、在Ubuntu下用ll命令习惯了,不想老是打ls -l,请问OK3588-C下如何增加 ll 命令呢?

Y:\OK3588_Linux_fs\kernel\arch\arm64\boot\dts\rockchip\OK3588-C-Camera.dtsi

// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
 * Copyright (c) 2022 Forlinx Co., Ltd.
 *

 * rkisp0 --> rkisp0_vir0/rkisp0_vir1/rkisp0_vir2/rkisp0_vir3
 * rkisp1 --> rkisp1_vir0/rkisp1_vir1/rkisp1_vir2/rkisp1_vir3

 * rkcif_mipi_lvds --> rkcif_mipi_lvds[0-4]_sditf

 * mipicamera0 --> csi2_dcphy0 --> mipi0_csi2 -->rkcif_mipi_lvds  --> rkcif_mipi_lvds_sditf  --> rkisp0_vir0
 * mipicamera1 --> csi2_dcphy1 --> mipi1_csi2 -->rkcif_mipi_lvds1 --> rkcif_mipi_lvds1_sditf --> rkisp0_vir1
    
 * csi2_dphy0 or (csi2_dphy1、csi2_dphy2)    dphy0
 * csi2_dphy3 or (csi2_dphy4、csi2_dphy5)    dphy1

 * mipicamera2 --> csi2_dphy1 -->  mipi2_csi2 -->rkcif_mipi_lvds2 -->rkcif_mipi_lvds2_sditf  --> rkisp0_vir2
 * mipicamera3 --> csi2_dphy2 -->  mipi3_csi2 -->rkcif_mipi_lvds3 -->rkcif_mipi_lvds3_sditf  --> rkisp1_vir0
 * mipicamera4 --> csi2_dphy4 -->  mipi4_csi2 -->rkcif_mipi_lvds4 -->rkcif_mipi_lvds4_sditf  --> rkisp1_vir1
 * mipicamera5 --> csi2_dphy5 -->  mipi5_csi2 -->rkcif_mipi_lvds5 -->rkcif_mipi_lvds5_sditf  --> rkisp1_vir2

 * mipicamera6 --> rkcif_dvp ---> rkcif_dvp_sditf
 */

/ {
    ext_cam_clk: external-camera-clock {
        compatible = "fixed-clock";
        clock-frequency = <24000000>;
        clock-output-names = "CLK_CAMERA_24MHZ";
        #clock-cells = <0>;
    };
};

&rkcif {
    status = "okay";
};

&rkcif_mmu {
    status = "okay";
};


//************************************************
//***  CAM1 OV13855 Configuration description  ***
//************************************************

&mipi_dcphy0 {
    status = "okay";
};

&rkisp1 {
        status = "okay";
};

&isp1_mmu {
        status = "okay";
};

&i2c3 {
    status = "okay";
    clock-frequency = <400000>;

    vm149c_0: vm149c@0c {
        compatible = "silicon touch,vm149c";
        status = "okay";
        reg = <0x0c>;
        rockchip,camera-module-index = <0>;
        rockchip,camera-module-facing = "back";
    };

    cam1_ov13855: cam1_ov13855@36 {
        compatible = "ovti,ov13855";
        status = "okay";
        reg = <0x36>;

        clocks = <&ext_cam_clk>;
        clock-names = "xvclk";

        pwdn-gpios = <&extio EXTIO_GPIO_P01 GPIO_ACTIVE_HIGH>;
        reset-gpios = <&extio EXTIO_GPIO_P00 GPIO_ACTIVE_HIGH>;
        rockchip,camera-module-index = <0>;
        rockchip,camera-module-facing = "back";
        rockchip,camera-module-name = "forlinx";
        rockchip,camera-module-lens-name = "default"; 
    lens-focus = <&vm149c_0>;

        port {
            cam1_ov13855_out: endpoint {
                remote-endpoint = <&mipi_in_0_ucam1>;
                data-lanes = <1 2 3 4>;
            };
        };
    };
};

&csi2_dcphy0 {
    status = "okay";
    ports {
        #address-cells = <1>;
        #size-cells = <0>;
        port@0 {
            reg = <0>;
            #address-cells = <1>;
            #size-cells = <0>;
            mipi_in_0_ucam1: endpoint@1 {
                reg = <1>;
                remote-endpoint = <&cam1_ov13855_out>;
                data-lanes = <1 2 3 4>;
            };
        };
        port@1 {
            reg = <1>;
            #address-cells = <1>;
            #size-cells = <0>;
            csidcphy0_out: endpoint@0 {
                reg = <0>;
                remote-endpoint = <&mipi0_csi2_input>;
            };
        };
    };
};

&mipi0_csi2 {
    status = "okay";
    ports {
        #address-cells = <1>;
        #size-cells = <0>;
        port@0 {
            reg = <0>;
            #address-cells = <1>;
            #size-cells = <0>;
            mipi0_csi2_input: endpoint@0 {
                reg = <0>;
                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_lvds0>;
            };
        };
    };
};

&rkcif_mipi_lvds {
    status = "okay";
    port {
        cif_mipi_lvds0: endpoint {
            remote-endpoint = <&mipi0_csi2_output>;
        };
    };
};

&rkcif_mipi_lvds_sditf {
    status = "okay";
    port {
        mipi_lvds_sditf: endpoint {
            remote-endpoint = <&isp1_in2>;
        };
    };
};

&rkisp1_vir0 {
    status = "okay";

    port {
        #address-cells = <1>;
        #size-cells = <0>;
        isp1_in2: endpoint@0 {

            reg = <0>;
            remote-endpoint = <&mipi_lvds_sditf>;
        };
    };

};

************************************************
***  CAM2 OV13850 Configuration description  ***
************************************************
//
//&mipi_dcphy1 {
//        status = "okay";
//};
//
//&i2c4 {
//    status = "okay";
//    clock-frequency = <400000>;
//
//    vm149c_1: vm149c@0c {
//        compatible = "silicon touch,vm149c";
//        status = "okay";
//        reg = <0x0c>;
//        rockchip,camera-module-index = <1>;
//        rockchip,camera-module-facing = "back";
//        };
//
//    cam2_ov13850: cam2_ov13850@10 {
//        compatible = "ovti,ov13850";
//        status = "okay";
//        reg = <0x10>;
//
//        clocks = <&ext_cam_clk>;
//        clock-names = "xvclk";
//
//        pwdn-gpios = <&extio EXTIO_GPIO_P03 GPIO_ACTIVE_HIGH>;
//        reset-gpios = <&extio EXTIO_GPIO_P02 GPIO_ACTIVE_HIGH>;
//        rockchip,camera-module-index = <1>;
//        rockchip,camera-module-facing = "front";
//        rockchip,camera-module-name = "forlinx";
//        rockchip,camera-module-lens-name = "default"; 
//        lens-focus = <&vm149c_1>;
//
//        port {
//            cam2_ov13850_out: endpoint {
//                remote-endpoint = <&mipi_in_1_ucam2>;
//                data-lanes = <1 2>;
//            };
//        };
//    };
//};
//
//&csi2_dcphy1 {
//    status = "okay";
//    ports {
//        #address-cells = <1>;
//        #size-cells = <0>;
//        port@0 {
//            reg = <0>;
//            #address-cells = <1>;
//            #size-cells = <0>;
//            mipi_in_1_ucam2: endpoint@1 {
//                reg = <1>;
//                remote-endpoint = <&cam2_ov13850_out>;
//                data-lanes = <1 2>;
//            };
//        };
//        port@1 {
//            reg = <1>;
//            #address-cells = <1>;
//            #size-cells = <0>;
//            csidcphy1_out: endpoint@0 {
//                reg = <0>;
//                remote-endpoint = <&mipi1_csi2_input>;
//            };
//        };
//    };
//};
//
//&mipi1_csi2 {
//    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_lvds1>;
//            };
//        };
//    };
//};
//
//&rkcif_mipi_lvds1 {
//    status = "okay";
//    port {
//        cif_mipi_lvds1: endpoint {
//            remote-endpoint = <&mipi1_csi2_output>;
//        };
//    };
//};
//
//&rkcif_mipi_lvds1_sditf {
//    status = "okay";
//    port {
//        mipi_lvds1_sditf: endpoint {
//            remote-endpoint = <&isp0_vir1>;
//        };
//    };
//};
//
//&rkisp0_vir1 {
//    status = "okay";
//    port {
//        #address-cells = <1>;
//        #size-cells = <0>;
//        isp0_vir1: endpoint@0 {
//            reg = <0>;
//            remote-endpoint = <&mipi_lvds1_sditf>;
//        };
//    };
//};
//
************************************************
***  CAM3 OV5645 Configuration Description  ****
************************************************
//
//&csi2_dphy0_hw {
//    status = "okay";
//};
//
//&i2c7 {
//    status = "okay";
//    clock-frequency = <400000>;
//
//    cam3_ov5645: cam3_ov5645@3c {
//        compatible = "ovti,ov5645";
//        status = "okay";
//        reg = <0x3c>;
//
//        clocks = <&ext_cam_clk>;
//        clock-names = "xclk";
//        clock-frequency = <24000000>;
//
//        enable-gpios = <&extio EXTIO_GPIO_P05 GPIO_ACTIVE_HIGH>;
//        reset-gpios = <&extio EXTIO_GPIO_P04 GPIO_ACTIVE_LOW>;
//        rockchip,camera-module-index = <0>;
//        rockchip,camera-module-facing = "back";
//        rockchip,camera-module-name = "NC";
//        rockchip,camera-module-lens-name = "NC";
//
//        port {
//            cam3_ov5645_out: endpoint {
//                remote-endpoint = <&mipi_in_ucam3>;
//                data-lanes = <1 2>;
//            };
//        };
//    };
//};
//
//&csi2_dphy0 {
//    status = "okay";
//    ports {
//        #address-cells = <1>;
//        #size-cells = <0>;
//        port@0 {
//            reg = <0>;
//            #address-cells = <1>;
//            #size-cells = <0>;
//            mipi_in_ucam3: endpoint@1 {
//                reg = <1>;
//                remote-endpoint = <&cam3_ov5645_out>;
//                data-lanes = <1 2>;
//            };
//        };
//        port@1 {
//            reg = <1>;
//            #address-cells = <1>;
//            #size-cells = <0>;
//            mipi2_csi2_mipicsi0_out0: endpoint@0 {
//                reg = <0>;
//                remote-endpoint = <&mipi2_csi2_input>;
//            };
//        };
//    };
//};
//
//&mipi2_csi2 {
//        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 = <&mipi2_csi2_mipicsi0_out0>;
//            };
//        };
//        port@1 {
//            reg = <1>;
//            #address-cells = <1>;
//            #size-cells = <0>;
//            mipi2_csi2_output: endpoint@0 {
//                reg = <0>;
//                remote-endpoint = <&cif_mipi_lvds2>;
//            };
//        };
//    };
//};
//
//&rkcif_mipi_lvds2 {
//    status = "okay";
//    port {
//        cif_mipi_lvds2: endpoint {
//            remote-endpoint = <&mipi2_csi2_output>;
//        };
//    };
//};
//
//&rkcif_mipi_lvds2_sditf {
//    status = "disabled";
//};
//
************************************************
***  CAM4 OV5645 Configuration Description  ****
************************************************
//
//&csi2_dphy1_hw {
//    status = "okay";
//};
//
//&i2c3 {
//    status = "okay";
//    
//    cam4_ov5645: cam4_ov5645@3c {
//        status = "okay";
//        compatible = "ovti,ov5645";
//        reg = <0x3c>;
//        clocks = <&ext_cam_clk>;
//        clock-names = "xclk";
//        clock-frequency = <24000000>;
//
//        reset-gpios = <&extio EXTIO_GPIO_P06 GPIO_ACTIVE_LOW>;
//        enable-gpios = <&extio EXTIO_GPIO_P07 GPIO_ACTIVE_HIGH>;
//
//        rockchip,camera-module-index = <1>;
//        rockchip,camera-module-facing = "front";
//        rockchip,camera-module-name = "NC";
//        rockchip,camera-module-lens-name = "NC";
//        port {
//            cam4_ov5645_out: endpoint {
//                remote-endpoint = <&mipi_in_ucam4>;
//                data-lanes = <1 2>;
//            };
//        };
//    };
//};
//
//&csi2_dphy4 {
//    status = "okay";
//    ports {
//        #address-cells = <1>;
//        #size-cells = <0>;
//        port@0 {
//            reg = <0>;
//            #address-cells = <1>;
//            #size-cells = <0>;
//            mipi_in_ucam4: endpoint@1 {
//                reg = <1>;
//                remote-endpoint = <&cam4_ov5645_out>;
//                data-lanes = <1 2>;
//            };
//        };
//        port@1 {
//            reg = <1>;
//            #address-cells = <1>;
//            #size-cells = <0>;
//            mipi4_csi2_csidphy1_out0: endpoint@0 {
//                reg = <0>;
//                remote-endpoint = <&mipi4_csi2_input>;
//            };
//        };
//    };
//};
//
//&mipi4_csi2 {
//    status = "okay";
//    ports {
//        #address-cells = <1>;
//        #size-cells = <0>;
//        port@0 {
//            reg = <0>;
//            #address-cells = <1>;
//            #size-cells = <0>;
//            mipi4_csi2_input: endpoint@1 {
//                reg = <1>;
//                remote-endpoint = <&mipi4_csi2_csidphy1_out0>;
//            };
//        };
//        port@1 {
//            reg = <1>;
//            #address-cells = <1>;
//            #size-cells = <0>;
//            mipi4_csi2_output: endpoint@0 {
//                reg = <0>;
//                remote-endpoint = <&cif_mipi_in4>;
//            };
//        };
//    };
//};
//
//&rkcif_mipi_lvds4 {
//    status = "okay";
//    port {
//        cif_mipi_in4: endpoint {
//            remote-endpoint = <&mipi4_csi2_output>;
//        };
//    };
//};
//
//&rkcif_mipi_lvds4_sditf {
//    status = "disabled";
//};
//
************************************************
***  CAM5 OV5645 Configuration Description  ****
************************************************
//
//&i2c4 {
//    status = "okay";
//    
//    cam5_ov5645: cam5_ov5645@3c {
//        status = "okay";
//        compatible = "ovti,ov5645";
//        reg = <0x3c>;
//        clocks = <&ext_cam_clk>;
//        clock-names = "xclk";
//        clock-frequency = <24000000>;
//
//        reset-gpios = <&extio EXTIO_GPIO_P10 GPIO_ACTIVE_LOW>;
//        enable-gpios = <&extio EXTIO_GPIO_P11 GPIO_ACTIVE_HIGH>;
//
//        rockchip,camera-module-index = <2>;
//        rockchip,camera-module-facing = "front";
//        rockchip,camera-module-name = "NC";
//        rockchip,camera-module-lens-name = "NC";
//        port {
//            cam5_ov5645_out: endpoint {
//                remote-endpoint = <&mipi_in_ucam5>;
//                data-lanes = <1 2>;
//            };
//        };
//    };
//};
//
//&csi2_dphy5 {
//    status = "okay";
//    ports {
//        #address-cells = <1>;
//        #size-cells = <0>;
//        port@0 {
//            reg = <0>;
//            #address-cells = <1>;
//            #size-cells = <0>;
//            mipi_in_ucam5: endpoint@1 {
//                reg = <1>;
//                remote-endpoint = <&cam5_ov5645_out>;
//                data-lanes = <1 2>;
//            };
//        };
//        port@1 {
//            reg = <1>;
//            #address-cells = <1>;
//            #size-cells = <0>;
//            mipi5_csi2_csidphy1_out1: endpoint@0 {
//                reg = <0>;
//                remote-endpoint = <&mipi5_csi2_input>;
//            };
//        };
//    };
//};
//
//&mipi5_csi2 {
//    status = "okay";
//    ports {
//        #address-cells = <1>;
//        #size-cells = <0>;
//        port@0 {
//            reg = <0>;
//            #address-cells = <1>;
//            #size-cells = <0>;
//            mipi5_csi2_input: endpoint@1 {
//                reg = <1>;
//                remote-endpoint = <&mipi5_csi2_csidphy1_out1>;
//            };
//        };
//        port@1 {
//            reg = <1>;
//            #address-cells = <1>;
//            #size-cells = <0>;
//            mipi5_csi2_output: endpoint@0 {
//                reg = <0>;
//                remote-endpoint = <&cif_mipi_in5>;
//            };
//        };
//    };
//};
//
//&rkcif_mipi_lvds5 {
//    status = "okay";
//    port {
//        cif_mipi_in5: endpoint {
//            remote-endpoint = <&mipi5_csi2_output>;
//        };
//    };
//};
//
//&rkcif_mipi_lvds5_sditf {
//    status = "disabled";
//};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/567782.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

1212332

c语言中的小小白-CSDN博客c语言中的小小白关注算法,c,c语言,贪心算法,链表,mysql,动态规划,后端,线性回归,数据结构,排序算法领域.https://blog.csdn.net/bhbcdxb123?spm1001.2014.3001.5343 给大家分享一句我很喜欢我话&#xff1a; 知不足而奋进&#xff0c;望远山而前行&am…

C#开发的全套成熟的LIS系统源码JavaScript+SQLserver 2012区域云LIS系统源码

C#开发的全套成熟的LIS系统源码JavaScriptSQLserver 2012区域云LIS系统源码 医院云LIS系统是一套成熟的实验室信息管理系统&#xff0c;目前已在多家三级级医院应用&#xff0c;并不断更新。云LIS系统是为病人为中心、以业务处理为基础、以提高检验科室管理水平和工作效率为目标…

抽象工厂模式设计实验

【实验内容】 楚锋软件公司欲开发一套界面皮肤库&#xff0c;可以对 Java 桌面软件进行界面美化。为了保护版权&#xff0c;该皮肤库源代码不打算公开&#xff0c;而只向用户提供已打包为 jar 文件的 class 字节码文件。用户在使用时可以通过菜单来选择皮肤&#xff0c;不同的…

骨传导耳机哪个牌子好?5款年度精品骨传导耳机推荐

在骨传导耳机最开始出现的时候&#xff0c;相信很多人都只关心骨传导耳机的外观颜值和特殊的传声方式&#xff0c;但当你真正用过一段时间后&#xff0c;对骨传导耳机有了更加深入的了解后就会关注到骨传导耳机的使用体验、音质表现、蓝牙性能等具体功能&#xff0c;而随着骨传…

【Flutter】多语言方案二:GetX 版

介绍 多语言方案&#xff1a;GetX版&#xff0c;需要手动自定义字符串引用常量&#xff0c;优点不需要自己管理状态。 目录 介绍运行效果一、安装 GetX二、使用1.语言配置 在lib/core下创建一个language文件夹&#xff0c;文件夹下创建一个local.dart文件2.language文件夹下创…

防反接、防过压、缓启动电路相关

一、防反接电路 电源正确接入时 电流从 VIN 端流向负载&#xff0c;经由 Q3(NMOS) 通向地&#xff08;GND&#xff09;。在上电瞬间&#xff0c;由于 MOS 管的体二极管效应&#xff0c;地回路通过体二极管接通。接下来&#xff0c;由于 Vgs(门源电压)大于 Vgsth(门限电压)&…

负载均衡器

服务端负载均衡器 在消费者和服务提供方中间使用独立的代理方式进行负载&#xff0c;有硬件的&#xff08;比如F5&#xff09;&#xff0c;也有软件的&#xff08;比如Nginx&#xff0c;openResty&#xff09; 如Nginx &#xff0c;通过Nginx进行负载均衡&#xff0c;先发送请求…

AAAI-24 | EarnHFT:针对高频交易的分层强化学习(RL)框架 附代码实现

AAAI-24 | EarnHFT:针对高频交易的分层强化学习&#xff08;RL&#xff09;框架 摘要(Abstract):高频交易&#xff08;HFT&#xff09;使用计算机算法在短时间内&#xff08;例如秒级&#xff09;做出交易决策&#xff0c;在加密货币市场&#xff08;例如比特币&#xff09;中…

ctfshow web入门 SQl注入 web185--web190

web185 这道题还有另外一个脚本就是用concat的拼接达到有数字的目的 concat(truetrue) 2 concat(true) 1 concat(true, true) 11 然后上脚本&#xff08;Y4tacker这个师傅的&#xff09; # Author:Y4tacker import requestsurl "http://341e93e1-a1e7-446a-b7fc-75beb…

Pytest精通指南(27)钩子函数-多重校验(pytest-assume)

文章目录 前言应用场景插件安装注意事项参数分析assert断言示例assume断言示例 前言 pytest-assume是pytest的一个扩展插件&#xff0c;它提供了一种新的断言方式&#xff0c;即**“assume”**。 与常规的assert语句不同&#xff0c;当使用assume进行断言时&#xff0c;即使某个…

【Android12】Bugreport实现原理

Bugreport实现原理 Bugreport Bugreport介绍 Android Bugreport是一个用于记录和收集 Android设备上系统信息、日志和调试信息的工具。 系统发生某些问题时&#xff0c;可以通过bugreport把系统当前时刻点&#xff08;运行BugRepot的时刻&#xff09;的系统相关的状态和信息…

深度解析:云计算的三宝——IaaS、PaaS和SaaS

4月22日&#xff0c;腾讯宣布旗下协作SaaS产品全面接入腾讯混元大模型&#xff0c;除去企业微信、腾讯会议、腾讯文档等“一门三杰”产品&#xff0c;腾讯乐享、腾讯电子签、腾讯问卷、腾讯云AI代码助手等协作SaaS产品也都已实现智能化升级。大模型应用落地再加速。 那么什么是…

fawawf

c语言中的小小白-CSDN博客c语言中的小小白关注算法,c,c语言,贪心算法,链表,mysql,动态规划,后端,线性回归,数据结构,排序算法领域.https://blog.csdn.net/bhbcdxb123?spm1001.2014.3001.5343 给大家分享一句我很喜欢我话&#xff1a; 知不足而奋进&#xff0c;望远山而前行&am…

区块链钱包开发——专业区块链开发

随着区块链技术的发展&#xff0c;钱包开发成为了一项至关重要的任务。本文将探讨区块链钱包开发的重要性&#xff0c;分析当前面临的挑战&#xff0c;并展望未来的发展趋势。 一、区块链钱包概述 区块链钱包是一种用于存储和管理数字货币的软件工具。它为用户提供了一个安全的…

05_FreeRTOS信号量

信号量 信号量信号量简介常用信号量API函数 信号量 信号量简介 信号量&#xff08;Semaphore&#xff09;是一种实现任务间通信的机制&#xff0c;可以实现任务之间同步或临界资源的互斥访问&#xff0c;常用于协助一组相互竞争的任务来访问临界资源。在多任务系统中&#xf…

【C语言__指针02__复习篇12】

目录 前言 一、数组名的理解 二、使用指针访问数组 三、一维数组传参的本质 四、冒泡排序 五、二级指针 六、指针数组 七、指针数组模拟二维数组 前言 本篇主要讨论以下问题&#xff1a; 1. 数组名通常表示什么&#xff0c;有哪两种例外情况&#xff0c;在例外情况中…

Electron+Vue3+ElectronForge整合 - 打包时整合 -分步打包

说明 本文介绍一下 Electron Vue3 的打包整合的基本操作。实现的效果是 &#xff1a; 1、一个正常的Vue3项目&#xff1b; 2、整合加入 Electron 框架 &#xff1a;开发时 Electron 加载的是开发的vue项目&#xff1b; 3、完成打包时整合&#xff1a;3.1 先完成vue3项目的正常…

加州理工华人用AI颠覆数学证明!提速5倍震惊陶哲轩,80%数学步骤全自动化

加州理工团队解决了形式化研究神器Lean运行LLM推理时的核心技术挑战&#xff0c;可以让LLM在Lean中提出证明策略&#xff0c;允许人类以无缝的方式干预和修改。 Lean Copilot&#xff0c;让陶哲轩等众多数学家赞不绝口的这个形式化数学工具&#xff0c;又有超强进化了&#xf…

pytest教程-29-重复执行用例插件-pytest-repeat

领取资料&#xff0c;咨询答疑&#xff0c;请➕wei: June__Go 上一小节我们学习了设置用例超时时间插件pytest-timeout&#xff0c;本小节我们讲解一下pytest重复执行用例插件pytest-repeat。 前言 做功能测试的时候&#xff0c;经常会遇到某个模块不稳定&#xff0c;偶然会…

五款最受欢迎的上网行为管理软件

五款最受欢迎的上网行为管理软件 员工上网看视频怎么办&#xff1f;员工偷偷刷抖音怎么办&#xff1f;员工天天上招聘网&#xff0c;是不是有离职打算&#xff1f; 解决上述困扰的最好办法是使用监控软件了解员工一言一行。以下是几款推荐的上网行为管理和监控软件&#xff1a;…
最新文章