Skip to content

Commit c07c405

Browse files
authored
Merge pull request #1006 from Gautham103/jetson-thor
add support for jetson thor
2 parents d8228db + cc1fe67 commit c07c405

File tree

7 files changed

+168
-0
lines changed

7 files changed

+168
-0
lines changed
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
# SPDX-FileCopyrightText: 2025 Gautham Srinivasan for NVIDIA
2+
#
3+
# SPDX-License-Identifier: MIT
4+
"""Pin definitions for Jetson Thor."""
5+
6+
from adafruit_blinka.microcontroller.tegra.t264 import pin
7+
8+
SDA = pin.SDA
9+
SCL = pin.SCL
10+
SDA_1 = pin.SDA_1
11+
SCL_1 = pin.SCL_1
12+
13+
D4 = pin.L06
14+
D5 = pin.AD01
15+
D6 = pin.AD00
16+
D7 = pin.K03
17+
D8 = pin.K02
18+
D9 = pin.K00
19+
D10 = pin.K01
20+
D11 = pin.J07
21+
D12 = pin.DD04
22+
D13 = pin.AE00
23+
D16 = pin.M05
24+
D17 = pin.M04
25+
D18 = pin.V06
26+
D19 = pin.W01
27+
D20 = pin.W00
28+
D21 = pin.V07
29+
D22 = pin.F07
30+
D23 = pin.DD03
31+
D24 = pin.U07
32+
D25 = pin.U00
33+
D26 = pin.AE01
34+
D27 = pin.M00
35+
36+
CE1 = D7
37+
CE0 = D8
38+
MISO = D9
39+
MOSI = D10
40+
SCLK = D11
41+
SCK = D11

src/adafruit_blinka/microcontroller/tegra/t264/__init__.py

Whitespace-only changes.
Lines changed: 118 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,118 @@
1+
# SPDX-FileCopyrightText: 2025 Gautham Srinivasan for NVIDIA
2+
#
3+
# SPDX-License-Identifier: MIT
4+
5+
"""Tegra T264 pin names"""
6+
import atexit
7+
from Jetson import GPIO
8+
9+
GPIO.setmode(GPIO.TEGRA_SOC)
10+
GPIO.setwarnings(False) # shh!
11+
12+
13+
class Pin:
14+
"""Pins dont exist in CPython so...lets make our own!"""
15+
16+
IN = 0
17+
OUT = 1
18+
LOW = 0
19+
HIGH = 1
20+
PULL_NONE = 0
21+
PULL_UP = 1
22+
PULL_DOWN = 2
23+
24+
id = None
25+
_value = LOW
26+
_mode = IN
27+
28+
def __init__(self, bcm_number):
29+
self.id = bcm_number
30+
31+
def __repr__(self):
32+
return str(self.id)
33+
34+
def __eq__(self, other):
35+
return self.id == other
36+
37+
def init(self, mode=IN, pull=None):
38+
"""Initialize the Pin"""
39+
if mode is not None:
40+
if mode == self.IN:
41+
self._mode = self.IN
42+
GPIO.setup(self.id, GPIO.IN)
43+
elif mode == self.OUT:
44+
self._mode = self.OUT
45+
GPIO.setup(self.id, GPIO.OUT)
46+
else:
47+
raise RuntimeError("Invalid mode for pin: %s" % self.id)
48+
if pull is not None:
49+
if self._mode != self.IN:
50+
raise RuntimeError("Cannot set pull resistor on output")
51+
if pull == self.PULL_UP:
52+
GPIO.setup(self.id, GPIO.IN, pull_up_down=GPIO.PUD_UP)
53+
elif pull == self.PULL_DOWN:
54+
GPIO.setup(self.id, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
55+
else:
56+
raise RuntimeError("Invalid pull for pin: %s" % self.id)
57+
58+
def value(self, val=None):
59+
"""Set or return the Pin Value"""
60+
if val is not None:
61+
if val == self.LOW:
62+
self._value = val
63+
GPIO.output(self.id, val)
64+
return None
65+
if val == self.HIGH:
66+
self._value = val
67+
GPIO.output(self.id, val)
68+
return None
69+
raise RuntimeError("Invalid value for pin")
70+
return GPIO.input(self.id)
71+
72+
# pylint: disable=no-method-argument
73+
@atexit.register
74+
def cleanup():
75+
"""Clean up pins"""
76+
print("Exiting... \nCleaning up pins")
77+
GPIO.cleanup()
78+
79+
# pylint: enable=no-method-argument
80+
81+
82+
# Cannot be used as GPIO
83+
SDA = Pin("GP16_I2C8_DAT") # I2C4
84+
SCL = Pin("GP81_I2C9_CLK")
85+
SDA_1 = Pin("GP14_I2C2_DAT") # I2C2
86+
SCL_1 = Pin("GP13_I2C2_CLK")
87+
88+
# Jetson Thor
89+
L06 = Pin("GP130")
90+
M04 = Pin("GP136_UART9_RTS_N")
91+
V06 = Pin("GP184_DAP2_CLK")
92+
M00 = Pin("GP132_PWM9")
93+
F07 = Pin("GP257_PWM2")
94+
DD03 = Pin("GP21")
95+
U07 = Pin("GP177")
96+
K01 = Pin("GP117_SPI1_MOSI")
97+
K00 = Pin("GP116_SPI1_MISO")
98+
U00 = Pin("GP170")
99+
J07 = Pin("GP115_SPI1_CLK")
100+
K02 = Pin("GP118_SPI1_CS0_N")
101+
K03 = Pin("GP119_SPI1_CS1_N")
102+
AD01 = Pin("GP211_CAN2_DIN")
103+
AD00 = Pin("GP210_CAN2_DOUT")
104+
DD04 = Pin("GGP22_SOCKET_ID_STRA")
105+
AE00 = Pin("GP215_CAN3_DOUT")
106+
W01 = Pin("GP187_DAP2_FS")
107+
M05 = Pin("GP137_UART9_CTS_N")
108+
AE01 = Pin("GP216_CAN3_DIN")
109+
W00 = Pin("GP186_DAP2_DIN")
110+
V07 = Pin("GP185_DAP2_DOUT")
111+
112+
i2cPorts = (
113+
(7, SCL, SDA),
114+
(1, SCL_1, SDA_1),
115+
)
116+
117+
# ordered as spiId, sckId, mosiId, misoId
118+
spiPorts = ((K02, J07, K01, K00),)

src/board.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -209,6 +209,9 @@
209209
elif board_id in (ap_board.JETSON_ORIN_NX, ap_board.JETSON_ORIN_NANO):
210210
from adafruit_blinka.board.nvidia.jetson_orin_nx import *
211211

212+
elif board_id == ap_board.JETSON_THOR:
213+
from adafruit_blinka.board.nvidia.jetson_thor import *
214+
212215
elif board_id == ap_board.CLARA_AGX_XAVIER:
213216
from adafruit_blinka.board.nvidia.clara_agx_xavier import *
214217

src/digitalio.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,8 @@
4747
from adafruit_blinka.microcontroller.tegra.t194.pin import Pin
4848
elif detector.chip.T234:
4949
from adafruit_blinka.microcontroller.tegra.t234.pin import Pin
50+
elif detector.chip.T264:
51+
from adafruit_blinka.microcontroller.tegra.t264.pin import Pin
5052
elif detector.chip.S905:
5153
from adafruit_blinka.microcontroller.amlogic.s905.pin import Pin
5254
elif detector.chip.S905X:

src/microcontroller/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,8 @@ def delay_us(delay):
7777
from adafruit_blinka.microcontroller.tegra.t194 import *
7878
elif chip_id == ap_chip.T234:
7979
from adafruit_blinka.microcontroller.tegra.t234 import *
80+
elif chip_id == ap_chip.T264:
81+
from adafruit_blinka.microcontroller.tegra.t264 import *
8082
elif chip_id == ap_chip.S905:
8183
from adafruit_blinka.microcontroller.amlogic.s905 import *
8284
elif chip_id == ap_chip.S905X:

src/microcontroller/pin.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,8 @@
6666
from adafruit_blinka.microcontroller.tegra.t194.pin import *
6767
elif chip_id == ap_chip.T234:
6868
from adafruit_blinka.microcontroller.tegra.t234.pin import *
69+
elif chip_id == ap_chip.T264:
70+
from adafruit_blinka.microcontroller.tegra.t264.pin import *
6971
elif chip_id == ap_chip.S905:
7072
from adafruit_blinka.microcontroller.amlogic.s905.pin import *
7173
elif chip_id == ap_chip.S905X:

0 commit comments

Comments
 (0)