mirror of
https://github.com/torvalds/linux.git
synced 2026-03-07 23:24:35 +01:00
Add support for the DWC3 USB controller found on Google Tensor G5 (codename: laguna). The controller features dual-role functionality and hibernation. The primary focus is implementing hibernation support in host mode, enabling the controller to enter a low-power state (D3). This is particularly relevant during system power state transition and runtime power management for power efficiency. Highlights: - Align suspend callback with dwc3_suspend_common() for deciding between a full teardown and hibernation in host mode. - Integration with `psw` (power switchable) and `top` power domains, managing their states and device links to support hibernation. - A notifier callback dwc3_google_usb_psw_pd_notifier() for `psw` power domain events to manage controller state transitions to/from D3. - Coordination of the `non_sticky` reset during power state transitions, asserting it on D3 entry and deasserting on D0 entry in hibernation scenario. - Handling of high-speed and super-speed PME interrupts that are generated by remote wakeup during hibernation. Co-developed-by: Joy Chakraborty <joychakr@google.com> Signed-off-by: Joy Chakraborty <joychakr@google.com> Co-developed-by: Naveen Kumar <mnkumar@google.com> Signed-off-by: Naveen Kumar <mnkumar@google.com> Reviewed-by: Peter Griffin <peter.griffin@linaro.org> Signed-off-by: Roy Luo <royluo@google.com> Acked-by: Thinh Nguyen <Thinh.Nguyen@synopsys.com> Link: https://patch.msgid.link/20251218-controller-v10-2-4047c9077274@google.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
62 lines
1.9 KiB
Makefile
62 lines
1.9 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
|
|
obj-$(CONFIG_USB_DWC3_GOOGLE) += dwc3-google.o
|