# SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause
# Copyright (C) 2019 Renesas Electronics Corp.
%YAML 1.2
---
$id: http://devicetree.org/schemas/media/i2c/imi,rdacm2x-gmsl.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: IMI D&D RDACM20 and RDACM21 Automotive Camera Platforms

maintainers:
  - Jacopo Mondi <jacopo+renesas@jmondi.org>
  - Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>
  - Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
  - Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>

description: -|
  The IMI D&D RDACM20 and RDACM21 are GMSL-compatible camera designed for
  automotive applications.

  The RDACM20 camera module encloses a Maxim Integrated MAX9271 GMSL serializer,
  coupled with an OV10635 image sensor and an embedded MCU. Both the MCU and
  the image sensor are connected to the serializer local I2C bus and are
  accessible by the host SoC by direct addressing.

  The RDACM21 camera module encloses the same serializer, coupled with an
  OV10640 image sensor and an OV490 ISP. Only the OV490 ISP is interfaced to
  the serializer local I2C bus while the image sensor is not accessible from
  the host SoC.

  They both connect to a remote GMSL endpoint through a coaxial cable.

                                                   IMI RDACM20
  +---------------+                        +--------------------------------+
  |      GMSL     |   <- Video Stream      |       <- Video--------\        |
  |               |< === GMSL Link ====== >|MAX9271<- I2C bus-> <-->OV10635 |
  | de-serializer |   <- I2C messages ->   |                   \<-->MCU     |
  +---------------+                        +--------------------------------+

                                                   IMI RDACM21
  +---------------+                        +--------------------------------+
  |      GMSL     |   <- Video Stream      |       <- Video--------\        |
  |               |< === GMSL Link ====== >|MAX9271<- I2C bus-> <-->OV490   |
  |               |   <- I2C messages ->   |                          |     |
  | de-serializer |                        |          OV10640 <-------|     |
  +---------------+                        +--------------------------------+

  Both camera modules serialize video data generated by the embedded camera
  sensor on the GMSL serial channel to a remote GMSL de-serializer. They also
  receive and transmit I2C messages encapsulated and transmitted on the GMSL
  bidirectional control channel.

  All I2C traffic received on the GMSL link not directed to the serializer is
  propagated on the local I2C bus to the remote device there connected. All the
  I2C traffic generated on the local I2C bus not directed to the serializer is
  propagated to the remote de-serializer encapsulated in the GMSL control
  channel.

  The RDACM20 and RDACM21 DT node should be a direct child of the GMSL
  deserializer's I2C bus corresponding to the GMSL link that the camera is
  attached to.

properties:
  '#address-cells':
    const: 1

  '#size-cells':
    const: 0

  compatible:
    enum:
      - imi,rdacm20
      - imi,rdacm21

  reg:
    description: -|
      I2C device addresses, the first to be assigned to the serializer, the
      following ones to be assigned to the remote devices.

      For RDACM20 the second entry of the property is assigned to the
      OV10635 image sensor and the optional third one to the embedded MCU.

      For RDACM21 the second entry is assigned to the OV490 ISP and the optional
      third one ignored.

    minItems: 2
    maxItems: 3

  port:
    type: object
    additionalProperties: false
    description: -|
      Connection to the remote GMSL endpoint are modelled using the OF graph
      bindings in accordance with the video interface bindings defined in
      Documentation/devicetree/bindings/media/video-interfaces.txt.

      The device node contains a single "port" child node with a single
      "endpoint" sub-device.

    properties:
      endpoint:
        type: object
        additionalProperties: false

        properties:
          remote-endpoint:
            description: -|
              phandle to the remote GMSL endpoint sub-node in the remote node
              port.
            maxItems: 1

        required:
          - remote-endpoint

    required:
      - endpoint

required:
  - compatible
  - reg
  - port

additionalProperties: false

examples:
  - |
    i2c@e66d8000 {
      #address-cells = <1>;
      #size-cells = <0>;

      reg = <0 0xe66d8000>;

      camera@31 {
        compatible = "imi,rdacm20";
        reg = <0x31>, <0x41>, <0x51>;

        port {
          rdacm20_out0: endpoint {
            remote-endpoint = <&max9286_in0>;
          };
        };
      };
    };

  - |
    i2c@e66d8000 {
      #address-cells = <1>;
      #size-cells = <0>;

      reg = <0 0xe66d8000>;

      camera@31 {
        compatible = "imi,rdacm21";
        reg = <0x31>, <0x41>;

        port {
          rdacm21_out0: endpoint {
            remote-endpoint = <&max9286_in0>;
          };
        };
      };
    };
