camx 马达的MSM_ACTUATOR_WRITE_DAC操作

  • 为什么要分析 MSM_ACTUATOR_WRITE_DAC
  • mm-camera MSM_ACTUATOR_WRITE_DAC
  • camx MSM_ACTUATOR_WRITE_DAC
  • 总结

为什么要分析 MSM_ACTUATOR_WRITE_DAC

目前的camx源码 省略了hw_mask 的处理。 一般来说 hw_mask 是0 ,但是对于非0情况 就会出现异常

mm-camera MSM_ACTUATOR_WRITE_DAC

驱动的处理

     case MSM_ACTUATOR_WRITE_DAC:value = (next_lens_position <<write_arr[i].data_shift) |((hw_dword & write_arr[i].hw_mask) >>write_arr[i].hw_shift);if (write_arr[i].reg_addr != 0xFFFF) {i2c_byte1 = write_arr[i].reg_addr;i2c_byte2 = value;} else {i2c_byte1 = (value & 0xFF00) >> 8;i2c_byte2 = value & 0xFF;}i2c_tbl.reg_addr = i2c_byte1;i2c_tbl.reg_data = i2c_byte2;i2c_tbl.delay = delay;a_ctrl->i2c_tbl_index++;reg_setting.reg_setting = &i2c_tbl;reg_setting.data_type = a_ctrl->i2c_data_type;rc = a_ctrl->i2c_client.i2c_func_tbl->i2c_write_table_w_microdelay(&a_ctrl->i2c_client, &reg_setting);if (rc < 0) {pr_err("i2c write error:%d\n", rc);return rc;}break;

马达dw9714设置

      .reg_tbl ={.reg_tbl_size = 1,.reg_params ={{.reg_write_type = ACTUATOR_WRITE_DAC,.hw_mask = 0x0000000F,.reg_addr = 0xFFFF,.hw_shift = 0,.data_shift = 4,},},},

camx MSM_ACTUATOR_WRITE_DAC

驱动处理

            case ActuatorOperation::WRITE_DAC_VALUE:pWriteCmd                  = reinterpret_cast<CSLSensorI2CRandomWriteCmd*>(static_cast<BYTE*>(pCmdBuffer) + offset);pWriteCmd->header.count    = 1;pWriteCmd->header.opcode   = CSLSensorI2COpcodeRandomWrite;pWriteCmd->header.cmdType  = CSLSensorCmdTypeI2CRandomRegWrite;pWriteCmd->header.dataType = static_cast<UINT8>(pRegConfigTable->registerParam[i].regDataType);pWriteCmd->header.addrType = static_cast<UINT8>(pRegConfigTable->registerParam[i].regAddrType);pWriteCmd->regValPairs[0].reg = pRegConfigTable->registerParam[i].registerAddr;pWriteCmd->regValPairs[0].val = targetPositionDAC << pRegConfigTable->registerParam[i].dataShift;offset += sizeof(CSLSensorI2CRandomWriteCmd);break;

马达dw9714设置

  <!--Sequence of register configuration --><registerConfig><!--Actuator register configuration --><registerParam><!--Register address / data size in bytes --><regAddrType range="[1,4]">1</regAddrType><!--Register address / data size in bytes --><regDataType range="[1,4]">1</regDataType><!--Register address that is accessed --><registerAddr>0xFFFF</registerAddr><!--Register data to be programmed --><registerData>0</registerData><!--Actuator operationsSupported operations are: WRITE_HW_DAMP, WRITE_DAC, WRITE, WRITE_DIR_REG, POLL, READ_WRITE --><operation>WRITE_DAC_VALUE</operation><!--Delay in micro seconds --><delayUs>0</delayUs><!--Hardware mask --><hwMask>0x0000000F</hwMask><!--Number of bits to shift for HW --><hwShift>0</hwShift><!--Number of bits to shift for data --><dataShift>4</dataShift></registerParam></registerConfig>

总结

mm-camera架构成熟 对hwMask有进行处理
如果需要处理hwMask,思路就是对照mm-camera 打patch
马达还是那个马达 工作流程没有变

camx 马达的MSM_ACTUATOR_WRITE_DAC 操作相关推荐

  1. 高通 Camx 架构了解下(二)

    和你一起终身学习,这里是程序员Android 经典好文推荐,通过阅读本文,您将收获以下知识点: 一.Android Hal3回顾 二.Qcom Hal3 CamX架构 三.Qcom Hal3 Camx ...

  2. Android之 震动(Vibrator)如何贯通Android系统 (从硬件设计 -- 驱动 -- HAL -- JNI -- Framework -- Application)

        在Android 2.3(Gingerbread) 系统的时候,我写过一篇关于"Android 震动马达系统"的文章,当时的Linux内核还是2.6版本的.写那篇文章的目的 ...

  3. Android 震动马达系统

    Android之 看"马达"如何贯通Android系统 (从硬件设计 --> 驱动 --> HAL --> JNI --> Framework --> ...

  4. 游戏感:虚拟感觉的游戏设计师指南——第九章 润色的测量方法

    这是一本游戏设计方面的好书 转自天:天之虹的博客:http://blog.sina.com.cn/jackiechueng 感谢天之虹的无私奉献 Word版可到本人的资源中下载 第九章润色的测量方法 ...

  5. Android硬件服务框架实例之Vibrator(驱动到应用)

    转载于:http://www.cnblogs.com/skywang12345/p/3404808.html,内容有所修改,这篇vibrator源码是基于安卓7.1分析.      系列:安卓硬件访问 ...

  6. 关于大型网站技术演进的思考

    关于大型网站技术演进的思考(一)--存储的瓶颈(1) 前不久公司请来了位互联网界的技术大牛跟我们做了一次大型网站架构的培训,两天12个小时信息量非常大,知识的广度和难度也非常大,培训完后我很难完整理出 ...

  7. qualcomm的camera马达驱动代码分析

    前言: 主要给大家介绍基于高通平台的camera马达驱动的编写过程,此过程会涉及到手机对焦功能实现的原理以及如何通过I2C子系统实现数据传输等过程. 一.手机自动对焦原理 手机自动对焦功能是通过将摄像 ...

  8. bios x86保护模式下的软盘操作floppy

    Cpu启动时,如果在bios中设置了从软盘启动,则bios会自动把软盘的第一个扇区(512字节)搬移到0x7c00,然后会从0x7c00开始运行,我们需要在这512字节的程序中实现把boot从软盘中搬 ...

  9. camx模型_【推荐】基于CAMx的空气质量模拟及污染来源解析技术

    关注并转发本文章至朋友圈或科研群3小时以上,截图联系文末客服即可免费参加海报免费课程,快动动您的小手转发起来! 各企事业单位: 随着我国经济快速发展,我国面临着日益严重的大气污染问题.大气污染是工农业 ...

最新文章

  1. 学界 | DeepMind等机构提出「图网络」:面向关系推理
  2. SQLSERVER排查CPU占用高的情况
  3. c++成员函数指针强制转换为一般函数指针出现问题
  4. 谈谈汽车诊断之KWP2000/ISO14229/ISO15765/SAEJ1939
  5. java请求并行方案_让 Yar Java Client 支持执行并行请求,ExecutorService 的使用
  6. 晚上八点半,一起来聊聊
  7. Spring Boot 学习(一) 快速搭建SpringBoot 项目
  8. Python高级——多继承问题(super与mro)
  9. 更改IE浏览器的收藏夹位置
  10. java.lang.Void类
  11. 后缀转中缀表达式_中缀转后缀表达式代码实现(下)及计算器完整版
  12. hdu--1160--LIS+打印路径
  13. 免费在线SQL数据库SQL Fiddle使用简介
  14. cqyz oj | 【训练题】铲雪车问题
  15. Android 饼图
  16. office2016家庭和学生版小型企业版专业版|版本区别
  17. word之插入图表题、表标题,图目录和表目录
  18. 五、SQL–索引/约束⑥(外键约束)
  19. IntelliJ IDEA 为JAVA 项目添加lib
  20. 【Camera】Camera理论知识和基本原理

热门文章

  1. substance-Substance_Painter记录
  2. 苹果cmsv10奇热影院响应式模板自适应pc+手机端好看的简约模板
  3. CVPR 2021 论文解读Vol.9 | 多样化分支模块:将卷积构建为类似Inception的单元
  4. vue的函数式组件functional
  5. Android APP CC2640R2F OTA 流程
  6. 【ESP32最全学习笔记(基础篇)——1.ESP32简介】
  7. TongWeb8应用部署时间长或卡住
  8. svn密码忘记解决方案
  9. 双十一电商流量暴增的背后,用户体验如何保障?
  10. 狂神说Mybatis-plus使用文档