diff options
| -rw-r--r-- | demos/host/tusb_config.h | 6 | ||||
| -rw-r--r-- | tests/test/host/ehci/test_ehci_init.c | 10 | ||||
| -rw-r--r-- | tests/test/host/ehci/test_ehci_structure.c | 2 | ||||
| -rw-r--r-- | tests/test/support/tusb_config.h | 4 | ||||
| -rw-r--r-- | tinyusb/host/ehci/ehci.c | 28 | ||||
| -rw-r--r-- | tinyusb/tusb_option.h | 4 |
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 |
