162306a36Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
262306a36Sopenharmony_ci%YAML 1.2
362306a36Sopenharmony_ci---
462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/media/ti,cal.yaml#
562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
662306a36Sopenharmony_ci
762306a36Sopenharmony_cititle: Texas Instruments DRA72x CAMERA ADAPTATION LAYER (CAL)
862306a36Sopenharmony_ci
962306a36Sopenharmony_cimaintainers:
1062306a36Sopenharmony_ci  - Benoit Parrot <bparrot@ti.com>
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_cidescription: |-
1362306a36Sopenharmony_ci  The Camera Adaptation Layer (CAL) is a key component for image capture
1462306a36Sopenharmony_ci  applications. The capture module provides the system interface and the
1562306a36Sopenharmony_ci  processing capability to connect CSI2 image-sensor modules to the
1662306a36Sopenharmony_ci  DRA72x device.
1762306a36Sopenharmony_ci
1862306a36Sopenharmony_ci  CAL supports 2 camera port nodes on MIPI bus.
1962306a36Sopenharmony_ci
2062306a36Sopenharmony_ciproperties:
2162306a36Sopenharmony_ci  compatible:
2262306a36Sopenharmony_ci    enum:
2362306a36Sopenharmony_ci      # for DRA72 controllers
2462306a36Sopenharmony_ci      - ti,dra72-cal
2562306a36Sopenharmony_ci      # for DRA72 controllers pre ES2.0
2662306a36Sopenharmony_ci      - ti,dra72-pre-es2-cal
2762306a36Sopenharmony_ci      # for DRA76 controllers
2862306a36Sopenharmony_ci      - ti,dra76-cal
2962306a36Sopenharmony_ci      # for AM654 controllers
3062306a36Sopenharmony_ci      - ti,am654-cal
3162306a36Sopenharmony_ci
3262306a36Sopenharmony_ci  reg:
3362306a36Sopenharmony_ci    minItems: 2
3462306a36Sopenharmony_ci    items:
3562306a36Sopenharmony_ci      - description: The CAL main register region
3662306a36Sopenharmony_ci      - description: The RX Core0 (DPHY0) register region
3762306a36Sopenharmony_ci      - description: The RX Core1 (DPHY1) register region
3862306a36Sopenharmony_ci
3962306a36Sopenharmony_ci  reg-names:
4062306a36Sopenharmony_ci    minItems: 2
4162306a36Sopenharmony_ci    items:
4262306a36Sopenharmony_ci      - const: cal_top
4362306a36Sopenharmony_ci      - const: cal_rx_core0
4462306a36Sopenharmony_ci      - const: cal_rx_core1
4562306a36Sopenharmony_ci
4662306a36Sopenharmony_ci  interrupts:
4762306a36Sopenharmony_ci    maxItems: 1
4862306a36Sopenharmony_ci
4962306a36Sopenharmony_ci  ti,camerrx-control:
5062306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/phandle-array
5162306a36Sopenharmony_ci    items:
5262306a36Sopenharmony_ci      - items:
5362306a36Sopenharmony_ci          - description: phandle to device control module
5462306a36Sopenharmony_ci          - description: offset to the control_camerarx_core register
5562306a36Sopenharmony_ci    description:
5662306a36Sopenharmony_ci      phandle to the device control module and offset to the
5762306a36Sopenharmony_ci      control_camerarx_core register
5862306a36Sopenharmony_ci
5962306a36Sopenharmony_ci  clocks:
6062306a36Sopenharmony_ci    maxItems: 1
6162306a36Sopenharmony_ci
6262306a36Sopenharmony_ci  clock-names:
6362306a36Sopenharmony_ci    const: fck
6462306a36Sopenharmony_ci
6562306a36Sopenharmony_ci  power-domains:
6662306a36Sopenharmony_ci    description:
6762306a36Sopenharmony_ci      List of phandle and PM domain specifier as documented in
6862306a36Sopenharmony_ci      Documentation/devicetree/bindings/power/power_domain.txt
6962306a36Sopenharmony_ci    maxItems: 1
7062306a36Sopenharmony_ci
7162306a36Sopenharmony_ci  ports:
7262306a36Sopenharmony_ci    $ref: /schemas/graph.yaml#/properties/ports
7362306a36Sopenharmony_ci
7462306a36Sopenharmony_ci    properties:
7562306a36Sopenharmony_ci      port@0:
7662306a36Sopenharmony_ci        $ref: /schemas/graph.yaml#/$defs/port-base
7762306a36Sopenharmony_ci        unevaluatedProperties: false
7862306a36Sopenharmony_ci        description: 'CSI2 Port #0'
7962306a36Sopenharmony_ci
8062306a36Sopenharmony_ci        properties:
8162306a36Sopenharmony_ci          endpoint:
8262306a36Sopenharmony_ci            $ref: video-interfaces.yaml#
8362306a36Sopenharmony_ci            unevaluatedProperties: false
8462306a36Sopenharmony_ci
8562306a36Sopenharmony_ci            properties:
8662306a36Sopenharmony_ci              clock-lanes:
8762306a36Sopenharmony_ci                maxItems: 1
8862306a36Sopenharmony_ci
8962306a36Sopenharmony_ci              data-lanes:
9062306a36Sopenharmony_ci                minItems: 1
9162306a36Sopenharmony_ci                maxItems: 4
9262306a36Sopenharmony_ci
9362306a36Sopenharmony_ci      port@1:
9462306a36Sopenharmony_ci        $ref: /schemas/graph.yaml#/$defs/port-base
9562306a36Sopenharmony_ci        unevaluatedProperties: false
9662306a36Sopenharmony_ci        description: 'CSI2 Port #1'
9762306a36Sopenharmony_ci
9862306a36Sopenharmony_ci        properties:
9962306a36Sopenharmony_ci          endpoint:
10062306a36Sopenharmony_ci            $ref: video-interfaces.yaml#
10162306a36Sopenharmony_ci            unevaluatedProperties: false
10262306a36Sopenharmony_ci
10362306a36Sopenharmony_ci            properties:
10462306a36Sopenharmony_ci              clock-lanes:
10562306a36Sopenharmony_ci                maxItems: 1
10662306a36Sopenharmony_ci
10762306a36Sopenharmony_ci              data-lanes:
10862306a36Sopenharmony_ci                minItems: 1
10962306a36Sopenharmony_ci                maxItems: 4
11062306a36Sopenharmony_ci
11162306a36Sopenharmony_ci    required:
11262306a36Sopenharmony_ci      - port@0
11362306a36Sopenharmony_ci
11462306a36Sopenharmony_cirequired:
11562306a36Sopenharmony_ci  - compatible
11662306a36Sopenharmony_ci  - reg
11762306a36Sopenharmony_ci  - reg-names
11862306a36Sopenharmony_ci  - interrupts
11962306a36Sopenharmony_ci  - ti,camerrx-control
12062306a36Sopenharmony_ci
12162306a36Sopenharmony_ciadditionalProperties: false
12262306a36Sopenharmony_ci
12362306a36Sopenharmony_ciexamples:
12462306a36Sopenharmony_ci  - |
12562306a36Sopenharmony_ci    #include <dt-bindings/interrupt-controller/arm-gic.h>
12662306a36Sopenharmony_ci
12762306a36Sopenharmony_ci    cal: cal@4845b000 {
12862306a36Sopenharmony_ci        compatible = "ti,dra72-cal";
12962306a36Sopenharmony_ci        reg = <0x4845B000 0x400>,
13062306a36Sopenharmony_ci              <0x4845B800 0x40>,
13162306a36Sopenharmony_ci              <0x4845B900 0x40>;
13262306a36Sopenharmony_ci        reg-names = "cal_top",
13362306a36Sopenharmony_ci                    "cal_rx_core0",
13462306a36Sopenharmony_ci                    "cal_rx_core1";
13562306a36Sopenharmony_ci        interrupts = <GIC_SPI 119 IRQ_TYPE_LEVEL_HIGH>;
13662306a36Sopenharmony_ci        ti,camerrx-control = <&scm_conf 0xE94>;
13762306a36Sopenharmony_ci
13862306a36Sopenharmony_ci        ports {
13962306a36Sopenharmony_ci              #address-cells = <1>;
14062306a36Sopenharmony_ci              #size-cells = <0>;
14162306a36Sopenharmony_ci
14262306a36Sopenharmony_ci              csi2_0: port@0 {
14362306a36Sopenharmony_ci                    reg = <0>;
14462306a36Sopenharmony_ci                    csi2_phy0: endpoint {
14562306a36Sopenharmony_ci                           remote-endpoint = <&csi2_cam0>;
14662306a36Sopenharmony_ci                           clock-lanes = <0>;
14762306a36Sopenharmony_ci                           data-lanes = <1 2>;
14862306a36Sopenharmony_ci                    };
14962306a36Sopenharmony_ci              };
15062306a36Sopenharmony_ci        };
15162306a36Sopenharmony_ci    };
15262306a36Sopenharmony_ci
15362306a36Sopenharmony_ci    i2c {
15462306a36Sopenharmony_ci        clock-frequency = <400000>;
15562306a36Sopenharmony_ci        #address-cells = <1>;
15662306a36Sopenharmony_ci        #size-cells = <0>;
15762306a36Sopenharmony_ci
15862306a36Sopenharmony_ci        camera-sensor@3c {
15962306a36Sopenharmony_ci               compatible = "ovti,ov5640";
16062306a36Sopenharmony_ci               reg = <0x3c>;
16162306a36Sopenharmony_ci               AVDD-supply = <&reg_2p8v>;
16262306a36Sopenharmony_ci               DOVDD-supply = <&reg_1p8v>;
16362306a36Sopenharmony_ci               DVDD-supply = <&reg_1p5v>;
16462306a36Sopenharmony_ci               clocks = <&clk_ov5640_fixed>;
16562306a36Sopenharmony_ci               clock-names = "xclk";
16662306a36Sopenharmony_ci
16762306a36Sopenharmony_ci               port {
16862306a36Sopenharmony_ci                    csi2_cam0: endpoint {
16962306a36Sopenharmony_ci                            remote-endpoint = <&csi2_phy0>;
17062306a36Sopenharmony_ci                            clock-lanes = <0>;
17162306a36Sopenharmony_ci                            data-lanes = <1 2>;
17262306a36Sopenharmony_ci                    };
17362306a36Sopenharmony_ci               };
17462306a36Sopenharmony_ci        };
17562306a36Sopenharmony_ci    };
17662306a36Sopenharmony_ci
17762306a36Sopenharmony_ci...
178