# SPDX-License-Identifier: GPL-2.0

config USB_ISP1760
	tristate "NXP ISP 1760/1761/1763 support"
	depends on USB || USB_GADGET
	select REGMAP_MMIO
	help
	  Say Y or M here if your system as an ISP1760/1763 USB host controller
	  or an ISP1761 USB dual-role controller.

	  This driver does not support isochronous transfers or OTG.
	  This USB controller is usually attached to a non-DMA-Master
	  capable bus. NXP's eval kit brings this chip on PCI card
	  where the chip itself is behind a PLB to simulate such
	  a bus.

	  To compile this driver as a module, choose M here: the
	  module will be called isp1760.

config USB_ISP1760_HCD
	bool

config USB_ISP1761_UDC
	bool

if USB_ISP1760

choice
	bool "ISP1760 Mode Selection"
	default USB_ISP1760_DUAL_ROLE if (USB && USB_GADGET)
	default USB_ISP1760_HOST_ROLE if (USB && !USB_GADGET)
	default USB_ISP1760_GADGET_ROLE if (!USB && USB_GADGET)

config USB_ISP1760_HOST_ROLE
	bool "Host only mode"
	depends on USB=y || USB=USB_ISP1760
	select USB_ISP1760_HCD
	help
	  Select this if you want to use the ISP1760 in host mode only. The
	  gadget function will be disabled.

config USB_ISP1760_GADGET_ROLE
	bool "Gadget only mode"
	depends on USB_GADGET=y || USB_GADGET=USB_ISP1760
	select USB_ISP1761_UDC
	help
	  Select this if you want to use the ISP1760 in peripheral mode only.
	  The host function will be disabled.

config USB_ISP1760_DUAL_ROLE
	bool "Dual Role mode"
	depends on USB=y || USB=USB_ISP1760
	depends on USB_GADGET=y || USB_GADGET=USB_ISP1760
	select USB_ISP1760_HCD
	select USB_ISP1761_UDC
	help
	  Select this if you want to use the ISP1760 in both host and
	  peripheral modes.

endchoice

endif
