MTK-MT6735-camera新加模組除錯總結
最近公司專案新換了一個不在支援列表中的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/