前言¶
产品版本
与本文档相对应的产品版本如下。
产品名称 |
产品版本 |
|---|---|
SS928 |
V100 |
SS927 |
V100 |
说明: 本文以SS928V100描述为例,未有特殊说明,SS927V100与SS928V100内容一致。
读者对象
本文档(本指南)主要适用于以下工程师:
技术支持工程师
软件开发工程师
符号约定
在本文中可能出现下列标志,它们所代表的含义如下。
符号 |
说明 |
|---|---|
|
表示如不避免则将会导致死亡或严重伤害的具有高等级风险的危害。 |
|
表示如不避免则可能导致死亡或严重伤害的具有中等级风险的危害。 |
|
表示如不避免则可能导致轻微或中度伤害的具有低等级风险的危害。 |
|
用于传递设备或环境安全警示信息。如不避免则可能会导致设备损坏、数据丢失、设备性能降低或其它不可预知的结果。 “须知”不涉及人身伤害。 |
|
对正文中重点信息的补充说明。 “说明”不是安全警示信息,不涉及人身、设备及环境伤害信息。 |
修订记录
修订记录累积了每次文档更新的说明。最新版本的文档包含以前所有文档版本的更新内容。
文档版本 |
发布日期 |
修改说明 |
|---|---|---|
00B01 |
2025-09-15 |
第1次临时版本发布。 |
MIPI使用指南¶
概述¶
MIPI Rx通过低电压差分信号接收原始视频数据,将接收到的串行差分信号(serial differential signal)转化为DC(Digital Camera)时序后传递给下一级模块VICAP(Video Capture)
MIPI Rx支持MIPI D-PHY、LVDS(Low-Voltage Differential Signal)、HiSPi(High-Speed Serial Pixel Interface)等串行视频信号输入,同时兼容DC视频接口。
重要概念¶
MIPI
MIPI的全称是Mobile Industry Processor Interface(移动行业处理器接口),本文描述的MIPI接口特指物理层使用D-PHY传输规范,协议层使用CSI-2的通信接口。
LVDS
LVDS的全称是Low Voltage differential Signaling(低压差分信号),通过同步码区分消隐区和有效数据。
Lane
用于连接发送端和接收端的一对高速差分线,即可以是时钟Lane,也可以是数据Lane。
同步码
MIPI接口使用CSI-2里面的短包进行同步,LVDS使用同步码区分有效数据和消隐区。LVDS有两种同步方式:
功能描述¶
MIPI Rx是一个支持多种差分视频输入接口的采集单元,通过combo-PHY接收MIPI/LVDS/sub-LVDS/HiSPi/DC接口的数据,通过不同的功能模式配置,MIPI Rx可以支持多种速度和分辨率的数据传输需求,支持多种外部输入设备。最大支持Lane个数如表1所示。
表 1 最大支持Lane的个数
解决方案 |
最大支持lane数 |
|---|---|
SS928V100 |
MIPI Rx最大支持8Lane MIPI输入或8Lane LVDS输入。 |
MIPI Rx能同时对接多个sensor,最多对接sensor的数目如表2所示。
表 2 最大对接sensor数目
解决方案 |
对接sensor数目 |
|---|---|
SS928V100 |
4 |
MIPI Rx最大能同时对接不同数量的sensor,每个sensor需要的Lane也不尽相同。因此用户需要确定MIPI Rx的LANE分布模式。具体的Lane分布模式请参见表3。
表 3 MIPI Rx Lane分布模式
解决方案 |
Mode |
DEV0 |
DEV1 |
DEV2 |
DEV3 |
|---|---|---|---|---|---|
SS928V100 |
0 |
L0~L7 |
N |
N |
N |
1 |
L0~L3 |
N |
L4~L7 |
N |
|
2 |
L0~L3 |
N |
L4,L6 |
L5,L7 |
|
3 |
L0,L2 |
L1,L3 |
L4,L6 |
L5,L7 |
MIPI Rx具体的Lane管脚连接请参见表4。
表 4 MIPI Rx Lane管脚关系图
解决方案 |
LANE |
MIPI0 |
MIPI1 |
MIPI2 |
MIPI3 |
|---|---|---|---|---|---|
SS928V100 |
Lane0 |
√ |
- |
- |
- |
Lane1 |
√ |
√ |
- |
- |
|
Lane2 |
√ |
- |
- |
- |
|
Lane3 |
√ |
√ |
- |
- |
|
Lane4 |
√ |
- |
√ |
- |
|
Lane5 |
√ |
- |
√ |
√ |
|
Lane6 |
√ |
- |
√ |
- |
|
Lane7 |
√ |
- |
√ |
√ |
API参考¶
MIPI Rx提供对接sensor时序的功能。提供ioctl接口,可用的命令如下:
OT_MIPI_SET_DEV_ATTR:设置MIPI设备属性。
OT_MIPI_SET_HS_MODE:设置MIPI Rx的Lane分布。
OT_MIPI_SET_PHY_CMVMODE :设置共模电压模式。
OT_MIPI_RESET_SENSOR:复位sensor。
OT_MIPI_UNRESET_SENSOR:撤销复位sensor。
OT_MIPI_RESET_MIPI:复位MIPI Rx。
OT_MIPI_UNRESET_MIPI:撤销复位MIPI Rx。
OT_MIPI_ENABLE_MIPI_CLOCK:打开MIPI设备的时钟。
OT_MIPI_DISABLE_MIPI_CLOCK:关闭MIPI设备的时钟。
OT_MIPI_ENABLE_SENSOR_CLOCK:打开SENSOR的时钟。
OT_MIPI_DISABLE_SENSOR_CLOCK:关闭SENSOR的时钟。
OT_MIPI_SET_EXT_DATA_TYPE:设置MIPI扩展DATA TYPE的属性。
MIPI Tx提供对接显示屏、级联的功能。提供ioctl接口,可用的命令如下:
OT_MIPI_TX_SET_DEV_CFG:设置MIPI Tx设备的属性。
OT_MIPI_TX_SET_CMD:设置发送给MIPI Tx设备的命令数据。
OT_MIPI_TX_GET_CMD:用于从外围设备读取信息。
OT_MIPI_TX_ENABLE:使能MIPI Tx设备。
OT_MIPI_TX_DISABLE:禁用MIPI Tx设备。
OT_MIPI_SET_DEV_ATTR¶
【描述】
设置MIPI Rx设备属性。
【定义】
#define OT_MIPI_SET_DEV_ATTR _IOW(OT_MIPI_IOC_MAGIC, 0x01, combo_dev_attr_t)
【参数】
combo_dev_attr_t类型的指针。
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
-1 |
失败,并设置errno |
【解决方案差异】
无。
【需求】
头文件:ot_mipi_rx.h
【注意】
除了配置OT_MIPI_SET_DEV_ATTR之外,还需要配置以下接口。
设置模式:接口为OT_MIPI_SET_HS_MODE。
打开MIPI时钟:接口为OT_MIPI_ENABLE_MIPI_CLOCK。
复位MIPI:接口为OT_MIPI_RESET_MIPI。
打开SENSOR的时钟:接口为OT_MIPI_ENABLE_SENSOR_CLOCK。
复位SENSOR:接口为OT_MIPI_RESET_SENSOR。
撤销复位MIPI:接口为OT_MIPI_UNRESET_MIPI。
撤销复位SENSOR:接口为OT_MIPI_UNRESET_SENSOR。
推荐的配置流程如下:
设置模式。
打开多路MIPI时钟。
复位多路SENSOR所对接的MIPI Rx。
打开多路SENSOR所连接的时钟。
复位对接的所有SENSOR。
配置MIPI Rx设备属性。
撤销复位多路SENSOR所对接的MIPI Rx。
撤销复位对接的所有SENSOR。
推荐的退出流程如下:
复位多路对接的SENSOR。
关闭多路SENSOR所连接的时钟。
复位多路SENSOR所对接的MIPI Rx。
清除多路SENSOR所对接的MIPI Rx设备的配置。
关闭多路MIPI时钟。
操作SENSOR复位信号线和时钟信号线会对所连接到该信号线的所有SENSOR都产生效果。
【相关数据类型及接口】
OT_MIPI_SET_HS_MODE¶
【描述】
设置MIPI Rx的Lane分布模式。
【定义】
#define OT_MIPI_SET_HS_MODE _IOW(OT_MIPI_IOC_MAGIC, 0x0b, lane_divide_mode_t)
【参数】
lane_divide_mode_t类型的指针。
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
-1 |
失败,并设置errno |
【解决方案差异】
解决方案 |
是否支持 |
|---|---|
SS928V100 |
支持 |
【需求】
头文件:ot_mipi_rx.h
【注意】
在接多路sensor输入时,建议在初始时根据硬件连接对整个lane分布进行全局的lane分布模式的设定,在之后的多路sensor采集过程中不能再调用此接口,否则可能对其他sensor采集有影响。
OT_MIPI_SET_PHY_CMVMODE¶
【描述】
设置共模电压模式。
【定义】
#define OT_MIPI_SET_PHY_CMVMODE _IOW(OT_MIPI_IOC_MAGIC, 0x04, phy_cmv_t)
【参数】
phy_cmv_t类型的指针。
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
-1 |
失败,并设置errno |
【解决方案差异】
解决方案 |
是否支持 |
|---|---|
SS928V100 |
支持 |
【需求】
头文件:ot_mipi_rx.h
【注意】
无。
OT_MIPI_RESET_SENSOR¶
【描述】
复位sensor。
【定义】
#define OT_MIPI_RESET_SENSOR _IOW(OT_MIPI_IOC_MAGIC, 0x05, sns_rst_source_t)
【参数】
sns_rst_source_t SENSOR复位信号线编号。
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
-1 |
失败,并设置errno。 |
【解决方案差异】
解决方案 |
是否支持 |
|---|---|
SS928V100 |
支持 |
【需求】
头文件:ot_mipi_rx.h
【注意】
无。
OT_MIPI_UNRESET_SENSOR¶
【描述】
撤销复位sensor。
【定义】
#define OT_MIPI_UNRESET_SENSOR _IOW(OT_MIPI_IOC_MAGIC, 0x06, sns_rst_source_t)
【参数】
sns_rst_source_t SENSOR复位信号线编号。
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
-1 |
失败,并设置errno。 |
【解决方案差异】
解决方案 |
是否支持 |
|---|---|
SS928V100 |
支持 |
【需求】
头文件:ot_mipi_rx.h
【注意】
无。
OT_MIPI_RESET_MIPI¶
【描述】
复位MIPI_Rx。
【定义】
#define OT_MIPI_RESET_MIPI _IOW(OT_MIPI_IOC_MAGIC, 0x07, combo_dev_t)
【参数】
combo_dev_t设备号。
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
-1 |
失败,并设置errno |
【解决方案差异】
解决方案类型 |
是否支持 |
|---|---|
SS928V100 |
支持 |
【需求】
头文件:ot_mipi_rx.h
【注意】
无。
OT_MIPI_UNRESET_MIPI¶
【描述】
撤销复位MIPI_Rx。
【定义】
#define OT_MIPI_UNRESET_MIPI _IOW(OT_MIPI_IOC_MAGIC, 0x08, combo_dev_t)
【参数】
combo_dev_t设备号。
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
-1 |
失败,并设置errno。 |
【解决方案差异】
解决方案 |
是否支持 |
|---|---|
SS928V100 |
支持 |
【需求】
头文件:ot_mipi_rx.h
【注意】
无。
OT_MIPI_ENABLE_MIPI_CLOCK¶
【描述】
打开MIPI设备的时钟。
【定义】
#define OT_MIPI_ENABLE_MIPI_CLOCK _IOW(OT_MIPI_IOC_MAGIC, 0x0c, combo_dev_t)
【参数】
combo_dev_t 设备号。
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
-1 |
失败,并设置errno。 |
【解决方案差异】
解决方案 |
是否支持 |
|---|---|
SS928V100 |
支持 |
【需求】
头文件:ot_mipi_rx.h
【注意】
无。
OT_MIPI_DISABLE_MIPI_CLOCK¶
【描述】
关闭MIPI设备的时钟。
【定义】
#define OT_MIPI_DISABLE_MIPI_CLOCK _IOW(OT_MIPI_IOC_MAGIC, 0x0d, combo_dev_t)
【参数】
combo_dev_t 设备号。
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
-1 |
失败,并设置errno。 |
【解决方案差异】
解决方案 |
是否支持 |
|---|---|
SS928V100 |
支持 |
【需求】
头文件:ot_mipi_rx.h
【注意】
无。
OT_MIPI_ENABLE_SENSOR_CLOCK¶
【描述】
打开SENSOR的时钟。
【定义】
#define OT_MIPI_ENABLE_SENSOR_CLOCK _IOW(OT_MIPI_IOC_MAGIC, 0x10, sns_clk_source_t)
【参数】
SENSOR的时钟设备源编号。
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
-1 |
失败,并设置errno |
【解决方案差异】
解决方案 |
是否支持 |
|---|---|
SS928V100 |
支持 |
【需求】
头文件:ot_mipi_rx.h
【注意】
无。
OT_MIPI_DISABLE_SENSOR_CLOCK¶
【描述】
关闭SENSOR的时钟。
【定义】
#define OT_MIPI_DISABLE_SENSOR_CLOCK _IOW(OT_MIPI_IOC_MAGIC, 0x11, sns_clk_source_t)
【参数】
SENSOR的时钟设备源编号。
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
-1 |
失败,并设置errno。 |
【解决方案差异】
解决方案 |
是否支持 |
|---|---|
SS928V100 |
支持 |
【需求】
头文件:ot_mipi_rx.h
【注意】
无。
OT_MIPI_SET_EXT_DATA_TYPE¶
【描述】
设置MIPI扩展DATA TYPE的属性。
【定义】
#define OT_MIPI_SET_EXT_DATA_TYPE _IOW(OT_MIPI_IOC_MAGIC, 0x12, ext_data_type_t)
【参数】
ext_data_type_t类型的指针。
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
-1 |
失败,并设置errno。 |
【需求】
头文件:ot_mipi_rx.h
【注意】
该接口主要用于接收sensor内嵌数据,请注意设备属性中的宽高需要加上内嵌数据的宽高(有效像素宽高+内嵌数据宽高)。
该接口只适用于MIPI接入;LVDS输入配置本接口可能导致异常。
OT_MIPI_TX_SET_DEV_CFG¶
【描述】
设置MIPI Tx设备的属性。
【定义】
#define OT_MIPI_TX_SET_DEV_CFG _IOW(OT_MIPI_TX_IOC_MAGIC, 0x01, combo_dev_cfg_t)
【参数】
MIPI Tx设备属性。
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
-1 |
失败,并设置errno。 |
【需求】
头文件:ot_mipi_tx.h
【注意】
必须在执行OT_MIPI_TX_ENABLE前,即使能前调用此接口。
执行该接口后,MIPI_TX将默认设置为LP(Lower Power)模式,LP时钟设置为:关闭。
OT_MIPI_TX_SET_CMD¶
【描述】
设置发送给MIPI Tx设备的命令数据。
【定义】
#define OT_MIPI_TX_SET_CMD _IOW(OT_MIPI_TX_IOC_MAGIC, 0x02, cmd_info_t)
【参数】
发送给MIPI Tx设备的命令信息。
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
-1 |
失败,并设置errno。 |
【需求】
头文件:ot_mipi_tx.h
【注意】
必须在执行OT_MIPI_TX_ENABLE前,即使能前调用此接口。
必须在执行OT_MIPI_TX_SET_DEV_CFG后,即配置设备后调用此接口。
此接口执行成功与否依赖硬件或lane链路的连通性,连通性异常,则返回失败。
OT_MIPI_TX_GET_CMD¶
【描述】
用于从外围设备读取信息。
【定义】
#define OT_MIPI_TX_GET_CMD _IOWR(OT_MIPI_TX_IOC_MAGIC, 0x04, get_cmd_info_t)
【参数】
详见get_cmd_info_t结构体说明。
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
-1 |
失败,并设置errno。 |
【需求】
头文件:ot_mipi_tx.h
【注意】
在执行OT_MIPI_TX_ENABLE后,调用此接口,存在概率读失败的情况。
必须在执行OT_MIPI_TX_SET_DEV_CFG后,即配置设备后调用此接口。
此接口执行成功与否依赖硬件或lane链路的连通性,连通性异常,则返回失败。
OT_MIPI_TX_ENABLE¶
【描述】
使能MIPI Tx设备。
【定义】
#define OT_MIPI_TX_ENABLE _IO(OT_MIPI_TX_IOC_MAGIC, 0x03)
【参数】
无。
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
-1 |
失败,并设置errno。 |
【需求】
头文件:ot_mipi_tx.h
【注意】
使能前,必须调用OT_MIPI_TX_SET_DEV_CFG对设备进行配置。
此接口调用后MIPI_TX将工作于HS模式(High Speed),LP时钟设置为:打开。
OT_MIPI_TX_DISABLE¶
【描述】
禁用MIPI Tx设备。
【定义】
#define OT_MIPI_TX_DISABLE _IO(OT_MIPI_TX_IOC_MAGIC, 0x05)
【参数】
无。
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
-1 |
失败,并设置errno。 |
【需求】
头文件:ot_mipi_tx.h
【注意】
此接口调用后MIPI_TX将工作于LP模式(Lower Power),LP时钟设置为:关闭。
设备禁用后需要使用OT_MIPI_TX_SET_DEV_CFG重新设置设备属性,才可使能设备。
数据类型¶
MIPI Rx相关数据类型定义如下:
OT_MIPI_IOC_MAGIC:MIPI Rx ioctl命令的幻数。
combo_dev_t:MIPI Rx设备类型。
SNS_MAX_RST_SOURCE_NUM:SENSOR的复位信号线个数。
SNS_MAX_CLK_SOURCE_NUM:SENSOR的时钟信号线个数。
sns_rst_source_t:SENSOR的复位信号线编号,软件上称为SENSOR的复位源。
sns_clk_source_t:SENSOR的时钟信号线编号,软件上称为SENSOR的时钟源。
MIPI_RX_MAX_DEV_NUM:MIPI Rx支持的设备数。
COMBO_MAX_LANE_NUM:设备最大支持的Lane数量。
MAX_LANE_NUM_PER_LINK:MIPI Rx一个link的Lane数。
MIPI_LANE_NUM:MIPI Rx的MIPI设备支持的最大Lane数。
LVDS_LANE_NUM:LVDS/HiSPi接口支持的Lane数量。
WDR_VC_NUM:定义最多支持的Virtual Chnnael数量。
SYNC_CODE_NUM:定义LVDS每个Virtual Channel的同步码数量。
MAX_EXT_DATA_TYPE_NUM:定义扩展DATE TYPE的数量。
lane_divide_mode_t:MIPI Rx的Lane分布。
input_mode_t:MIPI Rx输入接口类型。
mipi_data_rate_t:MIPI Rx输入速率。
img_rect_t:crop属性。
data_type_t:传输的数据类型。
ext_data_type_t:MIPI 扩展data type属性。
mipi_wdr_mode_t:MIPI WDR模式。
mipi_dev_attr_t:MIPI设备属性。
lvds_wdr_mode_t:LVDS WDR模式。
lvds_sync_mode_t:LVDS同步方式。
lvds_bit_endian_t:比特位大小端模式。
lvds_vsync_type_t:LVDS vsync类型。
lvds_vsync_attr_t:LVDS vsync参数。
lvds_fid_type_t:Frame identification Id类型。
lvds_fid_attr_t:Frame indentification Id配置信息。
lvds_dev_attr_t:LVDS/SubLVDS/HiSPi设备属性。
phy_cmv_mode_t:PHY共模电压模式。
phy_cmv_t:PHY共模电压配置信息。
combo_dev_attr_t:combo设备属性。
OT_MIPI_TX_IOC_MAGIC:MIPI Tx ioctl命令的幻数。
LANE_MAX_NUM:定义MIPI Tx支持的最大Lane数。
MIPI_TX_SET_DATA_SIZE:定义MIPI TX长指令支持的最大数据长度。
MIPI_TX_GET_DATA_SIZE:定义MIPI TX读指令支持的最大数据长度。
ATTRIBUTE:定义编译时对齐字节数。
out_mode_t:MIPI Tx输出或外设操作模式。
mipi_tx_work_mode_t:MIPI Tx 工作模式。
video_mode_t:MIPI Tx视频模式或视频格式,或包序列格式。
out_format_t:MIPI Tx输出数据格式。
sync_info_t:MIPI Tx设备同步信息。
combo_dev_cfg_t:MIPI Tx设备属性。
cmd_info_t:发送给MIPI Tx设备的命令信息。
get_cmd_info_t:发送给MIPI Tx设备的命令信息。
OT_MIPI_IOC_MAGIC¶
【说明】
MIPI Rx ioctl命令的幻数。
【定义】
#define OT_MIPI_IOC_MAGIC 'm'
【成员】
无
【解决方案差异】
无。
【注意事项】
无。
【相关数据类型及接口】
无
combo_dev_t¶
【说明】
MIPI Rx设备类型。
【定义】
typedef unsigned int combo_dev_t;
【解决方案差异】
解决方案 |
MIPI设备范围 |
|---|---|
SS928V100 |
[0, MIPI_RX_MAX_DEV_NUM) |
【注意事项】
无。
【相关数据类型及接口】
SNS_MAX_RST_SOURCE_NUM¶
【说明】
SENSOR的复位信号线个数。
【定义】
#define SNS_MAX_RST_SOURCE_NUM 4
【解决方案差异】
解决方案 |
SENSOR复位信号线数目 |
|---|---|
SS928V100 |
4 |
【注意事项】
无。
【相关数据类型及接口】
无
SNS_MAX_CLK_SOURCE_NUM¶
【说明】
SENSOR的时钟信号线个数。
【定义】
#define SNS_MAX_CLK_SOURCE_NUM 4
【解决方案差异】
解决方案 |
SENSOR时钟信号线数目 |
|---|---|
SS928V100 |
4 |
【注意事项】
无
【相关数据类型及接口】
无
sns_rst_source_t¶
【说明】
SENSOR的复位信号线编号,软件上称为SENSOR的复位源。
【定义】
typedef unsigned int sns_rst_source_t;
【解决方案差异】
解决方案 |
SENSOR复位设备范围 |
|---|---|
SS928V100 |
[0, SNS_MAX_RST_SOURCE_NUM) |
【注意事项】
每条SENSOR复位信号线可以接两个SENSOR,用户需要根据板子的连线确认SENSOR复位信号线编号。不同的芯片的SENSOR复位信号线数目请参考取值范围。
【相关数据类型及接口】
无。
sns_clk_source_t¶
【说明】
SENSOR的时钟信号线编号,软件上称为SENSOR的时钟源。
【定义】
typedef unsigned int sns_clk_source_t;
【解决方案差异】
解决方案 |
SENSOR时钟设备范围 |
|---|---|
SS928V100 |
[0, SNS_MAX_CLK_SOURCE_NUM) |
【注意事项】
每条SENSOR时钟信号线可以接两个SENSOR,用户需要根据板子的连线确认SENSOR时钟信号线编号。不同的芯片的SENSOR复位信号线数目请参考取值范围。
【相关数据类型及接口】
MIPI_RX_MAX_DEV_NUM¶
【说明】
MIPI Rx支持的设备数。
【定义】
#define MIPI_RX_MAX_DEV_NUM 4
【解决方案差异】
解决方案 |
MIPI Rx支持的设备数 |
|---|---|
SS928V100 |
4 |
【注意事项】
SS928V100支持多个MIPI Rx设备同时使用。
【相关数据类型及接口】
无
COMBO_MAX_LANE_NUM¶
【说明】
MIPI Rx的Lane总数目。
【定义】
#define COMBO_MAX_LANE_NUM 8
【解决方案差异】
无
【注意事项】
无
【相关数据类型及接口】
无
MAX_LANE_NUM_PER_LINK¶
【说明】
MIPI Rx一个link的Lane数。
【定义】
#define MAX_LANE_NUM_PER_LINK 2
【解决方案差异】
无
【注意事项】
这里的link是软件概念,软件上把一个逻辑的link拆分成了2个软件的link。
【相关数据类型及接口】
无
MIPI_LANE_NUM¶
【说明】
MIPI Rx的MIPI设备支持的最大Lane数。
【定义】
#define MIPI_LANE_NUM 8
【解决方案差异】
无
【注意事项】
无
【相关数据类型及接口】
无
LVDS_LANE_NUM¶
【说明】
MIPI Rx的LVDS设备支持的最大Lane数。
【定义】
#define LVDS_LANE_NUM 8
【解决方案差异】
无。
【注意事项】
无。
【相关数据类型及接口】
无。
WDR_VC_NUM¶
【说明】
定义最多支持的Virtual Chnnael数量。
【定义】
#define WDR_VC_NUM 4
【解决方案差异】
无。
【注意事项】
无。
【相关数据类型及接口】
无。
SYNC_CODE_NUM¶
【说明】
定义LVDS每个Virtual Channel的同步码数量
【定义】
#define SYNC_CODE_NUM 4
【解决方案差异】
无。
【注意事项】
无。
【相关数据类型及接口】
无。
MAX_EXT_DATA_TYPE_NUM¶
【说明】
定义扩展DATE TYPE的数量。
【定义】
#define MAX_EXT_DATA_TYPE_NUM 3
【解决方案差异】
无。
【注意事项】
无。
【相关数据类型及接口】
lane_divide_mode_t¶
【说明】
MIPI Rx的LANE分布。
【定义】
typedef enum {
LANE_DIVIDE_MODE_0 = 0, /* 8lane */
LANE_DIVIDE_MODE_1 = 1, /* 4lane + 4lane */
LANE_DIVIDE_MODE_2 = 2, /* 4lane + 2lane +2lane */
LANE_DIVIDE_MODE_3 = 3, /* 2lane + 2lane + 2lane + 2lane */
LANE_DIVIDE_MODE_BUTT
} lane_divide_mode_t;
【解决方案差异】
解决方案 |
MIPI Rx的LANE分布 |
|---|---|
SS928V100 |
[LANE_DIVIDE_MODE_0, LANE_DIVIDE_MODE_3] |
【注意事项】
只有MIPI需要设置LANE的分布。
【相关数据类型及接口】
input_mode_t¶
【说明】
MIPI Rx输入接口类型
【定义】
typedef enum {
INPUT_MODE_MIPI = 0x0, /* mipi */
INPUT_MODE_SUBLVDS = 0x1, /* SUB_LVDS */
INPUT_MODE_LVDS = 0x2, /* LVDS */
INPUT_MODE_HISPI = 0x3, /* HISPI */
INPUT_MODE_BUTT
} input_mode_t;
【解决方案差异】
无。
【注意事项】
无。
【相关数据类型及接口】
无。
mipi_data_rate_t¶
【说明】
MIPI Rx输入速率。
【定义】
typedef enum
{
MIPI_DATA_RATE_X1 = 0, /* output 1 pixel per clock */
MIPI_DATA_RATE_X2 = 1, /* output 2 pixel per clock */
MIPI_DATA_RATE_BUTT
} mipi_data_rate_t;
【解决方案差异】
解决方案 |
是否支持MIPI_DATA_RATE_X2 |
|---|---|
SS928V100 |
MIPI的所有设备都支持。 |
【注意事项】
无。
【相关数据类型及接口】
无。
img_rect_t¶
【说明】
Mipi crop属性。
【定义】
typedef struct
{
int x;
int y;
unsigned int width;
unsigned int height;
} img_rect_t;
【成员】
成员名称 |
描述 |
|---|---|
x |
Crop 起始位置x。 |
y |
Crop 起始位置y。 |
width |
Crop 宽度,单位:像素。 |
height |
Crop 高度单位:像素。 |
【解决方案差异】
无。
【注意事项】
无。
【相关数据类型及接口】
无。
data_type_t¶
【说明】
传输的数据类型。
【定义】
typedef enum
{
DATA_TYPE_RAW_8BIT = 0,
DATA_TYPE_RAW_10BIT,
DATA_TYPE_RAW_12BIT,
DATA_TYPE_RAW_14BIT,
DATA_TYPE_RAW_16BIT,
DATA_TYPE_YUV420_8BIT_NORMAL,
DATA_TYPE_YUV420_8BIT_LEGACY,
DATA_TYPE_YUV422_8BIT,
DATA_TYPE_YUV422_PACKED,
DATA_TYPE_BUTT
} data_type_t;
【成员】
成员名称 |
描述 |
|---|---|
DATA_TYPE_RAW_8BIT |
8BIT的RAW数据。 |
DATA_TYPE_RAW_10BIT |
10BIT的RAW数据。 |
DATA_TYPE_RAW_12BIT |
12BIT的RAW数据。 |
DATA_TYPE_RAW_14BIT |
14BIT的RAW数据。 |
DATA_TYPE_RAW_16BIT |
16BIT的RAW数据。 |
DATA_TYPE_YUV420_8BIT_NORMAL |
8BIT的YUV420数据,NORMAL模式。 |
DATA_TYPE_YUV420_8BIT_LEGACY |
8BIT的YUV420数据,LEGACY模式。 |
DATA_TYPE_YUV422_8BIT |
8BIT的YUV422数据。 |
DATA_TYPE_YUV422_PACKED |
YUV422数据在MIPI按16bit raw打包接收。 |
【解决方案差异】
解决方案 |
支持的数据类型 |
|---|---|
SS928V100 |
全部支持 |
【注意事项】
无。
【相关数据类型及接口】
无。
ext_data_type_t¶
【说明】
MIPI 扩展DATE TYPE属性。
【定义】
typedef struct {
combo_dev_t devno;
unsigned int num;
unsigned int ext_data_bit_width[MAX_EXT_DATA_TYPE_NUM];
unsigned int ext_data_type[MAX_EXT_DATA_TYPE_NUM];
} ext_data_type_t;
【成员】
成员名称 |
描述 |
|---|---|
devno |
MIPI Rx设备号 |
num |
支持的扩展DATA TYPE数量 |
ext_data_bit_width |
对应扩展DATA TYPE输入数据的位宽 |
ext_data_type |
对应扩展DATA TYPE的值 |
【解决方案差异】
无
【注意事项】
无
【相关数据类型及接口】
mipi_wdr_mode_t¶
【说明】
MIPI WDR模式。
【定义】
typedef enum
{
OT_MIPI_WDR_MODE_NONE = 0x0,
OT_MIPI_WDR_MODE_VC = 0x1, /* Virtual Channel */
OT_MIPI_WDR_MODE_DT = 0x2, /* Data Type */
OT_MIPI_WDR_MODE_DOL = 0x3, /* DOL Mode */
OT_MIPI_WDR_MODE_BUTT
} mipi_wdr_mode_t;
【成员】
成员名称 |
描述 |
|---|---|
OT_MIPI_WDR_MODE_NONE |
线性模式 |
OT_MIPI_WDR_MODE_VC |
使用Packet header中的Virtual Channel区分长短曝光帧 |
OT_MIPI_WDR_MODE_DT |
使用Packet header中的自定义Data type区分长短曝光帧 |
OT_MIPI_WDR_MODE_DOL |
表示DOL模式WDR,使用Packet header之后的一个pixel识别长短曝光帧 |
【解决方案差异】
无
【注意事项】
无
【相关数据类型及接口】
无
mipi_dev_attr_t¶
【说明】
mipi设备属性。
【定义】
typedef struct
{
data_type_t input_data_type;
mipi_wdr_mode_t wdr_mode;
short lane_id[MIPI_LANE_NUM];
union
{
short data_type[WDR_VC_NUM];
};
} mipi_dev_attr_t;
【成员】
成员名称 |
描述 |
|---|---|
input_data_type |
传输的数据类型。 |
lane_id |
发送端(sensor)和接收端(MIPI Rx) Lane的对应关系 未使用的Lane设置为-1。 |
wdr_mode |
MIPI WDR模式 |
data_type |
当wdr_mode为OT_MIPI_WDR_MODE_DT时,需要设置data_type,表示不同曝光长度数据对应的Data Type。 |
【解决方案差异】
无。
【注意事项】
无。
【相关数据类型及接口】
lvds_wdr_mode_t¶
【说明】
LVDS WDR模式。
【定义】
typedef enum
{
OT_WDR_MODE_NONE = 0x0,
OT_WDR_MODE_2F = 0x1,
OT_WDR_MODE_3F = 0x2,
OT_WDR_MODE_4F = 0x3,
OT_WDR_MODE_DOL_2F = 0x4,
OT_WDR_MODE_DOL_3F = 0x5,
OT_WDR_MODE_DOL_4F = 0x6,
OT_WDR_MODE_BUTT
} lvds_wdr_mode_t;
【成员】
成员名称 |
描述 |
|---|---|
OT_WDR_MODE_NONE |
线性模式 |
OT_WDR_MODE_2F |
2合一WDR |
OT_WDR_MODE_3F |
3合一WDR |
OT_WDR_MODE_4F |
4合一WDR |
OT_WDR_MODE_DOL_2F |
DOL模式2合一WDR |
OT_WDR_MODE_DOL_3F |
DOL模式3合一WDR |
OT_WDR_MODE_DOL_4F |
DOL模式4合一WDR |
【解决方案差异】
解决方案 |
WDR模式 |
|---|---|
SS928V100 |
都支持 |
【注意事项】
DOL WDR模式需要配置为OT_WDR_MODE_DOL_2F/ OT_WDR_MODE_DOL_3F/ OT_WDR_MODE_DOL_4F。
Built-in WDR模式和帧合成WDR模式都需要配置为OT_WDR_MODE_NONE。
【相关数据类型及接口】
无。
lvds_sync_mode_t¶
【说明】
LVDS同步方式。
【定义】
typedef enum
{
LVDS_SYNC_MODE_SOF = 0, /* sensor SOL, EOL, SOF, EOF */
LVDS_SYNC_MODE_SAV, /* SAV, EAV */
LVDS_SYNC_MODE_BUTT
} lvds_sync_mode_t;
表 1 LVDS同步方式
sync_mode |
同步方式 |
|---|---|
LVDS_SYNC_MODE_SOF |
SOF、EOF、SOL、EOL 请参考图1。 |
LVDS_SYNC_MODE_SAV |
invalid SAV、invalid EAV、valid SAV、valid EAV 请参考图2。 |
【解决方案差异】
无。
【注意事项】
无。
【相关数据类型及接口】
无。
lvds_bit_endian_t¶
【说明】
比特位大小端模式。
【定义】
typedef enum
{
LVDS_ENDIAN_LITTLE = 0x0,
LVDS_ENDIAN_BIG = 0x1,
LVDS_ENDIAN_BUTT
} lvds_bit_endian_t;
【解决方案差异】
无。
【注意事项】
无。
【相关数据类型及接口】
无。
lvds_vsync_type_t¶
【说明】
LVDS vsync类型。
【定义】
typedef enum
{
LVDS_VSYNC_NORMAL = 0x00,
LVDS_VSYNC_SHARE = 0x01,
LVDS_VSYNC_HCONNECT= 0x02,
LVDS_VSYNC_BUTT
} lvds_vsync_type_t;
【成员】
成员名称 |
描述 |
|---|---|
LVDS_VSYNC_NORMAL |
长短曝光帧有独立的SOF-EOF、SOL-EOL或者invalid SAV-invalid EAV, valid SAV-valid EAV。 |
LVDS_VSYNC_SHARE |
长短曝光帧共用一对SOF-EOF标识,短曝光的起始几行用固定值填充。 |
LVDS_VSYNC_HCONNECT |
长短曝光帧共用一对SAV-EAV标识,长短曝光帧之间是固定周期的消隐。 |
LVDS_VSYNC_SHARE同步方式:
SOF |
Long Exposure |
EOL |
Horizontal Blanking |
SOL |
Padding |
EOL |
Horizontal Blanking |
SOL |
|||||||
Short Exposure |
|||||||
Padding |
|||||||
EOF |
|||||||
SOV |
V.BLK |
EOV |
- |
SOV |
V.BLK |
EOV |
- |
LVDS_VSYNC_HCONNECT同步方式:
SAV |
Long Exposure frame |
Horizontal Blanking(fix period) |
V.BLK |
Horizontal Blanking(fix period) |
V.BLK |
EAV |
Horizontal Blanking |
Short ExposureFrame1 |
|||||||
Short Exposure Frame2 |
|||||||
V.BLK |
|||||||
V.BLK |
|||||||
V.BLK |
- |
||||||
【解决方案差异】
无。
【注意事项】
无。
【相关数据类型及接口】
lvds_vsync_attr_t¶
【说明】
LVDS vsync参数
【定义】
typedef struct
{
lvds_vsync_type_t sync_type;
unsigned short hblank1;
unsigned short hblank2;
} lvds_vsync_attr_t;
【解决方案差异】
无。
【注意事项】
当sync_type为LVDS_VSYNC_HCONNECT时,需要配置hblank1和hblank2,表示Hconnect的消隐区长度。
【相关数据类型及接口】
lvds_fid_type_t¶
【说明】
Frame identification Id类型
【定义】
typedef enum
{
LVDS_FID_NONE = 0x00,
LVDS_FID_IN_SAV = 0x01, /* frame identification id in SAV 4th */
LVDS_FID_IN_DATA = 0x02, /* frame identification id in first data */
LVDS_FID_BUTT
} lvds_fid_type_t;
【成员】
成员名称 |
描述 |
|---|---|
LVDS_FID_NONE |
不使用frame identification id。 |
LVDS_FID_IN_SAV |
FID插入在SAV第4个字段中,DOL 4个字段的同步码需要将fid_type配置为LVDS_FID_IN_SAV。 |
LVDS_FID_IN_DATA |
FID作为Frame information column插入在同步码之后的第一个像素之前,DOL 5个字段的同步码需要将fid_type配置为LVDS_FID_IN_DATA。 |
【解决方案差异】
无。
【注意事项】
无。
【相关数据类型及接口】
无。
lvds_fid_attr_t¶
【说明】
Frame indentification Id配置信息。
【定义】
typedef struct
{
lvds_fid_type_t fid_type;
unsigned char output_fil;
} lvds_fid_attr_t;
【成员】
成员名称 |
描述 |
|---|---|
fid_type |
LVDS DOL模式下的Frame identification Id类型 |
output_fil |
DOL模式中的Frame information line紧接在V-Blanking之后输出,Frame ID是Frame information line中的第一个像素值。 Frame information line中并不包含有效的视频数据:
|
【解决方案差异】
无。
【注意事项】
无。
【相关数据类型及接口】
lvds_dev_attr_t¶
【说明】
LVDS/SubLVDS/HiSPi设备属性。
【定义】
typedef struct
{
data_type_t input_data_type;
lvds_wdr_mode_t wdr_mode;
lvds_sync_mode_t sync_mode;
lvds_vsync_attr_t vsync_attr;
lvds_fid_attr_t fid_attr;
lvds_bit_endian_t data_endian;
lvds_bit_endian_t sync_code_endian;
short lane_id[LVDS_LANE_NUM];
unsigned short sync_code[LVDS_LANE_NUM][WDR_VC_NUM][SYNC_CODE_NUM];
} lvds_dev_attr_t;
【成员】
成员名称 |
描述 |
|---|---|
input_data_type |
传输的数据类型。 |
wdr_mode |
WDR模式。 |
sync_mode |
LVDS同步模式。 |
vsync_attr |
vsync类型,当wdr_mod为DOL模式并且sync_mode为LVDS_SYNC_MODE_SAV时,需要配置vsync的类型。 |
fid_attr |
frame identification类型,当wdr_mode为DOL模式,并且sync_mode为LVDS_SYNC_MODE_SAV时,需要配置。 |
data_endian |
数据大小端模式。 |
sync_code_endian |
同步码大小端模式。 |
lane_id |
发送端(sensor)和接收端(MIPI Rx) lane的对应关系 未使用的lane设置为-1 lane id的配置方式请参考“MIPI RX Lane id如何配置”。 |
sync_code |
每个Virtual Channel有4个同步码,根据同步模式不同,分别表示SOF/EOF/ SOL/EOL的同步码或者invalid SAV/invalid EAV/ valid SAV/valid EAV的同步码。 |
【解决方案差异】
无。
【注意事项】
使用该结构体,LVDS的LANE同步码同步到达。
【相关数据类型及接口】
phy_cmv_mode_t¶
【说明】
PHY共模电压模式。
【定义】
typedef enum
{
PHY_CMV_GE1200MV = 0x00,
PHY_CMV_LT1200MV = 0x01,
PHY_CMV_BUTT
} phy_cmv_mode_t;
【成员】
成员名称 |
描述 |
|---|---|
PHY_CMV_GE1200MV |
PHY共模电压大于等于1200mv。 |
PHY_CMV_LT1200MV |
PHY共模电压小于1200 mv。 |
【解决方案差异】
无。
【注意事项】
无。
【相关数据类型及接口】
无。
phy_cmv_t¶
【说明】
PHY 共模电压配置信息。
【定义】
typedef struct
{
combo_dev_t devno;
phy_cmv_mode_t cmv_mode;
} phy_cmv_t;
【成员】
成员名称 |
描述 |
|---|---|
devno |
MIPI Rx设备号。 |
cmv_mode |
PHY功能电压模式。 |
【解决方案差异】
无。
【注意事项】
无。
【相关数据类型及接口】
combo_dev_attr_t¶
【说明】
combo设备属性,由于MIPI Rx能够对接CSI-2、LVDS、HiSPi等时序,所以将MIPI Rx称为combo设备。
【定义】
typedef struct
{
combo_dev_t devno;
input_mode_t input_mode;
mipi_data_rate_t data_rate;
img_rect_t img_rect;
union
{
mipi_dev_attr_t mipi_attr;
lvds_dev_attr_t lvds_attr;
};
} combo_dev_attr_t;
【成员】
成员名称 |
描述 |
|---|---|
devno |
MIPI Rx设备号 |
input_mode |
输入接口类型。 |
data_rate |
接口传输速率。 |
img_rect |
图像crop区域。 |
mipi_attr |
如果input_mode配置为INPUT_MODE_MIPI,则必须配置mipi_attr。 |
lvds_attr |
如果input_mode配置为INPUT_MODE_SUBLVDS/ INPUT_MODE_LVDS/ INPUT_MODE_HISPI,则必须配置lvds_attr |
【解决方案差异】
解决方案 |
本结构体 |
|---|---|
SS928V100 |
支持 |
【注意事项】
无。
【相关数据类型及接口】
无。
OT_MIPI_TX_IOC_MAGIC¶
【说明】
MIPI Tx ioctl命令的幻数。
【定义】
#define OT_MIPI_TX_IOC_MAGIC 't'
【成员】
无
【注意事项】
无
【相关数据类型及接口】
无
LANE_MAX_NUM¶
【说明】
定义MIPI TX支持的最大Lane数。
【定义】
#define LANE_MAX_NUM 4
【注意事项】
无。
【相关数据类型及接口】
无。
MIPI_TX_SET_DATA_SIZE¶
【说明】
定义MIPI TX长指令支持的最大数据长度。
【定义】
#define MIPI_TX_SET_DATA_SIZE 800
【注意事项】
无。
【相关数据类型及接口】
无。
MIPI_TX_GET_DATA_SIZE¶
【说明】
定义MIPI TX读指令支持的最大数据长度。
【定义】
#define MIPI_TX_GET_DATA_SIZE 160
【注意事项】
无。
【相关数据类型及接口】
无。
ATTRIBUTE¶
【说明】
定义编译时对齐字节数。
【定义】
#define OT_ALIGN_NUM 8
#define ATTRIBUTE __attribute__((aligned(OT_ALIGN_NUM)))
【注意事项】
无。
【相关数据类型及接口】
无。
out_mode_t¶
【说明】
MIPI TX输出或外设操作模式。
【定义】
typedef enum {
OUT_MODE_CSI = 0x0,
OUT_MODE_DSI_VIDEO = 0x1,
OUT_MODE_DSI_CMD = 0x2,
OUT_MODE_BUTT
} out_mode_t;
【注意事项】
无。
【相关数据类型及接口】
无。
mipi_tx_work_mode_t¶
【说明】
MIPI Tx 工作模式
【定义】
typedef enum {
MIPI_TX_WORK_MODE_LP = 0x0,
MIPI_TX_WORK_MODE_HS = 0x1,
MIPI_TX_WORK_MODE_BUTT
} mipi_tx_work_mode_t;
【注意事项】
无。
【相关数据类型及接口】
无。
video_mode_t¶
【说明】
MIPI TX视频模式或视频格式,或包序列格式。
【定义】
typedef enum {
BURST_MODE = 0x0,
NON_BURST_MODE_SYNC_PULSES = 0x1,
NON_BURST_MODE_SYNC_EVENTS = 0x2,
VIDEO_DATA_MODE_BUTT
} video_mode_t;
【注意事项】
无。
【相关数据类型及接口】
无。
out_format_t¶
【说明】
MIPI TX输出数据格式。
【定义】
typedef enum {
OUT_FORMAT_RGB_16BIT = 0x0,
OUT_FORMAT_RGB_18BIT = 0x1,
OUT_FORMAT_RGB_18BIT_LOOSELY = 0x2,
OUT_FORMAT_RGB_24BIT = 0x3,
OUT_FORMAT_YUV420_12BIT = 0x4,
OUT_FORMAT_YUV422_16BIT = 0x5,
OUT_FORMAT_YUV420_8BIT_NORMAL = 0x6,
OUT_FORMAT_YUV420_8BIT_LEGACY = 0x7,
OUT_FORMAT_YUV422_8BIT = 0x8,
OUT_FORMAT_RGB_888 = 0x9,
OUT_FORMAT_RAW_8BIT = 0xa,
OUT_FORMAT_RAW_10BIT = 0xb,
OUT_FORMAT_RAW_12BIT = 0xc,
OUT_FORMAT_RAW_14BIT = 0xd,
OUT_FORMAT_RAW_16BIT = 0xe,
OUT_FORMAT_BUTT
} out_format_t;
【注意事项】
DSI模式(OUT_MODE_DSI_CMD,或OUT_MODE_DSI_VIDEO)支持数据格式范围:[OUT_FORMAT_RGB_16BIT, OUT_FORMAT_YUV422_16BIT]。
CSI模式(OUT_MODE_CSI)支持数据格式范围:[OUT_FORMAT_YUV420_8BIT_NORMAL, OUT_FORMAT_RAW_16BIT]。
【相关数据类型及接口】
无。
sync_info_t¶
【说明】
MIPI TX设备同步信息。
【定义】
typedef struct {
unsigned short hsa_pixels;
unsigned short hbp_pixels;
unsigned short hact_pixels;
unsigned short hfp_pixels;
unsigned short vsa_lines;
unsigned short vbp_lines;
unsigned short vact_lines;
unsigned short vfp_lines;
} sync_info_t;
【成员】
成员名称 |
描述 |
|---|---|
hsa_pixels |
水平同步脉冲区像素个数,取值范围:[1, 65535]。 |
hbp_pixels |
水平后消隐区像素个数,取值范围:[1, 65535]。 |
hact_pixels |
水平有效区像素个数,取值范围:[1, 4096]。 |
hfp_pixels |
水平前消隐区像素个数,取值范围:[1, 65535]。 |
vsa_lines |
垂直同步脉冲区行数,取值范围:[1, 256]。 |
vbp_lines |
垂直后消隐区行数,取值范围:[1, 256]。 |
vact_lines |
垂直有效区行数,取值范围:[100, 4096]。 |
vfp_lines |
垂直前隐区行数,取值范围:[1, 256]。 |
【注意事项】
无。
【相关数据类型及接口】
无。
combo_dev_cfg_t¶
【说明】
MIPI TX设备属性。
【定义】
typedef struct {
unsigned int devno; /* device number */
short lane_id[LANE_MAX_NUM]; /* lane_id: -1 - disable */
out_mode_t out_mode; /* output mode: CSI/DSI_VIDEO/DSI_CMD */
video_mode_t video_mode;
out_format_t out_format;
sync_info_t sync_info;
unsigned int phy_data_rate; /* Mbps */
unsigned int pixel_clk; /* KHz */
} combo_dev_cfg_t;
【成员】
成员名称 |
描述 |
|---|---|
devno |
MIPI Tx设备号,仅支持设备0。 |
lane_id |
lane个数和模式配置,取决于lane_id中非-1值的个数,仅四种模式可选,且lane个数、lane号码、lane顺序可调整: 配置方法参考本章MIPI RX Lane id如何配置小节。 1 lane模式:lane0 2 lane模式:lane0,lane1 3 lane模式:lane0,lane1,lane2 4 lane模式:lane0,lane1,lane2,lane3 建议的配置方法: 1 lane模式,配置成:lane_id[4] = {0, -1, -1, -1} 2 lane模式,配置成:lane_id[4] = {0, 1, -1, -1} 3 lane模式,配置成:lane_id[4] = {0, 1, 2, -1} 4 lane模式,配置成:lane_id[4] = {0, 1, 2, 3} |
out_mode |
MIPI Tx输出模式。 |
video_mode |
MIPI Tx视频模式。 |
out_format |
MIPI Tx输出格式。 |
sync_info |
MIPI Tx设备的同步信息。 |
phy_data_rate |
MIPI Tx输出速率,输出范围请参考芯片手册“MIPI Tx”章节,MIPI Tx高速模式每个通道(lane)的速率范围的描述,单位是Mbps。 取值范围:[80, 2500] |
pixel_clk |
像素时钟,单位为KHz。 取值范围:[3333, 1250000] |
【注意事项】
无。
【相关数据类型及接口】
无。
cmd_info_t¶
【说明】
发送给MIPI TX设备的命令信息。
【定义】
typedef struct {
unsigned int devno;
mipi_tx_work_mode_t work_mode;
unsigned char lp_clk_en;
unsigned short data_type;
unsigned short cmd_size;
const unsigned char ATTRIBUTE *cmd;
} cmd_info_t;
【成员】
成员名称 |
描述 |
|---|---|
devno |
MIPI TX设备号,仅支持设备0。 |
work_mode |
工作模式:低功耗模式,高速模式。 |
lp_clk_en |
低功耗模式时钟开关。 |
data_type |
命令数据类型。 |
cmd_size |
短指令的数据,范围:[0, 0xFFFF]。 长指令的数据长度,范围:(0, MIPI_TX_SET_DATA_SIZE],单位:字节。 注:cmd置为NULL:cmd_size表示短指令的数据,低八位对应数据1、高八位对应数据2。 cmd置为非NULL:cmd_size表示长指令的数据长度。 |
cmd |
长指令数据指针。
|
【注意事项】
cmd成员为NULL时,将不对cmd_size成员做取值范围检查。
【相关数据类型及接口】
无。
get_cmd_info_t¶
【说明】
发送给MIPI TX设备的命令信息。
【定义】
typedef struct {
unsigned int devno;
mipi_tx_work_mode_t work_mode;
unsigned char lp_clk_en;
unsigned short data_type;
unsigned short data_param;
unsigned short get_data_size;
unsigned char ATTRIBUTE *get_data;
} get_cmd_info_t;
【成员】
成员名称 |
描述 |
|---|---|
devno |
MIPI TX设备号,仅支持设备0。 |
work_mode |
工作模式:低功耗模式,高速模式。 |
lp_clk_en |
低功耗模式时钟开关。 |
data_type |
命令数据类型。 |
data_param |
数据参数,低八比特为第一个参数,高八比特为第二个参数、不用时填0。 |
get_data_size |
预期获取的数据字节数,范围:(0, MIPI_TX_GET_DATA_SIZE]。 |
get_data |
获取到的数据存放地址指针,需要用户分配,不能设置为NULL。 |
【注意事项】
无。
【相关数据类型及接口】
无。
MIPI TX模块参数¶
g_smooth¶
g_smooth模块参数用于实现平滑过渡,使用方法如下:
在Linux操作系统下,加载MIPI TX驱动的时候可以控制是否复位MIPI TX的逻辑。
insmod ot_mipi_tx.ko smooth=1:加载ko时不进行逻辑复位。
insmod ot_mipi_tx.ko smooth=0:加载ko时进行逻辑复位。
Proc信息¶
MIPI_RX Proc信息¶
MIPI_RX正常工作状态下proc信息中宽高应该是稳定不变且和sensor输出时序的宽高匹配,并且MIPI_RX各种错误中断计数为0。如果错误中断计数不为0,请检查MIPI_RX相关属性是否配置正确。
【调试信息】
[MIPI_RX] Version: [SS928V100V1.0.0.0 B010 Release], Build Time[Jan 25 2022, 11:06:37]
-----mipi lane divide mdoe---------------------------------------------------------------------------------
mode lane divide
0 8
-----mipi dev attr--------------------------------------------------------------------------------------------
devno work_mode data_rate data_type wdr_mode img_x img_y img_w img_h
0 mipi X1 raw12 none 0 0 3840 2160
-----mipi lane info-------------------------------------------------------------------------------------------
devno lane_id
0 0, 1, 2, 3, -1, -1, -1, -1
-----mipi phy data info------------------------------------------------------
phy_id lane_id phy_data mipi_data lvds_data freq
0 0, 1, 2, 3 0x00,0x00,0x00,0x00 0x00,0x00,0x00,0x00 0x00,0x00,0x00,0x00 n/a
1 4, 5, 6, 7 0x00,0x00,0x00,0x00 0x00,0x00,0x00,0x00 0x00,0x00,0x00,0x00 n/a
-----mipi detect info----------------------------------------------------
devno vc width height
0 0 1920 1080
0 1 0 0
0 2 0 0
0 3 0 0
-----lvds detect info----------------------------------------------------
devno vc width height
0 0 3840 2160
0 1 0 0
0 2 0 0
0 3 0 0
-----lvds lane detect info----------------------------------------------------
devno lane width height
0 2 960 2179
0 4 960 2179
0 5 960 2179
0 7 960 2179
-----phy cil err int info---------------------------------------------
phy_id clk2_tmout clk_tmout lane0_tmout lane1_tmout lane2_tmout lane3_tmout clk2_esc clk_esc lane0_esc lane1_esc lane2_esc lane3_esc
0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0 0 0 0 0 0
-----mipi error int info1-----------------------------------------------------------
devno ecc2 vc0_crc vc1_crc vc2_crc vc3_crc vc0_ecc_corrct vc1_ecc_corrct vc2_ecc_corrct vc3_ecc_corrct
0 0 0 0 0 0 0 0 0 0
-----mipi error int info2-----------------------------------------------------------
devno vc0_frmnum vc1_frmnum vc2_frmnum vc3_frmnum vc0_frmmmatch vc1_frmmmatch vc2_frmmmatch vc3_frmmmatch
0 0 0 0 0 0 0 0 0
-----mipi error int info3-----------------------------------------------------------
devno data_fifo_rderr cmd_fifo_rderr vsync cmd_fifo_wrerr data_fifo_wrerr
0 0 0 0 0 0
-----lvds error int info1-----------------------------------------------------------
devno vsync cmd_rderr cmd_wrerr pop_err stat_err
0 0 0 0 0 0
-----lvds error int info2-----------------------------------------------------------
devno link0_wrerr link1_wrerr link2_wrerr link0_rderr link1_rderr link2_rderr
0 0 0 0 0 0 0
-----lvds error int info3-----------------------------------------------------------
devno lane0_err lane1_err lane2_err lane3_err lane4_err lane5_err lane6_err lane7_err
0 0 0 0 0 0 0 0 0
-----align error int info--------------------------------------
devno fifo_fullerr lane0_err lane1_err lane2_err lane3_err lane4_err lane5_err lane6_err lane7_err
0 0 0 0 0 0 0 0 0 0
【调试信息分析】
MIPI_Rx通过Phy接收sensor的差分数据,Phy Controller检测到同步头后,将每条lane上的数据对齐;
Pixel Controller解析同步信息并按照raw data的位宽将lane上面的数据合并为Pixel数据;Output模式将Pixel数据发送给后级模块。
Phy PhyController PixelController由sensor的pixel clk提供时钟,output模块的时钟为称为随路时钟,与后级模块的工作时钟相同。MIPI_Rx的crop功能在Pixel Controller的末端实现,所以Crop后可以降低需要的随路时钟。
图 1 MIPI数据流

【参数说明】
参数 |
描述 |
|
|---|---|---|
mipi lane divide mdoe |
mode |
MIPI Rx的lane分布模式 |
lane divide |
MIPI_Rx详细的LANE分布。 |
|
mipi dev attr |
devno |
MIPI设备号 |
work_mode |
MIPI设备工作模式:LVDS/MIPI等模式 |
|
data_rate |
MIPI Rx的速率。 |
|
data_type |
数据类型:RAW8 / RAW10/ RAW12/ RAW14/ RAW16 bit等类型 |
|
wdr_mode |
WDR模式:
|
|
img_x |
Crop图像起始X |
|
img_y |
Crop图像起始Y |
|
img_w |
Crop图像宽度 |
|
img_h |
Crop图像高度 |
|
mipi lane info |
devno |
MIPI设备号 |
lane_id |
Lane ID |
|
mipi phy data info |
phy_id |
PHY ID序号 |
lane_id |
对应的Lane Id |
|
phy_data |
PHY对应的4条Lane接收到的实时数据 |
|
mipi_data |
PHY对应的4条Lane检测到MIPI帧的数据包头数据 |
|
lvds_data |
PHY对应的4条Lane检测到LVDS帧同步信号后的实时数据 |
|
freq |
HS时钟频率测量值 |
|
mipi detect info (仅MIPI模式下可见) |
devno |
MIPI_Rx设备号 |
vc |
Virtual Channel |
|
width |
MIPI控制器检测到的图像总宽度 |
|
height |
MIPI控制器检测到的图像总高度 |
|
lvds detect info (仅LVDS模式下可见) |
devno |
MIPI_Rx设备号 |
vc |
Virtual Channel |
|
width |
MIPI控制器检测到的图像总宽度 |
|
height |
MIPI控制器检测到的图像总高度 |
|
lvds lane detect info (仅LVDS模式下可见) |
devno |
MIPI_Rx设备号 |
lane |
Lane ID |
|
width |
该lane上检测到的宽度。 |
|
height |
该lane上检测到的高度。 |
|
phy cil err int info |
phy_id |
PHY ID |
clk2_tmout |
Clock2 Lane 从LP切换到HS 超时 |
|
clk_tmout |
Clock1 Lane 从LP切换到HS 超时 |
|
lane0_tmout |
DataLane 0从LP切换到HS超时 |
|
lane1_tmout |
Data Lane 1从LP切换到HS超时 |
|
lane2_tmout |
Data Lane 2从LP切换到HS超时 |
|
lane3_tmout |
Data Lane 3从LP切换到HS超时 |
|
clk2_esc |
Clock2 Lane 切换到escape模式超时 |
|
clk_esc |
Clock Lane 切换到escape模式超时 |
|
lane0_esc |
Data Lane 0切换到escape模式超时 |
|
lane1_esc |
Data Lane 1切换到escape模式超时 |
|
lane2_esc |
Data Lane 2切换到escape模式超时 |
|
lane3_esc |
Data Lane 3切换到escape模式超时 |
|
mipi error int info1 (仅MIPI模式下可见) |
devno |
MIPI_Rx设备号。 |
ecc2 |
Header至少2个错误,ECC无法纠错 |
|
vc0_crc |
VC0通道数据的CRC错误计数。 |
|
vc1_crc |
VC1通道数据的CRC错误计数。 |
|
vc2_crc |
VC2通道数据的CRC错误计数。 |
|
vc3_crc |
VC3通道数据的CRC错误计数。 |
|
vc0_ecc_corrct |
VC0通道Header的ECC已纠正的错误计数。 |
|
vc1_ecc_corrct |
VC1通道Header的ECC已纠正的错误计数。 |
|
vc2_ecc_corrct |
VC2通道Header的ECC已纠正的错误计数。 |
|
vc3_ecc_corrct |
VC3通道Header的ECC已纠正的错误计数。 |
|
mipi error int info2 (仅MIPI模式下可见) |
devno |
MIPI_Rx设备号。 |
vc0_frmnum |
VC0的帧序错误计数 |
|
vc1_frmnum |
VC1的帧序错误计数 |
|
vc2_frmnum |
VC2的帧序错误计数 |
|
vc3_frmnum |
VC3的帧序错误计数 |
|
vc0_frmmmatch |
VC0通道的帧起始与帧结束短包不匹配计数 |
|
vc1_frmmmatch |
VC1通道的帧起始与帧结束短包不匹配计数 |
|
vc2_frmmmatch |
VC2通道的帧起始与帧结束短包不匹配计数 |
|
vc3_frmmmatch |
VC3通道的帧起始与帧结束短包不匹配计数 |
|
mipi error int info3 (仅MIPI模式下可见) |
devno |
MIPI_Rx设备号。 |
data_fifo_rderr |
MIPI CTRL读数据FIFO中断计数 |
|
cmd_fifo_rderr |
MIPI CTRL读命令FIFO中断计数 |
|
vsync |
MIPI CTR vsync中断计数 |
|
cmd_fifo_wrerr |
MIPI CTRL写命令FIFO中断计数 |
|
data_fifo_wrerr |
MIPI CTRL写数据FIFO中断计数 |
|
lvds error int info1 (仅LVDS模式下可见) |
devno |
MIPI设备号 |
vsync |
lvds vsync中断计数 |
|
cmd_rderr |
lvds CMD_FIFO读错误中断计数 |
|
cmd_wrerr |
lvds CMD_FIFO写错误中断计数 |
|
pop_err |
lvds读取line_buf错误中断计数 |
|
stat_err |
lvds各lane同步错误中断计数 |
|
lvds error int info2 (仅LVDS模式下可见) |
devno |
MIPI设备号 |
link0_wrerr |
link0写FIFO错误中断计数 |
|
link1_wrerr |
link1写FIFO错误中断计数 |
|
link2_wrerr |
link2写FIFO错误中断计数 |
|
link0_rderr |
link0读FIFO错误中断计数 |
|
link1_rderr |
link1读FIFO错误中断计数 |
|
link2_rderr |
link2读FIFO错误中断计数 |
|
lvds error int info3 (仅LVDS模式下可见) |
devno |
MIPI设备号 |
lane0_err |
Lane0同步错误中断计数 |
|
lane1_err |
Lane1同步错误中断计数 |
|
lane2_err |
Lane2同步错误中断计数 |
|
lane3_err |
Lane3同步错误中断计数 |
|
lane4_err |
Lane4同步错误中断计数 |
|
lane5_err |
Lane5同步错误中断计数 |
|
lane6_err |
Lane6同步错误中断计数 |
|
lane7_err |
Lane7同步错误中断计数 |
|
align error int info |
devno |
MIPI设备号 |
fifo_fullerr |
FIFO溢出 |
|
lane0_err |
Lane0 FIFO溢出 |
|
lane1_err |
Lane1 FIFO溢出 |
|
lane2_err |
Lane2 FIFO溢出 |
|
lane3_err |
Lane3 FIFO溢出 |
|
lane4_err |
Lane4 FIFO溢出 |
|
lane5_err |
Lane5 FIFO溢出 |
|
lane6_err |
Lane6 FIFO溢出 |
|
lane7_err |
Lane7 FIFO溢出 |
|
MIPI_TX Proc信息¶
MIPI_TX的proc信息主要有:MIPI_TX设备模块参数、MIPI_TX设备配置信息、MIPI_TX时序配置信息、MIPI_TX设备状态信息。
【调试信息】
[MIPI_TX] Version: [SS928V100V1.0.0.0 B010 Release], Build Time[Jan 25 2022, 11:07:02]
----------mipi_tx module config------------------------
smooth
0
---------- mipi_tx dev config---------------------------
devno lane0 lane1 lane2 lane3 output_mode phy_data_rate pixel_clk(KHz) video_mode output_fmt
0 0 1 2 3 1 945 148500 0 2
---------- mipi_tx sync config---------------------------
hact hbp hfp hsa vact vbp vfp vsa
1080 20 130 8 1920 26 16 10
---------- mipi_tx dev status---------------------------
width height horiall vertall hbp hsa vsa
1080 1920 1237 1972 20 8 10
【调试信息分析】
MIPI_TX模块参数、MIPI_TX设备配置信息、MIPI_TX时序配置信息等为设备启动前通过接口配置的信息;MIPI_TX设备状态信息是设备运行时检测到的部分时序信息:有效宽高、水平总宽度、垂直总高度。
【参数说明】
参数 |
描述 |
|
|---|---|---|
mipi_tx module config |
smooth |
平滑过渡标记: 0:关闭。 1:开启。 |
mipi_tx dev config |
devno |
设备号。 |
lane0 lane1 lane2 lane3 |
>=0:lane号码。 -1:禁用。 |
|
output_mode |
0: csi mode 1: dsi video mode 2: dsi command mode |
|
phy_data_rate |
Phy数据率。 |
|
pixel_clk(KHz) |
像素时钟(单位KHz)。 |
|
video_mode |
0: BURST_MODE 1: NON_BURST_MODE_SYNC_PULSES 2: NON_BURST_MODE_SYNC_EVENTS |
|
output_fmt |
0: OUT_FORMAT_RGB_16BIT 1: OUT_FORMAT_RGB_18BIT 2: OUT_FORMAT_RGB_18BIT_LOOSELY 3: OUT_FORMAT_RGB_24BIT 4: OUT_FORMAT_YUV420_12BIT 5: OUT_FORMAT_YUV422_16BIT 6: OUT_FORMAT_YUV420_8BIT_NORMAL 7: OUT_FORMAT_YUV420_8BIT_LEGACY 8: OUT_FORMAT_YUV422_8BIT 9: OUT_FORMAT_RGB_888 10: OUT_FORMAT_RAW_8BIT 11: OUT_FORMAT_RAW_10BIT 12: OUT_FORMAT_RAW_12BIT 13: OUT_FORMAT_RAW_14BIT 14: OUT_FORMAT_RAW_16BIT |
|
mipi_tx sync config |
hact |
水平有效区。 |
hbp |
水平后消隐区。 |
|
hfp |
水平前消隐区。 |
|
hsa |
水平同步脉冲区。 |
|
vact |
垂直有效区。 |
|
vbp |
垂直后消隐区。 |
|
vfp |
垂直前消隐区。 |
|
vsa |
垂直同步脉冲区。 |
|
mipi_tx dev status |
width |
检测到的宽。 |
height |
检测到的高。 |
|
horiall |
水平总宽。 |
|
vertall |
垂直总高。 |
|
hbp |
水平前肩。 |
|
hsa |
水平同步脉冲个数。 |
|
vsa |
垂直同步脉冲个数。 |
|
FAQ¶
MIPI具体规格请参考芯片手册。
MIPI RX Lane id如何配置¶
Lane id的配置对应mipi_dev_attr_t中的short lane_id[MIPI_LANE_NUM],其中lane_id数组的索引号表示的是SENSOR的LANE ID,lane_id数组的值表示的是MIPI的LANE ID。
对接sensor时,未使用的lane将其对应的lane_id配置为-1。配置lane_id还可以调整数据通道顺序,根据硬件单板与实际sensor输出通道的对应关系调整lane_id的配置。
下面举例进行说明,例如MIPI与SENSOR的引脚硬件连接如表1所示。
表 1 SENSOR与MIPI_Rx管脚关系
MIPI Lane管脚 |
SENSOR管脚 |
|---|---|
MIPI_RX1_D0 |
Lane 0 |
MIPI_RX1_D1 |
Lane 1 |
MIPI_RX1_D2 |
Lane 2 |
MIPI_RX1_D3 |
Lane 3 |
MIPI的最大Lane数为8,我们认为SENSOR的Lane数目最多8个,由于sensor实际只有4个Lane,只输出数据到MIPI的4个Lane,需要将SENSOR未连接的或者不存在的Lane的lane_id配置为-1,所以lane_id配置如下:

MIPI TX Lane id如何配置¶
Lane id的配置对应combo_dev_cfg_t中的short lane_id[LANE_MAX_NUM],其中lane_id数组的索引号即数组下标表示的是MIPI TX对端设备的LANE ID,lane_id数组的值表示的是MIPI TX的LANE ID。
对接屏幕时,未使用的lane将其对应的lane_id配置为-1。配置lane_id还可以调整数据通道顺序,根据硬件单板与实际屏幕输出通道的对应关系调整lane_id的配置。
下面举例进行说明,例如MIPI TX与屏幕的引脚硬件连接如表1所示。
表 1 4lane屏幕与MIPI_TX管脚关系
MIPI TX Lane管脚 |
屏幕管脚 |
|---|---|
MIPI_TX_D2 |
dev_lane0 |
MIPI_TX_D3 |
dev_lane1 |
MIPI_TX_D0 |
dev_lane2 |
MIPI_TX_D1 |
dev_lane3 |
MIPI TX的最大Lane数为4,屏幕实际可能有4、2个Lane,只使用到MIPI TX的4个Lane或2个lane,需要将屏幕端未连接的或者不存在的Lane的lane_id配置为-1,所以4lane屏幕时,lane_id配置如下:

表 2 2lane屏幕与MIPI_TX管脚关系
MIPI TX Lane管脚 |
屏幕管脚 |
|---|---|
MIPI_TX_D1 |
dev_lane0 |
MIPI_TX_D0 |
dev_lane1 |
MIPI_TX_D2 |
未连接 |
MIPI_TX_D3 |
未连接 |
2lane屏幕时,lane_id配置如下:

MIPI频率说明¶
MIPI Lane频率与VI频率关系¶
使用MIPI多个Lanes进行数据传输,MIPI Lane的传输频率与VI处理频率如何对应,每一Lane可传输的最高速率如何计算?
MIPI_Rx使用多Lane接收数据,会转成内部时序,送给VI模块进行处理,多Lane传输的数据总量不变,有这样的计算公式:
VI_Freq * Pix_Width = Lane_Num * MIPI_Freq
其中,VI_Freq为VI的工作时钟, Pix_Width为像素位宽,Lane_Num为传输lane个数,MIPI_Freq为一个lane能接收的最大频率。
下面以VI工作频率为250M,MIPI数据为RAW 12, 4Lane传输为例进行说明:
MIPI_Freq = (250 * 12) / 4 = 750
即每个Lane最高频率为750MHz






