esp32-s2_dfu/src/tusb_option.h

235 lines
7.7 KiB
C
Raw Normal View History

/*
* The MIT License (MIT)
*
2019-05-14 06:48:05 +02:00
* Copyright (c) 2019 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_OPTION_H_
#define _TUSB_OPTION_H_
2019-07-10 18:54:11 +02:00
#define TUSB_VERSION_MAJOR 0
#define TUSB_VERSION_MINOR 5
#define TUSB_VERSION_REVISION 0
#define TUSB_VERSION_STRING TU_STRING(TUSB_VERSION_MAJOR) "." TU_STRING(TUSB_VERSION_MINOR) "." TU_STRING(TUSB_VERSION_REVISION)
2014-03-25 07:00:37 +01:00
/** \defgroup group_mcu Supported MCU
2018-04-10 09:31:11 +02:00
* \ref CFG_TUSB_MCU must be defined to one of these
* @{ */
// LPC
#define OPT_MCU_LPC11UXX 1 ///< NXP LPC11Uxx
2019-10-03 10:23:01 +02:00
#define OPT_MCU_LPC13XX 2 ///< NXP LPC13xx
#define OPT_MCU_LPC15XX 3 ///< NXP LPC15xx
#define OPT_MCU_LPC175X_6X 4 ///< NXP LPC175x, LPC176x
#define OPT_MCU_LPC177X_8X 5 ///< NXP LPC177x, LPC178x
#define OPT_MCU_LPC18XX 6 ///< NXP LPC18xx
#define OPT_MCU_LPC40XX 7 ///< NXP LPC40xx
#define OPT_MCU_LPC43XX 8 ///< NXP LPC43xx
2019-08-23 19:52:46 +02:00
#define OPT_MCU_LPC51UXX 9 ///< NXP LPC51U6x
2019-09-01 10:58:42 +02:00
#define OPT_MCU_LPC54XXX 10 ///< NXP LPC54xxx
2019-09-02 10:53:12 +02:00
#define OPT_MCU_LPC55XX 11 ///< NXP LPC55xx
// NRF
#define OPT_MCU_NRF5X 100 ///< Nordic nRF5x series
// SAM
#define OPT_MCU_SAMD21 200 ///< MicroChip SAMD21
#define OPT_MCU_SAMD51 201 ///< MicroChip SAMD51
2018-11-28 03:11:03 +01:00
// STM32
#define OPT_MCU_STM32F0 300 ///< ST STM32F0
#define OPT_MCU_STM32F1 301 ///< ST STM32F1
#define OPT_MCU_STM32F2 302 ///< ST STM32F2
#define OPT_MCU_STM32F3 303 ///< ST STM32F3
#define OPT_MCU_STM32F4 304 ///< ST STM32F4
#define OPT_MCU_STM32F7 305 ///< ST STM32F7
#define OPT_MCU_STM32H7 306 ///< ST STM32H7
#define OPT_MCU_STM32L0 307 ///< ST STM32L0
#define OPT_MCU_STM32L1 308 ///< ST STM32L1
#define OPT_MCU_STM32L4 309 ///< ST STM32L4
// Sony
2019-10-03 14:22:43 +02:00
#define OPT_MCU_CXD56 400 ///< SONY CXD56
// TI MSP430
#define OPT_MCU_MSP430x5xx 500 ///< TI MSP430x5xx
2018-11-28 03:11:03 +01:00
/** @} */
/** \defgroup group_supported_os Supported RTOS
2018-04-12 08:17:58 +02:00
* \ref CFG_TUSB_OS must be defined to one of these
* @{ */
2018-09-04 09:20:30 +02:00
#define OPT_OS_NONE 1 ///< No RTOS
#define OPT_OS_FREERTOS 2 ///< FreeRTOS
#define OPT_OS_MYNEWT 3 ///< Mynewt OS
/** @} */
// Allow to use command line to change the config name/location
2018-04-10 09:31:11 +02:00
#ifndef CFG_TUSB_CONFIG_FILE
#define CFG_TUSB_CONFIG_FILE "tusb_config.h"
#endif
2018-04-10 09:31:11 +02:00
#include CFG_TUSB_CONFIG_FILE
2014-03-06 05:27:22 +01:00
2014-03-25 08:58:43 +01:00
/** \addtogroup group_configuration
2014-03-25 07:00:37 +01:00
* @{ */
2018-07-23 10:25:45 +02:00
//--------------------------------------------------------------------
// CONTROLLER
2018-11-26 08:56:07 +01:00
// Only 1 roothub port can be configured to be device and/or host.
// tinyusb does not support dual devices or dual host configuration
2018-07-23 10:25:45 +02:00
//--------------------------------------------------------------------
2014-03-25 08:58:43 +01:00
/** \defgroup group_mode Controller Mode Selection
2018-04-10 09:31:11 +02:00
* \brief CFG_TUSB_CONTROLLER_N_MODE must be defined with these
* @{ */
2018-11-26 08:56:07 +01:00
#define OPT_MODE_NONE 0x00 ///< Disabled
#define OPT_MODE_DEVICE 0x01 ///< Device Mode
#define OPT_MODE_HOST 0x02 ///< Host Mode
2018-11-30 07:25:58 +01:00
#define OPT_MODE_HIGH_SPEED 0x10 ///< High speed
/** @} */
#ifndef CFG_TUSB_RHPORT0_MODE
#define CFG_TUSB_RHPORT0_MODE OPT_MODE_NONE
2014-03-17 10:46:11 +01:00
#endif
#ifndef CFG_TUSB_RHPORT1_MODE
#define CFG_TUSB_RHPORT1_MODE OPT_MODE_NONE
2014-03-17 10:46:11 +01:00
#endif
2018-11-26 08:56:07 +01:00
#if ((CFG_TUSB_RHPORT0_MODE & OPT_MODE_HOST) && (CFG_TUSB_RHPORT1_MODE & OPT_MODE_HOST)) || \
((CFG_TUSB_RHPORT0_MODE & OPT_MODE_DEVICE) && (CFG_TUSB_RHPORT1_MODE & OPT_MODE_DEVICE))
#error "tinyusb does not support same modes on more than 1 roothub port"
#endif
2018-11-26 08:56:07 +01:00
// Which roothub port is configured as host
#define TUH_OPT_RHPORT ( (CFG_TUSB_RHPORT0_MODE & OPT_MODE_HOST) ? 0 : ((CFG_TUSB_RHPORT1_MODE & OPT_MODE_HOST) ? 1 : -1) )
#define TUSB_OPT_HOST_ENABLED ( TUH_OPT_RHPORT >= 0 )
2018-11-26 08:56:07 +01:00
// Which roothub port is configured as device
#define TUD_OPT_RHPORT ( (CFG_TUSB_RHPORT0_MODE & OPT_MODE_DEVICE) ? 0 : ((CFG_TUSB_RHPORT1_MODE & OPT_MODE_DEVICE) ? 1 : -1) )
2018-11-28 11:54:11 +01:00
#if TUD_OPT_RHPORT == 0
#define TUD_OPT_HIGH_SPEED ( CFG_TUSB_RHPORT0_MODE & OPT_MODE_HIGH_SPEED )
#else
#define TUD_OPT_HIGH_SPEED ( CFG_TUSB_RHPORT1_MODE & OPT_MODE_HIGH_SPEED )
#endif
#define TUSB_OPT_DEVICE_ENABLED ( TUD_OPT_RHPORT >= 0 )
//--------------------------------------------------------------------+
// COMMON OPTIONS
//--------------------------------------------------------------------+
2019-05-14 06:46:22 +02:00
// Debug enable to print out error message
2018-04-10 09:31:11 +02:00
#ifndef CFG_TUSB_DEBUG
#define CFG_TUSB_DEBUG 0
#endif
// place data in accessible RAM for usb controller
#ifndef CFG_TUSB_MEM_SECTION
#define CFG_TUSB_MEM_SECTION
#endif
#ifndef CFG_TUSB_MEM_ALIGN
#define CFG_TUSB_MEM_ALIGN TU_ATTR_ALIGNED(4)
#endif
2018-04-10 09:31:11 +02:00
#ifndef CFG_TUSB_OS
2019-05-15 17:51:49 +02:00
#define CFG_TUSB_OS OPT_OS_NONE
2018-03-07 07:25:41 +01:00
#endif
2018-07-23 10:25:45 +02:00
//--------------------------------------------------------------------
// DEVICE OPTIONS
2018-07-23 10:25:45 +02:00
//--------------------------------------------------------------------
2019-09-09 19:34:30 +02:00
#ifndef CFG_TUD_ENDPOINT0_SIZE
#define CFG_TUD_ENDPOINT0_SIZE 64
2019-05-15 17:51:49 +02:00
#endif
2019-05-15 17:51:49 +02:00
#ifndef CFG_TUD_CDC
#define CFG_TUD_CDC 0
#endif
2019-05-15 17:51:49 +02:00
#ifndef CFG_TUD_MSC
#define CFG_TUD_MSC 0
#endif
2019-05-15 17:51:49 +02:00
#ifndef CFG_TUD_HID
#define CFG_TUD_HID 0
#endif
#ifndef CFG_TUD_MIDI
#define CFG_TUD_MIDI 0
#endif
#ifndef CFG_TUD_VENDOR
#define CFG_TUD_VENDOR 0
#endif
2019-09-14 18:13:11 +02:00
#ifndef CFG_TUD_USBTMC
#define CFG_TUD_USBTMC 0
#endif
#ifndef CFG_TUD_DFU_RT
#define CFG_TUD_DFU_RT 0
#endif
2018-07-23 10:25:45 +02:00
//--------------------------------------------------------------------
// HOST OPTIONS
2018-07-23 10:25:45 +02:00
//--------------------------------------------------------------------
#if TUSB_OPT_HOST_ENABLED
2018-04-10 09:31:11 +02:00
#ifndef CFG_TUSB_HOST_DEVICE_MAX
#define CFG_TUSB_HOST_DEVICE_MAX 1
#warning CFG_TUSB_HOST_DEVICE_MAX is not defined, default value is 1
#endif
//------------- HUB CLASS -------------//
#if CFG_TUH_HUB && (CFG_TUSB_HOST_DEVICE_MAX == 1)
2018-04-10 09:31:11 +02:00
#error there is no benefit enable hub with max device is 1. Please disable hub or increase CFG_TUSB_HOST_DEVICE_MAX
#endif
//------------- HID CLASS -------------//
2018-12-07 08:57:58 +01:00
#define HOST_CLASS_HID ( CFG_TUH_HID_KEYBOARD + CFG_TUH_HID_MOUSE + CFG_TUSB_HOST_HID_GENERIC )
2018-04-10 09:31:11 +02:00
#ifndef CFG_TUSB_HOST_ENUM_BUFFER_SIZE
#define CFG_TUSB_HOST_ENUM_BUFFER_SIZE 256
#endif
//------------- CLASS -------------//
#endif // TUSB_OPT_HOST_ENABLED
2018-04-19 11:26:18 +02:00
2018-07-23 10:25:45 +02:00
//------------------------------------------------------------------
2018-07-29 09:03:48 +02:00
// Configuration Validation
2018-07-23 10:25:45 +02:00
//------------------------------------------------------------------
2019-09-09 19:34:30 +02:00
#if CFG_TUD_ENDPOINT0_SIZE > 64
2018-11-30 07:25:58 +01:00
#error Control Endpoint Max Packet Size cannot be larger than 64
2018-04-19 11:26:18 +02:00
#endif
#endif /* _TUSB_OPTION_H_ */
/** @} */