Index: linux-2.6.15-rc2/sound/soc/pxa/Makefile
===================================================================
--- linux-2.6.15-rc2.orig/sound/soc/pxa/Makefile	2005-12-05 11:32:58.000000000 +0000
+++ linux-2.6.15-rc2/sound/soc/pxa/Makefile	2005-12-06 17:27:56.000000000 +0000
@@ -1,38 +1,22 @@
+# PXA Platform Support
 snd-soc-pxa2xx-objs := pxa2xx-pcm.o
 snd-soc-pxa2xx-ac97-objs := pxa2xx-ac97.o
 snd-soc-pxa2xx-i2s-objs := pxa2xx-i2s.o
 snd-soc-pxa2xx-ssp-objs := pxa2xx-ssp.o
-snd-soc-mainstone-objs := mainstone.o
-snd-soc-tosa-objs := tosa.o
-snd-soc-corgi-objs := corgi.o
-snd-soc-mainstone-test-objs := mainstone.o
 
 obj-$(CONFIG_SND_PXA2xx_SOC) += snd-soc-pxa2xx.o
+obj-$(CONFIG_SND_PXA2xx_SOC_AC97) += snd-soc-pxa2xx-ac97.o
+obj-$(CONFIG_SND_PXA2xx_SOC_I2S) += snd-soc-pxa2xx-i2s.o
+obj-$(CONFIG_SND_PXA2xx_SOC_SSP) += snd-soc-pxa2xx-ssp.o
 
-ifeq ($(CONFIG_SND_PXA2xx_SOC_AC97),y)
-obj-$(CONFIG_SND_PXA2xx_SOC) += snd-soc-pxa2xx-ac97.o
-endif
-
-ifeq ($(CONFIG_SND_PXA2xx_SOC_I2S),y)
-obj-$(CONFIG_SND_PXA2xx_SOC) += snd-soc-pxa2xx-i2s.o
-endif
-
-ifeq ($(CONFIG_SND_PXA2xx_SOC_SSP),y)
-obj-$(CONFIG_SND_PXA2xx_SOC) += snd-soc-pxa2xx-ssp.o
-endif
-
-ifeq ($(CONFIG_SND_PXA2xx_SOC_MAINSTONE),y)
-obj-$(CONFIG_SND_PXA2xx_SOC) += snd-soc-mainstone.o
-endif
-
-ifeq ($(CONFIG_SND_PXA2xx_SOC_MAINSTONE_TEST),y)
-obj-$(CONFIG_SND_PXA2xx_SOC) += snd-soc-mainstone.o
-endif
+# PXA Machine Support
+snd-soc-corgi-objs := corgi.o
+snd-soc-mainstone-objs := mainstone.o
+snd-soc-mainstone-wm8753-objs := mainstone-wm8753.o
+snd-soc-tosa-objs := tosa.o
 
-ifeq ($(CONFIG_SND_PXA2xx_SOC_TOSA),y)
-obj-$(CONFIG_SND_PXA2xx_SOC) += snd-soc-tosa.o
-endif
+obj-$(CONFIG_SND_PXA2xx_SOC_CORGI) += snd-soc-corgi.o
+obj-$(CONFIG_SND_PXA2xx_MAINSTONE) += snd-soc-mainstone.o
+obj-$(CONFIG_SND_PXA2xx_MAINSTONE_WM8753) += snd-soc-mainstone-wm8753.o
+obj-$(CONFIG_SND_PXA2xx_SOC_TOSA) += snd-soc-tosa.o
 
-ifeq ($(CONFIG_SND_PXA2xx_SOC_CORGI),y)
-obj-$(CONFIG_SND_PXA2xx_SOC) += snd-soc-corgi.o
-endif
\ No newline at end of file
Index: linux-2.6.15-rc2/drivers/input/keyboard/spitzkbd.c
===================================================================
--- linux-2.6.15-rc2.orig/drivers/input/keyboard/spitzkbd.c	2005-11-20 03:25:03.000000000 +0000
+++ linux-2.6.15-rc2/drivers/input/keyboard/spitzkbd.c	2005-12-06 17:31:56.000000000 +0000
@@ -308,6 +308,23 @@
 	}
 }
 
+static struct spitzkbd *spitzkbd_data_ptr;
+
+void spitzkbd_report_hp(int status)
+{
+	unsigned long flags;
+
+	if (!spitzkbd_data_ptr)
+		return;
+
+	spin_lock_irqsave(&spitzkbd_data_ptr->lock, flags);
+	input_report_switch(spitzkbd_data_ptr->input, SW_2, (status != 0));
+	input_sync(spitzkbd_data_ptr->input);
+	spin_unlock_irqrestore(&spitzkbd_data_ptr->lock, flags);
+}
+
+EXPORT_SYMBOL_GPL(spitzkbd_report_hp);
+
 #ifdef CONFIG_PM
 static int spitzkbd_suspend(struct platform_device *dev, pm_message_t state)
 {
@@ -434,6 +451,8 @@
 
 	printk(KERN_INFO "input: Spitz Keyboard Registered\n");
 
+	spitzkbd_data_ptr = spitzkbd;
+
 	return 0;
 }
 
@@ -453,6 +472,7 @@
 	del_timer_sync(&spitzkbd->htimer);
 	del_timer_sync(&spitzkbd->timer);
 
+	spitzkbd_data_ptr = NULL;
 	input_unregister_device(spitzkbd->input);
 
 	kfree(spitzkbd);
Index: linux-2.6.15-rc2/drivers/input/keyboard/corgikbd.c
===================================================================
--- linux-2.6.15-rc2.orig/drivers/input/keyboard/corgikbd.c	2005-12-01 12:25:16.000000000 +0000
+++ linux-2.6.15-rc2/drivers/input/keyboard/corgikbd.c	2005-12-04 21:32:31.000000000 +0000
@@ -258,6 +258,23 @@
 	mod_timer(&corgikbd_data->htimer, jiffies + HINGE_SCAN_INTERVAL);
 }
 
+static struct corgikbd *corgikbd_data_ptr;
+
+void corgikbd_report_hp(int status)
+{
+	unsigned long flags;
+
+	if (!corgikbd_data_ptr)
+		return;
+
+	spin_lock_irqsave(&corgikbd_data_ptr->lock, flags);
+	input_report_switch(corgikbd_data_ptr->input, SW_2, (status != 0));
+	input_sync(corgikbd_data_ptr->input);
+	spin_unlock_irqrestore(&corgikbd_data_ptr->lock, flags);
+}
+
+EXPORT_SYMBOL_GPL(corgikbd_report_hp);
+
 #ifdef CONFIG_PM
 static int corgikbd_suspend(struct platform_device *dev, pm_message_t state)
 {
@@ -363,6 +380,8 @@
 	for (i = 0; i < CORGI_KEY_STROBE_NUM; i++)
 		pxa_gpio_mode(CORGI_GPIO_KEY_STROBE(i) | GPIO_OUT | GPIO_DFLT_HIGH);
 
+	corgikbd_data_ptr = corgikbd;
+
 	return 0;
 }
 
Index: linux-2.6.15-rc2/include/asm-arm/arch-pxa/corgi.h
===================================================================
--- linux-2.6.15-rc2.orig/include/asm-arm/arch-pxa/corgi.h	2005-11-20 03:25:03.000000000 +0000
+++ linux-2.6.15-rc2/include/asm-arm/arch-pxa/corgi.h	2005-12-04 21:30:18.000000000 +0000
@@ -106,5 +106,7 @@
 extern struct platform_device corgissp_device;
 extern struct platform_device corgifb_device;
 
+void corgikbd_report_hp(int status);
+
 #endif /* __ASM_ARCH_CORGI_H  */
 
Index: linux-2.6.15-rc2/include/asm-arm/arch-pxa/spitz.h
===================================================================
--- linux-2.6.15-rc2.orig/include/asm-arm/arch-pxa/spitz.h	2005-11-20 03:25:03.000000000 +0000
+++ linux-2.6.15-rc2/include/asm-arm/arch-pxa/spitz.h	2005-12-06 17:39:25.000000000 +0000
@@ -155,4 +155,5 @@
 extern struct platform_device spitzssp_device;
 extern struct sharpsl_charger_machinfo spitz_pm_machinfo;
 
-extern void spitz_lcd_power(int on);
+void spitz_lcd_power(int on);
+void spitzkbd_report_hp(int status);
