@@ -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
@@ -468,6 +460,32 @@ def _allwinner_variants_id(self):
468
460
# TODO: Add other specifc board contexts here
469
461
return board
470
462
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
+
471
489
@property
472
490
def any_nanopi (self ):
473
491
"""Check whether the current board is any defined Nano Pi."""
0 commit comments