]> Repositories - Adafruit_Blinka-hackapet.git/commitdiff
Merge pull request #597 from djhedges/main 8.1.0
authorMelissa LeBlanc-Williams <melissa@adafruit.com>
Fri, 22 Jul 2022 20:43:19 +0000 (13:43 -0700)
committerGitHub <noreply@github.com>
Fri, 22 Jul 2022 20:43:19 +0000 (13:43 -0700)
Add Banana Pi M5 support.

src/adafruit_blinka/board/bananapi/bpim5.py [new file with mode: 0644]
src/adafruit_blinka/microcontroller/amlogic/meson_g12_common/pin.py
src/board.py

diff --git a/src/adafruit_blinka/board/bananapi/bpim5.py b/src/adafruit_blinka/board/bananapi/bpim5.py
new file mode 100644 (file)
index 0000000..6ed4deb
--- /dev/null
@@ -0,0 +1,49 @@
+# SPDX-FileCopyrightText: 2021 Melissa LeBlanc-Williams for Adafruit Industries
+#
+# SPDX-License-Identifier: MIT
+"""Pin definitions for the Banana Pi M5."""
+
+from adafruit_blinka.microcontroller.amlogic.s905x3 import pin
+
+for it in pin.i2cPorts:
+    globals()["SCL" + str(it[0])] = it[1]
+    globals()["SDA" + str(it[0])] = it[2]
+
+SCL = pin.i2cPorts[0][1]
+SDA = pin.i2cPorts[0][2]
+
+SCLK = pin.SPI0_SCLK
+MOSI = pin.SPI0_MOSI
+MISO = pin.SPI0_MISO
+SPI_CS0 = pin.SPI0_CS0
+
+# Pinout reference:
+# https://wiki.banana-pi.org/Banana_Pi_BPI-M5#BPI-M5_40PIN_GPIO_.28CON2.29
+P3 = pin.GPIOX_17  # I2C_M2_SDA
+P5 = pin.GPIOX_18  # I2C_M2_SCL
+P7 = pin.GPIOX_5
+P8 = pin.GPIOX_12  # UART_A_TX
+P10 = pin.GPIOX_13  # UART_A_RX
+P11 = pin.GPIOX_3
+P12 = pin.GPIOA_8  # TDMB_SCLK
+P13 = pin.GPIOX_4
+P15 = pin.GPIOX_7
+P16 = pin.GPIOX_0
+P18 = pin.GPIOX_1
+P19 = pin.GPIOX_8  # PCM_DIN
+P21 = pin.GPIOX_9  # PCM_DOUT
+P22 = pin.GPIOX_2  # SDIO_D2
+P23 = pin.GPIOX_11  # PCM_CLK
+P24 = pin.GPIOX_10  # PCM_SYNC
+P26 = pin.GPIOX_16  # PWM_E
+P27 = pin.GPIOA_14  # I2C_M3_SDA
+P28 = pin.GPIOA_15  # I2C_M3_SCL
+P29 = pin.GPIOX_14  # UART_A_CTS
+P31 = pin.GPIOX_15  # UART_A_RTS
+P32 = pin.GPIOX_19  # PWM_B
+P33 = pin.GPIOX_6
+P35 = pin.GPIOAO_7  # TDMB_FS
+P36 = pin.GPIOH_5
+P37 = pin.GPIOAO_9  # I2S_MCLK
+P38 = pin.GPIOAO_10  # TDMB_DIN SPDIF_OUT
+P40 = pin.GPIOAO_4  # TDMB_DOUT
index d920b1f96ea4602495192a75b62b53e255105f12..41cf8f2e5918b3f560fc1c054d3ac41ca9545ca8 100644 (file)
@@ -11,6 +11,8 @@ Linux kernel 5.4.y (mainline)
     linux/arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi
 """
 
+from typing import Optional
+import os
 import re
 import gpiod
 from adafruit_blinka.microcontroller.generic_linux.libgpiod_pin import Pin
@@ -110,18 +112,18 @@ UART1_RX = GPIOX_13
 uartPorts = ((1, UART1_TX, UART1_RX),)
 
 
-def get_dts_alias(device: str) -> str:
+def get_dts_alias(device: str) -> Optional[str]:
     """Get the Device Tree Alias"""
     uevent_path = "/sys/bus/platform/devices/" + device + "/uevent"
-    with open(uevent_path, "r", encoding="utf-8") as fd:
-        pattern = r"^OF_ALIAS_0=(.*)$"
-        uevent = fd.read().split("\n")
-        for line in uevent:
-            match = re.search(pattern, line)
-            if match:
-                return match.group(1).upper()
-
-        return None
+    if os.path.exists(uevent_path):
+        with open(uevent_path, "r", encoding="utf-8") as fd:
+            pattern = r"^OF_ALIAS_0=(.*)$"
+            uevent = fd.read().split("\n")
+            for line in uevent:
+                match = re.search(pattern, line)
+                if match:
+                    return match.group(1).upper()
+    return None
 
 
 # ordered as i2cId, sclId, sdaId
index 173c854c593e707bbf915bd7110dcc432c443484..bc6e528b74ad7f3623359ca6629b94982fc7ee09 100644 (file)
@@ -124,6 +124,9 @@ elif board_id == ap_board.ORANGE_PI_3:
 elif board_id == ap_board.BANANA_PI_M2_ZERO:
     from adafruit_blinka.board.bananapi.bpim2zero import *
 
+elif board_id == ap_board.BANANA_PI_M5:
+    from adafruit_blinka.board.bananapi.bpim5 import *
+
 elif board_id == ap_board.GIANT_BOARD:
     from adafruit_blinka.board.giantboard import *