118f12901SLaurent Pinchart# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 218f12901SLaurent Pinchart# Copyright (C) 2019 Renesas Electronics Corp. 318f12901SLaurent Pinchart%YAML 1.2 418f12901SLaurent Pinchart--- 518f12901SLaurent Pinchart$id: http://devicetree.org/schemas/media/i2c/maxim,max9286.yaml# 618f12901SLaurent Pinchart$schema: http://devicetree.org/meta-schemas/core.yaml# 718f12901SLaurent Pinchart 818f12901SLaurent Pincharttitle: Maxim Integrated Quad GMSL Deserializer 918f12901SLaurent Pinchart 1018f12901SLaurent Pinchartmaintainers: 1118f12901SLaurent Pinchart - Jacopo Mondi <jacopo+renesas@jmondi.org> 1218f12901SLaurent Pinchart - Kieran Bingham <kieran.bingham+renesas@ideasonboard.com> 1318f12901SLaurent Pinchart - Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com> 1418f12901SLaurent Pinchart - Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se> 1518f12901SLaurent Pinchart 1618f12901SLaurent Pinchartdescription: | 1718f12901SLaurent Pinchart The MAX9286 deserializer receives video data on up to 4 Gigabit Multimedia 1818f12901SLaurent Pinchart Serial Links (GMSL) and outputs them on a CSI-2 D-PHY port using up to 4 data 1918f12901SLaurent Pinchart lanes. 2018f12901SLaurent Pinchart 2118f12901SLaurent Pinchart In addition to video data, the GMSL links carry a bidirectional control 2218f12901SLaurent Pinchart channel that encapsulates I2C messages. The MAX9286 forwards all I2C traffic 2318f12901SLaurent Pinchart not addressed to itself to the other side of the links, where a GMSL 2418f12901SLaurent Pinchart serializer will output it on a local I2C bus. In the other direction all I2C 2518f12901SLaurent Pinchart traffic received over GMSL by the MAX9286 is output on the local I2C bus. 2618f12901SLaurent Pinchart 2718f12901SLaurent Pinchartproperties: 2818f12901SLaurent Pinchart '#address-cells': 2918f12901SLaurent Pinchart const: 1 3018f12901SLaurent Pinchart 3118f12901SLaurent Pinchart '#size-cells': 3218f12901SLaurent Pinchart const: 0 3318f12901SLaurent Pinchart 3418f12901SLaurent Pinchart compatible: 3518f12901SLaurent Pinchart const: maxim,max9286 3618f12901SLaurent Pinchart 3718f12901SLaurent Pinchart reg: 3818f12901SLaurent Pinchart description: I2C device address 3918f12901SLaurent Pinchart maxItems: 1 4018f12901SLaurent Pinchart 4118f12901SLaurent Pinchart poc-supply: 4218f12901SLaurent Pinchart description: Regulator providing Power over Coax to the cameras 4318f12901SLaurent Pinchart 4418f12901SLaurent Pinchart enable-gpios: 4518f12901SLaurent Pinchart description: GPIO connected to the \#PWDN pin with inverted polarity 4618f12901SLaurent Pinchart maxItems: 1 4718f12901SLaurent Pinchart 4818f12901SLaurent Pinchart gpio-controller: true 4918f12901SLaurent Pinchart 5018f12901SLaurent Pinchart '#gpio-cells': 5118f12901SLaurent Pinchart const: 2 5218f12901SLaurent Pinchart 53c00b7249SJacopo Mondi maxim,reverse-channel-microvolt: 54c00b7249SJacopo Mondi minimum: 30000 55c00b7249SJacopo Mondi maximum: 200000 56c00b7249SJacopo Mondi default: 170000 57c00b7249SJacopo Mondi description: | 58c00b7249SJacopo Mondi Initial amplitude of the reverse control channel, in micro volts. 59c00b7249SJacopo Mondi 60c00b7249SJacopo Mondi The initial amplitude shall be adjusted to a value compatible with the 61c00b7249SJacopo Mondi configuration of the connected remote serializer. 62c00b7249SJacopo Mondi 63c00b7249SJacopo Mondi Some camera modules (for example RDACM20) include an on-board MCU that 64c00b7249SJacopo Mondi pre-programs the embedded serializer with power supply noise immunity 65c00b7249SJacopo Mondi (high-threshold) enabled. A typical value of the deserializer's reverse 66c00b7249SJacopo Mondi channel amplitude to communicate with pre-programmed serializers is 67c00b7249SJacopo Mondi 170000 micro volts. 68c00b7249SJacopo Mondi 69c00b7249SJacopo Mondi A typical value for the reverse channel amplitude to communicate with 70c00b7249SJacopo Mondi a remote serializer whose high-threshold noise immunity is not enabled 71c00b7249SJacopo Mondi is 100000 micro volts 72c00b7249SJacopo Mondi 7318f12901SLaurent Pinchart ports: 74066a94e2SRob Herring $ref: /schemas/graph.yaml#/properties/ports 7518f12901SLaurent Pinchart 7618f12901SLaurent Pinchart properties: 77066a94e2SRob Herring port@0: 78066a94e2SRob Herring $ref: /schemas/graph.yaml#/properties/port 79066a94e2SRob Herring description: GMSL Input 0 8018f12901SLaurent Pinchart 81066a94e2SRob Herring port@1: 82066a94e2SRob Herring $ref: /schemas/graph.yaml#/properties/port 83066a94e2SRob Herring description: GMSL Input 1 8418f12901SLaurent Pinchart 85066a94e2SRob Herring port@2: 86066a94e2SRob Herring $ref: /schemas/graph.yaml#/properties/port 87066a94e2SRob Herring description: GMSL Input 2 8818f12901SLaurent Pinchart 89066a94e2SRob Herring port@3: 90066a94e2SRob Herring $ref: /schemas/graph.yaml#/properties/port 91066a94e2SRob Herring description: GMSL Input 3 9218f12901SLaurent Pinchart 9318f12901SLaurent Pinchart port@4: 94066a94e2SRob Herring $ref: /schemas/graph.yaml#/$defs/port-base 95066a94e2SRob Herring unevaluatedProperties: false 96066a94e2SRob Herring description: CSI-2 Output 9718f12901SLaurent Pinchart 98066a94e2SRob Herring properties: 9918f12901SLaurent Pinchart endpoint: 100066a94e2SRob Herring $ref: /schemas/media/video-interfaces.yaml# 101066a94e2SRob Herring unevaluatedProperties: false 10218f12901SLaurent Pinchart 10318f12901SLaurent Pinchart properties: 104066a94e2SRob Herring data-lanes: true 10518f12901SLaurent Pinchart 10618f12901SLaurent Pinchart required: 10718f12901SLaurent Pinchart - data-lanes 10818f12901SLaurent Pinchart 10918f12901SLaurent Pinchart required: 11018f12901SLaurent Pinchart - port@4 11118f12901SLaurent Pinchart 11218f12901SLaurent Pinchart i2c-mux: 11318f12901SLaurent Pinchart type: object 114f22107b9SRob Herring $ref: /schemas/i2c/i2c-mux.yaml# 115f22107b9SRob Herring unevaluatedProperties: false 11618f12901SLaurent Pinchart description: | 117f22107b9SRob Herring Each GMSL link is modelled as a child bus of an i2c bus multiplexer/switch. 11818f12901SLaurent Pinchart 11918f12901SLaurent Pinchart patternProperties: 12018f12901SLaurent Pinchart "^i2c@[0-3]$": 12118f12901SLaurent Pinchart type: object 12218f12901SLaurent Pinchart description: | 12318f12901SLaurent Pinchart Child node of the i2c bus multiplexer which represents a GMSL link. 12418f12901SLaurent Pinchart Each serializer device on the GMSL link remote end is represented with 12518f12901SLaurent Pinchart an i2c-mux child node. The MAX9286 chip supports up to 4 GMSL 12618f12901SLaurent Pinchart channels. 12718f12901SLaurent Pinchart 12818f12901SLaurent Pinchart properties: 12918f12901SLaurent Pinchart reg: 13018f12901SLaurent Pinchart description: The index of the GMSL channel. 13118f12901SLaurent Pinchart maxItems: 1 13218f12901SLaurent Pinchart 13318f12901SLaurent Pinchart patternProperties: 13418f12901SLaurent Pinchart "^camera@[a-f0-9]+$": 13518f12901SLaurent Pinchart type: object 13618f12901SLaurent Pinchart description: | 13718f12901SLaurent Pinchart The remote camera device, composed by a GMSL serializer and a 13818f12901SLaurent Pinchart connected video source. 13918f12901SLaurent Pinchart 14018f12901SLaurent Pinchart properties: 14118f12901SLaurent Pinchart compatible: 14218f12901SLaurent Pinchart description: The remote device compatible string. 14318f12901SLaurent Pinchart 14418f12901SLaurent Pinchart reg: 14518f12901SLaurent Pinchart minItems: 2 14618f12901SLaurent Pinchart maxItems: 3 14718f12901SLaurent Pinchart description: | 14818f12901SLaurent Pinchart The I2C addresses to be assigned to the remote devices through 14918f12901SLaurent Pinchart address reprogramming. The number of entries depends on the 15018f12901SLaurent Pinchart requirements of the currently connected remote device. 15118f12901SLaurent Pinchart 15218f12901SLaurent Pinchart port: 153066a94e2SRob Herring $ref: /schemas/graph.yaml#/properties/port 154066a94e2SRob Herring description: Connection to the MAX9286 sink. 15518f12901SLaurent Pinchart 15618f12901SLaurent Pinchart required: 15718f12901SLaurent Pinchart - compatible 15818f12901SLaurent Pinchart - reg 15918f12901SLaurent Pinchart - port 16018f12901SLaurent Pinchart 16118f12901SLaurent Pinchart additionalProperties: false 16218f12901SLaurent Pinchart 16318f12901SLaurent Pinchartrequired: 16418f12901SLaurent Pinchart - compatible 16518f12901SLaurent Pinchart - reg 16618f12901SLaurent Pinchart - ports 16718f12901SLaurent Pinchart - i2c-mux 16818f12901SLaurent Pinchart - gpio-controller 16918f12901SLaurent Pinchart 17018f12901SLaurent PinchartadditionalProperties: false 17118f12901SLaurent Pinchart 17218f12901SLaurent Pinchartexamples: 17318f12901SLaurent Pinchart - | 17418f12901SLaurent Pinchart #include <dt-bindings/gpio/gpio.h> 17518f12901SLaurent Pinchart 17618f12901SLaurent Pinchart i2c@e66d8000 { 17718f12901SLaurent Pinchart #address-cells = <1>; 17818f12901SLaurent Pinchart #size-cells = <0>; 17918f12901SLaurent Pinchart 18018f12901SLaurent Pinchart reg = <0 0xe66d8000>; 18118f12901SLaurent Pinchart 18218f12901SLaurent Pinchart gmsl-deserializer@2c { 18318f12901SLaurent Pinchart compatible = "maxim,max9286"; 18418f12901SLaurent Pinchart reg = <0x2c>; 18518f12901SLaurent Pinchart poc-supply = <&camera_poc_12v>; 18618f12901SLaurent Pinchart enable-gpios = <&gpio 13 GPIO_ACTIVE_HIGH>; 18718f12901SLaurent Pinchart 18818f12901SLaurent Pinchart gpio-controller; 18918f12901SLaurent Pinchart #gpio-cells = <2>; 19018f12901SLaurent Pinchart 191c00b7249SJacopo Mondi maxim,reverse-channel-microvolt = <170000>; 192c00b7249SJacopo Mondi 19318f12901SLaurent Pinchart ports { 19418f12901SLaurent Pinchart #address-cells = <1>; 19518f12901SLaurent Pinchart #size-cells = <0>; 19618f12901SLaurent Pinchart 19718f12901SLaurent Pinchart port@0 { 19818f12901SLaurent Pinchart reg = <0>; 19918f12901SLaurent Pinchart 20018f12901SLaurent Pinchart max9286_in0: endpoint { 20118f12901SLaurent Pinchart remote-endpoint = <&rdacm20_out0>; 20218f12901SLaurent Pinchart }; 20318f12901SLaurent Pinchart }; 20418f12901SLaurent Pinchart 20518f12901SLaurent Pinchart port@1 { 20618f12901SLaurent Pinchart reg = <1>; 20718f12901SLaurent Pinchart 20818f12901SLaurent Pinchart max9286_in1: endpoint { 20918f12901SLaurent Pinchart remote-endpoint = <&rdacm20_out1>; 21018f12901SLaurent Pinchart }; 21118f12901SLaurent Pinchart }; 21218f12901SLaurent Pinchart 21318f12901SLaurent Pinchart port@2 { 21418f12901SLaurent Pinchart reg = <2>; 21518f12901SLaurent Pinchart 21618f12901SLaurent Pinchart max9286_in2: endpoint { 21718f12901SLaurent Pinchart remote-endpoint = <&rdacm20_out2>; 21818f12901SLaurent Pinchart }; 21918f12901SLaurent Pinchart }; 22018f12901SLaurent Pinchart 22118f12901SLaurent Pinchart port@3 { 22218f12901SLaurent Pinchart reg = <3>; 22318f12901SLaurent Pinchart 22418f12901SLaurent Pinchart max9286_in3: endpoint { 22518f12901SLaurent Pinchart remote-endpoint = <&rdacm20_out3>; 22618f12901SLaurent Pinchart }; 22718f12901SLaurent Pinchart }; 22818f12901SLaurent Pinchart 22918f12901SLaurent Pinchart port@4 { 23018f12901SLaurent Pinchart reg = <4>; 23118f12901SLaurent Pinchart 23218f12901SLaurent Pinchart max9286_out: endpoint { 23318f12901SLaurent Pinchart data-lanes = <1 2 3 4>; 23418f12901SLaurent Pinchart remote-endpoint = <&csi40_in>; 23518f12901SLaurent Pinchart }; 23618f12901SLaurent Pinchart }; 23718f12901SLaurent Pinchart }; 23818f12901SLaurent Pinchart 23918f12901SLaurent Pinchart i2c-mux { 24018f12901SLaurent Pinchart #address-cells = <1>; 24118f12901SLaurent Pinchart #size-cells = <0>; 24218f12901SLaurent Pinchart 24318f12901SLaurent Pinchart i2c@0 { 24418f12901SLaurent Pinchart #address-cells = <1>; 24518f12901SLaurent Pinchart #size-cells = <0>; 24618f12901SLaurent Pinchart reg = <0>; 24718f12901SLaurent Pinchart 24818f12901SLaurent Pinchart camera@51 { 24918f12901SLaurent Pinchart compatible = "imi,rdacm20"; 25018f12901SLaurent Pinchart reg = <0x51>, <0x61>; 25118f12901SLaurent Pinchart 25218f12901SLaurent Pinchart port { 25318f12901SLaurent Pinchart rdacm20_out0: endpoint { 25418f12901SLaurent Pinchart remote-endpoint = <&max9286_in0>; 25518f12901SLaurent Pinchart }; 25618f12901SLaurent Pinchart }; 25718f12901SLaurent Pinchart 25818f12901SLaurent Pinchart }; 25918f12901SLaurent Pinchart }; 26018f12901SLaurent Pinchart 26118f12901SLaurent Pinchart i2c@1 { 26218f12901SLaurent Pinchart #address-cells = <1>; 26318f12901SLaurent Pinchart #size-cells = <0>; 26418f12901SLaurent Pinchart reg = <1>; 26518f12901SLaurent Pinchart 26618f12901SLaurent Pinchart camera@52 { 26718f12901SLaurent Pinchart compatible = "imi,rdacm20"; 26818f12901SLaurent Pinchart reg = <0x52>, <0x62>; 26918f12901SLaurent Pinchart 27018f12901SLaurent Pinchart port { 27118f12901SLaurent Pinchart rdacm20_out1: endpoint { 27218f12901SLaurent Pinchart remote-endpoint = <&max9286_in1>; 27318f12901SLaurent Pinchart }; 27418f12901SLaurent Pinchart }; 27518f12901SLaurent Pinchart }; 27618f12901SLaurent Pinchart }; 27718f12901SLaurent Pinchart 27818f12901SLaurent Pinchart i2c@2 { 27918f12901SLaurent Pinchart #address-cells = <1>; 28018f12901SLaurent Pinchart #size-cells = <0>; 28118f12901SLaurent Pinchart reg = <2>; 28218f12901SLaurent Pinchart 28318f12901SLaurent Pinchart camera@53 { 28418f12901SLaurent Pinchart compatible = "imi,rdacm20"; 28518f12901SLaurent Pinchart reg = <0x53>, <0x63>; 28618f12901SLaurent Pinchart 28718f12901SLaurent Pinchart port { 28818f12901SLaurent Pinchart rdacm20_out2: endpoint { 28918f12901SLaurent Pinchart remote-endpoint = <&max9286_in2>; 29018f12901SLaurent Pinchart }; 29118f12901SLaurent Pinchart }; 29218f12901SLaurent Pinchart }; 29318f12901SLaurent Pinchart }; 29418f12901SLaurent Pinchart 29518f12901SLaurent Pinchart i2c@3 { 29618f12901SLaurent Pinchart #address-cells = <1>; 29718f12901SLaurent Pinchart #size-cells = <0>; 29818f12901SLaurent Pinchart reg = <3>; 29918f12901SLaurent Pinchart 30018f12901SLaurent Pinchart camera@54 { 30118f12901SLaurent Pinchart compatible = "imi,rdacm20"; 30218f12901SLaurent Pinchart reg = <0x54>, <0x64>; 30318f12901SLaurent Pinchart 30418f12901SLaurent Pinchart port { 30518f12901SLaurent Pinchart rdacm20_out3: endpoint { 30618f12901SLaurent Pinchart remote-endpoint = <&max9286_in3>; 30718f12901SLaurent Pinchart }; 30818f12901SLaurent Pinchart }; 30918f12901SLaurent Pinchart }; 31018f12901SLaurent Pinchart }; 31118f12901SLaurent Pinchart }; 31218f12901SLaurent Pinchart }; 31318f12901SLaurent Pinchart }; 314