Port-arm archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

BeagleBone (AM335x) gpio




Updated Patches to get gpio working on the beaglebone.

What works: Basic gpio using the gpioctl command.
What does not yet work: gpio pin interrupts.


Index: BEAGLEBONE
===================================================================
RCS file: /cvsroot/src/sys/arch/evbarm/conf/BEAGLEBONE,v
retrieving revision 1.20
diff -u -r1.20 BEAGLEBONE
--- BEAGLEBONE  16 Aug 2013 02:21:53 -0000      1.20
+++ BEAGLEBONE  5 May 2014 05:41:00 -0000
@@ -207,14 +207,31 @@
 #options SDMMC_DEBUG
 #options SDHC_DEBUG

+
 # General-purpose I/O pins
-# XXX These are the GPIO v2 in the AM335x, not v1 as in the OMAP35xx.
-#omapgpio0 at obio0 addr 0x44e07000 size 0x1000 intrbase 128 intr 29 -#omapgpio1 at obio0 addr 0x4804c000 size 0x1000 intrbase 160 intr 30 -#omapgpio2 at obio0 addr 0x481ac000 size 0x1000 intrbase 192 intr 32 -#omapgpio3 at obio0 addr 0x481ae000 size 0x1000 intrbase 224 intr 32
+#
+#omapgpio0 at obio0 addr 0x44e07000 size 0x1000 intrbase 128 intr 96
+#omapgpio1 at obio0 addr 0x4804c000 size 0x1000 intrbase 160 intr 98
+#omapgpio2 at obio0 addr 0x481ac000 size 0x1000 intrbase 192 intr 32
+#omapgpio3 at obio0 addr 0x481ae000 size 0x1000 intrbase 224 intr 62
+
+# GPIO interrupts are not yet working
+# Disable them by setting the interrupt base to -1
+#
+omapgpio0 at obio0 addr 0x44e07000 size 0x1000 intrbase -1 intr 96
+omapgpio1 at obio0 addr 0x4804c000 size 0x1000 intrbase -1 intr 98
+omapgpio2 at obio0 addr 0x481ac000 size 0x1000 intrbase -1 intr 32
+omapgpio3 at obio0 addr 0x481ae000 size 0x1000 intrbase -1 intr 62
+
+# Nail down the ports to specific device files
+#
+gpio0          at omapgpio0
+gpio1          at omapgpio1
+gpio2          at omapgpio2
+gpio3          at omapgpio3
+
+#gpio*         at omapgpio?

-#gpio*         at omapgpio?

 # I2C Controller
 tiiic0         at obio0 addr 0x44e0b000 size 0x1000 intr 70



Index: omap2_gpio.c
===================================================================
RCS file: /cvsroot/src/sys/arch/arm/omap/omap2_gpio.c,v
retrieving revision 1.16
diff -u -r1.16 omap2_gpio.c
--- omap2_gpio.c        15 Jun 2013 21:59:37 -0000      1.16
+++ omap2_gpio.c        5 May 2014 05:46:33 -0000
@@ -171,7 +171,7 @@
         * Make sure the irq isn't enabled and not asserting.
         */
        gpio->gpio_enable_mask &= ~irq_mask;
-       GPIO_WRITE(gpio, GPIO_IRQENABLE1, gpio->gpio_enable_mask);
+       GPIO_WRITE(gpio, GPIO_CLEARIRQENABLE1, irq_mask);
        GPIO_WRITE(gpio, GPIO_IRQSTATUS1, irq_mask);

        /*


Index: omap2_reg.h
===================================================================
RCS file: /cvsroot/src/sys/arch/arm/omap/omap2_reg.h,v
retrieving revision 1.27
diff -u -r1.27 omap2_reg.h
--- omap2_reg.h 4 Apr 2014 21:33:19 -0000       1.27
+++ omap2_reg.h 5 May 2014 05:46:03 -0000
@@ -767,6 +767,46 @@
 #define        GPIO5_BASE_TI_DM37XX            0x49056000
 #define        GPIO6_BASE_TI_DM37XX            0x49058000

+#ifdef TI_AM335X
+#define GPIO_REVISION                  0x000
+#define GPIO_SYSCONFIG                 0x010
+#define GPIO_EOI                               0x020
+#define GPIO_IRQSTATUS_RAW_0   0x024
+#define GPIO_IRQSTATUS_RAW_1   0x028
+#define GPIO_IRQSTATUS_0               0x02c
+#define GPIO_IRQSTATUS_1               0x030
+#define GPIO_IRQSTATUS_SET_0   0x034
+#define GPIO_IRQSTATUS_SET_1   0x038
+#define GPIO_IRQSTATUS_CLR_0   0x03c
+#define GPIO_IRQSTATUS_CLR_1   0x040
+#define GPIO_IRQWAKEN_0                        0x044
+#define GPIO_IRQWAKEN_1                        0x048
+#define GPIO_SYSSTATUS                 0x114
+#define GPIO_CTRL                              0x130
+#define GPIO_OE                                        0x134
+#define GPIO_DATAIN                            0x138
+#define GPIO_DATAOUT                   0x13c
+#define GPIO_LEVELDETECT0              0x140
+#define GPIO_LEVELDETECT1              0x144
+#define GPIO_RISINGDETECT              0x148
+#define GPIO_FALLINGDETECT             0x14c
+#define GPIO_DEBOUNCENABLE             0x150
+#define GPIO_DEBOUNINGTIME             0x154
+#define GPIO_CLEARDATAOUT              0x190
+#define GPIO_SETDATAOUT                        0x194
+
+/*
+ * Translate some register names for generic omap gpio driver
+ */
+
+#define GPIO_IRQSTATUS1                        GPIO_IRQSTATUS_0
+#define GPIO_IRQSTATUS2                        GPIO_IRQSTATUS_1
+
+#define GPIO_SETIRQENABLE1             GPIO_IRQSTATUS_SET_0
+#define GPIO_SETIRQENABLE2             GPIO_IRQSTATUS_SET_1
+#define GPIO_CLEARIRQENABLE1   GPIO_IRQSTATUS_CLR_0
+#define GPIO_CLEARIRQENABLE2   GPIO_IRQSTATUS_CLR_1
+#else
 #define        GPIO_IRQSTATUS1                 0x018
 #define        GPIO_IRQENABLE1                 0x01c
 #define        GPIO_WAKEUPENABLE               0x020
@@ -790,6 +830,7 @@
 #define        GPIO_SETWKUENA                  0x084
 #define        GPIO_CLEARDATAOUT               0x090
 #define        GPIO_SETDATAOUT                 0x094
+#endif

 /*
  * I2C




Home | Main Index | Thread Index | Old Index