MTK-MT6735-camera新加模组调试总结

时间:2024-03-30 08:34:39

最近公司项目新换了一个不在支持列表中的camera,记录一下调试流程,以方便以后查阅。

1、第三方提供kernel的驱动代码以及hal层的效果代码。

kernel代码拷贝到(比如)kernel-3.18/drivers/misc/mediatek/imgsensor/src/mt6735/sc2232_mipi_raw_sub/

hal代码拷贝到(比如)vendor/mediatek/proprietary/custom/mt6735/hal/D1/imgsensor/sc2232_mipi_raw_sub/

文件名很重要,不能随便写,两处代码中的SENSOR_ID和SENSOR_DRVNAME要一致,并且和下文中的定义也要一致。

2、修改sensorlist.cpp添加sensor相关配置(如下图)

MTK-MT6735-camera新加模组调试总结

DRVNAME后面的sc2232_mipi_raw_sub就是对应文件夹名,所以第一步中的文件名不能随便写。

3、添加sensor ID和DRVNAME的定义

MTK-MT6735-camera新加模组调试总结


MTK-MT6735-camera新加模组调试总结

两处定义的顺序要一致!!!

4、绑定函数入口

MTK-MT6735-camera新加模组调试总结

注意红框的名字必须和kernel驱动代码中此函数的名字一致。

5、修改上下电时序,关键是上电时序

代码位置:kernel-3.18/drivers/misc/mediatek/imgsensor/src/mt6735/camera_hw/kd_camera_hw.c

函数名:kdCISModulePowerOn,注意if中判断的sensor name,不同的模组上电时序不同,请仔细阅读datasheet

另外若想修改I2C读写时的i2c-bus-num,请注意修改kernel驱动代码的这里

MTK-MT6735-camera新加模组调试总结

返回值有两个0和1,走的i2c总线不一样,i2c选择不对时kernel的日志上会看到i2c发送超时或者无应答错误。

I2C挂载的具体实现在kernel-3.18/drivers/misc/mediatek/imgsensor/src/mt6735/kd_sensorlist.c中,不管使用的是什么模组,mtk都会先注册main-camera和sub-camera,上面截图中会决定你的camera的i2c是哪一路,即在mtk已经注册的main和sub中选择一个。

6、添加config使相关修改编译进去

hal的修改对应配置在ProjectConfig.mk(在device目录下),可以搜索IMGSENSOR查看

kernel的修改对应配置在kernel-3.18/arch/arm64/configs/,可以搜索IMGSENSOR查看

注意ProjectConfig.mk修改时若不清楚对应的MAIN_LENS和SUB_LENS的设置,请先设置为dummy_lens,此设置项对应相机的AF功能。

至此一颗新的sensor添加完成。


备注:关于preview size 白平衡等相关设置的位置在vendor/mediatek/proprietary/custom/mt6735/hal/D1/sendepfeature/