diff --git a/setup.py b/setup.py index efc43d5b..4fd9a421 100644 --- a/setup.py +++ b/setup.py @@ -115,7 +115,7 @@ }, include_package_data=True, install_requires=[ - "Adafruit-PlatformDetect>=3.70.1", + "Adafruit-PlatformDetect>=3.89.1", "Adafruit-PureIO>=1.1.7", "binho-host-adapter>=0.1.6", "pyftdi>=0.40.0", diff --git a/src/adafruit_blinka/board/beagleboard/beagle_play.py b/src/adafruit_blinka/board/beagleboard/beagle_play.py new file mode 100644 index 00000000..09ea130e --- /dev/null +++ b/src/adafruit_blinka/board/beagleboard/beagle_play.py @@ -0,0 +1,51 @@ +# SPDX-FileCopyrightText: 2026 Melissa LeBlanc-Williams for Adafruit Industries +# +# SPDX-License-Identifier: MIT +"""Pin definitions for the BeaglePlay.""" +from adafruit_blinka.microcontroller.am625x import pin + +# MIKROBUS connector I2C (i2c-3, /dev/play/mikrobus/i2c) +SCL = pin.MIKROBUS_SCL +SDA = pin.MIKROBUS_SDA + +# QWIIC / STEMMA QT connector (i2c-5, /dev/play/qwiic/i2c) +QWIIC_SCL = pin.QWIIC_SCL +QWIIC_SDA = pin.QWIIC_SDA + +# Grove connector I2C (i2c-1, /dev/play/grove/i2c) +GROVE_SCL = pin.GROVE_SCL +GROVE_SDA = pin.GROVE_SDA + +# MIKROBUS general-purpose GPIO +MIKROBUS_GPIO1_7 = pin.MIKROBUS_GPIO1_7 +MIKROBUS_GPIO1_8 = pin.MIKROBUS_GPIO1_8 +MIKROBUS_GPIO1_9 = pin.MIKROBUS_GPIO1_9 +MIKROBUS_GPIO1_10 = pin.MIKROBUS_GPIO1_10 +MIKROBUS_GPIO1_11 = pin.MIKROBUS_GPIO1_11 +MIKROBUS_GPIO1_12 = pin.MIKROBUS_GPIO1_12 +MIKROBUS_W1 = pin.MIKROBUS_W1 +MIKROBUS_GPIO1_14 = pin.MIKROBUS_GPIO1_14 +MIKROBUS_GPIO1_15 = pin.MIKROBUS_GPIO1_15 +MIKROBUS_GPIO1_16 = pin.MIKROBUS_GPIO1_16 +MIKROBUS_GPIO1_17 = pin.MIKROBUS_GPIO1_17 +MIKROBUS_GPIO1_18 = pin.MIKROBUS_GPIO1_18 +MIKROBUS_GPIO1_20 = pin.MIKROBUS_GPIO1_20 +MIKROBUS_GPIO1_21 = pin.MIKROBUS_GPIO1_21 +MIKROBUS_GPIO1_22 = pin.MIKROBUS_GPIO1_22 +MIKROBUS_GPIO1_23 = pin.MIKROBUS_GPIO1_23 +MIKROBUS_GPIO1_24 = pin.MIKROBUS_GPIO1_24 +MIKROBUS_GPIO1_25 = pin.MIKROBUS_GPIO1_25 + +# MIKROBUS UART (/dev/ttyS0) +TX = pin.UART_TX +RX = pin.UART_RX + +# User LEDs (gpiochip2) +LED_USR0 = pin.USR0 +LED_USR1 = pin.USR1 +LED_USR2 = pin.USR2 +LED_USR3 = pin.USR3 +LED_USR4 = pin.USR4 + +# User button +USR_BUTTON = pin.USR_BUTTON diff --git a/src/adafruit_blinka/microcontroller/am625x/__init__.py b/src/adafruit_blinka/microcontroller/am625x/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/src/adafruit_blinka/microcontroller/am625x/pin.py b/src/adafruit_blinka/microcontroller/am625x/pin.py new file mode 100644 index 00000000..b871f269 --- /dev/null +++ b/src/adafruit_blinka/microcontroller/am625x/pin.py @@ -0,0 +1,68 @@ +# SPDX-FileCopyrightText: 2026 Melissa LeBlanc-Williams for Adafruit Industries +# +# SPDX-License-Identifier: MIT +"""TI AM625X pin names (BeaglePlay)""" +from adafruit_blinka.microcontroller.generic_linux.libgpiod_pin import Pin + +# gpiochip1 (4201000.gpio) – MCU domain GPIO +QWIIC_SCL = Pin((1, 17)) # MCU_I2C0_SCL +QWIIC_SDA = Pin((1, 18)) # MCU_I2C0_SDA + +# gpiochip2 (600000.gpio) – main_gpio0 +USR0 = Pin((2, 3)) # USR0 LED +USR1 = Pin((2, 4)) # USR1 LED +USR2 = Pin((2, 5)) # USR2 LED +USR3 = Pin((2, 6)) # USR3 LED +USR4 = Pin((2, 9)) # USR4 LED +USR_BUTTON = Pin((2, 18)) + +# gpiochip3 (601000.gpio) – main_gpio1 +# MIKROBUS I2C (i2c-3) +MIKROBUS_SCL = Pin((3, 22)) # MIKROBUS_GPIO1_22 / main_i2c3_scl +MIKROBUS_SDA = Pin((3, 23)) # MIKROBUS_GPIO1_23 / main_i2c3_sda + +# Grove I2C (i2c-1) +GROVE_SCL = Pin((3, 28)) # main_i2c1_scl +GROVE_SDA = Pin((3, 29)) # main_i2c1_sda + +# MIKROBUS general-purpose GPIO lines (gpiochip3) +MIKROBUS_GPIO1_7 = Pin((3, 7)) +MIKROBUS_GPIO1_8 = Pin((3, 8)) +MIKROBUS_GPIO1_9 = Pin((3, 9)) +MIKROBUS_GPIO1_10 = Pin((3, 10)) +MIKROBUS_GPIO1_11 = Pin((3, 11)) +MIKROBUS_GPIO1_12 = Pin((3, 12)) +MIKROBUS_W1 = Pin((3, 13)) # 1-Wire GPIO +MIKROBUS_GPIO1_14 = Pin((3, 14)) +MIKROBUS_GPIO1_15 = Pin((3, 15)) +MIKROBUS_GPIO1_16 = Pin((3, 16)) +MIKROBUS_GPIO1_17 = Pin((3, 17)) +MIKROBUS_GPIO1_18 = Pin((3, 18)) +# line 19 is VDD_3V3_SD (regulator control – not a user GPIO) +MIKROBUS_GPIO1_20 = Pin((3, 20)) +MIKROBUS_GPIO1_21 = Pin((3, 21)) +MIKROBUS_GPIO1_22 = MIKROBUS_SCL # dual-use: I2C SCL or GPIO +MIKROBUS_GPIO1_23 = MIKROBUS_SDA # dual-use: I2C SDA or GPIO +# lines 24/25 are dual-use: MIKROBUS UART TX/RX or GPIO +MIKROBUS_GPIO1_24 = Pin((3, 24)) +MIKROBUS_GPIO1_25 = Pin((3, 25)) + +# MIKROBUS UART TX/RX aliases (/dev/ttyS0) +UART_TX = MIKROBUS_GPIO1_24 +UART_RX = MIKROBUS_GPIO1_25 + +# ordered as (i2cId, SCL, SDA) +i2cPorts = ( + (3, MIKROBUS_SCL, MIKROBUS_SDA), # MIKROBUS I2C → /dev/play/mikrobus/i2c + (1, GROVE_SCL, GROVE_SDA), # Grove I2C → /dev/play/grove/i2c + (5, QWIIC_SCL, QWIIC_SDA), # QWIIC → /dev/play/qwiic/i2c +) + +# ordered as (spiId, sckId, mosiId, misoId) +# MIKROBUS SPI is managed by the Greybus/CC1352P7 coprocessor; +# no spidev is exposed by default on stock images. +spiPorts = () + +# ordered as (uartId, txId, rxId) +# MIKROBUS UART → /dev/ttyS0 +uartPorts = ((0, UART_TX, UART_RX),) diff --git a/src/board_imports.json b/src/board_imports.json index 472df3f9..efe62126 100644 --- a/src/board_imports.json +++ b/src/board_imports.json @@ -155,5 +155,6 @@ "VIVID_UNIT": "adafruit_blinka.board.vivid_unit", "INDIEDROID_NOVA": "adafruit_blinka.board.ameridroid.indiedroid_nova", "RDK_X3": "adafruit_blinka.board.horizon.rdkx3", - "PARTICLE_TACHYON": "adafruit_blinka.board.particle.tachyon" + "PARTICLE_TACHYON": "adafruit_blinka.board.particle.tachyon", + "BEAGLE_PLAY": "adafruit_blinka.board.beagleboard.beagle_play" } diff --git a/src/microcontroller_imports.json b/src/microcontroller_imports.json index 82cfc424..f25263b4 100644 --- a/src/microcontroller_imports.json +++ b/src/microcontroller_imports.json @@ -80,5 +80,6 @@ "FT2232H": "adafruit_blinka.microcontroller.ftdi_mpsse.ft2232h", "FT4232H": "adafruit_blinka.microcontroller.ftdi_mpsse.ft4232h", "BINHO": "adafruit_blinka.microcontroller.nova", - "OS_AGNOSTIC": "adafruit_blinka.microcontroller.generic_agnostic_board" + "OS_AGNOSTIC": "adafruit_blinka.microcontroller.generic_agnostic_board", + "AM625X": "adafruit_blinka.microcontroller.am625x" }