--- /dev/null
+# SPDX-FileCopyrightText: 2025 Brett Walach for Particle
+#
+# SPDX-License-Identifier: MIT
+"""Board definitions from Particle"""
--- /dev/null
+# SPDX-FileCopyrightText: 2025 Brett Walach for Particle
+#
+# SPDX-License-Identifier: MIT
+"""Pin definitions for the Tachyon."""
+
+from adafruit_blinka.microcontroller.quectel.qcm6490 import pin
+
+for it in pin.i2cPorts:
+ globals()["SCL" + str(it[0])] = it[1]
+ globals()["SDA" + str(it[0])] = it[2]
+
+SCL = pin.i2cPorts[0][1]
+SDA = pin.i2cPorts[0][2]
+
+D0 = pin.GPIO_36
+D1 = pin.GPIO_37
+D2 = pin.GPIO_8
+D3 = pin.GPIO_9
+D4 = pin.GPIO_61
+D5 = pin.GPIO_18
+D6 = pin.GPIO_19
+D7 = pin.GPIO_62
+D8 = pin.GPIO_59
+D9 = pin.GPIO_56
+D10 = pin.GPIO_57
+D11 = pin.GPIO_58
+D12 = pin.GPIO_78
+D13 = pin.GPIO_106
+D14 = pin.GPIO_34
+D15 = pin.GPIO_35
+D16 = pin.GPIO_32
+D17 = pin.GPIO_33
+D18 = pin.GPIO_144
+D19 = pin.GPIO_145
+D20 = pin.GPIO_146
+D21 = pin.GPIO_147
+D22 = pin.GPIO_158
+D23 = pin.GPIO_165
+D24 = pin.GPIO_166
+D25 = pin.GPIO_24
+D26 = pin.GPIO_6
+D27 = pin.GPIO_44
+
+CS = D8
+MISO = D9
+MOSI = D10
+SCLK = D11
+SCK = SCLK
+
+UART_TX = D14
+UART_RX = D15
+
+PWM1 = D13
"""Initialize the Pin"""
# Input,
if not self._line_request:
- self._line_request = self._chip.request_lines(
- config={int(self._num): None},
- consumer=self._CONSUMER,
- )
- # print("init line: ", self.id, self._line)
-
- if mode is not None:
line_config = gpiod.LineSettings()
+
if mode == self.IN:
line_config.direction = gpiod.line.Direction.INPUT
if pull is not None:
else:
raise RuntimeError(f"Invalid pull for pin: {self.id}")
- self._mode = self.IN
- self._line_request.reconfigure_lines(
- {
- int(self._num): line_config,
- }
- )
elif mode == self.OUT:
if pull is not None:
raise RuntimeError("Cannot set pull resistor on output")
- self._mode = self.OUT
line_config.direction = gpiod.line.Direction.OUTPUT
- self._line_request.reconfigure_lines(
- {
- int(self._num): line_config,
- }
- )
+
else:
- raise RuntimeError("Invalid mode for pin: %s" % self.id)
+ raise RuntimeError(f"Invalid mode for pin: {self.id}")
+
+ self._line_request = self._chip.request_lines(
+ {int(self._num): line_config},
+ consumer=self._CONSUMER,
+ )
def value(self, val=None):
"""Set or return the Pin Value"""
--- /dev/null
+# SPDX-FileCopyrightText: 2025 Brett Walach for Particle
+#
+# SPDX-License-Identifier: MIT
+"""Definition of all Quectel chips"""
--- /dev/null
+# SPDX-FileCopyrightText: 2025 Brett Walach for Particle
+#
+# SPDX-License-Identifier: MIT
+"""Definition for the Quectel QCM6490 chip"""
--- /dev/null
+# SPDX-FileCopyrightText: 2025 Brett Walach for Particle
+#
+# SPDX-License-Identifier: MIT
+"""Quectel QCM6490 pin names"""
+
+from adafruit_blinka.microcontroller.generic_linux.libgpiod_pin import Pin
+
+# Use with libgpiod_pin
+GPIO_BASE = 0
+
+GPIO_6 = Pin(GPIO_BASE + 6)
+UART01_TXD = GPIO_6
+PWM1 = GPIO_6
+
+GPIO_8 = Pin(GPIO_BASE + 8)
+I2C02_SDA = GPIO_8
+SDA = GPIO_8
+
+GPIO_9 = Pin(GPIO_BASE + 9)
+I2C02_SCL = GPIO_9
+SCL = GPIO_9
+
+GPIO_18 = Pin(GPIO_BASE + 18)
+UART04_TXD = GPIO_18
+SPI04_CLK = GPIO_18
+
+GPIO_19 = Pin(GPIO_BASE + 19)
+UART04_RXD = GPIO_19
+SPI04_CS0 = GPIO_19
+
+GPIO_24 = Pin(GPIO_BASE + 24)
+
+GPIO_32 = Pin(GPIO_BASE + 32)
+UART10_CTS = GPIO_32
+CTS = GPIO_32
+
+GPIO_33 = Pin(GPIO_BASE + 33)
+UART10_RTS = GPIO_33
+RTS = GPIO_33
+
+GPIO_34 = Pin(GPIO_BASE + 34)
+UART10_TXD = GPIO_34
+
+GPIO_35 = Pin(GPIO_BASE + 35)
+UART10_RXD = GPIO_35
+
+GPIO_36 = Pin(GPIO_BASE + 36)
+UART11_CTS = GPIO_36
+SPI11_MISO = GPIO_36
+I2C11_SDA = GPIO_36
+EEPROM_SDA = GPIO_36
+
+GPIO_37 = Pin(GPIO_BASE + 37)
+UART11_RTS = GPIO_37
+SPI11_MOSI = GPIO_37
+I2C11_SCL = GPIO_37
+EEPROM_SCL = GPIO_37
+
+GPIO_40 = Pin(GPIO_BASE + 40)
+QWIIC_I2C12_SDA = GPIO_40
+
+GPIO_41 = Pin(GPIO_BASE + 41)
+QWIIC_I2C12_SCL = GPIO_41
+
+GPIO_44 = Pin(GPIO_BASE + 44)
+
+GPIO_56 = Pin(GPIO_BASE + 56)
+SPI16_MISO = GPIO_56
+I2C16_SDA = GPIO_56
+UART16_CTS = GPIO_56
+MISO = GPIO_56
+
+GPIO_57 = Pin(GPIO_BASE + 57)
+SPI16_MOSI = GPIO_57
+I2C16_SCL = GPIO_57
+UART16_RTS = GPIO_57
+MOSI = GPIO_57
+
+GPIO_58 = Pin(GPIO_BASE + 58)
+SPI16_CLK = GPIO_58
+UART16_TXD = GPIO_58
+SCK = GPIO_58
+
+GPIO_59 = Pin(GPIO_BASE + 59)
+SPI16_CS0 = GPIO_59
+UART16_RXD = GPIO_59
+CE0 = GPIO_59
+
+GPIO_61 = Pin(GPIO_BASE + 61)
+
+GPIO_62 = Pin(GPIO_BASE + 62)
+SPI16_CS1 = GPIO_62
+CE1 = GPIO_62
+
+GPIO_78 = Pin(GPIO_BASE + 78)
+PWM0 = GPIO_78
+
+GPIO_106 = Pin(GPIO_BASE + 106)
+MI2S1_SCLK = GPIO_106
+PWM = GPIO_106
+PWM1 = GPIO_106
+
+GPIO_144 = Pin(GPIO_BASE + 144)
+LPI_MI2S_SCLK = GPIO_144
+
+GPIO_145 = Pin(GPIO_BASE + 145)
+LPI_MI2S_WS = GPIO_145
+MISO1 = GPIO_145
+
+GPIO_146 = Pin(GPIO_BASE + 146)
+LPI_MI2S_DATA0 = GPIO_146
+MOSI1 = GPIO_146
+
+GPIO_147 = Pin(GPIO_BASE + 147)
+LPI_MI2S_DATA1 = GPIO_147
+SCK1 = GPIO_147
+
+GPIO_158 = Pin(GPIO_BASE + 158)
+
+GPIO_165 = Pin(GPIO_BASE + 165)
+
+GPIO_166 = Pin(GPIO_BASE + 166)
+
+# ordered as i2cId, i2cSclId, i2cSdaId
+i2cPorts = (
+ (1, I2C02_SCL, I2C02_SDA),
+ (2, QWIIC_I2C12_SCL, QWIIC_I2C12_SDA),
+)
+
+# ordered as spiId, sckId, mosiId, misoId
+spiPorts = (
+ (0, SPI16_CLK, SPI16_MOSI, SPI16_MISO),
+ (1, SPI16_CLK, SPI16_MOSI, SPI16_MISO),
+)
+
+# ordered as uartId, txId, rxId
+uartPorts = ((10, UART10_TXD, UART10_RXD),)
+
+# ordered as pwmChipId, pwmChannelId, pwmId
+pwmOuts = (((0, 0), PWM1),)
elif board_id == ap_board.RDK_X3:
from adafruit_blinka.board.horizon.rdkx3 import *
+elif board_id == ap_board.PARTICLE_TACHYON:
+ from adafruit_blinka.board.particle.tachyon import *
+
elif "sphinx" in sys.modules:
pass
from adafruit_blinka.microcontroller.rockchip.rv1103.pin import Pin
elif detector.chip.RV1106:
from adafruit_blinka.microcontroller.rockchip.rv1106.pin import Pin
+elif detector.chip.QCM6490:
+ from adafruit_blinka.microcontroller.quectel.qcm6490.pin import Pin
elif detector.chip.OS_AGNOSTIC:
from adafruit_blinka.microcontroller.generic_agnostic_board.pin import Pin
from adafruit_blinka.microcontroller.renesas.rzv2h import *
elif chip_id == ap_chip.SUNRISE_X3:
from adafruit_blinka.microcontroller.horizon.sunrise_x3 import *
+elif chip_id == ap_chip.QCM6490:
+ from adafruit_blinka.microcontroller.quectel.qcm6490 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:
from adafruit_blinka.microcontroller.rockchip.rv1106.pin import *
elif chip_id == ap_chip.SUNRISE_X3:
from adafruit_blinka.microcontroller.horizon.sunrise_x3.pin import *
+elif chip_id == ap_chip.QCM6490:
+ from adafruit_blinka.microcontroller.quectel.qcm6490.pin import *
elif "sphinx" in sys.modules:
# pylint: disable=unused-import
from adafruit_blinka.microcontroller.generic_micropython import Pin