# Copyright (c) 2022 Nordic Semiconductor ASA
#
# SPDX-License-Identifier: Apache-2.0

menuconfig USB_HOST_STACK
	bool "USB host stack [EXPERIMENTAL]"
	select EXPERIMENTAL
	select UHC_DRIVER
	help
	  New experimental USB host stack.

if USB_HOST_STACK

module = USBH
module-str = usbh
source "subsys/logging/Kconfig.template.log_config"

config USBH_SHELL
	bool "USB host shell"
	depends on SHELL
	help
	  Shell commands for USB host support.

config USBH_INIT_PRIO
	int
	default 90
	help
	  USB host thread initialization priority level.

config USBH_STACK_SIZE
	int "USB host stack thread stack size"
	default 1024
	help
	  USB host stack thread stack size in bytes.

config USBH_MAX_UHC_MSG
	int "Maximum number of UHC events"
	default 10
	help
	  Maximum number of USB host controller events that can be queued.

endif # USB_HOST_STACK
