All pastes #913062 Raw Edit

Stuff

public text v1 · immutable
·published 2008-02-21 20:21 UTC
rendered paste body
Index: arch/arm/mach-pxa/htcblueangel/blueangel.c
===================================================================
RCS file: /cvs/linux/kernel26/arch/arm/mach-pxa/htcblueangel/blueangel.c,v
retrieving revision 1.39
diff -u -r1.39 blueangel.c
--- arch/arm/mach-pxa/htcblueangel/blueangel.c	26 Jul 2007 00:17:16 -0000	1.39
+++ arch/arm/mach-pxa/htcblueangel/blueangel.c	21 Feb 2008 20:11:07 -0000
@@ -23,6 +23,9 @@
 #include <linux/pm.h>
 #include <linux/bootmem.h>
 #include <linux/platform_device.h>
+#include <linux/gpiodev.h>
+#include <linux/input.h>
+#include <linux/input_pda.h>
 #include <linux/gpio_keys.h>
 
 #include <asm/irq.h>
@@ -39,17 +42,23 @@
 #include <asm/arch/irq.h>
 #include <asm/arch/pxafb.h>
 #include <asm/arch/udc.h>
+#include <asm/arch/irda.h>
 
 #include <asm/hardware/ipaq-asic3.h>
-#include <asm/hardware/asic3_leds.h>
 #include <asm/hardware/asic3_keys.h>
 #include <asm/arch/htcblueangel.h>
 #include <asm/arch/htcblueangel-gpio.h>
 #include <asm/arch/htcblueangel-asic.h>
 #include <linux/mfd/tsc2200.h>
+#include <linux/mfd/pasic3.h>
+#include <linux/mtd/mtd.h>
+#include <linux/mtd/map.h>
+#include <linux/mtd/partitions.h>
+#include <linux/mtd/physmap.h>
 #include <linux/serial_core.h>
 #include <linux/touchscreen-adc.h>
 #include <linux/adc_battery.h>
+#include <asm/hardware/asic3_leds.h>
 #include <asm/arch/pxa2xx_udc_gpio.h>
 
 #include <asm-arm/arch-pxa/serial.h>
@@ -88,7 +97,7 @@
 	{
 		.led_cdev  = {
 			.name	         = "blueangel:phonebuttons",
-			.default_trigger = "blueangel-phonebuttons",
+                        .default_trigger = "backlight",
 		},
 		.hw_num = -1,
 		.gpio_num = ('B'-'A')*16+GPIOB_PHONEL_PWR_ON,
@@ -104,7 +113,7 @@
 	{
 		.led_cdev  = {
 			.name	         = "blueangel:kbdbacklight",
-			.default_trigger = "blueangel-kbdbacklight",
+                       .default_trigger = "input-key",
 		},
 		.hw_num = -1,
 		.gpio_num = ('C'-'A')*16+GPIOC_KEYBL_PWR_ON,
@@ -177,20 +186,117 @@
         }
 };
 
+
+/*
+ * LEDs
+ */
+
+static struct pasic3_led pasic3_leds[] = {
+	{
+		.led = {
+			.name            = "blueangel:wifi",
+			.default_trigger = "wifi", /* and WIFI */
+			.flags = LED_SUPPORTS_HWTIMER,
+		},
+		.hw_num = 1,
+		.mask   = PASIC3_MASK_LED1, /* 0x08 */
+	},
+	{
+		.led = {
+			.name            = "blueangel:bt",
+			.default_trigger = "bluetooth", /* and Bluetooth */
+			.flags = LED_SUPPORTS_HWTIMER,
+		},
+		.hw_num = 0,
+		.mask   = PASIC3_MASK_LED0, /* 0x04 */
+	},
+};
+
+static struct platform_device pasic3;
+
+static struct pasic3_leds_machinfo __devinit pasic3_leds_machinfo = {
+	.num_leds = ARRAY_SIZE(pasic3_leds),
+	.leds = pasic3_leds,
+};
+
+static struct platform_device pasic3_led = {
+	.name = "pasic3-led",
+	.id   = -1,
+	.dev  = {
+		.platform_data = &pasic3_leds_machinfo,
+	},
+};
+
+/*
+ * PASIC3 with DS1WM
+ */
+
+static struct platform_device *pasic3_devices[] = {
+	&pasic3_led,
+};
+
+static struct resource pasic3_resources[] = {
+	[0] = {
+		.start  = 0x11000000,
+		.end	= 0x11000000 + 0x08,
+		.flags  = IORESOURCE_MEM,
+	},
+	/* No IRQ handler in the PASIC3, DS1WM needs an external IRQ */
+	[1] = {
+		.start  = HTCBLUEANGEL_ASIC3_IRQ_BASE + BLUEANGEL_OWM_IRQ,
+		.end    = HTCBLUEANGEL_ASIC3_IRQ_BASE + BLUEANGEL_OWM_IRQ,
+		.flags  = IORESOURCE_IRQ | IORESOURCE_IRQ_LOWEDGE ,
+	}
+};
+
+static struct pasic3_platform_data pasic3_platform_data = {
+	.bus_shift	= 1,
+
+	.child_devs	= pasic3_devices,
+	.num_child_devs	= ARRAY_SIZE(pasic3_devices),
+	.clock_rate     = 16000000,
+};
+
+static struct platform_device pasic3 = {
+	.name		= "pasic3",
+	.id		= -1,
+	.num_resources	= ARRAY_SIZE(pasic3_resources),
+	.resource	= pasic3_resources,
+	.dev = {
+		.platform_data = &pasic3_platform_data,
+	},
+};
+
 static void __init blueangel_init_irq( void )
 {
 	/* Initialize standard IRQs */
 	pxa_init_irq();
+
 }
 
-static void ser_stuart_gpio_config(int enable)
+/* IrDA */
+static void blueangel_irda_transceiver_mode(struct device *dev, int mode)
 {
-	printk("ser_stuart_gpio_config %d\n", enable);
-	if (enable == PXA_UART_CFG_PRE_STARTUP) {
-    STISR=0;
-  }
+        unsigned long flags;
+
+        local_irq_save(flags);
+
+        if (mode & IR_OFF) {
+                DPM_DEBUG("htcblueangel_irda: Turning off port\n");
+    		STISR=1;
+        } else {
+                DPM_DEBUG("htcblueangel_irda: Turning on port\n");
+    		STISR=0;
+        }
+
+        local_irq_restore(flags);
 }
 
+static struct pxaficp_platform_data blueangel_ficp_platform_data = {
+        .transceiver_cap  = IR_SIRMODE | IR_OFF,
+        .transceiver_mode = blueangel_irda_transceiver_mode,
+};
+
 static void ser_hwuart_gpio_config(int enable)
 {
 	printk("ser_hwuart_gpio_config %d\n", enable);
@@ -263,10 +369,11 @@
 	GFER2   = 0x00000000;
 #endif
 
+	pxa_set_ficp_info(&blueangel_ficp_platform_data);
 
-	pxa_serial_funcs[2].configure = ser_stuart_gpio_config;
+	//pxa_serial_funcs[2].configure = ser_stuart_gpio_config;
 	pxa_serial_funcs[3].configure = ser_hwuart_gpio_config;
-	pxa_set_stuart_info(&pxa_serial_funcs[2]);
+	//pxa_set_stuart_info(&pxa_serial_funcs[2]);
 	pxa_set_hwuart_info(&pxa_serial_funcs[3]);
 }
 
@@ -276,39 +383,136 @@
 
 extern struct platform_device blueangel_bl;
 static struct platform_device blueangel_lcd = { .name = "blueangel-lcd", };
-static struct platform_device blueangel_leds = { .name = "blueangel-leds", };
-static struct platform_device blueangel_pcmcia    = { .name =
-                                            "blueangel-pcmcia", };
+static struct platform_device blueangel_irda = { .name = "blueangel-irda", };
+static struct platform_device blueangel_bt = { .name = "blueangel-bt", };
+static struct platform_device blueangel_pcmcia = { .name = "blueangel-pcmcia", };
+
+/* StrataFlash */
+
+static void blueangel_set_vpp(struct map_info *map, int vpp)
+{
+	static int old_vpp = 0;
+
+/* Don't use VPP at the moment
+	if (vpp == old_vpp)
+		return;
+	if (vpp)
+		magician_egpio_set(EGPIO_NR_MAGICIAN_FLASH_VPP, 1);
+	else
+		magician_egpio_set(EGPIO_NR_MAGICIAN_FLASH_VPP, 0);
+*/
+
+	old_vpp = vpp;
+}
+
+#ifdef CONFIG_MTD_PARTITIONS
+static struct mtd_partition wince_partitions[] = {
+	{
+		name:		"bootloader",
+		offset:		0,
+		size:		1*0x40000,
+		mask_flags:	MTD_WRITEABLE,  /* force read-only */
+	},
+	{
+		name:		"osrom",
+		size:		143*0x40000,
+		mask_flags:	MTD_WRITEABLE,  /* force read-only */
+		offset:		MTDPART_OFS_NXTBLK,
+	},
+	{
+		name:		"backup_area",
+		size:		32*0x40000,
+		mask_flags:	MTD_WRITEABLE,  /* force read-only */
+		offset:		MTDPART_OFS_NXTBLK,
+	},
+	{
+		name:		"extrom",
+		size:		76*0x40000,
+		mask_flags:	MTD_WRITEABLE,  /* force read-only */
+		offset:		MTDPART_OFS_NXTBLK,
+	},
+	{
+		name:		"unused",
+		size:		2*0x40000,
+		mask_flags:	MTD_WRITEABLE,  /* force read-only */
+		offset:		MTDPART_OFS_NXTBLK,
+	},
+	{
+		name:		"splash",
+		size:		1*0x40000,
+		offset:		MTDPART_OFS_NXTBLK,
+	},
+	{
+		name:		"asset",
+		size:		1*0x40000,
+		mask_flags:	MTD_WRITEABLE,  /* force read-only */
+		offset:		MTDPART_OFS_NXTBLK,
+	},
+};
+#endif
+
+#define WINDOW_SIZE     	32*1024*1024
+
+static struct resource blueangel_flash_resource = {
+	.start = 0x0,
+	.end   = 0x0 + WINDOW_SIZE - 1,
+	.flags = IORESOURCE_MEM,
+};
+
+struct physmap_flash_data blueangel_flash_data = {
+	.width = 4,
+	.set_vpp = blueangel_set_vpp,
+#ifdef CONFIG_MTD_PARTITIONS
+	.nr_parts = ARRAY_SIZE(wince_partitions),
+	.parts = wince_partitions,
+#endif
+};
+
+static struct platform_device blueangel_flash = {
+	.name          = "physmap-flash",
+	.id            = -1,
+	.num_resources = 1,
+	.resource      = &blueangel_flash_resource,
+	.dev = {
+		.platform_data = &blueangel_flash_data,
+	},
+};
 
 /*
- *  ASIC3 buttons
+ * GPIO buttons
  */
+static struct gpio_keys_button blueangel_button_table[] = {
 
-static struct asic3_keys_button blueangel_asic3_keys_table[] = {
-	{KEY_RECORD,		BLUEANGEL_RECORD_BTN_IRQ,	1,	"Record Button"}, 
-	{KEY_VOLUMEUP,		BLUEANGEL_VOL_UP_BTN_IRQ,	1,	"Volume Up Button"}, 
-	{KEY_VOLUMEDOWN,	BLUEANGEL_VOL_DOWN_BTN_IRQ,	1,	"Volume Down Button"}, 
-	{KEY_CAMERA,		BLUEANGEL_CAMERA_BTN_IRQ,	1,	"Camera Button"}, 
-	{KEY_MENU,		BLUEANGEL_WINDOWS_BTN_IRQ,	1,	"Windows Button"}, 
-	{KEY_EMAIL,		BLUEANGEL_MAIL_BTN_IRQ,		1,	"Mail Button"}, 
-	{KEY_WWW,		BLUEANGEL_WWW_BTN_IRQ,		1,	"Internet Button"}, 
-	{KEY_KPENTER,		BLUEANGEL_OK_BTN_IRQ,		1,	"Ok Button"}, 
+        { KEY_POWER, GPIO_NR_BLUEANGEL_POWER_BUTTON_N, 1 },
 
+        {KEY_RECORD,            HTCBLUEANGEL_ASIC3_GPIO_BASE + BLUEANGEL_RECORD_BTN_IRQ,        1,      "Record Button"},
+        {KEY_VOLUMEUP,          HTCBLUEANGEL_ASIC3_GPIO_BASE + BLUEANGEL_VOL_UP_BTN_IRQ,        1,      "Volume Up Button"},
+        {KEY_VOLUMEDOWN,        HTCBLUEANGEL_ASIC3_GPIO_BASE + BLUEANGEL_VOL_DOWN_BTN_IRQ,      1,      "Volume Down Button"},
+
+        {KEY_CAMERA,            HTCBLUEANGEL_ASIC3_GPIO_BASE + BLUEANGEL_CAMERA_BTN_IRQ,        1,      "Camera Button"},
+        {KEY_MENU,              HTCBLUEANGEL_ASIC3_GPIO_BASE + BLUEANGEL_WINDOWS_BTN_IRQ,       1,      "Windows Button"},
+        {KEY_EMAIL,             HTCBLUEANGEL_ASIC3_GPIO_BASE + BLUEANGEL_MAIL_BTN_IRQ,          1,      "Mail Button"},
+        {KEY_WWW,               HTCBLUEANGEL_ASIC3_GPIO_BASE + BLUEANGEL_WWW_BTN_IRQ,           1,      "Internet Button"},
+        {KEY_KPENTER,           HTCBLUEANGEL_ASIC3_GPIO_BASE + BLUEANGEL_OK_BTN_IRQ,            1,      "Ok Button"},
 };
 
-static struct asic3_keys_platform_data blueangel_asic3_keys_data = {
-	.buttons	= blueangel_asic3_keys_table,
-	.nbuttons	= ARRAY_SIZE(blueangel_asic3_keys_table),
-	.asic3_dev	= &blueangel_asic3.dev,
+static struct gpio_keys_platform_data blueangel_gpio_keys_data = {
+
+     .buttons = blueangel_button_table,
+     .nbuttons = ARRAY_SIZE(blueangel_button_table),
+
 };
 
-static struct platform_device blueangel_asic3_keys = {
-	.name		= "asic3-keys",
-	.dev = {
-	    .platform_data = &blueangel_asic3_keys_data,
-	}
+static struct platform_device blueangel_gpio_keys = {
+    .name = "gpio-keys",
+    .dev = {
+        .platform_data = &blueangel_gpio_keys_data,
+    },
 };
 
+
+
+
 /* UDC device */
 struct pxa2xx_udc_gpio_info blueangel_udc_info = {
 	.detect_gpio = {&pxagpio_device.dev, GPIO_NR_BLUEANGEL_USB_DETECT_N},
@@ -327,17 +531,19 @@
 };
  
 static struct platform_device *blueangel_asic3_devices[] __initdata = {
-	&tsc2200_ts,
+	//&tsc2200_ts,
 	&blueangel_lcd,
 	&blueangel_udc,
 	&blueangel_backup_batt,
 #ifdef CONFIG_MACH_BLUEANGEL_BACKLIGHT
 	&blueangel_bl,
 #endif
-	&blueangel_asic3_keys,
-	&blueangel_leds,
+	&pasic3,
+	&blueangel_gpio_keys,
 	&blueangel_pcmcia,
 	&blueangel_leds_pdev,
+	&blueangel_bt,
+	&blueangel_irda,
 };
 
 
@@ -395,6 +601,7 @@
 	},
 	.bus_shift=1,
 	.irq_base = HTCBLUEANGEL_ASIC3_IRQ_BASE,
+	.gpio_base = HTCBLUEANGEL_ASIC3_GPIO_BASE,
 
 	.child_devs     = blueangel_asic3_devices,                                                                      
 	.num_child_devs = ARRAY_SIZE(blueangel_asic3_devices),       
@@ -442,24 +649,6 @@
         .id     = -1,
 };
 
-/*
- * GPIO buttons
- */
-static struct gpio_keys_button blueangel_button_table[] = {                                                                                          
-    { KEY_POWER, GPIO_NR_BLUEANGEL_POWER_BUTTON_N, 1 },                                                                                           
-};                                                                                                                                               
-
-static struct gpio_keys_platform_data blueangel_pxa_keys_data = {                                                                                    
-     .buttons = blueangel_button_table,                                                                                                           
-     .nbuttons = ARRAY_SIZE(blueangel_button_table),                                                                                              
-};                                                                                                                                               
-                                                                                                                                                  
-static struct platform_device blueangel_pxa_keys = {
-    .name = "gpio-keys",
-    .dev = {
-	.platform_data = &blueangel_pxa_keys_data,
-    },
-};
 
 /*
  *
@@ -467,9 +656,8 @@
 
 static struct platform_device *devices[] __initdata = {
 	&blueangel_asic3,
-	&blueangel_led,
 	&blueangel_tsc2200,
-	&blueangel_pxa_keys,
+ 	&blueangel_flash,
 };
 
 static void __init blueangel_init(void)
Index: arch/arm/mach-pxa/htcblueangel/blueangel_tsc2200.c
===================================================================
RCS file: /cvs/linux/kernel26/arch/arm/mach-pxa/htcblueangel/blueangel_tsc2200.c,v
retrieving revision 1.9
diff -u -r1.9 blueangel_tsc2200.c
--- arch/arm/mach-pxa/htcblueangel/blueangel_tsc2200.c	18 Jul 2007 13:21:03 -0000	1.9
+++ arch/arm/mach-pxa/htcblueangel/blueangel_tsc2200.c	21 Feb 2008 20:11:07 -0000
@@ -95,6 +95,10 @@
 	.irq		= IRQ_NR_BLUEANGEL_TSC2200_KB,
 };
 
+struct tsc2200_ts_platform_info blueangel_tsc2200_ts = {
+       .irq 		= IRQ_NR_BLUEANGEL_TSC2200_TS,
+};
+
 static struct tsc2200_platform_info blueangel_tsc2200_info = {
 
 	// Various callbacks to deal with the ssp
@@ -104,6 +108,7 @@
 
 	// Buttons and touchscreen data that this chip supplies on the blueangel
 	.buttons_info 	  = &blueangel_tsc2200_buttons,
+	.touchscreen_info = &blueangel_tsc2200_ts,
 };
  
 struct platform_device blueangel_tsc2200 = {
Index: drivers/input/touchscreen/Makefile
===================================================================
RCS file: /cvs/linux/kernel26/drivers/input/touchscreen/Makefile,v
retrieving revision 1.21
diff -u -r1.21 Makefile
--- drivers/input/touchscreen/Makefile	17 Jul 2007 17:18:36 -0000	1.21
+++ drivers/input/touchscreen/Makefile	21 Feb 2008 20:11:12 -0000
@@ -41,5 +41,5 @@
 obj-$(CONFIG_TOUCHSCREEN_S3C2410) += s3c2410_ts.o
 obj-$(CONFIG_TOUCHSCREEN_ASIC2) += asic2_ts.o
 obj-$(CONFIG_TOUCHSCREEN_IPAQ_MICRO)	+= micro_ts.o
-#obj-$(CONFIG_TOUCHSCREEN_TSC2200)	+= tsc2200_ts.o
+obj-$(CONFIG_TOUCHSCREEN_TSC2200)	+= tsc2200_ts.o
 obj-$(CONFIG_TOUCHSCREEN_ADC)		+= ts-adc.o
Index: drivers/mfd/tsc2200.c
===================================================================
RCS file: /cvs/linux/kernel26/drivers/mfd/tsc2200.c,v
retrieving revision 1.10
diff -u -r1.10 tsc2200.c
--- drivers/mfd/tsc2200.c	18 Jul 2007 13:07:17 -0000	1.10
+++ drivers/mfd/tsc2200.c	21 Feb 2008 20:11:13 -0000
@@ -134,36 +134,38 @@
 	kfree (devdata->buttons_dev);
 }
 
-static void tsc2200_register_adc_device(struct device *dev) 
+static void tsc2200_register_ts_device(struct device *dev) 
 {
 	struct tsc2200_data *devdata = dev_get_drvdata(dev);
 	struct tsc2200_platform_info *platform_info = devdata->platform;
 	
         struct platform_device *sdev = kzalloc (sizeof (*sdev), GFP_KERNEL);       
-        struct tsc2200_adc_data *adc_devdata = kzalloc (sizeof (*adc_devdata), GFP_KERNEL);
+        struct tsc2200_ts_data *ts_devdata = kzalloc (sizeof (*ts_devdata), GFP_KERNEL);
 	
 
 	// Prepare some platform info for the tsc2200 buttons
-	sdev->name = "tsc2200-adc";
-	sdev->dev.platform_data = adc_devdata;
+	sdev->name = "tsc2200-ts";
+	sdev->dev.platform_data = ts_devdata;
 	sdev->dev.parent = dev;
 	
-	adc_devdata->tsc2200_dev = dev;
-	adc_devdata->platform_info = platform_info->touchscreen_info;	
+	ts_devdata->tsc2200_dev = dev;
+	ts_devdata->platform_info = platform_info->touchscreen_info;	
 	
 	platform_device_register(sdev);
 
 	devdata->ts_dev = sdev;
 }
 
-static void tsc2200_unregister_adc_device(struct device *dev)
+static void tsc2200_unregister_ts_device(struct device *dev)
 {
 	struct tsc2200_data *devdata = dev_get_drvdata(dev);
+	//struct tsc2200_platform_info *platform_info = devdata->platform;
 
 	kfree (devdata->ts_dev->dev.platform_data);
 	kfree (devdata->ts_dev);
 }
 
+
 static int __init tsc2200_probe(struct platform_device *pdev)
 {
 	struct tsc2200_data *devdata;
@@ -181,7 +183,7 @@
 	
 	udelay(300);
 //	tsc2200_reset( dev );
-	//udelay(300);
+	udelay(300);
 
 	printk("%s: SPI: cr0 %08x cr1 %08x sr: %08x it: %08x to: %08x ps: %08x\n",
 			__FUNCTION__,
@@ -192,8 +194,10 @@
 		tsc2200_register_button_device(&pdev->dev);
 	}
 
-	// Register adc class device
-	tsc2200_register_adc_device(&pdev->dev);
+	// Is there a touchscreen on this device?
+	if (devdata->platform->touchscreen_info) {
+		tsc2200_register_ts_device(&pdev->dev);
+	}
 
 	return 0;
 }
@@ -210,7 +214,7 @@
 
 	// Is there a touchscreen on this device?
 	if (devdata->platform->touchscreen_info) {
-		tsc2200_unregister_adc_device(&pdev->dev);
+		tsc2200_unregister_ts_device(&pdev->dev);
 	}
 
 	kfree(devdata);
Index: drivers/w1/masters/ds1wm.c
===================================================================
RCS file: /cvs/linux/kernel26/drivers/w1/masters/ds1wm.c,v
retrieving revision 1.20
diff -u -r1.20 ds1wm.c
--- drivers/w1/masters/ds1wm.c	8 May 2007 18:07:53 -0000	1.20
+++ drivers/w1/masters/ds1wm.c	21 Feb 2008 20:11:16 -0000
@@ -131,6 +131,11 @@
 			complete(ds1wm_data->read_complete);
 	}
 
+        if ((intr & DS1WM_INT_TSRE) && ds1wm_data->write_complete)
+                complete(ds1wm_data->write_complete);
+  
+        intr = ds1wm_read_register(ds1wm_data, DS1WM_INT);
+ 
 	return IRQ_HANDLED;
 }
 
Index: include/asm-arm/arch-pxa/htcblueangel.h
===================================================================
RCS file: /cvs/linux/kernel26/include/asm-arm/arch-pxa/htcblueangel.h,v
retrieving revision 1.1
diff -u -r1.1 htcblueangel.h
--- include/asm-arm/arch-pxa/htcblueangel.h	18 Apr 2007 14:13:42 -0000	1.1
+++ include/asm-arm/arch-pxa/htcblueangel.h	21 Feb 2008 20:11:18 -0000
@@ -1,3 +1,5 @@
 #include <asm/arch/irqs.h>
+#include <linux/gpiodev2.h>
 
 #define HTCBLUEANGEL_ASIC3_IRQ_BASE IRQ_BOARD_START
+#define HTCBLUEANGEL_ASIC3_GPIO_BASE GPIO_BASE_INCREMENT 
Index: include/linux/mfd/tsc2200.h
===================================================================
RCS file: /cvs/linux/kernel26/include/linux/mfd/tsc2200.h,v
retrieving revision 1.6
diff -u -r1.6 tsc2200.h
--- include/linux/mfd/tsc2200.h	19 Apr 2007 22:53:58 -0000	1.6
+++ include/linux/mfd/tsc2200.h	21 Feb 2008 20:11:21 -0000
@@ -66,10 +66,10 @@
 #define TSC2200_CTRLREG_ADC_AD_MASK (0x3<<10)  
 #define TSC2200_CTRLREG_ADC_PSM_TSC2200 (1<<15) // pen status mode on ctrlreg adc
 #define TSC2200_CTRLREG_ADC_STS (1<<14) // stop continuous scanning.
-#define TSC2200_CTRLREG_ADC_AD3 (13) // 
-#define TSC2200_CTRLREG_ADC_AD2 (12) // 
-#define TSC2200_CTRLREG_ADC_AD1 (11) // 
-#define TSC2200_CTRLREG_ADC_AD0 (10) // 
+#define TSC2200_CTRLREG_ADC_AD3 (1<<13) // 
+#define TSC2200_CTRLREG_ADC_AD2 (1<<12) // 
+#define TSC2200_CTRLREG_ADC_AD1 (1<<11) // 
+#define TSC2200_CTRLREG_ADC_AD0 (1<<10) // 
 #define TSC2200_CTRLREG_ADC_RES(x) ((x<<8) & TSC2200_CTRLREG_ADC_RES_MASK )
 #define TSC2200_CTRLREG_ADC_RES_MASK (0x3<<8)  
 #define TSC2200_CTRLREG_ADC_RES_12BITP (0) // 12-bit ADC resolution (default)
@@ -153,6 +153,18 @@
  * Definitions
  */
 
+struct tsc2200_ts_platform_info {
+       int irq;
+};
+
+struct tsc2200_ts_data {
+       struct tsc2200_ts_platform_info *platform_info;
+       struct device *tsc2200_dev;
+       struct timer_list timer;
+       struct input_dev *input_dev;
+};
+
+
 struct tsc2200_data {
 	spinlock_t lock;
 	struct tsc2200_platform_info *platform;
@@ -172,7 +184,6 @@
 	
 };
 
-
 /* Sensor pins available */
 enum {
         TSC2200_PIN_XPOS  = 0,