X-Git-Url: https://git.ayoreis.com/Adafruit_Blinka-hackapet.git/blobdiff_plain/a94bfa3648be9e67aa5a7369e9b23e26d90d5176..c2bc4a90827f28abb6b51eae659a1f80a65c0497:/src/adafruit_blinka/microcontroller/starfive/JH7110/pin.py?ds=inline diff --git a/src/adafruit_blinka/microcontroller/starfive/JH7110/pin.py b/src/adafruit_blinka/microcontroller/starfive/JH7110/pin.py index 5fdbf2c..023a40e 100644 --- a/src/adafruit_blinka/microcontroller/starfive/JH7110/pin.py +++ b/src/adafruit_blinka/microcontroller/starfive/JH7110/pin.py @@ -1,60 +1,115 @@ -# SPDX-FileCopyrightText: 2021 Melissa LeBlanc-Williams for Adafruit Industries +# SPDX-FileCopyrightText: 2024 Vladimir Shtarev, Jetbrains Research # # SPDX-License-Identifier: MIT """A Pin class for use with StarFive JH7110.""" -from adafruit_blinka.microcontroller.generic_linux.libgpiod_pin import Pin - -D0 = Pin(9) -D1 = Pin(10) -D4 = Pin(46) -D5 = Pin(8) -D6 = Pin(6) -D7 = Pin(11) -D8 = Pin(15) -D9 = Pin(16) -D10 = Pin(18) -D11 = Pin(12) -D12 = Pin(7) -D13 = Pin(5) -D14 = Pin(14) -D15 = Pin(13) -D16 = Pin(4) -D17 = Pin(44) -D18 = Pin(45) -D19 = Pin(3) -D20 = Pin(2) -D21 = Pin(0) -D22 = Pin(20) -D23 = Pin(21) -D24 = Pin(19) -D25 = Pin(17) -D26 = Pin(1) -D27 = Pin(22) +import VisionFive.gpio as GPIO +GPIO.setmode(GPIO.BOARD) + + +class Pin: + """Pins don't exist in CPython so...lets make our own!""" + + IN = 0 + OUT = 1 + LOW = 0 + HIGH = 1 + PULL_NONE = 0 + PULL_UP = 1 + PULL_DOWN = 2 + + id = None + _value = LOW + _mode = IN + + def __init__(self, number): + self.id = number + + def __repr__(self): + return str(self.id) + + def __eq__(self, other): + return self.id == other + + def init(self, mode=IN, pull=None): + """Initialize the Pin""" + print(self.id) + if mode is not None: + if mode == self.IN: + self._mode = self.IN + GPIO.setup(self.id, GPIO.IN) + elif mode == self.OUT: + self._mode = self.OUT + GPIO.setup(self.id, GPIO.OUT) + else: + raise RuntimeError("Invalid mode for pin: %s" % self.id) + if pull is not None: + if self._mode != self.IN: + raise RuntimeError("Cannot set pull resistor on output") + if pull == self.PULL_UP: + GPIO.setup(self.id, GPIO.IN, pull_up_down=GPIO.PUD_UP) + elif pull == self.PULL_DOWN: + GPIO.setup(self.id, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) + else: + raise RuntimeError("Invalid pull for pin: %s" % self.id) + + def value(self, val=None): + """Set or return the Pin Value""" + if val is not None: + if val == self.LOW: + self._value = val + GPIO.output(self.id, val) + elif val == self.HIGH: + self._value = val + GPIO.output(self.id, val) + else: + raise RuntimeError("Invalid value for pin") + return None + return GPIO.input(self.id) + + +D7 = Pin(7) +D11 = Pin(11) +D12 = Pin(12) +D13 = Pin(13) +D15 = Pin(15) +D16 = Pin(16) +D18 = Pin(18) +D22 = Pin(22) +D24 = Pin(24) +D26 = Pin(26) +D27 = Pin(27) +D28 = Pin(28) +D29 = Pin(29) +D31 = Pin(31) +D35 = Pin(35) +D36 = Pin(36) +D37 = Pin(37) +D38 = Pin(38) +D40 = Pin(40) # I2C -I2C1_SDA = Pin(48) -I2C1_SCL = Pin(47) -I2C2_SDA = Pin(59) -I2C2_SCL = Pin(60) -I2C3_SDA = Pin(61) -I2C3_SCL = Pin(62) +I2C_SDA = Pin(3) +I2C_SCL = Pin(5) # SPI -SPI_MISO = D9 -SPI_MOSI = D10 -SPI_SCLK = D11 +SPI_MISO = Pin(21) +SPI_MOSI = Pin(19) +SPI_SCLK = Pin(23) # UART -UART_TX = D14 -UART_RX = D15 +UART_TX = Pin(8) +UART_RX = Pin(10) + +# PWM, does not support pwmio +PWM1 = Pin(32) +PWM2 = Pin(33) # ordered as i2cId, SCL, SDA -i2cPorts = ( - (0, I2C1_SCL, I2C1_SDA), - (1, I2C2_SCL, I2C2_SDA), - (2, I2C3_SCL, I2C3_SDA), -) +i2cPorts = ((0, I2C_SCL, I2C_SDA),) # ordered as spiId, sckId, mosiId, misoId spiPorts = ((0, SPI_SCLK, SPI_MOSI, SPI_MISO),) + +# ordered as uartId, txId, rxId +uartPorts = ((0, UART_TX, UART_RX),)