]> Repositories - Adafruit_Blinka-hackapet.git/commitdiff
Merge pull request #598 from anhmiuhv/agxorin 8.2.0
authorMelissa LeBlanc-Williams <melissa@adafruit.com>
Wed, 27 Jul 2022 16:20:59 +0000 (09:20 -0700)
committerGitHub <noreply@github.com>
Wed, 27 Jul 2022 16:20:59 +0000 (09:20 -0700)
Add support for Jetson Orin

src/adafruit_blinka/board/nvidia/jetson_orin.py [new file with mode: 0644]
src/adafruit_blinka/microcontroller/tegra/t234/__init__.py [new file with mode: 0644]
src/adafruit_blinka/microcontroller/tegra/t234/pin.py [new file with mode: 0644]
src/board.py
src/digitalio.py
src/microcontroller/__init__.py
src/microcontroller/pin.py

diff --git a/src/adafruit_blinka/board/nvidia/jetson_orin.py b/src/adafruit_blinka/board/nvidia/jetson_orin.py
new file mode 100644 (file)
index 0000000..19efc34
--- /dev/null
@@ -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 (file)
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 (file)
index 0000000..f2f3332
--- /dev/null
@@ -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),)
index bc6e528b74ad7f3623359ca6629b94982fc7ee09..425a0c61cd15c602e2606ab06d6ed2df43cec0d5 100644 (file)
@@ -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 *
 
index 24e65e9c26d673de5a41a3fd53a0d1b00ca0da48..84471a74781a86cde78e98a911449dfd8bebc010 100644 (file)
@@ -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:
index c72fc8313e098d444a247ca28fc97780314b9123..8739826d113c0f4dde5c961155def87413bf1ff0 100644 (file)
@@ -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:
index f283b74afe7478e09f0ba5592753b30523533236..031c5c2b05d690f5b7ca50a62a336c8663448ed6 100644 (file)
@@ -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: