一、prepare:
1.驱动代码、效果文件
2.硬件原理图、sensor datasheet、硬件接口配置表
二、coding:
1.project configure
(1) aosp/device/xxx/<project>/ProjectConfig.mk
把要添加的sensor名字配置到以下变量中:
CUSTOM_HAL_xxx_IMGSENSOR= xxx_main_mipi_raw(与custom路径下要配置的sensor相呼应)
CUSTOM_KERNEL_xxx_IMGSENSOR= xxx_main_mipi_raw(与kernel路径下要配置的sensor相呼应)
(2) aosp/device/mediatek/common/kernel-headers/kd_imgsensor.h
(This header was automatically generated from a Linux kernel header of the same name, to make information necessary for userspace to call into the kernel available to libc.)
这里定义sensor id和sensor name,主要作用于custom路径下
eg: xxx_MAIN_SENSOR_ID 0x565043
SENSOR_DRVNAME_xxx_MAIN_MIPI_RAW “xxx_main_mipi_raw”
(3)aosp/kernel-4.1x/arch/arm64/configs/<project>_defconfig
将添加的sensor名字配置到以下变量中:
CONFIG_CUSTOM_KERNEL_IMGSENSOR= xxx_main_mipi_raw
tips: CONFIG_MTK_CAM_CAL= 先设置为空不配置eeprom,后面配置eeprom时设置为y
2.kernel driver configure
(1) aosp/kernel-4.1x/drivers/misc/mediatek/imgsensor/inc/kd_imgsensor.h
同1-(2), 定义sensor id和sensor name,主要作用于kernel路径下
(2) aosp/kernel-4.1x/drivers/misc/mediatek/imgsensor/src/common/v1_1/imgsensor_sensor_list.h
添加新的sensor init function声明,并在imgsensor_sensor_list.c中 if defined声明
xxx_MAIN_MIPI_RAW_SensorInit(这块会直接调用到 sensor驱动代码中)
(3)aosp/kernel-4.1x/drivers/misc/mediatek/imgsensor/src/<platform>/<project>/camera_hw/imgsensor_cfg_table.c
确认上电引脚的供电方式:gpio、regulator(PMU pmic)、smartldo(参考硬件原理图 & 硬件接口配置表)
(4)aosp/kernel-4.1x/drivers/misc/mediatek/imgsensor/src/common/v1_1/imgsensor_pwr_seq.c
添加sensor的上电时序(参考sensor datasheet)
(5)aosp/kernel-4.1x/arch/arm64/boot/dts/mediatek/<project>.dtsi
将添加的sensor名字配置到以下变量中, 并且配置dtsi文件中的相关引脚的GPIO口 (pinmux =)
camX_enable_sensor, X:0 后主摄,1 前摄,2 后辅摄,如景深广角
(6)aosp/kernel-4.1x/drivers/misc/mediatek/imgsensor/src/<platform>/camera_project/<project>/
添加sensor驱动代码和Makefile
3.custom configure
(1)aosp/vendor/mediatek/proprietary/custom/<project>/hal/imgsensor_src/sensorlist.cpp
1-(2)中已经定义sensor id和sensor name,这里需要if defined声明
tips:kernel层与custom层的sensorlist已经配置完成,但这两个sensorlist类型均为数组,所以顺序要一致、对应。
(2)aosp/vendor/mediatek/proprietary/custom/<project>/hal/imgsensor/
添加(效果参数)ver1/factory/default文件夹,以xxx_main_mipi_raw命名
(3)aosp/vendor/mediatek/proprietary/custom/common/hal/imgsensor_metadata/sensor/
添加common下的 xxx_main_mipi_raw metadata
(4)aosp/vendor/mediatek/proprietary/custom/<project>/hal/imgsensor_metadata/
添加xxx_main_mipi_raw对应的metadata
4.dualcam configure
(1)aosp/vendor/mediatek/proprietary/custom/<project>/hal/camera/camera_custom_stereo_setting.h
需要先在 “\Sensors\” 中进行定义sensor name、IMGOYUV Size、RRZOYUV Size、SensorScenarioZSD or SensorScenarioRecording、FOV,然后在 Sensor Combinations中搭配两颗sensor
(2)aosp/vendor/mediatek/proprietary/custom/common/hal/imgsensor_metadata/sensor/
添加common下的 xxx_main_mipi_raw_bayermono metadata
(3)aosp/vendor/mediatek/proprietary/custom/<project>/hal/imgsensor_metadata/
添加xxx_main_mipi_raw_bayermono对应的metadata