On Sun, Mar 09, 2025 at 10:48:03AM +0200, Cosmin Tanislav wrote: > The MAX9296A deserializer converts single or dual serial inputs to MIPI > CSI-2 outputs. The GMSL2 links operate at a fixed rate of 3Gbps or 6Gbps > in the forward direction and 187.5Mbps in the reverse direction. > In GMSL1 mode, each serial link can be paired with 3.12Gbps or 1.5Gbps > GMSL1 serializers or operate up to 4.5Gbps with GMSL2 serializers with > GMSL1 backward compatibility. The MAX9296A supports mixed GMSL2 and > GMSL1 links. The serial inputs operate independently, allowing videos > with different timings and resolutions to be received on each input. > > MAX96716A supports both tunnel and pixel mode. > MAX96792A supports both tunnel and pixel mode, and has two GMSL3 links. > > Signed-off-by: Cosmin Tanislav <demonsingur@xxxxxxxxx> > --- > .../bindings/media/i2c/maxim,max9296a.yaml | 281 ++++++++++++++++++ > MAINTAINERS | 6 + > 2 files changed, 287 insertions(+) > create mode 100644 Documentation/devicetree/bindings/media/i2c/maxim,max9296a.yaml > > diff --git a/Documentation/devicetree/bindings/media/i2c/maxim,max9296a.yaml b/Documentation/devicetree/bindings/media/i2c/maxim,max9296a.yaml > new file mode 100644 > index 000000000000..97731549d161 > --- /dev/null > +++ b/Documentation/devicetree/bindings/media/i2c/maxim,max9296a.yaml > @@ -0,0 +1,281 @@ > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) > +# Copyright (C) 2024 Collabora Ltd. > +%YAML 1.2 > +--- > +$id: http://devicetree.org/schemas/media/i2c/maxim,max9296a.yaml# > +$schema: http://devicetree.org/meta-schemas/core.yaml# > + > +title: Maxim MAX9296A GMSL2 to CSI-2 Deserializer > + > +maintainers: > + - Cosmin Tanislav <cosmin.tanislav@xxxxxxxxxx> > + > +description: Needs '>' token as you have paragraphs. > + The MAX9296A deserializer converts single or dual serial inputs to > + MIPI CSI-2 outputs. The GMSL2 links operate at a fixed rate of 3Gbps > + or 6Gbps in the forward direction and 187.5Mbps in the reverse > + direction. In GMSL1 mode, each serial link can be paired with 3.12Gbps > + or 1.5Gbps GMSL1 serializers or operate up to 4.5Gbps with GMSL2 > + serializers with GMSL1 backward compatibility. The MAX9296A supports > + mixed GMSL2 and GMSL1 links. The serial inputs operate independently, > + allowing videos with different timings and resolutions to be received > + on each input. > + > + MAX96716A supports both tunnel and pixel mode. > + MAX96792A supports both tunnel and pixel mode, and has two GMSL3 links. > + > +properties: > + compatible: > + enum: > + - maxim,max9296a > + - maxim,max96716a > + - maxim,max96792a > + > + reg: > + maxItems: 1 > + > + powerdown-gpios: > + maxItems: 1 > + description: Specifier for the GPIO connected to the PWDNB pin. > + > + port0-poc-supply: > + description: Regulator providing Power over Coax for GMSL port 0 > + > + port1-poc-supply: > + description: Regulator providing Power over Coax for GMSL port 1 > + > + i2c-mux: > + $ref: /schemas/i2c/i2c-mux.yaml# > + unevaluatedProperties: false > + patternProperties: > + '^i2c@[0-1]$': > + $ref: /schemas/i2c/i2c-controller.yaml# > + unevaluatedProperties: false > + properties: > + reg: > + items: > + minimum: 0 > + maximum: 1 > + > + i2c-alias-pool: > + maxItems: 2 > + > + i2c-atr: > + type: object > + additionalProperties: false > + > + properties: > + '#address-cells': > + const: 1 > + > + '#size-cells': > + const: 0 > + > + patternProperties: > + '^i2c@[0-1]$': > + $ref: /schemas/i2c/i2c-controller.yaml# > + unevaluatedProperties: false > + properties: > + reg: > + items: > + minimum: 0 > + maximum: 1 > + > + ports: > + $ref: /schemas/graph.yaml#/properties/ports > + > + patternProperties: > + '^port@[0-1]$': > + $ref: /schemas/graph.yaml#/properties/port > + unevaluatedProperties: false > + description: GMSL Input > + properties: > + endpoint: > + $ref: /schemas/media/video-interfaces.yaml# What properties are you using from here? None actually because /schemas/graph.yaml#/properties/port won't allow any. > + unevaluatedProperties: false > + description: Endpoint for GMSL2-Link port. > + > + '^port@[2-3]$': > + $ref: /schemas/graph.yaml#/$defs/port-base > + unevaluatedProperties: false > + description: CSI-2 Output port > + properties: > + endpoint: > + $ref: /schemas/media/video-interfaces.yaml# > + unevaluatedProperties: false > + > + properties: > + data-lanes: > + minItems: 1 > + maxItems: 4 > + > + lane-polarities: > + minItems: 1 > + maxItems: 5 > + > + link-frequencies: > + maxItems: 1 > + > + required: > + - data-lanes > + > + anyOf: > + - required: > + - port@2 > + - required: > + - port@3 > + > +required: > + - compatible > + - reg > + - ports > + > +additionalProperties: false > + > +allOf: > + - $ref: /schemas/i2c/i2c-atr.yaml# > + > + - if: > + properties: > + compatible: > + contains: > + enum: > + - maxim,max9296a > + - maxim,max96792a > + then: > + not: > + required: [i2c-mux] > + > + - if: > + properties: > + compatible: > + contains: > + enum: > + - maxim,max96716a > + then: > + not: > + required: [i2c-atr] > + > +dependentRequired: > + i2c-atr: [i2c-alias-pool] > + i2c-alias-pool: [i2c-atr] > + > +examples: > + - | > + #include <dt-bindings/gpio/gpio.h> > + #include <dt-bindings/media/video-interfaces.h> > + > + i2c { > + #address-cells = <1>; > + #size-cells = <0>; > + > + deserializer@28 { > + compatible = "maxim,max9296a"; > + reg = <0x28>; > + powerdown-gpios = <&main_gpio0 37 GPIO_ACTIVE_LOW>; > + > + i2c-alias-pool = <0x40 0x41>; > + > + ports { > + #address-cells = <1>; > + #size-cells = <0>; > + > + port@0 { > + reg = <0>; > + des_gmsl_in_0: endpoint { > + remote-endpoint = <&ser_0_gmsl_out>; > + }; > + }; > + > + port@1 { > + reg = <1>; > + des_gmsl_in_1: endpoint { > + remote-endpoint = <&ser_1_gmsl_out>; > + }; > + }; > + > + port@2 { > + reg = <2>; > + des_csi_out: endpoint { > + data-lanes = <1 2 3 4>; > + link-frequencies = /bits/ 64 <400000000>; > + remote-endpoint = <&csi_in>; > + }; > + }; > + }; > + > + i2c-atr { > + #address-cells = <1>; > + #size-cells = <0>; > + > + i2c@0 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <0>; > + > + serializer@40 { > + compatible = "maxim,max96717"; > + reg = <0x40>; > + gpio-controller; > + #gpio-cells = <2>; > + #clock-cells = <0>; > + > + ports { > + #address-cells = <1>; > + #size-cells = <0>; > + > + port@0 { > + reg = <0>; > + ser_0_csi_in: endpoint { > + data-lanes = <1 2>; > + remote-endpoint = <&sensor_0_out>; > + }; > + }; > + > + port@1 { > + reg = <1>; > + ser_0_gmsl_out: endpoint { > + remote-endpoint = <&des_gmsl_in_0>; > + }; > + }; > + }; > + }; > + }; > + > + i2c@1 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <1>; > + > + serializer@40 { > + compatible = "maxim,max96717"; > + reg = <0x40>; > + gpio-controller; > + #gpio-cells = <2>; > + #clock-cells = <0>; > + > + ports { > + #address-cells = <1>; > + #size-cells = <0>; > + > + port@0 { > + reg = <0>; > + ser_1_csi_in: endpoint { > + data-lanes = <1 2>; > + remote-endpoint = <&sensor_1_out>; > + }; > + }; > + > + port@1 { > + reg = <1>; > + ser_1_gmsl_out: endpoint { > + remote-endpoint = <&des_gmsl_in_1>; > + }; > + }; > + }; > + }; > + }; > + }; > + }; > + }; > +... > diff --git a/MAINTAINERS b/MAINTAINERS > index abf3afc95fc9..c1e01668e81a 100644 > --- a/MAINTAINERS > +++ b/MAINTAINERS > @@ -14220,6 +14220,12 @@ S: Maintained > F: Documentation/devicetree/bindings/iio/proximity/maxbotix,mb1232.yaml > F: drivers/iio/proximity/mb1232.c > > +MAXIM GMSL2 SERIALIZERS AND DESERIALIZERS > +M: Cosmin Tanislav <cosmin.tanislav@xxxxxxxxxx> > +L: linux-media@xxxxxxxxxxxxxxx > +S: Maintained > +F: Documentation/devicetree/bindings/media/i2c/maxim,max9296a.yaml > + > MAXIM MAX11205 DRIVER > M: Ramona Bolboaca <ramona.bolboaca@xxxxxxxxxx> > L: linux-iio@xxxxxxxxxxxxxxx > -- > 2.48.1 >