MTK camera 闪光灯Flashlight驱动调试流程
MTK camera 闪光灯Flashlight驱动调试流程
Camera Flash 驱动分析
一、Flash驱动涉及到的文件包含:
mediatek /custom/common/kernel/flashlight/src/kd_flashlightlist.c
mediatek /custom/huaqin_bsp/at808p/base/kernel/flashlight/constant_flashlight/leds_strobe.c
mediatek /platform/mt6592/hardware/mtkcam/core/featureio/drv/strobe/flashlight_drv.cpp
mediatek/platform/mt6592/hardware/mtkcam/core/featureio/pipe/aaa/flash_mgr/flash_mgr.cpp
mediatek/platform/mt6592/hardware/mtkcam/core/featureio/pipe/aaa/flash_mgr/flash_cct.cpp
mediatek/platform/mt6592/hardware/mtkcam/acdk/src/cct/if/cct_feature.cpp
二、Flash驱动代码流程分析:
i. mediatek /custom/common/kernel/flashlight/src/kd_flashlightlist.c
主要完成设备的注册和初始化。
1.注册一个平台设备:名为"kd_camera_flashlight";
2.注册一个平台驱动,name和我们的devices name同名,这个名字主要用来和HAL层的name做匹配用;
3.对IOCTL的一个填充,供HAL调用;
4.做一个接口主要跟我们实际使用的Flash驱动对接,以kdFlashlightList罗列出来;
ii. mediatek/custom/huaqin_bsp/at808p/base/kernel/flashlight/constant_flashlight/leds_strobe.c
1. 这个文件就是我们实际性的使用的Flash驱动文件,从
mediatek/config/huaqin92_wet_b2a_tdd/xxx/ProjectConfig.mk文件中CUSTOM_KERNEL_FLASHLIGHT配置获取具体使用的Flash驱动。
如:
CUSTOM_HAL_FLASHLIGHT= constant_flashlight
CUSTOM_KERNEL_FLASHLIGHT = constant_flashlight
2. 该文件和kd_flashlightlist.c文件的对接函数为:
323 MUINT32constantFlashlightInit(PFLASHLIGHT_FUNCTION_STRUCT *pfFunc)
3. 这个文件完成的任务是填充以下几个函数:
- 315FLASHLIGHT_FUNCTION_STRUCT constantFlashlightFunc=
- 316{
- 317 constant_flashlight_open,
- 318 constant_flashlight_release,
- 319 constant_flashlight_ioctl
- 320 };
4. 我们主要分析的是constant_flashlight_ioctl,以为这是跟HAL实际握手的接口。
iii. mediatek/platform/mt6592/hardware/mtkcam/core/featureio/drv/strobe/flashlight_drv.cpp
这个文件完成的任务比较多,主要是一些类的实现和定义。
- 825 intFlashlightDrv::setFlashlightModeConf(unsigned long a_strobeMode)
- 897 intFlashlightDrv::setCaptureFlashlightConf(unsigned long a_strobeWidth)
- 952 intFlashlightDrv::setCaptureDelay(unsigned int value)
- 1021 intFlashlightDrv::getDuty(int* duty)
- 1090 intFlashlightDrv::lowPowerDetectEnd(int* isLowPower)
主要是为flash_mgr.cpp提供接口。
iv. mediatek/platform/mt6592/hardware/mtkcam/core/featureio/pipe/aaa/flash_mgr/flash_mgr.cpp
实现闪光灯模式的设置和获取、拍照/摄像预览的开启和终止、闪光灯设备的打开和关闭等等。
- 1479 void FlashMgr::setTorchOnOff(int en)
- 2276 intFlashMgr::setFlashMode(int mode)
v. mediatek/platform/mt6592/hardware/mtkcam/core/featureio/pipe/aaa/flash_mgr/flash_cct.cpp
调用lash_mgr.cpp中的函数来给cct_feature.cpp提供接口。
- 128 int FlashMgr::cctFlashEnable(int en)
- 129 {
- 130 LogInfo("cctFlashEnable(en=%d) line=%d",en,__LINE__);
- 131 if(en==1)
- 132 {
- 133 setFlashMode(FLASHLIGHT_FORCE_ON);
- 134 }
- 135 else
- 136 {
- 137 setFlashMode(FLASHLIGHT_FORCE_OFF);
- 138 }
- 139 return 0;
- 140 }
vi. mediatek/platform/mt6592/hardware/mtkcam/acdk/src/cct/if/cct_feature.cpp
调用flash_cct.cpp中的函数,并以IOCTL的形式进行封装,供更上一层次调用。具体的没有在继续跟下去,有兴趣的话,可以再往上分析分析。
- MINT32 CctImp::aaaCCTFeatureControl
- 361 case ACDK_CCT_OP_FLASH_ENABLE:
- 362 err = FlashMgr::getInstance()->cctFlashEnable(1); //YosenFlash
- 363 break;
- 364 case ACDK_CCT_OP_FLASH_DISABLE:
- 365 err = FlashMgr::getInstance()->cctFlashEnable(0); //YosenFlash
原文:http://www.aiuxian.com/article/p-1646401.html
MTK camera 闪光灯Flashlight驱动调试流程的更多相关文章
- LCD之mipi DSI接口驱动调试流程【转】
转自:http://blog.csdn.net/liwei16611/article/details/68146912 1.LCD MIPI DSI协议 MIPI-DSI是一种应用于显示技术的串行接口 ...
- Mtk Camera
MTK6577+Android之Camera驱动 http://blog.csdn.net/loongembedded/article/details/41695205 MTK Camera 开机启动 ...
- MTK Camera驱动移植
对于MTK Camera驱动移植一般分为四部分: 1.硬件IO口配置: 2.Camera驱动移植: 3.上电时序. 4.改动i2c控制器: 硬件电路: 1.GPIO配置 打开 mediatek\dct ...
- 基于GPL329xx linux平台电容屏gsl1680的驱动调试分析
因客户有用到了gsl1680 7寸电容屏,所以拿了一块过来,便在329xx的平台上面开始调试了. 大概浏览了一下所提供的资料,只有介绍模组的资料跟一份中文版的datasheet,datasheet只是 ...
- 【转】android 电容屏(三):驱动调试之驱动程序分析篇
关键词:android 电容屏 tp 工作队列 中断 坐点计算 电容屏主要参数平台信息:内核:linux2.6/linux3.0系统:android/android4.0 平台:S5PV310( ...
- mtk camera 移植步骤
mtk camera 移植步骤: 1, Kernel层驱动代码文件添加 /mediatek/custom/doov92_wet_tdd/kernel/imgsensor/下添加imx179_mipi_ ...
- 驱动调试(三)oops确定函数PC
目录 驱动调试(三)oops确定函数PC 什么是oops 流程简述 代码仓库 模块例子分析 找到PC值 判断是否属于模块 查看符号表 找到模块 反汇编模块 内核例子分析 找到PC值 判断是否属于模块 ...
- debian下使用dynamic printk分析usb转串口驱动执行流程
看了一篇文章<debug by printing>,文中提到了多种通过printk来调试驱动的方法,其中最有用的就是"Dynamic debugging". “Dyna ...
- linux驱动开发流程
嵌入式linux驱动开发流程嵌入式系统中,操作系统是通过各种驱动程序来驾驭硬件设备的.设备驱动程序是操作系统内核和硬件设备之间的接口,它为应用程序屏蔽了硬件的细节,这样在应用程序看来,硬件设备只是一个 ...
随机推荐
- RabbitMQ 创建用户和创建Virtual host
https://www.bilibili.com/video/av18997807/?p=3 Virtual host 就是类似数据库吧.
- vue iView 打包后 字体图标不显示
问题描述: 今天webpack打包后发现iView 字体图标不显示 解决方案: build/webpack.prod.conf.js 这个文件里面 module: { rules: utils.sty ...
- html——标签选择器
交集选择器:标签+类(ID)选择器{属性:值:}.即要满足使用了某个标签,还要满足使用了类(id)选择器. <!DOCTYPE html> <html> <head> ...
- java攻城狮之路--复习JDBC(利用BeanUtils、JDBC元数据编写通用的查询方法;元数据;Blob;事务;批量处理)
1.利用BeanUtils的前提得要加入以下两个jar包: commons-beanutils-1.8.0.jar commons-logging-1.1.1.jar package com.shel ...
- mysql自动增长的有关问题,怎么恢复从1开始
mysql自动增长的问题,如何恢复从1开始在一个表中我设置到autoid为自动增长列例如有如下数据 1 张三 男 202 王五 男 223 李四 男 254 陈大 男 19 现在我把 autoid=3 ...
- CentOS7将firewall切换为iptables防火墙
- HDU_1085_Holding Bin-Laden Captive!_母函数
Holding Bin-Laden Captive! Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Ja ...
- 扩增子图表解读8网络图:节点OTU或类Venn比较
网络图 Network 网络图虽然给人高大上的感觉,但是由于信息太多,无法给读者提供读有效的可读信息或是读者不知道该理解什么,总是让人望尔却步.那是因为大家太不了解网络,自己读不懂网络想表达的意思及其 ...
- redis查看数据
目前Redis缓存数据库在许多行业平台大量应用,有效解决了高并发等特定场景的应用性能瓶颈,Redis数据的查看.维护,性能监控有没有好用的工具呢,目前TreeSoft数据库管理系统可以满足实现需求. ...
- P2746 [USACO5.3]校园网Network of Schools// POJ1236: Network of Schools
P2746 [USACO5.3]校园网Network of Schools// POJ1236: Network of Schools 题目描述 一些学校连入一个电脑网络.那些学校已订立了协议:每个学 ...