config USB_CDNS_SUPPORT
	tristate "Cadence USB Support"
	depends on USB_SUPPORT && (USB || USB_GADGET) && HAS_DMA
	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.

config USB_CDNS_HOST
	bool

if USB_CDNS_SUPPORT

config USB_CDNS3
	tristate "Cadence USB3 Dual-Role Controller"
	depends on USB_CDNS_SUPPORT
	help
	  Say Y here if your system has a Cadence USB3 dual-role controller.
	  It supports: dual-role switch, Host-only, and Peripheral-only.

	  If you choose to build this driver is a dynamically linked
	  as module, the module will be called cdns3.ko.
endif

if USB_CDNS3

config USB_CDNS3_GADGET
	bool "Cadence USB3 device controller"
	depends on USB_GADGET=y || USB_GADGET=USB_CDNS3
	help
	  Say Y here to enable device controller functionality of the
	  Cadence USBSS-DEV driver.

	  This controller supports FF, HS and SS mode. It doesn't support
	  LS and SSP mode.

config USB_CDNS3_HOST
	bool "Cadence USB3 host controller"
	depends on USB=y || USB=USB_CDNS3
	select USB_CDNS_HOST
	help
	  Say Y here to enable host controller functionality of the
	  Cadence driver.

	  Host controller is compliant with XHCI so it will use
	  standard XHCI driver.

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_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
	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

if USB_CDNS_SUPPORT

config USB_CDNSP_PCI
	tristate "Cadence CDNSP Dual-Role Controller"
	depends on USB_CDNS_SUPPORT && USB_PCI && ACPI
	help
	  Say Y here if your system has a Cadence CDNSP dual-role controller.
	  It supports: dual-role switch Host-only, and Peripheral-only.

	  If you choose to build this driver is a dynamically linked
	  module, the module will be called cdnsp.ko.
endif

if USB_CDNSP_PCI

config USB_CDNSP_GADGET
	bool "Cadence CDNSP device controller"
	depends on USB_GADGET=y || USB_GADGET=USB_CDNSP_PCI
	help
	  Say Y here to enable device controller functionality of the
	  Cadence CDNSP-DEV driver.

	  Cadence CDNSP Device Controller in device mode is
	  very similar to XHCI controller. Therefore some algorithms
	  used has been taken from host driver.
	  This controller supports FF, HS, SS and SSP mode.
	  It doesn't support LS.

config USB_CDNSP_HOST
	bool "Cadence CDNSP host controller"
	depends on USB=y || USB=USB_CDNSP_PCI
	select USB_CDNS_HOST
	help
	  Say Y here to enable host controller functionality of the
	  Cadence driver.

	  Host controller is compliant with XHCI so it uses
	  standard XHCI driver.

endif
