Boot Linux faster!

Check our new training course

Boot Linux faster!

Check our new training course
and Creative Commons CC-BY-SA
lecture and lab materials

Bootlin logo

Elixir Cross Referencer

# 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"
	depends on USB_DEVICE_DRIVER || ARCH_POSIX
	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"

source "samples/subsys/usb/usb_pid.Kconfig"

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 "Enable composite device driver"
	depends on USB
	help
	  Enable composite USB device driver.

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 256 65536 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_NUMOF_EP_WRITE_RETRIES
	int "Number of endpoint write retries"
	default 3
	help
	  Number of endpoint write retries.

config USB_DEVICE_SOF
	bool "Enable Start of Frame processing in events"
	default y if (USB_DEVICE_AUDIO && NRFX_USBD)

config USB_DEVICE_REMOTE_WAKEUP
	bool "Enable support for remote wakeup"
	help
	  This option requires USBD peripheral driver to also support remote wakeup.

config USB_DEVICE_BOS
	bool "Enable USB Binary Device Object Store (BOS)"

config USB_DEVICE_OS_DESC
	bool "Enable 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.

source "subsys/usb/class/Kconfig"

endif # USB_DEVICE_STACK