config USB_CDNS_SUPPORT
	tristate "Cadence USB Support"
	depends on USB_SUPPORT && HAS_DMA
	depends on USB || USB_GADGET
	depends on USB if !USB_GADGET
	depends on USB_GADGET if !USB
	select USB_XHCI_PLATFORM if USB_XHCI_HCD
	select USB_ROLE_SWITCH
	help
	  Say Y here if your system has a Cadence USBSS or USBSSP
	  dual-role controller.
	  It supports: dual-role switch, Host-only, and Peripheral-only.

if USB_CDNS_SUPPORT

config USB_CDNS3
	tristate "Cadence USB dual-role controller (USBSS and USBSSP)"
	depends on USB_CDNS_SUPPORT
	help
	  Say Y or M here if your system has an on-chip Cadence USB
	  dual-role controller. This covers both USBSS (USB 3.0) and
	  USBSSP (SuperSpeed Plus) IP; the driver detects the variant at
	  runtime.

	  The core driver (core, DRD, generic platform binding for the
	  "cdns,usb3" device tree compatible, optional host and gadget)
	  builds as one module named cdns.ko when built as a loadable
	  module.

	  It supports: dual-role switch, Host-only, and Peripheral-only.

if USB_CDNS3

config USB_CDNS3_HOST
	bool "Cadence USB host controller (xHCI)"
	depends on USB=y || USB=USB_CDNS3
	help
	  Say Y here to enable host controller functionality for Cadence
	  USBSS and USBSSP dual-role controllers.

	  The host controller is xHCI compliant and uses the standard
	  xHCI driver.

config USB_CDNS3_GADGET
	bool "Cadence USB device controller (USBSS and USBSSP)"
	depends on USB_GADGET=y || USB_GADGET=USB_CDNS3
	help
	  Say Y here to include Cadence USB device (gadget) support for
	  both USBSS (USB 3.0) and USBSSP (SuperSpeed Plus) IP in the
	  cdns.ko module. The implementation is selected at runtime from
	  the detected controller version.

	  USBSS gadget supports FF, HS and SS mode (not LS or SSP).
	  USBSSP gadget supports FF, HS, SS and SSP mode (not LS).

comment "Platform glue driver support"

config USB_CDNS3_PCI_WRAP
	tristate "Cadence USB3 support on PCIe-based platforms"
	depends on USB_PCI && ACPI
	default USB_CDNS3
	help
	  If you're using the USBSS Core IP with a PCIe, please say
	  'Y' or 'M' here.

	  If you choose to build this driver as module it will
	  be dynamically linked and module will be called cdns3-pci.ko

config USB_CDNSP_PCI
	tristate "Cadence USBSSP support on PCIe-based platforms"
	depends on USB_PCI && ACPI
	default USB_CDNS3
	help
	  If you're using the USBSSP Core IP with a PCIe, please say
	  'Y' or 'M' here.

	  If you choose to build this driver as module it will
	  be dynamically linked and module will be called cdnsp-pci.ko

config USB_CDNS3_TI
	tristate "Cadence USB3 support on TI platforms"
	depends on ARCH_K3 || COMPILE_TEST
	default USB_CDNS3
	help
	  Say 'Y' or 'M' here if you are building for Texas Instruments
	  platforms that contain Cadence USB3 controller core.

	  e.g. J721e.

config USB_CDNS3_IMX
	tristate "Cadence USB3 support on NXP i.MX platforms"
	depends on ARCH_MXC || COMPILE_TEST
	default USB_CDNS3
	help
	  Say 'Y' or 'M' here if you are building for NXP i.MX
	  platforms that contain Cadence USB3 controller core.

	  For example, imx8qm and imx8qxp.

config USB_CDNS3_STARFIVE
	tristate "Cadence USB3 support on StarFive SoC platforms"
	depends on ARCH_STARFIVE || COMPILE_TEST
	default USB_CDNS3
	help
	  Say 'Y' or 'M' here if you are building for StarFive SoCs
	  platforms that contain Cadence USB3 controller core.

	  e.g. JH7110.

	  If you choose to build this driver as module it will
	  be dynamically linked and module will be called cdns3-starfive.ko

endif # USB_CDNS3

endif # USB_CDNS_SUPPORT
