fix buid_board.py script
diff --git a/hw/bsp/ea4088qs/ea4088qs.c b/hw/bsp/ea4088qs/ea4088qs.c
index fa905b2..7150ed3 100644
--- a/hw/bsp/ea4088qs/ea4088qs.c
+++ b/hw/bsp/ea4088qs/ea4088qs.c
@@ -33,11 +33,11 @@
 void USB_IRQHandler(void)
 {
   #if CFG_TUD_ENABLED
-    tuh_int_handler(0);
+    tud_int_handler(0);
   #endif
 
   #if CFG_TUH_ENABLED
-    tud_int_handler(0);
+    tuh_int_handler(0);
   #endif
 }
 
diff --git a/hw/bsp/frdm_k32l2b/board.mk b/hw/bsp/frdm_k32l2b/board.mk
index 56df553..a737eb3 100644
--- a/hw/bsp/frdm_k32l2b/board.mk
+++ b/hw/bsp/frdm_k32l2b/board.mk
@@ -9,7 +9,7 @@
   -DCFG_TUSB_MCU=OPT_MCU_K32L2BXX
 
 # mcu driver cause following warnings
-CFLAGS += -Wno-error=unused-parameter
+CFLAGS += -Wno-error=unused-parameter -Wno-error=redundant-decls
 
 MCU_DIR = $(SDK_DIR)/devices/K32L2B31A
 
diff --git a/hw/bsp/frdm_kl25z/board.mk b/hw/bsp/frdm_kl25z/board.mk
index 3585b8b..6a72d51 100644
--- a/hw/bsp/frdm_kl25z/board.mk
+++ b/hw/bsp/frdm_kl25z/board.mk
@@ -14,7 +14,7 @@
   -Wl,--defsym,__heap_size__=0
 
 # mcu driver cause following warnings
-CFLAGS += -Wno-error=unused-parameter -Wno-error=format
+CFLAGS += -Wno-error=unused-parameter -Wno-error=format -Wno-error=redundant-decls
 
 MCU_DIR = $(SDK_DIR)/devices/MKL25Z4
 
diff --git a/hw/bsp/kuiic/kuiic.c b/hw/bsp/kuiic/kuiic.c
index 737ef3f..7aaa9e0 100644
--- a/hw/bsp/kuiic/kuiic.c
+++ b/hw/bsp/kuiic/kuiic.c
@@ -45,7 +45,7 @@
  * Variables
  ******************************************************************************/
 /* System clock frequency. */
-extern uint32_t SystemCoreClock;
+// extern uint32_t SystemCoreClock;
 
 /*******************************************************************************
  * Variables for BOARD_BootClockRUN configuration
diff --git a/hw/bsp/lpcxpresso11u37/board.mk b/hw/bsp/lpcxpresso11u37/board.mk
index b736eeb..be6d2ed 100644
--- a/hw/bsp/lpcxpresso11u37/board.mk
+++ b/hw/bsp/lpcxpresso11u37/board.mk
@@ -15,7 +15,7 @@
   -DCFG_TUSB_MEM_ALIGN='__attribute__((aligned(64)))' 
 
 # mcu driver cause following warnings
-CFLAGS += -Wno-error=strict-prototypes -Wno-error=unused-parameter
+CFLAGS += -Wno-error=strict-prototypes -Wno-error=unused-parameter -Wno-error=redundant-decls
 
 MCU_DIR = hw/mcu/nxp/lpcopen/lpc11uxx/lpc_chip_11uxx
 
diff --git a/hw/bsp/lpcxpresso1347/board.mk b/hw/bsp/lpcxpresso1347/board.mk
index 62135c2..bf9c97c 100644
--- a/hw/bsp/lpcxpresso1347/board.mk
+++ b/hw/bsp/lpcxpresso1347/board.mk
@@ -15,7 +15,7 @@
   -DCFG_TUSB_MEM_ALIGN='__attribute__((aligned(64)))' 
 
 # startup.c and lpc_types.h cause following errors
-CFLAGS += -Wno-error=strict-prototypes
+CFLAGS += -Wno-error=strict-prototypes -Wno-error=redundant-decls
 
 MCU_DIR = hw/mcu/nxp/lpcopen/lpc13xx/lpc_chip_13xx
 
diff --git a/hw/bsp/nutiny_nuc121s/board.mk b/hw/bsp/nutiny_nuc121s/board.mk
index ff1d5aa..ad2ee1e 100644
--- a/hw/bsp/nutiny_nuc121s/board.mk
+++ b/hw/bsp/nutiny_nuc121s/board.mk
@@ -10,6 +10,9 @@
   -DCFG_EXAMPLE_MSC_READONLY \
   -DCFG_TUSB_MCU=OPT_MCU_NUC121
 
+# mcu driver cause following warnings
+CFLAGS += -Wno-error=redundant-decls
+
 # All source paths should be relative to the top level.
 LD_FILE = hw/bsp/$(BOARD)/nuc121_flash.ld
 
diff --git a/hw/bsp/nutiny_nuc125s/board.mk b/hw/bsp/nutiny_nuc125s/board.mk
index bb56e42..000c8cd 100644
--- a/hw/bsp/nutiny_nuc125s/board.mk
+++ b/hw/bsp/nutiny_nuc125s/board.mk
@@ -10,6 +10,9 @@
   -DCFG_EXAMPLE_MSC_READONLY \
   -DCFG_TUSB_MCU=OPT_MCU_NUC121
 
+# mcu driver cause following warnings
+CFLAGS += -Wno-error=redundant-decls
+
 # All source paths should be relative to the top level.
 LD_FILE = hw/bsp/$(BOARD)/nuc125_flash.ld
 
diff --git a/hw/bsp/nutiny_nuc126v/board.mk b/hw/bsp/nutiny_nuc126v/board.mk
index 4f0ebf2..0dcd897 100644
--- a/hw/bsp/nutiny_nuc126v/board.mk
+++ b/hw/bsp/nutiny_nuc126v/board.mk
@@ -11,6 +11,9 @@
   -D__CORTEX_SC=0 \
   -DCFG_TUSB_MCU=OPT_MCU_NUC126
 
+# mcu driver cause following warnings
+CFLAGS += -Wno-error=redundant-decls
+
 # All source paths should be relative to the top level.
 LD_FILE = hw/bsp/$(BOARD)/nuc126_flash.ld
 
diff --git a/hw/bsp/nutiny_sdk_nuc505/board.mk b/hw/bsp/nutiny_sdk_nuc505/board.mk
index e851434..f27577e 100644
--- a/hw/bsp/nutiny_sdk_nuc505/board.mk
+++ b/hw/bsp/nutiny_sdk_nuc505/board.mk
@@ -9,6 +9,9 @@
   -mfpu=fpv4-sp-d16 \
   -DCFG_TUSB_MCU=OPT_MCU_NUC505
 
+# mcu driver cause following warnings
+CFLAGS += -Wno-error=redundant-decls
+
 # All source paths should be relative to the top level.
 LD_FILE = hw/bsp/$(BOARD)/nuc505_flashtoram.ld
 
diff --git a/hw/bsp/same70_qmtech/board.mk b/hw/bsp/same70_qmtech/board.mk
index ba7088e..2aa09f5 100644
--- a/hw/bsp/same70_qmtech/board.mk
+++ b/hw/bsp/same70_qmtech/board.mk
@@ -11,7 +11,7 @@
   -DCFG_TUSB_MCU=OPT_MCU_SAMX7X
 
 # suppress following warnings from mcu driver
-CFLAGS += -Wno-error=unused-parameter -Wno-error=cast-align -Wno-error=cast-qual
+CFLAGS += -Wno-error=unused-parameter -Wno-error=cast-align -Wno-error=cast-qual -Wno-error=redundant-decls
 
 ASF_DIR = hw/mcu/microchip/same70
 
diff --git a/hw/bsp/same70_xplained/board.mk b/hw/bsp/same70_xplained/board.mk
index cb2decf..cbc51e6 100644
--- a/hw/bsp/same70_xplained/board.mk
+++ b/hw/bsp/same70_xplained/board.mk
@@ -11,7 +11,7 @@
   -DCFG_TUSB_MCU=OPT_MCU_SAMX7X
 
 # suppress following warnings from mcu driver
-CFLAGS += -Wno-error=unused-parameter -Wno-error=cast-align -Wno-error=cast-qual
+CFLAGS += -Wno-error=unused-parameter -Wno-error=cast-align -Wno-error=cast-qual -Wno-error=redundant-decls
 
 ASF_DIR = hw/mcu/microchip/same70
 
diff --git a/hw/bsp/samg55xplained/board.mk b/hw/bsp/samg55xplained/board.mk
index deff694..d0d0ade 100644
--- a/hw/bsp/samg55xplained/board.mk
+++ b/hw/bsp/samg55xplained/board.mk
@@ -12,7 +12,7 @@
   -DCFG_TUSB_MCU=OPT_MCU_SAMG
 
 # suppress following warnings from mcu driver
-CFLAGS += -Wno-error=undef -Wno-error=cast-qual -Wno-error=null-dereference
+CFLAGS += -Wno-error=undef -Wno-error=cast-qual -Wno-error=null-dereference -Wno-error=redundant-decls
 
 ASF_DIR = hw/mcu/microchip/samg55
 
diff --git a/hw/bsp/spresense/board.mk b/hw/bsp/spresense/board.mk
index ba291e8..78d7f6a 100644
--- a/hw/bsp/spresense/board.mk
+++ b/hw/bsp/spresense/board.mk
@@ -34,8 +34,9 @@
 	-Wno-error=unused-parameter \
 	-DCFG_TUSB_MCU=OPT_MCU_CXD56 \
 
+# suppress following warnings from mcu driver
 # lwip/src/core/raw.c:334:43: error: declaration of 'recv' shadows a global declaration
-CFLAGS += -Wno-error=shadow
+CFLAGS += -Wno-error=shadow  -Wno-error=redundant-decls
 
 SPRESENSE_SDK = $(TOP)/hw/mcu/sony/cxd56/spresense-exported-sdk
 
diff --git a/hw/bsp/stm32l0538disco/board.mk b/hw/bsp/stm32l0538disco/board.mk
index e19101d..69f0907 100644
--- a/hw/bsp/stm32l0538disco/board.mk
+++ b/hw/bsp/stm32l0538disco/board.mk
@@ -17,7 +17,7 @@
   -DCFG_TUSB_MCU=OPT_MCU_STM32L0
 
 # mcu driver cause following warnings
-CFLAGS += -Wno-error=unused-parameter -Wno-error=maybe-uninitialized
+CFLAGS += -Wno-error=unused-parameter -Wno-error=maybe-uninitialized -Wno-error=redundant-decls
 
 # All source paths should be relative to the top level.
 LD_FILE = hw/bsp/$(BOARD)/STM32L053C8Tx_FLASH.ld
diff --git a/src/portable/synopsys/dwc2/dwc2_stm32.h b/src/portable/synopsys/dwc2/dwc2_stm32.h
index 1d84954..1187e0d 100644
--- a/src/portable/synopsys/dwc2/dwc2_stm32.h
+++ b/src/portable/synopsys/dwc2/dwc2_stm32.h
@@ -43,6 +43,9 @@
   #define EP_MAX_FS       USB_OTG_FS_MAX_IN_ENDPOINTS
   #define EP_FIFO_SIZE_FS USB_OTG_FS_TOTAL_FIFO_SIZE
 
+  #define EP_MAX_HS       USB_OTG_HS_MAX_IN_ENDPOINTS
+  #define EP_FIFO_SIZE_HS USB_OTG_HS_TOTAL_FIFO_SIZE
+
 #elif CFG_TUSB_MCU == OPT_MCU_STM32F4
   #include "stm32f4xx.h"
   #define EP_MAX_FS       USB_OTG_FS_MAX_IN_ENDPOINTS
diff --git a/tools/build_family.py b/tools/build_family.py
index 095ca4f..680411e 100644
--- a/tools/build_family.py
+++ b/tools/build_family.py
@@ -48,7 +48,7 @@
 def build_family(example, family):
     all_boards = []
     for entry in os.scandir("hw/bsp/{}/boards".format(family)):
-        if entry.is_dir():
+        if entry.is_dir() and entry.name != 'pico_sdk':
             all_boards.append(entry.name)
     filter_with_input(all_boards)
     all_boards.sort()
diff --git a/tools/build_utils.py b/tools/build_utils.py
index 299fffa..68c2ed9 100644
--- a/tools/build_utils.py
+++ b/tools/build_utils.py
@@ -4,26 +4,34 @@
     ex_dir = pathlib.Path('examples/') / example
     bsp = pathlib.Path("hw/bsp")
 
-    board_dir = list(bsp.glob("*/boards/" + board))
-    if not board_dir:
-        # Skip unknown boards
-        return True
-
-    board_dir = list(board_dir)[0]
+    # board without family
+    board_dir = bsp / board
     
-    family_dir = board_dir.parent.parent
-    family = family_dir.name
+    if board_dir.exists():
+        family = ""
+        mk_contents = ""
+    else:
+        # otherwise look into family        
+        board_dir = list(bsp.glob("*/boards/" + board))
+        if not board_dir:
+            # Skip unknown boards
+            return True
+    
+        board_dir = list(board_dir)[0]
+    
+        family_dir = board_dir.parent.parent
+        family = family_dir.name
+    
+        # family CMake
+        family_mk = family_dir / "family.cmake"
+    
+        # family.mk
+        if not family_mk.exists():
+            family_mk = family_dir / "family.mk"
+    
+        mk_contents = family_mk.read_text()
 
-    # family CMake
-    family_mk = family_dir / "family.cmake"
-
-    # family.mk
-    if not family_mk.exists():
-        family_mk = family_dir / "family.mk"
-
-    mk_contents = family_mk.read_text()
-
-    # Find the mcu
+    # Find the mcu, first in family mk then board mk
     if "CFG_TUSB_MCU=OPT_MCU_" not in mk_contents:
         board_mk = board_dir / "board.cmake"
         if not board_mk.exists():