summaryrefslogtreecommitdiffstats
path: root/meta/packages/linux
diff options
context:
space:
mode:
authorRichard Purdie <richard@openedhand.com>2008-06-01 22:58:34 +0000
committerRichard Purdie <richard@openedhand.com>2008-06-01 22:58:34 +0000
commit47a464d97b88104c616d6ffb4a74245e43060f86 (patch)
treed28257ddc4e63b19b7c301ed66885d4fba9284ee /meta/packages/linux
parentecec2e582c809368f6e53ebf9c725195a7b80784 (diff)
downloadpoky-47a464d97b88104c616d6ffb4a74245e43060f86.tar.gz
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
Diffstat (limited to 'meta/packages/linux')
-rw-r--r--meta/packages/linux/linux-rp-2.6.24/htcuni.patch332
-rw-r--r--meta/packages/linux/linux-rp-2.6.24/pxa27x-resume.patch41
-rw-r--r--meta/packages/linux/linux-rp-2.6.24/pxa2xx_udc-clock.patch221
-rw-r--r--meta/packages/linux/linux-rp-2.6.24/sharpsl-rc-r1.patch527
-rw-r--r--meta/packages/linux/linux-rp-2.6.24/sharpsl-rc-r2.patch180
-rw-r--r--meta/packages/linux/linux-rp-2.6.24/spitz_h_rewrite.patch497
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 f462650566..8448c4ec06 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 @@
57 include/linux/soc/tmio_mmc.h | 17 57 include/linux/soc/tmio_mmc.h | 17
58 56 files changed, 7469 insertions(+), 1 deletion(-) 58 56 files changed, 7469 insertions(+), 1 deletion(-)
59 59
60Index: linux-2.6.23/arch/arm/mach-pxa/htcuniversal/Makefile 60Index: linux-2.6.24/arch/arm/mach-pxa/htcuniversal/Makefile
61=================================================================== 61===================================================================
62--- /dev/null 1970-01-01 00:00:00.000000000 +0000 62--- /dev/null 1970-01-01 00:00:00.000000000 +0000
63+++ linux-2.6.23/arch/arm/mach-pxa/htcuniversal/Makefile 2008-01-20 18:59:46.000000000 +0000 63+++ linux-2.6.24/arch/arm/mach-pxa/htcuniversal/Makefile 2008-03-10 16:09:23.000000000 +0000
64@@ -0,0 +1,19 @@ 64@@ -0,0 +1,19 @@
65+# 65+#
66+# Makefile for HTC Universal 66+# Makefile for HTC Universal
@@ -81,10 +81,10 @@ Index: linux-2.6.23/arch/arm/mach-pxa/htcuniversal/Makefile
81+obj-$(CONFIG_HTCUNIVERSAL_UDC) += htcuniversal_udc.o 81+obj-$(CONFIG_HTCUNIVERSAL_UDC) += htcuniversal_udc.o
82+ 82+
83+obj-$(CONFIG_HTCUNIVERSAL_AK4641) += htcuniversal_ak4641.o 83+obj-$(CONFIG_HTCUNIVERSAL_AK4641) += htcuniversal_ak4641.o
84Index: linux-2.6.23/arch/arm/mach-pxa/htcuniversal/htcuniversal.c 84Index: linux-2.6.24/arch/arm/mach-pxa/htcuniversal/htcuniversal.c
85=================================================================== 85===================================================================
86--- /dev/null 1970-01-01 00:00:00.000000000 +0000 86--- /dev/null 1970-01-01 00:00:00.000000000 +0000
87+++ linux-2.6.23/arch/arm/mach-pxa/htcuniversal/htcuniversal.c 2008-01-20 18:59:46.000000000 +0000 87+++ linux-2.6.24/arch/arm/mach-pxa/htcuniversal/htcuniversal.c 2008-03-10 16:09:23.000000000 +0000
88@@ -0,0 +1,468 @@ 88@@ -0,0 +1,468 @@
89+/* 89+/*
90+ * Hardware definitions for HTC Universal 90+ * Hardware definitions for HTC Universal
@@ -554,10 +554,10 @@ Index: linux-2.6.23/arch/arm/mach-pxa/htcuniversal/htcuniversal.c
554+ .init_machine = htcuniversal_init, 554+ .init_machine = htcuniversal_init,
555+ .timer = &pxa_timer, 555+ .timer = &pxa_timer,
556+MACHINE_END 556+MACHINE_END
557Index: linux-2.6.23/arch/arm/mach-pxa/htcuniversal/htcuniversal_ak4641.c 557Index: linux-2.6.24/arch/arm/mach-pxa/htcuniversal/htcuniversal_ak4641.c
558=================================================================== 558===================================================================
559--- /dev/null 1970-01-01 00:00:00.000000000 +0000 559--- /dev/null 1970-01-01 00:00:00.000000000 +0000
560+++ linux-2.6.23/arch/arm/mach-pxa/htcuniversal/htcuniversal_ak4641.c 2008-01-20 18:59:46.000000000 +0000 560+++ linux-2.6.24/arch/arm/mach-pxa/htcuniversal/htcuniversal_ak4641.c 2008-03-10 16:09:23.000000000 +0000
561@@ -0,0 +1,917 @@ 561@@ -0,0 +1,917 @@
562+/* 562+/*
563+ * Audio support for codec Asahi Kasei AK4641 563+ * Audio support for codec Asahi Kasei AK4641
@@ -1476,10 +1476,10 @@ Index: linux-2.6.23/arch/arm/mach-pxa/htcuniversal/htcuniversal_ak4641.c
1476+MODULE_LICENSE("GPL"); 1476+MODULE_LICENSE("GPL");
1477+ 1477+
1478+/* end {{ Module }} */ 1478+/* end {{ Module }} */
1479Index: linux-2.6.23/arch/arm/mach-pxa/htcuniversal/htcuniversal_ak4641.h 1479Index: linux-2.6.24/arch/arm/mach-pxa/htcuniversal/htcuniversal_ak4641.h
1480=================================================================== 1480===================================================================
1481--- /dev/null 1970-01-01 00:00:00.000000000 +0000 1481--- /dev/null 1970-01-01 00:00:00.000000000 +0000
1482+++ linux-2.6.23/arch/arm/mach-pxa/htcuniversal/htcuniversal_ak4641.h 2008-01-20 18:59:46.000000000 +0000 1482+++ linux-2.6.24/arch/arm/mach-pxa/htcuniversal/htcuniversal_ak4641.h 2008-03-10 16:09:23.000000000 +0000
1483@@ -0,0 +1,65 @@ 1483@@ -0,0 +1,65 @@
1484+/* 1484+/*
1485+ * Audio support for codec Asahi Kasei AK4641 1485+ * Audio support for codec Asahi Kasei AK4641
@@ -1546,10 +1546,10 @@ Index: linux-2.6.23/arch/arm/mach-pxa/htcuniversal/htcuniversal_ak4641.h
1546+void snd_ak4641_hp_detected(struct snd_ak4641 *ak, int detected); /* atomic context */ 1546+void snd_ak4641_hp_detected(struct snd_ak4641 *ak, int detected); /* atomic context */
1547+ 1547+
1548+#endif /* __SOUND_AK4641_H */ 1548+#endif /* __SOUND_AK4641_H */
1549Index: linux-2.6.23/arch/arm/mach-pxa/htcuniversal/htcuniversal_asic3_leds.c 1549Index: linux-2.6.24/arch/arm/mach-pxa/htcuniversal/htcuniversal_asic3_leds.c
1550=================================================================== 1550===================================================================
1551--- /dev/null 1970-01-01 00:00:00.000000000 +0000 1551--- /dev/null 1970-01-01 00:00:00.000000000 +0000
1552+++ linux-2.6.23/arch/arm/mach-pxa/htcuniversal/htcuniversal_asic3_leds.c 2008-01-20 18:59:46.000000000 +0000 1552+++ linux-2.6.24/arch/arm/mach-pxa/htcuniversal/htcuniversal_asic3_leds.c 2008-03-10 16:09:23.000000000 +0000
1553@@ -0,0 +1,143 @@ 1553@@ -0,0 +1,143 @@
1554+/* 1554+/*
1555+ * LEDs support for the HP iPaq hx4700 1555+ * 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
1694+MODULE_AUTHOR("Anton Vorontsov <cbou@mail.ru>"); 1694+MODULE_AUTHOR("Anton Vorontsov <cbou@mail.ru>");
1695+MODULE_DESCRIPTION("htcuniversal LEDs driver"); 1695+MODULE_DESCRIPTION("htcuniversal LEDs driver");
1696+MODULE_LICENSE("GPL"); 1696+MODULE_LICENSE("GPL");
1697Index: linux-2.6.23/arch/arm/mach-pxa/htcuniversal/htcuniversal_bl.c 1697Index: linux-2.6.24/arch/arm/mach-pxa/htcuniversal/htcuniversal_bl.c
1698=================================================================== 1698===================================================================
1699--- /dev/null 1970-01-01 00:00:00.000000000 +0000 1699--- /dev/null 1970-01-01 00:00:00.000000000 +0000
1700+++ linux-2.6.23/arch/arm/mach-pxa/htcuniversal/htcuniversal_bl.c 2008-01-20 18:59:46.000000000 +0000 1700+++ linux-2.6.24/arch/arm/mach-pxa/htcuniversal/htcuniversal_bl.c 2008-03-10 16:09:23.000000000 +0000
1701@@ -0,0 +1,61 @@ 1701@@ -0,0 +1,61 @@
1702+/* 1702+/*
1703+ * Use consistent with the GNU GPL is permitted, 1703+ * 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
1760+MODULE_AUTHOR("Paul Sokolovsky <pmiscml@gmail.com>"); 1760+MODULE_AUTHOR("Paul Sokolovsky <pmiscml@gmail.com>");
1761+MODULE_DESCRIPTION("Backlight driver for HTC Universal"); 1761+MODULE_DESCRIPTION("Backlight driver for HTC Universal");
1762+MODULE_LICENSE("GPL"); 1762+MODULE_LICENSE("GPL");
1763Index: linux-2.6.23/arch/arm/mach-pxa/htcuniversal/htcuniversal_bt.c 1763Index: linux-2.6.24/arch/arm/mach-pxa/htcuniversal/htcuniversal_bt.c
1764=================================================================== 1764===================================================================
1765--- /dev/null 1970-01-01 00:00:00.000000000 +0000 1765--- /dev/null 1970-01-01 00:00:00.000000000 +0000
1766+++ linux-2.6.23/arch/arm/mach-pxa/htcuniversal/htcuniversal_bt.c 2008-01-20 18:59:46.000000000 +0000 1766+++ linux-2.6.24/arch/arm/mach-pxa/htcuniversal/htcuniversal_bt.c 2008-03-10 16:09:23.000000000 +0000
1767@@ -0,0 +1,135 @@ 1767@@ -0,0 +1,135 @@
1768+/* Bluetooth interface driver for TI BRF6150 on HX4700 1768+/* Bluetooth interface driver for TI BRF6150 on HX4700
1769+ * 1769+ *
@@ -1900,10 +1900,10 @@ Index: linux-2.6.23/arch/arm/mach-pxa/htcuniversal/htcuniversal_bt.c
1900+ 1900+
1901+/* vim600: set noexpandtab sw=8 ts=8 :*/ 1901+/* vim600: set noexpandtab sw=8 ts=8 :*/
1902+ 1902+
1903Index: linux-2.6.23/arch/arm/mach-pxa/htcuniversal/htcuniversal_bt.h 1903Index: linux-2.6.24/arch/arm/mach-pxa/htcuniversal/htcuniversal_bt.h
1904=================================================================== 1904===================================================================
1905--- /dev/null 1970-01-01 00:00:00.000000000 +0000 1905--- /dev/null 1970-01-01 00:00:00.000000000 +0000
1906+++ linux-2.6.23/arch/arm/mach-pxa/htcuniversal/htcuniversal_bt.h 2008-01-20 18:59:46.000000000 +0000 1906+++ linux-2.6.24/arch/arm/mach-pxa/htcuniversal/htcuniversal_bt.h 2008-03-10 16:09:23.000000000 +0000
1907@@ -0,0 +1,17 @@ 1907@@ -0,0 +1,17 @@
1908+/* 1908+/*
1909+ * Bluetooth support file for calling bluetooth configuration functions 1909+ * 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
1922+ 1922+
1923+ 1923+
1924+#endif 1924+#endif
1925Index: linux-2.6.23/arch/arm/mach-pxa/htcuniversal/htcuniversal_buttons.c 1925Index: linux-2.6.24/arch/arm/mach-pxa/htcuniversal/htcuniversal_buttons.c
1926=================================================================== 1926===================================================================
1927--- /dev/null 1970-01-01 00:00:00.000000000 +0000 1927--- /dev/null 1970-01-01 00:00:00.000000000 +0000
1928+++ linux-2.6.23/arch/arm/mach-pxa/htcuniversal/htcuniversal_buttons.c 2008-01-20 18:59:46.000000000 +0000 1928+++ linux-2.6.24/arch/arm/mach-pxa/htcuniversal/htcuniversal_buttons.c 2008-03-10 16:09:23.000000000 +0000
1929@@ -0,0 +1,87 @@ 1929@@ -0,0 +1,87 @@
1930+/* 1930+/*
1931+ * Buttons driver for HTC Universal 1931+ * Buttons driver for HTC Universal
@@ -2014,10 +2014,10 @@ Index: linux-2.6.23/arch/arm/mach-pxa/htcuniversal/htcuniversal_buttons.c
2014+MODULE_AUTHOR ("Joshua Wise, Pawel Kolodziejski, Paul Sokolosvky"); 2014+MODULE_AUTHOR ("Joshua Wise, Pawel Kolodziejski, Paul Sokolosvky");
2015+MODULE_DESCRIPTION ("Buttons support for HTC Universal"); 2015+MODULE_DESCRIPTION ("Buttons support for HTC Universal");
2016+MODULE_LICENSE ("GPL"); 2016+MODULE_LICENSE ("GPL");
2017Index: linux-2.6.23/arch/arm/mach-pxa/htcuniversal/htcuniversal_core.c 2017Index: linux-2.6.24/arch/arm/mach-pxa/htcuniversal/htcuniversal_core.c
2018=================================================================== 2018===================================================================
2019--- /dev/null 1970-01-01 00:00:00.000000000 +0000 2019--- /dev/null 1970-01-01 00:00:00.000000000 +0000
2020+++ linux-2.6.23/arch/arm/mach-pxa/htcuniversal/htcuniversal_core.c 2008-01-20 18:59:46.000000000 +0000 2020+++ linux-2.6.24/arch/arm/mach-pxa/htcuniversal/htcuniversal_core.c 2008-03-10 16:09:23.000000000 +0000
2021@@ -0,0 +1,226 @@ 2021@@ -0,0 +1,226 @@
2022+/* Core Hardware driver for Hx4700 (Serial, ASIC3, EGPIOs) 2022+/* Core Hardware driver for Hx4700 (Serial, ASIC3, EGPIOs)
2023+ * 2023+ *
@@ -2245,10 +2245,10 @@ Index: linux-2.6.23/arch/arm/mach-pxa/htcuniversal/htcuniversal_core.c
2245+MODULE_LICENSE("GPL"); 2245+MODULE_LICENSE("GPL");
2246+ 2246+
2247+/* vim600: set noexpandtab sw=8 ts=8 :*/ 2247+/* vim600: set noexpandtab sw=8 ts=8 :*/
2248Index: linux-2.6.23/arch/arm/mach-pxa/htcuniversal/htcuniversal_lcd.c 2248Index: linux-2.6.24/arch/arm/mach-pxa/htcuniversal/htcuniversal_lcd.c
2249=================================================================== 2249===================================================================
2250--- /dev/null 1970-01-01 00:00:00.000000000 +0000 2250--- /dev/null 1970-01-01 00:00:00.000000000 +0000
2251+++ linux-2.6.23/arch/arm/mach-pxa/htcuniversal/htcuniversal_lcd.c 2008-01-20 18:59:46.000000000 +0000 2251+++ linux-2.6.24/arch/arm/mach-pxa/htcuniversal/htcuniversal_lcd.c 2008-03-10 16:09:23.000000000 +0000
2252@@ -0,0 +1,212 @@ 2252@@ -0,0 +1,212 @@
2253+/* 2253+/*
2254+ * Use consistent with the GNU GPL is permitted, 2254+ * 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
2462+MODULE_DESCRIPTION("Framebuffer driver for HTC Universal"); 2462+MODULE_DESCRIPTION("Framebuffer driver for HTC Universal");
2463+MODULE_LICENSE("GPL"); 2463+MODULE_LICENSE("GPL");
2464+ 2464+
2465Index: linux-2.6.23/arch/arm/mach-pxa/htcuniversal/htcuniversal_phone.c 2465Index: linux-2.6.24/arch/arm/mach-pxa/htcuniversal/htcuniversal_phone.c
2466=================================================================== 2466===================================================================
2467--- /dev/null 1970-01-01 00:00:00.000000000 +0000 2467--- /dev/null 1970-01-01 00:00:00.000000000 +0000
2468+++ linux-2.6.23/arch/arm/mach-pxa/htcuniversal/htcuniversal_phone.c 2008-01-20 18:59:46.000000000 +0000 2468+++ linux-2.6.24/arch/arm/mach-pxa/htcuniversal/htcuniversal_phone.c 2008-03-10 16:09:23.000000000 +0000
2469@@ -0,0 +1,167 @@ 2469@@ -0,0 +1,167 @@
2470+ 2470+
2471+/* Phone interface driver for Qualcomm MSM6250 on HTC Universal 2471+/* 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
2634+MODULE_LICENSE("GPL"); 2634+MODULE_LICENSE("GPL");
2635+ 2635+
2636+/* vim600: set noexpandtab sw=8 ts=8 :*/ 2636+/* vim600: set noexpandtab sw=8 ts=8 :*/
2637Index: linux-2.6.23/arch/arm/mach-pxa/htcuniversal/htcuniversal_phone.h 2637Index: linux-2.6.24/arch/arm/mach-pxa/htcuniversal/htcuniversal_phone.h
2638=================================================================== 2638===================================================================
2639--- /dev/null 1970-01-01 00:00:00.000000000 +0000 2639--- /dev/null 1970-01-01 00:00:00.000000000 +0000
2640+++ linux-2.6.23/arch/arm/mach-pxa/htcuniversal/htcuniversal_phone.h 2008-01-20 18:59:46.000000000 +0000 2640+++ linux-2.6.24/arch/arm/mach-pxa/htcuniversal/htcuniversal_phone.h 2008-03-10 16:09:23.000000000 +0000
2641@@ -0,0 +1,16 @@ 2641@@ -0,0 +1,16 @@
2642+/* 2642+/*
2643+ * Bluetooth support file for calling bluetooth configuration functions 2643+ * 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
2655+}; 2655+};
2656+ 2656+
2657+#endif 2657+#endif
2658Index: linux-2.6.23/arch/arm/mach-pxa/htcuniversal/htcuniversal_pm.c 2658Index: linux-2.6.24/arch/arm/mach-pxa/htcuniversal/htcuniversal_pm.c
2659=================================================================== 2659===================================================================
2660--- /dev/null 1970-01-01 00:00:00.000000000 +0000 2660--- /dev/null 1970-01-01 00:00:00.000000000 +0000
2661+++ linux-2.6.23/arch/arm/mach-pxa/htcuniversal/htcuniversal_pm.c 2008-01-20 18:59:46.000000000 +0000 2661+++ linux-2.6.24/arch/arm/mach-pxa/htcuniversal/htcuniversal_pm.c 2008-03-10 16:09:23.000000000 +0000
2662@@ -0,0 +1,69 @@ 2662@@ -0,0 +1,69 @@
2663+/* 2663+/*
2664+ * MyPal 716 power management support for the original HTC IPL in DoC G3 2664+ * 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
2729+ pxa_pm_set_ll_ops(&htcuniversal_ll_pm_ops); 2729+ pxa_pm_set_ll_ops(&htcuniversal_ll_pm_ops);
2730+} 2730+}
2731+#endif /* CONFIG_PM */ 2731+#endif /* CONFIG_PM */
2732Index: linux-2.6.23/arch/arm/mach-pxa/htcuniversal/htcuniversal_power2.c 2732Index: linux-2.6.24/arch/arm/mach-pxa/htcuniversal/htcuniversal_power2.c
2733=================================================================== 2733===================================================================
2734--- /dev/null 1970-01-01 00:00:00.000000000 +0000 2734--- /dev/null 1970-01-01 00:00:00.000000000 +0000
2735+++ linux-2.6.23/arch/arm/mach-pxa/htcuniversal/htcuniversal_power2.c 2008-01-20 18:59:46.000000000 +0000 2735+++ linux-2.6.24/arch/arm/mach-pxa/htcuniversal/htcuniversal_power2.c 2008-03-10 16:09:23.000000000 +0000
2736@@ -0,0 +1,97 @@ 2736@@ -0,0 +1,97 @@
2737+/* 2737+/*
2738+ * pda_power driver for HTC Universal 2738+ * pda_power driver for HTC Universal
@@ -2831,10 +2831,10 @@ Index: linux-2.6.23/arch/arm/mach-pxa/htcuniversal/htcuniversal_power2.c
2831+ 2831+
2832+MODULE_DESCRIPTION("Power driver for HTC Universal"); 2832+MODULE_DESCRIPTION("Power driver for HTC Universal");
2833+MODULE_LICENSE("GPL"); 2833+MODULE_LICENSE("GPL");
2834Index: linux-2.6.23/arch/arm/mach-pxa/htcuniversal/htcuniversal_ts2.c 2834Index: linux-2.6.24/arch/arm/mach-pxa/htcuniversal/htcuniversal_ts2.c
2835=================================================================== 2835===================================================================
2836--- /dev/null 1970-01-01 00:00:00.000000000 +0000 2836--- /dev/null 1970-01-01 00:00:00.000000000 +0000
2837+++ linux-2.6.23/arch/arm/mach-pxa/htcuniversal/htcuniversal_ts2.c 2008-01-20 18:59:46.000000000 +0000 2837+++ linux-2.6.24/arch/arm/mach-pxa/htcuniversal/htcuniversal_ts2.c 2008-03-10 16:09:23.000000000 +0000
2838@@ -0,0 +1,490 @@ 2838@@ -0,0 +1,490 @@
2839+/* Touch screen driver for the TI something-or-other 2839+/* Touch screen driver for the TI something-or-other
2840+ * 2840+ *
@@ -3326,10 +3326,10 @@ Index: linux-2.6.23/arch/arm/mach-pxa/htcuniversal/htcuniversal_ts2.c
3326+MODULE_LICENSE("GPL"); 3326+MODULE_LICENSE("GPL");
3327+MODULE_AUTHOR("Aric Blumer, SDG Systems, LLC"); 3327+MODULE_AUTHOR("Aric Blumer, SDG Systems, LLC");
3328+MODULE_DESCRIPTION("HTC Universal Touch Screen Driver"); 3328+MODULE_DESCRIPTION("HTC Universal Touch Screen Driver");
3329Index: linux-2.6.23/arch/arm/mach-pxa/htcuniversal/htcuniversal_udc.c 3329Index: linux-2.6.24/arch/arm/mach-pxa/htcuniversal/htcuniversal_udc.c
3330=================================================================== 3330===================================================================
3331--- /dev/null 1970-01-01 00:00:00.000000000 +0000 3331--- /dev/null 1970-01-01 00:00:00.000000000 +0000
3332+++ linux-2.6.23/arch/arm/mach-pxa/htcuniversal/htcuniversal_udc.c 2008-01-20 18:59:46.000000000 +0000 3332+++ linux-2.6.24/arch/arm/mach-pxa/htcuniversal/htcuniversal_udc.c 2008-03-10 16:09:23.000000000 +0000
3333@@ -0,0 +1,71 @@ 3333@@ -0,0 +1,71 @@
3334+ 3334+
3335+/* 3335+/*
@@ -3402,10 +3402,10 @@ Index: linux-2.6.23/arch/arm/mach-pxa/htcuniversal/htcuniversal_udc.c
3402+ 3402+
3403+module_init(htcuniversal_udc_init); 3403+module_init(htcuniversal_udc_init);
3404+MODULE_LICENSE("GPL"); 3404+MODULE_LICENSE("GPL");
3405Index: linux-2.6.23/arch/arm/mach-pxa/htcuniversal/tsc2046_ts.h 3405Index: linux-2.6.24/arch/arm/mach-pxa/htcuniversal/tsc2046_ts.h
3406=================================================================== 3406===================================================================
3407--- /dev/null 1970-01-01 00:00:00.000000000 +0000 3407--- /dev/null 1970-01-01 00:00:00.000000000 +0000
3408+++ linux-2.6.23/arch/arm/mach-pxa/htcuniversal/tsc2046_ts.h 2008-01-20 18:59:46.000000000 +0000 3408+++ linux-2.6.24/arch/arm/mach-pxa/htcuniversal/tsc2046_ts.h 2008-03-10 16:09:23.000000000 +0000
3409@@ -0,0 +1,20 @@ 3409@@ -0,0 +1,20 @@
3410+/* 3410+/*
3411+ * temporary TSC2046 touchscreen hack 3411+ * temporary TSC2046 touchscreen hack
@@ -3427,13 +3427,13 @@ Index: linux-2.6.23/arch/arm/mach-pxa/htcuniversal/tsc2046_ts.h
3427+#define TSC2046_SAMPLE_Y 0x90 3427+#define TSC2046_SAMPLE_Y 0x90
3428+ 3428+
3429+#endif 3429+#endif
3430Index: linux-2.6.23/arch/arm/mach-pxa/Kconfig 3430Index: linux-2.6.24/arch/arm/mach-pxa/Kconfig
3431=================================================================== 3431===================================================================
3432--- linux-2.6.23.orig/arch/arm/mach-pxa/Kconfig 2008-01-20 18:59:41.000000000 +0000 3432--- linux-2.6.24.orig/arch/arm/mach-pxa/Kconfig 2008-03-10 16:08:01.000000000 +0000
3433+++ linux-2.6.23/arch/arm/mach-pxa/Kconfig 2008-01-20 18:59:46.000000000 +0000 3433+++ linux-2.6.24/arch/arm/mach-pxa/Kconfig 2008-03-10 16:09:23.000000000 +0000
3434@@ -92,6 +92,14 @@ config MACH_HX2750 3434@@ -92,6 +92,14 @@
3435 help 3435 bool "Sharp PXA270 models (SL-Cxx00)"
3436 This enables support for the HP iPAQ HX2750 handheld. 3436 select PXA27x
3437 3437
3438+config MACH_HTCUNIVERSAL 3438+config MACH_HTCUNIVERSAL
3439+ bool "HTC Universal" 3439+ bool "HTC Universal"
@@ -3446,7 +3446,7 @@ Index: linux-2.6.23/arch/arm/mach-pxa/Kconfig
3446 endchoice 3446 endchoice
3447 3447
3448 endif 3448 endif
3449@@ -111,6 +119,86 @@ endchoice 3449@@ -111,6 +119,86 @@
3450 3450
3451 endif 3451 endif
3452 3452
@@ -3533,16 +3533,16 @@ Index: linux-2.6.23/arch/arm/mach-pxa/Kconfig
3533 endmenu 3533 endmenu
3534 3534
3535 config MACH_POODLE 3535 config MACH_POODLE
3536@@ -196,4 +284,3 @@ config PXA_KEYS 3536@@ -196,4 +284,3 @@
3537 depends on (PXA25x || PXA27x) && INPUT 3537 depends on (PXA25x || PXA27x) && INPUT
3538 3538
3539 endif 3539 endif
3540- 3540-
3541Index: linux-2.6.23/arch/arm/mach-pxa/Makefile 3541Index: linux-2.6.24/arch/arm/mach-pxa/Makefile
3542=================================================================== 3542===================================================================
3543--- linux-2.6.23.orig/arch/arm/mach-pxa/Makefile 2008-01-20 18:59:41.000000000 +0000 3543--- linux-2.6.24.orig/arch/arm/mach-pxa/Makefile 2008-03-10 16:08:01.000000000 +0000
3544+++ linux-2.6.23/arch/arm/mach-pxa/Makefile 2008-01-20 18:59:46.000000000 +0000 3544+++ linux-2.6.24/arch/arm/mach-pxa/Makefile 2008-03-10 16:09:23.000000000 +0000
3545@@ -23,6 +23,7 @@ obj-$(CONFIG_MACH_POODLE) += poodle.o co 3545@@ -23,6 +23,7 @@
3546 obj-$(CONFIG_MACH_TOSA) += tosa.o 3546 obj-$(CONFIG_MACH_TOSA) += tosa.o
3547 obj-$(CONFIG_MACH_EM_X270) += em-x270.o 3547 obj-$(CONFIG_MACH_EM_X270) += em-x270.o
3548 obj-$(CONFIG_MACH_HX2750) += hx2750.o hx2750_test.o 3548 obj-$(CONFIG_MACH_HX2750) += hx2750.o hx2750_test.o
@@ -3550,11 +3550,11 @@ Index: linux-2.6.23/arch/arm/mach-pxa/Makefile
3550 3550
3551 ifeq ($(CONFIG_MACH_ZYLONITE),y) 3551 ifeq ($(CONFIG_MACH_ZYLONITE),y)
3552 obj-y += zylonite.o 3552 obj-y += zylonite.o
3553Index: linux-2.6.23/drivers/leds/Kconfig 3553Index: linux-2.6.24/drivers/leds/Kconfig
3554=================================================================== 3554===================================================================
3555--- linux-2.6.23.orig/drivers/leds/Kconfig 2008-01-20 18:59:17.000000000 +0000 3555--- linux-2.6.24.orig/drivers/leds/Kconfig 2008-01-24 22:58:37.000000000 +0000
3556+++ linux-2.6.23/drivers/leds/Kconfig 2008-01-20 18:59:46.000000000 +0000 3556+++ linux-2.6.24/drivers/leds/Kconfig 2008-03-10 16:09:23.000000000 +0000
3557@@ -114,6 +114,13 @@ config LEDS_CM_X270 3557@@ -114,6 +114,13 @@
3558 help 3558 help
3559 This option enables support for the CM-X270 LEDs. 3559 This option enables support for the CM-X270 LEDs.
3560 3560
@@ -3568,10 +3568,10 @@ Index: linux-2.6.23/drivers/leds/Kconfig
3568 comment "LED Triggers" 3568 comment "LED Triggers"
3569 3569
3570 config LEDS_TRIGGERS 3570 config LEDS_TRIGGERS
3571Index: linux-2.6.23/drivers/leds/leds-asic3.c 3571Index: linux-2.6.24/drivers/leds/leds-asic3.c
3572=================================================================== 3572===================================================================
3573--- /dev/null 1970-01-01 00:00:00.000000000 +0000 3573--- /dev/null 1970-01-01 00:00:00.000000000 +0000
3574+++ linux-2.6.23/drivers/leds/leds-asic3.c 2008-01-20 18:59:46.000000000 +0000 3574+++ linux-2.6.24/drivers/leds/leds-asic3.c 2008-03-10 16:09:23.000000000 +0000
3575@@ -0,0 +1,189 @@ 3575@@ -0,0 +1,189 @@
3576+/* 3576+/*
3577+ * LEDs support for HTC ASIC3 devices. 3577+ * LEDs support for HTC ASIC3 devices.
@@ -3762,11 +3762,11 @@ Index: linux-2.6.23/drivers/leds/leds-asic3.c
3762+MODULE_AUTHOR("Anton Vorontsov <cbou@mail.ru>"); 3762+MODULE_AUTHOR("Anton Vorontsov <cbou@mail.ru>");
3763+MODULE_DESCRIPTION("HTC ASIC3 LEDs driver"); 3763+MODULE_DESCRIPTION("HTC ASIC3 LEDs driver");
3764+MODULE_LICENSE("GPL"); 3764+MODULE_LICENSE("GPL");
3765Index: linux-2.6.23/drivers/mfd/Kconfig 3765Index: linux-2.6.24/drivers/mfd/Kconfig
3766=================================================================== 3766===================================================================
3767--- linux-2.6.23.orig/drivers/mfd/Kconfig 2008-01-20 18:59:38.000000000 +0000 3767--- linux-2.6.24.orig/drivers/mfd/Kconfig 2008-03-10 16:07:51.000000000 +0000
3768+++ linux-2.6.23/drivers/mfd/Kconfig 2008-01-20 18:59:46.000000000 +0000 3768+++ linux-2.6.24/drivers/mfd/Kconfig 2008-03-10 16:09:23.000000000 +0000
3769@@ -21,6 +21,16 @@ config MFD_TSC2101 3769@@ -21,6 +21,16 @@
3770 help 3770 help
3771 Support for TI TSC2101 Touchscreen and Audio Codec 3771 Support for TI TSC2101 Touchscreen and Audio Codec
3772 3772
@@ -3783,10 +3783,10 @@ Index: linux-2.6.23/drivers/mfd/Kconfig
3783 endmenu 3783 endmenu
3784 3784
3785 menu "Multimedia Capabilities Port drivers" 3785 menu "Multimedia Capabilities Port drivers"
3786Index: linux-2.6.23/drivers/mfd/Makefile 3786Index: linux-2.6.24/drivers/mfd/Makefile
3787=================================================================== 3787===================================================================
3788--- linux-2.6.23.orig/drivers/mfd/Makefile 2008-01-20 18:59:38.000000000 +0000 3788--- linux-2.6.24.orig/drivers/mfd/Makefile 2008-03-10 16:07:51.000000000 +0000
3789+++ linux-2.6.23/drivers/mfd/Makefile 2008-01-20 18:59:46.000000000 +0000 3789+++ linux-2.6.24/drivers/mfd/Makefile 2008-03-10 16:09:23.000000000 +0000
3790@@ -2,6 +2,8 @@ 3790@@ -2,6 +2,8 @@
3791 # Makefile for multifunction miscellaneous devices 3791 # Makefile for multifunction miscellaneous devices
3792 # 3792 #
@@ -3796,10 +3796,10 @@ Index: linux-2.6.23/drivers/mfd/Makefile
3796 obj-$(CONFIG_MFD_SM501) += sm501.o 3796 obj-$(CONFIG_MFD_SM501) += sm501.o
3797 3797
3798 obj-$(CONFIG_MCP) += mcp-core.o 3798 obj-$(CONFIG_MCP) += mcp-core.o
3799Index: linux-2.6.23/drivers/mfd/asic3_base.c 3799Index: linux-2.6.24/drivers/mfd/asic3_base.c
3800=================================================================== 3800===================================================================
3801--- /dev/null 1970-01-01 00:00:00.000000000 +0000 3801--- /dev/null 1970-01-01 00:00:00.000000000 +0000
3802+++ linux-2.6.23/drivers/mfd/asic3_base.c 2008-01-20 18:59:46.000000000 +0000 3802+++ linux-2.6.24/drivers/mfd/asic3_base.c 2008-03-10 16:09:23.000000000 +0000
3803@@ -0,0 +1,1208 @@ 3803@@ -0,0 +1,1208 @@
3804+/* 3804+/*
3805+ * Driver interface to HTC "ASIC3" 3805+ * Driver interface to HTC "ASIC3"
@@ -5009,10 +5009,10 @@ Index: linux-2.6.23/drivers/mfd/asic3_base.c
5009+MODULE_AUTHOR("Phil Blundell <pb@handhelds.org>"); 5009+MODULE_AUTHOR("Phil Blundell <pb@handhelds.org>");
5010+MODULE_DESCRIPTION("Core driver for HTC ASIC3"); 5010+MODULE_DESCRIPTION("Core driver for HTC ASIC3");
5011+MODULE_SUPPORTED_DEVICE("asic3"); 5011+MODULE_SUPPORTED_DEVICE("asic3");
5012Index: linux-2.6.23/drivers/mfd/soc-core.c 5012Index: linux-2.6.24/drivers/mfd/soc-core.c
5013=================================================================== 5013===================================================================
5014--- /dev/null 1970-01-01 00:00:00.000000000 +0000 5014--- /dev/null 1970-01-01 00:00:00.000000000 +0000
5015+++ linux-2.6.23/drivers/mfd/soc-core.c 2008-01-20 18:59:46.000000000 +0000 5015+++ linux-2.6.24/drivers/mfd/soc-core.c 2008-03-10 16:09:23.000000000 +0000
5016@@ -0,0 +1,106 @@ 5016@@ -0,0 +1,106 @@
5017+/* 5017+/*
5018+ * drivers/soc/soc-core.c 5018+ * drivers/soc/soc-core.c
@@ -5089,7 +5089,7 @@ Index: linux-2.6.23/drivers/mfd/soc-core.c
5089+ if (blk->res[r].flags & IORESOURCE_MEM) { 5089+ if (blk->res[r].flags & IORESOURCE_MEM) {
5090+ base = mem->start; 5090+ base = mem->start;
5091+ } else if ((blk->res[r].flags & IORESOURCE_IRQ) && 5091+ } else if ((blk->res[r].flags & IORESOURCE_IRQ) &&
5092+ (blk->res[r].flags & IORESOURCE_IRQ_SOC_SUBDEVICE)) { 5092+ (blk->res[r].flags & IORESOURCE_IRQ_MFD_SUBDEVICE)) {
5093+ base = irq_base; 5093+ base = irq_base;
5094+ } 5094+ }
5095+ 5095+
@@ -5120,10 +5120,10 @@ Index: linux-2.6.23/drivers/mfd/soc-core.c
5120+ return NULL; 5120+ return NULL;
5121+} 5121+}
5122+EXPORT_SYMBOL_GPL(soc_add_devices); 5122+EXPORT_SYMBOL_GPL(soc_add_devices);
5123Index: linux-2.6.23/drivers/mfd/soc-core.h 5123Index: linux-2.6.24/drivers/mfd/soc-core.h
5124=================================================================== 5124===================================================================
5125--- /dev/null 1970-01-01 00:00:00.000000000 +0000 5125--- /dev/null 1970-01-01 00:00:00.000000000 +0000
5126+++ linux-2.6.23/drivers/mfd/soc-core.h 2008-01-20 18:59:46.000000000 +0000 5126+++ linux-2.6.24/drivers/mfd/soc-core.h 2008-03-10 16:09:23.000000000 +0000
5127@@ -0,0 +1,30 @@ 5127@@ -0,0 +1,30 @@
5128+/* 5128+/*
5129+ * drivers/soc/soc-core.h 5129+ * drivers/soc/soc-core.h
@@ -5155,10 +5155,10 @@ Index: linux-2.6.23/drivers/mfd/soc-core.h
5155+ 5155+
5156+void soc_free_devices(struct platform_device *devices, int nr_devs); 5156+void soc_free_devices(struct platform_device *devices, int nr_devs);
5157+ 5157+
5158Index: linux-2.6.23/include/asm-arm/arch-pxa/clock.h 5158Index: linux-2.6.24/include/asm-arm/arch-pxa/clock.h
5159=================================================================== 5159===================================================================
5160--- /dev/null 1970-01-01 00:00:00.000000000 +0000 5160--- /dev/null 1970-01-01 00:00:00.000000000 +0000
5161+++ linux-2.6.23/include/asm-arm/arch-pxa/clock.h 2008-01-20 18:59:46.000000000 +0000 5161+++ linux-2.6.24/include/asm-arm/arch-pxa/clock.h 2008-03-10 16:09:23.000000000 +0000
5162@@ -0,0 +1,27 @@ 5162@@ -0,0 +1,27 @@
5163+/* 5163+/*
5164+ * linux/include/asm-arm/arch-pxa/clock.h 5164+ * linux/include/asm-arm/arch-pxa/clock.h
@@ -5187,10 +5187,10 @@ Index: linux-2.6.23/include/asm-arm/arch-pxa/clock.h
5187+ 5187+
5188+extern int clk_register(struct clk *clk); 5188+extern int clk_register(struct clk *clk);
5189+extern void clk_unregister(struct clk *clk); 5189+extern void clk_unregister(struct clk *clk);
5190Index: linux-2.6.23/include/asm-arm/arch-pxa/htcuniversal-asic.h 5190Index: linux-2.6.24/include/asm-arm/arch-pxa/htcuniversal-asic.h
5191=================================================================== 5191===================================================================
5192--- /dev/null 1970-01-01 00:00:00.000000000 +0000 5192--- /dev/null 1970-01-01 00:00:00.000000000 +0000
5193+++ linux-2.6.23/include/asm-arm/arch-pxa/htcuniversal-asic.h 2008-01-20 18:59:46.000000000 +0000 5193+++ linux-2.6.24/include/asm-arm/arch-pxa/htcuniversal-asic.h 2008-03-10 16:09:23.000000000 +0000
5194@@ -0,0 +1,213 @@ 5194@@ -0,0 +1,213 @@
5195+/* 5195+/*
5196+ * include/asm/arm/arch-pxa/htcuniversal-asic.h 5196+ * 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
5405+ 5405+
5406+#endif /* _HTCUNIVERSAL_ASIC_H_ */ 5406+#endif /* _HTCUNIVERSAL_ASIC_H_ */
5407+ 5407+
5408Index: linux-2.6.23/include/asm-arm/arch-pxa/htcuniversal-gpio.h 5408Index: linux-2.6.24/include/asm-arm/arch-pxa/htcuniversal-gpio.h
5409=================================================================== 5409===================================================================
5410--- /dev/null 1970-01-01 00:00:00.000000000 +0000 5410--- /dev/null 1970-01-01 00:00:00.000000000 +0000
5411+++ linux-2.6.23/include/asm-arm/arch-pxa/htcuniversal-gpio.h 2008-01-20 18:59:46.000000000 +0000 5411+++ linux-2.6.24/include/asm-arm/arch-pxa/htcuniversal-gpio.h 2008-03-10 16:09:23.000000000 +0000
5412@@ -0,0 +1,220 @@ 5412@@ -0,0 +1,220 @@
5413+/* 5413+/*
5414+ * include/asm-arm/arch-pxa/htcuniversal-gpio.h 5414+ * 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
5630+#define GPIO_NR_HTCUNIVERSAL_I2C_SDA_MD (118 | GPIO_ALT_FN_1_OUT) 5630+#define GPIO_NR_HTCUNIVERSAL_I2C_SDA_MD (118 | GPIO_ALT_FN_1_OUT)
5631+ 5631+
5632+#endif /* _HTCUNIVERSAL_GPIO_H */ 5632+#endif /* _HTCUNIVERSAL_GPIO_H */
5633Index: linux-2.6.23/include/asm-arm/arch-pxa/htcuniversal-init.h 5633Index: linux-2.6.24/include/asm-arm/arch-pxa/htcuniversal-init.h
5634=================================================================== 5634===================================================================
5635--- /dev/null 1970-01-01 00:00:00.000000000 +0000 5635--- /dev/null 1970-01-01 00:00:00.000000000 +0000
5636+++ linux-2.6.23/include/asm-arm/arch-pxa/htcuniversal-init.h 2008-01-20 18:59:46.000000000 +0000 5636+++ linux-2.6.24/include/asm-arm/arch-pxa/htcuniversal-init.h 2008-03-10 16:09:23.000000000 +0000
5637@@ -0,0 +1,14 @@ 5637@@ -0,0 +1,14 @@
5638+/* 5638+/*
5639+ * include/asm/arm/arch-pxa/htcuniversal-init.h 5639+ * 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
5649+ 5649+
5650+#endif /* _HTCUNIVERSAL_INIT_H_ */ 5650+#endif /* _HTCUNIVERSAL_INIT_H_ */
5651+ 5651+
5652Index: linux-2.6.23/include/asm-arm/arch-pxa/htcuniversal.h 5652Index: linux-2.6.24/include/asm-arm/arch-pxa/htcuniversal.h
5653=================================================================== 5653===================================================================
5654--- /dev/null 1970-01-01 00:00:00.000000000 +0000 5654--- /dev/null 1970-01-01 00:00:00.000000000 +0000
5655+++ linux-2.6.23/include/asm-arm/arch-pxa/htcuniversal.h 2008-01-20 18:59:46.000000000 +0000 5655+++ linux-2.6.24/include/asm-arm/arch-pxa/htcuniversal.h 2008-03-10 16:09:23.000000000 +0000
5656@@ -0,0 +1,3 @@ 5656@@ -0,0 +1,3 @@
5657+#include <asm/arch/irqs.h> 5657+#include <asm/arch/irqs.h>
5658+ 5658+
5659+#define HTCUNIVERSAL_ASIC3_IRQ_BASE IRQ_BOARD_START 5659+#define HTCUNIVERSAL_ASIC3_IRQ_BASE IRQ_BOARD_START
5660Index: linux-2.6.23/include/asm-arm/arch-pxa/pxa-pm_ll.h 5660Index: linux-2.6.24/include/asm-arm/arch-pxa/pxa-pm_ll.h
5661=================================================================== 5661===================================================================
5662--- /dev/null 1970-01-01 00:00:00.000000000 +0000 5662--- /dev/null 1970-01-01 00:00:00.000000000 +0000
5663+++ linux-2.6.23/include/asm-arm/arch-pxa/pxa-pm_ll.h 2008-01-20 18:59:46.000000000 +0000 5663+++ linux-2.6.24/include/asm-arm/arch-pxa/pxa-pm_ll.h 2008-03-10 16:09:23.000000000 +0000
5664@@ -0,0 +1,6 @@ 5664@@ -0,0 +1,6 @@
5665+struct pxa_ll_pm_ops { 5665+struct pxa_ll_pm_ops {
5666+ void (*suspend)(unsigned long); 5666+ void (*suspend)(unsigned long);
@@ -5668,10 +5668,10 @@ Index: linux-2.6.23/include/asm-arm/arch-pxa/pxa-pm_ll.h
5668+}; 5668+};
5669+ 5669+
5670+extern struct pxa_ll_pm_ops *pxa_pm_set_ll_ops(struct pxa_ll_pm_ops *new_ops); 5670+extern struct pxa_ll_pm_ops *pxa_pm_set_ll_ops(struct pxa_ll_pm_ops *new_ops);
5671Index: linux-2.6.23/include/asm-arm/hardware/asic3_keys.h 5671Index: linux-2.6.24/include/asm-arm/hardware/asic3_keys.h
5672=================================================================== 5672===================================================================
5673--- /dev/null 1970-01-01 00:00:00.000000000 +0000 5673--- /dev/null 1970-01-01 00:00:00.000000000 +0000
5674+++ linux-2.6.23/include/asm-arm/hardware/asic3_keys.h 2008-01-20 18:59:46.000000000 +0000 5674+++ linux-2.6.24/include/asm-arm/hardware/asic3_keys.h 2008-03-10 16:09:23.000000000 +0000
5675@@ -0,0 +1,18 @@ 5675@@ -0,0 +1,18 @@
5676+#include <linux/input.h> 5676+#include <linux/input.h>
5677+ 5677+
@@ -5691,10 +5691,10 @@ Index: linux-2.6.23/include/asm-arm/hardware/asic3_keys.h
5691+ struct input_dev *input; 5691+ struct input_dev *input;
5692+ struct device *asic3_dev; 5692+ struct device *asic3_dev;
5693+}; 5693+};
5694Index: linux-2.6.23/include/asm-arm/hardware/asic3_leds.h 5694Index: linux-2.6.24/include/asm-arm/hardware/asic3_leds.h
5695=================================================================== 5695===================================================================
5696--- /dev/null 1970-01-01 00:00:00.000000000 +0000 5696--- /dev/null 1970-01-01 00:00:00.000000000 +0000
5697+++ linux-2.6.23/include/asm-arm/hardware/asic3_leds.h 2008-01-20 18:59:46.000000000 +0000 5697+++ linux-2.6.24/include/asm-arm/hardware/asic3_leds.h 2008-03-10 16:09:23.000000000 +0000
5698@@ -0,0 +1,34 @@ 5698@@ -0,0 +1,34 @@
5699+/* 5699+/*
5700+ * LEDs support for HTC ASIC3 devices. 5700+ * LEDs support for HTC ASIC3 devices.
@@ -5730,10 +5730,10 @@ Index: linux-2.6.23/include/asm-arm/hardware/asic3_leds.h
5730+extern int asic3_leds_register(void); 5730+extern int asic3_leds_register(void);
5731+extern void asic3_leds_unregister(void); 5731+extern void asic3_leds_unregister(void);
5732+ 5732+
5733Index: linux-2.6.23/include/asm-arm/hardware/ipaq-asic3.h 5733Index: linux-2.6.24/include/asm-arm/hardware/ipaq-asic3.h
5734=================================================================== 5734===================================================================
5735--- /dev/null 1970-01-01 00:00:00.000000000 +0000 5735--- /dev/null 1970-01-01 00:00:00.000000000 +0000
5736+++ linux-2.6.23/include/asm-arm/hardware/ipaq-asic3.h 2008-01-20 18:59:46.000000000 +0000 5736+++ linux-2.6.24/include/asm-arm/hardware/ipaq-asic3.h 2008-03-10 16:09:23.000000000 +0000
5737@@ -0,0 +1,602 @@ 5737@@ -0,0 +1,602 @@
5738+/* 5738+/*
5739+ * 5739+ *
@@ -6337,10 +6337,10 @@ Index: linux-2.6.23/include/asm-arm/hardware/ipaq-asic3.h
6337+#define IPAQ_ASIC3_MAP_SIZE 0x2000 6337+#define IPAQ_ASIC3_MAP_SIZE 0x2000
6338+ 6338+
6339+#endif 6339+#endif
6340Index: linux-2.6.23/include/linux/gpiodev.h 6340Index: linux-2.6.24/include/linux/gpiodev.h
6341=================================================================== 6341===================================================================
6342--- /dev/null 1970-01-01 00:00:00.000000000 +0000 6342--- /dev/null 1970-01-01 00:00:00.000000000 +0000
6343+++ linux-2.6.23/include/linux/gpiodev.h 2008-01-20 18:59:46.000000000 +0000 6343+++ linux-2.6.24/include/linux/gpiodev.h 2008-03-10 16:09:23.000000000 +0000
6344@@ -0,0 +1,44 @@ 6344@@ -0,0 +1,44 @@
6345+#ifndef __GPIODEV_H 6345+#ifndef __GPIODEV_H
6346+#define __GPIODEV_H 6346+#define __GPIODEV_H
@@ -6386,10 +6386,10 @@ Index: linux-2.6.23/include/linux/gpiodev.h
6386+} 6386+}
6387+ 6387+
6388+#endif /* __GPIODEV_H */ 6388+#endif /* __GPIODEV_H */
6389Index: linux-2.6.23/include/linux/input_pda.h 6389Index: linux-2.6.24/include/linux/input_pda.h
6390=================================================================== 6390===================================================================
6391--- /dev/null 1970-01-01 00:00:00.000000000 +0000 6391--- /dev/null 1970-01-01 00:00:00.000000000 +0000
6392+++ linux-2.6.23/include/linux/input_pda.h 2008-01-20 18:59:46.000000000 +0000 6392+++ linux-2.6.24/include/linux/input_pda.h 2008-03-10 16:09:23.000000000 +0000
6393@@ -0,0 +1,47 @@ 6393@@ -0,0 +1,47 @@
6394+#ifndef _INPUT_PDA_H 6394+#ifndef _INPUT_PDA_H
6395+#define _INPUT_PDA_H 6395+#define _INPUT_PDA_H
@@ -6438,10 +6438,10 @@ Index: linux-2.6.23/include/linux/input_pda.h
6438+#define _KEY_HOMEPAGE _KEY_APP4 6438+#define _KEY_HOMEPAGE _KEY_APP4
6439+ 6439+
6440+#endif 6440+#endif
6441Index: linux-2.6.23/include/linux/soc/asic3_base.h 6441Index: linux-2.6.24/include/linux/soc/asic3_base.h
6442=================================================================== 6442===================================================================
6443--- /dev/null 1970-01-01 00:00:00.000000000 +0000 6443--- /dev/null 1970-01-01 00:00:00.000000000 +0000
6444+++ linux-2.6.23/include/linux/soc/asic3_base.h 2008-01-20 18:59:46.000000000 +0000 6444+++ linux-2.6.24/include/linux/soc/asic3_base.h 2008-03-10 16:09:23.000000000 +0000
6445@@ -0,0 +1,104 @@ 6445@@ -0,0 +1,104 @@
6446+#include <asm/types.h> 6446+#include <asm/types.h>
6447+#include <linux/gpiodev.h> 6447+#include <linux/gpiodev.h>
@@ -6547,10 +6547,10 @@ Index: linux-2.6.23/include/linux/soc/asic3_base.h
6547+ 6547+
6548+ struct tmio_mmc_hwconfig *tmio_mmc_hwconfig; 6548+ struct tmio_mmc_hwconfig *tmio_mmc_hwconfig;
6549+}; 6549+};
6550Index: linux-2.6.23/include/linux/soc/tmio_mmc.h 6550Index: linux-2.6.24/include/linux/soc/tmio_mmc.h
6551=================================================================== 6551===================================================================
6552--- /dev/null 1970-01-01 00:00:00.000000000 +0000 6552--- /dev/null 1970-01-01 00:00:00.000000000 +0000
6553+++ linux-2.6.23/include/linux/soc/tmio_mmc.h 2008-01-20 18:59:46.000000000 +0000 6553+++ linux-2.6.24/include/linux/soc/tmio_mmc.h 2008-03-10 16:09:23.000000000 +0000
6554@@ -0,0 +1,17 @@ 6554@@ -0,0 +1,17 @@
6555+#include <linux/platform_device.h> 6555+#include <linux/platform_device.h>
6556+ 6556+
@@ -6569,10 +6569,10 @@ Index: linux-2.6.23/include/linux/soc/tmio_mmc.h
6569+ int (*mmc_get_ro)(struct platform_device *pdev); 6569+ int (*mmc_get_ro)(struct platform_device *pdev);
6570+ short address_shift; 6570+ short address_shift;
6571+}; 6571+};
6572Index: linux-2.6.23/include/asm-arm/arch-pxa/pxa-regs.h 6572Index: linux-2.6.24/include/asm-arm/arch-pxa/pxa-regs.h
6573=================================================================== 6573===================================================================
6574--- linux-2.6.23.orig/include/asm-arm/arch-pxa/pxa-regs.h 2008-01-20 18:59:40.000000000 +0000 6574--- linux-2.6.24.orig/include/asm-arm/arch-pxa/pxa-regs.h 2008-03-10 16:07:59.000000000 +0000
6575+++ linux-2.6.23/include/asm-arm/arch-pxa/pxa-regs.h 2008-01-20 18:59:46.000000000 +0000 6575+++ linux-2.6.24/include/asm-arm/arch-pxa/pxa-regs.h 2008-03-10 16:09:23.000000000 +0000
6576@@ -2058,6 +2058,8 @@ 6576@@ -2058,6 +2058,8 @@
6577 #define LDCMD_SOFINT (1 << 22) 6577 #define LDCMD_SOFINT (1 << 22)
6578 #define LDCMD_EOFINT (1 << 21) 6578 #define LDCMD_EOFINT (1 << 21)
@@ -6582,25 +6582,11 @@ Index: linux-2.6.23/include/asm-arm/arch-pxa/pxa-regs.h
6582 6582
6583 #define LCCR5_SOFM1 (1<<0) /* Start Of Frame Mask for Overlay 1 (channel 1) */ 6583 #define LCCR5_SOFM1 (1<<0) /* Start Of Frame Mask for Overlay 1 (channel 1) */
6584 #define LCCR5_SOFM2 (1<<1) /* Start Of Frame Mask for Overlay 2 (channel 2) */ 6584 #define LCCR5_SOFM2 (1<<1) /* Start Of Frame Mask for Overlay 2 (channel 2) */
6585Index: linux-2.6.23/drivers/mmc/host/Kconfig 6585Index: linux-2.6.24/drivers/mmc/host/Makefile
6586===================================================================
6587--- linux-2.6.23.orig/drivers/mmc/host/Kconfig 2008-01-20 18:59:18.000000000 +0000
6588+++ linux-2.6.23/drivers/mmc/host/Kconfig 2008-01-20 18:59:46.000000000 +0000
6589@@ -130,3 +130,9 @@ config MMC_SPI
6590
6591 If unsure, or if your system has no SPI master driver, say N.
6592
6593+config MMC_ASIC3
6594+ tristate "HTC ASIC3 SD/MMC support"
6595+ depends on MMC && HTC_ASIC3
6596+ help
6597+ This provides support for the ASIC3 SD/MMC controller, used
6598+ in the iPAQ hx4700 and others.
6599Index: linux-2.6.23/drivers/mmc/host/Makefile
6600=================================================================== 6586===================================================================
6601--- linux-2.6.23.orig/drivers/mmc/host/Makefile 2008-01-20 18:59:18.000000000 +0000 6587--- linux-2.6.24.orig/drivers/mmc/host/Makefile 2008-01-24 22:58:37.000000000 +0000
6602+++ linux-2.6.23/drivers/mmc/host/Makefile 2008-01-20 21:12:10.000000000 +0000 6588+++ linux-2.6.24/drivers/mmc/host/Makefile 2008-03-10 16:09:23.000000000 +0000
6603@@ -13,6 +13,7 @@ obj-$(CONFIG_MMC_SDHCI) += sdhci.o 6589@@ -13,6 +13,7 @@
6604 obj-$(CONFIG_MMC_RICOH_MMC) += ricoh_mmc.o 6590 obj-$(CONFIG_MMC_RICOH_MMC) += ricoh_mmc.o
6605 obj-$(CONFIG_MMC_WBSD) += wbsd.o 6591 obj-$(CONFIG_MMC_WBSD) += wbsd.o
6606 obj-$(CONFIG_MMC_AU1X) += au1xmmc.o 6592 obj-$(CONFIG_MMC_AU1X) += au1xmmc.o
@@ -6608,10 +6594,10 @@ Index: linux-2.6.23/drivers/mmc/host/Makefile
6608 obj-$(CONFIG_MMC_OMAP) += omap.o 6594 obj-$(CONFIG_MMC_OMAP) += omap.o
6609 obj-$(CONFIG_MMC_AT91) += at91_mci.o 6595 obj-$(CONFIG_MMC_AT91) += at91_mci.o
6610 obj-$(CONFIG_MMC_TIFM_SD) += tifm_sd.o 6596 obj-$(CONFIG_MMC_TIFM_SD) += tifm_sd.o
6611Index: linux-2.6.23/drivers/mmc/host/asic3_mmc.c 6597Index: linux-2.6.24/drivers/mmc/host/asic3_mmc.c
6612=================================================================== 6598===================================================================
6613--- /dev/null 1970-01-01 00:00:00.000000000 +0000 6599--- /dev/null 1970-01-01 00:00:00.000000000 +0000
6614+++ linux-2.6.23/drivers/mmc/host/asic3_mmc.c 2008-01-20 18:59:46.000000000 +0000 6600+++ linux-2.6.24/drivers/mmc/host/asic3_mmc.c 2008-03-10 16:09:23.000000000 +0000
6615@@ -0,0 +1,900 @@ 6601@@ -0,0 +1,900 @@
6616+/* Note that this driver can likely be merged into the tmio driver, so 6602+/* Note that this driver can likely be merged into the tmio driver, so
6617+ * consider this code temporary. It works, though. 6603+ * consider this code temporary. It works, though.
@@ -7513,10 +7499,10 @@ Index: linux-2.6.23/drivers/mmc/host/asic3_mmc.c
7513+MODULE_AUTHOR("Aric Blumer, SDG Systems, LLC"); 7499+MODULE_AUTHOR("Aric Blumer, SDG Systems, LLC");
7514+MODULE_LICENSE("GPL"); 7500+MODULE_LICENSE("GPL");
7515+ 7501+
7516Index: linux-2.6.23/drivers/mmc/host/asic3_mmc.h 7502Index: linux-2.6.24/drivers/mmc/host/asic3_mmc.h
7517=================================================================== 7503===================================================================
7518--- /dev/null 1970-01-01 00:00:00.000000000 +0000 7504--- /dev/null 1970-01-01 00:00:00.000000000 +0000
7519+++ linux-2.6.23/drivers/mmc/host/asic3_mmc.h 2008-01-20 18:59:46.000000000 +0000 7505+++ linux-2.6.24/drivers/mmc/host/asic3_mmc.h 2008-03-10 16:09:23.000000000 +0000
7520@@ -0,0 +1,25 @@ 7506@@ -0,0 +1,25 @@
7521+#ifndef __ASIC3_MMC_H 7507+#ifndef __ASIC3_MMC_H
7522+#define __ASIC3_MMC_H 7508+#define __ASIC3_MMC_H
@@ -7543,22 +7529,10 @@ Index: linux-2.6.23/drivers/mmc/host/asic3_mmc.h
7543+#define DONT_CARE_BUFFER_BITS ( SD_CTRL_INTMASKBUFFER_UNK7 | SD_CTRL_INTMASKBUFFER_CMD_BUSY ) 7529+#define DONT_CARE_BUFFER_BITS ( SD_CTRL_INTMASKBUFFER_UNK7 | SD_CTRL_INTMASKBUFFER_CMD_BUSY )
7544+ 7530+
7545+#endif // __ASIC3_MMC_H 7531+#endif // __ASIC3_MMC_H
7546Index: linux-2.6.23/drivers/input/keyboard/Makefile 7532Index: linux-2.6.24/drivers/input/keyboard/asic3_keys.c
7547===================================================================
7548--- linux-2.6.23.orig/drivers/input/keyboard/Makefile 2008-01-20 18:59:16.000000000 +0000
7549+++ linux-2.6.23/drivers/input/keyboard/Makefile 2008-01-20 21:11:40.000000000 +0000
7550@@ -15,6 +15,7 @@ obj-$(CONFIG_KEYBOARD_NEWTON) += newton
7551 obj-$(CONFIG_KEYBOARD_STOWAWAY) += stowaway.o
7552 obj-$(CONFIG_KEYBOARD_CORGI) += corgikbd.o
7553 obj-$(CONFIG_KEYBOARD_SPITZ) += spitzkbd.o
7554+obj-$(CONFIG_KEYBOARD_ASIC3) += asic3_keys.o
7555 obj-$(CONFIG_KEYBOARD_HIL) += hil_kbd.o
7556 obj-$(CONFIG_KEYBOARD_HIL_OLD) += hilkbd.o
7557 obj-$(CONFIG_KEYBOARD_OMAP) += omap-keypad.o
7558Index: linux-2.6.23/drivers/input/keyboard/asic3_keys.c
7559=================================================================== 7533===================================================================
7560--- /dev/null 1970-01-01 00:00:00.000000000 +0000 7534--- /dev/null 1970-01-01 00:00:00.000000000 +0000
7561+++ linux-2.6.23/drivers/input/keyboard/asic3_keys.c 2008-01-20 18:59:46.000000000 +0000 7535+++ linux-2.6.24/drivers/input/keyboard/asic3_keys.c 2008-03-10 16:09:23.000000000 +0000
7562@@ -0,0 +1,131 @@ 7536@@ -0,0 +1,131 @@
7563+/* 7537+/*
7564+ * Generic buttons driver for ASIC3 SoC. 7538+ * Generic buttons driver for ASIC3 SoC.
@@ -7691,10 +7665,10 @@ Index: linux-2.6.23/drivers/input/keyboard/asic3_keys.c
7691+MODULE_AUTHOR("Joshua Wise, Pawel Kolodziejski, Paul Sokolovsky"); 7665+MODULE_AUTHOR("Joshua Wise, Pawel Kolodziejski, Paul Sokolovsky");
7692+MODULE_DESCRIPTION("Buttons driver for HTC ASIC3 SoC"); 7666+MODULE_DESCRIPTION("Buttons driver for HTC ASIC3 SoC");
7693+MODULE_LICENSE("GPL"); 7667+MODULE_LICENSE("GPL");
7694Index: linux-2.6.23/include/asm-arm/arch-pxa/irqs.h 7668Index: linux-2.6.24/include/asm-arm/arch-pxa/irqs.h
7695=================================================================== 7669===================================================================
7696--- linux-2.6.23.orig/include/asm-arm/arch-pxa/irqs.h 2008-01-20 18:59:28.000000000 +0000 7670--- linux-2.6.24.orig/include/asm-arm/arch-pxa/irqs.h 2008-01-24 22:58:37.000000000 +0000
7697+++ linux-2.6.23/include/asm-arm/arch-pxa/irqs.h 2008-01-20 18:59:46.000000000 +0000 7671+++ linux-2.6.24/include/asm-arm/arch-pxa/irqs.h 2008-03-10 16:09:23.000000000 +0000
7698@@ -182,6 +182,8 @@ 7672@@ -182,6 +182,8 @@
7699 defined(CONFIG_MACH_LOGICPD_PXA270) || \ 7673 defined(CONFIG_MACH_LOGICPD_PXA270) || \
7700 defined(CONFIG_MACH_MAINSTONE) 7674 defined(CONFIG_MACH_MAINSTONE)
@@ -7704,22 +7678,10 @@ Index: linux-2.6.23/include/asm-arm/arch-pxa/irqs.h
7704 #else 7678 #else
7705 #define NR_IRQS (IRQ_BOARD_START) 7679 #define NR_IRQS (IRQ_BOARD_START)
7706 #endif 7680 #endif
7707Index: linux-2.6.23/include/linux/ioport.h 7681Index: linux-2.6.24/include/asm-arm/arch-pxa/serial.h
7708===================================================================
7709--- linux-2.6.23.orig/include/linux/ioport.h 2008-01-20 18:59:31.000000000 +0000
7710+++ linux-2.6.23/include/linux/ioport.h 2008-01-20 18:59:46.000000000 +0000
7711@@ -56,6 +56,7 @@ struct resource_list {
7712 #define IORESOURCE_IRQ_HIGHLEVEL (1<<2)
7713 #define IORESOURCE_IRQ_LOWLEVEL (1<<3)
7714 #define IORESOURCE_IRQ_SHAREABLE (1<<4)
7715+#define IORESOURCE_IRQ_SOC_SUBDEVICE (1<<5)
7716
7717 /* ISA PnP DMA specific bits (IORESOURCE_BITS) */
7718 #define IORESOURCE_DMA_TYPE_MASK (3<<0)
7719Index: linux-2.6.23/include/asm-arm/arch-pxa/serial.h
7720=================================================================== 7682===================================================================
7721--- /dev/null 1970-01-01 00:00:00.000000000 +0000 7683--- /dev/null 1970-01-01 00:00:00.000000000 +0000
7722+++ linux-2.6.23/include/asm-arm/arch-pxa/serial.h 2008-01-20 18:59:46.000000000 +0000 7684+++ linux-2.6.24/include/asm-arm/arch-pxa/serial.h 2008-03-10 16:09:23.000000000 +0000
7723@@ -0,0 +1,78 @@ 7685@@ -0,0 +1,78 @@
7724+/* 7686+/*
7725+ * linux/include/asm-arm/arch-pxa/serial.h 7687+ * linux/include/asm-arm/arch-pxa/serial.h
@@ -7799,10 +7761,10 @@ Index: linux-2.6.23/include/asm-arm/arch-pxa/serial.h
7799+void pxa_set_btuart_info(struct platform_pxa_serial_funcs *btuart_funcs); 7761+void pxa_set_btuart_info(struct platform_pxa_serial_funcs *btuart_funcs);
7800+void pxa_set_stuart_info(struct platform_pxa_serial_funcs *stuart_funcs); 7762+void pxa_set_stuart_info(struct platform_pxa_serial_funcs *stuart_funcs);
7801+void pxa_set_hwuart_info(struct platform_pxa_serial_funcs *hwuart_funcs); 7763+void pxa_set_hwuart_info(struct platform_pxa_serial_funcs *hwuart_funcs);
7802Index: linux-2.6.23/drivers/serial/pxa.c 7764Index: linux-2.6.24/drivers/serial/pxa.c
7803=================================================================== 7765===================================================================
7804--- linux-2.6.23.orig/drivers/serial/pxa.c 2008-01-20 18:59:23.000000000 +0000 7766--- linux-2.6.24.orig/drivers/serial/pxa.c 2008-01-24 22:58:37.000000000 +0000
7805+++ linux-2.6.23/drivers/serial/pxa.c 2008-01-20 18:59:46.000000000 +0000 7767+++ linux-2.6.24/drivers/serial/pxa.c 2008-03-10 16:09:23.000000000 +0000
7806@@ -47,6 +47,7 @@ 7768@@ -47,6 +47,7 @@
7807 #include <asm/io.h> 7769 #include <asm/io.h>
7808 #include <asm/hardware.h> 7770 #include <asm/hardware.h>
@@ -7811,7 +7773,7 @@ Index: linux-2.6.23/drivers/serial/pxa.c
7811 #include <asm/arch/pxa-regs.h> 7773 #include <asm/arch/pxa-regs.h>
7812 7774
7813 7775
7814@@ -60,6 +61,14 @@ struct uart_pxa_port { 7776@@ -60,6 +61,14 @@
7815 char *name; 7777 char *name;
7816 }; 7778 };
7817 7779
@@ -7826,7 +7788,7 @@ Index: linux-2.6.23/drivers/serial/pxa.c
7826 static inline unsigned int serial_in(struct uart_pxa_port *up, int offset) 7788 static inline unsigned int serial_in(struct uart_pxa_port *up, int offset)
7827 { 7789 {
7828 offset <<= 2; 7790 offset <<= 2;
7829@@ -347,6 +356,9 @@ static int serial_pxa_startup(struct uar 7791@@ -347,6 +356,9 @@
7830 unsigned long flags; 7792 unsigned long flags;
7831 int retval; 7793 int retval;
7832 7794
@@ -7836,7 +7798,7 @@ Index: linux-2.6.23/drivers/serial/pxa.c
7836 if (port->line == 3) /* HWUART */ 7798 if (port->line == 3) /* HWUART */
7837 up->mcr |= UART_MCR_AFE; 7799 up->mcr |= UART_MCR_AFE;
7838 else 7800 else
7839@@ -404,6 +416,12 @@ static int serial_pxa_startup(struct uar 7801@@ -404,6 +416,12 @@
7840 (void) serial_in(up, UART_IIR); 7802 (void) serial_in(up, UART_IIR);
7841 (void) serial_in(up, UART_MSR); 7803 (void) serial_in(up, UART_MSR);
7842 7804
@@ -7849,7 +7811,7 @@ Index: linux-2.6.23/drivers/serial/pxa.c
7849 return 0; 7811 return 0;
7850 } 7812 }
7851 7813
7852@@ -412,6 +430,8 @@ static void serial_pxa_shutdown(struct u 7814@@ -412,6 +430,8 @@
7853 struct uart_pxa_port *up = (struct uart_pxa_port *)port; 7815 struct uart_pxa_port *up = (struct uart_pxa_port *)port;
7854 unsigned long flags; 7816 unsigned long flags;
7855 7817
@@ -7858,7 +7820,7 @@ Index: linux-2.6.23/drivers/serial/pxa.c
7858 free_irq(up->port.irq, up); 7820 free_irq(up->port.irq, up);
7859 7821
7860 /* 7822 /*
7861@@ -433,6 +453,8 @@ static void serial_pxa_shutdown(struct u 7823@@ -433,6 +453,8 @@
7862 UART_FCR_CLEAR_RCVR | 7824 UART_FCR_CLEAR_RCVR |
7863 UART_FCR_CLEAR_XMIT); 7825 UART_FCR_CLEAR_XMIT);
7864 serial_out(up, UART_FCR, 0); 7826 serial_out(up, UART_FCR, 0);
@@ -7867,10 +7829,10 @@ Index: linux-2.6.23/drivers/serial/pxa.c
7867 } 7829 }
7868 7830
7869 static void 7831 static void
7870Index: linux-2.6.23/arch/arm/mach-pxa/generic.c 7832Index: linux-2.6.24/arch/arm/mach-pxa/generic.c
7871=================================================================== 7833===================================================================
7872--- linux-2.6.23.orig/arch/arm/mach-pxa/generic.c 2008-01-20 18:59:09.000000000 +0000 7834--- linux-2.6.24.orig/arch/arm/mach-pxa/generic.c 2008-01-24 22:58:37.000000000 +0000
7873+++ linux-2.6.23/arch/arm/mach-pxa/generic.c 2008-01-20 18:59:46.000000000 +0000 7835+++ linux-2.6.24/arch/arm/mach-pxa/generic.c 2008-03-10 16:09:23.000000000 +0000
7874@@ -38,6 +38,7 @@ 7836@@ -38,6 +38,7 @@
7875 #include <asm/arch/mmc.h> 7837 #include <asm/arch/mmc.h>
7876 #include <asm/arch/irda.h> 7838 #include <asm/arch/irda.h>
@@ -7879,7 +7841,7 @@ Index: linux-2.6.23/arch/arm/mach-pxa/generic.c
7879 7841
7880 #include "devices.h" 7842 #include "devices.h"
7881 #include "generic.h" 7843 #include "generic.h"
7882@@ -412,6 +413,18 @@ struct platform_device pxa_device_hwuart 7844@@ -412,6 +413,18 @@
7883 .num_resources = ARRAY_SIZE(pxa_resource_hwuart), 7845 .num_resources = ARRAY_SIZE(pxa_resource_hwuart),
7884 }; 7846 };
7885 7847
@@ -7898,11 +7860,11 @@ Index: linux-2.6.23/arch/arm/mach-pxa/generic.c
7898 static struct resource pxai2c_resources[] = { 7860 static struct resource pxai2c_resources[] = {
7899 { 7861 {
7900 .start = 0x40301680, 7862 .start = 0x40301680,
7901Index: linux-2.6.23/drivers/leds/Makefile 7863Index: linux-2.6.24/drivers/leds/Makefile
7902=================================================================== 7864===================================================================
7903--- linux-2.6.23.orig/drivers/leds/Makefile 2008-01-20 18:59:17.000000000 +0000 7865--- linux-2.6.24.orig/drivers/leds/Makefile 2008-01-24 22:58:37.000000000 +0000
7904+++ linux-2.6.23/drivers/leds/Makefile 2008-01-20 21:10:45.000000000 +0000 7866+++ linux-2.6.24/drivers/leds/Makefile 2008-03-10 16:09:23.000000000 +0000
7905@@ -15,6 +15,7 @@ obj-$(CONFIG_LEDS_AMS_DELTA) += leds-am 7867@@ -15,6 +15,7 @@
7906 obj-$(CONFIG_LEDS_NET48XX) += leds-net48xx.o 7868 obj-$(CONFIG_LEDS_NET48XX) += leds-net48xx.o
7907 obj-$(CONFIG_LEDS_WRAP) += leds-wrap.o 7869 obj-$(CONFIG_LEDS_WRAP) += leds-wrap.o
7908 obj-$(CONFIG_LEDS_H1940) += leds-h1940.o 7870 obj-$(CONFIG_LEDS_H1940) += leds-h1940.o
@@ -7910,11 +7872,11 @@ Index: linux-2.6.23/drivers/leds/Makefile
7910 obj-$(CONFIG_LEDS_COBALT_QUBE) += leds-cobalt-qube.o 7872 obj-$(CONFIG_LEDS_COBALT_QUBE) += leds-cobalt-qube.o
7911 obj-$(CONFIG_LEDS_COBALT_RAQ) += leds-cobalt-raq.o 7873 obj-$(CONFIG_LEDS_COBALT_RAQ) += leds-cobalt-raq.o
7912 obj-$(CONFIG_LEDS_GPIO) += leds-gpio.o 7874 obj-$(CONFIG_LEDS_GPIO) += leds-gpio.o
7913Index: linux-2.6.23/drivers/input/keyboard/Kconfig 7875Index: linux-2.6.24/drivers/input/keyboard/Kconfig
7914=================================================================== 7876===================================================================
7915--- linux-2.6.23.orig/drivers/input/keyboard/Kconfig 2008-01-20 18:59:16.000000000 +0000 7877--- linux-2.6.24.orig/drivers/input/keyboard/Kconfig 2008-01-24 22:58:37.000000000 +0000
7916+++ linux-2.6.23/drivers/input/keyboard/Kconfig 2008-01-20 18:59:46.000000000 +0000 7878+++ linux-2.6.24/drivers/input/keyboard/Kconfig 2008-03-10 16:09:23.000000000 +0000
7917@@ -293,4 +293,11 @@ config KEYBOARD_BFIN 7879@@ -293,4 +293,11 @@
7918 To compile this driver as a module, choose M here: the 7880 To compile this driver as a module, choose M here: the
7919 module will be called bf54x-keys. 7881 module will be called bf54x-keys.
7920 7882
@@ -7926,3 +7888,33 @@ Index: linux-2.6.23/drivers/input/keyboard/Kconfig
7926+ HTC ASIC3 peripheral controller. 7888+ HTC ASIC3 peripheral controller.
7927+ 7889+
7928 endif 7890 endif
7891Index: linux-2.6.24/drivers/mmc/host/Kconfig
7892===================================================================
7893--- linux-2.6.24.orig/drivers/mmc/host/Kconfig 2008-01-24 22:58:37.000000000 +0000
7894+++ linux-2.6.24/drivers/mmc/host/Kconfig 2008-03-10 16:09:59.000000000 +0000
7895@@ -24,6 +24,13 @@
7896
7897 If unsure, say N.
7898
7899+config MMC_ASIC3
7900+ tristate "HTC ASIC3 SD/MMC support"
7901+ depends on MMC && HTC_ASIC3
7902+ help
7903+ This provides support for the ASIC3 SD/MMC controller, used
7904+ in the iPAQ hx4700 and others.
7905+
7906 config MMC_SDHCI
7907 tristate "Secure Digital Host Controller Interface support (EXPERIMENTAL)"
7908 depends on PCI && EXPERIMENTAL
7909Index: linux-2.6.24/drivers/input/keyboard/Makefile
7910===================================================================
7911--- linux-2.6.24.orig/drivers/input/keyboard/Makefile 2008-01-24 22:58:37.000000000 +0000
7912+++ linux-2.6.24/drivers/input/keyboard/Makefile 2008-03-10 16:10:28.000000000 +0000
7913@@ -6,6 +6,7 @@
7914
7915 obj-$(CONFIG_KEYBOARD_ATKBD) += atkbd.o
7916 obj-$(CONFIG_KEYBOARD_SUNKBD) += sunkbd.o
7917+obj-$(CONFIG_KEYBOARD_ASIC3) += asic3_keys.o
7918 obj-$(CONFIG_KEYBOARD_LKKBD) += lkkbd.o
7919 obj-$(CONFIG_KEYBOARD_XTKBD) += xtkbd.o
7920 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 0000000000..6447a0b104
--- /dev/null
+++ b/meta/packages/linux/linux-rp-2.6.24/pxa27x-resume.patch
@@ -0,0 +1,41 @@
1List: linux-arm-kernel
2Subject: [PATCH] Fix PXA27x resume
3From: Russell King - ARM Linux <linux@arm.linux.org.uk>
4Date: 2008-01-21 13:53:31
5Message-ID: 20080121135331.GC30149@flint.arm.linux.org.uk
6[Download message RAW]
7
8When PXA27x wakes up, tick_resume_oneshot() tries to set a timer
9interrupt to occur immediately. Since PXA27x requires at least
10MIN_OSCR_DELTA, this causes us to flag an error.
11
12tick_program_event() then increments the next event time by
13min_delta_ns. However, by the time we get back to programming
14the next event, the OSCR has incremented such that we fail again.
15We repeatedly retry, but the OSCR is too fast for us - we never
16catch up, so we never break out of the loop - resulting in us
17never apparantly resuming.
18
19Fix this by doubling min_delta_ns.
20
21Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
22
23diff --git a/arch/arm/mach-pxa/time.c b/arch/arm/mach-pxa/time.c
24index ac0bbad..7b7c017 100644
25--- a/arch/arm/mach-pxa/time.c
26+++ b/arch/arm/mach-pxa/time.c
27@@ -169,7 +169,7 @@ static void __init pxa_timer_init(void)
28 ckevt_pxa_osmr0.max_delta_ns =
29 clockevent_delta2ns(0x7fffffff, &ckevt_pxa_osmr0);
30 ckevt_pxa_osmr0.min_delta_ns =
31- clockevent_delta2ns(MIN_OSCR_DELTA, &ckevt_pxa_osmr0) + 1;
32+ clockevent_delta2ns(MIN_OSCR_DELTA * 2, &ckevt_pxa_osmr0) + 1;
33
34 cksrc_pxa_oscr0.mult =
35 clocksource_hz2mult(clock_tick_rate, cksrc_pxa_oscr0.shift);
36
37-------------------------------------------------------------------
38List admin: http://lists.arm.linux.org.uk/mailman/listinfo/linux-arm-kernel
39FAQ: http://www.arm.linux.org.uk/mailinglists/faq.php
40Etiquette: http://www.arm.linux.org.uk/mailinglists/etiquette.php
41
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 0000000000..14c496a31a
--- /dev/null
+++ b/meta/packages/linux/linux-rp-2.6.24/pxa2xx_udc-clock.patch
@@ -0,0 +1,221 @@
1---
2 drivers/usb/gadget/pxa2xx_udc.c | 88 ++++++++++++++++++++++------------------
3 drivers/usb/gadget/pxa2xx_udc.h | 4 +
4 2 files changed, 53 insertions(+), 39 deletions(-)
5
6--- g26.orig/drivers/usb/gadget/pxa2xx_udc.c 2008-02-19 12:47:06.000000000 -0800
7+++ g26/drivers/usb/gadget/pxa2xx_udc.c 2008-02-19 14:07:17.000000000 -0800
8@@ -103,6 +103,12 @@ static const char ep0name [] = "ep0";
9 #error "Can't configure both IXP and PXA"
10 #endif
11
12+/* IXP doesn't yet support <linux/clk.h> */
13+#define clk_get(dev,name) NULL
14+#define clk_enable(clk) do { } while (0)
15+#define clk_disable(clk) do { } while (0)
16+#define clk_put(clk) do { } while (0)
17+
18 #endif
19
20 #include "pxa2xx_udc.h"
21@@ -934,20 +940,31 @@ static void udc_disable(struct pxa2xx_ud
22 /* We disable the UDC -- and its 48 MHz clock -- whenever it's not
23 * in active use.
24 */
25-static int pullup(struct pxa2xx_udc *udc, int is_active)
26+static int pullup(struct pxa2xx_udc *udc)
27 {
28- is_active = is_active && udc->vbus && udc->pullup;
29+ int is_active = udc->vbus && udc->pullup && !udc->suspended;
30 DMSG("%s\n", is_active ? "active" : "inactive");
31- if (is_active)
32- udc_enable(udc);
33- else {
34- if (udc->gadget.speed != USB_SPEED_UNKNOWN) {
35- DMSG("disconnect %s\n", udc->driver
36- ? udc->driver->driver.name
37- : "(no driver)");
38- stop_activity(udc, udc->driver);
39+ if (is_active) {
40+ if (!udc->active) {
41+ udc->active = 1;
42+ /* Enable clock for USB device */
43+ clk_enable(udc->clk);
44+ udc_enable(udc);
45 }
46- udc_disable(udc);
47+ } else {
48+ if (udc->active) {
49+ if (udc->gadget.speed != USB_SPEED_UNKNOWN) {
50+ DMSG("disconnect %s\n", udc->driver
51+ ? udc->driver->driver.name
52+ : "(no driver)");
53+ stop_activity(udc, udc->driver);
54+ }
55+ udc_disable(udc);
56+ /* Disable clock for USB device */
57+ clk_disable(udc->clk);
58+ udc->active = 0;
59+ }
60+
61 }
62 return 0;
63 }
64@@ -958,9 +975,9 @@ static int pxa2xx_udc_vbus_session(struc
65 struct pxa2xx_udc *udc;
66
67 udc = container_of(_gadget, struct pxa2xx_udc, gadget);
68- udc->vbus = is_active = (is_active != 0);
69+ udc->vbus = (is_active != 0);
70 DMSG("vbus %s\n", is_active ? "supplied" : "inactive");
71- pullup(udc, is_active);
72+ pullup(udc);
73 return 0;
74 }
75
76@@ -975,9 +992,8 @@ static int pxa2xx_udc_pullup(struct usb_
77 if (!udc->mach->gpio_pullup && !udc->mach->udc_command)
78 return -EOPNOTSUPP;
79
80- is_active = (is_active != 0);
81- udc->pullup = is_active;
82- pullup(udc, is_active);
83+ udc->pullup = (is_active != 0);
84+ pullup(udc);
85 return 0;
86 }
87
88@@ -1146,11 +1162,6 @@ static void udc_disable(struct pxa2xx_ud
89
90 udc_clear_mask_UDCCR(UDCCR_UDE);
91
92-#ifdef CONFIG_ARCH_PXA
93- /* Disable clock for USB device */
94- clk_disable(dev->clk);
95-#endif
96-
97 ep0_idle (dev);
98 dev->gadget.speed = USB_SPEED_UNKNOWN;
99 }
100@@ -1191,11 +1202,6 @@ static void udc_enable (struct pxa2xx_ud
101 {
102 udc_clear_mask_UDCCR(UDCCR_UDE);
103
104-#ifdef CONFIG_ARCH_PXA
105- /* Enable clock for USB device */
106- clk_enable(dev->clk);
107-#endif
108-
109 /* try to clear these bits before we enable the udc */
110 udc_ack_int_UDCCR(UDCCR_SUSIR|/*UDCCR_RSTIR|*/UDCCR_RESIR);
111
112@@ -1286,7 +1292,7 @@ fail:
113 * for set_configuration as well as eventual disconnect.
114 */
115 DMSG("registered gadget driver '%s'\n", driver->driver.name);
116- pullup(dev, 1);
117+ pullup(dev);
118 dump_state(dev);
119 return 0;
120 }
121@@ -1329,7 +1335,8 @@ int usb_gadget_unregister_driver(struct
122 return -EINVAL;
123
124 local_irq_disable();
125- pullup(dev, 0);
126+ dev->pullup = 0;
127+ pullup(dev);
128 stop_activity(dev, driver);
129 local_irq_enable();
130
131@@ -2131,13 +2138,11 @@ static int __init pxa2xx_udc_probe(struc
132 if (irq < 0)
133 return -ENODEV;
134
135-#ifdef CONFIG_ARCH_PXA
136 dev->clk = clk_get(&pdev->dev, "UDCCLK");
137 if (IS_ERR(dev->clk)) {
138 retval = PTR_ERR(dev->clk);
139 goto err_clk;
140 }
141-#endif
142
143 pr_debug("%s: IRQ %d%s%s\n", driver_name, irq,
144 dev->has_cfr ? "" : " (!cfr)",
145@@ -2250,10 +2255,8 @@ lubbock_fail0:
146 if (dev->mach->gpio_vbus)
147 gpio_free(dev->mach->gpio_vbus);
148 err_gpio_vbus:
149-#ifdef CONFIG_ARCH_PXA
150 clk_put(dev->clk);
151 err_clk:
152-#endif
153 return retval;
154 }
155
156@@ -2269,7 +2272,9 @@ static int __exit pxa2xx_udc_remove(stru
157 if (dev->driver)
158 return -EBUSY;
159
160- udc_disable(dev);
161+ dev->pullup = 0;
162+ pullup(dev);
163+
164 remove_proc_files();
165
166 if (dev->got_irq) {
167@@ -2289,9 +2294,7 @@ static int __exit pxa2xx_udc_remove(stru
168 if (dev->mach->gpio_pullup)
169 gpio_free(dev->mach->gpio_pullup);
170
171-#ifdef CONFIG_ARCH_PXA
172 clk_put(dev->clk);
173-#endif
174
175 platform_set_drvdata(pdev, NULL);
176 the_controller = NULL;
177@@ -2317,10 +2320,15 @@ static int __exit pxa2xx_udc_remove(stru
178 static int pxa2xx_udc_suspend(struct platform_device *dev, pm_message_t state)
179 {
180 struct pxa2xx_udc *udc = platform_get_drvdata(dev);
181+ unsigned long flags;
182
183 if (!udc->mach->gpio_pullup && !udc->mach->udc_command)
184 WARN("USB host won't detect disconnect!\n");
185- pullup(udc, 0);
186+ udc->suspended = 1;
187+
188+ local_irq_save(flags);
189+ pullup(udc);
190+ local_irq_restore(flags);
191
192 return 0;
193 }
194@@ -2328,8 +2336,12 @@ static int pxa2xx_udc_suspend(struct pla
195 static int pxa2xx_udc_resume(struct platform_device *dev)
196 {
197 struct pxa2xx_udc *udc = platform_get_drvdata(dev);
198+ unsigned long flags;
199
200- pullup(udc, 1);
201+ udc->suspended = 0;
202+ local_irq_save(flags);
203+ pullup(udc);
204+ local_irq_restore(flags);
205
206 return 0;
207 }
208--- g26.orig/drivers/usb/gadget/pxa2xx_udc.h 2008-02-19 12:47:06.000000000 -0800
209+++ g26/drivers/usb/gadget/pxa2xx_udc.h 2008-02-19 12:57:42.000000000 -0800
210@@ -119,7 +119,9 @@ struct pxa2xx_udc {
211 has_cfr : 1,
212 req_pending : 1,
213 req_std : 1,
214- req_config : 1;
215+ req_config : 1,
216+ suspended : 1,
217+ active : 1;
218
219 #define start_watchdog(dev) mod_timer(&dev->timer, jiffies + (HZ/200))
220 struct timer_list timer;
221-
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 0000000000..bed41c55d5
--- /dev/null
+++ b/meta/packages/linux/linux-rp-2.6.24/sharpsl-rc-r1.patch
@@ -0,0 +1,527 @@
1This patch adds support for Sharp CE-RH2 on Spitz.
2
3It is not clean enough to be upstreamed:
4- It is a bit syslog-noisy.
5- Does not support other Zaurus models.
6- Maybe split to more parts:
7 * MAX1111 driver
8 * linear input device
9 * virtual keyboard on top of linear input device
10
11Index: linux-2.6.24/arch/arm/mach-pxa/spitz.c
12===================================================================
13--- linux-2.6.24.orig/arch/arm/mach-pxa/spitz.c 2008-03-10 17:05:37.000000000 +0000
14+++ linux-2.6.24/arch/arm/mach-pxa/spitz.c 2008-03-10 17:05:55.000000000 +0000
15@@ -259,6 +259,13 @@
16 .id = -1,
17 };
18
19+/*
20+ * Spitz Remote Control Device
21+ */
22+static struct platform_device sharpsl_rc_device = {
23+ .name = "sharpsl-remote-control",
24+ .id = -1,
25+};
26
27 /*
28 * Spitz LEDs
29@@ -548,6 +555,7 @@
30 &spitzscoop_device,
31 &spitzssp_device,
32 &spitzkbd_device,
33+ &sharpsl_rc_device,
34 &spitzts_device,
35 &spitzbl_device,
36 &spitzled_device,
37Index: linux-2.6.24/drivers/input/keyboard/Kconfig
38===================================================================
39--- linux-2.6.24.orig/drivers/input/keyboard/Kconfig 2008-03-10 17:05:40.000000000 +0000
40+++ linux-2.6.24/drivers/input/keyboard/Kconfig 2008-03-10 17:05:55.000000000 +0000
41@@ -154,6 +154,17 @@
42 To compile this driver as a module, choose M here: the
43 module will be called spitzkbd.
44
45+config SHARPSL_RC
46+ tristate "Sharp SL-Cxx00 Remote Control"
47+ depends on PXA_SHARPSL
48+ default y
49+ help
50+ Say Y here to enable the remote on the Sharp Zaurus SL-Cxx00,
51+ SL-C1000, SL-C3000 and Sl-C3100 series of PDAs.
52+
53+ To compile this driver as a module, choose M here: the
54+ module will be called sharpsl_rc.
55+
56 config KEYBOARD_AMIGA
57 tristate "Amiga keyboard"
58 depends on AMIGA
59Index: linux-2.6.24/drivers/input/keyboard/Makefile
60===================================================================
61--- linux-2.6.24.orig/drivers/input/keyboard/Makefile 2008-03-10 17:05:40.000000000 +0000
62+++ linux-2.6.24/drivers/input/keyboard/Makefile 2008-03-10 17:06:17.000000000 +0000
63@@ -26,3 +26,5 @@
64 obj-$(CONFIG_KEYBOARD_HP7XX) += jornada720_kbd.o
65 obj-$(CONFIG_KEYBOARD_MAPLE) += maple_keyb.o
66 obj-$(CONFIG_KEYBOARD_BFIN) += bf54x-keys.o
67+obj-$(CONFIG_SHARPSL_RC) += sharpsl_rc.o
68+
69Index: linux-2.6.24/drivers/input/keyboard/sharpsl_rc.c
70===================================================================
71--- /dev/null 1970-01-01 00:00:00.000000000 +0000
72+++ linux-2.6.24/drivers/input/keyboard/sharpsl_rc.c 2008-03-10 17:05:55.000000000 +0000
73@@ -0,0 +1,291 @@
74+/*
75+ * Keyboard driver for Sharp Clamshell Models (SL-Cxx00)
76+ *
77+ * Copyright (c) 2004-2005 Richard Purdie
78+ *
79+ * Based on corgikbd.c and Sharp's RC driver
80+ *
81+ * This program is free software; you can redistribute it and/or modify
82+ * it under the terms of the GNU General Public License version 2 as
83+ * published by the Free Software Foundation.
84+ *
85+ */
86+
87+#define DEBUG 1
88+#include <linux/delay.h>
89+#include <linux/platform_device.h>
90+#include <linux/init.h>
91+#include <linux/input.h>
92+#include <linux/interrupt.h>
93+#include <linux/jiffies.h>
94+#include <linux/module.h>
95+#include <linux/slab.h>
96+
97+#ifdef CONFIG_MACH_SPITZ
98+#include <asm/arch/spitz.h>
99+#endif
100+#ifdef CONFIG_MACH_CORGI
101+#include <asm/arch/corgi.h>
102+#endif
103+
104+#include <asm/arch/hardware.h>
105+#include <asm/arch/pxa-regs.h>
106+#include <asm/hardware/scoop.h>
107+#include <asm/arch/sharpsl.h>
108+#include <asm/hardware/sharpsl_pm.h>
109+
110+#define DPRINTK(fmt, args...) dev_dbg(data->dev, fmt "\n", ##args)
111+
112+struct remote_control_key {
113+ unsigned char min;
114+ unsigned char max;
115+ unsigned char key;
116+};
117+
118+#ifdef CONFIG_MACH_SPITZ
119+#define REMOTE_AKIN_PULLUP SPITZ_SCP2_AKIN_PULLUP
120+#define REMOTE_SCOOP_DEVICE spitzscoop2_device
121+#define REMOTE_GPIO_INT SPITZ_GPIO_AK_INT
122+#define REMOTE_IRQ_INT SPITZ_IRQ_GPIO_AK_INT
123+static struct remote_control_key remote_keys[] = {
124+ { 25, 35, KEY_STOPCD},
125+ { 55, 65, KEY_PLAYPAUSE},
126+ { 85, 95, KEY_NEXTSONG},
127+ { 115, 125, KEY_VOLUMEUP},
128+ { 145, 155, KEY_PREVIOUSSONG},
129+ { 180, 190, KEY_MUTE},
130+ { 215, 225, KEY_VOLUMEDOWN},
131+};
132+#endif
133+#ifdef CONFIG_MACH_CORGI
134+#define REMOTE_AKIN_PULLUP CORGI_SCP_AKIN_PULLUP
135+#define REMOTE_SCOOP_DEVICE corgiscoop_device
136+#define REMOTE_GPIO_INT CORGI_GPIO_AK_INT
137+#define REMOTE_IRQ_INT CORGI_IRQ_GPIO_AK_INT
138+static struct remote_control_key remote_keys[] = {
139+ //These need to be fixed for the CE-RH1's values
140+ { 25, 35, KEY_STOPCD},
141+ { 55, 65, KEY_PLAYPAUSE},
142+ { 85, 95, KEY_NEXTSONG},
143+ { 115, 125, KEY_VOLUMEUP},
144+ { 145, 155, KEY_PREVIOUSSONG},
145+ { 180, 190, KEY_MUTE},
146+ { 215, 225, KEY_VOLUMEDOWN},
147+};
148+#endif
149+
150+#define RELEASE_HI 230
151+#define MAX_EARPHONE 6
152+#define RC_POLL_MS 10
153+#define RC_FINISH_MS 500
154+#define WAIT_STATE 3
155+#define NOISE_THRESHOLD 100
156+
157+struct sharpsl_rc {
158+ struct input_dev *input;
159+ struct device *dev;
160+
161+ spinlock_t lock;
162+ struct timer_list rctimer;
163+ struct timer_list rctimer_finish;
164+
165+ unsigned int handling_press;
166+ unsigned int noise;
167+ unsigned int state;
168+ unsigned int last_key;
169+};
170+
171+static int get_remocon_raw(void)
172+{
173+ int i, val;
174+
175+ val = sharpsl_pm_pxa_read_max1111(MAX1111_REMCOM);
176+ for (i = 0; i < ARRAY_SIZE(remote_keys); ++i) {
177+ if (val >= remote_keys[i].min
178+ && val <= remote_keys[i].max) {
179+ printk("get_remocon_raw: VAL=%i, KEY=%i\n", val, remote_keys[i].key);
180+ return remote_keys[i].key;
181+ }
182+ }
183+ return 0;
184+}
185+
186+static irqreturn_t sharpsl_rc_interrupt(int irq, void *dev_id, struct pt_regs *regs)
187+{
188+ struct sharpsl_rc *data = dev_id;
189+ DPRINTK("sharpsl_rc_interrupt %d\n", irq);
190+ if (!data->handling_press) {
191+ DPRINTK("handling interrupt");
192+ data->handling_press = 1;
193+ data->noise = 0;
194+ data->state = 0;
195+ data->last_key = 0;
196+
197+ reset_scoop_gpio(&REMOTE_SCOOP_DEVICE.dev, REMOTE_AKIN_PULLUP);
198+
199+ mod_timer(&data->rctimer, jiffies + msecs_to_jiffies(RC_POLL_MS));
200+ }
201+ return IRQ_HANDLED;
202+}
203+
204+static void sharpsl_rc_timer_callback(unsigned long dataPtr)
205+{
206+ struct sharpsl_rc *data = (struct sharpsl_rc *) dataPtr;
207+ int timer = 1;
208+ int key = get_remocon_raw();
209+ DPRINTK("timer callback, key: %d", key);
210+
211+ //wait for value to stabilize
212+ if (data->state < WAIT_STATE) {
213+ if (data->last_key != key) {
214+ ++data->noise;
215+ if (data->noise > NOISE_THRESHOLD) {
216+ DPRINTK("too much noise, bailing");
217+ timer = 0;
218+ }
219+ data->state = 0;
220+ } else {
221+ ++data->state;
222+ }
223+ data->last_key = key;
224+
225+ //stable value, send event
226+ } else if (data->state == WAIT_STATE) {
227+ data->noise = 0;
228+ //non-key returned, skip the rest of the states and bail now
229+ if (data->last_key == 0) {
230+ DPRINTK("non-key detected %d, noise: %d", data->last_key, data->noise);
231+ timer = 0;
232+ //send button press
233+ } else {
234+ DPRINTK("key press detected %d, noise %d", data->last_key, data->noise);
235+ input_report_key(data->input, data->last_key, 1);
236+ }
237+ ++data->state;
238+
239+ //wait until key is released
240+ } else if (data->state < WAIT_STATE * 2) {
241+ if (key == data->last_key
242+ && data->noise < NOISE_THRESHOLD) {
243+ data->state = WAIT_STATE + 1;
244+ ++data->noise;
245+ } else {
246+ ++data->state;
247+ }
248+ //key is released, send event
249+ } else {
250+ //send button release
251+ DPRINTK("release key %d", data->last_key);
252+ input_report_key(data->input, data->last_key, 0);
253+ timer = 0;
254+ }
255+ if (timer) {
256+ mod_timer(&data->rctimer, jiffies + msecs_to_jiffies(RC_POLL_MS));
257+ } else {
258+ set_scoop_gpio(&REMOTE_SCOOP_DEVICE.dev, REMOTE_AKIN_PULLUP);
259+ data->handling_press = 0;
260+ }
261+}
262+
263+static int __init sharpsl_rc_probe(struct platform_device *pdev)
264+{
265+ struct sharpsl_rc *sharpsl_rc;
266+ struct input_dev *input_dev;
267+ int i, ret;
268+
269+ dev_dbg(&pdev->dev, "sharpsl_rc_probe\n");
270+
271+ sharpsl_rc = kzalloc(sizeof(struct sharpsl_rc), GFP_KERNEL);
272+ input_dev = input_allocate_device();
273+ if (!sharpsl_rc || !input_dev) {
274+ kfree(sharpsl_rc);
275+ input_free_device(input_dev);
276+ return -ENOMEM;
277+ }
278+
279+ platform_set_drvdata(pdev, sharpsl_rc);
280+
281+ sharpsl_rc->dev = &pdev->dev;
282+ sharpsl_rc->input = input_dev;
283+ spin_lock_init(&sharpsl_rc->lock);
284+
285+ /* Init Remote Control Timer */
286+ init_timer(&sharpsl_rc->rctimer);
287+ sharpsl_rc->rctimer.function = sharpsl_rc_timer_callback;
288+ sharpsl_rc->rctimer.data = (unsigned long) sharpsl_rc;
289+
290+ input_dev->name = "Sharp Remote Control CE-RHX";
291+ input_dev->phys = "sharpsl_rc/input0";
292+ input_dev->id.bustype = BUS_HOST;
293+ input_dev->id.vendor = 0x0001;
294+ input_dev->id.product = 0x0001;
295+ input_dev->id.version = 0x0100;
296+ input_dev->cdev.dev = &pdev->dev;
297+ input_dev->private = sharpsl_rc;
298+
299+ input_dev->evbit[0] = BIT(EV_KEY);
300+
301+ for (i = 0; i <= ARRAY_SIZE(remote_keys); i++)
302+ set_bit(remote_keys[i].key, input_dev->keybit);
303+
304+ input_register_device(sharpsl_rc->input);
305+
306+ pxa_gpio_mode(REMOTE_GPIO_INT | GPIO_IN);
307+ ret = request_irq(REMOTE_IRQ_INT,
308+ sharpsl_rc_interrupt,
309+ IRQF_DISABLED | IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING | IRQF_SHARED,
310+ "sharpsl_rc",
311+ sharpsl_rc);
312+ if (ret < 0) {
313+ dev_dbg(&pdev->dev, "Can't get IRQ: %d!\n", i);
314+ kfree(sharpsl_rc);
315+ input_free_device(input_dev);
316+ return ret;
317+ }
318+
319+ return 0;
320+}
321+
322+static int sharpsl_rc_remove(struct platform_device *pdev)
323+{
324+ struct sharpsl_rc *sharpsl_rc = platform_get_drvdata(pdev);
325+
326+ dev_dbg(&pdev->dev, "sharpsl_rc_remove\n");
327+
328+ free_irq(REMOTE_IRQ_INT, sharpsl_rc);
329+ del_timer_sync(&sharpsl_rc->rctimer);
330+ input_unregister_device(sharpsl_rc->input);
331+ kfree(sharpsl_rc);
332+
333+ return 0;
334+}
335+
336+static struct platform_driver sharpsl_rc_driver = {
337+ .probe = sharpsl_rc_probe,
338+ .remove = sharpsl_rc_remove,
339+ .suspend = NULL,
340+ .resume = NULL,
341+ .driver = {
342+ .name = "sharpsl-remote-control",
343+ },
344+};
345+
346+static int __devinit sharpsl_rc_init(void)
347+{
348+ printk("sharpsl_rc_init\n");
349+ return platform_driver_register(&sharpsl_rc_driver);
350+}
351+
352+static void __exit sharpsl_rc_exit(void)
353+{
354+ printk("sharpsl_rc_exit\n");
355+ platform_driver_unregister(&sharpsl_rc_driver);
356+}
357+
358+module_init(sharpsl_rc_init);
359+module_exit(sharpsl_rc_exit);
360+
361+MODULE_AUTHOR("Justin Patrin <papercrane@reversefold.com>");
362+MODULE_AUTHOR("Richard Purdie <rpurdie@rpsys.net>");
363+MODULE_DESCRIPTION("SharpSL Remote Control Driver");
364+MODULE_LICENSE("GPL");
365Index: linux-2.6.24/drivers/input/keyboard/spitzkbd.c
366===================================================================
367--- linux-2.6.24.orig/drivers/input/keyboard/spitzkbd.c 2008-01-24 22:58:37.000000000 +0000
368+++ linux-2.6.24/drivers/input/keyboard/spitzkbd.c 2008-03-10 17:05:55.000000000 +0000
369@@ -19,6 +19,7 @@
370 #include <linux/jiffies.h>
371 #include <linux/module.h>
372 #include <linux/slab.h>
373+#include <linux/kmod.h>
374
375 #include <asm/arch/spitz.h>
376 #include <asm/arch/hardware.h>
377@@ -279,13 +280,21 @@
378 static int sharpsl_hinge_state;
379 static int hinge_count;
380
381+void spitzkbd_handle_sharpsl_rc(void *arg) {
382+ request_module("sharpsl_rc");
383+}
384+
385+DECLARE_WORK(spitzkbd_work, spitzkbd_handle_sharpsl_rc);
386+
387 static void spitzkbd_hinge_timer(unsigned long data)
388 {
389 struct spitzkbd *spitzkbd_data = (struct spitzkbd *) data;
390 unsigned long state;
391 unsigned long flags;
392+ unsigned int headphone, remote;
393
394 state = GPLR(SPITZ_GPIO_SWA) & (GPIO_bit(SPITZ_GPIO_SWA)|GPIO_bit(SPITZ_GPIO_SWB));
395+ state |= (GPLR(SPITZ_GPIO_HP_IN) & GPIO_bit(SPITZ_GPIO_HP_IN));
396 state |= (GPLR(SPITZ_GPIO_AK_INT) & GPIO_bit(SPITZ_GPIO_AK_INT));
397 if (state != sharpsl_hinge_state) {
398 hinge_count = 0;
399@@ -299,9 +308,18 @@
400
401 input_report_switch(spitzkbd_data->input, SW_LID, ((GPLR(SPITZ_GPIO_SWA) & GPIO_bit(SPITZ_GPIO_SWA)) != 0));
402 input_report_switch(spitzkbd_data->input, SW_TABLET_MODE, ((GPLR(SPITZ_GPIO_SWB) & GPIO_bit(SPITZ_GPIO_SWB)) != 0));
403- input_report_switch(spitzkbd_data->input, SW_HEADPHONE_INSERT, ((GPLR(SPITZ_GPIO_AK_INT) & GPIO_bit(SPITZ_GPIO_AK_INT)) != 0));
404+
405+ headphone = ((GPLR(SPITZ_GPIO_HP_IN) & GPIO_bit(SPITZ_GPIO_HP_IN)) != 0);
406+ input_report_switch(spitzkbd_data->input, SW_HEADPHONE_INSERT, headphone);
407+
408+ remote = headphone && ((GPLR(SPITZ_GPIO_AK_INT) & GPIO_bit(SPITZ_GPIO_AK_INT)) == 0);
409+ input_report_switch(spitzkbd_data->input, SW_REMOTE_INSERT, remote);
410 input_sync(spitzkbd_data->input);
411
412+ if (remote) {
413+ schedule_work(&spitzkbd_work);
414+ }
415+
416 spin_unlock_irqrestore(&spitzkbd_data->lock, flags);
417 } else {
418 mod_timer(&spitzkbd_data->htimer, jiffies + msecs_to_jiffies(HINGE_SCAN_INTERVAL));
419@@ -395,6 +413,7 @@
420 set_bit(SW_LID, input_dev->swbit);
421 set_bit(SW_TABLET_MODE, input_dev->swbit);
422 set_bit(SW_HEADPHONE_INSERT, input_dev->swbit);
423+ set_bit(SW_REMOTE_INSERT, input_dev->swbit);
424
425 err = input_register_device(input_dev);
426 if (err)
427@@ -432,9 +451,12 @@
428 request_irq(SPITZ_IRQ_GPIO_SWB, spitzkbd_hinge_isr,
429 IRQF_DISABLED | IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING,
430 "Spitzkbd SWB", spitzkbd);
431- request_irq(SPITZ_IRQ_GPIO_AK_INT, spitzkbd_hinge_isr,
432+ request_irq(SPITZ_IRQ_GPIO_HP_IN, spitzkbd_hinge_isr,
433 IRQF_DISABLED | IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING,
434 "Spitzkbd HP", spitzkbd);
435+ request_irq(SPITZ_IRQ_GPIO_AK_INT, spitzkbd_hinge_isr,
436+ IRQF_DISABLED | IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING | IRQF_SHARED,
437+ "Spitzkbd HP Type", spitzkbd);
438
439 return 0;
440
441@@ -455,6 +477,7 @@
442 free_irq(SPITZ_IRQ_GPIO_ON_KEY, spitzkbd);
443 free_irq(SPITZ_IRQ_GPIO_SWA, spitzkbd);
444 free_irq(SPITZ_IRQ_GPIO_SWB, spitzkbd);
445+ free_irq(SPITZ_IRQ_GPIO_HP_IN, spitzkbd);
446 free_irq(SPITZ_IRQ_GPIO_AK_INT, spitzkbd);
447
448 del_timer_sync(&spitzkbd->htimer);
449Index: linux-2.6.24/arch/arm/mach-pxa/sharpsl.h
450===================================================================
451--- linux-2.6.24.orig/arch/arm/mach-pxa/sharpsl.h 2008-03-10 17:05:35.000000000 +0000
452+++ linux-2.6.24/arch/arm/mach-pxa/sharpsl.h 2008-03-10 17:05:55.000000000 +0000
453@@ -37,15 +37,10 @@
454 */
455 #define READ_GPIO_BIT(x) (GPLR(x) & GPIO_bit(x))
456
457-/* MAX1111 Channel Definitions */
458-#define MAX1111_BATT_VOLT 4u
459-#define MAX1111_BATT_TEMP 2u
460-#define MAX1111_ACIN_VOLT 6u
461-
462 extern struct battery_thresh spitz_battery_levels_acin[];
463 extern struct battery_thresh spitz_battery_levels_noac[];
464 void sharpsl_pm_pxa_init(void);
465 void sharpsl_pm_pxa_remove(void);
466-int sharpsl_pm_pxa_read_max1111(int channel);
467+
468
469
470Index: linux-2.6.24/arch/arm/mach-pxa/sharpsl_pm.c
471===================================================================
472--- linux-2.6.24.orig/arch/arm/mach-pxa/sharpsl_pm.c 2008-01-24 22:58:37.000000000 +0000
473+++ linux-2.6.24/arch/arm/mach-pxa/sharpsl_pm.c 2008-03-10 17:05:55.000000000 +0000
474@@ -135,6 +135,8 @@
475 | MAXCTRL_SGL | MAXCTRL_UNI | MAXCTRL_STR);
476 }
477
478+EXPORT_SYMBOL(sharpsl_pm_pxa_read_max1111);
479+
480 void sharpsl_pm_pxa_init(void)
481 {
482 pxa_gpio_mode(sharpsl_pm.machinfo->gpio_acin | GPIO_IN);
483Index: linux-2.6.24/include/asm-arm/hardware/sharpsl_pm.h
484===================================================================
485--- linux-2.6.24.orig/include/asm-arm/hardware/sharpsl_pm.h 2008-01-24 22:58:37.000000000 +0000
486+++ linux-2.6.24/include/asm-arm/hardware/sharpsl_pm.h 2008-03-10 17:05:55.000000000 +0000
487@@ -104,3 +104,10 @@
488 irqreturn_t sharpsl_chrg_full_isr(int irq, void *dev_id);
489 irqreturn_t sharpsl_fatal_isr(int irq, void *dev_id);
490
491+/* MAX1111 Channel Definitions */
492+#define MAX1111_REMCOM 0u
493+#define MAX1111_BATT_VOLT 4u
494+#define MAX1111_BATT_TEMP 2u
495+#define MAX1111_ACIN_VOLT 6u
496+
497+int sharpsl_pm_pxa_read_max1111(int channel);
498Index: linux-2.6.24/include/linux/input.h
499===================================================================
500--- linux-2.6.24.orig/include/linux/input.h 2008-01-24 22:58:37.000000000 +0000
501+++ linux-2.6.24/include/linux/input.h 2008-03-10 17:05:55.000000000 +0000
502@@ -636,6 +636,7 @@
503 #define SW_TABLET_MODE 0x01 /* set = tablet mode */
504 #define SW_HEADPHONE_INSERT 0x02 /* set = inserted */
505 #define SW_RADIO 0x03 /* set = radio enabled */
506+#define SW_REMOTE_INSERT 0x04 /* set = remote */
507 #define SW_MAX 0x0f
508 #define SW_CNT (SW_MAX+1)
509
510Index: linux-2.6.24/arch/arm/mach-pxa/spitz_pm.c
511===================================================================
512--- linux-2.6.24.orig/arch/arm/mach-pxa/spitz_pm.c 2008-03-10 17:05:40.000000000 +0000
513+++ linux-2.6.24/arch/arm/mach-pxa/spitz_pm.c 2008-03-10 17:05:55.000000000 +0000
514@@ -162,6 +162,13 @@
515 if (resume_on_alarm && (PEDR & PWER_RTC))
516 is_resume |= PWER_RTC;
517
518+ 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));
519+
520+ //remote/headphone interrupt, wakeup
521+ if (PEDR == 0 && (PKSR & 0xc0d01) != 0) {
522+ is_resume |= PWER_RTC;
523+ }
524+
525 dev_dbg(sharpsl_pm.dev, "is_resume: %x\n",is_resume);
526 return is_resume;
527 }
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 0000000000..6fb34ec179
--- /dev/null
+++ b/meta/packages/linux/linux-rp-2.6.24/sharpsl-rc-r2.patch
@@ -0,0 +1,180 @@
1This patch adds support for Sharp CE-RH2 on Akita and CE-RH1 on C7x0.
2
3This patch is a bit ugly:
4- Device specific functions should be moved to platform infrastructure.
5- Maybe define generic *_scoopexp functions handling Akita x Spitz differences.
6
7Index: linux-2.6.24/drivers/input/keyboard/sharpsl_rc.c
8===================================================================
9--- linux-2.6.24.orig/drivers/input/keyboard/sharpsl_rc.c 2008-03-08 19:29:02.000000000 +0000
10+++ linux-2.6.24/drivers/input/keyboard/sharpsl_rc.c 2008-03-08 22:23:35.000000000 +0000
11@@ -21,12 +21,10 @@
12 #include <linux/module.h>
13 #include <linux/slab.h>
14
15-#ifdef CONFIG_MACH_SPITZ
16+#include <asm/mach-types.h>
17 #include <asm/arch/spitz.h>
18-#endif
19-#ifdef CONFIG_MACH_CORGI
20+#include <asm/arch/akita.h>
21 #include <asm/arch/corgi.h>
22-#endif
23
24 #include <asm/arch/hardware.h>
25 #include <asm/arch/pxa-regs.h>
26@@ -42,12 +40,8 @@
27 unsigned char key;
28 };
29
30-#ifdef CONFIG_MACH_SPITZ
31-#define REMOTE_AKIN_PULLUP SPITZ_SCP2_AKIN_PULLUP
32-#define REMOTE_SCOOP_DEVICE spitzscoop2_device
33-#define REMOTE_GPIO_INT SPITZ_GPIO_AK_INT
34-#define REMOTE_IRQ_INT SPITZ_IRQ_GPIO_AK_INT
35-static struct remote_control_key remote_keys[] = {
36+static struct remote_control_key remote_keys_spitz[] = {
37+ /* CE-RH2 values */
38 { 25, 35, KEY_STOPCD},
39 { 55, 65, KEY_PLAYPAUSE},
40 { 85, 95, KEY_NEXTSONG},
41@@ -56,23 +50,15 @@
42 { 180, 190, KEY_MUTE},
43 { 215, 225, KEY_VOLUMEDOWN},
44 };
45-#endif
46-#ifdef CONFIG_MACH_CORGI
47-#define REMOTE_AKIN_PULLUP CORGI_SCP_AKIN_PULLUP
48-#define REMOTE_SCOOP_DEVICE corgiscoop_device
49-#define REMOTE_GPIO_INT CORGI_GPIO_AK_INT
50-#define REMOTE_IRQ_INT CORGI_IRQ_GPIO_AK_INT
51-static struct remote_control_key remote_keys[] = {
52- //These need to be fixed for the CE-RH1's values
53- { 25, 35, KEY_STOPCD},
54- { 55, 65, KEY_PLAYPAUSE},
55- { 85, 95, KEY_NEXTSONG},
56- { 115, 125, KEY_VOLUMEUP},
57- { 145, 155, KEY_PREVIOUSSONG},
58- { 180, 190, KEY_MUTE},
59- { 215, 225, KEY_VOLUMEDOWN},
60+static struct remote_control_key remote_keys_corgi[] = {
61+ /* CE-RH1 values */
62+ { 27, 35, KEY_STOPCD},
63+ { 7, 13, KEY_PLAYPAUSE},
64+ { 77, 93, KEY_NEXTSONG},
65+ { 115, 132, KEY_VOLUMEUP},
66+ { 46, 58, KEY_PREVIOUSSONG},
67+ { 170, 186, KEY_VOLUMEDOWN},
68 };
69-#endif
70
71 #define RELEASE_HI 230
72 #define MAX_EARPHONE 6
73@@ -98,9 +84,17 @@
74 static int get_remocon_raw(void)
75 {
76 int i, val;
77+ struct remote_control_key *remote_keys;
78+
79+ if (machine_is_borzoi() || machine_is_spitz() || machine_is_akita())
80+ remote_keys = remote_keys_spitz;
81+ else
82+ remote_keys = remote_keys_corgi;
83
84 val = sharpsl_pm_pxa_read_max1111(MAX1111_REMCOM);
85- for (i = 0; i < ARRAY_SIZE(remote_keys); ++i) {
86+ for (i = 0; i < (machine_is_borzoi() || machine_is_spitz() || machine_is_akita() ?
87+ ARRAY_SIZE(remote_keys_spitz) : ARRAY_SIZE(remote_keys_corgi));
88+ ++i) {
89 if (val >= remote_keys[i].min
90 && val <= remote_keys[i].max) {
91 printk("get_remocon_raw: VAL=%i, KEY=%i\n", val, remote_keys[i].key);
92@@ -121,8 +115,12 @@
93 data->state = 0;
94 data->last_key = 0;
95
96- reset_scoop_gpio(&REMOTE_SCOOP_DEVICE.dev, REMOTE_AKIN_PULLUP);
97-
98+ if (machine_is_borzoi() || machine_is_spitz())
99+ reset_scoop_gpio(platform_scoop_config->devs[1].dev, SPITZ_SCP2_AKIN_PULLUP);
100+ else if (machine_is_akita())
101+ akita_reset_ioexp(&akitaioexp_device.dev, AKITA_IOEXP_AKIN_PULLUP);
102+ else
103+ reset_scoop_gpio(platform_scoop_config->devs[0].dev, CORGI_SCP_AKIN_PULLUP);
104 mod_timer(&data->rctimer, jiffies + msecs_to_jiffies(RC_POLL_MS));
105 }
106 return IRQ_HANDLED;
107@@ -182,7 +180,12 @@
108 if (timer) {
109 mod_timer(&data->rctimer, jiffies + msecs_to_jiffies(RC_POLL_MS));
110 } else {
111- set_scoop_gpio(&REMOTE_SCOOP_DEVICE.dev, REMOTE_AKIN_PULLUP);
112+ if (machine_is_borzoi() || machine_is_spitz())
113+ set_scoop_gpio(platform_scoop_config->devs[1].dev, SPITZ_SCP2_AKIN_PULLUP);
114+ else if (machine_is_akita())
115+ akita_set_ioexp(&akitaioexp_device.dev, AKITA_IOEXP_AKIN_PULLUP);
116+ else
117+ set_scoop_gpio(platform_scoop_config->devs[0].dev, CORGI_SCP_AKIN_PULLUP);
118 data->handling_press = 0;
119 }
120 }
121@@ -192,6 +195,7 @@
122 struct sharpsl_rc *sharpsl_rc;
123 struct input_dev *input_dev;
124 int i, ret;
125+ struct remote_control_key *remote_keys;
126
127 dev_dbg(&pdev->dev, "sharpsl_rc_probe\n");
128
129@@ -225,17 +229,32 @@
130
131 input_dev->evbit[0] = BIT(EV_KEY);
132
133- for (i = 0; i <= ARRAY_SIZE(remote_keys); i++)
134+ if (machine_is_borzoi() || machine_is_spitz() || machine_is_akita())
135+ remote_keys = remote_keys_spitz;
136+ else
137+ remote_keys = remote_keys_corgi;
138+ for (i = 0; i < (machine_is_borzoi() || machine_is_spitz() || machine_is_akita() ?
139+ ARRAY_SIZE(remote_keys_spitz) : ARRAY_SIZE(remote_keys_corgi));
140+ ++i)
141 set_bit(remote_keys[i].key, input_dev->keybit);
142
143 input_register_device(sharpsl_rc->input);
144
145- pxa_gpio_mode(REMOTE_GPIO_INT | GPIO_IN);
146- ret = request_irq(REMOTE_IRQ_INT,
147- sharpsl_rc_interrupt,
148- IRQF_DISABLED | IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING | IRQF_SHARED,
149- "sharpsl_rc",
150- sharpsl_rc);
151+ if (machine_is_borzoi() || machine_is_spitz() || machine_is_akita()) {
152+ pxa_gpio_mode(SPITZ_GPIO_AK_INT | GPIO_IN);
153+ ret = request_irq(SPITZ_IRQ_GPIO_AK_INT,
154+ sharpsl_rc_interrupt,
155+ IRQF_DISABLED | IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING | IRQF_SHARED,
156+ "sharpsl_rc",
157+ sharpsl_rc);
158+ } else {
159+ pxa_gpio_mode(CORGI_GPIO_AK_INT | GPIO_IN);
160+ ret = request_irq(CORGI_IRQ_GPIO_AK_INT,
161+ sharpsl_rc_interrupt,
162+ IRQF_DISABLED | IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING | IRQF_SHARED,
163+ "sharpsl_rc",
164+ sharpsl_rc);
165+ }
166 if (ret < 0) {
167 dev_dbg(&pdev->dev, "Can't get IRQ: %d!\n", i);
168 kfree(sharpsl_rc);
169@@ -252,7 +271,10 @@
170
171 dev_dbg(&pdev->dev, "sharpsl_rc_remove\n");
172
173- free_irq(REMOTE_IRQ_INT, sharpsl_rc);
174+ if (machine_is_borzoi() || machine_is_spitz() || machine_is_akita())
175+ free_irq(SPITZ_IRQ_GPIO_AK_INT, sharpsl_rc);
176+ else
177+ free_irq(CORGI_IRQ_GPIO_AK_INT, sharpsl_rc);
178 del_timer_sync(&sharpsl_rc->rctimer);
179 input_unregister_device(sharpsl_rc->input);
180 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 0000000000..df6d5f66c2
--- /dev/null
+++ b/meta/packages/linux/linux-rp-2.6.24/spitz_h_rewrite.patch
@@ -0,0 +1,497 @@
1http://www.uwsg.indiana.edu/hypermail/linux/kernel/0802.1/3541.html
2
3Here is a rewrite of spitz.h, which includes comments documenting
4function of particular GPIO pins.
5
6spitz_h_rewrite.patch provides:
7- no changes in compiled code
8- partial spitz.h rewrite:
9 * organized by function
10 * describes complete GPIO pinout
11 * comments added
12 * removed defines cloning pxa-regs.h
13- prefer generic pxa-regs.h GPIO if available
14- use GPIO names instead of numbers
15
16Thanks to Trisoft for providing needed information.
17
18Index: linux-2.6.24/arch/arm/mach-pxa/spitz_pm.c
19===================================================================
20--- linux-2.6.24.orig/arch/arm/mach-pxa/spitz_pm.c 2008-01-24 22:58:37.000000000 +0000
21+++ linux-2.6.24/arch/arm/mach-pxa/spitz_pm.c 2008-02-13 13:49:22.000000000 +0000
22@@ -110,9 +110,9 @@
23 pxa_gpio_mode(GPIO18_RDY|GPIO_OUT | GPIO_DFLT_HIGH);
24
25 PRER = GPIO_bit(SPITZ_GPIO_KEY_INT);
26- PFER = GPIO_bit(SPITZ_GPIO_KEY_INT) | GPIO_bit(SPITZ_GPIO_RESET);
27- PWER = GPIO_bit(SPITZ_GPIO_KEY_INT) | GPIO_bit(SPITZ_GPIO_RESET) | PWER_RTC;
28- PKWR = GPIO_bit(SPITZ_GPIO_SYNC) | GPIO_bit(SPITZ_GPIO_KEY_INT) | GPIO_bit(SPITZ_GPIO_RESET);
29+ PFER = GPIO_bit(SPITZ_GPIO_KEY_INT) | GPIO_bit(GPIO1_RST);
30+ PWER = GPIO_bit(SPITZ_GPIO_KEY_INT) | GPIO_bit(GPIO1_RST) | PWER_RTC;
31+ PKWR = GPIO_bit(SPITZ_GPIO_SYNC) | GPIO_bit(SPITZ_GPIO_KEY_INT) | GPIO_bit(GPIO1_RST);
32 PKSR = 0xffffffff; // clear
33
34 /* nRESET_OUT Disable */
35@@ -128,7 +128,7 @@
36 static void spitz_postsuspend(void)
37 {
38 pxa_gpio_mode(GPIO18_RDY_MD);
39- pxa_gpio_mode(10 | GPIO_IN);
40+ pxa_gpio_mode(SPITZ_GPIO_NC_10 | GPIO_IN);
41 }
42
43 static int spitz_should_wakeup(unsigned int resume_on_alarm)
44Index: linux-2.6.24/drivers/video/pxafb.c
45===================================================================
46--- linux-2.6.24.orig/drivers/video/pxafb.c 2008-02-13 13:49:04.000000000 +0000
47+++ linux-2.6.24/drivers/video/pxafb.c 2008-02-13 13:49:57.000000000 +0000
48@@ -920,7 +920,7 @@
49 return;
50 }
51
52- for (gpio = 58; ldd_bits > 0; gpio++, ldd_bits--) {
53+ for (gpio = GPIO58_LDD_0; ldd_bits > 0; gpio++, ldd_bits--) {
54 pxa_gpio_mode(gpio | GPIO_ALT_FN_2_OUT);
55 }
56 pxa_gpio_mode(GPIO74_LCD_FCLK_MD);
57Index: linux-2.6.24/include/asm-arm/arch-pxa/akita.h
58===================================================================
59--- linux-2.6.24.orig/include/asm-arm/arch-pxa/akita.h 2008-01-24 22:58:37.000000000 +0000
60+++ linux-2.6.24/include/asm-arm/arch-pxa/akita.h 2008-02-13 13:49:22.000000000 +0000
61@@ -12,11 +12,11 @@
62 /* Akita IO Expander GPIOs */
63
64 #define AKITA_IOEXP_RESERVED_7 (1 << 7)
65-#define AKITA_IOEXP_IR_ON (1 << 6)
66-#define AKITA_IOEXP_AKIN_PULLUP (1 << 5)
67-#define AKITA_IOEXP_BACKLIGHT_CONT (1 << 4)
68-#define AKITA_IOEXP_BACKLIGHT_ON (1 << 3)
69-#define AKITA_IOEXP_MIC_BIAS (1 << 2)
70+#define AKITA_IOEXP_IR_ON (1 << 6) /* IrDA On */
71+#define AKITA_IOEXP_AKIN_PULLUP (1 << 5) /* Pull-Up for Remote */
72+#define AKITA_IOEXP_BACKLIGHT_CONT (1 << 4) /* Backlight Control */
73+#define AKITA_IOEXP_BACKLIGHT_ON (1 << 3) /* Backlight On */
74+#define AKITA_IOEXP_MIC_BIAS (1 << 2) /* Mic Bias On */
75 #define AKITA_IOEXP_RESERVED_1 (1 << 1)
76 #define AKITA_IOEXP_RESERVED_0 (1 << 0)
77
78Index: linux-2.6.24/include/asm-arm/arch-pxa/pxa-regs.h
79===================================================================
80--- linux-2.6.24.orig/include/asm-arm/arch-pxa/pxa-regs.h 2008-02-13 13:49:07.000000000 +0000
81+++ linux-2.6.24/include/asm-arm/arch-pxa/pxa-regs.h 2008-02-13 13:49:22.000000000 +0000
82@@ -1334,6 +1334,7 @@
83 #define GPIO85_nPCE_1 85 /* Card Enable for Card Space (PXA27x) */
84 #define GPIO92_MMCDAT0 92 /* MMC DAT0 (PXA27x) */
85 #define GPIO102_nPCE_1 102 /* PCMCIA (PXA27x) */
86+#define GPIO104_pSKTSEL 104 /* PCMCIA Socket Select (PXA27x) */
87 #define GPIO109_MMCDAT1 109 /* MMC DAT1 (PXA27x) */
88 #define GPIO110_MMCDAT2 110 /* MMC DAT2 (PXA27x) */
89 #define GPIO110_MMCCS0 110 /* MMC Chip Select 0 (PXA27x) */
90Index: linux-2.6.24/include/asm-arm/arch-pxa/spitz.h
91===================================================================
92--- linux-2.6.24.orig/include/asm-arm/arch-pxa/spitz.h 2008-02-13 13:49:01.000000000 +0000
93+++ linux-2.6.24/include/asm-arm/arch-pxa/spitz.h 2008-02-13 13:49:22.000000000 +0000
94@@ -1,8 +1,9 @@
95 /*
96- * Hardware specific definitions for SL-Cx000 series of PDAs
97+ * Hardware specific definitions for SL-Cxx00 series of PDAs
98 *
99 * Copyright (c) 2005 Alexander Wykes
100 * Copyright (c) 2005 Richard Purdie
101+ * Copyright (c) 2008 Stanislav Brabec
102 *
103 * Based on Sharp's 2.4 kernel patches
104 *
105@@ -13,140 +14,257 @@
106 */
107 #ifndef __ASM_ARCH_SPITZ_H
108 #define __ASM_ARCH_SPITZ_H 1
109-#endif
110
111-#include <linux/fb.h>
112+#include <asm-arm/arch-pxa/irqs.h>
113+#include <linux/platform_device.h>
114
115 /* Spitz/Akita GPIOs */
116
117-#define SPITZ_GPIO_KEY_INT (0) /* Key Interrupt */
118-#define SPITZ_GPIO_RESET (1)
119-#define SPITZ_GPIO_nSD_DETECT (9)
120-#define SPITZ_GPIO_TP_INT (11) /* Touch Panel interrupt */
121-#define SPITZ_GPIO_AK_INT (13) /* Remote Control */
122-#define SPITZ_GPIO_ADS7846_CS (14)
123-#define SPITZ_GPIO_SYNC (16)
124-#define SPITZ_GPIO_MAX1111_CS (20)
125-#define SPITZ_GPIO_FATAL_BAT (21)
126-#define SPITZ_GPIO_HSYNC (22)
127-#define SPITZ_GPIO_nSD_CLK (32)
128-#define SPITZ_GPIO_USB_DEVICE (35)
129-#define SPITZ_GPIO_USB_HOST (37)
130-#define SPITZ_GPIO_USB_CONNECT (41)
131-#define SPITZ_GPIO_LCDCON_CS (53)
132-#define SPITZ_GPIO_nPCE (54)
133-#define SPITZ_GPIO_nSD_WP (81)
134-#define SPITZ_GPIO_ON_RESET (89)
135-#define SPITZ_GPIO_BAT_COVER (90)
136-#define SPITZ_GPIO_CF_CD (94)
137-#define SPITZ_GPIO_ON_KEY (95)
138-#define SPITZ_GPIO_SWA (97)
139-#define SPITZ_GPIO_SWB (96)
140-#define SPITZ_GPIO_CHRG_FULL (101)
141-#define SPITZ_GPIO_CO (101)
142-#define SPITZ_GPIO_CF_IRQ (105)
143-#define SPITZ_GPIO_AC_IN (115)
144-#define SPITZ_GPIO_HP_IN (116)
145+/* This list refers to all GPIO pins either in defines or in comments.
146+ *
147+ * GPIO pins not listed:
148+ * GPIO2 SYS_EN: System Power Enable
149+ * GPIO5-GPIO8 PWR_CAP0-PWR_CAP3: sleep DC-DC converter power capacitors
150+ * GPIO40 not connected
151+ */
152
153-/* Spitz Only GPIOs */
154
155-#define SPITZ_GPIO_CF2_IRQ (106) /* CF slot1 Ready */
156-#define SPITZ_GPIO_CF2_CD (93)
157+/* Spitz/Akita System GPIO */
158+
159+#define SPITZ_GPIO_KEY_INT (0) /* Key Interrupt */
160+#define SPITZ_GPIO_SYNC (16) /* IOPORT Wake Up (input) */
161+#define SPITZ_GPIO_NAND_CS (79) /* NAND Flash Chip Select */
162+#define SPITZ_GPIO_NC_10 (10) /* Not Connected (but used in kernel) */
163+/* This GPIO pin is connected:
164+ * GPIO1_RST
165+ */
166
167
168+/* Compact Flash Interface */
169+
170+/* Spitz/Akita Compact Flash Interface */
171+#define SPITZ_GPIO_CF_CD (94) /* CF IRQ */
172+#define SPITZ_GPIO_CF_IRQ (105) /* CF Ready */
173+/* These GPIO pins are connected:
174+ * GPIO48_nPOE
175+ * GPIO49_nPWE
176+ * GPIO50_nPIOR
177+ * GPIO51_nPIOW
178+ * GPIO54_nPCE_2
179+ * GPIO55_nPREG
180+ * GPIO56_nPWAIT
181+ * GPIO57_nIOIS16
182+ * GPIO80_nCS_4
183+ * GPIO85_nPCE_1
184+ * GPIO104_pSKTSEL
185+ */
186+
187+/* Spitz only Compact Flash Interface */
188+#define SPITZ_GPIO_CF2_CD (93) /* CF slot1 IRQ */
189+#define SPITZ_GPIO_CF2_IRQ (106) /* CF slot1 Ready */
190+/* This GPIO pin is connected:
191+ * GPIO78_nCS_2
192+ */
193+
194+
195+/* Spitz/Akita Battery, Power and Service Connector */
196+
197+#define SPITZ_GPIO_FATAL_BAT (21) /* Fatal Battery */
198+#define SPITZ_GPIO_BAT_COVER (90) /* Battery Cover switch */
199+#define SPITZ_GPIO_BAT_COVER2 (15) /* Battery Cover switch, parallel pin */
200+#define SPITZ_GPIO_CHRG_FULL (101) /* Battery Full */
201+#define SPITZ_GPIO_AC_IN (115) /* External Power Supply is active */
202+#define SPITZ_GPIO_ON_RESET (89) /* Software Reset */
203+#define SPITZ_GPIO_SERVICE0 (83) /* Service Connector */
204+#define SPITZ_GPIO_SERVICE1 (84) /* Service Connector */
205+/* This GPIO pin is connected:
206+ * GPIO18_RDY
207+ */
208+
209+
210+/* Spitz/Akita Display Controller */
211+
212+#define SPITZ_GPIO_HSYNC (22) /* Line Sync Feedback */
213+/* These GPIO pins are connected:
214+ * GPIO58_LDD_0-GPIO58_LDD_15
215+ * GPIO74_LCD_FCLK
216+ * GPIO75_LCD_LCLK
217+ * GPIO76_LCD_PCLK
218+ * GPIO77_LCD_ACBIAS
219+ */
220+
221+
222+/* Spitz/Akita SSP/SPI Bus and Devices */
223+
224+#define SPITZ_GPIO_SSP_CLK (19) /* SSP bus Clock */
225+#define SPITZ_GPIO_SSP_RXD (86) /* SSP bus RxD */
226+#define SPITZ_GPIO_SSP_TXD (87) /* SSP bus TxD */
227+#define SPITZ_GPIO_TP_INT (11) /* Touch Panel IRQ */
228+#define SPITZ_GPIO_ADS7846_CS (14) /* Touch Panel Controller Chip Select */
229+#define SPITZ_GPIO_MAX1111_CS (20) /* Multi Channel ADC Chip Select */
230+#define SPITZ_GPIO_LCDCON_CS (53) /* LCD Controller Chip Select */
231+
232+
233+/* Spitz/Akita Supplementary USB OTG Pins */
234+
235+#define SPITZ_GPIO_USB_DEVICE (35) /* USB Client power is present */
236+#define SPITZ_GPIO_USB_HOST (37) /* USB OTG 5V Host power supply control */
237+#define SPITZ_GPIO_USB_CONNECT (41) /* USB Host Cable is connected */
238+
239+
240+/* Spitz/Akita Audio */
241+
242+#define SPITZ_GPIO_HP_IN (116) /* CPU Headphone detect */
243+#define SPITZ_GPIO_AK_INT (13) /* Remote Control detect */
244+/* These GPIO AC97 pins are connected:
245+ * GPIO28_BITCLK
246+ * GPIO29_SDATA_IN
247+ * GPIO30_SDATA_OUT
248+ * GPIO31_SYNC
249+ * GPIO113_AC97_RESET_N
250+ */
251+
252+
253+/* Spitz/Akita SD Slot */
254+
255+#define SPITZ_GPIO_nSD_DETECT (9) /* SD Card Presence */
256+#define SPITZ_GPIO_nSD_WP (81) /* SD Write Protection */
257+/* These GPIO pins are connected:
258+ * GPIO32_MMCCLK
259+ * GPIO92_MMCDAT0
260+ * GPIO109_MMCDAT1
261+ * GPIO110_MMCDAT2
262+ * GPIO111_MMCDAT3
263+ * GPIO112_MMCCMD
264+ */
265+
266+/* Spitz/Akita I2C bus */
267+#define SPITZ_GPIO_SCL (117) /* I2C SCL */
268+#define SPITZ_GPIO_SDA (118) /* I2C SDA */
269+#define SPITZ_GPIO_PWR_SCL (3) /* I2C SCL power */
270+#define SPITZ_GPIO_PWR_SDA (4) /* I2C SDA power */
271+
272+/* audio codec pins */
273+
274+
275+/* Spitz/Akita UART ports */
276+
277+/* Fully Featured UART - connected to IOPORT connector */
278+#define SPITZ_GPIO_FFRXD (102) /* IOPORT has nRXD inverted levels */
279+#define SPITZ_GPIO_FFTXD (99) /* IOPORT has nTXD inverted levels */
280+#define SPITZ_GPIO_FFRTS (98)
281+#define SPITZ_GPIO_FFCTS (100)
282+#define SPITZ_GPIO_FFDTR (82)
283+#define SPITZ_GPIO_FFDSR (33)
284+
285+/* These UART GPIO pins are connected to Bluetooth
286+ * (only on Akita version with Bluetooth)
287+ * GPIO42_BTRXD
288+ * GPIO43_BTTXD
289+ * GPIO44_BTCTS
290+ * GPIO45_BTRTS
291+ */
292+
293+/* These UART GPIO pins are connected to IrDA:
294+ * GPIO46_STRXD
295+ * GPIO47_STTXD
296+ */
297+
298 /* Spitz/Akita Keyboard Definitions */
299
300-#define SPITZ_KEY_STROBE_NUM (11)
301-#define SPITZ_KEY_SENSE_NUM (7)
302-#define SPITZ_GPIO_G0_STROBE_BIT 0x0f800000
303-#define SPITZ_GPIO_G1_STROBE_BIT 0x00100000
304-#define SPITZ_GPIO_G2_STROBE_BIT 0x01000000
305-#define SPITZ_GPIO_G3_STROBE_BIT 0x00041880
306-#define SPITZ_GPIO_G0_SENSE_BIT 0x00021000
307-#define SPITZ_GPIO_G1_SENSE_BIT 0x000000d4
308-#define SPITZ_GPIO_G2_SENSE_BIT 0x08000000
309-#define SPITZ_GPIO_G3_SENSE_BIT 0x00000000
310-
311-#define SPITZ_GPIO_KEY_STROBE0 88
312-#define SPITZ_GPIO_KEY_STROBE1 23
313-#define SPITZ_GPIO_KEY_STROBE2 24
314-#define SPITZ_GPIO_KEY_STROBE3 25
315-#define SPITZ_GPIO_KEY_STROBE4 26
316-#define SPITZ_GPIO_KEY_STROBE5 27
317-#define SPITZ_GPIO_KEY_STROBE6 52
318-#define SPITZ_GPIO_KEY_STROBE7 103
319-#define SPITZ_GPIO_KEY_STROBE8 107
320-#define SPITZ_GPIO_KEY_STROBE9 108
321-#define SPITZ_GPIO_KEY_STROBE10 114
322-
323-#define SPITZ_GPIO_KEY_SENSE0 12
324-#define SPITZ_GPIO_KEY_SENSE1 17
325-#define SPITZ_GPIO_KEY_SENSE2 91
326-#define SPITZ_GPIO_KEY_SENSE3 34
327-#define SPITZ_GPIO_KEY_SENSE4 36
328-#define SPITZ_GPIO_KEY_SENSE5 38
329-#define SPITZ_GPIO_KEY_SENSE6 39
330+#define SPITZ_KEY_STROBE_NUM (11)
331+#define SPITZ_KEY_SENSE_NUM (7)
332+#define SPITZ_GPIO_G0_STROBE_BIT 0x0f800000
333+#define SPITZ_GPIO_G1_STROBE_BIT 0x00100000
334+#define SPITZ_GPIO_G2_STROBE_BIT 0x01000000
335+#define SPITZ_GPIO_G3_STROBE_BIT 0x00041880
336+#define SPITZ_GPIO_G0_SENSE_BIT 0x00021000
337+#define SPITZ_GPIO_G1_SENSE_BIT 0x000000d4
338+#define SPITZ_GPIO_G2_SENSE_BIT 0x08000000
339+#define SPITZ_GPIO_G3_SENSE_BIT 0x00000000
340+#define SPITZ_GPIO_KEY_STROBE0 (88)
341+#define SPITZ_GPIO_KEY_STROBE1 (23)
342+#define SPITZ_GPIO_KEY_STROBE2 (24)
343+#define SPITZ_GPIO_KEY_STROBE3 (25)
344+#define SPITZ_GPIO_KEY_STROBE4 (26)
345+#define SPITZ_GPIO_KEY_STROBE5 (27)
346+#define SPITZ_GPIO_KEY_STROBE6 (52)
347+#define SPITZ_GPIO_KEY_STROBE7 (103)
348+#define SPITZ_GPIO_KEY_STROBE8 (107)
349+#define SPITZ_GPIO_KEY_STROBE9 (108)
350+#define SPITZ_GPIO_KEY_STROBE10 (114)
351+#define SPITZ_GPIO_KEY_SENSE0 (12)
352+#define SPITZ_GPIO_KEY_SENSE1 (17)
353+#define SPITZ_GPIO_KEY_SENSE2 (91)
354+#define SPITZ_GPIO_KEY_SENSE3 (34)
355+#define SPITZ_GPIO_KEY_SENSE4 (36)
356+#define SPITZ_GPIO_KEY_SENSE5 (38)
357+#define SPITZ_GPIO_KEY_SENSE6 (39)
358+
359+#define SPITZ_GPIO_SWA (97) /* Keyboard Interrupt A */
360+#define SPITZ_GPIO_SWB (96) /* Keyboard Interrupt B */
361+#define SPITZ_GPIO_ON_KEY (95) /* Power On Key */
362
363
364-/* Spitz Scoop Device (No. 1) GPIOs */
365+/* Spitz/Akita Scoop Device (No. 1) GPIOs */
366 /* Suspend States in comments */
367-#define SPITZ_SCP_LED_GREEN SCOOP_GPCR_PA11 /* Keep */
368-#define SPITZ_SCP_JK_B SCOOP_GPCR_PA12 /* Keep */
369-#define SPITZ_SCP_CHRG_ON SCOOP_GPCR_PA13 /* Keep */
370-#define SPITZ_SCP_MUTE_L SCOOP_GPCR_PA14 /* Low */
371-#define SPITZ_SCP_MUTE_R SCOOP_GPCR_PA15 /* Low */
372-#define SPITZ_SCP_CF_POWER SCOOP_GPCR_PA16 /* Keep */
373-#define SPITZ_SCP_LED_ORANGE SCOOP_GPCR_PA17 /* Keep */
374-#define SPITZ_SCP_JK_A SCOOP_GPCR_PA18 /* Low */
375-#define SPITZ_SCP_ADC_TEMP_ON SCOOP_GPCR_PA19 /* Low */
376+#define SPITZ_SCP_LED_GREEN SCOOP_GPCR_PA11 /* Green LED, Keep */
377+#define SPITZ_SCP_JK_B SCOOP_GPCR_PA12 /* Fast Charge On, Keep */
378+#define SPITZ_SCP_CHRG_ON SCOOP_GPCR_PA13 /* Charge On, Keep */
379+#define SPITZ_SCP_MUTE_L SCOOP_GPCR_PA14 /* Extra Mute Left, Low */
380+#define SPITZ_SCP_MUTE_R SCOOP_GPCR_PA15 /* Extra Mute Right, Low */
381+#define SPITZ_SCP_CF_POWER SCOOP_GPCR_PA16 /* CF+SD Power Circuit, Keep */
382+#define SPITZ_SCP_LED_ORANGE SCOOP_GPCR_PA17 /* Orange LED, Keep */
383+#define SPITZ_SCP_JK_A SCOOP_GPCR_PA18 /* Dummy Load, Low */
384+#define SPITZ_SCP_ADC_TEMP_ON SCOOP_GPCR_PA19 /* Battery Sensor On, Low */
385
386 #define SPITZ_SCP_IO_DIR (SPITZ_SCP_LED_GREEN | SPITZ_SCP_JK_B | SPITZ_SCP_CHRG_ON | \
387- SPITZ_SCP_MUTE_L | SPITZ_SCP_MUTE_R | SPITZ_SCP_LED_ORANGE | \
388- SPITZ_SCP_CF_POWER | SPITZ_SCP_JK_A | SPITZ_SCP_ADC_TEMP_ON)
389+ SPITZ_SCP_MUTE_L | SPITZ_SCP_MUTE_R | SPITZ_SCP_LED_ORANGE | \
390+ SPITZ_SCP_CF_POWER | SPITZ_SCP_JK_A | SPITZ_SCP_ADC_TEMP_ON)
391 #define SPITZ_SCP_IO_OUT (SPITZ_SCP_CHRG_ON | SPITZ_SCP_MUTE_L | SPITZ_SCP_MUTE_R)
392 #define SPITZ_SCP_SUS_CLR (SPITZ_SCP_MUTE_L | SPITZ_SCP_MUTE_R | SPITZ_SCP_JK_A | SPITZ_SCP_ADC_TEMP_ON)
393 #define SPITZ_SCP_SUS_SET 0
394
395 /* Spitz Scoop Device (No. 2) GPIOs */
396-/* Suspend States in comments */
397-#define SPITZ_SCP2_IR_ON SCOOP_GPCR_PA11 /* High */
398-#define SPITZ_SCP2_AKIN_PULLUP SCOOP_GPCR_PA12 /* Keep */
399-#define SPITZ_SCP2_RESERVED_1 SCOOP_GPCR_PA13 /* High */
400-#define SPITZ_SCP2_RESERVED_2 SCOOP_GPCR_PA14 /* Low */
401-#define SPITZ_SCP2_RESERVED_3 SCOOP_GPCR_PA15 /* Low */
402-#define SPITZ_SCP2_RESERVED_4 SCOOP_GPCR_PA16 /* Low */
403-#define SPITZ_SCP2_BACKLIGHT_CONT SCOOP_GPCR_PA17 /* Low */
404-#define SPITZ_SCP2_BACKLIGHT_ON SCOOP_GPCR_PA18 /* Low */
405-#define SPITZ_SCP2_MIC_BIAS SCOOP_GPCR_PA19 /* Low */
406+/* Suspend States in comments
407+ * Spitz only, Akita uses corresponding AKITA_IOEXP_ */
408+#define SPITZ_SCP2_IR_ON SCOOP_GPCR_PA11 /* IrDA On, High */
409+#define SPITZ_SCP2_AKIN_PULLUP SCOOP_GPCR_PA12 /* Pull-Up for Remote, Keep */
410+#define SPITZ_SCP2_RESERVED_1 SCOOP_GPCR_PA13 /* High */
411+#define SPITZ_SCP2_RESERVED_2 SCOOP_GPCR_PA14 /* Low */
412+#define SPITZ_SCP2_RESERVED_3 SCOOP_GPCR_PA15 /* Low */
413+#define SPITZ_SCP2_RESERVED_4 SCOOP_GPCR_PA16 /* Low */
414+#define SPITZ_SCP2_BACKLIGHT_CONT SCOOP_GPCR_PA17 /* Backlight Control, Low */
415+#define SPITZ_SCP2_BACKLIGHT_ON SCOOP_GPCR_PA18 /* Backlight On, Low */
416+#define SPITZ_SCP2_MIC_BIAS SCOOP_GPCR_PA19 /* Mic Bias On, Low */
417
418 #define SPITZ_SCP2_IO_DIR (SPITZ_SCP2_IR_ON | SPITZ_SCP2_AKIN_PULLUP | SPITZ_SCP2_RESERVED_1 | \
419- SPITZ_SCP2_RESERVED_2 | SPITZ_SCP2_RESERVED_3 | SPITZ_SCP2_RESERVED_4 | \
420- SPITZ_SCP2_BACKLIGHT_CONT | SPITZ_SCP2_BACKLIGHT_ON | SPITZ_SCP2_MIC_BIAS)
421+ SPITZ_SCP2_RESERVED_2 | SPITZ_SCP2_RESERVED_3 | SPITZ_SCP2_RESERVED_4 | \
422+ SPITZ_SCP2_BACKLIGHT_CONT | SPITZ_SCP2_BACKLIGHT_ON | SPITZ_SCP2_MIC_BIAS)
423
424 #define SPITZ_SCP2_IO_OUT (SPITZ_SCP2_IR_ON | SPITZ_SCP2_AKIN_PULLUP | SPITZ_SCP2_RESERVED_1)
425 #define SPITZ_SCP2_SUS_CLR (SPITZ_SCP2_RESERVED_2 | SPITZ_SCP2_RESERVED_3 | SPITZ_SCP2_RESERVED_4 | \
426- SPITZ_SCP2_BACKLIGHT_CONT | SPITZ_SCP2_BACKLIGHT_ON | SPITZ_SCP2_MIC_BIAS)
427+ SPITZ_SCP2_BACKLIGHT_CONT | SPITZ_SCP2_BACKLIGHT_ON | SPITZ_SCP2_MIC_BIAS)
428 #define SPITZ_SCP2_SUS_SET (SPITZ_SCP2_IR_ON | SPITZ_SCP2_RESERVED_1)
429
430
431-/* Spitz IRQ Definitions */
432+/* Spitz/Akita IRQ Definitions */
433
434-#define SPITZ_IRQ_GPIO_KEY_INT IRQ_GPIO(SPITZ_GPIO_KEY_INT)
435-#define SPITZ_IRQ_GPIO_AC_IN IRQ_GPIO(SPITZ_GPIO_AC_IN)
436-#define SPITZ_IRQ_GPIO_AK_INT IRQ_GPIO(SPITZ_GPIO_AK_INT)
437-#define SPITZ_IRQ_GPIO_HP_IN IRQ_GPIO(SPITZ_GPIO_HP_IN)
438-#define SPITZ_IRQ_GPIO_TP_INT IRQ_GPIO(SPITZ_GPIO_TP_INT)
439-#define SPITZ_IRQ_GPIO_SYNC IRQ_GPIO(SPITZ_GPIO_SYNC)
440-#define SPITZ_IRQ_GPIO_ON_KEY IRQ_GPIO(SPITZ_GPIO_ON_KEY)
441-#define SPITZ_IRQ_GPIO_SWA IRQ_GPIO(SPITZ_GPIO_SWA)
442-#define SPITZ_IRQ_GPIO_SWB IRQ_GPIO(SPITZ_GPIO_SWB)
443+#define SPITZ_IRQ_GPIO_KEY_INT IRQ_GPIO(SPITZ_GPIO_KEY_INT)
444+#define SPITZ_IRQ_GPIO_AC_IN IRQ_GPIO(SPITZ_GPIO_AC_IN)
445+#define SPITZ_IRQ_GPIO_AK_INT IRQ_GPIO(SPITZ_GPIO_AK_INT)
446+#define SPITZ_IRQ_GPIO_HP_IN IRQ_GPIO(SPITZ_GPIO_HP_IN)
447+#define SPITZ_IRQ_GPIO_TP_INT IRQ_GPIO(SPITZ_GPIO_TP_INT)
448+#define SPITZ_IRQ_GPIO_SYNC IRQ_GPIO(SPITZ_GPIO_SYNC)
449+#define SPITZ_IRQ_GPIO_ON_KEY IRQ_GPIO(SPITZ_GPIO_ON_KEY)
450+#define SPITZ_IRQ_GPIO_SWA IRQ_GPIO(SPITZ_GPIO_SWA)
451+#define SPITZ_IRQ_GPIO_SWB IRQ_GPIO(SPITZ_GPIO_SWB)
452 #define SPITZ_IRQ_GPIO_BAT_COVER IRQ_GPIO(SPITZ_GPIO_BAT_COVER)
453 #define SPITZ_IRQ_GPIO_FATAL_BAT IRQ_GPIO(SPITZ_GPIO_FATAL_BAT)
454-#define SPITZ_IRQ_GPIO_CO IRQ_GPIO(SPITZ_GPIO_CO)
455-#define SPITZ_IRQ_GPIO_CF_IRQ IRQ_GPIO(SPITZ_GPIO_CF_IRQ)
456-#define SPITZ_IRQ_GPIO_CF_CD IRQ_GPIO(SPITZ_GPIO_CF_CD)
457-#define SPITZ_IRQ_GPIO_CF2_IRQ IRQ_GPIO(SPITZ_GPIO_CF2_IRQ)
458-#define SPITZ_IRQ_GPIO_nSD_INT IRQ_GPIO(SPITZ_GPIO_nSD_INT)
459+#define SPITZ_IRQ_GPIO_CF_IRQ IRQ_GPIO(SPITZ_GPIO_CF_IRQ)
460+#define SPITZ_IRQ_GPIO_CF_CD IRQ_GPIO(SPITZ_GPIO_CF_CD)
461+#define SPITZ_IRQ_GPIO_CF2_IRQ IRQ_GPIO(SPITZ_GPIO_CF2_IRQ)
462+#define SPITZ_IRQ_GPIO_nSD_INT IRQ_GPIO(SPITZ_GPIO_nSD_INT)
463 #define SPITZ_IRQ_GPIO_nSD_DETECT IRQ_GPIO(SPITZ_GPIO_nSD_DETECT)
464
465 /*
466@@ -156,3 +274,5 @@
467 extern struct platform_device spitzscoop2_device;
468 extern struct platform_device spitzssp_device;
469 extern struct sharpsl_charger_machinfo spitz_pm_machinfo;
470+
471+#endif
472Index: linux-2.6.24/sound/arm/pxa2xx-ac97.c
473===================================================================
474--- linux-2.6.24.orig/sound/arm/pxa2xx-ac97.c 2008-01-24 22:58:37.000000000 +0000
475+++ linux-2.6.24/sound/arm/pxa2xx-ac97.c 2008-02-13 13:49:22.000000000 +0000
476@@ -133,10 +133,10 @@
477 #ifdef CONFIG_PXA27x
478 /* warm reset broken on Bulverde,
479 so manually keep AC97 reset high */
480- pxa_gpio_mode(113 | GPIO_OUT | GPIO_DFLT_HIGH);
481+ pxa_gpio_mode(GPIO113_AC97_RESET_N | GPIO_OUT | GPIO_DFLT_HIGH);
482 udelay(10);
483 GCR |= GCR_WARM_RST;
484- pxa_gpio_mode(113 | GPIO_ALT_FN_2_OUT);
485+ pxa_gpio_mode(GPIO113_AC97_RESET_N_MD);
486 udelay(500);
487 #else
488 GCR |= GCR_WARM_RST|GCR_PRIRDY_IEN|GCR_SECRDY_IEN;
489@@ -335,7 +335,7 @@
490 pxa_gpio_mode(GPIO29_SDATA_IN_AC97_MD);
491 #ifdef CONFIG_PXA27x
492 /* Use GPIO 113 as AC97 Reset on Bulverde */
493- pxa_gpio_mode(113 | GPIO_ALT_FN_2_OUT);
494+ pxa_gpio_mode(GPIO113_AC97_RESET_N_MD);
495 #endif
496 pxa_set_cken(CKEN_AC97, 1);
497