1. info
Module: sunny
Sensor: imx091
Platform:APQ8064
Actuator:VCM
VCM driver IC: dw9714A
2.调试步骤
(1)VCM供电正常
(2)VCM diver IC i2c通信正常
a)保证 VCM diver IC处于正常工作模式
VCM drver IC SPEC(供电/PWDN脚)
b)将VCM dirver IC注册为i2c devices.
只需在kernel/arch/arm/mach-msm/board-8064-camera.c中配置好sensor使用的actuator
的info,如下。APQ8064/MSM8x25 camera模块sensor通用的接口已经写好在
kernel/driver/media/video/msm/sensors/msm_sensor.c中.
在其中的msm_sensor_i2c_probe会根据在board配置信息注册VCMdriver IC到i2c总线上.
(msm_sensor_i2c_probe在注册sensori2c驱动时调用)
static struct i2c_board_info msm_act_main_cam1_i2c_info = {
I2C_BOARD_INFO("msm_actuator", 0x18),
};
static struct msm_actuator_info msm_act_main_cam_1_info = {
.board_info = &msm_act_main_cam1_i2c_info,
.cam_name = MSM_ACTUATOR_MAIN_CAM_1,
.bus_id = APQ_8064_GSBI4_QUP_I2C_BUS_ID,
.vcm_pwd = CAMR_VCM_PWD_ODM,
.vcm_enable = 1,
};
static struct msm_camera_sensor_info msm_camera_sensor_imx091_data = {
.sensor_name = "imx091",
.pdata = &msm_camera_csi_device_data[0],
.flash_data = &flash_imx091,
.sensor_platform_info = &sensor_board_info_imx091,
.csi_if = 1,
.camera_type = BACK_CAMERA_2D,
.sensor_type = BAYER_SENSOR,
.actuator_info = &msm_act_main_cam_1_info,
// .eeprom_info = &imx091_eeprom_info,
};
c)将设备驱动注册上总线上.
APQ8064/MSM8x25camera模块actuator有通用驱动文件,为
kernel/driver/media/video/msm/sensors/msm_actuator.c
只需在board配置actuator信息时,设备名写为msm_actuator(驱动才能和设备对应上)
保证驱动文件被编译到内核(CONFIG_MSM_ACTUATOR)
(3)af_tuning_params文件
明确相应的AF驱动IC使用的是哪个af_tuning_params文件(af_main_cam_X.h),
文件路径vendor/qcom/proprietary/mm-camera/server/hardware/actuator/0208/8960/.
在board配置actuator信息时,以下cam_name的值要和af_main_cam_X.h文件中/*cam_name */相同。
staticstruct msm_actuator_info XXX = {
.cam_name =MSM_ACTUATOR_MAIN_CAM_1,
};
(4)对焦常见问题
a)i2c工作正常,但对焦没有明显lens拉伸过程,需要改动af_tuning_params文件中的
/*region_params */
{
/*step_bound[0] - macro side boundary */
/*step_bound[1] - infinity side boundary */
/*Region 1 */
{
.step_bound= {3, 0},
.code_per_step= 56,
},
/*Region 2 */
{
.step_bound= {41, 3},
.code_per_step= 8,
},
},
b)对焦是否启用闪光灯
1,/* LED AF Assist Enable */