[ARM] 5429/1: collie: start scoop converton to new api
authorDmitry Baryshkov <dbaryshkov@gmail.com>
Wed, 25 Mar 2009 09:14:25 +0000 (10:14 +0100)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Wed, 25 Mar 2009 10:13:56 +0000 (10:13 +0000)
Start converting scoop gpio access to new API instead of old
deprecated one.

Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
arch/arm/mach-sa1100/collie.c
arch/arm/mach-sa1100/include/mach/collie.h

index 2052eb88c961356fe3417fcce4ea6d8e4c9c9f78..a911f44aa9fcdfd095ac13a9499aa79f6b70ed54 100644 (file)
@@ -25,6 +25,7 @@
 #include <linux/mtd/mtd.h>
 #include <linux/mtd/partitions.h>
 #include <linux/timer.h>
+#include <linux/gpio.h>
 
 #include <mach/hardware.h>
 #include <asm/mach-types.h>
@@ -195,18 +196,34 @@ static struct mtd_partition collie_partitions[] = {
        }
 };
 
+static int collie_flash_init(void)
+{
+       int rc;
+       rc = gpio_request(COLLIE_GPIO_VPEN, "flash Vpp enable");
+       if (rc)
+               return rc;
+
+       rc = gpio_direction_output(COLLIE_GPIO_VPEN, 1);
+       if (rc)
+               gpio_free(COLLIE_GPIO_VPEN);
+
+       return rc;
+}
+
 static void collie_set_vpp(int vpp)
 {
-       write_scoop_reg(&colliescoop_device.dev, SCOOP_GPCR, read_scoop_reg(&colliescoop_device.dev, SCOOP_GPCR) | COLLIE_SCP_VPEN);
-       if (vpp)
-               write_scoop_reg(&colliescoop_device.dev, SCOOP_GPWR, read_scoop_reg(&colliescoop_device.dev, SCOOP_GPWR) | COLLIE_SCP_VPEN);
-       else
-               write_scoop_reg(&colliescoop_device.dev, SCOOP_GPWR, read_scoop_reg(&colliescoop_device.dev, SCOOP_GPWR) & ~COLLIE_SCP_VPEN);
+       gpio_set_value(COLLIE_GPIO_VPEN, vpp);
 }
 
+static void collie_flash_exit(void)
+{
+       gpio_free(COLLIE_GPIO_VPEN);
+}
 static struct flash_platform_data collie_flash_data = {
        .map_name       = "cfi_probe",
+       .init           = collie_flash_init,
        .set_vpp        = collie_set_vpp,
+       .exit           = collie_flash_exit,
        .parts          = collie_partitions,
        .nr_parts       = ARRAY_SIZE(collie_partitions),
 };
index 69e962416e3fc994c6c31b57ea14f650b8a90458..9bc53497d3556ad32c2e68402e5f918d5cbc20f2 100644 (file)
@@ -14,6 +14,7 @@
 #define __ASM_ARCH_COLLIE_H
 
 
+#define COLLIE_SCOOP_GPIO_BASE (GPIO_MAX + 1)
 #define COLLIE_SCP_CHARGE_ON   SCOOP_GPCR_PA11
 #define COLLIE_SCP_DIAG_BOOT1  SCOOP_GPCR_PA12
 #define COLLIE_SCP_DIAG_BOOT2  SCOOP_GPCR_PA13
 #define COLLIE_SCP_MUTE_R      SCOOP_GPCR_PA15
 #define COLLIE_SCP_5VON                SCOOP_GPCR_PA16
 #define COLLIE_SCP_AMP_ON      SCOOP_GPCR_PA17
-#define COLLIE_SCP_VPEN                SCOOP_GPCR_PA18
+#define COLLIE_GPIO_VPEN       (COLLIE_SCOOP_GPIO_BASE + 7)
 #define COLLIE_SCP_LB_VOL_CHG  SCOOP_GPCR_PA19
 
 #define COLLIE_SCOOP_IO_DIR    ( COLLIE_SCP_CHARGE_ON | COLLIE_SCP_MUTE_L | COLLIE_SCP_MUTE_R | \
-                               COLLIE_SCP_5VON | COLLIE_SCP_AMP_ON | COLLIE_SCP_VPEN | \
+                               COLLIE_SCP_5VON | COLLIE_SCP_AMP_ON | \
                                COLLIE_SCP_LB_VOL_CHG )
-#define COLLIE_SCOOP_IO_OUT    ( COLLIE_SCP_MUTE_L | COLLIE_SCP_MUTE_R | COLLIE_SCP_VPEN | \
+#define COLLIE_SCOOP_IO_OUT    ( COLLIE_SCP_MUTE_L | COLLIE_SCP_MUTE_R | \
                                COLLIE_SCP_CHARGE_ON )
 
 /* GPIOs for which the generic definition doesn't say much */