150276Speter# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2166124Srafan# Copyright (c) 2020 NXP
350276Speter%YAML 1.2
450276Speter---
550276Speter$id: http://devicetree.org/schemas/usb/fsl,imx8qm-cdns3.yaml#
650276Speter$schema: http://devicetree.org/meta-schemas/core.yaml#
750276Speter
850276Spetertitle: NXP iMX8QM Soc USB Controller
950276Speter
1050276Spetermaintainers:
1150276Speter  - Frank Li <Frank.Li@nxp.com>
1250276Speter
1350276Speterproperties:
1450276Speter  compatible:
1550276Speter    const: fsl,imx8qm-usb3
1650276Speter
1750276Speter  reg:
1850276Speter    items:
1950276Speter      - description: Register set for iMX USB3 Platform Control
2050276Speter
2150276Speter  "#address-cells":
2250276Speter    enum: [ 1, 2 ]
2350276Speter
2450276Speter  "#size-cells":
2550276Speter    enum: [ 1, 2 ]
2650276Speter
2750276Speter  ranges: true
2850276Speter
2950276Speter  clocks:
30166124Srafan    items:
3150276Speter      - description: Standby clock. Used during ultra low power states.
3250276Speter      - description: USB bus clock for usb3 controller.
33166124Srafan      - description: AXI clock for AXI interface.
34166124Srafan      - description: ipg clock for register access.
3550276Speter      - description: Core clock for usb3 controller.
3650276Speter
3750276Speter  clock-names:
3850276Speter    items:
3950276Speter      - const: lpm
4097049Speter      - const: bus
4197049Speter      - const: aclk
4297049Speter      - const: ipg
43166124Srafan      - const: core
4450276Speter
4550276Speter  power-domains:
4650276Speter    maxItems: 1
4750276Speter
4850276Speter# Required child node:
4950276Speter
5076726SpeterpatternProperties:
5176726Speter  "^usb@[0-9a-f]+$":
5250276Speter    $ref: cdns,usb3.yaml#
5350276Speter
5450276Speterrequired:
5550276Speter  - compatible
5650276Speter  - reg
5750276Speter  - "#address-cells"
5850276Speter  - "#size-cells"
5950276Speter  - ranges
6050276Speter  - clocks
6150276Speter  - clock-names
6250276Speter  - power-domains
6350276Speter
6450276SpeteradditionalProperties: false
6550276Speter
6650276Speterexamples:
6750276Speter  - |
6850276Speter    #include <dt-bindings/clock/imx8-lpcg.h>
6950276Speter    #include <dt-bindings/firmware/imx/rsrc.h>
7050276Speter    #include <dt-bindings/interrupt-controller/arm-gic.h>
7150276Speter
7250276Speter    usb@5b110000 {
7350276Speter      compatible = "fsl,imx8qm-usb3";
7450276Speter      reg = <0x5b110000 0x10000>;
7550276Speter      ranges;
7650276Speter      clocks = <&usb3_lpcg IMX_LPCG_CLK_1>,
7750276Speter               <&usb3_lpcg IMX_LPCG_CLK_0>,
7850276Speter               <&usb3_lpcg IMX_LPCG_CLK_7>,
7950276Speter               <&usb3_lpcg IMX_LPCG_CLK_4>,
8050276Speter               <&usb3_lpcg IMX_LPCG_CLK_5>;
8150276Speter      clock-names = "lpm", "bus", "aclk", "ipg", "core";
8250276Speter      assigned-clocks = <&clk IMX_SC_R_USB_2 IMX_SC_PM_CLK_MST_BUS>;
8350276Speter      assigned-clock-rates = <250000000>;
8450276Speter      power-domains = <&pd IMX_SC_R_USB_2>;
8550276Speter      #address-cells = <1>;
8650276Speter      #size-cells = <1>;
8750276Speter
8850276Speter      usb@5b120000 {
8950276Speter        compatible = "cdns,usb3";
9050276Speter        reg = <0x5b120000 0x10000>,   /* memory area for OTG/DRD registers */
9150276Speter              <0x5b130000 0x10000>,   /* memory area for HOST registers */
9250276Speter              <0x5b140000 0x10000>;   /* memory area for DEVICE registers */
9350276Speter        reg-names = "otg", "xhci", "dev";
9450276Speter        interrupt-parent = <&gic>;
9550276Speter        interrupts = <GIC_SPI 271 IRQ_TYPE_LEVEL_HIGH>,
9650276Speter                     <GIC_SPI 271 IRQ_TYPE_LEVEL_HIGH>,
9750276Speter                     <GIC_SPI 271 IRQ_TYPE_LEVEL_HIGH>,
9850276Speter                     <GIC_SPI 271 IRQ_TYPE_LEVEL_HIGH>;
9950276Speter        interrupt-names = "host", "peripheral", "otg", "wakeup";
10050276Speter        phys = <&usb3_phy>;
10150276Speter        phy-names = "cdns3,usb3-phy";
10250276Speter      };
10350276Speter    };
10450276Speter