|
1 | 1 | """Detect boards."""
|
2 | 2 | import os
|
3 | 3 | import re
|
| 4 | + |
4 | 5 | import adafruit_platformdetect.chip as ap_chip
|
5 | 6 |
|
6 | 7 | # Allow for aligned constant definitions:
|
|
74 | 75 | ONION_OMEGA = "ONION_OMEGA"
|
75 | 76 | ONION_OMEGA2 = "ONION_OMEGA2"
|
76 | 77 |
|
| 78 | +PINE64 = "PINE64" |
| 79 | +PINEBOOK = "PINEBOOK" |
| 80 | +PINEPHONE = "PINEPHONE" |
| 81 | + |
77 | 82 | # pylint: enable=bad-whitespace
|
78 | 83 |
|
79 | 84 | #OrangePI
|
|
249 | 254 | ),
|
250 | 255 | RASPBERRY_PI_ZERO: (
|
251 | 256 | '900092', '920092', '900093', '920093',
|
252 |
| - '1900092', '1920092', '1900093', '1920093', # warranty bit 24 |
253 |
| - '2900092', '2920092', '2900093', '2920093', # warranty bit 25 |
| 257 | + '1900092', '1920092', '1900093', '1920093', # warranty bit 24 |
| 258 | + '2900092', '2920092', '2900093', '2920093', # warranty bit 25 |
254 | 259 | ),
|
255 | 260 | RASPBERRY_PI_ZERO_W: (
|
256 | 261 | '9000c1',
|
257 |
| - '19000c1', '29000c1', # warranty bits |
| 262 | + '19000c1', '29000c1', # warranty bits |
258 | 263 | ),
|
259 | 264 | RASPBERRY_PI_2B: (
|
260 | 265 | 'a01040', 'a01041', 'a21041', 'a22042',
|
261 |
| - '1a01040', '1a01041', '1a21041', '1a22042', # warranty bit 24 |
262 |
| - '2a01040', '2a01041', '2a21041', '2a22042', # warranty bit 25 |
| 266 | + '1a01040', '1a01041', '1a21041', '1a22042', # warranty bit 24 |
| 267 | + '2a01040', '2a01041', '2a21041', '2a22042', # warranty bit 25 |
263 | 268 | ),
|
264 | 269 | RASPBERRY_PI_3B: (
|
265 | 270 | 'a02082', 'a22082', 'a32082', 'a52082',
|
266 |
| - '1a02082', '1a22082', '1a32082', '1a52082', # warranty bit 24 |
267 |
| - '2a02082', '2a22082', '2a32082', '2a52082', # warranty bit 25 |
| 271 | + '1a02082', '1a22082', '1a32082', '1a52082', # warranty bit 24 |
| 272 | + '2a02082', '2a22082', '2a32082', '2a52082', # warranty bit 25 |
268 | 273 | ),
|
269 | 274 | RASPBERRY_PI_3B_PLUS: (
|
270 | 275 | 'a020d3',
|
271 |
| - '1a020d3', '2a020d3', # warranty bits |
| 276 | + '1a020d3', '2a020d3', # warranty bits |
272 | 277 | ),
|
273 | 278 | RASPBERRY_PI_CM3: (
|
274 | 279 | 'a020a0', 'a220a0',
|
275 |
| - '1a020a0', '2a020a0', # warranty bits |
| 280 | + '1a020a0', '2a020a0', # warranty bits |
276 | 281 | '1a220a0', '2a220a0',
|
277 | 282 | ),
|
278 | 283 | RASPBERRY_PI_3A_PLUS: (
|
279 | 284 | '9020e0',
|
280 |
| - '19020e0', '29020e0', # warranty bits |
| 285 | + '19020e0', '29020e0', # warranty bits |
281 | 286 | ),
|
282 | 287 | RASPBERRY_PI_CM3_PLUS: (
|
283 | 288 | 'a02100',
|
284 |
| - '1a02100', '2a02100', # warranty bits |
| 289 | + '1a02100', '2a02100', # warranty bits |
285 | 290 | ),
|
286 | 291 | RASPBERRY_PI_4B: (
|
287 | 292 | 'a03111', 'b03111', 'c03111',
|
288 | 293 | 'a03112', 'b03112', 'c03112',
|
289 |
| - '1a03111', '2a03111', '1b03111', '2b03111', # warranty bits |
| 294 | + '1a03111', '2a03111', '1b03111', '2b03111', # warranty bits |
290 | 295 | '1c03111', '2c03111', '1a03112', '2a03112',
|
291 | 296 | '1b03112', '2b03112', '1c03112', '2c03112',
|
292 | 297 | ),
|
|
298 | 303 | ONION_OMEGA2,
|
299 | 304 | )
|
300 | 305 |
|
| 306 | +# Pine64 boards and devices |
| 307 | +_PINE64_DEV_IDS = ( |
| 308 | + PINE64, |
| 309 | + PINEBOOK, |
| 310 | + PINEPHONE |
| 311 | +) |
| 312 | + |
301 | 313 | class Board:
|
302 | 314 | """Attempt to detect specific boards."""
|
303 | 315 | def __init__(self, detector):
|
@@ -357,6 +369,8 @@ def id(self):
|
357 | 369 | board_id = ONION_OMEGA
|
358 | 370 | elif chip_id == ap_chip.MIPS24KEC:
|
359 | 371 | board_id = ONION_OMEGA2
|
| 372 | + elif chip_id == ap_chip.A64: |
| 373 | + board_id = self._pine64_id() |
360 | 374 | return board_id
|
361 | 375 | # pylint: enable=invalid-name
|
362 | 376 |
|
@@ -435,6 +449,8 @@ def _armbian_id(self):
|
435 | 449 | return ORANGE_PI_R1
|
436 | 450 | if board_value == "orangepizero":
|
437 | 451 | return ORANGE_PI_ZERO
|
| 452 | + if board_value == "pinebook-a64": |
| 453 | + return PINEBOOK |
438 | 454 | return None
|
439 | 455 |
|
440 | 456 | def _sama5_id(self):
|
@@ -472,6 +488,18 @@ def _sifive_id(self):
|
472 | 488 | return SIFIVE_UNLEASHED
|
473 | 489 | return None
|
474 | 490 |
|
| 491 | + def _pine64_id(self): |
| 492 | + """Try to detect the id for Pine64 board or device.""" |
| 493 | + board_value = self.detector.get_device_model() |
| 494 | + board = None |
| 495 | + if 'pine64' in board_value.lower(): |
| 496 | + board = PINE64 |
| 497 | + elif 'pinebook' in board_value.lower(): |
| 498 | + board = PINEBOOK |
| 499 | + elif 'pinephone' in board_value.lower(): |
| 500 | + board = PINEPHONE |
| 501 | + return board |
| 502 | + |
475 | 503 | @property
|
476 | 504 | def any_96boards(self):
|
477 | 505 | """Check whether the current board is any 96boards board."""
|
@@ -532,13 +560,18 @@ def any_onion_omega_board(self):
|
532 | 560 | """Check whether the current board is any defined OpenWRT board."""
|
533 | 561 | return self.id in _ONION_OMEGA_BOARD_IDS
|
534 | 562 |
|
| 563 | + @property |
| 564 | + def any_pine64_board(self): |
| 565 | + """Check whether the current board is any Pine64 device.""" |
| 566 | + return self.id in _PINE64_DEV_IDS |
| 567 | + |
535 | 568 | @property
|
536 | 569 | def any_embedded_linux(self):
|
537 | 570 | """Check whether the current board is any embedded Linux device."""
|
538 | 571 | return self.any_raspberry_pi or self.any_beaglebone or \
|
539 | 572 | self.any_orange_pi or self.any_giant_board or self.any_jetson_board or \
|
540 | 573 | self.any_coral_board or self.any_odroid_40_pin or self.any_96boards or \
|
541 |
| - self.any_sifive_board or self.any_onion_omega_board |
| 574 | + self.any_sifive_board or self.any_onion_omega_board or self.any_pine64_board |
542 | 575 |
|
543 | 576 | @property
|
544 | 577 | def ftdi_ft232h(self):
|
|
0 commit comments