]> Repositories - Adafruit_Blinka-hackapet.git/commitdiff
jetson integration
authorAndy <antan@nvidia.com>
Thu, 21 Feb 2019 23:34:44 +0000 (15:34 -0800)
committerAndy <antan@nvidia.com>
Thu, 21 Feb 2019 23:34:44 +0000 (15:34 -0800)
src/adafruit_blinka/board/jetson_pin.py [new file with mode: 0644]
src/adafruit_blinka/microcontroller/tegra/__init__.py [new file with mode: 0644]
src/adafruit_blinka/microcontroller/tegra/pin.py [new file with mode: 0644]
src/board.py
src/digitalio.py
src/microcontroller/pin.py

diff --git a/src/adafruit_blinka/board/jetson_pin.py b/src/adafruit_blinka/board/jetson_pin.py
new file mode 100644 (file)
index 0000000..f380ea6
--- /dev/null
@@ -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 (file)
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 (file)
index 0000000..a020241
--- /dev/null
@@ -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)
index a491a0ef13dc89f7d35de85460db3867115d59bd..f6f1a69d8a5847fa248c59e8a3829d619acdd73c 100755 (executable)
@@ -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 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
 
 elif "sphinx" in sys.modules:
     pass
 
index 8a0c324694de63f41033392a57ea22ae64ffeb61..a64a750ef90bc8b72a047fcba6a0013942295b6f 100755 (executable)
@@ -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
     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
 elif detector.chip.STM32:
     from machine import Pin
 from adafruit_blinka import Enum, ContextManaged
@@ -52,7 +54,6 @@ Pull.DOWN = Pull()
 
 #Pull.NONE = Pull()
 
 
 #Pull.NONE = Pull()
 
-
 class DigitalInOut(ContextManaged):
     _pin = None
 
 class DigitalInOut(ContextManaged):
     _pin = None
 
@@ -72,6 +73,9 @@ class DigitalInOut(ContextManaged):
     def deinit(self):
         del self._pin
 
     def deinit(self):
         del self._pin
 
+    def cleanup(self, channel=None):
+        Pin.cleanup(self, channel)
+
     @property
     def direction(self):
         return self.__direction
     @property
     def direction(self):
         return self.__direction
index 9fe007e3b6dae5c8e282f75a2d9fb3344161e739..8c997a4c642680f34b2193ff193e9429fded68b3 100755 (executable)
@@ -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 *
     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)
 else:
     raise NotImplementedError("Microcontroller not supported: ", chip_id)