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: 89e9f81768SJacopo Mondi type: object 90e9f81768SJacopo Mondi additionalProperties: false 91e9f81768SJacopo Mondi description: -| 92e9f81768SJacopo Mondi Connection to the remote GMSL endpoint are modelled using the OF graph 93e9f81768SJacopo Mondi bindings in accordance with the video interface bindings defined in 94e9f81768SJacopo Mondi Documentation/devicetree/bindings/media/video-interfaces.txt. 95e9f81768SJacopo Mondi 96e9f81768SJacopo Mondi The device node contains a single "port" child node with a single 97e9f81768SJacopo Mondi "endpoint" sub-device. 98e9f81768SJacopo Mondi 99e9f81768SJacopo Mondi properties: 100e9f81768SJacopo Mondi endpoint: 101e9f81768SJacopo Mondi type: object 102e9f81768SJacopo Mondi additionalProperties: false 103e9f81768SJacopo Mondi 104e9f81768SJacopo Mondi properties: 105e9f81768SJacopo Mondi remote-endpoint: 106e9f81768SJacopo Mondi description: -| 107e9f81768SJacopo Mondi phandle to the remote GMSL endpoint sub-node in the remote node 108e9f81768SJacopo Mondi port. 109e9f81768SJacopo Mondi maxItems: 1 110e9f81768SJacopo Mondi 111e9f81768SJacopo Mondi required: 112e9f81768SJacopo Mondi - remote-endpoint 113e9f81768SJacopo Mondi 114e9f81768SJacopo Mondi required: 115e9f81768SJacopo Mondi - endpoint 116e9f81768SJacopo Mondi 117e9f81768SJacopo Mondirequired: 118e9f81768SJacopo Mondi - compatible 119e9f81768SJacopo Mondi - reg 120e9f81768SJacopo Mondi - port 121e9f81768SJacopo Mondi 1225be478f9SRob HerringadditionalProperties: false 1235be478f9SRob Herring 124e9f81768SJacopo Mondiexamples: 125e9f81768SJacopo Mondi - | 126e9f81768SJacopo Mondi i2c@e66d8000 { 127e9f81768SJacopo Mondi #address-cells = <1>; 128e9f81768SJacopo Mondi #size-cells = <0>; 129e9f81768SJacopo Mondi 130e9f81768SJacopo Mondi reg = <0 0xe66d8000>; 131e9f81768SJacopo Mondi 132e9f81768SJacopo Mondi camera@31 { 133e9f81768SJacopo Mondi compatible = "imi,rdacm20"; 134e9f81768SJacopo Mondi reg = <0x31>, <0x41>, <0x51>; 135e9f81768SJacopo Mondi 136e9f81768SJacopo Mondi port { 137e9f81768SJacopo Mondi rdacm20_out0: endpoint { 138e9f81768SJacopo Mondi remote-endpoint = <&max9286_in0>; 139e9f81768SJacopo Mondi }; 140e9f81768SJacopo Mondi }; 141e9f81768SJacopo Mondi }; 142e9f81768SJacopo Mondi }; 143e9f81768SJacopo Mondi 144e9f81768SJacopo Mondi - | 145e9f81768SJacopo Mondi i2c@e66d8000 { 146e9f81768SJacopo Mondi #address-cells = <1>; 147e9f81768SJacopo Mondi #size-cells = <0>; 148e9f81768SJacopo Mondi 149e9f81768SJacopo Mondi reg = <0 0xe66d8000>; 150e9f81768SJacopo Mondi 151e9f81768SJacopo Mondi camera@31 { 152e9f81768SJacopo Mondi compatible = "imi,rdacm21"; 153e9f81768SJacopo Mondi reg = <0x31>, <0x41>; 154e9f81768SJacopo Mondi 155e9f81768SJacopo Mondi port { 156e9f81768SJacopo Mondi rdacm21_out0: endpoint { 157e9f81768SJacopo Mondi remote-endpoint = <&max9286_in0>; 158e9f81768SJacopo Mondi }; 159e9f81768SJacopo Mondi }; 160e9f81768SJacopo Mondi }; 161e9f81768SJacopo Mondi }; 162