RK3568 VCM 驱动

本文档详细介绍了RK3568 VCM驱动的注册、私有参数、移植步骤及核心操作。主要内容包括VCM设备资源获取,v4l2子设备驱动实现,以及AF算法的描述。驱动移植涉及实现标准的i2c子设备驱动,初始化v4l2设备和media实体,并实现针对VCM的控制操作。
摘要由CSDN通过智能技术生成

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
  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值