Skip to content

Commit e1dedd7

Browse files
authored
Merge pull request #4 from adafruit/master
Merge
2 parents 48cbed1 + 31a4811 commit e1dedd7

File tree

5 files changed

+97
-3
lines changed

5 files changed

+97
-3
lines changed

adafruit_platformdetect/board.py

Lines changed: 38 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -105,12 +105,18 @@ def id(self):
105105
board_id = boards.ODROID_XU4
106106
elif chip_id == chips.FT232H:
107107
board_id = boards.FTDI_FT232H
108+
elif chip_id == chips.FT2232H:
109+
board_id = boards.FTDI_FT2232H
108110
elif chip_id == chips.APQ8016:
109111
board_id = boards.DRAGONBOARD_410C
110112
elif chip_id in (chips.T210, chips.T186, chips.T194):
111113
board_id = self._tegra_id()
112114
elif chip_id == chips.HFU540:
113115
board_id = self._sifive_id()
116+
elif chip_id == chips.C906:
117+
board_id = self._allwinner_id()
118+
elif chip_id == chips.VICU7:
119+
board_id = self.__beaglebone_id()
114120
elif chip_id == chips.MCP2221:
115121
board_id = boards.MICROCHIP_MCP2221
116122
elif chip_id == chips.BINHO:
@@ -135,6 +141,8 @@ def id(self):
135141
board_id = self._clockwork_pi_id()
136142
elif chip_id == chips.RK3308:
137143
board_id = self._rock_pi_id()
144+
elif chip_id == chips.RK3399:
145+
board_id = self._rock_pi_id()
138146
elif chip_id == chips.ATOM_X5_Z8350:
139147
board_id = self._rock_pi_id()
140148
elif chip_id == chips.RK3288:
@@ -147,6 +155,8 @@ def id(self):
147155
board_id = self._stm32mp1_id()
148156
elif chip_id == chips.MT8167:
149157
board_id = boards.CORAL_EDGE_TPU_DEV_MINI
158+
elif chip_id == chips.PICO_U2IF:
159+
board_id = boards.PICO_U2IF
150160

151161
self._board_id = board_id
152162
return board_id
@@ -232,6 +242,11 @@ def _beaglebone_id(self):
232242
if id_string == bb_id[1]:
233243
return model
234244

245+
board_value = self.detector.get_armbian_release_field("BOARD")
246+
247+
if board_value == "freedom-u74-arty":
248+
return boards.BEAGLEV_STARFIV
249+
235250
return None
236251

237252
# pylint: enable=no-self-use
@@ -300,6 +315,8 @@ def _stm32mp1_id(self):
300315
return boards.STM32MP157C_DK2
301316
if "LubanCat" in board_value:
302317
return boards.LUBANCAT_STM32MP157
318+
if "OSD32MP1-BRK" in board_value:
319+
return boards.OSD32MP1_BRK
303320
return None
304321

305322
def _imx8mx_id(self):
@@ -334,6 +351,13 @@ def _sifive_id(self):
334351
return boards.SIFIVE_UNLEASHED
335352
return None
336353

354+
def _allwinner_id(self):
355+
"""Try to detect the id for Allwiner D1 board."""
356+
board_value = self.detector.get_device_model()
357+
if "sun20iw1p1" in board_value:
358+
return boards.ALLWINER_D1
359+
return None
360+
337361
def _pine64_id(self):
338362
"""Try to detect the id for Pine64 board or device."""
339363
board_value = self.detector.get_device_model()
@@ -372,6 +396,8 @@ def _rock_pi_id(self):
372396
board = None
373397
if board_value and "ROCK Pi S" in board_value:
374398
board = boards.ROCK_PI_S
399+
if board_value and "ROCK PI 4" in board_value.upper():
400+
board = boards.ROCK_PI_4
375401
if self.detector.check_board_name_value() == "ROCK Pi X":
376402
board = boards.ROCK_PI_X
377403
return board
@@ -486,8 +512,8 @@ def any_pine64_board(self):
486512

487513
@property
488514
def any_rock_pi_board(self):
489-
"""Check whether the current board is any Clockwork Pi device."""
490-
return self.ROCK_PI_S
515+
"""Check whether the current board is any Rock Pi device."""
516+
return self.id in boards._ROCK_PI_IDS
491517

492518
@property
493519
def any_clockwork_pi_board(self):
@@ -541,11 +567,21 @@ def ftdi_ft232h(self):
541567
"""Check whether the current board is an FTDI FT232H."""
542568
return self.id == boards.FTDI_FT232H
543569

570+
@property
571+
def ftdi_ft2232h(self):
572+
"""Check whether the current board is an FTDI FT2232H."""
573+
return self.id == boards.FTDI_FT2232H
574+
544575
@property
545576
def microchip_mcp2221(self):
546577
"""Check whether the current board is a Microchip MCP2221."""
547578
return self.id == boards.MICROCHIP_MCP2221
548579

580+
@property
581+
def pico_u2if(self):
582+
"""Check whether the current board is a RPi Pico w/ u2if."""
583+
return self.id == boards.PICO_U2IF
584+
549585
@property
550586
def binho_nova(self):
551587
"""Check whether the current board is an BINHO NOVA."""

adafruit_platformdetect/chip.py

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,18 @@ def id(
8383
)
8484
self._chip_id = chips.FT232H
8585
return self._chip_id
86+
if os.environ.get("BLINKA_FT2232H"):
87+
from pyftdi.usbtools import UsbTools
88+
89+
# look for it based on PID/VID
90+
count = len(UsbTools.find_all([(0x0403, 0x6010)]))
91+
if count == 0:
92+
raise RuntimeError(
93+
"BLINKA_FT2232H environment variable "
94+
+ "set, but no FT2232H device found"
95+
)
96+
self._chip_id = chips.FT2232H
97+
return self._chip_id
8698
if os.environ.get("BLINKA_MCP2221"):
8799
import hid
88100

@@ -95,6 +107,18 @@ def id(
95107
"BLINKA_MCP2221 environment variable "
96108
+ "set, but no MCP2221 device found"
97109
)
110+
if os.environ.get("BLINKA_PICO_U2IF"):
111+
import hid
112+
113+
# look for it based on PID/VID
114+
for dev in hid.enumerate():
115+
if dev["vendor_id"] == 0xCAFE and dev["product_id"] == 0x4005:
116+
self._chip_id = chips.PICO_U2IF
117+
return self._chip_id
118+
raise RuntimeError(
119+
"BLINKA_PICO_U2IF environment variable "
120+
+ "set, but no Pico device found"
121+
)
98122
if os.environ.get("BLINKA_GREATFET"):
99123
import usb
100124

@@ -138,12 +162,21 @@ def _linux_id(self):
138162
if self.detector.check_dt_compatible_value("fu500"):
139163
return chips.HFU540
140164

165+
if self.detector.check_dt_compatible_value("sun20iw1p1"):
166+
return chips.C906
167+
168+
if self.detector.check_dt_compatible_value("sifive"):
169+
return chips.VICU7
170+
141171
if self.detector.check_dt_compatible_value("sun8i-a33"):
142172
return chips.A33
143173

144174
if self.detector.check_dt_compatible_value("rockchip,rk3308"):
145175
return chips.RK3308
146176

177+
if self.detector.check_dt_compatible_value("rockchip,rk3399"):
178+
return chips.RK3399
179+
147180
if self.detector.check_dt_compatible_value("rockchip,rk3288"):
148181
return chips.RK3288
149182

adafruit_platformdetect/constants/boards.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
BEAGLEBONE_AIR = "BEAGLEBONE_AIR"
1515
BEAGLEBONE_AI = "BEAGLEBONE_AI"
1616
BEAGLEBONE_POCKETBONE = "BEAGLEBONE_POCKETBONE"
17+
BEAGLEV_STARFIV = "BEAGLEV_STARFIVE"
1718
BEAGLELOGIC_STANDALONE = "BEAGLELOGIC_STANDALONE"
1819
OSD3358_DEV_BOARD = "OSD3358_DEV_BOARD"
1920
OSD3358_SM_RED = "OSD3358_SM_RED"
@@ -54,6 +55,7 @@
5455
# NVIDIA Jetson boards
5556
JETSON_TX1 = "JETSON_TX1"
5657
JETSON_TX2 = "JETSON_TX2"
58+
JETSON_TX2_NX = "JETSON_TX2_NX"
5759
CLARA_AGX_XAVIER = "CLARA_AGX_XAVIER"
5860
JETSON_XAVIER = "JETSON_XAVIER"
5961
JETSON_NANO = "JETSON_NANO"
@@ -69,6 +71,7 @@
6971

7072
# STM32 MPU boards
7173
STM32MP157C_DK2 = "STM32MP157C_DK2"
74+
OSD32MP1_BRK = "OSD32MP1_BRK"
7275

7376
# Embedfire LubanCat board
7477
LUBANCAT_IMX6ULL = "LUBANCAT_IMX6ULL"
@@ -102,12 +105,19 @@
102105
ODROID_XU4 = "ODROID_XU4"
103106

104107
FTDI_FT232H = "FTDI_FT232H"
108+
FTDI_FT2232H = "FTDI_FT2232H"
105109
DRAGONBOARD_410C = "DRAGONBOARD_410C"
106110

107111
SIFIVE_UNLEASHED = "SIFIVE_UNLEASHED"
108112

113+
ALLWINER_D1 = "ALLWINER_D1"
114+
109115
MICROCHIP_MCP2221 = "MICROCHIP_MCP2221"
110116

117+
# Raspberry Pi Pico with u2if firmware
118+
# https://github.com/execuc/u2if
119+
PICO_U2IF = "PICO_U2IF"
120+
111121
BINHO_NOVA = "BINHO_NOVA"
112122

113123
ONION_OMEGA = "ONION_OMEGA"
@@ -120,6 +130,7 @@
120130
SOPINE = "SOPINE"
121131

122132
ROCK_PI_S = "ROCK_PI_S"
133+
ROCK_PI_4 = "ROCK_PI_4"
123134
ROCK_PI_X = "ROCK_PI_X"
124135

125136
GREATFET_ONE = "GREATFET_ONE"
@@ -136,6 +147,7 @@
136147
_STM32MP1_IDS = (
137148
STM32MP157C_DK2,
138149
LUBANCAT_STM32MP157,
150+
OSD32MP1_BRK,
139151
)
140152

141153
# OrangePI
@@ -195,6 +207,7 @@
195207
"nvidia,storm",
196208
),
197209
),
210+
(JETSON_TX2_NX, ("nvidia,p3509-0000+p3636-0001",)),
198211
(CLARA_AGX_XAVIER, ("nvidia,e3900-0000+p2888-0004",)),
199212
(
200213
JETSON_XAVIER,
@@ -337,6 +350,7 @@
337350
"1000003",
338351
),
339352
RASPBERRY_PI_B_REV2: (
353+
"0004",
340354
"0005",
341355
"0006",
342356
"000d",
@@ -442,6 +456,7 @@
442456
RASPBERRY_PI_CM4: (
443457
"a03140",
444458
"b03140",
459+
"c03140",
445460
),
446461
}
447462

@@ -451,5 +466,8 @@
451466
# Pine64 boards and devices
452467
_PINE64_DEV_IDS = (PINE64, PINEH64, PINEBOOK, PINEPHONE, SOPINE)
453468

469+
# RockPi boards and devices
470+
_ROCK_PI_IDS = (ROCK_PI_S, ROCK_PI_4, ROCK_PI_X)
471+
454472
# UDOO
455473
_UDOO_BOARD_IDS = {UDOO_BOLT_V8: ("SC40-2000-0000-C0|C",), UDOO_X86: ("dummy",)}

adafruit_platformdetect/constants/chips.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,10 @@
2121
APQ8016 = "APQ8016"
2222
GENERIC_X86 = "GENERIC_X86"
2323
FT232H = "FT232H"
24+
FT2232H = "FT2232H"
2425
HFU540 = "HFU540"
26+
C906 = "C906"
27+
VICU7 = "VICU7"
2528
MCP2221 = "MCP2221"
2629
BINHO = "BINHO"
2730
MIPS24KC = "MIPS24KC"
@@ -33,12 +36,14 @@
3336
H5 = "H5"
3437
H616 = "H616"
3538
RK3308 = "RK3308"
39+
RK3399 = "RK3399"
3640
LPC4330 = "LPC4330"
3741
RK3288 = "RK3288"
3842
PENTIUM_N3710 = "PENTIUM_N3710" # SOC Braswell core
3943
STM32F405 = "STM32F405"
4044
STM32MP157 = "STM32MP157"
4145
MT8167 = "MT8167"
4246
ATOM_X5_Z8350 = "X5-Z8350"
47+
PICO_U2IF = "PICO_U2IF"
4348

4449
BCM_RANGE = {"BCM2708", "BCM2709", "BCM2711", "BCM2835", "BCM2837"}

bin/detect.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,11 @@
3030
print(
3131
"Is this an OS environment variable special case?",
3232
detector.board.FTDI_FT232H
33+
| detector.board.FTDI_FT2232H
3334
| detector.board.MICROCHIP_MCP2221
3435
| detector.board.BINHO_NOVA
35-
| detector.board.GREATFET_ONE,
36+
| detector.board.GREATFET_ONE
37+
| detector.board.PICO_U2IF,
3638
)
3739

3840
if detector.board.any_raspberry_pi:

0 commit comments

Comments
 (0)