summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Purdie <rpurdie@rpsys.net>2008-01-20 16:50:27 +0000
committerRichard Purdie <rpurdie@rpsys.net>2008-01-20 16:50:27 +0000
commitea0f8eff02bbb753d95f0eb17eef422864c8cee5 (patch)
tree337f37681e3a97b3dfb8168f19533528fcda73b9
parenta7d62d2e454c0ef4b398cbc3e32577aa46ea99b8 (diff)
linux-rp-2.6.23+2.6.24-rc6: Update to 2.6.23+2.6.24-rc8 and cleanup patches
-rw-r--r--packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/hx2750_base-r31.patch1094
-rw-r--r--packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/mmcsd_no_scr_check-r2.patch29
-rw-r--r--packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/pda-power.patch3373
-rw-r--r--packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/pxa27x_overlay-r8.patch2427
-rw-r--r--packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/squashfs3.0-2.6.15.patch4189
-rw-r--r--packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/squashfs3.2-2.6.20-r0.patch4376
-rw-r--r--packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/uvesafb-0.1-rc3-2.6.22.patch2590
-rw-r--r--packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/vt_ioctl_race.patch46
-rw-r--r--packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/w100fb-unused-var.patch17
-rw-r--r--packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/wm97xx-lcdnoise-r0.patch208
-rw-r--r--packages/linux/linux-rp-2.6.23+2.6.24-rc8/.mtn2git_empty (renamed from packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/.mtn2git_empty)0
-rw-r--r--packages/linux/linux-rp-2.6.23+2.6.24-rc8/arm_pxa_20070923.patch (renamed from packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/arm_pxa_20070923.patch)0
-rw-r--r--packages/linux/linux-rp-2.6.23+2.6.24-rc8/binutils-buildid-arm.patch (renamed from packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/binutils-buildid-arm.patch)0
-rw-r--r--packages/linux/linux-rp-2.6.23+2.6.24-rc8/connectplus-remove-ide-HACK.patch (renamed from packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/connectplus-remove-ide-HACK.patch)0
-rw-r--r--packages/linux/linux-rp-2.6.23+2.6.24-rc8/defconfig-akita (renamed from packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/defconfig-akita)0
-rw-r--r--packages/linux/linux-rp-2.6.23+2.6.24-rc8/defconfig-bootcdx86 (renamed from packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/defconfig-bootcdx86)0
-rw-r--r--packages/linux/linux-rp-2.6.23+2.6.24-rc8/defconfig-c7x0 (renamed from packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/defconfig-c7x0)0
-rw-r--r--packages/linux/linux-rp-2.6.23+2.6.24-rc8/defconfig-collie (renamed from packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/defconfig-collie)0
-rw-r--r--packages/linux/linux-rp-2.6.23+2.6.24-rc8/defconfig-htcuniversal (renamed from packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/defconfig-htcuniversal)0
-rw-r--r--packages/linux/linux-rp-2.6.23+2.6.24-rc8/defconfig-hx2000 (renamed from packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/defconfig-hx2000)0
-rw-r--r--packages/linux/linux-rp-2.6.23+2.6.24-rc8/defconfig-poodle (renamed from packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/defconfig-poodle)0
-rw-r--r--packages/linux/linux-rp-2.6.23+2.6.24-rc8/defconfig-qemuarm (renamed from packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/defconfig-qemuarm)0
-rw-r--r--packages/linux/linux-rp-2.6.23+2.6.24-rc8/defconfig-qemux86 (renamed from packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/defconfig-qemux86)0
-rw-r--r--packages/linux/linux-rp-2.6.23+2.6.24-rc8/defconfig-spitz (renamed from packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/defconfig-spitz)0
-rw-r--r--packages/linux/linux-rp-2.6.23+2.6.24-rc8/defconfig-tosa (renamed from packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/defconfig-tosa)0
-rw-r--r--packages/linux/linux-rp-2.6.23+2.6.24-rc8/defconfig-zylonite (renamed from packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/defconfig-zylonite)0
-rw-r--r--packages/linux/linux-rp-2.6.23+2.6.24-rc8/hostap-monitor-mode.patch (renamed from packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/hostap-monitor-mode.patch)0
-rw-r--r--packages/linux/linux-rp-2.6.23+2.6.24-rc8/htcuni-acx.patch (renamed from packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/htcuni-acx.patch)0
-rw-r--r--packages/linux/linux-rp-2.6.23+2.6.24-rc8/htcuni.patch (renamed from packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/htcuni.patch)0
-rw-r--r--packages/linux/linux-rp-2.6.23+2.6.24-rc8/pxa-serial-hack.patch (renamed from packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/pxa-serial-hack.patch)0
-rw-r--r--packages/linux/linux-rp-2.6.23+2.6.24-rc8/pxa_fb_overlay.patch (renamed from packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/pxa_fb_overlay.patch)0
-rw-r--r--packages/linux/linux-rp-2.6.23+2.6.24-rc8/serial-add-support-for-non-standard-xtals-to-16c950-driver.patch (renamed from packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/serial-add-support-for-non-standard-xtals-to-16c950-driver.patch)0
-rw-r--r--packages/linux/linux-rp-2.6.23+2.6.24-rc8/versatile-armv6.patch (renamed from packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/versatile-armv6.patch)0
-rw-r--r--packages/linux/linux-rp-2.6.23+2.6.24-rc8/zylonite-boot.patch (renamed from packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/zylonite-boot.patch)0
-rw-r--r--packages/linux/linux-rp_2.6.23+2.6.24-rc8.bb (renamed from packages/linux/linux-rp_2.6.23+2.6.24-rc6+git.bb)69
35 files changed, 40 insertions, 18378 deletions
diff --git a/packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/hx2750_base-r31.patch b/packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/hx2750_base-r31.patch
deleted file mode 100644
index 5d58bcf55d..0000000000
--- a/packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/hx2750_base-r31.patch
+++ /dev/null
@@ -1,1094 +0,0 @@
----
- arch/arm/mach-pxa/Kconfig | 10
- arch/arm/mach-pxa/Makefile | 1
- arch/arm/mach-pxa/hx2750.c | 450 ++++++++++++++++++++++++++++++++++++++
- arch/arm/mach-pxa/hx2750_test.c | 433 ++++++++++++++++++++++++++++++++++++
- arch/arm/mach-pxa/pm.c | 5
- arch/arm/mach-pxa/pxa25x.c | 4
- arch/arm/mach-pxa/pxa27x.c | 4
- include/asm-arm/arch-pxa/hx2750.h | 90 +++++++
- 8 files changed, 995 insertions(+), 2 deletions(-)
-
---- /dev/null
-+++ linux-2.6.24-rc1/include/asm-arm/arch-pxa/hx2750.h
-@@ -0,0 +1,90 @@
-+/*
-+ * Hardware specific definitions for iPAQ hx2750
-+ *
-+ * Copyright 2005 Openedhand Ltd.
-+ *
-+ * Author: Richard Purdie <richard@o-hand.com>
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ *
-+ */
-+#ifndef __ASM_ARCH_HX2750_H
-+#define __ASM_ARCH_HX2750_H 1
-+
-+/*
-+ * HX2750 (Non Standard) GPIO Definitions
-+ */
-+
-+#define HX2750_GPIO_KEYPWR (0) /* Power button */
-+#define HX2750_GPIO_BATTCOVER1 (9) /* Battery Cover Switch */
-+#define HX2750_GPIO_CF_IRQ (11) /* CF IRQ? */
-+#define HX2750_GPIO_USBCONNECT (12) /* USB Connected? */
-+#define HX2750_GPIO_CF_DETECT (13) /* CF Card Detect? */
-+#define HX2750_GPIO_EXTPWR (14) /* External Power Detect */
-+#define HX2750_GPIO_BATLVL (15) /* Battery Level Detect */
-+#define HX2750_GPIO_CF_PWR (17) /* CF Power? */
-+#define HX2750_GPIO_SR_STROBE (18) /* Shift Register Strobe */
-+#define HX2750_GPIO_CHARGE (22) /* Charging Enable (active low) */
-+#define HX2750_GPIO_TSC2101_SS (24) /* TSC2101 SS# */
-+#define HX2750_GPIO_BTPWR (27) /* Bluetooth Power? */
-+#define HX2750_GPIO_BATTCOVER2 (33) /* Battery Cover Switch */
-+#define HX2750_GPIO_SD_DETECT (38) /* MMC Card Detect */
-+#define HX2750_GPIO_SR_CLK1 (52) /* Shift Register Clock */
-+#define HX2750_GPIO_SR_CLK2 (53)
-+#define HX2750_GPIO_CF_WIFIIRQ (54) /* CF Wifi IRQ? */
-+#define HX2750_GPIO_GPIO_DIN (88) /* Shift Register Data */
-+#define HX2750_GPIO_KEYLEFT (90) /* Left button */
-+#define HX2750_GPIO_KEYRIGHT (91) /* Right button */
-+#define HX2750_GPIO_KEYCAL (93) /* Calander button */
-+#define HX2750_GPIO_KEYTASK (94) /* Task button */
-+#define HX2750_GPIO_KEYSIDE (95) /* Side button */
-+#define HX2750_GPIO_KEYENTER (96) /* Enter Button*/
-+#define HX2750_GPIO_KEYCON (97) /* Contacts button */
-+#define HX2750_GPIO_KEYMAIL (98) /* Mail button */
-+#define HX2750_GPIO_BIOPWR (99) /* BIO Reader Power? */
-+#define HX2750_GPIO_KEYUP (100) /* Up button */
-+#define HX2750_GPIO_KEYDOWN (101) /* Down button*/
-+#define HX2750_GPIO_SD_READONLY (103) /* MMC/SD Write Protection */
-+#define HX2750_GPIO_LEDMAIL (106) /* Green Mail LED */
-+#define HX2750_GPIO_HP_JACK (108) /* Head Phone Jack Present */
-+#define HX2750_GPIO_PENDOWN (117) /* Touch Screen Pendown */
-+
-+
-+//#define HX2750_GPIO_ () /* */
-+
-+/*
-+ * HX2750 Interrupts
-+ */
-+#define HX2750_IRQ_GPIO_EXTPWR IRQ_GPIO(HX2750_GPIO_EXTPWR)
-+#define HX2750_IRQ_GPIO_SD_DETECT IRQ_GPIO(HX2750_GPIO_SD_DETECT)
-+#define HX2750_IRQ_GPIO_PENDOWN IRQ_GPIO(HX2750_GPIO_PENDOWN)
-+#define HX2750_IRQ_GPIO_CF_DETECT IRQ_GPIO(HX2750_GPIO_CF_DETECT)
-+#define HX2750_IRQ_GPIO_CF_IRQ IRQ_GPIO(HX2750_GPIO_CF_IRQ)
-+#define HX2750_IRQ_GPIO_CF_WIFIIRQ IRQ_GPIO(HX2750_GPIO_CF_WIFIIRQ)
-+
-+/*
-+ * HX2750 Extra GPIO Definitions
-+ */
-+
-+#define HX2750_EGPIO_WIFI_PWR (1 << 11) /* Wifi power */
-+#define HX2750_EGPIO_LCD_PWR (1 << 10) /* LCD Power */
-+#define HX2750_EGPIO_BL_PWR (1 << 9) /* Backlight LED Power */
-+#define HX2750_EGPIO_8 (1 << 8) /* */
-+#define HX2750_EGPIO_7 (1 << 7) /* */
-+#define HX2750_EGPIO_SD_PWR (1 << 6) /* SD Power */
-+#define HX2750_EGPIO_TSC_PWR (1 << 5) /* TS Power */
-+#define HX2750_EGPIO_CF0_RESET (1 << 4) /* CF0 Reset */
-+#define HX2750_EGPIO_CF1_RESET (1 << 3) /* CF1 Reset */
-+#define HX2750_EGPIO_2 (1 << 2) /* Power/Red LED Related?*/
-+#define HX2750_EGPIO_1 (1 << 1) /* Power/Red LED Related?*/
-+#define HX2750_EGPIO_PWRLED (1 << 0) /* Power/Red LED Related?*/
-+
-+
-+void hx2750_set_egpio(unsigned int gpio);
-+void hx2750_clear_egpio(unsigned int gpio);
-+
-+
-+#endif /* __ASM_ARCH_HX2750_H */
-+
---- linux-2.6.24-rc1.orig/arch/arm/mach-pxa/Makefile
-+++ linux-2.6.24-rc1/arch/arm/mach-pxa/Makefile
-@@ -22,6 +22,7 @@
- obj-$(CONFIG_MACH_POODLE) += poodle.o corgi_ssp.o
- obj-$(CONFIG_MACH_TOSA) += tosa.o
- obj-$(CONFIG_MACH_EM_X270) += em-x270.o
-+obj-$(CONFIG_MACH_HX2750) += hx2750.o hx2750_test.o
-
- ifeq ($(CONFIG_MACH_ZYLONITE),y)
- obj-y += zylonite.o
---- /dev/null
-+++ linux-2.6.24-rc1/arch/arm/mach-pxa/hx2750_test.c
-@@ -0,0 +1,433 @@
-+/*
-+ * HP iPAQ hx2750 Test Development Code
-+ *
-+ * Copyright 2005 Openedhand Ltd.
-+ *
-+ * Author: Richard Purdie <richard@o-hand.com>
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ *
-+ */
-+
-+#include <linux/init.h>
-+#include <linux/kernel.h>
-+#include <linux/ioport.h>
-+#include <linux/device.h>
-+#include <linux/input.h>
-+#include <linux/delay.h>
-+#include <linux/interrupt.h>
-+
-+#include <asm/mach-types.h>
-+#include <asm/hardware.h>
-+#include <asm/mach/arch.h>
-+
-+#include <asm/arch/hx2750.h>
-+#include <asm/arch/pxa-regs.h>
-+
-+
-+static int prodval;
-+
-+/*
-+ * Sysfs functions
-+ */
-+static ssize_t test1_show(struct device *dev, char *buf)
-+{
-+ unsigned long rp;
-+
-+ asm ("mrc p15, 0, %0, cr1, cr0;\n" :"=r"(rp) );
-+ printk("%lx\n",rp);
-+
-+ asm ("mrc p15, 0, %0, cr1, cr1;\n" :"=r"(rp) );
-+ printk("%lx\n",rp);
-+
-+ asm ("mrc p15, 0, %0, cr2, cr0;\n" :"=r"(rp) );
-+ printk("%lx\n",rp);
-+
-+ asm ("mrc p15, 0, %0, cr3, cr0;\n" :"=r"(rp) );
-+ printk("%lx\n",rp);
-+
-+ asm ("mrc p15, 0, %0, cr13, cr0;\n" :"=r"(rp) );
-+ printk("%lx\n",rp);
-+
-+ return sprintf(buf, "%d\n",prodval);
-+}
-+extern void tsc2101_print_miscdata(struct device *dev);
-+extern struct platform_device tsc2101_device;
-+
-+static ssize_t test1_store(struct device *dev, const char *buf, size_t count)
-+{
-+ prodval = simple_strtoul(buf, NULL, 10);
-+
-+ tsc2101_print_miscdata(&tsc2101_device.dev);
-+
-+ return count;
-+}
-+
-+static DEVICE_ATTR(test1, 0644, test1_show, test1_store);
-+
-+static ssize_t test2_show(struct device *dev, char *buf)
-+{
-+ printk(KERN_ERR "SSCR0_P2: %08x\n", SSCR0_P2);
-+ printk(KERN_ERR "SSCR1_P2: %08x\n", SSCR1_P2);
-+ printk(KERN_ERR "SSSR_P2: %08x\n", SSSR_P2);
-+ printk(KERN_ERR "SSITR_P2: %08x\n", SSITR_P2);
-+ printk(KERN_ERR "SSDR_P2: %08x\n", SSDR_P2);
-+ printk(KERN_ERR "SSTO_P2: %08x\n", SSTO_P2);
-+ printk(KERN_ERR "SSPSP_P2: %08x\n", SSPSP_P2);
-+
-+ hx2750_ssp_init2();
-+
-+ printk(KERN_ERR "SSCR0_P2: %08x\n", SSCR0_P2);
-+ printk(KERN_ERR "SSCR1_P2: %08x\n", SSCR1_P2);
-+ printk(KERN_ERR "SSSR_P2: %08x\n", SSSR_P2);
-+ printk(KERN_ERR "SSITR_P2: %08x\n", SSITR_P2);
-+ printk(KERN_ERR "SSDR_P2: %08x\n", SSDR_P2);
-+ printk(KERN_ERR "SSTO_P2: %08x\n", SSTO_P2);
-+ printk(KERN_ERR "SSPSP_P2: %08x\n", SSPSP_P2);
-+
-+ return sprintf(buf, "%d\n",0);
-+}
-+
-+static DEVICE_ATTR(test2, 0444, test2_show, NULL);
-+
-+extern unsigned int hx2750_egpio_current;
-+
-+static ssize_t setegpio_show(struct device *dev, char *buf)
-+{
-+ return sprintf(buf, "%x\n",hx2750_egpio_current);
-+}
-+
-+static ssize_t setegpio_store(struct device *dev, const char *buf, size_t count)
-+{
-+ unsigned int val = simple_strtoul(buf, NULL, 10);
-+
-+ hx2750_set_egpio(1 << val);
-+
-+ return count;
-+}
-+
-+static DEVICE_ATTR(setegpio, 0644, setegpio_show, setegpio_store);
-+
-+static ssize_t clregpio_show(struct device *dev, char *buf)
-+{
-+ return sprintf(buf, "%x\n",hx2750_egpio_current);
-+}
-+
-+static ssize_t gpio_show(struct device *dev, char *buf)
-+{
-+ int i;
-+
-+ printk(KERN_ERR "GPIO# D S A INTER\n");
-+
-+ for (i=0;i<119;i++) {
-+ printk(KERN_ERR " %3d: ",i);
-+ if (GPDR(i) & GPIO_bit(i))
-+ printk("O ");
-+ else
-+ printk("I ");
-+ printk("%d ",(GPLR(i) & GPIO_bit(i)) != 0);
-+ printk("%d ",((GAFR(i) & (0x3 << (((i) & 0xf)*2)))) >> (((i) & 0xf)*2) );
-+ if (GEDR(i) & GPIO_bit(i))
-+ printk("ED ");
-+ if (GRER(i) & GPIO_bit(i))
-+ printk("RE ");
-+ if (GFER(i) & GPIO_bit(i))
-+ printk("FE ");
-+
-+ printk("\n");
-+ }
-+ return sprintf(buf, "EGPIO: %x\n",hx2750_egpio_current);
-+}
-+
-+static ssize_t clregpio_store(struct device *dev, const char *buf, size_t count)
-+{
-+ unsigned int val = simple_strtoul(buf, NULL, 10);
-+
-+ hx2750_clear_egpio(1 << val);
-+
-+ return count;
-+}
-+
-+static DEVICE_ATTR(clregpio, 0644, clregpio_show, clregpio_store);
-+
-+
-+static ssize_t gpioclr_store(struct device *dev, const char *buf, size_t count)
-+{
-+ int prod;
-+ prod = simple_strtoul(buf, NULL, 10);
-+
-+ GPCR(prod) = GPIO_bit(prod);
-+
-+ return count;
-+}
-+
-+static DEVICE_ATTR(gpioclr, 0644, gpio_show, gpioclr_store);
-+
-+static ssize_t gpioset_store(struct device *dev, const char *buf, size_t count)
-+{
-+ int prod;
-+ prod = simple_strtoul(buf, NULL, 10);
-+
-+ GPSR(prod) = GPIO_bit(prod);
-+
-+ return count;
-+}
-+
-+static DEVICE_ATTR(gpioset, 0644, gpio_show, gpioset_store);
-+
-+
-+static ssize_t ssp2read_store(struct device *dev, const char *buf, size_t count)
-+{
-+ unsigned int val = simple_strtoul(buf, NULL, 16);
-+
-+ printk("Read: %08x\n",hx2750_ssp2_read(val));
-+
-+ return count;
-+}
-+
-+static DEVICE_ATTR(ssp2read, 0200, NULL, ssp2read_store);
-+
-+static ssize_t ssp2write_store(struct device *dev, const char *buf, size_t count)
-+{
-+ unsigned int val = simple_strtoul(buf, NULL, 16);
-+
-+ printk("Write: %08x\n",hx2750_ssp2_write(val));
-+
-+ return count;
-+}
-+
-+static DEVICE_ATTR(ssp2write, 0200, NULL, ssp2write_store);
-+
-+
-+static ssize_t sspr_store(struct device *dev, const char *buf, size_t count)
-+{
-+ unsigned long val,ret;
-+ val = simple_strtoul(buf, NULL, 0);
-+
-+ hx2750_tsc2101_send(1<<15,val,&ret,1);
-+
-+ printk("Response: %x\n",ret);
-+
-+ return count;
-+}
-+
-+static DEVICE_ATTR(sspr, 0200, NULL, sspr_store);
-+
-+static ssize_t sspw_store(struct device *dev, const char *buf, size_t count)
-+{
-+ int val,ret;
-+ sscanf(buf, "%lx %lx", &val, &ret);
-+
-+ hx2750_tsc2101_send(0,val,&ret,1);
-+
-+ return count;
-+}
-+
-+static DEVICE_ATTR(sspw, 0200, NULL, sspw_store);
-+
-+
-+extern struct pm_ops pxa_pm_ops;
-+extern void pxa_cpu_resume(void);
-+extern unsigned long pxa_pm_pspr_value;
-+
-+static int (*pxa_pm_enter_orig)(suspend_state_t state);
-+
-+//static struct {
-+// u32 ffier, fflcr, ffmcr, ffspr, ffisr, ffdll, ffdlh;
-+//} sys_ctx;
-+
-+u32 resstruct[20];
-+
-+static int hx2750_pxa_pm_enter(suspend_state_t state)
-+{
-+ int i;
-+ u32 save[10];
-+
-+ PWER = 0xC0000003;// | PWER_RTC;
-+ PFER = 0x00000003;
-+ PRER = 0x00000003;
-+
-+ PGSR0=0x00000018;
-+ PGSR1=0x00000380;
-+ PGSR2=0x00800000;
-+ PGSR3=0x00500400;
-+
-+ //PVCR=0x494; or 0x14;
-+ //PVCR=0x14;
-+ //PCMD0=0x41f;
-+ //i=PISR;
-+ //PICR=0x00000062;
-+
-+ //PCFR=0x457;
-+ //PCFR=0x70; // Does not resume from sleep
-+ PCFR=0x077; // was 0x477
-+ PSLR=0xff100004;
-+
-+ resstruct[0]=0x0000b4e6;
-+ resstruct[1]=0x00000001;
-+ resstruct[2]=virt_to_phys(pxa_cpu_resume);
-+ resstruct[3]=0xffffffff; //value for r0
-+
-+ resstruct[14]=0x00000078; //mcr 15, 0, r0, cr1, cr0, {0}
-+ resstruct[15]=0x00000000; //mcr 15, 0, r0, cr1, cr1, {0} 0xffffffff
-+ resstruct[16]=0xa0000000; //mcr 15, 0, r0, cr2, cr0, {0} 0xa0748000
-+ resstruct[17]=0x00000001; //mcr 15, 0, r0, cr3, cr0, {0} 0x00000015
-+ resstruct[18]=0x00000000; //mcr 15, 0, r0, cr13, cr0, {0} 0x00000000
-+
-+ pxa_pm_pspr_value=virt_to_phys(&resstruct[0]);
-+
-+ hx2750_send_egpio(3);
-+
-+ pxa_gpio_mode(87 | GPIO_OUT | GPIO_DFLT_HIGH);
-+
-+ //sys_ctx.ffier = FFIER;
-+ //sys_ctx.fflcr = FFLCR;
-+ //sys_ctx.ffmcr = FFMCR;
-+ //sys_ctx.ffspr = FFSPR;
-+ //sys_ctx.ffisr = FFISR;
-+ //FFLCR |= 0x80;
-+ //sys_ctx.ffdll = FFDLL;
-+ //sys_ctx.ffdlh = FFDLH;
-+ //FFLCR &= 0xef;
-+
-+ pxa_pm_enter_orig(state);
-+
-+ //FFMCR = sys_ctx.ffmcr;
-+ //FFSPR = sys_ctx.ffspr;
-+ //FFLCR = sys_ctx.fflcr;
-+ //FFLCR |= 0x80;
-+ //FFDLH = sys_ctx.ffdlh;
-+ //FFDLL = sys_ctx.ffdll;
-+ //FFLCR = sys_ctx.fflcr;
-+ //FFISR = sys_ctx.ffisr;
-+ //FFLCR = 0x07;
-+ //FFIER = sys_ctx.ffier;
-+
-+ return 0;
-+}
-+
-+static irqreturn_t hx2750_charge_int(int irq, void *dev_id, struct pt_regs *regs)
-+{
-+ if ((GPLR(HX2750_GPIO_EXTPWR) & GPIO_bit(HX2750_GPIO_EXTPWR)) == 0) {
-+ printk("Charging On\n");
-+ GPCR(HX2750_GPIO_CHARGE);
-+ } else {
-+ printk("Charging Off\n");
-+ GPSR(HX2750_GPIO_CHARGE);
-+ }
-+
-+ return IRQ_HANDLED;
-+}
-+
-+
-+
-+
-+static irqreturn_t hx2750_interrupt(int irq, void *dev_id, struct pt_regs *regs)
-+{
-+ printk("Input %d changed.\n", irq-32);
-+
-+ return IRQ_HANDLED;
-+}
-+
-+
-+static int __init hx2750_test_probe(struct device *dev)
-+{
-+ pxa_gpio_mode(21 | GPIO_OUT | GPIO_DFLT_HIGH);
-+ pxa_gpio_mode(HX2750_GPIO_CHARGE | GPIO_OUT | GPIO_DFLT_HIGH);
-+ pxa_gpio_mode(83 | GPIO_OUT | GPIO_DFLT_HIGH);
-+ pxa_gpio_mode(HX2750_GPIO_BIOPWR | GPIO_OUT | GPIO_DFLT_HIGH);
-+ pxa_gpio_mode(116 | GPIO_OUT | GPIO_DFLT_HIGH);
-+ pxa_gpio_mode(118 | GPIO_OUT | GPIO_DFLT_HIGH);
-+
-+
-+ //pxa_gpio_mode(HX2750_GPIO_CF_PWR | GPIO_OUT | GPIO_DFLT_LOW);
-+ pxa_gpio_mode(HX2750_GPIO_CF_PWR | GPIO_OUT | GPIO_DFLT_HIGH);
-+ pxa_gpio_mode(HX2750_GPIO_BTPWR | GPIO_OUT | GPIO_DFLT_LOW);
-+ pxa_gpio_mode(79 | GPIO_OUT | GPIO_DFLT_LOW);
-+ pxa_gpio_mode(85 | GPIO_OUT | GPIO_DFLT_LOW);
-+ pxa_gpio_mode(HX2750_GPIO_LEDMAIL | GPIO_OUT | GPIO_DFLT_LOW);
-+ pxa_gpio_mode(107 | GPIO_OUT | GPIO_DFLT_LOW);
-+ pxa_gpio_mode(114 | GPIO_OUT | GPIO_DFLT_LOW);
-+
-+ pxa_gpio_mode(HX2750_GPIO_BATTCOVER1 | GPIO_IN);
-+ pxa_gpio_mode(HX2750_GPIO_BATTCOVER2 | GPIO_IN);
-+ pxa_gpio_mode(HX2750_GPIO_CF_IRQ | GPIO_IN);
-+ pxa_gpio_mode(HX2750_GPIO_USBCONNECT | GPIO_IN);
-+ pxa_gpio_mode(HX2750_GPIO_CF_DETECT | GPIO_IN);
-+ pxa_gpio_mode(HX2750_GPIO_EXTPWR | GPIO_IN);
-+
-+ pxa_gpio_mode(HX2750_GPIO_BATLVL | GPIO_IN);
-+ //pxa_gpio_mode(HX2750_GPIO_CF_WIFIIRQ | GPIO_IN);
-+ pxa_gpio_mode(80 | GPIO_IN);
-+ pxa_gpio_mode(HX2750_GPIO_HP_JACK | GPIO_IN);
-+ pxa_gpio_mode(115 | GPIO_IN);
-+ pxa_gpio_mode(119 | GPIO_IN);
-+
-+ request_irq(IRQ_GPIO(HX2750_GPIO_BATLVL), hx2750_interrupt, SA_INTERRUPT, "hx2750test", NULL);
-+ //request_irq(IRQ_GPIO(HX2750_GPIO_CF_WIFIIRQ), hx2750_interrupt, SA_INTERRUPT, "hx2750test", NULL);
-+ request_irq(IRQ_GPIO(80), hx2750_interrupt, SA_INTERRUPT, "hx2750test", NULL);
-+ request_irq(IRQ_GPIO(115), hx2750_interrupt, SA_INTERRUPT, "hx2750test", NULL);
-+ request_irq(IRQ_GPIO(119), hx2750_interrupt, SA_INTERRUPT, "hx2750test", NULL);
-+ request_irq(IRQ_GPIO(HX2750_GPIO_SR_CLK2), hx2750_interrupt, SA_INTERRUPT, "hx2750test", NULL);
-+
-+ //request_irq(IRQ_GPIO(10), hx2750_interrupt, SA_INTERRUPT, "hx2750test", NULL);
-+
-+ set_irq_type(IRQ_GPIO(HX2750_GPIO_BATLVL),IRQT_BOTHEDGE);
-+ //set_irq_type(IRQ_GPIO(HX2750_GPIO_CF_WIFIIRQ),IRQT_BOTHEDGE);
-+ set_irq_type(IRQ_GPIO(80),IRQT_BOTHEDGE);
-+ set_irq_type(IRQ_GPIO(115),IRQT_BOTHEDGE);
-+ set_irq_type(IRQ_GPIO(119),IRQT_BOTHEDGE);
-+ set_irq_type(IRQ_GPIO(HX2750_GPIO_SR_CLK2),IRQT_BOTHEDGE);
-+
-+ //set_irq_type(IRQ_GPIO(10),IRQT_BOTHEDGE);
-+
-+ printk("hx2750 Test Code Initialized.\n");
-+ device_create_file(dev, &dev_attr_test1);
-+ device_create_file(dev, &dev_attr_test2);
-+ device_create_file(dev, &dev_attr_setegpio);
-+ device_create_file(dev, &dev_attr_clregpio);
-+ device_create_file(dev, &dev_attr_gpioset);
-+ device_create_file(dev, &dev_attr_gpioclr);
-+ device_create_file(dev, &dev_attr_sspr);
-+ device_create_file(dev, &dev_attr_sspw);
-+ device_create_file(dev, &dev_attr_ssp2read);
-+ device_create_file(dev, &dev_attr_ssp2write);
-+
-+ request_irq(HX2750_IRQ_GPIO_EXTPWR, hx2750_charge_int, SA_INTERRUPT, "hx2750_extpwr", NULL);
-+ set_irq_type(HX2750_IRQ_GPIO_EXTPWR, IRQT_BOTHEDGE);
-+
-+ pxa_pm_enter_orig=pxa_pm_ops.enter;
-+ pxa_pm_ops.enter=hx2750_pxa_pm_enter;
-+
-+ return 0;
-+}
-+
-+static struct device_driver hx2750_test_driver = {
-+ .name = "hx2750-test",
-+ .bus = &platform_bus_type,
-+ .probe = hx2750_test_probe,
-+// .remove = hx2750_bl_remove,
-+// .suspend = hx2750_bl_suspend,
-+// .resume = hx2750_bl_resume,
-+};
-+
-+
-+static int __init hx2750_test_init(void)
-+{
-+ return driver_register(&hx2750_test_driver);
-+}
-+
-+
-+static void __exit hx2750_test_exit(void)
-+{
-+ driver_unregister(&hx2750_test_driver);
-+}
-+
-+module_init(hx2750_test_init);
-+module_exit(hx2750_test_exit);
-+
-+MODULE_AUTHOR("Richard Purdie <richard@o-hand.com>");
-+MODULE_DESCRIPTION("iPAQ hx2750 Backlight Driver");
-+MODULE_LICENSE("GPLv2");
---- linux-2.6.24-rc1.orig/arch/arm/mach-pxa/Kconfig
-+++ linux-2.6.24-rc1/arch/arm/mach-pxa/Kconfig
-@@ -83,6 +83,15 @@
- bool "Sharp PXA270 models (SL-Cxx00)"
- select PXA27x
-
-+config MACH_HX2750
-+ bool "HP iPAQ hx2750"
-+ select PXA27x
-+ select PXA_KEYS
-+ select MFD_TSC2101
-+ select PXA_SSP
-+ help
-+ This enables support for the HP iPAQ HX2750 handheld.
-+
- endchoice
-
- endif
-@@ -181,3 +190,4 @@
- help
- Enable support for PXA2xx SSP ports
- endif
-+
---- /dev/null
-+++ linux-2.6.24-rc1/arch/arm/mach-pxa/hx2750.c
-@@ -0,0 +1,450 @@
-+/*
-+ * Machine definitions for HP iPAQ hx2750
-+ *
-+ * Copyright 2005 Openedhand Ltd.
-+ *
-+ * Author: Richard Purdie <richard@o-hand.com>
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ *
-+ */
-+
-+
-+#include <linux/init.h>
-+#include <linux/kernel.h>
-+#include <linux/ioport.h>
-+#include <linux/platform_device.h>
-+#include <linux/delay.h>
-+#include <linux/input.h>
-+#include <linux/irq.h>
-+#include <linux/mmc/host.h>
-+#include <linux/mfd/tsc2101.h>
-+
-+#include <asm/mach-types.h>
-+#include <asm/hardware.h>
-+#include <asm/mach/arch.h>
-+
-+#include <asm/arch/hx2750.h>
-+#include <asm/arch/pxa-regs.h>
-+#include <asm/arch/pxa_keys.h>
-+#include <asm/mach/map.h>
-+#include <asm/arch/udc.h>
-+#include <asm/arch/mmc.h>
-+#include <asm/arch/audio.h>
-+#include <asm/arch/pxafb.h>
-+#include <asm/arch/ssp.h>
-+
-+#include "generic.h"
-+
-+
-+/*
-+ * Keys Support
-+ */
-+static struct pxa_keys_button hx2750_button_table[] = {
-+ { KEY_POWER, HX2750_GPIO_KEYPWR, PXAKEY_PWR_KEY },
-+ { KEY_LEFT, HX2750_GPIO_KEYLEFT, 0 },
-+ { KEY_RIGHT, HX2750_GPIO_KEYRIGHT, 0 },
-+ { KEY_KP0, HX2750_GPIO_KEYCAL, 0 },
-+ { KEY_KP1, HX2750_GPIO_KEYTASK, 0 },
-+ { KEY_KP2, HX2750_GPIO_KEYSIDE, 0 },
-+ { KEY_ENTER, HX2750_GPIO_KEYENTER, 0 },
-+ { KEY_KP3, HX2750_GPIO_KEYCON, 0 }, //KEY_CONTACTS
-+ { KEY_MAIL, HX2750_GPIO_KEYMAIL, 0 },
-+ { KEY_UP, HX2750_GPIO_KEYUP, 0 },
-+ { KEY_DOWN, HX2750_GPIO_KEYDOWN, 0 },
-+};
-+
-+static struct pxa_keys_platform_data hx2750_pxa_keys_data = {
-+ .buttons = hx2750_button_table,
-+ .nbuttons = ARRAY_SIZE(hx2750_button_table),
-+};
-+
-+static struct platform_device hx2750_pxa_keys = {
-+ .name = "pxa2xx-keys",
-+ .dev = {
-+ .platform_data = &hx2750_pxa_keys_data,
-+ },
-+};
-+
-+
-+/*
-+ * Backlight Device
-+ */
-+extern struct platform_device pxafb_device;
-+
-+static struct platform_device hx2750_bl_device = {
-+ .name = "hx2750-bl",
-+ .id = -1,
-+// .dev = {
-+// .parent = &pxafb_device.dev,
-+// }
-+};
-+
-+
-+/*
-+ * UDC/USB
-+ */
-+static int hx2750_udc_is_connected (void)
-+{
-+ return GPLR0 & GPIO_bit(HX2750_GPIO_USBCONNECT);
-+}
-+
-+//static void hx2750_udc_command (int cmd)
-+//{
-+//}
-+
-+static struct pxa2xx_udc_mach_info hx2750_udc_mach_info = {
-+ .udc_is_connected = hx2750_udc_is_connected,
-+// .udc_command = hx2750_udc_command,
-+};
-+
-+
-+/*
-+ * SSP Devices Setup
-+ */
-+static struct ssp_dev hx2750_ssp_dev1;
-+static struct ssp_dev hx2750_ssp_dev2;
-+static struct ssp_dev hx2750_ssp_dev3;
-+
-+void hx2750_ssp_init(void)
-+{
-+ pxa_gpio_mode(HX2750_GPIO_TSC2101_SS | GPIO_OUT | GPIO_DFLT_HIGH);
-+
-+ if (ssp_init(&hx2750_ssp_dev1, 1, 0))
-+ printk(KERN_ERR "Unable to register SSP1 handler!\n");
-+ else {
-+ ssp_disable(&hx2750_ssp_dev1);
-+ ssp_config(&hx2750_ssp_dev1, (SSCR0_Motorola | (SSCR0_DSS & 0x0f )), SSCR1_SPH, 0, SSCR0_SerClkDiv(6));
-+ ssp_enable(&hx2750_ssp_dev1);
-+ hx2750_set_egpio(HX2750_EGPIO_TSC_PWR);
-+ }
-+
-+// if (ssp_init(&hx2750_ssp_dev2, 2, 0))
-+// printk(KERN_ERR "Unable to register SSP2 handler!\n");
-+// else {
-+// ssp_disable(&hx2750_ssp_dev2);
-+// ssp_config(&hx2750_ssp_dev2, (SSCR0_TI | (SSCR0_DSS & 0x09 )), 0, 0, SSCR0_SerClkDiv(140));
-+// ssp_enable(&hx2750_ssp_dev2);
-+// }
-+//
-+ if (ssp_init(&hx2750_ssp_dev3, 3, 0))
-+ printk(KERN_ERR "Unable to register SSP3 handler!\n");
-+ else {
-+ ssp_disable(&hx2750_ssp_dev3);
-+ ssp_config(&hx2750_ssp_dev3, (SSCR0_Motorola | (SSCR0_DSS & 0x07 )), SSCR1_SPO | SSCR1_SPH, 0, SSCR0_SerClkDiv(166));
-+ ssp_enable(&hx2750_ssp_dev3);
-+ }
-+
-+ printk("SSP Devices Initialised\n");
-+
-+ return;
-+}
-+
-+struct ssp_state ssp1;
-+
-+void hx2750_ssp_suspend(void)
-+{
-+ ssp_disable(&hx2750_ssp_dev1);
-+ ssp_save_state(&hx2750_ssp_dev1,&ssp1);
-+ hx2750_clear_egpio(HX2750_EGPIO_TSC_PWR);
-+}
-+
-+void hx2750_ssp_resume(void)
-+{
-+ hx2750_set_egpio(HX2750_EGPIO_TSC_P