summaryrefslogtreecommitdiff
path: root/tinyusb
diff options
context:
space:
mode:
authorhathach <[email protected]>2013-09-30 17:14:44 +0700
committerhathach <[email protected]>2013-09-30 17:14:44 +0700
commit5eebec61f192032192fc89f2be26d842ccf43ed8 (patch)
tree4fe2da0bcd4004e9e2a6d2c639890df11faad12c /tinyusb
parent0f05d27ac9ecf63a6e4ad6b3a91ec4ad536d8dfb (diff)
refractor hub
Diffstat (limited to 'tinyusb')
-rw-r--r--tinyusb/host/hub.c5
-rw-r--r--tinyusb/host/usbh.c36
2 files changed, 5 insertions, 36 deletions
diff --git a/tinyusb/host/hub.c b/tinyusb/host/hub.c
index fc87ba141..ad14865ad 100644
--- a/tinyusb/host/hub.c
+++ b/tinyusb/host/hub.c
@@ -161,12 +161,11 @@ tusb_error_t hub_enumerate_subtask(void)
OSAL_SUBTASK_INVOKED_AND_WAIT( hub_port_clear_feature_subtask(HUB_FEATURE_PORT_CONNECTION_CHANGE), error );
SUBTASK_ASSERT_STATUS( error );
- //--------------------------------------------------------------------+
- // PORT RESET & WAIT FOR STATUS ENDPOINT & GET STATUS & CLEAR RESET CHANGE
- //--------------------------------------------------------------------+
+ //------------- Port Reset & Get Port Speed -------------//
OSAL_SUBTASK_INVOKED_AND_WAIT ( hub_port_reset_subtask(), error );
SUBTASK_ASSERT_STATUS( error );
+ // TODO get port speed
p_port_status = (hub_port_status_response_t *) hub_enum_buffer;
usbh_devices[0].speed = (p_port_status->status_current.high_speed_device_attached) ? TUSB_SPEED_HIGH :
(p_port_status->status_current.low_speed_device_attached ) ? TUSB_SPEED_LOW : TUSB_SPEED_FULL;
diff --git a/tinyusb/host/usbh.c b/tinyusb/host/usbh.c
index 5b6eeffdc..e2b8bde7f 100644
--- a/tinyusb/host/usbh.c
+++ b/tinyusb/host/usbh.c
@@ -384,41 +384,11 @@ tusb_error_t enumeration_body_subtask(void)
// osal_task_delay(50); // TODO reset is recommended to last 50 ms (NXP EHCI passes this)
}else
{
- hub_port_status_response_t * p_port_status;
-
- //--------------------------------------------------------------------+
- // PORT RESET & WAIT FOR STATUS ENDPOINT & GET STATUS & CLEAR RESET CHANGE
- //--------------------------------------------------------------------+
- //------------- Set Port Reset -------------//
- OSAL_SUBTASK_INVOKED_AND_WAIT(
- usbh_control_xfer_subtask( usbh_devices[0].hub_addr, bm_request_type(TUSB_DIR_HOST_TO_DEV, TUSB_REQUEST_TYPE_CLASS, TUSB_REQUEST_RECIPIENT_OTHER),
- HUB_REQUEST_SET_FEATURE, HUB_FEATURE_PORT_RESET, usbh_devices[0].hub_port,
- 0, NULL ),
- error
- );
+ OSAL_SUBTASK_INVOKED_AND_WAIT ( hub_port_reset_subtask(), error );
SUBTASK_ASSERT_STATUS( error );
- osal_task_delay(200); // TODO Hub wait for Status Endpoint on Reset Change
-
- //------------- Get Port Status to check if port is enabled, powered and reset_change -------------//
- OSAL_SUBTASK_INVOKED_AND_WAIT(
- usbh_control_xfer_subtask( usbh_devices[0].hub_addr, bm_request_type(TUSB_DIR_DEV_TO_HOST, TUSB_REQUEST_TYPE_CLASS, TUSB_REQUEST_RECIPIENT_OTHER),
- HUB_REQUEST_GET_STATUS, 0, usbh_devices[0].hub_port,
- 4, enum_data_buffer ),
- error
- );
- SUBTASK_ASSERT_STATUS( error );
-
- p_port_status = (hub_port_status_response_t *) enum_data_buffer;
- SUBTASK_ASSERT ( p_port_status->status_change.reset && p_port_status->status_current.connect_status &&
- p_port_status->status_current.port_power && p_port_status->status_current.port_enable);
-
- OSAL_SUBTASK_INVOKED_AND_WAIT(
- usbh_control_xfer_subtask( usbh_devices[0].hub_addr, bm_request_type(TUSB_DIR_HOST_TO_DEV, TUSB_REQUEST_TYPE_CLASS, TUSB_REQUEST_RECIPIENT_OTHER),
- HUB_REQUEST_CLEAR_FEATURE, HUB_FEATURE_PORT_RESET_CHANGE, usbh_devices[0].hub_port,
- 0, NULL ),
- error
- );
+ // Acknowledge Port Reset Change
+ OSAL_SUBTASK_INVOKED_AND_WAIT( hub_port_clear_feature_subtask(HUB_FEATURE_PORT_RESET_CHANGE), error );
SUBTASK_ASSERT_STATUS( error );
}