Hi Rob, > > +examples: > > + - | > > + usb@98013e00 { > > + compatible = "realtek,rtd1319d-dwc3", "realtek,rtd-dwc3"; > > + reg = <0x98013e00 0x140>, <0x98013f60 0x4>; > > These look like registers in some other block rather than a standalone wrapper > block. Are these part of some syscon block? If so, I don't think a wrapper node > is the right approach here, but a phandle to the syscon would be instead. > They are the same block of registers. We have three dwc3 controllers in one SoC. The register wrapper is located at USB1. 0x98013200 to 0x980133ff USB2. 0x98013c00 to 0x98013dff USB3. 0x98013e00 to 0x98013fff Why are they split into two blocks? Since USB_DBUS_PWR_CTRL_REG has a different offset at usb1 (0x164) than other USBs (0x160). We split two blocks one 0x98013200 to 0x9801333f and one 0x98013364 to 0x98013367, to solve this question. > From the register definitions, much of it looks phy related, but this is not part > of the phys? In our hardware design, these phy settings are location the register of wrapper. Thanks, Stanley > > > + #address-cells = <1>; > > + #size-cells = <1>; > > + ranges; > > + > > + usb@98050000 { > > + compatible = "snps,dwc3"; > > + reg = <0x98050000 0x9000>; > > + interrupts = <0 94 4>; > > + phys = <&usb2phy &usb3phy>; > > + phy-names = "usb2-phy", "usb3-phy"; > > + dr_mode = "otg"; > > + usb-role-switch; > > + role-switch-default-mode = "host"; > > + snps,dis_u2_susphy_quirk; > > + snps,parkmode-disable-ss-quirk; > > + snps,parkmode-disable-hs-quirk; > > + maximum-speed = "high-speed"; > > + }; > > + }; > > --