| # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) |
| # Copyright (C) 2019 Renesas Electronics Corp. |
| %YAML 1.2 |
| --- |
| $id: http://devicetree.org/schemas/media/i2c/maxim,max9286.yaml# |
| $schema: http://devicetree.org/meta-schemas/core.yaml# |
| |
| title: Maxim Integrated Quad GMSL Deserializer |
| |
| maintainers: |
| - Jacopo Mondi <jacopo+renesas@jmondi.org> |
| - Kieran Bingham <kieran.bingham+renesas@ideasonboard.com> |
| - Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com> |
| - Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se> |
| |
| description: | |
| The MAX9286 deserializer receives video data on up to 4 Gigabit Multimedia |
| Serial Links (GMSL) and outputs them on a CSI-2 D-PHY port using up to 4 data |
| lanes. |
| |
| In addition to video data, the GMSL links carry a bidirectional control |
| channel that encapsulates I2C messages. The MAX9286 forwards all I2C traffic |
| not addressed to itself to the other side of the links, where a GMSL |
| serializer will output it on a local I2C bus. In the other direction all I2C |
| traffic received over GMSL by the MAX9286 is output on the local I2C bus. |
| |
| properties: |
| '#address-cells': |
| const: 1 |
| |
| '#size-cells': |
| const: 0 |
| |
| compatible: |
| const: maxim,max9286 |
| |
| reg: |
| description: I2C device address |
| maxItems: 1 |
| |
| poc-supply: |
| description: Regulator providing Power over Coax to the cameras |
| |
| enable-gpios: |
| description: GPIO connected to the \#PWDN pin with inverted polarity |
| maxItems: 1 |
| |
| gpio-controller: true |
| |
| '#gpio-cells': |
| const: 2 |
| |
| ports: |
| type: object |
| description: | |
| The connections to the MAX9286 GMSL and its endpoint nodes are modelled |
| using the OF graph bindings in accordance with the video interface |
| bindings defined in |
| Documentation/devicetree/bindings/media/video-interfaces.txt. |
| |
| The following table lists the port number corresponding to each device |
| port. |
| |
| Port Description |
| ---------------------------------------- |
| Port 0 GMSL Input 0 |
| Port 1 GMSL Input 1 |
| Port 2 GMSL Input 2 |
| Port 3 GMSL Input 3 |
| Port 4 CSI-2 Output |
| |
| properties: |
| '#address-cells': |
| const: 1 |
| |
| '#size-cells': |
| const: 0 |
| |
| port@[0-3]: |
| type: object |
| properties: |
| reg: |
| enum: [ 0, 1, 2, 3 ] |
| |
| endpoint: |
| type: object |
| |
| properties: |
| remote-endpoint: |
| description: | |
| phandle to the remote GMSL source endpoint subnode in the |
| remote node port. |
| |
| required: |
| - remote-endpoint |
| |
| required: |
| - reg |
| - endpoint |
| |
| additionalProperties: false |
| |
| port@4: |
| type: object |
| properties: |
| reg: |
| const: 4 |
| |
| endpoint: |
| type: object |
| |
| properties: |
| remote-endpoint: |
| description: phandle to the remote CSI-2 sink endpoint. |
| |
| data-lanes: |
| description: array of physical CSI-2 data lane indexes. |
| |
| required: |
| - remote-endpoint |
| - data-lanes |
| |
| required: |
| - reg |
| - endpoint |
| |
| additionalProperties: false |
| |
| required: |
| - port@4 |
| |
| i2c-mux: |
| type: object |
| description: | |
| Each GMSL link is modelled as a child bus of an i2c bus |
| multiplexer/switch, in accordance with bindings described in |
| Documentation/devicetree/bindings/i2c/i2c-mux.txt. |
| |
| properties: |
| '#address-cells': |
| const: 1 |
| |
| '#size-cells': |
| const: 0 |
| |
| patternProperties: |
| "^i2c@[0-3]$": |
| type: object |
| description: | |
| Child node of the i2c bus multiplexer which represents a GMSL link. |
| Each serializer device on the GMSL link remote end is represented with |
| an i2c-mux child node. The MAX9286 chip supports up to 4 GMSL |
| channels. |
| |
| properties: |
| '#address-cells': |
| const: 1 |
| |
| '#size-cells': |
| const: 0 |
| |
| reg: |
| description: The index of the GMSL channel. |
| maxItems: 1 |
| |
| patternProperties: |
| "^camera@[a-f0-9]+$": |
| type: object |
| description: | |
| The remote camera device, composed by a GMSL serializer and a |
| connected video source. |
| |
| properties: |
| compatible: |
| description: The remote device compatible string. |
| |
| reg: |
| minItems: 2 |
| maxItems: 3 |
| description: | |
| The I2C addresses to be assigned to the remote devices through |
| address reprogramming. The number of entries depends on the |
| requirements of the currently connected remote device. |
| |
| port: |
| type: object |
| |
| properties: |
| endpoint: |
| type: object |
| |
| properties: |
| remote-endpoint: |
| description: phandle to the MAX9286 sink endpoint. |
| |
| required: |
| - remote-endpoint |
| |
| additionalProperties: false |
| |
| required: |
| - endpoint |
| |
| additionalProperties: false |
| |
| required: |
| - compatible |
| - reg |
| - port |
| |
| additionalProperties: false |
| |
| additionalProperties: false |
| |
| additionalProperties: false |
| |
| required: |
| - compatible |
| - reg |
| - ports |
| - i2c-mux |
| - gpio-controller |
| |
| additionalProperties: false |
| |
| examples: |
| - | |
| #include <dt-bindings/gpio/gpio.h> |
| |
| i2c@e66d8000 { |
| #address-cells = <1>; |
| #size-cells = <0>; |
| |
| reg = <0 0xe66d8000>; |
| |
| gmsl-deserializer@2c { |
| compatible = "maxim,max9286"; |
| reg = <0x2c>; |
| poc-supply = <&camera_poc_12v>; |
| enable-gpios = <&gpio 13 GPIO_ACTIVE_HIGH>; |
| |
| gpio-controller; |
| #gpio-cells = <2>; |
| |
| ports { |
| #address-cells = <1>; |
| #size-cells = <0>; |
| |
| port@0 { |
| reg = <0>; |
| |
| max9286_in0: endpoint { |
| remote-endpoint = <&rdacm20_out0>; |
| }; |
| }; |
| |
| port@1 { |
| reg = <1>; |
| |
| max9286_in1: endpoint { |
| remote-endpoint = <&rdacm20_out1>; |
| }; |
| }; |
| |
| port@2 { |
| reg = <2>; |
| |
| max9286_in2: endpoint { |
| remote-endpoint = <&rdacm20_out2>; |
| }; |
| }; |
| |
| port@3 { |
| reg = <3>; |
| |
| max9286_in3: endpoint { |
| remote-endpoint = <&rdacm20_out3>; |
| }; |
| }; |
| |
| port@4 { |
| reg = <4>; |
| |
| max9286_out: endpoint { |
| data-lanes = <1 2 3 4>; |
| remote-endpoint = <&csi40_in>; |
| }; |
| }; |
| }; |
| |
| i2c-mux { |
| #address-cells = <1>; |
| #size-cells = <0>; |
| |
| i2c@0 { |
| #address-cells = <1>; |
| #size-cells = <0>; |
| reg = <0>; |
| |
| camera@51 { |
| compatible = "imi,rdacm20"; |
| reg = <0x51>, <0x61>; |
| |
| port { |
| rdacm20_out0: endpoint { |
| remote-endpoint = <&max9286_in0>; |
| }; |
| }; |
| |
| }; |
| }; |
| |
| i2c@1 { |
| #address-cells = <1>; |
| #size-cells = <0>; |
| reg = <1>; |
| |
| camera@52 { |
| compatible = "imi,rdacm20"; |
| reg = <0x52>, <0x62>; |
| |
| port { |
| rdacm20_out1: endpoint { |
| remote-endpoint = <&max9286_in1>; |
| }; |
| }; |
| }; |
| }; |
| |
| i2c@2 { |
| #address-cells = <1>; |
| #size-cells = <0>; |
| reg = <2>; |
| |
| camera@53 { |
| compatible = "imi,rdacm20"; |
| reg = <0x53>, <0x63>; |
| |
| port { |
| rdacm20_out2: endpoint { |
| remote-endpoint = <&max9286_in2>; |
| }; |
| }; |
| }; |
| }; |
| |
| i2c@3 { |
| #address-cells = <1>; |
| #size-cells = <0>; |
| reg = <3>; |
| |
| camera@54 { |
| compatible = "imi,rdacm20"; |
| reg = <0x54>, <0x64>; |
| |
| port { |
| rdacm20_out3: endpoint { |
| remote-endpoint = <&max9286_in3>; |
| }; |
| }; |
| }; |
| }; |
| }; |
| }; |
| }; |