diff options
-rw-r--r-- | meta/packages/linux/linux-rp-2.6.24/htcuni.patch | 332 | ||||
-rw-r--r-- | meta/packages/linux/linux-rp-2.6.24/pxa27x-resume.patch | 41 | ||||
-rw-r--r-- | meta/packages/linux/linux-rp-2.6.24/pxa2xx_udc-clock.patch | 221 | ||||
-rw-r--r-- | meta/packages/linux/linux-rp-2.6.24/sharpsl-rc-r1.patch | 527 | ||||
-rw-r--r-- | meta/packages/linux/linux-rp-2.6.24/sharpsl-rc-r2.patch | 180 | ||||
-rw-r--r-- | meta/packages/linux/linux-rp-2.6.24/spitz_h_rewrite.patch | 497 |
6 files changed, 1628 insertions, 170 deletions
diff --git a/meta/packages/linux/linux-rp-2.6.24/htcuni.patch b/meta/packages/linux/linux-rp-2.6.24/htcuni.patch index f46265056..8448c4ec0 100644 --- a/meta/packages/linux/linux-rp-2.6.24/htcuni.patch +++ b/meta/packages/linux/linux-rp-2.6.24/htcuni.patch @@ -57,10 +57,10 @@ include/linux/soc/tmio_mmc.h | 17 56 files changed, 7469 insertions(+), 1 deletion(-) -Index: linux-2.6.23/arch/arm/mach-pxa/htcuniversal/Makefile +Index: linux-2.6.24/arch/arm/mach-pxa/htcuniversal/Makefile =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.23/arch/arm/mach-pxa/htcuniversal/Makefile 2008-01-20 18:59:46.000000000 +0000 ++++ linux-2.6.24/arch/arm/mach-pxa/htcuniversal/Makefile 2008-03-10 16:09:23.000000000 +0000 @@ -0,0 +1,19 @@ +# +# Makefile for HTC Universal @@ -81,10 +81,10 @@ Index: linux-2.6.23/arch/arm/mach-pxa/htcuniversal/Makefile +obj-$(CONFIG_HTCUNIVERSAL_UDC) += htcuniversal_udc.o + +obj-$(CONFIG_HTCUNIVERSAL_AK4641) += htcuniversal_ak4641.o -Index: linux-2.6.23/arch/arm/mach-pxa/htcuniversal/htcuniversal.c +Index: linux-2.6.24/arch/arm/mach-pxa/htcuniversal/htcuniversal.c =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.23/arch/arm/mach-pxa/htcuniversal/htcuniversal.c 2008-01-20 18:59:46.000000000 +0000 ++++ linux-2.6.24/arch/arm/mach-pxa/htcuniversal/htcuniversal.c 2008-03-10 16:09:23.000000000 +0000 @@ -0,0 +1,468 @@ +/* + * Hardware definitions for HTC Universal @@ -554,10 +554,10 @@ Index: linux-2.6.23/arch/arm/mach-pxa/htcuniversal/htcuniversal.c + .init_machine = htcuniversal_init, + .timer = &pxa_timer, +MACHINE_END -Index: linux-2.6.23/arch/arm/mach-pxa/htcuniversal/htcuniversal_ak4641.c +Index: linux-2.6.24/arch/arm/mach-pxa/htcuniversal/htcuniversal_ak4641.c =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.23/arch/arm/mach-pxa/htcuniversal/htcuniversal_ak4641.c 2008-01-20 18:59:46.000000000 +0000 ++++ linux-2.6.24/arch/arm/mach-pxa/htcuniversal/htcuniversal_ak4641.c 2008-03-10 16:09:23.000000000 +0000 @@ -0,0 +1,917 @@ +/* + * Audio support for codec Asahi Kasei AK4641 @@ -1476,10 +1476,10 @@ Index: linux-2.6.23/arch/arm/mach-pxa/htcuniversal/htcuniversal_ak4641.c +MODULE_LICENSE("GPL"); + +/* end {{ Module }} */ -Index: linux-2.6.23/arch/arm/mach-pxa/htcuniversal/htcuniversal_ak4641.h +Index: linux-2.6.24/arch/arm/mach-pxa/htcuniversal/htcuniversal_ak4641.h =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.23/arch/arm/mach-pxa/htcuniversal/htcuniversal_ak4641.h 2008-01-20 18:59:46.000000000 +0000 ++++ linux-2.6.24/arch/arm/mach-pxa/htcuniversal/htcuniversal_ak4641.h 2008-03-10 16:09:23.000000000 +0000 @@ -0,0 +1,65 @@ +/* + * Audio support for codec Asahi Kasei AK4641 @@ -1546,10 +1546,10 @@ Index: linux-2.6.23/arch/arm/mach-pxa/htcuniversal/htcuniversal_ak4641.h +void snd_ak4641_hp_detected(struct snd_ak4641 *ak, int detected); /* atomic context */ + +#endif /* __SOUND_AK4641_H */ -Index: linux-2.6.23/arch/arm/mach-pxa/htcuniversal/htcuniversal_asic3_leds.c +Index: linux-2.6.24/arch/arm/mach-pxa/htcuniversal/htcuniversal_asic3_leds.c =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.23/arch/arm/mach-pxa/htcuniversal/htcuniversal_asic3_leds.c 2008-01-20 18:59:46.000000000 +0000 ++++ linux-2.6.24/arch/arm/mach-pxa/htcuniversal/htcuniversal_asic3_leds.c 2008-03-10 16:09:23.000000000 +0000 @@ -0,0 +1,143 @@ +/* + * LEDs support for the HP iPaq hx4700 @@ -1694,10 +1694,10 @@ Index: linux-2.6.23/arch/arm/mach-pxa/htcuniversal/htcuniversal_asic3_leds.c +MODULE_AUTHOR("Anton Vorontsov <cbou@mail.ru>"); +MODULE_DESCRIPTION("htcuniversal LEDs driver"); +MODULE_LICENSE("GPL"); -Index: linux-2.6.23/arch/arm/mach-pxa/htcuniversal/htcuniversal_bl.c +Index: linux-2.6.24/arch/arm/mach-pxa/htcuniversal/htcuniversal_bl.c =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.23/arch/arm/mach-pxa/htcuniversal/htcuniversal_bl.c 2008-01-20 18:59:46.000000000 +0000 ++++ linux-2.6.24/arch/arm/mach-pxa/htcuniversal/htcuniversal_bl.c 2008-03-10 16:09:23.000000000 +0000 @@ -0,0 +1,61 @@ +/* + * Use consistent with the GNU GPL is permitted, @@ -1760,10 +1760,10 @@ Index: linux-2.6.23/arch/arm/mach-pxa/htcuniversal/htcuniversal_bl.c +MODULE_AUTHOR("Paul Sokolovsky <pmiscml@gmail.com>"); +MODULE_DESCRIPTION("Backlight driver for HTC Universal"); +MODULE_LICENSE("GPL"); -Index: linux-2.6.23/arch/arm/mach-pxa/htcuniversal/htcuniversal_bt.c +Index: linux-2.6.24/arch/arm/mach-pxa/htcuniversal/htcuniversal_bt.c =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.23/arch/arm/mach-pxa/htcuniversal/htcuniversal_bt.c 2008-01-20 18:59:46.000000000 +0000 ++++ linux-2.6.24/arch/arm/mach-pxa/htcuniversal/htcuniversal_bt.c 2008-03-10 16:09:23.000000000 +0000 @@ -0,0 +1,135 @@ +/* Bluetooth interface driver for TI BRF6150 on HX4700 + * @@ -1900,10 +1900,10 @@ Index: linux-2.6.23/arch/arm/mach-pxa/htcuniversal/htcuniversal_bt.c + +/* vim600: set noexpandtab sw=8 ts=8 :*/ + -Index: linux-2.6.23/arch/arm/mach-pxa/htcuniversal/htcuniversal_bt.h +Index: linux-2.6.24/arch/arm/mach-pxa/htcuniversal/htcuniversal_bt.h =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.23/arch/arm/mach-pxa/htcuniversal/htcuniversal_bt.h 2008-01-20 18:59:46.000000000 +0000 ++++ linux-2.6.24/arch/arm/mach-pxa/htcuniversal/htcuniversal_bt.h 2008-03-10 16:09:23.000000000 +0000 @@ -0,0 +1,17 @@ +/* + * Bluetooth support file for calling bluetooth configuration functions @@ -1922,10 +1922,10 @@ Index: linux-2.6.23/arch/arm/mach-pxa/htcuniversal/htcuniversal_bt.h + + +#endif -Index: linux-2.6.23/arch/arm/mach-pxa/htcuniversal/htcuniversal_buttons.c +Index: linux-2.6.24/arch/arm/mach-pxa/htcuniversal/htcuniversal_buttons.c =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.23/arch/arm/mach-pxa/htcuniversal/htcuniversal_buttons.c 2008-01-20 18:59:46.000000000 +0000 ++++ linux-2.6.24/arch/arm/mach-pxa/htcuniversal/htcuniversal_buttons.c 2008-03-10 16:09:23.000000000 +0000 @@ -0,0 +1,87 @@ +/* + * Buttons driver for HTC Universal @@ -2014,10 +2014,10 @@ Index: linux-2.6.23/arch/arm/mach-pxa/htcuniversal/htcuniversal_buttons.c +MODULE_AUTHOR ("Joshua Wise, Pawel Kolodziejski, Paul Sokolosvky"); +MODULE_DESCRIPTION ("Buttons support for HTC Universal"); +MODULE_LICENSE ("GPL"); -Index: linux-2.6.23/arch/arm/mach-pxa/htcuniversal/htcuniversal_core.c +Index: linux-2.6.24/arch/arm/mach-pxa/htcuniversal/htcuniversal_core.c =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.23/arch/arm/mach-pxa/htcuniversal/htcuniversal_core.c 2008-01-20 18:59:46.000000000 +0000 ++++ linux-2.6.24/arch/arm/mach-pxa/htcuniversal/htcuniversal_core.c 2008-03-10 16:09:23.000000000 +0000 @@ -0,0 +1,226 @@ +/* Core Hardware driver for Hx4700 (Serial, ASIC3, EGPIOs) + * @@ -2245,10 +2245,10 @@ Index: linux-2.6.23/arch/arm/mach-pxa/htcuniversal/htcuniversal_core.c +MODULE_LICENSE("GPL"); + +/* vim600: set noexpandtab sw=8 ts=8 :*/ -Index: linux-2.6.23/arch/arm/mach-pxa/htcuniversal/htcuniversal_lcd.c +Index: linux-2.6.24/arch/arm/mach-pxa/htcuniversal/htcuniversal_lcd.c =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.23/arch/arm/mach-pxa/htcuniversal/htcuniversal_lcd.c 2008-01-20 18:59:46.000000000 +0000 ++++ linux-2.6.24/arch/arm/mach-pxa/htcuniversal/htcuniversal_lcd.c 2008-03-10 16:09:23.000000000 +0000 @@ -0,0 +1,212 @@ +/* + * Use consistent with the GNU GPL is permitted, @@ -2462,10 +2462,10 @@ Index: linux-2.6.23/arch/arm/mach-pxa/htcuniversal/htcuniversal_lcd.c +MODULE_DESCRIPTION("Framebuffer driver for HTC Universal"); +MODULE_LICENSE("GPL"); + -Index: linux-2.6.23/arch/arm/mach-pxa/htcuniversal/htcuniversal_phone.c +Index: linux-2.6.24/arch/arm/mach-pxa/htcuniversal/htcuniversal_phone.c =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.23/arch/arm/mach-pxa/htcuniversal/htcuniversal_phone.c 2008-01-20 18:59:46.000000000 +0000 ++++ linux-2.6.24/arch/arm/mach-pxa/htcuniversal/htcuniversal_phone.c 2008-03-10 16:09:23.000000000 +0000 @@ -0,0 +1,167 @@ + +/* Phone interface driver for Qualcomm MSM6250 on HTC Universal @@ -2634,10 +2634,10 @@ Index: linux-2.6.23/arch/arm/mach-pxa/htcuniversal/htcuniversal_phone.c +MODULE_LICENSE("GPL"); + +/* vim600: set noexpandtab sw=8 ts=8 :*/ -Index: linux-2.6.23/arch/arm/mach-pxa/htcuniversal/htcuniversal_phone.h +Index: linux-2.6.24/arch/arm/mach-pxa/htcuniversal/htcuniversal_phone.h =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.23/arch/arm/mach-pxa/htcuniversal/htcuniversal_phone.h 2008-01-20 18:59:46.000000000 +0000 ++++ linux-2.6.24/arch/arm/mach-pxa/htcuniversal/htcuniversal_phone.h 2008-03-10 16:09:23.000000000 +0000 @@ -0,0 +1,16 @@ +/* + * Bluetooth support file for calling bluetooth configuration functions @@ -2655,10 +2655,10 @@ Index: linux-2.6.23/arch/arm/mach-pxa/htcuniversal/htcuniversal_phone.h +}; + +#endif -Index: linux-2.6.23/arch/arm/mach-pxa/htcuniversal/htcuniversal_pm.c +Index: linux-2.6.24/arch/arm/mach-pxa/htcuniversal/htcuniversal_pm.c =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.23/arch/arm/mach-pxa/htcuniversal/htcuniversal_pm.c 2008-01-20 18:59:46.000000000 +0000 ++++ linux-2.6.24/arch/arm/mach-pxa/htcuniversal/htcuniversal_pm.c 2008-03-10 16:09:23.000000000 +0000 @@ -0,0 +1,69 @@ +/* + * MyPal 716 power management support for the original HTC IPL in DoC G3 @@ -2729,10 +2729,10 @@ Index: linux-2.6.23/arch/arm/mach-pxa/htcuniversal/htcuniversal_pm.c + pxa_pm_set_ll_ops(&htcuniversal_ll_pm_ops); +} +#endif /* CONFIG_PM */ -Index: linux-2.6.23/arch/arm/mach-pxa/htcuniversal/htcuniversal_power2.c +Index: linux-2.6.24/arch/arm/mach-pxa/htcuniversal/htcuniversal_power2.c =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.23/arch/arm/mach-pxa/htcuniversal/htcuniversal_power2.c 2008-01-20 18:59:46.000000000 +0000 ++++ linux-2.6.24/arch/arm/mach-pxa/htcuniversal/htcuniversal_power2.c 2008-03-10 16:09:23.000000000 +0000 @@ -0,0 +1,97 @@ +/* + * pda_power driver for HTC Universal @@ -2831,10 +2831,10 @@ Index: linux-2.6.23/arch/arm/mach-pxa/htcuniversal/htcuniversal_power2.c + +MODULE_DESCRIPTION("Power driver for HTC Universal"); +MODULE_LICENSE("GPL"); -Index: linux-2.6.23/arch/arm/mach-pxa/htcuniversal/htcuniversal_ts2.c +Index: linux-2.6.24/arch/arm/mach-pxa/htcuniversal/htcuniversal_ts2.c =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.23/arch/arm/mach-pxa/htcuniversal/htcuniversal_ts2.c 2008-01-20 18:59:46.000000000 +0000 ++++ linux-2.6.24/arch/arm/mach-pxa/htcuniversal/htcuniversal_ts2.c 2008-03-10 16:09:23.000000000 +0000 @@ -0,0 +1,490 @@ +/* Touch screen driver for the TI something-or-other + * @@ -3326,10 +3326,10 @@ Index: linux-2.6.23/arch/arm/mach-pxa/htcuniversal/htcuniversal_ts2.c +MODULE_LICENSE("GPL"); +MODULE_AUTHOR("Aric Blumer, SDG Systems, LLC"); +MODULE_DESCRIPTION("HTC Universal Touch Screen Driver"); -Index: linux-2.6.23/arch/arm/mach-pxa/htcuniversal/htcuniversal_udc.c +Index: linux-2.6.24/arch/arm/mach-pxa/htcuniversal/htcuniversal_udc.c =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.23/arch/arm/mach-pxa/htcuniversal/htcuniversal_udc.c 2008-01-20 18:59:46.000000000 +0000 ++++ linux-2.6.24/arch/arm/mach-pxa/htcuniversal/htcuniversal_udc.c 2008-03-10 16:09:23.000000000 +0000 @@ -0,0 +1,71 @@ + +/* @@ -3402,10 +3402,10 @@ Index: linux-2.6.23/arch/arm/mach-pxa/htcuniversal/htcuniversal_udc.c + +module_init(htcuniversal_udc_init); +MODULE_LICENSE("GPL"); -Index: linux-2.6.23/arch/arm/mach-pxa/htcuniversal/tsc2046_ts.h +Index: linux-2.6.24/arch/arm/mach-pxa/htcuniversal/tsc2046_ts.h =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.23/arch/arm/mach-pxa/htcuniversal/tsc2046_ts.h 2008-01-20 18:59:46.000000000 +0000 ++++ linux-2.6.24/arch/arm/mach-pxa/htcuniversal/tsc2046_ts.h 2008-03-10 16:09:23.000000000 +0000 @@ -0,0 +1,20 @@ +/* + * temporary TSC2046 touchscreen hack @@ -3427,13 +3427,13 @@ Index: linux-2.6.23/arch/arm/mach-pxa/htcuniversal/tsc2046_ts.h +#define TSC2046_SAMPLE_Y 0x90 + +#endif -Index: linux-2.6.23/arch/arm/mach-pxa/Kconfig +Index: linux-2.6.24/arch/arm/mach-pxa/Kconfig =================================================================== ---- linux-2.6.23.orig/arch/arm/mach-pxa/Kconfig 2008-01-20 18:59:41.000000000 +0000 -+++ linux-2.6.23/arch/arm/mach-pxa/Kconfig 2008-01-20 18:59:46.000000000 +0000 -@@ -92,6 +92,14 @@ config MACH_HX2750 - help - This enables support for the HP iPAQ HX2750 handheld. +--- linux-2.6.24.orig/arch/arm/mach-pxa/Kconfig 2008-03-10 16:08:01.000000000 +0000 ++++ linux-2.6.24/arch/arm/mach-pxa/Kconfig 2008-03-10 16:09:23.000000000 +0000 +@@ -92,6 +92,14 @@ + bool "Sharp PXA270 models (SL-Cxx00)" + select PXA27x +config MACH_HTCUNIVERSAL + bool "HTC Universal" @@ -3446,7 +3446,7 @@ Index: linux-2.6.23/arch/arm/mach-pxa/Kconfig endchoice endif -@@ -111,6 +119,86 @@ endchoice +@@ -111,6 +119,86 @@ endif @@ -3533,16 +3533,16 @@ Index: linux-2.6.23/arch/arm/mach-pxa/Kconfig endmenu config MACH_POODLE -@@ -196,4 +284,3 @@ config PXA_KEYS +@@ -196,4 +284,3 @@ depends on (PXA25x || PXA27x) && INPUT endif - -Index: linux-2.6.23/arch/arm/mach-pxa/Makefile +Index: linux-2.6.24/arch/arm/mach-pxa/Makefile =================================================================== ---- linux-2.6.23.orig/arch/arm/mach-pxa/Makefile 2008-01-20 18:59:41.000000000 +0000 -+++ linux-2.6.23/arch/arm/mach-pxa/Makefile 2008-01-20 18:59:46.000000000 +0000 -@@ -23,6 +23,7 @@ obj-$(CONFIG_MACH_POODLE) += poodle.o co +--- linux-2.6.24.orig/arch/arm/mach-pxa/Makefile 2008-03-10 16:08:01.000000000 +0000 ++++ linux-2.6.24/arch/arm/mach-pxa/Makefile 2008-03-10 16:09:23.000000000 +0000 +@@ -23,6 +23,7 @@ obj-$(CONFIG_MACH_TOSA) += tosa.o obj-$(CONFIG_MACH_EM_X270) += em-x270.o obj-$(CONFIG_MACH_HX2750) += hx2750.o hx2750_test.o @@ -3550,11 +3550,11 @@ Index: linux-2.6.23/arch/arm/mach-pxa/Makefile ifeq ($(CONFIG_MACH_ZYLONITE),y) obj-y += zylonite.o -Index: linux-2.6.23/drivers/leds/Kconfig +Index: linux-2.6.24/drivers/leds/Kconfig =================================================================== ---- linux-2.6.23.orig/drivers/leds/Kconfig 2008-01-20 18:59:17.000000000 +0000 -+++ linux-2.6.23/drivers/leds/Kconfig 2008-01-20 18:59:46.000000000 +0000 -@@ -114,6 +114,13 @@ config LEDS_CM_X270 +--- linux-2.6.24.orig/drivers/leds/Kconfig 2008-01-24 22:58:37.000000000 +0000 ++++ linux-2.6.24/drivers/leds/Kconfig 2008-03-10 16:09:23.000000000 +0000 +@@ -114,6 +114,13 @@ help This option enables support for the CM-X270 LEDs. @@ -3568,10 +3568,10 @@ Index: linux-2.6.23/drivers/leds/Kconfig comment "LED Triggers" config LEDS_TRIGGERS -Index: linux-2.6.23/drivers/leds/leds-asic3.c +Index: linux-2.6.24/drivers/leds/leds-asic3.c =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.23/drivers/leds/leds-asic3.c 2008-01-20 18:59:46.000000000 +0000 ++++ linux-2.6.24/drivers/leds/leds-asic3.c 2008-03-10 16:09:23.000000000 +0000 @@ -0,0 +1,189 @@ +/* + * LEDs support for HTC ASIC3 devices. @@ -3762,11 +3762,11 @@ Index: linux-2.6.23/drivers/leds/leds-asic3.c +MODULE_AUTHOR("Anton Vorontsov <cbou@mail.ru>"); +MODULE_DESCRIPTION("HTC ASIC3 LEDs driver"); +MODULE_LICENSE("GPL"); -Index: linux-2.6.23/drivers/mfd/Kconfig +Index: linux-2.6.24/drivers/mfd/Kconfig =================================================================== ---- linux-2.6.23.orig/drivers/mfd/Kconfig 2008-01-20 18:59:38.000000000 +0000 -+++ linux-2.6.23/drivers/mfd/Kconfig 2008-01-20 18:59:46.000000000 +0000 -@@ -21,6 +21,16 @@ config MFD_TSC2101 +--- linux-2.6.24.orig/drivers/mfd/Kconfig 2008-03-10 16:07:51.000000000 +0000 ++++ linux-2.6.24/drivers/mfd/Kconfig 2008-03-10 16:09:23.000000000 +0000 +@@ -21,6 +21,16 @@ help Support for TI TSC2101 Touchscreen and Audio Codec @@ -3783,10 +3783,10 @@ Index: linux-2.6.23/drivers/mfd/Kconfig endmenu menu "Multimedia Capabilities Port drivers" -Index: linux-2.6.23/drivers/mfd/Makefile +Index: linux-2.6.24/drivers/mfd/Makefile =================================================================== ---- linux-2.6.23.orig/drivers/mfd/Makefile 2008-01-20 18:59:38.000000000 +0000 -+++ linux-2.6.23/drivers/mfd/Makefile 2008-01-20 18:59:46.000000000 +0000 +--- linux-2.6.24.orig/drivers/mfd/Makefile 2008-03-10 16:07:51.000000000 +0000 ++++ linux-2.6.24/drivers/mfd/Makefile 2008-03-10 16:09:23.000000000 +0000 @@ -2,6 +2,8 @@ # Makefile for multifunction miscellaneous devices # @@ -3796,10 +3796,10 @@ Index: linux-2.6.23/drivers/mfd/Makefile obj-$(CONFIG_MFD_SM501) += sm501.o obj-$(CONFIG_MCP) += mcp-core.o -Index: linux-2.6.23/drivers/mfd/asic3_base.c +Index: linux-2.6.24/drivers/mfd/asic3_base.c =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.23/drivers/mfd/asic3_base.c 2008-01-20 18:59:46.000000000 +0000 ++++ linux-2.6.24/drivers/mfd/asic3_base.c 2008-03-10 16:09:23.000000000 +0000 @@ -0,0 +1,1208 @@ +/* + * Driver interface to HTC "ASIC3" @@ -5009,10 +5009,10 @@ Index: linux-2.6.23/drivers/mfd/asic3_base.c +MODULE_AUTHOR("Phil Blundell <pb@handhelds.org>"); +MODULE_DESCRIPTION("Core driver for HTC ASIC3"); +MODULE_SUPPORTED_DEVICE("asic3"); -Index: linux-2.6.23/drivers/mfd/soc-core.c +Index: linux-2.6.24/drivers/mfd/soc-core.c =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.23/drivers/mfd/soc-core.c 2008-01-20 18:59:46.000000000 +0000 ++++ linux-2.6.24/drivers/mfd/soc-core.c 2008-03-10 16:09:23.000000000 +0000 @@ -0,0 +1,106 @@ +/* + * drivers/soc/soc-core.c @@ -5089,7 +5089,7 @@ Index: linux-2.6.23/drivers/mfd/soc-core.c + if (blk->res[r].flags & IORESOURCE_MEM) { + base = mem->start; + } else if ((blk->res[r].flags & IORESOURCE_IRQ) && -+ (blk->res[r].flags & IORESOURCE_IRQ_SOC_SUBDEVICE)) { ++ (blk->res[r].flags & IORESOURCE_IRQ_MFD_SUBDEVICE)) { + base = irq_base; + } + @@ -5120,10 +5120,10 @@ Index: linux-2.6.23/drivers/mfd/soc-core.c + return NULL; +} +EXPORT_SYMBOL_GPL(soc_add_devices); -Index: linux-2.6.23/drivers/mfd/soc-core.h +Index: linux-2.6.24/drivers/mfd/soc-core.h =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.23/drivers/mfd/soc-core.h 2008-01-20 18:59:46.000000000 +0000 ++++ linux-2.6.24/drivers/mfd/soc-core.h 2008-03-10 16:09:23.000000000 +0000 @@ -0,0 +1,30 @@ +/* + * drivers/soc/soc-core.h @@ -5155,10 +5155,10 @@ Index: linux-2.6.23/drivers/mfd/soc-core.h + +void soc_free_devices(struct platform_device *devices, int nr_devs); + -Index: linux-2.6.23/include/asm-arm/arch-pxa/clock.h +Index: linux-2.6.24/include/asm-arm/arch-pxa/clock.h =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.23/include/asm-arm/arch-pxa/clock.h 2008-01-20 18:59:46.000000000 +0000 ++++ linux-2.6.24/include/asm-arm/arch-pxa/clock.h 2008-03-10 16:09:23.000000000 +0000 @@ -0,0 +1,27 @@ +/* + * linux/include/asm-arm/arch-pxa/clock.h @@ -5187,10 +5187,10 @@ Index: linux-2.6.23/include/asm-arm/arch-pxa/clock.h + +extern int clk_register(struct clk *clk); +extern void clk_unregister(struct clk *clk); -Index: linux-2.6.23/include/asm-arm/arch-pxa/htcuniversal-asic.h +Index: linux-2.6.24/include/asm-arm/arch-pxa/htcuniversal-asic.h =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.23/include/asm-arm/arch-pxa/htcuniversal-asic.h 2008-01-20 18:59:46.000000000 +0000 ++++ linux-2.6.24/include/asm-arm/arch-pxa/htcuniversal-asic.h 2008-03-10 16:09:23.000000000 +0000 @@ -0,0 +1,213 @@ +/* + * include/asm/arm/arch-pxa/htcuniversal-asic.h @@ -5405,10 +5405,10 @@ Index: linux-2.6.23/include/asm-arm/arch-pxa/htcuniversal-asic.h + +#endif /* _HTCUNIVERSAL_ASIC_H_ */ + -Index: linux-2.6.23/include/asm-arm/arch-pxa/htcuniversal-gpio.h +Index: linux-2.6.24/include/asm-arm/arch-pxa/htcuniversal-gpio.h =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.23/include/asm-arm/arch-pxa/htcuniversal-gpio.h 2008-01-20 18:59:46.000000000 +0000 ++++ linux-2.6.24/include/asm-arm/arch-pxa/htcuniversal-gpio.h 2008-03-10 16:09:23.000000000 +0000 @@ -0,0 +1,220 @@ +/* + * include/asm-arm/arch-pxa/htcuniversal-gpio.h @@ -5630,10 +5630,10 @@ Index: linux-2.6.23/include/asm-arm/arch-pxa/htcuniversal-gpio.h +#define GPIO_NR_HTCUNIVERSAL_I2C_SDA_MD (118 | GPIO_ALT_FN_1_OUT) + +#endif /* _HTCUNIVERSAL_GPIO_H */ -Index: linux-2.6.23/include/asm-arm/arch-pxa/htcuniversal-init.h +Index: linux-2.6.24/include/asm-arm/arch-pxa/htcuniversal-init.h =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.23/include/asm-arm/arch-pxa/htcuniversal-init.h 2008-01-20 18:59:46.000000000 +0000 ++++ linux-2.6.24/include/asm-arm/arch-pxa/htcuniversal-init.h 2008-03-10 16:09:23.000000000 +0000 @@ -0,0 +1,14 @@ +/* + * include/asm/arm/arch-pxa/htcuniversal-init.h @@ -5649,18 +5649,18 @@ Index: linux-2.6.23/include/asm-arm/arch-pxa/htcuniversal-init.h + +#endif /* _HTCUNIVERSAL_INIT_H_ */ + -Index: linux-2.6.23/include/asm-arm/arch-pxa/htcuniversal.h +Index: linux-2.6.24/include/asm-arm/arch-pxa/htcuniversal.h =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.23/include/asm-arm/arch-pxa/htcuniversal.h 2008-01-20 18:59:46.000000000 +0000 ++++ linux-2.6.24/include/asm-arm/arch-pxa/htcuniversal.h 2008-03-10 16:09:23.000000000 +0000 @@ -0,0 +1,3 @@ +#include <asm/arch/irqs.h> + +#define HTCUNIVERSAL_ASIC3_IRQ_BASE IRQ_BOARD_START -Index: linux-2.6.23/include/asm-arm/arch-pxa/pxa-pm_ll.h +Index: linux-2.6.24/include/asm-arm/arch-pxa/pxa-pm_ll.h =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.23/include/asm-arm/arch-pxa/pxa-pm_ll.h 2008-01-20 18:59:46.000000000 +0000 ++++ linux-2.6.24/include/asm-arm/arch-pxa/pxa-pm_ll.h 2008-03-10 16:09:23.000000000 +0000 @@ -0,0 +1,6 @@ +struct pxa_ll_pm_ops { + void (*suspend)(unsigned long); @@ -5668,10 +5668,10 @@ Index: linux-2.6.23/include/asm-arm/arch-pxa/pxa-pm_ll.h +}; + +extern struct pxa_ll_pm_ops *pxa_pm_set_ll_ops(struct pxa_ll_pm_ops *new_ops); -Index: linux-2.6.23/include/asm-arm/hardware/asic3_keys.h +Index: linux-2.6.24/include/asm-arm/hardware/asic3_keys.h =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.23/include/asm-arm/hardware/asic3_keys.h 2008-01-20 18:59:46.000000000 +0000 ++++ linux-2.6.24/include/asm-arm/hardware/asic3_keys.h 2008-03-10 16:09:23.000000000 +0000 @@ -0,0 +1,18 @@ +#include <linux/input.h> + @@ -5691,10 +5691,10 @@ Index: linux-2.6.23/include/asm-arm/hardware/asic3_keys.h + struct input_dev *input; + struct device *asic3_dev; +}; -Index: linux-2.6.23/include/asm-arm/hardware/asic3_leds.h +Index: linux-2.6.24/include/asm-arm/hardware/asic3_leds.h =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.23/include/asm-arm/hardware/asic3_leds.h 2008-01-20 18:59:46.000000000 +0000 ++++ linux-2.6.24/include/asm-arm/hardware/asic3_leds.h 2008-03-10 16:09:23.000000000 +0000 @@ -0,0 +1,34 @@ +/* + * LEDs support for HTC ASIC3 devices. @@ -5730,10 +5730,10 @@ Index: linux-2.6.23/include/asm-arm/hardware/asic3_leds.h +extern int asic3_leds_register(void); +extern void asic3_leds_unregister(void); + -Index: linux-2.6.23/include/asm-arm/hardware/ipaq-asic3.h +Index: linux-2.6.24/include/asm-arm/hardware/ipaq-asic3.h =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.23/include/asm-arm/hardware/ipaq-asic3.h 2008-01-20 18:59:46.000000000 +0000 ++++ linux-2.6.24/include/asm-arm/hardware/ipaq-asic3.h 2008-03-10 16:09:23.000000000 +0000 @@ -0,0 +1,602 @@ +/* + * @@ -6337,10 +6337,10 @@ Index: linux-2.6.23/include/asm-arm/hardware/ipaq-asic3.h +#define IPAQ_ASIC3_MAP_SIZE 0x2000 + +#endif -Index: linux-2.6.23/include/linux/gpiodev.h +Index: linux-2.6.24/include/linux/gpiodev.h =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.23/include/linux/gpiodev.h 2008-01-20 18:59:46.000000000 +0000 ++++ linux-2.6.24/include/linux/gpiodev.h 2008-03-10 16:09:23.000000000 +0000 @@ -0,0 +1,44 @@ +#ifndef __GPIODEV_H +#define __GPIODEV_H @@ -6386,10 +6386,10 @@ Index: linux-2.6.23/include/linux/gpiodev.h +} + +#endif /* __GPIODEV_H */ -Index: linux-2.6.23/include/linux/input_pda.h +Index: linux-2.6.24/include/linux/input_pda.h =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.23/include/linux/input_pda.h 2008-01-20 18:59:46.000000000 +0000 ++++ linux-2.6.24/include/linux/input_pda.h 2008-03-10 16:09:23.000000000 +0000 @@ -0,0 +1,47 @@ +#ifndef _INPUT_PDA_H +#define _INPUT_PDA_H @@ -6438,10 +6438,10 @@ Index: linux-2.6.23/include/linux/input_pda.h +#define _KEY_HOMEPAGE _KEY_APP4 + +#endif -Index: linux-2.6.23/include/linux/soc/asic3_base.h +Index: linux-2.6.24/include/linux/soc/asic3_base.h =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.23/include/linux/soc/asic3_base.h 2008-01-20 18:59:46.000000000 +0000 ++++ linux-2.6.24/include/linux/soc/asic3_base.h 2008-03-10 16:09:23.000000000 +0000 @@ -0,0 +1,104 @@ +#include <asm/types.h> +#include <linux/gpiodev.h> @@ -6547,10 +6547,10 @@ Index: linux-2.6.23/include/linux/soc/asic3_base.h + + struct tmio_mmc_hwconfig *tmio_mmc_hwconfig; +}; -Index: linux-2.6.23/include/linux/soc/tmio_mmc.h +Index: linux-2.6.24/include/linux/soc/tmio_mmc.h =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.23/include/linux/soc/tmio_mmc.h 2008-01-20 18:59:46.000000000 +0000 ++++ linux-2.6.24/include/linux/soc/tmio_mmc.h 2008-03-10 16:09:23.000000000 +0000 @@ -0,0 +1,17 @@ +#include <linux/platform_device.h> + @@ -6569,10 +6569,10 @@ Index: linux-2.6.23/include/linux/soc/tmio_mmc.h + int (*mmc_get_ro)(struct platform_device *pdev); + short address_shift; +}; -Index: linux-2.6.23/include/asm-arm/arch-pxa/pxa-regs.h +Index: linux-2.6.24/include/asm-arm/arch-pxa/pxa-regs.h =================================================================== ---- linux-2.6.23.orig/include/asm-arm/arch-pxa/pxa-regs.h 2008-01-20 18:59:40.000000000 +0000 -+++ linux-2.6.23/include/asm-arm/arch-pxa/pxa-regs.h 2008-01-20 18:59:46.000000000 +0000 +--- linux-2.6.24.orig/include/asm-arm/arch-pxa/pxa-regs.h 2008-03-10 16:07:59.000000000 +0000 ++++ linux-2.6.24/include/asm-arm/arch-pxa/pxa-regs.h 2008-03-10 16:09:23.000000000 +0000 @@ -2058,6 +2058,8 @@ #define LDCMD_SOFINT (1 << 22) #define LDCMD_EOFINT (1 << 21) @@ -6582,25 +6582,11 @@ Index: linux-2.6.23/include/asm-arm/arch-pxa/pxa-regs.h #define LCCR5_SOFM1 (1<<0) /* Start Of Frame Mask for Overlay 1 (channel 1) */ #define LCCR5_SOFM2 (1<<1) /* Start Of Frame Mask for Overlay 2 (channel 2) */ -Index: linux-2.6.23/drivers/mmc/host/Kconfig -=================================================================== ---- linux-2.6.23.orig/drivers/mmc/host/Kconfig 2008-01-20 18:59:18.000000000 +0000 -+++ linux-2.6.23/drivers/mmc/host/Kconfig 2008-01-20 18:59:46.000000000 +0000 -@@ -130,3 +130,9 @@ config MMC_SPI - - If unsure, or if your system has no SPI master driver, say N. - -+config MMC_ASIC3 -+ tristate "HTC ASIC3 SD/MMC support" -+ depends on MMC && HTC_ASIC3 -+ help -+ This provides support for the ASIC3 SD/MMC controller, used -+ in the iPAQ hx4700 and others. -Index: linux-2.6.23/drivers/mmc/host/Makefile +Index: linux-2.6.24/drivers/mmc/host/Makefile =================================================================== ---- linux-2.6.23.orig/drivers/mmc/host/Makefile 2008-01-20 18:59:18.000000000 +0000 -+++ linux-2.6.23/drivers/mmc/host/Makefile 2008-01-20 21:12:10.000000000 +0000 -@@ -13,6 +13,7 @@ obj-$(CONFIG_MMC_SDHCI) += sdhci.o +--- linux-2.6.24.orig/drivers/mmc/host/Makefile 2008-01-24 22:58:37.000000000 +0000 ++++ linux-2.6.24/drivers/mmc/host/Makefile 2008-03-10 16:09:23.000000000 +0000 +@@ -13,6 +13,7 @@ obj-$(CONFIG_MMC_RICOH_MMC) += ricoh_mmc.o obj-$(CONFIG_MMC_WBSD) += wbsd.o obj-$(CONFIG_MMC_AU1X) += au1xmmc.o @@ -6608,10 +6594,10 @@ Index: linux-2.6.23/drivers/mmc/host/Makefile obj-$(CONFIG_MMC_OMAP) += omap.o obj-$(CONFIG_MMC_AT91) += at91_mci.o obj-$(CONFIG_MMC_TIFM_SD) += tifm_sd.o -Index: linux-2.6.23/drivers/mmc/host/asic3_mmc.c +Index: linux-2.6.24/drivers/mmc/host/asic3_mmc.c =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.23/drivers/mmc/host/asic3_mmc.c 2008-01-20 18:59:46.000000000 +0000 ++++ linux-2.6.24/drivers/mmc/host/asic3_mmc.c 2008-03-10 16:09:23.000000000 +0000 @@ -0,0 +1,900 @@ +/* Note that this driver can likely be merged into the tmio driver, so + * consider this code temporary. It works, though. @@ -7513,10 +7499,10 @@ Index: linux-2.6.23/drivers/mmc/host/asic3_mmc.c +MODULE_AUTHOR("Aric Blumer, SDG Systems, LLC"); +MODULE_LICENSE("GPL"); + -Index: linux-2.6.23/drivers/mmc/host/asic3_mmc.h +Index: linux-2.6.24/drivers/mmc/host/asic3_mmc.h =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.23/drivers/mmc/host/asic3_mmc.h 2008-01-20 18:59:46.000000000 +0000 ++++ linux-2.6.24/drivers/mmc/host/asic3_mmc.h 2008-03-10 16:09:23.000000000 +0000 @@ -0,0 +1,25 @@ +#ifndef __ASIC3_MMC_H +#define __ASIC3_MMC_H @@ -7543,22 +7529,10 @@ Index: linux-2.6.23/drivers/mmc/host/asic3_mmc.h +#define DONT_CARE_BUFFER_BITS ( SD_CTRL_INTMASKBUFFER_UNK7 | SD_CTRL_INTMASKBUFFER_CMD_BUSY ) + +#endif // __ASIC3_MMC_H -Index: linux-2.6.23/drivers/input/keyboard/Makefile -=================================================================== ---- linux-2.6.23.orig/drivers/input/keyboard/Makefile 2008-01-20 18:59:16.000000000 +0000 -+++ linux-2.6.23/drivers/input/keyboard/Makefile 2008-01-20 21:11:40.000000000 +0000 -@@ -15,6 +15,7 @@ obj-$(CONFIG_KEYBOARD_NEWTON) += newton - obj-$(CONFIG_KEYBOARD_STOWAWAY) += stowaway.o - obj-$(CONFIG_KEYBOARD_CORGI) += corgikbd.o - obj-$(CONFIG_KEYBOARD_SPITZ) += spitzkbd.o -+obj-$(CONFIG_KEYBOARD_ASIC3) += asic3_keys.o - obj-$(CONFIG_KEYBOARD_HIL) += hil_kbd.o - obj-$(CONFIG_KEYBOARD_HIL_OLD) += hilkbd.o - obj-$(CONFIG_KEYBOARD_OMAP) += omap-keypad.o -Index: linux-2.6.23/drivers/input/keyboard/asic3_keys.c +Index: linux-2.6.24/drivers/input/keyboard/asic3_keys.c =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.23/drivers/input/keyboard/asic3_keys.c 2008-01-20 18:59:46.000000000 +0000 ++++ linux-2.6.24/drivers/input/keyboard/asic3_keys.c 2008-03-10 16:09:23.000000000 +0000 @@ -0,0 +1,131 @@ +/* + * Generic buttons driver for ASIC3 SoC. @@ -7691,10 +7665,10 @@ Index: linux-2.6.23/drivers/input/keyboard/asic3_keys.c +MODULE_AUTHOR("Joshua Wise, Pawel Kolodziejski, Paul Sokolovsky"); +MODULE_DESCRIPTION("Buttons driver for HTC ASIC3 SoC"); +MODULE_LICENSE("GPL"); -Index: linux-2.6.23/include/asm-arm/arch-pxa/irqs.h +Index: linux-2.6.24/include/asm-arm/arch-pxa/irqs.h =================================================================== ---- linux-2.6.23.orig/include/asm-arm/arch-pxa/irqs.h 2008-01-20 18:59:28.000000000 +0000 -+++ linux-2.6.23/include/asm-arm/arch-pxa/irqs.h 2008-01-20 18:59:46.000000000 +0000 +--- linux-2.6.24.orig/include/asm-arm/arch-pxa/irqs.h 2008-01-24 22:58:37.000000000 +0000 ++++ linux-2.6.24/include/asm-arm/arch-pxa/irqs.h 2008-03-10 16:09:23.000000000 +0000 @@ -182,6 +182,8 @@ defined(CONFIG_MACH_LOGICPD_PXA270) || \ defined(CONFIG_MACH_MAINSTONE) @@ -7704,22 +7678,10 @@ Index: linux-2.6.23/include/asm-arm/arch-pxa/irqs.h #else #define NR_IRQS (IRQ_BOARD_START) #endif -Index: linux-2.6.23/include/linux/ioport.h -=================================================================== ---- linux-2.6.23.orig/include/linux/ioport.h 2008-01-20 18:59:31.000000000 +0000 -+++ linux-2.6.23/include/linux/ioport.h 2008-01-20 18:59:46.000000000 +0000 -@@ -56,6 +56,7 @@ struct resource_list { - #define IORESOURCE_IRQ_HIGHLEVEL (1<<2) - #define IORESOURCE_IRQ_LOWLEVEL (1<<3) - #define IORESOURCE_IRQ_SHAREABLE (1<<4) -+#define IORESOURCE_IRQ_SOC_SUBDEVICE (1<<5) - - /* ISA PnP DMA specific bits (IORESOURCE_BITS) */ - #define IORESOURCE_DMA_TYPE_MASK (3<<0) -Index: linux-2.6.23/include/asm-arm/arch-pxa/serial.h +Index: linux-2.6.24/include/asm-arm/arch-pxa/serial.h =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.23/include/asm-arm/arch-pxa/serial.h 2008-01-20 18:59:46.000000000 +0000 ++++ linux-2.6.24/include/asm-arm/arch-pxa/serial.h 2008-03-10 16:09:23.000000000 +0000 @@ -0,0 +1,78 @@ +/* + * linux/include/asm-arm/arch-pxa/serial.h @@ -7799,10 +7761,10 @@ Index: linux-2.6.23/include/asm-arm/arch-pxa/serial.h +void pxa_set_btuart_info(struct platform_pxa_serial_funcs *btuart_funcs); +void pxa_set_stuart_info(struct platform_pxa_serial_funcs *stuart_funcs); +void pxa_set_hwuart_info(struct platform_pxa_serial_funcs *hwuart_funcs); -Index: linux-2.6.23/drivers/serial/pxa.c +Index: linux-2.6.24/drivers/serial/pxa.c =================================================================== ---- linux-2.6.23.orig/drivers/serial/pxa.c 2008-01-20 18:59:23.000000000 +0000 -+++ linux-2.6.23/drivers/serial/pxa.c 2008-01-20 18:59:46.000000000 +0000 +--- linux-2.6.24.orig/drivers/serial/pxa.c 2008-01-24 22:58:37.000000000 +0000 ++++ linux-2.6.24/drivers/serial/pxa.c 2008-03-10 16:09:23.000000000 +0000 @@ -47,6 +47,7 @@ #include <asm/io.h> #include <asm/hardware.h> @@ -7811,7 +7773,7 @@ Index: linux-2.6.23/drivers/serial/pxa.c #include <asm/arch/pxa-regs.h> -@@ -60,6 +61,14 @@ struct uart_pxa_port { +@@ -60,6 +61,14 @@ char *name; }; @@ -7826,7 +7788,7 @@ Index: linux-2.6.23/drivers/serial/pxa.c static inline unsigned int serial_in(struct uart_pxa_port *up, int offset) { offset <<= 2; -@@ -347,6 +356,9 @@ static int serial_pxa_startup(struct uar +@@ -347,6 +356,9 @@ unsigned long flags; int retval; @@ -7836,7 +7798,7 @@ Index: linux-2.6.23/drivers/serial/pxa.c if (port->line == 3) /* HWUART */ up->mcr |= UART_MCR_AFE; else -@@ -404,6 +416,12 @@ static int serial_pxa_startup(struct uar +@@ -404,6 +416,12 @@ (void) serial_in(up, UART_IIR); (void) serial_in(up, UART_MSR); @@ -7849,7 +7811,7 @@ Index: linux-2.6.23/drivers/serial/pxa.c return 0; } -@@ -412,6 +430,8 @@ static void serial_pxa_shutdown(struct u +@@ -412,6 +430,8 @@ struct uart_pxa_port *up = (struct uart_pxa_port *)port; unsigned long flags; @@ -7858,7 +7820,7 @@ Index: linux-2.6.23/drivers/serial/pxa.c free_irq(up->port.irq, up); /* -@@ -433,6 +453,8 @@ static void serial_pxa_shutdown(struct u +@@ -433,6 +453,8 @@ UART_FCR_CLEAR_RCVR | UART_FCR_CLEAR_XMIT); serial_out(up, UART_FCR, 0); @@ -7867,10 +7829,10 @@ Index: linux-2.6.23/drivers/serial/pxa.c } static void -Index: linux-2.6.23/arch/arm/mach-pxa/generic.c +Index: linux-2.6.24/arch/arm/mach-pxa/generic.c =================================================================== ---- linux-2.6.23.orig/arch/arm/mach-pxa/generic.c 2008-01-20 18:59:09.000000000 +0000 -+++ linux-2.6.23/arch/arm/mach-pxa/generic.c 2008-01-20 18:59:46.000000000 +0000 +--- linux-2.6.24.orig/arch/arm/mach-pxa/generic.c 2008-01-24 22:58:37.000000000 +0000 ++++ linux-2.6.24/arch/arm/mach-pxa/generic.c 2008-03-10 16:09:23.000000000 +0000 @@ -38,6 +38,7 @@ #include <asm/arch/mmc.h> #include <asm/arch/irda.h> @@ -7879,7 +7841,7 @@ Index: linux-2.6.23/arch/arm/mach-pxa/generic.c #include "devices.h" #include "generic.h" -@@ -412,6 +413,18 @@ struct platform_device pxa_device_hwuart +@@ -412,6 +413,18 @@ .num_resources = ARRAY_SIZE(pxa_resource_hwuart), }; @@ -7898,11 +7860,11 @@ Index: linux-2.6.23/arch/arm/mach-pxa/generic.c static struct resource pxai2c_resources[] = { { .start = 0x40301680, -Index: linux-2.6.23/drivers/leds/Makefile +Index: linux-2.6.24/drivers/leds/Makefile =================================================================== ---- linux-2.6.23.orig/drivers/leds/Makefile 2008-01-20 18:59:17.000000000 +0000 -+++ linux-2.6.23/drivers/leds/Makefile 2008-01-20 21:10:45.000000000 +0000 -@@ -15,6 +15,7 @@ obj-$(CONFIG_LEDS_AMS_DELTA) += leds-am +--- linux-2.6.24.orig/drivers/leds/Makefile 2008-01-24 22:58:37.000000000 +0000 ++++ linux-2.6.24/drivers/leds/Makefile 2008-03-10 16:09:23.000000000 +0000 +@@ -15,6 +15,7 @@ obj-$(CONFIG_LEDS_NET48XX) += leds-net48xx.o obj-$(CONFIG_LEDS_WRAP) += leds-wrap.o obj-$(CONFIG_LEDS_H1940) += leds-h1940.o @@ -7910,11 +7872,11 @@ Index: linux-2.6.23/drivers/leds/Makefile obj-$(CONFIG_LEDS_COBALT_QUBE) += leds-cobalt-qube.o obj-$(CONFIG_LEDS_COBALT_RAQ) += leds-cobalt-raq.o obj-$(CONFIG_LEDS_GPIO) += leds-gpio.o -Index: linux-2.6.23/drivers/input/keyboard/Kconfig +Index: linux-2.6.24/drivers/input/keyboard/Kconfig =================================================================== ---- linux-2.6.23.orig/drivers/input/keyboard/Kconfig 2008-01-20 18:59:16.000000000 +0000 -+++ linux-2.6.23/drivers/input/keyboard/Kconfig 2008-01-20 18:59:46.000000000 +0000 -@@ -293,4 +293,11 @@ config KEYBOARD_BFIN +--- linux-2.6.24.orig/drivers/input/keyboard/Kconfig 2008-01-24 22:58:37.000000000 +0000 ++++ linux-2.6.24/drivers/input/keyboard/Kconfig 2008-03-10 16:09:23.000000000 +0000 +@@ -293,4 +293,11 @@ To compile this driver as a module, choose M here: the module will be called bf54x-keys. @@ -7926,3 +7888,33 @@ Index: linux-2.6.23/drivers/input/keyboard/Kconfig + HTC ASIC3 peripheral controller. + endif +Index: linux-2.6.24/drivers/mmc/host/Kconfig +=================================================================== +--- linux-2.6.24.orig/drivers/mmc/host/Kconfig 2008-01-24 22:58:37.000000000 +0000 ++++ linux-2.6.24/drivers/mmc/host/Kconfig 2008-03-10 16:09:59.000000000 +0000 +@@ -24,6 +24,13 @@ + + If unsure, say N. + ++config MMC_ASIC3 ++ tristate "HTC ASIC3 SD/MMC support" ++ depends on MMC && HTC_ASIC3 ++ help ++ This provides support for the ASIC3 SD/MMC controller, used ++ in the iPAQ hx4700 and others. ++ + config MMC_SDHCI + tristate "Secure Digital Host Controller Interface support (EXPERIMENTAL)" + depends on PCI && EXPERIMENTAL +Index: linux-2.6.24/drivers/input/keyboard/Makefile +=================================================================== +--- linux-2.6.24.orig/drivers/input/keyboard/Makefile 2008-01-24 22:58:37.000000000 +0000 ++++ linux-2.6.24/drivers/input/keyboard/Makefile 2008-03-10 16:10:28.000000000 +0000 +@@ -6,6 +6,7 @@ + + obj-$(CONFIG_KEYBOARD_ATKBD) += atkbd.o + obj-$(CONFIG_KEYBOARD_SUNKBD) += sunkbd.o ++obj-$(CONFIG_KEYBOARD_ASIC3) += asic3_keys.o + obj-$(CONFIG_KEYBOARD_LKKBD) += lkkbd.o + obj-$(CONFIG_KEYBOARD_XTKBD) += xtkbd.o + obj-$(CONFIG_KEYBOARD_AMIGA) += amikbd.o diff --git a/meta/packages/linux/linux-rp-2.6.24/pxa27x-resume.patch b/meta/packages/linux/linux-rp-2.6.24/pxa27x-resume.patch new file mode 100644 index 000000000..6447a0b10 --- /dev/null +++ b/meta/packages/linux/linux-rp-2.6.24/pxa27x-resume.patch @@ -0,0 +1,41 @@ +List: linux-arm-kernel +Subject: [PATCH] Fix PXA27x resume +From: Russell King - ARM Linux <linux@arm.linux.org.uk> +Date: 2008-01-21 13:53:31 +Message-ID: 20080121135331.GC30149@flint.arm.linux.org.uk +[Download message RAW] + +When PXA27x wakes up, tick_resume_oneshot() tries to set a timer +interrupt to occur immediately. Since PXA27x requires at least +MIN_OSCR_DELTA, this causes us to flag an error. + +tick_program_event() then increments the next event time by +min_delta_ns. However, by the time we get back to programming +the next event, the OSCR has incremented such that we fail again. +We repeatedly retry, but the OSCR is too fast for us - we never +catch up, so we never break out of the loop - resulting in us +never apparantly resuming. + +Fix this by doubling min_delta_ns. + +Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> + +diff --git a/arch/arm/mach-pxa/time.c b/arch/arm/mach-pxa/time.c +index ac0bbad..7b7c017 100644 +--- a/arch/arm/mach-pxa/time.c ++++ b/arch/arm/mach-pxa/time.c +@@ -169,7 +169,7 @@ static void __init pxa_timer_init(void) + ckevt_pxa_osmr0.max_delta_ns = + clockevent_delta2ns(0x7fffffff, &ckevt_pxa_osmr0); + ckevt_pxa_osmr0.min_delta_ns = +- clockevent_delta2ns(MIN_OSCR_DELTA, &ckevt_pxa_osmr0) + 1; ++ clockevent_delta2ns(MIN_OSCR_DELTA * 2, &ckevt_pxa_osmr0) + 1; + + cksrc_pxa_oscr0.mult = + clocksource_hz2mult(clock_tick_rate, cksrc_pxa_oscr0.shift); + +------------------------------------------------------------------- +List admin: http://lists.arm.linux.org.uk/mailman/listinfo/linux-arm-kernel +FAQ: http://www.arm.linux.org.uk/mailinglists/faq.php +Etiquette: http://www.arm.linux.org.uk/mailinglists/etiquette.php + diff --git a/meta/packages/linux/linux-rp-2.6.24/pxa2xx_udc-clock.patch b/meta/packages/linux/linux-rp-2.6.24/pxa2xx_udc-clock.patch new file mode 100644 index 000000000..14c496a31 --- /dev/null +++ b/meta/packages/linux/linux-rp-2.6.24/pxa2xx_udc-clock.patch @@ -0,0 +1,221 @@ +--- + drivers/usb/gadget/pxa2xx_udc.c | 88 ++++++++++++++++++++++------------------ + drivers/usb/gadget/pxa2xx_udc.h | 4 + + 2 files changed, 53 insertions(+), 39 deletions(-) + +--- g26.orig/drivers/usb/gadget/pxa2xx_udc.c 2008-02-19 12:47:06.000000000 -0800 ++++ g26/drivers/usb/gadget/pxa2xx_udc.c 2008-02-19 14:07:17.000000000 -0800 +@@ -103,6 +103,12 @@ static const char ep0name [] = "ep0"; + #error "Can't configure both IXP and PXA" + #endif + ++/* IXP doesn't yet support <linux/clk.h> */ ++#define clk_get(dev,name) NULL ++#define clk_enable(clk) do { } while (0) ++#define clk_disable(clk) do { } while (0) ++#define clk_put(clk) do { } while (0) ++ + #endif + + #include "pxa2xx_udc.h" +@@ -934,20 +940,31 @@ static void udc_disable(struct pxa2xx_ud + /* We disable the UDC -- and its 48 MHz clock -- whenever it's not + * in active use. + */ +-static int pullup(struct pxa2xx_udc *udc, int is_active) ++static int pullup(struct pxa2xx_udc *udc) + { +- is_active = is_active && udc->vbus && udc->pullup; ++ int is_active = udc->vbus && udc->pullup && !udc->suspended; + DMSG("%s\n", is_active ? "active" : "inactive"); +- if (is_active) +- udc_enable(udc); +- else { +- if (udc->gadget.speed != USB_SPEED_UNKNOWN) { +- DMSG("disconnect %s\n", udc->driver +- ? udc->driver->driver.name +- : "(no driver)"); +- stop_activity(udc, udc->driver); ++ if (is_active) { ++ if (!udc->active) { ++ udc->active = 1; ++ /* Enable clock for USB device */ ++ clk_enable(udc->clk); ++ udc_enable(udc); + } +- udc_disable(udc); ++ } else { ++ if (udc->active) { ++ if (udc->gadget.speed != USB_SPEED_UNKNOWN) { ++ DMSG("disconnect %s\n", udc->driver ++ ? udc->driver->driver.name ++ : "(no driver)"); ++ stop_activity(udc, udc->driver); ++ } ++ udc_disable(udc); ++ /* Disable clock for USB device */ ++ clk_disable(udc->clk); ++ udc->active = 0; ++ } ++ + } + return 0; + } +@@ -958,9 +975,9 @@ static int pxa2xx_udc_vbus_session(struc + struct pxa2xx_udc *udc; + + udc = container_of(_gadget, struct pxa2xx_udc, gadget); +- udc->vbus = is_active = (is_active != 0); ++ udc->vbus = (is_active != 0); + DMSG("vbus %s\n", is_active ? "supplied" : "inactive"); +- pullup(udc, is_active); ++ pullup(udc); + return 0; + } + +@@ -975,9 +992,8 @@ static int pxa2xx_udc_pullup(struct usb_ + if (!udc->mach->gpio_pullup && !udc->mach->udc_command) + return -EOPNOTSUPP; + +- is_active = (is_active != 0); +- udc->pullup = is_active; +- pullup(udc, is_active); ++ udc->pullup = (is_active != 0); ++ pullup(udc); + return 0; + } + +@@ -1146,11 +1162,6 @@ static void udc_disable(struct pxa2xx_ud + + udc_clear_mask_UDCCR(UDCCR_UDE); + +-#ifdef CONFIG_ARCH_PXA +- /* Disable clock for USB device */ +- clk_disable(dev->clk); +-#endif +- + ep0_idle (dev); + dev->gadget.speed = USB_SPEED_UNKNOWN; + } +@@ -1191,11 +1202,6 @@ static void udc_enable (struct pxa2xx_ud + { + udc_clear_mask_UDCCR(UDCCR_UDE); + +-#ifdef CONFIG_ARCH_PXA +- /* Enable clock for USB device */ +- clk_enable(dev->clk); +-#endif +- + /* try to clear these bits before we enable the udc */ + udc_ack_int_UDCCR(UDCCR_SUSIR|/*UDCCR_RSTIR|*/UDCCR_RESIR); + +@@ -1286,7 +1292,7 @@ fail: + * for set_configuration as well as eventual disconnect. + */ + DMSG("registered gadget driver '%s'\n", driver->driver.name); +- pullup(dev, 1); ++ pullup(dev); + dump_state(dev); + return 0; + } +@@ -1329,7 +1335,8 @@ int usb_gadget_unregister_driver(struct + return -EINVAL; + + local_irq_disable(); +- pullup(dev, 0); ++ dev->pullup = 0; ++ pullup(dev); + stop_activity(dev, driver); + local_irq_enable(); + +@@ -2131,13 +2138,11 @@ static int __init pxa2xx_udc_probe(struc + if (irq < 0) + return -ENODEV; + +-#ifdef CONFIG_ARCH_PXA + dev->clk = clk_get(&pdev->dev, "UDCCLK"); + if (IS_ERR(dev->clk)) { + retval = PTR_ERR(dev->clk); + goto err_clk; + } +-#endif + + pr_debug("%s: IRQ %d%s%s\n", driver_name, irq, + dev->has_cfr ? "" : " (!cfr)", +@@ -2250,10 +2255,8 @@ lubbock_fail0: + if (dev->mach->gpio_vbus) + gpio_free(dev->mach->gpio_vbus); + err_gpio_vbus: +-#ifdef CONFIG_ARCH_PXA + clk_put(dev->clk); + err_clk: +-#endif + return retval; + } + +@@ -2269,7 +2272,9 @@ static int __exit pxa2xx_udc_remove(stru + if (dev->driver) + return -EBUSY; + +- udc_disable(dev); ++ dev->pullup = 0; ++ pullup(dev); ++ + remove_proc_files(); + + if (dev->got_irq) { +@@ -2289,9 +2294,7 @@ static int __exit pxa2xx_udc_remove(stru + if (dev->mach->gpio_pullup) + gpio_free(dev->mach->gpio_pullup); + +-#ifdef CONFIG_ARCH_PXA + clk_put(dev->clk); +-#endif + + platform_set_drvdata(pdev, NULL); + the_controller = NULL; +@@ -2317,10 +2320,15 @@ static int __exit pxa2xx_udc_remove(stru + static int pxa2xx_udc_suspend(struct platform_device *dev, pm_message_t state) + { + struct pxa2xx_udc *udc = platform_get_drvdata(dev); ++ unsigned long flags; + + if (!udc->mach->gpio_pullup && !udc->mach->udc_command) + WARN("USB host won't detect disconnect!\n"); +- pullup(udc, 0); ++ udc->suspended = 1; ++ ++ local_irq_save(flags); ++ pullup(udc); ++ local_irq_restore(flags); + + return 0; + } +@@ -2328,8 +2336,12 @@ static int pxa2xx_udc_suspend(struct pla + static int pxa2xx_udc_resume(struct platform_device *dev) + { + struct pxa2xx_udc *udc = platform_get_drvdata(dev); ++ unsigned long flags; + +- pullup(udc, 1); ++ udc->suspended = 0; ++ local_irq_save(flags); ++ pullup(udc); ++ local_irq_restore(flags); + + return 0; + } +--- g26.orig/drivers/usb/gadget/pxa2xx_udc.h 2008-02-19 12:47:06.000000000 -0800 ++++ g26/drivers/usb/gadget/pxa2xx_udc.h 2008-02-19 12:57:42.000000000 -0800 +@@ -119,7 +119,9 @@ struct pxa2xx_udc { + has_cfr : 1, + req_pending : 1, + req_std : 1, +- req_config : 1; ++ req_config : 1, ++ suspended : 1, ++ active : 1; + + #define start_watchdog(dev) mod_timer(&dev->timer, jiffies + (HZ/200)) + struct timer_list timer; +- diff --git a/meta/packages/linux/linux-rp-2.6.24/sharpsl-rc-r1.patch b/meta/packages/linux/linux-rp-2.6.24/sharpsl-rc-r1.patch new file mode 100644 index 000000000..bed41c55d --- /dev/null +++ b/meta/packages/linux/linux-rp-2.6.24/sharpsl-rc-r1.patch @@ -0,0 +1,527 @@ +This patch adds support for Sharp CE-RH2 on Spitz. + +It is not clean enough to be upstreamed: +- It is a bit syslog-noisy. +- Does not support other Zaurus models. +- Maybe split to more parts: + * MAX1111 driver + * linear input device + * virtual keyboard on top of linear input device + +Index: linux-2.6.24/arch/arm/mach-pxa/spitz.c +=================================================================== +--- linux-2.6.24.orig/arch/arm/mach-pxa/spitz.c 2008-03-10 17:05:37.000000000 +0000 ++++ linux-2.6.24/arch/arm/mach-pxa/spitz.c 2008-03-10 17:05:55.000000000 +0000 +@@ -259,6 +259,13 @@ + .id = -1, + }; + ++/* ++ * Spitz Remote Control Device ++ */ ++static struct platform_device sharpsl_rc_device = { ++ .name = "sharpsl-remote-control", ++ .id = -1, ++}; + + /* + * Spitz LEDs +@@ -548,6 +555,7 @@ + &spitzscoop_device, + &spitzssp_device, + &spitzkbd_device, ++ &sharpsl_rc_device, + &spitzts_device, + &spitzbl_device, + &spitzled_device, +Index: linux-2.6.24/drivers/input/keyboard/Kconfig +=================================================================== +--- linux-2.6.24.orig/drivers/input/keyboard/Kconfig 2008-03-10 17:05:40.000000000 +0000 ++++ linux-2.6.24/drivers/input/keyboard/Kconfig 2008-03-10 17:05:55.000000000 +0000 +@@ -154,6 +154,17 @@ + To compile this driver as a module, choose M here: the + module will be called spitzkbd. + ++config SHARPSL_RC ++ tristate "Sharp SL-Cxx00 Remote Control" ++ depends on PXA_SHARPSL ++ default y ++ help ++ Say Y here to enable the remote on the Sharp Zaurus SL-Cxx00, ++ SL-C1000, SL-C3000 and Sl-C3100 series of PDAs. ++ ++ To compile this driver as a module, choose M here: the ++ module will be called sharpsl_rc. ++ + config KEYBOARD_AMIGA + tristate "Amiga keyboard" + depends on AMIGA +Index: linux-2.6.24/drivers/input/keyboard/Makefile +=================================================================== +--- linux-2.6.24.orig/drivers/input/keyboard/Makefile 2008-03-10 17:05:40.000000000 +0000 ++++ linux-2.6.24/drivers/input/keyboard/Makefile 2008-03-10 17:06:17.000000000 +0000 +@@ -26,3 +26,5 @@ + obj-$(CONFIG_KEYBOARD_HP7XX) += jornada720_kbd.o + obj-$(CONFIG_KEYBOARD_MAPLE) += maple_keyb.o + obj-$(CONFIG_KEYBOARD_BFIN) += bf54x-keys.o ++obj-$(CONFIG_SHARPSL_RC) += sharpsl_rc.o ++ +Index: linux-2.6.24/drivers/input/keyboard/sharpsl_rc.c +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ linux-2.6.24/drivers/input/keyboard/sharpsl_rc.c 2008-03-10 17:05:55.000000000 +0000 +@@ -0,0 +1,291 @@ ++/* ++ * Keyboard driver for Sharp Clamshell Models (SL-Cxx00) ++ * ++ * Copyright (c) 2004-2005 Richard Purdie ++ * ++ * Based on corgikbd.c and Sharp's RC driver ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License version 2 as ++ * published by the Free Software Foundation. ++ * ++ */ ++ ++#define DEBUG 1 ++#include <linux/delay.h> ++#include <linux/platform_device.h> ++#include <linux/init.h> ++#include <linux/input.h> ++#include <linux/interrupt.h> ++#include <linux/jiffies.h> ++#include <linux/module.h> ++#include <linux/slab.h> ++ ++#ifdef CONFIG_MACH_SPITZ ++#include <asm/arch/spitz.h> ++#endif ++#ifdef CONFIG_MACH_CORGI ++#include <asm/arch/corgi.h> ++#endif ++ ++#include <asm/arch/hardware.h> ++#include <asm/arch/pxa-regs.h> ++#include <asm/hardware/scoop.h> ++#include <asm/arch/sharpsl.h> ++#include <asm/hardware/sharpsl_pm.h> ++ ++#define DPRINTK(fmt, args...) dev_dbg(data->dev, fmt "\n", ##args) ++ ++struct remote_control_key { ++ unsigned char min; ++ unsigned char max; ++ unsigned char key; ++}; ++ ++#ifdef CONFIG_MACH_SPITZ ++#define REMOTE_AKIN_PULLUP SPITZ_SCP2_AKIN_PULLUP ++#define REMOTE_SCOOP_DEVICE spitzscoop2_device ++#define REMOTE_GPIO_INT SPITZ_GPIO_AK_INT ++#define REMOTE_IRQ_INT SPITZ_IRQ_GPIO_AK_INT ++static struct remote_control_key remote_keys[] = { ++ { 25, 35, KEY_STOPCD}, ++ { 55, 65, KEY_PLAYPAUSE}, ++ { 85, 95, KEY_NEXTSONG}, ++ { 115, 125, KEY_VOLUMEUP}, ++ { 145, 155, KEY_PREVIOUSSONG}, ++ { 180, 190, KEY_MUTE}, ++ { 215, 225, KEY_VOLUMEDOWN}, ++}; ++#endif ++#ifdef CONFIG_MACH_CORGI ++#define REMOTE_AKIN_PULLUP CORGI_SCP_AKIN_PULLUP ++#define REMOTE_SCOOP_DEVICE corgiscoop_device ++#define REMOTE_GPIO_INT CORGI_GPIO_AK_INT ++#define REMOTE_IRQ_INT CORGI_IRQ_GPIO_AK_INT ++static struct remote_control_key remote_keys[] = { ++ //These need to be fixed for the CE-RH1's values ++ { 25, 35, KEY_STOPCD}, ++ { 55, 65, KEY_PLAYPAUSE}, ++ { 85, 95, KEY_NEXTSONG}, ++ { 115, 125, KEY_VOLUMEUP}, ++ { 145, 155, KEY_PREVIOUSSONG}, ++ { 180, 190, KEY_MUTE}, ++ { 215, 225, KEY_VOLUMEDOWN}, ++}; ++#endif ++ ++#define RELEASE_HI 230 ++#define MAX_EARPHONE 6 ++#define RC_POLL_MS 10 ++#define RC_FINISH_MS 500 ++#define WAIT_STATE 3 ++#define NOISE_THRESHOLD 100 ++ ++struct sharpsl_rc { ++ struct input_dev *input; ++ struct device *dev; ++ ++ spinlock_t lock; ++ struct timer_list rctimer; ++ struct timer_list rctimer_finish; ++ ++ unsigned int handling_press; ++ unsigned int noise; ++ unsigned int state; ++ unsigned int last_key; ++}; ++ ++static int get_remocon_raw(void) ++{ ++ int i, val; ++ ++ val = sharpsl_pm_pxa_read_max1111(MAX1111_REMCOM); ++ for (i = 0; i < ARRAY_SIZE(remote_keys); ++i) { ++ if (val >= remote_keys[i].min ++ && val <= remote_keys[i].max) { ++ printk("get_remocon_raw: VAL=%i, KEY=%i\n", val, remote_keys[i].key); ++ return remote_keys[i].key; ++ } ++ } ++ return 0; ++} ++ ++static irqreturn_t sharpsl_rc_interrupt(int irq, void *dev_id, struct pt_regs *regs) ++{ ++ struct sharpsl_rc *data = dev_id; ++ DPRINTK("sharpsl_rc_interrupt %d\n", irq); ++ if (!data->handling_press) { ++ DPRINTK("handling interrupt"); ++ data->handling_press = 1; ++ data->noise = 0; ++ data->state = 0; ++ data->last_key = 0; ++ ++ reset_scoop_gpio(&REMOTE_SCOOP_DEVICE.dev, REMOTE_AKIN_PULLUP); ++ ++ mod_timer(&data->rctimer, jiffies + msecs_to_jiffies(RC_POLL_MS)); ++ } ++ return IRQ_HANDLED; ++} ++ ++static void sharpsl_rc_timer_callback(unsigned long dataPtr) ++{ ++ struct sharpsl_rc *data = (struct sharpsl_rc *) dataPtr; ++ int timer = 1; ++ int key = get_remocon_raw(); ++ DPRINTK("timer callback, key: %d", key); ++ ++ //wait for value to stabilize ++ if (data->state < WAIT_STATE) { ++ if (data->last_key != key) { ++ ++data->noise; ++ if (data->noise > NOISE_THRESHOLD) { ++ DPRINTK("too much noise, bailing"); ++ timer = 0; ++ } ++ data->state = 0; ++ } else { ++ ++data->state; ++ } ++ data->last_key = key; ++ ++ //stable value, send event ++ } else if (data->state == WAIT_STATE) { ++ data->noise = 0; ++ //non-key returned, skip the rest of the states and bail now ++ if (data->last_key == 0) { ++ DPRINTK("non-key detected %d, noise: %d", data->last_key, data->noise); ++ timer = 0; ++ //send button press ++ } else { ++ DPRINTK("key press detected %d, noise %d", data->last_key, data->noise); ++ input_report_key(data->input, data->last_key, 1); ++ } ++ ++data->state; ++ ++ //wait until key is released ++ } else if (data->state < WAIT_STATE * 2) { ++ if (key == data->last_key ++ && data->noise < NOISE_THRESHOLD) { ++ data->state = WAIT_STATE + 1; ++ ++data->noise; ++ } else { ++ ++data->state; ++ } ++ //key is released, send event ++ } else { ++ //send button release ++ DPRINTK("release key %d", data->last_key); ++ input_report_key(data->input, data->last_key, 0); ++ timer = 0; ++ } ++ if (timer) { ++ mod_timer(&data->rctimer, jiffies + msecs_to_jiffies(RC_POLL_MS)); ++ } else { ++ set_scoop_gpio(&REMOTE_SCOOP_DEVICE.dev, REMOTE_AKIN_PULLUP); ++ data->handling_press = 0; ++ } ++} ++ ++static int __init sharpsl_rc_probe(struct platform_device *pdev) ++{ ++ struct sharpsl_rc *sharpsl_rc; ++ struct input_dev *input_dev; ++ int i, ret; ++ ++ dev_dbg(&pdev->dev, "sharpsl_rc_probe\n"); ++ ++ sharpsl_rc = kzalloc(sizeof(struct sharpsl_rc), GFP_KERNEL); ++ input_dev = input_allocate_device(); ++ if (!sharpsl_rc || !input_dev) { ++ kfree(sharpsl_rc); ++ input_free_device(input_dev); ++ return -ENOMEM; ++ } ++ ++ platform_set_drvdata(pdev, sharpsl_rc); ++ ++ sharpsl_rc->dev = &pdev->dev; ++ sharpsl_rc->input = input_dev; ++ spin_lock_init(&sharpsl_rc->lock); ++ ++ /* Init Remote Control Timer */ ++ init_timer(&sharpsl_rc->rctimer); ++ sharpsl_rc->rctimer.function = sharpsl_rc_timer_callback; ++ sharpsl_rc->rctimer.data = (unsigned long) sharpsl_rc; ++ ++ input_dev->name = "Sharp Remote Control CE-RHX"; ++ input_dev->phys = "sharpsl_rc/input0"; ++ input_dev->id.bustype = BUS_HOST; ++ input_dev->id.vendor = 0x0001; ++ input_dev->id.product = 0x0001; ++ input_dev->id.version = 0x0100; ++ input_dev->cdev.dev = &pdev->dev; ++ input_dev->private = sharpsl_rc; ++ ++ input_dev->evbit[0] = BIT(EV_KEY); ++ ++ for (i = 0; i <= ARRAY_SIZE(remote_keys); i++) ++ set_bit(remote_keys[i].key, input_dev->keybit); ++ ++ input_register_device(sharpsl_rc->input); ++ ++ pxa_gpio_mode(REMOTE_GPIO_INT | GPIO_IN); ++ ret = request_irq(REMOTE_IRQ_INT, ++ sharpsl_rc_interrupt, ++ IRQF_DISABLED | IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING | IRQF_SHARED, ++ "sharpsl_rc", ++ sharpsl_rc); ++ if (ret < 0) { ++ dev_dbg(&pdev->dev, "Can't get IRQ: %d!\n", i); ++ kfree(sharpsl_rc); ++ input_free_device(input_dev); ++ return ret; ++ } ++ ++ return 0; ++} ++ ++static int sharpsl_rc_remove(struct platform_device *pdev) ++{ ++ struct sharpsl_rc *sharpsl_rc = platform_get_drvdata(pdev); ++ ++ dev_dbg(&pdev->dev, "sharpsl_rc_remove\n"); ++ ++ free_irq(REMOTE_IRQ_INT, sharpsl_rc); ++ del_timer_sync(&sharpsl_rc->rctimer); ++ input_unregister_device(sharpsl_rc->input); ++ kfree(sharpsl_rc); ++ ++ return 0; ++} ++ ++static struct platform_driver sharpsl_rc_driver = { ++ .probe = sharpsl_rc_probe, ++ .remove = sharpsl_rc_remove, ++ .suspend = NULL, ++ .resume = NULL, ++ .driver = { ++ .name = "sharpsl-remote-control", ++ }, ++}; ++ ++static int __devinit sharpsl_rc_init(void) ++{ ++ printk("sharpsl_rc_init\n"); ++ return platform_driver_register(&sharpsl_rc_driver); ++} ++ ++static void __exit sharpsl_rc_exit(void) ++{ ++ printk("sharpsl_rc_exit\n"); ++ platform_driver_unregister(&sharpsl_rc_driver); ++} ++ ++module_init(sharpsl_rc_init); ++module_exit(sharpsl_rc_exit); ++ ++MODULE_AUTHOR("Justin Patrin <papercrane@reversefold.com>"); ++MODULE_AUTHOR("Richard Purdie <rpurdie@rpsys.net>"); ++MODULE_DESCRIPTION("SharpSL Remote Control Driver"); ++MODULE_LICENSE("GPL"); +Index: linux-2.6.24/drivers/input/keyboard/spitzkbd.c +=================================================================== +--- linux-2.6.24.orig/drivers/input/keyboard/spitzkbd.c 2008-01-24 22:58:37.000000000 +0000 ++++ linux-2.6.24/drivers/input/keyboard/spitzkbd.c 2008-03-10 17:05:55.000000000 +0000 +@@ -19,6 +19,7 @@ + #include <linux/jiffies.h> + #include <linux/module.h> + #include <linux/slab.h> ++#include <linux/kmod.h> + + #include <asm/arch/spitz.h> + #include <asm/arch/hardware.h> +@@ -279,13 +280,21 @@ + static int sharpsl_hinge_state; + static int hinge_count; + ++void spitzkbd_handle_sharpsl_rc(void *arg) { ++ request_module("sharpsl_rc"); ++} ++ ++DECLARE_WORK(spitzkbd_work, spitzkbd_handle_sharpsl_rc); ++ + static void spitzkbd_hinge_timer(unsigned long data) + { + struct spitzkbd *spitzkbd_data = (struct spitzkbd *) data; + unsigned long state; + unsigned long flags; ++ unsigned int headphone, remote; + + state = GPLR(SPITZ_GPIO_SWA) & (GPIO_bit(SPITZ_GPIO_SWA)|GPIO_bit(SPITZ_GPIO_SWB)); ++ state |= (GPLR(SPITZ_GPIO_HP_IN) & GPIO_bit(SPITZ_GPIO_HP_IN)); + state |= (GPLR(SPITZ_GPIO_AK_INT) & GPIO_bit(SPITZ_GPIO_AK_INT)); + if (state != sharpsl_hinge_state) { + hinge_count = 0; +@@ -299,9 +308,18 @@ + + input_report_switch(spitzkbd_data->input, SW_LID, ((GPLR(SPITZ_GPIO_SWA) & GPIO_bit(SPITZ_GPIO_SWA)) != 0)); + input_report_switch(spitzkbd_data->input, SW_TABLET_MODE, ((GPLR(SPITZ_GPIO_SWB) & GPIO_bit(SPITZ_GPIO_SWB)) != 0)); +- input_report_switch(spitzkbd_data->input, SW_HEADPHONE_INSERT, ((GPLR(SPITZ_GPIO_AK_INT) & GPIO_bit(SPITZ_GPIO_AK_INT)) != 0)); ++ ++ headphone = ((GPLR(SPITZ_GPIO_HP_IN) & GPIO_bit(SPITZ_GPIO_HP_IN)) != 0); ++ input_report_switch(spitzkbd_data->input, SW_HEADPHONE_INSERT, headphone); ++ ++ remote = headphone && ((GPLR(SPITZ_GPIO_AK_INT) & GPIO_bit(SPITZ_GPIO_AK_INT)) == 0); ++ input_report_switch(spitzkbd_data->input, SW_REMOTE_INSERT, remote); + input_sync(spitzkbd_data->input); + ++ if (remote) { ++ schedule_work(&spitzkbd_work); ++ } ++ + spin_unlock_irqrestore(&spitzkbd_data->lock, flags); + } else { + mod_timer(&spitzkbd_data->htimer, jiffies + msecs_to_jiffies(HINGE_SCAN_INTERVAL)); +@@ -395,6 +413,7 @@ + set_bit(SW_LID, input_dev->swbit); + set_bit(SW_TABLET_MODE, input_dev->swbit); + set_bit(SW_HEADPHONE_INSERT, input_dev->swbit); ++ set_bit(SW_REMOTE_INSERT, input_dev->swbit); + + err = input_register_device(input_dev); + if (err) +@@ -432,9 +451,12 @@ + request_irq(SPITZ_IRQ_GPIO_SWB, spitzkbd_hinge_isr, + IRQF_DISABLED | IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING, + "Spitzkbd SWB", spitzkbd); +- request_irq(SPITZ_IRQ_GPIO_AK_INT, spitzkbd_hinge_isr, ++ request_irq(SPITZ_IRQ_GPIO_HP_IN, spitzkbd_hinge_isr, + IRQF_DISABLED | IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING, + "Spitzkbd HP", spitzkbd); ++ request_irq(SPITZ_IRQ_GPIO_AK_INT, spitzkbd_hinge_isr, ++ IRQF_DISABLED | IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING | IRQF_SHARED, ++ "Spitzkbd HP Type", spitzkbd); + + return 0; + +@@ -455,6 +477,7 @@ + free_irq(SPITZ_IRQ_GPIO_ON_KEY, spitzkbd); + free_irq(SPITZ_IRQ_GPIO_SWA, spitzkbd); + free_irq(SPITZ_IRQ_GPIO_SWB, spitzkbd); ++ free_irq(SPITZ_IRQ_GPIO_HP_IN, spitzkbd); + free_irq(SPITZ_IRQ_GPIO_AK_INT, spitzkbd); + + del_timer_sync(&spitzkbd->htimer); +Index: linux-2.6.24/arch/arm/mach-pxa/sharpsl.h +=================================================================== +--- linux-2.6.24.orig/arch/arm/mach-pxa/sharpsl.h 2008-03-10 17:05:35.000000000 +0000 ++++ linux-2.6.24/arch/arm/mach-pxa/sharpsl.h 2008-03-10 17:05:55.000000000 +0000 +@@ -37,15 +37,10 @@ + */ + #define READ_GPIO_BIT(x) (GPLR(x) & GPIO_bit(x)) + +-/* MAX1111 Channel Definitions */ +-#define MAX1111_BATT_VOLT 4u +-#define MAX1111_BATT_TEMP 2u +-#define MAX1111_ACIN_VOLT 6u +- + extern struct battery_thresh spitz_battery_levels_acin[]; + extern struct battery_thresh spitz_battery_levels_noac[]; + void sharpsl_pm_pxa_init(void); + void sharpsl_pm_pxa_remove(void); +-int sharpsl_pm_pxa_read_max1111(int channel); ++ + + +Index: linux-2.6.24/arch/arm/mach-pxa/sharpsl_pm.c +=================================================================== +--- linux-2.6.24.orig/arch/arm/mach-pxa/sharpsl_pm.c 2008-01-24 22:58:37.000000000 +0000 ++++ linux-2.6.24/arch/arm/mach-pxa/sharpsl_pm.c 2008-03-10 17:05:55.000000000 +0000 +@@ -135,6 +135,8 @@ + | MAXCTRL_SGL | MAXCTRL_UNI | MAXCTRL_STR); + } + ++EXPORT_SYMBOL(sharpsl_pm_pxa_read_max1111); ++ + void sharpsl_pm_pxa_init(void) + { + pxa_gpio_mode(sharpsl_pm.machinfo->gpio_acin | GPIO_IN); +Index: linux-2.6.24/include/asm-arm/hardware/sharpsl_pm.h +=================================================================== +--- linux-2.6.24.orig/include/asm-arm/hardware/sharpsl_pm.h 2008-01-24 22:58:37.000000000 +0000 ++++ linux-2.6.24/include/asm-arm/hardware/sharpsl_pm.h 2008-03-10 17:05:55.000000000 +0000 +@@ -104,3 +104,10 @@ + irqreturn_t sharpsl_chrg_full_isr(int irq, void *dev_id); + irqreturn_t sharpsl_fatal_isr(int irq, void *dev_id); + ++/* MAX1111 Channel Definitions */ ++#define MAX1111_REMCOM 0u ++#define MAX1111_BATT_VOLT 4u ++#define MAX1111_BATT_TEMP 2u ++#define MAX1111_ACIN_VOLT 6u ++ ++int sharpsl_pm_pxa_read_max1111(int channel); +Index: linux-2.6.24/include/linux/input.h +=================================================================== +--- linux-2.6.24.orig/include/linux/input.h 2008-01-24 22:58:37.000000000 +0000 ++++ linux-2.6.24/include/linux/input.h 2008-03-10 17:05:55.000000000 +0000 +@@ -636,6 +636,7 @@ + #define SW_TABLET_MODE 0x01 /* set = tablet mode */ + #define SW_HEADPHONE_INSERT 0x02 /* set = inserted */ + #define SW_RADIO 0x03 /* set = radio enabled */ ++#define SW_REMOTE_INSERT 0x04 /* set = remote */ + #define SW_MAX 0x0f + #define SW_CNT (SW_MAX+1) + +Index: linux-2.6.24/arch/arm/mach-pxa/spitz_pm.c +=================================================================== +--- linux-2.6.24.orig/arch/arm/mach-pxa/spitz_pm.c 2008-03-10 17:05:40.000000000 +0000 ++++ linux-2.6.24/arch/arm/mach-pxa/spitz_pm.c 2008-03-10 17:05:55.000000000 +0000 +@@ -162,6 +162,13 @@ + if (resume_on_alarm && (PEDR & PWER_RTC)) + is_resume |= PWER_RTC; + ++ printk("wakeup: PEDR: %x, PKSR: %x, HP_IN: %x, AK_INT: %x\n", PEDR, PKSR, GPIO_bit(SPITZ_GPIO_HP_IN), GPIO_bit(SPITZ_GPIO_AK_INT)); ++ ++ //remote/headphone interrupt, wakeup ++ if (PEDR == 0 && (PKSR & 0xc0d01) != 0) { ++ is_resume |= PWER_RTC; ++ } ++ + dev_dbg(sharpsl_pm.dev, "is_resume: %x\n",is_resume); + return is_resume; + } diff --git a/meta/packages/linux/linux-rp-2.6.24/sharpsl-rc-r2.patch b/meta/packages/linux/linux-rp-2.6.24/sharpsl-rc-r2.patch new file mode 100644 index 000000000..6fb34ec17 --- /dev/null +++ b/meta/packages/linux/linux-rp-2.6.24/sharpsl-rc-r2.patch @@ -0,0 +1,180 @@ +This patch adds support for Sharp CE-RH2 on Akita and CE-RH1 on C7x0. + +This patch is a bit ugly: +- Device specific functions should be moved to platform infrastructure. +- Maybe define generic *_scoopexp functions handling Akita x Spitz differences. + +Index: linux-2.6.24/drivers/input/keyboard/sharpsl_rc.c +=================================================================== +--- linux-2.6.24.orig/drivers/input/keyboard/sharpsl_rc.c 2008-03-08 19:29:02.000000000 +0000 ++++ linux-2.6.24/drivers/input/keyboard/sharpsl_rc.c 2008-03-08 22:23:35.000000000 +0000 +@@ -21,12 +21,10 @@ + #include <linux/module.h> + #include <linux/slab.h> + +-#ifdef CONFIG_MACH_SPITZ ++#include <asm/mach-types.h> + #include <asm/arch/spitz.h> +-#endif +-#ifdef CONFIG_MACH_CORGI ++#include <asm/arch/akita.h> + #include <asm/arch/corgi.h> +-#endif + + #include <asm/arch/hardware.h> + #include <asm/arch/pxa-regs.h> +@@ -42,12 +40,8 @@ + unsigned char key; + }; + +-#ifdef CONFIG_MACH_SPITZ +-#define REMOTE_AKIN_PULLUP SPITZ_SCP2_AKIN_PULLUP +-#define REMOTE_SCOOP_DEVICE spitzscoop2_device +-#define REMOTE_GPIO_INT SPITZ_GPIO_AK_INT +-#define REMOTE_IRQ_INT SPITZ_IRQ_GPIO_AK_INT +-static struct remote_control_key remote_keys[] = { ++static struct remote_control_key remote_keys_spitz[] = { ++ /* CE-RH2 values */ + { 25, 35, KEY_STOPCD}, + { 55, 65, KEY_PLAYPAUSE}, + { 85, 95, KEY_NEXTSONG}, +@@ -56,23 +50,15 @@ + { 180, 190, KEY_MUTE}, + { 215, 225, KEY_VOLUMEDOWN}, + }; +-#endif +-#ifdef CONFIG_MACH_CORGI +-#define REMOTE_AKIN_PULLUP CORGI_SCP_AKIN_PULLUP +-#define REMOTE_SCOOP_DEVICE corgiscoop_device +-#define REMOTE_GPIO_INT CORGI_GPIO_AK_INT +-#define REMOTE_IRQ_INT CORGI_IRQ_GPIO_AK_INT +-static struct remote_control_key remote_keys[] = { +- //These need to be fixed for the CE-RH1's values +- { 25, 35, KEY_STOPCD}, +- { 55, 65, KEY_PLAYPAUSE}, +- { 85, 95, KEY_NEXTSONG}, +- { 115, 125, KEY_VOLUMEUP}, +- { 145, 155, KEY_PREVIOUSSONG}, +- { 180, 190, KEY_MUTE}, +- { 215, 225, KEY_VOLUMEDOWN}, ++static struct remote_control_key remote_keys_corgi[] = { ++ /* CE-RH1 values */ ++ { 27, 35, KEY_STOPCD}, ++ { 7, 13, KEY_PLAYPAUSE}, ++ { 77, 93, KEY_NEXTSONG}, ++ { 115, 132, KEY_VOLUMEUP}, ++ { 46, 58, KEY_PREVIOUSSONG}, ++ { 170, 186, KEY_VOLUMEDOWN}, + }; +-#endif + + #define RELEASE_HI 230 + #define MAX_EARPHONE 6 +@@ -98,9 +84,17 @@ + static int get_remocon_raw(void) + { + int i, val; ++ struct remote_control_key *remote_keys; ++ ++ if (machine_is_borzoi() || machine_is_spitz() || machine_is_akita()) ++ remote_keys = remote_keys_spitz; ++ else ++ remote_keys = remote_keys_corgi; + + val = sharpsl_pm_pxa_read_max1111(MAX1111_REMCOM); +- for (i = 0; i < ARRAY_SIZE(remote_keys); ++i) { ++ for (i = 0; i < (machine_is_borzoi() || machine_is_spitz() || machine_is_akita() ? ++ ARRAY_SIZE(remote_keys_spitz) : ARRAY_SIZE(remote_keys_corgi)); ++ ++i) { + if (val >= remote_keys[i].min + && val <= remote_keys[i].max) { + printk("get_remocon_raw: VAL=%i, KEY=%i\n", val, remote_keys[i].key); +@@ -121,8 +115,12 @@ + data->state = 0; + data->last_key = 0; + +- reset_scoop_gpio(&REMOTE_SCOOP_DEVICE.dev, REMOTE_AKIN_PULLUP); +- ++ if (machine_is_borzoi() || machine_is_spitz()) ++ reset_scoop_gpio(platform_scoop_config->devs[1].dev, SPITZ_SCP2_AKIN_PULLUP); ++ else if (machine_is_akita()) ++ akita_reset_ioexp(&akitaioexp_device.dev, AKITA_IOEXP_AKIN_PULLUP); ++ else ++ reset_scoop_gpio(platform_scoop_config->devs[0].dev, CORGI_SCP_AKIN_PULLUP); + mod_timer(&data->rctimer, jiffies + msecs_to_jiffies(RC_POLL_MS)); + } + return IRQ_HANDLED; +@@ -182,7 +180,12 @@ + if (timer) { + mod_timer(&data->rctimer, jiffies + msecs_to_jiffies(RC_POLL_MS)); + } else { +- set_scoop_gpio(&REMOTE_SCOOP_DEVICE.dev, REMOTE_AKIN_PULLUP); ++ if (machine_is_borzoi() || machine_is_spitz()) ++ set_scoop_gpio(platform_scoop_config->devs[1].dev, SPITZ_SCP2_AKIN_PULLUP); ++ else if (machine_is_akita()) ++ akita_set_ioexp(&akitaioexp_device.dev, AKITA_IOEXP_AKIN_PULLUP); ++ else ++ set_scoop_gpio(platform_scoop_config->devs[0].dev, CORGI_SCP_AKIN_PULLUP); + data->handling_press = 0; + } + } +@@ -192,6 +195,7 @@ + struct sharpsl_rc *sharpsl_rc; + struct input_dev *input_dev; + int i, ret; ++ struct remote_control_key *remote_keys; + + dev_dbg(&pdev->dev, "sharpsl_rc_probe\n"); + +@@ -225,17 +229,32 @@ + + input_dev->evbit[0] = BIT(EV_KEY); + +- for (i = 0; i <= ARRAY_SIZE(remote_keys); i++) ++ if (machine_is_borzoi() || machine_is_spitz() || machine_is_akita()) ++ remote_keys = remote_keys_spitz; ++ else ++ remote_keys = remote_keys_corgi; ++ for (i = 0; i < (machine_is_borzoi() || machine_is_spitz() || machine_is_akita() ? ++ ARRAY_SIZE(remote_keys_spitz) : ARRAY_SIZE(remote_keys_corgi)); ++ ++i) + set_bit(remote_keys[i].key, input_dev->keybit); + + input_register_device(sharpsl_rc->input); + +- pxa_gpio_mode(REMOTE_GPIO_INT | GPIO_IN); +- ret = request_irq(REMOTE_IRQ_INT, +- sharpsl_rc_interrupt, +- IRQF_DISABLED | IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING | IRQF_SHARED, +- "sharpsl_rc", +- sharpsl_rc); ++ if (machine_is_borzoi() || machine_is_spitz() || machine_is_akita()) { ++ pxa_gpio_mode(SPITZ_GPIO_AK_INT | GPIO_IN); ++ ret = request_irq(SPITZ_IRQ_GPIO_AK_INT, ++ sharpsl_rc_interrupt, ++ IRQF_DISABLED | IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING | IRQF_SHARED, ++ "sharpsl_rc", ++ sharpsl_rc); ++ } else { ++ pxa_gpio_mode(CORGI_GPIO_AK_INT | GPIO_IN); ++ ret = request_irq(CORGI_IRQ_GPIO_AK_INT, ++ sharpsl_rc_interrupt, ++ IRQF_DISABLED | IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING | IRQF_SHARED, ++ "sharpsl_rc", ++ sharpsl_rc); ++ } + if (ret < 0) { + dev_dbg(&pdev->dev, "Can't get IRQ: %d!\n", i); + kfree(sharpsl_rc); +@@ -252,7 +271,10 @@ + + dev_dbg(&pdev->dev, "sharpsl_rc_remove\n"); + +- free_irq(REMOTE_IRQ_INT, sharpsl_rc); ++ if (machine_is_borzoi() || machine_is_spitz() || machine_is_akita()) ++ free_irq(SPITZ_IRQ_GPIO_AK_INT, sharpsl_rc); ++ else ++ free_irq(CORGI_IRQ_GPIO_AK_INT, sharpsl_rc); + del_timer_sync(&sharpsl_rc->rctimer); + input_unregister_device(sharpsl_rc->input); + kfree(sharpsl_rc); diff --git a/meta/packages/linux/linux-rp-2.6.24/spitz_h_rewrite.patch b/meta/packages/linux/linux-rp-2.6.24/spitz_h_rewrite.patch new file mode 100644 index 000000000..df6d5f66c --- /dev/null +++ b/meta/packages/linux/linux-rp-2.6.24/spitz_h_rewrite.patch @@ -0,0 +1,497 @@ +http://www.uwsg.indiana.edu/hypermail/linux/kernel/0802.1/3541.html + +Here is a rewrite of spitz.h, which includes comments documenting +function of particular GPIO pins. + +spitz_h_rewrite.patch provides: +- no changes in compiled code +- partial spitz.h rewrite: + * organized by function + * describes complete GPIO pinout + * comments added + * removed defines cloning pxa-regs.h +- prefer generic pxa-regs.h GPIO if available +- use GPIO names instead of numbers + +Thanks to Trisoft for providing needed information. + +Index: linux-2.6.24/arch/arm/mach-pxa/spitz_pm.c +=================================================================== +--- linux-2.6.24.orig/arch/arm/mach-pxa/spitz_pm.c 2008-01-24 22:58:37.000000000 +0000 ++++ linux-2.6.24/arch/arm/mach-pxa/spitz_pm.c 2008-02-13 13:49:22.000000000 +0000 +@@ -110,9 +110,9 @@ + pxa_gpio_mode(GPIO18_RDY|GPIO_OUT | GPIO_DFLT_HIGH); + + PRER = GPIO_bit(SPITZ_GPIO_KEY_INT); +- PFER = GPIO_bit(SPITZ_GPIO_KEY_INT) | GPIO_bit(SPITZ_GPIO_RESET); +- PWER = GPIO_bit(SPITZ_GPIO_KEY_INT) | GPIO_bit(SPITZ_GPIO_RESET) | PWER_RTC; +- PKWR = GPIO_bit(SPITZ_GPIO_SYNC) | GPIO_bit(SPITZ_GPIO_KEY_INT) | GPIO_bit(SPITZ_GPIO_RESET); ++ PFER = GPIO_bit(SPITZ_GPIO_KEY_INT) | GPIO_bit(GPIO1_RST); ++ PWER = GPIO_bit(SPITZ_GPIO_KEY_INT) | GPIO_bit(GPIO1_RST) | PWER_RTC; ++ PKWR = GPIO_bit(SPITZ_GPIO_SYNC) | GPIO_bit(SPITZ_GPIO_KEY_INT) | GPIO_bit(GPIO1_RST); + PKSR = 0xffffffff; // clear + + /* nRESET_OUT Disable */ +@@ -128,7 +128,7 @@ + static void spitz_postsuspend(void) + { + pxa_gpio_mode(GPIO18_RDY_MD); +- pxa_gpio_mode(10 | GPIO_IN); ++ pxa_gpio_mode(SPITZ_GPIO_NC_10 | GPIO_IN); + } + + static int spitz_should_wakeup(unsigned int resume_on_alarm) +Index: linux-2.6.24/drivers/video/pxafb.c +=================================================================== +--- linux-2.6.24.orig/drivers/video/pxafb.c 2008-02-13 13:49:04.000000000 +0000 ++++ linux-2.6.24/drivers/video/pxafb.c 2008-02-13 13:49:57.000000000 +0000 +@@ -920,7 +920,7 @@ + return; + } + +- for (gpio = 58; ldd_bits > 0; gpio++, ldd_bits--) { ++ for (gpio = GPIO58_LDD_0; ldd_bits > 0; gpio++, ldd_bits--) { + pxa_gpio_mode(gpio | GPIO_ALT_FN_2_OUT); + } + pxa_gpio_mode(GPIO74_LCD_FCLK_MD); +Index: linux-2.6.24/include/asm-arm/arch-pxa/akita.h +=================================================================== +--- linux-2.6.24.orig/include/asm-arm/arch-pxa/akita.h 2008-01-24 22:58:37.000000000 +0000 ++++ linux-2.6.24/include/asm-arm/arch-pxa/akita.h 2008-02-13 13:49:22.000000000 +0000 +@@ -12,11 +12,11 @@ + /* Akita IO Expander GPIOs */ + + #define AKITA_IOEXP_RESERVED_7 (1 << 7) +-#define AKITA_IOEXP_IR_ON (1 << 6) +-#define AKITA_IOEXP_AKIN_PULLUP (1 << 5) +-#define AKITA_IOEXP_BACKLIGHT_CONT (1 << 4) +-#define AKITA_IOEXP_BACKLIGHT_ON (1 << 3) +-#define AKITA_IOEXP_MIC_BIAS (1 << 2) ++#define AKITA_IOEXP_IR_ON (1 << 6) /* IrDA On */ ++#define AKITA_IOEXP_AKIN_PULLUP (1 << 5) /* Pull-Up for Remote */ ++#define AKITA_IOEXP_BACKLIGHT_CONT (1 << 4) /* Backlight Control */ ++#define AKITA_IOEXP_BACKLIGHT_ON (1 << 3) /* Backlight On */ ++#define AKITA_IOEXP_MIC_BIAS (1 << 2) /* Mic Bias On */ + #define AKITA_IOEXP_RESERVED_1 (1 << 1) + #define AKITA_IOEXP_RESERVED_0 (1 << 0) + +Index: linux-2.6.24/include/asm-arm/arch-pxa/pxa-regs.h +=================================================================== +--- linux-2.6.24.orig/include/asm-arm/arch-pxa/pxa-regs.h 2008-02-13 13:49:07.000000000 +0000 ++++ linux-2.6.24/include/asm-arm/arch-pxa/pxa-regs.h 2008-02-13 13:49:22.000000000 +0000 +@@ -1334,6 +1334,7 @@ + #define GPIO85_nPCE_1 85 /* Card Enable for Card Space (PXA27x) */ + #define GPIO92_MMCDAT0 92 /* MMC DAT0 (PXA27x) */ + #define GPIO102_nPCE_1 102 /* PCMCIA (PXA27x) */ ++#define GPIO104_pSKTSEL 104 /* PCMCIA Socket Select (PXA27x) */ + #define GPIO109_MMCDAT1 109 /* MMC DAT1 (PXA27x) */ + #define GPIO110_MMCDAT2 110 /* MMC DAT2 (PXA27x) */ + #define GPIO110_MMCCS0 110 /* MMC Chip Select 0 (PXA27x) */ +Index: linux-2.6.24/include/asm-arm/arch-pxa/spitz.h +=================================================================== +--- linux-2.6.24.orig/include/asm-arm/arch-pxa/spitz.h 2008-02-13 13:49:01.000000000 +0000 ++++ linux-2.6.24/include/asm-arm/arch-pxa/spitz.h 2008-02-13 13:49:22.000000000 +0000 +@@ -1,8 +1,9 @@ + /* +- * Hardware specific definitions for SL-Cx000 series of PDAs ++ * Hardware specific definitions for SL-Cxx00 series of PDAs + * + * Copyright (c) 2005 Alexander Wykes + * Copyright (c) 2005 Richard Purdie ++ * Copyright (c) 2008 Stanislav Brabec + * + * Based on Sharp's 2.4 kernel patches + * +@@ -13,140 +14,257 @@ + */ + #ifndef __ASM_ARCH_SPITZ_H + #define __ASM_ARCH_SPITZ_H 1 +-#endif + +-#include <linux/fb.h> ++#include <asm-arm/arch-pxa/irqs.h> ++#include <linux/platform_device.h> + + /* Spitz/Akita GPIOs */ + +-#define SPITZ_GPIO_KEY_INT (0) /* Key Interrupt */ +-#define SPITZ_GPIO_RESET (1) +-#define SPITZ_GPIO_nSD_DETECT (9) +-#define SPITZ_GPIO_TP_INT (11) /* Touch Panel interrupt */ +-#define SPITZ_GPIO_AK_INT (13) /* Remote Control */ +-#define SPITZ_GPIO_ADS7846_CS (14) +-#define SPITZ_GPIO_SYNC (16) +-#define SPITZ_GPIO_MAX1111_CS (20) +-#define SPITZ_GPIO_FATAL_BAT (21) +-#define SPITZ_GPIO_HSYNC (22) +-#define SPITZ_GPIO_nSD_CLK (32) +-#define SPITZ_GPIO_USB_DEVICE (35) +-#define SPITZ_GPIO_USB_HOST (37) +-#define SPITZ_GPIO_USB_CONNECT (41) +-#define SPITZ_GPIO_LCDCON_CS (53) +-#define SPITZ_GPIO_nPCE (54) +-#define SPITZ_GPIO_nSD_WP (81) +-#define SPITZ_GPIO_ON_RESET (89) +-#define SPITZ_GPIO_BAT_COVER (90) +-#define SPITZ_GPIO_CF_CD (94) +-#define SPITZ_GPIO_ON_KEY (95) +-#define SPITZ_GPIO_SWA (97) +-#define SPITZ_GPIO_SWB (96) +-#define SPITZ_GPIO_CHRG_FULL (101) +-#define SPITZ_GPIO_CO (101) +-#define SPITZ_GPIO_CF_IRQ (105) +-#define SPITZ_GPIO_AC_IN (115) +-#define SPITZ_GPIO_HP_IN (116) ++/* This list refers to all GPIO pins either in defines or in comments. ++ * ++ * GPIO pins not listed: ++ * GPIO2 SYS_EN: System Power Enable ++ * GPIO5-GPIO8 PWR_CAP0-PWR_CAP3: sleep DC-DC converter power capacitors ++ * GPIO40 not connected ++ */ + +-/* Spitz Only GPIOs */ + +-#define SPITZ_GPIO_CF2_IRQ (106) /* CF slot1 Ready */ +-#define SPITZ_GPIO_CF2_CD (93) ++/* Spitz/Akita System GPIO */ ++ ++#define SPITZ_GPIO_KEY_INT (0) /* Key Interrupt */ ++#define SPITZ_GPIO_SYNC (16) /* IOPORT Wake Up (input) */ ++#define SPITZ_GPIO_NAND_CS (79) /* NAND Flash Chip Select */ ++#define SPITZ_GPIO_NC_10 (10) /* Not Connected (but used in kernel) */ ++/* This GPIO pin is connected: ++ * GPIO1_RST ++ */ + + ++/* Compact Flash Interface */ ++ ++/* Spitz/Akita Compact Flash Interface */ ++#define SPITZ_GPIO_CF_CD (94) /* CF IRQ */ ++#define SPITZ_GPIO_CF_IRQ (105) /* CF Ready */ ++/* These GPIO pins are connected: ++ * GPIO48_nPOE ++ * GPIO49_nPWE ++ * GPIO50_nPIOR ++ * GPIO51_nPIOW ++ * GPIO54_nPCE_2 ++ * GPIO55_nPREG ++ * GPIO56_nPWAIT ++ * GPIO57_nIOIS16 ++ * GPIO80_nCS_4 ++ * GPIO85_nPCE_1 ++ * GPIO104_pSKTSEL ++ */ ++ ++/* Spitz only Compact Flash Interface */ ++#define SPITZ_GPIO_CF2_CD (93) /* CF slot1 IRQ */ ++#define SPITZ_GPIO_CF2_IRQ (106) /* CF slot1 Ready */ ++/* This GPIO pin is connected: ++ * GPIO78_nCS_2 ++ */ ++ ++ ++/* Spitz/Akita Battery, Power and Service Connector */ ++ ++#define SPITZ_GPIO_FATAL_BAT (21) /* Fatal Battery */ ++#define SPITZ_GPIO_BAT_COVER (90) /* Battery Cover switch */ ++#define SPITZ_GPIO_BAT_COVER2 (15) /* Battery Cover switch, parallel pin */ ++#define SPITZ_GPIO_CHRG_FULL (101) /* Battery Full */ ++#define SPITZ_GPIO_AC_IN (115) /* External Power Supply is active */ ++#define SPITZ_GPIO_ON_RESET (89) /* Software Reset */ ++#define SPITZ_GPIO_SERVICE0 (83) /* Service Connector */ ++#define SPITZ_GPIO_SERVICE1 (84) /* Service Connector */ ++/* This GPIO pin is connected: ++ * GPIO18_RDY ++ */ ++ ++ ++/* Spitz/Akita Display Controller */ ++ ++#define SPITZ_GPIO_HSYNC (22) /* Line Sync Feedback */ ++/* These GPIO pins are connected: ++ * GPIO58_LDD_0-GPIO58_LDD_15 ++ * GPIO74_LCD_FCLK ++ * GPIO75_LCD_LCLK ++ * GPIO76_LCD_PCLK ++ * GPIO77_LCD_ACBIAS ++ */ ++ ++ ++/* Spitz/Akita SSP/SPI Bus and Devices */ ++ ++#define SPITZ_GPIO_SSP_CLK (19) /* SSP bus Clock */ ++#define SPITZ_GPIO_SSP_RXD (86) /* SSP bus RxD */ ++#define SPITZ_GPIO_SSP_TXD (87) /* SSP bus TxD */ ++#define SPITZ_GPIO_TP_INT (11) /* Touch Panel IRQ */ ++#define SPITZ_GPIO_ADS7846_CS (14) /* Touch Panel Controller Chip Select */ ++#define SPITZ_GPIO_MAX1111_CS (20) /* Multi Channel ADC Chip Select */ ++#define SPITZ_GPIO_LCDCON_CS (53) /* LCD Controller Chip Select */ ++ ++ ++/* Spitz/Akita Supplementary USB OTG Pins */ ++ ++#define SPITZ_GPIO_USB_DEVICE (35) /* USB Client power is present */ ++#define SPITZ_GPIO_USB_HOST (37) /* USB OTG 5V Host power supply control */ ++#define SPITZ_GPIO_USB_CONNECT (41) /* USB Host Cable is connected */ ++ ++ ++/* Spitz/Akita Audio */ ++ ++#define SPITZ_GPIO_HP_IN (116) /* CPU Headphone detect */ ++#define SPITZ_GPIO_AK_INT (13) /* Remote Control detect */ ++/* These GPIO AC97 pins are connected: ++ * GPIO28_BITCLK ++ * GPIO29_SDATA_IN ++ * GPIO30_SDATA_OUT ++ * GPIO31_SYNC ++ * GPIO113_AC97_RESET_N ++ */ ++ ++ ++/* Spitz/Akita SD Slot */ ++ ++#define SPITZ_GPIO_nSD_DETECT (9) /* SD Card Presence */ ++#define SPITZ_GPIO_nSD_WP (81) /* SD Write Protection */ ++/* These GPIO pins are connected: ++ * GPIO32_MMCCLK ++ * GPIO92_MMCDAT0 ++ * GPIO109_MMCDAT1 ++ * GPIO110_MMCDAT2 ++ * GPIO111_MMCDAT3 ++ * GPIO112_MMCCMD ++ */ ++ ++/* Spitz/Akita I2C bus */ ++#define SPITZ_GPIO_SCL (117) /* I2C SCL */ ++#define SPITZ_GPIO_SDA (118) /* I2C SDA */ ++#define SPITZ_GPIO_PWR_SCL (3) /* I2C SCL power */ ++#define SPITZ_GPIO_PWR_SDA (4) /* I2C SDA power */ ++ ++/* audio codec pins */ ++ ++ ++/* Spitz/Akita UART ports */ ++ ++/* Fully Featured UART - connected to IOPORT connector */ ++#define SPITZ_GPIO_FFRXD (102) /* IOPORT has nRXD inverted levels */ ++#define SPITZ_GPIO_FFTXD (99) /* IOPORT has nTXD inverted levels */ ++#define SPITZ_GPIO_FFRTS (98) ++#define SPITZ_GPIO_FFCTS (100) ++#define SPITZ_GPIO_FFDTR (82) ++#define SPITZ_GPIO_FFDSR (33) ++ ++/* These UART GPIO pins are connected to Bluetooth ++ * (only on Akita version with Bluetooth) ++ * GPIO42_BTRXD ++ * GPIO43_BTTXD ++ * GPIO44_BTCTS ++ * GPIO45_BTRTS ++ */ ++ ++/* These UART GPIO pins are connected to IrDA: ++ * GPIO46_STRXD ++ * GPIO47_STTXD ++ */ ++ + /* Spitz/Akita Keyboard Definitions */ + +-#define SPITZ_KEY_STROBE_NUM (11) +-#define SPITZ_KEY_SENSE_NUM (7) +-#define SPITZ_GPIO_G0_STROBE_BIT 0x0f800000 +-#define SPITZ_GPIO_G1_STROBE_BIT 0x00100000 +-#define SPITZ_GPIO_G2_STROBE_BIT 0x01000000 +-#define SPITZ_GPIO_G3_STROBE_BIT 0x00041880 +-#define SPITZ_GPIO_G0_SENSE_BIT 0x00021000 +-#define SPITZ_GPIO_G1_SENSE_BIT 0x000000d4 +-#define SPITZ_GPIO_G2_SENSE_BIT 0x08000000 +-#define SPITZ_GPIO_G3_SENSE_BIT 0x00000000 +- +-#define SPITZ_GPIO_KEY_STROBE0 88 +-#define SPITZ_GPIO_KEY_STROBE1 23 +-#define SPITZ_GPIO_KEY_STROBE2 24 +-#define SPITZ_GPIO_KEY_STROBE3 25 +-#define SPITZ_GPIO_KEY_STROBE4 26 +-#define SPITZ_GPIO_KEY_STROBE5 27 +-#define SPITZ_GPIO_KEY_STROBE6 52 +-#define SPITZ_GPIO_KEY_STROBE7 103 +-#define SPITZ_GPIO_KEY_STROBE8 107 +-#define SPITZ_GPIO_KEY_STROBE9 108 +-#define SPITZ_GPIO_KEY_STROBE10 114 +- +-#define SPITZ_GPIO_KEY_SENSE0 12 +-#define SPITZ_GPIO_KEY_SENSE1 17 +-#define SPITZ_GPIO_KEY_SENSE2 91 +-#define SPITZ_GPIO_KEY_SENSE3 34 +-#define SPITZ_GPIO_KEY_SENSE4 36 +-#define SPITZ_GPIO_KEY_SENSE5 38 +-#define SPITZ_GPIO_KEY_SENSE6 39 ++#define SPITZ_KEY_STROBE_NUM (11) ++#define SPITZ_KEY_SENSE_NUM (7) ++#define SPITZ_GPIO_G0_STROBE_BIT 0x0f800000 ++#define SPITZ_GPIO_G1_STROBE_BIT 0x00100000 ++#define SPITZ_GPIO_G2_STROBE_BIT 0x01000000 ++#define SPITZ_GPIO_G3_STROBE_BIT 0x00041880 ++#define SPITZ_GPIO_G0_SENSE_BIT 0x00021000 ++#define SPITZ_GPIO_G1_SENSE_BIT 0x000000d4 ++#define SPITZ_GPIO_G2_SENSE_BIT 0x08000000 ++#define SPITZ_GPIO_G3_SENSE_BIT 0x00000000 ++#define SPITZ_GPIO_KEY_STROBE0 (88) ++#define SPITZ_GPIO_KEY_STROBE1 (23) ++#define SPITZ_GPIO_KEY_STROBE2 (24) ++#define SPITZ_GPIO_KEY_STROBE3 (25) ++#define SPITZ_GPIO_KEY_STROBE4 (26) ++#define SPITZ_GPIO_KEY_STROBE5 (27) ++#define SPITZ_GPIO_KEY_STROBE6 (52) ++#define SPITZ_GPIO_KEY_STROBE7 (103) ++#define SPITZ_GPIO_KEY_STROBE8 (107) ++#define SPITZ_GPIO_KEY_STROBE9 (108) ++#define SPITZ_GPIO_KEY_STROBE10 (114) ++#define SPITZ_GPIO_KEY_SENSE0 (12) ++#define SPITZ_GPIO_KEY_SENSE1 (17) ++#define SPITZ_GPIO_KEY_SENSE2 (91) ++#define SPITZ_GPIO_KEY_SENSE3 (34) ++#define SPITZ_GPIO_KEY_SENSE4 (36) ++#define SPITZ_GPIO_KEY_SENSE5 (38) ++#define SPITZ_GPIO_KEY_SENSE6 (39) ++ ++#define SPITZ_GPIO_SWA (97) /* Keyboard Interrupt A */ ++#define SPITZ_GPIO_SWB (96) /* Keyboard Interrupt B */ ++#define SPITZ_GPIO_ON_KEY (95) /* Power On Key */ + + +-/* Spitz Scoop Device (No. 1) GPIOs */ ++/* Spitz/Akita Scoop Device (No. 1) GPIOs */ + /* Suspend States in comments */ +-#define SPITZ_SCP_LED_GREEN SCOOP_GPCR_PA11 /* Keep */ +-#define SPITZ_SCP_JK_B SCOOP_GPCR_PA12 /* Keep */ +-#define SPITZ_SCP_CHRG_ON SCOOP_GPCR_PA13 /* Keep */ +-#define SPITZ_SCP_MUTE_L SCOOP_GPCR_PA14 /* Low */ +-#define SPITZ_SCP_MUTE_R SCOOP_GPCR_PA15 /* Low */ +-#define SPITZ_SCP_CF_POWER SCOOP_GPCR_PA16 /* Keep */ +-#define SPITZ_SCP_LED_ORANGE SCOOP_GPCR_PA17 /* Keep */ +-#define SPITZ_SCP_JK_A SCOOP_GPCR_PA18 /* Low */ +-#define SPITZ_SCP_ADC_TEMP_ON SCOOP_GPCR_PA19 /* Low */ ++#define SPITZ_SCP_LED_GREEN SCOOP_GPCR_PA11 /* Green LED, Keep */ ++#define SPITZ_SCP_JK_B SCOOP_GPCR_PA12 /* Fast Charge On, Keep */ ++#define SPITZ_SCP_CHRG_ON SCOOP_GPCR_PA13 /* Charge On, Keep */ ++#define SPITZ_SCP_MUTE_L SCOOP_GPCR_PA14 /* Extra Mute Left, Low */ ++#define SPITZ_SCP_MUTE_R SCOOP_GPCR_PA15 /* Extra Mute Right, Low */ ++#define SPITZ_SCP_CF_POWER SCOOP_GPCR_PA16 /* CF+SD Power Circuit, Keep */ ++#define SPITZ_SCP_LED_ORANGE SCOOP_GPCR_PA17 /* Orange LED, Keep */ ++#define SPITZ_SCP_JK_A SCOOP_GPCR_PA18 /* Dummy Load, Low */ ++#define SPITZ_SCP_ADC_TEMP_ON SCOOP_GPCR_PA19 /* Battery Sensor On, Low */ + + #define SPITZ_SCP_IO_DIR (SPITZ_SCP_LED_GREEN | SPITZ_SCP_JK_B | SPITZ_SCP_CHRG_ON | \ +- SPITZ_SCP_MUTE_L | SPITZ_SCP_MUTE_R | SPITZ_SCP_LED_ORANGE | \ +- SPITZ_SCP_CF_POWER | SPITZ_SCP_JK_A | SPITZ_SCP_ADC_TEMP_ON) ++ SPITZ_SCP_MUTE_L | SPITZ_SCP_MUTE_R | SPITZ_SCP_LED_ORANGE | \ ++ SPITZ_SCP_CF_POWER | SPITZ_SCP_JK_A | SPITZ_SCP_ADC_TEMP_ON) + #define SPITZ_SCP_IO_OUT (SPITZ_SCP_CHRG_ON | SPITZ_SCP_MUTE_L | SPITZ_SCP_MUTE_R) + #define SPITZ_SCP_SUS_CLR (SPITZ_SCP_MUTE_L | SPITZ_SCP_MUTE_R | SPITZ_SCP_JK_A | SPITZ_SCP_ADC_TEMP_ON) + #define SPITZ_SCP_SUS_SET 0 + + /* Spitz Scoop Device (No. 2) GPIOs */ +-/* Suspend States in comments */ +-#define SPITZ_SCP2_IR_ON SCOOP_GPCR_PA11 /* High */ +-#define SPITZ_SCP2_AKIN_PULLUP SCOOP_GPCR_PA12 /* Keep */ +-#define SPITZ_SCP2_RESERVED_1 SCOOP_GPCR_PA13 /* High */ +-#define SPITZ_SCP2_RESERVED_2 SCOOP_GPCR_PA14 /* Low */ +-#define SPITZ_SCP2_RESERVED_3 SCOOP_GPCR_PA15 /* Low */ +-#define SPITZ_SCP2_RESERVED_4 SCOOP_GPCR_PA16 /* Low */ +-#define SPITZ_SCP2_BACKLIGHT_CONT SCOOP_GPCR_PA17 /* Low */ +-#define SPITZ_SCP2_BACKLIGHT_ON SCOOP_GPCR_PA18 /* Low */ +-#define SPITZ_SCP2_MIC_BIAS SCOOP_GPCR_PA19 /* Low */ ++/* Suspend States in comments ++ * Spitz only, Akita uses corresponding AKITA_IOEXP_ */ ++#define SPITZ_SCP2_IR_ON SCOOP_GPCR_PA11 /* IrDA On, High */ ++#define SPITZ_SCP2_AKIN_PULLUP SCOOP_GPCR_PA12 /* Pull-Up for Remote, Keep */ ++#define SPITZ_SCP2_RESERVED_1 SCOOP_GPCR_PA13 /* High */ ++#define SPITZ_SCP2_RESERVED_2 SCOOP_GPCR_PA14 /* Low */ ++#define SPITZ_SCP2_RESERVED_3 SCOOP_GPCR_PA15 /* Low */ ++#define SPITZ_SCP2_RESERVED_4 SCOOP_GPCR_PA16 /* Low */ ++#define SPITZ_SCP2_BACKLIGHT_CONT SCOOP_GPCR_PA17 /* Backlight Control, Low */ ++#define SPITZ_SCP2_BACKLIGHT_ON SCOOP_GPCR_PA18 /* Backlight On, Low */ ++#define SPITZ_SCP2_MIC_BIAS SCOOP_GPCR_PA19 /* Mic Bias On, Low */ + + #define SPITZ_SCP2_IO_DIR (SPITZ_SCP2_IR_ON | SPITZ_SCP2_AKIN_PULLUP | SPITZ_SCP2_RESERVED_1 | \ +- SPITZ_SCP2_RESERVED_2 | SPITZ_SCP2_RESERVED_3 | SPITZ_SCP2_RESERVED_4 | \ +- SPITZ_SCP2_BACKLIGHT_CONT | SPITZ_SCP2_BACKLIGHT_ON | SPITZ_SCP2_MIC_BIAS) ++ SPITZ_SCP2_RESERVED_2 | SPITZ_SCP2_RESERVED_3 | SPITZ_SCP2_RESERVED_4 | \ ++ SPITZ_SCP2_BACKLIGHT_CONT | SPITZ_SCP2_BACKLIGHT_ON | SPITZ_SCP2_MIC_BIAS) + + #define SPITZ_SCP2_IO_OUT (SPITZ_SCP2_IR_ON | SPITZ_SCP2_AKIN_PULLUP | SPITZ_SCP2_RESERVED_1) + #define SPITZ_SCP2_SUS_CLR (SPITZ_SCP2_RESERVED_2 | SPITZ_SCP2_RESERVED_3 | SPITZ_SCP2_RESERVED_4 | \ +- SPITZ_SCP2_BACKLIGHT_CONT | SPITZ_SCP2_BACKLIGHT_ON | SPITZ_SCP2_MIC_BIAS) ++ SPITZ_SCP2_BACKLIGHT_CONT | SPITZ_SCP2_BACKLIGHT_ON | SPITZ_SCP2_MIC_BIAS) + #define SPITZ_SCP2_SUS_SET (SPITZ_SCP2_IR_ON | SPITZ_SCP2_RESERVED_1) + + +-/* Spitz IRQ Definitions */ ++/* Spitz/Akita IRQ Definitions */ + +-#define SPITZ_IRQ_GPIO_KEY_INT IRQ_GPIO(SPITZ_GPIO_KEY_INT) +-#define SPITZ_IRQ_GPIO_AC_IN IRQ_GPIO(SPITZ_GPIO_AC_IN) +-#define SPITZ_IRQ_GPIO_AK_INT IRQ_GPIO(SPITZ_GPIO_AK_INT) +-#define SPITZ_IRQ_GPIO_HP_IN IRQ_GPIO(SPITZ_GPIO_HP_IN) +-#define SPITZ_IRQ_GPIO_TP_INT IRQ_GPIO(SPITZ_GPIO_TP_INT) +-#define SPITZ_IRQ_GPIO_SYNC IRQ_GPIO(SPITZ_GPIO_SYNC) +-#define SPITZ_IRQ_GPIO_ON_KEY IRQ_GPIO(SPITZ_GPIO_ON_KEY) +-#define SPITZ_IRQ_GPIO_SWA IRQ_GPIO(SPITZ_GPIO_SWA) +-#define SPITZ_IRQ_GPIO_SWB IRQ_GPIO(SPITZ_GPIO_SWB) ++#define SPITZ_IRQ_GPIO_KEY_INT IRQ_GPIO(SPITZ_GPIO_KEY_INT) ++#define SPITZ_IRQ_GPIO_AC_IN IRQ_GPIO(SPITZ_GPIO_AC_IN) ++#define SPITZ_IRQ_GPIO_AK_INT IRQ_GPIO(SPITZ_GPIO_AK_INT) ++#define SPITZ_IRQ_GPIO_HP_IN IRQ_GPIO(SPITZ_GPIO_HP_IN) ++#define SPITZ_IRQ_GPIO_TP_INT IRQ_GPIO(SPITZ_GPIO_TP_INT) ++#define SPITZ_IRQ_GPIO_SYNC IRQ_GPIO(SPITZ_GPIO_SYNC) ++#define SPITZ_IRQ_GPIO_ON_KEY IRQ_GPIO(SPITZ_GPIO_ON_KEY) ++#define SPITZ_IRQ_GPIO_SWA IRQ_GPIO(SPITZ_GPIO_SWA) ++#define SPITZ_IRQ_GPIO_SWB IRQ_GPIO(SPITZ_GPIO_SWB) + #define SPITZ_IRQ_GPIO_BAT_COVER IRQ_GPIO(SPITZ_GPIO_BAT_COVER) + #define SPITZ_IRQ_GPIO_FATAL_BAT IRQ_GPIO(SPITZ_GPIO_FATAL_BAT) +-#define SPITZ_IRQ_GPIO_CO IRQ_GPIO(SPITZ_GPIO_CO) +-#define SPITZ_IRQ_GPIO_CF_IRQ IRQ_GPIO(SPITZ_GPIO_CF_IRQ) +-#define SPITZ_IRQ_GPIO_CF_CD IRQ_GPIO(SPITZ_GPIO_CF_CD) +-#define SPITZ_IRQ_GPIO_CF2_IRQ IRQ_GPIO(SPITZ_GPIO_CF2_IRQ) +-#define SPITZ_IRQ_GPIO_nSD_INT IRQ_GPIO(SPITZ_GPIO_nSD_INT) ++#define SPITZ_IRQ_GPIO_CF_IRQ IRQ_GPIO(SPITZ_GPIO_CF_IRQ) ++#define SPITZ_IRQ_GPIO_CF_CD IRQ_GPIO(SPITZ_GPIO_CF_CD) ++#define SPITZ_IRQ_GPIO_CF2_IRQ IRQ_GPIO(SPITZ_GPIO_CF2_IRQ) ++#define SPITZ_IRQ_GPIO_nSD_INT IRQ_GPIO(SPITZ_GPIO_nSD_INT) + #define SPITZ_IRQ_GPIO_nSD_DETECT IRQ_GPIO(SPITZ_GPIO_nSD_DETECT) + + /* +@@ -156,3 +274,5 @@ + extern struct platform_device spitzscoop2_device; + extern struct platform_device spitzssp_device; + extern struct sharpsl_charger_machinfo spitz_pm_machinfo; ++ ++#endif +Index: linux-2.6.24/sound/arm/pxa2xx-ac97.c +=================================================================== +--- linux-2.6.24.orig/sound/arm/pxa2xx-ac97.c 2008-01-24 22:58:37.000000000 +0000 ++++ linux-2.6.24/sound/arm/pxa2xx-ac97.c 2008-02-13 13:49:22.000000000 +0000 +@@ -133,10 +133,10 @@ + #ifdef CONFIG_PXA27x + /* warm reset broken on Bulverde, + so manually keep AC97 reset high */ +- pxa_gpio_mode(113 | GPIO_OUT | GPIO_DFLT_HIGH); ++ pxa_gpio_mode(GPIO113_AC97_RESET_N | GPIO_OUT | GPIO_DFLT_HIGH); + udelay(10); + GCR |= GCR_WARM_RST; +- pxa_gpio_mode(113 | GPIO_ALT_FN_2_OUT); ++ pxa_gpio_mode(GPIO113_AC97_RESET_N_MD); + udelay(500); + #else + GCR |= GCR_WARM_RST|GCR_PRIRDY_IEN|GCR_SECRDY_IEN; +@@ -335,7 +335,7 @@ + pxa_gpio_mode(GPIO29_SDATA_IN_AC97_MD); + #ifdef CONFIG_PXA27x + /* Use GPIO 113 as AC97 Reset on Bulverde */ +- pxa_gpio_mode(113 | GPIO_ALT_FN_2_OUT); ++ pxa_gpio_mode(GPIO113_AC97_RESET_N_MD); + #endif + pxa_set_cken(CKEN_AC97, 1); + |