Просмотр исходного кода

allow configure host/device by controller basic
- make changes to adapt
add mcu_capacity.h

hathach 13 лет назад
Родитель
Сommit
94c004724c

+ 6 - 1
demos/host/tusb_config.h

@@ -55,13 +55,18 @@
  extern "C" {
 #endif
 
+//--------------------------------------------------------------------+
+// CONTROLLER CONFIGURATION
+//--------------------------------------------------------------------+
+#define TUSB_CFG_CONTROLLER0_MODE  TUSB_MODE_HOST
+#define TUSB_CFG_CONTROLLER1_MODE  TUSB_MODE_HOST
+
 //--------------------------------------------------------------------+
 // HOST CONFIGURATION
 //--------------------------------------------------------------------+
 #define TUSB_CFG_HOST
 
 //------------- CONTROLLER -------------//
-#define TUSB_CFG_HOST_CONTROLLER_NUM 1
 #define TUSB_CFG_HOST_CONTROLLER_START_INDEX 0
 
 #define TUSB_CFG_HOST_DEVICE_MAX     1

+ 5 - 5
tests/test/host/ehci/test_ehci_init.c

@@ -81,7 +81,7 @@ void test_hcd_init_usbint(void)
 {
   hcd_init();
 
-  for(uint32_t i=0; i<TUSB_CFG_HOST_CONTROLLER_NUM; i++)
+  for(uint32_t i=0; i<CONTROLLER_HOST_NUMBER; i++)
   {
     ehci_registers_t* const regs = get_operational_register(i+TUSB_CFG_HOST_CONTROLLER_START_INDEX);
 
@@ -105,7 +105,7 @@ void test_hcd_init_async_list(void)
 {
   hcd_init();
 
-  for(uint32_t i=0; i<TUSB_CFG_HOST_CONTROLLER_NUM; i++)
+  for(uint32_t i=0; i<CONTROLLER_HOST_NUMBER; i++)
   {
     uint8_t hostid                = i+TUSB_CFG_HOST_CONTROLLER_START_INDEX;
 
@@ -130,7 +130,7 @@ void test_hcd_init_period_list(void)
 #if EHCI_PERIODIC_LIST
   hcd_init();
 
-  for(uint32_t i=0; i<TUSB_CFG_HOST_CONTROLLER_NUM; i++)
+  for(uint32_t i=0; i<CONTROLLER_HOST_NUMBER; i++)
   {
     uint8_t           const hostid      = i+TUSB_CFG_HOST_CONTROLLER_START_INDEX;
     ehci_registers_t* const regs        = get_operational_register(hostid);
@@ -158,7 +158,7 @@ void test_hcd_init_tt_control(void)
 {
   hcd_init();
 
-  for(uint32_t i=0; i<TUSB_CFG_HOST_CONTROLLER_NUM; i++)
+  for(uint32_t i=0; i<CONTROLLER_HOST_NUMBER; i++)
   {
     uint8_t           const hostid      = i+TUSB_CFG_HOST_CONTROLLER_START_INDEX;
     ehci_registers_t* const regs        = get_operational_register(hostid);
@@ -171,7 +171,7 @@ void test_hcd_init_usbcmd(void)
 {
   hcd_init();
 
-  for(uint32_t i=0; i<TUSB_CFG_HOST_CONTROLLER_NUM; i++)
+  for(uint32_t i=0; i<CONTROLLER_HOST_NUMBER; i++)
   {
     uint8_t           const hostid      = i+TUSB_CFG_HOST_CONTROLLER_START_INDEX;
     ehci_registers_t* const regs        = get_operational_register(hostid);

+ 1 - 1
tests/test/host/ehci/test_ehci_structure.c

@@ -303,7 +303,7 @@ void test_register_portsc(void)
 //--------------------------------------------------------------------+
 void test_ehci_data(void)
 {
-  for(uint32_t i=0; i<TUSB_CFG_HOST_CONTROLLER_NUM; i++)
+  for(uint32_t i=0; i<CONTROLLER_HOST_NUMBER; i++)
   {
     uint8_t hostid = i+TUSB_CFG_HOST_CONTROLLER_START_INDEX;
     TEST_ASSERT_BITS_LOW(4096-1, (uint32_t)get_period_frame_list(hostid) );

+ 7 - 2
tests/test/support/tusb_config.h

@@ -55,14 +55,19 @@
  extern "C" {
 #endif
 
+//--------------------------------------------------------------------+
+// CONTROLLER CONFIGURATION
+//--------------------------------------------------------------------+
+#define TUSB_CFG_CONTROLLER0_MODE  TUSB_MODE_HOST
+#define TUSB_CFG_CONTROLLER1_MODE  TUSB_MODE_HOST
+
 //--------------------------------------------------------------------+
 // HOST CONFIGURATION
 //--------------------------------------------------------------------+
 #define TUSB_CFG_HOST
 
-//------------- CORE/CONTROLLER -------------//
+//------------- CORE -------------//
 #define TUSB_CFG_HOST_CONTROLLER_START_INDEX     0
-#define TUSB_CFG_HOST_CONTROLLER_NUM             (2 - TUSB_CFG_HOST_CONTROLLER_START_INDEX)
 
 #define TUSB_CFG_HOST_DEVICE_MAX                 2
 #define TUSB_CFG_CONFIGURATION_MAX               2

+ 0 - 5
tests/test/test_project_settings.c

@@ -50,11 +50,6 @@ void tearDown(void)
 {
 }
 
-void test_memory_usage(void)
-{
-  TEST_IGNORE_MESSAGE("Try to keep project total memory usage up-to-date");
-}
-
 void test_latest_version(void)
 {
   TEST_ASSERT_EQUAL_STRING(LATEST_VERSION, TUSB_VERSION);

+ 4 - 4
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));
   }

+ 2 - 2
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
 

+ 105 - 0
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_ */
+
+/** @} */

+ 5 - 10
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