obj-$(CONFIG_MACH_INTELMOTE2) += stargate2.o
--- /dev/null
+++ b/arch/arm/mach-pxa/gumstix-verdex.c
-@@ -0,0 +1,793 @@
+@@ -0,0 +1,794 @@
+/*
+ * linux/arch/arm/mach-pxa/gumstix-verdex.c
+ *
+#include <linux/i2c/tsc2007.h>
+#include <linux/i2c/pxa-i2c.h>
+#include <linux/gpio.h>
++#include <linux/gpio-pxa.h>
+
+#include <asm/setup.h>
+#include <asm/memory.h>
+
+inline void __init gumstix_pcmcia_cpld_clk(void)
+{
-+ GPCR(GPIO_GUMSTIX_nPOE) = GPIO_bit(GPIO_GUMSTIX_nPOE);
-+ GPSR(GPIO_GUMSTIX_nPOE) = GPIO_bit(GPIO_GUMSTIX_nPOE);
++ gpio_set_value(GPIO_GUMSTIX_nPOE, 0);
++ gpio_set_value(GPIO_GUMSTIX_nPOE, 1);
+}
+
+inline unsigned char __init gumstix_pcmcia_cpld_read_bits(int bits)
+ unsigned int shift = 0;
+ while(bits--)
+ {
-+ result |= !!(GPLR(GPIO_GUMSTIX_nCD_0) & GPIO_bit(GPIO_GUMSTIX_nCD_0)) << shift;
++ result |= !!(gpio_get_value(GPIO_GUMSTIX_nCD_0) & GPIO_bit(GPIO_GUMSTIX_nCD_0)) << shift;
+ shift ++;
+ gumstix_pcmcia_cpld_clk();
+ }
+ }
+
+ // Setup the shift register
-+ GPSR(GPIO_GUMSTIX_nPCE_1) = GPIO_bit(GPIO_GUMSTIX_nPCE_1);
-+ GPCR(GPIO_GUMSTIX_nPCE_2) = GPIO_bit(GPIO_GUMSTIX_nPCE_2);
++ gpio_set_value(GPIO_GUMSTIX_nPCE_1, 1);
++ gpio_set_value(GPIO_GUMSTIX_nPCE_2, 0);
+
+ // Tick the clock to program the shift register
+ gumstix_pcmcia_cpld_clk();
+
+ // Now set shift register into read mode
-+ GPCR(GPIO_GUMSTIX_nPCE_1) = GPIO_bit(GPIO_GUMSTIX_nPCE_1);
-+ GPSR(GPIO_GUMSTIX_nPCE_2) = GPIO_bit(GPIO_GUMSTIX_nPCE_2);
++ gpio_set_value(GPIO_GUMSTIX_nPCE_1, 0);
++ gpio_set_value(GPIO_GUMSTIX_nPCE_2, 1);
+
+ // We can read the bits now -- 0xC2 means "Dual compact flash"
+ if(gumstix_pcmcia_cpld_read_bits(8) != 0xC2)
+ if(on_or_off) {
+ gpio_direction_input(17);
+ } else {
-+ GPCR(17) = GPIO_bit(17);
++ gpio_set_value(17, 0);
+ gpio_direction_output(17, 0);
-+ GPCR(17) = GPIO_bit(17);
++ gpio_set_value(17, 0);
+ }
+
+ return;
+#ifdef CONFIG_FB_PXA_SHARP_LQ043_PSP
+ /* DISP must be always high while screen is on */
+ gpio_direction_output(GPIO77, 0);
-+ GPSR(GPIO77) = GPIO_bit(GPIO77);
++ gpio_set_value(GPIO77, 1);
+#endif
+ verdex_udc_init();
+ verdex_mmc_init();
/* usb state change */
#define GUMSTIX_USB_INTR_IRQ PXA_GPIO_TO_IRQ(GPIO_GUMSTIX_USB_GPIOn)
-@@ -42,48 +54,135 @@ has detected a cable insertion; driven l
+@@ -42,48 +54,136 @@ has detected a cable insertion; driven l
* ETH_RST provides a hardware reset line to the ethernet chip
* ETH is the IRQ line in from the ethernet chip to the PXA
*/
-#define GPIO_GUMSTIX_ETH1 27
#define GPIO_GUMSTIX_ETH1_MD (GPIO_GUMSTIX_ETH1 | GPIO_IN)
-#define GUMSTIX_ETH1_IRQ PXA_GPIO_TO_IRQ(GPIO_GUMSTIX_ETH1)
+-
+-/* CF reset line */
+-#define GPIO8_RESET 8
+#define GUMSTIX_ETH0_IRQ PXA_GPIO_TO_IRQ(GPIO_GUMSTIX_ETH0)
+#define GUMSTIX_ETH1_IRQ PXA_GPIO_TO_IRQ(GPIO_GUMSTIX_ETH1)
--/* CF reset line */
--#define GPIO8_RESET 8
--
-/* CF slot 0 */
-#define GPIO4_nBVD1 4
-#define GPIO4_nSTSCHG GPIO4_nBVD1
+#endif
+
+#define GPIO_GUMSTIX_PRDY_nBSY_0_OLD GPIO109_PRDY_nBSY_0
++#define GUMSTIX_S0_PRDY_nBSY_OLD_IRQ PXA_GPIO_TO_IRQ(GPIO109_PRDY_nBSY_0)
+
+#define GUMSTIX_S0_nSTSCHG_IRQ PXA_GPIO_TO_IRQ(GPIO_GUMSTIX_nSTSCHG_0)
+#define GUMSTIX_S0_nCD_IRQ PXA_GPIO_TO_IRQ(GPIO_GUMSTIX_nCD_0)
-#define GPIO18_nSTSCHG GPIO18_nBVD1
-#define GPIO36_nCD 36
-#define GPIO27_PRDY_nBSY 27
+-#define GUMSTIX_S1_nSTSCHG_IRQ PXA_GPIO_TO_IRQ(GPIO18_nSTSCHG)
+-#define GUMSTIX_S1_nCD_IRQ PXA_GPIO_TO_IRQ(GPIO36_nCD)
+-#define GUMSTIX_S1_PRDY_nBSY_IRQ PXA_GPIO_TO_IRQ(GPIO27_PRDY_nBSY)
+-
+-/* CF GPIO line modes */
+-#define GPIO4_nSTSCHG_MD (GPIO4_nSTSCHG | GPIO_IN)
+-#define GPIO8_RESET_MD (GPIO8_RESET | GPIO_OUT)
+-#define GPIO11_nCD_MD (GPIO11_nCD | GPIO_IN)
+-#define GPIO18_nSTSCHG_MD (GPIO18_nSTSCHG | GPIO_IN)
+-#define GPIO26_PRDY_nBSY_MD (GPIO26_PRDY_nBSY | GPIO_IN)
+-#define GPIO27_PRDY_nBSY_MD (GPIO27_PRDY_nBSY | GPIO_IN)
+-#define GPIO36_nCD_MD (GPIO36_nCD | GPIO_IN)
+#define GPIO18_nBVD1_1 18
+#define GPIO18_nSTSCHG_1 GPIO18_nBVD1_1
+#define GPIO36_nCD_1 36
+#define GPIO_GUMSTIX_nCD_1 GPIO36_nCD_1
+#define GPIO_GUMSTIX_PRDY_nBSY_1 GPIO27_PRDY_nBSY_1
+
- #define GUMSTIX_S1_nSTSCHG_IRQ PXA_GPIO_TO_IRQ(GPIO18_nSTSCHG)
- #define GUMSTIX_S1_nCD_IRQ PXA_GPIO_TO_IRQ(GPIO36_nCD)
- #define GUMSTIX_S1_PRDY_nBSY_IRQ PXA_GPIO_TO_IRQ(GPIO27_PRDY_nBSY)
-
--/* CF GPIO line modes */
--#define GPIO4_nSTSCHG_MD (GPIO4_nSTSCHG | GPIO_IN)
--#define GPIO8_RESET_MD (GPIO8_RESET | GPIO_OUT)
--#define GPIO11_nCD_MD (GPIO11_nCD | GPIO_IN)
--#define GPIO18_nSTSCHG_MD (GPIO18_nSTSCHG | GPIO_IN)
--#define GPIO26_PRDY_nBSY_MD (GPIO26_PRDY_nBSY | GPIO_IN)
--#define GPIO27_PRDY_nBSY_MD (GPIO27_PRDY_nBSY | GPIO_IN)
--#define GPIO36_nCD_MD (GPIO36_nCD | GPIO_IN)
++#define GUMSTIX_S1_nSTSCHG_IRQ PXA_GPIO_TO_IRQ(GPIO18_nSTSCHG_1)
++#define GUMSTIX_S1_nCD_IRQ PXA_GPIO_TO_IRQ(GPIO36_nCD_1)
++#define GUMSTIX_S1_PRDY_nBSY_IRQ PXA_GPIO_TO_IRQ(GPIO27_PRDY_nBSY_1)
++
+/* CF GPIO line modes - correspond to mfp-pxa2[57]x.h */
+#define GPIO_GUMSTIX_CF_RESET_MD (GPIO_GUMSTIX_CF_RESET | GPIO_OUT)
+#define GPIO_GUMSTIX_CF_OLD_RESET_MD (GPIO_GUMSTIX_CF_OLD_RESET | GPIO_OUT)
obj-$(CONFIG_PCMCIA_XXS1500) += xxs1500_ss.o
--- /dev/null
+++ b/drivers/pcmcia/pxa2xx_gumstix.c
-@@ -0,0 +1,194 @@
+@@ -0,0 +1,195 @@
+/*
+ * linux/drivers/pcmcia/pxa2xx_gumstix.c
+ *
+#include <linux/delay.h>
+#include <linux/platform_device.h>
+
++#include <linux/gpio-pxa.h>
++
+#include <pcmcia/ss.h>
+
+#include <mach/hardware.h>
+#include <asm/mach-types.h>
+
-+#ifdef CONFIG_MACH_GUMSTIX_VERDEX
-+#include <mach/pxa27x.h>
-+#else
+#include <mach/pxa27x.h>
-+#endif
+
+#include <asm/io.h>
+#include <mach/gpio.h>
+
+#define ARRAY_AND_SIZE(x) (x), ARRAY_SIZE(x)
+
++#define BANK_OFF(n) (((n) < 3) ? (n) << 2 : 0x100 + (((n) - 3) << 2))
++#define GPLR(x) __REG2(0x40E00000, BANK_OFF((x) >> 5))
++
+static struct pcmcia_irqs gumstix_pcmcia_irqs0[] = {
+ { 0, GUMSTIX_S0_nCD_IRQ, "CF0 nCD" },
+ { 0, GUMSTIX_S0_nSTSCHG_IRQ, "CF0 nSTSCHG" },
+/* Note: The verdex_pcmcia_pin_config is moved to gumstix_verdex.c in order to use mfp_pxa2xx_config
+ for board-specific pin configuration instead of the old deprecated pxa_gpio_mode function. Thus,
+ only the IRQ init is still needed to be done here. */
-+ skt->irq = (skt->nr == 0) ? ((net_cf_vx_mode == 0) ? GUMSTIX_S0_PRDY_nBSY_IRQ : GUMSTIX_S0_PRDY_nBSY_OLD_IRQ) : GUMSTIX_S1_PRDY_nBSY_IRQ;
++ skt->socket.pci_irq = (skt->nr == 0) ? ((net_cf_vx_mode == 0) ? GUMSTIX_S0_PRDY_nBSY_IRQ : GUMSTIX_S0_PRDY_nBSY_OLD_IRQ) : GUMSTIX_S1_PRDY_nBSY_IRQ;
+
+ return (skt->nr == 0) ? soc_pcmcia_request_irqs(skt, gumstix_pcmcia_irqs0, ARRAY_SIZE(gumstix_pcmcia_irqs0)) :
+ soc_pcmcia_request_irqs(skt, gumstix_pcmcia_irqs1, ARRAY_SIZE(gumstix_pcmcia_irqs1));
+ prdy_nbsy = GPIO_GUMSTIX_PRDY_nBSY_1;
+ nbvd1 = GPIO_GUMSTIX_nBVD1_1;
+ }
-+ state->detect = !(GPLR(cd) & GPIO_bit(cd));
-+ state->ready = !!(GPLR(prdy_nbsy) & GPIO_bit(prdy_nbsy));
-+ state->bvd1 = !!(GPLR(nbvd1) & GPIO_bit(nbvd1));
++ state->detect = !!gpio_get_value(cd);
++ state->ready = !!gpio_get_value(prdy_nbsy);
++ state->bvd1 = !!gpio_get_value(nbvd1);
+ state->bvd2 = 1;
+ state->vs_3v = 0;
+ state->vs_Xv = 0;