Explorar o código

Merge pull request #1076 from kkitayam/impl_close_all_for_rx

Implement dcd_edpt_close_all() for Renesas RX family
Ha Thach %!s(int64=4) %!d(string=hai) anos
pai
achega
c5e6e87d13
Modificáronse 2 ficheiros con 11 adicións e 5 borrados
  1. 2 2
      docs/reference/supported.rst
  2. 9 3
      src/portable/renesas/usba/dcd_usba.c

+ 2 - 2
docs/reference/supported.rst

@@ -84,9 +84,9 @@ Supported MCUs
 +--------------+-------+------------+-------------------+--------------------+-------------------+-------------------+--------------+
 | Raspberry Pi | RP2040             | |:green_square:|  | |:x:|              | |:green_square:|  |                   |              |
 +--------------+--------------------+-------------------+--------------------+-------------------+-------------------+--------------+
-| Renesas      | RX63N              |                   |                    |                   |                   |              |
+| Renesas      | RX63N              | |:green_square:|  |                    | |:green_square:|  | |:x:|             |              |
 |              +--------------------+-------------------+--------------------+-------------------+-------------------+--------------+
-|              | RX65N              |                   |                    |                   |                   |              |
+|              | RX65N              | |:green_square:|  |                    | |:green_square:|  | |:x:|             |              |
 +--------------+--------------------+-------------------+--------------------+-------------------+-------------------+--------------+
 | Silabs       | EFM32GG12          | |:green_square:|  | |:x:|              | |:green_square:|  | |:x:|             | #750         |
 +--------------+--------------------+-------------------+--------------------+-------------------+-------------------+--------------+

+ 9 - 3
src/portable/renesas/usba/dcd_usba.c

@@ -733,10 +733,16 @@ bool dcd_edpt_open(uint8_t rhport, tusb_desc_endpoint_t const * ep_desc)
   return true;
 }
 
-void dcd_edpt_close_all (uint8_t rhport)
+void dcd_edpt_close_all(uint8_t rhport)
 {
-  (void) rhport;
-  // TODO implement dcd_edpt_close_all()
+  unsigned i = TU_ARRAY_SIZE(_dcd.pipe);
+  dcd_int_disable(rhport);
+  while (--i) { /* Close all pipes except 0 */
+    const unsigned ep_addr = _dcd.pipe[i].ep;
+    if (!ep_addr) continue;
+    dcd_edpt_close(rhport, ep_addr);
+  }
+  dcd_int_enable(rhport);
 }
 
 void dcd_edpt_close(uint8_t rhport, uint8_t ep_addr)