diff -r 4e814c1899b6 platform/pxa/pistachio/include/intctrl.h
--- a/platform/pxa/pistachio/include/intctrl.h	Wed Apr 08 15:37:40 2009 +0200
+++ b/platform/pxa/pistachio/include/intctrl.h	Wed Apr 22 20:22:40 2009 +0200
@@ -102,9 +102,15 @@
 #define PXA_GRER0       (*(volatile word_t *)(PXA_GPIO + 0x30))   /* GPIO rising edge 0 */
 #define PXA_GRER1       (*(volatile word_t *)(PXA_GPIO + 0x34))   /* GPIO rising edge 1 */
 #define PXA_GRER2       (*(volatile word_t *)(PXA_GPIO + 0x38))   /* GPIO rising edge 2 */
+#if defined(CONFIG_SUBPLAT_PXA270)
+#define PXA_GRER3       (*(volatile word_t *)(PXA_GPIO + 0x130))   /* GPIO rising edge 3 */
+#endif
 
 #define PXA_GFER0       (*(volatile word_t *)(PXA_GPIO + 0x3C))   /* GPIO falling edge 0 */
 #define PXA_GFER1       (*(volatile word_t *)(PXA_GPIO + 0x40))   /* GPIO falling edge 1 */
 #define PXA_GFER2       (*(volatile word_t *)(PXA_GPIO + 0x44))   /* GPIO falling edge 2 */
+#if defined(CONFIG_SUBPLAT_PXA270)
+#define PXA_GFER3       (*(volatile word_t *)(PXA_GPIO + 0x13C))   /* GPIO falling edge 3 */
+#endif
 
 #endif /*__PLATFORM__PXA__INTCTRL_H__ */
diff -r 4e814c1899b6 platform/pxa/pistachio/include/interrupt.h
--- a/platform/pxa/pistachio/include/interrupt.h	Wed Apr 08 15:37:40 2009 +0200
+++ b/platform/pxa/pistachio/include/interrupt.h	Wed Apr 22 20:22:40 2009 +0200
@@ -70,7 +70,12 @@
 #define PMN0_IRQ_ENABLE   (1UL << 4)
 
 #define PRIMARY_IRQS 32
+#if defined(CONFIG_SUBPLAT_PXA255)
 #define GPIO_IRQS (85 - 2) /* The first two IRQs have level one interrupts */
+#elif defined(CONFIG_SUBPLAT_PXA270)
+#define GPIO_IRQS (121 - 2) /* The first two IRQs have level one interrupts; 
+							   PXA270 bounds 119; PXA271 and PXA272 bounds all 121 */
+#endif
 #define GPIO_IRQ 10
 #define IRQS (PRIMARY_IRQS + GPIO_IRQS)
 
diff -r 4e814c1899b6 platform/pxa/pistachio/include/timer.h
--- a/platform/pxa/pistachio/include/timer.h	Wed Apr 08 15:37:40 2009 +0200
+++ b/platform/pxa/pistachio/include/timer.h	Wed Apr 22 20:22:40 2009 +0200
@@ -80,7 +80,7 @@ static const int TIMER_TICK_LENGTH = 500
 #error Invalid sub-architecture
 #endif
 
-#if defined(CONFIG_PXA270)
+#if defined(CONFIG_SUBPLAT_PXA270)
 /* CLKCFG Modes */
 #define CLKCFG_B        (1<<3)  /* Fast Bus Mode        */
 #define CLKCFG_HT       (1<<2)  /* Half Turbo           */
diff -r 4e814c1899b6 platform/pxa/pistachio/src/interrupt.c
--- a/platform/pxa/pistachio/src/interrupt.c	Wed Apr 08 15:37:40 2009 +0200
+++ b/platform/pxa/pistachio/src/interrupt.c	Wed Apr 22 20:22:40 2009 +0200
@@ -78,7 +78,7 @@ addr_t xscale_int_va;
 addr_t xscale_int_va;
 addr_t xscale_gpio_va;
 
-#if !defined(CONFIG_SUBPLAT_PXA255)
+#if !defined(CONFIG_SUBPLAT_PXA255) && !defined(CONFIG_SUBPLAT_PXA270)
 #error "Unsupported subplatform."
 #endif
 
@@ -107,13 +107,28 @@ soc_unmask_irq(word_t irq)
         /* XXX This is a GPIO IRQ and we should unmask GPIO set */
         XSCALE_INT_ICMR |= (1 << GPIO_IRQ);
 
+		/* XXX unmask falling edge detect too. 
+		 * smc911x on gumstix uses falling edge interrupts */
         if (idx == 0) {
             PXA_GRER0 = (1UL << gpio);
+            PXA_GFER0 = (1UL << gpio);
         } else if (idx == 1) {
             PXA_GRER1 = (1UL << gpio);
-        } else {
+            PXA_GFER1 = (1UL << gpio);
+        } else
+#if defined(CONFIG_SUBPLAT_PXA270)
+			if (idx == 2) 
+#endif
+		{
             PXA_GRER2 = (1UL << gpio);
+            PXA_GFER2 = (1UL << gpio);
         }
+#if defined(CONFIG_SUBPLAT_PXA270)
+		else {
+            PXA_GRER3 = (1UL << gpio);
+            PXA_GFER3 = (1UL << gpio);
+		}
+#endif
     }
 }
 
@@ -147,6 +162,15 @@ pxa_gpio_irq(void)
 
         return 64 + irq - 2;
     }
+
+#if defined(CONFIG_SUBPLAT_PXA270)
+    mask = PXA_GEDR3;
+    if (mask) {
+        irq = msb(mask);
+        PXA_GEDR3 = (1UL << irq);
+        return 96 + irq - 2;
+    }
+#endif
 
     return -1;
 }
diff -r 4e814c1899b6 platform/pxa/tools/machines.py
--- a/platform/pxa/tools/machines.py	Wed Apr 08 15:37:40 2009 +0200
+++ b/platform/pxa/tools/machines.py	Wed Apr 22 20:22:40 2009 +0200
@@ -77,7 +77,8 @@ class gumstix(pxa):
     cs_driver = "pxa250_cs"
     uart = "FFUART"
     serial_driver = "uart_8250"
-    subplatform = "pxa255"
+#    subplatform = "pxa255"
+    subplatform = "pxa270"
     drivers = [timer_driver] + pxa.drivers
 
     device_core = "gumstix"
@@ -91,10 +92,12 @@ class gumstix(pxa):
     interrupt_rtc = [31]
     memory_irq_controller = [Region(0x40d00000, 0x40d01000, "all", "uncached")]
     memory_gpio = [Region(0x40e00000, 0x40e01000, "all", "uncached")]
-    interrupt_gpio = [8,9] + range(32,32+(85-2))
+    interrupt_gpio = [8,9] + range(32,32+(121 - 2))
     memory_cs = [Region(0x00000000, 0x04000000, "all", "uncached"),
                  Region(0x04000000, 0x08000000, "all", "uncached"),
-                 Region(0x08000000, 0x0c000000, "all", "uncached")]
+                 Region(0x08000000, 0x0c000000, "all", "uncached"),
+                 Region(0x0c000000, 0x10000000, "all", "uncached"),
+                 Region(0x10000000, 0x14000000, "all", "uncached")]
     pmu_irq = [12]
     v2_drivers = [  
                     ("test_device", "vtest", [], [1,3]),
