最近公司开发T527的项目,需要通过盈鹏飞嵌入式的核心模块接口双路TP2815,我们使用核心模块型号是CoM-X527,该核心模块引出了四路MIPI CSI接口,他们分别是MCSIA/B/C/D,以下是CoM-X527的简要介绍:
COM-X527产品特性 :
- 采用Allwinner公司Cortex-A55八核A527/T527处理器,最高速度为2.0GHZ;
- 支持2TOPS NPU,仅特定型号支持;
- 支持Mali-G57 MC1 GPU,支持OpenGL ES 3.2/2.0/1.0, Valkan 1.1,OpenCL 2.0
- 支持4K/25fps H.264视频编码,支持4K/15fps MJPEG编码;
- 多格式4K/60fps视频解码 (H.265,H.264,VC-1, MPEG-1/2/4, VP8) ;
- 支持1-4G Bytes LPDDR4X SDRAM;支持EMMC 4G-64G大容量电子盘,可启动;
- 支持双屏异显;支持双通道LVDS,分辨率最高1920x1080@60fps;支持 EDP 1.3,分辨率最高2.5K@60fps 和4K@30fps;支持HDMI 2.0B, 分辨率最高4K/60fps;
- 支持PCIE2.1;支持 10路UART;支持双路CANBUS;支持双路千兆以太网;
- 稳定的操作系统的支持,可预装Android13.0或者LINUX 5.15/Ubuntu 22.04
- 邮票孔240POS设计, 尺寸为:56*45MM
COM-X527产品功能 :
T527(ISP)离线模式补充说明:
上图为离线模式下4线性sensor输入16路输出的典型pipeline场景,4路sensor同时输入(为什么是规划了4路呢?因为T527的MIPI CSI接口最多有CSIA/B/C/D四路),但ISP只有一个,此时需要开启ISP时分复用功能(离线模式),下面简单描述一下数据从sensor到video节点的过程(这种工作情况几乎没有,主要是为了把ISP离线模式说的更明白):
- sensor0/1/2/3的四路数据分别经过mipi0/1/2/3后到达parser0/1/2/3;
- tdm为isp数据输入端,数据经过tdm_rx控制同一个isp实现时分复用处理数据,isp00和isp01/isp02/isp03为分时复用出来的4个ISP(实际仍为同一个ISP实体);
- 和在线模式一样,某一路sensor数据经过ISP处理后,分为4路输入到相应的vipp、dma和video中,4路sensor数据所以共有16路,video0/4/8/12为sensor0数据,video1/5/9/13为sensor1数据;
-
vipp和dma在离线模式下也可时分复用成多个虚体,如在本例中,vipp(dma)00时分复用成vipp(dma)00和vipp(dma)01,vipp(dma)10时分复用成vipp(dma)10和vipp(dma)11,
……,故在本例的dts中,tdm0、isp00、scaler00/10/20/30、vinc00/10/20/30的work_mode均需配置成<1>,即离线模式。
为什么要如此说明呢?就是为了说明T527的linux_dts是如何构思的。以下是从《Linux_MIPI_CSI_开发指南.pdf》文档中截取的。
/* ISP时分复用功能(TDM),若需使用ISP时分复用功能,则需开启TDM离线模式 */
tdm0:tdm@0 {
work_mode = <0>; /* 0:在线模式,1:离线模式, 根据使用需求进行配置 */
};
/* 由于只有一个ISP实体,isp00(isp0)为普通在线模式下的唯一实体ISP,
* isp01/02/03为ISP时分复用(离线模式下)的ISP虚体,
* 而isp10(isp4)和isp(isp5)则为纯虚拟出来的ISP虚体,不具备ISP功能,通常用于不使用ISP功能时做路由,如YUV sensor
。
*/
isp00:isp@0 {
work_mode = <0>; /* 0:在线模式,1:离线模式, 根据使用需求进行配置 */
};
......
/* scaler00/10/20/30为真实scaler(vipp) ,其他均为虚拟出来的vipp,与所用isp相对应*/
scaler00:scaler@0 {
work_mode = <0>; /* 0:在线模式,1:离线模式, 根据使用需求进行配置 */
};
......
因为ISP功能只有一个实体(全志有些抠,给两个不就好了,没这么多事),有三种模式,一种是在线模式(就是只有1个sensor,独享ISP),一种是分时复用模式(所谓的离线模式,就是大家分时复用这一个ISP),isp01/02/03为ISP时分复用(离线模式下)的ISP虚体就是这个意思。一种是路由模式(就是不用的意思,只是经过,直接短路过去)。isp10(isp4)和isp(isp5)就是这个意思,这个路由方式是我加上去的,全志的文档稀里糊涂,小弟不才补说明,如果说的不对,欢迎指正。另外,同样认证了以下信息中的“vinc01/02/03/11/12/13/21/22/23/31/32/33只在ISP时分复用(离线模式)的场景下才会使用”的这句话。
/* vinc节点说明:
* 1. vinc@X对应/dev/videoX节点
* 2. vinc00/10/20/30/40/50(video0/4/8/12/16/17)对应真实的bk0/1/2/3/4/5,故在线模式下最多可支持6路视频输出
* 3. vinc01/02/03/11/12/13/21/22/23/31/32/33只在ISP时分复用(离线模式)的场景下才会使用。*/
vinc00:vinc@0 {
vinc0_csi_sel = <0>; /* 该pipeline上parser的id,必须配置,且为有效id。 */
vinc0_mipi_sel = <0>;
/* 该pipeline上mipi的id,使用并口sensor时不经过mipi,此项配置为0xff。*/
vinc0_isp_sel = <0>;
/* 该pipeline上isp的id,必须配置;
* 若isp只是表示路由而不做效果处理,则须配置为虚拟ISP(isp4/5)
*/
vinc0_isp_tx_ch = <0>;
/* 该pipeline上isp tx的通道id,必须配置,默认为0。
* 当sensor配置为多通道输出时,该ch可以配置0~3的值。
*/
vinc0_tdm_rx_sel = <0>;
/* 该pipeline上tdm rx的通道id, 必须配置,默认为0;
* 当不使用tdm功能时,配置为0xff
*/
vinc0_rear_sensor_sel = <0>;
/* 该pipeline上使用的后置sensor的id;
* 通过该vincX节点(videoX)来抓取指定sensor的数据
*/
vinc0_front_sensor_sel = <0>; /* 该pipeline上使用的前置sensor的id;
* 而一般情况下,会配置成和上面rear_sensor_sel相同的id
* 即仅通过不同的vinc(video)节点来区分不同摄像头
*/
vinc0_sensor_list = <0>; /* 是否使用sensor_list功能来自适应不同的模组,1‑使用,0‑不使用 */
work_mode = <0x0>; /* 0‑在线模式,1‑离线模式, 根据实际情况进行配置
* 注:只有vinc0/4/8/12可配置。
*/
status = "okay"; /* vinc(video)节点使能开关,根据实际情况配置为okay/disable */
};
vinc01:vinc@1 {
vinc1_csi_sel = <2>;
vinc1_mipi_sel = <0xff>;
vinc1_isp_sel = <1>;
vinc1_isp_tx_ch = <1>;
vinc1_tdm_rx_sel = <1>;
vinc1_rear_sensor_sel = <0>;
vinc1_front_sensor_sel = <0>;
vinc1_sensor_list = <0>;
status = "disabled";
};
......
};
关于T527 video节点配置的总结:
vinc00:vinc@5830000 {
vinc0_csi_sel = <0>; //parser通道sel
vinc0_mipi_sel = <0>;//mipi通道sel
vinc0_isp_sel = <0>;
//isp通道sel,在线模式只能配为0,离线模式可配置为0~3(离线模式下,分时复用为4路,即为ISP00/ISP01/ISP02/ISP03)
vinc0_isp_tx_ch = <0>;
vinc0_tdm_rx_sel = <0>;//离线模式需配置为0~3,需要与isp_sel属性相同;在线模式可不配置
vinc0_rear_sensor_sel = <0>;//后摄使用的sensor_sel
vinc0_front_sensor_sel = <0>;//前摄使用的senosr_sel
vinc0_sensor_list = <0>;//是否使用sensor_list功能 0:not_use 1:use
device_id = <0>;//video节点sel,官方给了参考,不要修改
work_mode = <0x0>;//在线、离线模式配置,0:在线模式、1:离线模式
status = “okay”;//节点状态,okay:打开 disabled:关闭
};
(一)需要多个sensor同时出图,则配置为离线模式;反之,配置为在线模式
(二)离线通路配置:
(1). tdm和isp0需要配置相同的工作模式,vipp0和dma0、vipp1和dma1、vipp2和dma2、vipp3和dma3需要配置相同的工作模式(online和offline),vipp和isp0也需要配置相同的工作模式(online和offline)
(2). 对应关系:tdm对应tdm0节点,isp对应isp00节点,vipp对应scaler00、scaler10、scaler20、scaler30节点,dma对应vinc00、vinc10、vinc20、vinc30节点,vipp节点与dma节点一一对应即:使用vinc00需要打开scaler00,使用vinc01需要打开scaler01
(3). 只有tdm0、isp00、scaler00、scaler10、scaler20、scaler30、vinc00、vinc10、vinc20、vinc30可以配置work_mode,其他节点配置会出错
(4). menuconfig配置:需要打开[*]use isp for time sharing multiples,其余按需选择
(三)在线模式:在线模式只可使用tdm0、isp00、scaler00、scaler10、scaler20、scaler30、vinc00、vinc10、vinc20、vinc30、vinc40、vinc50节点
(四)vinc40、vinc50节点只支持在线模式(因为没有work_mode的配置),出的图为sensor原分辨率的图或者经过裁剪过的图,无法对图片进行缩放
最后的一点疑问:TDM节点即使设置为work_mode=0,这个时候需要加载驱动才能工作。如果在内核中驱动未加载,那么tdm0的节点就失效。因此在在线模式下,work_mode配置成0或者1应该都可以正常工作才对!待验证。
tdm0:tdm@5908000 {
work_mode = <0>;
};
isp00:isp@5900000 {
work_mode = <0>;
};
isp01:isp@58ffffc {
status = "disabled";
};
isp02:isp@58ffff8 {
status = "disabled";
};
isp03:isp@58ffff4 {
status = "disabled";
};
isp10:isp@4 {
status = "okay";
};
isp20:isp@5 {
status = "okay";
};
盈鹏飞嵌入式主板的两个TP2815的dts配置:
/**
* 整体链路 sensor -> (mipi -> parser/csi) -> tdm -> isp -> (vipp -> dma)
* vipp对应scaler, vinc对应dma
* csi_sel mipi_sel 应相同
* work_mode 0:在线模式 1:离线模式,仅一个硬件isp多摄像头同时预览需离线模式
* */
/*2x mipi_4lane pinmux,embfly*/
&mipib_4lane_pins_a {
pins = "PK6", "PK7", "PK8",
"PK9";
};
&mipib_4lane_pins_b {
pins = "PK6", "PK7", "PK8",
"PK9";
};
&mipid_4lane_pins_a {
pins = "PK18", "PK19", "PK20",
"PK21";
};
&mipid_4lane_pins_b {
pins = "PK18", "PK19", "PK20",
"PK21";
};
/*add end*/
&vind0 {
csi_top = <360000000>;
csi_isp = <300000000>;
vind_mclkpin-supply = <®_dcdc4>; /*对应原理图中vcc‑pe所采用的LDO */
vind_mclkpin_vol = <3300000>;
vind_mcsipin-supply = <®_bldo3>; /* 对应原理图中vcc‑mcsi所采用的LDO */
vind_mcsipin_vol = <1800000>;
vind_mipipin-supply = <®_dcdc4>; /* 对应原理图中vcc‑pk所采用的LDO */
vind_mipipin_vol = <3300000>;
status = "okay";
csi3:csi@5823000 {
pinctrl-names = "default","sleep";
pinctrl-0 = <&ncsi_bt656_pins_a>;
pinctrl-1 = <&ncsi_bt656_pins_b>;
status = "disabled";
};
tdm0:tdm@5908000 {
work_mode = <0>;
};
isp00:isp@5900000 {
work_mode = <0>;
};
isp01:isp@58ffffc {
status = "disabled";
};
isp02:isp@58ffff8 {
status = "disabled";
};
isp03:isp@58ffff4 {
status = "disabled";
};
isp10:isp@4 {
status = "okay";
};
isp20:isp@5 {
status = "okay";
};
scaler00:scaler@5910000 {
work_mode = <0>;
};
scaler01:scaler@590fffc {
status = "disabled";
};
scaler02:scaler@590fff8 {
status = "disabled";
};
scaler03:scaler@590fff4 {
status = "disabled";
};
scaler10:scaler@5910400 {
work_mode = <0>;
};
scaler11:scaler@59103fc {
status = "disabled";
};
scaler12:scaler@59103f8 {
status = "disabled";
};
scaler13:scaler@59103f4 {
status = "disabled";
};
scaler20:scaler@5910800 {
work_mode = <0>;
};
scaler21:scaler@59107fc {
status = "disabled";
};
scaler22:scaler@59107f8 {
status = "disabled";
};
scaler23:scaler@59107f4 {
status = "disabled";
};
scaler30:scaler@5910c00 {
work_mode = <0>;
};
scaler31:scaler@5910bfc {
status = "disabled";
};
scaler32:scaler@5910bf8 {
status = "disabled";
};
scaler33:scaler@5910bf4 {
status = "disabled";
};
scaler40:scaler@16 {
status = "okay";
};
scaler50:scaler@17 {
status = "okay";
};
actuator0: actuator@2108180 {
device_type = "actuator0";
actuator0_name = "dw9714_act";
actuator0_slave = <0x18>;
actuator0_af_pwdn = <>;
actuator0_afvdd = "afvcc-csi";
actuator0_afvdd_vol = <2800000>;
status = "disabled";
};
flash0: flash@2108190 {
device_type = "flash0";
flash0_type = <2>;
flash0_en = <&r_pio PL 11 GPIO_ACTIVE_LOW>;
flash0_mode = <>;
flash0_flvdd = "";
flash0_flvdd_vol = <>;
device_id = <0>;
status = "disabled";
};
sensor0:sensor@5812000 {
device_type = "sensor0";
sensor0_mname = "tp2815_mipi";
sensor0_twi_cci_id = <2>;
sensor0_twi_addr = <0x88>;
sensor0_mclk_id = <0>;
sensor0_pos = "rear";
sensor0_isp_used = <0>;
sensor0_fmt = <0>;
sensor0_stby_mode = <0>;
sensor0_vflip = <0>;
sensor0_hflip = <0>;
sensor0_cameravdd-supply = <>;
sensor0_cameravdd_vol = <>;
sensor0_iovdd-supply = <>;
sensor0_iovdd_vol = <>;
sensor0_avdd-supply = <>;
sensor0_avdd_vol = <>;
sensor0_dvdd-supply = <>;
sensor0_dvdd_vol = <>;
sensor0_power_en = <>;
sensor0_reset = <&pio PK 11 GPIO_ACTIVE_LOW>;
sensor0_pwdn = <&r_pio PL 12 GPIO_ACTIVE_HIGH>;
status = "okay";
};
sensor1:sensor@5812010 {
device_type = "sensor1";
sensor1_mname = "tp2815_mipi_1";
sensor1_twi_cci_id = <3>;
sensor1_twi_addr = <0x88>;
sensor1_mclk_id = <1>;
sensor1_pos = "front";
sensor1_isp_used = <0>;
sensor1_fmt = <0>;
sensor1_stby_mode = <0>;
sensor1_vflip = <0>;
sensor1_hflip = <0>;
sensor1_iovdd-supply = <>;
sensor1_iovdd_vol = <>;
sensor1_avdd-supply = <>;
sensor1_avdd_vol = <>;
sensor1_dvdd-supply = <>;
sensor1_dvdd_vol = <>;
sensor1_power_en = <>;
sensor1_reset = <&pio PK 23 GPIO_ACTIVE_LOW>;
sensor1_pwdn = <&pio PK 22 GPIO_ACTIVE_HIGH>;
status = "okay";
};
vinc00:vinc@5830000 {
vinc0_csi_sel = <0>;
vinc0_mipi_sel = <0>;
vinc0_isp_sel = <4>;
vinc0_isp_tx_ch = <0>;
vinc0_tdm_rx_sel = <0>;
vinc0_rear_sensor_sel = <0>;
vinc0_front_sensor_sel = <0>;
vinc0_sensor_list = <0>;
device_id = <0>;
work_mode = <0x0>;
status = "okay";
};
vinc01:vinc@582fffc {
vinc1_csi_sel = <1>;
vinc1_mipi_sel = <2>;
vinc1_isp_sel = <1>;
vinc1_isp_tx_ch = <0>;
vinc1_tdm_rx_sel = <1>;
vinc1_rear_sensor_sel = <1>;
vinc1_front_sensor_sel = <1>;
vinc1_sensor_list = <0>;
device_id = <1>;
status = "disabled";
};
vinc02:vinc@582fff8 {
vinc2_csi_sel = <2>;
vinc2_mipi_sel = <0xff>;
vinc2_isp_sel = <2>;
vinc2_isp_tx_ch = <2>;
vinc2_tdm_rx_sel = <2>;
vinc2_rear_sensor_sel = <0>;
vinc2_front_sensor_sel = <0>;
vinc2_sensor_list = <0>;
device_id = <2>;
status = "disabled";
};
vinc03:vinc@582fff4 {
vinc3_csi_sel = <0>;
vinc3_mipi_sel = <0xff>;
vinc3_isp_sel = <0>;
vinc3_isp_tx_ch = <0>;
vinc3_tdm_rx_sel = <0>;
vinc3_rear_sensor_sel = <1>;
vinc3_front_sensor_sel = <1>;
vinc3_sensor_list = <0>;
device_id = <3>;
status = "disabled";
};
vinc10:vinc@5831000 {
vinc4_csi_sel = <0>;
vinc4_mipi_sel = <0>;
vinc4_isp_sel = <4>;
vinc4_isp_tx_ch = <1>;
vinc4_tdm_rx_sel = <0>;
vinc4_rear_sensor_sel = <0>;
vinc4_front_sensor_sel = <0>;
vinc4_sensor_list = <0>;
device_id = <4>;
work_mode = <0x0>;
status = "okay";
};
vinc11:vinc@5830ffc {
vinc5_csi_sel = <2>;
vinc5_mipi_sel = <0xff>;
vinc5_isp_sel = <1>;
vinc5_isp_tx_ch = <1>;
vinc5_tdm_rx_sel = <1>;
vinc5_rear_sensor_sel = <0>;
vinc5_front_sensor_sel = <0>;
vinc5_sensor_list = <0>;
device_id = <5>;
status = "disabled";
};
vinc12:vinc@5830ff8 {
vinc6_csi_sel = <2>;
vinc6_mipi_sel = <0xff>;
vinc6_isp_sel = <0>;
vinc6_isp_tx_ch = <0>;
vinc6_tdm_rx_sel = <0>;
vinc6_rear_sensor_sel = <0>;
vinc6_front_sensor_sel = <0>;
vinc6_sensor_list = <0>;
device_id = <6>;
status = "disabled";
};
vinc13:vinc@5830ff4 {
vinc7_csi_sel = <2>;
vinc7_mipi_sel = <0xff>;
vinc7_isp_sel = <0>;
vinc7_isp_tx_ch = <0>;
vinc7_tdm_rx_sel = <0>;
vinc7_rear_sensor_sel = <0>;
vinc7_front_sensor_sel = <0>;
vinc7_sensor_list = <0>;
device_id = <7>;
status = "disabled";
};
vinc20:vinc@5832000 {
vinc8_csi_sel = <0>;
vinc8_mipi_sel = <0>;
vinc8_isp_sel = <4>;
vinc8_isp_tx_ch = <2>;
vinc8_tdm_rx_sel = <0>;
vinc8_rear_sensor_sel = <0>;
vinc8_front_sensor_sel = <0>;
vinc8_sensor_list = <0>;
device_id = <8>;
work_mode = <0x0>;
status = "okay";
};
vinc21:vinc@5831ffc {
vinc9_csi_sel = <2>;
vinc9_mipi_sel = <0xff>;
vinc9_isp_sel = <0>;
vinc9_isp_tx_ch = <0>;
vinc9_tdm_rx_sel = <0>;
vinc9_rear_sensor_sel = <0>;
vinc9_front_sensor_sel = <0>;
vinc9_sensor_list = <0>;
device_id = <9>;
status = "disabled";
};
vinc22:vinc@5831ff8 {
vinc10_csi_sel = <2>;
vinc10_mipi_sel = <0xff>;
vinc10_isp_sel = <0>;
vinc10_isp_tx_ch = <0>;
vinc10_tdm_rx_sel = <0>;
vinc10_rear_sensor_sel = <0>;
vinc10_front_sensor_sel = <0>;
vinc10_sensor_list = <0>;
device_id = <10>;
status = "disabled";
};
vinc23:vinc@5831ff4 {
vinc11_csi_sel = <2>;
vinc11_mipi_sel = <0xff>;
vinc11_isp_sel = <0>;
vinc11_isp_tx_ch = <0>;
vinc11_tdm_rx_sel = <0>;
vinc11_rear_sensor_sel = <0>;
vinc11_front_sensor_sel = <0>;
vinc11_sensor_list = <0>;
device_id = <11>;
status = "disabled";
};
vinc30:vinc@5833000 {
vinc12_csi_sel = <0>;
vinc12_mipi_sel = <0>;
vinc12_isp_sel = <4>;
vinc12_isp_tx_ch = <3>;
vinc12_tdm_rx_sel = <0>;
vinc12_rear_sensor_sel = <0>;
vinc12_front_sensor_sel = <0>;
vinc12_sensor_list = <0>;
device_id = <12>;
work_mode = <0x0>;
status = "okay";
};
vinc31:vinc@5832ffc {
vinc13_csi_sel = <2>;
vinc13_mipi_sel = <0xff>;
vinc13_isp_sel = <0>;
vinc13_isp_tx_ch = <0>;
vinc13_tdm_rx_sel = <0>;
vinc13_rear_sensor_sel = <0>;
vinc13_front_sensor_sel = <0>;
vinc13_sensor_list = <0>;
device_id = <13>;
status = "disabled";
};
vinc32:vinc@5832ff8 {
vinc14_csi_sel = <2>;
vinc14_mipi_sel = <0xff>;
vinc14_isp_sel = <0>;
vinc14_isp_tx_ch = <0>;
vinc14_tdm_rx_sel = <0>;
vinc14_rear_sensor_sel = <0>;
vinc14_front_sensor_sel = <0>;
vinc14_sensor_list = <0>;
device_id = <14>;
status = "disabled";
};
vinc33:vinc@5832ff4 {
vinc15_csi_sel = <2>;
vinc15_mipi_sel = <0xff>;
vinc15_isp_sel = <0>;
vinc15_isp_tx_ch = <0>;
vinc15_tdm_rx_sel = <0>;
vinc15_rear_sensor_sel = <0>;
vinc15_front_sensor_sel = <0>;
vinc15_sensor_list = <0>;
device_id = <15>;
status = "disabled";
};
vinc40:vinc@5834000 {
vinc16_csi_sel = <2>;
vinc16_mipi_sel = <2>;
vinc16_isp_sel = <5>;
vinc16_isp_tx_ch = <0>;
vinc16_tdm_rx_sel = <0>;
vinc16_rear_sensor_sel = <1>;
vinc16_front_sensor_sel = <1>;
vinc16_sensor_list = <0>;
device_id = <16>;
status = "okay";
};
vinc50:vinc@5835000 {
vinc17_csi_sel = <2>;
vinc17_mipi_sel = <2>;
vinc17_isp_sel = <5>;
vinc17_isp_tx_ch = <1>;
vinc17_tdm_rx_sel = <0>;
vinc17_rear_sensor_sel = <1>;
vinc17_front_sensor_sel = <1>;
vinc17_sensor_list = <0>;
device_id = <17>;
status = "okay";
};
};
T527接口两个OV13850的dts配置:
&mipib_4lane_pins_a {
pins = "PK6", "PK7", "PK8",
"PK9";
};
&mipib_4lane_pins_b {
pins = "PK6", "PK7", "PK8",
"PK9";
};
&mipid_4lane_pins_a {
pins = "PK18", "PK19", "PK20",
"PK21";
};
&mipid_4lane_pins_b {
pins = "PK18", "PK19", "PK20",
"PK21";
};
&vind0 {
csi_top = <600000000>;
csi_isp = <600000000>;
vind_mclkpin-supply = <®_bldo3>; /* vcc-pe */
vind_mclkpin_vol = <1800000>;
vind_mcsipin-supply = <®_bldo3>; /* vcc-pk */
vind_mcsipin_vol = <1800000>;
vind_mipipin-supply = <®_bldo3>; /* vcc-mcsi */
vind_mipipin_vol = <1800000>;
status = "okay";
csi3:csi@5823000 {
pinctrl-names = "default","sleep";
pinctrl-0 = <&ncsi_bt656_pins_a>;
pinctrl-1 = <&ncsi_bt656_pins_b>;
status = "disabled";
};
tdm0:tdm@5908000 {
work_mode = <0>;
};
isp00:isp@5900000 {
work_mode = <0>;
delay_init = <1>;
status = "okay";
};
isp01:isp@58ffffc {
status = "disabled";
};
isp02:isp@58ffff8 {
status = "disabled";
};
isp03:isp@58ffff4 {
status = "disabled";
};
isp10:isp@4 {
status = "okay";
delay_init = <1>;
};
isp20:isp@5 {
status = "okay";
delay_init = <1>;
};
scaler00:scaler@5910000 {
work_mode = <0>;
delay_init = <1>;
status = "okay";
};
scaler01:scaler@590fffc {
status = "disabled";
};
scaler02:scaler@590fff8 {
status = "disabled";
};
scaler03:scaler@590fff4 {
status = "disabled";
};
scaler10:scaler@5910400 {
work_mode = <0>;
delay_init = <1>;
};
scaler11:scaler@59103fc {
status = "disabled";
};
scaler12:scaler@59103f8 {
status = "disabled";
};
scaler13:scaler@59103f4 {
status = "disabled";
};
scaler20:scaler@5910800 {
work_mode = <0>;
delay_init = <1>;
};
scaler21:scaler@59107fc {
status = "disabled";
};
scaler22:scaler@59107f8 {
status = "disabled";
};
scaler23:scaler@59107f4 {
status = "disabled";
};
scaler30:scaler@5910c00 {
work_mode = <0>;
delay_init = <1>;
};
scaler31:scaler@5910bfc {
status = "disabled";
};
scaler32:scaler@5910bf8 {
status = "disabled";
};
scaler33:scaler@5910bf4 {
status = "disabled";
};
scaler40:scaler@16 {
status = "disabled";
};
scaler50:scaler@17 {
status = "disabled";
};
actuator0: actuator@2108180 {
device_type = "actuator0";
actuator0_name = "dw9714_act";
actuator0_slave = <0x18>;
actuator0_af_pwdn = <>;
actuator0_afvdd = "afvcc-csi";
actuator0_afvdd_vol = <2800000>;
status = "disabled";
};
flash0: flash@2108190 {
device_type = "flash0";
flash0_type = <2>;
flash0_en = <&r_pio PL 11 GPIO_ACTIVE_LOW>;
flash0_mode = <>;
flash0_flvdd = "";
flash0_flvdd_vol = <>;
device_id = <0>;
status = "disabled";
};
sensor0:sensor@5812000 {
device_type = "sensor0";
sensor0_mname = "ov13850_mipi1";
sensor0_twi_cci_id = <2>;
sensor0_twi_addr = <0x20>;
// sensor0_mclk_id = <0>;
sensor0_pos = "rear";
sensor0_isp_used = <0>;
sensor0_fmt = <0>;
sensor0_stby_mode = <0>;
sensor0_vflip = <0>;
sensor0_hflip = <0>;
sensor0_cameravdd-supply = <>;
sensor0_cameravdd_vol = <>;
sensor0_iovdd-supply = <>;
sensor0_iovdd_vol = <>;
sensor0_avdd-supply = <>;
sensor0_avdd_vol = <>;
sensor0_dvdd-supply = <>;
sensor0_dvdd_vol = <>;
sensor0_power_en = <>;
sensor0_reset = <&pio PK 11 GPIO_ACTIVE_HIGH>;
sensor0_pwdn = <&pio PK 23 GPIO_ACTIVE_HIGH>;
status = "okay";
};
sensor1:sensor@5812010 {
device_type = "sensor1";
sensor1_mname = "ov13850_mipi2";
sensor1_twi_cci_id = <3>;
sensor1_twi_addr = <0x20>;
// sensor1_mclk_id = <2>;
sensor1_pos = "front";
sensor1_isp_used = <1>;
sensor1_fmt = <1>;
sensor1_stby_mode = <0>;
sensor1_vflip = <0>;
sensor1_hflip = <0>;
sensor1_iovdd-supply = <>;
sensor1_iovdd_vol = <>;
sensor1_avdd-supply = <>;
sensor1_avdd_vol = <>;
sensor1_dvdd-supply = <>;
sensor1_dvdd_vol = <>;
sensor1_power_en = <>;
sensor1_reset = <&pio PK 10 GPIO_ACTIVE_HIGH>;
sensor1_pwdn = <&pio PK 22 GPIO_ACTIVE_HIGH>;
status = "okay";
};
vinc00:vinc@5830000 {
vinc0_csi_sel = <0>;
vinc0_mipi_sel = <0>;
vinc0_isp_sel = <0>;
vinc0_isp_tx_ch = <0>;
vinc0_tdm_rx_sel = <0>;
vinc0_rear_sensor_sel = <0>;
vinc0_front_sensor_sel = <0>;
vinc0_sensor_list = <0>;
device_id = <0>;
work_mode = <0>;
delay_init = <1>;
status = "okay";
};
vinc01:vinc@582fffc {
vinc1_csi_sel = <2>;
vinc1_mipi_sel = <2>;
vinc1_isp_sel = <4>;
vinc1_isp_tx_ch = <3>;
vinc1_tdm_rx_sel = <0>;
vinc1_rear_sensor_sel = <1>;
vinc1_front_sensor_sel = <1>;
vinc1_sensor_list = <0>;
device_id = <1>;
status = "disabled";
};
vinc02:vinc@582fff8 {
vinc2_csi_sel = <2>;
vinc2_mipi_sel = <0xff>;
vinc2_isp_sel = <2>;
vinc2_isp_tx_ch = <2>;
vinc2_tdm_rx_sel = <2>;
vinc2_rear_sensor_sel = <0>;
vinc2_front_sensor_sel = <0>;
vinc2_sensor_list = <0>;
device_id = <2>;
status = "disabled";
};
vinc03:vinc@582fff4 {
vinc3_csi_sel = <0>;
vinc3_mipi_sel = <0xff>;
vinc3_isp_sel = <0>;
vinc3_isp_tx_ch = <0>;
vinc3_tdm_rx_sel = <0>;
vinc3_rear_sensor_sel = <1>;
vinc3_front_sensor_sel = <1>;
vinc3_sensor_list = <0>;
device_id = <3>;
status = "disabled";
};
vinc10:vinc@5831000 {
vinc4_csi_sel = <0>;
vinc4_mipi_sel = <0>;
vinc4_isp_sel = <0>;
vinc4_isp_tx_ch = <0>;
vinc4_tdm_rx_sel = <0>;
vinc4_rear_sensor_sel = <0>;
vinc4_front_sensor_sel = <0>;
vinc4_sensor_list = <0>;
device_id = <4>;
work_mode = <0>;
delay_init = <1>;
status = "okay";
};
vinc11:vinc@5830ffc {
vinc5_csi_sel = <2>;
vinc5_mipi_sel = <0xff>;
vinc5_isp_sel = <1>;
vinc5_isp_tx_ch = <1>;
vinc5_tdm_rx_sel = <1>;
vinc5_rear_sensor_sel = <0>;
vinc5_front_sensor_sel = <0>;
vinc5_sensor_list = <0>;
device_id = <5>;
status = "disabled";
};
vinc12:vinc@5830ff8 {
vinc6_csi_sel = <2>;
vinc6_mipi_sel = <0xff>;
vinc6_isp_sel = <0>;
vinc6_isp_tx_ch = <0>;
vinc6_tdm_rx_sel = <0>;
vinc6_rear_sensor_sel = <0>;
vinc6_front_sensor_sel = <0>;
vinc6_sensor_list = <0>;
device_id = <6>;
status = "disabled";
};
vinc13:vinc@5830ff4 {
vinc7_csi_sel = <2>;
vinc7_mipi_sel = <0xff>;
vinc7_isp_sel = <0>;
vinc7_isp_tx_ch = <0>;
vinc7_tdm_rx_sel = <0>;
vinc7_rear_sensor_sel = <0>;
vinc7_front_sensor_sel = <0>;
vinc7_sensor_list = <0>;
device_id = <7>;
status = "disabled";
};
vinc20:vinc@5832000 {
vinc8_csi_sel = <2>;
vinc8_mipi_sel = <2>;
vinc8_isp_sel = <0>;
vinc8_isp_tx_ch = <0>;
vinc8_tdm_rx_sel = <0>;
vinc8_rear_sensor_sel = <1>;
vinc8_front_sensor_sel = <1>;
vinc8_sensor_list = <0>;
device_id = <8>;
work_mode = <0>;
delay_init = <1>;
status = "okay";
};
vinc21:vinc@5831ffc {
vinc9_csi_sel = <2>;
vinc9_mipi_sel = <2>;
vinc9_isp_sel = <0>;
vinc9_isp_tx_ch = <0>;
vinc9_tdm_rx_sel = <0>;
vinc9_rear_sensor_sel = <1>;
vinc9_front_sensor_sel = <>;
vinc9_sensor_list = <0>;
device_id = <9>;
work_mode = <0>;
delay_init = <1>;
status = "disabled";
};
vinc22:vinc@5831ff8 {
vinc10_csi_sel = <2>;
vinc10_mipi_sel = <0xff>;
vinc10_isp_sel = <0>;
vinc10_isp_tx_ch = <0>;
vinc10_tdm_rx_sel = <0>;
vinc10_rear_sensor_sel = <0>;
vinc10_front_sensor_sel = <0>;
vinc10_sensor_list = <0>;
device_id = <10>;
status = "disabled";
};
vinc23:vinc@5831ff4 {
vinc11_csi_sel = <2>;
vinc11_mipi_sel = <0xff>;
vinc11_isp_sel = <0>;
vinc11_isp_tx_ch = <0>;
vinc11_tdm_rx_sel = <0>;
vinc11_rear_sensor_sel = <0>;
vinc11_front_sensor_sel = <0>;
vinc11_sensor_list = <0>;
device_id = <11>;
status = "disabled";
};
vinc30:vinc@5833000 {
vinc12_csi_sel = <2>;
vinc12_mipi_sel = <2>;
vinc12_isp_sel = <0>;
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 = <0>;
delay_init = <1>;
status = "okay";
};
vinc31:vinc@5832ffc {
vinc13_csi_sel = <2>;
vinc13_mipi_sel = <0xff>;
vinc13_isp_sel = <0>;
vinc13_isp_tx_ch = <0>;
vinc13_tdm_rx_sel = <0>;
vinc13_rear_sensor_sel = <0>;
vinc13_front_sensor_sel = <0>;
vinc13_sensor_list = <0>;
device_id = <13>;
status = "disabled";
};
vinc32:vinc@5832ff8 {
vinc14_csi_sel = <2>;
vinc14_mipi_sel = <0xff>;
vinc14_isp_sel = <0>;
vinc14_isp_tx_ch = <0>;
vinc14_tdm_rx_sel = <0>;
vinc14_rear_sensor_sel = <0>;
vinc14_front_sensor_sel = <0>;
vinc14_sensor_list = <0>;
device_id = <14>;
status = "disabled";
};
vinc33:vinc@5832ff4 {
vinc15_csi_sel = <2>;
vinc15_mipi_sel = <0xff>;
vinc15_isp_sel = <0>;
vinc15_isp_tx_ch = <0>;
vinc15_tdm_rx_sel = <0>;
vinc15_rear_sensor_sel = <0>;
vinc15_front_sensor_sel = <0>;
vinc15_sensor_list = <0>;
device_id = <15>;
status = "disabled";
};
vinc40:vinc@5834000 {
vinc16_csi_sel = <2>;
vinc16_mipi_sel = <2>;
vinc16_isp_sel = <4>;
vinc16_isp_tx_ch = <0>;
vinc16_tdm_rx_sel = <0>;
vinc16_rear_sensor_sel = <1>;
vinc16_front_sensor_sel = <1>;
vinc16_sensor_list = <1>;
device_id = <16>;
delay_init = <1>;
status = "disabled";
};
vinc50:vinc@5835000 {
vinc17_csi_sel = <2>;
vinc17_mipi_sel = <2>;
vinc17_isp_sel = <4>;
vinc17_isp_tx_ch = <1>;
vinc17_tdm_rx_sel = <0>;
vinc17_rear_sensor_sel = <1>;
vinc17_front_sensor_sel = <1>;
vinc17_sensor_list = <1>;
device_id = <17>;
delay_init = <1>;
status = "disabled";
};
};
3227

被折叠的 条评论
为什么被折叠?



