From: linhhoang Date: Thu, 7 Oct 2021 23:17:25 +0000 (-0700) Subject: Add support for Jetson Orin X-Git-Tag: 8.2.0^2 X-Git-Url: https://git.ayoreis.com/Adafruit_Blinka-hackapet.git/commitdiff_plain/5dbecf85066a45db93132b66c502e95e9d546b78 Add support for Jetson Orin --- diff --git a/src/adafruit_blinka/board/nvidia/jetson_orin.py b/src/adafruit_blinka/board/nvidia/jetson_orin.py new file mode 100644 index 0000000..19efc34 --- /dev/null +++ b/src/adafruit_blinka/board/nvidia/jetson_orin.py @@ -0,0 +1,42 @@ +# SPDX-FileCopyrightText: 2022 Linh Hoang for NVIDIA +# SPDX-FileCopyrightText: 2022 Melissa LeBlanc-Williams for Adafruit Industries +# +# SPDX-License-Identifier: MIT +"""Pin definitions for Jetson AGX Orin.""" + +from adafruit_blinka.microcontroller.tegra.t234 import pin + +SDA = pin.SDA +SCL = pin.SCL +SDA_1 = pin.SDA_1 +SCL_1 = pin.SCL_1 + +D4 = pin.Q06 +D5 = pin.AA01 +D6 = pin.AA00 +D7 = pin.Z07 +D8 = pin.Z06 +D9 = pin.Z04 +D10 = pin.Z05 +D11 = pin.Z03 +D12 = pin.BB00 +D13 = pin.AA02 +D16 = pin.R05 +D17 = pin.R04 +D18 = pin.H00 +D19 = pin.I02 +D20 = pin.I01 +D21 = pin.I00 +D22 = pin.N01 +D23 = pin.BB01 +D24 = pin.H00 +D25 = pin.P04 +D26 = pin.AA03 +D27 = pin.R00 + +CE1 = D7 +CE0 = D8 +MISO = D9 +MOSI = D10 +SCLK = D11 +SCK = D11 diff --git a/src/adafruit_blinka/microcontroller/tegra/t234/__init__.py b/src/adafruit_blinka/microcontroller/tegra/t234/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/adafruit_blinka/microcontroller/tegra/t234/pin.py b/src/adafruit_blinka/microcontroller/tegra/t234/pin.py new file mode 100644 index 0000000..f2f3332 --- /dev/null +++ b/src/adafruit_blinka/microcontroller/tegra/t234/pin.py @@ -0,0 +1,119 @@ +# SPDX-FileCopyrightText: 2022 Linh Hoang for NVIDIA +# SPDX-FileCopyrightText: 2022 Melissa LeBlanc-Williams for Adafruit Industries +# +# SPDX-License-Identifier: MIT + +"""Tegra T234 pin names""" +import atexit +from Jetson import GPIO + +GPIO.setmode(GPIO.TEGRA_SOC) +GPIO.setwarnings(False) # shh! + + +class Pin: + """Pins dont 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, bcm_number): + self.id = bcm_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""" + 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) + return None + if val == self.HIGH: + self._value = val + GPIO.output(self.id, val) + return None + raise RuntimeError("Invalid value for pin") + return GPIO.input(self.id) + + # pylint: disable=no-method-argument + @atexit.register + def cleanup(): + """Clean up pins""" + print("Exiting... \nCleaning up pins") + GPIO.cleanup() + + # pylint: enable=no-method-argument + + +# Cannot be used as GPIO +SDA = Pin("GP16_I2C8_DAT") # I2C4 +SCL = Pin("GP81_I2C9_CLK") +SDA_1 = Pin("GP14_I2C2_DAT") # I2C2 +SCL_1 = Pin("GP13_I2C2_CLK") + +# Jetson AGX Orin +Q06 = Pin("GP66") +R04 = Pin("GP72_UART1_RTS_N") +H07 = Pin("GP122") +R00 = Pin("GP68") +N01 = Pin("GP88_PWM1") +BB00 = Pin("GP25") +H00 = Pin("GP115") +Z05 = Pin("GP49_SPI1_MOSI") +Z04 = Pin("GP48_SPI1_MISO") +P04 = Pin("GP56") +Z03 = Pin("GP47_SPI1_CLK") +Z06 = Pin("GP50_SPI1_CS0_N") +Z07 = Pin("GP51_SPI1_CS1_N") +AA01 = Pin("GP18_CAN0_DIN") +AA00 = Pin("GP17_CAN0_DOUT") +BB01 = Pin("GP26") +AA02 = Pin("GP19_CAN1_DOUT") +I02 = Pin("GP125") +R05 = Pin("GP73_UART1_CTS_N") +AA03 = Pin("GP20_CAN1_DIN") +I01 = Pin("GP124") +I00 = Pin("GP123") + +i2cPorts = ( + (7, SCL, SDA), + (1, SCL_1, SDA_1), +) + +# ordered as spiId, sckId, mosiId, misoId +spiPorts = ((0, Z03, Z05, Z04),) diff --git a/src/board.py b/src/board.py index bc6e528..425a0c6 100644 --- a/src/board.py +++ b/src/board.py @@ -148,6 +148,9 @@ elif board_id == ap_board.JETSON_NANO: elif board_id == ap_board.JETSON_NX: from adafruit_blinka.board.nvidia.jetson_nx import * +elif board_id == ap_board.JETSON_AGX_ORIN: + from adafruit_blinka.board.nvidia.jetson_orin import * + elif board_id == ap_board.CLARA_AGX_XAVIER: from adafruit_blinka.board.nvidia.clara_agx_xavier import * diff --git a/src/digitalio.py b/src/digitalio.py index 24e65e9..84471a7 100644 --- a/src/digitalio.py +++ b/src/digitalio.py @@ -32,6 +32,8 @@ elif detector.chip.T186: from adafruit_blinka.microcontroller.tegra.t186.pin import Pin elif detector.chip.T194: from adafruit_blinka.microcontroller.tegra.t194.pin import Pin +elif detector.chip.T234: + from adafruit_blinka.microcontroller.tegra.t234.pin import Pin elif detector.chip.S905: from adafruit_blinka.microcontroller.amlogic.s905.pin import Pin elif detector.chip.S905X3: diff --git a/src/microcontroller/__init__.py b/src/microcontroller/__init__.py index c72fc83..8739826 100644 --- a/src/microcontroller/__init__.py +++ b/src/microcontroller/__init__.py @@ -62,6 +62,8 @@ elif chip_id == ap_chip.T186: from adafruit_blinka.microcontroller.tegra.t186 import * elif chip_id == ap_chip.T194: from adafruit_blinka.microcontroller.tegra.t194 import * +elif chip_id == ap_chip.T234: + from adafruit_blinka.microcontroller.tegra.t234 import * elif chip_id == ap_chip.S905: from adafruit_blinka.microcontroller.amlogic.s905 import * elif chip_id == ap_chip.S905X3: diff --git a/src/microcontroller/pin.py b/src/microcontroller/pin.py index f283b74..031c5c2 100644 --- a/src/microcontroller/pin.py +++ b/src/microcontroller/pin.py @@ -49,6 +49,8 @@ elif chip_id == ap_chip.T186: from adafruit_blinka.microcontroller.tegra.t186.pin import * elif chip_id == ap_chip.T194: from adafruit_blinka.microcontroller.tegra.t194.pin import * +elif chip_id == ap_chip.T234: + from adafruit_blinka.microcontroller.tegra.t234.pin import * elif chip_id == ap_chip.S905: from adafruit_blinka.microcontroller.amlogic.s905.pin import * elif chip_id == ap_chip.S905X3: