diff options
| author | hathach <[email protected]> | 2013-03-04 16:21:41 +0700 |
|---|---|---|
| committer | hathach <[email protected]> | 2013-03-04 16:21:41 +0700 |
| commit | 94c004724ccbe2b74af74fc1753184f6b3ccb9cf (patch) | |
| tree | b526a427c2bf16e46d7a20d1a5a54324922d9947 /tinyusb | |
| parent | 656da2992ded914c70da849f9f7a1571dd2b91f4 (diff) | |
allow configure host/device by controller basic
- make changes to adapt
add mcu_capacity.h
Diffstat (limited to 'tinyusb')
| -rw-r--r-- | tinyusb/host/ehci/ehci.c | 8 | ||||
| -rw-r--r-- | tinyusb/host/ehci/ehci.h | 4 | ||||
| -rw-r--r-- | tinyusb/mcu_capacity.h | 105 | ||||
| -rw-r--r-- | tinyusb/tusb_option.h | 15 |
4 files changed, 116 insertions, 16 deletions
diff --git a/tinyusb/host/ehci/ehci.c b/tinyusb/host/ehci/ehci.c index 961dc6517..4c55065cc 100644 --- a/tinyusb/host/ehci/ehci.c +++ b/tinyusb/host/ehci/ehci.c @@ -55,13 +55,13 @@ //--------------------------------------------------------------------+ STATIC_ ehci_data_t ehci_data TUSB_CFG_ATTR_USBRAM; STATIC_ ehci_link_t period_frame_list0[EHCI_FRAMELIST_SIZE] ATTR_ALIGNED(4096) TUSB_CFG_ATTR_USBRAM; -#if TUSB_CFG_HOST_CONTROLLER_NUM > 1 +#if CONTROLLER_HOST_NUMBER > 1 STATIC_ ehci_link_t period_frame_list1[EHCI_FRAMELIST_SIZE] ATTR_ALIGNED(4096) TUSB_CFG_ATTR_USBRAM; #endif //------------- Validation -------------// STATIC_ASSERT( ALIGN_OF(period_frame_list0) == 4096, "Period Framelist must be 4k alginment"); -#if TUSB_CFG_HOST_CONTROLLER_NUM > 1 +#if CONTROLLER_HOST_NUMBER > 1 STATIC_ASSERT( ALIGN_OF(period_frame_list1) == 4096, "Period Framelist must be 4k alginment"); #endif @@ -77,7 +77,7 @@ STATIC_ INLINE_ ehci_registers_t* const get_operational_register(uint8_t hostid) STATIC_ INLINE_ ehci_link_t* const get_period_frame_list(uint8_t list_idx) ATTR_PURE ATTR_ALWAYS_INLINE ATTR_WARN_UNUSED_RESULT; STATIC_ INLINE_ ehci_link_t* const get_period_frame_list(uint8_t list_idx) { -#if TUSB_CFG_HOST_CONTROLLER_NUM > 1 +#if CONTROLLER_HOST_NUMBER > 1 return list_idx ? period_frame_list1 : period_frame_list0; // TODO more than 2 controller #else return period_frame_list0; @@ -108,7 +108,7 @@ tusb_error_t hcd_init(void) //------------- Data Structure init -------------// memclr_(&ehci_data, sizeof(ehci_data_t)); - for(i=0; i<TUSB_CFG_HOST_CONTROLLER_NUM; i++) + for(i=0; i<CONTROLLER_HOST_NUMBER; i++) { ASSERT_STATUS (hcd_controller_init(TUSB_CFG_HOST_CONTROLLER_START_INDEX + i)); } diff --git a/tinyusb/host/ehci/ehci.h b/tinyusb/host/ehci/ehci.h index 7f528eb06..880a0e477 100644 --- a/tinyusb/host/ehci/ehci.h +++ b/tinyusb/host/ehci/ehci.h @@ -435,8 +435,8 @@ typedef struct { // ehci_itd_t itd[EHCI_MAX_ITD] ; ///< Iso Transfer Pool struct { - ehci_qhd_t async_head[TUSB_CFG_HOST_CONTROLLER_NUM]; /// head qhd of async list, also is used as control endpoint for address 0 - ehci_qhd_t period_head[TUSB_CFG_HOST_CONTROLLER_NUM]; + ehci_qhd_t async_head[CONTROLLER_HOST_NUMBER]; /// head qhd of async list, also is used as control endpoint for address 0 + ehci_qhd_t period_head[CONTROLLER_HOST_NUMBER]; ehci_qtd_t addr0_qtd[3]; }controller; ///< Static Interrupt Queue Head diff --git a/tinyusb/mcu_capacity.h b/tinyusb/mcu_capacity.h new file mode 100644 index 000000000..b851ca44a --- /dev/null +++ b/tinyusb/mcu_capacity.h @@ -0,0 +1,105 @@ +/* + * mcu_capacity.h + * + * Created on: Mar 4, 2013 + * Author: hathach + */ + +/* + * Software License Agreement (BSD License) + * Copyright (c) 2012, hathach (tinyusb.net) + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the tiny usb stack. + */ + +/** \file + * \brief TBD + * + * \note TBD + */ + +/** \ingroup TBD + * \defgroup TBD + * \brief TBD + * + * @{ + */ + +#ifndef _TUSB_MCU_CAPACITY_H_ +#define _TUSB_MCU_CAPACITY_H_ + +#define MCU_LPC13UXX 1 +#define MCU_LPC11UXX 2 +#define MCU_LPC43XX 3 +#define MCU_LPC18XX 4 +#define MCU_LPC175X_6X 5 +#define MCU_LPC177X_8X 6 + +#ifdef __cplusplus + extern "C" { +#endif + +// CAP is abbreviation for Capacity + +//--------------------------------------------------------------------+ +// Controller +//--------------------------------------------------------------------+ +#if MCU == MCU_LPC43XX || MCU == MCU_LPC18XX + #define CAP_CONTROLLER_NUMBER 2 +#else + #define CAP_CONTROLLER_NUMBER 1 +#endif + +#define CAP_MODE_DEVICE +#if MCU == MCU_LPC43XX || MCU == MCU_LPC18XX || MCU == MCU_LPC175X_6X + #define CAP_MODE_HOST +#endif + +#define CONTROLLER_HOST_NUMBER (\ + (TUSB_CFG_CONTROLLER0_MODE & TUSB_MODE_HOST) ? 1 : 0\ + +(TUSB_CFG_CONTROLLER1_MODE & TUSB_MODE_HOST) ? 1 : 0) + +#define CONTROLLER_DEVICE_NUMBER (\ + (TUSB_CFG_CONTROLLER0_MODE & TUSB_MODE_DEVICE) ? 1 : 0\ + +(TUSB_CFG_CONTROLLER1_MODE & TUSB_MODE_DEVICE) ? 1 : 0) + +#define MODE_HOST (CONTROLLER_HOST_NUMBER > 0) +#define MODE_DEVICE (CONTROLLER_DEVICE_NUMBER > 0) + +//--------------------------------------------------------------------+ +// Validation +//--------------------------------------------------------------------+ +#if (CAP_CONTROLLER_NUMBER == 1) && ( defined TUSB_CFG_CONTROLLER1_MODE) + #error current MCU does not have the required number of controllers +#endif + +#ifdef __cplusplus + } +#endif + +#endif /* _TUSB_MCU_CAPACITY_H_ */ + +/** @} */ diff --git a/tinyusb/tusb_option.h b/tinyusb/tusb_option.h index 20769a326..3b1830419 100644 --- a/tinyusb/tusb_option.h +++ b/tinyusb/tusb_option.h @@ -61,10 +61,15 @@ /// define this symbol will make tinyusb look for external configure file #include "tusb_config.h" +#include "mcu_capacity.h" //--------------------------------------------------------------------+ // COMMON OPTIONS //--------------------------------------------------------------------+ +#define TUSB_MODE_HOST BIN8(10) +#define TUSB_MODE_DEVICE BIN8(01) +#define TUSB_MODE_NONE BIN8(00) + /// 0: no debug information 3: most debug information provided #ifndef TUSB_CFG_DEBUG #define TUSB_CFG_DEBUG 3 @@ -89,21 +94,11 @@ #warning TUSB_CFG_CONFIGURATION_MAX is not defined, default value is 1 #endif -// TODO may move to other places -#define MCU_LPC13UXX 1 -#define MCU_LPC11UXX 2 -#define MCU_LPC43XX 3 -#define MCU_LPC18XX 4 - //--------------------------------------------------------------------+ // HOST OPTIONS //--------------------------------------------------------------------+ #ifdef TUSB_CFG_HOST //------------- Controller -------------// - #ifndef TUSB_CFG_HOST_CONTROLLER_NUM - #define TUSB_CFG_HOST_CONTROLLER_NUM 1 - #warning TUSB_CFG_HOST_CONTROLLER_NUM is not defined, default value is 1 - #endif #ifndef TUSB_CFG_HOST_CONTROLLER_START_INDEX #error TUSB_CFG_HOST_CONTROLLER_START_INDEX is not defined |
