@@ -157,16 +157,8 @@ def id(self):
157
157
board_id = self ._stm32mp1_id ()
158
158
elif chip_id == chips .MT8167 :
159
159
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 ()
170
162
elif chip_id == chips .GENERIC_X86 :
171
163
board_id = boards .GENERIC_LINUX_PC
172
164
self ._board_id = board_id
@@ -473,6 +465,32 @@ def _allwinner_variants_id(self):
473
465
# TODO: Add other specifc board contexts here
474
466
return board
475
467
468
+ def _rp2040_u2if_id (self ):
469
+ import hid
470
+
471
+ # look for it based on PID/VID
472
+ for dev in hid .enumerate ():
473
+ # Raspberry Pi Pico
474
+ vendor = dev ["vendor_id" ]
475
+ product = dev ["product_id" ]
476
+ if vendor == 0xCAFE and product == 0x4005 :
477
+ return boards .PICO_U2IF
478
+ if vendor == 0x239A :
479
+ # Feather RP2040
480
+ if product == 0x00F1 :
481
+ return boards .FEATHER_U2IF
482
+ # Itsy Bitsy RP2040
483
+ if product == 0x00FD :
484
+ return boards .ITSYBITSY_U2IF
485
+ # QT Py RP2040
486
+ if product == 0x00F7 :
487
+ return boards .QTPY_U2IF
488
+ # QT2040 Trinkey
489
+ if product == 0x0109 :
490
+ return boards .QT2040_TRINKEY_U2IF
491
+ # Will only reach here if a device was added in chip.py but here.
492
+ raise RuntimeError ("RP2040_U2IF device was added to chip but not board." )
493
+
476
494
@property
477
495
def any_nanopi (self ):
478
496
"""Check whether the current board is any defined Nano Pi."""
0 commit comments