From: Andy Date: Thu, 21 Feb 2019 23:34:44 +0000 (-0800) Subject: jetson integration X-Git-Tag: 1.2.5^2~7 X-Git-Url: https://git.ayoreis.com/Adafruit_Blinka-hackapet.git/commitdiff_plain/3da8771ebabccdbcf5d26eb7242864211b7393a8 jetson integration --- diff --git a/src/adafruit_blinka/board/jetson_pin.py b/src/adafruit_blinka/board/jetson_pin.py new file mode 100644 index 0000000..f380ea6 --- /dev/null +++ b/src/adafruit_blinka/board/jetson_pin.py @@ -0,0 +1,44 @@ +"""Pin definitions for Jetson models.""" + +from adafruit_blinka.microcontroller.tegra import pin + +D1 = pin.D1 +D2 = pin.D2 +D3 = pin.D3 +D4 = pin.D4 +D5 = pin.D5 +D6 = pin.D6 +D7 = pin.D7 +D8 = pin.D8 +D9 = pin.D9 +D10 = pin.D10 +D11 = pin.D11 +D12 = pin.D12 +D13 = pin.D13 +D14 = pin.D14 +D15 = pin.D15 +D16 = pin.D16 +D17 = pin.D17 +D18 = pin.D18 +D19 = pin.D19 +D20 = pin.D20 +D21 = pin.D21 +D22 = pin.D22 +D23 = pin.D23 +D24 = pin.D24 +D25 = pin.D25 +D26 = pin.D26 +D27 = pin.D27 +D28 = pin.D28 +D29 = pin.D29 +D30 = pin.D30 +D31 = pin.D31 +D32 = pin.D32 +D33 = pin.D33 +D34 = pin.D34 +D35 = pin.D35 +D36 = pin.D36 +D37 = pin.D37 +D38 = pin.D38 +D39 = pin.D39 +D40 = pin.D40 \ No newline at end of file diff --git a/src/adafruit_blinka/microcontroller/tegra/__init__.py b/src/adafruit_blinka/microcontroller/tegra/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/adafruit_blinka/microcontroller/tegra/pin.py b/src/adafruit_blinka/microcontroller/tegra/pin.py new file mode 100644 index 0000000..a020241 --- /dev/null +++ b/src/adafruit_blinka/microcontroller/tegra/pin.py @@ -0,0 +1,111 @@ +import sys +sys.path.append("/opt/nvidia/jetson-gpio/lib/python") +sys.path.append("/opt/nvidia/jetson-gpio/lib/python/Jetson/GPIO") +import Jetson.GPIO as GPIO +GPIO.setmode(GPIO.BCM) +GPIO.setwarnings(False) # shh! + +# Pins dont exist in CPython so...lets make our own! +class Pin: + 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): + if mode != 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 != 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): + if val != 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") + else: + return GPIO.input(self.id) + + def cleanup(self, channel=None): + if channel == None: + GPIO.cleanup() + elif channel == self: + GPIO.cleanup(self.id) + else: + raise RuntimeError("Invalid pin to cleanup") + +D1 = Pin(1) +D2 = Pin(2) +D3 = Pin(3) +D4 = Pin(4) +D5 = Pin(5) +D6 = Pin(6) +D7 = Pin(7) +D8 = Pin(8) +D9 = Pin(9) +D10 = Pin(10) +D11 = Pin(11) +D12 = Pin(12) +D13 = Pin(13) +D14 = Pin(14) +D15 = Pin(15) +D16 = Pin(16) +D17 = Pin(17) +D18 = Pin(18) +D19 = Pin(19) +D20 = Pin(20) +D21 = Pin(21) +D22 = Pin(22) +D23 = Pin(23) +D24 = Pin(24) +D25 = Pin(25) +D26 = Pin(26) +D27 = Pin(27) +D28 = Pin(28) +D29 = Pin(29) +D30 = Pin(30) +D31 = Pin(31) +D32 = Pin(32) +D33 = Pin(33) +D34 = Pin(34) +D35 = Pin(35) +D36 = Pin(36) +D37 = Pin(37) +D38 = Pin(38) +D39 = Pin(39) +D40 = Pin(40) diff --git a/src/board.py b/src/board.py index a491a0e..f6f1a69 100755 --- a/src/board.py +++ b/src/board.py @@ -61,6 +61,9 @@ elif board_id == ap_board.ORANGE_PI_PC: elif board_id == ap_board.GIANT_BOARD: from adafruit_blinka.board.giantboard import * +elif detector.board.any_jetson_board: + from adafruit_blinka.board.jetson_pin import * + elif "sphinx" in sys.modules: pass diff --git a/src/digitalio.py b/src/digitalio.py index 8a0c324..a64a750 100755 --- a/src/digitalio.py +++ b/src/digitalio.py @@ -19,6 +19,8 @@ elif detector.chip.SUN8I: from adafruit_blinka.microcontroller.allwinner_h3.pin import Pin elif detector.chip.SAMA5: from adafruit_blinka.microcontroller.sama5.pin import Pin +elif detector.chip.TEGRAXXX: + from adafruit_blinka.microcontroller.tegra.pin import Pin elif detector.chip.STM32: from machine import Pin from adafruit_blinka import Enum, ContextManaged @@ -52,7 +54,6 @@ Pull.DOWN = Pull() #Pull.NONE = Pull() - class DigitalInOut(ContextManaged): _pin = None @@ -72,6 +73,9 @@ class DigitalInOut(ContextManaged): def deinit(self): del self._pin + def cleanup(self, channel=None): + Pin.cleanup(self, channel) + @property def direction(self): return self.__direction diff --git a/src/microcontroller/pin.py b/src/microcontroller/pin.py index 9fe007e..8c997a4 100755 --- a/src/microcontroller/pin.py +++ b/src/microcontroller/pin.py @@ -18,5 +18,7 @@ elif chip_id == ap_chip.SUN8I: from adafruit_blinka.microcontroller.allwinner_h3.pin import * elif chip_id == ap_chip.SAMA5: from adafruit_blinka.microcontroller.sama5.pin import * +elif chip_id == ap_chip.TEGRAXXX: + from adafruit_blinka.microcontroller.tegra.pin import * else: raise NotImplementedError("Microcontroller not supported: ", chip_id)