首先至少要有两套能点亮的寄存器参数,最好能有kernel层和hal层对应的文件。(我的只有参数,所以这里会描述借壳点亮一些需要修改的地方)
1.配置ProjectConfig.MK文件位置:driver/flycom/p35t_drivonly
CUSTOM_HAL_IMGSENSOR = sp5506_mipi_raw_p35 sp250amipi_raw_p35 gc5025mipi_raw_p35 gc2385mipi_raw_p35 ov5648_mipi_raw
#hal需要编译的模组库
CUSTOM_HAL_MAIN_IMGSENSOR = sp5506_mipi_raw_p35 gc5025mipi_raw_p35 ov5648_mipi_raw
#hal层后摄使用的模组
CUSTOM_HAL_SUB_IMGSENSOR = sp250amipi_raw_p35 gc2385mipi_raw_p35
#hal层前摄使用模组
CUSTOM_KERNEL_IMGSENSOR = sp5506_mipi_raw_p35 sp250amipi_raw_p35 gc5025mipi_raw_p35 gc2385mipi_raw_p35 ov5648_mipi_raw
#kernel需要编译的模组库
CUSTOM_KERNEL_MAIN_IMGSENSOR = sp5506_mipi_raw_p35 gc5025mipi_raw_p35 ov5648_mipi_raw
#kernel层后摄使用的模组
CUSTOM_KERNEL_SUB_IMGSENSOR = sp250amipi_raw_p35 gc2385mipi_raw_p35
#kernel层前摄使用模组
2.修改SENSOR_CHIP_ID在kernel-3.18/drivers/misc/mediatek/imgsensor/inc/kd_imgsensor.h
个人因为是借壳点模组所以修改的是SP250a和OV5648
#define OV5648MIPI_SENSOR_ID 0x885a
#define SP250A_SENSOR_ID 0x2509
#define SENSOR_DRVNAME_OV5648_MIPI_RAW “ov5648mipi” //ov5648mipi对应的是src下kernel层驱动文件夹的名称
#define SENSOR_DRVNAME_SP250A_MIPI_RAW “sp250amipiraw”
3.借壳点亮,我们要点亮的模组为OV8856和SP2509V,分别借壳ov5648和sp250a(如果你有文件的话直接把文件放在kernel-3.18/drivers/misc/mediatek/imgsensor/src/mt6735/文件夹下就好)
修改
.pre = {
.pclk = 144154560, //linelength*framelength*fps
.linelength = 3872, //读取对应寄存器参数写入的值
.framelength = 2482, //读取对应寄存器参数写入的值
.startx = 0, //record different mode’s startx of grabwindow
.starty = 0, //record different mode’s starty of grabwindow
.grabwindow_width = 3264, //尺寸设置
.grabwindow_height = 2448, //尺寸设置
.mipi_data_lp2hs_settle_dc = 85,
.max_framerate = 150, //fps设置
},
换成对应自己模组寄存器的操作
static void sensor_init(void)
{
write_cmos_sensor(0x0100, 0x00);
write_cmos_sensor(0x0302, 0x3c);
….
write_cmos_sensor(0x0100, 0x01);
}
同样的操作
static void preview_setting(void)
{
…
}
4.模块注册kd_sensorlist.h和sensorlist.cpp
sensorlist.cpp
if defined(OV5648_MIPI_RAW)
RAW_INFO(OV5648MIPI_SENSOR_ID,SENSOR_DRVNAME_OV5648_MIPI_RAW, NULL),
endif
5.上电文件kd_camera_hw.h