summaryrefslogtreecommitdiff
path: root/src/device
diff options
context:
space:
mode:
authorHa Thach <[email protected]>2022-02-26 01:00:07 +0700
committerGitHub <[email protected]>2022-02-26 01:00:07 +0700
commit5b7a01ba79f7a048ddea3b5dedf187746cd21225 (patch)
treef2ae941108ea7c3c610c92de4fe95431be149176 /src/device
parent13a4582ce25cd47e346f317c9eb412af7a2c17a2 (diff)
parent1482a415240171b7ff2bd2ee0f123635dd15f9a4 (diff)
Merge pull request #1350 from hathach/enhance-multipl-ports
Enhance rhports management
Diffstat (limited to 'src/device')
-rw-r--r--src/device/dcd.h1
-rw-r--r--src/device/dcd_attr.h225
-rw-r--r--src/device/usbd.c34
-rw-r--r--src/device/usbd.h8
-rw-r--r--src/device/usbd_control.c2
-rw-r--r--src/device/usbd_pvt.h2
6 files changed, 29 insertions, 243 deletions
diff --git a/src/device/dcd.h b/src/device/dcd.h
index fbcef40d4..4e725c95a 100644
--- a/src/device/dcd.h
+++ b/src/device/dcd.h
@@ -30,7 +30,6 @@
#include "common/tusb_common.h"
#include "osal/osal.h"
#include "common/tusb_fifo.h"
-#include "dcd_attr.h"
#ifdef __cplusplus
extern "C" {
diff --git a/src/device/dcd_attr.h b/src/device/dcd_attr.h
deleted file mode 100644
index e16a5ccca..000000000
--- a/src/device/dcd_attr.h
+++ /dev/null
@@ -1,225 +0,0 @@
-/*
- * The MIT License (MIT)
- *
- * Copyright (c) 2021, Ha Thach (tinyusb.org)
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- *
- * This file is part of the TinyUSB stack.
- */
-
-#ifndef TUSB_DCD_ATTR_H_
-#define TUSB_DCD_ATTR_H_
-
-#include "tusb_option.h"
-
-// Attribute includes
-// - ENDPOINT_MAX: max (logical) number of endpoint
-// - ENDPOINT_EXCLUSIVE_NUMBER: endpoint number with different direction IN and OUT aren't allowed,
-// e.g EP1 OUT & EP1 IN cannot exist together
-// - PORT_HIGHSPEED: mask to indicate which port support highspeed mode, bit0 for port0 and so on.
-
-//------------- NXP -------------//
-#if TU_CHECK_MCU(OPT_MCU_LPC11UXX, OPT_MCU_LPC13XX, OPT_MCU_LPC15XX)
- #define DCD_ATTR_ENDPOINT_MAX 5
-
-#elif TU_CHECK_MCU(OPT_MCU_LPC175X_6X, OPT_MCU_LPC177X_8X, OPT_MCU_LPC40XX)
- #define DCD_ATTR_ENDPOINT_MAX 16
-
-#elif TU_CHECK_MCU(OPT_MCU_LPC18XX, OPT_MCU_LPC43XX)
- // TODO USB0 has 6, USB1 has 4
- #define DCD_ATTR_CONTROLLER_CHIPIDEA_HS
- #define DCD_ATTR_ENDPOINT_MAX 6
-
-#elif TU_CHECK_MCU(OPT_MCU_LPC51UXX)
- #define DCD_ATTR_ENDPOINT_MAX 5
-
-#elif TU_CHECK_MCU(OPT_MCU_LPC54XXX)
- // TODO USB0 has 5, USB1 has 6
- #define DCD_ATTR_ENDPOINT_MAX 6
-
-#elif TU_CHECK_MCU(OPT_MCU_LPC55XX)
- // TODO USB0 has 5, USB1 has 6
- #define DCD_ATTR_ENDPOINT_MAX 6
-
-#elif TU_CHECK_MCU(OPT_MCU_MIMXRT10XX)
- #define DCD_ATTR_CONTROLLER_CHIPIDEA_HS
- #define DCD_ATTR_ENDPOINT_MAX 8
-
-#elif TU_CHECK_MCU(OPT_MCU_MKL25ZXX, OPT_MCU_K32L2BXX)
- #define DCD_ATTR_ENDPOINT_MAX 16
-
-#elif TU_CHECK_MCU(OPT_MCU_MM32F327X)
- #define DCD_ATTR_ENDPOINT_MAX 16
-
-//------------- Nordic -------------//
-#elif TU_CHECK_MCU(OPT_MCU_NRF5X)
- // 8 CBI + 1 ISO
- #define DCD_ATTR_ENDPOINT_MAX 9
-
-//------------- Microchip -------------//
-#elif TU_CHECK_MCU(OPT_MCU_SAMD21, OPT_MCU_SAMD51, OPT_MCU_SAME5X) || \
- TU_CHECK_MCU(OPT_MCU_SAMD11, OPT_MCU_SAML21, OPT_MCU_SAML22)
- #define DCD_ATTR_ENDPOINT_MAX 8
-
-#elif TU_CHECK_MCU(OPT_MCU_SAMG)
- #define DCD_ATTR_ENDPOINT_MAX 6
- #define DCD_ATTR_ENDPOINT_EXCLUSIVE_NUMBER
-
-#elif TU_CHECK_MCU(OPT_MCU_SAMX7X)
- #define DCD_ATTR_ENDPOINT_MAX 10
- #define DCD_ATTR_ENDPOINT_EXCLUSIVE_NUMBER
-
-#elif TU_CHECK_MCU(OPT_MCU_PIC32MZ)
- #define DCD_ATTR_ENDPOINT_MAX 8
- #define DCD_ATTR_ENDPOINT_EXCLUSIVE_NUMBER
-
-//------------- ST -------------//
-#elif TU_CHECK_MCU(OPT_MCU_STM32F0)
- #define DCD_ATTR_ENDPOINT_MAX 8
-
-#elif TU_CHECK_MCU(OPT_MCU_STM32F1)
- #if defined (STM32F105x8) || defined (STM32F105xB) || defined (STM32F105xC) || \
- defined (STM32F107xB) || defined (STM32F107xC)
- #define DCD_ATTR_ENDPOINT_MAX 4
- #define DCD_ATTR_DWC2_STM32
- #else
- #define DCD_ATTR_ENDPOINT_MAX 8
- #endif
-
-#elif TU_CHECK_MCU(OPT_MCU_STM32F2)
- // FS has 4 ep, HS has 5 ep
- #define DCD_ATTR_ENDPOINT_MAX 6
- #define DCD_ATTR_DWC2_STM32
-
-#elif TU_CHECK_MCU(OPT_MCU_STM32F3)
- #define DCD_ATTR_ENDPOINT_MAX 8
-
-#elif TU_CHECK_MCU(OPT_MCU_STM32F4)
- // For most mcu, FS has 4, HS has 6. TODO 446/469/479 HS has 9
- #define DCD_ATTR_ENDPOINT_MAX 6
- #define DCD_ATTR_DWC2_STM32
-
-#elif TU_CHECK_MCU(OPT_MCU_STM32F7)
- // FS has 6, HS has 9
- #define DCD_ATTR_ENDPOINT_MAX 9
- #define DCD_ATTR_DWC2_STM32
-
-#elif TU_CHECK_MCU(OPT_MCU_STM32H7)
- #define DCD_ATTR_ENDPOINT_MAX 9
- #define DCD_ATTR_DWC2_STM32
-
-#elif TU_CHECK_MCU(OPT_MCU_STM32G4)
- #define DCD_ATTR_ENDPOINT_MAX 8
-
-#elif TU_CHECK_MCU(OPT_MCU_STM32L0, OPT_MCU_STM32L1)
- #define DCD_ATTR_ENDPOINT_MAX 8
-
-#elif TU_CHECK_MCU(OPT_MCU_STM32L4)
- #if defined (STM32L475xx) || defined (STM32L476xx) || \
- defined (STM32L485xx) || defined (STM32L486xx) || defined (STM32L496xx) || \
- defined (STM32L4A6xx) || defined (STM32L4P5xx) || defined (STM32L4Q5xx) || \
- defined (STM32L4R5xx) || defined (STM32L4R7xx) || defined (STM32L4R9xx) || \
- defined (STM32L4S5xx) || defined (STM32L4S7xx) || defined (STM32L4S9xx)
- #define DCD_ATTR_ENDPOINT_MAX 6
- #define DCD_ATTR_DWC2_STM32
- #else
- #define DCD_ATTR_ENDPOINT_MAX 8
- #endif
-
-//------------- Sony -------------//
-#elif TU_CHECK_MCU(OPT_MCU_CXD56)
- #define DCD_ATTR_ENDPOINT_MAX 7
- #define DCD_ATTR_ENDPOINT_EXCLUSIVE_NUMBER
-
-//------------- TI -------------//
-#elif TU_CHECK_MCU(OPT_MCU_MSP430x5xx)
- #define DCD_ATTR_ENDPOINT_MAX 8
-
-#elif TU_CHECK_MCU(OPT_MCU_MSP432E4, OPT_MCU_TM4C123, OPT_MCU_TM4C129)
- #define DCD_ATTR_ENDPOINT_MAX 8
-
-//------------- ValentyUSB -------------//
-#elif TU_CHECK_MCU(OPT_MCU_VALENTYUSB_EPTRI)
- #define DCD_ATTR_ENDPOINT_MAX 16
-
-//------------- Nuvoton -------------//
-#elif TU_CHECK_MCU(OPT_MCU_NUC121, OPT_MCU_NUC126)
- #define DCD_ATTR_ENDPOINT_MAX 8
-
-#elif TU_CHECK_MCU(OPT_MCU_NUC120)
- #define DCD_ATTR_ENDPOINT_MAX 6
-
-#elif TU_CHECK_MCU(OPT_MCU_NUC505)
- #define DCD_ATTR_ENDPOINT_MAX 12
-
-//------------- Espressif -------------//
-#elif TU_CHECK_MCU(OPT_MCU_ESP32S2, OPT_MCU_ESP32S3)
- #define DCD_ATTR_ENDPOINT_MAX 6
-
-//------------- Dialog -------------//
-#elif TU_CHECK_MCU(OPT_MCU_DA1469X)
- #define DCD_ATTR_ENDPOINT_MAX 4
-
-//------------- Raspberry Pi -------------//
-#elif TU_CHECK_MCU(OPT_MCU_RP2040)
- #define DCD_ATTR_ENDPOINT_MAX 16
-
-//------------- Silabs -------------//
-#elif TU_CHECK_MCU(OPT_MCU_EFM32GG)
- #define DCD_ATTR_ENDPOINT_MAX 7
-
-//------------- Renesas -------------//
-#elif TU_CHECK_MCU(OPT_MCU_RX63X, OPT_MCU_RX65X, OPT_MCU_RX72N)
- #define DCD_ATTR_ENDPOINT_MAX 10
-
-//------------- GigaDevice -------------//
-#elif TU_CHECK_MCU(OPT_MCU_GD32VF103)
- #define DCD_ATTR_ENDPOINT_MAX 4
-
-//------------- Broadcom -------------//
-#elif TU_CHECK_MCU(OPT_MCU_BCM2711, OPT_MCU_BCM2835, OPT_MCU_BCM2837)
- #define DCD_ATTR_ENDPOINT_MAX 8
-
-//------------- Broadcom -------------//
-#elif TU_CHECK_MCU(OPT_MCU_XMC4000)
- #define DCD_ATTR_ENDPOINT_MAX 8
-
-//------------- BridgeTek -------------//
-#elif TU_CHECK_MCU(OPT_MCU_FT90X)
- #define DCD_ATTR_ENDPOINT_MAX 8
-
-#elif TU_CHECK_MCU(OPT_MCU_FT93X)
- #define DCD_ATTR_ENDPOINT_MAX 16
-
-//------------ Allwinner -------------//
-#elif TU_CHECK_MCU(OPT_MCU_F1C100S)
- #define DCD_ATTR_ENDPOINT_MAX 4
-
-#else
- #warning "DCD_ATTR_ENDPOINT_MAX is not defined for this MCU, default to 8"
- #define DCD_ATTR_ENDPOINT_MAX 8
-#endif
-
-// Default to fullspeed if not defined
-//#ifndef PORT_HIGHSPEED
-// #define DCD_ATTR_PORT_HIGHSPEED 0x00
-//#endif
-
-#endif
diff --git a/src/device/usbd.c b/src/device/usbd.c
index 448114303..c20bab76b 100644
--- a/src/device/usbd.c
+++ b/src/device/usbd.c
@@ -26,7 +26,7 @@
#include "tusb_option.h"
-#if TUSB_OPT_DEVICE_ENABLED
+#if CFG_TUD_ENABLED
#include "tusb.h"
#include "device/usbd.h"
@@ -269,11 +269,12 @@ static inline usbd_class_driver_t const * get_driver(uint8_t drvid)
// DCD Event
//--------------------------------------------------------------------+
-static bool _usbd_initialized = false;
+enum { RHPORT_INVALID = 0xFFu };
+static uint8_t _usbd_rhport = RHPORT_INVALID;
// Event queue
// OPT_MODE_DEVICE is used by OS NONE for mutex (disable usb isr)
-OSAL_QUEUE_DEF(OPT_MODE_DEVICE, _usbd_qdef, CFG_TUD_TASK_QUEUE_SZ, dcd_event_t);
+OSAL_QUEUE_DEF(usbd_int_set, _usbd_qdef, CFG_TUD_TASK_QUEUE_SZ, dcd_event_t);
static osal_queue_t _usbd_q;
// Mutex for claiming endpoint, only needed when using with preempted RTOS
@@ -331,8 +332,6 @@ static char const* const _tusb_std_request_str[] =
"Synch Frame"
};
-static char const* const _tusb_speed_str[] = { "Full", "Low", "High" };
-
// for usbd_control to print the name of control complete driver
void usbd_driver_print_control_complete_name(usbd_control_xfer_cb_t callback)
{
@@ -376,21 +375,21 @@ bool tud_remote_wakeup(void)
{
// only wake up host if this feature is supported and enabled and we are suspended
TU_VERIFY (_usbd_dev.suspended && _usbd_dev.remote_wakeup_support && _usbd_dev.remote_wakeup_en );
- dcd_remote_wakeup(TUD_OPT_RHPORT);
+ dcd_remote_wakeup(_usbd_rhport);
return true;
}
bool tud_disconnect(void)
{
TU_VERIFY(dcd_disconnect);
- dcd_disconnect(TUD_OPT_RHPORT);
+ dcd_disconnect(_usbd_rhport);
return true;
}
bool tud_connect(void)
{
TU_VERIFY(dcd_connect);
- dcd_connect(TUD_OPT_RHPORT);
+ dcd_connect(_usbd_rhport);
return true;
}
@@ -399,13 +398,13 @@ bool tud_connect(void)
//--------------------------------------------------------------------+
bool tud_inited(void)
{
- return _usbd_initialized;
+ return _usbd_rhport != RHPORT_INVALID;
}
bool tud_init (uint8_t rhport)
{
// skip if already initialized
- if (_usbd_initialized) return _usbd_initialized;
+ if ( tud_inited() ) return true;
TU_LOG2("USBD init\r\n");
@@ -439,7 +438,7 @@ bool tud_init (uint8_t rhport)
dcd_init(rhport);
dcd_int_enable(rhport);
- _usbd_initialized = true;
+ _usbd_rhport = rhport;
return true;
}
@@ -508,7 +507,7 @@ void tud_task (void)
switch ( event.event_id )
{
case DCD_EVENT_BUS_RESET:
- TU_LOG2(": %s Speed\r\n", _tusb_speed_str[event.bus_reset.speed]);
+ TU_LOG2(": %s Speed\r\n", tusb_speed_str[event.bus_reset.speed]);
usbd_reset(event.rhport);
_usbd_dev.speed = event.bus_reset.speed;
break;
@@ -1173,6 +1172,17 @@ void dcd_event_xfer_complete (uint8_t rhport, uint8_t ep_addr, uint32_t xferred_
// USBD API For Class Driver
//--------------------------------------------------------------------+
+void usbd_int_set(bool enabled)
+{
+ if (enabled)
+ {
+ dcd_int_enable(_usbd_rhport);
+ }else
+ {
+ dcd_int_disable(_usbd_rhport);
+ }
+}
+
// Parse consecutive endpoint descriptors (IN & OUT)
bool usbd_open_edpt_pair(uint8_t rhport, uint8_t const* p_desc, uint8_t ep_count, uint8_t xfer_type, uint8_t* ep_out, uint8_t* ep_in)
{
diff --git a/src/device/usbd.h b/src/device/usbd.h
index ec34817fa..b2bf8ba9d 100644
--- a/src/device/usbd.h
+++ b/src/device/usbd.h
@@ -453,7 +453,7 @@ TU_ATTR_WEAK bool tud_vendor_control_xfer_cb(uint8_t rhport, uint8_t stage, tusb
/* Type I Format Type Descriptor(2.3.1.6 - Audio Formats) */\
TUD_AUDIO_DESC_TYPE_I_FORMAT(_nBytesPerSample, _nBitsUsedPerSample),\
/* Standard AS Isochronous Audio Data Endpoint Descriptor(4.10.1.1) */\
- TUD_AUDIO_DESC_STD_AS_ISO_EP(/*_ep*/ _epin, /*_attr*/ (TUSB_XFER_ISOCHRONOUS | TUSB_ISO_EP_ATT_ASYNCHRONOUS | TUSB_ISO_EP_ATT_DATA), /*_maxEPsize*/ _epsize, /*_interval*/ (CFG_TUSB_RHPORT0_MODE & OPT_MODE_HIGH_SPEED) ? 0x04 : 0x01),\
+ TUD_AUDIO_DESC_STD_AS_ISO_EP(/*_ep*/ _epin, /*_attr*/ (TUSB_XFER_ISOCHRONOUS | TUSB_ISO_EP_ATT_ASYNCHRONOUS | TUSB_ISO_EP_ATT_DATA), /*_maxEPsize*/ _epsize, /*_interval*/ TUD_OPT_HIGH_SPEED ? 0x04 : 0x01),\
/* Class-Specific AS Isochronous Audio Data Endpoint Descriptor(4.10.1.2) */\
TUD_AUDIO_DESC_CS_AS_ISO_EP(/*_attr*/ AUDIO_CS_AS_ISO_DATA_EP_ATT_NON_MAX_PACKETS_OK, /*_ctrl*/ AUDIO_CTRL_NONE, /*_lockdelayunit*/ AUDIO_CS_AS_ISO_DATA_EP_LOCK_DELAY_UNIT_UNDEFINED, /*_lockdelay*/ 0x0000)
@@ -502,7 +502,7 @@ TU_ATTR_WEAK bool tud_vendor_control_xfer_cb(uint8_t rhport, uint8_t stage, tusb
/* Type I Format Type Descriptor(2.3.1.6 - Audio Formats) */\
TUD_AUDIO_DESC_TYPE_I_FORMAT(_nBytesPerSample, _nBitsUsedPerSample),\
/* Standard AS Isochronous Audio Data Endpoint Descriptor(4.10.1.1) */\
- TUD_AUDIO_DESC_STD_AS_ISO_EP(/*_ep*/ _epin, /*_attr*/ (TUSB_XFER_ISOCHRONOUS | TUSB_ISO_EP_ATT_ASYNCHRONOUS | TUSB_ISO_EP_ATT_DATA), /*_maxEPsize*/ _epsize, /*_interval*/ (CFG_TUSB_RHPORT0_MODE & OPT_MODE_HIGH_SPEED) ? 0x04 : 0x01),\
+ TUD_AUDIO_DESC_STD_AS_ISO_EP(/*_ep*/ _epin, /*_attr*/ (TUSB_XFER_ISOCHRONOUS | TUSB_ISO_EP_ATT_ASYNCHRONOUS | TUSB_ISO_EP_ATT_DATA), /*_maxEPsize*/ _epsize, /*_interval*/ TUD_OPT_HIGH_SPEED ? 0x04 : 0x01),\
/* Class-Specific AS Isochronous Audio Data Endpoint Descriptor(4.10.1.2) */\
TUD_AUDIO_DESC_CS_AS_ISO_EP(/*_attr*/ AUDIO_CS_AS_ISO_DATA_EP_ATT_NON_MAX_PACKETS_OK, /*_ctrl*/ AUDIO_CTRL_NONE, /*_lockdelayunit*/ AUDIO_CS_AS_ISO_DATA_EP_LOCK_DELAY_UNIT_UNDEFINED, /*_lockdelay*/ 0x0000)
@@ -550,7 +550,7 @@ TU_ATTR_WEAK bool tud_vendor_control_xfer_cb(uint8_t rhport, uint8_t stage, tusb
/* Type I Format Type Descriptor(2.3.1.6 - Audio Formats) */\
TUD_AUDIO_DESC_TYPE_I_FORMAT(_nBytesPerSample, _nBitsUsedPerSample),\
/* Standard AS Isochronous Audio Data Endpoint Descriptor(4.10.1.1) */\
- TUD_AUDIO_DESC_STD_AS_ISO_EP(/*_ep*/ _epout, /*_attr*/ (TUSB_XFER_ISOCHRONOUS | TUSB_ISO_EP_ATT_ASYNCHRONOUS | TUSB_ISO_EP_ATT_DATA), /*_maxEPsize*/ _epsize, /*_interval*/ (CFG_TUSB_RHPORT0_MODE & OPT_MODE_HIGH_SPEED) ? 0x04 : 0x01),\
+ TUD_AUDIO_DESC_STD_AS_ISO_EP(/*_ep*/ _epout, /*_attr*/ (TUSB_XFER_ISOCHRONOUS | TUSB_ISO_EP_ATT_ASYNCHRONOUS | TUSB_ISO_EP_ATT_DATA), /*_maxEPsize*/ _epsize, /*_interval*/ TUD_OPT_HIGH_SPEED ? 0x04 : 0x01),\
/* Class-Specific AS Isochronous Audio Data Endpoint Descriptor(4.10.1.2) */\
TUD_AUDIO_DESC_CS_AS_ISO_EP(/*_attr*/ AUDIO_CS_AS_ISO_DATA_EP_ATT_NON_MAX_PACKETS_OK, /*_ctrl*/ AUDIO_CTRL_NONE, /*_lockdelayunit*/ AUDIO_CS_AS_ISO_DATA_EP_LOCK_DELAY_UNIT_UNDEFINED, /*_lockdelay*/ 0x0000),\
/* Standard AS Isochronous Feedback Endpoint Descriptor(4.10.2.1) */\
@@ -558,7 +558,7 @@ TU_ATTR_WEAK bool tud_vendor_control_xfer_cb(uint8_t rhport, uint8_t stage, tusb
// Calculate wMaxPacketSize of Endpoints
#define TUD_AUDIO_EP_SIZE(_maxFrequency, _nBytesPerSample, _nChannels) \
- ((((_maxFrequency + ((CFG_TUSB_RHPORT0_MODE & OPT_MODE_HIGH_SPEED) ? 7999 : 999)) / ((CFG_TUSB_RHPORT0_MODE & OPT_MODE_HIGH_SPEED) ? 8000 : 1000)) + 1) * _nBytesPerSample * _nChannels)
+ ((((_maxFrequency + (TUD_OPT_HIGH_SPEED ? 7999 : 999)) / (TUD_OPT_HIGH_SPEED ? 8000 : 1000)) + 1) * _nBytesPerSample * _nChannels)
//--------------------------------------------------------------------+
diff --git a/src/device/usbd_control.c b/src/device/usbd_control.c
index 7a8244699..4f4108090 100644
--- a/src/device/usbd_control.c
+++ b/src/device/usbd_control.c
@@ -26,7 +26,7 @@
#include "tusb_option.h"
-#if TUSB_OPT_DEVICE_ENABLED
+#if CFG_TUD_ENABLED
#include "tusb.h"
#include "device/usbd_pvt.h"
diff --git a/src/device/usbd_pvt.h b/src/device/usbd_pvt.h
index 7607b9895..dae95cebb 100644
--- a/src/device/usbd_pvt.h
+++ b/src/device/usbd_pvt.h
@@ -58,6 +58,8 @@ usbd_class_driver_t const* usbd_app_driver_get_cb(uint8_t* driver_count) TU_ATTR
typedef bool (*usbd_control_xfer_cb_t)(uint8_t rhport, uint8_t stage, tusb_control_request_t const * request);
+void usbd_int_set(bool enabled);
+
//--------------------------------------------------------------------+
// USBD Endpoint API
//--------------------------------------------------------------------+