[PATCH v4 0/4] Add USB3.1 support for Agilex5
From: Adrian Ng Ho Yin <adrian.ho.yin.ng@altera.com>
Date: 2026-09-04 08:53:35
Also in:
linux-devicetree, lkml
Agilex5 integrates a Synopsys DesignWare USB3 controller via a SoC-specific wrapper that requires dedicated clock, reset, PHY, and optional SMMU integration. The USB DMA path on the interconnect is limited to a 40-bit address width. This series adds a device tree binding for the Agilex5 DWC3 controller and introduces the corresponding USB3.1 node in the Agilex5 SoC and SoCDK device trees. The controller is placed under a simple-bus with a 40-bit dma-ranges window so the DMA/IOMMU stack respects the interconnect address width when SMMU is enabled. As the SoCDK only exposes the USB3.1 interface, the unused USB0 node is removed. On this SoC the DWC3 "ref" and "suspend" inputs share the same hardware clock source, so both clock phandles use the already published AGILEX5_USB31_SUSPEND_CLK ID (no new clock binding ID). Finally, the Agilex5 compatible string is added to the dwc3 generic platform driver so the controller can probe through that glue driver. Merging: - Patches 1 and 4 (dt-bindings + dwc3-generic-plat): USB tree - Patches 2 and 3 (arm64 dts): SoC / arm64 dts tree (or taken with the USB series if preferred, with an appropriate Ack) --- changelog: v3->v4: * Drop dt-bindings/clock and clk driver patches; do not extend the published Agilex5 clock binding. Reuse AGILEX5_USB31_SUSPEND_CLK for both "ref" and "suspend" clock inputs. * Fix usb31_bus dma-ranges cell layout (sashiko comment): use #address-cells = <2> and a Stingray-style 40-bit dma-ranges window instead of a 32-bit child address space with a truncated 1 TiB size. * Update altr,agilex5-dwc3.yaml per review: drop obvious reg/resets descriptions, order clock-names as bus_early/ref/suspend (matching snps,dwc3.yaml), and rename reset-names to core/ecc. * Limit the series to USB binding, DTS, and dwc3-generic-plat (no clk subsystem patches in the same series). v3 patch link: https://lore.kernel.org/all/cover.1786518803.git.adrian.ho.yin.ng@altera.com/ (local) v2->v3: * Add the missing USB3.1 reference clock ID and register usb31_ref_clk as a fixed-factor clock in the Agilex5 clock driver. * Drop dma_addressable_bits core/glue changes; describe the 40-bit DMA limit in DT with dma-ranges instead. * Wrap the USB3.1 node in a simple-bus with a 40-bit dma-ranges window. * Keep Agilex5 support in dwc3-generic-plat as a compatible match only (no platform-specific DMA mask override). v2 patch link: https://lore.kernel.org/all/cover.1765249127.git.adrianhoyin.ng@altera.com/ (local) v1->v2: * Update new binding name to match compatible. * Update binding to use single node instead of parent child node structure. * Update binding according to comments from maintainer. * Split USB3 and USB2 changes in dts into separate commits. * Update to use flattened model and use dwc3-generic-plat driver instead of dwc3-of-simple driver. * Add dma_addressable_bits as a dwc3 property which is set by the glue driver which is used to configure the dma mask in the core driver. v1 patch link: https://lore.kernel.org/all/cover.1762839776.git.adrianhoyin.ng@altera.com/ (local) --- Adrian Ng Ho Yin (4): dt-bindings: usb: add Altera Agilex5 DWC3 controller arm64: dts: intel: agilex5: add USB3.1 controller node arm64: dts: intel: agilex5: remove usb0 in Agilex5 SoCDK usb: dwc3: add Altera Agilex5 support to generic platform driver .../bindings/usb/altr,agilex5-dwc3.yaml | 100 ++++++++++++++++++ .../arm64/boot/dts/intel/socfpga_agilex5.dtsi | 35 ++++++ .../boot/dts/intel/socfpga_agilex5_socdk.dts | 4 +- drivers/usb/dwc3/dwc3-generic-plat.c | 1 + 4 files changed, 138 insertions(+), 2 deletions(-) create mode 100644 Documentation/devicetree/bindings/usb/altr,agilex5-dwc3.yaml -- 2.49.GIT