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);
Index: linux-2.6.15-rc2/arch/arm/mach-pxa/spitz.c
===================================================================
--- linux-2.6.15-rc2.orig/arch/arm/mach-pxa/spitz.c	2005-12-09 00:59:57.322756616 +0000
+++ linux-2.6.15-rc2/arch/arm/mach-pxa/spitz.c	2005-12-09 14:41:42.972794120 +0000
@@ -477,6 +477,8 @@
 	.id		= -1,
 };
 
+EXPORT_SYMBOL_GPL(akitaioexp_device);
+
 static void __init akita_init(void)
 {
 	spitz_ficp_platform_data.transceiver_mode = akita_irda_transceiver_mode;
