add int_on_complete parameter to hcd_pipe_xfer for TD chain class request
fix control transfer request: remove get_control_request_ptr()
This commit is contained in:
@@ -252,7 +252,6 @@ static void queue_head_init(ehci_qhd_t *p_qhd, uint8_t dev_addr, uint16_t max_pa
|
||||
|
||||
static inline ehci_qhd_t* const get_control_qhd(uint8_t dev_addr) ATTR_ALWAYS_INLINE ATTR_PURE ATTR_WARN_UNUSED_RESULT;
|
||||
static inline ehci_qtd_t* get_control_qtds(uint8_t dev_addr) ATTR_ALWAYS_INLINE ATTR_PURE ATTR_WARN_UNUSED_RESULT;
|
||||
static inline tusb_std_request_t* const get_control_request_ptr(uint8_t dev_addr) ATTR_ALWAYS_INLINE ATTR_PURE ATTR_WARN_UNUSED_RESULT;
|
||||
|
||||
//--------------------------------------------------------------------+
|
||||
// CONTROL PIPE API
|
||||
@@ -316,10 +315,8 @@ tusb_error_t hcd_pipe_control_xfer(uint8_t dev_addr, tusb_std_request_t const *
|
||||
ehci_qtd_t *p_status = p_setup + 2;
|
||||
|
||||
//------------- SETUP Phase -------------//
|
||||
*(get_control_request_ptr(dev_addr)) = *p_request; // copy request
|
||||
|
||||
queue_td_init(p_setup, (uint32_t) get_control_request_ptr(dev_addr), 8);
|
||||
p_setup->pid = EHCI_PID_SETUP;
|
||||
queue_td_init(p_setup, (uint32_t) p_request, 8);
|
||||
p_setup->pid = EHCI_PID_SETUP;
|
||||
p_setup->next.address = (uint32_t) p_data;
|
||||
|
||||
//------------- DATA Phase -------------//
|
||||
@@ -343,7 +340,7 @@ tusb_error_t hcd_pipe_control_xfer(uint8_t dev_addr, tusb_std_request_t const *
|
||||
p_status->next.terminate = 1;
|
||||
|
||||
//------------- hook TD List to Queue Head -------------//
|
||||
p_qhd->p_qtd_list_head = p_setup;
|
||||
p_qhd->p_qtd_list_head = p_setup;
|
||||
p_qhd->qtd_overlay.next.address = (uint32_t) p_setup;
|
||||
|
||||
return TUSB_ERROR_NONE;
|
||||
@@ -416,7 +413,7 @@ static inline void insert_qtd_to_qhd(ehci_qhd_t *p_qhd, ehci_qtd_t *p_qtd_new)
|
||||
}
|
||||
|
||||
|
||||
tusb_error_t hcd_pipe_xfer(pipe_handle_t pipe_hdl, uint8_t buffer[], uint16_t total_bytes)
|
||||
tusb_error_t hcd_pipe_xfer(pipe_handle_t pipe_hdl, uint8_t buffer[], uint16_t total_bytes, bool int_on_complete)
|
||||
{
|
||||
//------------- TODO pipe handle validate -------------//
|
||||
|
||||
@@ -434,7 +431,7 @@ tusb_error_t hcd_pipe_xfer(pipe_handle_t pipe_hdl, uint8_t buffer[], uint16_t t
|
||||
|
||||
queue_td_init(p_qtd, (uint32_t) buffer, total_bytes);
|
||||
p_qtd->pid = p_qhd->pid_non_control;
|
||||
p_qtd->int_on_complete = 1;
|
||||
p_qtd->int_on_complete = int_on_complete ? 1 : 0;
|
||||
|
||||
//------------- insert TD to TD list -------------//
|
||||
insert_qtd_to_qhd(p_qhd, p_qtd);
|
||||
@@ -458,11 +455,6 @@ static inline ehci_qtd_t* get_control_qtds(uint8_t dev_addr)
|
||||
|
||||
}
|
||||
|
||||
static inline tusb_std_request_t* const get_control_request_ptr(uint8_t dev_addr)
|
||||
{
|
||||
return &usbh_device_info_pool[dev_addr].control_request;
|
||||
}
|
||||
|
||||
// TODO subject to pure function
|
||||
static void queue_head_init(ehci_qhd_t *p_qhd, uint8_t dev_addr, uint16_t max_packet_size, uint8_t endpoint_addr, uint8_t xfer_type)
|
||||
{
|
||||
|
Reference in New Issue
Block a user