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
	tristate "Cadence USBSSP DRD Platform Driver"
	help
	  Say Y here if your system has a Cadence USBSSP dual-role controller
	  on a platform bus (not PCI).

	  This is required for SoCs with integrated CDNSP controllers.

	  If you choose to build this driver as a module, the module will
	  be called cdnsp.ko.

config USB_CDNSP_PCI
	tristate "Cadence USBSSP DRD PCI Driver"
	depends on USB_PCI && ACPI
	help
	  Say Y here if your system has a Cadence CDNSP dual-role controller
	  on a PCI bus.

	  If you choose to build this driver as a module, the module will
	  be called cdnsp-udc-pci.ko.

endif

if USB_CDNSP || USB_CDNSP_PCI

config USB_CDNSP_GADGET
	bool "Cadence CDNSP device controller"
	depends on USB_GADGET=y || USB_GADGET=USB_CDNSP || 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 || 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

if USB_CDNSP

config USB_CDNSP_SKY1
	tristate "Cadence USBSSP support on CIX Sky1 SoC platforms"
	depends on ARCH_CIX || COMPILE_TEST
	default USB_CDNSP
	help
	  Say 'Y' or 'M' here if you are building for CIX Sky1 SoCs
	  platforms that contain Cadence USBSSP controller core.

	  e.g. Sky1 (Orion O6).

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

endif
