Index: linux-2.6.15/arch/arm/mach-pxa/tosa.c
===================================================================
--- linux-2.6.15.orig/arch/arm/mach-pxa/tosa.c	2006-01-30 00:35:18.000000000 +0000
+++ linux-2.6.15/arch/arm/mach-pxa/tosa.c	2006-01-30 00:37:08.000000000 +0000
@@ -39,6 +39,7 @@
 #include <asm/arch/tosa.h>
 
 #include <asm/hardware/scoop.h>
+#include <asm/hardware/tc6393.h>
 #include <asm/mach/sharpsl_param.h>
 
 #include "generic.h"
@@ -269,12 +270,40 @@
 	.id		= -1,
 };
 
+/*
+ * Toshiba Mobile IO Controller
+ */
+static struct resource tc6393_resources[] = {
+	[0] = {
+		.start		= TOSA_LCDC_PHYS,  
+		.end		= TOSA_LCDC_PHYS + 0x001FFFFF,
+		.flags		= IORESOURCE_MEM,
+	},
+	
+	[1] = {
+		.start		= TOSA_IRQ_GPIO_TC6393_INT,
+		.end		= TOSA_IRQ_GPIO_TC6393_INT,
+		.flags		= IORESOURCE_IRQ,
+	},
+};
+
+struct platform_device tc6393_device = {
+	.name		= "tc6393",
+	.id		= -1,
+	.dev		= {
+		.parent 	= &tosanssp_device.dev,
+	},
+	.num_resources	= ARRAY_SIZE(tc6393_resources),
+	.resource	= tc6393_resources,
+};
+
 static struct platform_device *devices[] __initdata = {
 	&tosascoop_device,
 	&tosascoop_jc_device,
 	&tosakbd_device,
 	&tosaled_device,
 	&tosa_audio_device,
+	&tc6393_device,
 };
 
 static void __init tosa_init(void)
Index: linux-2.6.15/include/asm-arm/arch-pxa/tosa.h
===================================================================
--- linux-2.6.15.orig/include/asm-arm/arch-pxa/tosa.h	2006-01-03 03:21:10.000000000 +0000
+++ linux-2.6.15/include/asm-arm/arch-pxa/tosa.h	2006-01-30 00:35:47.000000000 +0000
@@ -21,6 +21,29 @@
 #define TOSA_SCOOP_PHYS  	(PXA_CS5_PHYS + 0x00800000)
 
 /*
+ * TC6393 GPIOs
+ */
+#define TOSA_TC6393_TG_ON  		TC6393_GPIO0
+#define TOSA_TC6393_L_MUTE  		TC6393_GPIO1
+#define TOSA_TC6393_BL_C20MA		TC6393_GPIO3
+#define TOSA_TC6393_CARD_VCC_ON 	TC6393_GPIO4
+#define TOSA_TC6393_CHARGE_OFF 		TC6393_GPIO6
+#define TOSA_TC6393_CHARGE_OFF_JC 	TC6393_GPIO7
+#define TOSA_TC6393_BAT0_V_ON 		TC6393_GPIO9
+#define TOSA_TC6393_BAT1_V_ON 		TC6393_GPIO10
+#define TOSA_TC6393_BU_CHRG_ON 		TC6393_GPIO11
+#define TOSA_TC6393_BAT_SW_ON 		TC6393_GPIO12
+#define TOSA_TC6393_BAT0_TH_ON 		TC6393_GPIO14
+#define TOSA_TC6393_BAT1_TH_ON 		TC6393_GPIO15
+
+#define TOSA_TC6393_GPO_OE ( TOSA_TC6393_TG_ON | TOSA_TC6393_L_MUTE | TOSA_TC6393_BL_C20MA | \
+		TOSA_TC6393_CARD_VCC_ON | TOSA_TC6393_CHARGE_OFF | \
+		TOSA_TC6393_CHARGE_OFF_JC | TOSA_TC6393_BAT0_V_ON | \
+		TOSA_TC6393_BAT1_V_ON | TOSA_TC6393_BU_CHRG_ON | \
+		TOSA_TC6393_BAT_SW_ON | TOSA_TC6393_BAT0_TH_ON | \
+		TOSA_TC6393_BAT1_TH_ON )
+
+/*
  * SCOOP2 internal GPIOs
  */
 #define TOSA_SCOOP_PXA_VCORE1		SCOOP_GPCR_PA11
@@ -163,4 +186,5 @@
 
 extern struct platform_device tosascoop_jc_device;
 extern struct platform_device tosascoop_device;
+extern struct platform_device tc6393_device;
 #endif /* _ASM_ARCH_TOSA_H_ */

