]> Repositories - Adafruit_Blinka-hackapet.git/commitdiff
Merge pull request #228 from yeyeto2788/orangepi
authorMelissa LeBlanc-Williams <melissa@adafruit.com>
Mon, 20 Jan 2020 17:21:32 +0000 (09:21 -0800)
committerGitHub <noreply@github.com>
Mon, 20 Jan 2020 17:21:32 +0000 (09:21 -0800)
Add Orange Pi boards (One, Lite, PC Plus, Plus 2E)

22 files changed:
requirements.txt
setup.py
src/adafruit_blinka/board/orangepipc.py
src/adafruit_blinka/board/orangepir1.py
src/adafruit_blinka/board/orangepizero.py
src/adafruit_blinka/board/pine64.py [new file with mode: 0644]
src/adafruit_blinka/board/tritium-h3.py
src/adafruit_blinka/microcontroller/allwinner/__init__.py [new file with mode: 0644]
src/adafruit_blinka/microcontroller/allwinner/a64/__init__.py [new file with mode: 0644]
src/adafruit_blinka/microcontroller/allwinner/a64/pin.py [new file with mode: 0644]
src/adafruit_blinka/microcontroller/allwinner/h3/__init__.py [new file with mode: 0644]
src/adafruit_blinka/microcontroller/allwinner/h3/pin.py [moved from src/adafruit_blinka/microcontroller/allwinner_h3/pin.py with 82% similarity]
src/adafruit_blinka/microcontroller/atheros/__init__.py [moved from src/adafruit_blinka/microcontroller/allwinner_h3/__init__.py with 100% similarity]
src/adafruit_blinka/microcontroller/atheros/ar9331/__init__.py [new file with mode: 0644]
src/adafruit_blinka/microcontroller/atheros/ar9331/pin.py [new file with mode: 0644]
src/adafruit_blinka/microcontroller/ft232h/i2c.py
src/adafruit_blinka/microcontroller/nova/i2c.py
src/board.py
src/busio.py
src/digitalio.py
src/microcontroller/__init__.py
src/microcontroller/pin.py

index e007ce4384f9eff7e3e5b2403f39e61d6f5b7ff2..a2cfda99ff3f6d8be659c813fb1a6804fb06d66b 100755 (executable)
@@ -5,5 +5,5 @@ RPi.GPIO; platform_machine=='armv7l' or platform_machine=='armv6l'
 rpi_ws281x>=4.0.0; platform_machine=='armv7l' or platform_machine=='armv6l'
 spidev>=3.4; sys_platform == 'linux' and platform_machine!='mips'
 sysv_ipc; sys_platform == 'linux' and platform_machine!='mips'
-pyftdi>=0.30.0
+pyftdi>=0.40.0
 binho-host-adapter>=0.1.4
index 29c7bdc6607105c9329a1a90093b463d3e35d875..0bd15601b151d6170dda6aeeed743be33a76e614 100755 (executable)
--- a/setup.py
+++ b/setup.py
@@ -51,7 +51,7 @@ setup(
         "Adafruit-PureIO",
         "spidev>=3.4; sys_platform=='linux' and platform_machine!='mips'",
         "sysv_ipc; platform_system != 'Windows' and platform_machine != 'mips'",
-        "pyftdi>=0.30.0"
+        "pyftdi>=0.40.0"
     ] + board_reqs,
     license='MIT',
     classifiers=[
index 8c6e88e18e78e521bbb725a1c5c54036949dfa1c..7f32cdfeb48e308260682f7b41c03a903bbc9246 100644 (file)
@@ -1,6 +1,6 @@
 """Pin definitions for the Orange Pi PC."""
 
-from adafruit_blinka.microcontroller.allwinner_h3 import pin
+from adafruit_blinka.microcontroller.allwinner.h3 import pin
 
 PA12 = pin.PA12
 SDA = pin.PA12
index 9319450b363af58875cd9c9753236f9cb534aef0..0752c514de24e3aceb6facec982f35cc31f5652a 100644 (file)
@@ -1,6 +1,6 @@
 """Pin definitions for the Orange Pi R1."""
 
-from adafruit_blinka.microcontroller.allwinner_h3 import pin
+from adafruit_blinka.microcontroller.allwinner.h3 import pin
 
 PA12 = pin.PA12
 SDA = pin.PA12
index bb425aa4b90a8202e691fae107a835d724ca80e0..a1dd92558981b22cad80aebd26c62c41edc558a4 100644 (file)
@@ -2,7 +2,7 @@
 
 # The Orange Pi Zero uses the AllWinner H2 SoC, but pins 
 # are the same as the AllWinner H3 SoC, so we import those
-from adafruit_blinka.microcontroller.allwinner_h3 import pin
+from adafruit_blinka.microcontroller.allwinner.h3 import pin
 
 PA12 = pin.PA12
 SDA = pin.PA12
diff --git a/src/adafruit_blinka/board/pine64.py b/src/adafruit_blinka/board/pine64.py
new file mode 100644 (file)
index 0000000..5a66f97
--- /dev/null
@@ -0,0 +1,51 @@
+"""Pin definitions for the Pine64."""
+
+from adafruit_blinka.microcontroller.allwinner.a64 import pin
+
+D2 = pin.PH3
+D3 = pin.PH2
+D4 = pin.PL10
+D5 = pin.PH5
+D6 = pin.PH6
+D7 = pin.PH7
+D8 = pin.PC3
+D9 = pin.PC1
+D10 = pin.PC0
+D11 = pin.PC2
+D12 = pin.PC4
+D13 = pin.PC5
+D14 = pin.PB0
+D15 = pin.PB1
+D16 = pin.PC6
+D17 = pin.PC7
+D18 = pin.PC8
+D19 = pin.PC9
+D20 = pin.PC10
+D21 = pin.PC11
+D22 = pin.PC12
+D23 = pin.PC13
+D24 = pin.PC14
+D25 = pin.PC15
+D26 = pin.PC16
+D27 = pin.PH9
+
+SDA = D2
+SCL = D3
+
+SCL2 = pin.PL8
+SDA2 = pin.PL9
+
+SCLK = D11
+MOSI = D10
+MISO = D9
+CS = D8
+SCK = SCLK
+
+UART_TX = D14
+UART_RX = D15
+
+UART3_TX = pin.PD0
+UART3_RX = pin.PD1
+
+UART4_TX = pin.PD2
+UART4_RX = pin.PD3
index 620957cd4b8346cf50514f58bcce1cfbe68ad438..516528ab1c2669ac335ccf0e0d9527b3591f3857 100644 (file)
@@ -1,6 +1,6 @@
 """Pin definitions for the Tritium H3."""
 
-from adafruit_blinka.microcontroller.allwinner_h3 import pin
+from adafruit_blinka.microcontroller.allwinner.h3 import pin
 
 PA12 = pin.PA12
 SDA = pin.PA12
diff --git a/src/adafruit_blinka/microcontroller/allwinner/__init__.py b/src/adafruit_blinka/microcontroller/allwinner/__init__.py
new file mode 100644 (file)
index 0000000..78b6459
--- /dev/null
@@ -0,0 +1 @@
+"""Definition of all Allwinner chips"""
\ No newline at end of file
diff --git a/src/adafruit_blinka/microcontroller/allwinner/a64/__init__.py b/src/adafruit_blinka/microcontroller/allwinner/a64/__init__.py
new file mode 100644 (file)
index 0000000..18e8421
--- /dev/null
@@ -0,0 +1 @@
+"""Definition for the AllWinner A64 chip"""
\ No newline at end of file
diff --git a/src/adafruit_blinka/microcontroller/allwinner/a64/pin.py b/src/adafruit_blinka/microcontroller/allwinner/a64/pin.py
new file mode 100644 (file)
index 0000000..66f44d6
--- /dev/null
@@ -0,0 +1,90 @@
+from adafruit_blinka.microcontroller.generic_linux.libgpiod_pin import Pin
+
+PB0 = Pin((1, 32))
+UART2_TX = PB0
+PB1 = Pin((1, 33))
+UART2_RX = PB1
+PB2 = Pin((1, 34))
+PB3 = Pin((1, 35))
+PB4 = Pin((1, 36))
+PB5 = Pin((1, 37))
+PB6 = Pin((1, 38))
+PB7 = Pin((1, 39))
+
+PC0 = Pin((1, 64))
+SPI0_MOSI = PC0
+PC1 = Pin((1, 65))
+SPI0_MISO = PC1
+PC2 = Pin((1, 66))
+SPI0_SCLK = PC2
+PC3 = Pin((1, 67))
+SPI0_CS = PC3
+PC4 = Pin((1, 68))
+PC5 = Pin((1, 69))
+PC6 = Pin((1, 70))
+PC7 = Pin((1, 71))
+PC8 = Pin((1, 72))
+PC9 = Pin((1, 73))
+PC10 = Pin((1, 74))
+PC11 = Pin((1, 75))
+PC12 = Pin((1, 76))
+PC13 = Pin((1, 77))
+PC14 = Pin((1, 78))
+PC15 = Pin((1, 79))
+PC16 = Pin((1, 80))
+
+PD0 = Pin((1, 96))
+UART3_TX = PD0
+SPI1_CS = PD0
+PD1 = Pin((1, 97))
+SPI1_SCLK = PD1
+UART3_RX = PD1
+PD2 = Pin((1, 98))
+UART4_TX = PD2
+SPI1_MOSI = PD2
+PD3 = Pin((1, 99))
+UART4_RX = PD3
+SPI1_MISO = PD3
+PD4 = Pin((1, 100))
+PD5 = Pin((1, 101))
+PD6 = Pin((1, 102))
+
+PE14 = Pin((1, 142))
+TWI2_SCL = PE14
+PE15 = Pin((1, 143))
+TWI2_SDA = PE15
+
+PH2 = Pin((1, 226))
+TWI1_SCL = PH2
+PH3 = Pin((1, 227))
+TWI1_SDA = PH3
+PH4 = Pin((1, 228))
+PH5 = Pin((1, 229))
+PH6 = Pin((1, 230))
+PH7 = Pin((1, 231))
+PH8 = Pin((1, 232))
+PH9 = Pin((1, 233))
+
+PL2 = Pin((0, 2))
+PL3 = Pin((0, 3))
+PL8 = Pin((0, 8))
+PL9 = Pin((0, 9))
+PL10 = Pin((0, 10))
+
+# ordered as i2cId, sclId, sdaId
+i2cPorts = (
+    (1, TWI1_SCL, TWI1_SDA),
+    (2, TWI2_SCL, TWI2_SDA)
+)
+
+# ordered as spiId, sckId, mosiId, misoId
+spiPorts = (
+    (0, SPI0_SCLK, SPI0_MOSI, SPI0_MISO),
+    (1, SPI1_SCLK, SPI1_MOSI, SPI1_MISO),
+)
+# ordered as uartId, txId, rxId
+uartPorts = (
+    (2, UART2_TX, UART2_RX),
+    (3, UART3_TX, UART3_RX),
+    (4, UART4_TX, UART4_RX),
+)
diff --git a/src/adafruit_blinka/microcontroller/allwinner/h3/__init__.py b/src/adafruit_blinka/microcontroller/allwinner/h3/__init__.py
new file mode 100644 (file)
index 0000000..e6b08ac
--- /dev/null
@@ -0,0 +1 @@
+"""Definition for the AllWinner H3 chip"""
\ No newline at end of file
similarity index 82%
rename from src/adafruit_blinka/microcontroller/allwinner_h3/pin.py
rename to src/adafruit_blinka/microcontroller/allwinner/h3/pin.py
index f2ed8c085525d9faee61b6f8a6cec5a1773cf4f7..7ddf86c8b35228a5c7f308dbf76646b1d62196f6 100644 (file)
@@ -55,8 +55,15 @@ PG12 = Pin(204)
 PG13 = Pin(205)
 
 
-i2cPorts = ( (0, TWI0_SCL, TWI0_SDA), )
+i2cPorts = (
+    (0, TWI0_SCL, TWI0_SDA),
+)
 # ordered as spiId, sckId, mosiId, misoId
-spiPorts = ( (0, SPI0_SCLK, SPI0_MOSI, SPI0_MISO), (1, SPI1_SCLK, SPI1_MOSI, SPI1_MISO), )
+spiPorts = (
+    (0, SPI0_SCLK, SPI0_MOSI, SPI0_MISO),
+    (1, SPI1_SCLK, SPI1_MOSI, SPI1_MISO),
+)
 # ordered as uartId, txId, rxId
-uartPorts = ( (3, UART3_TX, UART3_RX), )
+uartPorts = (
+    (3, UART3_TX, UART3_RX),
+)
diff --git a/src/adafruit_blinka/microcontroller/atheros/ar9331/__init__.py b/src/adafruit_blinka/microcontroller/atheros/ar9331/__init__.py
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/src/adafruit_blinka/microcontroller/atheros/ar9331/pin.py b/src/adafruit_blinka/microcontroller/atheros/ar9331/pin.py
new file mode 100644 (file)
index 0000000..96a7aab
--- /dev/null
@@ -0,0 +1,55 @@
+from adafruit_blinka.microcontroller.generic_linux.libgpiod_pin import Pin
+
+GPIO_0 = Pin((0, 0))
+GPIO_1 = Pin((0, 1))
+GPIO_2 = Pin((0, 2))
+GPIO_3 = Pin((0, 3))
+SPI_CLK = GPIO_3
+GPIO_4 = Pin((0, 4))
+SPI_MOSI = GPIO_4
+GPIO_5 = Pin((0, 5))
+SPI_MISO = GPIO_5
+GPIO_6 = Pin((0, 6))
+GPIO_7 = Pin((0, 7))
+GPIO_8 = Pin((0, 8))
+GPIO_9 = Pin((0, 9))
+UART0_RX = GPIO_9
+GPIO_10 = Pin((0, 10))
+UART0_TX = GPIO_10
+GPIO_11 = Pin((0, 11))
+GPIO_12 = Pin((0, 12))
+GPIO_13 = Pin((0, 13))
+GPIO_14 = Pin((0, 14))
+GPIO_15 = Pin((0, 15))
+GPIO_16 = Pin((0, 16))
+GPIO_17 = Pin((0, 17))
+GPIO_18 = Pin((0, 18))
+GPIO_19 = Pin((0, 19))
+GPIO_20 = Pin((0, 20))
+TWI0_SCL = GPIO_20
+
+GPIO_21 = Pin((0, 21))
+TWI0_SDA = GPIO_21
+GPIO_22 = Pin((0, 22))
+GPIO_23 = Pin((0, 23))
+GPIO_24 = Pin((0, 24))
+GPIO_25 = Pin((0, 25))
+GPIO_26 = Pin((0, 26))
+GPIO_27 = Pin((0, 27))
+GPIO_28 = Pin((0, 28))
+
+# ordered as i2cId, sclId, sdaId
+i2cPorts = (
+    (0, TWI0_SCL, TWI0_SDA)
+)
+
+# ordered as spiId, sckId, mosiId, misoId
+spiPorts = (
+    (1, SPI_CLK, SPI_MISO, SPI_MISO),
+)
+
+# ordered as uartId, txId, rxId
+uartPorts = (
+    (0, UART0_TX, UART0_RX)
+)
+
index 411121d299080f8be37249d9d3704c3df00122aa..7f733c15f669001dd80ce743ec2ce76273d53d2c 100644 (file)
@@ -32,6 +32,6 @@ class I2C:
         port = self._i2c.get_port(address)
         result = port.exchange(buffer_out[out_start:out_end],
                                in_end-in_start,
-                               relax=True).tobytes()
+                               relax=True)
         for i, b in enumerate(result):
             buffer_in[in_start+i] = b
index 7f080627737b45676d99be39a5be7d1fcaface8c..19190704b841cb8b4ec22b541e29902468187a8f 100644 (file)
@@ -1,12 +1,12 @@
 class I2C:
 
-    def __init__(self):
+    def __init__(self, *, frequency=400000):
         from adafruit_blinka.microcontroller.nova import Connection
         self._nova = Connection.getInstance()
         self._nova.setNumericalBase(10)
         self._nova.setOperationMode(0, "I2C")
         self._nova.setPullUpStateI2C(0, "EN")
-        self._nova.setClockI2C(0, 400000)
+        self._nova.setClockI2C(0, frequency)
 
     def scan(self):
 
index 00d4d3271d1a0a735454bdc396fb1eff26ddb3c0..5f9ce3375478b085880695f46979af5d73ea1259 100755 (executable)
@@ -124,6 +124,9 @@ elif board_id == ap_board.BINHO_NOVA:
 elif board_id == ap_board.MICROCHIP_MCP2221:
     from adafruit_blinka.board.microchip_mcp2221 import *
 
+elif board_id == ap_board.PINE64:
+    from adafruit_blinka.board.pine64 import *
+
 elif "sphinx" in sys.modules:
     pass
 
index e0118ac8c09314ec04f3b902d462e5d5018c07e9..5439745416251218d89af32d0384e1443e13ff35 100755 (executable)
@@ -25,6 +25,8 @@ class I2C(Lockable):
             return
         elif detector.board.binho_nova:
             from adafruit_blinka.microcontroller.nova.i2c import I2C
+            self._i2c = I2C(frequency=frequency)
+            return
         elif detector.board.microchip_mcp2221:
             from adafruit_blinka.microcontroller.mcp2221.i2c import I2C
             self._i2c = I2C(frequency=frequency)
@@ -128,7 +130,7 @@ class SPI(Lockable):
             from adafruit_blinka.microcontroller.am335x.pin import Pin
             from adafruit_blinka.microcontroller.generic_linux.spi import SPI as _SPI
         elif board_id == ap_board.ORANGE_PI_PC or board_id == ap_board.ORANGE_PI_R1 or board_id == ap_board.ORANGE_PI_ZERO:
-            from adafruit_blinka.microcontroller.allwinner_h3.pin import Pin
+            from adafruit_blinka.microcontroller.allwinner.h3.pin import Pin
             from adafruit_blinka.microcontroller.generic_linux.spi import SPI as _SPI
         elif board_id == ap_board.GIANT_BOARD:
             from adafruit_blinka.microcontroller.sama5.pin import Pin
@@ -160,6 +162,9 @@ class SPI(Lockable):
         elif detector.board.binho_nova:
             from adafruit_blinka.microcontroller.nova.spi import SPI as _SPI
             from adafruit_blinka.microcontroller.nova.pin import Pin
+        elif board_id == ap_board.PINE64 or board_id == ap_board.PINEBOOK or board_id == ap_board.PINEPHONE:
+            from adafruit_blinka.microcontroller.allwinner.a64.pin import Pin
+            from adafruit_blinka.microcontroller.generic_linux.spi import SPI as _SPI
         else:
             from machine import SPI as _SPI
             from machine import Pin
index bb2a48ef32a2b5ef09c5c81b26b78a7930bf65fb..51c729e17a5999dfc70b31d2063d93c426f46557 100755 (executable)
@@ -16,7 +16,7 @@ if detector.chip.BCM2XXX:
 elif detector.chip.AM33XX:
     from adafruit_blinka.microcontroller.am335x.pin import Pin
 elif detector.chip.SUN8I:
-    from adafruit_blinka.microcontroller.allwinner_h3.pin import Pin
+    from adafruit_blinka.microcontroller.allwinner.h3.pin import Pin
 elif detector.chip.SAMA5:
     from adafruit_blinka.microcontroller.sama5.pin import Pin
 elif detector.chip.T210:
@@ -33,6 +33,8 @@ elif detector.chip.APQ8016:
     from adafruit_blinka.microcontroller.snapdragon.apq8016.pin import Pin
 elif detector.chip.IMX8MX:
     from adafruit_blinka.microcontroller.nxp_imx8m.pin import Pin
+elif detector.chip.A64:
+    from adafruit_blinka.microcontroller.allwinner.a64.pin import Pin
 elif detector.board.ftdi_ft232h:
     from adafruit_blinka.microcontroller.ft232h.pin import Pin
 elif detector.board.binho_nova:
index 5d5f094fa9fcc7c5c5aea938c7b8ac2053b21b02..4f5973fc8be913bcbf37fb70c4e29300fb98700c 100755 (executable)
@@ -33,7 +33,7 @@ elif chip_id == ap_chip.BCM2XXX:
 elif chip_id == ap_chip.AM33XX:
     from adafruit_blinka.microcontroller.am335x import *
 elif chip_id == ap_chip.SUN8I:
-    from adafruit_blinka.microcontroller.allwinner_h3 import *
+    from adafruit_blinka.microcontroller.allwinner.h3 import *
 elif chip_id == ap_chip.SAMA5:
     from adafruit_blinka.microcontroller.sama5 import *
 elif chip_id == ap_chip.T210:
@@ -48,6 +48,8 @@ elif chip_id == ap_chip.S922X:
     from adafruit_blinka.microcontroller.amlogic.s922x.pin import *
 elif chip_id == ap_chip.APQ8016:
     from adafruit_blinka.microcontroller.snapdragon.apq8016.pin import *
+elif chip_id == ap_chip.A64:
+    from adafruit_blinka.microcontroller.allwinner.a64.pin import *
 elif chip_id == ap_chip.IMX8MX:
     from adafruit_blinka.microcontroller.nxp_imx8m import *
 elif chip_id == ap_chip.BINHO:
index d1b5b8fea3ec7b8ebe0aceb6f3d9c20901d32030..3e4ca44800545b0136ac081a0a9fb03aacb3496d 100755 (executable)
@@ -15,7 +15,7 @@ elif chip_id == ap_chip.BCM2XXX:
 elif chip_id == ap_chip.AM33XX:
     from adafruit_blinka.microcontroller.am335x.pin import *
 elif chip_id == ap_chip.SUN8I:
-    from adafruit_blinka.microcontroller.allwinner_h3.pin import *
+    from adafruit_blinka.microcontroller.allwinner.h3.pin import *
 elif chip_id == ap_chip.SAMA5:
     from adafruit_blinka.microcontroller.sama5.pin import *
 elif chip_id == ap_chip.T210:
@@ -38,5 +38,7 @@ elif chip_id == ap_chip.BINHO:
     from adafruit_blinka.microcontroller.nova.pin import *
 elif chip_id == ap_chip.MCP2221:
     from adafruit_blinka.microcontroller.mcp2221.pin import *
+elif chip_id == ap_chip.A64:
+    from adafruit_blinka.microcontroller.allwinner.a64.pin import *
 else:
     raise NotImplementedError("Microcontroller not supported: ", chip_id)