hathach 7 rokov pred
rodič
commit
1d6fc49fa9

+ 1 - 1
hw/bsp/metro_m0_express/board_metro_m0_express.c

@@ -76,7 +76,7 @@ void board_init(void)
   gpio_set_pin_level(BOARD_LED0, 1-LED_STATE_ON);
 
 #if CFG_TUSB_OS  == OPT_OS_NONE
-  // Tick init
+  // Tick init, samd SystemCoreClock may not correct
   SysTick_Config(SystemCoreClock/1000);
 #endif
 

+ 1 - 1
hw/bsp/metro_m4_express/board_metro_m4_express.c

@@ -75,7 +75,7 @@ void board_init(void)
 
   // Systick init
 #if CFG_TUSB_OS  == OPT_OS_NONE
-  // Tick init
+  // Tick init, samd SystemCoreClock may not correct
   SysTick_Config(SystemCoreClock / 1000);
 #endif
 

+ 4 - 10
src/portable/microchip/samd21/dcd_samd21.c

@@ -41,21 +41,11 @@
 #if TUSB_OPT_DEVICE_ENABLED && CFG_TUSB_MCU == OPT_MCU_SAMD21
 
 #include "device/dcd.h"
-
-#include "device/usbd.h"
-#include "device/usbd_pvt.h" // to use defer function helper
-
 #include "sam.h"
 
 /*------------------------------------------------------------------*/
 /* MACRO TYPEDEF CONSTANT ENUM
  *------------------------------------------------------------------*/
-enum
-{
-  // Max allowed by USB specs
-  MAX_PACKET_SIZE   = 64,
-};
-
 static ATTR_ALIGNED(4) UsbDeviceDescBank sram_registers[8][2];
 static ATTR_ALIGNED(4) uint8_t _setup_packet[8];
 
@@ -134,6 +124,10 @@ bool dcd_edpt_open (uint8_t rhport, tusb_desc_endpoint_t const * desc_edpt)
     }
     size_value++;
   }
+
+  // unsupported endpoint size
+  if ( size_value == 7 && desc_edpt->wMaxPacketSize.size != 1023 ) return false;
+
   bank->PCKSIZE.bit.SIZE = size_value;
 
   UsbDeviceEndpoint* ep = &USB->DEVICE.DeviceEndpoint[epnum];

+ 4 - 10
src/portable/microchip/samd51/dcd_samd51.c

@@ -41,21 +41,11 @@
 #if TUSB_OPT_DEVICE_ENABLED && CFG_TUSB_MCU == OPT_MCU_SAMD51
 
 #include "device/dcd.h"
-
-#include "device/usbd.h"
-#include "device/usbd_pvt.h" // to use defer function helper
-
 #include "sam.h"
 
 /*------------------------------------------------------------------*/
 /* MACRO TYPEDEF CONSTANT ENUM
  *------------------------------------------------------------------*/
-enum
-{
-  // Max allowed by USB specs
-  MAX_PACKET_SIZE   = 64,
-};
-
 static UsbDeviceDescBank sram_registers[8][2];
 static ATTR_ALIGNED(4) uint8_t _setup_packet[8];
 
@@ -134,6 +124,10 @@ bool dcd_edpt_open (uint8_t rhport, tusb_desc_endpoint_t const * desc_edpt)
     }
     size_value++;
   }
+
+  // unsupported endpoint size
+  if ( size_value == 7 && desc_edpt->wMaxPacketSize.size != 1023 ) return false;
+
   bank->PCKSIZE.bit.SIZE = size_value;
 
   UsbDeviceEndpoint* ep = &USB->DEVICE.DeviceEndpoint[epnum];