| # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) |
| # Copyright (C) 2025 Texas Instruments Incorporated - http://www.ti.com/ |
| %YAML 1.2 |
| --- |
| $id: http://devicetree.org/schemas/media/ti,vip.yaml# |
| $schema: http://devicetree.org/meta-schemas/core.yaml# |
| |
| title: Texas Instruments DRA7x Video Input Port (VIP) |
| |
| maintainers: |
| - Yemike Abhilash Chandra <y-abhilashchandra@ti.com> |
| |
| description: |- |
| Video Input Port (VIP) can be found on devices such as DRA7xx and |
| provides the system interface and the processing capability to |
| connect parallel image-sensor as well as BT.656/1120 capable encoder |
| chip to DRA7x device. |
| |
| Each VIP instance supports 2 independently configurable external |
| video input capture slices (Slice 0 and Slice 1) each providing |
| up to two video input ports (Port A and Port B). |
| |
| properties: |
| compatible: |
| enum: |
| - ti,dra7-vip |
| |
| reg: |
| maxItems: 1 |
| |
| interrupts: |
| items: |
| - description: IRQ index 0 is used for Slice0 interrupts |
| - description: IRQ index 1 is used for Slice1 interrupts |
| |
| ti,ctrl-module: |
| description: |
| Reference to the device control module that provides clock-edge |
| inversion control for VIP ports. These controls allow the |
| VIP to sample pixel data on the correct clock edge. |
| $ref: /schemas/types.yaml#/definitions/phandle-array |
| items: |
| items: |
| - description: phandle to device control module |
| - description: offset to the CTRL_CORE_SMA_SW_1 register |
| - description: Bit field to slice 0 port A |
| - description: Bit field to slice 0 port B |
| - description: Bit field to slice 1 port A |
| - description: Bit field to slice 1 port B |
| maxItems: 1 |
| |
| ports: |
| $ref: /schemas/graph.yaml#/properties/ports |
| |
| patternProperties: |
| '^port@[0-3]$': |
| $ref: /schemas/graph.yaml#/$defs/port-base |
| unevaluatedProperties: false |
| description: | |
| Each VIP instance supports 2 independently configurable external video |
| input capture slices (Slice 0 and Slice 1) each providing up to two video |
| input ports (Port A and Port B). These ports represent the following |
| port@0 -> Slice 0 Port A |
| port@1 -> Slice 0 Port B |
| port@2 -> Slice 1 Port A |
| port@3 -> Slice 1 Port B |
| |
| properties: |
| endpoint: |
| $ref: /schemas/media/video-interfaces.yaml# |
| unevaluatedProperties: false |
| |
| properties: |
| bus-width: |
| enum: [8, 16, 24] |
| default: 8 |
| |
| required: |
| - compatible |
| - reg |
| - interrupts |
| - ti,ctrl-module |
| - ports |
| |
| additionalProperties: false |
| |
| examples: |
| - | |
| #include <dt-bindings/interrupt-controller/arm-gic.h> |
| #include <dt-bindings/interrupt-controller/irq.h> |
| |
| video@48970000 { |
| compatible = "ti,dra7-vip"; |
| reg = <0x48970000 0x1000>; |
| interrupts = <GIC_SPI 351 IRQ_TYPE_LEVEL_HIGH>, |
| <GIC_SPI 392 IRQ_TYPE_LEVEL_HIGH>; |
| ti,ctrl-module = <&scm_conf 0x534 0x0 0x2 0x1 0x3>; |
| |
| ports { |
| #address-cells = <1>; |
| #size-cells = <0>; |
| |
| vin1a: port@0 { |
| reg = <0>; |
| |
| vin1a_ep: endpoint { |
| remote-endpoint = <&camera1>; |
| hsync-active = <1>; |
| vsync-active = <1>; |
| pclk-sample = <0>; |
| bus-width = <8>; |
| }; |
| }; |
| |
| vin1b: port@1 { |
| reg = <1>; |
| |
| vin1b_ep: endpoint { |
| remote-endpoint = <&camera2>; |
| hsync-active = <1>; |
| vsync-active = <1>; |
| pclk-sample = <0>; |
| bus-width = <8>; |
| }; |
| }; |
| |
| vin2a: port@2 { |
| reg = <2>; |
| |
| vin2a_ep: endpoint { |
| remote-endpoint = <&camera3>; |
| hsync-active = <1>; |
| vsync-active = <1>; |
| pclk-sample = <0>; |
| bus-width = <16>; |
| }; |
| }; |
| |
| vin2b: port@3 { |
| reg = <3>; |
| |
| vin2b_ep: endpoint { |
| remote-endpoint = <&camera4>; |
| hsync-active = <1>; |
| vsync-active = <1>; |
| pclk-sample = <0>; |
| bus-width = <8>; |
| }; |
| }; |
| }; |
| }; |
| ... |