[ARM] 4960/1: Rewrite tosa pin configuration to use MFP tables.
Dmitry Baryshkov [Thu, 10 Apr 2008 10:00:32 +0000 (11:00 +0100)]
Clean up all pins configuration to use currently proposed MFP table
schema.

Signed-off-by: Dmitry Baryshkov <dbaryshkov@gmail.com>
Acked-by: eric miao <eric.miao@marvell.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>

arch/arm/mach-pxa/tosa.c

index d427d87..7d35f9e 100644 (file)
@@ -32,7 +32,7 @@
 #include <asm/system.h>
 #include <asm/arch/pxa-regs.h>
 #include <asm/arch/pxa2xx-regs.h>
-#include <asm/arch/pxa2xx-gpio.h>
+#include <asm/arch/mfp-pxa25x.h>
 #include <asm/arch/irda.h>
 #include <asm/arch/mmc.h>
 #include <asm/arch/udc.h>
 #include "generic.h"
 #include "devices.h"
 
+static unsigned long tosa_pin_config[] = {
+       GPIO78_nCS_2, /* Scoop */
+       GPIO80_nCS_4, /* tg6393xb */
+       GPIO33_nCS_5, /* Scoop */
+
+       // GPIO76 CARD_VCC_ON1
+
+       GPIO19_GPIO, /* Reset out */
+       GPIO1_RST | WAKEUP_ON_EDGE_FALL,
+
+       GPIO0_GPIO | WAKEUP_ON_EDGE_FALL, /* WAKE_UP */
+       GPIO2_GPIO | WAKEUP_ON_EDGE_BOTH, /* AC_IN */
+       GPIO3_GPIO | WAKEUP_ON_EDGE_FALL, /* RECORD */
+       GPIO4_GPIO | WAKEUP_ON_EDGE_FALL, /* SYNC */
+       GPIO20_GPIO, /* EAR_IN */
+       GPIO22_GPIO, /* On */
+
+       GPIO5_GPIO, /* USB_IN */
+       GPIO32_GPIO, /* Pen IRQ */
+
+       GPIO7_GPIO, /* Jacket Detect */
+       GPIO14_GPIO, /* BAT0_CRG */
+       GPIO12_GPIO, /* BAT1_CRG */
+       GPIO17_GPIO, /* BAT0_LOW */
+       GPIO84_GPIO, /* BAT1_LOW */
+       GPIO38_GPIO, /* BAT_LOCK */
+
+       GPIO11_3_6MHz,
+       GPIO15_GPIO, /* TC6393XB IRQ */
+       GPIO18_RDY,
+       GPIO27_GPIO, /* LCD Sync */
+
+       /* MMC */
+       GPIO6_MMC_CLK,
+       GPIO8_MMC_CS0,
+       GPIO9_GPIO, /* Detect */
+       // GPIO10 nSD_INT
+
+       /* CF */
+       GPIO13_GPIO, /* CD_IRQ */
+       GPIO21_GPIO, /* Main Slot IRQ */
+       GPIO36_GPIO, /* Jacket Slot IRQ */
+       GPIO48_nPOE,
+       GPIO49_nPWE,
+       GPIO50_nPIOR,
+       GPIO51_nPIOW,
+       GPIO52_nPCE_1,
+       GPIO53_nPCE_2,
+       GPIO54_nPSKTSEL,
+       GPIO55_nPREG,
+       GPIO56_nPWAIT,
+       GPIO57_nIOIS16,
+
+       /* AC97 */
+       GPIO31_AC97_SYNC,
+       GPIO30_AC97_SDATA_OUT,
+       GPIO28_AC97_BITCLK,
+       GPIO29_AC97_SDATA_IN_0,
+       // GPIO79 nAUD_IRQ
+
+       /* FFUART */
+       GPIO34_FFUART_RXD,
+       GPIO35_FFUART_CTS,
+       GPIO37_FFUART_DSR,
+       GPIO39_FFUART_TXD,
+       GPIO40_FFUART_DTR,
+       GPIO41_FFUART_RTS,
+
+       /* BTUART */
+       GPIO42_BTUART_RXD,
+       GPIO43_BTUART_TXD,
+       GPIO44_BTUART_CTS,
+       GPIO45_BTUART_RTS,
+
+       /* IrDA */
+       GPIO46_STUART_RXD,
+       GPIO47_STUART_TXD,
+
+       /* Keybd */
+       GPIO58_GPIO,
+       GPIO59_GPIO,
+       GPIO60_GPIO,
+       GPIO61_GPIO,
+       GPIO62_GPIO,
+       GPIO63_GPIO,
+       GPIO64_GPIO,
+       GPIO65_GPIO,
+       GPIO66_GPIO,
+       GPIO67_GPIO,
+       GPIO68_GPIO,
+       GPIO69_GPIO,
+       GPIO70_GPIO,
+       GPIO71_GPIO,
+       GPIO72_GPIO,
+       GPIO73_GPIO,
+       GPIO74_GPIO,
+       GPIO75_GPIO,
+
+       /* SPI */
+       GPIO81_SSP2_CLK_OUT,
+       GPIO82_SSP2_FRM_OUT,
+       GPIO83_SSP2_TXD,
+};
+
 /*
  * SCOOP Device
  */
@@ -119,31 +223,9 @@ static struct scoop_pcmcia_dev tosa_pcmcia_scoop[] = {
 },
 };
 
-static void tosa_pcmcia_init(void)
-{
-       /* Setup default state of GPIO outputs
-          before we enable them as outputs. */
-       GPSR(GPIO48_nPOE) = GPIO_bit(GPIO48_nPOE) |
-               GPIO_bit(GPIO49_nPWE) | GPIO_bit(GPIO50_nPIOR) |
-               GPIO_bit(GPIO51_nPIOW) | GPIO_bit(GPIO52_nPCE_1) |
-               GPIO_bit(GPIO53_nPCE_2);
-
-       pxa_gpio_mode(GPIO48_nPOE_MD);
-       pxa_gpio_mode(GPIO49_nPWE_MD);
-       pxa_gpio_mode(GPIO50_nPIOR_MD);
-       pxa_gpio_mode(GPIO51_nPIOW_MD);
-       pxa_gpio_mode(GPIO55_nPREG_MD);
-       pxa_gpio_mode(GPIO56_nPWAIT_MD);
-       pxa_gpio_mode(GPIO57_nIOIS16_MD);
-       pxa_gpio_mode(GPIO52_nPCE_1_MD);
-       pxa_gpio_mode(GPIO53_nPCE_2_MD);
-       pxa_gpio_mode(GPIO54_pSKTSEL_MD);
-}
-
 static struct scoop_pcmcia_config tosa_pcmcia_config = {
        .devs         = &tosa_pcmcia_scoop[0],
        .num_devs     = 2,
-       .pcmcia_init  = tosa_pcmcia_init,
 };
 
 /*
@@ -176,11 +258,6 @@ static int tosa_mci_init(struct device *dev, irq_handler_t tosa_detect_int, void
 {
        int err;
 
-       /* setup GPIO for PXA25x MMC controller */
-       pxa_gpio_mode(GPIO6_MMCCLK_MD);
-       pxa_gpio_mode(GPIO8_MMCCS0_MD);
-       pxa_gpio_mode(TOSA_GPIO_nSD_DETECT | GPIO_IN);
-
        tosa_mci_platform_data.detect_delay = msecs_to_jiffies(250);
 
        err = request_irq(TOSA_IRQ_GPIO_nSD_DETECT, tosa_detect_int,
@@ -228,10 +305,7 @@ static void tosa_irda_transceiver_mode(struct device *dev, int mode)
 {
        if (mode & IR_OFF) {
                reset_scoop_gpio(&tosascoop_device.dev,TOSA_SCOOP_IR_POWERDWN);
-               pxa_gpio_mode(GPIO47_STTXD|GPIO_DFLT_LOW);
-               pxa_gpio_mode(GPIO47_STTXD|GPIO_OUT);
        } else {
-               pxa_gpio_mode(GPIO47_STTXD_MD);
                set_scoop_gpio(&tosascoop_device.dev,TOSA_SCOOP_IR_POWERDWN);
        }
 }
@@ -327,20 +401,13 @@ static void tosa_restart(char mode)
 
 static void __init tosa_init(void)
 {
+       pxa2xx_mfp_config(ARRAY_AND_SIZE(tosa_pin_config));
+       gpio_set_wake(MFP_PIN_GPIO1, 1);
+       /* We can't pass to gpio-keys since it will drop the Reset altfunc */
+
        pm_power_off = tosa_poweroff;
        arm_pm_restart = tosa_restart;
 
-       pxa_gpio_mode(TOSA_GPIO_ON_RESET | GPIO_IN);
-       pxa_gpio_mode(TOSA_GPIO_TC6393_INT | GPIO_IN);
-       pxa_gpio_mode(TOSA_GPIO_USB_IN | GPIO_IN);
-
-       /* setup sleep mode values */
-       PWER  = 0x00000002;
-       PFER  = 0x00000000;
-       PRER  = 0x00000002;
-       PGSR0 = 0x00000000;
-       PGSR1 = 0x00FF0002;
-       PGSR2 = 0x00014000;
        PCFR |= PCFR_OPDE;
 
        /* enable batt_fault */