# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/usb-switch.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: USB Orientation and Mode Switches Common Properties

maintainers:
  - Greg Kroah-Hartman <gregkh@linuxfoundation.org>

description:
  Common properties for devices handling USB mode and orientation switching.

properties:
  mode-switch:
    description: Possible handler of altmode switching
    type: boolean

  orientation-switch:
    description: Possible handler of orientation switching
    type: boolean

  retimer-switch:
    description: Possible handler of SuperSpeed signals retiming
    type: boolean

  port:
    $ref: /schemas/graph.yaml#/$defs/port-base
    description:
      A port node to link the device to a TypeC controller for the purpose of
      handling altmode muxing and orientation switching.

    properties:
      endpoint:
        $ref: /schemas/graph.yaml#/$defs/endpoint-base
        unevaluatedProperties: false
        properties:
          data-lanes:
            $ref: /schemas/types.yaml#/definitions/uint32-array
            minItems: 1
            maxItems: 8
            uniqueItems: true
            items:
              maximum: 8

  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
                minItems: 1
                maxItems: 8
                uniqueItems: true
                items:
                  maximum: 8

oneOf:
  - required:
      - port
  - required:
      - ports

additionalProperties: true
