linux-rp-2.6.24: Add patches from OE.dev

git-svn-id: https://svn.o-hand.com/repos/poky/trunk@4570 311d38ba-8fff-0310-9ca6-ca027cbcb966
This commit is contained in:
Richard Purdie 2008-06-01 22:58:34 +00:00
parent ecec2e582c
commit 47a464d97b
6 changed files with 1628 additions and 170 deletions

View File

@ -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
Index: linux-2.6.24/drivers/mmc/host/Makefile
===================================================================
--- 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
===================================================================
--- 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

View File

@ -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

View File

@ -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;
-

View File

@ -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;
}

View File

@ -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);

View File

@ -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);