168989fe1SRoger Quadros# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
268989fe1SRoger Quadros%YAML 1.2
368989fe1SRoger Quadros---
468989fe1SRoger Quadros$id: http://devicetree.org/schemas/usb/cdns,usb3.yaml#
568989fe1SRoger Quadros$schema: http://devicetree.org/meta-schemas/core.yaml#
668989fe1SRoger Quadros
784e85359SKrzysztof Kozlowskititle: Cadence USBSS-DRD controller
868989fe1SRoger Quadros
968989fe1SRoger Quadrosmaintainers:
1068989fe1SRoger Quadros  - Pawel Laszczak <pawell@cadence.com>
1168989fe1SRoger Quadros
1268989fe1SRoger Quadrosproperties:
1368989fe1SRoger Quadros  compatible:
1468989fe1SRoger Quadros    const: cdns,usb3
1568989fe1SRoger Quadros
1668989fe1SRoger Quadros  reg:
1768989fe1SRoger Quadros    items:
1868989fe1SRoger Quadros      - description: OTG controller registers
1968989fe1SRoger Quadros      - description: XHCI Host controller registers
2068989fe1SRoger Quadros      - description: DEVICE controller registers
2168989fe1SRoger Quadros
2268989fe1SRoger Quadros  reg-names:
2368989fe1SRoger Quadros    items:
2468989fe1SRoger Quadros      - const: otg
2568989fe1SRoger Quadros      - const: xhci
2668989fe1SRoger Quadros      - const: dev
2768989fe1SRoger Quadros
2868989fe1SRoger Quadros  interrupts:
291bc514dfSPeter Chen    minItems: 3
3068989fe1SRoger Quadros    items:
3168989fe1SRoger Quadros      - description: XHCI host controller interrupt
3268989fe1SRoger Quadros      - description: Device controller interrupt
33309f5d79SGeert Uytterhoeven      - description: OTG/DRD controller interrupt
341bc514dfSPeter Chen      - description: interrupt used to wake up core, e.g when usbcmd.rs is
351bc514dfSPeter Chen                     cleared by xhci core, this interrupt is optional
3668989fe1SRoger Quadros
3768989fe1SRoger Quadros  interrupt-names:
381bc514dfSPeter Chen    minItems: 3
3968989fe1SRoger Quadros    items:
4068989fe1SRoger Quadros      - const: host
4168989fe1SRoger Quadros      - const: peripheral
4268989fe1SRoger Quadros      - const: otg
431bc514dfSPeter Chen      - const: wakeup
4468989fe1SRoger Quadros
4568989fe1SRoger Quadros  dr_mode:
4668989fe1SRoger Quadros    enum: [host, otg, peripheral]
4768989fe1SRoger Quadros
4868989fe1SRoger Quadros  maximum-speed:
4968989fe1SRoger Quadros    enum: [super-speed, high-speed, full-speed]
5068989fe1SRoger Quadros
5168989fe1SRoger Quadros  phys:
5268989fe1SRoger Quadros    minItems: 1
5368989fe1SRoger Quadros    maxItems: 2
5468989fe1SRoger Quadros
5568989fe1SRoger Quadros  phy-names:
5668989fe1SRoger Quadros    minItems: 1
5768989fe1SRoger Quadros    maxItems: 2
5868989fe1SRoger Quadros    items:
5968989fe1SRoger Quadros      anyOf:
6068989fe1SRoger Quadros        - const: cdns3,usb2-phy
6168989fe1SRoger Quadros        - const: cdns3,usb3-phy
6268989fe1SRoger Quadros
6368989fe1SRoger Quadros  cdns,on-chip-buff-size:
6468989fe1SRoger Quadros    description:
6568989fe1SRoger Quadros      size of memory intended as internal memory for endpoints
6668989fe1SRoger Quadros      buffers expressed in KB
67*50a1726bSFrank Li    $ref: /schemas/types.yaml#/definitions/uint16
6868989fe1SRoger Quadros
695261e48fSRoger Quadros  cdns,phyrst-a-enable:
705261e48fSRoger Quadros    description: Enable resetting of PHY if Rx fail is detected
715261e48fSRoger Quadros    type: boolean
725261e48fSRoger Quadros
7368989fe1SRoger Quadrosrequired:
7468989fe1SRoger Quadros  - compatible
7568989fe1SRoger Quadros  - reg
7668989fe1SRoger Quadros  - reg-names
7768989fe1SRoger Quadros  - interrupts
78ab1150e9SAswath Govindraju  - interrupt-names
7968989fe1SRoger Quadros
8068989fe1SRoger QuadrosadditionalProperties: false
8168989fe1SRoger Quadros
8268989fe1SRoger Quadrosexamples:
8368989fe1SRoger Quadros  - |
8468989fe1SRoger Quadros    #include <dt-bindings/interrupt-controller/arm-gic.h>
8568989fe1SRoger Quadros    bus {
8668989fe1SRoger Quadros        #address-cells = <2>;
8768989fe1SRoger Quadros        #size-cells = <2>;
8868989fe1SRoger Quadros
8968989fe1SRoger Quadros        usb@6000000 {
9068989fe1SRoger Quadros            compatible = "cdns,usb3";
9168989fe1SRoger Quadros            reg = <0x00 0x6000000 0x00 0x10000>,
9268989fe1SRoger Quadros                  <0x00 0x6010000 0x00 0x10000>,
9368989fe1SRoger Quadros                  <0x00 0x6020000 0x00 0x10000>;
9468989fe1SRoger Quadros            reg-names = "otg", "xhci", "dev";
9568989fe1SRoger Quadros            interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>,
9668989fe1SRoger Quadros                         <GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>,
9768989fe1SRoger Quadros                         <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>;
9868989fe1SRoger Quadros            interrupt-names = "host", "peripheral", "otg";
9968989fe1SRoger Quadros            maximum-speed = "super-speed";
10068989fe1SRoger Quadros            dr_mode = "otg";
10168989fe1SRoger Quadros        };
10268989fe1SRoger Quadros    };
103