mirror of
https://github.com/hathach/tinyusb.git
synced 2025-03-22 10:20:55 +00:00
allow configure host/device by controller basic
- make changes to adapt add mcu_capacity.h
This commit is contained in:
parent
656da2992d
commit
94c004724c
@ -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
|
||||
|
@ -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);
|
||||
|
@ -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) );
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
|
@ -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));
|
||||
}
|
||||
|
@ -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
tinyusb/mcu_capacity.h
Normal file
105
tinyusb/mcu_capacity.h
Normal file
@ -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_ */
|
||||
|
||||
/** @} */
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user