# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause %YAML 1.2 --- $id: http://devicetree.org/schemas/usb/onnn,nb7vpq904m.yaml# $schema: http://devicetree.org/meta-schemas/core.yaml# title: ON Semiconductor Type-C DisplayPort ALT Mode Linear Redriver maintainers: - Neil Armstrong properties: compatible: enum: - onnn,nb7vpq904m reg: maxItems: 1 vcc-supply: description: power supply (1.8V) enable-gpios: true orientation-switch: true retimer-switch: true ports: $ref: /schemas/graph.yaml#/properties/ports properties: port@0: $ref: /schemas/graph.yaml#/properties/port description: Super Speed (SS) Output endpoint to the Type-C connector port@1: $ref: /schemas/graph.yaml#/$defs/port-base description: Super Speed (SS) Input endpoint from the Super-Speed PHY unevaluatedProperties: false properties: endpoint: $ref: /schemas/graph.yaml#/$defs/endpoint-base unevaluatedProperties: false properties: data-lanes: $ref: /schemas/types.yaml#/definitions/uint32-array description: | An array of physical data lane indexes. Position determines how lanes are connected to the redriver, It is assumed the same order is kept on the other side of the redriver. Lane number represents the following - 0 is RX2 lane - 1 is TX2 lane - 2 is TX1 lane - 3 is RX1 lane The position determines the physical port of the redriver, in the order A, B, C & D. oneOf: - items: - const: 0 - const: 1 - const: 2 - const: 3 description: | This is the lanes default layout - Port A to RX2 lane - Port B to TX2 lane - Port C to TX1 lane - Port D to RX1 lane - items: - const: 3 - const: 2 - const: 1 - const: 0 description: | This is the USBRX2/USBTX2 and USBRX1/USBTX1 swapped lanes layout - Port A to RX1 lane - Port B to TX1 lane - Port C to TX2 lane - Port D to RX2 lane port@2: $ref: /schemas/graph.yaml#/properties/port description: Sideband Use (SBU) AUX lines endpoint to the Type-C connector for the purpose of handling altmode muxing and orientation switching. required: - compatible - reg allOf: - $ref: usb-switch.yaml# additionalProperties: false examples: - | i2c { #address-cells = <1>; #size-cells = <0>; typec-mux@32 { compatible = "onnn,nb7vpq904m"; reg = <0x32>; vcc-supply = <&vreg_l15b_1p8>; retimer-switch; orientation-switch; ports { #address-cells = <1>; #size-cells = <0>; port@0 { reg = <0>; usb_con_ss: endpoint { remote-endpoint = <&typec_con_ss>; }; }; port@1 { reg = <1>; phy_con_ss: endpoint { remote-endpoint = <&usb_phy_ss>; data-lanes = <3 2 1 0>; }; }; port@2 { reg = <2>; usb_con_sbu: endpoint { remote-endpoint = <&typec_dp_aux>; }; }; }; }; }; ...