MTK-CAMERA
2017-11-29 13:01
218 查看
硬件环境:MTK6735 & 触摸屏是GT9271
软件环境:Linux内核3.10 & 安卓5.1
1、GPIO配置
(1)打开kernel-3.10/tools/dct/DrvGen.exe
(2)修改kernel-3.10/drivers/misc/mediatek/mach/mt6735/${project}/dct/dct/codegen.dws
(3)配置两个摄像头的reset和powerdown的管脚。
2、camera移植
(1)修改<kernel>/arch/arm/configs/<project>_debug_defconfig 中添加
CONFIG_CUSTOM_KERNEL_IMGSENSOR="ov8858_mipi_raw s5k3h5_mipi_raw"
修改device/rq/<project>/ProjectConfig.mk或device/mediatek/<project>/ProjectConfig.mk
imgsensor相关:
(2)把kernel层的代码ov8858_mipi_raw和s5k3h5_mipi_raw文件夹拷贝到
kernel-3.10/drivers/misc/mediatek/imgsensor/src/mt6735/下在(注意文件夹名字的格式)
(3)将hal层代码整个目录ov8858_mipi_raw s5k3h5_mipi_raw拷贝到vendor/mediatek/proprietary/custom/mt6735/hal/D1/imgsensor/目录下;
(4)修改kernel-3.10/drivers/misc/mediatek/imgsensor/src/mt6735/Makefile
(5)打开kernel-3.10/drivers/misc/mediatek/imgsensor/inc/kd_imgsensor.h文件, 定义sensor id和sensor
name
(并且inc下所有的文件必须拷贝到vendor/mediatek/proprietary/custom/kernel/imgsensor/inc/,这是用户空间可以访问到的目录)
(注意保持队形)
(6)在kernel-3.10/drivers/misc/mediatek/imgsensor/src/mt6735/kd_sensorlist.h文件中声明初始化函数;
如果是YUV sensor,则需要把MIPI_RAW改成YUV
在kdSensorList数组中添加:
(8)如果有AF时,需要修改vendor/mediatek/proprietary/custom/mt6735/hal/D1/lens/src/lenslist.cpp中lenslist[] (只需修改红色)
文件在kernel-3.10/drivers/misc/mediatek/mach/mt6735/rq6735_35gt_b_l1/camera/camera/kd_camera_hw.c
电源部分: VCAM_D就是DVDD数字供电,主要给ISP供电,如果是RAWDATA格式的sensor其ISP是在BB端,所以将其引脚将其NC;
VCAM_IO就是VDDIO数字IO电源主要给I2C部分供电;即DOVDD
VCAM_A就是AVDD模拟供电,主要给感光区和ADC部分供电;
VCAM_AF是对Camera自动对焦马达的供电 ,一半是最后给电
引脚部分: Reset引脚和powerdown引脚
其中XSHUTDN是通过下拉电阻实现置低的reset
根据datasheet上电时序:VCAM_A-》VCAM_IO-》PDN高-》VCAM_D-》RST高-》VCAM_AFO-》PDN高-》RST高
注意:这部分的驱动都有两套路径,此处列出的都是platform路径下的,但是project完整路径下如果也有,project路径下的优先权更高:
kernel-3.10/drivers/misc/mediatek/mach/mt6735/<project>/imgsensor/
vendor/mediatek/proprietary/custom/<project>/hal/D1/imgsensor/
软件环境:Linux内核3.10 & 安卓5.1
1、GPIO配置
(1)打开kernel-3.10/tools/dct/DrvGen.exe
(2)修改kernel-3.10/drivers/misc/mediatek/mach/mt6735/${project}/dct/dct/codegen.dws
(3)配置两个摄像头的reset和powerdown的管脚。
2、camera移植
(1)修改<kernel>/arch/arm/configs/<project>_debug_defconfig 中添加
CONFIG_CUSTOM_KERNEL_IMGSENSOR="ov8858_mipi_raw s5k3h5_mipi_raw"
修改device/rq/<project>/ProjectConfig.mk或device/mediatek/<project>/ProjectConfig.mk
imgsensor相关:
CUSTOM_KERNEL_IMGSENSOR = ov8858_mipi_raw s5k3h5_mipi_raw CUSTOM_KERNEL_MAIN_IMGSENSOR = ov8858_mipi_raw CUSTOM_KERNEL_SUB_IMGSENSOR = s5k3h5_mipi_raw CUSTOM_HAL_IMGSENSOR = ov8858_mipi_raw s5k3h5_mipi_raw CUSTOM_HAL_MAIN_IMGSENSOR = ov8858_mipi_raw < 4000 /span>CUSTOM_HAL_SUB_IMGSENSOR = s5k3h5_mipi_rawlens相关:(没有自动对焦AF或刚开始port sensor(移植)测试时,则配置成傻瓜dummy_lens)
CUSTOM_KERNEL_LENS = ad5820af dw9714af dummy_lens CUSTOM_KERNEL_MAIN_LENS = dw9714af CUSTOM_KERNEL_SUB_LENS = dummy_lens CUSTOM_HAL_LENS = ad5820af dw9714af dummy_lens CUSTOM_HAL_MAIN_LENS = dw9714af CUSTOM_HAL_SUB_LENS = dummy_lensflashlight相关:(port sensor初期可设置为dummy_flashlight)
CUSTOM_KERNEL_FLASHLIGHT = constant_flashlight CUSTOM_HAL_FLASHLIGHT = dummy_flashlightOTP(One Time Programmable)相关:(仅RAW sensor使用)
CUSTOM_KERNEL_CAM_CAL = dummy_eeprom CUSTOM_KERNEL_EEPROM = dummy_eeprom CUSTOM_HAL_CAM_CAL = dummy_eeprom CUSTOM_HAL_EEPROM = dummy_eeprom
(2)把kernel层的代码ov8858_mipi_raw和s5k3h5_mipi_raw文件夹拷贝到
kernel-3.10/drivers/misc/mediatek/imgsensor/src/mt6735/下在(注意文件夹名字的格式)
(3)将hal层代码整个目录ov8858_mipi_raw s5k3h5_mipi_raw拷贝到vendor/mediatek/proprietary/custom/mt6735/hal/D1/imgsensor/目录下;
(4)修改kernel-3.10/drivers/misc/mediatek/imgsensor/src/mt6735/Makefile
(5)打开kernel-3.10/drivers/misc/mediatek/imgsensor/inc/kd_imgsensor.h文件, 定义sensor id和sensor
name
(并且inc下所有的文件必须拷贝到vendor/mediatek/proprietary/custom/kernel/imgsensor/inc/,这是用户空间可以访问到的目录)
(注意保持队形)
#define OV8858_SENSOR_ID 0x8858 #define S5K3H5XA_SENSOR_ID 0x3085 #define SENSOR_DRVNAME_S5K3H5_MIPI_RAW "s5k3h5mipiraw" #define SENSOR_DRVNAME_OV8858_MIPI_RAW "ov8858mipiraw"
(6)在kernel-3.10/drivers/misc/mediatek/imgsensor/src/mt6735/kd_sensorlist.h文件中声明初始化函数;
UINT32 OV8858_MIPI_RAW_SensorInit(PSENSOR_FUNCTION_STRUCT *pfFunc);
UINT32 S5K3H5XA_MIPI_RAW_SensorInit(PSENSOR_FUNCTION_STRUCT *pfFunc);
如果是YUV sensor,则需要把MIPI_RAW改成YUV
在kdSensorList数组中添加:
#if defined(OV8858_MIPI_RAW) //该宏为驱动目录名大写 {OV8858_SENSOR_ID, SENSOR_DRVNAME_OV8858_MIPI_RAW,OV8858_MIPI_RAW_SensorInit}, #endif #if defined(S5K3H2YX_MIPI_RAW) //该宏为驱动目录名大写 {S5K3H2YX_SENSOR_ID, SENSOR_DRVNAME_S5K3H2YX_MIPI_RAW, S5K3H2YX_MIPI_RAW_SensorInit}, #endif(7)在kernel-3.10/drivers/misc/mediatek/imgsensor/src/sensorlist.cpp文件的SensorList数组中添加
#if defined(OV8858_MIPI_RAW) RAW_INF(OV8858_SENSOR_ID, SENSOR_DRVNAME_OV8858_MIPI_RAW,OV8858_MIPI_RAW_SensorInit), #endif #if defined(S5K3H2YX_MIPI_RAW) RAW_INF(S5K3H2YX_SENSOR_ID, SENSOR_DRVNAME_S5K3H2YX_MIPI_RAW, S5K3H2YX_MIPI_RAW_SensorInit), #endif
(8)如果有AF时,需要修改vendor/mediatek/proprietary/custom/mt6735/hal/D1/lens/src/lenslist.cpp中lenslist[] (只需修改红色)
#if defined(FM50AF) {DUMMY_SENSOR_ID, FM50AF_LENS_ID, "FM50AF", pFM50AF_getDefaultData}, #endif(9)修改上电时序
文件在kernel-3.10/drivers/misc/mediatek/mach/mt6735/rq6735_35gt_b_l1/camera/camera/kd_camera_hw.c
电源部分: VCAM_D就是DVDD数字供电,主要给ISP供电,如果是RAWDATA格式的sensor其ISP是在BB端,所以将其引脚将其NC;
VCAM_IO就是VDDIO数字IO电源主要给I2C部分供电;即DOVDD
VCAM_A就是AVDD模拟供电,主要给感光区和ADC部分供电;
VCAM_AF是对Camera自动对焦马达的供电 ,一半是最后给电
引脚部分: Reset引脚和powerdown引脚
其中XSHUTDN是通过下拉电阻实现置低的reset
根据datasheet上电时序:VCAM_A-》VCAM_IO-》PDN高-》VCAM_D-》RST高-》VCAM_AFO-》PDN高-》RST高
注意:这部分的驱动都有两套路径,此处列出的都是platform路径下的,但是project完整路径下如果也有,project路径下的优先权更高:
kernel-3.10/drivers/misc/mediatek/mach/mt6735/<project>/imgsensor/
vendor/mediatek/proprietary/custom/<project>/hal/D1/imgsensor/
相关文章推荐
- mtk 驱动笔记 lcd camera led tp
- MTK Camera(OV13850) 驱动移植
- mtk camera 移植步骤
- MTK camera 4.2 app PreferenceGroup生成过程(2013/8)
- MTK平台Sub Camera支持AF功能
- [2015.8.17网络首发]导入MTK_Android5.1源码里的Gallery2和Camera模块至Eclipse全过程 .
- Mtk camera driver
- MTK camera 闪光灯Flashlight驱动调试流程
- MTK Camera驱动移植
- MTK Android Driver :camera
- MTK camera info文件节点添加
- MTK DriverOnly——Camera移植
- 基于MTK平台的camera 移植总结
- mtk camera 移植步骤
- MtK Camera FAQ
- MTK Camera驱动移植
- MTK Android Driver :camera
- MTK camera flashlight CTS test failed
- MTK camera image sensor driver
- MTK 平台上如何给 camera 添加一种 preview size