Merge branch 'master' into rp2040device
This commit is contained in:
		@@ -48,8 +48,8 @@
 | 
			
		||||
// Init these in dcd_init
 | 
			
		||||
static uint8_t *next_buffer_ptr;
 | 
			
		||||
 | 
			
		||||
// Endpoints 0-15, direction 0 for out and 1 for in.
 | 
			
		||||
static struct hw_endpoint hw_endpoints[16][2] = {0};
 | 
			
		||||
// USB_MAX_ENDPOINTS Endpoints, direction 0 for out and 1 for in.
 | 
			
		||||
static struct hw_endpoint hw_endpoints[USB_MAX_ENDPOINTS][2] = {0};
 | 
			
		||||
 | 
			
		||||
static inline struct hw_endpoint *hw_endpoint_get_by_num(uint8_t num, uint8_t in)
 | 
			
		||||
{
 | 
			
		||||
@@ -64,7 +64,7 @@ static struct hw_endpoint *hw_endpoint_get_by_addr(uint8_t ep_addr)
 | 
			
		||||
}
 | 
			
		||||
static void _hw_endpoint_alloc(struct hw_endpoint *ep)
 | 
			
		||||
{
 | 
			
		||||
    uint size = TU_MIN(64, ep->wMaxPacketSize);
 | 
			
		||||
    uint16_t size = tu_min16(64, ep->wMaxPacketSize);
 | 
			
		||||
 | 
			
		||||
    // Assumes single buffered for now
 | 
			
		||||
    ep->hw_data_buf = next_buffer_ptr;
 | 
			
		||||
@@ -99,7 +99,7 @@ static void _hw_endpoint_alloc(struct hw_endpoint *ep)
 | 
			
		||||
    *ep->endpoint_control = reg;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void _hw_endpoint_init(struct hw_endpoint *ep, uint8_t ep_addr, uint wMaxPacketSize, uint8_t transfer_type)
 | 
			
		||||
static void _hw_endpoint_init(struct hw_endpoint *ep, uint8_t ep_addr, uint16_t wMaxPacketSize, uint8_t transfer_type)
 | 
			
		||||
{
 | 
			
		||||
    uint8_t num = tu_edpt_number(ep_addr);
 | 
			
		||||
    bool in = ep_addr & TUSB_DIR_IN_MASK;
 | 
			
		||||
@@ -194,7 +194,7 @@ static void hw_endpoint_close(uint8_t ep_addr)
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
static void hw_endpoint_init(uint8_t ep_addr, uint wMaxPacketSize, uint8_t bmAttributes)
 | 
			
		||||
static void hw_endpoint_init(uint8_t ep_addr, uint16_t wMaxPacketSize, uint8_t bmAttributes)
 | 
			
		||||
{
 | 
			
		||||
    struct hw_endpoint *ep = hw_endpoint_get_by_addr(ep_addr);
 | 
			
		||||
    _hw_endpoint_init(ep, ep_addr, wMaxPacketSize, bmAttributes);
 | 
			
		||||
 
 | 
			
		||||
@@ -30,7 +30,6 @@
 | 
			
		||||
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
#include "rp2040_usb.h"
 | 
			
		||||
#include "hardware/clocks.h"
 | 
			
		||||
 | 
			
		||||
// Direction strings for debug
 | 
			
		||||
const char *ep_dir_string[] = {
 | 
			
		||||
@@ -159,7 +158,7 @@ void _hw_endpoint_xfer_start(struct hw_endpoint *ep, uint8_t *buffer, uint16_t t
 | 
			
		||||
    // Fill in info now that we're kicking off the hw
 | 
			
		||||
    ep->total_len = total_len;
 | 
			
		||||
    ep->len = 0;
 | 
			
		||||
    ep->transfer_size = tu_min32(total_len, ep->wMaxPacketSize);
 | 
			
		||||
    ep->transfer_size = tu_min16(total_len, ep->wMaxPacketSize);
 | 
			
		||||
    ep->active = true;
 | 
			
		||||
    ep->user_buf = buffer;
 | 
			
		||||
#ifdef RP2040_USB_HOST_MODE
 | 
			
		||||
@@ -180,7 +179,7 @@ void _hw_endpoint_xfer_sync(struct hw_endpoint *ep)
 | 
			
		||||
    // Get the buffer state and amount of bytes we have
 | 
			
		||||
    // transferred
 | 
			
		||||
    uint32_t buf_ctrl = _hw_endpoint_buffer_control_get_value32(ep);
 | 
			
		||||
    uint transferred_bytes = buf_ctrl & USB_BUF_CTRL_LEN_MASK;
 | 
			
		||||
    uint16_t transferred_bytes = buf_ctrl & USB_BUF_CTRL_LEN_MASK;
 | 
			
		||||
 | 
			
		||||
#ifdef RP2040_USB_HOST_MODE
 | 
			
		||||
    // tag::host_buf_sel_fix[]
 | 
			
		||||
@@ -238,8 +237,8 @@ bool _hw_endpoint_xfer_continue(struct hw_endpoint *ep)
 | 
			
		||||
    _hw_endpoint_xfer_sync(ep);
 | 
			
		||||
 | 
			
		||||
    // Now we have synced our state with the hardware. Is there more data to transfer?
 | 
			
		||||
    uint remaining_bytes = ep->total_len - ep->len;
 | 
			
		||||
    ep->transfer_size = tu_min32(remaining_bytes, ep->wMaxPacketSize);
 | 
			
		||||
    uint16_t remaining_bytes = ep->total_len - ep->len;
 | 
			
		||||
    ep->transfer_size = tu_min16(remaining_bytes, ep->wMaxPacketSize);
 | 
			
		||||
#ifdef RP2040_USB_HOST_MODE
 | 
			
		||||
    _hw_endpoint_update_last_buf(ep);
 | 
			
		||||
#endif
 | 
			
		||||
 
 | 
			
		||||
@@ -67,15 +67,15 @@ struct hw_endpoint
 | 
			
		||||
 | 
			
		||||
    // Current transfer information
 | 
			
		||||
    bool active;
 | 
			
		||||
    uint total_len;
 | 
			
		||||
    uint len;
 | 
			
		||||
    uint16_t total_len;
 | 
			
		||||
    uint16_t len;
 | 
			
		||||
    // Amount of data with the hardware
 | 
			
		||||
    uint transfer_size;
 | 
			
		||||
    uint16_t transfer_size;
 | 
			
		||||
    // User buffer in main memory
 | 
			
		||||
    uint8_t *user_buf;
 | 
			
		||||
 | 
			
		||||
    // Data needed from EP descriptor
 | 
			
		||||
    uint wMaxPacketSize;
 | 
			
		||||
    uint16_t wMaxPacketSize;
 | 
			
		||||
    // Interrupt, bulk, etc
 | 
			
		||||
    uint8_t transfer_type;
 | 
			
		||||
    
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user