摄像头设备树部分各个参数说明

以S5K3L1为例:
qcom,camera@6e {
    compatible = “qcom,s5k3l1yx”;  //跟驱动文件中的名称匹配
    reg = <0x6e 0x0>;  //0x6e:I2C设备的地址
    qcom,slave-id = <0x6e 0x0 0x3121>; //(slave id – 0x6e, chip id address – 0x0, chip id – 0x3121)
    qcom,csiphy-sd-index = <0>; //(Use CSIPHY subdev 0)
    qcom,csid-sd-index = <0>; // (Use CSID subdev 0)
    qcom,flash-src-index = <&led_flash0>; (Use LED flash subdev 0)
    qcom,mount-angle = <90>; (mount angle 90 degree,摄像头安装角度,后置一般为90,前置一般为270)
    qcom,sensor-name = “s5k3l1yx”; (sensor name)
    cam_vdig-supply = <&pm8941_l3>; (Use L3 for VDIG,数字电压DVDD)
    cam_vana-supply = <&pm8941_l17>; (Use L17 for VANA,模拟电压AVDD)
    cam_vio-supply = <&pm8941_lvs3>; (Use LVS3 for VIO,I2C的电压IOVDD)
    cam_vaf-supply = <&pm8941_l23>; (Use L23 for VAF,AF电压)
    qcom,cam-vreg-name = “cam_vdig”, “cam_vio”, “cam_vana”, “cam_vaf”; //跟以上四路电压一一对应
    qcom,cam-vreg-type = <0 1 0 0>; (0 – LDO, 1 – LVS)
    qcom,cam-vreg-min-voltage = <1225000 0 2850000 3000000>; (min voltage,最小电压范围1.225V~3V)
    qcom,cam-vreg-max-voltage = <1225000 0 2850000 3000000>; (max voltage,最大电压范围1.225~3V)
    qcom,cam-vreg-op-mode = <105000 0 80000 100000>; (Optimum mode,最佳模式)
    qcom,gpio-no-mux = <0>;
    gpios = <&msmgpio 15 0>, <&msmgpio 90 0>; //GPIO15初始值为0,GPIO90初始值为0
    qcom,gpio-reset = <1>; (Use gpio pin 90 for reset)
    qcom,gpio-req-tbl-num = <0 1>; (0 – pin 15, 1 – pin 90)
    qcom,gpio-req-tbl-flags = <1 0>; (0 – output gpio, 1 – input gpio)
    qcom,gpio-req-tbl-label = “CAMIF_MCLK”, “CAM_RESET1”; (gpio name,mclk pin and reset1 pin)
    qcom,gpio-set-tbl-num = <1 1>; (1 – pin 90, 1--pin15  初始值)
    qcom,gpio-set-tbl-flags = <0 2>; (0 – GPIOF_OUT_INIT_LOW, 2 - GPIOF_OUT_INIT_HIGH)
    qcom,gpio-set-tbl-delay = <1000 30000>; (delay in micro sec)
    qcom,csi-lane-assign = <0x4320>; (Use 0x4320 for CSI lane assign)
    qcom,csi-lane-mask = <0x1F>; (Use 0x1F for lane mask)
    qcom,sensor-position = <0>; (0 – back camera, 1 – front camera)
    qcom,sensor-mode = <1>; (1 – 2D, 3 – 3D)
    qcom,cci-master = <0>; (0 – Master 0, 1 – Master 1)
    status = “ok”; (该配置处于活动状态)
};

高通平台摄像头配置(正常可以配置3颗,0、1、2):

kernel\msm-4.9\arch\arm64\boot\dts\GM620S\msm8953-camera-sensor-mtp.dtsi 

   qcom,camera@0 {  //camera 0摄像头配置
        cell-index = <0>; //第0颗摄像
        compatible = "qcom,camera"; //msm_sensor.c中的name匹配
        reg = <0x0>;
        qcom,csiphy-sd-index = <0>;//(Use CSIPHY subdev 0)
        qcom,csid-sd-index = <0>; // (Use CSID subdev 0)
        qcom,mount-angle = <270>; //安装角度为270度
        qcom,led-flash-src = <&led_flash0>; //使用led_flash0作为闪光灯
        qcom,eeprom-src = <&eeprom0>; //使用eeprom0
        qcom,actuator-src = <&actuator0>; //使用actuator0作为lens
        cam_vio-supply = <&pm8953_l6>; //使用PMIC的LDO6作为IOVDD
        cam_vdig-supply = <&pm8953_l2>; //使用PMIC的LDO2作为DVDD
        cam_vaf-supply = <&pm8953_l17>; //使用PMIC的LDO17作为AFVDD
        cam_vana-supply = <&pm8953_l22>; //使用PMIC的LDO22作为AVDD
        qcom,cam-vreg-name = "cam_vio", "cam_vdig","cam_vana", "cam_vaf"; //各路电压的上电顺序
        qcom,cam-vreg-min-voltage = <0 1200000  2800000 2850000>; //最小电压范围
        qcom,cam-vreg-max-voltage = <0 1200000  2800000 2850000>; //最大电压范围
        qcom,cam-vreg-op-mode = <0 105000 80000 100000>;  //最佳匹配范围
        pinctrl-names = "cam_default", "cam_suspend"; 
        pinctrl-0 = <&cam_sensor_mclk0_default
                &cam_sensor_rear_default
                &cam_sensor_rear_vana>;
        pinctrl-1 = <&cam_sensor_mclk0_sleep &cam_sensor_rear_sleep
                &cam_sensor_rear_vana_sleep>;
        gpios = <&tlmm 26 0>,  //mclk pin GPIO26
            <&tlmm 40 0>,  // reset pin GPIO40
            <&tlmm 39 0>,  // te or standby pin gpio39
            <&tlmm 134 0>; //avdd enable ldo pin gpio134 
        qcom,gpio-reset = <1>;
        qcom,gpio-standby = <2>;
        qcom,gpio-vana = <3>;
        qcom,gpio-req-tbl-num = <0 1 2 3>; // mclk、reset、 te、 ldo enabel pin
        qcom,gpio-req-tbl-flags = <1 0 0 0>; // mclk、reset、 te、 ldo enabel pin四个管脚默认输出
        qcom,gpio-req-tbl-label = "CAMIF_MCLK0",
            "CAM_RESET0",
            "CAM_STANDBY0",
            "CAM_VANA";
        qcom,sensor-position = <0>; (0 – back camera, 1 – front camera)
        qcom,sensor-mode = <0>; (1 – 2D, 3 – 3D)
        qcom,cci-master = <0>; (0 – Master 0, 1 – Master 1)
        status = "ok";
        clocks = <&clock_gcc clk_mclk0_clk_src>,
                <&clock_gcc clk_gcc_camss_mclk0_clk>;
        clock-names = "cam_src_clk", "cam_clk";
        qcom,clock-rates = <24000000 0>; //24MHZ
    };

/* mipi camera config */
qcom,camera@0 { /* mclk0=gpio26; reset pin=GPIO40; dvdd && AVDD =GPIO0 */
        cell-index = <0>;
        compatible = "qcom,camera";
        reg = <0x0>;
        qcom,csiphy-sd-index = <0>;
        qcom,csid-sd-index = <0>;
        qcom,mount-angle = <270>; /* fornt camera 270*/
        /*qcom,mount-angle = <90>;*/
        /*qcom,led-flash-src = <&led_flash0>;
        qcom,eeprom-src = <&eeprom0>;
        qcom,actuator-src = <&actuator0>;*/  //后视镜项目中没有使用
        cam_vio-supply = <&pm8953_l6>;  //IOVDD LDO6 
        /*cam_vdig-supply = <&pm8953_l2>; //DVDD和AVDD没有使用LDO供电,直接使用GPIO使能5V输出供电
        cam_vana-supply = <&pm8953_l22>;*/  
        qcom,cam-vreg-name = "cam_vio"; /*, "cam_vdig","cam_vana";*/
        qcom,cam-vreg-min-voltage = <0 1200000  2800000 2850000>;
        qcom,cam-vreg-max-voltage = <0 1200000  2800000 2850000>;
        qcom,cam-vreg-op-mode = <0 105000 80000 100000>;
        pinctrl-names = "cam_default", "cam_suspend";
        pinctrl-0 = <&cam_sensor_mclk0_default
                &cam_sensor_rear_default>;
                /*&cam_sensor_rear_vana*/  //AVDD使能够的PIN没有使用
        pinctrl-1 = <&cam_sensor_mclk0_sleep &cam_sensor_rear_sleep
                &cam_sensor_rear_vana_sleep>;
        gpios = <&tlmm 26 0>, /*mclk0*/
            <&tlmm 40 0>, /*reset pin*/
            /*<&tlmm 39 0>,*/ /*pdn*/
            /*<&tlmm 134 0>;*/ /*chanage to GPIO0*/
            <&tlmm 0 0>; /*gpio0 enable dvdd && AVDD*/
        qcom,gpio-reset = <1>;
        qcom,gpio-standby = <2>;
        /*qcom,gpio-vana = <3>;*/ //AVDD使能pin没有使用
        qcom,gpio-enVDD = <3>;
        qcom,gpio-req-tbl-num = <0 1 2>;
        qcom,gpio-req-tbl-flags = <1 0 0>;
        qcom,gpio-req-tbl-label = "CAMIF_MCLK0",
            "CAM_RESET0",
            /*"CAM_STANDBY0",*/ /*PDN PIN*/
            "CAM_VANA";  //当作gpio0 enable dvdd && AVDD使用
        qcom,sensor-position = <0>;  (0 – back camera, 1 – front camera)
        qcom,sensor-mode = <0>; (1 – 2D, 3 – 3D)
        qcom,cci-master = <0>; (0 – Master 0, 1 – Master 1)
        status = "ok";
        clocks = <&clock_gcc clk_mclk0_clk_src>,
                <&clock_gcc clk_gcc_camss_mclk0_clk>;
        clock-names = "cam_src_clk", "cam_clk";
        qcom,clock-rates = <24000000 0>; //24MHZ时钟
    };

1和2摄像头按照以上分析配置即可,一定要结合模组规格书、sensor IC手册以及电路原理图进行配置:

    qcom,camera@1 {
        cell-index = <1>;
        compatible = "qcom,camera";
        reg = <0x1>;
        qcom,csiphy-sd-index = <1>;
        qcom,csid-sd-index = <1>;
        qcom,mount-angle = <90>;
        qcom,led-flash-src = <&led_flash0>;
        qcom,eeprom-src = <&eeprom2>;
        qcom,actuator-src = <&actuator1>;
        cam_vio-supply = <&pm8953_l6>;
        cam_vdig-supply = <&pm8953_l2>;
        cam_vana-supply = <&pm8953_l22>;
        cam_vaf-supply = <&pm8953_l17>;
        qcom,cam-vreg-name = "cam_vio", "cam_vdig","cam_vana","cam_vaf";
        qcom,cam-vreg-min-voltage = <0 1200000  2800000 2850000>;
        qcom,cam-vreg-max-voltage = <0 1200000  2800000 2850000>;
        qcom,cam-vreg-op-mode = <0 105000 80000 100000>;
        pinctrl-names = "cam_default", "cam_suspend";
        pinctrl-0 = <&cam_sensor_mclk2_default
                &cam_sensor_front_default
                &cam_sensor_rear_vana2>;
        pinctrl-1 = <&cam_sensor_mclk2_sleep
                &cam_sensor_front_sleep
                &cam_sensor_rear_vana_sleep2>;
        gpios = <&tlmm 28 0>,
            <&tlmm 131 0>,
            <&tlmm 132 0>,
            <&tlmm 141 0>;
        qcom,gpio-reset = <1>;
        qcom,gpio-standby = <2>;
        qcom,gpio-vana = <3>;
        qcom,gpio-req-tbl-num = <0 1 2 3>;
        qcom,gpio-req-tbl-flags = <1 0 0 0>;
        qcom,gpio-req-tbl-label = "CAMIF_MCLK1",
            "CAM_RESET1",
            "CAM_STANDBY1",
            "CAM_VANA1";
        qcom,sensor-position = <0>;
        qcom,sensor-mode = <0>;
        qcom,cci-master = <0>;
        status = "ok";
        clocks = <&clock_gcc clk_mclk2_clk_src>,
                <&clock_gcc clk_gcc_camss_mclk2_clk>;
        clock-names = "cam_src_clk", "cam_clk";
        qcom,clock-rates = <24000000 0>;
    };

    qcom,camera@2 {
        cell-index = <2>;
        compatible = "qcom,camera";
        reg = <0x02>;
        qcom,csiphy-sd-index = <2>;
        qcom,csid-sd-index = <1>;
        qcom,mount-angle = <90>;
        cam_vdig-supply = <&pm8953_l23>;
        cam_vio-supply = <&pm8953_l6>;
        cam_vana-supply = <&pm8953_l22>;
        qcom,cam-vreg-name = "cam_vdig", "cam_vio", "cam_vana";
        qcom,cam-vreg-min-voltage = <1200000 0 2800000 >;
        qcom,cam-vreg-max-voltage = <1200000 0 2800000 >;
        qcom,cam-vreg-op-mode = <105000 0 80000 >;
        qcom,gpio-no-mux = <0>;
        pinctrl-names = "cam_default", "cam_suspend";
        pinctrl-0 = <&cam_sensor_mclk1_default
                &cam_sensor_front1_default>;
        pinctrl-1 = <&cam_sensor_mclk1_sleep
                &cam_sensor_front1_sleep>;
        gpios = <&tlmm 27 0>,
            <&tlmm 129 0>,
            <&tlmm 130 0>;
        qcom,gpio-reset = <1>;
        qcom,gpio-standby = <2>;
        qcom,gpio-req-tbl-num = <0 1 2>;
        qcom,gpio-req-tbl-flags = <1 0 0>;
        qcom,gpio-req-tbl-label = "CAMIF_MCLK2",
                      "CAM_RESET2",
                      "CAM_STANDBY2";
        qcom,sensor-position = <1>;
        qcom,sensor-mode = <0>;
        qcom,cci-master = <1>;
        status = "ok";
        clocks = <&clock_gcc clk_mclk1_clk_src>,
            <&clock_gcc clk_gcc_camss_mclk1_clk>;
        clock-names = "cam_src_clk", "cam_clk";
        qcom,clock-rates = <24000000 0>;
    };

发布了93 篇原创文章 · 获赞 10 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/jinron10/article/details/103540278