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