From 71fcf20a95fa2e26f353f210f4299fa6707d4d0b Mon Sep 17 00:00:00 2001 From: hathach Date: Wed, 6 Mar 2013 01:46:01 +0700 Subject: [PATCH] fix error - remove p_qhd->qtd_overlay.halted = 1; --- tests/test/host/ehci/test_ehci_pipe.c | 62 +++++++++++++++------------ tinyusb/host/ehci/ehci.c | 3 +- 2 files changed, 36 insertions(+), 29 deletions(-) diff --git a/tests/test/host/ehci/test_ehci_pipe.c b/tests/test/host/ehci/test_ehci_pipe.c index a1c2a3c7..124adf63 100644 --- a/tests/test/host/ehci/test_ehci_pipe.c +++ b/tests/test/host/ehci/test_ehci_pipe.c @@ -104,9 +104,6 @@ void tearDown(void) { } -//--------------------------------------------------------------------+ -// CONTROL PIPE -//--------------------------------------------------------------------+ void verify_open_qhd(ehci_qhd_t *p_qhd) { TEST_ASSERT_EQUAL(dev_addr, p_qhd->device_address); @@ -117,36 +114,15 @@ void verify_open_qhd(ehci_qhd_t *p_qhd) TEST_ASSERT_EQUAL(1, p_qhd->mult); TEST_ASSERT(p_qhd->qtd_overlay.next.terminate); TEST_ASSERT(p_qhd->qtd_overlay.alternate.terminate); - TEST_ASSERT(p_qhd->qtd_overlay.halted); //------------- HCD -------------// TEST_ASSERT(p_qhd->used); TEST_ASSERT_NULL(p_qhd->p_qtd_list); } -void verify_bulk_open_qhd(ehci_qhd_t *p_qhd, tusb_descriptor_endpoint_t const * desc_endpoint) -{ - verify_open_qhd(p_qhd); - - TEST_ASSERT_FALSE(p_qhd->head_list_flag); - TEST_ASSERT_EQUAL(desc_endpoint->wMaxPacketSize, p_qhd->max_package_size); - TEST_ASSERT_EQUAL(desc_endpoint->bEndpointAddress & 0x0F, p_qhd->endpoint_number); - TEST_ASSERT_EQUAL(0, p_qhd->data_toggle_control); - TEST_ASSERT_EQUAL(0, p_qhd->smask); - TEST_ASSERT_EQUAL(0, p_qhd->cmask); - TEST_ASSERT_FALSE(p_qhd->non_hs_control_endpoint); - TEST_ASSERT_EQUAL(usbh_device_info_pool[dev_addr].speed, p_qhd->endpoint_speed); - - // TEST_ASSERT_EQUAL(desc_endpoint->bInterval); TEST highspeed bulk/control OUT - - TEST_ASSERT_EQUAL(desc_endpoint->bEndpointAddress & 0x80 ? EHCI_PID_IN : EHCI_PID_OUT, p_qhd->pid_non_control); - - //------------- async list check -------------// - TEST_ASSERT_EQUAL_HEX((uint32_t) p_qhd, align32(async_head->next.address)); - TEST_ASSERT_FALSE(async_head->next.terminate); - TEST_ASSERT_EQUAL(EHCI_QUEUE_ELEMENT_QHD, async_head->next.type); -} - +//--------------------------------------------------------------------+ +// CONTROL PIPE +//--------------------------------------------------------------------+ void verify_control_open_qhd(ehci_qhd_t *p_qhd) { verify_open_qhd(p_qhd); @@ -212,6 +188,29 @@ void test_control_open_non_highspeed(void) //--------------------------------------------------------------------+ // BULK PIPE //--------------------------------------------------------------------+ +void verify_bulk_open_qhd(ehci_qhd_t *p_qhd, tusb_descriptor_endpoint_t const * desc_endpoint) +{ + verify_open_qhd(p_qhd); + + TEST_ASSERT_FALSE(p_qhd->head_list_flag); + TEST_ASSERT_EQUAL(desc_endpoint->wMaxPacketSize, p_qhd->max_package_size); + TEST_ASSERT_EQUAL(desc_endpoint->bEndpointAddress & 0x0F, p_qhd->endpoint_number); + TEST_ASSERT_EQUAL(0, p_qhd->data_toggle_control); + TEST_ASSERT_EQUAL(0, p_qhd->smask); + TEST_ASSERT_EQUAL(0, p_qhd->cmask); + TEST_ASSERT_FALSE(p_qhd->non_hs_control_endpoint); + TEST_ASSERT_EQUAL(usbh_device_info_pool[dev_addr].speed, p_qhd->endpoint_speed); + + // TEST_ASSERT_EQUAL(desc_endpoint->bInterval); TEST highspeed bulk/control OUT + + TEST_ASSERT_EQUAL(desc_endpoint->bEndpointAddress & 0x80 ? EHCI_PID_IN : EHCI_PID_OUT, p_qhd->pid_non_control); + + //------------- async list check -------------// + TEST_ASSERT_EQUAL_HEX((uint32_t) p_qhd, align32(async_head->next.address)); + TEST_ASSERT_FALSE(async_head->next.terminate); + TEST_ASSERT_EQUAL(EHCI_QUEUE_ELEMENT_QHD, async_head->next.type); +} + void test_open_bulk_qhd_data(void) { ehci_qhd_t *p_qhd; @@ -229,3 +228,12 @@ void test_open_bulk_qhd_data(void) TEST_ASSERT_EQUAL(EHCI_QUEUE_ELEMENT_QHD, async_head->next.type); } +//--------------------------------------------------------------------+ +// CONTROL TRANSFER +//--------------------------------------------------------------------+ +void test_control_xfer(void) +{ + +} + + diff --git a/tinyusb/host/ehci/ehci.c b/tinyusb/host/ehci/ehci.c index 8d9f81fe..58b6c5ab 100644 --- a/tinyusb/host/ehci/ehci.c +++ b/tinyusb/host/ehci/ehci.c @@ -259,7 +259,7 @@ static void queue_head_init(ehci_qhd_t *p_qhd, uint8_t dev_addr, uint16_t max_pa p_qhd->data_toggle_control = (xfer_type == TUSB_XFER_CONTROL) ? 1 : 0; p_qhd->head_list_flag = (dev_addr == 0) ? 1 : 0; // addr0's endpoint is the static asyn list head p_qhd->max_package_size = max_packet_size; - p_qhd->non_hs_control_endpoint = ((endpoint_addr == 0) && (usbh_device_info_pool[dev_addr].speed != TUSB_SPEED_HIGH) ) ? 1 : 0; + p_qhd->non_hs_control_endpoint = ((TUSB_XFER_CONTROL == xfer_type) && (usbh_device_info_pool[dev_addr].speed != TUSB_SPEED_HIGH) ) ? 1 : 0; p_qhd->nak_count_reload = 0; p_qhd->smask = 0; @@ -271,7 +271,6 @@ static void queue_head_init(ehci_qhd_t *p_qhd, uint8_t dev_addr, uint16_t max_pa //------------- inactive when just opened -------------// p_qhd->qtd_overlay.next.terminate = 1; p_qhd->qtd_overlay.alternate.terminate = 1; - p_qhd->qtd_overlay.halted = 1; //------------- HCD Management Data -------------// p_qhd->used = 1;