xref: /linux/Documentation/devicetree/bindings/usb/fsl,imx8qm-cdns3.yaml (revision cdd5b5a9761fd66d17586e4f4ba6588c70e640ea)
1*8486eb80SFrank Li# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2*8486eb80SFrank Li# Copyright (c) 2020 NXP
3*8486eb80SFrank Li%YAML 1.2
4*8486eb80SFrank Li---
5*8486eb80SFrank Li$id: http://devicetree.org/schemas/usb/fsl,imx8qm-cdns3.yaml#
6*8486eb80SFrank Li$schema: http://devicetree.org/meta-schemas/core.yaml#
7*8486eb80SFrank Li
8*8486eb80SFrank Lititle: NXP iMX8QM Soc USB Controller
9*8486eb80SFrank Li
10*8486eb80SFrank Limaintainers:
11*8486eb80SFrank Li  - Frank Li <Frank.Li@nxp.com>
12*8486eb80SFrank Li
13*8486eb80SFrank Liproperties:
14*8486eb80SFrank Li  compatible:
15*8486eb80SFrank Li    const: fsl,imx8qm-usb3
16*8486eb80SFrank Li
17*8486eb80SFrank Li  reg:
18*8486eb80SFrank Li    items:
19*8486eb80SFrank Li      - description: Register set for iMX USB3 Platform Control
20*8486eb80SFrank Li
21*8486eb80SFrank Li  "#address-cells":
22*8486eb80SFrank Li    enum: [ 1, 2 ]
23*8486eb80SFrank Li
24*8486eb80SFrank Li  "#size-cells":
25*8486eb80SFrank Li    enum: [ 1, 2 ]
26*8486eb80SFrank Li
27*8486eb80SFrank Li  ranges: true
28*8486eb80SFrank Li
29*8486eb80SFrank Li  clocks:
30*8486eb80SFrank Li    items:
31*8486eb80SFrank Li      - description: Standby clock. Used during ultra low power states.
32*8486eb80SFrank Li      - description: USB bus clock for usb3 controller.
33*8486eb80SFrank Li      - description: AXI clock for AXI interface.
34*8486eb80SFrank Li      - description: ipg clock for register access.
35*8486eb80SFrank Li      - description: Core clock for usb3 controller.
36*8486eb80SFrank Li
37*8486eb80SFrank Li  clock-names:
38*8486eb80SFrank Li    items:
39*8486eb80SFrank Li      - const: lpm
40*8486eb80SFrank Li      - const: bus
41*8486eb80SFrank Li      - const: aclk
42*8486eb80SFrank Li      - const: ipg
43*8486eb80SFrank Li      - const: core
44*8486eb80SFrank Li
45*8486eb80SFrank Li  power-domains:
46*8486eb80SFrank Li    maxItems: 1
47*8486eb80SFrank Li
48*8486eb80SFrank Li# Required child node:
49*8486eb80SFrank Li
50*8486eb80SFrank LipatternProperties:
51*8486eb80SFrank Li  "^usb@[0-9a-f]+$":
52*8486eb80SFrank Li    $ref: cdns,usb3.yaml#
53*8486eb80SFrank Li
54*8486eb80SFrank Lirequired:
55*8486eb80SFrank Li  - compatible
56*8486eb80SFrank Li  - reg
57*8486eb80SFrank Li  - "#address-cells"
58*8486eb80SFrank Li  - "#size-cells"
59*8486eb80SFrank Li  - ranges
60*8486eb80SFrank Li  - clocks
61*8486eb80SFrank Li  - clock-names
62*8486eb80SFrank Li  - power-domains
63*8486eb80SFrank Li
64*8486eb80SFrank LiadditionalProperties: false
65*8486eb80SFrank Li
66*8486eb80SFrank Liexamples:
67*8486eb80SFrank Li  - |
68*8486eb80SFrank Li    #include <dt-bindings/clock/imx8-lpcg.h>
69*8486eb80SFrank Li    #include <dt-bindings/firmware/imx/rsrc.h>
70*8486eb80SFrank Li    #include <dt-bindings/interrupt-controller/arm-gic.h>
71*8486eb80SFrank Li
72*8486eb80SFrank Li    usb@5b110000 {
73*8486eb80SFrank Li      compatible = "fsl,imx8qm-usb3";
74*8486eb80SFrank Li      reg = <0x5b110000 0x10000>;
75*8486eb80SFrank Li      ranges;
76*8486eb80SFrank Li      clocks = <&usb3_lpcg IMX_LPCG_CLK_1>,
77*8486eb80SFrank Li               <&usb3_lpcg IMX_LPCG_CLK_0>,
78*8486eb80SFrank Li               <&usb3_lpcg IMX_LPCG_CLK_7>,
79*8486eb80SFrank Li               <&usb3_lpcg IMX_LPCG_CLK_4>,
80*8486eb80SFrank Li               <&usb3_lpcg IMX_LPCG_CLK_5>;
81*8486eb80SFrank Li      clock-names = "lpm", "bus", "aclk", "ipg", "core";
82*8486eb80SFrank Li      assigned-clocks = <&clk IMX_SC_R_USB_2 IMX_SC_PM_CLK_MST_BUS>;
83*8486eb80SFrank Li      assigned-clock-rates = <250000000>;
84*8486eb80SFrank Li      power-domains = <&pd IMX_SC_R_USB_2>;
85*8486eb80SFrank Li      #address-cells = <1>;
86*8486eb80SFrank Li      #size-cells = <1>;
87*8486eb80SFrank Li
88*8486eb80SFrank Li      usb@5b120000 {
89*8486eb80SFrank Li        compatible = "cdns,usb3";
90*8486eb80SFrank Li        reg = <0x5b120000 0x10000>,   /* memory area for OTG/DRD registers */
91*8486eb80SFrank Li              <0x5b130000 0x10000>,   /* memory area for HOST registers */
92*8486eb80SFrank Li              <0x5b140000 0x10000>;   /* memory area for DEVICE registers */
93*8486eb80SFrank Li        reg-names = "otg", "xhci", "dev";
94*8486eb80SFrank Li        interrupt-parent = <&gic>;
95*8486eb80SFrank Li        interrupts = <GIC_SPI 271 IRQ_TYPE_LEVEL_HIGH>,
96*8486eb80SFrank Li                     <GIC_SPI 271 IRQ_TYPE_LEVEL_HIGH>,
97*8486eb80SFrank Li                     <GIC_SPI 271 IRQ_TYPE_LEVEL_HIGH>,
98*8486eb80SFrank Li                     <GIC_SPI 271 IRQ_TYPE_LEVEL_HIGH>;
99*8486eb80SFrank Li        interrupt-names = "host", "peripheral", "otg", "wakeup";
100*8486eb80SFrank Li        phys = <&usb3_phy>;
101*8486eb80SFrank Li        phy-names = "cdns3,usb3-phy";
102*8486eb80SFrank Li      };
103*8486eb80SFrank Li    };
104