diff --git a/adafruit_platformdetect/board.py b/adafruit_platformdetect/board.py index cd4382b..9ffc59a 100644 --- a/adafruit_platformdetect/board.py +++ b/adafruit_platformdetect/board.py @@ -96,7 +96,7 @@ class Board: elif chip_id == chips.S905: board_id = boards.ODROID_C2 elif chip_id == chips.S905X3: - board_id = boards.ODROID_C4 + board_id = self._s905x3_id() elif chip_id == chips.S922X: board_id = boards.ODROID_N2 elif chip_id == chips.A311D: @@ -109,7 +109,7 @@ class Board: board_id = boards.FTDI_FT2232H elif chip_id == chips.APQ8016: board_id = boards.DRAGONBOARD_410C - elif chip_id in (chips.T210, chips.T186, chips.T194): + elif chip_id in (chips.T210, chips.T186, chips.T194, chips.T234): board_id = self._tegra_id() elif chip_id == chips.HFU540: board_id = self._sifive_id() @@ -146,7 +146,7 @@ class Board: elif chip_id == chips.RK3308: board_id = self._rock_pi_id() elif chip_id == chips.RK3399: - board_id = self._rock_pi_id() + board_id = self._rock_pi_id() or self._armbian_id() elif chip_id == chips.ATOM_X5_Z8350: board_id = self._rock_pi_id() elif chip_id == chips.RK3288: @@ -159,6 +159,8 @@ class Board: board_id = self._udoo_id() elif chip_id == chips.STM32MP157: board_id = self._stm32mp1_id() + elif chip_id == chips.STM32MP157DAA1: + board_id = self._stm32mp1_id() elif chip_id == chips.MT8167: board_id = boards.CORAL_EDGE_TPU_DEV_MINI elif chip_id == chips.RP2040_U2IF: @@ -167,6 +169,8 @@ class Board: board_id = boards.GENERIC_LINUX_PC elif chip_id == chips.TDA4VM: board_id = self._tisk_id() + elif chip_id == chips.D1_RISCV: + board_id = self._armbian_id() self._board_id = board_id return board_id @@ -318,8 +322,14 @@ class Board: board = boards.ORANGE_PI_3 elif board_value == "orangepi3-lts": board = boards.ORANGE_PI_3_LTS + elif board_value == "orangepi4": + board = boards.ORANGE_PI_4 + elif board_value == "orangepi4-lts": + board = boards.ORANGE_PI_4_LTS elif board_value == "bananapim2zero": board = boards.BANANA_PI_M2_ZERO + elif board_value == "bananapim5": + board = boards.BANANA_PI_M5 elif board_value == "orangepizeroplus2-h5": board = boards.ORANGE_PI_ZERO_PLUS_2H5 elif board_value == "orangepizeroplus": @@ -332,6 +342,8 @@ class Board: board = boards.NANOPI_DUO2 elif board_value == "nanopineo": board = boards.NANOPI_NEO + elif board_value == "nezha": + board = boards.LICHEE_RV elif board_value == "pcduino2": board = boards.PCDUINO2 elif board_value == "pcduino3": @@ -350,6 +362,13 @@ class Board: return boards.GIANT_BOARD return None + def _s905x3_id(self) -> Optional[str]: + """Check what type S905X3 board.""" + board_value = self.detector.get_device_model() + if "Bananapi BPI-M5" in board_value: + return boards.BANANA_PI_M5 + return boards.ODROID_C4 + def _stm32mp1_id(self) -> Optional[str]: """Check what type stm32mp1 board.""" board_value = self.detector.get_device_model() @@ -361,6 +380,8 @@ class Board: return boards.OSD32MP1_BRK if "OSD32MP1-RED" in board_value: return boards.OSD32MP1_RED + if "STM32MP1XX OLinuXino" in board_value: + return boards.STMP157_OLINUXINO_LIME2 return None def _imx8mx_id(self) -> Optional[str]: @@ -649,6 +670,7 @@ class Board: @property def any_pcduino_board(self) -> bool: + """Check whether the current board is any Pcduino board""" return self.id in boards._PCDUINO_DEV_IDS @property @@ -671,6 +693,11 @@ class Board: """Check whether the current board is any defined TI SK Board.""" return self.id in [v[0] for v in boards._TI_SK_BOARD_IDS] + @property + def any_lichee_riscv_board(self) -> bool: + """Check whether the current board is any defined Lichee RISC-V.""" + return self.id in boards._LICHEE_RISCV_IDS + @property def any_embedded_linux(self) -> bool: """Check whether the current board is any embedded Linux device.""" @@ -700,6 +727,7 @@ class Board: self.any_bananapi, self.any_maaxboard, self.any_tisk_board, + self.any_lichee_riscv_board, self.any_pcduino_board, ] ) diff --git a/adafruit_platformdetect/chip.py b/adafruit_platformdetect/chip.py index 41093af..07d3ce8 100644 --- a/adafruit_platformdetect/chip.py +++ b/adafruit_platformdetect/chip.py @@ -175,6 +175,8 @@ class Chip: if self.detector.check_dt_compatible_value("amlogic,g12a"): return chips.S905Y2 + if self.detector.check_dt_compatible_value("amlogic, g12a"): + return chips.S905X3 if self.detector.check_dt_compatible_value("sun8i-h3"): return chips.H3 @@ -217,6 +219,9 @@ class Chip: if self.detector.check_dt_compatible_value("st,stm32mp157"): return chips.STM32MP157 + if self.detector.check_dt_compatible_value("st,stm32mp153"): + return chips.STM32MP157DAA1 + if self.detector.check_dt_compatible_value("sun50i-a64"): return chips.A64 @@ -241,6 +246,9 @@ class Chip: if self.detector.check_dt_compatible_value("ti,j721e"): return chips.TDA4VM + if self.detector.check_dt_compatible_value("sun20i-d1"): + return chips.D1_RISCV + linux_id = None hardware = self.detector.get_cpuinfo_field("Hardware") @@ -275,6 +283,8 @@ class Chip: linux_id = chips.T186 elif "nvidia,tegra194" in compats: linux_id = chips.T194 + elif "nvidia,tegra234" in compats: + linux_id = chips.T234 if compatible and "imx8m" in compatible: linux_id = chips.IMX8MX if compatible and "odroid-c2" in compatible: @@ -300,7 +310,6 @@ class Chip: linux_id = chips.H5 if compatible and "odroid-xu4" in compatible: linux_id = chips.EXYNOS5422 - cpu_model = self.detector.get_cpuinfo_field("cpu model") if cpu_model is not None: diff --git a/adafruit_platformdetect/constants/boards.py b/adafruit_platformdetect/constants/boards.py index 6b42fd5..3e34922 100644 --- a/adafruit_platformdetect/constants/boards.py +++ b/adafruit_platformdetect/constants/boards.py @@ -51,6 +51,8 @@ ORANGE_PI_ZERO_PLUS = "ORANGE_PI_ZERO_PLUS" ORANGE_PI_ZERO_2 = "ORANGE_PI_ZERO_2" ORANGE_PI_3 = "ORANGE_PI_3" ORANGE_PI_3_LTS = "ORANGE_PI_3_LTS" +ORANGE_PI_4 = "ORANGE_PI_4" +ORANGE_PI_4_LTS = "ORANGE_PI_4_LTS" # Nano Pi boards NANOPI_NEO_AIR = "NANOPI_NEO_AIR" @@ -59,6 +61,7 @@ NANOPI_NEO = "NANOPI_NEO" # Banana Pi boards BANANA_PI_M2_ZERO = "BANANA_PI_M2_ZERO" +BANANA_PI_M5 = "BANANA_PI_M5" # NVIDIA Jetson boards JETSON_TX1 = "JETSON_TX1" @@ -66,6 +69,7 @@ JETSON_TX2 = "JETSON_TX2" JETSON_TX2_NX = "JETSON_TX2_NX" CLARA_AGX_XAVIER = "CLARA_AGX_XAVIER" JETSON_XAVIER = "JETSON_XAVIER" +JETSON_AGX_ORIN = "JETSON_ORIN" JETSON_NANO = "JETSON_NANO" JETSON_NX = "JETSON_NX" @@ -84,6 +88,7 @@ PYNQ_Z2 = "PYNQ_Z2" STM32MP157C_DK2 = "STM32MP157C_DK2" OSD32MP1_BRK = "OSD32MP1_BRK" OSD32MP1_RED = "OSD32MP1_RED" +STMP157_OLINUXINO_LIME2 = "STMP157_OLINUXINO_LIME2" # Embedfire LubanCat board LUBANCAT_IMX6ULL = "LUBANCAT_IMX6ULL" @@ -124,6 +129,7 @@ DRAGONBOARD_410C = "DRAGONBOARD_410C" SIFIVE_UNLEASHED = "SIFIVE_UNLEASHED" ALLWINER_D1 = "ALLWINER_D1" +LICHEE_RV = "LICHEE_RV" MICROCHIP_MCP2221 = "MICROCHIP_MCP2221" @@ -178,7 +184,13 @@ _KHADAS_40_PIN_IDS = (KHADAS_VIM3,) _ASUS_TINKER_BOARD_IDS = (ASUS_TINKER_BOARD,) # STM32MP1 -_STM32MP1_IDS = (STM32MP157C_DK2, LUBANCAT_STM32MP157, OSD32MP1_BRK, OSD32MP1_RED) +_STM32MP1_IDS = ( + STM32MP157C_DK2, + LUBANCAT_STM32MP157, + OSD32MP1_BRK, + OSD32MP1_RED, + STMP157_OLINUXINO_LIME2, +) # OrangePI _ORANGE_PI_IDS = ( @@ -195,13 +207,15 @@ _ORANGE_PI_IDS = ( ORANGE_PI_ZERO_2, ORANGE_PI_3, ORANGE_PI_3_LTS, + ORANGE_PI_4, + ORANGE_PI_4_LTS, ) # NanoPi _NANOPI_IDS = (NANOPI_NEO_AIR, NANOPI_DUO2, NANOPI_NEO) # BananaPI -_BANANA_PI_IDS = (BANANA_PI_M2_ZERO,) +_BANANA_PI_IDS = (BANANA_PI_M2_ZERO, BANANA_PI_M5) # LubanCat _LUBANCAT_IDS = (LUBANCAT_IMX6ULL, LUBANCAT_STM32MP157) @@ -246,6 +260,14 @@ _JETSON_IDS = ( "nvidia,p3509-0000-a00+p3668-0001-a01", "nvidia,p3449-0000+p3668-0000", "nvidia,p3449-0000+p3668-0001", + "nvidia,p3449-0000+p3668-0003", + ), + ), + ( + JETSON_AGX_ORIN, + ( + "nvidia,p3737-0000+p3701-0000", + "nvidia,p3737-0000+p3701-0004", ), ), ) @@ -327,6 +349,7 @@ _BEAGLEBONE_BOARD_IDS = { ("A5B", "A335BNLT0A5B"), ("A5C", "A335BNLT0A5C"), ("A6", "A335BNLT00A6"), + ("A6A", "A335BNLT0A6A"), ("B", "A335BNLT000B"), ("C", "A335BNLT000C"), ("C", "A335BNLT00C0"), @@ -475,7 +498,16 @@ _PI_REV_CODES = { "2c03112", ), RASPBERRY_PI_400: ("c03130", "c03131"), - RASPBERRY_PI_CM4: ("a03140", "b03140", "c03140", "d03140"), + RASPBERRY_PI_CM4: ( + "a03140", + "a03141", + "b03140", + "b03141", + "c03140", + "c03141", + "d03140", + "d03141", + ), RASPBERRY_PI_ZERO_2_W: ("902120", "2902120"), } @@ -495,3 +527,6 @@ _UDOO_BOARD_IDS = {UDOO_BOLT_V8: ("SC40-2000-0000-C0|C",), UDOO_X86: ("dummy",)} # MaaXBoard boards _MAAXBOARD_IDS = ("MAAXBOARD", "MAAXBOARD_MINI") + +# Lichee RISC-V boards +_LICHEE_RISCV_IDS = (LICHEE_RV,) diff --git a/adafruit_platformdetect/constants/chips.py b/adafruit_platformdetect/constants/chips.py index df5aaa4..700b319 100644 --- a/adafruit_platformdetect/constants/chips.py +++ b/adafruit_platformdetect/constants/chips.py @@ -27,6 +27,7 @@ SAMA5 = "SAMA5" T210 = "T210" T186 = "T186" T194 = "T194" +T234 = "T234" APQ8016 = "APQ8016" GENERIC_X86 = "GENERIC_X86" FT232H = "FT232H" @@ -56,9 +57,11 @@ PENTIUM_N3710 = "PENTIUM_N3710" # SOC Braswell core STM32F405 = "STM32F405" RP2040 = "RP2040" STM32MP157 = "STM32MP157" +STM32MP157DAA1 = "STM32MP157DAA1" MT8167 = "MT8167" ATOM_X5_Z8350 = "X5-Z8350" RP2040_U2IF = "RP2040_U2IF" +D1_RISCV = "D1_RISCV" BCM_RANGE = {"BCM2708", "BCM2709", "BCM2711", "BCM2835", "BCM2837"}