1.TP9950介绍:
TP9950是一款高清视频解码器,它支持高清传输视频接口(HD-TVI)视频、NTSC/PAL CVBS视频以及一些常见的高清模拟视频格式解码。
2.项目的硬件连接:
通道连接到了MIPIA上面
3.软件调试
3.1修改设备树适配摄像头:
sensor1:sensor@5812010 {
device_type = "sensor1";
sensor1_mname = "tp9950";
sensor1_twi_cci_id = <2>;
sensor1_twi_addr = <0x88>;
sensor1_mclk_id = <0>;
sensor1_pos = "front";
sensor1_isp_used = <0>;
sensor1_fmt = <0>;
sensor1_stby_mode = <0>;
sensor1_vflip = <0>;
sensor1_hflip = <0>;
sensor1_cameravdd-supply = <>;
sensor1_cameravdd_vol = <>;
sensor1_iovdd-supply = <>;
sensor1_iovdd_vol = <>;
sensor1_avdd-supply = <>;
sensor1_avdd_vol = <>;
sensor1_dvdd-supply = <>;
sensor1_dvdd_vol = <>;
sensor1_power_en = <&pio PK 22 GPIO_ACTIVE_HIGH>;
sensor1_reset = <&pio PK 11 GPIO_ACTIVE_LOW>;
sensor1_pwdn = <>;//<&pio PJ 16 GPIO_ACTIVE_HIGH>;
status = "okay";
};
vinc30:vinc@5833000 {
vinc12_csi_sel = <0>;
vinc12_mipi_sel = <0>;
vinc12_isp_sel = <5>;
vinc12_isp_tx_ch = <0>;
vinc12_tdm_rx_sel = <0>;
vinc12_rear_sensor_sel = <1>;
vinc12_front_sensor_sel = <1>;
vinc12_sensor_list = <0>;
device_id = <12>;
work_mode = <0x0>;
status = "okay";
};
3.2编写驱动
SDK里面的tp9950是并口的,需要根据tp2815_mipi的驱动修改:
在longan/kernel/linux-5.15/bsp/drivers/vin/modules/sensor下面添加tp9950_mipi.c文件,修改为mipi接口的格式
static struct sensor_format_struct sensor_formats[] = {
{
.desc = "YUYV 4:2:2",
.mbus_code = MEDIA_BUS_FMT_UYVY8_2X8,
.regs = sensor_default_regs,
.regs_size = ARRAY_SIZE(sensor_default_regs),
.bpp = 2,
},
};
适配对应的分辨率寄存器的值:
static struct regval_list reg_1280x720p25_1ch[] = {
{0x40, 0},
{0x41, 0x00},//AFE Test Register
{0x40, 0x08},//set PAGE 1
{0x01, 0xf8},//Clock Lane Control Register
{0x02, 0x01},//MIPICKEN Register
{0x08, 0x03},//MIPI Output Enable Control Register
{0x20, 0x12},//NUM_LANES Register
{0x39, 0x00},//PCLK Mode Register
{0x40, 0x00},//set PAGE 0
{0x4c, 0x40},//HS-VS output Selection Register
{0x4e, 0x00},//Clock Data Pin Output Control Register
{0x27, 0x2d},//Reserved Register
{0xfd, 0x80},//Revision Register
{0x02, 0x42},
{0x07, 0xc0},
{0x0b, 0xc0},
{0x0c, 0x13},
{0x0d, 0x50},
{0x15, 0x13},
{0x16, 0x15},
{0x17, 0x00},//500=1280
{0x18, 0x19},
{0x19, 0xd0},//2d0=720
{0x1a, 0x25},
{0x1c, 0x07},//1280*720, 25fps
{0x1d, 0xbc},//1280*720, 25fps
{0x20, 0x30},
{0x21, 0x84},
{0x22, 0x36},
{0x23, 0x3c},
// {0x2a, 0x3c},//PAGE0,默认信号是30,蓝屏是3C
{0x2b, 0x60},
{0x2c, 0x0a},
{0x2d, 0x30},
{0x2e, 0x70},
{0x30, 0x48},
{0x31, 0xbb},
{0x32, 0x2e},
{0x33, 0x90},
{0x35, 0x25},
//(0x35, 0x05},
{0x38, 0x00},
{0x39, 0x18},
{0x02, 0x46},
{0x0d, 0x71},
{0x18, 0x1b},
{0x20, 0x40},
{0x21, 0x46},
{0x25, 0xfe},
{0x26, 0x01},
{0x2c, 0x3a},
{0x2d, 0x5a},
{0x2e, 0x40},
{0x30, 0x9e},
{0x31, 0x20},
{0x32, 0x10},
{0x33, 0x90},
{0x40, 0x08},
{0x23, 0x02},
{0x13, 0x24},
{0x14, 0x46},
{0x15, 0x09},
{0x25, 0x08},
{0x26, 0x01},
{0x27, 0x0e},
{0x10, 0x88},
{0x10, 0x08},
{0x23, 0x00},
{0x40, 0x00},
};
3.3修改中间层
全志平台验证套片的摄像头用的是DVR APP,不能用原生的APP测试,所以中间层需要改为:USE_CAMERA_HAL_AUTO_1_0
USE_CAMERA_HAL_3_4 ?= false
USE_CAMERA_HAL_AUTO_1_0 ?= true
然后重新编译验证。