avr32: fix kernel panic when using ondemand cpufreq givernor
[openwrt.git] / target / linux / olpc / patches / 100-olpc.patch
index abbf61f..4607aed 100644 (file)
@@ -1,7 +1,7 @@
-diff --git a/arch/i386/Kconfig b/arch/i386/Kconfig
-index 97b64d7..92ceab7 100644
---- a/arch/i386/Kconfig
-+++ b/arch/i386/Kconfig
+Index: linux-2.6.23.17/arch/i386/Kconfig
+===================================================================
+--- linux-2.6.23.17.orig/arch/i386/Kconfig
++++ linux-2.6.23.17/arch/i386/Kconfig
 @@ -796,6 +796,15 @@ config SECCOMP
  
          If unsure, say Y. Only embedded should say N here.
 @@ -796,6 +796,15 @@ config SECCOMP
  
          If unsure, say Y. Only embedded should say N here.
@@ -93,10 +93,10 @@ index 97b64d7..92ceab7 100644
  source "drivers/pcmcia/Kconfig"
  
  source "drivers/pci/hotplug/Kconfig"
  source "drivers/pcmcia/Kconfig"
  
  source "drivers/pci/hotplug/Kconfig"
-diff --git a/arch/i386/kernel/Makefile b/arch/i386/kernel/Makefile
-index 9d33b00..2e2cf42 100644
---- a/arch/i386/kernel/Makefile
-+++ b/arch/i386/kernel/Makefile
+Index: linux-2.6.23.17/arch/i386/kernel/Makefile
+===================================================================
+--- linux-2.6.23.17.orig/arch/i386/kernel/Makefile
++++ linux-2.6.23.17/arch/i386/kernel/Makefile
 @@ -39,13 +39,17 @@ obj-$(CONFIG_VM86)         += vm86.o
  obj-$(CONFIG_EARLY_PRINTK)    += early_printk.o
  obj-$(CONFIG_HPET_TIMER)      += hpet.o
 @@ -39,13 +39,17 @@ obj-$(CONFIG_VM86)         += vm86.o
  obj-$(CONFIG_EARLY_PRINTK)    += early_printk.o
  obj-$(CONFIG_HPET_TIMER)      += hpet.o
@@ -116,11 +116,11 @@ index 9d33b00..2e2cf42 100644
  
  # vsyscall.o contains the vsyscall DSO images as __initdata.
  # We must build both images before we can assemble it.
  
  # vsyscall.o contains the vsyscall DSO images as __initdata.
  # We must build both images before we can assemble it.
-diff --git a/arch/i386/kernel/geode.c b/arch/i386/kernel/geode.c
-index 41e8aec..637e301 100644
---- a/arch/i386/kernel/geode.c
-+++ b/arch/i386/kernel/geode.c
-@@ -145,10 +145,14 @@ EXPORT_SYMBOL_GPL(geode_gpio_setup_event);
+Index: linux-2.6.23.17/arch/i386/kernel/geode.c
+===================================================================
+--- linux-2.6.23.17.orig/arch/i386/kernel/geode.c
++++ linux-2.6.23.17/arch/i386/kernel/geode.c
+@@ -145,10 +145,14 @@ EXPORT_SYMBOL_GPL(geode_gpio_setup_event
  
  static int __init geode_southbridge_init(void)
  {
  
  static int __init geode_southbridge_init(void)
  {
@@ -135,10 +135,10 @@ index 41e8aec..637e301 100644
        return 0;
  }
  
        return 0;
  }
  
-diff --git a/arch/i386/kernel/head.S b/arch/i386/kernel/head.S
-index 8f03821..3176280 100644
---- a/arch/i386/kernel/head.S
-+++ b/arch/i386/kernel/head.S
+Index: linux-2.6.23.17/arch/i386/kernel/head.S
+===================================================================
+--- linux-2.6.23.17.orig/arch/i386/kernel/head.S
++++ linux-2.6.23.17/arch/i386/kernel/head.S
 @@ -117,8 +117,34 @@ ENTRY(startup_32)
        movl $(COMMAND_LINE_SIZE/4),%ecx
        rep
 @@ -117,8 +117,34 @@ ENTRY(startup_32)
        movl $(COMMAND_LINE_SIZE/4),%ecx
        rep
@@ -159,7 +159,7 @@ index 8f03821..3176280 100644
 +
 +      mov 0x8(%ebp), %eax     /* Save callback address */
 +      mov %eax, call_firmware - __PAGE_OFFSET
 +
 +      mov 0x8(%ebp), %eax     /* Save callback address */
 +      mov %eax, call_firmware - __PAGE_OFFSET
++
 +      /* Copy the OFW pdir into swapper_pg_dir */
 +      movl %esi, %edx         /* save %esi */
 +      movl $(swapper_pg_dir - __PAGE_OFFSET), %edi
 +      /* Copy the OFW pdir into swapper_pg_dir */
 +      movl %esi, %edx         /* save %esi */
 +      movl $(swapper_pg_dir - __PAGE_OFFSET), %edi
@@ -169,7 +169,7 @@ index 8f03821..3176280 100644
 +      movsl
 +      movl %edx, %esi         /* restore %esi */
 +#endif
 +      movsl
 +      movl %edx, %esi         /* restore %esi */
 +#endif
-+
 +1:
  /*
   * Initialize page tables.  This creates a PDE and a set of page
 +1:
  /*
   * Initialize page tables.  This creates a PDE and a set of page
@@ -182,12 +182,10 @@ index 8f03821..3176280 100644
  page_pde_offset = (__PAGE_OFFSET >> 20);
  
        movl $(pg0 - __PAGE_OFFSET), %edi
  page_pde_offset = (__PAGE_OFFSET >> 20);
  
        movl $(pg0 - __PAGE_OFFSET), %edi
-       
-
-diff --git a/arch/i386/kernel/setup.c b/arch/i386/kernel/setup.c
-index d474cd6..c4b26ba 100644
---- a/arch/i386/kernel/setup.c
-+++ b/arch/i386/kernel/setup.c
+Index: linux-2.6.23.17/arch/i386/kernel/setup.c
+===================================================================
+--- linux-2.6.23.17.orig/arch/i386/kernel/setup.c
++++ linux-2.6.23.17/arch/i386/kernel/setup.c
 @@ -362,8 +362,10 @@ void __init zone_sizes_init(void)
  {
        unsigned long max_zone_pfns[MAX_NR_ZONES];
 @@ -362,8 +362,10 @@ void __init zone_sizes_init(void)
  {
        unsigned long max_zone_pfns[MAX_NR_ZONES];
@@ -199,7 +197,7 @@ index d474cd6..c4b26ba 100644
        max_zone_pfns[ZONE_NORMAL] = max_low_pfn;
  #ifdef CONFIG_HIGHMEM
        max_zone_pfns[ZONE_HIGHMEM] = highend_pfn;
        max_zone_pfns[ZONE_NORMAL] = max_low_pfn;
  #ifdef CONFIG_HIGHMEM
        max_zone_pfns[ZONE_HIGHMEM] = highend_pfn;
-@@ -428,6 +430,9 @@ void __init setup_bootmem_allocator(void)
+@@ -428,6 +430,9 @@ void __init setup_bootmem_allocator(void
         */
        acpi_reserve_bootmem();
  #endif
         */
        acpi_reserve_bootmem();
  #endif
@@ -209,10 +207,10 @@ index d474cd6..c4b26ba 100644
  #ifdef CONFIG_X86_FIND_SMP_CONFIG
        /*
         * Find and reserve possible boot-time SMP configuration:
  #ifdef CONFIG_X86_FIND_SMP_CONFIG
        /*
         * Find and reserve possible boot-time SMP configuration:
-diff --git a/arch/i386/pci/Makefile b/arch/i386/pci/Makefile
-index 44650e0..1250a7b 100644
---- a/arch/i386/pci/Makefile
-+++ b/arch/i386/pci/Makefile
+Index: linux-2.6.23.17/arch/i386/pci/Makefile
+===================================================================
+--- linux-2.6.23.17.orig/arch/i386/pci/Makefile
++++ linux-2.6.23.17/arch/i386/pci/Makefile
 @@ -3,6 +3,7 @@ obj-y                          := i386.o init.o
  obj-$(CONFIG_PCI_BIOS)                += pcbios.o
  obj-$(CONFIG_PCI_MMCONFIG)    += mmconfig.o direct.o mmconfig-shared.o
 @@ -3,6 +3,7 @@ obj-y                          := i386.o init.o
  obj-$(CONFIG_PCI_BIOS)                += pcbios.o
  obj-$(CONFIG_PCI_MMCONFIG)    += mmconfig.o direct.o mmconfig-shared.o
@@ -221,10 +219,10 @@ index 44650e0..1250a7b 100644
  
  pci-y                         := fixup.o
  pci-$(CONFIG_ACPI)            += acpi.o
  
  pci-y                         := fixup.o
  pci-$(CONFIG_ACPI)            += acpi.o
-diff --git a/arch/i386/pci/init.c b/arch/i386/pci/init.c
-index 3de9f9b..0f5f7dd 100644
---- a/arch/i386/pci/init.c
-+++ b/arch/i386/pci/init.c
+Index: linux-2.6.23.17/arch/i386/pci/init.c
+===================================================================
+--- linux-2.6.23.17.orig/arch/i386/pci/init.c
++++ linux-2.6.23.17/arch/i386/pci/init.c
 @@ -14,6 +14,9 @@ static __init int pci_access_init(void)
  #ifdef CONFIG_PCI_MMCONFIG
        pci_mmcfg_init(type);
 @@ -14,6 +14,9 @@ static __init int pci_access_init(void)
  #ifdef CONFIG_PCI_MMCONFIG
        pci_mmcfg_init(type);
@@ -235,10 +233,10 @@ index 3de9f9b..0f5f7dd 100644
        if (raw_pci_ops)
                return 0;
  #ifdef CONFIG_PCI_BIOS
        if (raw_pci_ops)
                return 0;
  #ifdef CONFIG_PCI_BIOS
-diff --git a/arch/i386/pci/pci.h b/arch/i386/pci/pci.h
-index 8c66f27..a67e617 100644
---- a/arch/i386/pci/pci.h
-+++ b/arch/i386/pci/pci.h
+Index: linux-2.6.23.17/arch/i386/pci/pci.h
+===================================================================
+--- linux-2.6.23.17.orig/arch/i386/pci/pci.h
++++ linux-2.6.23.17/arch/i386/pci/pci.h
 @@ -93,6 +93,7 @@ extern void pci_direct_init(int type);
  extern void pci_pcbios_init(void);
  extern void pci_mmcfg_init(int type);
 @@ -93,6 +93,7 @@ extern void pci_direct_init(int type);
  extern void pci_pcbios_init(void);
  extern void pci_mmcfg_init(int type);
@@ -247,10 +245,10 @@ index 8c66f27..a67e617 100644
  
  /* pci-mmconfig.c */
  
  
  /* pci-mmconfig.c */
  
-diff --git a/drivers/Makefile b/drivers/Makefile
-index f0878b2..c033d30 100644
---- a/drivers/Makefile
-+++ b/drivers/Makefile
+Index: linux-2.6.23.17/drivers/Makefile
+===================================================================
+--- linux-2.6.23.17.orig/drivers/Makefile
++++ linux-2.6.23.17/drivers/Makefile
 @@ -23,6 +23,8 @@ obj-y                                += char/
  
  obj-$(CONFIG_CONNECTOR)               += connector/
 @@ -23,6 +23,8 @@ obj-y                                += char/
  
  obj-$(CONFIG_CONNECTOR)               += connector/
@@ -260,10 +258,10 @@ index f0878b2..c033d30 100644
  # i810fb and intelfb depend on char/agp/
  obj-$(CONFIG_FB_I810)           += video/i810/
  obj-$(CONFIG_FB_INTEL)          += video/intelfb/
  # i810fb and intelfb depend on char/agp/
  obj-$(CONFIG_FB_I810)           += video/i810/
  obj-$(CONFIG_FB_INTEL)          += video/intelfb/
-diff --git a/drivers/char/vt_ioctl.c b/drivers/char/vt_ioctl.c
-index c6f6f42..55ae42c 100644
---- a/drivers/char/vt_ioctl.c
-+++ b/drivers/char/vt_ioctl.c
+Index: linux-2.6.23.17/drivers/char/vt_ioctl.c
+===================================================================
+--- linux-2.6.23.17.orig/drivers/char/vt_ioctl.c
++++ linux-2.6.23.17/drivers/char/vt_ioctl.c
 @@ -37,6 +37,9 @@
  char vt_dont_switch;
  extern struct tty_driver *console_driver;
 @@ -37,6 +37,9 @@
  char vt_dont_switch;
  extern struct tty_driver *console_driver;
@@ -274,7 +272,7 @@ index c6f6f42..55ae42c 100644
  #define VT_IS_IN_USE(i)       (console_driver->ttys[i] && console_driver->ttys[i]->count)
  #define VT_BUSY(i)    (VT_IS_IN_USE(i) || i == fg_console || vc_cons[i].d == sel_cons)
  
  #define VT_IS_IN_USE(i)       (console_driver->ttys[i] && console_driver->ttys[i]->count)
  #define VT_BUSY(i)    (VT_IS_IN_USE(i) || i == fg_console || vc_cons[i].d == sel_cons)
  
-@@ -491,6 +494,14 @@ int vt_ioctl(struct tty_struct *tty, struct file * file,
+@@ -491,6 +494,14 @@ int vt_ioctl(struct tty_struct *tty, str
                vc->vc_mode = (unsigned char) arg;
                if (console != fg_console)
                        return 0;
                vc->vc_mode = (unsigned char) arg;
                if (console != fg_console)
                        return 0;
@@ -289,11 +287,11 @@ index c6f6f42..55ae42c 100644
                /*
                 * explicitly blank/unblank the screen if switching modes
                 */
                /*
                 * explicitly blank/unblank the screen if switching modes
                 */
-diff --git a/drivers/i2c/busses/scx200_acb.c b/drivers/i2c/busses/scx200_acb.c
-index e6c4a2b..874d623 100644
---- a/drivers/i2c/busses/scx200_acb.c
-+++ b/drivers/i2c/busses/scx200_acb.c
-@@ -46,6 +46,10 @@ static int base[MAX_DEVICES] = { 0x820, 0x840 };
+Index: linux-2.6.23.17/drivers/i2c/busses/scx200_acb.c
+===================================================================
+--- linux-2.6.23.17.orig/drivers/i2c/busses/scx200_acb.c
++++ linux-2.6.23.17/drivers/i2c/busses/scx200_acb.c
+@@ -46,6 +46,10 @@ static int base[MAX_DEVICES] = { 0x820, 
  module_param_array(base, int, NULL, 0);
  MODULE_PARM_DESC(base, "Base addresses for the ACCESS.bus controllers");
  
  module_param_array(base, int, NULL, 0);
  MODULE_PARM_DESC(base, "Base addresses for the ACCESS.bus controllers");
  
@@ -312,7 +310,7 @@ index e6c4a2b..874d623 100644
  
  /************************************************************************/
  
  
  /************************************************************************/
  
-@@ -392,11 +397,13 @@ static __init int scx200_acb_probe(struct scx200_acb_iface *iface)
+@@ -392,11 +397,13 @@ static __init int scx200_acb_probe(struc
  {
        u8 val;
  
  {
        u8 val;
  
@@ -330,10 +328,10 @@ index e6c4a2b..874d623 100644
                pr_debug(NAME ": ACBCTL2 readback failed\n");
                return -ENXIO;
        }
                pr_debug(NAME ": ACBCTL2 readback failed\n");
                return -ENXIO;
        }
-diff --git a/drivers/input/keyboard/atkbd.c b/drivers/input/keyboard/atkbd.c
-index 41fc3d0..a15e7a9 100644
---- a/drivers/input/keyboard/atkbd.c
-+++ b/drivers/input/keyboard/atkbd.c
+Index: linux-2.6.23.17/drivers/input/keyboard/atkbd.c
+===================================================================
+--- linux-2.6.23.17.orig/drivers/input/keyboard/atkbd.c
++++ linux-2.6.23.17/drivers/input/keyboard/atkbd.c
 @@ -63,12 +63,25 @@ static int atkbd_extra;
  module_param_named(extra, atkbd_extra, bool, 0);
  MODULE_PARM_DESC(extra, "Enable extra LEDs and keys on IBM RapidAcces, EzKey and similar keyboards");
 @@ -63,12 +63,25 @@ static int atkbd_extra;
  module_param_named(extra, atkbd_extra, bool, 0);
  MODULE_PARM_DESC(extra, "Enable extra LEDs and keys on IBM RapidAcces, EzKey and similar keyboards");
@@ -361,7 +359,7 @@ index 41fc3d0..a15e7a9 100644
  
  #ifdef CONFIG_KEYBOARD_ATKBD_HP_KEYCODES
  
  
  #ifdef CONFIG_KEYBOARD_ATKBD_HP_KEYCODES
  
-@@ -87,11 +100,17 @@ static unsigned char atkbd_set2_keycode[512] = {
+@@ -87,11 +100,17 @@ static unsigned char atkbd_set2_keycode[
         82, 83, 80, 76, 77, 72,  1, 69, 87, 78, 81, 74, 55, 73, 70, 99,
  
          0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
         82, 83, 80, 76, 77, 72,  1, 69, 87, 78, 81, 74, 55, 73, 70, 99,
  
          0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
@@ -381,7 +379,7 @@ index 41fc3d0..a15e7a9 100644
          0,  0,  0,  0,  0,  0,  0,  0,  0,107,  0,105,102,  0,  0,112,
        110,111,108,112,106,103,  0,119,  0,118,109,  0, 99,104,119,  0,
  
          0,  0,  0,  0,  0,  0,  0,  0,  0,107,  0,105,102,  0,  0,112,
        110,111,108,112,106,103,  0,119,  0,118,109,  0, 99,104,119,  0,
  
-@@ -150,19 +169,6 @@ static unsigned char atkbd_unxlate_table[128] = {
+@@ -150,19 +169,6 @@ static unsigned char atkbd_unxlate_table
  #define ATKBD_RET_HANGEUL     0xf2
  #define ATKBD_RET_ERR         0xff
  
  #define ATKBD_RET_HANGEUL     0xf2
  #define ATKBD_RET_ERR         0xff
  
@@ -401,7 +399,7 @@ index 41fc3d0..a15e7a9 100644
  #define ATKBD_LED_EVENT_BIT   0
  #define ATKBD_REP_EVENT_BIT   1
  
  #define ATKBD_LED_EVENT_BIT   0
  #define ATKBD_REP_EVENT_BIT   1
  
-@@ -174,7 +180,7 @@ static unsigned char atkbd_unxlate_table[128] = {
+@@ -174,7 +180,7 @@ static unsigned char atkbd_unxlate_table
  #define ATKBD_XL_HANJA                0x20
  
  static struct {
  #define ATKBD_XL_HANJA                0x20
  
  static struct {
@@ -419,7 +417,7 @@ index 41fc3d0..a15e7a9 100644
        unsigned char set;
        unsigned char translated;
        unsigned char extra;
        unsigned char set;
        unsigned char translated;
        unsigned char extra;
-@@ -351,7 +357,7 @@ static irqreturn_t atkbd_interrupt(struct serio *serio, unsigned char data,
+@@ -351,7 +357,7 @@ static irqreturn_t atkbd_interrupt(struc
        unsigned int code = data;
        int scroll = 0, hscroll = 0, click = -1, add_release_event = 0;
        int value;
        unsigned int code = data;
        int scroll = 0, hscroll = 0, click = -1, add_release_event = 0;
        int value;
@@ -428,7 +426,7 @@ index 41fc3d0..a15e7a9 100644
  
  #ifdef ATKBD_DEBUG
        printk(KERN_DEBUG "atkbd.c: Received %02x flags %02x\n", data, flags);
  
  #ifdef ATKBD_DEBUG
        printk(KERN_DEBUG "atkbd.c: Received %02x flags %02x\n", data, flags);
-@@ -856,9 +862,11 @@ static void atkbd_set_keycode_table(struct atkbd *atkbd)
+@@ -856,9 +862,11 @@ static void atkbd_set_keycode_table(stru
                                                atkbd->keycode[i | 0x80] = atkbd_scroll_keys[j].keycode;
                }
        } else if (atkbd->set == 3) {
                                                atkbd->keycode[i | 0x80] = atkbd_scroll_keys[j].keycode;
                }
        } else if (atkbd->set == 3) {
@@ -442,7 +440,7 @@ index 41fc3d0..a15e7a9 100644
  
                if (atkbd->scroll)
                        for (i = 0; i < ARRAY_SIZE(atkbd_scroll_keys); i++)
  
                if (atkbd->scroll)
                        for (i = 0; i < ARRAY_SIZE(atkbd_scroll_keys); i++)
-@@ -925,8 +933,8 @@ static void atkbd_set_device_attrs(struct atkbd *atkbd)
+@@ -925,8 +933,8 @@ static void atkbd_set_device_attrs(struc
        }
  
        input_dev->keycode = atkbd->keycode;
        }
  
        input_dev->keycode = atkbd->keycode;
@@ -453,7 +451,7 @@ index 41fc3d0..a15e7a9 100644
  
        for (i = 0; i < 512; i++)
                if (atkbd->keycode[i] && atkbd->keycode[i] < ATKBD_SPECIAL)
  
        for (i = 0; i < 512; i++)
                if (atkbd->keycode[i] && atkbd->keycode[i] < ATKBD_SPECIAL)
-@@ -1017,6 +1025,10 @@ static int atkbd_connect(struct serio *serio, struct serio_driver *drv)
+@@ -1017,6 +1025,10 @@ static int atkbd_connect(struct serio *s
        return err;
  }
  
        return err;
  }
  
@@ -464,7 +462,7 @@ index 41fc3d0..a15e7a9 100644
  /*
   * atkbd_reconnect() tries to restore keyboard into a sane state and is
   * most likely called on resume.
  /*
   * atkbd_reconnect() tries to restore keyboard into a sane state and is
   * most likely called on resume.
-@@ -1027,6 +1039,12 @@ static int atkbd_reconnect(struct serio *serio)
+@@ -1027,6 +1039,12 @@ static int atkbd_reconnect(struct serio 
        struct atkbd *atkbd = serio_get_drvdata(serio);
        struct serio_driver *drv = serio->drv;
  
        struct atkbd *atkbd = serio_get_drvdata(serio);
        struct serio_driver *drv = serio->drv;
  
@@ -477,10 +475,10 @@ index 41fc3d0..a15e7a9 100644
        if (!atkbd || !drv) {
                printk(KERN_DEBUG "atkbd: reconnect request, but serio is disconnected, ignoring...\n");
                return -1;
        if (!atkbd || !drv) {
                printk(KERN_DEBUG "atkbd: reconnect request, but serio is disconnected, ignoring...\n");
                return -1;
-diff --git a/drivers/input/mouse/Kconfig b/drivers/input/mouse/Kconfig
-index 7bbea09..6febbc5 100644
---- a/drivers/input/mouse/Kconfig
-+++ b/drivers/input/mouse/Kconfig
+Index: linux-2.6.23.17/drivers/input/mouse/Kconfig
+===================================================================
+--- linux-2.6.23.17.orig/drivers/input/mouse/Kconfig
++++ linux-2.6.23.17/drivers/input/mouse/Kconfig
 @@ -96,6 +96,16 @@ config MOUSE_PS2_TOUCHKIT
  
          If unsure, say N.
 @@ -96,6 +96,16 @@ config MOUSE_PS2_TOUCHKIT
  
          If unsure, say N.
@@ -498,19 +496,19 @@ index 7bbea09..6febbc5 100644
  config MOUSE_SERIAL
        tristate "Serial mouse"
        select SERIO
  config MOUSE_SERIAL
        tristate "Serial mouse"
        select SERIO
-diff --git a/drivers/input/mouse/Makefile b/drivers/input/mouse/Makefile
-index 9e6e363..f4654ce 100644
---- a/drivers/input/mouse/Makefile
-+++ b/drivers/input/mouse/Makefile
-@@ -24,3 +24,4 @@ psmouse-$(CONFIG_MOUSE_PS2_LOGIPS2PP)        += logips2pp.o
+Index: linux-2.6.23.17/drivers/input/mouse/Makefile
+===================================================================
+--- linux-2.6.23.17.orig/drivers/input/mouse/Makefile
++++ linux-2.6.23.17/drivers/input/mouse/Makefile
+@@ -24,3 +24,4 @@ psmouse-$(CONFIG_MOUSE_PS2_LOGIPS2PP)        +=
  psmouse-$(CONFIG_MOUSE_PS2_LIFEBOOK)  += lifebook.o
  psmouse-$(CONFIG_MOUSE_PS2_TRACKPOINT)        += trackpoint.o
  psmouse-$(CONFIG_MOUSE_PS2_TOUCHKIT)  += touchkit_ps2.o
 +psmouse-$(CONFIG_MOUSE_PS2_OLPC)      += olpc.o
  psmouse-$(CONFIG_MOUSE_PS2_LIFEBOOK)  += lifebook.o
  psmouse-$(CONFIG_MOUSE_PS2_TRACKPOINT)        += trackpoint.o
  psmouse-$(CONFIG_MOUSE_PS2_TOUCHKIT)  += touchkit_ps2.o
 +psmouse-$(CONFIG_MOUSE_PS2_OLPC)      += olpc.o
-diff --git a/drivers/input/mouse/psmouse-base.c b/drivers/input/mouse/psmouse-base.c
-index b9f0fb2..edcdb68 100644
---- a/drivers/input/mouse/psmouse-base.c
-+++ b/drivers/input/mouse/psmouse-base.c
+Index: linux-2.6.23.17/drivers/input/mouse/psmouse-base.c
+===================================================================
+--- linux-2.6.23.17.orig/drivers/input/mouse/psmouse-base.c
++++ linux-2.6.23.17/drivers/input/mouse/psmouse-base.c
 @@ -26,6 +26,7 @@
  #include "synaptics.h"
  #include "logips2pp.h"
 @@ -26,6 +26,7 @@
  #include "synaptics.h"
  #include "logips2pp.h"
@@ -519,7 +517,7 @@ index b9f0fb2..edcdb68 100644
  #include "lifebook.h"
  #include "trackpoint.h"
  #include "touchkit_ps2.h"
  #include "lifebook.h"
  #include "trackpoint.h"
  #include "touchkit_ps2.h"
-@@ -103,7 +104,7 @@ static struct attribute_group psmouse_attribute_group = {
+@@ -103,7 +104,7 @@ static struct attribute_group psmouse_at
   */
  static DEFINE_MUTEX(psmouse_mutex);
  
   */
  static DEFINE_MUTEX(psmouse_mutex);
  
@@ -528,7 +526,7 @@ index b9f0fb2..edcdb68 100644
  
  struct psmouse_protocol {
        enum psmouse_type type;
  
  struct psmouse_protocol {
        enum psmouse_type type;
-@@ -320,7 +321,7 @@ static irqreturn_t psmouse_interrupt(struct serio *serio,
+@@ -320,7 +321,7 @@ static irqreturn_t psmouse_interrupt(str
                        goto out;
                }
  
                        goto out;
                }
  
@@ -537,7 +535,7 @@ index b9f0fb2..edcdb68 100644
                        __psmouse_set_state(psmouse, PSMOUSE_IGNORE);
                        serio_reconnect(serio);
                        goto out;
                        __psmouse_set_state(psmouse, PSMOUSE_IGNORE);
                        serio_reconnect(serio);
                        goto out;
-@@ -631,8 +632,21 @@ static int psmouse_extensions(struct psmouse *psmouse,
+@@ -631,8 +632,21 @@ static int psmouse_extensions(struct psm
                }
        }
  
                }
        }
  
@@ -559,7 +557,7 @@ index b9f0fb2..edcdb68 100644
                if (genius_detect(psmouse, set_properties) == 0)
                        return PSMOUSE_GENPS;
  
                if (genius_detect(psmouse, set_properties) == 0)
                        return PSMOUSE_GENPS;
  
-@@ -762,6 +776,14 @@ static const struct psmouse_protocol psmouse_protocols[] = {
+@@ -762,6 +776,14 @@ static const struct psmouse_protocol psm
                .detect         = touchkit_ps2_detect,
        },
  #endif
                .detect         = touchkit_ps2_detect,
        },
  #endif
@@ -574,10 +572,10 @@ index b9f0fb2..edcdb68 100644
        {
                .type           = PSMOUSE_CORTRON,
                .name           = "CortronPS/2",
        {
                .type           = PSMOUSE_CORTRON,
                .name           = "CortronPS/2",
-diff --git a/drivers/input/mouse/psmouse.h b/drivers/input/mouse/psmouse.h
-index 1317bdd..c4857df 100644
---- a/drivers/input/mouse/psmouse.h
-+++ b/drivers/input/mouse/psmouse.h
+Index: linux-2.6.23.17/drivers/input/mouse/psmouse.h
+===================================================================
+--- linux-2.6.23.17.orig/drivers/input/mouse/psmouse.h
++++ linux-2.6.23.17/drivers/input/mouse/psmouse.h
 @@ -89,6 +89,7 @@ enum psmouse_type {
        PSMOUSE_TRACKPOINT,
        PSMOUSE_TOUCHKIT_PS2,
 @@ -89,6 +89,7 @@ enum psmouse_type {
        PSMOUSE_TRACKPOINT,
        PSMOUSE_TOUCHKIT_PS2,
@@ -586,7 +584,7 @@ index 1317bdd..c4857df 100644
        PSMOUSE_AUTO            /* This one should always be last */
  };
  
        PSMOUSE_AUTO            /* This one should always be last */
  };
  
-@@ -96,6 +97,7 @@ int psmouse_sliced_command(struct psmouse *psmouse, unsigned char command);
+@@ -96,6 +97,7 @@ int psmouse_sliced_command(struct psmous
  int psmouse_reset(struct psmouse *psmouse);
  void psmouse_set_resolution(struct psmouse *psmouse, unsigned int resolution);
  
  int psmouse_reset(struct psmouse *psmouse);
  void psmouse_set_resolution(struct psmouse *psmouse, unsigned int resolution);
  
@@ -594,11 +592,11 @@ index 1317bdd..c4857df 100644
  
  struct psmouse_attribute {
        struct device_attribute dattr;
  
  struct psmouse_attribute {
        struct device_attribute dattr;
-diff --git a/drivers/input/serio/i8042.c b/drivers/input/serio/i8042.c
-index c2eea27..3510726 100644
---- a/drivers/input/serio/i8042.c
-+++ b/drivers/input/serio/i8042.c
-@@ -868,6 +868,11 @@ static long i8042_panic_blink(long count)
+Index: linux-2.6.23.17/drivers/input/serio/i8042.c
+===================================================================
+--- linux-2.6.23.17.orig/drivers/input/serio/i8042.c
++++ linux-2.6.23.17/drivers/input/serio/i8042.c
+@@ -868,6 +868,11 @@ static long i8042_panic_blink(long count
  #undef DELAY
  
  #ifdef CONFIG_PM
  #undef DELAY
  
  #ifdef CONFIG_PM
@@ -610,7 +608,7 @@ index c2eea27..3510726 100644
  /*
   * Here we try to restore the original BIOS settings. We only want to
   * do that once, when we really suspend, not when we taking memory
  /*
   * Here we try to restore the original BIOS settings. We only want to
   * do that once, when we really suspend, not when we taking memory
-@@ -878,8 +883,15 @@ static long i8042_panic_blink(long count)
+@@ -878,8 +883,15 @@ static long i8042_panic_blink(long count
  static int i8042_suspend(struct platform_device *dev, pm_message_t state)
  {
        if (dev->dev.power.power_state.event != state.event) {
  static int i8042_suspend(struct platform_device *dev, pm_message_t state)
  {
        if (dev->dev.power.power_state.event != state.event) {
@@ -626,7 +624,7 @@ index c2eea27..3510726 100644
  
                dev->dev.power.power_state = state;
        }
  
                dev->dev.power.power_state = state;
        }
-@@ -902,9 +914,15 @@ static int i8042_resume(struct platform_device *dev)
+@@ -902,9 +914,15 @@ static int i8042_resume(struct platform_
        if (dev->dev.power.power_state.event == PM_EVENT_ON)
                return 0;
  
        if (dev->dev.power.power_state.event == PM_EVENT_ON)
                return 0;
  
@@ -642,11 +640,11 @@ index c2eea27..3510726 100644
  
        error = i8042_controller_selftest();
        if (error)
  
        error = i8042_controller_selftest();
        if (error)
-diff --git a/drivers/input/serio/serio.c b/drivers/input/serio/serio.c
-index 372ca49..c9e5308 100644
---- a/drivers/input/serio/serio.c
-+++ b/drivers/input/serio/serio.c
-@@ -916,11 +916,22 @@ static int serio_uevent(struct device *dev, char **envp, int num_envp, char *buf
+Index: linux-2.6.23.17/drivers/input/serio/serio.c
+===================================================================
+--- linux-2.6.23.17.orig/drivers/input/serio/serio.c
++++ linux-2.6.23.17/drivers/input/serio/serio.c
+@@ -916,11 +916,22 @@ static int serio_uevent(struct device *d
  #endif /* CONFIG_HOTPLUG */
  
  #ifdef CONFIG_PM
  #endif /* CONFIG_HOTPLUG */
  
  #ifdef CONFIG_PM
@@ -669,10 +667,10 @@ index 372ca49..c9e5308 100644
  
                dev->power.power_state = state;
        }
  
                dev->power.power_state = state;
        }
-diff --git a/drivers/media/video/cafe_ccic.c b/drivers/media/video/cafe_ccic.c
-index ef53618..47881d2 100644
---- a/drivers/media/video/cafe_ccic.c
-+++ b/drivers/media/video/cafe_ccic.c
+Index: linux-2.6.23.17/drivers/media/video/cafe_ccic.c
+===================================================================
+--- linux-2.6.23.17.orig/drivers/media/video/cafe_ccic.c
++++ linux-2.6.23.17/drivers/media/video/cafe_ccic.c
 @@ -63,13 +63,13 @@ MODULE_SUPPORTED_DEVICE("Video");
   */
  
 @@ -63,13 +63,13 @@ MODULE_SUPPORTED_DEVICE("Video");
   */
  
@@ -694,7 +692,7 @@ index ef53618..47881d2 100644
  
  static int n_dma_bufs = 3;
  module_param(n_dma_bufs, uint, 0644);
  
  static int n_dma_bufs = 3;
  module_param(n_dma_bufs, uint, 0644);
-@@ -370,6 +370,10 @@ static int cafe_smbus_write_data(struct cafe_camera *cam,
+@@ -370,6 +370,10 @@ static int cafe_smbus_write_data(struct 
        rval = value | ((command << TWSIC1_ADDR_SHIFT) & TWSIC1_ADDR);
        cafe_reg_write(cam, REG_TWSIC1, rval);
        spin_unlock_irqrestore(&cam->dev_lock, flags);
        rval = value | ((command << TWSIC1_ADDR_SHIFT) & TWSIC1_ADDR);
        cafe_reg_write(cam, REG_TWSIC1, rval);
        spin_unlock_irqrestore(&cam->dev_lock, flags);
@@ -705,7 +703,7 @@ index ef53618..47881d2 100644
  
        /*
         * Time to wait for the write to complete.  THIS IS A RACY
  
        /*
         * Time to wait for the write to complete.  THIS IS A RACY
-@@ -1503,7 +1507,7 @@ static int cafe_v4l_release(struct inode *inode, struct file *filp)
+@@ -1503,7 +1507,7 @@ static int cafe_v4l_release(struct inode
        }
        if (cam->users == 0) {
                cafe_ctlr_power_down(cam);
        }
        if (cam->users == 0) {
                cafe_ctlr_power_down(cam);
@@ -714,7 +712,7 @@ index ef53618..47881d2 100644
                        cafe_free_dma_bufs(cam);
        }
        mutex_unlock(&cam->s_mutex);
                        cafe_free_dma_bufs(cam);
        }
        mutex_unlock(&cam->s_mutex);
-@@ -2162,7 +2166,7 @@ static int cafe_pci_probe(struct pci_dev *pdev,
+@@ -2162,7 +2166,7 @@ static int cafe_pci_probe(struct pci_dev
        /*
         * If so requested, try to get our DMA buffers now.
         */
        /*
         * If so requested, try to get our DMA buffers now.
         */
@@ -723,10 +721,10 @@ index ef53618..47881d2 100644
                if (cafe_alloc_dma_bufs(cam, 1))
                        cam_warn(cam, "Unable to alloc DMA buffers at load"
                                        " will try again later.");
                if (cafe_alloc_dma_bufs(cam, 1))
                        cam_warn(cam, "Unable to alloc DMA buffers at load"
                                        " will try again later.");
-diff --git a/drivers/misc/Kconfig b/drivers/misc/Kconfig
-index 73e248f..f7afde3 100644
---- a/drivers/misc/Kconfig
-+++ b/drivers/misc/Kconfig
+Index: linux-2.6.23.17/drivers/misc/Kconfig
+===================================================================
+--- linux-2.6.23.17.orig/drivers/misc/Kconfig
++++ linux-2.6.23.17/drivers/misc/Kconfig
 @@ -202,5 +202,10 @@ config THINKPAD_ACPI_BAY
  
          If you are not sure, say Y here.
 @@ -202,5 +202,10 @@ config THINKPAD_ACPI_BAY
  
          If you are not sure, say Y here.
@@ -738,27 +736,11 @@ index 73e248f..f7afde3 100644
 +        The driver supports both read as well as write commands.
  
  endif # MISC_DEVICES
 +        The driver supports both read as well as write commands.
  
  endif # MISC_DEVICES
-diff --git a/drivers/mmc/card/block.c b/drivers/mmc/card/block.c
-index 93fe2e5..e17eb8e 100644
---- a/drivers/mmc/card/block.c
-+++ b/drivers/mmc/card/block.c
-@@ -229,6 +229,11 @@ static int mmc_blk_issue_rq(struct mmc_queue *mq, struct request *req)
-               if (brq.data.blocks > card->host->max_blk_count)
-                       brq.data.blocks = card->host->max_blk_count;
-+              if (mmc_card_sd(card) && !card->host->ios.clock) {
-+                      printk(KERN_ERR "%s: I/O to stopped card\n",
-+                             req->rq_disk->disk_name);
-+                      goto cmd_err;
-+              }
-               mmc_set_data_timeout(&brq.data, card, rq_data_dir(req) != READ);
-               /*
-diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
-index 20a7d89..9abbb58 100644
---- a/drivers/mmc/host/sdhci.c
-+++ b/drivers/mmc/host/sdhci.c
-@@ -411,6 +411,12 @@ static void sdhci_prepare_data(struct sdhci_host *host, struct mmc_data *data)
+Index: linux-2.6.23.17/drivers/mmc/host/sdhci.c
+===================================================================
+--- linux-2.6.23.17.orig/drivers/mmc/host/sdhci.c
++++ linux-2.6.23.17/drivers/mmc/host/sdhci.c
+@@ -411,6 +411,12 @@ static void sdhci_prepare_data(struct sd
                        break;
        }
  
                        break;
        }
  
@@ -771,7 +753,7 @@ index 20a7d89..9abbb58 100644
        if (count >= 0xF) {
                printk(KERN_WARNING "%s: Too large timeout requested!\n",
                        mmc_hostname(host->mmc));
        if (count >= 0xF) {
                printk(KERN_WARNING "%s: Too large timeout requested!\n",
                        mmc_hostname(host->mmc));
-@@ -676,19 +682,17 @@ static void sdhci_set_power(struct sdhci_host *host, unsigned short power)
+@@ -676,19 +682,17 @@ static void sdhci_set_power(struct sdhci
        if (!(host->chip->quirks & SDHCI_QUIRK_SINGLE_POWER_WRITE))
                writeb(0, host->ioaddr + SDHCI_POWER_CONTROL);
  
        if (!(host->chip->quirks & SDHCI_QUIRK_SINGLE_POWER_WRITE))
                writeb(0, host->ioaddr + SDHCI_POWER_CONTROL);
  
@@ -794,7 +776,7 @@ index 20a7d89..9abbb58 100644
                break;
        default:
                BUG();
                break;
        default:
                BUG();
-@@ -696,6 +700,10 @@ static void sdhci_set_power(struct sdhci_host *host, unsigned short power)
+@@ -696,6 +700,10 @@ static void sdhci_set_power(struct sdhci
  
        writeb(pwr, host->ioaddr + SDHCI_POWER_CONTROL);
  
  
        writeb(pwr, host->ioaddr + SDHCI_POWER_CONTROL);
  
@@ -805,11 +787,11 @@ index 20a7d89..9abbb58 100644
  out:
        host->power = power;
  }
  out:
        host->power = power;
  }
-diff --git a/drivers/mtd/Kconfig b/drivers/mtd/Kconfig
-index fbec8cd..8848e8a 100644
---- a/drivers/mtd/Kconfig
-+++ b/drivers/mtd/Kconfig
-@@ -278,6 +278,14 @@ config SSFDC
+Index: linux-2.6.23.17/drivers/mtd/Kconfig
+===================================================================
+--- linux-2.6.23.17.orig/drivers/mtd/Kconfig
++++ linux-2.6.23.17/drivers/mtd/Kconfig
+@@ -288,6 +288,14 @@ config SSFDC
          This enables read only access to SmartMedia formatted NAND
          flash. You can mount it with FAT file system.
  
          This enables read only access to SmartMedia formatted NAND
          flash. You can mount it with FAT file system.
  
@@ -824,10 +806,10 @@ index fbec8cd..8848e8a 100644
  source "drivers/mtd/chips/Kconfig"
  
  source "drivers/mtd/maps/Kconfig"
  source "drivers/mtd/chips/Kconfig"
  
  source "drivers/mtd/maps/Kconfig"
-diff --git a/drivers/mtd/Makefile b/drivers/mtd/Makefile
-index 6d958a4..7f0b04b 100644
---- a/drivers/mtd/Makefile
-+++ b/drivers/mtd/Makefile
+Index: linux-2.6.23.17/drivers/mtd/Makefile
+===================================================================
+--- linux-2.6.23.17.orig/drivers/mtd/Makefile
++++ linux-2.6.23.17/drivers/mtd/Makefile
 @@ -22,6 +22,7 @@ obj-$(CONFIG_NFTL)           += nftl.o
  obj-$(CONFIG_INFTL)           += inftl.o
  obj-$(CONFIG_RFD_FTL)         += rfd_ftl.o
 @@ -22,6 +22,7 @@ obj-$(CONFIG_NFTL)           += nftl.o
  obj-$(CONFIG_INFTL)           += inftl.o
  obj-$(CONFIG_RFD_FTL)         += rfd_ftl.o
@@ -836,11 +818,11 @@ index 6d958a4..7f0b04b 100644
  
  nftl-objs             := nftlcore.o nftlmount.o
  inftl-objs            := inftlcore.o inftlmount.o
  
  nftl-objs             := nftlcore.o nftlmount.o
  inftl-objs            := inftlcore.o inftlmount.o
-diff --git a/drivers/mtd/chips/cfi_cmdset_0001.c b/drivers/mtd/chips/cfi_cmdset_0001.c
-index 2f19fa7..39eff9f 100644
---- a/drivers/mtd/chips/cfi_cmdset_0001.c
-+++ b/drivers/mtd/chips/cfi_cmdset_0001.c
-@@ -526,7 +526,7 @@ static int cfi_intelext_partition_fixup(struct mtd_info *mtd,
+Index: linux-2.6.23.17/drivers/mtd/chips/cfi_cmdset_0001.c
+===================================================================
+--- linux-2.6.23.17.orig/drivers/mtd/chips/cfi_cmdset_0001.c
++++ linux-2.6.23.17/drivers/mtd/chips/cfi_cmdset_0001.c
+@@ -526,7 +526,7 @@ static int cfi_intelext_partition_fixup(
        struct cfi_pri_intelext *extp = cfi->cmdset_priv;
  
        /*
        struct cfi_pri_intelext *extp = cfi->cmdset_priv;
  
        /*
@@ -849,7 +831,7 @@ index 2f19fa7..39eff9f 100644
         *
         * To support multiple partitions when available, we simply arrange
         * for each of them to have their own flchip structure even if they
         *
         * To support multiple partitions when available, we simply arrange
         * for each of them to have their own flchip structure even if they
-@@ -1780,7 +1780,7 @@ static int __xipram do_erase_oneblock(struct map_info *map, struct flchip *chip,
+@@ -1781,7 +1781,7 @@ static int __xipram do_erase_oneblock(st
        return ret;
  }
  
        return ret;
  }
  
@@ -858,7 +840,7 @@ index 2f19fa7..39eff9f 100644
  {
        unsigned long ofs, len;
        int ret;
  {
        unsigned long ofs, len;
        int ret;
-@@ -1930,7 +1930,7 @@ static int cfi_intelext_lock(struct mtd_info *mtd, loff_t ofs, size_t len)
+@@ -1931,7 +1931,7 @@ static int cfi_intelext_lock(struct mtd_
        printk(KERN_DEBUG "%s: lock status before, ofs=0x%08llx, len=0x%08X\n",
               __FUNCTION__, ofs, len);
        cfi_varsize_frob(mtd, do_printlockstatus_oneblock,
        printk(KERN_DEBUG "%s: lock status before, ofs=0x%08llx, len=0x%08X\n",
               __FUNCTION__, ofs, len);
        cfi_varsize_frob(mtd, do_printlockstatus_oneblock,
@@ -867,7 +849,7 @@ index 2f19fa7..39eff9f 100644
  #endif
  
        ret = cfi_varsize_frob(mtd, do_xxlock_oneblock,
  #endif
  
        ret = cfi_varsize_frob(mtd, do_xxlock_oneblock,
-@@ -1940,7 +1940,7 @@ static int cfi_intelext_lock(struct mtd_info *mtd, loff_t ofs, size_t len)
+@@ -1941,7 +1941,7 @@ static int cfi_intelext_lock(struct mtd_
        printk(KERN_DEBUG "%s: lock status after, ret=%d\n",
               __FUNCTION__, ret);
        cfi_varsize_frob(mtd, do_printlockstatus_oneblock,
        printk(KERN_DEBUG "%s: lock status after, ret=%d\n",
               __FUNCTION__, ret);
        cfi_varsize_frob(mtd, do_printlockstatus_oneblock,
@@ -876,7 +858,7 @@ index 2f19fa7..39eff9f 100644
  #endif
  
        return ret;
  #endif
  
        return ret;
-@@ -1954,7 +1954,7 @@ static int cfi_intelext_unlock(struct mtd_info *mtd, loff_t ofs, size_t len)
+@@ -1955,7 +1955,7 @@ static int cfi_intelext_unlock(struct mt
        printk(KERN_DEBUG "%s: lock status before, ofs=0x%08llx, len=0x%08X\n",
               __FUNCTION__, ofs, len);
        cfi_varsize_frob(mtd, do_printlockstatus_oneblock,
        printk(KERN_DEBUG "%s: lock status before, ofs=0x%08llx, len=0x%08X\n",
               __FUNCTION__, ofs, len);
        cfi_varsize_frob(mtd, do_printlockstatus_oneblock,
@@ -885,7 +867,7 @@ index 2f19fa7..39eff9f 100644
  #endif
  
        ret = cfi_varsize_frob(mtd, do_xxlock_oneblock,
  #endif
  
        ret = cfi_varsize_frob(mtd, do_xxlock_oneblock,
-@@ -1964,7 +1964,7 @@ static int cfi_intelext_unlock(struct mtd_info *mtd, loff_t ofs, size_t len)
+@@ -1965,7 +1965,7 @@ static int cfi_intelext_unlock(struct mt
        printk(KERN_DEBUG "%s: lock status after, ret=%d\n",
               __FUNCTION__, ret);
        cfi_varsize_frob(mtd, do_printlockstatus_oneblock,
        printk(KERN_DEBUG "%s: lock status after, ret=%d\n",
               __FUNCTION__, ret);
        cfi_varsize_frob(mtd, do_printlockstatus_oneblock,
@@ -894,7 +876,7 @@ index 2f19fa7..39eff9f 100644
  #endif
  
        return ret;
  #endif
  
        return ret;
-@@ -2255,7 +2255,7 @@ static void cfi_intelext_save_locks(struct mtd_info *mtd)
+@@ -2256,7 +2256,7 @@ static void cfi_intelext_save_locks(stru
                        adr = region->offset + block * len;
  
                        status = cfi_varsize_frob(mtd,
                        adr = region->offset + block * len;
  
                        status = cfi_varsize_frob(mtd,
@@ -903,11 +885,11 @@ index 2f19fa7..39eff9f 100644
                        if (status)
                                set_bit(block, region->lockmap);
                        else
                        if (status)
                                set_bit(block, region->lockmap);
                        else
-diff --git a/drivers/mtd/chips/cfi_cmdset_0002.c b/drivers/mtd/chips/cfi_cmdset_0002.c
-index 1f64458..389acc6 100644
---- a/drivers/mtd/chips/cfi_cmdset_0002.c
-+++ b/drivers/mtd/chips/cfi_cmdset_0002.c
-@@ -1609,7 +1609,7 @@ static int __xipram do_erase_oneblock(struct map_info *map, struct flchip *chip,
+Index: linux-2.6.23.17/drivers/mtd/chips/cfi_cmdset_0002.c
+===================================================================
+--- linux-2.6.23.17.orig/drivers/mtd/chips/cfi_cmdset_0002.c
++++ linux-2.6.23.17/drivers/mtd/chips/cfi_cmdset_0002.c
+@@ -1617,7 +1617,7 @@ static int __xipram do_erase_oneblock(st
  }
  
  
  }
  
  
@@ -916,10 +898,10 @@ index 1f64458..389acc6 100644
  {
        unsigned long ofs, len;
        int ret;
  {
        unsigned long ofs, len;
        int ret;
-diff --git a/drivers/mtd/chips/jedec_probe.c b/drivers/mtd/chips/jedec_probe.c
-index 58e561e..593e9d6 100644
---- a/drivers/mtd/chips/jedec_probe.c
-+++ b/drivers/mtd/chips/jedec_probe.c
+Index: linux-2.6.23.17/drivers/mtd/chips/jedec_probe.c
+===================================================================
+--- linux-2.6.23.17.orig/drivers/mtd/chips/jedec_probe.c
++++ linux-2.6.23.17/drivers/mtd/chips/jedec_probe.c
 @@ -70,6 +70,7 @@
  
  /* Fujitsu */
 @@ -70,6 +70,7 @@
  
  /* Fujitsu */
@@ -936,7 +918,7 @@ index 58e561e..593e9d6 100644
  #define M29W800DT     0x00D7
  #define M29W800DB     0x005B
  #define M29W160DT     0x22C4
  #define M29W800DT     0x00D7
  #define M29W800DB     0x005B
  #define M29W160DT     0x22C4
-@@ -646,6 +648,23 @@ static const struct amd_flash_info jedec_table[] = {
+@@ -646,6 +648,23 @@ static const struct amd_flash_info jedec
                }
        }, {
                .mfr_id         = MANUFACTURER_FUJITSU,
                }
        }, {
                .mfr_id         = MANUFACTURER_FUJITSU,
@@ -960,7 +942,7 @@ index 58e561e..593e9d6 100644
                .dev_id         = MBM29LV650UE,
                .name           = "Fujitsu MBM29LV650UE",
                .uaddr          = {
                .dev_id         = MBM29LV650UE,
                .name           = "Fujitsu MBM29LV650UE",
                .uaddr          = {
-@@ -1510,6 +1529,23 @@ static const struct amd_flash_info jedec_table[] = {
+@@ -1510,6 +1529,23 @@ static const struct amd_flash_info jedec
                         ERASEINFO(0x1000,256)
                 }
  
                         ERASEINFO(0x1000,256)
                 }
  
@@ -984,10 +966,10 @@ index 58e561e..593e9d6 100644
         }, {
                .mfr_id         = MANUFACTURER_ST,      /* FIXME - CFI device? */
                .dev_id         = M29W800DT,
         }, {
                .mfr_id         = MANUFACTURER_ST,      /* FIXME - CFI device? */
                .dev_id         = M29W800DT,
-diff --git a/drivers/mtd/devices/Kconfig b/drivers/mtd/devices/Kconfig
-index ff642f8..b4ea64d 100644
---- a/drivers/mtd/devices/Kconfig
-+++ b/drivers/mtd/devices/Kconfig
+Index: linux-2.6.23.17/drivers/mtd/devices/Kconfig
+===================================================================
+--- linux-2.6.23.17.orig/drivers/mtd/devices/Kconfig
++++ linux-2.6.23.17/drivers/mtd/devices/Kconfig
 @@ -69,12 +69,21 @@ config MTD_DATAFLASH26
          If you have such a board and such a DataFlash, say 'Y'.
  
 @@ -69,12 +69,21 @@ config MTD_DATAFLASH26
          If you have such a board and such a DataFlash, say 'Y'.
  
@@ -1014,10 +996,10 @@ index ff642f8..b4ea64d 100644
  
  config MTD_SLRAM
        tristate "Uncached system RAM"
  
  config MTD_SLRAM
        tristate "Uncached system RAM"
-diff --git a/drivers/mtd/devices/m25p80.c b/drivers/mtd/devices/m25p80.c
-index 78c2511..98df5bc 100644
---- a/drivers/mtd/devices/m25p80.c
-+++ b/drivers/mtd/devices/m25p80.c
+Index: linux-2.6.23.17/drivers/mtd/devices/m25p80.c
+===================================================================
+--- linux-2.6.23.17.orig/drivers/mtd/devices/m25p80.c
++++ linux-2.6.23.17/drivers/mtd/devices/m25p80.c
 @@ -1,5 +1,5 @@
  /*
 - * MTD SPI driver for ST M25Pxx flash chips
 @@ -1,5 +1,5 @@
  /*
 - * MTD SPI driver for ST M25Pxx flash chips
@@ -1084,7 +1066,7 @@ index 78c2511..98df5bc 100644
        u8                      command[4];
  };
  
        u8                      command[4];
  };
  
-@@ -150,8 +150,9 @@ static int wait_till_ready(struct m25p *flash)
+@@ -150,8 +150,9 @@ static int wait_till_ready(struct m25p *
   */
  static int erase_sector(struct m25p *flash, u32 offset)
  {
   */
  static int erase_sector(struct m25p *flash, u32 offset)
  {
@@ -1096,7 +1078,7 @@ index 78c2511..98df5bc 100644
  
        /* Wait until finished previous write command. */
        if (wait_till_ready(flash))
  
        /* Wait until finished previous write command. */
        if (wait_till_ready(flash))
-@@ -161,7 +162,7 @@ static int erase_sector(struct m25p *flash, u32 offset)
+@@ -161,7 +162,7 @@ static int erase_sector(struct m25p *fla
        write_enable(flash);
  
        /* Set up command buffer. */
        write_enable(flash);
  
        /* Set up command buffer. */
@@ -1105,7 +1087,7 @@ index 78c2511..98df5bc 100644
        flash->command[1] = offset >> 16;
        flash->command[2] = offset >> 8;
        flash->command[3] = offset;
        flash->command[1] = offset >> 16;
        flash->command[2] = offset >> 8;
        flash->command[3] = offset;
-@@ -201,13 +202,17 @@ static int m25p80_erase(struct mtd_info *mtd, struct erase_info *instr)
+@@ -201,13 +202,17 @@ static int m25p80_erase(struct mtd_info 
        addr = instr->addr;
        len = instr->len;
  
        addr = instr->addr;
        len = instr->len;
  
@@ -1125,7 +1107,7 @@ index 78c2511..98df5bc 100644
                        return -EIO;
                }
  
                        return -EIO;
                }
  
-@@ -215,7 +220,7 @@ static int m25p80_erase(struct mtd_info *mtd, struct erase_info *instr)
+@@ -215,7 +220,7 @@ static int m25p80_erase(struct mtd_info 
                len -= mtd->erasesize;
        }
  
                len -= mtd->erasesize;
        }
  
@@ -1134,7 +1116,7 @@ index 78c2511..98df5bc 100644
  
        instr->state = MTD_ERASE_DONE;
        mtd_erase_callback(instr);
  
        instr->state = MTD_ERASE_DONE;
        mtd_erase_callback(instr);
-@@ -260,16 +265,19 @@ static int m25p80_read(struct mtd_info *mtd, loff_t from, size_t len,
+@@ -260,16 +265,19 @@ static int m25p80_read(struct mtd_info *
        if (retlen)
                *retlen = 0;
  
        if (retlen)
                *retlen = 0;
  
@@ -1157,7 +1139,7 @@ index 78c2511..98df5bc 100644
  
        /* Set up the write data buffer. */
        flash->command[0] = OPCODE_READ;
  
        /* Set up the write data buffer. */
        flash->command[0] = OPCODE_READ;
-@@ -281,7 +289,7 @@ static int m25p80_read(struct mtd_info *mtd, loff_t from, size_t len,
+@@ -281,7 +289,7 @@ static int m25p80_read(struct mtd_info *
  
        *retlen = m.actual_length - sizeof(flash->command);
  
  
        *retlen = m.actual_length - sizeof(flash->command);
  
@@ -1166,7 +1148,7 @@ index 78c2511..98df5bc 100644
  
        return 0;
  }
  
        return 0;
  }
-@@ -323,7 +331,7 @@ static int m25p80_write(struct mtd_info *mtd, loff_t to, size_t len,
+@@ -323,7 +331,7 @@ static int m25p80_write(struct mtd_info 
        t[1].tx_buf = buf;
        spi_message_add_tail(&t[1], &m);
  
        t[1].tx_buf = buf;
        spi_message_add_tail(&t[1], &m);
  
@@ -1175,7 +1157,7 @@ index 78c2511..98df5bc 100644
  
        /* Wait until finished previous write command. */
        if (wait_till_ready(flash))
  
        /* Wait until finished previous write command. */
        if (wait_till_ready(flash))
-@@ -381,10 +389,10 @@ static int m25p80_write(struct mtd_info *mtd, loff_t to, size_t len,
+@@ -381,10 +389,10 @@ static int m25p80_write(struct mtd_info 
                        if (retlen)
                                *retlen += m.actual_length
                                        - sizeof(flash->command);
                        if (retlen)
                                *retlen += m.actual_length
                                        - sizeof(flash->command);
@@ -1189,7 +1171,7 @@ index 78c2511..98df5bc 100644
  
        return 0;
  }
  
        return 0;
  }
-@@ -398,24 +406,118 @@ static int m25p80_write(struct mtd_info *mtd, loff_t to, size_t len,
+@@ -398,24 +406,118 @@ static int m25p80_write(struct mtd_info 
  
  struct flash_info {
        char            *name;
  
  struct flash_info {
        char            *name;
@@ -1320,7 +1302,7 @@ index 78c2511..98df5bc 100644
  /*
   * board specific setup should have ensured the SPI clock used here
   * matches what the READ command supports, at least until this driver
  /*
   * board specific setup should have ensured the SPI clock used here
   * matches what the READ command supports, at least until this driver
-@@ -429,37 +531,51 @@ static int __devinit m25p_probe(struct spi_device *spi)
+@@ -429,37 +531,51 @@ static int __devinit m25p_probe(struct s
        unsigned                        i;
  
        /* Platform data helps sort out which chip type we have, as
        unsigned                        i;
  
        /* Platform data helps sort out which chip type we have, as
@@ -1391,7 +1373,7 @@ index 78c2511..98df5bc 100644
                flash->mtd.name = data->name;
        else
                flash->mtd.name = spi->dev.bus_id;
                flash->mtd.name = data->name;
        else
                flash->mtd.name = spi->dev.bus_id;
-@@ -468,17 +584,25 @@ static int __devinit m25p_probe(struct spi_device *spi)
+@@ -468,17 +584,25 @@ static int __devinit m25p_probe(struct s
        flash->mtd.writesize = 1;
        flash->mtd.flags = MTD_CAP_NORFLASH;
        flash->mtd.size = info->sector_size * info->n_sectors;
        flash->mtd.writesize = 1;
        flash->mtd.flags = MTD_CAP_NORFLASH;
        flash->mtd.size = info->sector_size * info->n_sectors;
@@ -1420,7 +1402,7 @@ index 78c2511..98df5bc 100644
                flash->mtd.name,
                flash->mtd.size, flash->mtd.size / (1024*1024),
                flash->mtd.erasesize, flash->mtd.erasesize / 1024,
                flash->mtd.name,
                flash->mtd.size, flash->mtd.size / (1024*1024),
                flash->mtd.erasesize, flash->mtd.erasesize / 1024,
-@@ -488,7 +612,7 @@ static int __devinit m25p_probe(struct spi_device *spi)
+@@ -488,7 +612,7 @@ static int __devinit m25p_probe(struct s
                for (i = 0; i < flash->mtd.numeraseregions; i++)
                        DEBUG(MTD_DEBUG_LEVEL2,
                                "mtd.eraseregions[%d] = { .offset = 0x%.8x, "
                for (i = 0; i < flash->mtd.numeraseregions; i++)
                        DEBUG(MTD_DEBUG_LEVEL2,
                                "mtd.eraseregions[%d] = { .offset = 0x%.8x, "
@@ -1429,7 +1411,7 @@ index 78c2511..98df5bc 100644
                                ".numblocks = %d }\n",
                                i, flash->mtd.eraseregions[i].offset,
                                flash->mtd.eraseregions[i].erasesize,
                                ".numblocks = %d }\n",
                                i, flash->mtd.eraseregions[i].offset,
                                flash->mtd.eraseregions[i].erasesize,
-@@ -516,14 +640,14 @@ static int __devinit m25p_probe(struct spi_device *spi)
+@@ -516,14 +640,14 @@ static int __devinit m25p_probe(struct s
                }
  
                if (nr_parts > 0) {
                }
  
                if (nr_parts > 0) {
@@ -1450,7 +1432,7 @@ index 78c2511..98df5bc 100644
                        }
                        flash->partitioned = 1;
                        return add_mtd_partitions(&flash->mtd, parts, nr_parts);
                        }
                        flash->partitioned = 1;
                        return add_mtd_partitions(&flash->mtd, parts, nr_parts);
-@@ -560,6 +684,11 @@ static struct spi_driver m25p80_driver = {
+@@ -560,6 +684,11 @@ static struct spi_driver m25p80_driver =
        },
        .probe  = m25p_probe,
        .remove = __devexit_p(m25p_remove),
        },
        .probe  = m25p_probe,
        .remove = __devexit_p(m25p_remove),
@@ -1462,10 +1444,10 @@ index 78c2511..98df5bc 100644
  };
  
  
  };
  
  
-diff --git a/drivers/mtd/devices/mtd_dataflash.c b/drivers/mtd/devices/mtd_dataflash.c
-index a987e91..a5ed6d2 100644
---- a/drivers/mtd/devices/mtd_dataflash.c
-+++ b/drivers/mtd/devices/mtd_dataflash.c
+Index: linux-2.6.23.17/drivers/mtd/devices/mtd_dataflash.c
+===================================================================
+--- linux-2.6.23.17.orig/drivers/mtd/devices/mtd_dataflash.c
++++ linux-2.6.23.17/drivers/mtd/devices/mtd_dataflash.c
 @@ -14,6 +14,7 @@
  #include <linux/slab.h>
  #include <linux/delay.h>
 @@ -14,6 +14,7 @@
  #include <linux/slab.h>
  #include <linux/delay.h>
@@ -1483,7 +1465,7 @@ index a987e91..a5ed6d2 100644
        struct spi_device       *spi;
  
        struct mtd_info         mtd;
        struct spi_device       *spi;
  
        struct mtd_info         mtd;
-@@ -167,7 +168,7 @@ static int dataflash_erase(struct mtd_info *mtd, struct erase_info *instr)
+@@ -167,7 +168,7 @@ static int dataflash_erase(struct mtd_in
        x.len = 4;
        spi_message_add_tail(&x, &msg);
  
        x.len = 4;
        spi_message_add_tail(&x, &msg);
  
@@ -1492,7 +1474,7 @@ index a987e91..a5ed6d2 100644
        while (instr->len > 0) {
                unsigned int    pageaddr;
                int             status;
        while (instr->len > 0) {
                unsigned int    pageaddr;
                int             status;
-@@ -210,7 +211,7 @@ static int dataflash_erase(struct mtd_info *mtd, struct erase_info *instr)
+@@ -210,7 +211,7 @@ static int dataflash_erase(struct mtd_in
                        instr->len -= priv->page_size;
                }
        }
                        instr->len -= priv->page_size;
                }
        }
@@ -1501,7 +1483,7 @@ index a987e91..a5ed6d2 100644
  
        /* Inform MTD subsystem that erase is complete */
        instr->state = MTD_ERASE_DONE;
  
        /* Inform MTD subsystem that erase is complete */
        instr->state = MTD_ERASE_DONE;
-@@ -266,7 +267,7 @@ static int dataflash_read(struct mtd_info *mtd, loff_t from, size_t len,
+@@ -266,7 +267,7 @@ static int dataflash_read(struct mtd_inf
        x[1].len = len;
        spi_message_add_tail(&x[1], &msg);
  
        x[1].len = len;
        spi_message_add_tail(&x[1], &msg);
  
@@ -1510,7 +1492,7 @@ index a987e91..a5ed6d2 100644
  
        /* Continuous read, max clock = f(car) which may be less than
         * the peak rate available.  Some chips support commands with
  
        /* Continuous read, max clock = f(car) which may be less than
         * the peak rate available.  Some chips support commands with
-@@ -279,7 +280,7 @@ static int dataflash_read(struct mtd_info *mtd, loff_t from, size_t len,
+@@ -279,7 +280,7 @@ static int dataflash_read(struct mtd_inf
        /* plus 4 "don't care" bytes */
  
        status = spi_sync(priv->spi, &msg);
        /* plus 4 "don't care" bytes */
  
        status = spi_sync(priv->spi, &msg);
@@ -1519,7 +1501,7 @@ index a987e91..a5ed6d2 100644
  
        if (status >= 0) {
                *retlen = msg.actual_length - 8;
  
        if (status >= 0) {
                *retlen = msg.actual_length - 8;
-@@ -336,7 +337,7 @@ static int dataflash_write(struct mtd_info *mtd, loff_t to, size_t len,
+@@ -336,7 +337,7 @@ static int dataflash_write(struct mtd_in
        else
                writelen = len;
  
        else
                writelen = len;
  
@@ -1528,7 +1510,7 @@ index a987e91..a5ed6d2 100644
        while (remaining > 0) {
                DEBUG(MTD_DEBUG_LEVEL3, "write @ %i:%i len=%i\n",
                        pageaddr, offset, writelen);
        while (remaining > 0) {
                DEBUG(MTD_DEBUG_LEVEL3, "write @ %i:%i len=%i\n",
                        pageaddr, offset, writelen);
-@@ -441,7 +442,7 @@ static int dataflash_write(struct mtd_info *mtd, loff_t to, size_t len,
+@@ -441,7 +442,7 @@ static int dataflash_write(struct mtd_in
                else
                        writelen = remaining;
        }
                else
                        writelen = remaining;
        }
@@ -1537,7 +1519,7 @@ index a987e91..a5ed6d2 100644
  
        return status;
  }
  
        return status;
  }
-@@ -463,7 +464,7 @@ add_dataflash(struct spi_device *spi, char *name,
+@@ -463,7 +464,7 @@ add_dataflash(struct spi_device *spi, ch
        if (!priv)
                return -ENOMEM;
  
        if (!priv)
                return -ENOMEM;
  
@@ -1546,10 +1528,10 @@ index a987e91..a5ed6d2 100644
        priv->spi = spi;
        priv->page_size = pagesize;
        priv->page_offset = pageoffset;
        priv->spi = spi;
        priv->page_size = pagesize;
        priv->page_offset = pageoffset;
-diff --git a/drivers/mtd/devices/pmc551.c b/drivers/mtd/devices/pmc551.c
-index e8f686f..7060a08 100644
---- a/drivers/mtd/devices/pmc551.c
-+++ b/drivers/mtd/devices/pmc551.c
+Index: linux-2.6.23.17/drivers/mtd/devices/pmc551.c
+===================================================================
+--- linux-2.6.23.17.orig/drivers/mtd/devices/pmc551.c
++++ linux-2.6.23.17/drivers/mtd/devices/pmc551.c
 @@ -30,8 +30,8 @@
   *
   * Notes:
 @@ -30,8 +30,8 @@
   *
   * Notes:
@@ -1570,7 +1552,7 @@ index e8f686f..7060a08 100644
   *    * MUST fix the init function to not spin on a register
   *    waiting for it to set .. this does not safely handle busted
   *    devices that never reset the register correctly which will
   *    * MUST fix the init function to not spin on a register
   *    waiting for it to set .. this does not safely handle busted
   *    devices that never reset the register correctly which will
-@@ -562,10 +562,10 @@ static u32 fixup_pmc551(struct pci_dev *dev)
+@@ -562,10 +562,10 @@ static u32 fixup_pmc551(struct pci_dev *
        /*
         * Some screen fun
         */
        /*
         * Some screen fun
         */
@@ -1635,11 +1617,11 @@ index e8f686f..7060a08 100644
                                "0x%p\n", priv->asize >> 20, priv->start);
                        pci_iounmap(priv->dev, priv->start);
                }
                                "0x%p\n", priv->asize >> 20, priv->start);
                        pci_iounmap(priv->dev, priv->start);
                }
-diff --git a/drivers/mtd/maps/nettel.c b/drivers/mtd/maps/nettel.c
-index 7b96cd0..0c9b305 100644
---- a/drivers/mtd/maps/nettel.c
-+++ b/drivers/mtd/maps/nettel.c
-@@ -158,68 +158,11 @@ static struct notifier_block nettel_notifier_block = {
+Index: linux-2.6.23.17/drivers/mtd/maps/nettel.c
+===================================================================
+--- linux-2.6.23.17.orig/drivers/mtd/maps/nettel.c
++++ linux-2.6.23.17/drivers/mtd/maps/nettel.c
+@@ -158,68 +158,11 @@ static struct notifier_block nettel_noti
        nettel_reboot_notifier, NULL, 0
  };
  
        nettel_reboot_notifier, NULL, 0
  };
  
@@ -1729,10 +1711,10 @@ index 7b96cd0..0c9b305 100644
  {
  #ifdef CONFIG_MTD_CFI_INTELEXT
        unregister_reboot_notifier(&nettel_notifier_block);
  {
  #ifdef CONFIG_MTD_CFI_INTELEXT
        unregister_reboot_notifier(&nettel_notifier_block);
-diff --git a/drivers/mtd/maps/pmcmsp-ramroot.c b/drivers/mtd/maps/pmcmsp-ramroot.c
-index 18049bc..30de5c0 100644
---- a/drivers/mtd/maps/pmcmsp-ramroot.c
-+++ b/drivers/mtd/maps/pmcmsp-ramroot.c
+Index: linux-2.6.23.17/drivers/mtd/maps/pmcmsp-ramroot.c
+===================================================================
+--- linux-2.6.23.17.orig/drivers/mtd/maps/pmcmsp-ramroot.c
++++ linux-2.6.23.17/drivers/mtd/maps/pmcmsp-ramroot.c
 @@ -79,7 +79,6 @@ static int __init init_rrmap(void)
                rr_mtd->owner = THIS_MODULE;
  
 @@ -79,7 +79,6 @@ static int __init init_rrmap(void)
                rr_mtd->owner = THIS_MODULE;
  
@@ -1741,10 +1723,10 @@ index 18049bc..30de5c0 100644
  
                return 0;
        }
  
                return 0;
        }
-diff --git a/drivers/mtd/mtd_blkdevs.c b/drivers/mtd/mtd_blkdevs.c
-index ef89780..74d9d30 100644
---- a/drivers/mtd/mtd_blkdevs.c
-+++ b/drivers/mtd/mtd_blkdevs.c
+Index: linux-2.6.23.17/drivers/mtd/mtd_blkdevs.c
+===================================================================
+--- linux-2.6.23.17.orig/drivers/mtd/mtd_blkdevs.c
++++ linux-2.6.23.17/drivers/mtd/mtd_blkdevs.c
 @@ -24,10 +24,9 @@
  #include <linux/kthread.h>
  #include <asm/uaccess.h>
 @@ -24,10 +24,9 @@
  #include <linux/kthread.h>
  #include <asm/uaccess.h>
@@ -1758,7 +1740,7 @@ index ef89780..74d9d30 100644
  
  struct mtd_blkcore_priv {
        struct task_struct *thread;
  
  struct mtd_blkcore_priv {
        struct task_struct *thread;
-@@ -202,7 +201,7 @@ static int blktrans_ioctl(struct inode *inode, struct file *file,
+@@ -202,7 +201,7 @@ static int blktrans_ioctl(struct inode *
        }
  }
  
        }
  }
  
@@ -1767,11 +1749,11 @@ index ef89780..74d9d30 100644
        .owner          = THIS_MODULE,
        .open           = blktrans_open,
        .release        = blktrans_release,
        .owner          = THIS_MODULE,
        .open           = blktrans_open,
        .release        = blktrans_release,
-diff --git a/drivers/mtd/mtdchar.c b/drivers/mtd/mtdchar.c
-index d091b24..22ed96c 100644
---- a/drivers/mtd/mtdchar.c
-+++ b/drivers/mtd/mtdchar.c
-@@ -136,7 +136,8 @@ static int mtd_close(struct inode *inode, struct file *file)
+Index: linux-2.6.23.17/drivers/mtd/mtdchar.c
+===================================================================
+--- linux-2.6.23.17.orig/drivers/mtd/mtdchar.c
++++ linux-2.6.23.17/drivers/mtd/mtdchar.c
+@@ -137,7 +137,8 @@ static int mtd_close(struct inode *inode
  
        DEBUG(MTD_DEBUG_LEVEL0, "MTD_close\n");
  
  
        DEBUG(MTD_DEBUG_LEVEL0, "MTD_close\n");
  
@@ -1781,10 +1763,10 @@ index d091b24..22ed96c 100644
                mtd->sync(mtd);
  
        put_mtd_device(mtd);
                mtd->sync(mtd);
  
        put_mtd_device(mtd);
-diff --git a/drivers/mtd/mtdcore.c b/drivers/mtd/mtdcore.c
-index c153b64..6c2645e 100644
---- a/drivers/mtd/mtdcore.c
-+++ b/drivers/mtd/mtdcore.c
+Index: linux-2.6.23.17/drivers/mtd/mtdcore.c
+===================================================================
+--- linux-2.6.23.17.orig/drivers/mtd/mtdcore.c
++++ linux-2.6.23.17/drivers/mtd/mtdcore.c
 @@ -22,6 +22,8 @@
  
  #include <linux/mtd/mtd.h>
 @@ -22,6 +22,8 @@
  
  #include <linux/mtd/mtd.h>
@@ -1794,10 +1776,10 @@ index c153b64..6c2645e 100644
  /* These are exported solely for the purpose of mtd_blkdevs.c. You
     should not use them for _anything_ else */
  DEFINE_MUTEX(mtd_table_mutex);
  /* These are exported solely for the purpose of mtd_blkdevs.c. You
     should not use them for _anything_ else */
  DEFINE_MUTEX(mtd_table_mutex);
-diff --git a/drivers/mtd/nand/Kconfig b/drivers/mtd/nand/Kconfig
-index f1d60b6..df25cab 100644
---- a/drivers/mtd/nand/Kconfig
-+++ b/drivers/mtd/nand/Kconfig
+Index: linux-2.6.23.17/drivers/mtd/nand/Kconfig
+===================================================================
+--- linux-2.6.23.17.orig/drivers/mtd/nand/Kconfig
++++ linux-2.6.23.17/drivers/mtd/nand/Kconfig
 @@ -134,10 +134,10 @@ config MTD_NAND_S3C2410_HWECC
  
  config MTD_NAND_NDFC
 @@ -134,10 +134,10 @@ config MTD_NAND_S3C2410_HWECC
  
  config MTD_NAND_NDFC
@@ -1820,11 +1802,11 @@ index f1d60b6..df25cab 100644
          laptop.
  
  config MTD_NAND_CS553X
          laptop.
  
  config MTD_NAND_CS553X
-diff --git a/drivers/mtd/nand/cafe_nand.c b/drivers/mtd/nand/cafe_nand.c
-index cff969d..cca69b3 100644
---- a/drivers/mtd/nand/cafe_nand.c
-+++ b/drivers/mtd/nand/cafe_nand.c
-@@ -821,14 +821,53 @@ static struct pci_device_id cafe_nand_tbl[] = {
+Index: linux-2.6.23.17/drivers/mtd/nand/cafe_nand.c
+===================================================================
+--- linux-2.6.23.17.orig/drivers/mtd/nand/cafe_nand.c
++++ linux-2.6.23.17/drivers/mtd/nand/cafe_nand.c
+@@ -822,14 +822,53 @@ static struct pci_device_id cafe_nand_tb
  
  MODULE_DEVICE_TABLE(pci, cafe_nand_tbl);
  
  
  MODULE_DEVICE_TABLE(pci, cafe_nand_tbl);
  
@@ -1879,10 +1861,10 @@ index cff969d..cca69b3 100644
  #endif
  };
  
  #endif
  };
  
-diff --git a/drivers/mtd/nand/ndfc.c b/drivers/mtd/nand/ndfc.c
-index fd7a8d5..1c0e89f 100644
---- a/drivers/mtd/nand/ndfc.c
-+++ b/drivers/mtd/nand/ndfc.c
+Index: linux-2.6.23.17/drivers/mtd/nand/ndfc.c
+===================================================================
+--- linux-2.6.23.17.orig/drivers/mtd/nand/ndfc.c
++++ linux-2.6.23.17/drivers/mtd/nand/ndfc.c
 @@ -24,7 +24,11 @@
  #include <linux/platform_device.h>
  
 @@ -24,7 +24,11 @@
  #include <linux/platform_device.h>
  
@@ -1895,7 +1877,7 @@ index fd7a8d5..1c0e89f 100644
  
  struct ndfc_nand_mtd {
        struct mtd_info                 mtd;
  
  struct ndfc_nand_mtd {
        struct mtd_info                 mtd;
-@@ -230,7 +234,11 @@ static int ndfc_nand_probe(struct platform_device *pdev)
+@@ -230,7 +234,11 @@ static int ndfc_nand_probe(struct platfo
        struct ndfc_controller *ndfc = &ndfc_ctrl;
        unsigned long long phys = settings->ndfc_erpn | res->start;
  
        struct ndfc_controller *ndfc = &ndfc_ctrl;
        unsigned long long phys = settings->ndfc_erpn | res->start;
  
@@ -1907,10 +1889,10 @@ index fd7a8d5..1c0e89f 100644
        if (!ndfc->ndfcbase) {
                printk(KERN_ERR "NDFC: ioremap failed\n");
                return -EIO;
        if (!ndfc->ndfcbase) {
                printk(KERN_ERR "NDFC: ioremap failed\n");
                return -EIO;
-diff --git a/drivers/mtd/onenand/Kconfig b/drivers/mtd/onenand/Kconfig
-index c257d39..cb41cbc 100644
---- a/drivers/mtd/onenand/Kconfig
-+++ b/drivers/mtd/onenand/Kconfig
+Index: linux-2.6.23.17/drivers/mtd/onenand/Kconfig
+===================================================================
+--- linux-2.6.23.17.orig/drivers/mtd/onenand/Kconfig
++++ linux-2.6.23.17/drivers/mtd/onenand/Kconfig
 @@ -40,4 +40,27 @@ config MTD_ONENAND_OTP
  
          OTP block is fully-guaranteed to be a valid block.
 @@ -40,4 +40,27 @@ config MTD_ONENAND_OTP
  
          OTP block is fully-guaranteed to be a valid block.
@@ -1939,10 +1921,10 @@ index c257d39..cb41cbc 100644
 +        OneNAND MTD layer.
 +
  endif # MTD_ONENAND
 +        OneNAND MTD layer.
 +
  endif # MTD_ONENAND
-diff --git a/drivers/mtd/onenand/Makefile b/drivers/mtd/onenand/Makefile
-index 269cfe4..4d2eacf 100644
---- a/drivers/mtd/onenand/Makefile
-+++ b/drivers/mtd/onenand/Makefile
+Index: linux-2.6.23.17/drivers/mtd/onenand/Makefile
+===================================================================
+--- linux-2.6.23.17.orig/drivers/mtd/onenand/Makefile
++++ linux-2.6.23.17/drivers/mtd/onenand/Makefile
 @@ -8,4 +8,7 @@ obj-$(CONFIG_MTD_ONENAND)              += onenand.o
  # Board specific.
  obj-$(CONFIG_MTD_ONENAND_GENERIC)     += generic.o
 @@ -8,4 +8,7 @@ obj-$(CONFIG_MTD_ONENAND)              += onenand.o
  # Board specific.
  obj-$(CONFIG_MTD_ONENAND_GENERIC)     += generic.o
@@ -1951,11 +1933,11 @@ index 269cfe4..4d2eacf 100644
 +obj-$(CONFIG_MTD_ONENAND_SIM)         += onenand_sim.o
 +
  onenand-objs = onenand_base.o onenand_bbt.o
 +obj-$(CONFIG_MTD_ONENAND_SIM)         += onenand_sim.o
 +
  onenand-objs = onenand_base.o onenand_bbt.o
-diff --git a/drivers/mtd/onenand/onenand_base.c b/drivers/mtd/onenand/onenand_base.c
-index 0537fac..7d194cf 100644
---- a/drivers/mtd/onenand/onenand_base.c
-+++ b/drivers/mtd/onenand/onenand_base.c
-@@ -206,6 +206,15 @@ static int onenand_command(struct mtd_info *mtd, int cmd, loff_t addr, size_t le
+Index: linux-2.6.23.17/drivers/mtd/onenand/onenand_base.c
+===================================================================
+--- linux-2.6.23.17.orig/drivers/mtd/onenand/onenand_base.c
++++ linux-2.6.23.17/drivers/mtd/onenand/onenand_base.c
+@@ -206,6 +206,15 @@ static int onenand_command(struct mtd_in
        default:
                block = (int) (addr >> this->erase_shift);
                page = (int) (addr >> this->page_shift);
        default:
                block = (int) (addr >> this->erase_shift);
                page = (int) (addr >> this->page_shift);
@@ -1971,7 +1953,7 @@ index 0537fac..7d194cf 100644
                page &= this->page_mask;
                break;
        }
                page &= this->page_mask;
                break;
        }
-@@ -216,8 +225,12 @@ static int onenand_command(struct mtd_info *mtd, int cmd, loff_t addr, size_t le
+@@ -216,8 +225,12 @@ static int onenand_command(struct mtd_in
                value = onenand_bufferram_address(this, block);
                this->write_word(value, this->base + ONENAND_REG_START_ADDRESS2);
  
                value = onenand_bufferram_address(this, block);
                this->write_word(value, this->base + ONENAND_REG_START_ADDRESS2);
  
@@ -1986,7 +1968,7 @@ index 0537fac..7d194cf 100644
  
                return 0;
        }
  
                return 0;
        }
-@@ -247,6 +260,8 @@ static int onenand_command(struct mtd_info *mtd, int cmd, loff_t addr, size_t le
+@@ -247,6 +260,8 @@ static int onenand_command(struct mtd_in
                        break;
  
                default:
                        break;
  
                default:
@@ -1995,7 +1977,7 @@ index 0537fac..7d194cf 100644
                        dataram = ONENAND_CURRENT_BUFFERRAM(this);
                        break;
                }
                        dataram = ONENAND_CURRENT_BUFFERRAM(this);
                        break;
                }
-@@ -445,8 +460,9 @@ static inline int onenand_bufferram_offset(struct mtd_info *mtd, int area)
+@@ -445,8 +460,9 @@ static inline int onenand_bufferram_offs
        struct onenand_chip *this = mtd->priv;
  
        if (ONENAND_CURRENT_BUFFERRAM(this)) {
        struct onenand_chip *this = mtd->priv;
  
        if (ONENAND_CURRENT_BUFFERRAM(this)) {
@@ -2006,7 +1988,7 @@ index 0537fac..7d194cf 100644
                if (area == ONENAND_SPARERAM)
                        return mtd->oobsize;
        }
                if (area == ONENAND_SPARERAM)
                        return mtd->oobsize;
        }
-@@ -572,6 +588,30 @@ static int onenand_write_bufferram(struct mtd_info *mtd, int area,
+@@ -572,6 +588,30 @@ static int onenand_write_bufferram(struc
  }
  
  /**
  }
  
  /**
@@ -2037,7 +2019,7 @@ index 0537fac..7d194cf 100644
   * onenand_check_bufferram - [GENERIC] Check BufferRAM information
   * @param mtd         MTD data structure
   * @param addr                address to check
   * onenand_check_bufferram - [GENERIC] Check BufferRAM information
   * @param mtd         MTD data structure
   * @param addr                address to check
-@@ -585,7 +625,10 @@ static int onenand_check_bufferram(struct mtd_info *mtd, loff_t addr)
+@@ -585,7 +625,10 @@ static int onenand_check_bufferram(struc
        int blockpage, found = 0;
        unsigned int i;
  
        int blockpage, found = 0;
        unsigned int i;
  
@@ -2049,7 +2031,7 @@ index 0537fac..7d194cf 100644
  
        /* Is there valid data? */
        i = ONENAND_CURRENT_BUFFERRAM(this);
  
        /* Is there valid data? */
        i = ONENAND_CURRENT_BUFFERRAM(this);
-@@ -625,7 +668,10 @@ static void onenand_update_bufferram(struct mtd_info *mtd, loff_t addr,
+@@ -625,7 +668,10 @@ static void onenand_update_bufferram(str
        int blockpage;
        unsigned int i;
  
        int blockpage;
        unsigned int i;
  
@@ -2061,7 +2043,7 @@ index 0537fac..7d194cf 100644
  
        /* Invalidate another BufferRAM */
        i = ONENAND_NEXT_BUFFERRAM(this);
  
        /* Invalidate another BufferRAM */
        i = ONENAND_NEXT_BUFFERRAM(this);
-@@ -734,6 +780,7 @@ static int onenand_read(struct mtd_info *mtd, loff_t from, size_t len,
+@@ -734,6 +780,7 @@ static int onenand_read(struct mtd_info 
        int read = 0, column;
        int thislen;
        int ret = 0, boundary = 0;
        int read = 0, column;
        int thislen;
        int ret = 0, boundary = 0;
@@ -2069,7 +2051,7 @@ index 0537fac..7d194cf 100644
  
        DEBUG(MTD_DEBUG_LEVEL3, "onenand_read: from = 0x%08x, len = %i\n", (unsigned int) from, (int) len);
  
  
        DEBUG(MTD_DEBUG_LEVEL3, "onenand_read: from = 0x%08x, len = %i\n", (unsigned int) from, (int) len);
  
-@@ -754,22 +801,22 @@ static int onenand_read(struct mtd_info *mtd, loff_t from, size_t len,
+@@ -754,22 +801,22 @@ static int onenand_read(struct mtd_info 
        /* Do first load to bufferRAM */
        if (read < len) {
                if (!onenand_check_bufferram(mtd, from)) {
        /* Do first load to bufferRAM */
        if (read < len) {
                if (!onenand_check_bufferram(mtd, from)) {
@@ -2098,7 +2080,7 @@ index 0537fac..7d194cf 100644
                        /*
                         * Chip boundary handling in DDP
                         * Now we issued chip 1 read and pointed chip 1
                        /*
                         * Chip boundary handling in DDP
                         * Now we issued chip 1 read and pointed chip 1
-@@ -794,7 +841,7 @@ static int onenand_read(struct mtd_info *mtd, loff_t from, size_t len,
+@@ -794,7 +841,7 @@ static int onenand_read(struct mtd_info 
                        this->write_word(ONENAND_DDP_CHIP1, this->base + ONENAND_REG_START_ADDRESS2);
                ONENAND_SET_NEXT_BUFFERRAM(this);
                buf += thislen;
                        this->write_word(ONENAND_DDP_CHIP1, this->base + ONENAND_REG_START_ADDRESS2);
                ONENAND_SET_NEXT_BUFFERRAM(this);
                buf += thislen;
@@ -2107,7 +2089,7 @@ index 0537fac..7d194cf 100644
                column = 0;
                cond_resched();
                /* Now wait for load */
                column = 0;
                cond_resched();
                /* Now wait for load */
-@@ -1079,7 +1126,7 @@ int onenand_bbt_read_oob(struct mtd_info *mtd, loff_t from,
+@@ -1079,7 +1126,7 @@ int onenand_bbt_read_oob(struct mtd_info
                /* Read more? */
                if (read < len) {
                        /* Update Page size */
                /* Read more? */
                if (read < len) {
                        /* Update Page size */
@@ -2116,7 +2098,7 @@ index 0537fac..7d194cf 100644
                        column = 0;
                }
        }
                        column = 0;
                }
        }
-@@ -1135,12 +1182,12 @@ static int onenand_verify(struct mtd_info *mtd, const u_char *buf, loff_t addr,
+@@ -1135,12 +1182,12 @@ static int onenand_verify(struct mtd_inf
        int thislen, column;
  
        while (len != 0) {
        int thislen, column;
  
        while (len != 0) {
@@ -2134,7 +2116,7 @@ index 0537fac..7d194cf 100644
  
                onenand_update_bufferram(mtd, addr, 0);
  
  
                onenand_update_bufferram(mtd, addr, 0);
  
-@@ -1236,6 +1283,10 @@ static int onenand_write(struct mtd_info *mtd, loff_t to, size_t len,
+@@ -1236,6 +1283,10 @@ static int onenand_write(struct mtd_info
  
                /* In partial page write we don't update bufferram */
                onenand_update_bufferram(mtd, to, !ret && !subpage);
  
                /* In partial page write we don't update bufferram */
                onenand_update_bufferram(mtd, to, !ret && !subpage);
@@ -2145,7 +2127,7 @@ index 0537fac..7d194cf 100644
  
                if (ret) {
                        printk(KERN_ERR "onenand_write: write filaed %d\n", ret);
  
                if (ret) {
                        printk(KERN_ERR "onenand_write: write filaed %d\n", ret);
-@@ -1384,6 +1435,10 @@ static int onenand_do_write_oob(struct mtd_info *mtd, loff_t to, size_t len,
+@@ -1384,6 +1435,10 @@ static int onenand_do_write_oob(struct m
                this->command(mtd, ONENAND_CMD_PROGOOB, to, mtd->oobsize);
  
                onenand_update_bufferram(mtd, to, 0);
                this->command(mtd, ONENAND_CMD_PROGOOB, to, mtd->oobsize);
  
                onenand_update_bufferram(mtd, to, 0);
@@ -2156,7 +2138,7 @@ index 0537fac..7d194cf 100644
  
                ret = this->wait(mtd, FL_WRITING);
                if (ret) {
  
                ret = this->wait(mtd, FL_WRITING);
                if (ret) {
-@@ -2107,6 +2162,7 @@ static int onenand_lock_user_prot_reg(struct mtd_info *mtd, loff_t from,
+@@ -2107,6 +2162,7 @@ static int onenand_lock_user_prot_reg(st
   *
   * Check and set OneNAND features
   * - lock scheme
   *
   * Check and set OneNAND features
   * - lock scheme
@@ -2164,7 +2146,7 @@ index 0537fac..7d194cf 100644
   */
  static void onenand_check_features(struct mtd_info *mtd)
  {
   */
  static void onenand_check_features(struct mtd_info *mtd)
  {
-@@ -2118,19 +2174,35 @@ static void onenand_check_features(struct mtd_info *mtd)
+@@ -2118,19 +2174,35 @@ static void onenand_check_features(struc
        process = this->version_id >> ONENAND_VERSION_PROCESS_SHIFT;
  
        /* Lock scheme */
        process = this->version_id >> ONENAND_VERSION_PROCESS_SHIFT;
  
        /* Lock scheme */
@@ -2209,7 +2191,7 @@ index 0537fac..7d194cf 100644
  }
  
  /**
  }
  
  /**
-@@ -2257,6 +2329,8 @@ static int onenand_probe(struct mtd_info *mtd)
+@@ -2257,6 +2329,8 @@ static int onenand_probe(struct mtd_info
        this->erase_shift = ffs(mtd->erasesize) - 1;
        this->page_shift = ffs(mtd->writesize) - 1;
        this->page_mask = (1 << (this->erase_shift - this->page_shift)) - 1;
        this->erase_shift = ffs(mtd->erasesize) - 1;
        this->page_shift = ffs(mtd->writesize) - 1;
        this->page_mask = (1 << (this->erase_shift - this->page_shift)) - 1;
@@ -2218,7 +2200,7 @@ index 0537fac..7d194cf 100644
  
        /* REVIST: Multichip handling */
  
  
        /* REVIST: Multichip handling */
  
-@@ -2265,6 +2339,17 @@ static int onenand_probe(struct mtd_info *mtd)
+@@ -2265,6 +2339,17 @@ static int onenand_probe(struct mtd_info
        /* Check OneNAND features */
        onenand_check_features(mtd);
  
        /* Check OneNAND features */
        onenand_check_features(mtd);
  
@@ -2236,36 +2218,11 @@ index 0537fac..7d194cf 100644
        return 0;
  }
  
        return 0;
  }
  
-diff --git a/drivers/net/forcedeth.c b/drivers/net/forcedeth.c
-index 1938d6d..cc01dbd 100644
---- a/drivers/net/forcedeth.c
-+++ b/drivers/net/forcedeth.c
-@@ -3556,10 +3556,12 @@ static int nv_request_irq(struct net_device *dev, int intr_test)
-       }
-       if (ret != 0 && np->msi_flags & NV_MSI_CAPABLE) {
-               if ((ret = pci_enable_msi(np->pci_dev)) == 0) {
-+                      pci_intx(np->pci_dev, 0);
-                       np->msi_flags |= NV_MSI_ENABLED;
-                       if (request_irq(np->pci_dev->irq, handler, IRQF_SHARED, dev->name, dev) != 0) {
-                               printk(KERN_INFO "forcedeth: request_irq failed %d\n", ret);
-                               pci_disable_msi(np->pci_dev);
-+                              pci_intx(np->pci_dev, 1);
-                               np->msi_flags &= ~NV_MSI_ENABLED;
-                               goto out_err;
-                       }
-@@ -3601,6 +3603,7 @@ static void nv_free_irq(struct net_device *dev)
-               free_irq(np->pci_dev->irq, dev);
-               if (np->msi_flags & NV_MSI_ENABLED) {
-                       pci_disable_msi(np->pci_dev);
-+                      pci_intx(np->pci_dev, 1);
-                       np->msi_flags &= ~NV_MSI_ENABLED;
-               }
-       }
-diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
-index 7dcaa09..eb69d4d 100644
---- a/drivers/pci/quirks.c
-+++ b/drivers/pci/quirks.c
-@@ -1390,6 +1390,17 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL,    0x260a, quirk_intel_pcie_pm);
+Index: linux-2.6.23.17/drivers/pci/quirks.c
+===================================================================
+--- linux-2.6.23.17.orig/drivers/pci/quirks.c
++++ linux-2.6.23.17/drivers/pci/quirks.c
+@@ -1396,6 +1396,17 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_IN
  DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL,  0x260b, quirk_intel_pcie_pm);
  
  /*
  DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL,  0x260b, quirk_intel_pcie_pm);
  
  /*
@@ -2283,10 +2240,10 @@ index 7dcaa09..eb69d4d 100644
   * Toshiba TC86C001 IDE controller reports the standard 8-byte BAR0 size
   * but the PIO transfers won't work if BAR0 falls at the odd 8 bytes.
   * Re-allocate the region if needed...
   * Toshiba TC86C001 IDE controller reports the standard 8-byte BAR0 size
   * but the PIO transfers won't work if BAR0 falls at the odd 8 bytes.
   * Re-allocate the region if needed...
-diff --git a/drivers/video/Kconfig b/drivers/video/Kconfig
-index 5216c11..3e3df7e 100644
---- a/drivers/video/Kconfig
-+++ b/drivers/video/Kconfig
+Index: linux-2.6.23.17/drivers/video/Kconfig
+===================================================================
+--- linux-2.6.23.17.orig/drivers/video/Kconfig
++++ linux-2.6.23.17/drivers/video/Kconfig
 @@ -594,7 +594,7 @@ config FB_TGA
  
  config FB_VESA
 @@ -594,7 +594,7 @@ config FB_TGA
  
  config FB_VESA
@@ -2330,11 +2287,11 @@ index 5216c11..3e3df7e 100644
  config FB_XILINX
        tristate "Xilinx frame buffer support"
        depends on FB && XILINX_VIRTEX
  config FB_XILINX
        tristate "Xilinx frame buffer support"
        depends on FB && XILINX_VIRTEX
-diff --git a/drivers/video/Makefile b/drivers/video/Makefile
-index 06eec7b..fc535fb 100644
---- a/drivers/video/Makefile
-+++ b/drivers/video/Makefile
-@@ -111,6 +111,7 @@ obj-$(CONFIG_FB_PNX4008_DUM_RGB)  += pnx4008/
+Index: linux-2.6.23.17/drivers/video/Makefile
+===================================================================
+--- linux-2.6.23.17.orig/drivers/video/Makefile
++++ linux-2.6.23.17/drivers/video/Makefile
+@@ -111,6 +111,7 @@ obj-$(CONFIG_FB_PNX4008_DUM_RGB)  += pnx
  obj-$(CONFIG_FB_IBM_GXT4500)    += gxt4500.o
  obj-$(CONFIG_FB_PS3)            += ps3fb.o
  obj-$(CONFIG_FB_SM501)            += sm501fb.o
  obj-$(CONFIG_FB_IBM_GXT4500)    += gxt4500.o
  obj-$(CONFIG_FB_PS3)            += ps3fb.o
  obj-$(CONFIG_FB_SM501)            += sm501fb.o
@@ -2342,10 +2299,10 @@ index 06eec7b..fc535fb 100644
  obj-$(CONFIG_FB_XILINX)           += xilinxfb.o
  obj-$(CONFIG_FB_OMAP)             += omap/
  
  obj-$(CONFIG_FB_XILINX)           += xilinxfb.o
  obj-$(CONFIG_FB_OMAP)             += omap/
  
-diff --git a/drivers/video/fbmem.c b/drivers/video/fbmem.c
-index 0740272..4ac6a95 100644
---- a/drivers/video/fbmem.c
-+++ b/drivers/video/fbmem.c
+Index: linux-2.6.23.17/drivers/video/fbmem.c
+===================================================================
+--- linux-2.6.23.17.orig/drivers/video/fbmem.c
++++ linux-2.6.23.17/drivers/video/fbmem.c
 @@ -820,6 +820,53 @@ static void try_to_load(int fb)
  #endif /* CONFIG_KMOD */
  
 @@ -820,6 +820,53 @@ static void try_to_load(int fb)
  #endif /* CONFIG_KMOD */
  
@@ -2400,10 +2357,10 @@ index 0740272..4ac6a95 100644
  fb_pan_display(struct fb_info *info, struct fb_var_screeninfo *var)
  {
        struct fb_fix_screeninfo *fix = &info->fix;
  fb_pan_display(struct fb_info *info, struct fb_var_screeninfo *var)
  {
        struct fb_fix_screeninfo *fix = &info->fix;
-diff --git a/drivers/video/geode/Makefile b/drivers/video/geode/Makefile
-index 957304b..5c98da1 100644
---- a/drivers/video/geode/Makefile
-+++ b/drivers/video/geode/Makefile
+Index: linux-2.6.23.17/drivers/video/geode/Makefile
+===================================================================
+--- linux-2.6.23.17.orig/drivers/video/geode/Makefile
++++ linux-2.6.23.17/drivers/video/geode/Makefile
 @@ -5,5 +5,5 @@ obj-$(CONFIG_FB_GEODE_GX)  += gxfb.o
  obj-$(CONFIG_FB_GEODE_LX)  += lxfb.o
  
 @@ -5,5 +5,5 @@ obj-$(CONFIG_FB_GEODE_GX)  += gxfb.o
  obj-$(CONFIG_FB_GEODE_LX)  += lxfb.o
  
@@ -2411,10 +2368,10 @@ index 957304b..5c98da1 100644
 -gxfb-objs  := gxfb_core.o display_gx.o video_gx.o
 +gxfb-objs  := gxfb_core.o display_gx.o video_gx.o suspend_gx.o
  lxfb-objs  := lxfb_core.o lxfb_ops.o
 -gxfb-objs  := gxfb_core.o display_gx.o video_gx.o
 +gxfb-objs  := gxfb_core.o display_gx.o video_gx.o suspend_gx.o
  lxfb-objs  := lxfb_core.o lxfb_ops.o
-diff --git a/drivers/video/geode/display_gx.c b/drivers/video/geode/display_gx.c
-index 0f16e4b..a432b99 100644
---- a/drivers/video/geode/display_gx.c
-+++ b/drivers/video/geode/display_gx.c
+Index: linux-2.6.23.17/drivers/video/geode/display_gx.c
+===================================================================
+--- linux-2.6.23.17.orig/drivers/video/geode/display_gx.c
++++ linux-2.6.23.17/drivers/video/geode/display_gx.c
 @@ -11,26 +11,44 @@
   *   Free Software Foundation; either version 2 of the License, or * (at your
   *   option) any later version.
 @@ -11,26 +11,44 @@
   *   Free Software Foundation; either version 2 of the License, or * (at your
   *   option) any later version.
@@ -2472,44 +2429,48 @@ index 0f16e4b..a432b99 100644
  
  int gx_line_delta(int xres, int bpp)
  {
  
  int gx_line_delta(int xres, int bpp)
  {
-@@ -63,23 +80,23 @@ static void gx_set_mode(struct fb_info *info)
+@@ -63,23 +80,23 @@ static void gx_set_mode(struct fb_info *
        gcfg = readl(par->dc_regs + DC_GENERAL_CFG);
        dcfg = readl(par->dc_regs + DC_DISPLAY_CFG);
  
 -      /* Disable the timing generator. */
 -      dcfg &= ~(DC_DCFG_TGEN);
 -      writel(dcfg, par->dc_regs + DC_DISPLAY_CFG);
        gcfg = readl(par->dc_regs + DC_GENERAL_CFG);
        dcfg = readl(par->dc_regs + DC_DISPLAY_CFG);
  
 -      /* Disable the timing generator. */
 -      dcfg &= ~(DC_DCFG_TGEN);
 -      writel(dcfg, par->dc_regs + DC_DISPLAY_CFG);
-+      /* Programming the clock is costly and ugly, so avoid if if we can */
+-
 -      /* Wait for pending memory requests before disabling the FIFO load. */
 -      udelay(100);
 -      /* Wait for pending memory requests before disabling the FIFO load. */
 -      udelay(100);
+-
+-      /* Disable FIFO load and compression. */
+-      gcfg &= ~(DC_GCFG_DFLE | DC_GCFG_CMPE | DC_GCFG_DECE);
+-      writel(gcfg, par->dc_regs + DC_GENERAL_CFG);
+-
+-      /* Setup DCLK and its divisor. */
+-      par->vid_ops->set_dclk(info);
+-
+-      /*
+-       * Setup new mode.
+-       */
++      /* Programming the clock is costly and ugly, so avoid if if we can */
++
 +      if (par->curdclk != info->var.pixclock) {
 +              /* Disable the timing generator. */
 +              dcfg &= ~(DC_DCFG_TGEN);
 +              writel(dcfg, par->dc_regs + DC_DISPLAY_CFG);
 +      if (par->curdclk != info->var.pixclock) {
 +              /* Disable the timing generator. */
 +              dcfg &= ~(DC_DCFG_TGEN);
 +              writel(dcfg, par->dc_regs + DC_DISPLAY_CFG);
--      /* Disable FIFO load and compression. */
--      gcfg &= ~(DC_GCFG_DFLE | DC_GCFG_CMPE | DC_GCFG_DECE);
--      writel(gcfg, par->dc_regs + DC_GENERAL_CFG);
++
 +              /* Wait for pending memory requests before disabling the FIFO load. */
 +              udelay(100);
 +              /* Wait for pending memory requests before disabling the FIFO load. */
 +              udelay(100);
--      /* Setup DCLK and its divisor. */
--      par->vid_ops->set_dclk(info);
++
 +              /* Disable FIFO load and compression. */
 +              gcfg &= ~(DC_GCFG_DFLE | DC_GCFG_CMPE | DC_GCFG_DECE);
 +              writel(gcfg, par->dc_regs + DC_GENERAL_CFG);
 +              /* Disable FIFO load and compression. */
 +              gcfg &= ~(DC_GCFG_DFLE | DC_GCFG_CMPE | DC_GCFG_DECE);
 +              writel(gcfg, par->dc_regs + DC_GENERAL_CFG);
--      /*
--       * Setup new mode.
--       */
++
 +              /* Setup DCLK and its divisor. */
 +              par->vid_ops->set_dclk(info);
 +      }
  
        /* Clear all unused feature bits. */
        gcfg &= DC_GCFG_YUVM | DC_GCFG_VDSE;
 +              /* Setup DCLK and its divisor. */
 +              par->vid_ops->set_dclk(info);
 +      }
  
        /* Clear all unused feature bits. */
        gcfg &= DC_GCFG_YUVM | DC_GCFG_VDSE;
-@@ -90,12 +107,13 @@ static void gx_set_mode(struct fb_info *info)
+@@ -90,12 +107,13 @@ static void gx_set_mode(struct fb_info *
        gcfg |= (6 << DC_GCFG_DFHPEL_POS) | (5 << DC_GCFG_DFHPSL_POS) | DC_GCFG_DFLE;
  
        /* Framebuffer start offset. */
        gcfg |= (6 << DC_GCFG_DFHPEL_POS) | (5 << DC_GCFG_DFHPSL_POS) | DC_GCFG_DFLE;
  
        /* Framebuffer start offset. */
@@ -2527,7 +2488,7 @@ index 0f16e4b..a432b99 100644
  
  
        /* Enable graphics and video data and unmask address lines. */
  
  
        /* Enable graphics and video data and unmask address lines. */
-@@ -134,17 +152,16 @@ static void gx_set_mode(struct fb_info *info)
+@@ -134,17 +152,16 @@ static void gx_set_mode(struct fb_info *
        vblankend = vsyncend + info->var.upper_margin;
        vtotal = vblankend;
  
        vblankend = vsyncend + info->var.upper_margin;
        vtotal = vblankend;
  
@@ -2553,10 +2514,10 @@ index 0f16e4b..a432b99 100644
  
        par->vid_ops->configure_display(info);
  
  
        par->vid_ops->configure_display(info);
  
-diff --git a/drivers/video/geode/display_gx.h b/drivers/video/geode/display_gx.h
-index 0af33f3..d20b877 100644
---- a/drivers/video/geode/display_gx.h
-+++ b/drivers/video/geode/display_gx.h
+Index: linux-2.6.23.17/drivers/video/geode/display_gx.h
+===================================================================
+--- linux-2.6.23.17.orig/drivers/video/geode/display_gx.h
++++ linux-2.6.23.17/drivers/video/geode/display_gx.h
 @@ -20,6 +20,9 @@ extern struct geode_dc_ops gx_dc_ops;
  #define GLD_MSR_CONFIG   0xC0002001
  #define GLD_MSR_CONFIG_DM_FP 0x40
 @@ -20,6 +20,9 @@ extern struct geode_dc_ops gx_dc_ops;
  #define GLD_MSR_CONFIG   0xC0002001
  #define GLD_MSR_CONFIG_DM_FP 0x40
@@ -2567,10 +2528,10 @@ index 0af33f3..d20b877 100644
  /* Display controller registers */
  
  #define DC_UNLOCK 0x00
  /* Display controller registers */
  
  #define DC_UNLOCK 0x00
-diff --git a/drivers/video/geode/geodefb.h b/drivers/video/geode/geodefb.h
-index ae04820..0214d11 100644
---- a/drivers/video/geode/geodefb.h
-+++ b/drivers/video/geode/geodefb.h
+Index: linux-2.6.23.17/drivers/video/geode/geodefb.h
+===================================================================
+--- linux-2.6.23.17.orig/drivers/video/geode/geodefb.h
++++ linux-2.6.23.17/drivers/video/geode/geodefb.h
 @@ -12,6 +12,10 @@
  #ifndef __GEODEFB_H__
  #define __GEODEFB_H__
 @@ -12,6 +12,10 @@
  #ifndef __GEODEFB_H__
  #define __GEODEFB_H__
@@ -2607,10 +2568,10 @@ index ae04820..0214d11 100644
  };
  
  #endif /* !__GEODEFB_H__ */
  };
  
  #endif /* !__GEODEFB_H__ */
-diff --git a/drivers/video/geode/gxfb_core.c b/drivers/video/geode/gxfb_core.c
-index cf841ef..3eabc53 100644
---- a/drivers/video/geode/gxfb_core.c
-+++ b/drivers/video/geode/gxfb_core.c
+Index: linux-2.6.23.17/drivers/video/geode/gxfb_core.c
+===================================================================
+--- linux-2.6.23.17.orig/drivers/video/geode/gxfb_core.c
++++ linux-2.6.23.17/drivers/video/geode/gxfb_core.c
 @@ -30,12 +30,31 @@
  #include <linux/fb.h>
  #include <linux/init.h>
 @@ -30,12 +30,31 @@
  #include <linux/fb.h>
  #include <linux/init.h>
@@ -2643,7 +2604,7 @@ index cf841ef..3eabc53 100644
  
  /* Modes relevant to the GX (taken from modedb.c) */
  static const struct fb_videomode gx_modedb[] __initdata = {
  
  /* Modes relevant to the GX (taken from modedb.c) */
  static const struct fb_videomode gx_modedb[] __initdata = {
-@@ -103,8 +122,20 @@ static const struct fb_videomode gx_modedb[] __initdata = {
+@@ -103,8 +122,20 @@ static const struct fb_videomode gx_mode
        { NULL, 85, 1600, 1200, 4357, 304, 64, 46, 1, 192, 3,
          FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
          FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA },
        { NULL, 85, 1600, 1200, 4357, 304, 64, 46, 1, 192, 3,
          FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
          FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA },
@@ -2664,7 +2625,7 @@ index cf841ef..3eabc53 100644
  static int gxfb_check_var(struct fb_var_screeninfo *var, struct fb_info *info)
  {
        if (var->xres > 1600 || var->yres > 1200)
  static int gxfb_check_var(struct fb_var_screeninfo *var, struct fb_info *info)
  {
        if (var->xres > 1600 || var->yres > 1200)
-@@ -137,7 +168,7 @@ static int gxfb_check_var(struct fb_var_screeninfo *var, struct fb_info *info)
+@@ -137,7 +168,7 @@ static int gxfb_check_var(struct fb_var_
        return 0;
  }
  
        return 0;
  }
  
@@ -2673,7 +2634,7 @@ index cf841ef..3eabc53 100644
  {
        struct geodefb_par *par = info->par;
  
  {
        struct geodefb_par *par = info->par;
  
-@@ -204,16 +235,26 @@ static int gxfb_blank(int blank_mode, struct fb_info *info)
+@@ -204,16 +235,26 @@ static int gxfb_blank(int blank_mode, st
        return par->vid_ops->blank_display(info, blank_mode);
  }
  
        return par->vid_ops->blank_display(info, blank_mode);
  }
  
@@ -2701,7 +2662,7 @@ index cf841ef..3eabc53 100644
        ret = pci_request_region(dev, 3, "gxfb (video processor)");
        if (ret < 0)
                return ret;
        ret = pci_request_region(dev, 3, "gxfb (video processor)");
        if (ret < 0)
                return ret;
-@@ -232,36 +273,118 @@ static int __init gxfb_map_video_memory(struct fb_info *info, struct pci_dev *de
+@@ -232,36 +273,118 @@ static int __init gxfb_map_video_memory(
        ret = pci_request_region(dev, 0, "gxfb (framebuffer)");
        if (ret < 0)
                return ret;
        ret = pci_request_region(dev, 0, "gxfb (framebuffer)");
        if (ret < 0)
                return ret;
@@ -2825,7 +2786,7 @@ index cf841ef..3eabc53 100644
  };
  
  static struct fb_info * __init gxfb_init_fbinfo(struct device *dev)
  };
  
  static struct fb_info * __init gxfb_init_fbinfo(struct device *dev)
-@@ -303,23 +426,86 @@ static struct fb_info * __init gxfb_init_fbinfo(struct device *dev)
+@@ -303,23 +426,86 @@ static struct fb_info * __init gxfb_init
        return info;
  }
  
        return info;
  }
  
@@ -2918,7 +2879,7 @@ index cf841ef..3eabc53 100644
                dev_err(&pdev->dev, "failed to map frame buffer or controller registers\n");
                goto err;
        }
                dev_err(&pdev->dev, "failed to map frame buffer or controller registers\n");
                goto err;
        }
-@@ -333,32 +519,60 @@ static int __init gxfb_probe(struct pci_dev *pdev, const struct pci_device_id *i
+@@ -333,32 +519,60 @@ static int __init gxfb_probe(struct pci_
        else
                par->enable_crt = 1;
  
        else
                par->enable_crt = 1;
  
@@ -2990,7 +2951,7 @@ index cf841ef..3eabc53 100644
                pci_release_region(pdev, 0);
        }
        if (par->vid_regs) {
                pci_release_region(pdev, 0);
        }
        if (par->vid_regs) {
-@@ -370,8 +584,9 @@ static int __init gxfb_probe(struct pci_dev *pdev, const struct pci_device_id *i
+@@ -370,8 +584,9 @@ static int __init gxfb_probe(struct pci_
                pci_release_region(pdev, 2);
        }
  
                pci_release_region(pdev, 2);
        }
  
@@ -3002,7 +2963,7 @@ index cf841ef..3eabc53 100644
        return ret;
  }
  
        return ret;
  }
  
-@@ -397,9 +612,7 @@ static void gxfb_remove(struct pci_dev *pdev)
+@@ -397,9 +612,7 @@ static void gxfb_remove(struct pci_dev *
  }
  
  static struct pci_device_id gxfb_id_table[] = {
  }
  
  static struct pci_device_id gxfb_id_table[] = {
@@ -3065,10 +3026,10 @@ index cf841ef..3eabc53 100644
 +
  MODULE_DESCRIPTION("Framebuffer driver for the AMD Geode GX");
  MODULE_LICENSE("GPL");
 +
  MODULE_DESCRIPTION("Framebuffer driver for the AMD Geode GX");
  MODULE_LICENSE("GPL");
-diff --git a/drivers/video/geode/lxfb.h b/drivers/video/geode/lxfb.h
-index 6c227f9..5be8a4d 100644
---- a/drivers/video/geode/lxfb.h
-+++ b/drivers/video/geode/lxfb.h
+Index: linux-2.6.23.17/drivers/video/geode/lxfb.h
+===================================================================
+--- linux-2.6.23.17.orig/drivers/video/geode/lxfb.h
++++ linux-2.6.23.17/drivers/video/geode/lxfb.h
 @@ -25,10 +25,23 @@ void lx_set_mode(struct fb_info *);
  void lx_get_gamma(struct fb_info *, unsigned int *, int);
  void lx_set_gamma(struct fb_info *, unsigned int *, int);
 @@ -25,10 +25,23 @@ void lx_set_mode(struct fb_info *);
  void lx_get_gamma(struct fb_info *, unsigned int *, int);
  void lx_set_gamma(struct fb_info *, unsigned int *, int);
@@ -3093,10 +3054,10 @@ index 6c227f9..5be8a4d 100644
  /* MSRS */
  
  #define MSR_LX_GLD_CONFIG    0x48002001
  /* MSRS */
  
  #define MSR_LX_GLD_CONFIG    0x48002001
-diff --git a/drivers/video/geode/lxfb_core.c b/drivers/video/geode/lxfb_core.c
-index 5e30b40..c9060ed 100644
---- a/drivers/video/geode/lxfb_core.c
-+++ b/drivers/video/geode/lxfb_core.c
+Index: linux-2.6.23.17/drivers/video/geode/lxfb_core.c
+===================================================================
+--- linux-2.6.23.17.orig/drivers/video/geode/lxfb_core.c
++++ linux-2.6.23.17/drivers/video/geode/lxfb_core.c
 @@ -22,6 +22,7 @@
  #include <linux/init.h>
  #include <linux/pci.h>
 @@ -22,6 +22,7 @@
  #include <linux/init.h>
  #include <linux/pci.h>
@@ -3122,6 +3083,45 @@ index 5e30b40..c9060ed 100644
 +        0, FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA },
 +      /* 800x600-60 VESA */
 +      { NULL, 60, 800, 600, 25000, 88, 40, 23, 01, 128, 4,
 +        0, FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA },
 +      /* 800x600-60 VESA */
 +      { NULL, 60, 800, 600, 25000, 88, 40, 23, 01, 128, 4,
++        FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
++        FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA },
++      /* 800x600-75 VESA */
++      { NULL, 75, 800, 600, 20202, 160, 16, 21, 01, 80, 3,
++        FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
++        FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA },
++      /* 800x600-85 VESA */
++      { NULL, 85, 800, 600, 17761, 152, 32, 27, 01, 64, 3,
++        FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
++        FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA },
++      /* 1024x768-60 VESA */
++      { NULL, 60, 1024, 768, 15384, 160, 24, 29, 3, 136, 6,
++        0, FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA },
++      /* 1024x768-75 VESA */
++      { NULL, 75, 1024, 768, 12690, 176, 16, 28, 1, 96, 3,
++        FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
++        FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA },
++      /* 1024x768-85 VESA */
++      { NULL, 85, 1024, 768, 10582, 208, 48, 36, 1, 96, 3,
++        FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
++        FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA },
++      /* 1280x960-60 VESA */
++      { NULL, 60, 1280, 960, 9259, 312, 96, 36, 1, 112, 3,
++        FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
++        FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA },
++      /* 1280x960-85 VESA */
++      { NULL, 85, 1280, 960, 6734, 224, 64, 47, 1, 160, 3,
++        FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
++        FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA },
++      /* 1280x1024-60 VESA */
++      { NULL, 60, 1280, 1024, 9259, 248, 48, 38, 1, 112, 3,
++        FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
++        FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA },
++      /* 1280x1024-75 VESA */
++      { NULL, 75, 1280, 1024, 7407, 248, 16, 38, 1, 144, 3,
++        FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
++        FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA },
++      /* 1280x1024-85 VESA */
++      { NULL, 85, 1280, 1024, 6349, 224, 64, 44, 1, 160, 3,
          FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
 -        FB_VMODE_NONINTERLACED, 0 },
 -      /* 640x400-70 */
          FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
 -        FB_VMODE_NONINTERLACED, 0 },
 -      /* 640x400-70 */
@@ -3133,27 +3133,15 @@ index 5e30b40..c9060ed 100644
 -        0, FB_VMODE_NONINTERLACED, 0 },
 -      /* 640x480-72 */
 -      { NULL, 72, 640, 480, 32102, 120, 16, 20, 1, 40, 3,
 -        0, FB_VMODE_NONINTERLACED, 0 },
 -      /* 640x480-72 */
 -      { NULL, 72, 640, 480, 32102, 120, 16, 20, 1, 40, 3,
-+        FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA },
-+      /* 800x600-75 VESA */
-+      { NULL, 75, 800, 600, 20202, 160, 16, 21, 01, 80, 3,
-         FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
+-        FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
 -        FB_VMODE_NONINTERLACED, 0 },
 -      /* 640x480-75 */
 -      { NULL, 75, 640, 480, 31746, 120, 16, 16, 1, 64, 3,
 -        FB_VMODE_NONINTERLACED, 0 },
 -      /* 640x480-75 */
 -      { NULL, 75, 640, 480, 31746, 120, 16, 16, 1, 64, 3,
-+        FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA },
-+      /* 800x600-85 VESA */
-+      { NULL, 85, 800, 600, 17761, 152, 32, 27, 01, 64, 3,
-         FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
+-        FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
 -        FB_VMODE_NONINTERLACED, 0 },
 -      /* 640x480-85 */
 -      { NULL, 85, 640, 480, 27780, 80, 56, 25, 1, 56, 3,
 -        FB_VMODE_NONINTERLACED, 0 },
 -      /* 640x480-85 */
 -      { NULL, 85, 640, 480, 27780, 80, 56, 25, 1, 56, 3,
-+        FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA },
-+      /* 1024x768-60 VESA */
-+      { NULL, 60, 1024, 768, 15384, 160, 24, 29, 3, 136, 6,
-+        0, FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA },
-+      /* 1024x768-75 VESA */
-+      { NULL, 75, 1024, 768, 12690, 176, 16, 28, 1, 96, 3,
-         FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
+-        FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
 -        FB_VMODE_NONINTERLACED, 0 },
 -      /* 640x480-90 */
 -      { NULL, 90, 640, 480, 26392, 96, 32, 22, 1, 64, 3,
 -        FB_VMODE_NONINTERLACED, 0 },
 -      /* 640x480-90 */
 -      { NULL, 90, 640, 480, 26392, 96, 32, 22, 1, 64, 3,
@@ -3163,10 +3151,7 @@ index 5e30b40..c9060ed 100644
 -        0, FB_VMODE_NONINTERLACED, 0 },
 -      /* 640x480-60 */
 -      { NULL, 60, 640, 480, 39682, 48, 16, 25, 10, 88, 2,
 -        0, FB_VMODE_NONINTERLACED, 0 },
 -      /* 640x480-60 */
 -      { NULL, 60, 640, 480, 39682, 48, 16, 25, 10, 88, 2,
-+        FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA },
-+      /* 1024x768-85 VESA */
-+      { NULL, 85, 1024, 768, 10582, 208, 48, 36, 1, 96, 3,
-         FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
+-        FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
 -        FB_VMODE_NONINTERLACED, 0 },
 -      /* 800x600-56 */
 -      { NULL, 56, 800, 600, 27901, 128, 24, 22, 1, 72, 2,
 -        FB_VMODE_NONINTERLACED, 0 },
 -      /* 800x600-56 */
 -      { NULL, 56, 800, 600, 27901, 128, 24, 22, 1, 72, 2,
@@ -3194,24 +3179,15 @@ index 5e30b40..c9060ed 100644
 -        0, FB_VMODE_NONINTERLACED, 0 },
 -      /* 800x600-60 */
 -      { NULL, 60, 800, 600, 25131, 88, 40, 23, 1, 128, 4,
 -        0, FB_VMODE_NONINTERLACED, 0 },
 -      /* 800x600-60 */
 -      { NULL, 60, 800, 600, 25131, 88, 40, 23, 1, 128, 4,
-+        FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA },
-+      /* 1280x960-60 VESA */
-+      { NULL, 60, 1280, 960, 9259, 312, 96, 36, 1, 112, 3,
-         FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
+-        FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
 -        FB_VMODE_NONINTERLACED, 0 },
 -      /* 1024x768-60 */
 -      { NULL, 60, 1024, 768, 15385, 160, 24, 29, 3, 136, 6,
 -        FB_VMODE_NONINTERLACED, 0 },
 -      /* 1024x768-60 */
 -      { NULL, 60, 1024, 768, 15385, 160, 24, 29, 3, 136, 6,
-+        FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA },
-+      /* 1280x960-85 VESA */
-+      { NULL, 85, 1280, 960, 6734, 224, 64, 47, 1, 160, 3,
-         FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
+-        FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
 -        FB_VMODE_NONINTERLACED, 0 },
 -      /* 1024x768-70 */
 -      { NULL, 70, 1024, 768, 13346, 144, 24, 29, 3, 136, 6,
 -        FB_VMODE_NONINTERLACED, 0 },
 -      /* 1024x768-70 */
 -      { NULL, 70, 1024, 768, 13346, 144, 24, 29, 3, 136, 6,
-+        FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA },
-+      /* 1280x1024-60 VESA */
-+      { NULL, 60, 1280, 1024, 9259, 248, 48, 38, 1, 112, 3,
-         FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
+-        FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
 -        FB_VMODE_NONINTERLACED, 0 },
 -      /* 1024x768-72 */
 -      { NULL, 72, 1024, 768, 12702, 168, 56, 29, 4, 112, 3,
 -        FB_VMODE_NONINTERLACED, 0 },
 -      /* 1024x768-72 */
 -      { NULL, 72, 1024, 768, 12702, 168, 56, 29, 4, 112, 3,
@@ -3230,10 +3206,7 @@ index 5e30b40..c9060ed 100644
 -        0, FB_VMODE_NONINTERLACED, 0 },
 -      /* 1024x768-60 */
 -      { NULL, 60, 1024, 768, 15385, 160, 24, 29, 3, 136, 6,
 -        0, FB_VMODE_NONINTERLACED, 0 },
 -      /* 1024x768-60 */
 -      { NULL, 60, 1024, 768, 15385, 160, 24, 29, 3, 136, 6,
-+        FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA },
-+      /* 1280x1024-75 VESA */
-+      { NULL, 75, 1280, 1024, 7407, 248, 16, 38, 1, 144, 3,
-         FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
+-        FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
 -        FB_VMODE_NONINTERLACED, 0 },
 -      /* 1152x864-60 */
 -      { NULL, 60, 1152, 864, 12251, 184, 64, 27, 1, 120, 3,
 -        FB_VMODE_NONINTERLACED, 0 },
 -      /* 1152x864-60 */
 -      { NULL, 60, 1152, 864, 12251, 184, 64, 27, 1, 120, 3,
@@ -3258,10 +3231,7 @@ index 5e30b40..c9060ed 100644
 -        0, FB_VMODE_NONINTERLACED, 0 },
 -      /* 1152x864-60 */
 -      { NULL, 60, 1152, 864, 12251, 184, 64, 27, 1, 120, 3,
 -        0, FB_VMODE_NONINTERLACED, 0 },
 -      /* 1152x864-60 */
 -      { NULL, 60, 1152, 864, 12251, 184, 64, 27, 1, 120, 3,
-+        FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA },
-+      /* 1280x1024-85 VESA */
-+      { NULL, 85, 1280, 1024, 6349, 224, 64, 44, 1, 160, 3,
-         FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
+-        FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
 -        FB_VMODE_NONINTERLACED, 0 },
 -      /* 1280x1024-60 */
 -      { NULL, 60, 1280, 1024, 9262, 248, 48, 38, 1, 112, 3,
 -        FB_VMODE_NONINTERLACED, 0 },
 -      /* 1280x1024-60 */
 -      { NULL, 60, 1280, 1024, 9262, 248, 48, 38, 1, 112, 3,
@@ -3354,7 +3324,7 @@ index 5e30b40..c9060ed 100644
  static int lxfb_check_var(struct fb_var_screeninfo *var, struct fb_info *info)
  {
        if (var->xres > 1920 || var->yres > 1440)
  static int lxfb_check_var(struct fb_var_screeninfo *var, struct fb_info *info)
  {
        if (var->xres > 1920 || var->yres > 1440)
-@@ -379,16 +278,55 @@ static int __init lxfb_map_video_memory(struct fb_info *info,
+@@ -379,16 +278,55 @@ static int __init lxfb_map_video_memory(
        return 0;
  }
  
        return 0;
  }
  
@@ -3410,7 +3380,7 @@ index 5e30b40..c9060ed 100644
  };
  
  static struct fb_info * __init lxfb_init_fbinfo(struct device *dev)
  };
  
  static struct fb_info * __init lxfb_init_fbinfo(struct device *dev)
-@@ -431,6 +369,45 @@ static struct fb_info * __init lxfb_init_fbinfo(struct device *dev)
+@@ -431,6 +369,45 @@ static struct fb_info * __init lxfb_init
        return info;
  }
  
        return info;
  }
  
@@ -3456,7 +3426,7 @@ index 5e30b40..c9060ed 100644
  static int __init lxfb_probe(struct pci_dev *pdev,
                             const struct pci_device_id *id)
  {
  static int __init lxfb_probe(struct pci_dev *pdev,
                             const struct pci_device_id *id)
  {
-@@ -467,6 +444,13 @@ static int __init lxfb_probe(struct pci_dev *pdev,
+@@ -467,6 +444,13 @@ static int __init lxfb_probe(struct pci_
        modedb_ptr = (struct fb_videomode *) geode_modedb;
        modedb_size = ARRAY_SIZE(geode_modedb);
  
        modedb_ptr = (struct fb_videomode *) geode_modedb;
        modedb_size = ARRAY_SIZE(geode_modedb);
  
@@ -3481,10 +3451,10 @@ index 5e30b40..c9060ed 100644
  };
  
  #ifndef MODULE
  };
  
  #ifndef MODULE
-diff --git a/drivers/video/geode/lxfb_ops.c b/drivers/video/geode/lxfb_ops.c
-index 4fbc99b..47ed9de 100644
---- a/drivers/video/geode/lxfb_ops.c
-+++ b/drivers/video/geode/lxfb_ops.c
+Index: linux-2.6.23.17/drivers/video/geode/lxfb_ops.c
+===================================================================
+--- linux-2.6.23.17.orig/drivers/video/geode/lxfb_ops.c
++++ linux-2.6.23.17/drivers/video/geode/lxfb_ops.c
 @@ -13,9 +13,13 @@
  #include <linux/fb.h>
  #include <linux/uaccess.h>
 @@ -13,9 +13,13 @@
  #include <linux/fb.h>
  #include <linux/uaccess.h>
@@ -3562,7 +3532,7 @@ index 4fbc99b..47ed9de 100644
        writel(DC_UNLOCK_CODE, par->dc_regs + DC_UNLOCK);
  
        lx_graphics_disable(info);
        writel(DC_UNLOCK_CODE, par->dc_regs + DC_UNLOCK);
  
        lx_graphics_disable(info);
-@@ -534,3 +580,285 @@ int lx_blank_display(struct fb_info *info, int blank_mode)
+@@ -534,3 +580,285 @@ int lx_blank_display(struct fb_info *inf
  
        return 0;
  }
  
        return 0;
  }
@@ -3848,10 +3818,10 @@ index 4fbc99b..47ed9de 100644
 +      lx_power_on = 1;
 +      return 0;
 +}
 +      lx_power_on = 1;
 +      return 0;
 +}
-diff --git a/drivers/video/geode/video_gx.c b/drivers/video/geode/video_gx.c
-index 7f3f18d..e282e74 100644
---- a/drivers/video/geode/video_gx.c
-+++ b/drivers/video/geode/video_gx.c
+Index: linux-2.6.23.17/drivers/video/geode/video_gx.c
+===================================================================
+--- linux-2.6.23.17.orig/drivers/video/geode/video_gx.c
++++ linux-2.6.23.17/drivers/video/geode/video_gx.c
 @@ -16,10 +16,14 @@
  #include <asm/io.h>
  #include <asm/delay.h>
 @@ -16,10 +16,14 @@
  #include <asm/io.h>
  #include <asm/delay.h>
@@ -3867,7 +3837,7 @@ index 7f3f18d..e282e74 100644
  
  /*
   * Tables of register settings for various DOTCLKs.
  
  /*
   * Tables of register settings for various DOTCLKs.
-@@ -58,7 +62,7 @@ static const struct gx_pll_entry gx_pll_table_48MHz[] = {
+@@ -58,7 +62,7 @@ static const struct gx_pll_entry gx_pll_
        { 13888, POSTDIV3,          0x000007E1 },       /*  72.0000 */
        { 13426, PREMULT2,          0x00000F4A },       /*  74.4810 */
        { 13333, 0,                 0x00000052 },       /*  75.0000 */
        { 13888, POSTDIV3,          0x000007E1 },       /*  72.0000 */
        { 13426, PREMULT2,          0x00000F4A },       /*  74.4810 */
        { 13333, 0,                 0x00000052 },       /*  75.0000 */
@@ -3876,7 +3846,7 @@ index 7f3f18d..e282e74 100644
        { 12500, POSTDIV3|PREMULT2, 0x00000709 },       /*  80.0000 */
        { 11135, PREMULT2,          0x00000262 },       /*  89.8000 */
        { 10582, 0,                 0x000002D2 },       /*  94.5000 */
        { 12500, POSTDIV3|PREMULT2, 0x00000709 },       /*  80.0000 */
        { 11135, PREMULT2,          0x00000262 },       /*  89.8000 */
        { 10582, 0,                 0x000002D2 },       /*  94.5000 */
-@@ -117,8 +121,9 @@ static const struct gx_pll_entry gx_pll_table_14MHz[] = {
+@@ -117,8 +121,9 @@ static const struct gx_pll_entry gx_pll_
        {  4357, 0, 0x0000057D },       /* 229.5000 */
  };
  
        {  4357, 0, 0x0000057D },       /* 229.5000 */
  };
  
@@ -3887,7 +3857,7 @@ index 7f3f18d..e282e74 100644
        const struct gx_pll_entry *pll_table;
        int pll_table_len;
        int i, best_i;
        const struct gx_pll_entry *pll_table;
        int pll_table_len;
        int i, best_i;
-@@ -173,115 +178,169 @@ static void gx_set_dclk_frequency(struct fb_info *info)
+@@ -173,115 +178,169 @@ static void gx_set_dclk_frequency(struct
        do {
                rdmsrl(MSR_GLCP_DOTPLL, dotpll);
        } while (timeout-- && !(dotpll & MSR_GLCP_DOTPLL_LOCK));
        do {
                rdmsrl(MSR_GLCP_DOTPLL, dotpll);
        } while (timeout-- && !(dotpll & MSR_GLCP_DOTPLL_LOCK));
@@ -3930,35 +3900,35 @@ index 7f3f18d..e282e74 100644
 +              if (pll_table[i].dotpll_value == (u32) (dotpll >> 32))
 +                      break;
 +      }
 +              if (pll_table[i].dotpll_value == (u32) (dotpll >> 32))
 +                      break;
 +      }
++
++      return (i == pll_table_len) ? 0 : pll_table[i].pixclock;
++}
  
 -      fp = readl(par->vid_regs + GX_FP_PM);
 -      fp &= ~GX_FP_PM_P;
 -      writel(fp, par->vid_regs + GX_FP_PM);
  
 -      fp = readl(par->vid_regs + GX_FP_PM);
 -      fp &= ~GX_FP_PM_P;
 -      writel(fp, par->vid_regs + GX_FP_PM);
-+      return (i == pll_table_len) ? 0 : pll_table[i].pixclock;
-+}
-+
-+
-+#define CMP(val, mask, res) (((val) & (mask)) == (res))
  
 -      /* Set timing 1 */
  
 -      /* Set timing 1 */
-+static void
-+gx_configure_tft(struct fb_info *info) {
++#define CMP(val, mask, res) (((val) & (mask)) == (res))
  
 -      fp = readl(par->vid_regs + GX_FP_PT1);
 -      fp &= GX_FP_PT1_VSIZE_MASK;
 -      fp |= info->var.yres << GX_FP_PT1_VSIZE_SHIFT;
 -      writel(fp, par->vid_regs + GX_FP_PT1);
  
 -      fp = readl(par->vid_regs + GX_FP_PT1);
 -      fp &= GX_FP_PT1_VSIZE_MASK;
 -      fp |= info->var.yres << GX_FP_PT1_VSIZE_SHIFT;
 -      writel(fp, par->vid_regs + GX_FP_PT1);
-+      struct geodefb_par *par = info->par;
-+      u32 val, fp = 0, fp1, fp2, sync = 0;
++static void
++gx_configure_tft(struct fb_info *info) {
  
 -      /* Timing 2 */
 -      /* Set bits that are always on for TFT */
  
 -      /* Timing 2 */
 -      /* Set bits that are always on for TFT */
-+      /* Set up the DF pad select MSR */
++      struct geodefb_par *par = info->par;
++      u32 val, fp = 0, fp1, fp2, sync = 0;
  
 -      fp = 0x0F100000;
  
 -      fp = 0x0F100000;
-+      rdmsrl(GX_VP_MSR_PAD_SELECT, val);
++      /* Set up the DF pad select MSR */
  
 -      /* Add sync polarity */
  
 -      /* Add sync polarity */
++      rdmsrl(GX_VP_MSR_PAD_SELECT, val);
++
 +      if ((val & GX_VP_PAD_SELECT_MASK) != GX_VP_PAD_SELECT_TFT) {
 +              val &= ~GX_VP_PAD_SELECT_MASK;
 +              val |= GX_VP_PAD_SELECT_TFT;
 +      if ((val & GX_VP_PAD_SELECT_MASK) != GX_VP_PAD_SELECT_TFT) {
 +              val &= ~GX_VP_PAD_SELECT_MASK;
 +              val |= GX_VP_PAD_SELECT_TFT;
@@ -3983,28 +3953,28 @@ index 7f3f18d..e282e74 100644
 +
 +      if (!CMP(fp1, GX_FP_PT1_VSIZE_MASK, info->var.yres << GX_FP_PT1_VSIZE_SHIFT) ||
 +          (fp2 != (0x0F100000 | sync))) {
 +
 +      if (!CMP(fp1, GX_FP_PT1_VSIZE_MASK, info->var.yres << GX_FP_PT1_VSIZE_SHIFT) ||
 +          (fp2 != (0x0F100000 | sync))) {
--      /* Enable the FP data and power (in case the BIOS didn't) */
++
 +              /* Turn off the panel */
 +              /* Turn off the panel */
--      fp = readl(par->vid_regs + GX_DCFG);
--      fp |= GX_DCFG_FP_PWR_EN | GX_DCFG_FP_DATA_EN;
--      writel(fp, par->vid_regs + GX_DCFG);
++
 +#ifdef NOTUSED
 +              /* Do we really need to turn off the panel? */
 +              /* Possibly - we have a glitch somewhere */
  
 +#ifdef NOTUSED
 +              /* Do we really need to turn off the panel? */
 +              /* Possibly - we have a glitch somewhere */
  
--      /* Unblank the panel */
+-      /* Enable the FP data and power (in case the BIOS didn't) */
 +              fp = readl(par->vid_regs + GX_FP_PM);
 +              fp &= ~GX_FP_PM_P;
 +              writel(fp, par->vid_regs + GX_FP_PM);
 +#endif
 +              fp = readl(par->vid_regs + GX_FP_PM);
 +              fp &= ~GX_FP_PM_P;
 +              writel(fp, par->vid_regs + GX_FP_PM);
 +#endif
-+
+-      fp = readl(par->vid_regs + GX_DCFG);
+-      fp |= GX_DCFG_FP_PWR_EN | GX_DCFG_FP_DATA_EN;
+-      writel(fp, par->vid_regs + GX_DCFG);
 +              /* Timing 1 */
 +              fp1 &= GX_FP_PT1_VSIZE_MASK;
 +              fp1 |= info->var.yres << GX_FP_PT1_VSIZE_SHIFT;
 +              writel(fp, par->vid_regs + GX_FP_PT1);
 +              /* Timing 1 */
 +              fp1 &= GX_FP_PT1_VSIZE_MASK;
 +              fp1 |= info->var.yres << GX_FP_PT1_VSIZE_SHIFT;
 +              writel(fp, par->vid_regs + GX_FP_PT1);
-+
+-      /* Unblank the panel */
 +              /* Timing 2 */
 +              writel(0x0F100000 | sync, par->vid_regs + GX_FP_PT2);
 +      }
 +              /* Timing 2 */
 +              writel(0x0F100000 | sync, par->vid_regs + GX_FP_PT2);
 +      }
@@ -4122,7 +4092,7 @@ index 7f3f18d..e282e74 100644
  
        /* Set up the flat panel (if it is enabled) */
  
  
        /* Set up the flat panel (if it is enabled) */
  
-@@ -289,6 +348,100 @@ static void gx_configure_display(struct fb_info *info)
+@@ -289,6 +348,100 @@ static void gx_configure_display(struct 
                gx_configure_tft(info);
  }
  
                gx_configure_tft(info);
  }
  
@@ -4223,7 +4193,7 @@ index 7f3f18d..e282e74 100644
  static int gx_blank_display(struct fb_info *info, int blank_mode)
  {
        struct geodefb_par *par = info->par;
  static int gx_blank_display(struct fb_info *info, int blank_mode)
  {
        struct geodefb_par *par = info->par;
-@@ -315,6 +468,7 @@ static int gx_blank_display(struct fb_info *info, int blank_mode)
+@@ -315,6 +468,7 @@ static int gx_blank_display(struct fb_in
        default:
                return -EINVAL;
        }
        default:
                return -EINVAL;
        }
@@ -4231,7 +4201,7 @@ index 7f3f18d..e282e74 100644
        dcfg = readl(par->vid_regs + GX_DCFG);
        dcfg &= ~(GX_DCFG_DAC_BL_EN
                  | GX_DCFG_HSYNC_EN | GX_DCFG_VSYNC_EN);
        dcfg = readl(par->vid_regs + GX_DCFG);
        dcfg &= ~(GX_DCFG_DAC_BL_EN
                  | GX_DCFG_HSYNC_EN | GX_DCFG_VSYNC_EN);
-@@ -326,7 +480,7 @@ static int gx_blank_display(struct fb_info *info, int blank_mode)
+@@ -326,7 +480,7 @@ static int gx_blank_display(struct fb_in
                dcfg |= GX_DCFG_VSYNC_EN;
        writel(dcfg, par->vid_regs + GX_DCFG);
  
                dcfg |= GX_DCFG_VSYNC_EN;
        writel(dcfg, par->vid_regs + GX_DCFG);
  
@@ -4240,7 +4210,7 @@ index 7f3f18d..e282e74 100644
  
        if (par->enable_crt == 0) {
                fp_pm = readl(par->vid_regs + GX_FP_PM);
  
        if (par->enable_crt == 0) {
                fp_pm = readl(par->vid_regs + GX_FP_PM);
-@@ -340,8 +494,37 @@ static int gx_blank_display(struct fb_info *info, int blank_mode)
+@@ -340,8 +494,37 @@ static int gx_blank_display(struct fb_in
        return 0;
  }
  
        return 0;
  }
  
@@ -4278,10 +4248,10 @@ index 7f3f18d..e282e74 100644
        .configure_display = gx_configure_display,
        .blank_display     = gx_blank_display,
  };
        .configure_display = gx_configure_display,
        .blank_display     = gx_blank_display,
  };
-diff --git a/drivers/video/geode/video_gx.h b/drivers/video/geode/video_gx.h
-index ce28d8f..c57b36b 100644
---- a/drivers/video/geode/video_gx.h
-+++ b/drivers/video/geode/video_gx.h
+Index: linux-2.6.23.17/drivers/video/geode/video_gx.h
+===================================================================
+--- linux-2.6.23.17.orig/drivers/video/geode/video_gx.h
++++ linux-2.6.23.17/drivers/video/geode/video_gx.h
 @@ -11,6 +11,8 @@
  #ifndef __VIDEO_GX_H__
  #define __VIDEO_GX_H__
 @@ -11,6 +11,8 @@
  #ifndef __VIDEO_GX_H__
  #define __VIDEO_GX_H__
@@ -4329,10 +4299,10 @@ index ce28d8f..c57b36b 100644
 +void gx_restore_regs(struct fb_info *info, struct geoderegs *regs);
 +
  #endif /* !__VIDEO_GX_H__ */
 +void gx_restore_regs(struct fb_info *info, struct geoderegs *regs);
 +
  #endif /* !__VIDEO_GX_H__ */
-diff --git a/drivers/video/modedb.c b/drivers/video/modedb.c
-index 3741ad7..49f6db5 100644
---- a/drivers/video/modedb.c
-+++ b/drivers/video/modedb.c
+Index: linux-2.6.23.17/drivers/video/modedb.c
+===================================================================
+--- linux-2.6.23.17.orig/drivers/video/modedb.c
++++ linux-2.6.23.17/drivers/video/modedb.c
 @@ -33,6 +33,8 @@ const char *global_mode_option;
       *  Standard video mode definitions (taken from XFree86)
       */
 @@ -33,6 +33,8 @@ const char *global_mode_option;
       *  Standard video mode definitions (taken from XFree86)
       */
@@ -4342,7 +4312,7 @@ index 3741ad7..49f6db5 100644
  static const struct fb_videomode modedb[] = {
      {
        /* 640x400 @ 70 Hz, 31.5 kHz hsync */
  static const struct fb_videomode modedb[] = {
      {
        /* 640x400 @ 70 Hz, 31.5 kHz hsync */
-@@ -504,7 +506,8 @@ int fb_find_mode(struct fb_var_screeninfo *var,
+@@ -504,7 +506,8 @@ int fb_find_mode(struct fb_var_screeninf
      }
  
      if (!default_mode)
      }
  
      if (!default_mode)
@@ -4352,11 +4322,11 @@ index 3741ad7..49f6db5 100644
  
      if (!default_bpp)
        default_bpp = 8;
  
      if (!default_bpp)
        default_bpp = 8;
-diff --git a/fs/Kconfig b/fs/Kconfig
-index f9eed6d..6fa3ea2 100644
---- a/fs/Kconfig
-+++ b/fs/Kconfig
-@@ -999,6 +999,23 @@ config HUGETLBFS
+Index: linux-2.6.23.17/fs/Kconfig
+===================================================================
+--- linux-2.6.23.17.orig/fs/Kconfig
++++ linux-2.6.23.17/fs/Kconfig
+@@ -1003,6 +1003,23 @@ config HUGETLBFS
  config HUGETLB_PAGE
        def_bool HUGETLBFS
  
  config HUGETLB_PAGE
        def_bool HUGETLBFS
  
@@ -4380,7 +4350,7 @@ index f9eed6d..6fa3ea2 100644
  config RAMFS
        bool
        default y
  config RAMFS
        bool
        default y
-@@ -1225,6 +1242,14 @@ config JFFS2_FS_WRITEBUFFER
+@@ -1229,6 +1246,14 @@ config JFFS2_FS_WRITEBUFFER
            - NOR flash with transparent ECC
            - DataFlash
  
            - NOR flash with transparent ECC
            - DataFlash
  
@@ -4395,7 +4365,7 @@ index f9eed6d..6fa3ea2 100644
  config JFFS2_SUMMARY
        bool "JFFS2 summary support (EXPERIMENTAL)"
        depends on JFFS2_FS && EXPERIMENTAL
  config JFFS2_SUMMARY
        bool "JFFS2 summary support (EXPERIMENTAL)"
        depends on JFFS2_FS && EXPERIMENTAL
-@@ -1295,52 +1320,52 @@ config JFFS2_ZLIB
+@@ -1299,52 +1324,52 @@ config JFFS2_ZLIB
        select ZLIB_DEFLATE
        depends on JFFS2_FS
        default y
        select ZLIB_DEFLATE
        depends on JFFS2_FS
        default y
@@ -4475,11 +4445,11 @@ index f9eed6d..6fa3ea2 100644
  
  endchoice
  
  
  endchoice
  
-diff --git a/fs/Makefile b/fs/Makefile
-index 720c29d..61f1a4d 100644
---- a/fs/Makefile
-+++ b/fs/Makefile
-@@ -108,6 +108,7 @@ obj-$(CONFIG_ADFS_FS)              += adfs/
+Index: linux-2.6.23.17/fs/Makefile
+===================================================================
+--- linux-2.6.23.17.orig/fs/Makefile
++++ linux-2.6.23.17/fs/Makefile
+@@ -110,6 +110,7 @@ obj-$(CONFIG_ADFS_FS)              += adfs/
  obj-$(CONFIG_FUSE_FS)         += fuse/
  obj-$(CONFIG_UDF_FS)          += udf/
  obj-$(CONFIG_SUN_OPENPROMFS)  += openpromfs/
  obj-$(CONFIG_FUSE_FS)         += fuse/
  obj-$(CONFIG_UDF_FS)          += udf/
  obj-$(CONFIG_SUN_OPENPROMFS)  += openpromfs/
@@ -4487,11 +4457,11 @@ index 720c29d..61f1a4d 100644
  obj-$(CONFIG_JFS_FS)          += jfs/
  obj-$(CONFIG_XFS_FS)          += xfs/
  obj-$(CONFIG_9P_FS)           += 9p/
  obj-$(CONFIG_JFS_FS)          += jfs/
  obj-$(CONFIG_XFS_FS)          += xfs/
  obj-$(CONFIG_9P_FS)           += 9p/
-diff --git a/fs/jffs2/background.c b/fs/jffs2/background.c
-index 504643f..d568ae8 100644
---- a/fs/jffs2/background.c
-+++ b/fs/jffs2/background.c
-@@ -23,8 +23,8 @@ static int jffs2_garbage_collect_thread(void *);
+Index: linux-2.6.23.17/fs/jffs2/background.c
+===================================================================
+--- linux-2.6.23.17.orig/fs/jffs2/background.c
++++ linux-2.6.23.17/fs/jffs2/background.c
+@@ -23,8 +23,8 @@ static int jffs2_garbage_collect_thread(
  void jffs2_garbage_collect_trigger(struct jffs2_sb_info *c)
  {
        spin_lock(&c->erase_completion_lock);
  void jffs2_garbage_collect_trigger(struct jffs2_sb_info *c)
  {
        spin_lock(&c->erase_completion_lock);
@@ -4502,10 +4472,10 @@ index 504643f..d568ae8 100644
        spin_unlock(&c->erase_completion_lock);
  }
  
        spin_unlock(&c->erase_completion_lock);
  }
  
-diff --git a/fs/jffs2/compr.c b/fs/jffs2/compr.c
-index 485d065..d90ca05 100644
---- a/fs/jffs2/compr.c
-+++ b/fs/jffs2/compr.c
+Index: linux-2.6.23.17/fs/jffs2/compr.c
+===================================================================
+--- linux-2.6.23.17.orig/fs/jffs2/compr.c
++++ linux-2.6.23.17/fs/jffs2/compr.c
 @@ -5,7 +5,7 @@
   * Created by Arjan van de Ven <arjanv@redhat.com>
   *
 @@ -5,7 +5,7 @@
   * Created by Arjan van de Ven <arjanv@redhat.com>
   *
@@ -4515,7 +4485,7 @@ index 485d065..d90ca05 100644
   *
   * For licensing information, see the file 'LICENCE' in this directory.
   *
   *
   * For licensing information, see the file 'LICENCE' in this directory.
   *
-@@ -43,121 +43,122 @@ static uint32_t none_stat_compr_blocks=0,none_stat_decompr_blocks=0,none_stat_co
+@@ -43,121 +43,122 @@ static uint32_t none_stat_compr_blocks=0
   * *datalen accordingly to show the amount of data which were compressed.
   */
  uint16_t jffs2_compress(struct jffs2_sb_info *c, struct jffs2_inode_info *f,
   * *datalen accordingly to show the amount of data which were compressed.
   */
  uint16_t jffs2_compress(struct jffs2_sb_info *c, struct jffs2_inode_info *f,
@@ -4530,12 +4500,7 @@ index 485d065..d90ca05 100644
 -        unsigned char *output_buf = NULL, *tmp_buf;
 -        uint32_t orig_slen, orig_dlen;
 -        uint32_t best_slen=0, best_dlen=0;
 -        unsigned char *output_buf = NULL, *tmp_buf;
 -        uint32_t orig_slen, orig_dlen;
 -        uint32_t best_slen=0, best_dlen=0;
-+      int compr_ret;
-+      struct jffs2_compressor *this, *best=NULL;
-+      unsigned char *output_buf = NULL, *tmp_buf;
-+      uint32_t orig_slen, orig_dlen;
-+      uint32_t best_slen=0, best_dlen=0;
+-
 -        switch (jffs2_compression_mode) {
 -        case JFFS2_COMPR_MODE_NONE:
 -                break;
 -        switch (jffs2_compression_mode) {
 -        case JFFS2_COMPR_MODE_NONE:
 -                break;
@@ -4552,23 +4517,7 @@ index 485d065..d90ca05 100644
 -                        /* Skip decompress-only backwards-compatibility and disabled modules */
 -                        if ((!this->compress)||(this->disabled))
 -                                continue;
 -                        /* Skip decompress-only backwards-compatibility and disabled modules */
 -                        if ((!this->compress)||(this->disabled))
 -                                continue;
-+      switch (jffs2_compression_mode) {
-+      case JFFS2_COMPR_MODE_NONE:
-+              break;
-+      case JFFS2_COMPR_MODE_PRIORITY:
-+              output_buf = kmalloc(*cdatalen,GFP_KERNEL);
-+              if (!output_buf) {
-+                      printk(KERN_WARNING "JFFS2: No memory for compressor allocation. Compression failed.\n");
-+                      goto out;
-+              }
-+              orig_slen = *datalen;
-+              orig_dlen = *cdatalen;
-+              spin_lock(&jffs2_compressor_list_lock);
-+              list_for_each_entry(this, &jffs2_compressor_list, list) {
-+                      /* Skip decompress-only backwards-compatibility and disabled modules */
-+                      if ((!this->compress)||(this->disabled))
-+                              continue;
+-
 -                        this->usecount++;
 -                        spin_unlock(&jffs2_compressor_list_lock);
 -                        *datalen  = orig_slen;
 -                        this->usecount++;
 -                        spin_unlock(&jffs2_compressor_list_lock);
 -                        *datalen  = orig_slen;
@@ -4647,6 +4596,29 @@ index 485d065..d90ca05 100644
 -        default:
 -                printk(KERN_ERR "JFFS2: unknow compression mode.\n");
 -        }
 -        default:
 -                printk(KERN_ERR "JFFS2: unknow compression mode.\n");
 -        }
++      int compr_ret;
++      struct jffs2_compressor *this, *best=NULL;
++      unsigned char *output_buf = NULL, *tmp_buf;
++      uint32_t orig_slen, orig_dlen;
++      uint32_t best_slen=0, best_dlen=0;
++
++      switch (jffs2_compression_mode) {
++      case JFFS2_COMPR_MODE_NONE:
++              break;
++      case JFFS2_COMPR_MODE_PRIORITY:
++              output_buf = kmalloc(*cdatalen,GFP_KERNEL);
++              if (!output_buf) {
++                      printk(KERN_WARNING "JFFS2: No memory for compressor allocation. Compression failed.\n");
++                      goto out;
++              }
++              orig_slen = *datalen;
++              orig_dlen = *cdatalen;
++              spin_lock(&jffs2_compressor_list_lock);
++              list_for_each_entry(this, &jffs2_compressor_list, list) {
++                      /* Skip decompress-only backwards-compatibility and disabled modules */
++                      if ((!this->compress)||(this->disabled))
++                              continue;
++
 +                      this->usecount++;
 +                      spin_unlock(&jffs2_compressor_list_lock);
 +                      *datalen  = orig_slen;
 +                      this->usecount++;
 +                      spin_unlock(&jffs2_compressor_list_lock);
 +                      *datalen  = orig_slen;
@@ -4748,7 +4720,7 @@ index 485d065..d90ca05 100644
        return ret;
  }
  
        return ret;
  }
  
-@@ -165,8 +166,8 @@ int jffs2_decompress(struct jffs2_sb_info *c, struct jffs2_inode_info *f,
+@@ -165,8 +166,8 @@ int jffs2_decompress(struct jffs2_sb_inf
                     uint16_t comprtype, unsigned char *cdata_in,
                     unsigned char *data_out, uint32_t cdatalen, uint32_t datalen)
  {
                     uint16_t comprtype, unsigned char *cdata_in,
                     unsigned char *data_out, uint32_t cdatalen, uint32_t datalen)
  {
@@ -4759,7 +4731,7 @@ index 485d065..d90ca05 100644
  
        /* Older code had a bug where it would write non-zero 'usercompr'
           fields. Deal with it. */
  
        /* Older code had a bug where it would write non-zero 'usercompr'
           fields. Deal with it. */
-@@ -177,32 +178,32 @@ int jffs2_decompress(struct jffs2_sb_info *c, struct jffs2_inode_info *f,
+@@ -177,32 +178,32 @@ int jffs2_decompress(struct jffs2_sb_inf
        case JFFS2_COMPR_NONE:
                /* This should be special-cased elsewhere, but we might as well deal with it */
                memcpy(data_out, cdata_in, datalen);
        case JFFS2_COMPR_NONE:
                /* This should be special-cased elsewhere, but we might as well deal with it */
                memcpy(data_out, cdata_in, datalen);
@@ -4812,7 +4784,7 @@ index 485d065..d90ca05 100644
                return -EIO;
        }
        return 0;
                return -EIO;
        }
        return 0;
-@@ -210,108 +211,108 @@ int jffs2_decompress(struct jffs2_sb_info *c, struct jffs2_inode_info *f,
+@@ -210,108 +211,108 @@ int jffs2_decompress(struct jffs2_sb_inf
  
  int jffs2_register_compressor(struct jffs2_compressor *comp)
  {
  
  int jffs2_register_compressor(struct jffs2_compressor *comp)
  {
@@ -4831,6 +4803,16 @@ index 485d065..d90ca05 100644
 -        comp->stat_compr_blocks=0;
 -        comp->stat_decompr_blocks=0;
 -        D1(printk(KERN_DEBUG "Registering JFFS2 compressor \"%s\"\n", comp->name));
 -        comp->stat_compr_blocks=0;
 -        comp->stat_decompr_blocks=0;
 -        D1(printk(KERN_DEBUG "Registering JFFS2 compressor \"%s\"\n", comp->name));
+-
+-        spin_lock(&jffs2_compressor_list_lock);
+-
+-        list_for_each_entry(this, &jffs2_compressor_list, list) {
+-                if (this->priority < comp->priority) {
+-                        list_add(&comp->list, this->list.prev);
+-                        goto out;
+-                }
+-        }
+-        list_add_tail(&comp->list, &jffs2_compressor_list);
 +      if (!comp->name) {
 +              printk(KERN_WARNING "NULL compressor name at registering JFFS2 compressor. Failed.\n");
 +              return -1;
 +      if (!comp->name) {
 +              printk(KERN_WARNING "NULL compressor name at registering JFFS2 compressor. Failed.\n");
 +              return -1;
@@ -4843,17 +4825,9 @@ index 485d065..d90ca05 100644
 +      comp->stat_compr_blocks=0;
 +      comp->stat_decompr_blocks=0;
 +      D1(printk(KERN_DEBUG "Registering JFFS2 compressor \"%s\"\n", comp->name));
 +      comp->stat_compr_blocks=0;
 +      comp->stat_decompr_blocks=0;
 +      D1(printk(KERN_DEBUG "Registering JFFS2 compressor \"%s\"\n", comp->name));
--        spin_lock(&jffs2_compressor_list_lock);
++
 +      spin_lock(&jffs2_compressor_list_lock);
 +      spin_lock(&jffs2_compressor_list_lock);
--        list_for_each_entry(this, &jffs2_compressor_list, list) {
--                if (this->priority < comp->priority) {
--                        list_add(&comp->list, this->list.prev);
--                        goto out;
--                }
--        }
--        list_add_tail(&comp->list, &jffs2_compressor_list);
++
 +      list_for_each_entry(this, &jffs2_compressor_list, list) {
 +              if (this->priority < comp->priority) {
 +                      list_add(&comp->list, this->list.prev);
 +      list_for_each_entry(this, &jffs2_compressor_list, list) {
 +              if (this->priority < comp->priority) {
 +                      list_add(&comp->list, this->list.prev);
@@ -4880,19 +4854,13 @@ index 485d065..d90ca05 100644
  {
 -        D2(struct jffs2_compressor *this;)
 +      D2(struct jffs2_compressor *this;)
  {
 -        D2(struct jffs2_compressor *this;)
 +      D2(struct jffs2_compressor *this;)
--        D1(printk(KERN_DEBUG "Unregistering JFFS2 compressor \"%s\"\n", comp->name));
++
 +      D1(printk(KERN_DEBUG "Unregistering JFFS2 compressor \"%s\"\n", comp->name));
  
 +      D1(printk(KERN_DEBUG "Unregistering JFFS2 compressor \"%s\"\n", comp->name));
  
--        spin_lock(&jffs2_compressor_list_lock);
+-        D1(printk(KERN_DEBUG "Unregistering JFFS2 compressor \"%s\"\n", comp->name));
 +      spin_lock(&jffs2_compressor_list_lock);
  
 +      spin_lock(&jffs2_compressor_list_lock);
  
--        if (comp->usecount) {
--                spin_unlock(&jffs2_compressor_list_lock);
--                printk(KERN_WARNING "JFFS2: Compressor modul is in use. Unregister failed.\n");
--                return -1;
--        }
--        list_del(&comp->list);
+-        spin_lock(&jffs2_compressor_list_lock);
 +      if (comp->usecount) {
 +              spin_unlock(&jffs2_compressor_list_lock);
 +              printk(KERN_WARNING "JFFS2: Compressor modul is in use. Unregister failed.\n");
 +      if (comp->usecount) {
 +              spin_unlock(&jffs2_compressor_list_lock);
 +              printk(KERN_WARNING "JFFS2: Compressor modul is in use. Unregister failed.\n");
@@ -4900,6 +4868,13 @@ index 485d065..d90ca05 100644
 +      }
 +      list_del(&comp->list);
  
 +      }
 +      list_del(&comp->list);
  
+-        if (comp->usecount) {
+-                spin_unlock(&jffs2_compressor_list_lock);
+-                printk(KERN_WARNING "JFFS2: Compressor modul is in use. Unregister failed.\n");
+-                return -1;
+-        }
+-        list_del(&comp->list);
+-
 -        D2(list_for_each_entry(this, &jffs2_compressor_list, list) {
 -                printk(KERN_DEBUG "Compressor \"%s\", prio %d\n", this->name, this->priority);
 -        })
 -        D2(list_for_each_entry(this, &jffs2_compressor_list, list) {
 -                printk(KERN_DEBUG "Compressor \"%s\", prio %d\n", this->name, this->priority);
 -        })
@@ -4978,10 +4953,10 @@ index 485d065..d90ca05 100644
 -        return 0;
 +      return 0;
  }
 -        return 0;
 +      return 0;
  }
-diff --git a/fs/jffs2/compr.h b/fs/jffs2/compr.h
-index 68cc701..1070275 100644
---- a/fs/jffs2/compr.h
-+++ b/fs/jffs2/compr.h
+Index: linux-2.6.23.17/fs/jffs2/compr.h
+===================================================================
+--- linux-2.6.23.17.orig/fs/jffs2/compr.h
++++ linux-2.6.23.17/fs/jffs2/compr.h
 @@ -2,7 +2,7 @@
   * JFFS2 -- Journalling Flash File System, Version 2.
   *
 @@ -2,7 +2,7 @@
   * JFFS2 -- Journalling Flash File System, Version 2.
   *
@@ -5055,11 +5030,11 @@ index 68cc701..1070275 100644
  
  void jffs2_free_comprbuf(unsigned char *comprbuf, unsigned char *orig);
  
  
  void jffs2_free_comprbuf(unsigned char *comprbuf, unsigned char *orig);
  
-diff --git a/fs/jffs2/compr_rtime.c b/fs/jffs2/compr_rtime.c
-index 0d0bfd2..546d153 100644
---- a/fs/jffs2/compr_rtime.c
-+++ b/fs/jffs2/compr_rtime.c
-@@ -104,7 +104,7 @@ static int jffs2_rtime_decompress(unsigned char *data_in,
+Index: linux-2.6.23.17/fs/jffs2/compr_rtime.c
+===================================================================
+--- linux-2.6.23.17.orig/fs/jffs2/compr_rtime.c
++++ linux-2.6.23.17/fs/jffs2/compr_rtime.c
+@@ -104,7 +104,7 @@ static int jffs2_rtime_decompress(unsign
                        }
                }
        }
                        }
                }
        }
@@ -5068,11 +5043,11 @@ index 0d0bfd2..546d153 100644
  }
  
  static struct jffs2_compressor jffs2_rtime_comp = {
  }
  
  static struct jffs2_compressor jffs2_rtime_comp = {
-diff --git a/fs/jffs2/compr_rubin.c b/fs/jffs2/compr_rubin.c
-index ea0431e..c73fa89 100644
---- a/fs/jffs2/compr_rubin.c
-+++ b/fs/jffs2/compr_rubin.c
-@@ -384,7 +384,7 @@ static int jffs2_rubinmips_decompress(unsigned char *data_in,
+Index: linux-2.6.23.17/fs/jffs2/compr_rubin.c
+===================================================================
+--- linux-2.6.23.17.orig/fs/jffs2/compr_rubin.c
++++ linux-2.6.23.17/fs/jffs2/compr_rubin.c
+@@ -384,7 +384,7 @@ static int jffs2_rubinmips_decompress(un
                                      void *model)
  {
        rubin_do_decompress(BIT_DIVIDER_MIPS, bits_mips, data_in, cpage_out, sourcelen, dstlen);
                                      void *model)
  {
        rubin_do_decompress(BIT_DIVIDER_MIPS, bits_mips, data_in, cpage_out, sourcelen, dstlen);
@@ -5081,7 +5056,7 @@ index ea0431e..c73fa89 100644
  }
  
  static int jffs2_dynrubin_decompress(unsigned char *data_in,
  }
  
  static int jffs2_dynrubin_decompress(unsigned char *data_in,
-@@ -399,7 +399,7 @@ static int jffs2_dynrubin_decompress(unsigned char *data_in,
+@@ -399,7 +399,7 @@ static int jffs2_dynrubin_decompress(uns
                bits[c] = data_in[c];
  
        rubin_do_decompress(256, bits, data_in+8, cpage_out, sourcelen-8, dstlen);
                bits[c] = data_in[c];
  
        rubin_do_decompress(256, bits, data_in+8, cpage_out, sourcelen-8, dstlen);
@@ -5090,11 +5065,11 @@ index ea0431e..c73fa89 100644
  }
  
  static struct jffs2_compressor jffs2_rubinmips_comp = {
  }
  
  static struct jffs2_compressor jffs2_rubinmips_comp = {
-diff --git a/fs/jffs2/compr_zlib.c b/fs/jffs2/compr_zlib.c
-index 2b87fcc..cfd301a 100644
---- a/fs/jffs2/compr_zlib.c
-+++ b/fs/jffs2/compr_zlib.c
-@@ -181,7 +181,7 @@ static int jffs2_zlib_decompress(unsigned char *data_in,
+Index: linux-2.6.23.17/fs/jffs2/compr_zlib.c
+===================================================================
+--- linux-2.6.23.17.orig/fs/jffs2/compr_zlib.c
++++ linux-2.6.23.17/fs/jffs2/compr_zlib.c
+@@ -181,7 +181,7 @@ static int jffs2_zlib_decompress(unsigne
        }
        zlib_inflateEnd(&inf_strm);
        mutex_unlock(&inflate_mutex);
        }
        zlib_inflateEnd(&inf_strm);
        mutex_unlock(&inflate_mutex);
@@ -5117,11 +5092,11 @@ index 2b87fcc..cfd301a 100644
  
      return ret;
  }
  
      return ret;
  }
-diff --git a/fs/jffs2/dir.c b/fs/jffs2/dir.c
-index c1dfca3..d293a1f 100644
---- a/fs/jffs2/dir.c
-+++ b/fs/jffs2/dir.c
-@@ -32,7 +32,7 @@ static int jffs2_mkdir (struct inode *,struct dentry *,int);
+Index: linux-2.6.23.17/fs/jffs2/dir.c
+===================================================================
+--- linux-2.6.23.17.orig/fs/jffs2/dir.c
++++ linux-2.6.23.17/fs/jffs2/dir.c
+@@ -32,7 +32,7 @@ static int jffs2_mkdir (struct inode *,s
  static int jffs2_rmdir (struct inode *,struct dentry *);
  static int jffs2_mknod (struct inode *,struct dentry *,int,dev_t);
  static int jffs2_rename (struct inode *, struct dentry *,
  static int jffs2_rmdir (struct inode *,struct dentry *);
  static int jffs2_mknod (struct inode *,struct dentry *,int,dev_t);
  static int jffs2_rename (struct inode *, struct dentry *,
@@ -5130,7 +5105,7 @@ index c1dfca3..d293a1f 100644
  
  const struct file_operations jffs2_dir_operations =
  {
  
  const struct file_operations jffs2_dir_operations =
  {
-@@ -770,7 +770,7 @@ static int jffs2_mknod (struct inode *dir_i, struct dentry *dentry, int mode, de
+@@ -770,7 +770,7 @@ static int jffs2_mknod (struct inode *di
  }
  
  static int jffs2_rename (struct inode *old_dir_i, struct dentry *old_dentry,
  }
  
  static int jffs2_rename (struct inode *old_dir_i, struct dentry *old_dentry,
@@ -5139,11 +5114,11 @@ index c1dfca3..d293a1f 100644
  {
        int ret;
        struct jffs2_sb_info *c = JFFS2_SB_INFO(old_dir_i->i_sb);
  {
        int ret;
        struct jffs2_sb_info *c = JFFS2_SB_INFO(old_dir_i->i_sb);
-diff --git a/fs/jffs2/erase.c b/fs/jffs2/erase.c
-index 66e7c2f..efd83f3 100644
---- a/fs/jffs2/erase.c
-+++ b/fs/jffs2/erase.c
-@@ -38,8 +38,8 @@ static void jffs2_erase_block(struct jffs2_sb_info *c,
+Index: linux-2.6.23.17/fs/jffs2/erase.c
+===================================================================
+--- linux-2.6.23.17.orig/fs/jffs2/erase.c
++++ linux-2.6.23.17/fs/jffs2/erase.c
+@@ -38,8 +38,8 @@ static void jffs2_erase_block(struct jff
  #ifdef __ECOS
         ret = jffs2_flash_erase(c, jeb);
         if (!ret) {
  #ifdef __ECOS
         ret = jffs2_flash_erase(c, jeb);
         if (!ret) {
@@ -5154,7 +5129,7 @@ index 66e7c2f..efd83f3 100644
         }
         bad_offset = jeb->offset;
  #else /* Linux */
         }
         bad_offset = jeb->offset;
  #else /* Linux */
-@@ -50,12 +50,14 @@ static void jffs2_erase_block(struct jffs2_sb_info *c,
+@@ -50,12 +50,14 @@ static void jffs2_erase_block(struct jff
        instr = kmalloc(sizeof(struct erase_info) + sizeof(struct erase_priv_struct), GFP_KERNEL);
        if (!instr) {
                printk(KERN_WARNING "kmalloc for struct erase_info in jffs2_erase_block failed. Refiling block for later\n");
        instr = kmalloc(sizeof(struct erase_info) + sizeof(struct erase_priv_struct), GFP_KERNEL);
        if (!instr) {
                printk(KERN_WARNING "kmalloc for struct erase_info in jffs2_erase_block failed. Refiling block for later\n");
@@ -5169,7 +5144,7 @@ index 66e7c2f..efd83f3 100644
                return;
        }
  
                return;
        }
  
-@@ -82,12 +84,14 @@ static void jffs2_erase_block(struct jffs2_sb_info *c,
+@@ -82,12 +84,14 @@ static void jffs2_erase_block(struct jff
        if (ret == -ENOMEM || ret == -EAGAIN) {
                /* Erase failed immediately. Refile it on the list */
                D1(printk(KERN_DEBUG "Erase at 0x%08x failed: %d. Refiling on erase_pending_list\n", jeb->offset, ret));
        if (ret == -ENOMEM || ret == -EAGAIN) {
                /* Erase failed immediately. Refile it on the list */
                D1(printk(KERN_DEBUG "Erase at 0x%08x failed: %d. Refiling on erase_pending_list\n", jeb->offset, ret));
@@ -5184,7 +5159,7 @@ index 66e7c2f..efd83f3 100644
                return;
        }
  
                return;
        }
  
-@@ -114,6 +118,7 @@ void jffs2_erase_pending_blocks(struct jffs2_sb_info *c, int count)
+@@ -114,6 +118,7 @@ void jffs2_erase_pending_blocks(struct j
                        jeb = list_entry(c->erase_complete_list.next, struct jffs2_eraseblock, list);
                        list_del(&jeb->list);
                        spin_unlock(&c->erase_completion_lock);
                        jeb = list_entry(c->erase_complete_list.next, struct jffs2_eraseblock, list);
                        list_del(&jeb->list);
                        spin_unlock(&c->erase_completion_lock);
@@ -5192,7 +5167,7 @@ index 66e7c2f..efd83f3 100644
                        jffs2_mark_erased_block(c, jeb);
  
                        if (!--count) {
                        jffs2_mark_erased_block(c, jeb);
  
                        if (!--count) {
-@@ -134,6 +139,7 @@ void jffs2_erase_pending_blocks(struct jffs2_sb_info *c, int count)
+@@ -134,6 +139,7 @@ void jffs2_erase_pending_blocks(struct j
                        jffs2_free_jeb_node_refs(c, jeb);
                        list_add(&jeb->list, &c->erasing_list);
                        spin_unlock(&c->erase_completion_lock);
                        jffs2_free_jeb_node_refs(c, jeb);
                        list_add(&jeb->list, &c->erasing_list);
                        spin_unlock(&c->erase_completion_lock);
@@ -5200,7 +5175,7 @@ index 66e7c2f..efd83f3 100644
  
                        jffs2_erase_block(c, jeb);
  
  
                        jffs2_erase_block(c, jeb);
  
-@@ -142,23 +148,25 @@ void jffs2_erase_pending_blocks(struct jffs2_sb_info *c, int count)
+@@ -142,23 +148,25 @@ void jffs2_erase_pending_blocks(struct j
                }
  
                /* Be nice */
                }
  
                /* Be nice */
@@ -5229,7 +5204,7 @@ index 66e7c2f..efd83f3 100644
        /* Ensure that kupdated calls us again to mark them clean */
        jffs2_erase_pending_trigger(c);
  }
        /* Ensure that kupdated calls us again to mark them clean */
        jffs2_erase_pending_trigger(c);
  }
-@@ -172,22 +180,26 @@ static void jffs2_erase_failed(struct jffs2_sb_info *c, struct jffs2_eraseblock
+@@ -172,22 +180,26 @@ static void jffs2_erase_failed(struct jf
                   failed too many times. */
                if (!jffs2_write_nand_badblock(c, jeb, bad_offset)) {
                        /* We'd like to give this block another try. */
                   failed too many times. */
                if (!jffs2_write_nand_badblock(c, jeb, bad_offset)) {
                        /* We'd like to give this block another try. */
@@ -5256,7 +5231,7 @@ index 66e7c2f..efd83f3 100644
        wake_up(&c->erase_wait);
  }
  
        wake_up(&c->erase_wait);
  }
  
-@@ -317,6 +329,33 @@ static int jffs2_block_check_erase(struct jffs2_sb_info *c, struct jffs2_erasebl
+@@ -317,6 +329,33 @@ static int jffs2_block_check_erase(struc
        size_t retlen;
        int ret = -EIO;
  
        size_t retlen;
        int ret = -EIO;
  
@@ -5290,7 +5265,7 @@ index 66e7c2f..efd83f3 100644
        ebuf = kmalloc(PAGE_SIZE, GFP_KERNEL);
        if (!ebuf) {
                printk(KERN_WARNING "Failed to allocate page buffer for verifying erase at 0x%08x. Refiling\n", jeb->offset);
        ebuf = kmalloc(PAGE_SIZE, GFP_KERNEL);
        if (!ebuf) {
                printk(KERN_WARNING "Failed to allocate page buffer for verifying erase at 0x%08x. Refiling\n", jeb->offset);
-@@ -417,6 +456,7 @@ static void jffs2_mark_erased_block(struct jffs2_sb_info *c, struct jffs2_eraseb
+@@ -417,6 +456,7 @@ static void jffs2_mark_erased_block(stru
                jffs2_link_node_ref(c, jeb, jeb->offset | REF_NORMAL, c->cleanmarker_size, NULL);
        }
  
                jffs2_link_node_ref(c, jeb, jeb->offset | REF_NORMAL, c->cleanmarker_size, NULL);
        }
  
@@ -5298,7 +5273,7 @@ index 66e7c2f..efd83f3 100644
        spin_lock(&c->erase_completion_lock);
        c->erasing_size -= c->sector_size;
        c->free_size += jeb->free_size;
        spin_lock(&c->erase_completion_lock);
        c->erasing_size -= c->sector_size;
        c->free_size += jeb->free_size;
-@@ -429,23 +469,28 @@ static void jffs2_mark_erased_block(struct jffs2_sb_info *c, struct jffs2_eraseb
+@@ -429,23 +469,28 @@ static void jffs2_mark_erased_block(stru
        c->nr_erasing_blocks--;
        c->nr_free_blocks++;
        spin_unlock(&c->erase_completion_lock);
        c->nr_erasing_blocks--;
        c->nr_free_blocks++;
        spin_unlock(&c->erase_completion_lock);
@@ -5327,11 +5302,11 @@ index 66e7c2f..efd83f3 100644
 +      up(&c->erase_free_sem);
        return;
  }
 +      up(&c->erase_free_sem);
        return;
  }
-diff --git a/fs/jffs2/gc.c b/fs/jffs2/gc.c
-index 2d99e06..eded819 100644
---- a/fs/jffs2/gc.c
-+++ b/fs/jffs2/gc.c
-@@ -556,7 +556,7 @@ static int jffs2_garbage_collect_pristine(struct jffs2_sb_info *c,
+Index: linux-2.6.23.17/fs/jffs2/gc.c
+===================================================================
+--- linux-2.6.23.17.orig/fs/jffs2/gc.c
++++ linux-2.6.23.17/fs/jffs2/gc.c
+@@ -556,7 +556,7 @@ static int jffs2_garbage_collect_pristin
  
        node = kmalloc(rawlen, GFP_KERNEL);
        if (!node)
  
        node = kmalloc(rawlen, GFP_KERNEL);
        if (!node)
@@ -5340,7 +5315,7 @@ index 2d99e06..eded819 100644
  
        ret = jffs2_flash_read(c, ref_offset(raw), rawlen, &retlen, (char *)node);
        if (!ret && retlen != rawlen)
  
        ret = jffs2_flash_read(c, ref_offset(raw), rawlen, &retlen, (char *)node);
        if (!ret && retlen != rawlen)
-@@ -624,7 +624,7 @@ static int jffs2_garbage_collect_pristine(struct jffs2_sb_info *c,
+@@ -624,7 +624,7 @@ static int jffs2_garbage_collect_pristin
  
        if (ret || (retlen != rawlen)) {
                printk(KERN_NOTICE "Write of %d bytes at 0x%08x failed. returned %d, retlen %zd\n",
  
        if (ret || (retlen != rawlen)) {
                printk(KERN_NOTICE "Write of %d bytes at 0x%08x failed. returned %d, retlen %zd\n",
@@ -5349,10 +5324,10 @@ index 2d99e06..eded819 100644
                if (retlen) {
                        jffs2_add_physical_node_ref(c, phys_ofs | REF_OBSOLETE, rawlen, NULL);
                } else {
                if (retlen) {
                        jffs2_add_physical_node_ref(c, phys_ofs | REF_OBSOLETE, rawlen, NULL);
                } else {
-diff --git a/fs/jffs2/jffs2_fs_sb.h b/fs/jffs2/jffs2_fs_sb.h
-index b13298a..ae99cd7 100644
---- a/fs/jffs2/jffs2_fs_sb.h
-+++ b/fs/jffs2/jffs2_fs_sb.h
+Index: linux-2.6.23.17/fs/jffs2/jffs2_fs_sb.h
+===================================================================
+--- linux-2.6.23.17.orig/fs/jffs2/jffs2_fs_sb.h
++++ linux-2.6.23.17/fs/jffs2/jffs2_fs_sb.h
 @@ -106,6 +106,9 @@ struct jffs2_sb_info {
  
        uint32_t wbuf_pagesize; /* 0 for NOR and other flashes with no wbuf */
 @@ -106,6 +106,9 @@ struct jffs2_sb_info {
  
        uint32_t wbuf_pagesize; /* 0 for NOR and other flashes with no wbuf */
@@ -5363,11 +5338,11 @@ index b13298a..ae99cd7 100644
  #ifdef CONFIG_JFFS2_FS_WRITEBUFFER
        unsigned char *wbuf; /* Write-behind buffer for NAND flash */
        uint32_t wbuf_ofs;
  #ifdef CONFIG_JFFS2_FS_WRITEBUFFER
        unsigned char *wbuf; /* Write-behind buffer for NAND flash */
        uint32_t wbuf_ofs;
-diff --git a/fs/jffs2/nodelist.h b/fs/jffs2/nodelist.h
-index bc5509f..8b4955a 100644
---- a/fs/jffs2/nodelist.h
-+++ b/fs/jffs2/nodelist.h
-@@ -127,7 +127,7 @@ static inline struct jffs2_inode_cache *jffs2_raw_ref_to_ic(struct jffs2_raw_nod
+Index: linux-2.6.23.17/fs/jffs2/nodelist.h
+===================================================================
+--- linux-2.6.23.17.orig/fs/jffs2/nodelist.h
++++ linux-2.6.23.17/fs/jffs2/nodelist.h
+@@ -127,7 +127,7 @@ static inline struct jffs2_inode_cache *
        return ((struct jffs2_inode_cache *)raw);
  }
  
        return ((struct jffs2_inode_cache *)raw);
  }
  
@@ -5385,11 +5360,11 @@ index bc5509f..8b4955a 100644
  
  #define write_ofs(c) ((c)->nextblock->offset + (c)->sector_size - (c)->nextblock->free_size)
  
  
  #define write_ofs(c) ((c)->nextblock->offset + (c)->sector_size - (c)->nextblock->free_size)
  
-diff --git a/fs/jffs2/nodemgmt.c b/fs/jffs2/nodemgmt.c
-index dbc908a..5b49bff 100644
---- a/fs/jffs2/nodemgmt.c
-+++ b/fs/jffs2/nodemgmt.c
-@@ -154,7 +154,7 @@ int jffs2_reserve_space_gc(struct jffs2_sb_info *c, uint32_t minsize,
+Index: linux-2.6.23.17/fs/jffs2/nodemgmt.c
+===================================================================
+--- linux-2.6.23.17.orig/fs/jffs2/nodemgmt.c
++++ linux-2.6.23.17/fs/jffs2/nodemgmt.c
+@@ -154,7 +154,7 @@ int jffs2_reserve_space_gc(struct jffs2_
        while(ret == -EAGAIN) {
                ret = jffs2_do_reserve_space(c, minsize, len, sumsize);
                if (ret) {
        while(ret == -EAGAIN) {
                ret = jffs2_do_reserve_space(c, minsize, len, sumsize);
                if (ret) {
@@ -5398,7 +5373,7 @@ index dbc908a..5b49bff 100644
                }
        }
        spin_unlock(&c->erase_completion_lock);
                }
        }
        spin_unlock(&c->erase_completion_lock);
-@@ -423,7 +423,12 @@ struct jffs2_raw_node_ref *jffs2_add_physical_node_ref(struct jffs2_sb_info *c,
+@@ -423,7 +423,12 @@ struct jffs2_raw_node_ref *jffs2_add_phy
           even after refiling c->nextblock */
        if ((c->nextblock || ((ofs & 3) != REF_OBSOLETE))
            && (jeb != c->nextblock || (ofs & ~3) != jeb->offset + (c->sector_size - jeb->free_size))) {
           even after refiling c->nextblock */
        if ((c->nextblock || ((ofs & 3) != REF_OBSOLETE))
            && (jeb != c->nextblock || (ofs & ~3) != jeb->offset + (c->sector_size - jeb->free_size))) {
@@ -5412,11 +5387,11 @@ index dbc908a..5b49bff 100644
                return ERR_PTR(-EINVAL);
        }
  #endif
                return ERR_PTR(-EINVAL);
        }
  #endif
-diff --git a/fs/jffs2/readinode.c b/fs/jffs2/readinode.c
-index b5baa35..8d4319c 100644
---- a/fs/jffs2/readinode.c
-+++ b/fs/jffs2/readinode.c
-@@ -211,7 +211,7 @@ static void jffs2_kill_tn(struct jffs2_sb_info *c, struct jffs2_tmp_dnode_info *
+Index: linux-2.6.23.17/fs/jffs2/readinode.c
+===================================================================
+--- linux-2.6.23.17.orig/fs/jffs2/readinode.c
++++ linux-2.6.23.17/fs/jffs2/readinode.c
+@@ -211,7 +211,7 @@ static void jffs2_kill_tn(struct jffs2_s
   * ordering.
   *
   * Returns 0 if the node was handled (including marking it obsolete)
   * ordering.
   *
   * Returns 0 if the node was handled (including marking it obsolete)
@@ -5425,7 +5400,7 @@ index b5baa35..8d4319c 100644
   */
  static int jffs2_add_tn_to_tree(struct jffs2_sb_info *c,
                                struct jffs2_readinode_info *rii,
   */
  static int jffs2_add_tn_to_tree(struct jffs2_sb_info *c,
                                struct jffs2_readinode_info *rii,
-@@ -862,8 +862,8 @@ static inline int read_unknown(struct jffs2_sb_info *c, struct jffs2_raw_node_re
+@@ -862,8 +862,8 @@ static inline int read_unknown(struct jf
                JFFS2_ERROR("REF_UNCHECKED but unknown node at %#08x\n",
                            ref_offset(ref));
                JFFS2_ERROR("Node is {%04x,%04x,%08x,%08x}. Please report this error.\n",
                JFFS2_ERROR("REF_UNCHECKED but unknown node at %#08x\n",
                            ref_offset(ref));
                JFFS2_ERROR("Node is {%04x,%04x,%08x,%08x}. Please report this error.\n",
@@ -5436,11 +5411,11 @@ index b5baa35..8d4319c 100644
                jffs2_mark_node_obsolete(c, ref);
                return 0;
        }
                jffs2_mark_node_obsolete(c, ref);
                return 0;
        }
-diff --git a/fs/jffs2/scan.c b/fs/jffs2/scan.c
-index 6c75cd4..59dd408 100644
---- a/fs/jffs2/scan.c
-+++ b/fs/jffs2/scan.c
-@@ -863,7 +863,7 @@ scan_more:
+Index: linux-2.6.23.17/fs/jffs2/scan.c
+===================================================================
+--- linux-2.6.23.17.orig/fs/jffs2/scan.c
++++ linux-2.6.23.17/fs/jffs2/scan.c
+@@ -877,7 +877,7 @@ scan_more:
                        switch (je16_to_cpu(node->nodetype) & JFFS2_COMPAT_MASK) {
                        case JFFS2_FEATURE_ROCOMPAT:
                                printk(KERN_NOTICE "Read-only compatible feature node (0x%04x) found at offset 0x%08x\n", je16_to_cpu(node->nodetype), ofs);
                        switch (je16_to_cpu(node->nodetype) & JFFS2_COMPAT_MASK) {
                        case JFFS2_FEATURE_ROCOMPAT:
                                printk(KERN_NOTICE "Read-only compatible feature node (0x%04x) found at offset 0x%08x\n", je16_to_cpu(node->nodetype), ofs);
@@ -5449,11 +5424,11 @@ index 6c75cd4..59dd408 100644
                                if (!(jffs2_is_readonly(c)))
                                        return -EROFS;
                                if ((err = jffs2_scan_dirty_space(c, jeb, PAD(je32_to_cpu(node->totlen)))))
                                if (!(jffs2_is_readonly(c)))
                                        return -EROFS;
                                if ((err = jffs2_scan_dirty_space(c, jeb, PAD(je32_to_cpu(node->totlen)))))
-diff --git a/fs/jffs2/security.c b/fs/jffs2/security.c
-index bc9f6ba..02c39c6 100644
---- a/fs/jffs2/security.c
-+++ b/fs/jffs2/security.c
-@@ -38,9 +38,9 @@ int jffs2_init_security(struct inode *inode, struct inode *dir)
+Index: linux-2.6.23.17/fs/jffs2/security.c
+===================================================================
+--- linux-2.6.23.17.orig/fs/jffs2/security.c
++++ linux-2.6.23.17/fs/jffs2/security.c
+@@ -38,9 +38,9 @@ int jffs2_init_security(struct inode *in
        }
        rc = do_jffs2_setxattr(inode, JFFS2_XPREFIX_SECURITY, name, value, len, 0);
  
        }
        rc = do_jffs2_setxattr(inode, JFFS2_XPREFIX_SECURITY, name, value, len, 0);
  
@@ -5466,10 +5441,10 @@ index bc9f6ba..02c39c6 100644
  }
  
  /* ---- XATTR Handler for "security.*" ----------------- */
  }
  
  /* ---- XATTR Handler for "security.*" ----------------- */
-diff --git a/fs/jffs2/summary.c b/fs/jffs2/summary.c
-index d828b29..2a77d3f 100644
---- a/fs/jffs2/summary.c
-+++ b/fs/jffs2/summary.c
+Index: linux-2.6.23.17/fs/jffs2/summary.c
+===================================================================
+--- linux-2.6.23.17.orig/fs/jffs2/summary.c
++++ linux-2.6.23.17/fs/jffs2/summary.c
 @@ -2,10 +2,10 @@
   * JFFS2 -- Journalling Flash File System, Version 2.
   *
 @@ -2,10 +2,10 @@
   * JFFS2 -- Journalling Flash File System, Version 2.
   *
@@ -5485,10 +5460,10 @@ index d828b29..2a77d3f 100644
   *
   * For licensing information, see the file 'LICENCE' in this directory.
   *
   *
   * For licensing information, see the file 'LICENCE' in this directory.
   *
-diff --git a/fs/jffs2/summary.h b/fs/jffs2/summary.h
-index 0c6669e..8bf34f2 100644
---- a/fs/jffs2/summary.h
-+++ b/fs/jffs2/summary.h
+Index: linux-2.6.23.17/fs/jffs2/summary.h
+===================================================================
+--- linux-2.6.23.17.orig/fs/jffs2/summary.h
++++ linux-2.6.23.17/fs/jffs2/summary.h
 @@ -2,9 +2,9 @@
   * JFFS2 -- Journalling Flash File System, Version 2.
   *
 @@ -2,9 +2,9 @@
   * JFFS2 -- Journalling Flash File System, Version 2.
   *
@@ -5502,11 +5477,11 @@ index 0c6669e..8bf34f2 100644
   *
   * For licensing information, see the file 'LICENCE' in this directory.
   *
   *
   * For licensing information, see the file 'LICENCE' in this directory.
   *
-diff --git a/fs/jffs2/wbuf.c b/fs/jffs2/wbuf.c
-index 91d1d0f..d1d4f27 100644
---- a/fs/jffs2/wbuf.c
-+++ b/fs/jffs2/wbuf.c
-@@ -220,6 +220,47 @@ static struct jffs2_raw_node_ref **jffs2_incore_replace_raw(struct jffs2_sb_info
+Index: linux-2.6.23.17/fs/jffs2/wbuf.c
+===================================================================
+--- linux-2.6.23.17.orig/fs/jffs2/wbuf.c
++++ linux-2.6.23.17/fs/jffs2/wbuf.c
+@@ -220,6 +220,47 @@ static struct jffs2_raw_node_ref **jffs2
        return NULL;
  }
  
        return NULL;
  }
  
@@ -5554,7 +5529,7 @@ index 91d1d0f..d1d4f27 100644
  /* Recover from failure to write wbuf. Recover the nodes up to the
   * wbuf, not the one which we were starting to try to write. */
  
  /* Recover from failure to write wbuf. Recover the nodes up to the
   * wbuf, not the one which we were starting to try to write. */
  
-@@ -380,7 +421,7 @@ static void jffs2_wbuf_recover(struct jffs2_sb_info *c)
+@@ -380,7 +421,7 @@ static void jffs2_wbuf_recover(struct jf
                        ret = c->mtd->write(c->mtd, ofs, towrite, &retlen,
                                            rewrite_buf);
  
                        ret = c->mtd->write(c->mtd, ofs, towrite, &retlen,
                                            rewrite_buf);
  
@@ -5563,7 +5538,7 @@ index 91d1d0f..d1d4f27 100644
                        /* Argh. We tried. Really we did. */
                        printk(KERN_CRIT "Recovery of wbuf failed due to a second write error\n");
                        kfree(buf);
                        /* Argh. We tried. Really we did. */
                        printk(KERN_CRIT "Recovery of wbuf failed due to a second write error\n");
                        kfree(buf);
-@@ -587,15 +628,16 @@ static int __jffs2_flush_wbuf(struct jffs2_sb_info *c, int pad)
+@@ -587,15 +628,16 @@ static int __jffs2_flush_wbuf(struct jff
  
                ret = c->mtd->write(c->mtd, c->wbuf_ofs, c->wbuf_pagesize, &retlen, c->wbuf);
  
  
                ret = c->mtd->write(c->mtd, c->wbuf_ofs, c->wbuf_pagesize, &retlen, c->wbuf);
  
@@ -5600,7 +5575,7 @@ index 91d1d0f..d1d4f27 100644
  
  static const struct jffs2_unknown_node oob_cleanmarker =
  {
  
  static const struct jffs2_unknown_node oob_cleanmarker =
  {
-@@ -1021,8 +1063,8 @@ int jffs2_check_oob_empty(struct jffs2_sb_info *c,
+@@ -1021,8 +1063,8 @@ int jffs2_check_oob_empty(struct jffs2_s
  /*
   * Check for a valid cleanmarker.
   * Returns: 0 if a valid cleanmarker was found
  /*
   * Check for a valid cleanmarker.
   * Returns: 0 if a valid cleanmarker was found
@@ -5611,7 +5586,7 @@ index 91d1d0f..d1d4f27 100644
   */
  int jffs2_check_nand_cleanmarker(struct jffs2_sb_info *c,
                                 struct jffs2_eraseblock *jeb)
   */
  int jffs2_check_nand_cleanmarker(struct jffs2_sb_info *c,
                                 struct jffs2_eraseblock *jeb)
-@@ -1138,11 +1180,22 @@ int jffs2_nand_flash_setup(struct jffs2_sb_info *c)
+@@ -1138,11 +1180,22 @@ int jffs2_nand_flash_setup(struct jffs2_
                return -ENOMEM;
        }
  
                return -ENOMEM;
        }
  
@@ -5634,11 +5609,11 @@ index 91d1d0f..d1d4f27 100644
        kfree(c->wbuf);
        kfree(c->oobbuf);
  }
        kfree(c->wbuf);
        kfree(c->oobbuf);
  }
-diff --git a/fs/jffs2/xattr.h b/fs/jffs2/xattr.h
-index 3b0ff29..6e3b5dd 100644
---- a/fs/jffs2/xattr.h
-+++ b/fs/jffs2/xattr.h
-@@ -75,7 +75,7 @@ extern void jffs2_build_xattr_subsystem(struct jffs2_sb_info *c);
+Index: linux-2.6.23.17/fs/jffs2/xattr.h
+===================================================================
+--- linux-2.6.23.17.orig/fs/jffs2/xattr.h
++++ linux-2.6.23.17/fs/jffs2/xattr.h
+@@ -75,7 +75,7 @@ extern void jffs2_build_xattr_subsystem(
  extern void jffs2_clear_xattr_subsystem(struct jffs2_sb_info *c);
  
  extern struct jffs2_xattr_datum *jffs2_setup_xattr_datum(struct jffs2_sb_info *c,
  extern void jffs2_clear_xattr_subsystem(struct jffs2_sb_info *c);
  
  extern struct jffs2_xattr_datum *jffs2_setup_xattr_datum(struct jffs2_sb_info *c,
@@ -5647,10 +5622,10 @@ index 3b0ff29..6e3b5dd 100644
  
  extern void jffs2_xattr_delete_inode(struct jffs2_sb_info *c, struct jffs2_inode_cache *ic);
  extern void jffs2_xattr_free_inode(struct jffs2_sb_info *c, struct jffs2_inode_cache *ic);
  
  extern void jffs2_xattr_delete_inode(struct jffs2_sb_info *c, struct jffs2_inode_cache *ic);
  extern void jffs2_xattr_free_inode(struct jffs2_sb_info *c, struct jffs2_inode_cache *ic);
-diff --git a/fs/jffs2/xattr_user.c b/fs/jffs2/xattr_user.c
-index 40942bc..8bbeab9 100644
---- a/fs/jffs2/xattr_user.c
-+++ b/fs/jffs2/xattr_user.c
+Index: linux-2.6.23.17/fs/jffs2/xattr_user.c
+===================================================================
+--- linux-2.6.23.17.orig/fs/jffs2/xattr_user.c
++++ linux-2.6.23.17/fs/jffs2/xattr_user.c
 @@ -17,7 +17,7 @@
  #include "nodelist.h"
  
 @@ -17,7 +17,7 @@
  #include "nodelist.h"
  
@@ -5660,7 +5635,7 @@ index 40942bc..8bbeab9 100644
  {
        if (!strcmp(name, ""))
                return -EINVAL;
  {
        if (!strcmp(name, ""))
                return -EINVAL;
-@@ -25,7 +25,7 @@ static int jffs2_user_getxattr(struct inode *inode, const char *name,
+@@ -25,7 +25,7 @@ static int jffs2_user_getxattr(struct in
  }
  
  static int jffs2_user_setxattr(struct inode *inode, const char *name, const void *buffer,
  }
  
  static int jffs2_user_setxattr(struct inode *inode, const char *name, const void *buffer,
@@ -5669,11 +5644,11 @@ index 40942bc..8bbeab9 100644
  {
        if (!strcmp(name, ""))
                return -EINVAL;
  {
        if (!strcmp(name, ""))
                return -EINVAL;
-diff --git a/include/asm-i386/geode.h b/include/asm-i386/geode.h
-index 6da4bbb..f18ebe2 100644
---- a/include/asm-i386/geode.h
-+++ b/include/asm-i386/geode.h
-@@ -135,6 +135,55 @@ static inline void geode_gpio_event_pme(unsigned int gpio, int pair)
+Index: linux-2.6.23.17/include/asm-i386/geode.h
+===================================================================
+--- linux-2.6.23.17.orig/include/asm-i386/geode.h
++++ linux-2.6.23.17/include/asm-i386/geode.h
+@@ -135,6 +135,55 @@ static inline void geode_gpio_event_pme(
        geode_gpio_setup_event(gpio, pair, 1);
  }
  
        geode_gpio_setup_event(gpio, pair, 1);
  }
  
@@ -5729,11 +5704,10 @@ index 6da4bbb..f18ebe2 100644
  /* Specific geode tests */
  
  static inline int is_geode_gx(void)
  /* Specific geode tests */
  
  static inline int is_geode_gx(void)
-
-diff --git a/include/asm-i386/setup.h b/include/asm-i386/setup.h
-index 7862fe8..d7146c0 100644
---- a/include/asm-i386/setup.h
-+++ b/include/asm-i386/setup.h
+Index: linux-2.6.23.17/include/asm-i386/setup.h
+===================================================================
+--- linux-2.6.23.17.orig/include/asm-i386/setup.h
++++ linux-2.6.23.17/include/asm-i386/setup.h
 @@ -24,6 +24,7 @@
  #define OLD_CL_BASE_ADDR      0x90000
  #define OLD_CL_OFFSET         0x90022
 @@ -24,6 +24,7 @@
  #define OLD_CL_BASE_ADDR      0x90000
  #define OLD_CL_OFFSET         0x90022
@@ -5742,11 +5716,11 @@ index 7862fe8..d7146c0 100644
  
  #ifndef __ASSEMBLY__
  
  
  #ifndef __ASSEMBLY__
  
-diff --git a/include/linux/console.h b/include/linux/console.h
-index 56a7bcd..1a8b034 100644
---- a/include/linux/console.h
-+++ b/include/linux/console.h
-@@ -121,14 +121,11 @@ extern void console_stop(struct console *);
+Index: linux-2.6.23.17/include/linux/console.h
+===================================================================
+--- linux-2.6.23.17.orig/include/linux/console.h
++++ linux-2.6.23.17/include/linux/console.h
+@@ -121,14 +121,11 @@ extern void console_stop(struct console 
  extern void console_start(struct console *);
  extern int is_console_locked(void);
  
  extern void console_start(struct console *);
  extern int is_console_locked(void);
  
@@ -5763,10 +5737,10 @@ index 56a7bcd..1a8b034 100644
  
  int mda_console_init(void);
  void prom_con_init(void);
  
  int mda_console_init(void);
  void prom_con_init(void);
-diff --git a/include/linux/fb.h b/include/linux/fb.h
-index cec5410..6b59db5 100644
---- a/include/linux/fb.h
-+++ b/include/linux/fb.h
+Index: linux-2.6.23.17/include/linux/fb.h
+===================================================================
+--- linux-2.6.23.17.orig/include/linux/fb.h
++++ linux-2.6.23.17/include/linux/fb.h
 @@ -664,6 +664,12 @@ struct fb_ops {
        /* restore saved state */
        void (*fb_restore_state)(struct fb_info *info);
 @@ -664,6 +664,12 @@ struct fb_ops {
        /* restore saved state */
        void (*fb_restore_state)(struct fb_info *info);
@@ -5780,7 +5754,7 @@ index cec5410..6b59db5 100644
        /* get capability given var */
        void (*fb_get_caps)(struct fb_info *info, struct fb_blit_caps *caps,
                            struct fb_var_screeninfo *var);
        /* get capability given var */
        void (*fb_get_caps)(struct fb_info *info, struct fb_blit_caps *caps,
                            struct fb_var_screeninfo *var);
-@@ -943,6 +949,9 @@ extern int fb_get_color_depth(struct fb_var_screeninfo *var,
+@@ -943,6 +949,9 @@ extern int fb_get_color_depth(struct fb_
  extern int fb_get_options(char *name, char **option);
  extern int fb_new_modelist(struct fb_info *info);
  
  extern int fb_get_options(char *name, char **option);
  extern int fb_new_modelist(struct fb_info *info);
  
@@ -5790,10 +5764,10 @@ index cec5410..6b59db5 100644
  extern struct fb_info *registered_fb[FB_MAX];
  extern int num_registered_fb;
  extern struct class *fb_class;
  extern struct fb_info *registered_fb[FB_MAX];
  extern int num_registered_fb;
  extern struct class *fb_class;
-diff --git a/include/linux/mtd/onenand.h b/include/linux/mtd/onenand.h
-index a56d24a..fd0a260 100644
---- a/include/linux/mtd/onenand.h
-+++ b/include/linux/mtd/onenand.h
+Index: linux-2.6.23.17/include/linux/mtd/onenand.h
+===================================================================
+--- linux-2.6.23.17.orig/include/linux/mtd/onenand.h
++++ linux-2.6.23.17/include/linux/mtd/onenand.h
 @@ -60,6 +60,7 @@ struct onenand_bufferram {
   * @erase_shift:      [INTERN] number of address bits in a block
   * @page_shift:               [INTERN] number of address bits in a page
 @@ -60,6 +60,7 @@ struct onenand_bufferram {
   * @erase_shift:      [INTERN] number of address bits in a block
   * @page_shift:               [INTERN] number of address bits in a page
@@ -5841,10 +5815,10 @@ index a56d24a..fd0a260 100644
  #define ONENAND_PAGEBUF_ALLOC         (0x1000)
  #define ONENAND_OOBBUF_ALLOC          (0x2000)
  
  #define ONENAND_PAGEBUF_ALLOC         (0x1000)
  #define ONENAND_OOBBUF_ALLOC          (0x2000)
  
-diff --git a/include/linux/mtd/onenand_regs.h b/include/linux/mtd/onenand_regs.h
-index af94719..c46161f 100644
---- a/include/linux/mtd/onenand_regs.h
-+++ b/include/linux/mtd/onenand_regs.h
+Index: linux-2.6.23.17/include/linux/mtd/onenand_regs.h
+===================================================================
+--- linux-2.6.23.17.orig/include/linux/mtd/onenand_regs.h
++++ linux-2.6.23.17/include/linux/mtd/onenand_regs.h
 @@ -74,6 +74,8 @@
  
  #define ONENAND_DEVICE_DENSITY_512Mb  (0x002)
 @@ -74,6 +74,8 @@
  
  #define ONENAND_DEVICE_DENSITY_512Mb  (0x002)
@@ -5863,10 +5837,10 @@ index af94719..c46161f 100644
  #define ONENAND_CMD_UNLOCK            (0x23)
  #define ONENAND_CMD_LOCK              (0x2A)
  #define ONENAND_CMD_LOCK_TIGHT                (0x2C)
  #define ONENAND_CMD_UNLOCK            (0x23)
  #define ONENAND_CMD_LOCK              (0x2A)
  #define ONENAND_CMD_LOCK_TIGHT                (0x2C)
-diff --git a/include/linux/vt_kern.h b/include/linux/vt_kern.h
-index 699b7e9..b44facf 100644
---- a/include/linux/vt_kern.h
-+++ b/include/linux/vt_kern.h
+Index: linux-2.6.23.17/include/linux/vt_kern.h
+===================================================================
+--- linux-2.6.23.17.orig/include/linux/vt_kern.h
++++ linux-2.6.23.17/include/linux/vt_kern.h
 @@ -95,4 +95,23 @@ struct vt_spawn_console {
  };
  extern struct vt_spawn_console vt_spawn_con;
 @@ -95,4 +95,23 @@ struct vt_spawn_console {
  };
  extern struct vt_spawn_console vt_spawn_con;
@@ -5891,10 +5865,10 @@ index 699b7e9..b44facf 100644
 +}
 +
  #endif /* _VT_KERN_H */
 +}
 +
  #endif /* _VT_KERN_H */
-diff --git a/kernel/power/console.c b/kernel/power/console.c
-index 89bcf49..dca98f5 100644
---- a/kernel/power/console.c
-+++ b/kernel/power/console.c
+Index: linux-2.6.23.17/kernel/power/console.c
+===================================================================
+--- linux-2.6.23.17.orig/kernel/power/console.c
++++ linux-2.6.23.17/kernel/power/console.c
 @@ -9,7 +9,7 @@
  #include <linux/console.h>
  #include "power.h"
 @@ -9,7 +9,7 @@
  #include <linux/console.h>
  #include "power.h"
This page took 0.161179 seconds and 4 git commands to generate.