Qualcomm camera OTP bring up


  • Qualcomm camera OTP bring up

    • 1 kernel层

      • 11 eeprom读取地址大小和sensor上电时序等配置dts配置
    • 2 hal层
      • 21 添加eeprom驱动文件
      • 22 配置projectplatform_cameraxml文件
      • 23 把前面所有make file中的LOCAL_MODULE添加最终的make filedevice-vendormk

1.1 kernel层:

1.1.1 eeprom读取地址、大小和sensor上电时序等配置(dts配置):

file path:kernel/arch/arm/boot/dts/qcom/sdm660-camera-sensor-mtp_gm8plus.dtsi

example

eeprom2: qcom,eeprom@2 {cell-index = <2>;reg = <0x2>;compatible = "qcom,eeprom";qcom,eeprom-name = "s5k3h7_sunny_a8s05a_front_i";qcom,i2c-freq-mode = <1>;qcom,slave-addr = <0x20>;qcom,num-blocks = <9>;//page 0qcom,page0 = <1 0x100 2 0x01 1 1>;qcom,poll0 = <0 0x0 2 0 1 1>;qcom,mem0 = <0 0x0 2 0 1 0>;qcom,page1 = <1 0x0A02 2 0x01 1 1>;qcom,poll1 = <0 0x0 2 0 1 1>;qcom,mem1 = <0 0x0 2 0 1 0>;qcom,page2 = <1 0x0A00 2 0x01 1 100>;qcom,poll2 = <0 0x0 2 0 1 1>;qcom,mem2 = <64 0x0A04 2 0 1 0>;//page 1qcom,page3 = <1 0x100 2 0x01 1 1>;qcom,poll3 = <0 0x0 2 0 1 1>;qcom,mem3 = <0 0x0 2 0 1 0>;qcom,page4 = <1 0x0A02 2 0x02 1 1>;qcom,poll4 = <0 0x0 2 0 1 1>;qcom,mem4 = <0 0x0 2 0 1 0>;qcom,page5 = <1 0x0A00 2 0x01 1 100>;qcom,poll5 = <0 0x0 2 0 1 1>;qcom,mem5 = <64 0x0A04 2 0 1 0>;//page 2qcom,page6 = <1 0x100 2 0x01 1 1>;qcom,poll6 = <0 0x0 2 0 1 1>;qcom,mem6 = <0 0x0 2 0 1 0>;qcom,page7 = <1 0x0A02 2 0x03 1 1>;qcom,poll7 = <0 0x0 2 0 1 1>;qcom,mem7 = <0 0x0 2 0 1 0>;qcom,page8 = <1 0x0A00 2 0x01 1 100>;qcom,poll8 = <0 0x0 2 0 1 1>;qcom,mem8 = <64 0x0A04 2 0 1 0>;cam_vio-supply = <&pm660_l11>;cam_vana-supply = <&cam_avdd_gpio_regulator>;cam_vdig-supply = <&cam_dvdd_gpio_regulator>;qcom,cam-vreg-name = "cam_vio", "cam_vana", "cam_vdig";qcom,cam-vreg-min-voltage = <1780000 0 0>;qcom,cam-vreg-max-voltage = <1950000 0 0>;qcom,cam-vreg-op-mode = <105000 0 0>;qcom,gpio-no-mux = <0>;pinctrl-names = "cam_default", "cam_suspend";pinctrl-0 = <&cam_sensor_mclk1_active&cam_sensor_front_active>;pinctrl-1 = <&cam_sensor_mclk1_suspend&cam_sensor_front_suspend>;gpios = <&tlmm 33 0>,<&tlmm 47 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_MCLK1","CAM_RESET1";qcom,cam-power-seq-type = "sensor_gpio","sensor_vreg","sensor_vreg","sensor_vreg","sensor_clk","sensor_gpio";qcom,cam-power-seq-val =  "sensor_gpio_reset","cam_vdig","cam_vana","cam_vio","sensor_cam_mclk","sensor_gpio_reset";qcom,cam-power-seq-cfg-val = <0 1 1 1 24000000 1>;qcom,cam-power-seq-delay = <1 1 1 0 1 11>;qcom,sensor-position = <1>;qcom,sensor-mode = <0>;qcom,cci-master = <1>;status = "ok";clocks = <&clock_mmss MCLK1_CLK_SRC>,<&clock_mmss MMSS_CAMSS_MCLK1_CLK>;clock-names = "cam_src_clk", "cam_clk";qcom,clock-rates = <24000000 0>;
};

key note
1.eeprom一页的读取示例解析:

//page 0
qcom,page0 = <1 0x100 2 0x01 1 1>; //打开stream(解析:向0x100地址的寄存器中写0x01)
qcom,poll0 = <0 0x0 2 0 1 1>;
qcom,mem0 = <0 0x0 2 0 1 0>;qcom,page1 = <1 0x0A02 2 0x01 1 1>; //设置page
qcom,poll1 = <0 0x0 2 0 1 1>;
qcom,mem1 = <0 0x0 2 0 1 0>;qcom,page2 = <1 0x0A00 2 0x01 1 100>; //使能读
qcom,poll2 = <0 0x0 2 0 1 1>;
qcom,mem2 = <64 0x0A04 2 0 1 0>; //读数据(解析:以0xa04为起始地址,读取64个字节大小的数据)

2.sensor的电源gpio配置与上电时序要写正确。

1.2 hal层:

1.2.1 添加eeprom驱动文件:

file path
vendor/qcom/proprietary/mm-camera/mm-camera2/media-controller/modules/sensors/eeprom/libs/

example
1.创建sensor的eeprom的文件夹。
2.添加sensor的eeprom的驱动文件:
(1)<sensor>_eeprom.c
(2)<sensor>_eeprom.h
(3)Makefile

1.2.2 配置<project&platform>_camera.xml文件:

file path:vendor/qcom-proprietary/mm-camera/mm-camera2/media-controller/modules/sensors/configs/gm8plus_camera.xml

example
添加下述代码中的<EepromName>:

<CameraModuleConfig><CameraId>2</CameraId><SensorName>s5k3h7_sunny_a8s05a_front_i</SensorName><EepromName>s5k3h7_sunny_a8s05a_front_i</EepromName><FlashName>pmic</FlashName><ChromatixName>s5k3h7_sunny_a8s05a_front_i_chromatix</ChromatixName><ModesSupported>1</ModesSupported><Position>FRONT</Position><MountAngle>270</MountAngle><CSIInfo><CSIDCore>2</CSIDCore><LaneMask>0x1F</LaneMask><LaneAssign>0x4320</LaneAssign><ComboMode>0</ComboMode></CSIInfo><LensInfo><FocalLength>1.97</FocalLength><FNumber>2.0</FNumber><TotalFocusDistance>1.9</TotalFocusDistance><HorizontalViewAngle>84.0</HorizontalViewAngle><VerticalViewAngle>63.0</VerticalViewAngle><MinFocusDistance>0.1</MinFocusDistance></LensInfo>
</CameraModuleConfig>

1.2.3 把前面所有make file中的LOCAL_MODULE添加最终的make file(device-vendor.mk):

file path:vendor/qcom/proprietary/common/config/device-vendor.mk

example

MM_CAMERA += libmmcamera_s5k3h7_sunny_a8s05a_front_i_eeprom

key note:example中的s5k3h7_sunny_a8s05a_front_i_eeprom要与《1.2.1》添加的Makefile文件中的LOCAL_MODULE、《1.2.2》配置的xml文件中的<EepromName>一致。

Qualcomm camera OTP bring up相关推荐

  1. MTK camera flashlight bring up

    MTK camera flashlight bring up MTK camera flashlight bring up 一查看硬件原理图 front camera rear camera key ...

  2. Camera sensor bring up

    众所周知,camera在我们生活中应用十分广泛,在未来智能硬件社会,camera就是设备的眼睛,它的机器视觉也将扮演非常重要的角色.在我们移动设备终端中,我们知道camera模组是由镜头(lens). ...

  3. Qualcomm 音频学习(Bring up)

    原址 Qualcomm Audio HAL 音频通路设置 前言 最近在学习高通的音频驱动,在学习了高通音频 bring up 和 Audio overview 文档后,并在网上寻找到一篇比较重要的 b ...

  4. 高通camera OTP与EEPROM

    OTP(One Time Programmable)是一种存储器类型,意思是一次性可编程:程序烧入之后,将不可再次更改和清除. OTP的作用:sensor OTP是用来保证每个sensor一致性的一些 ...

  5. MTK Camera Senor Bring up 复盘总结

    和你一起终身学习,这里是程序员Android 经典好文推荐,通过阅读本文,您将收获以下知识点: 一 .ProjectConfig.mk文件配置 二.defconfig文件修改 三.kernel层驱动代 ...

  6. qualcomm平台 display bring up 过程详解

    1.参考文档:  1) 80-NA157-174_E_DSI_Programing_Guide_B-Family_Android_Devices.pdf 2) 80-NN766-1_A_Linux_A ...

  7. qcom camera小技巧

    1.dump camera otp data 数据列表: Whitebalance calibration data Lens shading correction calibration data ...

  8. Camera HAL(Camera Preview)

    看看Android系统,高通camera hal(camera3)当中camera preview数据是怎么从kernel一层一层传递,最终发给SurfaceView的. 高通的Camera HAL的 ...

  9. Android MTK Camera博客分享

    MTK Camera博客分享 MTK Camera OTP调用过程 MTK Camera Flashlight调用过程 MTK Camera 应用层到底层过程 MTK Camera HAL层分析 深入 ...

最新文章

  1. 五个最佳案例带你解读Node.js的前后之道
  2. 【译】JavaScript 核心(第二版)
  3. 修改Jupyter的工作空间
  4. python网络协议编辑器_python模块:网络协议和支持
  5. java多线程正在旋转的_一个正在高速旋转的巨大黑洞:速度竟达到光速的一半!...
  6. PyTorch 1.0 中文官方教程:使用 PyTorch 进行图像风格转换
  7. 华为公开“实现汽车中电子控制功能的系统”相关专利
  8. centos安装redmine项目管理系统
  9. 输入广义表建立子女兄弟链表示的树
  10. 拓端tecdat|R语言互联网金融下的中国保险业数据分析
  11. 【javascript练习题】函数
  12. Linux 安装Python3
  13. LabVIEW开发实战:Labview简介
  14. 耳挂式蓝牙耳机原理_一种耳挂式蓝牙耳机的制作方法
  15. 超详细VRRP基础配置
  16. 转义sed替换模式字符串
  17. 怎样将多个视频快速分割成两段或者多段
  18. 互联网的一些事 - 科学与灵修:创业者精神修炼问题
  19. android 限制后台进程,Android O Preview 相关-后台执行限制
  20. 利用C++求解一元二次方程

热门文章

  1. python 任务管理系统_Python3+Huey+Zreorpc+Redis+Flask=RTask 轻量级分布式任务管理系统...
  2. The Fewest Coins 找零钱
  3. Class类文件结构分析
  4. 使用 k3s 在 Centos7 上运行 K8S
  5. c# Bartender打印开发详解
  6. html css怎么做太阳,Html+css编写太阳星系
  7. 翼码张波O2O分享8:O2O的消费体验
  8. 卸载HP笔记本Conexant Flow
  9. 时间复杂度T(n)和渐进时间复杂度O(n)是什么,该如何计算?
  10. Egret---白鹭引擎