summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--demos/host/tusb_config.h6
-rw-r--r--tests/test/host/ehci/test_ehci_init.c10
-rw-r--r--tests/test/host/ehci/test_ehci_structure.c2
-rw-r--r--tests/test/support/tusb_config.h4
-rw-r--r--tinyusb/host/ehci/ehci.c28
-rw-r--r--tinyusb/tusb_option.h4
6 files changed, 29 insertions, 25 deletions
diff --git a/demos/host/tusb_config.h b/demos/host/tusb_config.h
index 1b0015dbf..207b6330a 100644
--- a/demos/host/tusb_config.h
+++ b/demos/host/tusb_config.h
@@ -58,16 +58,12 @@
//--------------------------------------------------------------------+
// CONTROLLER CONFIGURATION
//--------------------------------------------------------------------+
-#define TUSB_CFG_CONTROLLER0_MODE (TUSB_MODE_HOST)
+#define TUSB_CFG_CONTROLLER0_MODE (TUSB_MODE_NONE)
#define TUSB_CFG_CONTROLLER1_MODE (TUSB_MODE_HOST)
//--------------------------------------------------------------------+
// HOST CONFIGURATION
//--------------------------------------------------------------------+
-
-//------------- CONTROLLER -------------//
-#define TUSB_CFG_HOST_CONTROLLER_START_INDEX 0
-
#define TUSB_CFG_HOST_DEVICE_MAX 1
#define TUSB_CFG_CONFIGURATION_MAX 1
diff --git a/tests/test/host/ehci/test_ehci_init.c b/tests/test/host/ehci/test_ehci_init.c
index ab4e8d219..9e698322a 100644
--- a/tests/test/host/ehci/test_ehci_init.c
+++ b/tests/test/host/ehci/test_ehci_init.c
@@ -83,7 +83,7 @@ void test_hcd_init_usbint(void)
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);
+ ehci_registers_t* const regs = get_operational_register(i+CONTROLLER_HOST_START_INDEX);
//------------- USB INT Enable-------------//
TEST_ASSERT(regs->usb_int_enable_bit.usb_error);
@@ -107,7 +107,7 @@ void test_hcd_init_async_list(void)
for(uint32_t i=0; i<CONTROLLER_HOST_NUMBER; i++)
{
- uint8_t hostid = i+TUSB_CFG_HOST_CONTROLLER_START_INDEX;
+ uint8_t hostid = i+CONTROLLER_HOST_START_INDEX;
ehci_registers_t * const regs = get_operational_register(hostid);
ehci_qhd_t * const async_head = get_async_head(hostid);
@@ -132,7 +132,7 @@ void test_hcd_init_period_list(void)
for(uint32_t i=0; i<CONTROLLER_HOST_NUMBER; i++)
{
- uint8_t const hostid = i+TUSB_CFG_HOST_CONTROLLER_START_INDEX;
+ uint8_t const hostid = i+CONTROLLER_HOST_START_INDEX;
ehci_registers_t* const regs = get_operational_register(hostid);
ehci_qhd_t * const period_head = get_period_head(hostid);
ehci_link_t * const framelist = get_period_frame_list(hostid);
@@ -160,7 +160,7 @@ void test_hcd_init_tt_control(void)
for(uint32_t i=0; i<CONTROLLER_HOST_NUMBER; i++)
{
- uint8_t const hostid = i+TUSB_CFG_HOST_CONTROLLER_START_INDEX;
+ uint8_t const hostid = i+CONTROLLER_HOST_START_INDEX;
ehci_registers_t* const regs = get_operational_register(hostid);
TEST_ASSERT_EQUAL(0, regs->tt_control);
@@ -173,7 +173,7 @@ void test_hcd_init_usbcmd(void)
for(uint32_t i=0; i<CONTROLLER_HOST_NUMBER; i++)
{
- uint8_t const hostid = i+TUSB_CFG_HOST_CONTROLLER_START_INDEX;
+ uint8_t const hostid = i+CONTROLLER_HOST_START_INDEX;
ehci_registers_t* const regs = get_operational_register(hostid);
TEST_ASSERT(regs->usb_cmd_bit.async_enable);
diff --git a/tests/test/host/ehci/test_ehci_structure.c b/tests/test/host/ehci/test_ehci_structure.c
index 7a5ff85d5..1dc5caf7b 100644
--- a/tests/test/host/ehci/test_ehci_structure.c
+++ b/tests/test/host/ehci/test_ehci_structure.c
@@ -305,7 +305,7 @@ void test_ehci_data(void)
{
for(uint32_t i=0; i<CONTROLLER_HOST_NUMBER; i++)
{
- uint8_t hostid = i+TUSB_CFG_HOST_CONTROLLER_START_INDEX;
+ uint8_t hostid = i+CONTROLLER_HOST_START_INDEX;
TEST_ASSERT_BITS_LOW(4096-1, (uint32_t)get_period_frame_list(hostid) );
}
diff --git a/tests/test/support/tusb_config.h b/tests/test/support/tusb_config.h
index 430f7e031..70652209d 100644
--- a/tests/test/support/tusb_config.h
+++ b/tests/test/support/tusb_config.h
@@ -65,8 +65,6 @@
// HOST CONFIGURATION
//--------------------------------------------------------------------+
//------------- CORE -------------//
-#define TUSB_CFG_HOST_CONTROLLER_START_INDEX 0
-
#define TUSB_CFG_HOST_DEVICE_MAX 2
#define TUSB_CFG_CONFIGURATION_MAX 2
@@ -79,6 +77,8 @@
#define HOST_HCD_XFER_BULK
#define HOST_HCD_XFER_ISOCHRONOUS
+// Test support
+#define CONTROLLER_HOST_START_INDEX ( ((CONTROLLER_HOST_NUMBER == 1) && (TUSB_CFG_CONTROLLER1_MODE & TUSB_MODE_HOST)) ? 1 : 0)
//--------------------------------------------------------------------+
// DEVICE CONFIGURATION
//--------------------------------------------------------------------+
diff --git a/tinyusb/host/ehci/ehci.c b/tinyusb/host/ehci/ehci.c
index c3fda3f3d..27562974f 100644
--- a/tinyusb/host/ehci/ehci.c
+++ b/tinyusb/host/ehci/ehci.c
@@ -84,16 +84,27 @@ STATIC_ INLINE_ ehci_link_t* const get_period_frame_list(uint8_t list_idx)
#endif
}
+STATIC_ INLINE_ uint8_t hostid_to_data_idx(uint8_t hostid) ATTR_ALWAYS_INLINE ATTR_CONST ATTR_WARN_UNUSED_RESULT;
+STATIC_ INLINE_ uint8_t hostid_to_data_idx(uint8_t hostid)
+{
+ #if (CONTROLLER_HOST_NUMBER == 1) && (TUSB_CFG_CONTROLLER1_MODE & TUSB_MODE_HOST)
+ (void) hostid;
+ return 0;
+ #else
+ return hostid;
+ #endif
+}
+
STATIC_ INLINE_ ehci_qhd_t* const get_async_head(uint8_t hostid) ATTR_ALWAYS_INLINE ATTR_PURE ATTR_WARN_UNUSED_RESULT;
STATIC_ INLINE_ ehci_qhd_t* const get_async_head(uint8_t hostid)
{
- return &ehci_data.controller.async_head[hostid-TUSB_CFG_HOST_CONTROLLER_START_INDEX];
+ return &ehci_data.controller.async_head[hostid_to_data_idx(hostid)];
}
STATIC_ INLINE_ ehci_qhd_t* const get_period_head(uint8_t hostid) ATTR_ALWAYS_INLINE ATTR_PURE ATTR_WARN_UNUSED_RESULT;
STATIC_ INLINE_ ehci_qhd_t* const get_period_head(uint8_t hostid)
{
- return &ehci_data.controller.period_head[hostid-TUSB_CFG_HOST_CONTROLLER_START_INDEX];
+ return &ehci_data.controller.period_head[hostid_to_data_idx(hostid)];
}
tusb_error_t hcd_controller_init(uint8_t hostid) ATTR_WARN_UNUSED_RESULT;
@@ -103,15 +114,16 @@ tusb_error_t hcd_controller_init(uint8_t hostid) ATTR_WARN_UNUSED_RESULT;
//--------------------------------------------------------------------+
tusb_error_t hcd_init(void)
{
- uint8_t i = 0;
-
//------------- Data Structure init -------------//
memclr_(&ehci_data, sizeof(ehci_data_t));
- for(i=0; i<CONTROLLER_HOST_NUMBER; i++)
- {
- ASSERT_STATUS (hcd_controller_init(TUSB_CFG_HOST_CONTROLLER_START_INDEX + i));
- }
+ #if (TUSB_CFG_CONTROLLER0_MODE & TUSB_MODE_HOST)
+ ASSERT_STATUS (hcd_controller_init(0));
+ #endif
+
+ #if (TUSB_CFG_CONTROLLER1_MODE & TUSB_MODE_HOST)
+ ASSERT_STATUS (hcd_controller_init(1));
+ #endif
return TUSB_ERROR_NONE;
}
diff --git a/tinyusb/tusb_option.h b/tinyusb/tusb_option.h
index 274e4e0f9..382f0be15 100644
--- a/tinyusb/tusb_option.h
+++ b/tinyusb/tusb_option.h
@@ -117,10 +117,6 @@
// HOST OPTIONS
//--------------------------------------------------------------------+
#if MODE_HOST_SUPPORTED
- #ifndef TUSB_CFG_HOST_CONTROLLER_START_INDEX
- #error TUSB_CFG_HOST_CONTROLLER_START_INDEX is not defined
- #endif
-
#ifndef TUSB_CFG_HOST_DEVICE_MAX
#define TUSB_CFG_HOST_DEVICE_MAX 1
#warning TUSB_CFG_HOST_DEVICE_MAX is not defined, default value is 1