You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

487 lines
13 KiB

3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
4 years ago
4 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
3 years ago
4 years ago
  1. # SPDX-FileCopyrightText: 2021 Melissa LeBlanc-Williams for Adafruit Industries
  2. #
  3. # SPDX-License-Identifier: MIT
  4. """Definition of boards and/or ids"""
  5. # Allow for aligned constant definitions:
  6. BEAGLEBONE = "BEAGLEBONE"
  7. BEAGLEBONE_BLACK = "BEAGLEBONE_BLACK"
  8. BEAGLEBONE_BLUE = "BEAGLEBONE_BLUE"
  9. BEAGLEBONE_BLACK_WIRELESS = "BEAGLEBONE_BLACK_WIRELESS"
  10. BEAGLEBONE_POCKETBEAGLE = "BEAGLEBONE_POCKETBEAGLE"
  11. BEAGLEBONE_GREEN = "BEAGLEBONE_GREEN"
  12. BEAGLEBONE_GREEN_WIRELESS = "BEAGLEBONE_GREEN_WIRELESS"
  13. BEAGLEBONE_GREEN_GATEWAY = "BEAGLEBONE_GREEN_GATEWAY"
  14. BEAGLEBONE_BLACK_INDUSTRIAL = "BEAGLEBONE_BLACK_INDUSTRIAL"
  15. BEAGLEBONE_ENHANCED = "BEAGLEBONE_ENHANCED"
  16. BEAGLEBONE_USOMIQ = "BEAGLEBONE_USOMIQ"
  17. BEAGLEBONE_AIR = "BEAGLEBONE_AIR"
  18. BEAGLEBONE_AI = "BEAGLEBONE_AI"
  19. BEAGLEBONE_POCKETBONE = "BEAGLEBONE_POCKETBONE"
  20. BEAGLEV_STARLIGHT = "BEAGLEV_STARLIGHT"
  21. BEAGLELOGIC_STANDALONE = "BEAGLELOGIC_STANDALONE"
  22. OSD3358_DEV_BOARD = "OSD3358_DEV_BOARD"
  23. OSD3358_SM_RED = "OSD3358_SM_RED"
  24. FEATHER_HUZZAH = "FEATHER_HUZZAH"
  25. FEATHER_M0_EXPRESS = "FEATHER_M0_EXPRESS"
  26. GENERIC_LINUX_PC = "GENERIC_LINUX_PC"
  27. PYBOARD = "PYBOARD"
  28. NODEMCU = "NODEMCU"
  29. RASPBERRY_PI_PICO = "RASPBERRY_PI_PICO"
  30. GIANT_BOARD = "GIANT_BOARD"
  31. # ASUS Tinker Boards
  32. ASUS_TINKER_BOARD = "ASUS_TINKER_BOARD"
  33. # Clockwork Pi boards
  34. CLOCKWORK_CPI3 = "CLOCKWORK_CPI3"
  35. # Orange Pi boards
  36. ORANGE_PI_PC = "ORANGE_PI_PC"
  37. ORANGE_PI_R1 = "ORANGE_PI_R1"
  38. ORANGE_PI_ZERO = "ORANGE_PI_ZERO"
  39. ORANGE_PI_ONE = "ORANGE_PI_ONE"
  40. ORANGE_PI_LITE = "ORANGE_PI_LITE"
  41. ORANGE_PI_PC_PLUS = "ORANGE_PI_PC_PLUS"
  42. ORANGE_PI_PLUS_2E = "ORANGE_PI_PLUS_2E"
  43. ORANGE_PI_2 = "ORANGE_PI_2"
  44. ORANGE_PI_ZERO_PLUS_2H5 = "ORANGE_PI_ZERO_PLUS_2H5"
  45. ORANGE_PI_ZERO_PLUS = "ORANGE_PI_ZERO_PLUS"
  46. ORANGE_PI_ZERO_2 = "ORANGE_PI_ZERO_2"
  47. ORANGE_PI_3 = "ORANGE_PI_3"
  48. # Nano Pi boards
  49. NANOPI_NEO_AIR = "NANOPI_NEO_AIR"
  50. NANOPI_DUO2 = "NANOPI_DUO2"
  51. NANOPI_NEO = "NANOPI_NEO"
  52. # Banana Pi boards
  53. BANANA_PI_M2_ZERO = "BANANA_PI_M2_ZERO"
  54. # NVIDIA Jetson boards
  55. JETSON_TX1 = "JETSON_TX1"
  56. JETSON_TX2 = "JETSON_TX2"
  57. JETSON_TX2_NX = "JETSON_TX2_NX"
  58. CLARA_AGX_XAVIER = "CLARA_AGX_XAVIER"
  59. JETSON_XAVIER = "JETSON_XAVIER"
  60. JETSON_NANO = "JETSON_NANO"
  61. JETSON_NX = "JETSON_NX"
  62. # Texas Instruments SK boards
  63. TI_J721E_SK = "TI_J721E_SK"
  64. # Google Coral dev board
  65. CORAL_EDGE_TPU_DEV = "CORAL_EDGE_TPU_DEV"
  66. CORAL_EDGE_TPU_DEV_MINI = "CORAL_EDGE_TPU_DEV_MINI"
  67. # Xilinx PYNQ FPGA dev boards
  68. PYNQ_Z1 = "PYNQ_Z1"
  69. PYNQ_Z2 = "PYNQ_Z2"
  70. # STM32 MPU boards
  71. STM32MP157C_DK2 = "STM32MP157C_DK2"
  72. OSD32MP1_BRK = "OSD32MP1_BRK"
  73. OSD32MP1_RED = "OSD32MP1_RED"
  74. # Embedfire LubanCat board
  75. LUBANCAT_IMX6ULL = "LUBANCAT_IMX6ULL"
  76. LUBANCAT_STM32MP157 = "LUBANCAT_STM32MP157"
  77. # Various Raspberry Pi models
  78. RASPBERRY_PI_B_REV1 = "RASPBERRY_PI_B_REV1"
  79. RASPBERRY_PI_B_REV2 = "RASPBERRY_PI_B_REV2"
  80. RASPBERRY_PI_B_PLUS = "RASPBERRY_PI_B_PLUS"
  81. RASPBERRY_PI_A = "RASPBERRY_PI_A"
  82. RASPBERRY_PI_A_PLUS = "RASPBERRY_PI_A_PLUS"
  83. RASPBERRY_PI_CM1 = "RASPBERRY_PI_CM1"
  84. RASPBERRY_PI_ZERO = "RASPBERRY_PI_ZERO"
  85. RASPBERRY_PI_ZERO_W = "RASPBERRY_PI_ZERO_W"
  86. RASPBERRY_PI_ZERO_2_W = "RASPBERRY_PI_ZERO_2_W"
  87. RASPBERRY_PI_2B = "RASPBERRY_PI_2B"
  88. RASPBERRY_PI_3B = "RASPBERRY_PI_3B"
  89. RASPBERRY_PI_3B_PLUS = "RASPBERRY_PI_3B_PLUS"
  90. RASPBERRY_PI_CM3 = "RASPBERRY_PI_CM3"
  91. RASPBERRY_PI_3A_PLUS = "RASPBERRY_PI_3A_PLUS"
  92. RASPBERRY_PI_CM3_PLUS = "RASPBERRY_PI_CM3_PLUS"
  93. RASPBERRY_PI_4B = "RASPBERRY_PI_4B"
  94. RASPBERRY_PI_AVNET_IIOT_GW = "RASPBERY_PI_AVNET_IIOT_GW"
  95. RASPBERRY_PI_400 = "RASPBERRY_PI_400"
  96. RASPBERRY_PI_CM4 = "RASPBERRY_PI_CM4"
  97. ODROID_C1 = "ODROID_C1"
  98. ODROID_C1_PLUS = "ODROID_C1_PLUS"
  99. ODROID_C2 = "ODROID_C2"
  100. ODROID_C4 = "ODROID_C4"
  101. ODROID_N2 = "ODROID_N2"
  102. ODROID_XU4 = "ODROID_XU4"
  103. FTDI_FT232H = "FTDI_FT232H"
  104. FTDI_FT2232H = "FTDI_FT2232H"
  105. DRAGONBOARD_410C = "DRAGONBOARD_410C"
  106. SIFIVE_UNLEASHED = "SIFIVE_UNLEASHED"
  107. ALLWINER_D1 = "ALLWINER_D1"
  108. MICROCHIP_MCP2221 = "MICROCHIP_MCP2221"
  109. # Boards with u2if firmware
  110. # https://github.com/execuc/u2if
  111. PICO_U2IF = "PICO_U2IF"
  112. FEATHER_U2IF = "FEATHER_U2IF"
  113. ITSYBITSY_U2IF = "ITSYBITSY_U2IF"
  114. MACROPAD_U2IF = "MACROPAD_U2IF"
  115. QTPY_U2IF = "QTPY_U2IF"
  116. QT2040_TRINKEY_U2IF = "QT2040_TRINKEY_U2IF"
  117. BINHO_NOVA = "BINHO_NOVA"
  118. ONION_OMEGA = "ONION_OMEGA"
  119. ONION_OMEGA2 = "ONION_OMEGA2"
  120. PINE64 = "PINE64"
  121. PINEH64 = "PINEH64"
  122. PINEBOOK = "PINEBOOK"
  123. PINEPHONE = "PINEPHONE"
  124. SOPINE = "SOPINE"
  125. ROCK_PI_S = "ROCK_PI_S"
  126. ROCK_PI_4 = "ROCK_PI_4"
  127. ROCK_PI_X = "ROCK_PI_X"
  128. ROCK_PI_E = "ROCK_PI_E"
  129. GREATFET_ONE = "GREATFET_ONE"
  130. # Udoo boards
  131. UDOO_BOLT_V3 = "UDOO_BOLT_V3"
  132. UDOO_BOLT_V8 = "UDOO_BOLT_V8"
  133. UDOO_X86 = "UDOO_X86"
  134. # MaaXBoard
  135. MAAXBOARD = "MAAXBOARD"
  136. MAAXBOARD_MINI = "MAAXBOARD_MINI"
  137. # Khadas VIM3
  138. KHADAS_VIM3 = "KHADAS_VIM3"
  139. _KHADAS_40_PIN_IDS = (KHADAS_VIM3,)
  140. # Asus Tinkerboard
  141. _ASUS_TINKER_BOARD_IDS = (ASUS_TINKER_BOARD,)
  142. # STM32MP1
  143. _STM32MP1_IDS = (STM32MP157C_DK2, LUBANCAT_STM32MP157, OSD32MP1_BRK, OSD32MP1_RED)
  144. # OrangePI
  145. _ORANGE_PI_IDS = (
  146. ORANGE_PI_PC,
  147. ORANGE_PI_R1,
  148. ORANGE_PI_ZERO,
  149. ORANGE_PI_ONE,
  150. ORANGE_PI_LITE,
  151. ORANGE_PI_PC_PLUS,
  152. ORANGE_PI_PLUS_2E,
  153. ORANGE_PI_2,
  154. ORANGE_PI_ZERO_PLUS_2H5,
  155. ORANGE_PI_ZERO_PLUS,
  156. ORANGE_PI_ZERO_2,
  157. ORANGE_PI_3,
  158. )
  159. # NanoPi
  160. _NANOPI_IDS = (NANOPI_NEO_AIR, NANOPI_DUO2, NANOPI_NEO)
  161. # BananaPI
  162. _BANANA_PI_IDS = (BANANA_PI_M2_ZERO,)
  163. # LubanCat
  164. _LUBANCAT_IDS = (LUBANCAT_IMX6ULL, LUBANCAT_STM32MP157)
  165. # Coral boards
  166. _CORAL_IDS = (CORAL_EDGE_TPU_DEV, CORAL_EDGE_TPU_DEV_MINI)
  167. _PYNQ_IDS = (PYNQ_Z1, PYNQ_Z2)
  168. _JETSON_IDS = (
  169. (JETSON_TX1, ("nvidia,p2371-2180", "nvidia,jetson-cv")),
  170. (
  171. JETSON_TX2,
  172. (
  173. "nvidia,p2771-0000",
  174. "nvidia,p2771-0888",
  175. "nvidia,p3489-0000",
  176. "nvidia,lightning",
  177. "nvidia,quill",
  178. "nvidia,storm",
  179. ),
  180. ),
  181. (JETSON_TX2_NX, ("nvidia,p3509-0000+p3636-0001",)),
  182. (CLARA_AGX_XAVIER, ("nvidia,e3900-0000+p2888-0004",)),
  183. (
  184. JETSON_XAVIER,
  185. (
  186. "nvidia,p2972-0000",
  187. "nvidia,p2972-0006",
  188. "nvidia,jetson-xavier",
  189. "nvidia,jetson-xavier-industrial",
  190. "nvidia,galen-industrial",
  191. ),
  192. ),
  193. (JETSON_NANO, ("nvidia,p3450-0000", "nvidia,p3450-0002", "nvidia,jetson-nano")),
  194. (
  195. JETSON_NX,
  196. (
  197. "nvidia,p3509-0000+p3668-0000",
  198. "nvidia,p3509-0000+p3668-0001",
  199. "nvidia,p3509-0000-a00+p3668-0000-a01",
  200. "nvidia,p3509-0000-a00+p3668-0001-a01",
  201. "nvidia,p3449-0000+p3668-0000",
  202. "nvidia,p3449-0000+p3668-0001",
  203. ),
  204. ),
  205. )
  206. _TI_SK_BOARD_IDS = ((TI_J721E_SK, ("ti,j721e-sk", "ti,j721e")),)
  207. _RASPBERRY_PI_40_PIN_IDS = (
  208. RASPBERRY_PI_B_PLUS,
  209. RASPBERRY_PI_A_PLUS,
  210. RASPBERRY_PI_ZERO,
  211. RASPBERRY_PI_ZERO_W,
  212. RASPBERRY_PI_ZERO_2_W,
  213. RASPBERRY_PI_2B,
  214. RASPBERRY_PI_3B,
  215. RASPBERRY_PI_3B_PLUS,
  216. RASPBERRY_PI_3A_PLUS,
  217. RASPBERRY_PI_4B,
  218. RASPBERRY_PI_AVNET_IIOT_GW,
  219. RASPBERRY_PI_400,
  220. )
  221. _RASPBERRY_PI_CM_IDS = (
  222. RASPBERRY_PI_CM1,
  223. RASPBERRY_PI_CM3,
  224. RASPBERRY_PI_CM3_PLUS,
  225. RASPBERRY_PI_CM4,
  226. )
  227. _ODROID_40_PIN_IDS = (
  228. ODROID_C1,
  229. ODROID_C1_PLUS,
  230. ODROID_C2,
  231. ODROID_C4,
  232. ODROID_N2,
  233. ODROID_XU4,
  234. )
  235. _BEAGLEBONE_IDS = (
  236. BEAGLEBONE,
  237. BEAGLEBONE_BLACK,
  238. BEAGLEBONE_BLUE,
  239. BEAGLEBONE_BLACK_WIRELESS,
  240. BEAGLEBONE_POCKETBEAGLE,
  241. BEAGLEBONE_GREEN,
  242. BEAGLEBONE_GREEN_WIRELESS,
  243. BEAGLEBONE_GREEN_GATEWAY,
  244. BEAGLEBONE_BLACK_INDUSTRIAL,
  245. BEAGLEBONE_ENHANCED,
  246. BEAGLEBONE_USOMIQ,
  247. BEAGLEBONE_AIR,
  248. BEAGLEBONE_AI,
  249. BEAGLEBONE_POCKETBONE,
  250. BEAGLELOGIC_STANDALONE,
  251. BEAGLEV_STARLIGHT,
  252. OSD3358_DEV_BOARD,
  253. OSD3358_SM_RED,
  254. )
  255. _LINARO_96BOARDS_IDS = (DRAGONBOARD_410C,)
  256. _SIFIVE_IDS = (SIFIVE_UNLEASHED,)
  257. # BeagleBone eeprom board ids from:
  258. # https://github.com/beagleboard/image-builder
  259. # Thanks to zmatt on freenode #beagle for pointers.
  260. _BEAGLEBONE_BOARD_IDS = {
  261. # Original bone/white:
  262. BEAGLEBONE: (
  263. ("A4", "A335BONE00A4"),
  264. ("A5", "A335BONE00A5"),
  265. ("A6", "A335BONE00A6"),
  266. ("A6A", "A335BONE0A6A"),
  267. ("A6B", "A335BONE0A6B"),
  268. ("B", "A335BONE000B"),
  269. ),
  270. BEAGLEBONE_BLACK: (
  271. ("A5", "A335BNLT00A5"),
  272. ("A5A", "A335BNLT0A5A"),
  273. ("A5B", "A335BNLT0A5B"),
  274. ("A5C", "A335BNLT0A5C"),
  275. ("A6", "A335BNLT00A6"),
  276. ("B", "A335BNLT000B"),
  277. ("C", "A335BNLT000C"),
  278. ("C", "A335BNLT00C0"),
  279. ),
  280. BEAGLEBONE_BLUE: (("A2", "A335BNLTBLA2"),),
  281. BEAGLEBONE_BLACK_WIRELESS: (("A5", "A335BNLTBWA5"),),
  282. BEAGLEBONE_POCKETBEAGLE: (("A2", "A335PBGL00A2"),),
  283. BEAGLEBONE_GREEN: (("1A", "A335BNLT...."), ("UNKNOWN", "A335BNLTBBG1")),
  284. BEAGLEBONE_GREEN_WIRELESS: (("W1A", "A335BNLTGW1A"),),
  285. BEAGLEBONE_GREEN_GATEWAY: (("GA1", "A335BNLTGG1A"),),
  286. BEAGLEBONE_BLACK_INDUSTRIAL: (
  287. ("A0", "A335BNLTAIA0"), # Arrow
  288. ("A0", "A335BNLTEIA0"), # Element14
  289. ),
  290. BEAGLEBONE_ENHANCED: (("A", "A335BNLTSE0A"),),
  291. BEAGLEBONE_USOMIQ: (("6", "A335BNLTME06"),),
  292. BEAGLEBONE_AIR: (("A0", "A335BNLTNAD0"),),
  293. BEAGLEBONE_POCKETBONE: (("0", "A335BNLTBP00"),),
  294. OSD3358_DEV_BOARD: (("0.1", "A335BNLTGH01"),),
  295. OSD3358_SM_RED: (("0", "A335BNLTOS00"),),
  296. BEAGLELOGIC_STANDALONE: (("A", "A335BLGC000A"),),
  297. }
  298. # Pi revision codes from:
  299. # https://www.raspberrypi.org/documentation/hardware/raspberrypi/revision-codes/README.md
  300. # Each tuple here contains both the base codes, and the versions that indicate
  301. # the Pi is overvolted / overclocked - for 4-digit codes, this will be prefixed
  302. # with 1000, and for 6-digit codes it'll be prefixed with 1. These are placed
  303. # on separate lines.
  304. _PI_REV_CODES = {
  305. RASPBERRY_PI_B_REV1: (
  306. # Regular codes:
  307. "0002",
  308. "0003",
  309. # Overvolted/clocked versions:
  310. "1000002",
  311. "1000003",
  312. ),
  313. RASPBERRY_PI_B_REV2: (
  314. "0004",
  315. "0005",
  316. "0006",
  317. "000d",
  318. "000e",
  319. "000f",
  320. "1000005",
  321. "1000006",
  322. "100000d",
  323. "100000e",
  324. "100000f",
  325. ),
  326. RASPBERRY_PI_B_PLUS: ("0010", "0013", "900032", "1000010", "1000013", "1900032"),
  327. RASPBERRY_PI_A: ("0007", "0008", "0009", "1000007", "1000008", "1000009"),
  328. RASPBERRY_PI_A_PLUS: ("0012", "0015", "900021", "1000012", "1000015", "1900021"),
  329. RASPBERRY_PI_CM1: ("0011", "0014", "10000011", "10000014"),
  330. RASPBERRY_PI_ZERO: (
  331. "900092",
  332. "920092",
  333. "900093",
  334. "920093",
  335. "1900092",
  336. "1920092",
  337. "1900093",
  338. "1920093", # warranty bit 24
  339. "2900092",
  340. "2920092",
  341. "2900093",
  342. "2920093", # warranty bit 25
  343. ),
  344. RASPBERRY_PI_ZERO_W: ("9000c1", "19000c1", "29000c1"), # warranty bits
  345. RASPBERRY_PI_2B: (
  346. "a01040",
  347. "a01041",
  348. "a02042",
  349. "a21041",
  350. "a22042",
  351. "1a01040",
  352. "1a01041",
  353. "1a02042",
  354. "1a21041",
  355. "1a22042", # warranty bit 24
  356. "2a01040",
  357. "2a01041",
  358. "2a02042",
  359. "2a21041",
  360. "2a22042", # warranty bit 25
  361. "3a01040",
  362. "3a01041",
  363. "3a02042",
  364. "3a21041",
  365. "3a22042",
  366. ),
  367. RASPBERRY_PI_3B: (
  368. "a02082",
  369. "a22082",
  370. "a32082",
  371. "a52082",
  372. "1a02082",
  373. "1a22082",
  374. "1a32082",
  375. "1a52082", # warranty bit 24
  376. "2a02082",
  377. "2a22082",
  378. "2a32082",
  379. "2a52082", # warranty bit 25
  380. ),
  381. RASPBERRY_PI_3B_PLUS: ("a020d3", "1a020d3", "2a020d3"), # warranty bits
  382. RASPBERRY_PI_AVNET_IIOT_GW: ("60a220b0",),
  383. RASPBERRY_PI_CM3: (
  384. "a020a0",
  385. "a220a0",
  386. "1a020a0",
  387. "2a020a0", # warranty bits
  388. "1a220a0",
  389. "2a220a0",
  390. ),
  391. RASPBERRY_PI_3A_PLUS: ("9020e0", "19020e0", "29020e0"), # warranty bits
  392. RASPBERRY_PI_CM3_PLUS: ("a02100", "1a02100", "2a02100"), # warranty bits
  393. RASPBERRY_PI_4B: (
  394. "a03111",
  395. "b03111",
  396. "c03111",
  397. "a03112",
  398. "b03112",
  399. "c03112",
  400. "b03114",
  401. "c03114",
  402. "d03114",
  403. "a03115",
  404. "b03115",
  405. "c03115",
  406. "d03115",
  407. "1a03111",
  408. "2a03111",
  409. "1b03111",
  410. "2b03111", # warranty bits
  411. "1c03111",
  412. "2c03111",
  413. "1a03112",
  414. "2a03112",
  415. "1b03112",
  416. "2b03112",
  417. "1c03112",
  418. "2c03112",
  419. ),
  420. RASPBERRY_PI_400: ("c03130", "c03131"),
  421. RASPBERRY_PI_CM4: ("a03140", "b03140", "c03140", "d03140"),
  422. RASPBERRY_PI_ZERO_2_W: ("902120", "2902120"),
  423. }
  424. # Onion omega boards
  425. _ONION_OMEGA_BOARD_IDS = (ONION_OMEGA, ONION_OMEGA2)
  426. # Pine64 boards and devices
  427. _PINE64_DEV_IDS = (PINE64, PINEH64, PINEBOOK, PINEPHONE, SOPINE)
  428. # RockPi boards and devices
  429. _ROCK_PI_IDS = (ROCK_PI_S, ROCK_PI_4, ROCK_PI_X, ROCK_PI_E)
  430. # UDOO
  431. _UDOO_BOARD_IDS = {UDOO_BOLT_V8: ("SC40-2000-0000-C0|C",), UDOO_X86: ("dummy",)}
  432. # MaaXBoard boards
  433. _MAAXBOARD_IDS = ("MAAXBOARD", "MAAXBOARD_MINI")