18c2ecf20Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
28c2ecf20Sopenharmony_ci%YAML 1.2
38c2ecf20Sopenharmony_ci---
48c2ecf20Sopenharmony_ci$id: http://devicetree.org/schemas/media/allwinner,sun4i-a10-csi.yaml#
58c2ecf20Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
68c2ecf20Sopenharmony_ci
78c2ecf20Sopenharmony_cititle: Allwinner A10 CMOS Sensor Interface (CSI) Device Tree Bindings
88c2ecf20Sopenharmony_ci
98c2ecf20Sopenharmony_cimaintainers:
108c2ecf20Sopenharmony_ci  - Chen-Yu Tsai <wens@csie.org>
118c2ecf20Sopenharmony_ci  - Maxime Ripard <mripard@kernel.org>
128c2ecf20Sopenharmony_ci
138c2ecf20Sopenharmony_cidescription: |-
148c2ecf20Sopenharmony_ci  The Allwinner A10 and later has a CMOS Sensor Interface to retrieve
158c2ecf20Sopenharmony_ci  frames from a parallel or BT656 sensor.
168c2ecf20Sopenharmony_ci
178c2ecf20Sopenharmony_ciproperties:
188c2ecf20Sopenharmony_ci  compatible:
198c2ecf20Sopenharmony_ci    oneOf:
208c2ecf20Sopenharmony_ci      - const: allwinner,sun4i-a10-csi1
218c2ecf20Sopenharmony_ci      - const: allwinner,sun7i-a20-csi0
228c2ecf20Sopenharmony_ci      - items:
238c2ecf20Sopenharmony_ci          - const: allwinner,sun7i-a20-csi1
248c2ecf20Sopenharmony_ci          - const: allwinner,sun4i-a10-csi1
258c2ecf20Sopenharmony_ci      - items:
268c2ecf20Sopenharmony_ci          - const: allwinner,sun8i-r40-csi0
278c2ecf20Sopenharmony_ci          - const: allwinner,sun7i-a20-csi0
288c2ecf20Sopenharmony_ci
298c2ecf20Sopenharmony_ci  reg:
308c2ecf20Sopenharmony_ci    maxItems: 1
318c2ecf20Sopenharmony_ci
328c2ecf20Sopenharmony_ci  interrupts:
338c2ecf20Sopenharmony_ci    maxItems: 1
348c2ecf20Sopenharmony_ci
358c2ecf20Sopenharmony_ci  clocks:
368c2ecf20Sopenharmony_ci    oneOf:
378c2ecf20Sopenharmony_ci      - items:
388c2ecf20Sopenharmony_ci          - description: The CSI interface clock
398c2ecf20Sopenharmony_ci          - description: The CSI DRAM clock
408c2ecf20Sopenharmony_ci
418c2ecf20Sopenharmony_ci      - items:
428c2ecf20Sopenharmony_ci          - description: The CSI interface clock
438c2ecf20Sopenharmony_ci          - description: The CSI ISP clock
448c2ecf20Sopenharmony_ci          - description: The CSI DRAM clock
458c2ecf20Sopenharmony_ci
468c2ecf20Sopenharmony_ci  clock-names:
478c2ecf20Sopenharmony_ci    oneOf:
488c2ecf20Sopenharmony_ci      - items:
498c2ecf20Sopenharmony_ci          - const: bus
508c2ecf20Sopenharmony_ci          - const: ram
518c2ecf20Sopenharmony_ci
528c2ecf20Sopenharmony_ci      - items:
538c2ecf20Sopenharmony_ci          - const: bus
548c2ecf20Sopenharmony_ci          - const: isp
558c2ecf20Sopenharmony_ci          - const: ram
568c2ecf20Sopenharmony_ci
578c2ecf20Sopenharmony_ci  resets:
588c2ecf20Sopenharmony_ci    maxItems: 1
598c2ecf20Sopenharmony_ci
608c2ecf20Sopenharmony_ci  # FIXME: This should be made required eventually once every SoC will
618c2ecf20Sopenharmony_ci  # have the MBUS declared.
628c2ecf20Sopenharmony_ci  interconnects:
638c2ecf20Sopenharmony_ci    maxItems: 1
648c2ecf20Sopenharmony_ci
658c2ecf20Sopenharmony_ci  # FIXME: This should be made required eventually once every SoC will
668c2ecf20Sopenharmony_ci  # have the MBUS declared.
678c2ecf20Sopenharmony_ci  interconnect-names:
688c2ecf20Sopenharmony_ci    const: dma-mem
698c2ecf20Sopenharmony_ci
708c2ecf20Sopenharmony_ci  # See ./video-interfaces.txt for details
718c2ecf20Sopenharmony_ci  port:
728c2ecf20Sopenharmony_ci    type: object
738c2ecf20Sopenharmony_ci    additionalProperties: false
748c2ecf20Sopenharmony_ci
758c2ecf20Sopenharmony_ci    properties:
768c2ecf20Sopenharmony_ci      endpoint:
778c2ecf20Sopenharmony_ci        type: object
788c2ecf20Sopenharmony_ci
798c2ecf20Sopenharmony_ci        properties:
808c2ecf20Sopenharmony_ci          bus-width:
818c2ecf20Sopenharmony_ci            enum: [8, 16]
828c2ecf20Sopenharmony_ci
838c2ecf20Sopenharmony_ci          data-active: true
848c2ecf20Sopenharmony_ci          hsync-active: true
858c2ecf20Sopenharmony_ci          pclk-sample: true
868c2ecf20Sopenharmony_ci          remote-endpoint: true
878c2ecf20Sopenharmony_ci          vsync-active: true
888c2ecf20Sopenharmony_ci
898c2ecf20Sopenharmony_ci        required:
908c2ecf20Sopenharmony_ci          - bus-width
918c2ecf20Sopenharmony_ci          - data-active
928c2ecf20Sopenharmony_ci          - hsync-active
938c2ecf20Sopenharmony_ci          - pclk-sample
948c2ecf20Sopenharmony_ci          - remote-endpoint
958c2ecf20Sopenharmony_ci          - vsync-active
968c2ecf20Sopenharmony_ci
978c2ecf20Sopenharmony_ci    required:
988c2ecf20Sopenharmony_ci      - endpoint
998c2ecf20Sopenharmony_ci
1008c2ecf20Sopenharmony_cirequired:
1018c2ecf20Sopenharmony_ci  - compatible
1028c2ecf20Sopenharmony_ci  - reg
1038c2ecf20Sopenharmony_ci  - interrupts
1048c2ecf20Sopenharmony_ci  - clocks
1058c2ecf20Sopenharmony_ci
1068c2ecf20Sopenharmony_ciadditionalProperties: false
1078c2ecf20Sopenharmony_ci
1088c2ecf20Sopenharmony_ciexamples:
1098c2ecf20Sopenharmony_ci  - |
1108c2ecf20Sopenharmony_ci    #include <dt-bindings/interrupt-controller/arm-gic.h>
1118c2ecf20Sopenharmony_ci    #include <dt-bindings/clock/sun7i-a20-ccu.h>
1128c2ecf20Sopenharmony_ci    #include <dt-bindings/reset/sun4i-a10-ccu.h>
1138c2ecf20Sopenharmony_ci
1148c2ecf20Sopenharmony_ci    csi0: csi@1c09000 {
1158c2ecf20Sopenharmony_ci        compatible = "allwinner,sun7i-a20-csi0";
1168c2ecf20Sopenharmony_ci        reg = <0x01c09000 0x1000>;
1178c2ecf20Sopenharmony_ci        interrupts = <GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH>;
1188c2ecf20Sopenharmony_ci        clocks = <&ccu CLK_AHB_CSI0>, <&ccu CLK_CSI_SCLK>, <&ccu CLK_DRAM_CSI0>;
1198c2ecf20Sopenharmony_ci        clock-names = "bus", "isp", "ram";
1208c2ecf20Sopenharmony_ci        resets = <&ccu RST_CSI0>;
1218c2ecf20Sopenharmony_ci
1228c2ecf20Sopenharmony_ci        port {
1238c2ecf20Sopenharmony_ci            csi_from_ov5640: endpoint {
1248c2ecf20Sopenharmony_ci                remote-endpoint = <&ov5640_to_csi>;
1258c2ecf20Sopenharmony_ci                bus-width = <8>;
1268c2ecf20Sopenharmony_ci                hsync-active = <1>; /* Active high */
1278c2ecf20Sopenharmony_ci                vsync-active = <0>; /* Active low */
1288c2ecf20Sopenharmony_ci                data-active = <1>;  /* Active high */
1298c2ecf20Sopenharmony_ci                pclk-sample = <1>;  /* Rising */
1308c2ecf20Sopenharmony_ci            };
1318c2ecf20Sopenharmony_ci        };
1328c2ecf20Sopenharmony_ci    };
1338c2ecf20Sopenharmony_ci
1348c2ecf20Sopenharmony_ci...
135