|
| 1 | +# SPDX-FileCopyrightText: 2025 Brett Walach for Particle |
| 2 | +# |
| 3 | +# SPDX-License-Identifier: MIT |
| 4 | +"""Quectel QCM6490 pin names""" |
| 5 | +# from adafruit_blinka.microcontroller.generic_linux.sysfs_pin import Pin |
| 6 | +# from adafruit_blinka.microcontroller.generic_linux.libgpiod_pin import Pin |
| 7 | +from adafruit_blinka.microcontroller.generic_linux.libgpiod_pin import Pin as GenericLinuxPin |
| 8 | + |
| 9 | +import os |
| 10 | + |
| 11 | +# Release (unexport) all pins on init and set to INPUT mode |
| 12 | +class Pin(GenericLinuxPin): |
| 13 | + def __init__(self, pin_id): |
| 14 | + self._release_sysfs_gpio(pin_id) |
| 15 | + super().__init__(pin_id) |
| 16 | + |
| 17 | + def _release_sysfs_gpio(self, pin_id, base_offset=336): |
| 18 | + # pin_id might be a tuple like (chip_id, line_number) |
| 19 | + if isinstance(pin_id, tuple): |
| 20 | + _, line_number = pin_id |
| 21 | + else: |
| 22 | + line_number = pin_id |
| 23 | + |
| 24 | + gpio_num = base_offset + int(line_number) |
| 25 | + gpio_path = f"/sys/class/gpio/gpio{gpio_num}" |
| 26 | + |
| 27 | + try: |
| 28 | + if not os.path.exists(gpio_path): |
| 29 | + with open("/sys/class/gpio/export", "w") as f: |
| 30 | + f.write(f"{gpio_num}") |
| 31 | + with open(f"{gpio_path}/direction", "w") as f: |
| 32 | + f.write("in") |
| 33 | + with open("/sys/class/gpio/unexport", "w") as f: |
| 34 | + f.write(f"{gpio_num}") |
| 35 | + except Exception: |
| 36 | + # fail silently if not allowed |
| 37 | + pass |
| 38 | + |
| 39 | +# Use with sysfs_pin |
| 40 | +# GPIO_BASE = 336 |
| 41 | + |
| 42 | +# Use with libgpiod_pin |
| 43 | +GPIO_BASE = 0 |
| 44 | + |
| 45 | +GPIO_6 = Pin(GPIO_BASE + 6) |
| 46 | +UART01_TXD = GPIO_6 |
| 47 | +PWM1 = GPIO_6 |
| 48 | +GPIO_8 = Pin(GPIO_BASE + 8) |
| 49 | +I2C02_SDA = GPIO_8 |
| 50 | +SDA = GPIO_8 |
| 51 | +GPIO_9 = Pin(GPIO_BASE + 9) |
| 52 | +I2C02_SCL = GPIO_9 |
| 53 | +SCL = GPIO_9 |
| 54 | +GPIO_18 = Pin(GPIO_BASE + 18) |
| 55 | +UART04_TXD = GPIO_18 |
| 56 | +SPI04_CLK = GPIO_18 |
| 57 | +GPIO_19 = Pin(GPIO_BASE + 19) |
| 58 | +UART04_RXD = GPIO_19 |
| 59 | +SPI04_CS0 = GPIO_19 |
| 60 | +GPIO_24 = Pin(GPIO_BASE + 24) |
| 61 | +GPIO_33 = Pin(GPIO_BASE + 33) |
| 62 | +UART10_RTS = GPIO_33 |
| 63 | +SPI10_MOSI = GPIO_33 |
| 64 | +I2C10_SCL = GPIO_33 |
| 65 | +GPIO_34 = Pin(GPIO_BASE + 34) |
| 66 | +UART10_TXD = GPIO_34 |
| 67 | +SPI10_CLK = GPIO_34 |
| 68 | +GPIO_36 = Pin(GPIO_BASE + 36) |
| 69 | +UART11_CTS = GPIO_36 |
| 70 | +SPI11_MISO = GPIO_36 |
| 71 | +I2C11_SDA = GPIO_36 |
| 72 | +EEPROM_SDA = GPIO_36 |
| 73 | +GPIO_37 = Pin(GPIO_BASE + 37) |
| 74 | +UART11_RTS = GPIO_37 |
| 75 | +SPI11_MOSI = GPIO_37 |
| 76 | +I2C11_SCL = GPIO_37 |
| 77 | +GPIO_48 = Pin(GPIO_BASE + 48) |
| 78 | +UART14_CTS = GPIO_48 |
| 79 | +I2C14_SDA = GPIO_48 |
| 80 | +SPI14_MISO = GPIO_48 |
| 81 | +CTS = GPIO_48 |
| 82 | +GPIO_49 = Pin(GPIO_BASE + 49) |
| 83 | +UART14_RTS = GPIO_49 |
| 84 | +I2C14_SCL = GPIO_49 |
| 85 | +SPI14_MOSI = GPIO_49 |
| 86 | +RTS = GPIO_49 |
| 87 | +GPIO_50 = Pin(GPIO_BASE + 50) |
| 88 | +UART14_TXD = GPIO_50 |
| 89 | +SPI14_CLK = GPIO_50 |
| 90 | +SPI16_CS3 = GPIO_50 |
| 91 | +TX = GPIO_50 |
| 92 | +GPIO_51 = Pin(GPIO_BASE + 51) |
| 93 | +UART14_RXD = GPIO_51 |
| 94 | +SPI14_CS0 = GPIO_51 |
| 95 | +RX = GPIO_51 |
| 96 | +GPIO_56 = Pin(GPIO_BASE + 56) |
| 97 | +MISO = GPIO_56 |
| 98 | +GPIO_57 = Pin(GPIO_BASE + 57) |
| 99 | +SPI16_MOSI = GPIO_57 |
| 100 | +I2C16_SCL = GPIO_57 |
| 101 | +UART16_RTS = GPIO_57 |
| 102 | +SPI16_MISO = GPIO_57 |
| 103 | +I2C16_SDA = GPIO_57 |
| 104 | +UART16_CTS = GPIO_57 |
| 105 | +MOSI = GPIO_57 |
| 106 | +GPIO_58 = Pin(GPIO_BASE + 58) |
| 107 | +SPI16_CLK = GPIO_58 |
| 108 | +UART16_TXD = GPIO_58 |
| 109 | +SCK = GPIO_58 |
| 110 | +GPIO_59 = Pin(GPIO_BASE + 59) |
| 111 | +SPI16_CS0 = GPIO_59 |
| 112 | +UART16_RXD = GPIO_59 |
| 113 | +GPIO_61 = Pin((0, GPIO_BASE + 61)) |
| 114 | +GPIO_62 = Pin(GPIO_BASE + 62) |
| 115 | +SPI16_CS1 = GPIO_62 |
| 116 | +GPIO_106 = Pin(GPIO_BASE + 106) |
| 117 | +UART13_TXD = GPIO_106 |
| 118 | +SPI13_CLK = GPIO_106 |
| 119 | +GPIO_144 = Pin(GPIO_BASE + 144) |
| 120 | +PRI_MI2S_MCLK = GPIO_144 |
| 121 | +GPIO_145 = Pin(GPIO_BASE + 145) |
| 122 | +MI2S0_WS = GPIO_145 |
| 123 | +MISO1 = GPIO_145 |
| 124 | +GPIO_146 = Pin(GPIO_BASE + 146) |
| 125 | +MI2S0_DATA0 = GPIO_146 |
| 126 | +GPIO_147 = Pin(GPIO_BASE + 147) |
| 127 | +MI2S0_DATA1 = GPIO_147 |
| 128 | +GPIO_158 = Pin(GPIO_BASE + 158) |
| 129 | +GPIO_165 = Pin(GPIO_BASE + 165) |
| 130 | +GPIO_166 = Pin(GPIO_BASE + 166) |
| 131 | + |
| 132 | +# ordered as i2cId, i2cSclId, i2cSdaId |
| 133 | +i2cPorts = ((1, I2C02_SCL, I2C02_SDA),) |
| 134 | + |
| 135 | +# ordered as spiId, sckId, mosiId, misoId |
| 136 | +spiPorts = ((16, SPI16_CLK, SPI16_MOSI, SPI16_MISO),) |
| 137 | + |
| 138 | +# ordered as uartId, txId, rxId |
| 139 | +uartPorts = ((14, UART14_TXD, UART14_RXD),) |
| 140 | + |
| 141 | +# ordered as pwmChipId, pwmChannelId, pwmId |
| 142 | +pwmOuts = (((0, 0), PWM1),) |
0 commit comments