Android Camera 驱动 Bringup_android camera驱动

			qcom,duration-ms = <1280>;
			qcom,ires-ua = <12500>;
			qcom,hdrm-voltage-mv = <325>;
			qcom,hdrm-vol-hi-lo-win-mv = <100>;
		};

		pm660l_flash2: qcom,flash_2 {
			label = "flash";
			qcom,led-name = "led:flash_2";
			qcom,max-current = <750>;
			qcom,default-led-trigger = "flash2_trigger";
			qcom,id = <2>;
			qcom,current-ma = <500>;
			qcom,duration-ms = <1280>;
			qcom,ires-ua = <12500>;
			qcom,hdrm-voltage-mv = <325>;
			qcom,hdrm-vol-hi-lo-win-mv = <100>;
		};
		pm660l_torch0: qcom,torch_0 {
			label = "torch";
			qcom,led-name = "led:torch_0";
			qcom,max-current = <500>;
			qcom,default-led-trigger = "torch0_trigger";
			qcom,id = <0>;
			qcom,current-ma = <300>;
			qcom,ires-ua = <12500>;
			qcom,hdrm-voltage-mv = <325>;
			qcom,hdrm-vol-hi-lo-win-mv = <100>;
		};
		......
		pm660l_switch0: qcom,led_switch_0 {
			label = "switch";
			qcom,led-name = "led:switch_0";
			qcom,led-mask = <3>;
			qcom,default-led-trigger = "switch0_trigger";
		};
	};

1.3.4 Camera 马达DTS配置



&cci {
actuator0: qcom,actuator@0 {
cell-index = <0>;
reg = <0x0>;
compatible = “qcom,actuator”;
qcom,cci-master = <0>; // 马达使用的 i2c master , I2C 0
cam_vaf-supply = <&cam_vaf_gpio_regulator>; // 马达供电
qcom,cam-vreg-name = “cam_vaf”;
qcom,cam-vreg-min-voltage = <3300000>;
qcom,cam-vreg-max-voltage = <3600000>;
qcom,cam-vreg-op-mode = <100000>;
};

actuator1: qcom,actuator@1 {
	cell-index = <1>;
	reg = <0x1>;
	compatible = "qcom,actuator";
	qcom,cci-master = <1>;		// 马达使用的 i2c master , I2C 1
	cam_vaf-supply = <&cam_vaf_gpio_regulator>;
	qcom,cam-vreg-name = "cam_vaf";
	qcom,cam-vreg-min-voltage = <3300000>;
	qcom,cam-vreg-max-voltage = <3600000>;
	qcom,cam-vreg-op-mode = <100000>;
};

1.3.5 Camera 光学防抖 OSI DTS配置



ois0: qcom,ois@0 {
cell-index = <0>;
reg = <0x0>;
compatible = “qcom,ois”;
qcom,cci-master = <0>; // 使用 I2C 0
gpios = <&tlmm 50 0>; // GPIO 50
qcom,gpio-vaf = <0>;
qcom,gpio-req-tbl-num = <0>;
qcom,gpio-req-tbl-flags = <0>;
qcom,gpio-req-tbl-label = “CAM_VAF”;
pinctrl-names = “cam_default”, “cam_suspend”;
pinctrl-0 = <&cam_actuator_vaf_active>;
pinctrl-1 = <&cam_actuator_vaf_suspend>;
status = “disabled”;
};


1.3.6 Camera eeprom DTS配置



eeprom0: qcom,eeprom@0 {
cell-index = <0>;
reg = <0>;
compatible = “qcom,eeprom”;
cam_vio-supply = <&pm660_l11>;
cam_vana-supply = <&cam_avdd_gpio_regulator>;
cam_vdig-supply = <&cam_rear_dvdd_gpio_regulator>;
cam_vaf-supply = <&pm660l_l8>;
qcom,cam-vreg-name = “cam_vio”, “cam_vana”, “cam_vdig”, “cam_vaf”;
qcom,cam-vreg-min-voltage = <1780000 0 0 2800000>;
qcom,cam-vreg-max-voltage = <1950000 0 0 3400000>;
qcom,cam-vreg-op-mode = <105000 0 0 100000>;
qcom,gpio-no-mux = <0>;
pinctrl-names = “cam_default”, “cam_suspend”;
pinctrl-0 = <&cam_sensor_mclk0_active &cam_sensor_rear_active>;
pinctrl-1 = <&cam_sensor_mclk0_suspend &cam_sensor_rear_suspend>;
gpios = <&tlmm 32 0>, <&tlmm 46 0>;
qcom,gpio-reset = <1>;
qcom,gpio-req-tbl-num = <0 1>;
qcom,gpio-req-tbl-flags = <1 0>;
qcom,gpio-req-tbl-label = “CAMIF_MCLK0”, “CAM_RESET0”;
qcom,sensor-position = <0>;
qcom,sensor-mode = <0>;
qcom,cci-master = <0>;
status = “ok”;
clocks = <&clock_mmss MCLK0_CLK_SRC>, <&clock_mmss MMSS_CAMSS_MCLK0_CLK>;
clock-names = “cam_src_clk”, “cam_clk”;
qcom,clock-rates = <24000000 0>;
};


1.3.7 Camera PM660L GPIO DTS配置


前面我们使用到了两个 PM660L 的GPIO:  
`gpio = <&pm660l_gpios 3 0>;`  
`gpio = <&pm660l_gpios 4 0>;`


不同于 CPU的gpio ,其需要作单独配置,如下:



@\kernel\msm-4.4\arch\arm\boot\dts\qcom\sdm660-camera-sensor-mtp.dtsi
&pm660l_gpios {
gpio@c300 { /* GPIO4 -CAMERA SENSOR 0 VDIG*/
qcom,mode = <1>; /* Output /
qcom,pull = <5>; /
No Pull /
qcom,vin-sel = <0>; /
VIN1 GPIO_LV /
qcom,src-sel = <0>; /
GPIO /
qcom,invert = <0>; /
Invert /
qcom,master-en = <1>; /
Enable GPIO */
status = “ok”;
};

gpio@c200 { /* GPIO3 -CAMERA SENSOR 2 VDIG*/
	qcom,mode = <1>;                /* Output */
	qcom,pull = <5>;                /* No Pull */
	qcom,vin-sel = <0>;             /* VIN1 GPIO_LV */
	qcom,src-sel = <0>;             /* GPIO */
	qcom,invert = <0>;              /* Invert */
	qcom,master-en = <1>;           /* Enable GPIO */
	status = "ok";
};

};


1.4 sdm660-pinctrl.dtsi


在前面 中,有需要用到的gpio,出于电源管理的需求,需要在 pinctrl 中配置其active 和 suspend 对应的配置:


例如,GPIO 32 和 GPIO 46 以及 GPIO 50  
 在前边代码中,使用配置如下:



gpio 50:
pinctrl-names = “cam_default”, “cam_suspend”;
pinctrl-0 = <&cam_actuator_vaf_active>;
pinctrl-1 = <&cam_actuator_vaf_suspend>;

GPIO 32 、GPIO 46:
pinctrl-names = “cam_default”, “cam_suspend”;
pinctrl-0 = <&cam_sensor_mclk0_active &cam_sensor_rear_active>;
pinctrl-1 = <&cam_sensor_mclk0_suspend &cam_sensor_rear_suspend>;
gpios = <&tlmm 32 0>, <&tlmm 46 0>;



@ \kernel\msm-4.4\arch\arm\boot\dts\qcom\sdm660-pinctrl.dtsi
cam_actuator_vaf_active: cam_actuator_vaf_active {
/* ACTUATOR POWER /
mux {
pins = “gpio50”;
function = “gpio”;
};
config {
pins = “gpio50”;
bias-disable; /
No PULL /
drive-strength = <2>; /
2 MA /
};
};
cam_actuator_vaf_suspend: cam_actuator_vaf_suspend {
/
ACTUATOR POWER /
mux {
pins = “gpio50”;
function = “gpio”;
};
config {
pins = “gpio50”;
bias-pull-down; /
PULL DOWN /
drive-strength = <2>; /
2 MA /
};
};
cam_sensor_mclk0_active: cam_sensor_mclk0_active {
/
MCLK0 /
mux {
/
CLK /
pins = “gpio32”;
function = “cam_mclk”;
};
config {
pins = “gpio32”;
bias-disable; /
No PULL /
drive-strength = <2>; /
2 MA /
};
};
cam_sensor_mclk0_suspend: cam_sensor_mclk0_suspend {
/
MCLK0 /
mux {
/
CLK /
pins = “gpio32”;
function = “cam_mclk”;
};
config {
pins = “gpio32”;
bias-pull-down; /
PULL DOWN /
drive-strength = <2>; /
2 MA /
};
};
cam_sensor_rear_active: cam_sensor_rear_active {
/
RESET, STANDBY /
mux {
pins = “gpio46”;
function = “gpio”;
};
config {
pins = “gpio46”;
bias-disable; /
No PULL /
drive-strength = <2>; /
2 MA /
};
};
cam_sensor_rear_suspend: cam_sensor_rear_suspend {
/
RESET, STANDBY /
mux {
pins = “gpio46”;
function = “gpio”;
};
config {
pins = “gpio46”;
bias-disable; /
No PULL /
drive-strength = <2>; /
2 MA /
};
};
cam_sensor_mclk1_active: cam_sensor_mclk1_active {
/
MCLK1 /
mux {
/
CLK /
pins = “gpio33”;
function = “cam_mclk”;
};
config {
pins = “gpio33”;
bias-disable; /
No PULL /
drive-strength = <2>; /
2 MA /
};
};
cam_sensor_mclk1_suspend: cam_sensor_mclk1_suspend {
/
MCLK1 /
mux {
/
CLK /
pins = “gpio33”;
function = “cam_mclk”;
};
config {
pins = “gpio33”;
bias-pull-down; /
PULL DOWN /
drive-strength = <2>; /
2 MA /
};
};
cam_sensor_rear2_active: cam_sensor_rear2_active {
/
RESET, STANDBY /
mux {
pins = “gpio48”;
function = “gpio”;
};
config {
pins = “gpio48”;
bias-disable; /
No PULL /
drive-strength = <2>; /
2 MA /
};
};
cam_sensor_rear2_suspend: cam_sensor_rear2_suspend {
/
RESET, STANDBY /
mux {
pins = “gpio48”;
function = “gpio”;
};
config {
pins = “gpio48”;
bias-disable; /
No PULL /
drive-strength = <2>; /
2 MA /
};
};
cam_sensor_mclk2_active: cam_sensor_mclk2_active {
/
MCLK1 /
mux {
/
CLK /
pins = “gpio34”;
function = “cam_mclk”;
};
config {
pins = “gpio34”;
bias-disable; /
No PULL /
drive-strength = <2>; /
2 MA /
};
};
cam_sensor_mclk2_suspend: cam_sensor_mclk2_suspend {
/
MCLK1 /
mux {
/
CLK /
pins = “gpio34”;
function = “cam_mclk”;
};
config {
pins = “gpio34”;
bias-pull-down; /
PULL DOWN /
drive-strength = <2>; /
2 MA /
};
};
cam_sensor_front_active: cam_sensor_front_active {
/
RESET VANA*/
mux {
pins = “gpio47”;
function = “gpio”;
};
config {
pins = “gpio47”;
bias-disable; /* No PULL /
drive-strength = <2>; /
2 MA /
};
};
cam_sensor_front_suspend: cam_sensor_front_suspend {
/
RESET /
mux {
pins = “gpio47”;
function = “gpio”;
};
config {
pins = “gpio47”;
bias-disable; /
No PULL /
drive-strength = <2>; /
2 MA /
};
};
cam_sensor_m

  • 23
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值