1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2024-12-29 04:50:03 +01:00
RIOT/pkg/tinyusb/Kconfig
2023-05-31 12:55:52 +02:00

263 lines
9.4 KiB
Plaintext

# Copyright (c) 2022 Gunar Schorcht
#
# This file is subject to the terms and conditions of the GNU Lesser
# General Public License v2.1. See the file LICENSE in the top level
# directory for more details.
#
config HAS_TINYUSB_DEVICE
bool
help
Indicates that the hardware supports tinyUSB device stack
config HAS_TINYUSB_HOST
bool
help
Indicates that the hardware supports tinyUSB host stack
config REQUIRES_TINYUSB_DEVICE
bool
help
Indicates that the application requires tinyUSB stack
config ERROR_TINYUSB_DEVICE
bool
default y if REQUIRES_TINYUSB_DEVICE && !MODULE_TINYUSB_DEVICE
help
The USB implmentation is required to be tinyUSB but cannot be set
choice USB_IMPLEMENTATION
default PACKAGE_TINYUSB if REQUIRES_TINYUSB_DEVICE
menuconfig PACKAGE_TINYUSB
bool "TinyUSB stack package"
depends on TEST_KCONFIG
depends on HAS_ARCH_32BIT
depends on HAS_TINYUSB_DEVICE || HAS_TINYUSB_HOST
select MODULE_FMT
select MODULE_LUID
select MODULE_PERIPH_USBDEV_CLK
select MODULE_SEMA
select MODULE_TINYUSB_COMMON
select MODULE_TINYUSB_CONTRIB
select MODULE_TINYUSB_HW
select MODULE_TINYUSB_PORTABLE_ESPRESSIF if CPU_FAM_ESP32S2 || CPU_FAM_ESP32S3
select MODULE_TINYUSB_PORTABLE_SYNOPSYS_DWC2 if CPU_FAM_GD32V
# Whole STM32 families F2, F4, F7 and U5 use the Synopsys DWC2 USB OTG core
select MODULE_TINYUSB_PORTABLE_SYNOPSYS_DWC2 if HAS_CPU_STM32F2
select MODULE_TINYUSB_PORTABLE_SYNOPSYS_DWC2 if HAS_CPU_STM32F4
select MODULE_TINYUSB_PORTABLE_SYNOPSYS_DWC2 if HAS_CPU_STM32F7
select MODULE_TINYUSB_PORTABLE_SYNOPSYS_DWC2 if HAS_CPU_STM32U5
# STM32F105xx and STM32F107xx lines also use the Synopsys DWC2 USB OTG core
select MODULE_TINYUSB_PORTABLE_SYNOPSYS_DWC2 if CPU_LINE_STM32F105XC
select MODULE_TINYUSB_PORTABLE_SYNOPSYS_DWC2 if CPU_LINE_STM32F107XC
# Several lines of STM32L4 family also use the Synopsys DWC2 USB OTG core
select MODULE_TINYUSB_PORTABLE_SYNOPSYS_DWC2 if CPU_LINE_STM32L475XX
select MODULE_TINYUSB_PORTABLE_SYNOPSYS_DWC2 if CPU_LINE_STM32L476XX
select MODULE_TINYUSB_PORTABLE_SYNOPSYS_DWC2 if CPU_LINE_STM32L485XX
select MODULE_TINYUSB_PORTABLE_SYNOPSYS_DWC2 if CPU_LINE_STM32L486XX
select MODULE_TINYUSB_PORTABLE_SYNOPSYS_DWC2 if CPU_LINE_STM32L496XX
select MODULE_TINYUSB_PORTABLE_SYNOPSYS_DWC2 if CPU_LINE_STM32L4A6XX
select MODULE_TINYUSB_PORTABLE_SYNOPSYS_DWC2 if CPU_LINE_STM32L4P5XX
select MODULE_TINYUSB_PORTABLE_SYNOPSYS_DWC2 if CPU_LINE_STM32L4Q5XX
select MODULE_TINYUSB_PORTABLE_SYNOPSYS_DWC2 if CPU_LINE_STM32L4R5XX
select MODULE_TINYUSB_PORTABLE_SYNOPSYS_DWC2 if CPU_LINE_STM32L4R7XX
select MODULE_TINYUSB_PORTABLE_SYNOPSYS_DWC2 if CPU_LINE_STM32L4R9XX
select MODULE_TINYUSB_PORTABLE_SYNOPSYS_DWC2 if CPU_LINE_STM32L4S5XX
select MODULE_TINYUSB_PORTABLE_SYNOPSYS_DWC2 if CPU_LINE_STM32L4S7XX
select MODULE_TINYUSB_PORTABLE_SYNOPSYS_DWC2 if CPU_LINE_STM32L4S9XX
# Whole STM32 families F0, F3, G0, G4, L0, L1, L5 and WB use the Synopsys DWC2 USB OTG core
select MODULE_TINYUSB_PORTABLE_STM32_FSDEV if HAS_CPU_STM32F0
select MODULE_TINYUSB_PORTABLE_STM32_FSDEV if HAS_CPU_STM32F3
select MODULE_TINYUSB_PORTABLE_STM32_FSDEV if HAS_CPU_STM32G0
select MODULE_TINYUSB_PORTABLE_STM32_FSDEV if HAS_CPU_STM32G4
select MODULE_TINYUSB_PORTABLE_STM32_FSDEV if HAS_CPU_STM32L0
select MODULE_TINYUSB_PORTABLE_STM32_FSDEV if HAS_CPU_STM32L1
select MODULE_TINYUSB_PORTABLE_STM32_FSDEV if HAS_CPU_STM32L5
select MODULE_TINYUSB_PORTABLE_STM32_FSDEV if HAS_CPU_STM32WB
# STM32F102xx and STM32F103xx lines also use USB FS Device core
select MODULE_TINYUSB_PORTABLE_STM32_FSDEV if CPU_LINE_STM32F102X6
select MODULE_TINYUSB_PORTABLE_STM32_FSDEV if CPU_LINE_STM32F102XB
select MODULE_TINYUSB_PORTABLE_STM32_FSDEV if CPU_LINE_STM32F103X6
select MODULE_TINYUSB_PORTABLE_STM32_FSDEV if CPU_LINE_STM32F103XB
select MODULE_TINYUSB_PORTABLE_STM32_FSDEV if CPU_LINE_STM32F103XE
select MODULE_TINYUSB_PORTABLE_STM32_FSDEV if CPU_LINE_STM32F103XG
# Following STM32L4 lines also use USB FS Device core
select MODULE_TINYUSB_PORTABLE_STM32_FSDEV if CPU_LINE_STM32L412XX
select MODULE_TINYUSB_PORTABLE_STM32_FSDEV if CPU_LINE_STM32L422XX
select MODULE_TINYUSB_PORTABLE_STM32_FSDEV if CPU_LINE_STM32L432XX
select MODULE_TINYUSB_PORTABLE_STM32_FSDEV if CPU_LINE_STM32L433XX
select MODULE_TINYUSB_PORTABLE_STM32_FSDEV if CPU_LINE_STM32L442XX
select MODULE_TINYUSB_PORTABLE_STM32_FSDEV if CPU_LINE_STM32L443XX
select MODULE_TINYUSB_PORTABLE_STM32_FSDEV if CPU_LINE_STM32L452XX
select MODULE_TINYUSB_PORTABLE_STM32_FSDEV if CPU_LINE_STM32L462XX
#
select MODULE_TINYUSB_PORTABLE_MICROCHIP if CPU_FAM_SAMD21 || CPU_FAM_SAMR21 \
|| CPU_COMMON_SAMD5X || CPU_FAM_SAML21 || CPU_FAM_SAMR34 \
|| CPU_FAM_SAMR30
select MODULE_TINYUSB_PORTABLE_NRF5X if CPU_FAM_NRF52
select MODULE_ZTIMER_MSEC
select PACKAGE_NRFX if CPU_FAM_NRF52
help
tinyUSB is an open-source cross-platform USB Host/Device stack for
embedded systems.
if PACKAGE_TINYUSB
config MODULE_AUTO_INIT_TINYUSB
bool "Auto-initialize the tinyUSB package"
depends on MODULE_AUTO_INIT
default y
help
The tinyUSB stack including the used peripherals are initialized
automatically at startup. Additionally, the auto-initialization
starts the tinyUSB thread.
config MODULE_TINYUSB_COMMON
bool
help
Common tinyUSB files
config MODULE_TINYUSB_CONTRIB
bool
help
RIOT support for tinyUSB
config MODULE_TINYUSB_HW
bool
help
tinyUSB hardware driver implementation
config MODULE_TINYUSB_DEVICE
bool "Device Stack"
depends on HAS_TINYUSB_DEVICE
select MODULE_TINYUSB_CLASS_CDC if REQUIRES_USB_STDIO
default y
help
Select to enable tinyUSB device stack
config MODULE_TINYUSB_HOST
bool "Host Stack"
depends on HAS_TINYUSB_HOST
help
Select to enable tinyUSB host stack
config MODULE_TINYUSB_LIB_NETWORKING
bool
config MODULE_TINYUSB_PORTABLE_ESPRESSIF
bool
help
tinyUSB driver for ESP32Sx is used
config MODULE_TINYUSB_PORTABLE_SYNOPSYS_DWC2
bool
help
tinyUSB Sysnopsys DCW2 driver is used
config MODULE_TINYUSB_PORTABLE_STM32_FSDEV
bool
help
tinyUSB STM32 FS device driver is used
config MODULE_TINYUSB_PORTABLE_MICROCHIP
bool
help
tinyUSB Microchip SAM0 driver is used
config MODULE_TINYUSB_PORTABLE_NRF5X
bool
help
tinyUSB nRFx device driver is used
menu "Device Classes"
config MODULE_TINYUSB_CLASS_AUDIO
bool "Audio Class 2.0 (UAC2)"
depends on MODULE_TINYUSB_DEVICE
config MODULE_TINYUSB_CLASS_BTH
bool "Bluetooth Host Controller Interface (BTH HCI)"
depends on MODULE_TINYUSB_DEVICE
rsource "Kconfig.cdc"
rsource "dfu/Kconfig.dfu"
rsource "dfu/Kconfig.dfu_rt"
rsource "Kconfig.hid"
rsource "Kconfig.msc"
config MODULE_TINYUSB_CLASS_MIDI
bool "Musical Instrument Digital Interface (MIDI)"
depends on MODULE_TINYUSB_DEVICE
rsource "Kconfig.net"
config MODULE_TINYUSB_CLASS_USBTMC
bool "Test and Measurement Class (USBTMC)"
depends on MODULE_TINYUSB_DEVICE
config MODULE_TINYUSB_CLASS_VENDOR
bool "Vendor-specific class support with generic IN & OUT endpoints"
config MODULE_TINYUSB_CLASS_VIDEO
bool "Video class 1.5 (UVC)"
depends on MODULE_TINYUSB_DEVICE
endmenu
if MODULE_TINYUSB_DEVICE
config TUSBD_EP0_SIZE
int "Device control endpoint (EP0) size [byte]"
default 64
config TUSBD_FS_EP_SIZE
int "Device endpoint size in Full-Speed mode [byte]"
default 64
config TUSBD_HS_EP_SIZE
int "Device endpoint size in High-Speed mode [byte]"
default 512
config TUSBD_USE_CUSTOM_DESC
bool "Custom device descriptors"
depends on MODULE_TINYUSB_DEVICE
help
Enable this option to define custom descriptors for the selected
device classes. Otherwise, generic descriptors will be generated
according to the selected device classes.
At the moment, the generation of generic descriptors is only supported
for all combinations of up to two CDC interfaces, up to two generic
In/Out HID interfaces, up to one MSC interface and up to one vendor
interface. In all other cases, custom descriptors must be implemented
and handled.
config MODULE_TINYUSB_DFU
bool "tinyUSB DFU driver module"
select MODULE_TINYUSB_CLASS_DFU if MODULE_RIOTBOOT_TINYUSB_DFU
select MODULE_TINYUSB_CLASS_DFU_RUNTIME if !MODULE_RIOTBOOT_TINYUSB_DFU
help
Enable tinyUSB Device Firmware Upgrade driver implementation used
either in DFU mode by the bootloader or in DFU runtime mode by the
application. It is enabled by default, if the tinyUSB DFU variant
of the riotboot bootloader is used.
config MODULE_RIOTBOOT_TINYUSB_DFU
# TODO move to sys/riotboot/Kconfig once it is modelled
bool "tinyUSB DFU variant of riotboot bootloader"
depends on HAS_NO_IDLE_THREAD
depends on HAS_PERIPH_PM
select MODULE_RIOTBOOT_FLASHWRITE
select MODULE_TINYUSB_DFU
select MODULE_TINYUSB_CLASS_DFU
select MODULE_ZTIMER_SEC
help
Enable this option to use the tinyUSB DFU variant of the riotboot
bootloader.
endif # MODULE_TINYUSB_DEVICE
endif # PACKAGE_TINYUSB
endchoice
rsource "cdc_acm_stdio/Kconfig"