1e9f81768SJacopo Mondi# SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause
2e9f81768SJacopo Mondi# Copyright (C) 2019 Renesas Electronics Corp.
3e9f81768SJacopo Mondi%YAML 1.2
4e9f81768SJacopo Mondi---
5e9f81768SJacopo Mondi$id: http://devicetree.org/schemas/media/i2c/imi,rdacm2x-gmsl.yaml#
6e9f81768SJacopo Mondi$schema: http://devicetree.org/meta-schemas/core.yaml#
7e9f81768SJacopo Mondi
8e9f81768SJacopo Mondititle: IMI D&D RDACM20 and RDACM21 Automotive Camera Platforms
9e9f81768SJacopo Mondi
10e9f81768SJacopo Mondimaintainers:
11e9f81768SJacopo Mondi  - Jacopo Mondi <jacopo+renesas@jmondi.org>
12e9f81768SJacopo Mondi  - Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>
13e9f81768SJacopo Mondi  - Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
14e9f81768SJacopo Mondi  - Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
15e9f81768SJacopo Mondi
16e9f81768SJacopo Mondidescription: -|
17e9f81768SJacopo Mondi  The IMI D&D RDACM20 and RDACM21 are GMSL-compatible camera designed for
18e9f81768SJacopo Mondi  automotive applications.
19e9f81768SJacopo Mondi
20e9f81768SJacopo Mondi  The RDACM20 camera module encloses a Maxim Integrated MAX9271 GMSL serializer,
21e9f81768SJacopo Mondi  coupled with an OV10635 image sensor and an embedded MCU. Both the MCU and
22e9f81768SJacopo Mondi  the image sensor are connected to the serializer local I2C bus and are
23e9f81768SJacopo Mondi  accessible by the host SoC by direct addressing.
24e9f81768SJacopo Mondi
25e9f81768SJacopo Mondi  The RDACM21 camera module encloses the same serializer, coupled with an
26e9f81768SJacopo Mondi  OV10640 image sensor and an OV490 ISP. Only the OV490 ISP is interfaced to
27e9f81768SJacopo Mondi  the serializer local I2C bus while the image sensor is not accessible from
28e9f81768SJacopo Mondi  the host SoC.
29e9f81768SJacopo Mondi
30e9f81768SJacopo Mondi  They both connect to a remote GMSL endpoint through a coaxial cable.
31e9f81768SJacopo Mondi
32e9f81768SJacopo Mondi                                                   IMI RDACM20
33e9f81768SJacopo Mondi  +---------------+                        +--------------------------------+
34e9f81768SJacopo Mondi  |      GMSL     |   <- Video Stream      |       <- Video--------\        |
35e9f81768SJacopo Mondi  |               |< === GMSL Link ====== >|MAX9271<- I2C bus-> <-->OV10635 |
36e9f81768SJacopo Mondi  | de-serializer |   <- I2C messages ->   |                   \<-->MCU     |
37e9f81768SJacopo Mondi  +---------------+                        +--------------------------------+
38e9f81768SJacopo Mondi
39e9f81768SJacopo Mondi                                                   IMI RDACM21
40e9f81768SJacopo Mondi  +---------------+                        +--------------------------------+
41e9f81768SJacopo Mondi  |      GMSL     |   <- Video Stream      |       <- Video--------\        |
42e9f81768SJacopo Mondi  |               |< === GMSL Link ====== >|MAX9271<- I2C bus-> <-->OV490   |
43e9f81768SJacopo Mondi  |               |   <- I2C messages ->   |                          |     |
44e9f81768SJacopo Mondi  | de-serializer |                        |          OV10640 <-------|     |
45e9f81768SJacopo Mondi  +---------------+                        +--------------------------------+
46e9f81768SJacopo Mondi
47e9f81768SJacopo Mondi  Both camera modules serialize video data generated by the embedded camera
48e9f81768SJacopo Mondi  sensor on the GMSL serial channel to a remote GMSL de-serializer. They also
49e9f81768SJacopo Mondi  receive and transmit I2C messages encapsulated and transmitted on the GMSL
50e9f81768SJacopo Mondi  bidirectional control channel.
51e9f81768SJacopo Mondi
52e9f81768SJacopo Mondi  All I2C traffic received on the GMSL link not directed to the serializer is
53e9f81768SJacopo Mondi  propagated on the local I2C bus to the remote device there connected. All the
54e9f81768SJacopo Mondi  I2C traffic generated on the local I2C bus not directed to the serializer is
55e9f81768SJacopo Mondi  propagated to the remote de-serializer encapsulated in the GMSL control
56e9f81768SJacopo Mondi  channel.
57e9f81768SJacopo Mondi
58e9f81768SJacopo Mondi  The RDACM20 and RDACM21 DT node should be a direct child of the GMSL
59e9f81768SJacopo Mondi  deserializer's I2C bus corresponding to the GMSL link that the camera is
60e9f81768SJacopo Mondi  attached to.
61e9f81768SJacopo Mondi
62e9f81768SJacopo Mondiproperties:
63e9f81768SJacopo Mondi  '#address-cells':
64e9f81768SJacopo Mondi    const: 1
65e9f81768SJacopo Mondi
66e9f81768SJacopo Mondi  '#size-cells':
67e9f81768SJacopo Mondi    const: 0
68e9f81768SJacopo Mondi
69e9f81768SJacopo Mondi  compatible:
70e9f81768SJacopo Mondi    enum:
71e9f81768SJacopo Mondi      - imi,rdacm20
72e9f81768SJacopo Mondi      - imi,rdacm21
73e9f81768SJacopo Mondi
74e9f81768SJacopo Mondi  reg:
75e9f81768SJacopo Mondi    description: -|
76e9f81768SJacopo Mondi      I2C device addresses, the first to be assigned to the serializer, the
77e9f81768SJacopo Mondi      following ones to be assigned to the remote devices.
78e9f81768SJacopo Mondi
79e9f81768SJacopo Mondi      For RDACM20 the second entry of the property is assigned to the
80e9f81768SJacopo Mondi      OV10635 image sensor and the optional third one to the embedded MCU.
81e9f81768SJacopo Mondi
82e9f81768SJacopo Mondi      For RDACM21 the second entry is assigned to the OV490 ISP and the optional
83e9f81768SJacopo Mondi      third one ignored.
84e9f81768SJacopo Mondi
85e9f81768SJacopo Mondi    minItems: 2
86e9f81768SJacopo Mondi    maxItems: 3
87e9f81768SJacopo Mondi
88e9f81768SJacopo Mondi  port:
89*066a94e2SRob Herring    $ref: /schemas/graph.yaml#/properties/port
90*066a94e2SRob Herring    description:
91*066a94e2SRob Herring      Connection to the remote GMSL endpoint.
92e9f81768SJacopo Mondi
93e9f81768SJacopo Mondirequired:
94e9f81768SJacopo Mondi  - compatible
95e9f81768SJacopo Mondi  - reg
96e9f81768SJacopo Mondi  - port
97e9f81768SJacopo Mondi
985be478f9SRob HerringadditionalProperties: false
995be478f9SRob Herring
100e9f81768SJacopo Mondiexamples:
101e9f81768SJacopo Mondi  - |
102e9f81768SJacopo Mondi    i2c@e66d8000 {
103e9f81768SJacopo Mondi      #address-cells = <1>;
104e9f81768SJacopo Mondi      #size-cells = <0>;
105e9f81768SJacopo Mondi
106e9f81768SJacopo Mondi      reg = <0 0xe66d8000>;
107e9f81768SJacopo Mondi
108e9f81768SJacopo Mondi      camera@31 {
109e9f81768SJacopo Mondi        compatible = "imi,rdacm20";
110e9f81768SJacopo Mondi        reg = <0x31>, <0x41>, <0x51>;
111e9f81768SJacopo Mondi
112e9f81768SJacopo Mondi        port {
113e9f81768SJacopo Mondi          rdacm20_out0: endpoint {
114e9f81768SJacopo Mondi            remote-endpoint = <&max9286_in0>;
115e9f81768SJacopo Mondi          };
116e9f81768SJacopo Mondi        };
117e9f81768SJacopo Mondi      };
118e9f81768SJacopo Mondi    };
119e9f81768SJacopo Mondi
120e9f81768SJacopo Mondi  - |
121e9f81768SJacopo Mondi    i2c@e66d8000 {
122e9f81768SJacopo Mondi      #address-cells = <1>;
123e9f81768SJacopo Mondi      #size-cells = <0>;
124e9f81768SJacopo Mondi
125e9f81768SJacopo Mondi      reg = <0 0xe66d8000>;
126e9f81768SJacopo Mondi
127e9f81768SJacopo Mondi      camera@31 {
128e9f81768SJacopo Mondi        compatible = "imi,rdacm21";
129e9f81768SJacopo Mondi        reg = <0x31>, <0x41>;
130e9f81768SJacopo Mondi
131e9f81768SJacopo Mondi        port {
132e9f81768SJacopo Mondi          rdacm21_out0: endpoint {
133e9f81768SJacopo Mondi            remote-endpoint = <&max9286_in0>;
134e9f81768SJacopo Mondi          };
135e9f81768SJacopo Mondi        };
136e9f81768SJacopo Mondi      };
137e9f81768SJacopo Mondi    };
138