mtk的摄像头驱动主要需要涉及三个目录下的改动,它们分别是device,kernel-4.14,vendor。以下以添加gc5035 mipi摄像头的前摄为例。注意:摄像头驱动需要供应商提供。
一、在kernel下添加相应的驱动,做相应的修改
路径:kernel-4.14\drivers\misc\mediatek\imgsensor\src\common\v1_1\gc5035_mipi_raw
注意:在添加摄像头时,文件夹的添加尽量要以xxx_mipi_raw这样的格式,后续会说到。
添加完驱动之后需要修改摄像头的列表
路径: kernel-4.14\drivers\misc\mediatek\imgsensor\src\common\v1_1\imgsensor_sensor_list.c
需要把它放在后摄的后面,避免找不到摄像头。
路径:kernel-4.14\drivers\misc\mediatek\imgsensor\src\common\v1_1\imgsensor_sensor_list.h
修改列表之后,添加摄像头的上电时序
路径:kernel-4.14\drivers\misc\mediatek\imgsensor\src\平台\camera_hw\imgsensor_cfg_table.c
注意:可以复制其他型号的上电时序,名字修改成gc5035的摄像头。
添加摄像头的定义和ID
路径:kernel-4.14\drivers\misc\mediatek\imgsensor\inc\kd_imgsensor.h
注意:上面提到为什么要以xxx_mipi_raw的文件名,在这个里面会有定义,如果没有也可以这样添加
添加完之后需要在dts中添加摄像头
路径:kernel-4.14\arch\arm64\boot\dts\mediatek\xx.dts
路径:kernel-4.14\arch\arm64\configs\xxx_defconfig兼容摄像头
到这里,kernel层需要修改的地方已经改完。
二、device中兼容gc5035摄像头
这里添加摄像头定义和ID需要和kernel层的一样
路径:device\mediatek\common\kernel-headers\kd_imgsensor.h
兼容摄像头,这里是以添加前摄为例,所以把摄像头添加在 SUB中,这里需要修改两处,一个是HAL,一个是KERNEL
路径:device\mediateksample\project\ProjectConfig.mk
到这里device目录下的修改完成
三、vendor下添加效果代码
路径:vendor\mediatek\proprietary\custom\平台\hal\imgsensor\ver1\gc5035_mipi_raw
注意:这里没有的话可以复制其他的摄像头型号修改,把文件夹里面的型号,修改成gc5035注意大小写
添加metadata
路径:vendor\mediatek\proprietary\custom\平台\hal\imgsensor_metadata\gc5035_mipi_raw
注意:没有的话可以仿写
在列表中添加型号
路径:vendor\mediatek\proprietary\custom\project\hal\imgsensor_src\sensorlist.cpp
注意:也是需要把它放在后面后面
如果摄像头的方向不对,可以在这里面旋转摄像头的方向
路径:vendor\mediatek\proprietary\custom\平台\hal\imgsensor_src\cfg_setting_imgsensor.cpp
修改.orientation 中的值就可以达到旋转的效果
到这里,mtk Android 11 的前摄摄像头已添加完成,之后编译烧录到板子中就可以驱动摄像头,可能摄像头的拍照效果不好,需要供应商的FAE调试。