xref: /linux/Documentation/devicetree/bindings/usb/google,lga-dwc3.yaml (revision c17ee635fd3a482b2ad2bf5e269755c2eae5f25e)
1*32bc790aSRoy Luo# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2*32bc790aSRoy Luo# Copyright (c) 2025, Google LLC
3*32bc790aSRoy Luo%YAML 1.2
4*32bc790aSRoy Luo---
5*32bc790aSRoy Luo$id: http://devicetree.org/schemas/usb/google,lga-dwc3.yaml#
6*32bc790aSRoy Luo$schema: http://devicetree.org/meta-schemas/core.yaml#
7*32bc790aSRoy Luo
8*32bc790aSRoy Luotitle: Google Tensor Series G5 (Laguna) DWC3 USB SoC Controller
9*32bc790aSRoy Luo
10*32bc790aSRoy Luomaintainers:
11*32bc790aSRoy Luo  - Roy Luo <royluo@google.com>
12*32bc790aSRoy Luo
13*32bc790aSRoy Luodescription:
14*32bc790aSRoy Luo  Describes the DWC3 USB controller block implemented on Google Tensor SoCs,
15*32bc790aSRoy Luo  starting with the G5 generation (laguna). Based on Synopsys DWC3 IP, the
16*32bc790aSRoy Luo  controller features Dual-Role Device single port with hibernation add-on.
17*32bc790aSRoy Luo
18*32bc790aSRoy Luoproperties:
19*32bc790aSRoy Luo  compatible:
20*32bc790aSRoy Luo    const: google,lga-dwc3
21*32bc790aSRoy Luo
22*32bc790aSRoy Luo  reg:
23*32bc790aSRoy Luo    items:
24*32bc790aSRoy Luo      - description: Core DWC3 IP registers.
25*32bc790aSRoy Luo
26*32bc790aSRoy Luo  interrupts:
27*32bc790aSRoy Luo    items:
28*32bc790aSRoy Luo      - description: Core DWC3 interrupt.
29*32bc790aSRoy Luo      - description: High speed power management event for remote wakeup.
30*32bc790aSRoy Luo      - description: Super speed power management event for remote wakeup.
31*32bc790aSRoy Luo
32*32bc790aSRoy Luo  interrupt-names:
33*32bc790aSRoy Luo    items:
34*32bc790aSRoy Luo      - const: core
35*32bc790aSRoy Luo      - const: hs_pme
36*32bc790aSRoy Luo      - const: ss_pme
37*32bc790aSRoy Luo
38*32bc790aSRoy Luo  clocks:
39*32bc790aSRoy Luo    items:
40*32bc790aSRoy Luo      - description: Non-sticky module clock.
41*32bc790aSRoy Luo      - description: Sticky module clock.
42*32bc790aSRoy Luo
43*32bc790aSRoy Luo  clock-names:
44*32bc790aSRoy Luo    items:
45*32bc790aSRoy Luo      - const: non_sticky
46*32bc790aSRoy Luo      - const: sticky
47*32bc790aSRoy Luo
48*32bc790aSRoy Luo  resets:
49*32bc790aSRoy Luo    items:
50*32bc790aSRoy Luo      - description: Non-sticky module reset.
51*32bc790aSRoy Luo      - description: Sticky module reset.
52*32bc790aSRoy Luo      - description: DRD bus reset.
53*32bc790aSRoy Luo      - description: Top-level reset.
54*32bc790aSRoy Luo
55*32bc790aSRoy Luo  reset-names:
56*32bc790aSRoy Luo    items:
57*32bc790aSRoy Luo      - const: non_sticky
58*32bc790aSRoy Luo      - const: sticky
59*32bc790aSRoy Luo      - const: drd_bus
60*32bc790aSRoy Luo      - const: top
61*32bc790aSRoy Luo
62*32bc790aSRoy Luo  power-domains:
63*32bc790aSRoy Luo    items:
64*32bc790aSRoy Luo      - description: Power switchable domain, the child of top domain.
65*32bc790aSRoy Luo          Turning it on puts the controller into full power state,
66*32bc790aSRoy Luo          turning it off puts the controller into power gated state.
67*32bc790aSRoy Luo      - description: Top domain, the parent of power switchable domain.
68*32bc790aSRoy Luo          Turning it on puts the controller into power gated state,
69*32bc790aSRoy Luo          turning it off completely shuts off the controller.
70*32bc790aSRoy Luo
71*32bc790aSRoy Luo  power-domain-names:
72*32bc790aSRoy Luo    items:
73*32bc790aSRoy Luo      - const: psw
74*32bc790aSRoy Luo      - const: top
75*32bc790aSRoy Luo
76*32bc790aSRoy Luo  iommus:
77*32bc790aSRoy Luo    maxItems: 1
78*32bc790aSRoy Luo
79*32bc790aSRoy Luo  google,usb-cfg-csr:
80*32bc790aSRoy Luo    description:
81*32bc790aSRoy Luo      A phandle to a syscon node used to access the USB configuration
82*32bc790aSRoy Luo      registers. These registers are the top-level wrapper of the USB
83*32bc790aSRoy Luo      subsystem and provide control and status for the integrated USB
84*32bc790aSRoy Luo      controller and USB PHY.
85*32bc790aSRoy Luo    $ref: /schemas/types.yaml#/definitions/phandle-array
86*32bc790aSRoy Luo    items:
87*32bc790aSRoy Luo      - items:
88*32bc790aSRoy Luo          - description: phandle to the syscon node.
89*32bc790aSRoy Luo          - description: USB host controller configuration register offset.
90*32bc790aSRoy Luo          - description: USB custom interrrupts control register offset.
91*32bc790aSRoy Luo
92*32bc790aSRoy Luorequired:
93*32bc790aSRoy Luo  - compatible
94*32bc790aSRoy Luo  - reg
95*32bc790aSRoy Luo  - interrupts
96*32bc790aSRoy Luo  - interrupt-names
97*32bc790aSRoy Luo  - clocks
98*32bc790aSRoy Luo  - clock-names
99*32bc790aSRoy Luo  - resets
100*32bc790aSRoy Luo  - reset-names
101*32bc790aSRoy Luo  - power-domains
102*32bc790aSRoy Luo  - power-domain-names
103*32bc790aSRoy Luo  - google,usb-cfg-csr
104*32bc790aSRoy Luo
105*32bc790aSRoy LuoallOf:
106*32bc790aSRoy Luo  - $ref: snps,dwc3-common.yaml#
107*32bc790aSRoy Luo
108*32bc790aSRoy LuounevaluatedProperties: false
109*32bc790aSRoy Luo
110*32bc790aSRoy Luoexamples:
111*32bc790aSRoy Luo  - |
112*32bc790aSRoy Luo    #include <dt-bindings/interrupt-controller/arm-gic.h>
113*32bc790aSRoy Luo    #include <dt-bindings/interrupt-controller/irq.h>
114*32bc790aSRoy Luo    soc {
115*32bc790aSRoy Luo        #address-cells = <2>;
116*32bc790aSRoy Luo        #size-cells = <2>;
117*32bc790aSRoy Luo
118*32bc790aSRoy Luo        usb@c400000 {
119*32bc790aSRoy Luo            compatible = "google,lga-dwc3";
120*32bc790aSRoy Luo            reg = <0 0x0c400000  0 0xd060>;
121*32bc790aSRoy Luo            interrupts = <GIC_SPI 580 IRQ_TYPE_LEVEL_HIGH 0>,
122*32bc790aSRoy Luo                         <GIC_SPI 597 IRQ_TYPE_LEVEL_HIGH 0>,
123*32bc790aSRoy Luo                         <GIC_SPI 598 IRQ_TYPE_LEVEL_HIGH 0>;
124*32bc790aSRoy Luo            interrupt-names = "core", "hs_pme", "ss_pme";
125*32bc790aSRoy Luo            clocks = <&hsion_usbc_non_sticky_clk>,  <&hsion_usbc_sticky_clk>;
126*32bc790aSRoy Luo            clock-names = "non_sticky", "sticky";
127*32bc790aSRoy Luo            resets = <&hsion_resets_usbc_non_sticky>, <&hsion_resets_usbc_sticky>,
128*32bc790aSRoy Luo                     <&hsion_resets_usb_drd_bus>, <&hsion_resets_usb_top>;
129*32bc790aSRoy Luo            reset-names = "non_sticky", "sticky", "drd_bus", "top";
130*32bc790aSRoy Luo            power-domains = <&hsio_n_usb_psw>, <&hsio_n_usb>;
131*32bc790aSRoy Luo            power-domain-names = "psw", "top";
132*32bc790aSRoy Luo            phys = <&usb_phy 0>;
133*32bc790aSRoy Luo            phy-names = "usb2-phy";
134*32bc790aSRoy Luo            snps,quirk-frame-length-adjustment = <0x20>;
135*32bc790aSRoy Luo            snps,gfladj-refclk-lpm-sel-quirk;
136*32bc790aSRoy Luo            snps,incr-burst-type-adjustment = <4>;
137*32bc790aSRoy Luo            google,usb-cfg-csr = <&usb_cfg_csr 0x0 0x20>;
138*32bc790aSRoy Luo        };
139*32bc790aSRoy Luo    };
140*32bc790aSRoy Luo...
141