記錄下MTK6735 添加新的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相關配置(如下圖)
DRVNAME後面的sc2232_mipi_raw_sub就是對應文件夾名,所以第一步中的文件名不能隨便寫。
3、添加sensor ID和DRVNAME的定義
兩處定義的順序要一致!!!
4、綁定函數入口
注意紅框的名字必須和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驅動代碼的這裏
返回值有兩個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/