# 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

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>;
          };
        };
      };
    };
