Linux Audio

Check our new training course

Loading...
# 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 && NRF_USBD_COMMON)

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_GCOV
	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