1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2# Copyright (C) 2019 Renesas Electronics Corp. 3%YAML 1.2 4--- 5$id: http://devicetree.org/schemas/media/i2c/maxim,max9286.yaml# 6$schema: http://devicetree.org/meta-schemas/core.yaml# 7 8title: Maxim Integrated Quad GMSL Deserializer 9 10maintainers: 11 - Jacopo Mondi <jacopo+renesas@jmondi.org> 12 - Kieran Bingham <kieran.bingham+renesas@ideasonboard.com> 13 - Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com> 14 - Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se> 15 16description: | 17 The MAX9286 deserializer receives video data on up to 4 Gigabit Multimedia 18 Serial Links (GMSL) and outputs them on a CSI-2 D-PHY port using up to 4 data 19 lanes. 20 21 In addition to video data, the GMSL links carry a bidirectional control 22 channel that encapsulates I2C messages. The MAX9286 forwards all I2C traffic 23 not addressed to itself to the other side of the links, where a GMSL 24 serializer will output it on a local I2C bus. In the other direction all I2C 25 traffic received over GMSL by the MAX9286 is output on the local I2C bus. 26 27properties: 28 '#address-cells': 29 const: 1 30 31 '#size-cells': 32 const: 0 33 34 compatible: 35 const: maxim,max9286 36 37 reg: 38 description: I2C device address 39 maxItems: 1 40 41 poc-supply: 42 description: Regulator providing Power over Coax to the cameras 43 44 enable-gpios: 45 description: GPIO connected to the \#PWDN pin with inverted polarity 46 maxItems: 1 47 48 gpio-controller: true 49 50 '#gpio-cells': 51 const: 2 52 53 ports: 54 $ref: /schemas/graph.yaml#/properties/ports 55 56 properties: 57 port@0: 58 $ref: /schemas/graph.yaml#/properties/port 59 description: GMSL Input 0 60 61 port@1: 62 $ref: /schemas/graph.yaml#/properties/port 63 description: GMSL Input 1 64 65 port@2: 66 $ref: /schemas/graph.yaml#/properties/port 67 description: GMSL Input 2 68 69 port@3: 70 $ref: /schemas/graph.yaml#/properties/port 71 description: GMSL Input 3 72 73 port@4: 74 $ref: /schemas/graph.yaml#/$defs/port-base 75 unevaluatedProperties: false 76 description: CSI-2 Output 77 78 properties: 79 endpoint: 80 $ref: /schemas/media/video-interfaces.yaml# 81 unevaluatedProperties: false 82 83 properties: 84 data-lanes: true 85 86 required: 87 - data-lanes 88 89 required: 90 - port@4 91 92 i2c-mux: 93 type: object 94 description: | 95 Each GMSL link is modelled as a child bus of an i2c bus 96 multiplexer/switch, in accordance with bindings described in 97 Documentation/devicetree/bindings/i2c/i2c-mux.txt. 98 99 properties: 100 '#address-cells': 101 const: 1 102 103 '#size-cells': 104 const: 0 105 106 patternProperties: 107 "^i2c@[0-3]$": 108 type: object 109 description: | 110 Child node of the i2c bus multiplexer which represents a GMSL link. 111 Each serializer device on the GMSL link remote end is represented with 112 an i2c-mux child node. The MAX9286 chip supports up to 4 GMSL 113 channels. 114 115 properties: 116 '#address-cells': 117 const: 1 118 119 '#size-cells': 120 const: 0 121 122 reg: 123 description: The index of the GMSL channel. 124 maxItems: 1 125 126 patternProperties: 127 "^camera@[a-f0-9]+$": 128 type: object 129 description: | 130 The remote camera device, composed by a GMSL serializer and a 131 connected video source. 132 133 properties: 134 compatible: 135 description: The remote device compatible string. 136 137 reg: 138 minItems: 2 139 maxItems: 3 140 description: | 141 The I2C addresses to be assigned to the remote devices through 142 address reprogramming. The number of entries depends on the 143 requirements of the currently connected remote device. 144 145 port: 146 $ref: /schemas/graph.yaml#/properties/port 147 description: Connection to the MAX9286 sink. 148 149 required: 150 - compatible 151 - reg 152 - port 153 154 additionalProperties: false 155 156 additionalProperties: false 157 158 additionalProperties: false 159 160required: 161 - compatible 162 - reg 163 - ports 164 - i2c-mux 165 - gpio-controller 166 167additionalProperties: false 168 169examples: 170 - | 171 #include <dt-bindings/gpio/gpio.h> 172 173 i2c@e66d8000 { 174 #address-cells = <1>; 175 #size-cells = <0>; 176 177 reg = <0 0xe66d8000>; 178 179 gmsl-deserializer@2c { 180 compatible = "maxim,max9286"; 181 reg = <0x2c>; 182 poc-supply = <&camera_poc_12v>; 183 enable-gpios = <&gpio 13 GPIO_ACTIVE_HIGH>; 184 185 gpio-controller; 186 #gpio-cells = <2>; 187 188 ports { 189 #address-cells = <1>; 190 #size-cells = <0>; 191 192 port@0 { 193 reg = <0>; 194 195 max9286_in0: endpoint { 196 remote-endpoint = <&rdacm20_out0>; 197 }; 198 }; 199 200 port@1 { 201 reg = <1>; 202 203 max9286_in1: endpoint { 204 remote-endpoint = <&rdacm20_out1>; 205 }; 206 }; 207 208 port@2 { 209 reg = <2>; 210 211 max9286_in2: endpoint { 212 remote-endpoint = <&rdacm20_out2>; 213 }; 214 }; 215 216 port@3 { 217 reg = <3>; 218 219 max9286_in3: endpoint { 220 remote-endpoint = <&rdacm20_out3>; 221 }; 222 }; 223 224 port@4 { 225 reg = <4>; 226 227 max9286_out: endpoint { 228 data-lanes = <1 2 3 4>; 229 remote-endpoint = <&csi40_in>; 230 }; 231 }; 232 }; 233 234 i2c-mux { 235 #address-cells = <1>; 236 #size-cells = <0>; 237 238 i2c@0 { 239 #address-cells = <1>; 240 #size-cells = <0>; 241 reg = <0>; 242 243 camera@51 { 244 compatible = "imi,rdacm20"; 245 reg = <0x51>, <0x61>; 246 247 port { 248 rdacm20_out0: endpoint { 249 remote-endpoint = <&max9286_in0>; 250 }; 251 }; 252 253 }; 254 }; 255 256 i2c@1 { 257 #address-cells = <1>; 258 #size-cells = <0>; 259 reg = <1>; 260 261 camera@52 { 262 compatible = "imi,rdacm20"; 263 reg = <0x52>, <0x62>; 264 265 port { 266 rdacm20_out1: endpoint { 267 remote-endpoint = <&max9286_in1>; 268 }; 269 }; 270 }; 271 }; 272 273 i2c@2 { 274 #address-cells = <1>; 275 #size-cells = <0>; 276 reg = <2>; 277 278 camera@53 { 279 compatible = "imi,rdacm20"; 280 reg = <0x53>, <0x63>; 281 282 port { 283 rdacm20_out2: endpoint { 284 remote-endpoint = <&max9286_in2>; 285 }; 286 }; 287 }; 288 }; 289 290 i2c@3 { 291 #address-cells = <1>; 292 #size-cells = <0>; 293 reg = <3>; 294 295 camera@54 { 296 compatible = "imi,rdacm20"; 297 reg = <0x54>, <0x64>; 298 299 port { 300 rdacm20_out3: endpoint { 301 remote-endpoint = <&max9286_in3>; 302 }; 303 }; 304 }; 305 }; 306 }; 307 }; 308 }; 309