Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
41 changes: 41 additions & 0 deletions src/adafruit_blinka/board/nvidia/jetson_thor.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# SPDX-FileCopyrightText: 2025 Gautham Srinivasan for NVIDIA
#
# SPDX-License-Identifier: MIT
"""Pin definitions for Jetson Thor."""

from adafruit_blinka.microcontroller.tegra.t264 import pin

SDA = pin.SDA
SCL = pin.SCL
SDA_1 = pin.SDA_1
SCL_1 = pin.SCL_1

D4 = pin.L06
D5 = pin.AD01
D6 = pin.AD00
D7 = pin.K03
D8 = pin.K02
D9 = pin.K00
D10 = pin.K01
D11 = pin.J07
D12 = pin.DD04
D13 = pin.AE00
D16 = pin.M05
D17 = pin.M04
D18 = pin.V06
D19 = pin.W01
D20 = pin.W00
D21 = pin.V07
D22 = pin.F07
D23 = pin.DD03
D24 = pin.U07
D25 = pin.U00
D26 = pin.AE01
D27 = pin.M00

CE1 = D7
CE0 = D8
MISO = D9
MOSI = D10
SCLK = D11
SCK = D11
Empty file.
118 changes: 118 additions & 0 deletions src/adafruit_blinka/microcontroller/tegra/t264/pin.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
# SPDX-FileCopyrightText: 2025 Gautham Srinivasan for NVIDIA
#
# SPDX-License-Identifier: MIT

"""Tegra T264 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 Thor
L06 = Pin("GP130")
M04 = Pin("GP136_UART9_RTS_N")
V06 = Pin("GP184_DAP2_CLK")
M00 = Pin("GP132_PWM9")
F07 = Pin("GP257_PWM2")
DD03 = Pin("GP21")
U07 = Pin("GP177")
K01 = Pin("GP117_SPI1_MOSI")
K00 = Pin("GP116_SPI1_MISO")
U00 = Pin("GP170")
J07 = Pin("GP115_SPI1_CLK")
K02 = Pin("GP118_SPI1_CS0_N")
K03 = Pin("GP119_SPI1_CS1_N")
AD01 = Pin("GP211_CAN2_DIN")
AD00 = Pin("GP210_CAN2_DOUT")
DD04 = Pin("GGP22_SOCKET_ID_STRA")
AE00 = Pin("GP215_CAN3_DOUT")
W01 = Pin("GP187_DAP2_FS")
M05 = Pin("GP137_UART9_CTS_N")
AE01 = Pin("GP216_CAN3_DIN")
W00 = Pin("GP186_DAP2_DIN")
V07 = Pin("GP185_DAP2_DOUT")

i2cPorts = (
(7, SCL, SDA),
(1, SCL_1, SDA_1),
)

# ordered as spiId, sckId, mosiId, misoId
spiPorts = ((K02, J07, K01, K00),)
3 changes: 3 additions & 0 deletions src/board.py
Original file line number Diff line number Diff line change
Expand Up @@ -206,6 +206,9 @@
elif board_id in (ap_board.JETSON_ORIN_NX, ap_board.JETSON_ORIN_NANO):
from adafruit_blinka.board.nvidia.jetson_orin_nx import *

elif board_id == ap_board.JETSON_THOR:
from adafruit_blinka.board.nvidia.jetson_thor import *

elif board_id == ap_board.CLARA_AGX_XAVIER:
from adafruit_blinka.board.nvidia.clara_agx_xavier import *

Expand Down
2 changes: 2 additions & 0 deletions src/digitalio.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,8 @@
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.T264:
from adafruit_blinka.microcontroller.tegra.t264.pin import Pin
elif detector.chip.S905:
from adafruit_blinka.microcontroller.amlogic.s905.pin import Pin
elif detector.chip.S905X:
Expand Down
2 changes: 2 additions & 0 deletions src/microcontroller/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,8 @@ def delay_us(delay):
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.T264:
from adafruit_blinka.microcontroller.tegra.t264 import *
elif chip_id == ap_chip.S905:
from adafruit_blinka.microcontroller.amlogic.s905 import *
elif chip_id == ap_chip.S905X:
Expand Down
2 changes: 2 additions & 0 deletions src/microcontroller/pin.py
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,8 @@
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.T264:
from adafruit_blinka.microcontroller.tegra.t264.pin import *
elif chip_id == ap_chip.S905:
from adafruit_blinka.microcontroller.amlogic.s905.pin import *
elif chip_id == ap_chip.S905X:
Expand Down