From c7e69cd5b8e5bfa86858df3033931d785f825504 Mon Sep 17 00:00:00 2001 From: liyan Date: Wed, 12 Jan 2022 01:18:22 +0000 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E9=A9=B1=E5=8A=A8=E3=80=91=E5=B0=86MI?= =?UTF-8?q?PI-CI=E7=AB=A0=E8=8A=82=E6=93=8D=E4=BD=9C=E6=AD=A5=E9=AA=A4?= =?UTF-8?q?=E4=B8=AD=E7=9A=84=E6=8E=A5=E5=8F=A3=E8=AF=B4=E6=98=8E=E6=95=B4?= =?UTF-8?q?=E7=90=86=E4=B8=BA=E7=8B=AC=E7=AB=8B=E6=A8=A1=E5=9D=97=E3=80=82?= =?UTF-8?q?=20Signed-off-by:=20li-yan339=20?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../driver/driver-platform-mipicsi-develop.md | 79 +++++++++---------- 1 file changed, 39 insertions(+), 40 deletions(-) diff --git a/zh-cn/device-dev/driver/driver-platform-mipicsi-develop.md b/zh-cn/device-dev/driver/driver-platform-mipicsi-develop.md index 2ce904f2f9..4c5a8557c0 100755 --- a/zh-cn/device-dev/driver/driver-platform-mipicsi-develop.md +++ b/zh-cn/device-dev/driver/driver-platform-mipicsi-develop.md @@ -11,7 +11,43 @@ CSI(Camera Serial Interface)是由MIPI联盟下Camera工作组指定的接 图 1 无服务模式结构图 ![image1](figures/CSI无服务模式结构图.png) -## 开发步骤 +## 接口说明 + +MipiCsiCntlrMethod定义 + +```c +struct MipiCsiCntlrMethod { + int32_t (*setComboDevAttr)(struct MipiCsiCntlr *cntlr, ComboDevAttr *pAttr); + int32_t (*setPhyCmvmode)(struct MipiCsiCntlr *cntlr, uint8_t devno, PhyCmvMode cmvMode); + int32_t (*setExtDataType)(struct MipiCsiCntlr *cntlr, ExtDataType* dataType); + int32_t (*setHsMode)(struct MipiCsiCntlr *cntlr, LaneDivideMode laneDivideMode); + int32_t (*enableClock)(struct MipiCsiCntlr *cntlr, uint8_t comboDev); + int32_t (*disableClock)(struct MipiCsiCntlr *cntlr, uint8_t comboDev); + int32_t (*resetRx)(struct MipiCsiCntlr *cntlr, uint8_t comboDev); + int32_t (*unresetRx)(struct MipiCsiCntlr *cntlr, uint8_t comboDev); + int32_t (*enableSensorClock)(struct MipiCsiCntlr *cntlr, uint8_t snsClkSource); + int32_t (*disableSensorClock)(struct MipiCsiCntlr *cntlr, uint8_t snsClkSource); + int32_t (*resetSensor)(struct MipiCsiCntlr *cntlr, uint8_t snsResetSource); + int32_t (*unresetSensor)(struct MipiCsiCntlr *cntlr, uint8_t snsResetSource); +}; +``` +表1 MipiCsiCntlrMethod成员的回调函数功能说明 +| 成员函数 | 入参 | 出参 | 返回状态 | 功能 | +| ------------------ | ------------------------------------------------------------ | ---- | ------------------ | -------------------------- | +| setComboDevAttr | **cntlr**:结构体指针,MipiCsi控制器 ;
**pAttr**:结构体指针,MIPI-CSI相应配置结构体指针 | 无 | HDF_STATUS相关状态 | 写入MIPI-CSI配置 | +| setPhyCmvmode | **cntlr**:结构体指针,MipiCsi控制器 ;
**devno**:uint8_t,设备编号;
**cmvMode**:枚举类型,共模电压模式参数 | 无 | HDF_STATUS相关状态 | 设置共模电压模式 | +| setExtDataType | **cntlr**:结构体指针,MipiCsi控制器 ;
**dataType**:结构体指针,定义YUV和原始数据格式以及位深度 | 无 | HDF_STATUS相关状态 | 设置YUV和RAW数据格式和位深 | +| setHsMode | **cntlr**:结构体指针,MipiCsi控制器 ;
**laneDivideMode**:枚举类型,lane模式参数 | 无 | HDF_STATUS相关状态 | 设置MIPI RX的Lane分布 | +| enableClock | **cntlr**:结构体指针,MipiCsi控制器 ;
**comboDev**:uint8_t,通路序号 | 无 | HDF_STATUS相关状态 | 使能mipi的时钟 | +| disableClock | **cntlr**:结构体指针,MipiCsi控制器 ;
**comboDev**:uint8_t,通路序号 | 无 | HDF_STATUS相关状态 | 关闭mipi的时钟 | +| resetRx | **cntlr**:结构体指针,MipiCsi控制器 ;
**comboDev**:uint8_t,通路序号 | 无 | HDF_STATUS相关状态 | 复位MIPI RX | +| unresetRx | **cntlr**:结构体指针,MipiCsi控制器 ;
**comboDev**:uint8_t,通路序号 | 无 | HDF_STATUS相关状态 | 撤销复位MIPI RX | +| enableSensorClock | **cntlr**:结构体指针,MipiCsi控制器 ;
**snsClkSource**:uint8_t,传感器的时钟信号线号 | 无 | HDF_STATUS相关状态 | 使能mipi上的Sensor时钟 | +| disableSensorClock | **cntlr**:结构体指针,MipiCsi控制器 ;
**snsClkSource**:uint8_t,传感器的时钟信号线号 | 无 | HDF_STATUS相关状态 | 关闭mipi上的Sensor时钟 | +| resetSensor | **cntlr**:结构体指针,MipiCsi控制器 ;
**snsClkSource**:uint8_t,传感器的时钟信号线号 | 无 | HDF_STATUS相关状态 | 复位Sensor | +| unresetSensor | **cntlr**:结构体指针,MipiCsi控制器 ;
**snsClkSource**:uint8_t,传感器的时钟信号线号 | 无 | HDF_STATUS相关状态 | 撤销复位Sensor | + +## 开发步骤 MIPI-CSI模块适配的三个环节是配置属性文件、实例化驱动入、以及实例化核心层接口函数。 @@ -31,45 +67,8 @@ MIPI-CSI模块适配的三个环节是配置属性文件、实例化驱动入、 4. **驱动调试:** - 【可选】针对新增驱动程序,建议验证驱动基本功能,例如挂载后的信息反馈,数据传输的成功与否等。 -> ![](W:\doc\docs\zh-cn\device-dev\public_sys-resources\icon-note.gif) **说明:** -> -> MipiCsiCntlrMethod定义 -> -> ```c -> struct MipiCsiCntlrMethod { -> int32_t (*setComboDevAttr)(struct MipiCsiCntlr *cntlr, ComboDevAttr *pAttr); -> int32_t (*setPhyCmvmode)(struct MipiCsiCntlr *cntlr, uint8_t devno, PhyCmvMode cmvMode); -> int32_t (*setExtDataType)(struct MipiCsiCntlr *cntlr, ExtDataType* dataType); -> int32_t (*setHsMode)(struct MipiCsiCntlr *cntlr, LaneDivideMode laneDivideMode); -> int32_t (*enableClock)(struct MipiCsiCntlr *cntlr, uint8_t comboDev); -> int32_t (*disableClock)(struct MipiCsiCntlr *cntlr, uint8_t comboDev); -> int32_t (*resetRx)(struct MipiCsiCntlr *cntlr, uint8_t comboDev); -> int32_t (*unresetRx)(struct MipiCsiCntlr *cntlr, uint8_t comboDev); -> int32_t (*enableSensorClock)(struct MipiCsiCntlr *cntlr, uint8_t snsClkSource); -> int32_t (*disableSensorClock)(struct MipiCsiCntlr *cntlr, uint8_t snsClkSource); -> int32_t (*resetSensor)(struct MipiCsiCntlr *cntlr, uint8_t snsResetSource); -> int32_t (*unresetSensor)(struct MipiCsiCntlr *cntlr, uint8_t snsResetSource); -> }; -> ``` -> -> 表1 MipiCsiCntlrMethod成员的回调函数功能说明 -> -> | 成员函数 | 入参 | 出参 | 返回状态 | 功能 | -> | ------------------ | ------------------------------------------------------------ | ---- | ------------------ | -------------------------- | -> | setComboDevAttr | **cntlr**: 结构体指针,MipiCsi控制器 ;
**pAttr**: 结构体指针,MIPI-CSI相应配置结构体指针 | 无 | HDF_STATUS相关状态 | 写入MIPI-CSI配置 | -> | setPhyCmvmode | **cntlr**: 结构体指针,MipiCsi控制器 ;
**devno**: uint8_t,设备编号;
**cmvMode**: 枚举类型,共模电压模式参数 | 无 | HDF_STATUS相关状态 | 设置共模电压模式 | -> | setExtDataType | **cntlr**: 结构体指针,MipiCsi控制器 ;
**dataType**: 结构体指针,定义YUV和原始数据格式以及位深度 | 无 | HDF_STATUS相关状态 | 设置YUV和RAW数据格式和位深 | -> | setHsMode | **cntlr**: 结构体指针,MipiCsi控制器 ;
**laneDivideMode**: 枚举类型,lane模式参数 | 无 | HDF_STATUS相关状态 | 设置MIPI RX的 Lane分布 | -> | enableClock | **cntlr**: 结构体指针,MipiCsi控制器 ;
**comboDev**: uint8_t,通路序号 | 无 | HDF_STATUS相关状态 | 使能mipi的时钟 | -> | disableClock | **cntlr**: 结构体指针,MipiCsi控制器 ;
**comboDev**: uint8_t,通路序号 | 无 | HDF_STATUS相关状态 | 关闭mipi的时钟 | -> | resetRx | **cntlr**: 结构体指针,MipiCsi控制器 ;
**comboDev**: uint8_t,通路序号 | 无 | HDF_STATUS相关状态 | 复位MIPI RX | -> | unresetRx | **cntlr**: 结构体指针,MipiCsi控制器 ;
**comboDev**: uint8_t,通路序号 | 无 | HDF_STATUS相关状态 | 撤销复位MIPI RX | -> | enableSensorClock | **cntlr**: 结构体指针,MipiCsi控制器 ;
**snsClkSource**: uint8_t,传感器的时钟信号线号 | 无 | HDF_STATUS相关状态 | 使能mipi上的sensor时钟 | -> | disableSensorClock | **cntlr**: 结构体指针,MipiCsi控制器 ;
**snsClkSource**: uint8_t,传感器的时钟信号线号 | 无 | HDF_STATUS相关状态 | 关闭mipi上的sensor时钟 | -> | resetSensor | **cntlr**: 结构体指针,MipiCsi控制器 ;
**snsClkSource**: uint8_t,传感器的时钟信号线号 | 无 | HDF_STATUS相关状态 | 复位sensor | -> | unresetSensor | **cntlr**: 结构体指针,MipiCsi控制器 ;
**snsClkSource**: uint8_t,传感器的时钟信号线号 | 无 | HDF_STATUS相关状态 | 撤销复位sensor | - -## 开发实例 + +## 开发实例 下方将以mipi_rx_hi35xx.c为示例,展示需要厂商提供哪些内容来完整实现设备功能。 -- GitLab