[PATCH 2/3] qi-gta03-gpio-init.patch

Andy Green andy at openmoko.com
Fri Oct 31 11:52:56 CET 2008


Signed-off-by: Andy Green <andy at openmoko.com>
---

 src/cpu/s3c6410/gta03.c |  805 +++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 708 insertions(+), 97 deletions(-)

diff --git a/src/cpu/s3c6410/gta03.c b/src/cpu/s3c6410/gta03.c
index 6c63ca0..0214e6e 100644
--- a/src/cpu/s3c6410/gta03.c
+++ b/src/cpu/s3c6410/gta03.c
@@ -1,5 +1,6 @@
 #include <qi.h>
 #include <neo_gta03.h>
+#include <s3c6410.h>
 #include <serial-s3c64xx.h>
 //#include <ports-s3c24xx.h>
 //#include <i2c-bitbang-s3c24xx.h>
@@ -19,109 +20,719 @@ static const struct board_variant board_variants[] = {
 
 void port_init_gta03(void)
 {
-#if 0
-	unsigned int * MPLLCON = (unsigned int *)0x4c000004;
-	unsigned int * UPLLCON = (unsigned int *)0x4c000008;
-	unsigned int * CLKDIVN = (unsigned int *)0x4c000014;
 
-	//CAUTION:Follow the configuration order for setting the ports.
-	// 1) setting value(GPnDAT)
-	// 2) setting control register  (GPnCON)
-	// 3) configure pull-up resistor(GPnUP)
+	/* ---------------------------- Port A ---------------------------- */
 
-	/* 32bit data bus configuration   */
-	/*
-	 * === PORT A GROUP
-	 *     Ports  : GPA22 GPA21  GPA20 GPA19 GPA18 GPA17 GPA16 GPA15 GPA14 GPA13 GPA12
-	 *     Signal : nFCE nRSTOUT nFRE   nFWE  ALE   CLE  nGCS5 nGCS4 nGCS3 nGCS2 nGCS1
-	 *     Binary :  1     1      1  , 1   1   1    1   ,  1     1     1     1
-	 *     Ports  : GPA11   GPA10  GPA9   GPA8   GPA7   GPA6   GPA5   GPA4   GPA3   GPA2   GPA1  GPA0
-	 *     Signal : ADDR26 ADDR25 ADDR24 ADDR23 ADDR22 ADDR21 ADDR20 ADDR19 ADDR18 ADDR17 ADDR16 ADDR0
-	 *     Binary :  1       1      1      1   , 1       1      1      1   ,  1       1     1      1
-	 */
-	rGPACON = 0x007F8FFF;
-	/*
-	 * ===* PORT B GROUP
-	 *      Ports  : GPB10    GPB9    GPB8    GPB7    GPB6     GPB5    GPB4   GPB3   GPB2     GPB1      GPB0
-	 *      Signal : nXDREQ0 nXDACK0 nXDREQ1 nXDACK1 nSS_KBD nDIS_OFF L3CLOCK L3DATA L3MODE nIrDATXDEN Keyboard
-	 *      Setting: INPUT  OUTPUT   INPUT  OUTPUT   INPUT   OUTPUT   OUTPUT OUTPUT OUTPUT   OUTPUT    OUTPUT
-	 *      Binary :   00  ,  01       00  ,   01      00   ,  01       01  ,   01     01   ,  01        01
-	 */
-	rGPBCON = 0x00145554;
-	rGPBDAT |= (1 <<9 );	/* USB_PULLUP */
-	rGPBUP = 0x000007FF;
-	/*
-	 * === PORT C GROUP
-	 *     Ports  : GPC15 GPC14 GPC13 GPC12 GPC11 GPC10 GPC9 GPC8  GPC7   GPC6   GPC5 GPC4 GPC3  GPC2  GPC1 GPC0
-	 *     Signal : VD7   VD6   VD5   VD4   VD3   VD2   VD1  VD0 LCDVF2 LCDVF1 LCDVF0 VM VFRAME VLINE VCLK LEND
-	 *     Binary :  10   10  , 10    10  , 10    10  , 10   10  , 10     10  ,  10   10 , 10     10 , 10   10
-	 */
-	rGPCCON = 0xAAA776E9;
-	rGPCUP = 0x0000FFFF;
-	rGPCDAT |= (1 << 9); /* WLAN_nRESET pull high */
-	/*
-	 * === PORT D GROUP
-	 *     Ports  : GPD15 GPD14 GPD13 GPD12 GPD11 GPD10 GPD9 GPD8 GPD7 GPD6 GPD5 GPD4 GPD3 GPD2 GPD1 GPD0
-	 *     Signal : VD23  VD22  VD21  VD20  VD19  VD18  VD17 VD16 VD15 VD14 VD13 VD12 VD11 VD10 VD9  VD8
-	 *     Binary : 10    10  , 10    10  , 10    10  , 10   10 , 10   10 , 10   10 , 10   10 ,10   10
-	 */
-	rGPDCON = 0xAAA0AAA5;
-	rGPDUP = 0x0000FFFF;
-	/*
-	 * === PORT E GROUP
-	 *     Ports  : GPE15  GPE14 GPE13   GPE12   GPE11   GPE10   GPE9    GPE8     GPE7  GPE6  GPE5   GPE4
-	 *     Signal : IICSDA IICSCL SPICLK SPIMOSI SPIMISO SDDATA3 SDDATA2 SDDATA1 SDDATA0 SDCMD SDCLK I2SSDO
-	 *     Binary :  10     10  ,  10      10  ,  10      10   ,  10      10   ,   10    10  , 10     10  ,
-	 *     -------------------------------------------------------------------------------------------------------
-	 *     Ports  :  GPE3   GPE2  GPE1    GPE0
-	 *     Signal : I2SSDI CDCLK I2SSCLK I2SLRCK
-	 *     Binary :  10     10  ,  10      10
-	 */
-	rGPECON = 0xAAAAAAAA;
-	rGPEUP = 0x0000FFFF;
-	/*
-	 * === PORT F GROUP
-	 *     Ports  : GPF7   GPF6   GPF5   GPF4      GPF3     GPF2  GPF1   GPF0
-	 *     Signal : nLED_8 nLED_4 nLED_2 nLED_1 nIRQ_PCMCIA EINT2 KBDINT EINT0
-	 *     Setting: Output Output Output Output    EINT3    EINT2 EINT1  EINT0
-	 *     Binary :  01      01 ,  01     01  ,     10       10  , 10     10
-	 */
-	rGPFCON = 0x0000AAAA;
-	rGPFUP = 0x000000FF;
+	__REG(GPACON) =
+		(2 << 0)  | /* GPA0  - UART_RXD0 */
+		(2 << 4)  | /* GPA1  - UART_TXD0 */
+		(2 << 8)  | /* GPA2  - UART_CTS0 */
+		(2 << 12) | /* GPA3  - UART_RTS0 */
+		(2 << 16) | /* GPA4  - UART_RXD1 */
+		(2 << 20) | /* GPA5  - UART_TXD1 */
+		(2 << 24) | /* GPA6  - UART_CTS1 */
+		(2 << 28)   /* GPA7  - UART_RTS1 */
+	;
 
-	/*
-	 * === PORT G GROUP
-	 *     Ports  : GPG15 GPG14 GPG13 GPG12 GPG11    GPG10    GPG9     GPG8     GPG7      GPG6
-	 *     Signal : nYPON  YMON nXPON XMON  EINT19 DMAMODE1 DMAMODE0 DMASTART KBDSPICLK KBDSPIMOSI
-	 *     Setting: nYPON  YMON nXPON XMON  EINT19  Output   Output   Output   SPICLK1    SPIMOSI1
-	 *     Binary :   11    11 , 11    11  , 10      01    ,   01       01   ,    11         11
-	 *     -----------------------------------------------------------------------------------------
-	 *     Ports  :    GPG5       GPG4    GPG3    GPG2    GPG1    GPG0
-	 *     Signal : KBDSPIMISO LCD_PWREN EINT11 nSS_SPI IRQ_LAN IRQ_PCMCIA
-	 *     Setting:  SPIMISO1  LCD_PWRDN EINT11   nSS0   EINT9    EINT8
-	 *     Binary :     11         11   ,  10      11  ,  10        10
-	 */
-	rGPGCON = 0x02A9FE5A;
-	rGPGUP = 0x0000FFFF;
+	__REG(GPAPUD) = 0; /* all pullup and pulldown disabled */
 
-	/*
-	 * === PORT H GROUP
-	 *     Ports  :  GPH10    GPH9  GPH8 GPH7  GPH6  GPH5 GPH4 GPH3 GPH2 GPH1  GPH0
-	 *     Signal : CLKOUT1 CLKOUT0 UCLK RXD2 TXD2 RXD1 TXD1 RXD0 TXD0 nRTS0 nCTS0
-	 *     Binary :   10   ,  10     10 , 11    11  , 10   10 , 10   10 , 10    10
-	 */
-	/* pulldown on GPH08: UEXTCLK, just floats!
-	 * pulldown GPH0 -- nCTS0 / RTS_MODEM -- floats when GSM off
-	 * pulldown GPH3 -- RXD[0] / TX_MODEM -- floats when GSM off
-	 */
-	rGPHCON = 0x0019A0AA;
-	rGPHUP = 0x000007FF;
+	__REG(GPADAT) = 0; /* just for determinism */
+
+	__REG(GPACONSLP) =
+		(3 << 0)  | /* GPA0  - keep */
+		(3 << 2)  | /* GPA1  - keep */
+		(3 << 4)  | /* GPA2  - keep */
+		(3 << 6)  | /* GPA3  - keep */
+		(3 << 8)  | /* GPA4  - keep */
+		(3 << 10) | /* GPA5  - keep */
+		(3 << 12) | /* GPA6  - keep */
+		(3 << 14)   /* GPA7  - keep */
+	;
+
+	/* ---------------------------- Port B ---------------------------- */
+
+	__REG(GPBCON) =
+		(2 << 0)  | /* GPB0  - UART_RXD2 */
+		(2 << 4)  | /* GPB1  - UART_TXD2 */
+		(2 << 8)  | /* GPB2  - UART_RXD3 */
+		(2 << 12) | /* GPB3  - UART_TXD3 */
+		(1 << 16) | /* GPB4  - (NC) output low */
+		(1 << 20) | /* GPB5  - (I2C BB SCL) OUTPUT */
+		(1 << 24)   /* GPB6  - (I2C BB SDA) OUTPUT */
+	;
+
+	__REG(GPBPUD) = 0; /* all pullup and pulldown disabled */
+
+	__REG(GPBDAT) = 0; /* just for determinism */
+
+	__REG(GPBCONSLP) =
+		(3 << 0)  | /* GPB0  - keep */
+		(3 << 2)  | /* GPB1  - keep */
+		(3 << 4)  | /* GPB2  - keep */
+		(3 << 6)  | /* GPB3  - keep */
+		(3 << 8)  | /* GPB4  - keep */
+		(3 << 10) | /* GPB5  - keep */
+		(3 << 12) | /* GPB6  - keep */
+		(3 << 14)   /* GPB7  - keep */
+	;
+
+	__REG(GPBPUDSLP) =
+		(0 << 0)  | /* GPB0  - no pull up or down */
+		(0 << 2)  | /* GPB1  - no pull up or down */
+		(0 << 4)  | /* GPB2  - no pull up or down */
+		(0 << 6)  | /* GPB3  - no pull up or down */
+		(0 << 8)  | /* GPB4  - no pull up or down */
+		(0 << 10) | /* GPB5  - no pull up or down */
+		(0 << 12) | /* GPB6  - no pull up or down */
+		(0 << 14)   /* GPB7  - no pull up or down */
+	;
+
+	/* ---------------------------- Port C ---------------------------- */
+
+	__REG(GPCCON) =
+		(0 << 0)  | /* GPC0  - SPI_MISO0 INPUT  */
+		(1 << 4)  | /* GPC1  - SPI_CLK0  OUTPUT */
+		(1 << 8)  | /* GPC2  - SPI_MOSI0 OUTPUT */
+		(1 << 12) | /* GPC3  - SPI_CS0   OUTPUT */
+		(1 << 16) | /* GPC4  - (NC)      OUTPUT */
+		(1 << 20) | /* GPC5  - SPI_CLK1  OUTPUT */
+		(1 << 24) | /* GPC6  - SPI_MOSI1 OUTPUT */
+		(1 << 28)   /* GPC7  - SPI_CS1   OUTPUT */
+	;
+
+	__REG(GPCPUD) = 0; /* all pullup and pulldown disabled */
+
+	__REG(GPCDAT) = 0; /* just for determinism */
+
+	__REG(GPCCONSLP) =
+		(3 << 0)  | /* GPC0  - keep */
+		(3 << 2)  | /* GPC1  - keep */
+		(3 << 4)  | /* GPC2  - keep */
+		(3 << 6)  | /* GPC3  - keep */
+		(3 << 8)  | /* GPC4  - keep */
+		(3 << 10) | /* GPC5  - keep */
+		(3 << 12) | /* GPC6  - keep */
+		(3 << 14)   /* GPC7  - keep */
+	;
+
+	__REG(GPCPUDSLP) =
+		(0 << 0)  | /* GPC0  - no pull up or down */
+		(0 << 2)  | /* GPC1  - no pull up or down */
+		(0 << 4)  | /* GPC2  - no pull up or down */
+		(0 << 6)  | /* GPC3  - no pull up or down */
+		(0 << 8)  | /* GPC4  - no pull up or down */
+		(0 << 10) | /* GPC5  - no pull up or down */
+		(0 << 12) | /* GPC6  - no pull up or down */
+		(0 << 14)   /* GPC7  - no pull up or down */
+	;
+
+	/* ---------------------------- Port D ---------------------------- */
+
+	__REG(GPDCON) =
+		(3 << 0)  | /* GPD0  - I2S_CLK0  */
+		(3 << 4)  | /* GPD1  - I2S_CDCLK0 */
+		(3 << 8)  | /* GPD2  - I2S_LRCLK0 */
+		(3 << 12) | /* GPD3  - I2S_DI */
+		(3 << 16)   /* GPD4  - I2S_DO */
+	;
+
+	__REG(GPDPUD) = 0; /* all pullup and pulldown disabled */
+
+	__REG(GPDDAT) = 0; /* just for determinism */
+
+	__REG(GPDCONSLP) =
+		(3 << 0)  | /* GPD0  - keep */
+		(3 << 2)  | /* GPD1  - keep */
+		(3 << 4)  | /* GPD2  - keep */
+		(3 << 6)  | /* GPD3  - keep */
+		(3 << 8)    /* GPD4  - keep */
+	;
+
+	__REG(GPDPUDSLP) =
+		(0 << 0)  | /* GPD0  - no pull up or down */
+		(0 << 2)  | /* GPD1  - no pull up or down */
+		(0 << 4)  | /* GPD2  - no pull up or down */
+		(0 << 6)  | /* GPD3  - no pull up or down */
+		(0 << 8)    /* GPD4  - no pull up or down */
+	;
+
+	/* ---------------------------- Port E ---------------------------- */
+
+	__REG(GPECON) =
+		(3 << 0)  | /* GPE0  - PCM_SCLK1  */
+		(3 << 4)  | /* GPE1  - PCM_EXTCLK1 */
+		(3 << 8)  | /* GPE2  - PCM_FSYNC1 */
+		(3 << 12) | /* GPE3  - PCM_SIN */
+		(3 << 16)   /* GPE4  - PCM_SOUT */
+	;
+
+	__REG(GPEPUD) = 0; /* all pullup and pulldown disabled */
+
+	__REG(GPEDAT) = 0; /* just for determinism */
+
+	__REG(GPECONSLP) =
+		(3 << 0)  | /* GPE0  - keep */
+		(3 << 2)  | /* GPE1  - keep */
+		(3 << 4)  | /* GPE2  - keep */
+		(3 << 6)  | /* GPE3  - keep */
+		(3 << 8)    /* GPE4  - keep */
+	;
+
+	__REG(GPEPUDSLP) =
+		(1 << 0)  | /* GPE0  - pull down */
+		(1 << 2)  | /* GPE1  - pull down */
+		(1 << 4)  | /* GPE2  - pull down */
+		(1 << 6)  | /* GPE3  - pull down */
+		(1 << 8)    /* GPE4  - pull down */
+	;
+
+	/* ---------------------------- Port F ---------------------------- */
+
+	__REG(GPFCON) =
+		(2 << 0)  | /* GPF0  - CAMIF_CLK */
+		(2 << 2)  | /* GPF1  - CAMIF_HREF */
+		(2 << 4)  | /* GPF2  - CAMIF_PCLK */
+		(2 << 6)  | /* GPF3  - CAMIF_RSTn */
+		(2 << 8)  | /* GPF4  - CAMIF_VSYNC */
+		(2 << 10) | /* GPF5  - CAMIF_YDATA0 */
+		(2 << 12) | /* GPF6  - CAMIF_YDATA1 */
+		(2 << 14) | /* GPF7  - CAMIF_YDATA2 */
+		(2 << 16) | /* GPF8  - CAMIF_YDATA3 */
+		(2 << 18) | /* GPF9  - CAMIF_YDATA4 */
+		(2 << 20) | /* GPF10 - CAMIF_YDATA5 */
+		(2 << 22) | /* GPF11 - CAMIF_YDATA6 */
+		(2 << 24) | /* GPF12 - CAMIF_YDATA7 */
+		(1 << 26) | /* GPF13 - OUTPUT Vibrator */
+		(3 << 28) | /* GPF14 - CLKOUT0 */
+		(1 << 30)   /* GPF15 - OUTPUT CAM_PWRDN */
+	;
+
+	__REG(GPFPUD) = 0; /* all pullup and pulldown disabled */
+
+	__REG(GPFDAT) = (1 << 15); /* assert CAM_PWRDN */
+
+	__REG(GPFCONSLP) =
+		(0 << 0)  | /* GPF0  - OUTPUT 0 */
+		(0 << 2)  | /* GPF1  - OUTPUT 0 */
+		(0 << 4)  | /* GPF2  - OUTPUT 0 */
+		(0 << 6)  | /* GPF3  - OUTPUT 0 */
+		(0 << 8)  | /* GPF4  - OUTPUT 0 */
+		(0 << 10) | /* GPF5  - OUTPUT 0 */
+		(0 << 12) | /* GPF6  - OUTPUT 0 */
+		(0 << 14) | /* GPF7  - OUTPUT 0 */
+		(0 << 16) | /* GPF8  - OUTPUT 0 */
+		(0 << 18) | /* GPF9  - OUTPUT 0 */
+		(0 << 20) | /* GPF10 - OUTPUT 0 */
+		(0 << 22) | /* GPF11 - OUTPUT 0 */
+		(0 << 24) | /* GPF12 - OUTPUT 0 */
+		(0 << 26) | /* GPF13 - OUTPUT 0 */
+		(0 << 28) | /* GPF14 - OUTPUT 0 */
+		(0 << 30)   /* GPF15 - OUTPUT 0 */
+	;
+
+	__REG(GPFPUDSLP) =
+		(0 << 0)  | /* GPF0  - no pull up or down */
+		(0 << 2)  | /* GPF1  - no pull up or down */
+		(0 << 4)  | /* GPF2  - no pull up or down */
+		(0 << 6)  | /* GPF3  - no pull up or down */
+		(0 << 8)  | /* GPF4  - no pull up or down */
+		(0 << 10) | /* GPF5  - no pull up or down */
+		(0 << 12) | /* GPF6  - no pull up or down */
+		(0 << 14) | /* GPF7  - no pull up or down */
+		(0 << 16) | /* GPF8  - no pull up or down */
+		(0 << 18) | /* GPF9  - no pull up or down */
+		(0 << 20) | /* GPF10 - no pull up or down */
+		(0 << 22) | /* GPF11 - no pull up or down */
+		(0 << 24) | /* GPF12 - no pull up or down */
+		(0 << 26) | /* GPF13 - no pull up or down */
+		(0 << 28) | /* GPF14 - no pull up or down */
+		(0 << 30)   /* GPF15 - no pull up or down */
+	;
+
+	/* ---------------------------- Port G ---------------------------- */
+
+	__REG(GPGCON) =
+		(2 << 0)  | /* GPG0  - MMC_CLK0 */
+		(2 << 4)  | /* GPG1  - MMC_CMD0 */
+		(2 << 8)  | /* GPG2  - MMC_DATA00 */
+		(2 << 12) | /* GPG3  - MMC_DATA10 */
+		(2 << 16) | /* GPG4  - MMC_DATA20 */
+		(2 << 20) | /* GPG5  - MMC_DATA30 */
+		(1 << 24)   /* GPG6  - (NC) OUTPUT 0 */
+	;
+
+	__REG(GPGPUD) = 0; /* all pullup and pulldown disabled */
+
+	__REG(GPGDAT) = 0; /* just for determinism */
+
+	__REG(GPGCONSLP) =
+		(0 << 0)  | /* GPG0  - OUTPUT 0 */
+		(0 << 2)  | /* GPG1  - OUTPUT 0 */
+		(0 << 4)  | /* GPG2  - OUTPUT 0 */
+		(0 << 6)  | /* GPG3  - OUTPUT 0 */
+		(0 << 8)  | /* GPG4  - OUTPUT 0 */
+		(0 << 10) | /* GPG5  - OUTPUT 0 */
+		(0 << 12)   /* GPG6  - OUTPUT 0 */
+	;
+
+	__REG(GPGPUDSLP) =
+		(0 << 0)  | /* GPG0  - no pull up or down */
+		(0 << 2)  | /* GPG1  - no pull up or down */
+		(0 << 4)  | /* GPG2  - no pull up or down */
+		(0 << 6)  | /* GPG3  - no pull up or down */
+		(0 << 8)  | /* GPG4  - no pull up or down */
+		(0 << 10) | /* GPG5  - no pull up or down */
+		(0 << 12)   /* GPG6  - no pull up or down */
+	;
 
-	/* pulldown on GPJ00: input, just floats! */
-	/* pulldown on GPJ07: WLAN module WLAN_GPIO0, no ext pull */
-	rGPJCON = 0x02AAAAAA;
-	rGPJUP = 0x1FFFF;
+	/* ---------------------------- Port H ---------------------------- */
 
+	__REG(GPHCON0) =
+		(2 << 0)  | /* GPH0  - MMC_CLK1 */
+		(2 << 4)  | /* GPH1  - MMC_CMD1 */
+		(2 << 8)  | /* GPH2  - MMC_DATA01 */
+		(2 << 12) | /* GPH3  - MMC_DATA11 */
+		(2 << 16) | /* GPH4  - MMC_DATA21 */
+		(2 << 20) | /* GPH5  - MMC_DATA31 */
+		(1 << 24) | /* GPH6  - OUTPUT nWLAN_RESET */
+		(1 << 28)   /* GPH7  - OUTPUT HDQ */
+	;
+	__REG(GPHCON1) =
+		(1 << 0) | /* GPH8  - OUTPUT nWLAN_PD */
+		(1 << 4)   /* GPH9  - OUTPUT (NC) */
+	;
+
+	__REG(GPHPUD) = 0; /* all pullup and pulldown disabled */
+
+	__REG(GPHDAT) = 0;
+
+	__REG(GPHCONSLP) =
+		(0 << 0)  | /* GPH0  - OUTPUT 0 */
+		(0 << 2)  | /* GPH1  - OUTPUT 0 */
+		(0 << 4)  | /* GPH2  - OUTPUT 0 */
+		(0 << 6)  | /* GPH3  - OUTPUT 0 */
+		(0 << 8)  | /* GPH4  - OUTPUT 0 */
+		(0 << 10) | /* GPH5  - OUTPUT 0 */
+		(0 << 12) | /* GPH6  - OUTPUT 0 */
+		(2 << 14) | /* GPH7  - INPUT (HDQ) */
+		(0 << 16) | /* GPH8  - OUTPUT 0 */
+		(0 << 18)   /* GPH9  - OUTPUT 0 */
+	;
+
+	__REG(GPHPUDSLP) =
+		(0 << 0)  | /* GPH0  - no pull up or down */
+		(0 << 2)  | /* GPH1  - no pull up or down */
+		(0 << 4)  | /* GPH2  - no pull up or down */
+		(0 << 6)  | /* GPH3  - no pull up or down */
+		(0 << 8)  | /* GPH4  - no pull up or down */
+		(0 << 10) | /* GPH5  - no pull up or down */
+		(2 << 12) | /* GPH6  - PULLUP (HDQ) */
+		(0 << 14) | /* GPH7  - no pull up or down */
+		(0 << 16) | /* GPH8  - no pull up or down */
+		(0 << 18)   /* GPH9  - no pull up or down */
+	;
+
+	/* ---------------------------- Port I ---------------------------- */
+
+	__REG(GPICON) =
+		(2 << 0)  | /* GPI0  - LCD_VD0 */
+		(2 << 2)  | /* GPI1  - LCD_VD1 */
+		(2 << 4)  | /* GPI2  - LCD_VD2 */
+		(2 << 6)  | /* GPI3  - LCD_VD3 */
+		(2 << 8)  | /* GPI4  - LCD_VD4 */
+		(2 << 10) | /* GPI5  - LCD_VD5 */
+		(2 << 12) | /* GPI6  - LCD_VD6 */
+		(2 << 14) | /* GPI7  - LCD_VD7 */
+		(2 << 16) | /* GPI8  - LCD_VD8 */
+		(2 << 18) | /* GPI9  - LCD_VD9 */
+		(2 << 20) | /* GPI10 - LCD_VD10 */
+		(2 << 22) | /* GPI11 - LCD_VD11 */
+		(2 << 24) | /* GPI12 - LCD_VD12 */
+		(2 << 26) | /* GPI13 - LCD_VD13 */
+		(2 << 28) | /* GPI14 - LCD_VD14 */
+		(2 << 30)   /* GPI15 - LCD_VD15 */
+	;
+
+	__REG(GPIPUD) = 0; /* all pullup and pulldown disabled */
+
+	__REG(GPIDAT) = 0; /* just for determinism */
+
+	__REG(GPICONSLP) =
+		(0 << 0)  | /* GPI0  - OUTPUT 0 */
+		(0 << 2)  | /* GPI1  - OUTPUT 0 */
+		(0 << 4)  | /* GPI2  - OUTPUT 0 */
+		(0 << 6)  | /* GPI3  - OUTPUT 0 */
+		(0 << 8)  | /* GPI4  - OUTPUT 0 */
+		(0 << 10) | /* GPI5  - OUTPUT 0 */
+		(0 << 12) | /* GPI6  - OUTPUT 0 */
+		(0 << 14) | /* GPI7  - OUTPUT 0 */
+		(0 << 16) | /* GPI8  - OUTPUT 0 */
+		(0 << 18) | /* GPI9  - OUTPUT 0 */
+		(0 << 20) | /* GPI10 - OUTPUT 0 */
+		(0 << 22) | /* GPI11 - OUTPUT 0 */
+		(0 << 24) | /* GPI12 - OUTPUT 0 */
+		(0 << 26) | /* GPI13 - OUTPUT 0 */
+		(0 << 28) | /* GPI14 - OUTPUT 0 */
+		(0 << 30)   /* GPI15 - OUTPUT 0 */
+	;
+
+	__REG(GPIPUDSLP) =
+		(0 << 0)  | /* GPI0  - no pull up or down */
+		(0 << 2)  | /* GPI1  - no pull up or down */
+		(0 << 4)  | /* GPI2  - no pull up or down */
+		(0 << 6)  | /* GPI3  - no pull up or down */
+		(0 << 8)  | /* GPI4  - no pull up or down */
+		(0 << 10) | /* GPI5  - no pull up or down */
+		(0 << 12) | /* GPI6  - no pull up or down */
+		(0 << 14) | /* GPI7  - no pull up or down */
+		(0 << 16) | /* GPI8  - no pull up or down */
+		(0 << 18) | /* GPI9  - no pull up or down */
+		(0 << 20) | /* GPI10 - no pull up or down */
+		(0 << 22) | /* GPI11 - no pull up or down */
+		(0 << 24) | /* GPI12 - no pull up or down */
+		(0 << 26) | /* GPI13 - no pull up or down */
+		(0 << 28) | /* GPI14 - no pull up or down */
+		(0 << 30)   /* GPI15 - no pull up or down */
+	;
+
+	/* ---------------------------- Port J ---------------------------- */
+
+	__REG(GPJCON) =
+		(2 << 0)  | /* GPJ0  - LCD_VD16 */
+		(2 << 2)  | /* GPJ1  - LCD_VD17 */
+		(2 << 4)  | /* GPJ2  - LCD_VD18 */
+		(2 << 6)  | /* GPJ3  - LCD_VD19 */
+		(2 << 8)  | /* GPJ4  - LCD_VD20 */
+		(2 << 10) | /* GPJ5  - LCD_VD21 */
+		(2 << 12) | /* GPJ6  - LCD_VD22 */
+		(2 << 14) | /* GPJ7  - LCD_VD23 */
+		(2 << 16) | /* GPJ8  - LCD_HSYNC */
+		(2 << 18) | /* GPJ9  - LCD_VSYNC */
+		(2 << 20) | /* GPJ10 - LCD_VDEN */
+		(2 << 22)   /* GPJ11 - LCD_VCLK */
+	;
+
+	__REG(GPJPUD) = 0; /* all pullup and pulldown disabled */
+
+	__REG(GPJDAT) = 0; /* just for determinism */
+
+	__REG(GPJCONSLP) =
+		(0 << 0)  | /* GPJ0  - OUTPUT 0 */
+		(0 << 2)  | /* GPJ1  - OUTPUT 0 */
+		(0 << 4)  | /* GPJ2  - OUTPUT 0 */
+		(0 << 6)  | /* GPJ3  - OUTPUT 0 */
+		(0 << 8)  | /* GPJ4  - OUTPUT 0 */
+		(0 << 10) | /* GPJ5  - OUTPUT 0 */
+		(0 << 12) | /* GPJ6  - OUTPUT 0 */
+		(0 << 14) | /* GPJ7  - OUTPUT 0 */
+		(0 << 16) | /* GPJ8  - OUTPUT 0 */
+		(0 << 18) | /* GPJ9  - OUTPUT 0 */
+		(0 << 20) | /* GPJ10 - OUTPUT 0 */
+		(0 << 22)   /* GPJ11 - OUTPUT 0 */
+	;
+
+	__REG(GPJPUDSLP) =
+		(0 << 0)  | /* GPJ0  - no pull up or down */
+		(0 << 2)  | /* GPJ1  - no pull up or down */
+		(0 << 4)  | /* GPJ2  - no pull up or down */
+		(0 << 6)  | /* GPJ3  - no pull up or down */
+		(0 << 8)  | /* GPJ4  - no pull up or down */
+		(0 << 10) | /* GPJ5  - no pull up or down */
+		(0 << 12) | /* GPJ6  - no pull up or down */
+		(0 << 14) | /* GPJ7  - no pull up or down */
+		(0 << 16) | /* GPJ8  - no pull up or down */
+		(0 << 18) | /* GPJ9  - no pull up or down */
+		(0 << 20) | /* GPJ10 - no pull up or down */
+		(0 << 22)   /* GPJ11 - no pull up or down */
+	;
+
+	/* ---------------------------- Port K ---------------------------- */
+
+	__REG(GPKCON0) =
+		(1 << 0)  | /* GPK0  - OUTPUT  nWLAN_POWERON */
+		(1 << 4)  | /* GPK1  - OUTPUT  (NC) */
+		(1 << 8)  | /* GPK2  - OUTPUT  (nMODEM_ON) */
+		(1 << 12) | /* GPK3  - OUTPUT  (NC) */
+		(1 << 16) | /* GPK4  - OUTPUT  (NC) */
+		(1 << 20) | /* GPK5  - OUTPUT  (NC) */
+		(1 << 24) | /* GPK6  - OUTPUT  (NC) */
+		(1 << 28)   /* GPK7  - OUTPUT  (NC) */
+	;
+	__REG(GPKCON1) =
+		(1 << 0)  | /* GPK8  - OUTPUT  (NC) */
+		(1 << 4)  | /* GPK9  - OUTPUT  (NC) */
+		(1 << 8)  | /* GPK10 - OUTPUT  (NC) */
+		(1 << 12) | /* GPK11 - OUTPUT  (NC) */
+		(1 << 16) | /* GPK12 - OUTPUT  (NC) */
+		(1 << 20) | /* GPK13 - OUTPUT  (NC) */
+		(1 << 24) | /* GPK14 - OUTPUT  (NC) */
+		(1 << 28)   /* GPK15 - OUTPUT  (NC) */
+	;
+
+	__REG(GPKPUD) = 0; /* all pullup and pulldown disabled */
+
+	__REG(GPKDAT) =
+		(1 << 2)  /* deassert nMODEM_ON */
+	;
+
+	/* ---------------------------- Port L ---------------------------- */
+
+	__REG(GPLCON0) =
+		(1 << 0)  | /* GPL0  - OUTPUT  (NC) */
+		(1 << 4)  | /* GPL1  - OUTPUT  (NC) */
+		(1 << 8)  | /* GPL2  - OUTPUT  (NC) */
+		(1 << 12) | /* GPL3  - OUTPUT  (NC) */
+		(1 << 16) | /* GPL4  - OUTPUT  (NC) */
+		(1 << 20) | /* GPL5  - OUTPUT  (NC) */
+		(1 << 24) | /* GPL6  - OUTPUT  (NC) */
+		(1 << 28)   /* GPL7  - OUTPUT  (NC) */
+	;
+	__REG(GPLCON1) =
+		(1 << 0)  | /* GPL8  - OUTPUT  (NC) */
+		(1 << 4)  | /* GPL9  - OUTPUT  (NC) */
+		(1 << 8)  | /* GPL10 - OUTPUT  (NC) */
+		(1 << 12) | /* GPL11 - OUTPUT  (NC) */
+		(1 << 16) | /* GPL12 - OUTPUT  (NC) */
+		(1 << 20) | /* GPL13 - OUTPUT  (NC) */
+		(1 << 24)   /* GPL14 - OUTPUT  (NC) */
+	;
+
+	__REG(GPLPUD) = 0; /* all pullup and pulldown disabled */
+
+	__REG(GPLDAT) = 0;
+
+
+	/* ---------------------------- Port M ---------------------------- */
+
+	__REG(GPMCON) =
+		(1 << 0)  | /* GPM0  - OUTPUT  (TP_RESET) */
+		(1 << 4)  | /* GPM1  - OUTPUT  (NC) */
+		(1 << 8)  | /* GPM2  - OUTPUT  (GPS_LNA_EN) */
+		(1 << 12) | /* GPM3  - OUTPUT  (NC) */
+		(0 << 16) | /* GPM4  - INPUT   (nUSB_FLT) */
+		(0 << 20)   /* GPM5  - INPUT   (nUSB_OC) */
+	;
+
+	__REG(GPMPUD) = (2 << (4 * 2)) | (2 << (5 * 2)); /* Pup on inputs */
+
+	__REG(GPMDAT) = 0;
+
+	/* ---------------------------- Port N ---------------------------- */
+
+	__REG(GPNCON) =
+		(2 << 0)  | /* GPN0  - EXINT0 nG1INT1 */
+		(2 << 2)  | /* GPN1  - EXINT1 KEY_MINUS */
+		(2 << 4)  | /* GPN2  - EXINT2 KEY_PLUS */
+		(2 << 6)  | /* GPN3  - EXINT3 PWR_IND */
+		(2 << 8)  | /* GPN4  - EXINT4 PWR_IRQ */
+		(2 << 10) | /* GPN5  - EXINT5 nTOUCH */
+		(2 << 12) | /* GPN6  - EXINT6 nJACK_INSERT */
+		(2 << 14) | /* GPN7  - EXINT7 GPS_INT */
+		(2 << 16) | /* GPN8  - EXINT8 nHOLD */
+		(2 << 18) | /* GPN9  - EXINT9 WLAN_WAKEUP */
+		(2 << 20) | /* GPN10 - EXINT10 nG1INT2 */
+		(2 << 22) | /* GPN11 - EXINT11 nIO1 */
+		(2 << 24) | /* GPN12 - EXINT12 nONKEYWAKE */
+		(0 << 26) | /* GPN13 - INPUT (iROM CFG0) */
+		(0 << 28) | /* GPN14 - INPUT (iROM CFG1) */
+		(0 << 30)   /* GPN15 - INPUT (iROM CFG2) */
+	;
+
+	__REG(GPNPUD) = 0; /* all pullup and pulldown disabled */
+
+	__REG(GPNDAT) = 0;
+
+
+	/* ---------------------------- Port O ---------------------------- */
+
+	__REG(GPOCON) =
+		(2 << 0)  | /* GPO0  - XM0CS2 (nNANDCS0) */
+		(1 << 2)  | /* GPO1  - OUTPUT (nMODEM_RESET) */
+		(1 << 4)  | /* GPO2  - OUTPUT  (NC) */
+		(1 << 6)  | /* GPO3  - OUTPUT  (NC) */
+		(1 << 8)  | /* GPO4  - OUTPUT  (NC) */
+		(1 << 10) | /* GPO5  - OUTPUT  (NC) */
+		(1 << 12) | /* GPO6  - OUTPUT  (NC) */
+		(1 << 14) | /* GPO7  - OUTPUT  (NC) */
+		(1 << 16) | /* GPO8  - OUTPUT  (NC) */
+		(1 << 18) | /* GPO9  - OUTPUT  (NC) */
+		(1 << 20) | /* GPO10 - OUTPUT  (NC) */
+		(1 << 22) | /* GPO11 - OUTPUT  (NC) */
+		(1 << 24) | /* GPO12 - OUTPUT  (NC) */
+		(1 << 26) | /* GPO13 - OUTPUT  (NC) */
+		(1 << 28) | /* GPO14 - OUTPUT  (NC) */
+		(1 << 30)   /* GPO15 - OUTPUT  (NC) */
+	;
+
+	__REG(GPOPUD) = 0; /* all pullup and pulldown disabled */
+
+	__REG(GPODAT) = (1 << 15); /* assert CAM_PWRDN */
+
+	__REG(GPOCONSLP) =
+		(3 << 0)  | /* GPO0  - hold state */
+		(1 << 2)  | /* GPO1  - OUTPUT 1  (do not reset modem) */
+		(0 << 4)  | /* GPO2  - OUTPUT 0 */
+		(0 << 6)  | /* GPO3  - OUTPUT 0 */
+		(0 << 8)  | /* GPO4  - OUTPUT 0 */
+		(0 << 10) | /* GPO5  - OUTPUT 0 */
+		(0 << 12) | /* GPO6  - OUTPUT 0 */
+		(0 << 14) | /* GPO7  - OUTPUT 0 */
+		(0 << 16) | /* GPO8  - OUTPUT 0 */
+		(0 << 18) | /* GPO9  - OUTPUT 0 */
+		(0 << 20) | /* GPO10 - OUTPUT 0 */
+		(0 << 22) | /* GPO11 - OUTPUT 0 */
+		(0 << 24) | /* GPO12 - OUTPUT 0 */
+		(0 << 26) | /* GPO13 - OUTPUT 0 */
+		(0 << 28) | /* GPO14 - OUTPUT 0 */
+		(0 << 30)   /* GPO15 - OUTPUT 0 */
+	;
+
+	__REG(GPOPUDSLP) =
+		(0 << 0)  | /* GPO0  - no pull up or down */
+		(0 << 2)  | /* GPO1  - no pull up or down */
+		(0 << 4)  | /* GPO2  - no pull up or down */
+		(0 << 6)  | /* GPO3  - no pull up or down */
+		(0 << 8)  | /* GPO4  - no pull up or down */
+		(0 << 10) | /* GPO5  - no pull up or down */
+		(0 << 12) | /* GPO6  - no pull up or down */
+		(0 << 14) | /* GPO7  - no pull up or down */
+		(0 << 16) | /* GPO8  - no pull up or down */
+		(0 << 18) | /* GPO9  - no pull up or down */
+		(0 << 20) | /* GPO10 - no pull up or down */
+		(0 << 22) | /* GPO11 - no pull up or down */
+		(0 << 24) | /* GPO12 - no pull up or down */
+		(0 << 26) | /* GPO13 - no pull up or down */
+		(0 << 28) | /* GPO14 - no pull up or down */
+		(0 << 30)   /* GPO15 - no pull up or down */
+	;
+
+	/* ---------------------------- Port P ---------------------------- */
+
+	__REG(GPPCON) =
+		(1 << 0)  | /* GPP0  - OUTPUT  (NC) */
+		(1 << 2)  | /* GPP1  - OUTPUT  (NC) */
+		(1 << 4)  | /* GPP2  - OUTPUT  (NC) */
+		(1 << 6)  | /* GPP3  - OUTPUT  (NC) */
+		(1 << 8)  | /* GPP4  - OUTPUT  (NC) */
+		(1 << 10) | /* GPP5  - OUTPUT  (NC) */
+		(1 << 12) | /* GPP6  - OUTPUT  (NC) */
+		(1 << 14) | /* GPP7  - OUTPUT  (NC) */
+		(1 << 16) | /* GPP8  - OUTPUT  (NC) */
+		(1 << 18) | /* GPP9  - OUTPUT  (NC) */
+		(1 << 20) | /* GPP10 - OUTPUT  (NC) */
+		(1 << 22) | /* GPP11 - OUTPUT  (NC) */
+		(1 << 24) | /* GPP12 - OUTPUT  (NC) */
+		(1 << 26) | /* GPP13 - OUTPUT  (NC) */
+		(1 << 28) | /* GPP14 - OUTPUT  (NC) */
+		(1 << 30)   /* GPP15 - OUTPUT  (NC) */
+	;
+
+	__REG(GPPPUD) = 0; /* all pullup and pulldown disabled */
+
+	__REG(GPPDAT) = 0; /* assert CAM_PWRDN */
+
+	__REG(GPPCONSLP) =
+		(0 << 0)  | /* GPP0  - OUTPUT 0 */
+		(0 << 2)  | /* GPP1  - OUTPUT 0 */
+		(0 << 4)  | /* GPP2  - OUTPUT 0 */
+		(0 << 6)  | /* GPP3  - OUTPUT 0 */
+		(0 << 8)  | /* GPP4  - OUTPUT 0 */
+		(0 << 10) | /* GPP5  - OUTPUT 0 */
+		(0 << 12) | /* GPP6  - OUTPUT 0 */
+		(0 << 14) | /* GPP7  - OUTPUT 0 */
+		(0 << 16) | /* GPP8  - OUTPUT 0 */
+		(0 << 18) | /* GPP9  - OUTPUT 0 */
+		(0 << 20) | /* GPP10 - OUTPUT 0 */
+		(0 << 22) | /* GPP11 - OUTPUT 0 */
+		(0 << 24) | /* GPP12 - OUTPUT 0 */
+		(0 << 26) | /* GPP13 - OUTPUT 0 */
+		(0 << 28) | /* GPP14 - OUTPUT 0 */
+		(0 << 30)   /* GPP15 - OUTPUT 0 */
+	;
+
+	__REG(GPPPUDSLP) =
+		(0 << 0)  | /* GPP0  - no pull up or down */
+		(0 << 2)  | /* GPP1  - no pull up or down */
+		(0 << 4)  | /* GPP2  - no pull up or down */
+		(0 << 6)  | /* GPP3  - no pull up or down */
+		(0 << 8)  | /* GPP4  - no pull up or down */
+		(0 << 10) | /* GPP5  - no pull up or down */
+		(0 << 12) | /* GPP6  - no pull up or down */
+		(0 << 14) | /* GPP7  - no pull up or down */
+		(0 << 16) | /* GPP8  - no pull up or down */
+		(0 << 18) | /* GPP9  - no pull up or down */
+		(0 << 20) | /* GPP10 - no pull up or down */
+		(0 << 22) | /* GPP11 - no pull up or down */
+		(0 << 24) | /* GPP12 - no pull up or down */
+		(0 << 26) | /* GPP13 - no pull up or down */
+		(0 << 28) | /* GPP14 - no pull up or down */
+		(0 << 30)   /* GPP15 - no pull up or down */
+	;
+
+	/* ---------------------------- Port Q ---------------------------- */
+
+	__REG(GPQCON) =
+		(1 << 0)  | /* GPQ0  - OUTPUT  (NC) */
+		(1 << 2)  | /* GPQ1  - OUTPUT  (NC) */
+		(1 << 4)  | /* GPQ2  - OUTPUT  (NC) */
+		(1 << 6)  | /* GPQ3  - OUTPUT  (NC) */
+		(1 << 8)  | /* GPQ4  - OUTPUT  (NC) */
+		(1 << 10) | /* GPQ5  - OUTPUT  (NC) */
+		(1 << 12) | /* GPQ6  - OUTPUT  (NC) */
+		(1 << 14) | /* GPQ7  - OUTPUT  (NC) */
+		(1 << 16) | /* GPQ8  - OUTPUT  (NC) */
+		(1 << 18) | /* GPQ9  - OUTPUT  (NC) */
+		(1 << 20) | /* GPQ10 - OUTPUT  (NC) */
+		(1 << 22) | /* GPQ11 - OUTPUT  (NC) */
+		(1 << 24) | /* GPQ12 - OUTPUT  (NC) */
+		(1 << 26) | /* GPQ13 - OUTPUT  (NC) */
+		(1 << 28) | /* GPQ14 - OUTPUT  (NC) */
+		(1 << 30)   /* GPQ15 - OUTPUT  (NC) */
+	;
+
+	__REG(GPQPUD) = 0; /* all pullup and pulldown disabled */
+
+	__REG(GPQDAT) = 0; /* assert CAM_PWRDN */
+
+	__REG(GPQCONSLP) =
+		(0 << 0)  | /* GPQ0  - OUTPUT 0 */
+		(0 << 2)  | /* GPQ1  - OUTPUT 0 */
+		(0 << 4)  | /* GPQ2  - OUTPUT 0 */
+		(0 << 6)  | /* GPQ3  - OUTPUT 0 */
+		(0 << 8)  | /* GPQ4  - OUTPUT 0 */
+		(0 << 10) | /* GPQ5  - OUTPUT 0 */
+		(0 << 12) | /* GPQ6  - OUTPUT 0 */
+		(0 << 14) | /* GPQ7  - OUTPUT 0 */
+		(0 << 16) | /* GPQ8  - OUTPUT 0 */
+		(0 << 18) | /* GPQ9  - OUTPUT 0 */
+		(0 << 20) | /* GPQ10 - OUTPUT 0 */
+		(0 << 22) | /* GPQ11 - OUTPUT 0 */
+		(0 << 24) | /* GPQ12 - OUTPUT 0 */
+		(0 << 26) | /* GPQ13 - OUTPUT 0 */
+		(0 << 28) | /* GPQ14 - OUTPUT 0 */
+		(0 << 30)   /* GPQ15 - OUTPUT 0 */
+	;
+
+	__REG(GPQPUDSLP) =
+		(0 << 0)  | /* GPQ0  - no pull up or down */
+		(0 << 2)  | /* GPQ1  - no pull up or down */
+		(0 << 4)  | /* GPQ2  - no pull up or down */
+		(0 << 6)  | /* GPQ3  - no pull up or down */
+		(0 << 8)  | /* GPQ4  - no pull up or down */
+		(0 << 10) | /* GPQ5  - no pull up or down */
+		(0 << 12) | /* GPQ6  - no pull up or down */
+		(0 << 14) | /* GPQ7  - no pull up or down */
+		(0 << 16) | /* GPQ8  - no pull up or down */
+		(0 << 18) | /* GPQ9  - no pull up or down */
+		(0 << 20) | /* GPQ10 - no pull up or down */
+		(0 << 22) | /* GPQ11 - no pull up or down */
+		(0 << 24) | /* GPQ12 - no pull up or down */
+		(0 << 26) | /* GPQ13 - no pull up or down */
+		(0 << 28) | /* GPQ14 - no pull up or down */
+		(0 << 30)   /* GPQ15 - no pull up or down */
+	;
+
+#if 0
 	/*
 	 * We have to talk to the PMU a little bit
 	 */




More information about the openmoko-kernel mailing list