Qualcomm camera OTP bring up
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 kernel层
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相关推荐
- MTK camera flashlight bring up
MTK camera flashlight bring up MTK camera flashlight bring up 一查看硬件原理图 front camera rear camera key ...
- Camera sensor bring up
众所周知,camera在我们生活中应用十分广泛,在未来智能硬件社会,camera就是设备的眼睛,它的机器视觉也将扮演非常重要的角色.在我们移动设备终端中,我们知道camera模组是由镜头(lens). ...
- Qualcomm 音频学习(Bring up)
原址 Qualcomm Audio HAL 音频通路设置 前言 最近在学习高通的音频驱动,在学习了高通音频 bring up 和 Audio overview 文档后,并在网上寻找到一篇比较重要的 b ...
- 高通camera OTP与EEPROM
OTP(One Time Programmable)是一种存储器类型,意思是一次性可编程:程序烧入之后,将不可再次更改和清除. OTP的作用:sensor OTP是用来保证每个sensor一致性的一些 ...
- MTK Camera Senor Bring up 复盘总结
和你一起终身学习,这里是程序员Android 经典好文推荐,通过阅读本文,您将收获以下知识点: 一 .ProjectConfig.mk文件配置 二.defconfig文件修改 三.kernel层驱动代 ...
- 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 ...
- qcom camera小技巧
1.dump camera otp data 数据列表: Whitebalance calibration data Lens shading correction calibration data ...
- Camera HAL(Camera Preview)
看看Android系统,高通camera hal(camera3)当中camera preview数据是怎么从kernel一层一层传递,最终发给SurfaceView的. 高通的Camera HAL的 ...
- Android MTK Camera博客分享
MTK Camera博客分享 MTK Camera OTP调用过程 MTK Camera Flashlight调用过程 MTK Camera 应用层到底层过程 MTK Camera HAL层分析 深入 ...
最新文章
- 五个最佳案例带你解读Node.js的前后之道
- 【译】JavaScript 核心(第二版)
- 修改Jupyter的工作空间
- python网络协议编辑器_python模块:网络协议和支持
- java多线程正在旋转的_一个正在高速旋转的巨大黑洞:速度竟达到光速的一半!...
- PyTorch 1.0 中文官方教程:使用 PyTorch 进行图像风格转换
- 华为公开“实现汽车中电子控制功能的系统”相关专利
- centos安装redmine项目管理系统
- 输入广义表建立子女兄弟链表示的树
- 拓端tecdat|R语言互联网金融下的中国保险业数据分析
- 【javascript练习题】函数
- Linux 安装Python3
- LabVIEW开发实战:Labview简介
- 耳挂式蓝牙耳机原理_一种耳挂式蓝牙耳机的制作方法
- 超详细VRRP基础配置
- 转义sed替换模式字符串
- 怎样将多个视频快速分割成两段或者多段
- 互联网的一些事 - 科学与灵修:创业者精神修炼问题
- android 限制后台进程,Android O Preview 相关-后台执行限制
- 利用C++求解一元二次方程
热门文章
- python 任务管理系统_Python3+Huey+Zreorpc+Redis+Flask=RTask 轻量级分布式任务管理系统...
- The Fewest Coins 找零钱
- Class类文件结构分析
- 使用 k3s 在 Centos7 上运行 K8S
- c# Bartender打印开发详解
- html css怎么做太阳,Html+css编写太阳星系
- 翼码张波O2O分享8:O2O的消费体验
- 卸载HP笔记本Conexant Flow
- 时间复杂度T(n)和渐进时间复杂度O(n)是什么,该如何计算?
- Egret---白鹭引擎