summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorHa Thach <[email protected]>2021-02-01 12:43:59 +0700
committerGitHub <[email protected]>2021-02-01 12:43:59 +0700
commita044578a33f9049c242d15d7e51c297bc20fabe2 (patch)
tree3ebc218836c8e65613bd4aa5b5457fe188c00cab /src
parent666a851a0745ea32ac57e288e3043a6b93aa87e1 (diff)
parentedc2224118ca18d8c9dd9d6d77d66f6a6d904230 (diff)
Merge pull request #601 from majbthrd/start_pi2tu
start the assimilation of Pi Pico into TU
Diffstat (limited to 'src')
-rw-r--r--src/portable/raspberrypi/rp2040/dcd_rp2040.c16
-rw-r--r--src/portable/raspberrypi/rp2040/hcd_rp2040.c5
2 files changed, 11 insertions, 10 deletions
diff --git a/src/portable/raspberrypi/rp2040/dcd_rp2040.c b/src/portable/raspberrypi/rp2040/dcd_rp2040.c
index 80e5d3c4b..8ad1729e5 100644
--- a/src/portable/raspberrypi/rp2040/dcd_rp2040.c
+++ b/src/portable/raspberrypi/rp2040/dcd_rp2040.c
@@ -38,8 +38,6 @@
#include "device/dcd.h"
-#include "pico/stdlib.h"
-
/*------------------------------------------------------------------*/
/* Low level controller
*------------------------------------------------------------------*/
@@ -67,11 +65,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 = 64;
- if (ep->wMaxPacketSize > 64)
- {
- size = ep->wMaxPacketSize;
- }
+ uint size = TU_MIN(64, ep->wMaxPacketSize);
// Assumes single buffered for now
ep->hw_data_buf = next_buffer_ptr;
@@ -244,7 +238,7 @@ static void reset_ep0(void)
// If we have finished this transfer on EP0 set pid back to 1 for next
// setup transfer. Also clear a stall in case
uint8_t addrs[] = {0x0, 0x80};
- for (uint i = 0 ; i < count_of(addrs); i++)
+ for (uint i = 0 ; i < TU_ARRAY_SIZE(addrs); i++)
{
struct hw_endpoint *ep = hw_endpoint_get_by_addr(addrs[i]);
ep->next_pid = 1u;
@@ -479,4 +473,10 @@ void dcd_edpt_close (uint8_t rhport, uint8_t ep_addr)
}
+void dcd_int_handler(uint8_t rhport)
+{
+ (void) rhport;
+ dcd_rp2040_irq();
+}
+
#endif
diff --git a/src/portable/raspberrypi/rp2040/hcd_rp2040.c b/src/portable/raspberrypi/rp2040/hcd_rp2040.c
index c74578c3c..efb2bd430 100644
--- a/src/portable/raspberrypi/rp2040/hcd_rp2040.c
+++ b/src/portable/raspberrypi/rp2040/hcd_rp2040.c
@@ -86,7 +86,7 @@ static void set_dev_ep(uint8_t dev_addr, uint8_t ep_addr, struct hw_endpoint *ep
uint8_t num = tu_edpt_number(ep_addr);
uint8_t in = (ep_addr & TUSB_DIR_IN_MASK) ? 1 : 0;
uint32_t index = ep - eps;
- hard_assert(index < count_of(eps));
+ hard_assert(index < TU_ARRAY_SIZE(eps));
// todo revisit why dev_addr can be 0 here
if (dev_addr) {
dev_ep_map[dev_addr-1][num][in] = 128u | index;
@@ -245,7 +245,7 @@ static void hcd_rp2040_irq(void)
static struct hw_endpoint *_next_free_interrupt_ep(void)
{
struct hw_endpoint *ep = NULL;
- for (uint i = 1; i < count_of(eps); i++)
+ for (uint i = 1; i < TU_ARRAY_SIZE(eps); i++)
{
ep = &eps[i];
if (!ep->configured)
@@ -444,6 +444,7 @@ bool hcd_edpt_xfer(uint8_t rhport, uint8_t dev_addr, uint8_t ep_addr, uint8_t *
// Get appropriate ep. Either EPX or interrupt endpoint
struct hw_endpoint *ep = get_dev_ep(dev_addr, ep_addr);
+ assert(ep);
if (ep_addr != ep->ep_addr)
{