menu USB
config USB_ARCH_HAS_HCD
	def_bool y

config USB
	bool "Support for Host-side USB"
	depends on USB_ARCH_HAS_HCD
	---help---
	  Universal Serial Bus (USB) is a specification for a serial bus
	  subsystem which offers higher speeds and more features than the
	  traditional PC serial port.  The bus supplies power to peripherals
	  and allows for hot swapping.  Up to 127 USB peripherals can be
	  connected to a single USB host in a tree structure.

	  The USB host is the root of the tree, the peripherals are the
	  leaves and the inner nodes are special USB devices called hubs.
	  Most PCs now have USB host ports, used to connect peripherals
	  such as scanners, keyboards, mice, modems, cameras, disks,
	  flash memory, network links, and printers to the PC.

	  Say Y here if your computer has a host-side USB port and you want
	  to use USB devices.  You then need to say Y to at least one of the
	  Host Controller Driver (HCD) options below.  Choose a USB 1.1
	  controller, such as "UHCI HCD support" or "OHCI HCD support",
	  and "EHCI HCD (USB 2.0) support" except for older systems that
	  do not have USB 2.0 support.  It doesn't normally hurt to select
	  them all if you are not certain.

	  If your system has a device-side USB port, used in the peripheral
	  side of the USB protocol, see the "USB Gadget" framework instead.

	  After choosing your HCD, then select drivers for the USB peripherals
	  you'll be using.  You may want to check out the information provided
	  in <file:Documentation/usb/> and especially the links given in
	  <file:Documentation/usb/usb-help.txt>.

if USB

config DM_USB
	bool "Enable driver model for USB"
	depends on USB && DM
	help
	  Enable driver model for USB. The USB interface is then implemented
	  by the USB uclass. Multiple USB controllers of different types
	  (XHCI, EHCI) can be attached and used. The 'usb' command works as
	  normal. OCHI is not supported at present.

	  Much of the code is shared but with this option enabled the USB
	  uclass takes care of device enumeration. USB devices can be
	  declared with the U_BOOT_USB_DEVICE() macro and will be
	  automatically probed when found on the bus.

source "drivers/usb/host/Kconfig"

source "drivers/usb/emul/Kconfig"

config USB_STORAGE
	bool "USB Mass Storage support"
	---help---
	  Say Y here if you want to connect USB mass storage devices to your
	  board's USB port.

config USB_KEYBOARD
	bool "USB Keyboard support"
	---help---
	  Say Y here if you want to use a USB keyboard for U-Boot command line
	  input.

if USB_KEYBOARD

choice
	prompt "USB keyboard polling"
	optional
	---help---
	  Enable a polling mechanism for USB keyboard.

	config SYS_USB_EVENT_POLL
		bool "Interrupt polling"

	config SYS_USB_EVENT_POLL_VIA_INT_QUEUE
		bool "Poll via interrupt queue"

	config SYS_USB_EVENT_POLL_VIA_CONTROL_EP
		bool "Poll via control EP"

endchoice

endif

endif
endmenu
