平台:MT8788
Android版本:Android12
内核版本:kernel-4.19
1. MiPi 硬件引脚配置
根据硬件实际layout来自定义设置
配置路径:(cfg_setting_imgsensor.cpp 优先级:project>platform>common)
s_mt87xx_tablet/vendor/mediatek/proprietary/custom/tb8788p1_64_wifi_k419/hal/imgsensor_src/cfg_setting_imgsensor.cpp
--- a/tb8788p1_64_wifi_k419/hal/imgsensor_src/cfg_setting_imgsensor.cpp
+++ b/tb8788p1_64_wifi_k419/hal/imgsensor_src/cfg_setting_imgsensor.cpp
@@ -41,7 +41,7 @@ static CUSTOM_CFG gCustomCfg[] = {
{
.sensorIdx = IMGSENSOR_SENSOR_IDX_MAIN,
.mclk = CUSTOM_CFG_MCLK_1,
- .port = CUSTOM_CFG_CSI_PORT_0,
+ .port = CUSTOM_CFG_CSI_PORT_0A,
.dir = CUSTOM_CFG_DIR_REAR,
.bitOrder = CUSTOM_CFG_BITORDER_9_2,
.orientation = 90,
@@ -50,7 +50,7 @@ static CUSTOM_CFG gCustomCfg[] = {
},
{
.sensorIdx = IMGSENSOR_SENSOR_IDX_SUB,
- .mclk = CUSTOM_CFG_MCLK_2,
+ .mclk = CUSTOM_CFG_MCLK_1,
.port = CUSTOM_CFG_CSI_PORT_1,
.dir = CUSTOM_CFG_DIR_FRONT,
.bitOrder = CUSTOM_CFG_BITORDER_9_2,
2.Mclk On/Off control
配置mclk上电时序
配置路径:
s_mt87xx_tablet/kernel-4.19/drivers/misc/mediatek/imgsensor/src/mt6771/camera_project/tb8788p1_64_wifi_k419/camera_hw/imgsensor_cfg_table.c
--- a/drivers/misc/mediatek/imgsensor/src/mt6771/camera_project/tb8788p1_64_wifi_k419/camera_hw/imgsensor_cfg_table.c
+++ b/drivers/misc/mediatek/imgsensor/src/mt6771/camera_project/tb8788p1_64_wifi_k419/camera_hw/imgsensor_cfg_table.c
@@ -38,9 +38,9 @@ struct IMGSENSOR_HW_CFG imgsensor_custom_config[] = {
IMGSENSOR_I2C_DEV_1,
{
{IMGSENSOR_HW_PIN_MCLK, IMGSENSOR_HW_ID_MCLK},
- {IMGSENSOR_HW_PIN_AVDD, IMGSENSOR_HW_ID_REGULATOR},
- {IMGSENSOR_HW_PIN_DOVDD, IMGSENSOR_HW_ID_REGULATOR},
- {IMGSENSOR_HW_PIN_DVDD, IMGSENSOR_HW_ID_REGULATOR},
+ {IMGSENSOR_HW_PIN_AVDD, IMGSENSOR_HW_ID_GPIO},
+ {IMGSENSOR_HW_PIN_DOVDD, IMGSENSOR_HW_ID_GPIO},
+ {IMGSENSOR_HW_PIN_DVDD, IMGSENSOR_HW_ID_GPIO},
{IMGSENSOR_HW_PIN_PDN, IMGSENSOR_HW_ID_GPIO},
{IMGSENSOR_HW_PIN_RST, IMGSENSOR_HW_ID_GPIO},
{IMGSENSOR_HW_PIN_NONE, IMGSENSOR_HW_ID_NONE},
--- a/drivers/misc/mediatek/imgsensor/src/mt6771/camera_project/tb8788p1_64_wifi_k419/camera_hw/imgsensor_cfg_table.c
+++ b/drivers/misc/mediatek/imgsensor/src/mt6771/camera_project/tb8788p1_64_wifi_k419/camera_hw/imgsensor_cfg_table.c
@@ -653,6 +654,23 @@ struct IMGSENSOR_HW_POWER_SEQ sensor_power_sequence[] = {
},
},
#endif
+
+#if defined(BF2257_MIPI_RAW)
+ {
+ SENSOR_DRVNAME_BF2257_MIPI_RAW,
+ {
+ //{PDN, Vol_Low, 1},
+ //{RST, Vol_Low, 10},
+ {DOVDD, Vol_1800, 0},
+ //{DVDD, Vol_2800, 0},
+ {AVDD, Vol_2800, 0},
+ {SensorMCLK, Vol_High, 5},
+ //{RST, Vol_High, 5},
+ {PDN, Vol_High, 5}
+ },
+ },
+#endif
+
3.Camera Driver File Path
3.1 kernel driver
driver放置路径:
drivers/misc/mediatek/imgsensor/src/common/v1_1/
diff --git a/drivers/misc/mediatek/imgsensor/src/common/v1_1/imgsensor_sensor_list.c b/drivers/misc/mediatek/imgsensor/src/common/v1_1/imgsensor_sensor_list.c
index cfb5fc9ba638..3e868a907571 100755
--- a/drivers/misc/mediatek/imgsensor/src/common/v1_1/imgsensor_sensor_list.c
+++ b/drivers/misc/mediatek/imgsensor/src/common/v1_1/imgsensor_sensor_list.c
@@ -23,6 +23,9 @@ struct IMGSENSOR_SENSOR_LIST
#endif
#if defined(GC5035_MIPI_RAW)
{GC5035_SENSOR_ID, SENSOR_DRVNAME_GC5035_MIPI_RAW, GC5035_MIPI_RAW_SensorInit},
+#endif
+#if defined(BF2257_MIPI_RAW)
+{BF2257_SENSOR_ID, SENSOR_DRVNAME_BF2257_MIPI_RAW, BF2257_MIPI_RAW_SensorInit},
#endif
/* ADD sensor driver before this line /{0, {0}, NULL}, / end of list */
diff --git a/drivers/misc/mediatek/imgsensor/src/common/v1_1/imgsensor_sensor_list.h b/drivers/misc/mediatek/imgsensor/src/common/v1_1/imgsensor_sensor_list.h
old mode 100644
new mode 100755
index 0d14a4cb7f55..44ca1c3e3bfc
--- a/drivers/misc/mediatek/imgsensor/src/common/v1_1/imgsensor_sensor_list.h
+++ b/drivers/misc/mediatek/imgsensor/src/common/v1_1/imgsensor_sensor_list.h
@@ -203,7 +203,7 @@ UINT32 OV02B10_MIPI_RAW_SensorInit(struct SENSOR_FUNCTION_STRUCT **pfFunc);
UINT32 OV13B10LN_MIPI_RAW_SensorInit(struct SENSOR_FUNCTION_STRUCT **pfFunc);
UINT32 S5K4H7LN_MIPI_RAW_SensorInit(struct SENSOR_FUNCTION_STRUCT **pfFunc);
+UINT32 BF2257_MIPI_RAW_SensorInit(struct SENSOR_FUNCTION_STRUCT **pfFunc);
extern struct IMGSENSOR_SENSOR_LIST gimgsensor_sensor_list[];
#endif
drivers/misc/mediatek/imgsensor/inc/common/v1_1/
diff --git a/drivers/misc/mediatek/imgsensor/inc/kd_imgsensor.h b/drivers/misc/mediatek/imgsensor/inc/kd_imgsensor.h
index b6782e97f62c..912d4da2a103 100755
--- a/drivers/misc/mediatek/imgsensor/inc/kd_imgsensor.h
+++ b/drivers/misc/mediatek/imgsensor/inc/kd_imgsensor.h
@@ -329,6 +329,8 @@
#define GC8034_SENSOR_ID 0x8044
#define GC8C34_SENSOR_ID 0x80C4
#define GC08A3_SENSOR_ID 0x08a3
+/*BF*/
+#define BF2257_SENSOR_ID 0x2257
/*SP*/
#define SP0A19_YUV_SENSOR_ID 0xA6
#define SP2518_YUV_SENSOR_ID 0x53
@@ -566,6 +568,8 @@
#define SENSOR_DRVNAME_GC0313MIPI_YUV "gc0313_mipi_yuv"
#define SENSOR_DRVNAME_GC8C34_MIPI_RAW "gc8c34_mipi_raw"
#define SENSOR_DRVNAME_GC8034_MIPI_RAW "gc8034_mipi_raw"
+/*BF*/
+#define SENSOR_DRVNAME_BF2257_MIPI_RAW "bf2257_mipi_raw"
/*SP*/
#define SENSOR_DRVNAME_SP0A19_YUV "sp0a19_yuv"
#define SENSOR_DRVNAME_SP2518_YUV "sp2518_yuv"
3.2 hal driver
alps/vendor/mediatek/proprietary/custom/mt6771/hal/imgsensor/ver1/bf2257_mipi_raw/
alps/vendor/mediatek/proprietary/custom/mt6771/hal/imgsensor_metadata/bf2257_mipi_raw
Add new sensor:
Step1:
alps/device/mediateksample/tb8788p1_64_wifi_k419/ProjectConfig.mk
diff --git a/ProjectConfig.mk b/ProjectConfig.mk
index 7d8c56c..2bbff70 100755
--- a/ProjectConfig.mk
+++ b/ProjectConfig.mk
@@ -11,9 +11,9 @@ CUSTOM_HAL_ANT = mt6771_ant_m1
CUSTOM_HAL_AUDIOFLINGER = audio
CUSTOM_HAL_CAMERA = camera
CUSTOM_HAL_COMBO = mt6771
-CUSTOM_HAL_IMGSENSOR = gc5035_mipi_raw
+CUSTOM_HAL_IMGSENSOR = bf2257_mipi_raw gc02m1_mipi_raw
CUSTOM_HAL_MAIN2_IMGSENSOR =
-CUSTOM_HAL_MAIN_IMGSENSOR = gc5035_mipi_raw
+CUSTOM_HAL_MAIN_IMGSENSOR = bf2257_mipi_raw gc02m1_mipi_raw
CUSTOM_HAL_MSENSORLIB = akl akm
CUSTOM_HAL_SENSORS = sensor
CUSTOM_HAL_SUB_IMGSENSOR =
@@ -27,12 +27,12 @@ CUSTOM_KERNEL_GMRV_SENSOR = no
CUSTOM_KERNEL_GRAVITY_SENSOR = no
CUSTOM_KERNEL_GRV_SENSOR = no
CUSTOM_KERNEL_GYROSCOPE =
-CUSTOM_KERNEL_IMGSENSOR = gc5035_mipi_raw
+CUSTOM_KERNEL_IMGSENSOR = bf2257_mipi_raw gc02m1_mipi_raw
CUSTOM_KERNEL_LEDS = mt65xx
CUSTOM_KERNEL_LINEARACCEL_SENSOR = no
CUSTOM_KERNEL_MAGNETOMETER = no
CUSTOM_KERNEL_MAIN2_IMGSENSOR =
-CUSTOM_KERNEL_MAIN_IMGSENSOR = gc5035_mipi_raw
+CUSTOM_KERNEL_MAIN_IMGSENSOR = bf2257_mipi_raw gc02m1_mipi_raw
CUSTOM_KERNEL_ORIENTATION_SENSOR =
CUSTOM_KERNEL_RV_SENSOR = no
CUSTOM_KERNEL_SIGNIFICANT_MOTION_SENSOR = no
Step2:
alps/device/mediatek/common/kernel-headers/kd_imgsensor.h
diff --git a/kernel-headers/kd_imgsensor.h b/kernel-headers/kd_imgsensor.h
index 548703a3..6abdb199 100644
--- a/kernel-headers/kd_imgsensor.h
+++ b/kernel-headers/kd_imgsensor.h
@@ -303,7 +303,7 @@
#define HI846_SENSOR_ID 0x0846
#define OV02A10_MONO_SENSOR_ID 0x2509
#define IMX616_SENSOR_ID 0x0616
-
+#define BF2257_SENSOR_ID 0x2257
#define SC800CS_LY_SENSOR_ID 0xd126
#define OV48B_SENSOR_ID 0x564842
#define S5K3P9SP_SENSOR_ID 0x3109
@@ -322,7 +322,7 @@
#define S5K3L6WIDE_SENSOR_ID 0x30C7
#define S5KJN1TELE_SENSOR_ID 0x38E1
#define SENSOR_DRVNAME_OV13B10MAIN_MIPI_RAW "ov13b10main_mipi_raw"
-
+#define SENSOR_DRVNAME_BF2257_MIPI_RAW "bf2257_mipi_raw"
#define OV13B10TXD_SENSOR_ID 0x560D43
#define SENSOR_DRVNAME_OV13B10TXD_MIPI_RAW "ov13b10txd_mipi_raw"
#define S5K4H7_SENSOR_ID 0x487B
alps/kernel-4.19/drivers/misc/mediatek/imgsensor/inc/kd_imgsensor.h
diff --git a/drivers/misc/mediatek/imgsensor/inc/kd_imgsensor.h b/drivers/misc/mediatek/imgsensor/inc/kd_imgsensor.h
index b6782e97f62c..912d4da2a103 100755
--- a/drivers/misc/mediatek/imgsensor/inc/kd_imgsensor.h
+++ b/drivers/misc/mediatek/imgsensor/inc/kd_imgsensor.h
@@ -329,6 +329,8 @@
#define GC8034_SENSOR_ID 0x8044
#define GC8C34_SENSOR_ID 0x80C4
#define GC08A3_SENSOR_ID 0x08a3
+/*BF*/
+#define BF2257_SENSOR_ID 0x2257
/*SP*/
#define SP0A19_YUV_SENSOR_ID 0xA6
#define SP2518_YUV_SENSOR_ID 0x53
@@ -566,6 +568,8 @@
#define SENSOR_DRVNAME_GC0313MIPI_YUV "gc0313_mipi_yuv"
#define SENSOR_DRVNAME_GC8C34_MIPI_RAW "gc8c34_mipi_raw"
#define SENSOR_DRVNAME_GC8034_MIPI_RAW "gc8034_mipi_raw"
+/*BF*/
+#define SENSOR_DRVNAME_BF2257_MIPI_RAW "bf2257_mipi_raw"
/*SP*/
#define SENSOR_DRVNAME_SP0A19_YUV "sp0a19_yuv"
#define SENSOR_DRVNAME_SP2518_YUV "sp2518_yuv"
Step3:
alps/mediatek/proprietary/custom/mt6771/hal/imgsensor_src
diff --git a/tb8788p1_64_wifi_k419/hal/imgsensor_src/cfg_setting_imgsensor.cpp b/tb8788p1_64_wifi_k419/hal/imgsensor_src/cfg_setting_imgsensor.cpp
index 64700c5fc..a657aeec7 100755
--- a/tb8788p1_64_wifi_k419/hal/imgsensor_src/cfg_setting_imgsensor.cpp
+++ b/tb8788p1_64_wifi_k419/hal/imgsensor_src/cfg_setting_imgsensor.cpp
@@ -51,7 +51,7 @@ static CUSTOM_CFG gCustomCfg[] = {
{
.sensorIdx = IMGSENSOR_SENSOR_IDX_SUB,
.mclk = CUSTOM_CFG_MCLK_1,
- .port = CUSTOM_CFG_CSI_PORT_0A,
+ .port = CUSTOM_CFG_CSI_PORT_0,
.dir = CUSTOM_CFG_DIR_FRONT,
.bitOrder = CUSTOM_CFG_BITORDER_9_2,
.orientation = 0,
diff --git a/tb8788p1_64_wifi_k419/hal/imgsensor_src/sensorlist.cpp b/tb8788p1_64_wifi_k419/hal/imgsensor_src/sensorlist.cpp
index 77874eb3b..fd2f4d8a7 100755
--- a/tb8788p1_64_wifi_k419/hal/imgsensor_src/sensorlist.cpp
+++ b/tb8788p1_64_wifi_k419/hal/imgsensor_src/sensorlist.cpp
@@ -95,6 +95,9 @@ MSDK_SENSOR_INIT_FUNCTION_STRUCT SensorList[] =
#if defined(GC5035_MIPI_RAW)
RAW_INFO_M(GC5035_SENSOR_ID, DEFAULT_MODULE_INDEX, DEFAULT_MODULE_ID,SENSOR_DRVNAME_GC5035_MIPI_RAW, NULL),
#endif
+#if defined(BF2257_MIPI_RAW)
+ RAW_INFO_M(BF2257_SENSOR_ID, DEFAULT_MODULE_INDEX, DEFAULT_MODULE_ID,SENSOR_DRVNAME_BF2257_MIPI_RAW, NULL),
+#endif