# Use "select HAVE_USBDEBUG" on southbridges which have Debug Port code.
config HAVE_USBDEBUG
	bool
	default y if HAVE_USBDEBUG_OPTIONS
	default n

# Use "select HAVE_USBDEBUG_OPTIONS" on southbridges with multiple
# EHCI controllers or multiple ports with Debug Port capability
config HAVE_USBDEBUG_OPTIONS
	def_bool n

config USBDEBUG
	bool "USB 2.0 EHCI debug dongle support"
	default n
	depends on HAVE_USBDEBUG
	help
	  This option allows you to use a so-called USB EHCI Debug device
	  (such as the Ajays NET20DC, AMIDebug RX, or a system using the
	  Linux "EHCI Debug Device gadget" driver found in recent kernel)
	  to retrieve the coreboot debug messages (instead, or in addition
	  to, a serial port).

	  This feature is NOT supported on all chipsets in coreboot!

	  It also requires a USB2 controller which supports the EHCI
	  Debug Port capability.

	  See https://www.coreboot.org/EHCI_Debug_Port for an up-to-date list
	  of supported controllers.

	  If unsure, say N.

if USBDEBUG

config USBDEBUG_IN_PRE_RAM
	bool "Enable early (pre-RAM) usbdebug"
	default y
	help
	   Configuring USB controllers in system-agent binary may cause
	   problems to usbdebug. Disabling this option delays usbdebug to
	   be setup on entry to ramstage.

	   If unsure, say Y.

config USBDEBUG_HCD_INDEX
	int
	default 0
	prompt "Index for EHCI controller to use with usbdebug" if HAVE_USBDEBUG_OPTIONS
	help
	   Some boards have multiple EHCI controllers with possibly only
	   one having the Debug Port capability on an external USB port.

	   Mapping of this index to PCI device functions is southbridge
	   specific and mainboard level Kconfig should already provide
	   a working default value here.

config USBDEBUG_DEFAULT_PORT
	int
	default 0
	prompt "Default USB port to use as Debug Port" if HAVE_USBDEBUG_OPTIONS
	help
	  Selects which physical USB port usbdebug dongle is connected to.
	  Setting of 0 means to scan possible ports starting from 1.

	  Intel platforms have hardwired the debug port location and this
	  setting makes no difference there.

	  Hence, if you select the correct port here, you can speed up
	  your boot time. Which USB port number refers to which actual
	  port on your mainboard (potentially also USB pin headers on
	  your mainboard) is highly board-specific, and you'll likely
	  have to find out by trial-and-error.

choice
	prompt "Type of dongle"
	default USBDEBUG_DONGLE_STD

config USBDEBUG_DONGLE_STD
	bool "USB gadget driver or Net20DC"
	help
	  Net20DC, BeagleBone Black, Raspberry Pi Zero W

config USBDEBUG_DONGLE_BEAGLEBONE
	bool "BeagleBone (not BeagleBone Black)"
	help
	  Use this to configure the USB hub on BeagleBone board.
	  Do NOT select this for the BeagleBone Black.

config USBDEBUG_DONGLE_FTDI_FT232H
	bool "FTDI FT232H UART"
	help
	  Use this with FT232H usb-to-uart. Configuration is hard-coded
	  to use 8n1, no flow control.

endchoice

config USBDEBUG_DONGLE_FTDI_FT232H_BAUD
	int "FTDI FT232H baud rate"
	default 115200
	depends on USBDEBUG_DONGLE_FTDI_FT232H
	help
	  Select baud rate for FT232H in the range 733..12,000,000. Make
	  sure that your receiving side supports the same setting and your
	  connection works with it. Multiples of 115,200 seem to be a good
	  choice, and EHCI debug usually can't saturate more than 576,000.

config USBDEBUG_OPTIONAL_HUB_PORT
	int
	default 2 if USBDEBUG_DONGLE_BEAGLEBONE
	default 0

endif # USBDEBUG