mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2025-01-18 12:52:44 +01:00
112f0c6cfc
There are STM32 families where all models use only the Synopsys DWC2 USB OTG core while others completely use only the USB Device FS core. For these families then either the driver `drivers/usbdev_synopsys_dwc2` or the driver `cpu/stm32/periph/usbdev` is used depending on the respective family. However, the STM32 families F1 and L4 use both cores. The correct driver must therefore be selected depending on the CPU line or CPU model.
87 lines
3.0 KiB
Makefile
87 lines
3.0 KiB
Makefile
# tinyUSB mutexes use priority inheritance
|
|
# USEMODULE += core_mutex_priority_inheritance
|
|
|
|
# tinyUSB modules always needed
|
|
USEMODULE += tinyusb_common
|
|
USEMODULE += tinyusb_contrib
|
|
USEMODULE += tinyusb_hw
|
|
|
|
DEFAULT_MODULE += auto_init_tinyusb
|
|
|
|
ifeq (,$(filter tinyusb_class_%,$(USEMODULE)))
|
|
$(error At least one tinyusb_class_* module has to be enabled)
|
|
endif
|
|
|
|
# tinyUSB device stack has to be supported if tinyusb_device is used
|
|
ifneq (,$(filter tinyusb_device,$(USEMODULE)))
|
|
FEATURES_REQUIRED += tinyusb_device
|
|
endif
|
|
|
|
# tinyUSB host stack has to be supported if tinyusb_host is used
|
|
ifneq (,$(filter tinyusb_host,$(USEMODULE)))
|
|
FEATURES_REQUIRED += tinyusb_host
|
|
endif
|
|
|
|
# Following device classes work only with tinyUSB device stack
|
|
ifneq (,$(filter tinyusb_class_audio,$(USEMODULE)))
|
|
FEATURES_REQUIRED += tinyusb_device
|
|
endif
|
|
ifneq (,$(filter tinyusb_class_bth,$(USEMODULE)))
|
|
FEATURES_REQUIRED += tinyusb_device
|
|
endif
|
|
ifneq (,$(filter tinyusb_class_dfu,$(USEMODULE)))
|
|
FEATURES_REQUIRED += tinyusb_device
|
|
endif
|
|
ifneq (,$(filter tinyusb_class_dfu_runtime,$(USEMODULE)))
|
|
FEATURES_REQUIRED += tinyusb_device
|
|
endif
|
|
ifneq (,$(filter tinyusb_class_midi,$(USEMODULE)))
|
|
FEATURES_REQUIRED += tinyusb_device
|
|
endif
|
|
ifneq (,$(filter tinyusb_class_net_ecm_rndis,$(USEMODULE)))
|
|
FEATURES_REQUIRED += tinyusb_device
|
|
endif
|
|
ifneq (,$(filter tinyusb_class_net_ncm,$(USEMODULE)))
|
|
FEATURES_REQUIRED += tinyusb_device
|
|
endif
|
|
ifneq (,$(filter tinyusb_class_usbtmc,$(USEMODULE)))
|
|
FEATURES_REQUIRED += tinyusb_device
|
|
endif
|
|
ifneq (,$(filter tinyusb_class_video,$(USEMODULE)))
|
|
FEATURES_REQUIRED += tinyusb_device
|
|
endif
|
|
|
|
# tinyUSB hardware driver selection
|
|
ifneq (,$(filter esp32s2 esp32s3,$(CPU_FAM)))
|
|
USEMODULE += tinyusb_portable_espressif
|
|
else ifeq (nrf52,$(CPU))
|
|
USEPKG += nrfx
|
|
USEMODULE += tinyusb_portable_nrf5x
|
|
else ifneq (,$(filter saml21 samd5x samd21,$(CPU)))
|
|
USEMODULE += tinyusb_portable_microchip
|
|
else ifeq (stm32,$(CPU))
|
|
ifneq (,$(filter f2 f4 f7 h7 u5,$(CPU_FAM)))
|
|
# Whole STM32 families F2, F4, F7, H7 and U5 use the Synopsys DWC2 USB OTG core
|
|
USEMODULE += tinyusb_portable_synopsys_dwc2
|
|
else ifneq (,$(filter stm32f105% stm32f107%,$(CPU_MODEL)))
|
|
# STM32F105xx and STM32F107xx also use the Synopsys DWC2 USB OTG core
|
|
USEMODULE += tinyusb_portable_synopsys_dwc2
|
|
else ifneq (,$(filter stm32l47% stm32l48% stm32l49%,$(CPU_MODEL)))
|
|
# STM32L475xx, STM32L476xx, STM32L485xx, STM32L486xx and STM32L496xx
|
|
# also use the Synopsys DWC2 USB OTG core
|
|
USEMODULE += tinyusb_portable_synopsys_dwc2
|
|
else ifneq (,$(filter stm32l4a% stm32l4p% stm32l4q% stm32l4r% stm32l4s%,$(CPU_MODEL)))
|
|
# STM32L4Axxx, STM32L4Pxxx, STM32L4Qxxx, STM32L4Rxxx and STM32L4Sxxx
|
|
# also use the Synopsys DWC2 USB OTG core
|
|
USEMODULE += tinyusb_portable_synopsys_dwc2
|
|
else
|
|
# all other STM32 with USB interface use USB FS Device core
|
|
USEMODULE += tinyusb_portable_stm32_fsdev
|
|
endif
|
|
endif
|
|
|
|
# other module dependencies
|
|
USEMODULE += periph_usbdev_clk
|
|
USEMODULE += sema
|
|
USEMODULE += ztimer_msec
|