mtk android mcp camera更改

mtk android  mcp camera更改       

        分类:            android驱动转载篇 247人阅读 评论(0) 收藏 举报

http://blog.csdn.net/jiangjingui2011/article/details/7098067


--------------------------------------------------------------
1.更换 flash 型号
--------------------------------------------------------------

修改:  alps/mediatek/custom/lcsh73_gb/preloader/inc/custom_MemoryDevice.h

/*MTK 6573每个片选的范围是 2Gb,默认用CS0来片选 , 如果外挂的RAM是4Gb的话 ,还需要用到CS1来片选后面的2Gb 。*/

/*每个手机配置的flash 需要跑 ECC 才能得到一个合适的时序配置,这个时序需要MTK协助调试 */
#define BOARD_ID                 MT6573_EVB

/*2Gb ram cs config*/
#define CS0_PART_NUMBER[0]       K524G2GACB_A050

/*4Gb ram cs config*/
//#define CS0_PART_NUMBER[0]       MT29C4G96MAZAPCJA_5IT
//#define CS1_PART_NUMBER[0]       MT29C4G96MAZAPCJA_5IT

/*同一size的多falsh兼容可以按如下方式配置 :flash 4Gb ram cs config*/
//add first flash config
//#define CS0_PART_NUMBER[0]       MT29C4G96MAZAPCJA_5IT
//#define CS1_PART_NUMBER[0]       MT29C4G96MAZAPCJA_5IT

//add second flash config
//#define CS0_PART_NUMBER[1]       EHD013151MA_50
//#define CS1_PART_NUMBER[1]       EHD013151MA_50

编译:
//重新生成时序
./mk lcsh73_gb emigen  

//重新编译 preloader uboot  kernel 三个模块
./mk lcsh73_gb c,r pl ub k
 

--------------------------------------------------------------
2.更换 camera
--------------------------------------------------------------

修改:

1. alps/mediatek/config/lcsh73_gb/ProjectConfig.mk

/*---------------------------------------------------------------------------------------------------
*
*  camera 配置一般有后摄像头(main)和前摄像头(sub)。
*
*  另外每个摄像头还可以配置 是否支持lens 及 flashlight。 
*
*  不支持flashlight 则 设置 dummy_flashlight     不支持 lens 则 设置 dummy_lens 
*----------------------------------------------------------------------------------------------------*/

  CUSTOM_HAL_IMGSENSOR = hi253_yuv hi704_yuv                                 
  CUSTOM_KERNEL_IMGSENSOR = hi253_yuv hi704_yuv

CUSTOM_HAL_LENS = dummy_lens dummy_lens
CUSTOM_KERNEL_LENS = dummy_lens dummy_lens

CUSTOM_HAL_MAIN_LENS = dummy_lens
CUSTOM_HAL_SUB_LENS = dummy_lens

CUSTOM_HAL_MAIN_IMGSENSOR = hi253_yuv
CUSTOM_HAL_MAIN_BACKUP_IMGSENSOR =

CUSTOM_HAL_SUB_IMGSENSOR = hi704_yuv
CUSTOM_HAL_SUB_BACKUP_IMGSENSOR =

CUSTOM_KERNEL_FLASHLIGHT = dummy_flashlight
CUSTOM_KERNEL_SUB_LENS = dummy_lens

CUSTOM_KERNEL_MAIN_IMGSENSOR = hi253_yuv
        CUSTOM_KERNEL_MAIN_BACKUP_IMGSENSOR =

CUSTOM_KERNEL_SUB_IMGSENSOR = hi704_yuv
CUSTOM_KERNEL_SUB_BACKUP_IMGSENSOR =

2.如果内核中当前没有对应的camera驱动,需要在以下几个地方增加对应的代码。

1)在 alps/mediatek/custom/common/kernel/imgsensor 增加对应的驱动文件夹:
如 hi253_yuv 文件夹,里面包含:
      ├── hi253yuv_CameraCustomized.h
     ├── hi253yuv_Camera_Sensor_para.h
     ├── hi253yuv_Sensor.c
     └── hi253yuv_Sensor.h


2)在alps/mediatek/custom/common/kernel/imgsensor/src/kd_sensorlist.h添加对应的驱动结构体
如添加 hi253 yuv的结构体:
  
  UINT32 HI253_YUV_SensorInit(PSENSOR_FUNCTION_STRUCT *pfFunc);
 
  #if defined(HI253_YUV)
      {HI253_SENSOR_ID, SENSOR_DRVNAME_HI253_YUV, HI253_YUV_SensorInit},
  #endif

3)在alps/mediatek/custom/common/hal/imgsensor 增加对应的hal文件夹
如添加 hi253_yuv 文件夹,里面包含:
     ├── camera_info_hi253_yuv.cpp
     ├── camera_info_hi253_yuv.h
     ├── camera_sensor_para_hi253_yuv.h
     ├── camera_tuning_para_hi253_yuv.cpp
     ├── cfg_ftbl_hi253_yuv.h   //yuv camera 拍照尺寸设置等配置在这边修改
     └── feature_hi253_yuv.cpp

4)在alps/mediatek/custom/common/hal/imgsensor/src/sensorlist.cpp 添加对应的驱动结构体
如添加 hi253 yuv的结构体

  #if defined(HI253_YUV)
      YUV_INFO(HI253_SENSOR_ID, SENSOR_DRVNAME_HI253_YUV,NULL),
  #endif

3.如果内核中当前没有对应的lens驱动,需要在以下几个地方增加对应的代码。

1)在 alps/mediatek/custom/common/kernel/lens 增加对应的驱动文件夹:
如 mt9p017af文件夹,里面包含:MT9P017AF.c

2)在alps/mediatek/custom/common/hal/lens 增加对应的hal文件夹
如添加 mt9p017af 文件夹,里面包含: lens_para_MT9P017AF.cpp

3)在alps/mediatek/custom/common/hal/lens/src/lenslist.cpp 添加对应的驱动结构体
如添加 MT9P017AF的结构体

  #if defined(MT9P017AF)
  extern PFUNC_GETLENSDEFAULT pMT9P017AF_getDefaultData;
  #endif

  #if defined(MT9P017AF)
   {MT9P017_SENSOR_ID, MT9P017AF_LENS_ID, "MT9P017AF", pMT9P017AF_getDefaultData},
  #endif

4.若有用到flashlight,那么正常需要修改如下地方,如constant_flashlight,

alps/mediatek/custom/common/kernel/flashlight/constant_flashlight/leds_strobe.c

修改控制闪光灯的gpio 配置:

  #define GPIO_CAMERA_FLASH_MODE   GPIO95
  #define GPIO_CAMERA_FLASH_MODE_M_GPIO   GPIO_MODE_00

       //CAMERA-FLASH-T/F
   //H:flash mode
   //L:torch mode

  #ifdef __SLT_DRV_FLASHLIGHT_AW540__

  #define GPIO_CAMERA_FLASH_EN   GPIO100
  #define GPIO_CAMERA_FLASH_EN_M_GPIO   GPIO_MODE_00

  #else

  #define GPIO_CAMERA_FLASH_EN   GPIO95
  #define GPIO_CAMERA_FLASH_EN_M_GPIO   GPIO_MODE_00

  #endif

flashlight 对应的hal位于:

alps/mediatek/custom/common/hal/flashlight/constant_flashlight/flash_light.cpp


编译:
        因为修改到 hal layer 和 kernel,正常重新编译 android 模块和 kernel 模块就可以。建议直接new工程,时间差不多。

./mk lcsh73_gb new

--------------------------------------------------------------
3.camera 插值修改
--------------------------------------------------------------
如将hi253 插值到 3M

修改:

如果是YUV Sensor,需要修改 cfg_ftbl_XXX_yuv.h中的如下部分,将3M的capture size添加进去。

// Capture Size
CONFIG_FEATURE_SI(FID_CAP_SIZE,
BY_DEFAULT( CAPTURE_SIZE_2048_1536),
CAPTURE_SIZE_640_480, CAPTURE_SIZE_1024_768,
CAPTURE_SIZE_1280_960, CAPTURE_SIZE_1600_1200,
CAPTURE_SIZE_2048_1536
)

这个文件如果在 alps\mediatek\custom\$project下面,如果有的话就修改这个路径下的。
如果没有,就修改alps\mediatek\custom\common\hal\imgsensor\XXX_yuv\cfg_ftbl_XXX_yuv.h
注意,如果插值后拍照拍不下来,请降低 capture framerate(主要add dummy pixels 或者 降低pclk)

如果是RAW Sensor,需要修改fg_ftbl_custom_raw_main.h

如果alps\mediatek\custom\mt6573_evb\hal\camera\camera下有这个file,就修改project folder下面的。

如果没有就修改common下面的 alps\mediatek\custom\common\hal\camera\camera\下面的。

#if 1 //将这段code打开
// Capture Size
CONFIG_FEATURE(FID_CAP_SIZE,
BY_DEFAULT(CAPTURE_SIZE_2048_1536),
CAPTURE_SIZE_640_480, CAPTURE_SIZE_1024_768,
CAPTURE_SIZE_1280_960, CAPTURE_SIZE_1600_1200,
CAPTURE_SIZE_2048_1536
)
#endif
同YUV sensor一样,只要将3M capture size add 进入就可以。


编译:
因为修改到 hal layer 和 kernel,正常重新编译 android 模块和 kernel 模块就可以。建议直接new工程,时间差不多。

./mk lcsh73_gb new

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值