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 maxim,reverse-channel-microvolt: 54 minimum: 30000 55 maximum: 200000 56 default: 170000 57 description: | 58 Initial amplitude of the reverse control channel, in micro volts. 59 60 The initial amplitude shall be adjusted to a value compatible with the 61 configuration of the connected remote serializer. 62 63 Some camera modules (for example RDACM20) include an on-board MCU that 64 pre-programs the embedded serializer with power supply noise immunity 65 (high-threshold) enabled. A typical value of the deserializer's reverse 66 channel amplitude to communicate with pre-programmed serializers is 67 170000 micro volts. 68 69 A typical value for the reverse channel amplitude to communicate with 70 a remote serializer whose high-threshold noise immunity is not enabled 71 is 100000 micro volts 72 73 ports: 74 $ref: /schemas/graph.yaml#/properties/ports 75 76 properties: 77 port@0: 78 $ref: /schemas/graph.yaml#/properties/port 79 description: GMSL Input 0 80 81 port@1: 82 $ref: /schemas/graph.yaml#/properties/port 83 description: GMSL Input 1 84 85 port@2: 86 $ref: /schemas/graph.yaml#/properties/port 87 description: GMSL Input 2 88 89 port@3: 90 $ref: /schemas/graph.yaml#/properties/port 91 description: GMSL Input 3 92 93 port@4: 94 $ref: /schemas/graph.yaml#/$defs/port-base 95 unevaluatedProperties: false 96 description: CSI-2 Output 97 98 properties: 99 endpoint: 100 $ref: /schemas/media/video-interfaces.yaml# 101 unevaluatedProperties: false 102 103 properties: 104 data-lanes: true 105 106 required: 107 - data-lanes 108 109 required: 110 - port@4 111 112 i2c-mux: 113 type: object 114 $ref: /schemas/i2c/i2c-mux.yaml# 115 unevaluatedProperties: false 116 description: | 117 Each GMSL link is modelled as a child bus of an i2c bus multiplexer/switch. 118 119 patternProperties: 120 "^i2c@[0-3]$": 121 type: object 122 description: | 123 Child node of the i2c bus multiplexer which represents a GMSL link. 124 Each serializer device on the GMSL link remote end is represented with 125 an i2c-mux child node. The MAX9286 chip supports up to 4 GMSL 126 channels. 127 128 properties: 129 reg: 130 description: The index of the GMSL channel. 131 maxItems: 1 132 133 patternProperties: 134 "^camera@[a-f0-9]+$": 135 type: object 136 description: | 137 The remote camera device, composed by a GMSL serializer and a 138 connected video source. 139 140 properties: 141 compatible: 142 description: The remote device compatible string. 143 144 reg: 145 minItems: 2 146 maxItems: 3 147 description: | 148 The I2C addresses to be assigned to the remote devices through 149 address reprogramming. The number of entries depends on the 150 requirements of the currently connected remote device. 151 152 port: 153 $ref: /schemas/graph.yaml#/properties/port 154 description: Connection to the MAX9286 sink. 155 156 required: 157 - compatible 158 - reg 159 - port 160 161 additionalProperties: false 162 163required: 164 - compatible 165 - reg 166 - ports 167 - i2c-mux 168 - gpio-controller 169 170additionalProperties: false 171 172examples: 173 - | 174 #include <dt-bindings/gpio/gpio.h> 175 176 i2c@e66d8000 { 177 #address-cells = <1>; 178 #size-cells = <0>; 179 180 reg = <0 0xe66d8000>; 181 182 gmsl-deserializer@2c { 183 compatible = "maxim,max9286"; 184 reg = <0x2c>; 185 poc-supply = <&camera_poc_12v>; 186 enable-gpios = <&gpio 13 GPIO_ACTIVE_HIGH>; 187 188 gpio-controller; 189 #gpio-cells = <2>; 190 191 maxim,reverse-channel-microvolt = <170000>; 192 193 ports { 194 #address-cells = <1>; 195 #size-cells = <0>; 196 197 port@0 { 198 reg = <0>; 199 200 max9286_in0: endpoint { 201 remote-endpoint = <&rdacm20_out0>; 202 }; 203 }; 204 205 port@1 { 206 reg = <1>; 207 208 max9286_in1: endpoint { 209 remote-endpoint = <&rdacm20_out1>; 210 }; 211 }; 212 213 port@2 { 214 reg = <2>; 215 216 max9286_in2: endpoint { 217 remote-endpoint = <&rdacm20_out2>; 218 }; 219 }; 220 221 port@3 { 222 reg = <3>; 223 224 max9286_in3: endpoint { 225 remote-endpoint = <&rdacm20_out3>; 226 }; 227 }; 228 229 port@4 { 230 reg = <4>; 231 232 max9286_out: endpoint { 233 data-lanes = <1 2 3 4>; 234 remote-endpoint = <&csi40_in>; 235 }; 236 }; 237 }; 238 239 i2c-mux { 240 #address-cells = <1>; 241 #size-cells = <0>; 242 243 i2c@0 { 244 #address-cells = <1>; 245 #size-cells = <0>; 246 reg = <0>; 247 248 camera@51 { 249 compatible = "imi,rdacm20"; 250 reg = <0x51>, <0x61>; 251 252 port { 253 rdacm20_out0: endpoint { 254 remote-endpoint = <&max9286_in0>; 255 }; 256 }; 257 258 }; 259 }; 260 261 i2c@1 { 262 #address-cells = <1>; 263 #size-cells = <0>; 264 reg = <1>; 265 266 camera@52 { 267 compatible = "imi,rdacm20"; 268 reg = <0x52>, <0x62>; 269 270 port { 271 rdacm20_out1: endpoint { 272 remote-endpoint = <&max9286_in1>; 273 }; 274 }; 275 }; 276 }; 277 278 i2c@2 { 279 #address-cells = <1>; 280 #size-cells = <0>; 281 reg = <2>; 282 283 camera@53 { 284 compatible = "imi,rdacm20"; 285 reg = <0x53>, <0x63>; 286 287 port { 288 rdacm20_out2: endpoint { 289 remote-endpoint = <&max9286_in2>; 290 }; 291 }; 292 }; 293 }; 294 295 i2c@3 { 296 #address-cells = <1>; 297 #size-cells = <0>; 298 reg = <3>; 299 300 camera@54 { 301 compatible = "imi,rdacm20"; 302 reg = <0x54>, <0x64>; 303 304 port { 305 rdacm20_out3: endpoint { 306 remote-endpoint = <&max9286_in3>; 307 }; 308 }; 309 }; 310 }; 311 }; 312 }; 313 }; 314