# 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 l4,$(CPU_FAM))) # STM32 families F2, F4, F7, H7 and L4 use the Synopsys DWC2 USB OTG IP core USEMODULE += tinyusb_portable_synopsys_dwc2 else ifneq (,$(filter stm32f105% stm32f107%,$(CPU_MODEL))) # STM32F105xx and STM32F107xx also use the Synopsys DWC2 USB OTG IP core USEMODULE += tinyusb_portable_synopsys_dwc2 else # All other STM32 MCUs use the USB Device FS IP core. USEMODULE += tinyusb_portable_stm32_fsdev endif endif # other module dependencies USEMODULE += periph_usbdev_clk USEMODULE += sema USEMODULE += ztimer_msec