From: Melissa LeBlanc-Williams Date: Mon, 20 Jan 2020 17:21:32 +0000 (-0800) Subject: Merge pull request #228 from yeyeto2788/orangepi X-Git-Tag: 3.5.0~1 X-Git-Url: https://git.ayoreis.com/hackapet/Adafruit_Blinka.git/commitdiff_plain/e2a087d9b134122733fe0b551482cc5b70b65cc2?hp=d9b23f5e50c49ca2482dea2fd817df0f13237bde Merge pull request #228 from yeyeto2788/orangepi Add Orange Pi boards (One, Lite, PC Plus, Plus 2E) --- diff --git a/requirements.txt b/requirements.txt index e007ce4..a2cfda9 100755 --- a/requirements.txt +++ b/requirements.txt @@ -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 diff --git a/setup.py b/setup.py index 29c7bdc..0bd1560 100755 --- 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=[ diff --git a/src/adafruit_blinka/board/orangepipc.py b/src/adafruit_blinka/board/orangepipc.py index 8c6e88e..7f32cdf 100644 --- a/src/adafruit_blinka/board/orangepipc.py +++ b/src/adafruit_blinka/board/orangepipc.py @@ -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 diff --git a/src/adafruit_blinka/board/orangepir1.py b/src/adafruit_blinka/board/orangepir1.py index 9319450..0752c51 100644 --- a/src/adafruit_blinka/board/orangepir1.py +++ b/src/adafruit_blinka/board/orangepir1.py @@ -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 diff --git a/src/adafruit_blinka/board/orangepizero.py b/src/adafruit_blinka/board/orangepizero.py index bb425aa..a1dd925 100644 --- a/src/adafruit_blinka/board/orangepizero.py +++ b/src/adafruit_blinka/board/orangepizero.py @@ -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 index 0000000..5a66f97 --- /dev/null +++ b/src/adafruit_blinka/board/pine64.py @@ -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 diff --git a/src/adafruit_blinka/board/tritium-h3.py b/src/adafruit_blinka/board/tritium-h3.py index 620957c..516528a 100644 --- a/src/adafruit_blinka/board/tritium-h3.py +++ b/src/adafruit_blinka/board/tritium-h3.py @@ -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 index 0000000..78b6459 --- /dev/null +++ b/src/adafruit_blinka/microcontroller/allwinner/__init__.py @@ -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 index 0000000..18e8421 --- /dev/null +++ b/src/adafruit_blinka/microcontroller/allwinner/a64/__init__.py @@ -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 index 0000000..66f44d6 --- /dev/null +++ b/src/adafruit_blinka/microcontroller/allwinner/a64/pin.py @@ -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 index 0000000..e6b08ac --- /dev/null +++ b/src/adafruit_blinka/microcontroller/allwinner/h3/__init__.py @@ -0,0 +1 @@ +"""Definition for the AllWinner H3 chip""" \ No newline at end of file diff --git a/src/adafruit_blinka/microcontroller/allwinner_h3/pin.py b/src/adafruit_blinka/microcontroller/allwinner/h3/pin.py similarity index 82% rename from src/adafruit_blinka/microcontroller/allwinner_h3/pin.py rename to src/adafruit_blinka/microcontroller/allwinner/h3/pin.py index f2ed8c0..7ddf86c 100644 --- a/src/adafruit_blinka/microcontroller/allwinner_h3/pin.py +++ b/src/adafruit_blinka/microcontroller/allwinner/h3/pin.py @@ -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/allwinner_h3/__init__.py b/src/adafruit_blinka/microcontroller/atheros/__init__.py similarity index 100% rename from src/adafruit_blinka/microcontroller/allwinner_h3/__init__.py rename to src/adafruit_blinka/microcontroller/atheros/__init__.py diff --git a/src/adafruit_blinka/microcontroller/atheros/ar9331/__init__.py b/src/adafruit_blinka/microcontroller/atheros/ar9331/__init__.py new file mode 100644 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 index 0000000..96a7aab --- /dev/null +++ b/src/adafruit_blinka/microcontroller/atheros/ar9331/pin.py @@ -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) +) + diff --git a/src/adafruit_blinka/microcontroller/ft232h/i2c.py b/src/adafruit_blinka/microcontroller/ft232h/i2c.py index 411121d..7f733c1 100644 --- a/src/adafruit_blinka/microcontroller/ft232h/i2c.py +++ b/src/adafruit_blinka/microcontroller/ft232h/i2c.py @@ -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 diff --git a/src/adafruit_blinka/microcontroller/nova/i2c.py b/src/adafruit_blinka/microcontroller/nova/i2c.py index 7f08062..1919070 100644 --- a/src/adafruit_blinka/microcontroller/nova/i2c.py +++ b/src/adafruit_blinka/microcontroller/nova/i2c.py @@ -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): diff --git a/src/board.py b/src/board.py index 00d4d32..5f9ce33 100755 --- a/src/board.py +++ b/src/board.py @@ -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 diff --git a/src/busio.py b/src/busio.py index e0118ac..5439745 100755 --- a/src/busio.py +++ b/src/busio.py @@ -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 diff --git a/src/digitalio.py b/src/digitalio.py index bb2a48e..51c729e 100755 --- a/src/digitalio.py +++ b/src/digitalio.py @@ -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: diff --git a/src/microcontroller/__init__.py b/src/microcontroller/__init__.py index 5d5f094..4f5973f 100755 --- a/src/microcontroller/__init__.py +++ b/src/microcontroller/__init__.py @@ -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: diff --git a/src/microcontroller/pin.py b/src/microcontroller/pin.py index d1b5b8f..3e4ca44 100755 --- a/src/microcontroller/pin.py +++ b/src/microcontroller/pin.py @@ -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)