From: August <2819763+Dangku@users.noreply.github.com> Date: Tue, 3 Sep 2024 11:31:44 +0000 (+0800) Subject: support spacemit k1, bananapif3 X-Git-Tag: 8.48.0~1^2~3 X-Git-Url: https://git.ayoreis.com/Adafruit_Blinka-hackapet.git/commitdiff_plain/41b183d45263e45c8f7ee5b6f942edd22c2b2cd3 support spacemit k1, bananapif3 --- diff --git a/src/adafruit_blinka/board/bananapi/bpif3.py b/src/adafruit_blinka/board/bananapi/bpif3.py new file mode 100644 index 0000000..49d7158 --- /dev/null +++ b/src/adafruit_blinka/board/bananapi/bpif3.py @@ -0,0 +1,56 @@ +# SPDX-FileCopyrightText: 2021 Melissa LeBlanc-Williams for Adafruit Industries +# +# SPDX-License-Identifier: MIT +"""Pin definitions for the Banana Pi F3.""" + +from adafruit_blinka.microcontroller.spacemit.k1 import pin + +# I2C +I2C4_SCL = pin.I2C4_SCL +I2C4_SDA = pin.I2C4_SDA + +# Default I2C +SCL = I2C4_SCL +SDA = I2C4_SDA + +# UART +UART0_TX = pin.UART0_TX +UART0_RX = pin.UART0_RX + +# Default UART +TX = UART0_TX +RX = UART0_RX +TXD = UART0_TX +RXD = UART0_RX + +# SPI +SPI3_MOSI = pin.SPI3_MOSI +SPI3_MISO = pin.SPI3_MISO +SPI3_SCLK = pin.SPI3_SCLK +SPI3_CS0 = pin.SPI3_CS0 + +# Default SPI +MOSI = SPI3_MOSI +MISO = SPI3_MISO +SCLK = SPI3_SCLK +CS = SPI3_CS0 + +# Pinout reference: +# https://wiki.banana-pi.org/Banana_Pi_BPI-M4_Berry#BPI-M4_Berry_40-pin_header +D3 = pin.GPIO_52 +D5 = pin.GPIO_51 +D7 = pin.GPIO_70 +D8 = pin.GPIO_47 +D10 = pin.GPIO_48 +D11 = pin.GPIO_71 +D12 = pin.GPIO_74 +D13 = pin.GPIO_72 +D15 = pin.GPIO_73 +D16 = pin.GPIO_91 +D18 = pin.GPIO_92 +D19 = pin.GPIO_77 +D21 = pin.GPIO_78 +D22 = pin.GPIO_49 +D23 = pin.GPIO_75 +D24 = pin.GPIO_76 +D26 = pin.GPIO_50 diff --git a/src/adafruit_blinka/microcontroller/rockchip/rk3566/.pin.py.swp b/src/adafruit_blinka/microcontroller/rockchip/rk3566/.pin.py.swp new file mode 100644 index 0000000..7ed8195 Binary files /dev/null and b/src/adafruit_blinka/microcontroller/rockchip/rk3566/.pin.py.swp differ diff --git a/src/adafruit_blinka/microcontroller/spacemit/__init__.py b/src/adafruit_blinka/microcontroller/spacemit/__init__.py new file mode 100644 index 0000000..f0ee20a --- /dev/null +++ b/src/adafruit_blinka/microcontroller/spacemit/__init__.py @@ -0,0 +1,4 @@ +# SPDX-FileCopyrightText: 2021 Melissa LeBlanc-Williams for Adafruit Industries +# +# SPDX-License-Identifier: MIT +"""Definition of all Spacemit chips""" diff --git a/src/adafruit_blinka/microcontroller/spacemit/k1/__init__.py b/src/adafruit_blinka/microcontroller/spacemit/k1/__init__.py new file mode 100644 index 0000000..79c338c --- /dev/null +++ b/src/adafruit_blinka/microcontroller/spacemit/k1/__init__.py @@ -0,0 +1,4 @@ +# SPDX-FileCopyrightText: 2021 Melissa LeBlanc-Williams for Adafruit Industries +# +# SPDX-License-Identifier: MIT +"""Definition for the Spacemit K1 chip""" diff --git a/src/adafruit_blinka/microcontroller/spacemit/k1/pin.py b/src/adafruit_blinka/microcontroller/spacemit/k1/pin.py new file mode 100644 index 0000000..ad70499 --- /dev/null +++ b/src/adafruit_blinka/microcontroller/spacemit/k1/pin.py @@ -0,0 +1,180 @@ +# SPDX-FileCopyrightText: 2021 Melissa LeBlanc-Williams for Adafruit Industries +# +# SPDX-License-Identifier: MIT +"""Spacemit K1 Pin Names""" +from adafruit_blinka.agnostic import detector +from adafruit_blinka.microcontroller.alias import get_pwm_chipid +from adafruit_blinka.microcontroller.generic_linux.libgpiod_pin import Pin + +__chip_num = 0 + +GPIO_0 = Pin((__chip_num, 0)) +GPIO_1 = Pin((__chip_num, 1)) +GPIO_2 = Pin((__chip_num, 2)) +GPIO_3 = Pin((__chip_num, 3)) +GPIO_4 = Pin((__chip_num, 4)) +GPIO_5 = Pin((__chip_num, 5)) +GPIO_6 = Pin((__chip_num, 6)) +GPIO_7 = Pin((__chip_num, 7)) +GPIO_8 = Pin((__chip_num, 8)) +GPIO_9 = Pin((__chip_num, 9)) +GPIO_10 = Pin((__chip_num, 10)) +GPIO_11 = Pin((__chip_num, 11)) +GPIO_12 = Pin((__chip_num, 12)) +GPIO_13 = Pin((__chip_num, 13)) +GPIO_14 = Pin((__chip_num, 14)) +GPIO_15 = Pin((__chip_num, 15)) +GPIO_16 = Pin((__chip_num, 16)) +GPIO_17 = Pin((__chip_num, 17)) +GPIO_18 = Pin((__chip_num, 18)) +GPIO_19 = Pin((__chip_num, 19)) +GPIO_20 = Pin((__chip_num, 20)) +GPIO_21 = Pin((__chip_num, 21)) +GPIO_22 = Pin((__chip_num, 22)) +GPIO_23 = Pin((__chip_num, 23)) +GPIO_24 = Pin((__chip_num, 24)) +GPIO_25 = Pin((__chip_num, 25)) +GPIO_26 = Pin((__chip_num, 26)) +GPIO_27 = Pin((__chip_num, 27)) +GPIO_28 = Pin((__chip_num, 28)) +GPIO_29 = Pin((__chip_num, 29)) +GPIO_30 = Pin((__chip_num, 30)) +GPIO_31 = Pin((__chip_num, 31)) +GPIO_32 = Pin((__chip_num, 32)) +GPIO_33 = Pin((__chip_num, 33)) +GPIO_34 = Pin((__chip_num, 34)) +GPIO_35 = Pin((__chip_num, 35)) +GPIO_36 = Pin((__chip_num, 36)) +GPIO_37 = Pin((__chip_num, 37)) +GPIO_38 = Pin((__chip_num, 38)) +GPIO_39 = Pin((__chip_num, 39)) +GPIO_40 = Pin((__chip_num, 40)) +GPIO_41 = Pin((__chip_num, 41)) +GPIO_42 = Pin((__chip_num, 42)) +GPIO_43 = Pin((__chip_num, 43)) +GPIO_44 = Pin((__chip_num, 44)) +GPIO_45 = Pin((__chip_num, 45)) +GPIO_46 = Pin((__chip_num, 46)) +GPIO_47 = Pin((__chip_num, 47)) +GPIO_48 = Pin((__chip_num, 48)) +GPIO_49 = Pin((__chip_num, 49)) +GPIO_50 = Pin((__chip_num, 50)) +GPIO_51 = Pin((__chip_num, 51)) +GPIO_52 = Pin((__chip_num, 52)) +GPIO_53 = Pin((__chip_num, 53)) +GPIO_54 = Pin((__chip_num, 54)) +GPIO_55 = Pin((__chip_num, 55)) +GPIO_56 = Pin((__chip_num, 56)) +GPIO_57 = Pin((__chip_num, 57)) +GPIO_58 = Pin((__chip_num, 58)) +GPIO_59 = Pin((__chip_num, 59)) +GPIO_60 = Pin((__chip_num, 60)) +GPIO_61 = Pin((__chip_num, 61)) +GPIO_62 = Pin((__chip_num, 62)) +GPIO_63 = Pin((__chip_num, 63)) +GPIO_64 = Pin((__chip_num, 64)) +GPIO_65 = Pin((__chip_num, 65)) +GPIO_66 = Pin((__chip_num, 66)) +GPIO_67 = Pin((__chip_num, 67)) +GPIO_68 = Pin((__chip_num, 68)) +GPIO_69 = Pin((__chip_num, 69)) +GPIO_70 = Pin((__chip_num, 70)) +GPIO_71 = Pin((__chip_num, 71)) +GPIO_72 = Pin((__chip_num, 72)) +GPIO_73 = Pin((__chip_num, 73)) +GPIO_74 = Pin((__chip_num, 74)) +GPIO_75 = Pin((__chip_num, 75)) +GPIO_76 = Pin((__chip_num, 76)) +GPIO_77 = Pin((__chip_num, 77)) +GPIO_78 = Pin((__chip_num, 78)) +GPIO_79 = Pin((__chip_num, 79)) +GPIO_80 = Pin((__chip_num, 80)) +GPIO_81 = Pin((__chip_num, 81)) +GPIO_82 = Pin((__chip_num, 82)) +GPIO_83 = Pin((__chip_num, 83)) +GPIO_84 = Pin((__chip_num, 84)) +GPIO_85 = Pin((__chip_num, 85)) +GPIO_86 = Pin((__chip_num, 86)) +GPIO_87 = Pin((__chip_num, 87)) +GPIO_88 = Pin((__chip_num, 88)) +GPIO_89 = Pin((__chip_num, 89)) +GPIO_90 = Pin((__chip_num, 90)) +GPIO_91 = Pin((__chip_num, 91)) +GPIO_92 = Pin((__chip_num, 92)) +GPIO_93 = Pin((__chip_num, 93)) +GPIO_94 = Pin((__chip_num, 94)) +GPIO_95 = Pin((__chip_num, 95)) +GPIO_96 = Pin((__chip_num, 96)) +GPIO_97 = Pin((__chip_num, 97)) +GPIO_98 = Pin((__chip_num, 98)) +GPIO_99 = Pin((__chip_num, 99)) +GPIO_100 = Pin((__chip_num, 100)) +GPIO_101 = Pin((__chip_num, 101)) +GPIO_102 = Pin((__chip_num, 102)) +GPIO_103 = Pin((__chip_num, 103)) +GPIO_104 = Pin((__chip_num, 104)) +GPIO_105 = Pin((__chip_num, 105)) +GPIO_106 = Pin((__chip_num, 106)) +GPIO_107 = Pin((__chip_num, 107)) +GPIO_108 = Pin((__chip_num, 108)) +GPIO_109 = Pin((__chip_num, 109)) +GPIO_110 = Pin((__chip_num, 110)) +GPIO_111 = Pin((__chip_num, 111)) +GPIO_112 = Pin((__chip_num, 112)) +GPIO_113 = Pin((__chip_num, 113)) +GPIO_114 = Pin((__chip_num, 114)) +GPIO_115 = Pin((__chip_num, 115)) +GPIO_116 = Pin((__chip_num, 116)) +GPIO_117 = Pin((__chip_num, 117)) +GPIO_118 = Pin((__chip_num, 118)) +GPIO_119 = Pin((__chip_num, 119)) +GPIO_120 = Pin((__chip_num, 120)) +GPIO_121 = Pin((__chip_num, 121)) +GPIO_122 = Pin((__chip_num, 122)) +GPIO_123 = Pin((__chip_num, 123)) +GPIO_124 = Pin((__chip_num, 124)) +GPIO_125 = Pin((__chip_num, 125)) +GPIO_126 = Pin((__chip_num, 126)) +GPIO_127 = Pin((__chip_num, 127)) + +# I2C +I2C4_SCL = GPIO_51 +I2C4_SDA = GPIO_52 + +i2cPorts = ( + (4, I2C4_SCL, I2C4_SDA), +) + +# SPI +SPI3_MISO = GPIO_78 +SPI3_MOSI = GPIO_77 +SPI3_SCLK = GPIO_75 +SPI3_CS0 = GPIO_76 + +# ordered as spiId, sckId, mosiId, misoId +spiPorts = ( + (3, SPI3_SCLK, SPI3_MOSI, SPI3_MISO), +) + +# UART +UART0_TX = GPIO_47 +UART0_RX = GPIO_48 + +# ordered as uartId, txId, rxId +uartPorts = ( + (0, UART0_TX, UART0_RX), +) + +# SysFS pwm outputs, pwm channel and pin in first tuple +pwmOuts = [] + +board = detector.board.id +if board in ("BANANA_PI_F3"): + alias = get_pwm_chipid("d401bc00.pwm") + if alias is not None: + globals()["PWM" + alias] = GPIO_92 + pwmOuts.append(((int(alias[-1]), 0), GPIO_92)) + alias = get_pwm_chipid("d4020400.pwm") + if alias is not None: + globals()["PWM" + alias] = GPIO_74 + pwmOuts.append(((int(alias[-1]), 0), GPIO_74)) diff --git a/src/board.py b/src/board.py index 14f600a..88ae1da 100644 --- a/src/board.py +++ b/src/board.py @@ -161,6 +161,9 @@ elif board_id == ap_board.BANANA_PI_M4_ZERO: elif board_id == ap_board.BANANA_PI_M5: from adafruit_blinka.board.bananapi.bpim5 import * +elif board_id == ap_board.BANANA_PI_F3: + from adafruit_blinka.board.bananapi.bpif3 import * + elif board_id == ap_board.LEMAKER_BANANA_PRO: from adafruit_blinka.board.lemaker.bananapro import * diff --git a/src/digitalio.py b/src/digitalio.py index 6f92fc5..6f04984 100644 --- a/src/digitalio.py +++ b/src/digitalio.py @@ -119,6 +119,8 @@ elif detector.chip.D1_RISCV: from adafruit_blinka.microcontroller.allwinner.D1.pin import Pin elif detector.chip.TH1520: from adafruit_blinka.microcontroller.thead.th1520.pin import Pin +elif detector.chip.K1: + from adafruit_blinka.microcontroller.spacemit.k1.pin import Pin # Special Case Boards elif detector.board.ftdi_ft232h: from adafruit_blinka.microcontroller.ftdi_mpsse.ft232h.pin import Pin diff --git a/src/microcontroller/__init__.py b/src/microcontroller/__init__.py index ea0b5e2..2792e7b 100644 --- a/src/microcontroller/__init__.py +++ b/src/microcontroller/__init__.py @@ -157,6 +157,8 @@ elif chip_id == ap_chip.RV1106: from adafruit_blinka.microcontroller.rockchip.rv1106 import * elif chip_id == ap_chip.TH1520: from adafruit_blinka.microcontroller.thead.th1520 import * +elif chip_id == ap_chip.K1: + from adafruit_blinka.microcontroller.spacemit.k1 import * elif chip_id == ap_chip.GENERIC_X86: print("WARNING: GENERIC_X86 is not fully supported. Some features may not work.") elif chip_id == ap_chip.OS_AGNOSTIC: diff --git a/src/microcontroller/pin.py b/src/microcontroller/pin.py index bdc5a8d..3d4a560 100644 --- a/src/microcontroller/pin.py +++ b/src/microcontroller/pin.py @@ -147,6 +147,8 @@ elif chip_id == ap_chip.CV1800B: from adafruit_blinka.microcontroller.cv1800b.pin import * elif chip_id == ap_chip.TH1520: from adafruit_blinka.microcontroller.thead.th1520.pin import * +elif chip_id == ap_chip.K1: + from adafruit_blinka.microcontroller.spacemit.k1.pin import * elif chip_id == ap_chip.RV1103: from adafruit_blinka.microcontroller.rockchip.rv1103.pin import * elif chip_id == ap_chip.RV1106: