mirror of
https://github.com/torvalds/linux.git
synced 2025-12-07 20:06:24 +00:00
The dwc3 controller present on Apple Silicon SoCs like the M1 requires a specific order of operations synchronized between its PHY and its Type-C controller. Specifically, the PHY first has to go through initial bringup (which requires knowledge of the lane mode and orientation) before dwc3 itself can be brought up and can then finalize the PHY configuration. Additionally, dwc3 has to be teared down and re-initialized whenever the cable is changed due to hardware quirks that prevent a new device from being recognized and due to the PHY being unable to switch lane mode or orientation while dwc3 is up and running. These controllers also have a Apple-specific MMIO region after the common dwc3 region where some controls have to be updated. PHY bringup and shutdown also requires SUSPHY to be enabled for the ports to work correctly. In the future, this driver will also gain support for USB3-via-USB4 tunneling which will require additional tweaks. Add a glue driver that takes of all of these constraints. Reviewed-by: Neal Gompa <neal@gompa.dev> Acked-by: Thinh Nguyen <Thinh.Nguyen@synopsys.com> Signed-off-by: Sven Peter <sven@kernel.org> Link: https://patch.msgid.link/20251015-b4-aplpe-dwc3-v2-5-cbd65a2d511a@kernel.org Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
62 lines
1.8 KiB
Makefile
62 lines
1.8 KiB
Makefile
# SPDX-License-Identifier: GPL-2.0
|
|
# define_trace.h needs to know how to find our header
|
|
CFLAGS_trace.o := -I$(src)
|
|
|
|
obj-$(CONFIG_USB_DWC3) += dwc3.o
|
|
|
|
dwc3-y := core.o
|
|
|
|
ifneq ($(CONFIG_TRACING),)
|
|
dwc3-y += trace.o
|
|
endif
|
|
|
|
ifneq ($(filter y,$(CONFIG_USB_DWC3_HOST) $(CONFIG_USB_DWC3_DUAL_ROLE)),)
|
|
dwc3-y += host.o
|
|
endif
|
|
|
|
ifneq ($(filter y,$(CONFIG_USB_DWC3_GADGET) $(CONFIG_USB_DWC3_DUAL_ROLE)),)
|
|
dwc3-y += gadget.o ep0.o
|
|
endif
|
|
|
|
ifneq ($(CONFIG_USB_DWC3_DUAL_ROLE),)
|
|
dwc3-y += drd.o
|
|
endif
|
|
|
|
ifneq ($(CONFIG_USB_DWC3_ULPI),)
|
|
dwc3-y += ulpi.o
|
|
endif
|
|
|
|
ifneq ($(CONFIG_DEBUG_FS),)
|
|
dwc3-y += debugfs.o
|
|
endif
|
|
|
|
##
|
|
# Platform-specific glue layers go here
|
|
#
|
|
# NOTICE: Make sure your glue layer doesn't depend on anything
|
|
# which is arch-specific and that it compiles on all situations.
|
|
#
|
|
# We want to keep this requirement in order to be able to compile
|
|
# the entire driver (with all its glue layers) on several architectures
|
|
# and make sure it compiles fine. This will also help with allmodconfig
|
|
# and allyesconfig builds.
|
|
##
|
|
|
|
obj-$(CONFIG_USB_DWC3_AM62) += dwc3-am62.o
|
|
obj-$(CONFIG_USB_DWC3_APPLE) += dwc3-apple.o
|
|
obj-$(CONFIG_USB_DWC3_OMAP) += dwc3-omap.o
|
|
obj-$(CONFIG_USB_DWC3_EXYNOS) += dwc3-exynos.o
|
|
obj-$(CONFIG_USB_DWC3_PCI) += dwc3-pci.o
|
|
obj-$(CONFIG_USB_DWC3_HAPS) += dwc3-haps.o
|
|
obj-$(CONFIG_USB_DWC3_KEYSTONE) += dwc3-keystone.o
|
|
obj-$(CONFIG_USB_DWC3_MESON_G12A) += dwc3-meson-g12a.o
|
|
obj-$(CONFIG_USB_DWC3_OF_SIMPLE) += dwc3-of-simple.o
|
|
obj-$(CONFIG_USB_DWC3_ST) += dwc3-st.o
|
|
obj-$(CONFIG_USB_DWC3_QCOM) += dwc3-qcom.o
|
|
obj-$(CONFIG_USB_DWC3_QCOM) += dwc3-qcom-legacy.o
|
|
obj-$(CONFIG_USB_DWC3_IMX8MP) += dwc3-imx8mp.o
|
|
obj-$(CONFIG_USB_DWC3_XILINX) += dwc3-xilinx.o
|
|
obj-$(CONFIG_USB_DWC3_OCTEON) += dwc3-octeon.o
|
|
obj-$(CONFIG_USB_DWC3_RTK) += dwc3-rtk.o
|
|
obj-$(CONFIG_USB_DWC3_GENERIC_PLAT) += dwc3-generic-plat.o
|