1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2%YAML 1.2 3--- 4$id: http://devicetree.org/schemas/media/i2c/ti,ds90ub960.yaml# 5$schema: http://devicetree.org/meta-schemas/core.yaml# 6 7title: Texas Instruments DS90UB9XX Family FPD-Link Deserializer Hubs 8 9maintainers: 10 - Tomi Valkeinen <tomi.valkeinen@ideasonboard.com> 11 12description: 13 The TI DS90UB9XX devices are FPD-Link video deserializers with I2C and GPIO 14 forwarding. 15 16allOf: 17 - $ref: /schemas/i2c/i2c-atr.yaml# 18 19properties: 20 compatible: 21 enum: 22 - ti,ds90ub960-q1 23 - ti,ds90ub9702-q1 24 25 reg: 26 maxItems: 1 27 28 clocks: 29 maxItems: 1 30 description: 31 Reference clock connected to the REFCLK pin. 32 33 clock-names: 34 items: 35 - const: refclk 36 37 powerdown-gpios: 38 maxItems: 1 39 description: 40 Specifier for the GPIO connected to the PDB pin. 41 42 i2c-alias-pool: 43 minItems: 1 44 maxItems: 32 45 46 links: 47 type: object 48 additionalProperties: false 49 50 properties: 51 '#address-cells': 52 const: 1 53 54 '#size-cells': 55 const: 0 56 57 ti,manual-strobe: 58 type: boolean 59 description: 60 Enable manual strobe position and EQ level 61 62 patternProperties: 63 '^link@[0-3]$': 64 type: object 65 additionalProperties: false 66 properties: 67 reg: 68 description: The link number 69 maxItems: 1 70 71 '#address-cells': 72 const: 1 73 74 '#size-cells': 75 const: 0 76 77 i2c-alias: 78 $ref: /schemas/types.yaml#/definitions/uint32 79 description: 80 The I2C address used for the serializer. Transactions to this 81 address on the I2C bus where the deserializer resides are 82 forwarded to the serializer. 83 84 ti,rx-mode: 85 $ref: /schemas/types.yaml#/definitions/uint32 86 enum: 87 - 0 # RAW10 88 - 1 # RAW12 HF 89 - 2 # RAW12 LF 90 - 3 # CSI2 SYNC 91 - 4 # CSI2 NON-SYNC 92 description: 93 FPD-Link Input Mode. This should reflect the hardware and the 94 default mode of the connected device. 95 96 ti,cdr-mode: 97 $ref: /schemas/types.yaml#/definitions/uint32 98 enum: 99 - 0 # FPD-Link III 100 - 1 # FPD-Link IV 101 description: 102 FPD-Link CDR Mode. This should reflect the hardware and the 103 default mode of the connected device. 104 105 ti,strobe-pos: 106 $ref: /schemas/types.yaml#/definitions/int32 107 minimum: -13 108 maximum: 13 109 description: Manual strobe position 110 111 ti,eq-level: 112 $ref: /schemas/types.yaml#/definitions/uint32 113 maximum: 14 114 description: Manual EQ level 115 116 patternProperties: 117 '^serializer(@[0-9a-f]+)*$': 118 type: object 119 description: FPD-Link Serializer node 120 121 required: 122 - reg 123 - i2c-alias 124 - ti,rx-mode 125 126 ports: 127 $ref: /schemas/graph.yaml#/properties/ports 128 129 properties: 130 port@0: 131 $ref: /schemas/graph.yaml#/$defs/port-base 132 unevaluatedProperties: false 133 description: FPD-Link input 0 134 135 properties: 136 endpoint: 137 $ref: /schemas/media/video-interfaces.yaml# 138 unevaluatedProperties: false 139 description: 140 Endpoint for FPD-Link port. If the RX mode for this port is RAW, 141 hsync-active and vsync-active must be defined. 142 143 port@1: 144 $ref: /schemas/graph.yaml#/$defs/port-base 145 unevaluatedProperties: false 146 description: FPD-Link input 1 147 148 properties: 149 endpoint: 150 $ref: /schemas/media/video-interfaces.yaml# 151 unevaluatedProperties: false 152 description: 153 Endpoint for FPD-Link port. If the RX mode for this port is RAW, 154 hsync-active and vsync-active must be defined. 155 156 port@2: 157 $ref: /schemas/graph.yaml#/$defs/port-base 158 unevaluatedProperties: false 159 description: FPD-Link input 2 160 161 properties: 162 endpoint: 163 $ref: /schemas/media/video-interfaces.yaml# 164 unevaluatedProperties: false 165 description: 166 Endpoint for FPD-Link port. If the RX mode for this port is RAW, 167 hsync-active and vsync-active must be defined. 168 169 port@3: 170 $ref: /schemas/graph.yaml#/$defs/port-base 171 unevaluatedProperties: false 172 description: FPD-Link input 3 173 174 properties: 175 endpoint: 176 $ref: /schemas/media/video-interfaces.yaml# 177 unevaluatedProperties: false 178 description: 179 Endpoint for FPD-Link port. If the RX mode for this port is RAW, 180 hsync-active and vsync-active must be defined. 181 182 port@4: 183 $ref: /schemas/graph.yaml#/$defs/port-base 184 unevaluatedProperties: false 185 description: CSI-2 Output 0 186 187 properties: 188 endpoint: 189 $ref: /schemas/media/video-interfaces.yaml# 190 unevaluatedProperties: false 191 192 properties: 193 data-lanes: 194 minItems: 1 195 maxItems: 4 196 link-frequencies: 197 maxItems: 1 198 199 required: 200 - data-lanes 201 - link-frequencies 202 203 port@5: 204 $ref: /schemas/graph.yaml#/$defs/port-base 205 unevaluatedProperties: false 206 description: CSI-2 Output 1 207 208 properties: 209 endpoint: 210 $ref: /schemas/media/video-interfaces.yaml# 211 unevaluatedProperties: false 212 213 properties: 214 data-lanes: 215 minItems: 1 216 maxItems: 4 217 link-frequencies: 218 maxItems: 1 219 220 required: 221 - data-lanes 222 - link-frequencies 223 224 required: 225 - port@0 226 - port@1 227 - port@2 228 - port@3 229 - port@4 230 - port@5 231 232required: 233 - compatible 234 - reg 235 - clocks 236 - clock-names 237 - ports 238 239unevaluatedProperties: false 240 241examples: 242 - | 243 #include <dt-bindings/gpio/gpio.h> 244 245 i2c { 246 clock-frequency = <400000>; 247 #address-cells = <1>; 248 #size-cells = <0>; 249 250 deser@3d { 251 compatible = "ti,ds90ub960-q1"; 252 reg = <0x3d>; 253 254 clock-names = "refclk"; 255 clocks = <&fixed_clock>; 256 257 powerdown-gpios = <&pca9555 7 GPIO_ACTIVE_LOW>; 258 259 i2c-alias-pool = <0x4a 0x4b 0x4c 0x4d 0x4e 0x4f>; 260 261 ports { 262 #address-cells = <1>; 263 #size-cells = <0>; 264 265 /* Port 0, Camera 0 */ 266 port@0 { 267 reg = <0>; 268 269 ub960_fpd3_1_in: endpoint { 270 remote-endpoint = <&ub953_1_out>; 271 }; 272 }; 273 274 /* Port 1, Camera 1 */ 275 port@1 { 276 reg = <1>; 277 278 ub960_fpd3_2_in: endpoint { 279 remote-endpoint = <&ub913_2_out>; 280 hsync-active = <0>; 281 vsync-active = <1>; 282 }; 283 }; 284 285 /* Port 2, unconnected */ 286 port@2 { 287 reg = <2>; 288 }; 289 290 /* Port 3, unconnected */ 291 port@3 { 292 reg = <3>; 293 }; 294 295 /* Port 4, CSI-2 TX */ 296 port@4 { 297 reg = <4>; 298 ds90ub960_0_csi_out: endpoint { 299 data-lanes = <1 2 3 4>; 300 link-frequencies = /bits/ 64 <800000000>; 301 remote-endpoint = <&csi2_phy0>; 302 }; 303 }; 304 305 /* Port 5, unconnected */ 306 port@5 { 307 reg = <5>; 308 }; 309 }; 310 311 links { 312 #address-cells = <1>; 313 #size-cells = <0>; 314 315 /* Link 0 has DS90UB953 serializer and IMX274 sensor */ 316 317 link@0 { 318 #address-cells = <1>; 319 #size-cells = <0>; 320 321 reg = <0>; 322 i2c-alias = <0x44>; 323 324 ti,rx-mode = <3>; 325 326 serializer1: serializer@30 { 327 compatible = "ti,ds90ub953-q1"; 328 reg = <0x30>; 329 330 gpio-controller; 331 #gpio-cells = <2>; 332 333 #clock-cells = <0>; 334 335 ports { 336 #address-cells = <1>; 337 #size-cells = <0>; 338 339 port@0 { 340 reg = <0>; 341 ub953_1_in: endpoint { 342 data-lanes = <1 2 3 4>; 343 remote-endpoint = <&sensor_1_out>; 344 }; 345 }; 346 347 port@1 { 348 reg = <1>; 349 350 ub953_1_out: endpoint { 351 remote-endpoint = <&ub960_fpd3_1_in>; 352 }; 353 }; 354 }; 355 356 i2c { 357 #address-cells = <1>; 358 #size-cells = <0>; 359 360 sensor@1a { 361 compatible = "sony,imx274"; 362 reg = <0x1a>; 363 364 reset-gpios = <&serializer1 0 GPIO_ACTIVE_LOW>; 365 366 port { 367 sensor_1_out: endpoint { 368 remote-endpoint = <&ub953_1_in>; 369 }; 370 }; 371 }; 372 }; 373 }; 374 }; /* End of link@0 */ 375 376 /* Link 1 has DS90UB913 serializer and MT9V111 sensor */ 377 378 link@1 { 379 reg = <1>; 380 i2c-alias = <0x45>; 381 382 ti,rx-mode = <0>; 383 384 serializer2: serializer { 385 compatible = "ti,ds90ub913a-q1"; 386 387 gpio-controller; 388 #gpio-cells = <2>; 389 390 clocks = <&clk_cam_48M>; 391 clock-names = "clkin"; 392 393 #clock-cells = <0>; 394 395 ports { 396 #address-cells = <1>; 397 #size-cells = <0>; 398 399 port@0 { 400 reg = <0>; 401 ub913_2_in: endpoint { 402 remote-endpoint = <&sensor_2_out>; 403 pclk-sample = <1>; 404 }; 405 }; 406 407 port@1 { 408 reg = <1>; 409 410 ub913_2_out: endpoint { 411 remote-endpoint = <&ub960_fpd3_2_in>; 412 }; 413 }; 414 }; 415 416 i2c { 417 #address-cells = <1>; 418 #size-cells = <0>; 419 420 sensor@48 { 421 compatible = "aptina,mt9v111"; 422 reg = <0x48>; 423 424 clocks = <&serializer2>; 425 426 port { 427 sensor_2_out: endpoint { 428 remote-endpoint = <&ub913_2_in>; 429 }; 430 }; 431 }; 432 }; 433 }; 434 }; /* End of link@1 */ 435 }; 436 }; 437 }; 438... 439