MTK camera 闪光灯Flashlight驱动调试流程

分类: MtkDev  |  作者: topicdev 相关  |  发布日期 : 2014-09-26  |  热度 : 153°
 
 

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.      这个文件完成的任务是填充以下几个函数:

  1. 315FLASHLIGHT_FUNCTION_STRUCT constantFlashlightFunc=
  2. 316{
  3. 317     constant_flashlight_open,
  4. 318     constant_flashlight_release,
  5. 319     constant_flashlight_ioctl
  6. 320 };

4.      我们主要分析的是constant_flashlight_ioctl,以为这是跟HAL实际握手的接口。

iii.             mediatek/platform/mt6592/hardware/mtkcam/core/featureio/drv/strobe/flashlight_drv.cpp

这个文件完成的任务比较多,主要是一些类的实现和定义。

  1. 825 intFlashlightDrv::setFlashlightModeConf(unsigned long a_strobeMode)
  2. 897 intFlashlightDrv::setCaptureFlashlightConf(unsigned long a_strobeWidth)
  3. 952 intFlashlightDrv::setCaptureDelay(unsigned int value)
  4. 1021 intFlashlightDrv::getDuty(int* duty)
  5. 1090 intFlashlightDrv::lowPowerDetectEnd(int* isLowPower)

主要是为flash_mgr.cpp提供接口。

iv.             mediatek/platform/mt6592/hardware/mtkcam/core/featureio/pipe/aaa/flash_mgr/flash_mgr.cpp

实现闪光灯模式的设置和获取、拍照/摄像预览的开启和终止、闪光灯设备的打开和关闭等等。

  1. 1479 void FlashMgr::setTorchOnOff(int en)
  2. 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提供接口。

  1. 128 int FlashMgr::cctFlashEnable(int en)
  2. 129 {
  3. 130    LogInfo("cctFlashEnable(en=%d) line=%d",en,__LINE__);
  4. 131     if(en==1)
  5. 132     {
  6. 133        setFlashMode(FLASHLIGHT_FORCE_ON);
  7. 134     }
  8. 135     else
  9. 136     {
  10. 137        setFlashMode(FLASHLIGHT_FORCE_OFF);
  11. 138     }
  12. 139     return 0;
  13. 140 }

vi.             mediatek/platform/mt6592/hardware/mtkcam/acdk/src/cct/if/cct_feature.cpp

调用flash_cct.cpp中的函数,并以IOCTL的形式进行封装,供更上一层次调用。具体的没有在继续跟下去,有兴趣的话,可以再往上分析分析。

  1. MINT32 CctImp::aaaCCTFeatureControl
  2. 361    case ACDK_CCT_OP_FLASH_ENABLE:
  3. 362        err = FlashMgr::getInstance()->cctFlashEnable(1); //YosenFlash
  4. 363        break;
  5. 364    case ACDK_CCT_OP_FLASH_DISABLE:
  6. 365        err = FlashMgr::getInstance()->cctFlashEnable(0); //YosenFlash

原文:http://www.aiuxian.com/article/p-1646401.html

MTK camera 闪光灯Flashlight驱动调试流程的更多相关文章

  1. LCD之mipi DSI接口驱动调试流程【转】

    转自:http://blog.csdn.net/liwei16611/article/details/68146912 1.LCD MIPI DSI协议 MIPI-DSI是一种应用于显示技术的串行接口 ...

  2. Mtk Camera

    MTK6577+Android之Camera驱动 http://blog.csdn.net/loongembedded/article/details/41695205 MTK Camera 开机启动 ...

  3. MTK Camera驱动移植

    对于MTK Camera驱动移植一般分为四部分: 1.硬件IO口配置: 2.Camera驱动移植: 3.上电时序. 4.改动i2c控制器: 硬件电路: 1.GPIO配置 打开 mediatek\dct ...

  4. 基于GPL329xx linux平台电容屏gsl1680的驱动调试分析

    因客户有用到了gsl1680 7寸电容屏,所以拿了一块过来,便在329xx的平台上面开始调试了. 大概浏览了一下所提供的资料,只有介绍模组的资料跟一份中文版的datasheet,datasheet只是 ...

  5. 【转】android 电容屏(三):驱动调试之驱动程序分析篇

    关键词:android  电容屏 tp 工作队列 中断 坐点计算  电容屏主要参数平台信息:内核:linux2.6/linux3.0系统:android/android4.0  平台:S5PV310( ...

  6. mtk camera 移植步骤

    mtk camera 移植步骤: 1, Kernel层驱动代码文件添加 /mediatek/custom/doov92_wet_tdd/kernel/imgsensor/下添加imx179_mipi_ ...

  7. 驱动调试(三)oops确定函数PC

    目录 驱动调试(三)oops确定函数PC 什么是oops 流程简述 代码仓库 模块例子分析 找到PC值 判断是否属于模块 查看符号表 找到模块 反汇编模块 内核例子分析 找到PC值 判断是否属于模块 ...

  8. debian下使用dynamic printk分析usb转串口驱动执行流程

    看了一篇文章<debug by printing>,文中提到了多种通过printk来调试驱动的方法,其中最有用的就是"Dynamic debugging". “Dyna ...

  9. linux驱动开发流程

    嵌入式linux驱动开发流程嵌入式系统中,操作系统是通过各种驱动程序来驾驭硬件设备的.设备驱动程序是操作系统内核和硬件设备之间的接口,它为应用程序屏蔽了硬件的细节,这样在应用程序看来,硬件设备只是一个 ...

随机推荐

  1. [转帖]c++ 面试整理

    1. 继承方式 public    父类的访问级别不变 protected    父类的public成员在派生类编程protected,其余的不变 private        父类的所有成员变成pr ...

  2. ajax 实现输入提示效果

    网站主页 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF- ...

  3. sql server 大数据跨服务器迁移表数据——使用链接服务器

    1.创建链接服务器(填写链接服务器.远程登录.使用密码) 2.188.188.1.177是远程的 select count(*) from [188.188.1.177].BigDataAnalysi ...

  4. 在VirtualBox上安装Solaris 10全教程(包括下载)

    您可以在博文的最下方留下评价, 也可以点击左边的 关注 来关注我的博客的最新动态. 如果文章内容对您有帮助, 不要忘记点击右下角的 推荐 来支持一下喔 如果您对博文有任何疑问, 可以通过评论或发邮件的 ...

  5. SQL基本操作——函数

    函数的类型:在 SQL 中,基本的函数类型和种类有若干种.函数的基本类型是:Aggregate 函数.Scalar 函数. Aggregate 函数:操作面向一系列的值,并返回一个单一的值,下面是SQ ...

  6. 关于Python中的类普通继承与super函数继承

    关于Python中的类普通继承与super函数继承 1.super只能用于新式类 2.多重继承super可以保公共父类仅被执行一次 一.首先看下普通继承的写法 二.再看看super继承的写法 参考链接 ...

  7. DateTimePicker 控件置空

    dtOrderDateFrom.Format = DateTimePickerFormat.Custom; dtOrderDateFrom.CustomFormat = " "; ...

  8. 有赞 MySQL 自动化运维之路 — ZanDB

    转自:https://tech.youzan.com/youzan-mysql-auto-ops-road/ 一.前言 在互联网时代,业务规模常常出现爆发式的增长.快速的实例交付,数据库优化以及备份管 ...

  9. swift--Xcode7 使用Alamofire框架发送HTTP请求报错

    控制台打印的错误信息: Application Transport Security has blocked a cleartext HTTP (http://) resource load sinc ...

  10. ionic使用cryptojs加密 复制到黏贴版 使用md5

    npm install crypto-js npm install --save @types/crypto-js import * as crypto from "crypto-js&qu ...