162306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause
262306a36Sopenharmony_ci# Copyright (C) 2019 Renesas Electronics Corp.
362306a36Sopenharmony_ci%YAML 1.2
462306a36Sopenharmony_ci---
562306a36Sopenharmony_ci$id: http://devicetree.org/schemas/media/i2c/imi,rdacm2x-gmsl.yaml#
662306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
762306a36Sopenharmony_ci
862306a36Sopenharmony_cititle: IMI D&D RDACM20 and RDACM21 Automotive Camera Platforms
962306a36Sopenharmony_ci
1062306a36Sopenharmony_cimaintainers:
1162306a36Sopenharmony_ci  - Jacopo Mondi <jacopo+renesas@jmondi.org>
1262306a36Sopenharmony_ci  - Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>
1362306a36Sopenharmony_ci  - Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
1462306a36Sopenharmony_ci  - Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
1562306a36Sopenharmony_ci
1662306a36Sopenharmony_cidescription: -|
1762306a36Sopenharmony_ci  The IMI D&D RDACM20 and RDACM21 are GMSL-compatible camera designed for
1862306a36Sopenharmony_ci  automotive applications.
1962306a36Sopenharmony_ci
2062306a36Sopenharmony_ci  The RDACM20 camera module encloses a Maxim Integrated MAX9271 GMSL serializer,
2162306a36Sopenharmony_ci  coupled with an OV10635 image sensor and an embedded MCU. Both the MCU and
2262306a36Sopenharmony_ci  the image sensor are connected to the serializer local I2C bus and are
2362306a36Sopenharmony_ci  accessible by the host SoC by direct addressing.
2462306a36Sopenharmony_ci
2562306a36Sopenharmony_ci  The RDACM21 camera module encloses the same serializer, coupled with an
2662306a36Sopenharmony_ci  OV10640 image sensor and an OV490 ISP. Only the OV490 ISP is interfaced to
2762306a36Sopenharmony_ci  the serializer local I2C bus while the image sensor is not accessible from
2862306a36Sopenharmony_ci  the host SoC.
2962306a36Sopenharmony_ci
3062306a36Sopenharmony_ci  They both connect to a remote GMSL endpoint through a coaxial cable.
3162306a36Sopenharmony_ci
3262306a36Sopenharmony_ci                                                   IMI RDACM20
3362306a36Sopenharmony_ci  +---------------+                        +--------------------------------+
3462306a36Sopenharmony_ci  |      GMSL     |   <- Video Stream      |       <- Video--------\        |
3562306a36Sopenharmony_ci  |               |< === GMSL Link ====== >|MAX9271<- I2C bus-> <-->OV10635 |
3662306a36Sopenharmony_ci  | de-serializer |   <- I2C messages ->   |                   \<-->MCU     |
3762306a36Sopenharmony_ci  +---------------+                        +--------------------------------+
3862306a36Sopenharmony_ci
3962306a36Sopenharmony_ci                                                   IMI RDACM21
4062306a36Sopenharmony_ci  +---------------+                        +--------------------------------+
4162306a36Sopenharmony_ci  |      GMSL     |   <- Video Stream      |       <- Video--------\        |
4262306a36Sopenharmony_ci  |               |< === GMSL Link ====== >|MAX9271<- I2C bus-> <-->OV490   |
4362306a36Sopenharmony_ci  |               |   <- I2C messages ->   |                          |     |
4462306a36Sopenharmony_ci  | de-serializer |                        |          OV10640 <-------|     |
4562306a36Sopenharmony_ci  +---------------+                        +--------------------------------+
4662306a36Sopenharmony_ci
4762306a36Sopenharmony_ci  Both camera modules serialize video data generated by the embedded camera
4862306a36Sopenharmony_ci  sensor on the GMSL serial channel to a remote GMSL de-serializer. They also
4962306a36Sopenharmony_ci  receive and transmit I2C messages encapsulated and transmitted on the GMSL
5062306a36Sopenharmony_ci  bidirectional control channel.
5162306a36Sopenharmony_ci
5262306a36Sopenharmony_ci  All I2C traffic received on the GMSL link not directed to the serializer is
5362306a36Sopenharmony_ci  propagated on the local I2C bus to the remote device there connected. All the
5462306a36Sopenharmony_ci  I2C traffic generated on the local I2C bus not directed to the serializer is
5562306a36Sopenharmony_ci  propagated to the remote de-serializer encapsulated in the GMSL control
5662306a36Sopenharmony_ci  channel.
5762306a36Sopenharmony_ci
5862306a36Sopenharmony_ci  The RDACM20 and RDACM21 DT node should be a direct child of the GMSL
5962306a36Sopenharmony_ci  deserializer's I2C bus corresponding to the GMSL link that the camera is
6062306a36Sopenharmony_ci  attached to.
6162306a36Sopenharmony_ci
6262306a36Sopenharmony_ciproperties:
6362306a36Sopenharmony_ci  '#address-cells':
6462306a36Sopenharmony_ci    const: 1
6562306a36Sopenharmony_ci
6662306a36Sopenharmony_ci  '#size-cells':
6762306a36Sopenharmony_ci    const: 0
6862306a36Sopenharmony_ci
6962306a36Sopenharmony_ci  compatible:
7062306a36Sopenharmony_ci    enum:
7162306a36Sopenharmony_ci      - imi,rdacm20
7262306a36Sopenharmony_ci      - imi,rdacm21
7362306a36Sopenharmony_ci
7462306a36Sopenharmony_ci  reg:
7562306a36Sopenharmony_ci    description: -|
7662306a36Sopenharmony_ci      I2C device addresses, the first to be assigned to the serializer, the
7762306a36Sopenharmony_ci      following ones to be assigned to the remote devices.
7862306a36Sopenharmony_ci
7962306a36Sopenharmony_ci      For RDACM20 the second entry of the property is assigned to the
8062306a36Sopenharmony_ci      OV10635 image sensor and the optional third one to the embedded MCU.
8162306a36Sopenharmony_ci
8262306a36Sopenharmony_ci      For RDACM21 the second entry is assigned to the OV490 ISP and the optional
8362306a36Sopenharmony_ci      third one ignored.
8462306a36Sopenharmony_ci
8562306a36Sopenharmony_ci    minItems: 2
8662306a36Sopenharmony_ci    maxItems: 3
8762306a36Sopenharmony_ci
8862306a36Sopenharmony_ci  port:
8962306a36Sopenharmony_ci    $ref: /schemas/graph.yaml#/properties/port
9062306a36Sopenharmony_ci    description:
9162306a36Sopenharmony_ci      Connection to the remote GMSL endpoint.
9262306a36Sopenharmony_ci
9362306a36Sopenharmony_cirequired:
9462306a36Sopenharmony_ci  - compatible
9562306a36Sopenharmony_ci  - reg
9662306a36Sopenharmony_ci  - port
9762306a36Sopenharmony_ci
9862306a36Sopenharmony_ciadditionalProperties: false
9962306a36Sopenharmony_ci
10062306a36Sopenharmony_ciexamples:
10162306a36Sopenharmony_ci  - |
10262306a36Sopenharmony_ci    i2c@e66d8000 {
10362306a36Sopenharmony_ci      #address-cells = <1>;
10462306a36Sopenharmony_ci      #size-cells = <0>;
10562306a36Sopenharmony_ci
10662306a36Sopenharmony_ci      reg = <0 0xe66d8000>;
10762306a36Sopenharmony_ci
10862306a36Sopenharmony_ci      camera@31 {
10962306a36Sopenharmony_ci        compatible = "imi,rdacm20";
11062306a36Sopenharmony_ci        reg = <0x31>, <0x41>, <0x51>;
11162306a36Sopenharmony_ci
11262306a36Sopenharmony_ci        port {
11362306a36Sopenharmony_ci          rdacm20_out0: endpoint {
11462306a36Sopenharmony_ci            remote-endpoint = <&max9286_in0>;
11562306a36Sopenharmony_ci          };
11662306a36Sopenharmony_ci        };
11762306a36Sopenharmony_ci      };
11862306a36Sopenharmony_ci    };
11962306a36Sopenharmony_ci
12062306a36Sopenharmony_ci  - |
12162306a36Sopenharmony_ci    i2c@e66d8000 {
12262306a36Sopenharmony_ci      #address-cells = <1>;
12362306a36Sopenharmony_ci      #size-cells = <0>;
12462306a36Sopenharmony_ci
12562306a36Sopenharmony_ci      reg = <0 0xe66d8000>;
12662306a36Sopenharmony_ci
12762306a36Sopenharmony_ci      camera@31 {
12862306a36Sopenharmony_ci        compatible = "imi,rdacm21";
12962306a36Sopenharmony_ci        reg = <0x31>, <0x41>;
13062306a36Sopenharmony_ci
13162306a36Sopenharmony_ci        port {
13262306a36Sopenharmony_ci          rdacm21_out0: endpoint {
13362306a36Sopenharmony_ci            remote-endpoint = <&max9286_in0>;
13462306a36Sopenharmony_ci          };
13562306a36Sopenharmony_ci        };
13662306a36Sopenharmony_ci      };
13762306a36Sopenharmony_ci    };
138