添加一款新摄像头流程

1添加sensor kernel driver, 主要实现上电、rst、pwd、mclk等power setting,sensor prob & sensor  i2c driver prob 和 v4l2_subdev 注册

\kernel\drivers\media\platform\msm\camera_v2\sensor\ov5648.c

2 添加编译选项

obj-$(CONFIG_OV5648)+= ov5648.o

kernel\drivers\media\platform\msm\camera_v2\sensor\Makefile

3 添加编译开关

CONFIG_OV5648=y

kernel/arch/arm/configs/msm8974_defconfig

kernel/arch/arm/configs/msm8974-perf_defconfig

config OV5648

bool "Sensor OV5648 (BAYER 5M)"

depends on MSMB_CAMERA

---help---

OmniVision 5 MP Bayer Sensor,supports 2 mipi lanes,

preview and snapshot config at1932 * 1092 at 30 fps,

hfr video at 60, 90 and 120 fps.This sensor driver does

not support auto focus.

kernel/drivers/media/platform/msm/camera_v2/Kconfig

4 device tree 修改

添加相应sensor的device tree描述

Kenel/arch/arm/boot/dts/msm8974-camera-sensor-cdp.dtsi

+       qcom,camera@6c {
+               compatible = "qcom,ov5648";
+               reg = <0x6c 0x0>;
+               qcom,slave-id = <0x6c 0x300A 0x5648>;
+               qcom,csiphy-sd-index = <2>;
+               qcom,csid-sd-index = <2>;
+               qcom,mount-angle = <90>;
+               qcom,sensor-name = "ov5648";
+               qcom,vdd-cx-supply = <&pm8841_s2>;
+               qcom,vdd-cx-name = "qcom,vdd-cx";
+               cam_vdig-supply = <&pm8941_l22>;
+               cam_vana-supply = <&pm8941_l17>;
+               cam_vio-supply = <&pm8941_lvs3>;
+               qcom,cam-vreg-name = "cam_vdig", "cam_vana", "cam_vio";
+               qcom,cam-vreg-type = <0 0 1>;
+               qcom,cam-vreg-min-voltage = <1500000 2800000 0>;
+               qcom,cam-vreg-max-voltage = <1500000 2800000 0>;
+               qcom,cam-vreg-op-mode = <105000 80000 0>;
+               qcom,gpio-no-mux = <0>;
+               gpios = <&msmgpio 17 0>,
+                       <&msmgpio 18 0>,
+                       <&msmgpio 89 0>;
+               qcom,gpio-reset = <1>;
+               qcom,gpio-standby = <2>;
+               qcom,gpio-req-tbl-num = <0 1 2>;
+               qcom,gpio-req-tbl-flags = <1 0 0>;
+               qcom,gpio-req-tbl-label = "CAMIF_MCLK",
+                                         "CAM_RESET1",
+                                         "CAM_STANDBY";
+               qcom,gpio-set-tbl-num = <1 1>;
+               qcom,gpio-set-tbl-flags = <0 2>;
+               qcom,gpio-set-tbl-delay = <1000 30000>;
+               qcom,csi-lane-assign = <0x4320>;
+               qcom,csi-lane-mask = <0x7>;
+               qcom,sensor-position = <1>;
+               qcom,sensor-mode = <1>;
+               qcom,sensor-type = <0>;
+               qcom,cci-master = <1>;
+               status = "ok";
+       };

5 hal层修改,添加hal层sensor libs 代码,实现对应sensor的init setting, preview setting, 各种resolution setting , group on ,group off,csi csid config etc.  customer 端sensor主要实现

vendor\qcom\proprietary\mm-camera\mm-camera2\media-controller\modules\sensors\sensor_libs\ ov5648

6 hal层 raw camera效果调试文件

vendor\qcom\proprietary\mm-camera\mm-camera2\media-controller\modules\sensors\chromatix\0301\libchromatix\ chromatix_ov5648

7 hal层编译

MM_CAMERA +=libmmcamera_ov5648

MM_CAMERA +=libchromatix_ov5648_common

MM_CAMERA +=libchromatix_ov5648_preview

MM_CAMERA +=libchromatix_ov5648_default_video

MM_CAMERA +=libchromatix_ov5648_hfr

MM_CAMERA +=libchromatix_ov5648_zsl

vendor/qcom/proprietary/common/config/device-vendor.mk

End

msm8974 camera driver添加新摄像头kernel hal修改的更多相关文章

  1. linux添加新LUN,无需重启

    linux添加新LUN,无需重启 在给存储增加新的Lun时,在linux下一般是: A.重启操作系统B.重启HBA卡驱动 1. kudzu添加完新硬盘后,运行命令kudzu重新扫描新的硬件设备,类似a ...

  2. sc7731 Android 5.1 Camera 学习之二 framework 到 HAL接口整理

    前面已经分析过,Client端发起远程调用,而实际完成处理任务的,是Server端的 CameraClient 实例.远程client 和 server是两个不同的进程,它们使用binder作为通信工 ...

  3. Oracle 11g rac 添加新节点测试

    [转]https://blog.csdn.net/shiyu1157758655/article/details/60877076 前期准备: 操作系统设置OS版本必须相同,检查内核参数,系统内存.C ...

  4. rac添加新节点的步骤与方法2

    上一篇文章,把节点删除了.这次新增加一个节点 .新增加的节点是host03.如下: #Public IP192.168.16.45 racdb1192.168.16.46 racdb2192.168. ...

  5. Android下添加新的自定义键值和按键处理流程【转】

    本文转载自: Android下添加新的自定义键值和按键处理流程     说出来不怕大家笑话,我写这篇博客的原因在于前几天去一个小公司面试Android系统工程师,然后在面试的时候对方的技术总监问了我一 ...

  6. [转] 添加新的系统调用 _syscall0(int, mysyscall)

    实验目的阅读 Linux 内核源代码,通过添加一个简单的系统调用实验,进一步理解Linux操作系统处理系统调用的统一流程.通过用kernel module的方法来实现一个系统调用实验,进一步理解Lin ...

  7. 如何在Linux中添加新的系统调用

    系统调用是应用程序和操作系统内核之间的功能接口.其主要目的是使得用户 可以使用操作系统提供的有关设备管理.输入/输入系统.文件系统和进程控制. 通信以及存储管理等方面的功能,而不必了解系统程序的内部结 ...

  8. android 添加新的键值,自定义按键-2【转】

    本文转载自:http://blog.csdn.net/mr_raptor/article/details/8053871 在Android中,上层可使用的键值默认情况下是92个,从0-91:一般情况下 ...

  9. android 添加新的键值,自定义按键【转】

    本文转载自:http://blog.csdn.net/mr_raptor/article/details/8053871 在Android中,上层可使用的键值默认情况下是92个,从0-91:一般情况下 ...

随机推荐

  1. 使用PHP脚本远程部署git项目

    准备工作: 1.coding.net创建私有项目 2.安装了Web服务 Git服务的服务器 服务器端: 1.nginx.php-fpm统一用www用户 www 目录,这个可以通过修改配置文件实现. [ ...

  2. NModBus的使用

    前言:最近在做一个项目,需要使用ModBus RTU与PLC进行通讯,现在将使用过程记录,以便备查. 一.什么是ModBus通讯协议 Modbus协议是应用于电子控制器上的一种通用语言,此协议支持传统 ...

  3. linux系统下安装jdk、tomcat、mysql、redis

    一,安装jdk 1.rpm -qa | grep jdk 检测是否安装jdk 2.rpm -e --nodeps 要卸载的已有jdk名称 3.tar -zxvf jdk-7u71-linux-i586 ...

  4. Python小代码_14_交换 2 个变量的 3 种方式

    a = 4 b = 5 #第一种 c = a a = b b = c print(a, b) #输出结果 #5 4 #第二种 a = a + b b = a - b a = a - b print(a ...

  5. DDD实战进阶第一波(八):开发一般业务的大健康行业直销系统(业务逻辑条件判断最佳实践)

    这篇文章其实是大健康行业直销系统的番外篇,主要给大家讲讲如何在领域逻辑中,有效的处理业务逻辑条件判断的最佳实践问题. 大家都知道,聚合根.实体和值对象这些领域对象都自身处理自己的业务逻辑.在业务处理过 ...

  6. [HCNA]VLAN配置Access接口

    实验目的 1.理解VLAN的应用场景 2.掌握VLAN的基本配置 3.掌握Access接口的配置方法 4.掌握Access接口加入相应VLAN的方法 实验仪器 eNSP 实验原理 如网络拓扑图所示 各 ...

  7. nodeppt的使用教程

    为什么选择nodeppt 这可能是迄今为止最好的网页版演示库 基于GFM的markdown语法编写 支持html混排,再复杂的demo也可以做! 支持多个皮肤:colors-moon-blue-dar ...

  8. OpenSuSE Linux下安装Oracle10g的步骤

    OpenSuSE Linux下安装Oracle10g的步骤: --root用户 --1.vi etc/profile 添加脚本: if [ \$USER = "oracle" ]; ...

  9. Node.js 网络

    稳定性: 3 - 稳定 net 模块提供了异步网络封装,它包含了创建服务器/客户端的方法(调用 streams).可以通过调用 require('net') 包含这个模块. net.createSer ...

  10. PHP 完整表单实例

    PHP - 在表单中确保输入值 在用户点击提交按钮后,为确保字段值是否输入正确,我们在HTML的input元素中插添加PHP脚本, 各字段名为: name, email, 和 website. 在评论 ...