@@ -157,16 +157,8 @@ def id(self):
157157 board_id = self ._stm32mp1_id ()
158158 elif chip_id == chips .MT8167 :
159159 board_id = boards .CORAL_EDGE_TPU_DEV_MINI
160- elif chip_id == chips .PICO_U2IF :
161- board_id = boards .PICO_U2IF
162- elif chip_id == chips .FEATHER_U2IF :
163- board_id = boards .FEATHER_U2IF
164- elif chip_id == chips .ITSYBITSY_U2IF :
165- board_id = boards .ITSYBITSY_U2IF
166- elif chip_id == chips .QTPY_U2IF :
167- board_id = boards .QTPY_U2IF
168- elif chip_id == chips .QT2040_TRINKEY_U2IF :
169- board_id = boards .QT2040_TRINKEY_U2IF
160+ elif chip_id == chips .RP2040_U2IF :
161+ board_id = self ._rp2040_u2if_id ()
170162 elif chip_id == chips .GENERIC_X86 :
171163 board_id = boards .GENERIC_LINUX_PC
172164 self ._board_id = board_id
@@ -468,6 +460,32 @@ def _allwinner_variants_id(self):
468460 # TODO: Add other specifc board contexts here
469461 return board
470462
463+ def _rp2040_u2if_id (self ):
464+ import hid
465+
466+ # look for it based on PID/VID
467+ for dev in hid .enumerate ():
468+ # Raspberry Pi Pico
469+ vendor = dev ["vendor_id" ]
470+ product = dev ["product_id" ]
471+ if vendor == 0xCAFE and product == 0x4005 :
472+ return boards .PICO_U2IF
473+ if vendor == 0x239A :
474+ # Feather RP2040
475+ if product == 0x00F1 :
476+ return boards .FEATHER_U2IF
477+ # Itsy Bitsy RP2040
478+ if product == 0x00FD :
479+ return boards .ITSYBITSY_U2IF
480+ # QT Py RP2040
481+ if product == 0x00F7 :
482+ return boards .QTPY_U2IF
483+ # QT2040 Trinkey
484+ if product == 0x0109 :
485+ return boards .QT2040_TRINKEY_U2IF
486+ # Will only reach here if a device was added in chip.py but here.
487+ raise RuntimeError ("RP2040_U2IF device was added to chip but not board." )
488+
471489 @property
472490 def any_nanopi (self ):
473491 """Check whether the current board is any defined Nano Pi."""
0 commit comments