OV4689 和IMX179的dts中节点的区别,以及dts节点的注释说明,基于rv1108平台

文件路径:/kernel/arch/arm/boot/dts/rv1108-camb-v12.dtsi

根据实际的硬件连接、 sensor 要求, 的各项信息,尤其注意 i2c 地址、 pinctrl、 DVDD 配置、 pd、 reset 引脚及其有效电平。

使用的硬件平台:rv1108.同一个mipi接口,dts文件中camera节点的区别和差异 

OV4689 和IMX179的dts中节点的区别,以及dts节点的注释说明,基于rv1108平台_第1张图片

dts节点的注释:

 camera1: camera-module@36 {
        status = "okay";//是否加载模块,默认开启
        compatible = "omnivision,ov4689-v4l2-i2c-subdev";//omnivision sensor类型 ov4689-v4l2-i2c-subdev中ov4689是sensor型号,需要与驱动名字一致
        reg = <0x36>;//sensor i2c设备的地址,有效位 7bit,8bit 需右移一位
        device_type = "v4l2-i2c-subdev";//设备类型
        clocks = <&clk_cif_out>;//sensor clickin的配置
        clock-names = "clk_cif_out";
        pinctrl-names = "rockchip,camera_default", "rockchip,camera_sleep";
        pinctrl-0 = <&cif_dvp_clk_out>;//gpio 复用为 clk
        pinctrl-1 = <&cif_dvp_clk_out_sleep>;//释放 gpio 复用功能
        rockchip,pd-gpio = <&gpio3 GPIO_B0 GPIO_ACTIVE_LOW>;//sensor powerdown gpio配置,低有效,工作时拉高
        rockchip,pwr-gpio = <&gpio3 GPIO_B5 GPIO_ACTIVE_HIGH>;//power的管脚分配及有效电平,高有效,工作时拉高
        rockchip,rst-gpio = <&gpio3 GPIO_D1 GPIO_ACTIVE_LOW>;//reset的管脚分配及有效电平,低有效,工作时拉高
        rockchip,camera-module-mclk-name = "clk_cif_out";//mclk时钟源配置,具体的解释如下:


//在dts文件rv1108_clock.dtsi中节点clk_cif_out: clk_cif_out_mux {
     compatible = "rockchip,rk3188-mux-con";
     rockchip,bits = <12 1>;
     clocks = <&clk_cif_pll>, <&xin24m>;
     clock-output-names = "clk_cif_out";
     #clock-cells = <0>;
 };

  xin24m: xin24m {
     compatible = "rockchip,rk-fixed-clock";
     clock-output-names = "xin24m";
     clock-frequency = <24000000>;//24Mhz
     #clock-cells = <0>;
 };

在 PLTFRM_CAM_ITF_MIPI_CFG(dphy_index, vc , nb_lanes, bit_rate),
bit_rate 进行设置 Mclk。
当信号为并口时,时钟源应该选择“clk_cif_out”

rv1108 mclk 有 2 个 io 口可选择,根据实际硬件设计来配置:

clk_mipicsi_out(gpio3_b5), 可输出 12M 或 24M。

clk_cif_out(gpio3_d2), 可输出 12M, 24M 或 37.125M。

其他 clk 频率请考虑外接晶振。



        rockchip,camera-module-regulator-names = "vdd_cam";//camera vdd 的名称,rk805 BUCK2, see rk805 dts
        rockchip,camera-module-regulator-voltages = <1200000>;//camera vdd电压:0x1.2V
        rockchip,camera-module-facing = "back";//前后置配置
        rockchip,camera-module-name = "LA6111PA";//camera 模组名称,用于匹配 IQ文件也就是xml文件,为了能够在系统启动后在目录/etc/cam_iq目录下有相应的xml文件,需要将设备需要用到的dts节点置于camb.dtsi的文件前方,经过在rv1108上实验得知,每次系统i启动后,/etc/cam_iq目录下只会copy前三个节点的xml文件,后面节点的xml文件不会被copy到这个目录下,就会造成启动时一直报错:03-25 15:47:28 video    CAMHALWarn:   transDrvMetaDataToHal:mCamIAEngine has been desroyed!,并且图传有问题。
        rockchip,camera-module-len-name = "YM6011P";//camera模组镜头
        rockchip,camera-module-fov-h = "116";//模组水平可视角度配置
        rockchip,camera-module-fov-v = "61";//模组垂直可视角度配置
        rockchip,camera-module-orientation = <0>;//模组角度设置
        rockchip,camera-module-iq-flip = <0>;//IQ上下换转
        rockchip,camera-module-iq-mirror = <0>;//IQ左右镜像

//以上 2 个属性控制摄像头的效果参数镜像配置,一般都是设置成 0,但 是发现以下现象:拍摄白墙,图片的上半部偏色与下半部偏色不一致,或者左右半部偏色不一致,即可以将这 2 个属性置成 1;
        rockchip,camera-module-flip = <0>;
        rockchip,camera-module-mirror = <1>;

//以上 2 个属性控制摄像头驱动中的镜像配置,如果图像旋转 180 度,可以将这 2 个属性修改成相反的值即可旋转 180;
      
        rockchip,camera-module-defrect0 = <2688 1520 0 0 2688 1520>;  /* resolution.w, resolution.h, defrect.left, defrect.top, defrect.w, defrect.h 具体可以参考如下图所示*/


// resolution.w: sensor 输出列数,
//resolution.h:sensor 输出行数,
// defrect.left:输出偏移列数,
// defrect.top:输出偏移行数,
// defrect.w:输出列数, defrect.left+defrect.w<=resolution.w,
//defrect.h:输出行数,defrect.h+defrect.top<=resolution.h,



        rockchip,camera-module-flash-support = <0>;//flash 控制开关
        rockchip,camera-module-mipi-dphy-index = <0>;//sensor 实际使用的 phy,要与硬件实际连接对应
};

resolution.w, resolution.h, defrect.left, defrect.top, defrect.w, defrect.h这几个参数的关系如下图所示:

OV4689 和IMX179的dts中节点的区别,以及dts节点的注释说明,基于rv1108平台_第2张图片

kernel/arch/arm/boot/dts/rv1108-evb-v12.dts

// 配置需要使用的camera列表,连接到isp设备节点
&cif_isp0 {
rockchip,camera-modules-attached = < &camera1 >;
status = "okay";
}; 

你可能感兴趣的:(rv1108,camera,dts,linux驱动,linux系统)