VCM 设备注册(DTS)
RK VCM 驱动私有参数说明:
名称 | 定义 |
---|---|
启动电流 | VCM 刚好能推动模组镜头从模组镜头可移动行程最近端(模组远焦)移动,此时 VCM driver ic 的输出电流值定义为启动电流 |
额定电流 | VCM 刚好推动模组镜头至模组镜头可移动行程的最远端(模组近焦),此时 VCM driver ic 的输出电流值定义为额定电流 |
VCM 电流输出模式 | VCM 移动过程中会产生振荡,VCM driver ic 电流输出变化需要考虑vcm 的振荡周期,以便最大程度减小振荡,输出模式决定了输出电流改变至目标值的时间 |
例子:
vm149c: vm149c@0c {
// vcm 驱动配置,支持 AF 时需要有这个设置
compatible = "silicon touch,vm149c";
status = "okay";
reg = <0x0c>;
rockchip,vcm-start-current = <0>; // 马达的启动电流
rockchip,vcm-rated-current = <100>; // 马达的额定电流
rockchip,vcm-step-mode = <4>; // 马达驱动 ic 的电流输出模式
rockchip,camera-module-index = <0>; // 模组编号
rockchip,camera-module-facing = "back"; // 模组朝向,有"back"和"front"
};
gc8034: gc8034@37 {
......
lens-focus = <&vm149c>; // vcm 驱动设置,支持 AF 时需要有这个设置
......
};
VCM 驱动说明
驱动移植步骤
1.实现标准的 i2c 子设备驱动部分
根据 struct i2c_driver 描述,主要实现以下几部分:
struct driver.name
struct driver.pm
struct driver. of_match_table
probe 函数
remove 函数
probe 函数实现细节描述
VCM 设备资源获取,主要获取 DTS 资源
1、RK 私有资源定义, 命名方式如 rockchip,camera-module-xxx,主要是提供设备参数和 Camera 设备进行匹配。
2、VCM 参数定义,命名方式如 rockchip,vcm-xxx, 主要涉及硬件参数启动电流、额定电流、移动模式, 参数跟马达移动的范围和速度相关。
ret = of_property_read_u32(np, RKMODULE_CAMERA_MODULE_INDEX,
&vm149c_dev->module_index);
ret |= of_property_read_string(np, RKMODULE_CAMERA_MODULE_FACING,
&vm149c_dev->module_facing);
if (ret) {
dev_err(&client->dev,
"could not get module information!\n");
return -EINVAL;
}
...
memset(facing, 0, sizeof(facing