From: Franklin Harding Date: Tue, 11 May 2021 07:01:42 +0000 (-0700) Subject: Merge branch 'master' of https://github.com/adafruit/Adafruit_Blinka X-Git-Tag: 6.9.2~2^2~3 X-Git-Url: https://git.ayoreis.com/Adafruit_Blinka-hackapet.git/commitdiff_plain/6db6ef855f798996075d2919ca924ec31983f7f1 Merge branch 'master' of https://github.com/adafruit/Adafruit_Blinka --- 6db6ef855f798996075d2919ca924ec31983f7f1 diff --cc requirements.txt index 59a7ee9,59a7ee9..013f2dc --- a/requirements.txt +++ b/requirements.txt @@@ -1,4 -1,4 +1,4 @@@ --Adafruit-PlatformDetect>=3.1.0 ++Adafruit-PlatformDetect>=3.13.0 Adafruit-PureIO>=1.1.7 Jetson.GPIO; platform_machine=='aarch64' RPi.GPIO; platform_machine=='armv7l' or platform_machine=='armv6l' diff --cc setup.py index 7e92596,7e92596..5d6ea95 --- a/setup.py +++ b/setup.py @@@ -62,7 -62,7 +62,7 @@@ setup "adafruit_blinka.microcontroller.bcm283x.pulseio": ["libgpiod_pulsein"] }, install_requires=[ -- "Adafruit-PlatformDetect>=3.1.0", ++ "Adafruit-PlatformDetect>=3.13.0", "Adafruit-PureIO>=1.1.7", "pyftdi>=0.40.0", ] diff --cc src/adafruit_blinka/microcontroller/ftdi_mpsse/ft2232h/pin.py index 814a3a9,0000000..4fa8440 mode 100644,000000..100644 --- a/src/adafruit_blinka/microcontroller/ftdi_mpsse/ft2232h/pin.py +++ b/src/adafruit_blinka/microcontroller/ftdi_mpsse/ft2232h/pin.py @@@ -1,55 -1,0 +1,55 @@@ +"""FT2232H pin names""" + +from adafruit_blinka.microcontroller.ftdi_mpsse.mpsse.pin import Pin + +# See https://eblot.github.io/pyftdi/pinout.html for detailed FTDI device pinout information + +# MPSSE Port A - AD4 = Pin(4, url="ftdi://ftdi:ft2232h/1") - AD5 = Pin(5, url="ftdi://ftdi:ft2232h/1") - AD6 = Pin(6, url="ftdi://ftdi:ft2232h/1") - AD7 = Pin(7, url="ftdi://ftdi:ft2232h/1") - AC0 = Pin(8, url="ftdi://ftdi:ft2232h/1") - AC1 = Pin(9, url="ftdi://ftdi:ft2232h/1") - AC2 = Pin(10, url="ftdi://ftdi:ft2232h/1") - AC3 = Pin(11, url="ftdi://ftdi:ft2232h/1") - AC4 = Pin(12, url="ftdi://ftdi:ft2232h/1") - AC5 = Pin(13, url="ftdi://ftdi:ft2232h/1") - AC6 = Pin(14, url="ftdi://ftdi:ft2232h/1") - AC7 = Pin(15, url="ftdi://ftdi:ft2232h/1") - - SCL0 = Pin(url="ftdi://ftdi:ft2232h/1") - SDA0 = Pin(url="ftdi://ftdi:ft2232h/1") - SCK0 = SCLK0 = Pin(url="ftdi://ftdi:ft2232h/1") - MOSI0 = Pin(url="ftdi://ftdi:ft2232h/1") - MISO0 = Pin(url="ftdi://ftdi:ft2232h/1") ++AD4 = Pin(4, interface_id=0) ++AD5 = Pin(5, interface_id=0) ++AD6 = Pin(6, interface_id=0) ++AD7 = Pin(7, interface_id=0) ++AC0 = Pin(8, interface_id=0) ++AC1 = Pin(9, interface_id=0) ++AC2 = Pin(10, interface_id=0) ++AC3 = Pin(11, interface_id=0) ++AC4 = Pin(12, interface_id=0) ++AC5 = Pin(13, interface_id=0) ++AC6 = Pin(14, interface_id=0) ++AC7 = Pin(15, interface_id=0) ++ ++SCL0 = Pin(interface_id=0) ++SDA0 = Pin(interface_id=0) ++SCK0 = SCLK0 = Pin(interface_id=0) ++MOSI0 = Pin(interface_id=0) ++MISO0 = Pin(interface_id=0) + +# MPSSE Port B - BD4 = Pin(4, url="ftdi://ftdi:ft2232h/2") - BD5 = Pin(5, url="ftdi://ftdi:ft2232h/2") - BD6 = Pin(6, url="ftdi://ftdi:ft2232h/2") - BD7 = Pin(7, url="ftdi://ftdi:ft2232h/2") - BC0 = Pin(8, url="ftdi://ftdi:ft2232h/2") - BC1 = Pin(9, url="ftdi://ftdi:ft2232h/2") - BC2 = Pin(10, url="ftdi://ftdi:ft2232h/2") - BC3 = Pin(11, url="ftdi://ftdi:ft2232h/2") - BC4 = Pin(12, url="ftdi://ftdi:ft2232h/2") - BC5 = Pin(13, url="ftdi://ftdi:ft2232h/2") - BC6 = Pin(14, url="ftdi://ftdi:ft2232h/2") - BC7 = Pin(15, url="ftdi://ftdi:ft2232h/2") - - SCL1 = Pin(url="ftdi://ftdi:ft2232h/2") - SDA1 = Pin(url="ftdi://ftdi:ft2232h/2") - SCK1 = SCLK1 = Pin(url="ftdi://ftdi:ft2232h/2") - MOSI1 = Pin(url="ftdi://ftdi:ft2232h/2") - MISO1 = Pin(url="ftdi://ftdi:ft2232h/2") ++BD4 = Pin(4, interface_id=1) ++BD5 = Pin(5, interface_id=1) ++BD6 = Pin(6, interface_id=1) ++BD7 = Pin(7, interface_id=1) ++BC0 = Pin(8, interface_id=1) ++BC1 = Pin(9, interface_id=1) ++BC2 = Pin(10, interface_id=1) ++BC3 = Pin(11, interface_id=1) ++BC4 = Pin(12, interface_id=1) ++BC5 = Pin(13, interface_id=1) ++BC6 = Pin(14, interface_id=1) ++BC7 = Pin(15, interface_id=1) ++ ++SCL1 = Pin(interface_id=1) ++SDA1 = Pin(interface_id=1) ++SCK1 = SCLK1 = Pin(interface_id=1) ++MOSI1 = Pin(interface_id=1) ++MISO1 = Pin(interface_id=1) + +i2cPorts = ( + (0, SCL0, SDA0), + (1, SCL1, SDA1), +) + +spiPorts = ( + (0, SCLK0, MOSI0, MISO0), + (1, SCLK1, MOSI1, MISO1), +) diff --cc src/adafruit_blinka/microcontroller/ftdi_mpsse/mpsse/i2c.py index 291a77c,28d2644..f9539fb --- a/src/adafruit_blinka/microcontroller/ftdi_mpsse/mpsse/i2c.py +++ b/src/adafruit_blinka/microcontroller/ftdi_mpsse/mpsse/i2c.py @@@ -1,5 -1,6 +1,9 @@@ -"""I2C Class for FT232H""" -from adafruit_blinka.microcontroller.ft232h.pin import Pin -from adafruit_blinka.microcontroller.ft232h.url import get_ftdi_url +"""I2C Class for FTDI MPSSE""" +from adafruit_blinka.microcontroller.ftdi_mpsse.mpsse.pin import Pin ++from adafruit_blinka.microcontroller.ftdi_mpsse.mpsse.url import ( ++ get_ft232h_url, ++ get_ft2232h_url, ++) class I2C: @@@ -22,13 -14,8 +26,11 @@@ # pylint: enable=import-outside-toplevel self._i2c = I2cController() - self._i2c.configure(get_ftdi_url(), frequency=frequency) - Pin.ft232h_gpio = self._i2c.get_gpio() + if i2c_id is None: - self._i2c.configure("ftdi://ftdi:ft232h/1", frequency=frequency) ++ self._i2c.configure(get_ft232h_url(), frequency=frequency) + else: - self._i2c.configure( - "ftdi://ftdi:ft2232h/{}".format(i2c_id + 1), frequency=frequency - ) ++ self._i2c.configure(get_ft2232h_url(i2c_id), frequency=frequency) + Pin.mpsse_gpio = self._i2c.get_gpio() def scan(self): """Perform an I2C Device Scan""" diff --cc src/adafruit_blinka/microcontroller/ftdi_mpsse/mpsse/pin.py index b5a7475,a138ee7..5dc171e --- a/src/adafruit_blinka/microcontroller/ftdi_mpsse/mpsse/pin.py +++ b/src/adafruit_blinka/microcontroller/ftdi_mpsse/mpsse/pin.py @@@ -1,8 -1,10 +1,10 @@@ -"""FT232H pin names""" +"""MPSSE pin names""" -from adafruit_blinka.microcontroller.ft232h.url import get_ftdi_url ++from adafruit_blinka.microcontroller.ftdi_mpsse.mpsse.url import get_ft232h_url, get_ft2232h_url + class Pin: - """A basic Pin class for use with FT232H.""" + """A basic Pin class for use with FTDI MPSSEs.""" IN = 0 OUT = 1 @@@ -12,23 -14,23 +14,26 @@@ PULL_UP = 1 PULL_DOWN = 2 - ft232h_gpio = None + mpsse_gpio = None - def __init__(self, pin_id=None, url="ftdi://ftdi:ft232h/1"): - def __init__(self, pin_id=None): ++ def __init__(self, pin_id=None, interface_id=None): # setup GPIO controller if not done yet # use one provided by I2C as default - if not Pin.ft232h_gpio: + if not Pin.mpsse_gpio: # pylint: disable=import-outside-toplevel from pyftdi.i2c import I2cController # pylint: enable=import-outside-toplevel i2c = I2cController() - i2c.configure(url) - i2c.configure(get_ftdi_url()) - Pin.ft232h_gpio = i2c.get_gpio() ++ if interface_id is None: ++ i2c.configure(get_ft232h_url()) ++ else: ++ i2c.configure(get_ft2232h_url(interface_id)) + Pin.mpsse_gpio = i2c.get_gpio() # check if pin is valid if pin_id: - if Pin.ft232h_gpio.all_pins & 1 << pin_id == 0: + if Pin.mpsse_gpio.all_pins & 1 << pin_id == 0: raise ValueError("Can not use pin {} as GPIO.".format(pin_id)) # ID is just bit position self.id = pin_id diff --cc src/adafruit_blinka/microcontroller/ftdi_mpsse/mpsse/spi.py index 78dee58,fd16b39..0b76c08 --- a/src/adafruit_blinka/microcontroller/ftdi_mpsse/mpsse/spi.py +++ b/src/adafruit_blinka/microcontroller/ftdi_mpsse/mpsse/spi.py @@@ -1,5 -1,6 +1,9 @@@ -"""SPI Class for FT232H""" -from adafruit_blinka.microcontroller.ft232h.pin import Pin -from adafruit_blinka.microcontroller.ft232h.url import get_ftdi_url +"""SPI Class for FTDI MPSSE""" +from adafruit_blinka.microcontroller.ftdi_mpsse.mpsse.pin import Pin ++from adafruit_blinka.microcontroller.ftdi_mpsse.mpsse.url import ( ++ get_ft232h_url, ++ get_ft2232h_url, ++) # pylint: disable=protected-access class SPI: @@@ -14,10 -15,7 +18,10 @@@ # pylint: enable=import-outside-toplevel self._spi = SpiController(cs_count=1) - self._spi.configure(get_ftdi_url()) + if spi_id is None: - self._spi.configure("ftdi://ftdi:ft232h/1") ++ self._spi.configure(get_ft232h_url()) + else: - self._spi.configure("ftdi://ftdi:ft2232h/{}".format(spi_id + 1)) ++ self._spi.configure(get_ft2232h_url(spi_id + 1)) self._port = self._spi.get_port(0) self._port.set_frequency(100000) self._port._cpol = 0 diff --cc src/adafruit_blinka/microcontroller/ftdi_mpsse/mpsse/url.py index 0000000,0000000..c2f2eaf new file mode 100644 --- /dev/null +++ b/src/adafruit_blinka/microcontroller/ftdi_mpsse/mpsse/url.py @@@ -1,0 -1,0 +1,31 @@@ ++"""Support for getting the URL from the BLINKA_FT232H variable.""" ++ ++import os ++ ++ ++def get_ft232h_url(): ++ """ ++ Return the FTDI url to use. If BLINKA_FT232H starts with ftdi:, returns ++ that. Otherwise, returns a default value. ++ """ ++ ++ url = os.environ.get("BLINKA_FT232H", "1") ++ ++ if url.startswith("ftdi:"): ++ return url ++ ++ return "ftdi://ftdi:ft232h/1" ++ ++ ++def get_ft2232h_url(interface_id): ++ """ ++ Return the FTDI url to use. If BLINKA_FT2232H_{} starts with ftdi:, returns ++ that. Otherwise, returns a default value. ++ """ ++ ++ url = os.environ.get("BLINKA_FT2232H_{}".format(interface_id), "1") ++ ++ if url.startswith("ftdi:"): ++ return url ++ ++ return "ftdi://ftdi:ft2232h/{}".format(interface_id + 1) diff --cc src/busio.py index 1991900,c599afa..11c6341 --- a/src/busio.py +++ b/src/busio.py @@@ -53,12 -53,22 +53,24 @@@ class I2C(Lockable) self._i2c = _I2C(frequency=frequency) return + if detector.board.pico_u2if: + from adafruit_blinka.microcontroller.pico_u2if.i2c import I2C as _I2C + + self._i2c = _I2C(scl, sda, frequency=frequency) + return + if detector.chip.id == ap_chip.RP2040: + from adafruit_blinka.microcontroller.rp2040.i2c import I2C as _I2C + + self._i2c = _I2C(scl, sda, frequency=frequency) + return if detector.board.any_embedded_linux: from adafruit_blinka.microcontroller.generic_linux.i2c import I2C as _I2C + elif detector.board.ftdi_ft2232h: + from adafruit_blinka.microcontroller.ftdi_mpsse.mpsse.i2c import I2C as _I2C else: - from machine import I2C as _I2C + from adafruit_blinka.microcontroller.generic_micropython.i2c import ( + I2C as _I2C, + ) from microcontroller.pin import i2cPorts for portId, portScl, portSda in i2cPorts: @@@ -177,12 -185,24 +191,26 @@@ class SPI(Lockable) self._spi = _SPI() self._pins = (SCK, MOSI, MISO) return + if detector.board.pico_u2if: + from adafruit_blinka.microcontroller.pico_u2if.spi import SPI as _SPI + + self._spi = _SPI(clock) # this is really all that's needed + self._pins = (clock, clock, clock) # will determine MOSI/MISO from clock + return + if detector.chip.id == ap_chip.RP2040: + from adafruit_blinka.microcontroller.rp2040.spi import SPI as _SPI + + self._spi = _SPI(clock, MOSI, MISO) # Pins configured on instantiation + self._pins = (clock, clock, clock) # These don't matter, they're discarded + return if detector.board.any_embedded_linux: from adafruit_blinka.microcontroller.generic_linux.spi import SPI as _SPI + elif detector.board.ftdi_ft2232h: + from adafruit_blinka.microcontroller.ftdi_mpsse.mpsse.spi import SPI as _SPI else: - from machine import SPI as _SPI + from adafruit_blinka.microcontroller.generic_micropython.spi import ( + SPI as _SPI, + ) from microcontroller.pin import spiPorts for portId, portSck, portMosi, portMiso in spiPorts: @@@ -245,45 -249,28 +257,34 @@@ from adafruit_blinka.microcontroller.generic_linux.spi import SPI as _SPI elif board_id == ap_board.JETSON_NANO: from adafruit_blinka.microcontroller.generic_linux.spi import SPI as _SPI - from adafruit_blinka.microcontroller.tegra.t210.pin import Pin elif board_id == ap_board.JETSON_TX1: from adafruit_blinka.microcontroller.generic_linux.spi import SPI as _SPI - from adafruit_blinka.microcontroller.tegra.t210.pin import Pin elif board_id == ap_board.JETSON_TX2: from adafruit_blinka.microcontroller.generic_linux.spi import SPI as _SPI - from adafruit_blinka.microcontroller.tegra.t186.pin import Pin elif board_id == ap_board.JETSON_XAVIER: from adafruit_blinka.microcontroller.generic_linux.spi import SPI as _SPI - from adafruit_blinka.microcontroller.tegra.t194.pin import Pin elif board_id == ap_board.JETSON_NX: from adafruit_blinka.microcontroller.generic_linux.spi import SPI as _SPI - from adafruit_blinka.microcontroller.tegra.t194.pin import Pin elif detector.board.ROCK_PI_S: from adafruit_blinka.microcontroller.generic_linux.spi import SPI as _SPI - from adafruit_blinka.microcontroller.rockchip.rk3308.pin import Pin elif detector.board.ROCK_PI_4: from adafruit_blinka.microcontroller.generic_linux.spi import SPI as _SPI - from adafruit_blinka.microcontroller.rockchip.rk3399.pin import Pin + elif detector.board.ROCK_PI_E: + from adafruit_blinka.microcontroller.generic_linux.spi import SPI as _SPI elif detector.board.SIFIVE_UNLEASHED: from adafruit_blinka.microcontroller.generic_linux.spi import SPI as _SPI - from adafruit_blinka.microcontroller.hfu540.pin import Pin elif detector.board.ftdi_ft232h: - from adafruit_blinka.microcontroller.ft232h.spi import SPI as _SPI + from adafruit_blinka.microcontroller.ftdi_mpsse.mpsse.spi import ( + SPI as _SPI, + ) - from adafruit_blinka.microcontroller.ftdi_mpsse.ft232h.pin import Pin + elif detector.board.ftdi_ft2232h: + from adafruit_blinka.microcontroller.ftdi_mpsse.mpsse.spi import ( + SPI as _SPI, + ) - from adafruit_blinka.microcontroller.ftdi_mpsse.ft2232h.pin import Pin elif detector.board.binho_nova: from adafruit_blinka.microcontroller.nova.spi import SPI as _SPI - from adafruit_blinka.microcontroller.nova.pin import Pin elif detector.board.greatfet_one: from adafruit_blinka.microcontroller.nxp_lpc4330.spi import SPI as _SPI - from adafruit_blinka.microcontroller.nxp_lpc4330.pin import Pin elif board_id in ( ap_board.PINE64, ap_board.PINEBOOK, diff --cc src/digitalio.py index 8db8399,c08c6b4..eef0015 --- a/src/digitalio.py +++ b/src/digitalio.py @@@ -53,10 -53,10 +53,12 @@@ elif detector.chip.RK3308 from adafruit_blinka.microcontroller.rockchip.rk3308.pin import Pin elif detector.chip.RK3399: from adafruit_blinka.microcontroller.rockchip.rk3399.pin import Pin + elif detector.chip.RK3328: + from adafruit_blinka.microcontroller.rockchip.rk3328.pin import Pin elif detector.board.ftdi_ft232h: - from adafruit_blinka.microcontroller.ft232h.pin import Pin + from adafruit_blinka.microcontroller.ftdi_mpsse.ft232h.pin import Pin +elif detector.board.ftdi_ft2232h: + from adafruit_blinka.microcontroller.ftdi_mpsse.ft2232h.pin import Pin elif detector.board.binho_nova: from adafruit_blinka.microcontroller.nova.pin import Pin elif detector.board.greatfet_one: