| # USB device stack configuration options | 
 |  | 
 | # Copyright (c) 2016 Wind River Systems, Inc. | 
 | # SPDX-License-Identifier: Apache-2.0 | 
 |  | 
 | menuconfig USB_DEVICE_STACK | 
 | 	bool "USB Device Support" | 
 | 	select USB_DEVICE_DRIVER | 
 | 	select HWINFO | 
 | 	help | 
 | 	  Enable USB device stack. | 
 |  | 
 | if USB_DEVICE_STACK | 
 |  | 
 | module = USB_DEVICE | 
 | module-str = usb device | 
 | source "subsys/logging/Kconfig.template.log_config" | 
 |  | 
 | config USB_DEVICE_VID | 
 | 	hex "USB Vendor ID" | 
 | 	default 0x2FE3 | 
 | 	help | 
 | 	  USB device vendor ID. MUST be configured by vendor. | 
 |  | 
 | config USB_DEVICE_PID | 
 | 	hex "USB Product ID" | 
 | 	default 0x0100 | 
 | 	help | 
 | 	  USB device product ID. MUST be configured by vendor. | 
 |  | 
 | config USB_DEVICE_MANUFACTURER | 
 | 	string "USB manufacturer name" | 
 | 	default "ZEPHYR" | 
 | 	help | 
 | 	  USB device Manufacturer string. MUST be configured by vendor. | 
 |  | 
 | config USB_DEVICE_PRODUCT | 
 | 	string "USB product name" | 
 | 	default "USB-DEV" | 
 | 	help | 
 | 	  USB device Product string. MUST be configured by vendor. | 
 |  | 
 | config USB_DEVICE_SN | 
 | 	string "USB device Serial Number String" | 
 | 	default "0123456789ABCDEF" | 
 | 	help | 
 | 	  Placeholder for USB device Serial Number String. | 
 | 	  Serial Number String will be derived from | 
 | 	  Hardware Information Driver (HWINFO). | 
 |  | 
 | config USB_COMPOSITE_DEVICE | 
 | 	bool "Use Interface Association Descriptor code triple" | 
 | 	help | 
 | 	  This option modifies the code triple in the device descriptor | 
 | 	  to signal that one of the functions has two or more interfaces and | 
 | 	  uses the Interface Association Descriptor. | 
 |  | 
 | config USB_MAX_NUM_TRANSFERS | 
 |     int "Set number of USB transfer data buffers" | 
 |     range 1 32 | 
 |     default 4 | 
 |     help | 
 |         Allocates buffers used for parallel transfers. Increase this number | 
 |         according to USB devices count. | 
 |  | 
 | config USB_DEVICE_BLUETOOTH_BIG_BUF | 
 | 	bool | 
 | 	# Hidden option to simplify bluetooth buffer requirement | 
 | 	# TODO: Add BUF reserve in H4 mode and ISO? | 
 | 	default y if BT_BUF_ACL_RX_SIZE > 123 # 4 byte header | 
 | 	default y if BT_BUF_ACL_TX_SIZE > 123 # 4 byte header | 
 | 	default y if BT_BUF_EVT_RX_SIZE > 125 # 2 byte header | 
 | 	default y if BT_BUF_CMD_TX_SIZE > 124 # 3 byte header | 
 |  | 
 | config USB_REQUEST_BUFFER_SIZE | 
 | 	int "Set buffer size for Standard, Class and Vendor request handlers" | 
 | 	range 64 512 if USB_DEVICE_NETWORK_RNDIS | 
 | 	range 8 65536 | 
 | 	default 256 if USB_DEVICE_NETWORK_RNDIS | 
 | 	default 266 if (USB_DEVICE_BLUETOOTH && USB_DEVICE_BLUETOOTH_BIG_BUF) | 
 | 	default 1024 if USB_DEVICE_LOOPBACK | 
 | 	default 128 | 
 |  | 
 | config USB_MAX_ALT_SETTING | 
 | 	int "Size of the array where alternate settings are stored" | 
 | 	range 0 16 | 
 | 	default 8 | 
 | 	help | 
 | 	  Size of the array where alternate settings are stored. | 
 | 	  Should not be smaller than the number of interfaces. | 
 |  | 
 | config USB_NUMOF_EP_WRITE_RETRIES | 
 | 	int "Number of endpoint write retries" | 
 | 	default 3 | 
 | 	help | 
 | 	  Number of endpoint write retries. | 
 |  | 
 | config USB_DEVICE_SOF | 
 | 	bool "Start of Frame processing in events" | 
 | 	default y if (USB_DEVICE_AUDIO && NRFX_USBD) | 
 |  | 
 | config USB_DEVICE_BOS | 
 | 	bool "USB Binary Device Object Store (BOS)" | 
 |  | 
 | config USB_DEVICE_OS_DESC | 
 | 	bool "MS OS Descriptors support" | 
 |  | 
 | config USB_SELF_POWERED | 
 | 	bool "Set Self-powered characteristic" | 
 | 	default y | 
 | 	help | 
 | 	  Set Self-powered characteristic in bmAttributes to indicate | 
 | 	  self powered USB device. | 
 |  | 
 | config USB_MAX_POWER | 
 | 	int "Set bMaxPower value" | 
 | 	default 50 | 
 | 	range 0 250 | 
 | 	help | 
 | 	  Set bMaxPower value in the Standard Configuration Descriptor, | 
 | 	  the result is 2mA times the value provided. | 
 |  | 
 | config USB_WORKQUEUE | 
 | 	bool "Use a dedicate work queue in the USB subsystem" | 
 | 	default y if USB_CDC_ACM | 
 | 	help | 
 | 	  This option provides a dedicated work queue that is used for | 
 | 	  all offloaded operations initiated by the USB subsystem. | 
 | 	  This prevents deadlock situations where tasks on the system | 
 | 	  workqueue inadvertently initiate operations that block, such | 
 | 	  as UART transmission on CDC-ACM, preventing the system work | 
 | 	  queue from making progress on the USB tasks that would | 
 | 	  release the task. | 
 |  | 
 | 	  Without this the system work queue is used for all USB | 
 | 	  offloaded transfers. | 
 |  | 
 | config USB_WORKQUEUE_STACK_SIZE | 
 | 	int "USB workqueue stack size" | 
 | 	depends on USB_WORKQUEUE | 
 | 	default 4096 if COVERAGE | 
 | 	default 1024 | 
 |  | 
 | config USB_WORKQUEUE_PRIORITY | 
 | 	int "USB workqueue priority" | 
 | 	depends on USB_WORKQUEUE | 
 | 	default -2 if COOP_ENABLED && !PREEMPT_ENABLED | 
 | 	default  0 if !COOP_ENABLED | 
 | 	default -1 | 
 | 	help | 
 | 	  By default, USB work queue priority is the lowest cooperative | 
 | 	  priority. This means that any work handler, once started, won't | 
 | 	  be preempted by any other thread until finished. | 
 |  | 
 | config USB_DEVICE_INITIALIZE_AT_BOOT | 
 | 	bool "Initialize USB device support at boot" | 
 | 	depends on USB_CDC_ACM | 
 | 	help | 
 | 	  Use CDC ACM UART as backend for console, shell, or logging. | 
 |  | 
 | source "subsys/usb/device/class/Kconfig" | 
 |  | 
 | endif # USB_DEVICE_STACK |