zephyr/subsys/usb/CMakeLists.txt
Peter Bigot 611263921a usb: add optional work queue
The USB infrastructure currently uses the system work queue for
offloading transfers, CDC-ACM UART transmission/reception, and device
firmware activities.  This causes problems when the system work queue
is also used to initiate some activities (such as UART) that normally
complete without requiring an external thread: in that case the USB
infrastructure is prevented from making progress because the system
work queue is blocked waiting for the USB infrastructure to provide
data.

Break the dependency by allowing the USB infrastructure to use a
dedicated work queue which doesn't depend on availability of the
system work queue.

Signed-off-by: Peter Bigot <peter.bigot@nordicsemi.no>
2020-09-16 13:32:22 -05:00

35 lines
812 B
CMake

# SPDX-License-Identifier: Apache-2.0
if(CONFIG_USB_DEVICE_STACK)
zephyr_include_directories(${ZEPHYR_BASE}/subsys/usb)
zephyr_sources(
usb_device.c
usb_descriptor.c
usb_transfer.c
)
add_subdirectory(class)
endif()
zephyr_sources_ifdef(CONFIG_USB_DEVICE_BOS bos.c)
zephyr_sources_ifdef(CONFIG_USB_DEVICE_OS_DESC os_desc.c)
zephyr_sources_ifdef(CONFIG_USB_WORKQUEUE usb_work_q.c)
if(CONFIG_USB_DEVICE_VID EQUAL 0x2FE3)
message(WARNING
"CONFIG_USB_DEVICE_VID has default value 0x2FE3.
This value is only for testing and MUST be configured for USB products."
)
if(CONFIG_USB_DEVICE_PID EQUAL 0x100)
message(WARNING
"CONFIG_USB_DEVICE_PID has default value 0x100.
This value is only for testing and MUST be configured for USB products."
)
endif()
endif()