diff -ur linux-2.6.7-check/arch/arm/mach-pxa/corgi.c linux-2.6.7/arch/arm/mach-pxa/corgi.c
--- linux-2.6.7-check/arch/arm/mach-pxa/corgi.c	2004-06-19 10:54:25.000000000 +0100
+++ linux-2.6.7/arch/arm/mach-pxa/corgi.c	2004-06-19 13:12:39.000000000 +0100
@@ -119,7 +119,7 @@
 	scoop_init();
 
 	/* initialize SSP & CS */
-	//pxa_ssp_init();
+	pxa_ssp_init();
 }
 
 sharpsl_flash_param_info sharpsl_flash_param;
@@ -197,6 +197,41 @@
 }
 #endif
 
+
+static int __init corgi_init(void)
+{
+	/*#define LED_ONOFF_MASK (LOCOMO_LPT_TOFL|LOCOMO_LPT_TOFH)*/
+	/*#define LED_OFF(REG) ((REG)|=LOCOMO_LPT_TOFL)*/
+	/*#define LED_ON(REG) ((REG)=((REG)&~LED_ONOFF_MASK)|LOCOMO_LPT_TOFH)*/
+	/*#define LED_FLIP(REG)   ((REG)^=LED_ONOFF_MASK)*/
+
+	/*    unsigned int led1;*/
+	/*    LED_ON(led1);*/
+	/*    locomo_writel(led1, +LOCOMO_LPT1);*/
+
+	unsigned short gpio_bit;
+	//gpio_bit=CORGI_SCP_REG_GPWR & ~CORGI_SCP_LED_GREEN;
+	//gpio_bit=CORGI_SCP_REG_GPWR | CORGI_SCP_LED_GREEN;
+	//CORGI_SCP_REG_GPWR= gpio_bit;
+	//udelay(1000);
+	gpio_bit=CORGI_SCP_REG_GPWR & ~CORGI_SCP_LED_GREEN;
+	CORGI_SCP_REG_GPWR= gpio_bit;
+	//    udelay(1000);
+	//    gpio_bit=CORGI_SCP_REG_GPWR | CORGI_SCP_LED_GREEN;
+	//    CORGI_SCP_REG_GPWR= gpio_bit;
+	//    udelay(1000);
+	//    gpio_bit=CORGI_SCP_REG_GPWR & ~CORGI_SCP_LED_GREEN;
+	//    CORGI_SCP_REG_GPWR= gpio_bit;
+	//    udelay(1000);
+	//    gpio_bit=CORGI_SCP_REG_GPWR | CORGI_SCP_LED_GREEN;
+	//    CORGI_SCP_REG_GPWR= gpio_bit;
+		
+	return 0;
+}
+		    
+arch_initcall(corgi_init);
+
+
 static struct map_desc corgi_io_desc[] __initdata = {
  /* virtual     physical    length      */
   { 0xf1000000, 0x08000000, 0x01000000, MT_DEVICE }, /* LCDC (readable for Qt driver) */
diff -ur linux-2.6.7-check/arch/arm/mach-pxa/generic.c linux-2.6.7/arch/arm/mach-pxa/generic.c
--- linux-2.6.7-check/arch/arm/mach-pxa/generic.c	2004-06-18 20:10:18.000000000 +0100
+++ linux-2.6.7/arch/arm/mach-pxa/generic.c	2004-06-19 18:56:44.000000000 +0100
@@ -62,21 +62,16 @@
 EXPORT_SYMBOL(pxa_gpio_mode);
 
 /*
- * Intel PXA2xx internal register mapping.
- *
- * Note 1: not all PXA2xx variants implement all those addresses.
- *
- * Note 2: virtual 0xfffe0000-0xffffffff is reserved for the vector table
- *         and cache flush area.
+ * Note that 0xfffe0000-0xffffffff is reserved for the vector table and
+ * cache flush area.
  */
 static struct map_desc standard_io_desc[] __initdata = {
  /* virtual     physical    length      type */
-  { 0xf2000000, 0x40000000, 0x01800000, MT_DEVICE }, /* Devs */
-  { 0xf4000000, 0x44000000, 0x00100000, MT_DEVICE }, /* LCD */
-  { 0xf6000000, 0x48000000, 0x00100000, MT_DEVICE }, /* Mem Ctl */
-  { 0xf8000000, 0x4c000000, 0x00100000, MT_DEVICE }, /* USB host */
-  { 0xfa000000, 0x50000000, 0x00100000, MT_DEVICE }, /* Camera */
-  { 0xfe000000, 0x58000000, 0x00100000, MT_DEVICE }, /* IMem ctl */
+  { 0xf6000000, 0x20000000, 0x01000000, MT_DEVICE }, /* PCMCIA0 IO */
+  { 0xf7000000, 0x30000000, 0x01000000, MT_DEVICE }, /* PCMCIA1 IO */
+  { 0xf8000000, 0x40000000, 0x01400000, MT_DEVICE }, /* Devs */
+  { 0xfa000000, 0x44000000, 0x00100000, MT_DEVICE }, /* LCD */
+  { 0xfc000000, 0x48000000, 0x00100000, MT_DEVICE }, /* Mem Ctl */
   { 0xff000000, 0x00000000, 0x00100000, MT_DEVICE }  /* UNCACHED_PHYS_0 */
 };
 
diff -ur linux-2.6.7-check/drivers/video/fbmem.c linux-2.6.7/drivers/video/fbmem.c
--- linux-2.6.7-check/drivers/video/fbmem.c	2004-06-19 10:52:58.000000000 +0100
+++ linux-2.6.7/drivers/video/fbmem.c	2004-06-19 19:14:45.000000000 +0100
@@ -172,8 +172,8 @@
 extern int kyrofb_setup(char*);
 extern int mc68x328fb_init(void);
 extern int mc68x328fb_setup(char *);
-//extern int w100fb_init(void);
-//extern int w100fb_setup(char*);
+extern int w100fb_init(void);
+extern int w100fb_setup(char*);
 
 
 static struct {
@@ -389,7 +389,7 @@
 	{ "68328fb", mc68x328fb_init, mc68x328fb_setup },
 #endif
 #ifdef CONFIG_FB_W100
-//	{ "w100", w100fb_init, w100fb_setup },
+	{ "w100", w100fb_init, w100fb_setup },
 #endif
 
 	/*
diff -ur linux-2.6.7-check/include/asm-arm/arch-pxa/hardware.h linux-2.6.7/include/asm-arm/arch-pxa/hardware.h
--- linux-2.6.7-check/include/asm-arm/arch-pxa/hardware.h	2004-06-16 06:18:52.000000000 +0100
+++ linux-2.6.7/include/asm-arm/arch-pxa/hardware.h	2004-06-19 18:49:06.000000000 +0100
@@ -26,21 +26,13 @@
 #define UNCACHED_ADDR		UNCACHED_PHYS_0
 
 /*
- * Intel PXA2xx internal register mapping:
- *
- * 0x40000000 - 0x41ffffff <--> 0xf2000000 - 0xf3ffffff
- * 0x44000000 - 0x45ffffff <--> 0xf4000000 - 0xf5ffffff
- * 0x48000000 - 0x49ffffff <--> 0xf6000000 - 0xf7ffffff
- * 0x4c000000 - 0x4dffffff <--> 0xf8000000 - 0xf9ffffff
- * 0x50000000 - 0x51ffffff <--> 0xfa000000 - 0xfbffffff
- * 0x54000000 - 0x55ffffff <--> 0xfc000000 - 0xfdffffff
- * 0x58000000 - 0x59ffffff <--> 0xfe000000 - 0xffffffff
- *
- * Note that not all PXA2xx chips implement all those addresses, and the
- * kernel only maps the minimum needed range of this mapping.
+ * Intel PXA internal I/O mappings:
+ * 0x40000000 - 0x41ffffff <--> 0xf8000000 - 0xf9ffffff
+ * 0x44000000 - 0x45ffffff <--> 0xfa000000 - 0xfbffffff
+ * 0x48000000 - 0x49ffffff <--> 0xfc000000 - 0xfdffffff
  */
-#define io_p2v(x) (0xf2000000 + ((x) & 0x01ffffff) + (((x) & 0x1c000000) >> 1))
-#define io_v2p(x) (0x3c000000 + ((x) & 0x01ffffff) + (((x) & 0x0e000000) << 1))
+#define io_p2v(x)      ( ((x) | 0xbe000000) ^ (~((x) >> 1) & 0x06000000) )
+#define io_v2p( x )    ( ((x) & 0x41ffffff) ^ ( ((x) & 0x06000000) << 1) )
 
 #ifndef __ASSEMBLY__
 

