Gc2235camera porting guide

MTK
1  添加驱动 
1.1  在以下路径中添加好相应驱动 

  路径:mediatek\custom\common\kernel\imgsensor\gc2235_raw

gc2235_Camera_Sensor_para.h

gc2235_CameraCustomized.h

gc2235_Sensor.c

gc2235_Sensor.h

 
  路径:mediatek\custom\common\hal\imgsensor\gc2235_raw

camera_AE_PLineTable_gc2235raw.h

camera_info_gc2235raw_mt6575.h

camera_isp_pca_gc2235raw_mt6575.h

camera_isp_regs_gc2235raw_mt6575.h

camera_tuning_para_gc2235raw_mt6575.cpp

lens_para_CHT.cpp


1.2  修改驱动相关文件 
  路径:mediatek\config\XXXX(红色字为具体的项目名) 
文件:ProjectConfig.mk 
添加内容: 
CUSTOM_KERNEL_IMGSENSOR =  ……  gc2235_raw 
CUSTOM_KERNEL_MAIN_IMGSENSOR =  ……  gc2235_raw 
CUSTOM_HAL_IMGSENSOR =  ……  gc2235_raw 
CUSTOM_HAL_MAIN_IMGSENSOR =  ……  gc2235_raw 
 
如果没有AF请修改宏: 
CUSTOM_HAL_LENS=dummy_lens # fm50af  
CUSTOM_HAL_MAIN_LENS=dummy_lens# fm50af 
CUSTOM_KERNEL_LENS=dummy_lens # fm50af  
CUSTOM_KERNEL_MAIN_LENS=dummy_lens# fm50af 
 
  路径:mediatek\custom\common\kernel\imgsensor\src 
文件:kd_sensorlist.h 
添加内容: 
UINT32 GC2235SensorInit(PSENSOR_FUNCTION_STRUCT *pfFunc); 
 ACDK_KD_SENSOR_INIT_FUNCTION_STRUCT 
kdSensorList[MAX_NUM_OF_SUPPORT_SENSOR+1] = 

………… 
………… 
#if defined(GC2235_RAW) 
    {GC2235_SENSOR_ID, SENSOR_DRVNAME_GC2235_RAW, GC2235SensorInit},  
#endif 
………… 
………… 
}; 
  路径:mediatek\custom\common\kernel\imgsensor\inc 
文件:kd_imgsensor.h 
添加内容: 
#define GC2235_SENSOR_ID                 0x2235 
 
#define SENSOR_DRVNAME_GC2235_RAW     "gc2235" 
 
  路径:mediatek\custom\common\hal\imgsensor\src 
文件:sensorlist.cpp 
添加内容: 
MSDK_SENSOR_INIT_FUNCTION_STRUCT SensorList[] = 

………… 
#if defined(GC2235_RAW) 
RAW_INFO(GC2235_SENSOR_ID, SENSOR_DRVNAME_GC2235_RAW, NULL),  
#endif 
………… 
}; 
1.3  上电及供电电压的修改 
路径:mediatek\custom\XXXX\kernel\camera\camera 
文件:kd_camera_hw.c 
修改内容: 

  //for main sensor  
  {GPIO_CAMERA_CMRST_PIN, 
  GPIO_CAMERA_CMRST_PIN_M_GPIO,   /* mode */ 
  GPIO_OUT_ONE,                   /* ON state */ 
  GPIO_OUT_ZERO,                  /* OFF state */ 
  GPIO_CAMERA_CMPDN_PIN, 
  GPIO_CAMERA_CMPDN_PIN_M_GPIO, 
  GPIO_OUT_ ZERO, 
  GPIO_OUT_ ONE, 
},

………… 
else if(currSensorName &&(0 == strcmp(SENSOR_DRVNAME_GC2235_RAW,currSensorName))){ 
// DVDD  
if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_D, VOL_1800,mode_name))      

………… 

mdelay(1); 

一般只需要修改 DVDD 电压兼容,如果其他电压也需要做兼容,请参照 DVDD 电压的修改。 
 
2  编译下载及调试 
2.1  编译 
  添加好驱动后就可以编译了,第一次添加驱动需要对整个工程进行重新编译。 
命令:./mk XXXX n 
 
  如果只修改了kernel层中的驱动,只需要编译kernel和bootimage即可。 
命令:./mk XXXX r k bootimage 
 
  如果修改的是hal层中的ISP参数,需要单独编译库文件。 
MT6575/MT6515: 
命令:./mk XXXX mm mediatek/source/external/mhal/src/custom 
 
MT6577/MT6517/MT8377: 
命令:./mk XXXX mm mediatek/platform/mt6577/hardware/camera/custom 
 
2.2  下载 
编译完成后将生成ISP库文件,我们需要该文件导入手机才能看到效果。 
库文件生成的路径:out\target\product\XXXX\obj\lib 
文件名:libcameracustom.so 
导入方法: 
1)  将手机用USB线连接至电脑。 
2)  利用adb命令将库文件推送进手机。如,把库文件放在D盘目录中: 
命令:adb push d:/libcameracustom.so /system/lib 
 
2.3  调试 
  调节镜像 
由于是Raw Sensor,在调节镜像的时候比较麻烦,如果是调整寄存器来纠正镜像的
话,之前调好的ISP参数就会失效。 
如果是上下左右都镜像,我们可以通过平台提供的旋转功能来纠正镜像。 
路径:mediatek\custom\XXXX\hal\camera\camera 
文件名: 
MT6515/MT6575:cfg_tuning_mt6575.h 
MT6517/MT6577:cfg_setting_imgsensor.h

修改内容: 
static SensorOrientation_T inst = { 
        u4Degree_0  : 90,   //  main sensor in degree (0, 90, 180, 270) 
        u4Degree_1  : 270,    //  sub  sensor in degree (0, 90, 180, 270) 
}; 
Sensor的Degree根据实际修改,如果原始90°,上下左右镜像则改为270°,以
此类推。 
如果只有一个方向镜像,需要改Sensor的寄存器来纠正,而且ISP参数需要重新调
试。 
 
  调试AEC 
针对AEC收敛不够迅速和平滑,需要检查如下文件: 
路径:mediatek\custom\common\hal\inc\aaa\mt6575\tuning_custom 
文件:ae_tuning_custom_mt6575.h 
修改内容: 
将下表中的数值改成和图中一致。 
static strAEMOVE  g_AEMoveTable[] = 

  …… 

static strAEMOVE g_AEMoveTable[]=

{

{-20,17,25},//mean below -2.5 move increase 25 index

{-20,25,20},// -2.5 ~ -2 move increase 20 index

......


}


=============华丽丽的分割线======================================


Qualcomm
1.  添加驱动 
1.1  在以下路径中添加相应驱动文件 
  路径:kernel\drivers\media\video\msm\sensors

gc2235_v4l2.c

gc2235_v4l2.h

  路径:vendor\qcom\proprietary\mm‐camera\server\hardware\sensor\gc2235

gc2235_u.c

gc2235_u.h

  路径:vendor\qcom\proprietary\mm‐camera\server\chromatix\0208\libchromatix\

chromatix_gc0339

chromatix_gc2235

chromatix_imx074

1.2  修改驱动相关文件 
  路径:kernel\drivers\media\video\msm\ 
文件:Kconfig 
添加内容: 
config GC2235 
bool "Sensor gc2235 (BAYER 2M)" 
depends on MSM_CAMERA 
default y 
‐‐‐help‐‐‐ 
Galaxy Core 2M RAW Sensor 
   
  路径:kernel\drivers\media\video\msm\sensors\ 
文件:Makefile 
添加内容: 
obj‐$(CONFIG_GC2235) += gc2235_v4l2.o 
 
  路径:vendor\qcom\proprietary\mm‐camera\server\hardware\sensor\ 
文件:sensor.c 
在相应位置添加: 
#include "gc2235_u.h" 
 
extern char *gc2235_load_chromatix[]; 
 
static sensor_proc_start_t sensors[] = { 
…… 
SENSORS_PROCCESS_START(gc2235), 
 
…… 

 
  路径:kernel\arch\arm\mach‐msm\ 
文件:board‐msm7627a‐camera.c 
在相应位置添加: 
#ifdef CONFIG_GC2235 
static struct msm_camera_gpio_conf gpio_conf_gc2235 = { 
 .camera_off_table = camera_off_gpio_table, 
 .camera_on_table = camera_on_gpio_table, 
 .gpio_no_mux = 1, 
}; 
#endif 
 
#ifdef CONFIG_GC2235 
static struct msm_actuator_info msm_act_main_cam_8_info = { 
 .board_info     = &msm_act_main_cam_i2c_info, 
 .cam_name   = MSM_ACTUATOR_MAIN_CAM_6, 
 .bus_id         = MSM_GSBI0_QUP_I2C_BUS_ID, 
 .vcm_pwd        = GPIO_NOT_CONFIGURED, 
 .vcm_enable     = 0, 
}; 
 
static struct msm_camera_sensor_platform_info sensor_board_info_gc2235 = { 
 .mount_angle = 90, 
 .cam_vreg = msm_cam_vreg, 
 .num_vreg = ARRAY_SIZE(msm_cam_vreg), 
 .gpio_conf = &gpio_conf_gc2235, 
}; 
 
static struct msm_camera_sensor_flash_src msm_flash_src_gc2235 = { 
 .flash_sr_type = MSM_CAMERA_FLASH_NONE, 
}; 
 
static struct msm_camera_sensor_flash_data flash_gc2235 = { 
 .flash_type             = MSM_CAMERA_FLASH_LED, 
 .flash_src              = &msm_flash_src_gc2235, 
}; 
 
static struct msm_camera_sensor_info msm_camera_sensor_gc2235_data = { 
 .sensor_name    = "gc2235", 
 .sensor_reset_enable = 0, 
 .pmic_gpio_enable  = 1, 
 .sensor_reset   = GPIO_NOT_CONFIGURED, 
 
 .sensor_pwd     = GPIO_NOT_CONFIGURED, 
 .pdata          = &msm_camera_device_data_csi1[0], 
 .flash_data     = &flash_gc2235, 
 .sensor_platform_info   = &sensor_board_info_gc2235, 
 .csi_if                 = 1, 
 .camera_type  = BACK_CAMERA_2D, 
 .sensor_type = BAYER_SENSOR, 
 .actuator_info = &msm_act_main_cam_8_info, 
}; 
#endif 
 
#ifdef CONFIG_GC2235 
   msm_camera_sensor_gc2235_data.sensor_reset = GPIO_SKU3_CAM_5MP_CAMIF_RESET; 
   msm_camera_sensor_gc2235_data.sensor_pwd = GPIO_SKU3_CAM_5MP_SHDN_N; 
   sensor_board_info_gc2235.mount_angle = 90; 
   msm_flash_src_gc2235.flash_sr_type = MSM_CAMERA_FLASH_NONE; 
#endif 
 
#ifdef CONFIG_GC2235 
 { 
   I2C_BOARD_INFO("gc2235", 0x78), 
   .platform_data = &msm_camera_sensor_gc2235_data, 
 }, 
#endif 
 
2.  编译下载及调试 
2.1  编译 
添加好文件后即可编译,调用Ter minal窗口进入工程的根目录。 
高通编译前需要配置编译选项,命令: 
. build/envsetup.sh 
choosecombo 
运行以上命令后,需要选择所编译的版本,请根据实际情况配置。 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值