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