mirror of
https://github.com/hathach/tinyusb.git
synced 2025-01-31 05:52:55 +08:00
fix a problem with dcd 13uxx dcd_pipe_clear_stall that should clear toggle for buffer0 (instead of active buffer)
as the next transfer is always forced to be happened on buffer0
This commit is contained in:
parent
1940f9f0f7
commit
8fbafc460c
@ -105,7 +105,7 @@ uint16_t tusbd_msc_read10_cb (uint8_t coreid, uint8_t lun, void** pp_buffer, uin
|
||||
return 1;
|
||||
}
|
||||
|
||||
// Stall write10 as this is readonly disk
|
||||
// Stall write10 by return 0, as this is readonly disk
|
||||
uint16_t tusbd_msc_write10_cb(uint8_t coreid, uint8_t lun, void** pp_buffer, uint32_t lba, uint16_t block_count)
|
||||
{
|
||||
(*pp_buffer) = NULL;
|
||||
|
@ -423,12 +423,13 @@ bool dcd_pipe_is_stalled(endpoint_handle_t edpt_hdl)
|
||||
tusb_error_t dcd_pipe_clear_stall(uint8_t coreid, uint8_t edpt_addr)
|
||||
{
|
||||
uint8_t ep_id = edpt_addr2phy(edpt_addr);
|
||||
uint8_t active_buffer = BIT_TEST_(LPC_USB->EPINUSE, ep_id) ? 1 : 0;
|
||||
// uint8_t active_buffer = BIT_TEST_(LPC_USB->EPINUSE, ep_id) ? 1 : 0;
|
||||
|
||||
dcd_data.qhd[ep_id][0].stall = dcd_data.qhd[ep_id][1].stall = 0;
|
||||
|
||||
dcd_data.qhd[ep_id][active_buffer].toggle_reset = 1;
|
||||
dcd_data.qhd[ep_id][active_buffer].feedback_toggle = 0;
|
||||
// since the next transfer always take place on buffer0 --> clear buffer0 toggle
|
||||
dcd_data.qhd[ep_id][0].toggle_reset = 1;
|
||||
dcd_data.qhd[ep_id][0].feedback_toggle = 0;
|
||||
|
||||
//------------- clear stall must carry on any previously queued transfer -------------//
|
||||
if ( dcd_data.next_td[ep_id].total_bytes != 0 )
|
||||
|
Loading…
x
Reference in New Issue
Block a user