first renamed release maemo24
authortanner <tanner@mach.kyb.local>
Thu, 15 Apr 2010 10:00:44 +0000 (12:00 +0200)
committertanner <tanner@mach.kyb.local>
Thu, 15 Apr 2010 10:00:44 +0000 (12:00 +0200)
24 files changed:
kernel-power-2.6.28/debian/changelog
kernel-power-2.6.28/debian/control
kernel-power-2.6.28/debian/kernel-flasher-maemo.postinst.in [deleted file]
kernel-power-2.6.28/debian/kernel-modules-maemo.postinst.in [deleted file]
kernel-power-2.6.28/debian/kernel-modules-maemo.postrm.in [deleted file]
kernel-power-2.6.28/debian/kernel-power-flasher.postinst.in [new file with mode: 0644]
kernel-power-2.6.28/debian/kernel-power-modules.postinst.in [new file with mode: 0644]
kernel-power-2.6.28/debian/kernel-power-modules.postrm.in [new file with mode: 0644]
kernel-power-2.6.28/debian/patches/2.6.28.10.diff
kernel-power-2.6.28/debian/patches/leds-lp5523.diff [new file with mode: 0644]
kernel-power-2.6.28/debian/patches/maemo-build.diff
kernel-power-2.6.28/debian/patches/overclock-ideal.diff [deleted file]
kernel-power-2.6.28/debian/patches/overclock-lv.diff [deleted file]
kernel-power-2.6.28/debian/patches/overclock-ulv.diff [deleted file]
kernel-power-2.6.28/debian/patches/overclock-xlv.diff [deleted file]
kernel-power-2.6.28/debian/patches/overclock.diff
kernel-power-2.6.28/debian/patches/series
kernel-power-2.6.28/debian/patches/squashfs.diff [new file with mode: 0644]
kernel-power-2.6.28/debian/patches/trig-keyb.diff [new file with mode: 0644]
kernel-power-2.6.28/debian/patches/twl-scrollock.diff [new file with mode: 0644]
kernel-power-2.6.28/debian/rules
kernel-power-2.6.28/debian/rx51maemo_defconfig [deleted file]
kernel-power-2.6.28/debian/rx51power_defconfig [new file with mode: 0644]
kernel-power-2.6.28/debian/upstart [deleted file]

index 5b4b32a..58ece0d 100644 (file)
@@ -1,3 +1,14 @@
+kernel-power (2.6.28-maemo24) fremantle; urgency=low
+
+   * renamed package to kernel-power due to trademark issues
+   * control: updated (renamed to kernel-power*), new features in Provides
+   * DSP frequencies are specified as MHz
+   * enabled crypto seqiv and twofish modules
+   * added patches by Matan Ziv-Av: squashfs and led triggers and bugfixes
+   * squashfs is build as module
+
+ -- Thomas Tanner <maemo@tannerlab.com>  Wed, 14 Apr 2010 00:00:00 +0100
+
 kernel-maemo (2.6.28-maemo22) fremantle; urgency=low
 
    * support dsp rate customization via /sys/power/dsp_opps_rate
index bc6d18c..ec5d894 100644 (file)
@@ -1,4 +1,4 @@
-Source: kernel-maemo
+Source: kernel-power
 Section: utils
 Priority: optional
 Maintainer: Thomas Tanner <maemo@tannerlab.com>
@@ -8,13 +8,14 @@ Build-Depends: debhelper (>= 4.0.0), quilt, sdk-fiasco-gen, libncurses5-dev
 Build-Depends-Indep: bzip2
 Standards-Version: 3.8.0
 
-Package: kernel-flasher-maemo
+Package: kernel-power-flasher
 Section: user/system
 Architecture: armel
-Pre-Depends: kernel-maemo (= ${binary:Version}), kernel-modules-maemo (= ${binary:Version}), softupd (>= 0.4.0)
-Recommends: usbip, iptables, mtd-utils, kexec-tools
+Pre-Depends: kernel-power (= ${binary:Version}), kernel-power-modules (= ${binary:Version}), softupd (>= 0.4.0)
+Conflicts: kernel-flasher-maemo (<= 2.6.28-maemo22), kernel-maemo, kernel-modules-maemo, kernel-headers-maemo, linux-kernel-headers-maemo
+Recommends: kernel-power-settings, usbip, iptables, mtd-utils, kexec-tools
 Provides: kernel-feature-netfilter, kernel-feature-ipv6, kernel-feature-ext4, kernel-feature-xfs, kernel-feature-reiserfs,
-  kernel-feature-ntfs-read, kernel-feature-udf, kernel-feature-cifs, kernel-feature-automounter,
+  kernel-feature-ntfs-read, kernel-feature-udf, kernel-feature-cifs, kernel-feature-automounter, kernel-feature-squashfs, 
   kernel-feature-unionfs, kernel-feature-crypto, kernel-feature-dmloop, kernel-feature-utf8, kernel-feature-mousejoy,
   kernel-feature-usbip, kernel-feature-ppp, kernel-feature-qos, kernel-feature-block2mtd, kernel-feature-kexec,
   kernel-feature-overclock, kernel-feature-joikuspot, kernel-feature-slip, kernel-feature-battery, kernel-feature-pptp
@@ -25,15 +26,16 @@ Description: Linux kernel updater for an enhanced Maemo 5 kernel 2.6.28.10
  For discussion and support please visit http://talk.maemo.org/showthread.php?t=43420
  .
  This custom kernel contains additional modules for IPv6, packet filtering,
- QoS,  NAT, tunneling, kernel configuration, Wifi mesh networking,
+ QoS, NAT, tunneling, kernel configuration, Wifi mesh networking,
  builtin ext3 for booting from other media, ext4, XFS, reiserfs,
- NTFS read support, ISO9660, UDF, CIFS, automounter,
- UNIONFS, device mapper and dm-loop, cryptography, cryptoloop,
+ NTFS read support, ISO9660, UDF, CIFS, automounter, squashfs,
+ unionfs, device mapper and dm-loop, cryptography, cryptoloop,
  EFI partitions, UTF8 codepages, mouse+joystick input, PPP, PPTP,
  serial support, USB/IP and generic USB device drivers, battery info,
  overclocking and kexec support.
  .
  Warning: Overclocking may damage your device and is at your own risk!
+ Overclocking is disabled by default and needs to be enabled during runtime.
  .
  Known bugs: Touchscreen calibration (osso-applet-screencalibration) is incompatible
  with the enabled evdev modules. You need to use the stock Nokia kernel for calibration.
@@ -106,27 +108,31 @@ XB-Maemo-Icon-26:
  MDItMDZUMTk6Mjk6MjMrMDE6MDBL9SgPAAAAJXRFWHRtb2RpZnktZGF0ZQAy
  MDA5LTA5LTI3VDA5OjM1OjM0KzAyOjAwrPojkwAAAABJRU5ErkJggg==
 
-Package: kernel-maemo
+Package: kernel-power
 Architecture: armel
+Conflicts: kernel-maemo
 Description: Flashable Linux kernel
  This package provides a flashable kernel image.
  Use the kernel-flasher-maemo package to automatically flash it.
 
-Package: kernel-headers-maemo
+Package: kernel-power-headers
 Architecture: armel
 Depends: ${shlibs:Depends}
+Conflicts: kernel-headers-maemo
 Description: Linux kernel headers
  This package provides kernel headers.
 
-Package: linux-kernel-headers-maemo
+Package: linux-kernel-power-headers
 Architecture: armel
 Depends: ${shlibs:Depends}
+Conflicts: linux-kernel-headers-maemo
 Description: Linux Kernel Headers for development
  This package provides headers from the Linux kernel. These headers
  are used by the installed headers for GNU glibc and other system libraries.
 
-Package: kernel-modules-maemo
+Package: kernel-power-modules
 Architecture: armel
-Depends: module-init-tools (>= 3.3), kernel-maemo (= ${binary:Version})
+Conflicts: kernel-modules-maemo
+Depends: module-init-tools (>= 3.3), kernel-power (= ${binary:Version})
 Description: Linux kernel modules
  This package provides kernel modules for the enhanced Maemo 5 kernel 2.6.28.10
diff --git a/kernel-power-2.6.28/debian/kernel-flasher-maemo.postinst.in b/kernel-power-2.6.28/debian/kernel-flasher-maemo.postinst.in
deleted file mode 100644 (file)
index e347079..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-#!/bin/sh
-
-set -e
-
-KERNEL=/boot/zImage-@VERSION@.fiasco
-
-FLASHER=/sbin/fiasco-image-update
-
-# they say this is The Right Way (tm) to check for
-# scratchbox environment
-if [ -L /targets/links/scratchbox.config ]; then
-       # hehe
-       true
-else
-       if [ -f $KERNEL -a -x $FLASHER ]; then
-               $FLASHER $KERNEL
-       fi
-fi
-
-#DEBHELPER#
-
diff --git a/kernel-power-2.6.28/debian/kernel-modules-maemo.postinst.in b/kernel-power-2.6.28/debian/kernel-modules-maemo.postinst.in
deleted file mode 100644 (file)
index 79dac83..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-#!/bin/sh
-
-set -e
-
-cd /lib/modules
-
-rm -f /lib/modules/current
-ls -1d * | grep -v current | while read i; do
-   /sbin/depmod $i || :
-done
-ln -s @KVER@ /lib/modules/current
-
-#DEBHELPER#
-
diff --git a/kernel-power-2.6.28/debian/kernel-modules-maemo.postrm.in b/kernel-power-2.6.28/debian/kernel-modules-maemo.postrm.in
deleted file mode 100644 (file)
index 885e561..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/sh
-
-#set -e
-
-test -d /lib/modules/@KVER@ && rm -f /lib/modules/@KVER@/modules.*
-rm -f /lib/modules/current
-ln -s 2.6.28-omap1 /lib/modules/current
-
-#DEBHELPER#
-
diff --git a/kernel-power-2.6.28/debian/kernel-power-flasher.postinst.in b/kernel-power-2.6.28/debian/kernel-power-flasher.postinst.in
new file mode 100644 (file)
index 0000000..e347079
--- /dev/null
@@ -0,0 +1,21 @@
+#!/bin/sh
+
+set -e
+
+KERNEL=/boot/zImage-@VERSION@.fiasco
+
+FLASHER=/sbin/fiasco-image-update
+
+# they say this is The Right Way (tm) to check for
+# scratchbox environment
+if [ -L /targets/links/scratchbox.config ]; then
+       # hehe
+       true
+else
+       if [ -f $KERNEL -a -x $FLASHER ]; then
+               $FLASHER $KERNEL
+       fi
+fi
+
+#DEBHELPER#
+
diff --git a/kernel-power-2.6.28/debian/kernel-power-modules.postinst.in b/kernel-power-2.6.28/debian/kernel-power-modules.postinst.in
new file mode 100644 (file)
index 0000000..79dac83
--- /dev/null
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+set -e
+
+cd /lib/modules
+
+rm -f /lib/modules/current
+ls -1d * | grep -v current | while read i; do
+   /sbin/depmod $i || :
+done
+ln -s @KVER@ /lib/modules/current
+
+#DEBHELPER#
+
diff --git a/kernel-power-2.6.28/debian/kernel-power-modules.postrm.in b/kernel-power-2.6.28/debian/kernel-power-modules.postrm.in
new file mode 100644 (file)
index 0000000..885e561
--- /dev/null
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+#set -e
+
+test -d /lib/modules/@KVER@ && rm -f /lib/modules/@KVER@/modules.*
+rm -f /lib/modules/current
+ln -s 2.6.28-omap1 /lib/modules/current
+
+#DEBHELPER#
+
index 38c69cc..d3fcfe8 100644 (file)
@@ -1,5 +1,5 @@
---- kernel-maemo-2.6.28.test.orig/Documentation/filesystems/sysfs-pci.txt
-+++ kernel-maemo-2.6.28.test/Documentation/filesystems/sysfs-pci.txt
+--- kernel-power-2.6.28.orig/Documentation/filesystems/sysfs-pci.txt
++++ kernel-power-2.6.28/Documentation/filesystems/sysfs-pci.txt
 @@ -9,6 +9,7 @@
       |   |-- class
       |   |-- config
@@ -37,8 +37,8 @@
  
  Accessing legacy resources through sysfs
  ----------------------------------------
---- kernel-maemo-2.6.28.test.orig/Documentation/sound/alsa/ALSA-Configuration.txt
-+++ kernel-maemo-2.6.28.test/Documentation/sound/alsa/ALSA-Configuration.txt
+--- kernel-power-2.6.28.orig/Documentation/sound/alsa/ALSA-Configuration.txt
++++ kernel-power-2.6.28/Documentation/sound/alsa/ALSA-Configuration.txt
 @@ -979,9 +979,10 @@
          6stack        6-jack, separate surrounds (default)
          3stack        3-stack, shared surrounds
  
        AD1988/AD1988B/AD1989A/AD1989B
          6stack        6-jack
---- kernel-maemo-2.6.28.test.orig/Makefile
-+++ kernel-maemo-2.6.28.test/Makefile
+--- kernel-power-2.6.28.orig/Makefile
++++ kernel-power-2.6.28/Makefile
 @@ -1,7 +1,7 @@
  VERSION = 2
  PATCHLEVEL = 6
  SUBLEVEL = 28
--EXTRAVERSION = maemo
-+EXTRAVERSION = .10maemo
+-EXTRAVERSION = power
++EXTRAVERSION = .10power
  NAME = Erotic Pickled Herring
  
  # *DOCUMENTATION*
@@ -72,8 +72,8 @@
  # Add user supplied CPPFLAGS, AFLAGS and CFLAGS as the last assignments
  # But warn user when we do so
  warn-assign = \
---- kernel-maemo-2.6.28.test.orig/arch/Kconfig
-+++ kernel-maemo-2.6.28.test/arch/Kconfig
+--- kernel-power-2.6.28.orig/arch/Kconfig
++++ kernel-power-2.6.28/arch/Kconfig
 @@ -60,6 +60,9 @@
          See Documentation/unaligned-memory-access.txt for more
          information on the topic of unaligned memory accesses.
@@ -84,8 +84,8 @@
  config KRETPROBES
        def_bool y
        depends on KPROBES && HAVE_KRETPROBES
---- kernel-maemo-2.6.28.test.orig/arch/alpha/kernel/entry.S
-+++ kernel-maemo-2.6.28.test/arch/alpha/kernel/entry.S
+--- kernel-power-2.6.28.orig/arch/alpha/kernel/entry.S
++++ kernel-power-2.6.28/arch/alpha/kernel/entry.S
 @@ -894,9 +894,9 @@
  .end sys_getxpid
  
  
        .align  4
        .globl  sys_execve
---- kernel-maemo-2.6.28.test.orig/arch/alpha/kernel/irq_srm.c
-+++ kernel-maemo-2.6.28.test/arch/alpha/kernel/irq_srm.c
+--- kernel-power-2.6.28.orig/arch/alpha/kernel/irq_srm.c
++++ kernel-power-2.6.28/arch/alpha/kernel/irq_srm.c
 @@ -63,6 +63,8 @@
  {
        long i;
        for (i = 16; i < max; ++i) {
                if (i < 64 && ((ignore_mask >> i) & 1))
                        continue;
---- kernel-maemo-2.6.28.test.orig/arch/alpha/kernel/systbls.S
-+++ kernel-maemo-2.6.28.test/arch/alpha/kernel/systbls.S
+--- kernel-power-2.6.28.orig/arch/alpha/kernel/systbls.S
++++ kernel-power-2.6.28/arch/alpha/kernel/systbls.S
 @@ -52,7 +52,7 @@
        .quad sys_setpgid
        .quad alpha_ni_syscall                  /* 40 */
        .quad osf_set_program_attributes
        .quad alpha_ni_syscall
        .quad sys_open                          /* 45 */
---- kernel-maemo-2.6.28.test.orig/arch/arm/kernel/calls.S
-+++ kernel-maemo-2.6.28.test/arch/arm/kernel/calls.S
+--- kernel-power-2.6.28.orig/arch/arm/kernel/calls.S
++++ kernel-power-2.6.28/arch/arm/kernel/calls.S
 @@ -98,7 +98,7 @@
                CALL(sys_uselib)
                CALL(sys_swapon)
  /* 90 */      CALL(OBSOLETE(old_mmap))        /* used by libc4 */
                CALL(sys_munmap)
                CALL(sys_truncate)
---- kernel-maemo-2.6.28.test.orig/arch/arm/mach-rpc/riscpc.c
-+++ kernel-maemo-2.6.28.test/arch/arm/mach-rpc/riscpc.c
+--- kernel-power-2.6.28.orig/arch/arm/mach-rpc/riscpc.c
++++ kernel-power-2.6.28/arch/arm/mach-rpc/riscpc.c
 @@ -19,6 +19,7 @@
  #include <linux/serial_8250.h>
  #include <linux/ata_platform.h>
        return platform_add_devices(devs, ARRAY_SIZE(devs));
  }
  
---- kernel-maemo-2.6.28.test.orig/arch/cris/arch-v10/kernel/entry.S
-+++ kernel-maemo-2.6.28.test/arch/cris/arch-v10/kernel/entry.S
+--- kernel-power-2.6.28.orig/arch/cris/arch-v10/kernel/entry.S
++++ kernel-power-2.6.28/arch/cris/arch-v10/kernel/entry.S
 @@ -691,7 +691,7 @@
        .long sys_uselib
        .long sys_swapon
        .long old_mmap          /* 90 */
        .long sys_munmap
        .long sys_truncate
---- kernel-maemo-2.6.28.test.orig/arch/cris/arch-v32/kernel/entry.S
-+++ kernel-maemo-2.6.28.test/arch/cris/arch-v32/kernel/entry.S
+--- kernel-power-2.6.28.orig/arch/cris/arch-v32/kernel/entry.S
++++ kernel-power-2.6.28/arch/cris/arch-v32/kernel/entry.S
 @@ -614,7 +614,7 @@
        .long sys_uselib
        .long sys_swapon
        .long old_mmap          /* 90 */
        .long sys_munmap
        .long sys_truncate
---- kernel-maemo-2.6.28.test.orig/arch/h8300/kernel/syscalls.S
-+++ kernel-maemo-2.6.28.test/arch/h8300/kernel/syscalls.S
+--- kernel-power-2.6.28.orig/arch/h8300/kernel/syscalls.S
++++ kernel-power-2.6.28/arch/h8300/kernel/syscalls.S
 @@ -103,7 +103,7 @@
        .long SYMBOL_NAME(sys_uselib)
        .long SYMBOL_NAME(sys_swapon)
        .long SYMBOL_NAME(old_mmap)             /* 90 */
        .long SYMBOL_NAME(sys_munmap)
        .long SYMBOL_NAME(sys_truncate)
---- kernel-maemo-2.6.28.test.orig/arch/ia64/Kconfig
-+++ kernel-maemo-2.6.28.test/arch/ia64/Kconfig
+--- kernel-power-2.6.28.orig/arch/ia64/Kconfig
++++ kernel-power-2.6.28/arch/ia64/Kconfig
 @@ -17,6 +17,7 @@
        select ACPI if (!IA64_HP_SIM)
        select PM if (!IA64_HP_SIM)
  
  config HAVE_ARCH_NODEDATA_EXTENSION
        def_bool y
---- kernel-maemo-2.6.28.test.orig/arch/ia64/ia32/ia32_entry.S
-+++ kernel-maemo-2.6.28.test/arch/ia64/ia32/ia32_entry.S
+--- kernel-power-2.6.28.orig/arch/ia64/ia32/ia32_entry.S
++++ kernel-power-2.6.28/arch/ia64/ia32/ia32_entry.S
 @@ -220,7 +220,7 @@
        data8 sys_mkdir
        data8 sys_rmdir           /* 40 */
        data8 compat_sys_times
        data8 sys_ni_syscall      /* old prof syscall holder */
        data8 sys32_brk           /* 45 */
---- kernel-maemo-2.6.28.test.orig/arch/ia64/include/asm/mmzone.h
-+++ kernel-maemo-2.6.28.test/arch/ia64/include/asm/mmzone.h
+--- kernel-power-2.6.28.orig/arch/ia64/include/asm/mmzone.h
++++ kernel-power-2.6.28/arch/ia64/include/asm/mmzone.h
 @@ -31,10 +31,6 @@
  #endif
  }
  #ifdef CONFIG_IA64_DIG /* DIG systems are small */
  # define MAX_PHYSNODE_ID      8
  # define NR_NODE_MEMBLKS      (MAX_NUMNODES * 8)
---- kernel-maemo-2.6.28.test.orig/arch/ia64/include/asm/unistd.h
-+++ kernel-maemo-2.6.28.test/arch/ia64/include/asm/unistd.h
+--- kernel-power-2.6.28.orig/arch/ia64/include/asm/unistd.h
++++ kernel-power-2.6.28/arch/ia64/include/asm/unistd.h
 @@ -364,7 +364,7 @@
  struct sigaction;
  long sys_execve(char __user *filename, char __user * __user *argv,
  asmlinkage long sys_rt_sigaction(int sig,
                                 const struct sigaction __user *act,
                                 struct sigaction __user *oact,
---- kernel-maemo-2.6.28.test.orig/arch/ia64/kernel/entry.S
-+++ kernel-maemo-2.6.28.test/arch/ia64/kernel/entry.S
+--- kernel-power-2.6.28.orig/arch/ia64/kernel/entry.S
++++ kernel-power-2.6.28/arch/ia64/kernel/entry.S
 @@ -1442,7 +1442,7 @@
        data8 sys_mkdir                         // 1055
        data8 sys_rmdir
        data8 sys_times
        data8 ia64_brk                          // 1060
        data8 sys_setgid
---- kernel-maemo-2.6.28.test.orig/arch/ia64/kernel/sys_ia64.c
-+++ kernel-maemo-2.6.28.test/arch/ia64/kernel/sys_ia64.c
+--- kernel-power-2.6.28.orig/arch/ia64/kernel/sys_ia64.c
++++ kernel-power-2.6.28/arch/ia64/kernel/sys_ia64.c
 @@ -154,7 +154,7 @@
   * and r9) as this is faster than doing a copy_to_user().
   */
  {
        struct pt_regs *regs = task_pt_regs(current);
        int fd[2];
---- kernel-maemo-2.6.28.test.orig/arch/ia64/mm/numa.c
-+++ kernel-maemo-2.6.28.test/arch/ia64/mm/numa.c
+--- kernel-power-2.6.28.orig/arch/ia64/mm/numa.c
++++ kernel-power-2.6.28/arch/ia64/mm/numa.c
 @@ -58,7 +58,7 @@
   * SPARSEMEM to allocate the SPARSEMEM sectionmap on the NUMA node where
   * the section resides.
  }
  
  #ifdef CONFIG_MEMORY_HOTPLUG
---- kernel-maemo-2.6.28.test.orig/arch/ia64/sn/kernel/io_acpi_init.c
-+++ kernel-maemo-2.6.28.test/arch/ia64/sn/kernel/io_acpi_init.c
+--- kernel-power-2.6.28.orig/arch/ia64/sn/kernel/io_acpi_init.c
++++ kernel-power-2.6.28/arch/ia64/sn/kernel/io_acpi_init.c
 @@ -434,7 +434,7 @@
                size = pci_resource_len(dev, PCI_ROM_RESOURCE);
                addr = ioremap(pcidev_info->pdi_pio_mapped_addr[PCI_ROM_RESOURCE],
                dev->resource[PCI_ROM_RESOURCE].start = (unsigned long) addr;
                dev->resource[PCI_ROM_RESOURCE].end =
                                        (unsigned long) addr + image_size - 1;
---- kernel-maemo-2.6.28.test.orig/arch/ia64/sn/kernel/io_init.c
-+++ kernel-maemo-2.6.28.test/arch/ia64/sn/kernel/io_init.c
+--- kernel-power-2.6.28.orig/arch/ia64/sn/kernel/io_init.c
++++ kernel-power-2.6.28/arch/ia64/sn/kernel/io_init.c
 @@ -269,7 +269,7 @@
  
                        rom = ioremap(pci_resource_start(dev, PCI_ROM_RESOURCE),
                        dev->resource[PCI_ROM_RESOURCE].end =
                                dev->resource[PCI_ROM_RESOURCE].start +
                                image_size - 1;
---- kernel-maemo-2.6.28.test.orig/arch/m68k/kernel/entry.S
-+++ kernel-maemo-2.6.28.test/arch/m68k/kernel/entry.S
+--- kernel-power-2.6.28.orig/arch/m68k/kernel/entry.S
++++ kernel-power-2.6.28/arch/m68k/kernel/entry.S
 @@ -513,7 +513,7 @@
        .long sys_uselib
        .long sys_swapon
        .long old_mmap          /* 90 */
        .long sys_munmap
        .long sys_truncate
---- kernel-maemo-2.6.28.test.orig/arch/m68knommu/Kconfig
-+++ kernel-maemo-2.6.28.test/arch/m68knommu/Kconfig
+--- kernel-power-2.6.28.orig/arch/m68knommu/Kconfig
++++ kernel-power-2.6.28/arch/m68knommu/Kconfig
 @@ -14,6 +14,10 @@
        bool
        default n
  config FPU
        bool
        default n
---- kernel-maemo-2.6.28.test.orig/arch/m68knommu/kernel/syscalltable.S
-+++ kernel-maemo-2.6.28.test/arch/m68knommu/kernel/syscalltable.S
+--- kernel-power-2.6.28.orig/arch/m68knommu/kernel/syscalltable.S
++++ kernel-power-2.6.28/arch/m68knommu/kernel/syscalltable.S
 @@ -107,7 +107,7 @@
        .long sys_uselib
        .long sys_ni_syscall    /* sys_swapon */
        .long old_mmap          /* 90 */
        .long sys_munmap
        .long sys_truncate
---- kernel-maemo-2.6.28.test.orig/arch/mips/include/asm/compat.h
-+++ kernel-maemo-2.6.28.test/arch/mips/include/asm/compat.h
+--- kernel-power-2.6.28.orig/arch/mips/include/asm/compat.h
++++ kernel-power-2.6.28/arch/mips/include/asm/compat.h
 @@ -3,6 +3,8 @@
  /*
   * Architecture specific compatibility types
 +}
 +
  #endif /* _ASM_COMPAT_H */
---- kernel-maemo-2.6.28.test.orig/arch/mips/include/asm/seccomp.h
-+++ kernel-maemo-2.6.28.test/arch/mips/include/asm/seccomp.h
+--- kernel-power-2.6.28.orig/arch/mips/include/asm/seccomp.h
++++ kernel-power-2.6.28/arch/mips/include/asm/seccomp.h
 @@ -1,6 +1,5 @@
  #ifndef __ASM_SECCOMP_H
  
  #include <linux/unistd.h>
  
  #define __NR_seccomp_read __NR_read
---- kernel-maemo-2.6.28.test.orig/arch/mips/kernel/scall32-o32.S
-+++ kernel-maemo-2.6.28.test/arch/mips/kernel/scall32-o32.S
+--- kernel-power-2.6.28.orig/arch/mips/kernel/scall32-o32.S
++++ kernel-power-2.6.28/arch/mips/kernel/scall32-o32.S
 @@ -398,7 +398,7 @@
        sys     sys_uselib              1
        sys     sys_swapon              2
        sys     old_mmap                6       /* 4090 */
        sys     sys_munmap              2
        sys     sys_truncate            2
---- kernel-maemo-2.6.28.test.orig/arch/mn10300/kernel/entry.S
-+++ kernel-maemo-2.6.28.test/arch/mn10300/kernel/entry.S
+--- kernel-power-2.6.28.orig/arch/mn10300/kernel/entry.S
++++ kernel-power-2.6.28/arch/mn10300/kernel/entry.S
 @@ -478,7 +478,7 @@
        .long sys_uselib
        .long sys_swapon
        .long old_mmap          /* 90 */
        .long sys_munmap
        .long sys_truncate
---- kernel-maemo-2.6.28.test.orig/arch/powerpc/Kconfig
-+++ kernel-maemo-2.6.28.test/arch/powerpc/Kconfig
+--- kernel-power-2.6.28.orig/arch/powerpc/Kconfig
++++ kernel-power-2.6.28/arch/powerpc/Kconfig
 @@ -121,6 +121,7 @@
        select HAVE_DMA_ATTRS if PPC64
        select USE_GENERIC_SMP_HELPERS if SMP
  
  config EARLY_PRINTK
        bool
---- kernel-maemo-2.6.28.test.orig/arch/powerpc/include/asm/compat.h
-+++ kernel-maemo-2.6.28.test/arch/powerpc/include/asm/compat.h
+--- kernel-power-2.6.28.orig/arch/powerpc/include/asm/compat.h
++++ kernel-power-2.6.28/arch/powerpc/include/asm/compat.h
 @@ -210,5 +210,10 @@
        compat_ulong_t __unused6;
  };
 +
  #endif /* __KERNEL__ */
  #endif /* _ASM_POWERPC_COMPAT_H */
---- kernel-maemo-2.6.28.test.orig/arch/powerpc/include/asm/futex.h
-+++ kernel-maemo-2.6.28.test/arch/powerpc/include/asm/futex.h
+--- kernel-power-2.6.28.orig/arch/powerpc/include/asm/futex.h
++++ kernel-power-2.6.28/arch/powerpc/include/asm/futex.h
 @@ -27,7 +27,7 @@
        PPC_LONG "1b,4b,2b,4b\n" \
        ".previous" \
                break;
        default:
                ret = -ENOSYS;
---- kernel-maemo-2.6.28.test.orig/arch/powerpc/include/asm/processor.h
-+++ kernel-maemo-2.6.28.test/arch/powerpc/include/asm/processor.h
+--- kernel-power-2.6.28.orig/arch/powerpc/include/asm/processor.h
++++ kernel-power-2.6.28/arch/powerpc/include/asm/processor.h
 @@ -309,6 +309,25 @@
  #define HAVE_ARCH_PICK_MMAP_LAYOUT
  #endif
  #endif /* __KERNEL__ */
  #endif /* __ASSEMBLY__ */
  #endif /* _ASM_POWERPC_PROCESSOR_H */
---- kernel-maemo-2.6.28.test.orig/arch/powerpc/include/asm/seccomp.h
-+++ kernel-maemo-2.6.28.test/arch/powerpc/include/asm/seccomp.h
+--- kernel-power-2.6.28.orig/arch/powerpc/include/asm/seccomp.h
++++ kernel-power-2.6.28/arch/powerpc/include/asm/seccomp.h
 @@ -1,10 +1,6 @@
  #ifndef _ASM_POWERPC_SECCOMP_H
  #define _ASM_POWERPC_SECCOMP_H
  #include <linux/unistd.h>
  
  #define __NR_seccomp_read __NR_read
---- kernel-maemo-2.6.28.test.orig/arch/powerpc/include/asm/systbl.h
-+++ kernel-maemo-2.6.28.test/arch/powerpc/include/asm/systbl.h
+--- kernel-power-2.6.28.orig/arch/powerpc/include/asm/systbl.h
++++ kernel-power-2.6.28/arch/powerpc/include/asm/systbl.h
 @@ -92,7 +92,7 @@
  SYSCALL(uselib)
  SYSCALL(swapon)
  SYSCALL_SPU(mmap)
  SYSCALL_SPU(munmap)
  SYSCALL_SPU(truncate)
---- kernel-maemo-2.6.28.test.orig/arch/powerpc/kernel/align.c
-+++ kernel-maemo-2.6.28.test/arch/powerpc/kernel/align.c
+--- kernel-power-2.6.28.orig/arch/powerpc/kernel/align.c
++++ kernel-power-2.6.28/arch/powerpc/kernel/align.c
 @@ -367,27 +367,24 @@
  static int emulate_fp_pair(unsigned char __user *addr, unsigned int reg,
                           unsigned int flags)
        if (flags & ST)
                ret = __copy_to_user(addr, ptr, length);
          else {
---- kernel-maemo-2.6.28.test.orig/arch/powerpc/kernel/signal.c
-+++ kernel-maemo-2.6.28.test/arch/powerpc/kernel/signal.c
+--- kernel-power-2.6.28.orig/arch/powerpc/kernel/signal.c
++++ kernel-power-2.6.28/arch/powerpc/kernel/signal.c
 @@ -26,12 +26,12 @@
   * Allocate space for the signal frame
   */
  
        /* Check for alt stack */
        if ((ka->sa.sa_flags & SA_ONSTACK) &&
---- kernel-maemo-2.6.28.test.orig/arch/powerpc/kernel/signal.h
-+++ kernel-maemo-2.6.28.test/arch/powerpc/kernel/signal.h
+--- kernel-power-2.6.28.orig/arch/powerpc/kernel/signal.h
++++ kernel-power-2.6.28/arch/powerpc/kernel/signal.h
 @@ -15,7 +15,7 @@
  extern void do_signal(struct pt_regs *regs, unsigned long thread_info_flags);
  
  extern void restore_sigmask(sigset_t *set);
  
  extern int handle_signal32(unsigned long sig, struct k_sigaction *ka,
---- kernel-maemo-2.6.28.test.orig/arch/powerpc/kernel/signal_32.c
-+++ kernel-maemo-2.6.28.test/arch/powerpc/kernel/signal_32.c
+--- kernel-power-2.6.28.orig/arch/powerpc/kernel/signal_32.c
++++ kernel-power-2.6.28/arch/powerpc/kernel/signal_32.c
 @@ -836,7 +836,7 @@
  
        /* Set up Signal Frame */
        if (unlikely(frame == NULL))
                goto badframe;
        sc = (struct sigcontext __user *) &frame->sctx;
---- kernel-maemo-2.6.28.test.orig/arch/powerpc/kernel/signal_64.c
-+++ kernel-maemo-2.6.28.test/arch/powerpc/kernel/signal_64.c
+--- kernel-power-2.6.28.orig/arch/powerpc/kernel/signal_64.c
++++ kernel-power-2.6.28/arch/powerpc/kernel/signal_64.c
 @@ -402,7 +402,7 @@
        unsigned long newsp = 0;
        long err = 0;
        if (unlikely(frame == NULL))
                goto badframe;
  
---- kernel-maemo-2.6.28.test.orig/arch/powerpc/mm/fsl_booke_mmu.c
-+++ kernel-maemo-2.6.28.test/arch/powerpc/mm/fsl_booke_mmu.c
+--- kernel-power-2.6.28.orig/arch/powerpc/mm/fsl_booke_mmu.c
++++ kernel-power-2.6.28/arch/powerpc/mm/fsl_booke_mmu.c
 @@ -80,7 +80,7 @@
  /*
   * Return PA for this VA if it is mapped by a CAM, or 0
  {
        int b;
        for (b = 0; b < tlbcam_index; ++b)
---- kernel-maemo-2.6.28.test.orig/arch/powerpc/mm/pgtable_32.c
-+++ kernel-maemo-2.6.28.test/arch/powerpc/mm/pgtable_32.c
+--- kernel-power-2.6.28.orig/arch/powerpc/mm/pgtable_32.c
++++ kernel-power-2.6.28/arch/powerpc/mm/pgtable_32.c
 @@ -65,8 +65,8 @@
  
  #ifdef HAVE_TLBCAM
  #else /* !HAVE_TLBCAM */
  #define v_mapped_by_tlbcam(x) (0UL)
  #define p_mapped_by_tlbcam(x) (0UL)
---- kernel-maemo-2.6.28.test.orig/arch/powerpc/mm/slice.c
-+++ kernel-maemo-2.6.28.test/arch/powerpc/mm/slice.c
+--- kernel-power-2.6.28.orig/arch/powerpc/mm/slice.c
++++ kernel-power-2.6.28/arch/powerpc/mm/slice.c
 @@ -710,9 +710,18 @@
                           unsigned long len)
  {
  
  #if 0 /* too verbose */
        slice_dbg("is_hugepage_only_range(mm=%p, addr=%lx, len=%lx)\n",
---- kernel-maemo-2.6.28.test.orig/arch/powerpc/platforms/pseries/Kconfig
-+++ kernel-maemo-2.6.28.test/arch/powerpc/platforms/pseries/Kconfig
+--- kernel-power-2.6.28.orig/arch/powerpc/platforms/pseries/Kconfig
++++ kernel-power-2.6.28/arch/powerpc/platforms/pseries/Kconfig
 @@ -54,7 +54,7 @@
  
  config CMM
        default y
        help
          Select this option, if you want to enable the kernel interface
---- kernel-maemo-2.6.28.test.orig/arch/powerpc/sysdev/fsl_soc.c
-+++ kernel-maemo-2.6.28.test/arch/powerpc/sysdev/fsl_soc.c
+--- kernel-power-2.6.28.orig/arch/powerpc/sysdev/fsl_soc.c
++++ kernel-power-2.6.28/arch/powerpc/sysdev/fsl_soc.c
 @@ -257,7 +257,7 @@
                gfar_mdio_of_init_one(np);
  
                gfar_mdio_of_init_one(np);
  
        return 0;
---- kernel-maemo-2.6.28.test.orig/arch/s390/Kconfig
-+++ kernel-maemo-2.6.28.test/arch/s390/Kconfig
+--- kernel-power-2.6.28.orig/arch/s390/Kconfig
++++ kernel-power-2.6.28/arch/s390/Kconfig
 @@ -70,6 +70,7 @@
  
  config S390
        select HAVE_OPROFILE
        select HAVE_KPROBES
        select HAVE_KRETPROBES
---- kernel-maemo-2.6.28.test.orig/arch/s390/kernel/compat_wrapper.S
-+++ kernel-maemo-2.6.28.test/arch/s390/kernel/compat_wrapper.S
+--- kernel-power-2.6.28.orig/arch/s390/kernel/compat_wrapper.S
++++ kernel-power-2.6.28/arch/s390/kernel/compat_wrapper.S
 @@ -547,7 +547,7 @@
        .globl  sys32_newuname_wrapper
  sys32_newuname_wrapper:
  
        .globl  sys32_setfsuid16_wrapper
  sys32_setfsuid16_wrapper:
---- kernel-maemo-2.6.28.test.orig/arch/s390/kernel/entry.h
-+++ kernel-maemo-2.6.28.test/arch/s390/kernel/entry.h
+--- kernel-power-2.6.28.orig/arch/s390/kernel/entry.h
++++ kernel-power-2.6.28/arch/s390/kernel/entry.h
 @@ -30,23 +30,23 @@
  struct old_sigaction;
  struct sel_arg_struct;
  long sys_sigaction(int sig, const struct old_sigaction __user *act,
                   struct old_sigaction __user *oact);
  long sys_sigaltstack(const stack_t __user *uss, stack_t __user *uoss);
---- kernel-maemo-2.6.28.test.orig/arch/s390/kernel/process.c
-+++ kernel-maemo-2.6.28.test/arch/s390/kernel/process.c
+--- kernel-power-2.6.28.orig/arch/s390/kernel/process.c
++++ kernel-power-2.6.28/arch/s390/kernel/process.c
 @@ -38,6 +38,7 @@
  #include <linux/utsname.h>
  #include <linux/tick.h>
  {
        struct pt_regs *regs = task_pt_regs(current);
        char *filename;
---- kernel-maemo-2.6.28.test.orig/arch/s390/kernel/signal.c
-+++ kernel-maemo-2.6.28.test/arch/s390/kernel/signal.c
+--- kernel-power-2.6.28.orig/arch/s390/kernel/signal.c
++++ kernel-power-2.6.28/arch/s390/kernel/signal.c
 @@ -25,6 +25,7 @@
  #include <linux/personality.h>
  #include <linux/binfmts.h>
  {
        struct pt_regs *regs = task_pt_regs(current);
        rt_sigframe __user *frame = (rt_sigframe __user *)regs->gprs[15];
---- kernel-maemo-2.6.28.test.orig/arch/s390/kernel/sys_s390.c
-+++ kernel-maemo-2.6.28.test/arch/s390/kernel/sys_s390.c
+--- kernel-power-2.6.28.orig/arch/s390/kernel/sys_s390.c
++++ kernel-power-2.6.28/arch/s390/kernel/sys_s390.c
 @@ -29,6 +29,7 @@
  #include <linux/personality.h>
  #include <linux/unistd.h>
 +#endif
 +
  #endif
---- kernel-maemo-2.6.28.test.orig/arch/s390/kernel/syscalls.S
-+++ kernel-maemo-2.6.28.test/arch/s390/kernel/syscalls.S
+--- kernel-power-2.6.28.orig/arch/s390/kernel/syscalls.S
++++ kernel-power-2.6.28/arch/s390/kernel/syscalls.S
 @@ -98,7 +98,7 @@
  SYSCALL(sys_swapon,sys_swapon,sys32_swapon_wrapper)
  SYSCALL(sys_reboot,sys_reboot,sys32_reboot_wrapper)
  SYSCALL(sys_utimensat,sys_utimensat,compat_sys_utimensat_wrapper)     /* 315 */
  SYSCALL(sys_signalfd,sys_signalfd,compat_sys_signalfd_wrapper)
  NI_SYSCALL                                            /* 317 old sys_timer_fd */
---- kernel-maemo-2.6.28.test.orig/arch/s390/lib/div64.c
-+++ kernel-maemo-2.6.28.test/arch/s390/lib/div64.c
+--- kernel-power-2.6.28.orig/arch/s390/lib/div64.c
++++ kernel-power-2.6.28/arch/s390/lib/div64.c
 @@ -61,7 +61,7 @@
                "       clr     %0,%3\n"
                "       jl      0f\n"
                "0:\n"
                : "+d" (reg2), "+d" (reg3), "=d" (tmp)
                : "d" (base), "2" (1UL) : "cc" );
---- kernel-maemo-2.6.28.test.orig/arch/sh/include/asm/syscalls_32.h
-+++ kernel-maemo-2.6.28.test/arch/sh/include/asm/syscalls_32.h
+--- kernel-power-2.6.28.orig/arch/sh/include/asm/syscalls_32.h
++++ kernel-power-2.6.28/arch/sh/include/asm/syscalls_32.h
 @@ -36,9 +36,9 @@
  asmlinkage int sys_rt_sigreturn(unsigned long r4, unsigned long r5,
                                unsigned long r6, unsigned long r7,
  asmlinkage ssize_t sys_pread_wrapper(unsigned int fd, char __user *buf,
                                     size_t count, long dummy, loff_t pos);
  asmlinkage ssize_t sys_pwrite_wrapper(unsigned int fd, const char __user *buf,
---- kernel-maemo-2.6.28.test.orig/arch/sh/kernel/sys_sh32.c
-+++ kernel-maemo-2.6.28.test/arch/sh/kernel/sys_sh32.c
+--- kernel-power-2.6.28.orig/arch/sh/kernel/sys_sh32.c
++++ kernel-power-2.6.28/arch/sh/kernel/sys_sh32.c
 @@ -22,7 +22,7 @@
   * sys_pipe() is the normal C calling standard for creating
   * a pipe. It's not the way Unix traditionally does this, though.
        unsigned long r6, unsigned long r7,
        struct pt_regs __regs)
  {
---- kernel-maemo-2.6.28.test.orig/arch/sh/kernel/syscalls_32.S
-+++ kernel-maemo-2.6.28.test/arch/sh/kernel/syscalls_32.S
+--- kernel-power-2.6.28.orig/arch/sh/kernel/syscalls_32.S
++++ kernel-power-2.6.28/arch/sh/kernel/syscalls_32.S
 @@ -58,7 +58,7 @@
        .long sys_mkdir
        .long sys_rmdir         /* 40 */
        .long old_mmap          /* 90 */
        .long sys_munmap
        .long sys_truncate
---- kernel-maemo-2.6.28.test.orig/arch/sh/kernel/syscalls_64.S
-+++ kernel-maemo-2.6.28.test/arch/sh/kernel/syscalls_64.S
+--- kernel-power-2.6.28.orig/arch/sh/kernel/syscalls_64.S
++++ kernel-power-2.6.28/arch/sh/kernel/syscalls_64.S
 @@ -109,7 +109,7 @@
        .long sys_uselib
        .long sys_swapon
        .long old_mmap                  /* 90 */
        .long sys_munmap
        .long sys_truncate
---- kernel-maemo-2.6.28.test.orig/arch/sparc/include/asm/compat.h
-+++ kernel-maemo-2.6.28.test/arch/sparc/include/asm/compat.h
+--- kernel-power-2.6.28.orig/arch/sparc/include/asm/compat.h
++++ kernel-power-2.6.28/arch/sparc/include/asm/compat.h
 @@ -240,4 +240,9 @@
        unsigned int    __unused2;
  };
 +}
 +
  #endif /* _ASM_SPARC64_COMPAT_H */
---- kernel-maemo-2.6.28.test.orig/arch/sparc/include/asm/seccomp.h
-+++ kernel-maemo-2.6.28.test/arch/sparc/include/asm/seccomp.h
+--- kernel-power-2.6.28.orig/arch/sparc/include/asm/seccomp.h
++++ kernel-power-2.6.28/arch/sparc/include/asm/seccomp.h
 @@ -1,11 +1,5 @@
  #ifndef _ASM_SECCOMP_H
  
  #include <linux/unistd.h>
  
  #define __NR_seccomp_read __NR_read
---- kernel-maemo-2.6.28.test.orig/arch/sparc/kernel/entry.S
-+++ kernel-maemo-2.6.28.test/arch/sparc/kernel/entry.S
+--- kernel-power-2.6.28.orig/arch/sparc/kernel/entry.S
++++ kernel-power-2.6.28/arch/sparc/kernel/entry.S
 @@ -1088,8 +1088,8 @@
         ld     [%sp + STACKFRAME_SZ + PT_I0], %o0
  
        mov     %o7, %l5
        add     %sp, STACKFRAME_SZ, %o0         ! pt_regs *regs arg
        call    sparc_pipe
---- kernel-maemo-2.6.28.test.orig/arch/sparc/kernel/systbls.S
-+++ kernel-maemo-2.6.28.test/arch/sparc/kernel/systbls.S
+--- kernel-power-2.6.28.orig/arch/sparc/kernel/systbls.S
++++ kernel-power-2.6.28/arch/sparc/kernel/systbls.S
 @@ -24,7 +24,7 @@
  /*25*/        .long sys_vmsplice, sys_ptrace, sys_alarm, sys_sigaltstack, sys_pause
  /*30*/        .long sys_utime, sys_lchown, sys_fchown, sys_access, sys_nice
  /*205*/       .long sys_readahead, sys_socketcall, sys_syslog, sys_lookup_dcookie, sys_fadvise64
  /*210*/       .long sys_fadvise64_64, sys_tgkill, sys_waitpid, sys_swapoff, sys_sysinfo
  /*215*/       .long sys_ipc, sys_sigreturn, sys_clone, sys_ioprio_get, sys_adjtimex
---- kernel-maemo-2.6.28.test.orig/arch/sparc64/Kconfig
-+++ kernel-maemo-2.6.28.test/arch/sparc64/Kconfig
+--- kernel-power-2.6.28.orig/arch/sparc64/Kconfig
++++ kernel-power-2.6.28/arch/sparc64/Kconfig
 @@ -14,6 +14,7 @@
        select HAVE_FUNCTION_TRACER
        select HAVE_IDE
        select HAVE_ARCH_KGDB
        select USE_GENERIC_SMP_HELPERS if SMP
        select HAVE_ARCH_TRACEHOOK
---- kernel-maemo-2.6.28.test.orig/arch/sparc64/kernel/chmc.c
-+++ kernel-maemo-2.6.28.test/arch/sparc64/kernel/chmc.c
+--- kernel-power-2.6.28.orig/arch/sparc64/kernel/chmc.c
++++ kernel-power-2.6.28/arch/sparc64/kernel/chmc.c
 @@ -306,6 +306,7 @@
                buf[1] = '?';
                buf[2] = '?';
        }
        p = dp->controller;
        prop = &p->layout;
---- kernel-maemo-2.6.28.test.orig/arch/sparc64/kernel/sys_sparc.c
-+++ kernel-maemo-2.6.28.test/arch/sparc64/kernel/sys_sparc.c
+--- kernel-power-2.6.28.orig/arch/sparc64/kernel/sys_sparc.c
++++ kernel-power-2.6.28/arch/sparc64/kernel/sys_sparc.c
 @@ -397,7 +397,7 @@
        }
  }
  {
        int err = 0;
  
---- kernel-maemo-2.6.28.test.orig/arch/sparc64/kernel/syscalls.S
-+++ kernel-maemo-2.6.28.test/arch/sparc64/kernel/syscalls.S
+--- kernel-power-2.6.28.orig/arch/sparc64/kernel/syscalls.S
++++ kernel-power-2.6.28/arch/sparc64/kernel/syscalls.S
 @@ -20,8 +20,8 @@
         add    %sp, PTREGS_OFF, %o0
  
         add    %sp, PTREGS_OFF, %o0
  sys_nis_syscall:
        ba,pt   %xcc, c_sys_nis_syscall
---- kernel-maemo-2.6.28.test.orig/arch/sparc64/kernel/systbls.S
-+++ kernel-maemo-2.6.28.test/arch/sparc64/kernel/systbls.S
+--- kernel-power-2.6.28.orig/arch/sparc64/kernel/systbls.S
++++ kernel-power-2.6.28/arch/sparc64/kernel/systbls.S
 @@ -21,12 +21,12 @@
  /*0*/ .word sys_restart_syscall, sys32_exit, sys_fork, sys_read, sys_write
  /*5*/ .word sys32_open, sys_close, sys32_wait4, sys32_creat, sys_link
        .word sys_sync_file_range, sys_clock_settime, sys_clock_gettime, sys_clock_getres, sys_clock_nanosleep
  /*260*/       .word sys_sched_getaffinity, sys_sched_setaffinity, sys_timer_settime, sys_timer_gettime, sys_timer_getoverrun
        .word sys_timer_delete, sys_timer_create, sys_ni_syscall, sys_io_setup, sys_io_destroy
---- kernel-maemo-2.6.28.test.orig/arch/sparc64/kernel/systbls.h
-+++ kernel-maemo-2.6.28.test/arch/sparc64/kernel/systbls.h
+--- kernel-power-2.6.28.orig/arch/sparc64/kernel/systbls.h
++++ kernel-power-2.6.28/arch/sparc64/kernel/systbls.h
 @@ -16,9 +16,6 @@
                               void __user *ptr, long fifth);
  extern asmlinkage long sparc64_newuname(struct new_utsname __user *name);
  extern asmlinkage long sys64_munmap(unsigned long addr, size_t len);
  extern asmlinkage unsigned long sys64_mremap(unsigned long addr,
                                             unsigned long old_len,
---- kernel-maemo-2.6.28.test.orig/arch/sparc64/kernel/traps.c
-+++ kernel-maemo-2.6.28.test/arch/sparc64/kernel/traps.c
+--- kernel-power-2.6.28.orig/arch/sparc64/kernel/traps.c
++++ kernel-power-2.6.28/arch/sparc64/kernel/traps.c
 @@ -1,6 +1,6 @@
  /* arch/sparc64/kernel/traps.c
   *
                printk("sun4v_data_access_exception: ADDR[%016lx] "
                       "CTX[%04x] TYPE[%04x], going.\n",
                       addr, ctx, type);
---- kernel-maemo-2.6.28.test.orig/arch/x86/Kconfig
-+++ kernel-maemo-2.6.28.test/arch/x86/Kconfig
+--- kernel-power-2.6.28.orig/arch/x86/Kconfig
++++ kernel-power-2.6.28/arch/x86/Kconfig
 @@ -569,7 +569,7 @@
  
  # need this always selected by IOMMU for the VIA workaround
        help
          Support for software bounce buffers used on x86-64 systems
          which don't have a hardware IOMMU (e.g. the current generation
---- kernel-maemo-2.6.28.test.orig/arch/x86/boot/memory.c
-+++ kernel-maemo-2.6.28.test/arch/x86/boot/memory.c
+--- kernel-power-2.6.28.orig/arch/x86/boot/memory.c
++++ kernel-power-2.6.28/arch/x86/boot/memory.c
 @@ -27,13 +27,14 @@
        do {
                size = sizeof(struct e820entry);
  
                /* BIOSes which terminate the chain with CF = 1 as opposed
                   to %ebx = 0 don't always report the SMAP signature on
---- kernel-maemo-2.6.28.test.orig/arch/x86/ia32/ia32entry.S
-+++ kernel-maemo-2.6.28.test/arch/x86/ia32/ia32entry.S
+--- kernel-power-2.6.28.orig/arch/x86/ia32/ia32entry.S
++++ kernel-power-2.6.28/arch/x86/ia32/ia32entry.S
 @@ -418,9 +418,9 @@
        orl   $TS_COMPAT,TI_status(%r10)
        testl $_TIF_WORK_SYSCALL_ENTRY,TI_flags(%r10)
  END(ia32_syscall)
  
  ia32_badsys:
---- kernel-maemo-2.6.28.test.orig/arch/x86/include/asm/kvm_host.h
-+++ kernel-maemo-2.6.28.test/arch/x86/include/asm/kvm_host.h
+--- kernel-power-2.6.28.orig/arch/x86/include/asm/kvm_host.h
++++ kernel-power-2.6.28/arch/x86/include/asm/kvm_host.h
 @@ -190,9 +190,11 @@
        u64 *spt;
        /* hold the gfn of each spte inside spt */
  static inline struct kvm_mmu_page *page_header(hpa_t shadow_page)
  {
        struct page *page = pfn_to_page(shadow_page >> PAGE_SHIFT);
---- kernel-maemo-2.6.28.test.orig/arch/x86/include/asm/math_emu.h
-+++ kernel-maemo-2.6.28.test/arch/x86/include/asm/math_emu.h
+--- kernel-power-2.6.28.orig/arch/x86/include/asm/math_emu.h
++++ kernel-power-2.6.28/arch/x86/include/asm/math_emu.h
 @@ -1,31 +1,18 @@
  #ifndef _ASM_X86_MATH_EMU_H
  #define _ASM_X86_MATH_EMU_H
 +      };
  };
  #endif /* _ASM_X86_MATH_EMU_H */
---- kernel-maemo-2.6.28.test.orig/arch/x86/include/asm/mmzone_32.h
-+++ kernel-maemo-2.6.28.test/arch/x86/include/asm/mmzone_32.h
+--- kernel-power-2.6.28.orig/arch/x86/include/asm/mmzone_32.h
++++ kernel-power-2.6.28/arch/x86/include/asm/mmzone_32.h
 @@ -32,8 +32,6 @@
        get_memcfg_numa_flat();
  }
  extern void resume_map_numa_kva(pgd_t *pgd);
  
  #else /* !CONFIG_NUMA */
---- kernel-maemo-2.6.28.test.orig/arch/x86/include/asm/mmzone_64.h
-+++ kernel-maemo-2.6.28.test/arch/x86/include/asm/mmzone_64.h
+--- kernel-power-2.6.28.orig/arch/x86/include/asm/mmzone_64.h
++++ kernel-power-2.6.28/arch/x86/include/asm/mmzone_64.h
 @@ -40,8 +40,6 @@
  #define node_end_pfn(nid)       (NODE_DATA(nid)->node_start_pfn +     \
                                 NODE_DATA(nid)->node_spanned_pages)
  #ifdef CONFIG_NUMA_EMU
  #define FAKE_NODE_MIN_SIZE    (64 * 1024 * 1024)
  #define FAKE_NODE_MIN_HASH_MASK       (~(FAKE_NODE_MIN_SIZE - 1UL))
---- kernel-maemo-2.6.28.test.orig/arch/x86/include/asm/msr-index.h
-+++ kernel-maemo-2.6.28.test/arch/x86/include/asm/msr-index.h
+--- kernel-power-2.6.28.orig/arch/x86/include/asm/msr-index.h
++++ kernel-power-2.6.28/arch/x86/include/asm/msr-index.h
 @@ -200,6 +200,35 @@
  #define MSR_IA32_THERM_STATUS         0x0000019c
  #define MSR_IA32_MISC_ENABLE          0x000001a0
  /* Intel Model 6 */
  #define MSR_P6_EVNTSEL0                       0x00000186
  #define MSR_P6_EVNTSEL1                       0x00000187
---- kernel-maemo-2.6.28.test.orig/arch/x86/include/asm/paravirt.h
-+++ kernel-maemo-2.6.28.test/arch/x86/include/asm/paravirt.h
+--- kernel-power-2.6.28.orig/arch/x86/include/asm/paravirt.h
++++ kernel-power-2.6.28/arch/x86/include/asm/paravirt.h
 @@ -1352,14 +1352,7 @@
        PVOP_VCALL0(pv_cpu_ops.lazy_mode.leave);
  }
  
  static inline void __set_fixmap(unsigned /* enum fixed_addresses */ idx,
                                unsigned long phys, pgprot_t flags)
---- kernel-maemo-2.6.28.test.orig/arch/x86/include/asm/pgalloc.h
-+++ kernel-maemo-2.6.28.test/arch/x86/include/asm/pgalloc.h
+--- kernel-power-2.6.28.orig/arch/x86/include/asm/pgalloc.h
++++ kernel-power-2.6.28/arch/x86/include/asm/pgalloc.h
 @@ -42,6 +42,7 @@
  
  static inline void pte_free(struct mm_struct *mm, struct page *pte)
        __free_page(pte);
  }
  
---- kernel-maemo-2.6.28.test.orig/arch/x86/include/asm/processor.h
-+++ kernel-maemo-2.6.28.test/arch/x86/include/asm/processor.h
+--- kernel-power-2.6.28.orig/arch/x86/include/asm/processor.h
++++ kernel-power-2.6.28/arch/x86/include/asm/processor.h
 @@ -349,7 +349,7 @@
        u8                      no_update;
        u8                      rm;
        u32                     entry_eip;
  };
  
---- kernel-maemo-2.6.28.test.orig/arch/x86/include/asm/seccomp_32.h
-+++ kernel-maemo-2.6.28.test/arch/x86/include/asm/seccomp_32.h
+--- kernel-power-2.6.28.orig/arch/x86/include/asm/seccomp_32.h
++++ kernel-power-2.6.28/arch/x86/include/asm/seccomp_32.h
 @@ -1,12 +1,6 @@
  #ifndef _ASM_X86_SECCOMP_32_H
  #define _ASM_X86_SECCOMP_32_H
  #include <linux/unistd.h>
  
  #define __NR_seccomp_read __NR_read
---- kernel-maemo-2.6.28.test.orig/arch/x86/include/asm/seccomp_64.h
-+++ kernel-maemo-2.6.28.test/arch/x86/include/asm/seccomp_64.h
+--- kernel-power-2.6.28.orig/arch/x86/include/asm/seccomp_64.h
++++ kernel-power-2.6.28/arch/x86/include/asm/seccomp_64.h
 @@ -1,14 +1,6 @@
  #ifndef _ASM_X86_SECCOMP_64_H
  #define _ASM_X86_SECCOMP_64_H
  #include <linux/unistd.h>
  #include <asm/ia32_unistd.h>
  
---- kernel-maemo-2.6.28.test.orig/arch/x86/include/asm/traps.h
-+++ kernel-maemo-2.6.28.test/arch/x86/include/asm/traps.h
+--- kernel-power-2.6.28.orig/arch/x86/include/asm/traps.h
++++ kernel-power-2.6.28/arch/x86/include/asm/traps.h
 @@ -41,7 +41,7 @@
  dotraplinkage void do_overflow(struct pt_regs *, long);
  dotraplinkage void do_bounds(struct pt_regs *, long);
  #endif
  
  #endif /* _ASM_X86_TRAPS_H */
---- kernel-maemo-2.6.28.test.orig/arch/x86/kernel/acpi/cstate.c
-+++ kernel-maemo-2.6.28.test/arch/x86/kernel/acpi/cstate.c
+--- kernel-power-2.6.28.orig/arch/x86/kernel/acpi/cstate.c
++++ kernel-power-2.6.28/arch/x86/kernel/acpi/cstate.c
 @@ -56,6 +56,7 @@
  static short mwait_supported[ACPI_PROCESSOR_MAX_POWER];
  
        edx_part = edx >> (cstate_type * MWAIT_SUBSTATE_SIZE);
        num_cstate_subtype = edx_part & MWAIT_SUBSTATE_MASK;
  
---- kernel-maemo-2.6.28.test.orig/arch/x86/kernel/apic.c
-+++ kernel-maemo-2.6.28.test/arch/x86/kernel/apic.c
+--- kernel-power-2.6.28.orig/arch/x86/kernel/apic.c
++++ kernel-power-2.6.28/arch/x86/kernel/apic.c
 @@ -1451,7 +1451,7 @@
        switch (boot_cpu_data.x86_vendor) {
        case X86_VENDOR_AMD:
                        break;
                goto no_apic;
        case X86_VENDOR_INTEL:
---- kernel-maemo-2.6.28.test.orig/arch/x86/kernel/cpu/addon_cpuid_features.c
-+++ kernel-maemo-2.6.28.test/arch/x86/kernel/cpu/addon_cpuid_features.c
+--- kernel-power-2.6.28.orig/arch/x86/kernel/cpu/addon_cpuid_features.c
++++ kernel-power-2.6.28/arch/x86/kernel/cpu/addon_cpuid_features.c
 @@ -120,9 +120,17 @@
        c->cpu_core_id = phys_pkg_id(c->initial_apicid, ht_mask_width)
                                                 & core_select_mask;
  #endif
        c->x86_max_cores = (core_level_siblings / smp_num_siblings);
  
---- kernel-maemo-2.6.28.test.orig/arch/x86/kernel/cpu/intel.c
-+++ kernel-maemo-2.6.28.test/arch/x86/kernel/cpu/intel.c
+--- kernel-power-2.6.28.orig/arch/x86/kernel/cpu/intel.c
++++ kernel-power-2.6.28/arch/x86/kernel/cpu/intel.c
 @@ -30,6 +30,19 @@
  
  static void __cpuinit early_init_intel(struct cpuinfo_x86 *c)
        if (!cpu_has(c, X86_FEATURE_XTOPOLOGY)) {
                /*
                 * let's use the legacy cpuid vector 0x1 and 0x4 for topology
---- kernel-maemo-2.6.28.test.orig/arch/x86/kernel/cpu/mtrr/generic.c
-+++ kernel-maemo-2.6.28.test/arch/x86/kernel/cpu/mtrr/generic.c
+--- kernel-power-2.6.28.orig/arch/x86/kernel/cpu/mtrr/generic.c
++++ kernel-power-2.6.28/arch/x86/kernel/cpu/mtrr/generic.c
 @@ -45,6 +45,32 @@
  static int mtrr_show;
  module_param_named(show, mtrr_show, bool, 0);
        while (fixed_range_blocks[++block].ranges)
            for (range=0; range < fixed_range_blocks[block].ranges; range++)
                set_fixed_range(fixed_range_blocks[block].base_msr + range,
---- kernel-maemo-2.6.28.test.orig/arch/x86/kernel/cpu/mtrr/main.c
-+++ kernel-maemo-2.6.28.test/arch/x86/kernel/cpu/mtrr/main.c
+--- kernel-power-2.6.28.orig/arch/x86/kernel/cpu/mtrr/main.c
++++ kernel-power-2.6.28/arch/x86/kernel/cpu/mtrr/main.c
 @@ -1600,8 +1600,7 @@
  
        /* kvm/qemu doesn't have mtrr set right, don't trim them all */
                return 0;
        }
  
---- kernel-maemo-2.6.28.test.orig/arch/x86/kernel/head64.c
-+++ kernel-maemo-2.6.28.test/arch/x86/kernel/head64.c
+--- kernel-power-2.6.28.orig/arch/x86/kernel/head64.c
++++ kernel-power-2.6.28/arch/x86/kernel/head64.c
 @@ -26,7 +26,7 @@
  #include <asm/bios_ebda.h>
  
  
  #ifdef CONFIG_SMP
  /*
---- kernel-maemo-2.6.28.test.orig/arch/x86/kernel/head_64.S
-+++ kernel-maemo-2.6.28.test/arch/x86/kernel/head_64.S
+--- kernel-power-2.6.28.orig/arch/x86/kernel/head_64.S
++++ kernel-power-2.6.28/arch/x86/kernel/head_64.S
 @@ -305,7 +305,7 @@
        call dump_stack
  #ifdef CONFIG_KALLSYMS        
        call __print_symbol
  #endif
  #endif /* EARLY_PRINTK */
---- kernel-maemo-2.6.28.test.orig/arch/x86/kernel/hpet.c
-+++ kernel-maemo-2.6.28.test/arch/x86/kernel/hpet.c
+--- kernel-power-2.6.28.orig/arch/x86/kernel/hpet.c
++++ kernel-power-2.6.28/arch/x86/kernel/hpet.c
 @@ -267,6 +267,8 @@
                now = hpet_readl(HPET_COUNTER);
                cmp = now + (unsigned long) delta;
                cfg |= HPET_TN_ENABLE | HPET_TN_PERIODIC |
                       HPET_TN_SETVAL | HPET_TN_32BIT;
                hpet_writel(cfg, HPET_Tn_CFG(timer));
---- kernel-maemo-2.6.28.test.orig/arch/x86/kernel/microcode_amd.c
-+++ kernel-maemo-2.6.28.test/arch/x86/kernel/microcode_amd.c
+--- kernel-power-2.6.28.orig/arch/x86/kernel/microcode_amd.c
++++ kernel-power-2.6.28/arch/x86/kernel/microcode_amd.c
 @@ -62,7 +62,7 @@
        unsigned int  mc_patch_data_checksum;
        unsigned int  nb_dev_id;
                return 0;
        }
  
---- kernel-maemo-2.6.28.test.orig/arch/x86/kernel/paravirt.c
-+++ kernel-maemo-2.6.28.test/arch/x86/kernel/paravirt.c
+--- kernel-power-2.6.28.orig/arch/x86/kernel/paravirt.c
++++ kernel-power-2.6.28/arch/x86/kernel/paravirt.c
 @@ -268,6 +268,30 @@
        return __get_cpu_var(paravirt_lazy_mode);
  }
  struct pv_info pv_info = {
        .name = "bare hardware",
        .paravirt_enabled = 0,
---- kernel-maemo-2.6.28.test.orig/arch/x86/kernel/ptrace.c
-+++ kernel-maemo-2.6.28.test/arch/x86/kernel/ptrace.c
+--- kernel-power-2.6.28.orig/arch/x86/kernel/ptrace.c
++++ kernel-power-2.6.28/arch/x86/kernel/ptrace.c
 @@ -1512,7 +1512,7 @@
  #ifdef CONFIG_X86_32
  # define IS_IA32      1
  #else
  # define IS_IA32      0
  #endif
---- kernel-maemo-2.6.28.test.orig/arch/x86/kernel/reboot.c
-+++ kernel-maemo-2.6.28.test/arch/x86/kernel/reboot.c
+--- kernel-power-2.6.28.orig/arch/x86/kernel/reboot.c
++++ kernel-power-2.6.28/arch/x86/kernel/reboot.c
 @@ -202,6 +202,14 @@
                        DMI_MATCH(DMI_PRODUCT_NAME, "HP Compaq"),
                },
        { }
  };
  
---- kernel-maemo-2.6.28.test.orig/arch/x86/kernel/syscall_table_32.S
-+++ kernel-maemo-2.6.28.test/arch/x86/kernel/syscall_table_32.S
+--- kernel-power-2.6.28.orig/arch/x86/kernel/syscall_table_32.S
++++ kernel-power-2.6.28/arch/x86/kernel/syscall_table_32.S
 @@ -88,7 +88,7 @@
        .long sys_uselib
        .long sys_swapon
        .long old_mmap          /* 90 */
        .long sys_munmap
        .long sys_truncate
---- kernel-maemo-2.6.28.test.orig/arch/x86/kernel/tlb_uv.c
-+++ kernel-maemo-2.6.28.test/arch/x86/kernel/tlb_uv.c
+--- kernel-power-2.6.28.orig/arch/x86/kernel/tlb_uv.c
++++ kernel-power-2.6.28/arch/x86/kernel/tlb_uv.c
 @@ -586,7 +586,6 @@
  static struct bau_control * __init uv_table_bases_init(int blade, int node)
  {
                bcp->msg_statuses       = bau_tablesp->msg_statuses;
                bcp->descriptor_base    = adp;
        }
---- kernel-maemo-2.6.28.test.orig/arch/x86/kernel/traps.c
-+++ kernel-maemo-2.6.28.test/arch/x86/kernel/traps.c
+--- kernel-power-2.6.28.orig/arch/x86/kernel/traps.c
++++ kernel-power-2.6.28/arch/x86/kernel/traps.c
 @@ -104,6 +104,12 @@
                local_irq_enable();
  }
        }
  #else
        math_state_restore();
---- kernel-maemo-2.6.28.test.orig/arch/x86/kernel/vmi_32.c
-+++ kernel-maemo-2.6.28.test/arch/x86/kernel/vmi_32.c
+--- kernel-power-2.6.28.orig/arch/x86/kernel/vmi_32.c
++++ kernel-power-2.6.28/arch/x86/kernel/vmi_32.c
 @@ -430,6 +430,16 @@
  }
  
        }
  
        /* Set linear is needed in all cases */
---- kernel-maemo-2.6.28.test.orig/arch/x86/kernel/vmiclock_32.c
-+++ kernel-maemo-2.6.28.test/arch/x86/kernel/vmiclock_32.c
+--- kernel-power-2.6.28.orig/arch/x86/kernel/vmiclock_32.c
++++ kernel-power-2.6.28/arch/x86/kernel/vmiclock_32.c
 @@ -283,10 +283,13 @@
  #endif
  
  }
  
  static struct clocksource clocksource_vmi = {
---- kernel-maemo-2.6.28.test.orig/arch/x86/kvm/i8254.c
-+++ kernel-maemo-2.6.28.test/arch/x86/kvm/i8254.c
+--- kernel-power-2.6.28.orig/arch/x86/kvm/i8254.c
++++ kernel-power-2.6.28/arch/x86/kvm/i8254.c
 @@ -207,7 +207,7 @@
        hrtimer_add_expires_ns(&pt->timer, pt->period);
        pt->scheduled = hrtimer_get_expires_ns(&pt->timer);
  
        return (pt->period == 0 ? 0 : 1);
  }
---- kernel-maemo-2.6.28.test.orig/arch/x86/kvm/irq.c
-+++ kernel-maemo-2.6.28.test/arch/x86/kvm/irq.c
+--- kernel-power-2.6.28.orig/arch/x86/kvm/irq.c
++++ kernel-power-2.6.28/arch/x86/kvm/irq.c
 @@ -87,13 +87,6 @@
  }
  EXPORT_SYMBOL_GPL(kvm_inject_pending_timer_irqs);
  void __kvm_migrate_timers(struct kvm_vcpu *vcpu)
  {
        __kvm_migrate_apic_timer(vcpu);
---- kernel-maemo-2.6.28.test.orig/arch/x86/kvm/irq.h
-+++ kernel-maemo-2.6.28.test/arch/x86/kvm/irq.h
+--- kernel-power-2.6.28.orig/arch/x86/kvm/irq.h
++++ kernel-power-2.6.28/arch/x86/kvm/irq.h
 @@ -84,7 +84,6 @@
  
  void kvm_pic_reset(struct kvm_kpic_state *s);
  void kvm_inject_pending_timer_irqs(struct kvm_vcpu *vcpu);
  void kvm_inject_apic_timer_irqs(struct kvm_vcpu *vcpu);
  void __kvm_migrate_apic_timer(struct kvm_vcpu *vcpu);
---- kernel-maemo-2.6.28.test.orig/arch/x86/kvm/lapic.c
-+++ kernel-maemo-2.6.28.test/arch/x86/kvm/lapic.c
+--- kernel-power-2.6.28.orig/arch/x86/kvm/lapic.c
++++ kernel-power-2.6.28/arch/x86/kvm/lapic.c
 @@ -35,6 +35,12 @@
  #include "kvm_cache_regs.h"
  #include "irq.h"
  int kvm_get_apic_interrupt(struct kvm_vcpu *vcpu)
  {
        int vector = kvm_apic_has_interrupt(vcpu);
---- kernel-maemo-2.6.28.test.orig/arch/x86/kvm/lapic.h
-+++ kernel-maemo-2.6.28.test/arch/x86/kvm/lapic.h
+--- kernel-power-2.6.28.orig/arch/x86/kvm/lapic.h
++++ kernel-power-2.6.28/arch/x86/kvm/lapic.h
 @@ -12,7 +12,6 @@
                atomic_t pending;
                s64 period;     /* unit: ns */
  
  void kvm_lapic_set_vapic_addr(struct kvm_vcpu *vcpu, gpa_t vapic_addr);
  void kvm_lapic_sync_from_vapic(struct kvm_vcpu *vcpu);
---- kernel-maemo-2.6.28.test.orig/arch/x86/kvm/mmu.c
-+++ kernel-maemo-2.6.28.test/arch/x86/kvm/mmu.c
+--- kernel-power-2.6.28.orig/arch/x86/kvm/mmu.c
++++ kernel-power-2.6.28/arch/x86/kvm/mmu.c
 @@ -384,7 +384,9 @@
  {
        int *write_count;
                rmapp = &slot->rmap[gfn - slot->base_gfn];
                if (*rmapp)
                        printk(KERN_ERR "%s: (%s) shadow page has writable"
---- kernel-maemo-2.6.28.test.orig/arch/x86/kvm/paging_tmpl.h
-+++ kernel-maemo-2.6.28.test/arch/x86/kvm/paging_tmpl.h
+--- kernel-power-2.6.28.orig/arch/x86/kvm/paging_tmpl.h
++++ kernel-power-2.6.28/arch/x86/kvm/paging_tmpl.h
 @@ -467,9 +467,13 @@
                                      u64 *sptep, int level)
  {
                set_shadow_pte(sptep, shadow_trap_nonpresent_pte);
                return 1;
        }
---- kernel-maemo-2.6.28.test.orig/arch/x86/kvm/svm.c
-+++ kernel-maemo-2.6.28.test/arch/x86/kvm/svm.c
+--- kernel-power-2.6.28.orig/arch/x86/kvm/svm.c
++++ kernel-power-2.6.28/arch/x86/kvm/svm.c
 @@ -772,6 +772,22 @@
        var->l = (s->attrib >> SVM_SELECTOR_L_SHIFT) & 1;
        var->db = (s->attrib >> SVM_SELECTOR_DB_SHIFT) & 1;
  out:
        update_cr8_intercept(vcpu);
  }
---- kernel-maemo-2.6.28.test.orig/arch/x86/kvm/vmx.c
-+++ kernel-maemo-2.6.28.test/arch/x86/kvm/vmx.c
+--- kernel-power-2.6.28.orig/arch/x86/kvm/vmx.c
++++ kernel-power-2.6.28/arch/x86/kvm/vmx.c
 @@ -897,6 +897,7 @@
                data = vmcs_readl(GUEST_SYSENTER_ESP);
                break;
  }
  
  /*
---- kernel-maemo-2.6.28.test.orig/arch/x86/kvm/vmx.h
-+++ kernel-maemo-2.6.28.test/arch/x86/kvm/vmx.h
+--- kernel-power-2.6.28.orig/arch/x86/kvm/vmx.h
++++ kernel-power-2.6.28/arch/x86/kvm/vmx.h
 @@ -331,8 +331,9 @@
  
  #define AR_RESERVD_MASK 0xfffe0f00
  
  #define VMX_NR_VPIDS                          (1 << 16)
  #define VMX_VPID_EXTENT_SINGLE_CONTEXT                1
---- kernel-maemo-2.6.28.test.orig/arch/x86/kvm/x86.c
-+++ kernel-maemo-2.6.28.test/arch/x86/kvm/x86.c
+--- kernel-power-2.6.28.orig/arch/x86/kvm/x86.c
++++ kernel-power-2.6.28/arch/x86/kvm/x86.c
 @@ -906,7 +906,6 @@
        case KVM_CAP_USER_MEMORY:
        case KVM_CAP_SET_TSS_ADDR:
        return kvm_x86_ops->vcpu_reset(vcpu);
  }
  
---- kernel-maemo-2.6.28.test.orig/arch/x86/kvm/x86_emulate.c
-+++ kernel-maemo-2.6.28.test/arch/x86/kvm/x86_emulate.c
+--- kernel-power-2.6.28.orig/arch/x86/kvm/x86_emulate.c
++++ kernel-power-2.6.28/arch/x86/kvm/x86_emulate.c
 @@ -299,7 +299,7 @@
  
  static u16 group2_table[] = {
        SrcNone | ModRM | DstMem | Mov, 0,
        SrcMem16 | ModRM | Mov, 0,
  };
---- kernel-maemo-2.6.28.test.orig/arch/x86/lib/usercopy_32.c
-+++ kernel-maemo-2.6.28.test/arch/x86/lib/usercopy_32.c
+--- kernel-power-2.6.28.orig/arch/x86/lib/usercopy_32.c
++++ kernel-power-2.6.28/arch/x86/lib/usercopy_32.c
 @@ -56,7 +56,7 @@
                "       jmp 2b\n"                                          \
                ".previous\n"                                              \
                :"0" (n), "1" (s), "2" (0), "3" (mask)
                :"cc");
        return res & mask;
---- kernel-maemo-2.6.28.test.orig/arch/x86/lib/usercopy_64.c
-+++ kernel-maemo-2.6.28.test/arch/x86/lib/usercopy_64.c
+--- kernel-power-2.6.28.orig/arch/x86/lib/usercopy_64.c
++++ kernel-power-2.6.28/arch/x86/lib/usercopy_64.c
 @@ -32,7 +32,7 @@
                "       jmp 2b\n"                                          \
                ".previous\n"                                              \
                : [size1] "r"(size & 7), "[size8]" (size / 8), "[dst]"(addr),
                  [zero] "r" (0UL), [eight] "r" (8UL));
        return size;
---- kernel-maemo-2.6.28.test.orig/arch/x86/math-emu/fpu_entry.c
-+++ kernel-maemo-2.6.28.test/arch/x86/math-emu/fpu_entry.c
+--- kernel-power-2.6.28.orig/arch/x86/math-emu/fpu_entry.c
++++ kernel-power-2.6.28/arch/x86/math-emu/fpu_entry.c
 @@ -131,7 +131,7 @@
  static int valid_prefix(u_char *Byte, u_char __user ** fpu_eip,
                        overrides * override);
  {
        FPU_EIP = FPU_ORIG_EIP;
        current->thread.trap_no = 16;
---- kernel-maemo-2.6.28.test.orig/arch/x86/math-emu/fpu_proto.h
-+++ kernel-maemo-2.6.28.test/arch/x86/math-emu/fpu_proto.h
+--- kernel-power-2.6.28.orig/arch/x86/math-emu/fpu_proto.h
++++ kernel-power-2.6.28/arch/x86/math-emu/fpu_proto.h
 @@ -51,8 +51,8 @@
  extern void fst_i_(void);
  extern void fstp_i(void);
  /* fpu_etc.c */
  extern void FPU_etc(void);
  /* fpu_tags.c */
---- kernel-maemo-2.6.28.test.orig/arch/x86/math-emu/fpu_system.h
-+++ kernel-maemo-2.6.28.test/arch/x86/math-emu/fpu_system.h
+--- kernel-power-2.6.28.orig/arch/x86/math-emu/fpu_system.h
++++ kernel-power-2.6.28/arch/x86/math-emu/fpu_system.h
 @@ -16,10 +16,6 @@
  #include <linux/kernel.h>
  #include <linux/mm.h>
  #define FPU_ORIG_EIP          (FPU_info->___orig_eip)
  
  #define FPU_lookahead           (I387->soft.lookahead)
---- kernel-maemo-2.6.28.test.orig/arch/x86/math-emu/get_address.c
-+++ kernel-maemo-2.6.28.test/arch/x86/math-emu/get_address.c
+--- kernel-power-2.6.28.orig/arch/x86/math-emu/get_address.c
++++ kernel-power-2.6.28/arch/x86/math-emu/get_address.c
 @@ -29,46 +29,43 @@
  #define FPU_WRITE_BIT 0x10
  
                break;
        }
  
---- kernel-maemo-2.6.28.test.orig/arch/x86/mm/fault.c
-+++ kernel-maemo-2.6.28.test/arch/x86/mm/fault.c
+--- kernel-power-2.6.28.orig/arch/x86/mm/fault.c
++++ kernel-power-2.6.28/arch/x86/mm/fault.c
 @@ -533,7 +533,7 @@
           happen within a race in page table update. In the later
           case just flush. */
  
        /*
         * It's safe to allow irq's after cr2 has been saved and the
---- kernel-maemo-2.6.28.test.orig/arch/x86/mm/numa_64.c
-+++ kernel-maemo-2.6.28.test/arch/x86/mm/numa_64.c
+--- kernel-power-2.6.28.orig/arch/x86/mm/numa_64.c
++++ kernel-power-2.6.28/arch/x86/mm/numa_64.c
 @@ -145,7 +145,7 @@
        return shift;
  }
  {
        return phys_to_nid(pfn << PAGE_SHIFT);
  }
---- kernel-maemo-2.6.28.test.orig/arch/x86/mm/pageattr.c
-+++ kernel-maemo-2.6.28.test/arch/x86/mm/pageattr.c
+--- kernel-power-2.6.28.orig/arch/x86/mm/pageattr.c
++++ kernel-power-2.6.28/arch/x86/mm/pageattr.c
 @@ -534,6 +534,36 @@
        return 0;
  }
  out:
        return ret;
  }
---- kernel-maemo-2.6.28.test.orig/arch/x86/mm/pat.c
-+++ kernel-maemo-2.6.28.test/arch/x86/mm/pat.c
+--- kernel-power-2.6.28.orig/arch/x86/mm/pat.c
++++ kernel-power-2.6.28/arch/x86/mm/pat.c
 @@ -333,11 +333,23 @@
                                              req_type & _PAGE_CACHE_MASK);
        }
  
        spin_lock(&memtype_lock);
        list_for_each_entry(entry, &memtype_list, nd) {
---- kernel-maemo-2.6.28.test.orig/arch/x86/oprofile/op_model_ppro.c
-+++ kernel-maemo-2.6.28.test/arch/x86/oprofile/op_model_ppro.c
+--- kernel-power-2.6.28.orig/arch/x86/oprofile/op_model_ppro.c
++++ kernel-power-2.6.28/arch/x86/oprofile/op_model_ppro.c
 @@ -78,8 +78,18 @@
        if (cpu_has_arch_perfmon) {
                union cpuid10_eax eax;
        }
  
        /* clear all counters */
---- kernel-maemo-2.6.28.test.orig/arch/x86/pci/i386.c
-+++ kernel-maemo-2.6.28.test/arch/x86/pci/i386.c
+--- kernel-power-2.6.28.orig/arch/x86/pci/i386.c
++++ kernel-power-2.6.28/arch/x86/pci/i386.c
 @@ -329,6 +329,9 @@
                        return -EINVAL;
                }
        }
  
        if (((vma->vm_pgoff < max_low_pfn_mapped) ||
---- kernel-maemo-2.6.28.test.orig/arch/x86/pci/irq.c
-+++ kernel-maemo-2.6.28.test/arch/x86/pci/irq.c
+--- kernel-power-2.6.28.orig/arch/x86/pci/irq.c
++++ kernel-power-2.6.28/arch/x86/pci/irq.c
 @@ -573,6 +573,7 @@
        case PCI_DEVICE_ID_INTEL_ICH7_1:
        case PCI_DEVICE_ID_INTEL_ICH7_30:
        case PCI_DEVICE_ID_INTEL_ESB2_0:
        case PCI_DEVICE_ID_INTEL_ICH8_0:
        case PCI_DEVICE_ID_INTEL_ICH8_1:
---- kernel-maemo-2.6.28.test.orig/arch/x86/xen/enlighten.c
-+++ kernel-maemo-2.6.28.test/arch/x86/xen/enlighten.c
+--- kernel-power-2.6.28.orig/arch/x86/xen/enlighten.c
++++ kernel-power-2.6.28/arch/x86/xen/enlighten.c
 @@ -1669,6 +1669,9 @@
           possible map and a non-dummy shared_info. */
        per_cpu(xen_vcpu, 0) = &HYPERVISOR_shared_info->vcpu_info[0];
        xen_raw_console_write("mapping kernel into physical memory\n");
        pgd = xen_setup_kernel_pagetable(pgd, xen_start_info->nr_pages);
  
---- kernel-maemo-2.6.28.test.orig/block/genhd.c
-+++ kernel-maemo-2.6.28.test/block/genhd.c
+--- kernel-power-2.6.28.orig/block/genhd.c
++++ kernel-power-2.6.28/block/genhd.c
 @@ -98,7 +98,7 @@
  
        if (flags & DISK_PITER_REVERSE)
        while ((hd = disk_part_iter_next(&piter))) {
                cpu = part_stat_lock();
                part_round_stats(cpu, hd);
---- kernel-maemo-2.6.28.test.orig/crypto/algapi.c
-+++ kernel-maemo-2.6.28.test/crypto/algapi.c
+--- kernel-power-2.6.28.orig/crypto/algapi.c
++++ kernel-power-2.6.28/crypto/algapi.c
 @@ -149,6 +149,9 @@
                if (q == alg)
                        goto err;
        alg = test->adult;
        if (err || list_empty(&alg->cra_list))
                goto complete;
---- kernel-maemo-2.6.28.test.orig/crypto/async_tx/async_tx.c
-+++ kernel-maemo-2.6.28.test/crypto/async_tx/async_tx.c
+--- kernel-power-2.6.28.orig/crypto/async_tx/async_tx.c
++++ kernel-power-2.6.28/crypto/async_tx/async_tx.c
 @@ -124,6 +124,8 @@
        if (!dep)
                return;
        chan = dep->chan;
  
        /* keep submitting up until a channel switch is detected
---- kernel-maemo-2.6.28.test.orig/crypto/authenc.c
-+++ kernel-maemo-2.6.28.test/crypto/authenc.c
+--- kernel-power-2.6.28.orig/crypto/authenc.c
++++ kernel-power-2.6.28/crypto/authenc.c
 @@ -157,16 +157,19 @@
        dstp = sg_page(dst);
        vdst = PageHighMem(dstp) ? NULL : page_address(dstp) + dst->offset;
  }
  
  static int crypto_authenc_decrypt(struct aead_request *req)
---- kernel-maemo-2.6.28.test.orig/crypto/ccm.c
-+++ kernel-maemo-2.6.28.test/crypto/ccm.c
+--- kernel-power-2.6.28.orig/crypto/ccm.c
++++ kernel-power-2.6.28/crypto/ccm.c
 @@ -266,6 +266,8 @@
        if (assoclen) {
                pctx->ilen = format_adata(idata, assoclen);
        }
  
        /* compute plaintext into mac */
---- kernel-maemo-2.6.28.test.orig/drivers/acpi/asus_acpi.c
-+++ kernel-maemo-2.6.28.test/drivers/acpi/asus_acpi.c
+--- kernel-power-2.6.28.orig/drivers/acpi/asus_acpi.c
++++ kernel-power-2.6.28/drivers/acpi/asus_acpi.c
 @@ -143,6 +143,7 @@
                                                         S1300N, S5200N*/
                A4S,            /* Z81sp */
        else if (strncmp(model, "A4S", 3) == 0)
                return A4S;
        else if (strncmp(model, "F3Sa", 4) == 0)
---- kernel-maemo-2.6.28.test.orig/drivers/acpi/battery.c
-+++ kernel-maemo-2.6.28.test/drivers/acpi/battery.c
+--- kernel-power-2.6.28.orig/drivers/acpi/battery.c
++++ kernel-power-2.6.28/drivers/acpi/battery.c
 @@ -471,7 +471,7 @@
  
  static int acpi_battery_update(struct acpi_battery *battery)
                result = acpi_battery_get_info(battery);
                if (result)
                        return result;
---- kernel-maemo-2.6.28.test.orig/drivers/acpi/dock.c
-+++ kernel-maemo-2.6.28.test/drivers/acpi/dock.c
+--- kernel-power-2.6.28.orig/drivers/acpi/dock.c
++++ kernel-power-2.6.28/drivers/acpi/dock.c
 @@ -855,10 +855,14 @@
  static ssize_t show_docked(struct device *dev,
                           struct device_attribute *attr, char *buf)
                dock_remove(dock_station);
  }
  
---- kernel-maemo-2.6.28.test.orig/drivers/acpi/ec.c
-+++ kernel-maemo-2.6.28.test/drivers/acpi/ec.c
+--- kernel-power-2.6.28.orig/drivers/acpi/ec.c
++++ kernel-power-2.6.28/drivers/acpi/ec.c
 @@ -759,9 +759,10 @@
        struct acpi_namespace_node *node = handle;
        struct acpi_ec *ec = context;
        return AE_OK;
  }
  
---- kernel-maemo-2.6.28.test.orig/drivers/acpi/namespace/nsutils.c
-+++ kernel-maemo-2.6.28.test/drivers/acpi/namespace/nsutils.c
+--- kernel-power-2.6.28.orig/drivers/acpi/namespace/nsutils.c
++++ kernel-power-2.6.28/drivers/acpi/namespace/nsutils.c
 @@ -314,9 +314,15 @@
         *
         * strlen() + 1 covers the first name_seg, which has no path separator
        } else {
                /*
                 * Handle Carat prefixes
---- kernel-maemo-2.6.28.test.orig/drivers/acpi/pci_link.c
-+++ kernel-maemo-2.6.28.test/drivers/acpi/pci_link.c
+--- kernel-power-2.6.28.orig/drivers/acpi/pci_link.c
++++ kernel-power-2.6.28/drivers/acpi/pci_link.c
 @@ -796,10 +796,6 @@
        struct list_head *node = NULL;
        struct acpi_pci_link *link = NULL;
        list_for_each(node, &acpi_link.entries) {
                link = list_entry(node, struct acpi_pci_link, node);
                if (!link) {
---- kernel-maemo-2.6.28.test.orig/drivers/acpi/power.c
-+++ kernel-maemo-2.6.28.test/drivers/acpi/power.c
+--- kernel-power-2.6.28.orig/drivers/acpi/power.c
++++ kernel-power-2.6.28/drivers/acpi/power.c
 @@ -151,7 +151,7 @@
        *state = (sta & 0x01)?ACPI_POWER_RESOURCE_STATE_ON:
                              ACPI_POWER_RESOURCE_STATE_OFF;
                          acpi_ut_get_node_name(handle),
                                *state ? "on" : "off"));
  
---- kernel-maemo-2.6.28.test.orig/drivers/acpi/tables.c
-+++ kernel-maemo-2.6.28.test/drivers/acpi/tables.c
+--- kernel-power-2.6.28.orig/drivers/acpi/tables.c
++++ kernel-power-2.6.28/drivers/acpi/tables.c
 @@ -293,7 +293,12 @@
  
  int __init acpi_table_init(void)
        check_multiple_madt();
        return 0;
  }
---- kernel-maemo-2.6.28.test.orig/drivers/acpi/tables/tbutils.c
-+++ kernel-maemo-2.6.28.test/drivers/acpi/tables/tbutils.c
+--- kernel-power-2.6.28.orig/drivers/acpi/tables/tbutils.c
++++ kernel-power-2.6.28/drivers/acpi/tables/tbutils.c
 @@ -512,10 +512,9 @@
                        if (ACPI_FAILURE(status)) {
                                ACPI_WARNING((AE_INFO,
                                break;
                        }
                }
---- kernel-maemo-2.6.28.test.orig/drivers/acpi/video.c
-+++ kernel-maemo-2.6.28.test/drivers/acpi/video.c
+--- kernel-power-2.6.28.orig/drivers/acpi/video.c
++++ kernel-power-2.6.28/drivers/acpi/video.c
 @@ -36,6 +36,7 @@
  #include <linux/backlight.h>
  #include <linux/thermal.h>
  
        video->device = device;
        strcpy(acpi_device_name(device), ACPI_VIDEO_BUS_NAME);
---- kernel-maemo-2.6.28.test.orig/drivers/ata/ata_piix.c
-+++ kernel-maemo-2.6.28.test/drivers/ata/ata_piix.c
+--- kernel-power-2.6.28.orig/drivers/ata/ata_piix.c
++++ kernel-power-2.6.28/drivers/ata/ata_piix.c
 @@ -1294,6 +1294,39 @@
        return map;
  }
        if (!(host->ports[0]->flags & PIIX_FLAG_SIDPR))
                return 0;
  
---- kernel-maemo-2.6.28.test.orig/drivers/ata/libata-core.c
-+++ kernel-maemo-2.6.28.test/drivers/ata/libata-core.c
+--- kernel-power-2.6.28.orig/drivers/ata/libata-core.c
++++ kernel-power-2.6.28/drivers/ata/libata-core.c
 @@ -1251,14 +1251,16 @@
  {
        if (ata_id_has_lba(id)) {
        }
  }
  
---- kernel-maemo-2.6.28.test.orig/drivers/ata/libata-eh.c
-+++ kernel-maemo-2.6.28.test/drivers/ata/libata-eh.c
+--- kernel-power-2.6.28.orig/drivers/ata/libata-eh.c
++++ kernel-power-2.6.28/drivers/ata/libata-eh.c
 @@ -2366,11 +2366,14 @@
                }
  
                }
        }
  
---- kernel-maemo-2.6.28.test.orig/drivers/ata/pata_hpt37x.c
-+++ kernel-maemo-2.6.28.test/drivers/ata/pata_hpt37x.c
+--- kernel-power-2.6.28.orig/drivers/ata/pata_hpt37x.c
++++ kernel-power-2.6.28/drivers/ata/pata_hpt37x.c
 @@ -8,7 +8,7 @@
   * Copyright (C) 1999-2003            Andre Hedrick <andre@linux-ide.org>
   * Portions Copyright (C) 2001                Sun Microsystems, Inc.
        .bmdma_stop     = hpt370_bmdma_stop,
  
        .mode_filter    = hpt370_filter,
---- kernel-maemo-2.6.28.test.orig/drivers/ata/pata_via.c
-+++ kernel-maemo-2.6.28.test/drivers/ata/pata_via.c
+--- kernel-power-2.6.28.orig/drivers/ata/pata_via.c
++++ kernel-power-2.6.28/drivers/ata/pata_via.c
 @@ -86,6 +86,10 @@
        VIA_SATA_PATA   = 0x800, /* SATA/PATA combined configuration */
  };
  
        { },
  };
---- kernel-maemo-2.6.28.test.orig/drivers/ata/sata_mv.c
-+++ kernel-maemo-2.6.28.test/drivers/ata/sata_mv.c
+--- kernel-power-2.6.28.orig/drivers/ata/sata_mv.c
++++ kernel-power-2.6.28/drivers/ata/sata_mv.c
 @@ -669,8 +669,8 @@
        { PCI_VDEVICE(MARVELL, 0x5081), chip_508x },
        /* RocketRAID 1720/174x have different identifiers */
                u32 hc_irq_cause, ipending;
  
                /* clear EDMA event indicators, if any */
---- kernel-maemo-2.6.28.test.orig/drivers/ata/sata_nv.c
-+++ kernel-maemo-2.6.28.test/drivers/ata/sata_nv.c
+--- kernel-power-2.6.28.orig/drivers/ata/sata_nv.c
++++ kernel-power-2.6.28/drivers/ata/sata_nv.c
 @@ -305,10 +305,10 @@
  static int nv_scr_read(struct ata_link *link, unsigned int sc_reg, u32 *val);
  static int nv_scr_write(struct ata_link *link, unsigned int sc_reg, u32 val);
        }
  
        ppi[0] = &nv_port_info[type];
---- kernel-maemo-2.6.28.test.orig/drivers/ata/sata_via.c
-+++ kernel-maemo-2.6.28.test/drivers/ata/sata_via.c
+--- kernel-power-2.6.28.orig/drivers/ata/sata_via.c
++++ kernel-power-2.6.28/drivers/ata/sata_via.c
 @@ -92,6 +92,8 @@
        { PCI_VDEVICE(VIA, 0x5372), vt6420 },
        { PCI_VDEVICE(VIA, 0x7372), vt6420 },
  
        { }     /* terminate list */
  };
---- kernel-maemo-2.6.28.test.orig/drivers/atm/fore200e.c
-+++ kernel-maemo-2.6.28.test/drivers/atm/fore200e.c
+--- kernel-power-2.6.28.orig/drivers/atm/fore200e.c
++++ kernel-power-2.6.28/drivers/atm/fore200e.c
 @@ -2519,8 +2519,8 @@
        return err;
  
        return err;
      }
  
---- kernel-maemo-2.6.28.test.orig/drivers/block/aoe/aoe.h
-+++ kernel-maemo-2.6.28.test/drivers/block/aoe/aoe.h
+--- kernel-power-2.6.28.orig/drivers/block/aoe/aoe.h
++++ kernel-power-2.6.28/drivers/block/aoe/aoe.h
 @@ -18,6 +18,7 @@
  enum {
        AOECMD_ATA,
  
        AOEFL_RSP = (1<<3),
        AOEFL_ERR = (1<<2),
---- kernel-maemo-2.6.28.test.orig/drivers/block/aoe/aoenet.c
-+++ kernel-maemo-2.6.28.test/drivers/block/aoe/aoenet.c
+--- kernel-power-2.6.28.orig/drivers/block/aoe/aoenet.c
++++ kernel-power-2.6.28/drivers/block/aoe/aoenet.c
 @@ -153,6 +153,8 @@
                aoecmd_cfg_rsp(skb);
                break;
                printk(KERN_INFO "aoe: unknown cmd %d\n", h->cmd);
        }
  exit:
---- kernel-maemo-2.6.28.test.orig/drivers/block/nbd.c
-+++ kernel-maemo-2.6.28.test/drivers/block/nbd.c
+--- kernel-power-2.6.28.orig/drivers/block/nbd.c
++++ kernel-power-2.6.28/drivers/block/nbd.c
 @@ -406,6 +406,7 @@
        ret = sysfs_create_file(&disk_to_dev(lo->disk)->kobj, &pid_attr.attr);
        if (ret) {
                if (!lo->file)
                        return -EINVAL;
                thread = kthread_create(nbd_thread, lo, lo->disk->disk_name);
---- kernel-maemo-2.6.28.test.orig/drivers/block/xen-blkfront.c
-+++ kernel-maemo-2.6.28.test/drivers/block/xen-blkfront.c
+--- kernel-power-2.6.28.orig/drivers/block/xen-blkfront.c
++++ kernel-power-2.6.28/drivers/block/xen-blkfront.c
 @@ -40,6 +40,7 @@
  #include <linux/hdreg.h>
  #include <linux/cdrom.h>
        err = xenbus_grant_ring(dev, virt_to_mfn(info->ring.sring));
        if (err < 0) {
                free_page((unsigned long)sring);
---- kernel-maemo-2.6.28.test.orig/drivers/bluetooth/btsdio.c
-+++ kernel-maemo-2.6.28.test/drivers/bluetooth/btsdio.c
+--- kernel-power-2.6.28.orig/drivers/bluetooth/btsdio.c
++++ kernel-power-2.6.28/drivers/bluetooth/btsdio.c
 @@ -86,6 +86,7 @@
  
        err = sdio_writesb(data->func, REG_TDAT, skb->data, skb->len);
                sdio_writeb(data->func, 0x01, REG_PC_WRT, NULL);
                return err;
        }
---- kernel-maemo-2.6.28.test.orig/drivers/char/agp/generic.c
-+++ kernel-maemo-2.6.28.test/drivers/char/agp/generic.c
+--- kernel-power-2.6.28.orig/drivers/char/agp/generic.c
++++ kernel-power-2.6.28/drivers/char/agp/generic.c
 @@ -1226,7 +1226,7 @@
        int i, ret = -ENOMEM;
  
        if (page == NULL)
                return NULL;
  
---- kernel-maemo-2.6.28.test.orig/drivers/char/agp/intel-agp.c
-+++ kernel-maemo-2.6.28.test/drivers/char/agp/intel-agp.c
+--- kernel-power-2.6.28.orig/drivers/char/agp/intel-agp.c
++++ kernel-power-2.6.28/drivers/char/agp/intel-agp.c
 @@ -40,6 +40,8 @@
  #define PCI_DEVICE_ID_INTEL_Q45_IG          0x2E12
  #define PCI_DEVICE_ID_INTEL_G45_HB          0x2E20
        { }
  };
  
---- kernel-maemo-2.6.28.test.orig/drivers/char/raw.c
-+++ kernel-maemo-2.6.28.test/drivers/char/raw.c
+--- kernel-power-2.6.28.orig/drivers/char/raw.c
++++ kernel-power-2.6.28/drivers/char/raw.c
 @@ -90,6 +90,7 @@
        blkdev_put(bdev, filp->f_mode);
  out:
        return err;
  }
  
---- kernel-maemo-2.6.28.test.orig/drivers/char/selection.c
-+++ kernel-maemo-2.6.28.test/drivers/char/selection.c
+--- kernel-power-2.6.28.orig/drivers/char/selection.c
++++ kernel-power-2.6.28/drivers/char/selection.c
 @@ -268,7 +268,7 @@
  
        /* Allocate a new buffer before freeing the old one ... */
        if (!bp) {
                printk(KERN_WARNING "selection: kmalloc() failed\n");
                clear_selection();
---- kernel-maemo-2.6.28.test.orig/drivers/cpuidle/governors/menu.c
-+++ kernel-maemo-2.6.28.test/drivers/cpuidle/governors/menu.c
+--- kernel-power-2.6.28.orig/drivers/cpuidle/governors/menu.c
++++ kernel-power-2.6.28/drivers/cpuidle/governors/menu.c
 @@ -16,12 +16,14 @@
  #include <mach/pm.h>
  
  
        if (last_idle_us + BREAK_FUZZ <
            data->expected_us - target->exit_latency) {
---- kernel-maemo-2.6.28.test.orig/drivers/crypto/ixp4xx_crypto.c
-+++ kernel-maemo-2.6.28.test/drivers/crypto/ixp4xx_crypto.c
+--- kernel-power-2.6.28.orig/drivers/crypto/ixp4xx_crypto.c
++++ kernel-power-2.6.28/drivers/crypto/ixp4xx_crypto.c
 @@ -101,6 +101,7 @@
        u32 phys_addr;
        u32 __reserved[4];
  }
  
  static int aead_setup(struct crypto_aead *tfm, unsigned int authsize)
---- kernel-maemo-2.6.28.test.orig/drivers/dma/ioat_dma.c
-+++ kernel-maemo-2.6.28.test/drivers/dma/ioat_dma.c
+--- kernel-power-2.6.28.orig/drivers/dma/ioat_dma.c
++++ kernel-power-2.6.28/drivers/dma/ioat_dma.c
 @@ -1341,12 +1341,11 @@
   */
  #define IOAT_TEST_SIZE 2000
  
        if (device->common.device_is_tx_complete(dma_chan, cookie, NULL, NULL)
                                        != DMA_SUCCESS) {
---- kernel-maemo-2.6.28.test.orig/drivers/firewire/fw-ohci.c
-+++ kernel-maemo-2.6.28.test/drivers/firewire/fw-ohci.c
+--- kernel-power-2.6.28.orig/drivers/firewire/fw-ohci.c
++++ kernel-power-2.6.28/drivers/firewire/fw-ohci.c
 @@ -226,7 +226,7 @@
  #define CONTEXT_DEAD  0x0800
  #define CONTEXT_ACTIVE        0x0400
  #define OHCI1394_MAX_AT_RESP_RETRIES  0x2
  #define OHCI1394_MAX_PHYS_RESP_RETRIES        0x8
  
---- kernel-maemo-2.6.28.test.orig/drivers/firewire/fw-sbp2.c
-+++ kernel-maemo-2.6.28.test/drivers/firewire/fw-sbp2.c
+--- kernel-power-2.6.28.orig/drivers/firewire/fw-sbp2.c
++++ kernel-power-2.6.28/drivers/firewire/fw-sbp2.c
 @@ -357,15 +357,17 @@
                .model                  = ~0,
                .workarounds            = SBP2_WORKAROUND_128K_MAX_TRANS,
  
        sbp2_send_orb(&orb->base, lu, lu->tgt->node_id, generation,
                      lu->command_block_agent_address + SBP2_ORB_POINTER);
---- kernel-maemo-2.6.28.test.orig/drivers/firmware/dell_rbu.c
-+++ kernel-maemo-2.6.28.test/drivers/firmware/dell_rbu.c
+--- kernel-power-2.6.28.orig/drivers/firmware/dell_rbu.c
++++ kernel-power-2.6.28/drivers/firmware/dell_rbu.c
 @@ -576,7 +576,7 @@
  {
        int size = 0;
                spin_unlock(&rbu_data.lock);
        }
        return size;
---- kernel-maemo-2.6.28.test.orig/drivers/gpu/drm/drm_agpsupport.c
-+++ kernel-maemo-2.6.28.test/drivers/gpu/drm/drm_agpsupport.c
+--- kernel-power-2.6.28.orig/drivers/gpu/drm/drm_agpsupport.c
++++ kernel-power-2.6.28/drivers/gpu/drm/drm_agpsupport.c
 @@ -33,10 +33,11 @@
  
  #include "drmP.h"
  /**
   * Get AGP information.
   *
---- kernel-maemo-2.6.28.test.orig/drivers/gpu/drm/drm_irq.c
-+++ kernel-maemo-2.6.28.test/drivers/gpu/drm/drm_irq.c
+--- kernel-power-2.6.28.orig/drivers/gpu/drm/drm_irq.c
++++ kernel-power-2.6.28/drivers/gpu/drm/drm_irq.c
 @@ -259,7 +259,8 @@
   */
  int drm_irq_uninstall(struct drm_device * dev)
  
                if (ret != -EINTR) {
                        struct timeval now;
---- kernel-maemo-2.6.28.test.orig/drivers/gpu/drm/i915/i915_gem.c
-+++ kernel-maemo-2.6.28.test/drivers/gpu/drm/i915/i915_gem.c
+--- kernel-power-2.6.28.orig/drivers/gpu/drm/i915/i915_gem.c
++++ kernel-power-2.6.28/drivers/gpu/drm/i915/i915_gem.c
 @@ -1161,6 +1161,8 @@
        struct drm_mm_node *free_space;
        int page_count, ret;
        mutex_unlock(&dev->struct_mutex);
  
        drm_irq_install(dev);
---- kernel-maemo-2.6.28.test.orig/drivers/gpu/drm/i915/i915_irq.c
-+++ kernel-maemo-2.6.28.test/drivers/gpu/drm/i915/i915_irq.c
+--- kernel-power-2.6.28.orig/drivers/gpu/drm/i915/i915_irq.c
++++ kernel-power-2.6.28/drivers/gpu/drm/i915/i915_irq.c
 @@ -400,6 +400,12 @@
  {
        drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private;
  
        spin_lock_irqsave(&dev_priv->user_irq_lock, irqflags);
        if (IS_I965G(dev))
---- kernel-maemo-2.6.28.test.orig/drivers/hid/hid-core.c
-+++ kernel-maemo-2.6.28.test/drivers/hid/hid-core.c
+--- kernel-power-2.6.28.orig/drivers/hid/hid-core.c
++++ kernel-power-2.6.28/drivers/hid/hid-core.c
 @@ -1302,6 +1302,12 @@
        { HID_USB_DEVICE(USB_VENDOR_ID_SONY, USB_DEVICE_ID_SONY_PS3_CONTROLLER) },
        { HID_USB_DEVICE(USB_VENDOR_ID_SONY, USB_DEVICE_ID_SONY_VAIO_VGX_MOUSE) },
        { }
  };
  
---- kernel-maemo-2.6.28.test.orig/drivers/hid/hid-microsoft.c
-+++ kernel-maemo-2.6.28.test/drivers/hid/hid-microsoft.c
+--- kernel-power-2.6.28.orig/drivers/hid/hid-microsoft.c
++++ kernel-power-2.6.28/drivers/hid/hid-microsoft.c
 @@ -30,7 +30,7 @@
  #define MS_NOGET      0x10
  
        }
  }
  
---- kernel-maemo-2.6.28.test.orig/drivers/hid/hid-sony.c
-+++ kernel-maemo-2.6.28.test/drivers/hid/hid-sony.c
+--- kernel-power-2.6.28.orig/drivers/hid/hid-sony.c
++++ kernel-power-2.6.28/drivers/hid/hid-sony.c
 @@ -102,7 +102,7 @@
        }
  
                goto err_stop;
  
        return 0;
---- kernel-maemo-2.6.28.test.orig/drivers/hwmon/abituguru3.c
-+++ kernel-maemo-2.6.28.test/drivers/hwmon/abituguru3.c
+--- kernel-power-2.6.28.orig/drivers/hwmon/abituguru3.c
++++ kernel-power-2.6.28/drivers/hwmon/abituguru3.c
 @@ -1153,7 +1153,7 @@
  
  static inline int abituguru3_dmi_detect(void)
  }
  
  #endif /* CONFIG_DMI */
---- kernel-maemo-2.6.28.test.orig/drivers/hwmon/f71882fg.c
-+++ kernel-maemo-2.6.28.test/drivers/hwmon/f71882fg.c
+--- kernel-power-2.6.28.orig/drivers/hwmon/f71882fg.c
++++ kernel-power-2.6.28/drivers/hwmon/f71882fg.c
 @@ -837,7 +837,7 @@
  
        devid = superio_inw(sioaddr, SIO_REG_MANID);
                goto exit;
        }
  
---- kernel-maemo-2.6.28.test.orig/drivers/hwmon/it87.c
-+++ kernel-maemo-2.6.28.test/drivers/hwmon/it87.c
+--- kernel-power-2.6.28.orig/drivers/hwmon/it87.c
++++ kernel-power-2.6.28/drivers/hwmon/it87.c
 @@ -207,7 +207,7 @@
  
  #define TEMP_TO_REG(val) (SENSORS_LIMIT(((val)<0?(((val)-500)/1000):\
        u8 sensor;              /* Register value */
        u8 fan_div[3];          /* Register encoding, shifted right */
        u8 vid;                 /* Register encoding, combined */
---- kernel-maemo-2.6.28.test.orig/drivers/i2c/busses/i2c-acorn.c
-+++ kernel-maemo-2.6.28.test/drivers/i2c/busses/i2c-acorn.c
+--- kernel-power-2.6.28.orig/drivers/i2c/busses/i2c-acorn.c
++++ kernel-power-2.6.28/drivers/i2c/busses/i2c-acorn.c
 @@ -84,6 +84,7 @@
  
  static struct i2c_adapter ioc_ops = {
  }
  
  module_init(i2c_ioc_init);
---- kernel-maemo-2.6.28.test.orig/drivers/i2c/busses/i2c-amd8111.c
-+++ kernel-maemo-2.6.28.test/drivers/i2c/busses/i2c-amd8111.c
+--- kernel-power-2.6.28.orig/drivers/i2c/busses/i2c-amd8111.c
++++ kernel-power-2.6.28/drivers/i2c/busses/i2c-amd8111.c
 @@ -72,7 +72,7 @@
  {
        int timeout = 500;
                udelay(1);
  
        if (!timeout) {
---- kernel-maemo-2.6.28.test.orig/drivers/i2c/busses/i2c-pxa.c
-+++ kernel-maemo-2.6.28.test/drivers/i2c/busses/i2c-pxa.c
+--- kernel-power-2.6.28.orig/drivers/i2c/busses/i2c-pxa.c
++++ kernel-power-2.6.28/drivers/i2c/busses/i2c-pxa.c
 @@ -644,7 +644,7 @@
  
        i2c_pxa_start_message(i2c);
                i2c_pxa_handler(0, i2c);
                udelay(10);
        }
---- kernel-maemo-2.6.28.test.orig/drivers/i2c/i2c-core.c
-+++ kernel-maemo-2.6.28.test/drivers/i2c/i2c-core.c
+--- kernel-power-2.6.28.orig/drivers/i2c/i2c-core.c
++++ kernel-power-2.6.28/drivers/i2c/i2c-core.c
 @@ -1831,7 +1831,8 @@
        case I2C_SMBUS_QUICK:
                msg[0].len = 0;
                num = 1;
                break;
        case I2C_SMBUS_BYTE:
---- kernel-maemo-2.6.28.test.orig/drivers/ide/hpt366.c
-+++ kernel-maemo-2.6.28.test/drivers/ide/hpt366.c
+--- kernel-power-2.6.28.orig/drivers/ide/hpt366.c
++++ kernel-power-2.6.28/drivers/ide/hpt366.c
 @@ -114,6 +114,8 @@
   *   the register setting lists into the table indexed by the clock selected
   * - set the correct hwif->ultra_mask for each individual chip
  #undef        HPT_DELAY_INTERRUPT
  #define HPT_SERIALIZE_IO      0
  
---- kernel-maemo-2.6.28.test.orig/drivers/ide/ide-cd.c
-+++ kernel-maemo-2.6.28.test/drivers/ide/ide-cd.c
+--- kernel-power-2.6.28.orig/drivers/ide/ide-cd.c
++++ kernel-power-2.6.28/drivers/ide/ide-cd.c
 @@ -984,6 +984,9 @@
                if (blk_fs_request(rq)) {
                        ide_end_request(drive, 1, rq->nr_sectors);
                }
                goto end_request;
        }
---- kernel-maemo-2.6.28.test.orig/drivers/ide/ide-io.c
-+++ kernel-maemo-2.6.28.test/drivers/ide/ide-io.c
+--- kernel-power-2.6.28.orig/drivers/ide/ide-io.c
++++ kernel-power-2.6.28/drivers/ide/ide-io.c
 @@ -577,11 +577,14 @@
        if (hwif->sg_mapped)    /* needed by ide-scsi */
                return;
        }
  }
  
---- kernel-maemo-2.6.28.test.orig/drivers/ide/ide-iops.c
-+++ kernel-maemo-2.6.28.test/drivers/ide/ide-iops.c
+--- kernel-power-2.6.28.orig/drivers/ide/ide-iops.c
++++ kernel-power-2.6.28/drivers/ide/ide-iops.c
 @@ -324,6 +324,8 @@
        u8 io_32bit = drive->io_32bit;
        u8 mmio = (hwif->host_flags & IDE_HFLAG_MMIO) ? 1 : 0;
        if (io_32bit) {
                unsigned long uninitialized_var(flags);
  
---- kernel-maemo-2.6.28.test.orig/drivers/ide/it821x.c
-+++ kernel-maemo-2.6.28.test/drivers/ide/it821x.c
+--- kernel-power-2.6.28.orig/drivers/ide/it821x.c
++++ kernel-power-2.6.28/drivers/ide/it821x.c
 @@ -68,6 +68,8 @@
  
  #define DRV_NAME "it821x"
        { 0, },
  };
  
---- kernel-maemo-2.6.28.test.orig/drivers/ide/tx4938ide.c
-+++ kernel-maemo-2.6.28.test/drivers/ide/tx4938ide.c
+--- kernel-power-2.6.28.orig/drivers/ide/tx4938ide.c
++++ kernel-power-2.6.28/drivers/ide/tx4938ide.c
 @@ -181,7 +181,7 @@
  
        while (count--)
  }
  
  static const struct ide_tp_ops tx4938ide_tp_ops = {
---- kernel-maemo-2.6.28.test.orig/drivers/ide/tx4939ide.c
-+++ kernel-maemo-2.6.28.test/drivers/ide/tx4939ide.c
+--- kernel-power-2.6.28.orig/drivers/ide/tx4939ide.c
++++ kernel-power-2.6.28/drivers/ide/tx4939ide.c
 @@ -259,6 +259,12 @@
                        bcount = 0x10000 - (cur_addr & 0xffff);
                        if (bcount > cur_len)
  }
  
  static const struct ide_tp_ops tx4939ide_tp_ops = {
---- kernel-maemo-2.6.28.test.orig/drivers/ieee1394/ohci1394.h
-+++ kernel-maemo-2.6.28.test/drivers/ieee1394/ohci1394.h
+--- kernel-power-2.6.28.orig/drivers/ieee1394/ohci1394.h
++++ kernel-power-2.6.28/drivers/ieee1394/ohci1394.h
 @@ -26,7 +26,7 @@
  
  #define OHCI1394_DRIVER_NAME      "ohci1394"
  #define OHCI1394_MAX_AT_RESP_RETRIES  0x2
  #define OHCI1394_MAX_PHYS_RESP_RETRIES        0x8
  #define OHCI1394_MAX_SELF_ID_ERRORS   16
---- kernel-maemo-2.6.28.test.orig/drivers/ieee1394/sbp2.c
-+++ kernel-maemo-2.6.28.test/drivers/ieee1394/sbp2.c
+--- kernel-power-2.6.28.orig/drivers/ieee1394/sbp2.c
++++ kernel-power-2.6.28/drivers/ieee1394/sbp2.c
 @@ -395,6 +395,16 @@
                .model_id               = SBP2_ROM_VALUE_WILDCARD,
                .workarounds            = SBP2_WORKAROUND_128K_MAX_TRANS,
        /* iPod 4th generation */ {
                .firmware_revision      = 0x0a2700,
                .model_id               = 0x000021,
---- kernel-maemo-2.6.28.test.orig/drivers/infiniband/hw/nes/nes_cm.c
-+++ kernel-maemo-2.6.28.test/drivers/infiniband/hw/nes/nes_cm.c
+--- kernel-power-2.6.28.orig/drivers/infiniband/hw/nes/nes_cm.c
++++ kernel-power-2.6.28/drivers/infiniband/hw/nes/nes_cm.c
 @@ -2495,12 +2495,14 @@
        int ret = 0;
        struct nes_vnic *nesvnic;
  
                nesqp->nesqp_context->ird_ord_sizes |=
                        cpu_to_le32(NES_QPCONTEXT_ORDIRD_LSMM_PRESENT |
---- kernel-maemo-2.6.28.test.orig/drivers/infiniband/hw/nes/nes_verbs.c
-+++ kernel-maemo-2.6.28.test/drivers/infiniband/hw/nes/nes_verbs.c
+--- kernel-power-2.6.28.orig/drivers/infiniband/hw/nes/nes_verbs.c
++++ kernel-power-2.6.28/drivers/infiniband/hw/nes/nes_verbs.c
 @@ -1360,8 +1360,10 @@
                                        NES_QPCONTEXT_MISC_RQ_SIZE_SHIFT);
                        nesqp->nesqp_context->misc |= cpu_to_le32((u32)nesqp->hwqp.sq_encoded_size <<
                        nesqp->nesqp_context->cqs = cpu_to_le32(nesqp->nesscq->hw_cq.cq_number +
                                        ((u32)nesqp->nesrcq->hw_cq.cq_number << 16));
                        u64temp = (u64)nesqp->hwqp.sq_pbase;
---- kernel-maemo-2.6.28.test.orig/drivers/infiniband/hw/nes/nes_verbs.h
-+++ kernel-maemo-2.6.28.test/drivers/infiniband/hw/nes/nes_verbs.h
+--- kernel-power-2.6.28.orig/drivers/infiniband/hw/nes/nes_verbs.h
++++ kernel-power-2.6.28/drivers/infiniband/hw/nes/nes_verbs.h
 @@ -134,6 +134,7 @@
        struct ietf_mpa_frame *ietf_frame;
        dma_addr_t            ietf_frame_pbase;
        unsigned long         socket;
        struct nes_hw_qp      hwqp;
        struct work_struct    work;
---- kernel-maemo-2.6.28.test.orig/drivers/input/gameport/gameport.c
-+++ kernel-maemo-2.6.28.test/drivers/input/gameport/gameport.c
+--- kernel-power-2.6.28.orig/drivers/input/gameport/gameport.c
++++ kernel-power-2.6.28/drivers/input/gameport/gameport.c
 @@ -50,9 +50,8 @@
  
  static struct bus_type gameport_bus;
                        drv->driver.name, error);
  }
  
---- kernel-maemo-2.6.28.test.orig/drivers/input/keyboard/atkbd.c
-+++ kernel-maemo-2.6.28.test/drivers/input/keyboard/atkbd.c
+--- kernel-power-2.6.28.orig/drivers/input/keyboard/atkbd.c
++++ kernel-power-2.6.28/drivers/input/keyboard/atkbd.c
 @@ -884,6 +884,22 @@
  }
  
        { }
  };
  
---- kernel-maemo-2.6.28.test.orig/drivers/isdn/gigaset/bas-gigaset.c
-+++ kernel-maemo-2.6.28.test/drivers/isdn/gigaset/bas-gigaset.c
+--- kernel-power-2.6.28.orig/drivers/isdn/gigaset/bas-gigaset.c
++++ kernel-power-2.6.28/drivers/isdn/gigaset/bas-gigaset.c
 @@ -46,6 +46,9 @@
  /* length limit according to Siemens 3070usb-protokoll.doc ch. 2.1 */
  #define IF_WRITEBUF 264
                         endpoint->bInterval);
        if ((rc = usb_submit_urb(ucs->urb_int_in, GFP_KERNEL)) != 0) {
                dev_err(cs->dev, "could not submit interrupt URB: %s\n",
---- kernel-maemo-2.6.28.test.orig/drivers/md/bitmap.c
-+++ kernel-maemo-2.6.28.test/drivers/md/bitmap.c
+--- kernel-power-2.6.28.orig/drivers/md/bitmap.c
++++ kernel-power-2.6.28/drivers/md/bitmap.c
 @@ -964,9 +964,11 @@
                                 */
                                page = bitmap->sb_page;
                        } else if (file) {
                                page = read_page(file, index, bitmap, count);
                                offset = 0;
---- kernel-maemo-2.6.28.test.orig/drivers/md/dm-crypt.c
-+++ kernel-maemo-2.6.28.test/drivers/md/dm-crypt.c
+--- kernel-power-2.6.28.orig/drivers/md/dm-crypt.c
++++ kernel-power-2.6.28/drivers/md/dm-crypt.c
 @@ -60,6 +60,7 @@
  };
  
  
        if (!atomic_dec_and_test(&ctx->pending))
                return;
---- kernel-maemo-2.6.28.test.orig/drivers/md/dm-io.c
-+++ kernel-maemo-2.6.28.test/drivers/md/dm-io.c
+--- kernel-power-2.6.28.orig/drivers/md/dm-io.c
++++ kernel-power-2.6.28/drivers/md/dm-io.c
 @@ -292,6 +292,8 @@
                                             (PAGE_SIZE >> SECTOR_SHIFT));
                num_bvecs = 1 + min_t(int, bio_get_nr_vecs(where->bdev),
                bio = bio_alloc_bioset(GFP_NOIO, num_bvecs, io->client->bios);
                bio->bi_sector = where->sector + (where->count - remaining);
                bio->bi_bdev = where->bdev;
---- kernel-maemo-2.6.28.test.orig/drivers/md/dm-ioctl.c
-+++ kernel-maemo-2.6.28.test/drivers/md/dm-ioctl.c
+--- kernel-power-2.6.28.orig/drivers/md/dm-ioctl.c
++++ kernel-power-2.6.28/drivers/md/dm-ioctl.c
 @@ -704,7 +704,8 @@
        char *new_name = (char *) param + param->data_start;
  
                DMWARN("Invalid new logical volume name supplied.");
                return -EINVAL;
        }
---- kernel-maemo-2.6.28.test.orig/drivers/md/dm-log.c
-+++ kernel-maemo-2.6.28.test/drivers/md/dm-log.c
+--- kernel-power-2.6.28.orig/drivers/md/dm-log.c
++++ kernel-power-2.6.28/drivers/md/dm-log.c
 @@ -467,6 +467,7 @@
                lc->disk_header = vmalloc(buf_size);
                if (!lc->disk_header) {
                vfree(lc->disk_header);
                kfree(lc);
                return -ENOMEM;
---- kernel-maemo-2.6.28.test.orig/drivers/md/dm-raid1.c
-+++ kernel-maemo-2.6.28.test/drivers/md/dm-raid1.c
+--- kernel-power-2.6.28.orig/drivers/md/dm-raid1.c
++++ kernel-power-2.6.28/drivers/md/dm-raid1.c
 @@ -197,9 +197,6 @@
        struct mirror_set *ms = m->ms;
        struct mirror *new;
        if (m != get_default_mirror(ms))
                goto out;
  
---- kernel-maemo-2.6.28.test.orig/drivers/md/dm.c
-+++ kernel-maemo-2.6.28.test/drivers/md/dm.c
+--- kernel-power-2.6.28.orig/drivers/md/dm.c
++++ kernel-power-2.6.28/drivers/md/dm.c
 @@ -480,9 +480,12 @@
  static void dec_pending(struct dm_io *io, int error)
  {
  }
  
  static sector_t max_io_len(struct mapped_device *md,
---- kernel-maemo-2.6.28.test.orig/drivers/md/linear.c
-+++ kernel-maemo-2.6.28.test/drivers/md/linear.c
+--- kernel-power-2.6.28.orig/drivers/md/linear.c
++++ kernel-power-2.6.28/drivers/md/linear.c
 @@ -25,13 +25,13 @@
  {
        dev_info_t *hash;
  
        while (sector >= hash->num_sectors + hash->start_sector)
                hash++;
---- kernel-maemo-2.6.28.test.orig/drivers/md/md.c
-+++ kernel-maemo-2.6.28.test/drivers/md/md.c
+--- kernel-power-2.6.28.orig/drivers/md/md.c
++++ kernel-power-2.6.28/drivers/md/md.c
 @@ -1447,6 +1447,11 @@
                if (find_rdev_nr(mddev, rdev->desc_nr))
                        return -EBUSY;
  abort_export:
        export_rdev(rdev);
        return err;
---- kernel-maemo-2.6.28.test.orig/drivers/md/raid1.c
-+++ kernel-maemo-2.6.28.test/drivers/md/raid1.c
+--- kernel-power-2.6.28.orig/drivers/md/raid1.c
++++ kernel-power-2.6.28/drivers/md/raid1.c
 @@ -1233,8 +1233,9 @@
        update_head_pos(mirror, r1_bio);
  
        }
  }
  
---- kernel-maemo-2.6.28.test.orig/drivers/md/raid10.c
-+++ kernel-maemo-2.6.28.test/drivers/md/raid10.c
+--- kernel-power-2.6.28.orig/drivers/md/raid10.c
++++ kernel-power-2.6.28/drivers/md/raid10.c
 @@ -1236,6 +1236,7 @@
        /* for reconstruct, we always reschedule after a read.
         * for resync, only after all reads
  }
  
  static int run(mddev_t *mddev)
---- kernel-maemo-2.6.28.test.orig/drivers/media/common/tuners/tda8290.c
-+++ kernel-maemo-2.6.28.test/drivers/media/common/tuners/tda8290.c
+--- kernel-power-2.6.28.orig/drivers/media/common/tuners/tda8290.c
++++ kernel-power-2.6.28/drivers/media/common/tuners/tda8290.c
 @@ -724,7 +724,8 @@
        fe->ops.analog_ops.info.name = name;
  
                tda8290_init_if(fe);
        } else if (priv->ver & TDA8295)
                tda8295_init_if(fe);
---- kernel-maemo-2.6.28.test.orig/drivers/media/dvb/frontends/s5h1409.c
-+++ kernel-maemo-2.6.28.test/drivers/media/dvb/frontends/s5h1409.c
+--- kernel-power-2.6.28.orig/drivers/media/dvb/frontends/s5h1409.c
++++ kernel-power-2.6.28/drivers/media/dvb/frontends/s5h1409.c
 @@ -545,9 +545,6 @@
  
        s5h1409_enable_modulation(fe, p->u.vsb.modulation);
        return 0;
  }
  
---- kernel-maemo-2.6.28.test.orig/drivers/media/video/cx23885/cx23885-417.c
-+++ kernel-maemo-2.6.28.test/drivers/media/video/cx23885/cx23885-417.c
+--- kernel-power-2.6.28.orig/drivers/media/video/cx23885/cx23885-417.c
++++ kernel-power-2.6.28/drivers/media/video/cx23885/cx23885-417.c
 @@ -1585,7 +1585,8 @@
        lock_kernel();
        list_for_each(list, &cx23885_devlist) {
                        dev = h;
                        break;
                }
---- kernel-maemo-2.6.28.test.orig/drivers/media/video/cx23885/cx23885-video.c
-+++ kernel-maemo-2.6.28.test/drivers/media/video/cx23885/cx23885-video.c
+--- kernel-power-2.6.28.orig/drivers/media/video/cx23885/cx23885-video.c
++++ kernel-power-2.6.28/drivers/media/video/cx23885/cx23885-video.c
 @@ -730,12 +730,13 @@
        lock_kernel();
        list_for_each(list, &cx23885_devlist) {
                        dev  = h;
                        type = V4L2_BUF_TYPE_VBI_CAPTURE;
                }
---- kernel-maemo-2.6.28.test.orig/drivers/media/video/ivtv/ivtv-ioctl.c
-+++ kernel-maemo-2.6.28.test/drivers/media/video/ivtv/ivtv-ioctl.c
+--- kernel-power-2.6.28.orig/drivers/media/video/ivtv/ivtv-ioctl.c
++++ kernel-power-2.6.28/drivers/media/video/ivtv/ivtv-ioctl.c
 @@ -1750,6 +1750,18 @@
                break;
        }
        default:
                break;
        }
---- kernel-maemo-2.6.28.test.orig/drivers/media/video/saa7127.c
-+++ kernel-maemo-2.6.28.test/drivers/media/video/saa7127.c
+--- kernel-power-2.6.28.orig/drivers/media/video/saa7127.c
++++ kernel-power-2.6.28/drivers/media/video/saa7127.c
 @@ -149,7 +149,7 @@
        { SAA7127_REG_COPYGEN_0,                        0x77 },
        { SAA7127_REG_COPYGEN_1,                        0x41 },
        if (state->ident == V4L2_IDENT_SAA7129)
                saa7127_write_inittab(client, saa7129_init_config_extra);
        return 0;
---- kernel-maemo-2.6.28.test.orig/drivers/misc/acer-wmi.c
-+++ kernel-maemo-2.6.28.test/drivers/misc/acer-wmi.c
+--- kernel-power-2.6.28.orig/drivers/misc/acer-wmi.c
++++ kernel-power-2.6.28/drivers/misc/acer-wmi.c
 @@ -1297,7 +1297,7 @@
  
        set_quirks();
                interface->capability &= ~ACER_CAP_BRIGHTNESS;
                printk(ACER_INFO "Brightness must be controlled by "
                       "generic video driver\n");
---- kernel-maemo-2.6.28.test.orig/drivers/misc/eeepc-laptop.c
-+++ kernel-maemo-2.6.28.test/drivers/misc/eeepc-laptop.c
+--- kernel-power-2.6.28.orig/drivers/misc/eeepc-laptop.c
++++ kernel-power-2.6.28/drivers/misc/eeepc-laptop.c
 @@ -161,6 +161,10 @@
        {KE_KEY, 0x13, KEY_MUTE },
        {KE_KEY, 0x14, KEY_VOLUMEDOWN },
  }
  
  static void eeepc_hotk_notify(acpi_handle handle, u32 event, void *data)
---- kernel-maemo-2.6.28.test.orig/drivers/misc/hpilo.c
-+++ kernel-maemo-2.6.28.test/drivers/misc/hpilo.c
+--- kernel-power-2.6.28.orig/drivers/misc/hpilo.c
++++ kernel-power-2.6.28/drivers/misc/hpilo.c
 @@ -710,6 +710,7 @@
  
  static struct pci_device_id ilo_devices[] = {
        { }
  };
  MODULE_DEVICE_TABLE(pci, ilo_devices);
---- kernel-maemo-2.6.28.test.orig/drivers/misc/panasonic-laptop.c
-+++ kernel-maemo-2.6.28.test/drivers/misc/panasonic-laptop.c
+--- kernel-power-2.6.28.orig/drivers/misc/panasonic-laptop.c
++++ kernel-power-2.6.28/drivers/misc/panasonic-laptop.c
 @@ -515,7 +515,7 @@
  
        hkey_num = result & 0xf;
                ACPI_DEBUG_PRINT((ACPI_DB_ERROR,
                                  "hotkey number out of range: %d\n",
                                  hkey_num));
---- kernel-maemo-2.6.28.test.orig/drivers/misc/sgi-xp/xpc.h
-+++ kernel-maemo-2.6.28.test/drivers/misc/sgi-xp/xpc.h
+--- kernel-power-2.6.28.orig/drivers/misc/sgi-xp/xpc.h
++++ kernel-power-2.6.28/drivers/misc/sgi-xp/xpc.h
 @@ -3,7 +3,7 @@
   * License.  See the file "COPYING" in the main directory of this archive
   * for more details.
  
        struct xpc_fifo_head_uv msg_slot_free_list;
        struct xpc_fifo_head_uv recv_msg_list;  /* deliverable payloads */
---- kernel-maemo-2.6.28.test.orig/drivers/misc/sgi-xp/xpc_sn2.c
-+++ kernel-maemo-2.6.28.test/drivers/misc/sgi-xp/xpc_sn2.c
+--- kernel-power-2.6.28.orig/drivers/misc/sgi-xp/xpc_sn2.c
++++ kernel-power-2.6.28/drivers/misc/sgi-xp/xpc_sn2.c
 @@ -904,7 +904,7 @@
        dev_dbg(xpc_part, "  remote_vars_pa = 0x%016lx\n",
                part_sn2->remote_vars_pa);
  
        /*
         * See if this message is next in line to be acknowledged as having
---- kernel-maemo-2.6.28.test.orig/drivers/misc/sgi-xp/xpc_uv.c
-+++ kernel-maemo-2.6.28.test/drivers/misc/sgi-xp/xpc_uv.c
+--- kernel-power-2.6.28.orig/drivers/misc/sgi-xp/xpc_uv.c
++++ kernel-power-2.6.28/drivers/misc/sgi-xp/xpc_uv.c
 @@ -3,7 +3,7 @@
   * License.  See the file "COPYING" in the main directory of this archive
   * for more details.
                msg_slot->func = func;
  
                if (ch->flags & XPC_C_DISCONNECTING) {
---- kernel-maemo-2.6.28.test.orig/drivers/misc/thinkpad_acpi.c
-+++ kernel-maemo-2.6.28.test/drivers/misc/thinkpad_acpi.c
+--- kernel-power-2.6.28.orig/drivers/misc/thinkpad_acpi.c
++++ kernel-power-2.6.28/drivers/misc/thinkpad_acpi.c
 @@ -281,11 +281,17 @@
  
  static struct workqueue_struct *tpacpi_wq;
  
  MODULE_AUTHOR("Borislav Deianov, Henrique de Moraes Holschuh");
  MODULE_DESCRIPTION(TPACPI_DESC);
---- kernel-maemo-2.6.28.test.orig/drivers/mmc/card/mmc_test.c
-+++ kernel-maemo-2.6.28.test/drivers/mmc/card/mmc_test.c
+--- kernel-power-2.6.28.orig/drivers/mmc/card/mmc_test.c
++++ kernel-power-2.6.28/drivers/mmc/card/mmc_test.c
 @@ -494,7 +494,7 @@
  
        sg_init_one(&sg, test->buffer, 512);
        if (ret)
                return ret;
  
---- kernel-maemo-2.6.28.test.orig/drivers/mmc/host/s3cmci.c
-+++ kernel-maemo-2.6.28.test/drivers/mmc/host/s3cmci.c
+--- kernel-power-2.6.28.orig/drivers/mmc/host/s3cmci.c
++++ kernel-power-2.6.28/drivers/mmc/host/s3cmci.c
 @@ -329,7 +329,7 @@
  
        to_ptr = host->base + host->sdidata;
                s3c2410_dma_set_buffdone_fn(host->dma,
                                            s3cmci_dma_done_callback);
                s3c2410_dma_setflags(host->dma, S3C2410_DMAF_AUTOSTART);
---- kernel-maemo-2.6.28.test.orig/drivers/mmc/host/sdhci-pci.c
-+++ kernel-maemo-2.6.28.test/drivers/mmc/host/sdhci-pci.c
+--- kernel-power-2.6.28.orig/drivers/mmc/host/sdhci-pci.c
++++ kernel-power-2.6.28/drivers/mmc/host/sdhci-pci.c
 @@ -107,6 +107,7 @@
  
  static const struct sdhci_pci_fixes sdhci_cafe = {
                          SDHCI_QUIRK_BROKEN_TIMEOUT_VAL,
  };
  
---- kernel-maemo-2.6.28.test.orig/drivers/mmc/host/sdhci.c
-+++ kernel-maemo-2.6.28.test/drivers/mmc/host/sdhci.c
+--- kernel-power-2.6.28.orig/drivers/mmc/host/sdhci.c
++++ kernel-power-2.6.28/drivers/mmc/host/sdhci.c
 @@ -1286,8 +1286,11 @@
                if (host->cmd->data)
                        DBG("Cannot wait for busy signal when also "
        host->led.brightness = LED_OFF;
        host->led.default_trigger = mmc_hostname(mmc);
        host->led.brightness_set = sdhci_led_control;
---- kernel-maemo-2.6.28.test.orig/drivers/mmc/host/sdhci.h
-+++ kernel-maemo-2.6.28.test/drivers/mmc/host/sdhci.h
+--- kernel-power-2.6.28.orig/drivers/mmc/host/sdhci.h
++++ kernel-power-2.6.28/drivers/mmc/host/sdhci.h
 @@ -210,6 +210,8 @@
  #define SDHCI_QUIRK_BROKEN_SMALL_PIO                  (1<<13)
  /* Controller supports high speed but doesn't have the caps bit set */
  #endif
  
        spinlock_t              lock;           /* Mutex */
---- kernel-maemo-2.6.28.test.orig/drivers/mtd/devices/mtd_dataflash.c
-+++ kernel-maemo-2.6.28.test/drivers/mtd/devices/mtd_dataflash.c
+--- kernel-power-2.6.28.orig/drivers/mtd/devices/mtd_dataflash.c
++++ kernel-power-2.6.28/drivers/mtd/devices/mtd_dataflash.c
 @@ -815,7 +815,8 @@
                                        if (!(info->flags & IS_POW2PS))
                                                return info;
                }
        }
  
---- kernel-maemo-2.6.28.test.orig/drivers/net/3c505.c
-+++ kernel-maemo-2.6.28.test/drivers/net/3c505.c
+--- kernel-power-2.6.28.orig/drivers/net/3c505.c
++++ kernel-power-2.6.28/drivers/net/3c505.c
 @@ -493,21 +493,27 @@
        }
        /* read the data */
  
        /* safety check total length vs data length */
        if (total_length != (pcb->length + 2)) {
---- kernel-maemo-2.6.28.test.orig/drivers/net/b44.c
-+++ kernel-maemo-2.6.28.test/drivers/net/b44.c
+--- kernel-power-2.6.28.orig/drivers/net/b44.c
++++ kernel-power-2.6.28/drivers/net/b44.c
 @@ -750,7 +750,7 @@
                                             dest_idx * sizeof(dest_desc),
                                             DMA_BIDIRECTIONAL);
                                       RX_PKT_BUF_SZ,
                                       DMA_FROM_DEVICE);
  }
---- kernel-maemo-2.6.28.test.orig/drivers/net/bnx2x_main.c
-+++ kernel-maemo-2.6.28.test/drivers/net/bnx2x_main.c
+--- kernel-power-2.6.28.orig/drivers/net/bnx2x_main.c
++++ kernel-power-2.6.28/drivers/net/bnx2x_main.c
 @@ -8079,6 +8079,9 @@
        struct bnx2x *bp = netdev_priv(dev);
        int rc;
        DP(BNX2X_MSG_NVM, "ethtool_eeprom: cmd %d\n"
           DP_LEVEL "  magic 0x%x  offset 0x%x (%d)  len 0x%x (%d)\n",
           eeprom->cmd, eeprom->magic, eeprom->offset, eeprom->offset,
---- kernel-maemo-2.6.28.test.orig/drivers/net/bonding/bond_main.c
-+++ kernel-maemo-2.6.28.test/drivers/net/bonding/bond_main.c
+--- kernel-power-2.6.28.orig/drivers/net/bonding/bond_main.c
++++ kernel-power-2.6.28/drivers/net/bonding/bond_main.c
 @@ -3536,11 +3536,26 @@
                }
                break;
                break;
        case NETDEV_DOWN:
                /*
---- kernel-maemo-2.6.28.test.orig/drivers/net/bonding/bonding.h
-+++ kernel-maemo-2.6.28.test/drivers/net/bonding/bonding.h
+--- kernel-power-2.6.28.orig/drivers/net/bonding/bonding.h
++++ kernel-power-2.6.28/drivers/net/bonding/bonding.h
 @@ -248,6 +248,12 @@
        return (struct bonding *)slave->dev->master->priv;
  }
  #define BOND_FOM_NONE                 0
  #define BOND_FOM_ACTIVE                       1
  #define BOND_FOM_FOLLOW                       2
---- kernel-maemo-2.6.28.test.orig/drivers/net/e1000/e1000_main.c
-+++ kernel-maemo-2.6.28.test/drivers/net/e1000/e1000_main.c
+--- kernel-power-2.6.28.orig/drivers/net/e1000/e1000_main.c
++++ kernel-power-2.6.28/drivers/net/e1000/e1000_main.c
 @@ -31,7 +31,7 @@
  
  char e1000_driver_name[] = "e1000";
                return IRQ_NONE;  /* Not our interrupt */
  
        /* IMS will not auto-mask if INT_ASSERTED is not set, and if it is
---- kernel-maemo-2.6.28.test.orig/drivers/net/irda/irda-usb.c
-+++ kernel-maemo-2.6.28.test/drivers/net/irda/irda-usb.c
+--- kernel-power-2.6.28.orig/drivers/net/irda/irda-usb.c
++++ kernel-power-2.6.28/drivers/net/irda/irda-usb.c
 @@ -1075,7 +1075,7 @@
  {
        unsigned int i;
        const struct firmware *fw;
        const unsigned char *fw_version_ptr; /* pointer to version string */
        unsigned long fw_version = 0;
---- kernel-maemo-2.6.28.test.orig/drivers/net/r6040.c
-+++ kernel-maemo-2.6.28.test/drivers/net/r6040.c
+--- kernel-power-2.6.28.orig/drivers/net/r6040.c
++++ kernel-power-2.6.28/drivers/net/r6040.c
 @@ -49,8 +49,8 @@
  #include <asm/processor.h>
  
        return IRQ_HANDLED;
  }
  
---- kernel-maemo-2.6.28.test.orig/drivers/net/r8169.c
-+++ kernel-maemo-2.6.28.test/drivers/net/r8169.c
+--- kernel-power-2.6.28.orig/drivers/net/r8169.c
++++ kernel-power-2.6.28/drivers/net/r8169.c
 @@ -2026,8 +2026,7 @@
        if (!tp->pcie_cap && netif_msg_probe(tp))
                dev_info(&pdev->dev, "no PCI Express capability\n");
        /* Identify chip attached to board */
        rtl8169_get_mac_version(tp, ioaddr);
  
---- kernel-maemo-2.6.28.test.orig/drivers/net/skfp/skfddi.c
-+++ kernel-maemo-2.6.28.test/drivers/net/skfp/skfddi.c
+--- kernel-power-2.6.28.orig/drivers/net/skfp/skfddi.c
++++ kernel-power-2.6.28/drivers/net/skfp/skfddi.c
 @@ -998,9 +998,9 @@
                break;
        case SKFP_CLR_STATS:    /* Zero out the driver statistics */
                }
                break;
        default:
---- kernel-maemo-2.6.28.test.orig/drivers/net/sky2.c
-+++ kernel-maemo-2.6.28.test/drivers/net/sky2.c
+--- kernel-power-2.6.28.orig/drivers/net/sky2.c
++++ kernel-power-2.6.28/drivers/net/sky2.c
 @@ -1403,9 +1403,6 @@
  
        }
        return 0;
  
  err_out:
---- kernel-maemo-2.6.28.test.orig/drivers/net/sungem.c
-+++ kernel-maemo-2.6.28.test/drivers/net/sungem.c
+--- kernel-power-2.6.28.orig/drivers/net/sungem.c
++++ kernel-power-2.6.28/drivers/net/sungem.c
 @@ -2222,6 +2222,8 @@
  
        gp->running = 1;
        }
  
        spin_lock_irqsave(&gp->lock, flags);
---- kernel-maemo-2.6.28.test.orig/drivers/net/tun.c
-+++ kernel-maemo-2.6.28.test/drivers/net/tun.c
+--- kernel-power-2.6.28.orig/drivers/net/tun.c
++++ kernel-power-2.6.28/drivers/net/tun.c
 @@ -157,10 +157,16 @@
  
        nexact = n;
  
        /* For ALLMULTI just set the mask to all ones.
         * This overrides the mask populated above. */
---- kernel-maemo-2.6.28.test.orig/drivers/net/usb/asix.c
-+++ kernel-maemo-2.6.28.test/drivers/net/usb/asix.c
+--- kernel-power-2.6.28.orig/drivers/net/usb/asix.c
++++ kernel-power-2.6.28/drivers/net/usb/asix.c
 @@ -1450,6 +1450,14 @@
        // Cables-to-Go USB Ethernet Adapter
        USB_DEVICE(0x0b95, 0x772a),
  },
        { },            // END
  };
---- kernel-maemo-2.6.28.test.orig/drivers/net/usb/cdc_ether.c
-+++ kernel-maemo-2.6.28.test/drivers/net/usb/cdc_ether.c
+--- kernel-power-2.6.28.orig/drivers/net/usb/cdc_ether.c
++++ kernel-power-2.6.28/drivers/net/usb/cdc_ether.c
 @@ -559,6 +559,11 @@
        USB_INTERFACE_INFO(USB_CLASS_COMM, USB_CDC_SUBCLASS_ETHERNET,
                        USB_CDC_PROTO_NONE),
  },
        { },            // END
  };
---- kernel-maemo-2.6.28.test.orig/drivers/net/usb/zaurus.c
-+++ kernel-maemo-2.6.28.test/drivers/net/usb/zaurus.c
+--- kernel-power-2.6.28.orig/drivers/net/usb/zaurus.c
++++ kernel-power-2.6.28/drivers/net/usb/zaurus.c
 @@ -341,6 +341,11 @@
        USB_INTERFACE_INFO(USB_CLASS_COMM, USB_CDC_SUBCLASS_MDLM,
                        USB_CDC_PROTO_NONE),
  },
  
  /* Olympus has some models with a Zaurus-compatible option.
---- kernel-maemo-2.6.28.test.orig/drivers/net/virtio_net.c
-+++ kernel-maemo-2.6.28.test/drivers/net/virtio_net.c
+--- kernel-power-2.6.28.orig/drivers/net/virtio_net.c
++++ kernel-power-2.6.28/drivers/net/virtio_net.c
 @@ -24,6 +24,7 @@
  #include <linux/virtio.h>
  #include <linux/virtio_net.h>
  
  struct virtnet_info
  {
---- kernel-maemo-2.6.28.test.orig/drivers/net/wireless/ath5k/base.c
-+++ kernel-maemo-2.6.28.test/drivers/net/wireless/ath5k/base.c
+--- kernel-power-2.6.28.orig/drivers/net/wireless/ath5k/base.c
++++ kernel-power-2.6.28/drivers/net/wireless/ath5k/base.c
 @@ -2157,7 +2157,8 @@
  
        if (sc->opmode == NL80211_IFTYPE_STATION) {
  
        /* Set filters */
        ath5k_hw_set_rx_filter(ah,rfilt);
---- kernel-maemo-2.6.28.test.orig/drivers/net/wireless/ath5k/phy.c
-+++ kernel-maemo-2.6.28.test/drivers/net/wireless/ath5k/phy.c
+--- kernel-power-2.6.28.orig/drivers/net/wireless/ath5k/phy.c
++++ kernel-power-2.6.28/drivers/net/wireless/ath5k/phy.c
 @@ -2195,9 +2195,7 @@
                return ret;
        }
  
        /*
         * Re-enable RX/TX and beacons
---- kernel-maemo-2.6.28.test.orig/drivers/net/wireless/ath5k/reset.c
-+++ kernel-maemo-2.6.28.test/drivers/net/wireless/ath5k/reset.c
+--- kernel-power-2.6.28.orig/drivers/net/wireless/ath5k/reset.c
++++ kernel-power-2.6.28/drivers/net/wireless/ath5k/reset.c
 @@ -842,9 +842,7 @@
         *
         * XXX: Find an interval that's OK for all cards...
  
        /*
         * Reset queues and start beacon timers at the end of the reset routine
---- kernel-maemo-2.6.28.test.orig/drivers/net/wireless/ath9k/ath9k.h
-+++ kernel-maemo-2.6.28.test/drivers/net/wireless/ath9k/ath9k.h
+--- kernel-power-2.6.28.orig/drivers/net/wireless/ath9k/ath9k.h
++++ kernel-power-2.6.28/drivers/net/wireless/ath9k/ath9k.h
 @@ -590,8 +590,8 @@
        u8 iso[3];
  };
  
  #define SM(_v, _f)  (((_v) << _f##_S) & _f)
  #define MS(_v, _f)  (((_v) & _f) >> _f##_S)
---- kernel-maemo-2.6.28.test.orig/drivers/net/wireless/ath9k/core.c
-+++ kernel-maemo-2.6.28.test/drivers/net/wireless/ath9k/core.c
+--- kernel-power-2.6.28.orig/drivers/net/wireless/ath9k/core.c
++++ kernel-power-2.6.28/drivers/net/wireless/ath9k/core.c
 @@ -1089,6 +1089,7 @@
        sc->sc_cachelsz = csz << 2;     /* convert to bytes */
  
  
        ah = ath9k_hw_attach(devid, sc, sc->mem, &status);
        if (ah == NULL) {
---- kernel-maemo-2.6.28.test.orig/drivers/net/wireless/ath9k/core.h
-+++ kernel-maemo-2.6.28.test/drivers/net/wireless/ath9k/core.h
+--- kernel-power-2.6.28.orig/drivers/net/wireless/ath9k/core.h
++++ kernel-power-2.6.28/drivers/net/wireless/ath9k/core.h
 @@ -1040,6 +1040,7 @@
        spinlock_t sc_rxbuflock;
        spinlock_t sc_txbuflock;
 +}
 +
  #endif /* CORE_H */
---- kernel-maemo-2.6.28.test.orig/drivers/net/wireless/ath9k/hw.c
-+++ kernel-maemo-2.6.28.test/drivers/net/wireless/ath9k/hw.c
+--- kernel-power-2.6.28.orig/drivers/net/wireless/ath9k/hw.c
++++ kernel-power-2.6.28/drivers/net/wireless/ath9k/hw.c
 @@ -346,6 +346,25 @@
        }
  
                        ah->ah_config.serialize_regmode =
                                SER_REG_MODE_ON;
                } else {
---- kernel-maemo-2.6.28.test.orig/drivers/net/wireless/ath9k/recv.c
-+++ kernel-maemo-2.6.28.test/drivers/net/wireless/ath9k/recv.c
+--- kernel-power-2.6.28.orig/drivers/net/wireless/ath9k/recv.c
++++ kernel-power-2.6.28/drivers/net/wireless/ath9k/recv.c
 @@ -627,9 +627,8 @@
                rfilt &= ~ATH9K_RX_FILTER_UCAST;
        }
                rfilt |= ATH9K_RX_FILTER_BEACON;
  
        /* If in HOSTAP mode, want to enable reception of PSPOLL frames
---- kernel-maemo-2.6.28.test.orig/drivers/net/wireless/b43/xmit.c
-+++ kernel-maemo-2.6.28.test/drivers/net/wireless/b43/xmit.c
+--- kernel-power-2.6.28.orig/drivers/net/wireless/b43/xmit.c
++++ kernel-power-2.6.28/drivers/net/wireless/b43/xmit.c
 @@ -51,7 +51,7 @@
  }
  
  {
        int base = aphy ? 0 : 4;
  
---- kernel-maemo-2.6.28.test.orig/drivers/net/wireless/ipw2200.c
-+++ kernel-maemo-2.6.28.test/drivers/net/wireless/ipw2200.c
+--- kernel-power-2.6.28.orig/drivers/net/wireless/ipw2200.c
++++ kernel-power-2.6.28/drivers/net/wireless/ipw2200.c
 @@ -4347,7 +4347,8 @@
                return;
        }
        scan.dwell_time[IPW_SCAN_ACTIVE_DIRECT_SCAN] = cpu_to_le16(20);
  
  #ifdef CONFIG_IPW2200_MONITOR
---- kernel-maemo-2.6.28.test.orig/drivers/net/wireless/ipw2200.h
-+++ kernel-maemo-2.6.28.test/drivers/net/wireless/ipw2200.h
+--- kernel-power-2.6.28.orig/drivers/net/wireless/ipw2200.h
++++ kernel-power-2.6.28/drivers/net/wireless/ipw2200.h
 @@ -244,6 +244,7 @@
  #define HOST_NOTIFICATION_S36_MEASUREMENT_REFUSED       31
  
  #define IPW_MB_ROAMING_THRESHOLD_MIN                    1
  #define IPW_MB_ROAMING_THRESHOLD_DEFAULT                8
  #define IPW_MB_ROAMING_THRESHOLD_MAX                    30
---- kernel-maemo-2.6.28.test.orig/drivers/net/wireless/iwlwifi/iwl-3945-rs.c
-+++ kernel-maemo-2.6.28.test/drivers/net/wireless/iwlwifi/iwl-3945-rs.c
+--- kernel-power-2.6.28.orig/drivers/net/wireless/iwlwifi/iwl-3945-rs.c
++++ kernel-power-2.6.28/drivers/net/wireless/iwlwifi/iwl-3945-rs.c
 @@ -647,12 +647,16 @@
        s8 scale_action = 0;
        unsigned long flags;
        index = min(rs_sta->last_txrate_idx & 0xffff, IWL_RATE_COUNT - 1);
  
        if (sband->band == IEEE80211_BAND_5GHZ)
---- kernel-maemo-2.6.28.test.orig/drivers/net/wireless/iwlwifi/iwl-agn-rs.c
-+++ kernel-maemo-2.6.28.test/drivers/net/wireless/iwlwifi/iwl-agn-rs.c
+--- kernel-power-2.6.28.orig/drivers/net/wireless/iwlwifi/iwl-agn-rs.c
++++ kernel-power-2.6.28/drivers/net/wireless/iwlwifi/iwl-agn-rs.c
 @@ -951,7 +951,8 @@
        }
  
                return;
        }
  
---- kernel-maemo-2.6.28.test.orig/drivers/net/wireless/iwlwifi/iwl-agn.c
-+++ kernel-maemo-2.6.28.test/drivers/net/wireless/iwlwifi/iwl-agn.c
+--- kernel-power-2.6.28.orig/drivers/net/wireless/iwlwifi/iwl-agn.c
++++ kernel-power-2.6.28/drivers/net/wireless/iwlwifi/iwl-agn.c
 @@ -1334,16 +1334,6 @@
        priv->cfg->ops->lib->rx_handler_setup(priv);
  }
                                count = 0;
                        }
                }
---- kernel-maemo-2.6.28.test.orig/drivers/net/wireless/iwlwifi/iwl-rx.c
-+++ kernel-maemo-2.6.28.test/drivers/net/wireless/iwlwifi/iwl-rx.c
+--- kernel-power-2.6.28.orig/drivers/net/wireless/iwlwifi/iwl-rx.c
++++ kernel-power-2.6.28/drivers/net/wireless/iwlwifi/iwl-rx.c
 @@ -245,25 +245,31 @@
        struct list_head *element;
        struct iwl_rx_mem_buffer *rxb;
  
  void iwl_rx_replenish(struct iwl_priv *priv)
  {
---- kernel-maemo-2.6.28.test.orig/drivers/net/wireless/orinoco.c
-+++ kernel-maemo-2.6.28.test/drivers/net/wireless/orinoco.c
+--- kernel-power-2.6.28.orig/drivers/net/wireless/orinoco.c
++++ kernel-power-2.6.28/drivers/net/wireless/orinoco.c
 @@ -4938,32 +4938,29 @@
        struct orinoco_private *priv = netdev_priv(dev);
        u8 *buf;
  }
  
  static int orinoco_ioctl_get_genie(struct net_device *dev,
---- kernel-maemo-2.6.28.test.orig/drivers/net/wireless/p54/p54common.c
-+++ kernel-maemo-2.6.28.test/drivers/net/wireless/p54/p54common.c
+--- kernel-power-2.6.28.orig/drivers/net/wireless/p54/p54common.c
++++ kernel-power-2.6.28/drivers/net/wireless/p54/p54common.c
 @@ -741,17 +741,19 @@
  int p54_read_eeprom(struct ieee80211_hw *dev)
  {
        kfree(eeprom);
  
        return ret;
---- kernel-maemo-2.6.28.test.orig/drivers/net/wireless/p54/p54usb.c
-+++ kernel-maemo-2.6.28.test/drivers/net/wireless/p54/p54usb.c
+--- kernel-power-2.6.28.orig/drivers/net/wireless/p54/p54usb.c
++++ kernel-power-2.6.28/drivers/net/wireless/p54/p54usb.c
 @@ -54,6 +54,7 @@
        {USB_DEVICE(0x050d, 0x7050)},   /* Belkin F5D7050 ver 1000 */
        {USB_DEVICE(0x0572, 0x2000)},   /* Cohiba Proto board */
  
        usb_get_dev(udev);
  
---- kernel-maemo-2.6.28.test.orig/drivers/net/wireless/p54/p54usb.h
-+++ kernel-maemo-2.6.28.test/drivers/net/wireless/p54/p54usb.h
+--- kernel-power-2.6.28.orig/drivers/net/wireless/p54/p54usb.h
++++ kernel-power-2.6.28/drivers/net/wireless/p54/p54usb.h
 @@ -133,6 +133,7 @@
  
        spinlock_t lock;
  };
  
  #endif /* P54USB_H */
---- kernel-maemo-2.6.28.test.orig/drivers/net/wireless/rt2x00/rt73usb.c
-+++ kernel-maemo-2.6.28.test/drivers/net/wireless/rt2x00/rt73usb.c
+--- kernel-power-2.6.28.orig/drivers/net/wireless/rt2x00/rt73usb.c
++++ kernel-power-2.6.28/drivers/net/wireless/rt2x00/rt73usb.c
 @@ -2434,6 +2434,7 @@
        /* Linksys */
        { USB_DEVICE(0x13b1, 0x0020), USB_DEVICE_DATA(&rt73usb_ops) },
        /* MSI */
        { USB_DEVICE(0x0db0, 0x6877), USB_DEVICE_DATA(&rt73usb_ops) },
        { USB_DEVICE(0x0db0, 0x6874), USB_DEVICE_DATA(&rt73usb_ops) },
---- kernel-maemo-2.6.28.test.orig/drivers/net/wireless/rtl8187_dev.c
-+++ kernel-maemo-2.6.28.test/drivers/net/wireless/rtl8187_dev.c
+--- kernel-power-2.6.28.orig/drivers/net/wireless/rtl8187_dev.c
++++ kernel-power-2.6.28/drivers/net/wireless/rtl8187_dev.c
 @@ -40,6 +40,10 @@
        {USB_DEVICE(0x0bda, 0x8189), .driver_info = DEVICE_RTL8187B},
        {USB_DEVICE(0x0bda, 0x8197), .driver_info = DEVICE_RTL8187B},
        rc = usb_submit_urb(urb, GFP_ATOMIC);
        if (rc < 0) {
                usb_free_urb(urb);
---- kernel-maemo-2.6.28.test.orig/drivers/net/wireless/rtl8187_rtl8225.c
-+++ kernel-maemo-2.6.28.test/drivers/net/wireless/rtl8187_rtl8225.c
+--- kernel-power-2.6.28.orig/drivers/net/wireless/rtl8187_rtl8225.c
++++ kernel-power-2.6.28/drivers/net/wireless/rtl8187_rtl8225.c
 @@ -287,7 +287,10 @@
        ofdm_power = priv->channels[channel - 1].hw_value >> 4;
  
        ofdm_power += priv->txpwr_base >> 4;
        ofdm_power = min(ofdm_power, (u8)35);
  
---- kernel-maemo-2.6.28.test.orig/drivers/net/wireless/zd1211rw/zd_rf.c
-+++ kernel-maemo-2.6.28.test/drivers/net/wireless/zd1211rw/zd_rf.c
+--- kernel-power-2.6.28.orig/drivers/net/wireless/zd1211rw/zd_rf.c
++++ kernel-power-2.6.28/drivers/net/wireless/zd1211rw/zd_rf.c
 @@ -86,6 +86,7 @@
        case AL7230B_RF:
                r = zd_rf_init_al7230b(rf);
        case UW2453_RF:
                r = zd_rf_init_uw2453(rf);
                break;
---- kernel-maemo-2.6.28.test.orig/drivers/net/wireless/zd1211rw/zd_usb.c
-+++ kernel-maemo-2.6.28.test/drivers/net/wireless/zd1211rw/zd_usb.c
+--- kernel-power-2.6.28.orig/drivers/net/wireless/zd1211rw/zd_usb.c
++++ kernel-power-2.6.28/drivers/net/wireless/zd1211rw/zd_usb.c
 @@ -37,6 +37,7 @@
  static struct usb_device_id usb_ids[] = {
        /* ZD1211 */
        { USB_DEVICE(0x07b8, 0x6001), .driver_info = DEVICE_ZD1211 },
        { USB_DEVICE(0x126f, 0xa006), .driver_info = DEVICE_ZD1211 },
        { USB_DEVICE(0x6891, 0xa727), .driver_info = DEVICE_ZD1211 },
---- kernel-maemo-2.6.28.test.orig/drivers/parport/parport_serial.c
-+++ kernel-maemo-2.6.28.test/drivers/parport/parport_serial.c
+--- kernel-power-2.6.28.orig/drivers/parport/parport_serial.c
++++ kernel-power-2.6.28/drivers/parport/parport_serial.c
 @@ -64,6 +64,11 @@
  
  static int __devinit netmos_parallel_init(struct pci_dev *dev, struct parport_pc_pci *card, int autoirq, int autodma)
        /*
         * Netmos uses the subdevice ID to indicate the number of parallel
         * and serial ports.  The form is 0x00PS, where <P> is the number of
---- kernel-maemo-2.6.28.test.orig/drivers/pci/hotplug/pciehp_core.c
-+++ kernel-maemo-2.6.28.test/drivers/pci/hotplug/pciehp_core.c
+--- kernel-power-2.6.28.orig/drivers/pci/hotplug/pciehp_core.c
++++ kernel-power-2.6.28/drivers/pci/hotplug/pciehp_core.c
 @@ -126,8 +126,10 @@
        mutex_lock(&slot->ctrl->crit_sect);
  
  
        /* see what our current state is */
        retval = get_lock_status(hotplug_slot, &value);
---- kernel-maemo-2.6.28.test.orig/drivers/pci/intel-iommu.c
-+++ kernel-maemo-2.6.28.test/drivers/pci/intel-iommu.c
+--- kernel-power-2.6.28.orig/drivers/pci/intel-iommu.c
++++ kernel-power-2.6.28/drivers/pci/intel-iommu.c
 @@ -71,6 +71,8 @@
  /* bitmap for indexing intel_iommus */
  static int g_num_of_iommus;
 +}
 +
 +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x2a40, quirk_iommu_rwbf);
---- kernel-maemo-2.6.28.test.orig/drivers/pci/msi.c
-+++ kernel-maemo-2.6.28.test/drivers/pci/msi.c
+--- kernel-power-2.6.28.orig/drivers/pci/msi.c
++++ kernel-power-2.6.28/drivers/pci/msi.c
 @@ -378,21 +378,19 @@
        entry->msi_attrib.masked = 1;
        entry->msi_attrib.default_irq = dev->irq;       /* Save IOAPIC IRQ */
                entry->msi_attrib.maskbits_mask = temp;
        }
        list_add_tail(&entry->list, &dev->msi_list);
---- kernel-maemo-2.6.28.test.orig/drivers/pci/pci-sysfs.c
-+++ kernel-maemo-2.6.28.test/drivers/pci/pci-sysfs.c
+--- kernel-power-2.6.28.orig/drivers/pci/pci-sysfs.c
++++ kernel-power-2.6.28/drivers/pci/pci-sysfs.c
 @@ -777,8 +777,8 @@
                return -EINVAL;
        
                
        if (off >= size)
                count = 0;
---- kernel-maemo-2.6.28.test.orig/drivers/pci/pcie/aer/aerdrv_core.c
-+++ kernel-maemo-2.6.28.test/drivers/pci/pcie/aer/aerdrv_core.c
+--- kernel-power-2.6.28.orig/drivers/pci/pcie/aer/aerdrv_core.c
++++ kernel-power-2.6.28/drivers/pci/pcie/aer/aerdrv_core.c
 @@ -108,6 +108,34 @@
  }
  #endif  /*  0  */
        pos = pci_find_ext_capability(pdev, PCI_EXT_CAP_ID_ERR);
        /* Disable Root's interrupt in response to error messages */
        pci_write_config_dword(pdev, pos + PCI_ERR_ROOT_COMMAND, 0);
---- kernel-maemo-2.6.28.test.orig/drivers/pci/pcie/aspm.c
-+++ kernel-maemo-2.6.28.test/drivers/pci/pcie/aspm.c
+--- kernel-power-2.6.28.orig/drivers/pci/pcie/aspm.c
++++ kernel-power-2.6.28/drivers/pci/pcie/aspm.c
 @@ -33,6 +33,11 @@
  struct pcie_link_state {
        struct list_head sibiling;
        /* Clock PM is for endpoint device */
  
        free_link_state(parent);
---- kernel-maemo-2.6.28.test.orig/drivers/pci/pcie/portdrv_pci.c
-+++ kernel-maemo-2.6.28.test/drivers/pci/pcie/portdrv_pci.c
+--- kernel-power-2.6.28.orig/drivers/pci/pcie/portdrv_pci.c
++++ kernel-power-2.6.28/drivers/pci/pcie/portdrv_pci.c
 @@ -101,14 +101,13 @@
  
        pcie_portdrv_save_config(dev);
        kfree(pci_get_drvdata(dev));
  }
  
---- kernel-maemo-2.6.28.test.orig/drivers/pci/quirks.c
-+++ kernel-maemo-2.6.28.test/drivers/pci/quirks.c
+--- kernel-power-2.6.28.orig/drivers/pci/quirks.c
++++ kernel-power-2.6.28/drivers/pci/quirks.c
 @@ -23,6 +23,7 @@
  #include <linux/acpi.h>
  #include <linux/kallsyms.h>
  /* The P5N32-SLI Premium motherboard from Asus has a problem with msi
   * for the MCP55 NIC. It is not yet determined whether the msi problem
   * also affects other devices. As for now, turn off msi for this device.
---- kernel-maemo-2.6.28.test.orig/drivers/pci/rom.c
-+++ kernel-maemo-2.6.28.test/drivers/pci/rom.c
+--- kernel-power-2.6.28.orig/drivers/pci/rom.c
++++ kernel-power-2.6.28/drivers/pci/rom.c
 @@ -63,7 +63,7 @@
   * The PCI window size could be much larger than the
   * actual image size.
        return rom;
  }
  
---- kernel-maemo-2.6.28.test.orig/drivers/pci/syscall.c
-+++ kernel-maemo-2.6.28.test/drivers/pci/syscall.c
+--- kernel-power-2.6.28.orig/drivers/pci/syscall.c
++++ kernel-power-2.6.28/drivers/pci/syscall.c
 @@ -14,10 +14,8 @@
  #include <asm/uaccess.h>
  #include "pci.h"
  {
        struct pci_dev *dev;
        u8 byte;
---- kernel-maemo-2.6.28.test.orig/drivers/scsi/eata.c
-+++ kernel-maemo-2.6.28.test/drivers/scsi/eata.c
+--- kernel-power-2.6.28.orig/drivers/scsi/eata.c
++++ kernel-power-2.6.28/drivers/scsi/eata.c
 @@ -1626,8 +1626,15 @@
  
        cpp->sense_len = SCSI_SENSE_BUFFERSIZE;
  
        if (!DEV2H(cpp->data_len))
                pci_dir = PCI_DMA_BIDIRECTIONAL;
---- kernel-maemo-2.6.28.test.orig/drivers/scsi/hptiop.c
-+++ kernel-maemo-2.6.28.test/drivers/scsi/hptiop.c
+--- kernel-power-2.6.28.orig/drivers/scsi/hptiop.c
++++ kernel-power-2.6.28/drivers/scsi/hptiop.c
 @@ -1251,6 +1251,7 @@
        { PCI_VDEVICE(TTI, 0x3530), (kernel_ulong_t)&hptiop_itl_ops },
        { PCI_VDEVICE(TTI, 0x3560), (kernel_ulong_t)&hptiop_itl_ops },
        { PCI_VDEVICE(TTI, 0x4210), (kernel_ulong_t)&hptiop_itl_ops },
        { PCI_VDEVICE(TTI, 0x4211), (kernel_ulong_t)&hptiop_itl_ops },
        { PCI_VDEVICE(TTI, 0x4310), (kernel_ulong_t)&hptiop_itl_ops },
---- kernel-maemo-2.6.28.test.orig/drivers/scsi/ibmvscsi/ibmvfc.c
-+++ kernel-maemo-2.6.28.test/drivers/scsi/ibmvscsi/ibmvfc.c
+--- kernel-power-2.6.28.orig/drivers/scsi/ibmvscsi/ibmvfc.c
++++ kernel-power-2.6.28/drivers/scsi/ibmvscsi/ibmvfc.c
 @@ -566,7 +566,7 @@
        struct ibmvfc_target *tgt;
  
                break;
        case IBMVFC_HOST_ACTION_QUERY:
                list_for_each_entry(tgt, &vhost->targets, queue)
---- kernel-maemo-2.6.28.test.orig/drivers/scsi/ibmvscsi/ibmvfc.h
-+++ kernel-maemo-2.6.28.test/drivers/scsi/ibmvscsi/ibmvfc.h
+--- kernel-power-2.6.28.orig/drivers/scsi/ibmvscsi/ibmvfc.h
++++ kernel-power-2.6.28/drivers/scsi/ibmvscsi/ibmvfc.h
 @@ -33,7 +33,7 @@
  #define IBMVFC_DRIVER_DATE            "(August 14, 2008)"
  
        int events_to_log;
  #define IBMVFC_AE_LINKUP      0x0001
  #define IBMVFC_AE_LINKDOWN    0x0002
---- kernel-maemo-2.6.28.test.orig/drivers/scsi/libiscsi.c
-+++ kernel-maemo-2.6.28.test/drivers/scsi/libiscsi.c
+--- kernel-power-2.6.28.orig/drivers/scsi/libiscsi.c
++++ kernel-power-2.6.28/drivers/scsi/libiscsi.c
 @@ -1862,12 +1862,14 @@
                num_arrays++;
        q->pool = kzalloc(num_arrays * max * sizeof(void*), GFP_KERNEL);
  }
  EXPORT_SYMBOL_GPL(iscsi_pool_free);
  
---- kernel-maemo-2.6.28.test.orig/drivers/scsi/mvsas.c
-+++ kernel-maemo-2.6.28.test/drivers/scsi/mvsas.c
+--- kernel-power-2.6.28.orig/drivers/scsi/mvsas.c
++++ kernel-power-2.6.28/drivers/scsi/mvsas.c
 @@ -2959,7 +2959,7 @@
  
        /* enable auto port detection */
        /* init and reset phys */
        for (i = 0; i < mvi->chip->n_phy; i++) {
                u32 lo = be32_to_cpu(*(u32 *)&mvi->sas_addr[4]);
---- kernel-maemo-2.6.28.test.orig/drivers/scsi/pcmcia/aha152x_stub.c
-+++ kernel-maemo-2.6.28.test/drivers/scsi/pcmcia/aha152x_stub.c
+--- kernel-power-2.6.28.orig/drivers/scsi/pcmcia/aha152x_stub.c
++++ kernel-power-2.6.28/drivers/scsi/pcmcia/aha152x_stub.c
 @@ -114,7 +114,7 @@
      link->io.NumPorts1 = 0x20;
      link->io.Attributes1 = IO_DATA_PATH_WIDTH_AUTO;
      link->irq.IRQInfo1 = IRQ_LEVEL_ID;
      link->conf.Attributes = CONF_ENABLE_IRQ;
      link->conf.IntType = INT_MEMORY_AND_IO;
---- kernel-maemo-2.6.28.test.orig/drivers/scsi/sd.c
-+++ kernel-maemo-2.6.28.test/drivers/scsi/sd.c
+--- kernel-power-2.6.28.orig/drivers/scsi/sd.c
++++ kernel-power-2.6.28/drivers/scsi/sd.c
 @@ -106,6 +106,7 @@
  static void sd_print_sense_hdr(struct scsi_disk *, struct scsi_sense_hdr *);
  static void sd_print_result(struct scsi_disk *, int);
  
        disk->private_data = NULL;
        put_disk(disk);
---- kernel-maemo-2.6.28.test.orig/drivers/scsi/sg.c
-+++ kernel-maemo-2.6.28.test/drivers/scsi/sg.c
+--- kernel-power-2.6.28.orig/drivers/scsi/sg.c
++++ kernel-power-2.6.28/drivers/scsi/sg.c
 @@ -101,6 +101,7 @@
  #define SG_SECTOR_MSK (SG_SECTOR_SZ - 1)
  
        return 0;
  }
  
---- kernel-maemo-2.6.28.test.orig/drivers/serial/8250.c
-+++ kernel-maemo-2.6.28.test/drivers/serial/8250.c
+--- kernel-power-2.6.28.orig/drivers/serial/8250.c
++++ kernel-power-2.6.28/drivers/serial/8250.c
 @@ -2028,6 +2028,20 @@
  
        serial8250_set_mctrl(&up->port, up->port.mctrl);
        spin_unlock_irqrestore(&up->port.lock, flags);
  
        /*
---- kernel-maemo-2.6.28.test.orig/drivers/serial/8250_pci.c
-+++ kernel-maemo-2.6.28.test/drivers/serial/8250_pci.c
+--- kernel-power-2.6.28.orig/drivers/serial/8250_pci.c
++++ kernel-power-2.6.28/drivers/serial/8250_pci.c
 @@ -758,6 +758,21 @@
        return setup_port(priv, port, bar, offset, board->reg_shift);
  }
                PCI_ANY_ID, PCI_ANY_ID, 0, 0,
                pbn_b0_2_1130000 },
        {       PCI_VENDOR_ID_OXSEMI, PCI_DEVICE_ID_OXSEMI_16PCI954,
---- kernel-maemo-2.6.28.test.orig/drivers/serial/jsm/jsm_driver.c
-+++ kernel-maemo-2.6.28.test/drivers/serial/jsm/jsm_driver.c
+--- kernel-power-2.6.28.orig/drivers/serial/jsm/jsm_driver.c
++++ kernel-power-2.6.28/drivers/serial/jsm/jsm_driver.c
 @@ -84,6 +84,8 @@
        brd->pci_dev = pdev;
        if (pdev->device == PCIE_DEVICE_ID_NEO_4_IBM)
        { 0, }
  };
  MODULE_DEVICE_TABLE(pci, jsm_pci_tbl);
---- kernel-maemo-2.6.28.test.orig/drivers/serial/jsm/jsm_tty.c
-+++ kernel-maemo-2.6.28.test/drivers/serial/jsm/jsm_tty.c
+--- kernel-power-2.6.28.orig/drivers/serial/jsm/jsm_tty.c
++++ kernel-power-2.6.28/drivers/serial/jsm/jsm_tty.c
 @@ -161,6 +161,11 @@
        channel->ch_bd->bd_ops->disable_receiver(channel);
  }
        .break_ctl      = jsm_tty_break,
        .startup        = jsm_tty_open,
        .shutdown       = jsm_tty_close,
---- kernel-maemo-2.6.28.test.orig/drivers/spi/spi.c
-+++ kernel-maemo-2.6.28.test/drivers/spi/spi.c
+--- kernel-power-2.6.28.orig/drivers/spi/spi.c
++++ kernel-power-2.6.28/drivers/spi/spi.c
 @@ -660,7 +660,7 @@
  
        int                     status;
                mutex_unlock(&lock);
        else
                kfree(local_buf);
---- kernel-maemo-2.6.28.test.orig/drivers/usb/class/cdc-acm.c
-+++ kernel-maemo-2.6.28.test/drivers/usb/class/cdc-acm.c
+--- kernel-power-2.6.28.orig/drivers/usb/class/cdc-acm.c
++++ kernel-power-2.6.28/drivers/usb/class/cdc-acm.c
 @@ -1370,6 +1370,8 @@
        { USB_DEVICE(0x0572, 0x1321), /* Conexant USB MODEM CX93010 */
        .driver_info = NO_UNION_NORMAL, /* has no union descriptor */
  
        /* control interfaces with various AT-command sets */
        { USB_INTERFACE_INFO(USB_CLASS_COMM, USB_CDC_SUBCLASS_ACM,
---- kernel-maemo-2.6.28.test.orig/drivers/usb/class/cdc-wdm.c
-+++ kernel-maemo-2.6.28.test/drivers/usb/class/cdc-wdm.c
+--- kernel-power-2.6.28.orig/drivers/usb/class/cdc-wdm.c
++++ kernel-power-2.6.28/drivers/usb/class/cdc-wdm.c
 @@ -652,7 +652,7 @@
  
        iface = &intf->altsetting[0];
                rv = -EINVAL;
                goto err;
        }
---- kernel-maemo-2.6.28.test.orig/drivers/usb/class/usbtmc.c
-+++ kernel-maemo-2.6.28.test/drivers/usb/class/usbtmc.c
+--- kernel-power-2.6.28.orig/drivers/usb/class/usbtmc.c
++++ kernel-power-2.6.28/drivers/usb/class/usbtmc.c
 @@ -49,6 +49,7 @@
  
  static struct usb_device_id usbtmc_devices[] = {
                goto exit;
        }
  
---- kernel-maemo-2.6.28.test.orig/drivers/usb/core/devio.c
-+++ kernel-maemo-2.6.28.test/drivers/usb/core/devio.c
+--- kernel-power-2.6.28.orig/drivers/usb/core/devio.c
++++ kernel-power-2.6.28/drivers/usb/core/devio.c
 @@ -359,11 +359,6 @@
                spin_lock_irqsave(&ps->lock, flags);
        }
        class_destroy(usb_classdev_class);
  #endif
        cdev_del(&usb_device_cdev);
---- kernel-maemo-2.6.28.test.orig/drivers/usb/core/driver.c
-+++ kernel-maemo-2.6.28.test/drivers/usb/core/driver.c
+--- kernel-power-2.6.28.orig/drivers/usb/core/driver.c
++++ kernel-power-2.6.28/drivers/usb/core/driver.c
 @@ -269,7 +269,7 @@
         * supports "soft" unbinding.
         */
                usb_set_interface(udev, intf->altsetting[0].
                                desc.bInterfaceNumber, 0);
        else
---- kernel-maemo-2.6.28.test.orig/drivers/usb/core/hub.c
-+++ kernel-maemo-2.6.28.test/drivers/usb/core/hub.c
+--- kernel-power-2.6.28.orig/drivers/usb/core/hub.c
++++ kernel-power-2.6.28/drivers/usb/core/hub.c
 @@ -2383,9 +2383,9 @@
  
  void usb_ep0_reinit(struct usb_device *udev)
  }
  EXPORT_SYMBOL_GPL(usb_ep0_reinit);
  
---- kernel-maemo-2.6.28.test.orig/drivers/usb/core/inode.c
-+++ kernel-maemo-2.6.28.test/drivers/usb/core/inode.c
+--- kernel-power-2.6.28.orig/drivers/usb/core/inode.c
++++ kernel-power-2.6.28/drivers/usb/core/inode.c
 @@ -718,7 +718,6 @@
                fs_remove_file (dev->usbfs_dentry);
                dev->usbfs_dentry = NULL;
  }
  
  static int usbfs_notify(struct notifier_block *self, unsigned long action, void *dev)
---- kernel-maemo-2.6.28.test.orig/drivers/usb/core/message.c
-+++ kernel-maemo-2.6.28.test/drivers/usb/core/message.c
+--- kernel-power-2.6.28.orig/drivers/usb/core/message.c
++++ kernel-power-2.6.28/drivers/usb/core/message.c
 @@ -651,7 +651,7 @@
                if (result <= 0 && result != -ETIMEDOUT)
                        continue;
                cp->string = usb_cache_string(dev, cp->desc.iConfiguration);
  
        /* Now that all the interfaces are set up, register them
---- kernel-maemo-2.6.28.test.orig/drivers/usb/core/quirks.c
-+++ kernel-maemo-2.6.28.test/drivers/usb/core/quirks.c
+--- kernel-power-2.6.28.orig/drivers/usb/core/quirks.c
++++ kernel-power-2.6.28/drivers/usb/core/quirks.c
 @@ -54,6 +54,10 @@
        { USB_DEVICE(0x0638, 0x0a13), .driver_info =
          USB_QUIRK_STRING_FETCH_255 },
        /* M-Systems Flash Disk Pioneers */
        { USB_DEVICE(0x08ec, 0x1000), .driver_info = USB_QUIRK_RESET_RESUME },
  
---- kernel-maemo-2.6.28.test.orig/drivers/usb/core/sysfs.c
-+++ kernel-maemo-2.6.28.test/drivers/usb/core/sysfs.c
+--- kernel-power-2.6.28.orig/drivers/usb/core/sysfs.c
++++ kernel-power-2.6.28/drivers/usb/core/sysfs.c
 @@ -13,6 +13,7 @@
  #include <linux/kernel.h>
  #include <linux/string.h>
                alt->string = usb_cache_string(udev, alt->desc.iInterface);
        if (alt->string)
                retval = device_create_file(&intf->dev, &dev_attr_interface);
---- kernel-maemo-2.6.28.test.orig/drivers/usb/core/usb.c
-+++ kernel-maemo-2.6.28.test/drivers/usb/core/usb.c
+--- kernel-power-2.6.28.orig/drivers/usb/core/usb.c
++++ kernel-power-2.6.28/drivers/usb/core/usb.c
 @@ -362,7 +362,7 @@
        dev->ep0.desc.bLength = USB_DT_ENDPOINT_SIZE;
        dev->ep0.desc.bDescriptorType = USB_DT_ENDPOINT;
        dev->can_submit = 1;
  
        /* Save readable and stable topology id, distinguishing devices
---- kernel-maemo-2.6.28.test.orig/drivers/usb/core/usb.h
-+++ kernel-maemo-2.6.28.test/drivers/usb/core/usb.h
+--- kernel-power-2.6.28.orig/drivers/usb/core/usb.h
++++ kernel-power-2.6.28/drivers/usb/core/usb.h
 @@ -10,10 +10,13 @@
  extern void usb_remove_ep_files(struct usb_host_endpoint *endpoint);
  
  
  extern int usb_devio_init(void);
  extern void usb_devio_cleanup(void);
---- kernel-maemo-2.6.28.test.orig/drivers/usb/gadget/f_rndis.c
-+++ kernel-maemo-2.6.28.test/drivers/usb/gadget/f_rndis.c
+--- kernel-power-2.6.28.orig/drivers/usb/gadget/f_rndis.c
++++ kernel-power-2.6.28/drivers/usb/gadget/f_rndis.c
 @@ -437,7 +437,7 @@
                DBG(cdev, "rndis req%02x.%02x v%04x i%04x l%d\n",
                        ctrl->bRequestType, ctrl->bRequest,
                req->length = value;
                value = usb_ep_queue(cdev->gadget->ep0, req, GFP_ATOMIC);
                if (value < 0)
---- kernel-maemo-2.6.28.test.orig/drivers/usb/gadget/u_ether.c
-+++ kernel-maemo-2.6.28.test/drivers/usb/gadget/u_ether.c
+--- kernel-power-2.6.28.orig/drivers/usb/gadget/u_ether.c
++++ kernel-power-2.6.28/drivers/usb/gadget/u_ether.c
 @@ -174,12 +174,6 @@
        strlcpy(p->bus_info, dev_name(&dev->gadget->dev), sizeof p->bus_info);
  }
  };
  
  static void defer_kevent(struct eth_dev *dev, int flag)
---- kernel-maemo-2.6.28.test.orig/drivers/usb/host/ehci-hcd.c
-+++ kernel-maemo-2.6.28.test/drivers/usb/host/ehci-hcd.c
+--- kernel-power-2.6.28.orig/drivers/usb/host/ehci-hcd.c
++++ kernel-power-2.6.28/drivers/usb/host/ehci-hcd.c
 @@ -485,6 +485,7 @@
         * periodic_size can shrink by USBCMD update if hcc_params allows.
         */
  
        /*
         * dedicate a qh for the async ring head, since we couldn't unlink
---- kernel-maemo-2.6.28.test.orig/drivers/usb/host/ehci-mem.c
-+++ kernel-maemo-2.6.28.test/drivers/usb/host/ehci-mem.c
+--- kernel-power-2.6.28.orig/drivers/usb/host/ehci-mem.c
++++ kernel-power-2.6.28/drivers/usb/host/ehci-mem.c
 @@ -128,6 +128,7 @@
  
  static void ehci_mem_cleanup (struct ehci_hcd *ehci)
        if (ehci->async)
                qh_put (ehci->async);
        ehci->async = NULL;
---- kernel-maemo-2.6.28.test.orig/drivers/usb/host/ehci-q.c
-+++ kernel-maemo-2.6.28.test/drivers/usb/host/ehci-q.c
+--- kernel-power-2.6.28.orig/drivers/usb/host/ehci-q.c
++++ kernel-power-2.6.28/drivers/usb/host/ehci-q.c
 @@ -333,12 +333,40 @@
                token = hc32_to_cpu(ehci, qtd->hw_token);
  
                /* if (unlikely (qh->reclaim != 0))
                 *      this will recurse, probably not much
                 */
---- kernel-maemo-2.6.28.test.orig/drivers/usb/host/ehci-sched.c
-+++ kernel-maemo-2.6.28.test/drivers/usb/host/ehci-sched.c
+--- kernel-power-2.6.28.orig/drivers/usb/host/ehci-sched.c
++++ kernel-power-2.6.28/drivers/usb/host/ehci-sched.c
 @@ -1004,7 +1004,8 @@
  
                is_in = (stream->bEndpointAddress & USB_DIR_IN) ? 0x10 : 0;
                } else {
                        now_uframe++;
                        now_uframe %= mod;
---- kernel-maemo-2.6.28.test.orig/drivers/usb/host/ehci.h
-+++ kernel-maemo-2.6.28.test/drivers/usb/host/ehci.h
+--- kernel-power-2.6.28.orig/drivers/usb/host/ehci.h
++++ kernel-power-2.6.28/drivers/usb/host/ehci.h
 @@ -87,6 +87,10 @@
        int                     next_uframe;    /* scan periodic, start here */
        unsigned                periodic_sched; /* periodic activity count */
        /* periodic schedule info */
        u8                      usecs;          /* intr bandwidth */
        u8                      gap_uf;         /* uframes split/csplit gap */
---- kernel-maemo-2.6.28.test.orig/drivers/usb/host/isp1760-if.c
-+++ kernel-maemo-2.6.28.test/drivers/usb/host/isp1760-if.c
+--- kernel-power-2.6.28.orig/drivers/usb/host/isp1760-if.c
++++ kernel-power-2.6.28/drivers/usb/host/isp1760-if.c
 @@ -129,23 +129,23 @@
  #endif
  
  };
  MODULE_DEVICE_TABLE(pci, isp1760_plx);
  
---- kernel-maemo-2.6.28.test.orig/drivers/usb/misc/emi26.c
-+++ kernel-maemo-2.6.28.test/drivers/usb/misc/emi26.c
+--- kernel-power-2.6.28.orig/drivers/usb/misc/emi26.c
++++ kernel-power-2.6.28/drivers/usb/misc/emi26.c
 @@ -160,7 +160,7 @@
                        err("%s - error loading firmware: error = %d", __func__, err);
                        goto wraperr;
  
        /* Assert reset (stop the CPU in the EMI) */
        err = emi26_set_reset(dev,1);
---- kernel-maemo-2.6.28.test.orig/drivers/usb/mon/mon_bin.c
-+++ kernel-maemo-2.6.28.test/drivers/usb/mon/mon_bin.c
+--- kernel-power-2.6.28.orig/drivers/usb/mon/mon_bin.c
++++ kernel-power-2.6.28/drivers/usb/mon/mon_bin.c
 @@ -37,6 +37,7 @@
  #define MON_IOCX_GET   _IOW(MON_IOC_MAGIC, 6, struct mon_bin_get)
  #define MON_IOCX_MFETCH _IOWR(MON_IOC_MAGIC, 7, struct mon_bin_mfetch)
        .release =      mon_bin_release,
        .mmap =         mon_bin_mmap,
  };
---- kernel-maemo-2.6.28.test.orig/drivers/usb/serial/cp2101.c
-+++ kernel-maemo-2.6.28.test/drivers/usb/serial/cp2101.c
+--- kernel-power-2.6.28.orig/drivers/usb/serial/cp2101.c
++++ kernel-power-2.6.28/drivers/usb/serial/cp2101.c
 @@ -79,6 +79,7 @@
        { USB_DEVICE(0x10C4, 0x814A) }, /* West Mountain Radio RIGblaster P&P */
        { USB_DEVICE(0x10C4, 0x814B) }, /* West Mountain Radio RIGtalk */
        { USB_DEVICE(0x10C4, 0x81A6) }, /* ThinkOptics WavIt */
        { USB_DEVICE(0x10C4, 0x81AC) }, /* MSD Dash Hawk */
        { USB_DEVICE(0x10C4, 0x81C8) }, /* Lipowsky Industrie Elektronik GmbH, Baby-JTAG */
---- kernel-maemo-2.6.28.test.orig/drivers/usb/serial/ftdi_sio.c
-+++ kernel-maemo-2.6.28.test/drivers/usb/serial/ftdi_sio.c
+--- kernel-power-2.6.28.orig/drivers/usb/serial/ftdi_sio.c
++++ kernel-power-2.6.28/drivers/usb/serial/ftdi_sio.c
 @@ -660,6 +660,12 @@
        { USB_DEVICE(PAPOUCH_VID, PAPOUCH_QUIDO4x4_PID) },
        { USB_DEVICE(FTDI_VID, FTDI_DOMINTELL_DGQG_PID) },
        { },                                    /* Optional parameter entry */
        { }                                     /* Terminating entry */
  };
---- kernel-maemo-2.6.28.test.orig/drivers/usb/serial/ftdi_sio.h
-+++ kernel-maemo-2.6.28.test/drivers/usb/serial/ftdi_sio.h
+--- kernel-power-2.6.28.orig/drivers/usb/serial/ftdi_sio.h
++++ kernel-power-2.6.28/drivers/usb/serial/ftdi_sio.h
 @@ -881,6 +881,33 @@
  #define RATOC_PRODUCT_ID_USB60F       0xb020
  
   *   BmRequestType:  1100 0000b
   *   bRequest:       FTDI_E2_READ
   *   wValue:         0
---- kernel-maemo-2.6.28.test.orig/drivers/usb/serial/option.c
-+++ kernel-maemo-2.6.28.test/drivers/usb/serial/option.c
+--- kernel-power-2.6.28.orig/drivers/usb/serial/option.c
++++ kernel-power-2.6.28/drivers/usb/serial/option.c
 @@ -89,6 +89,7 @@
  #define OPTION_PRODUCT_ETNA_MODEM_GT          0x7041
  #define OPTION_PRODUCT_ETNA_MODEM_EX          0x7061
        { } /* Terminating entry */
  };
  MODULE_DEVICE_TABLE(usb, option_ids);
---- kernel-maemo-2.6.28.test.orig/drivers/usb/serial/ti_usb_3410_5052.c
-+++ kernel-maemo-2.6.28.test/drivers/usb/serial/ti_usb_3410_5052.c
+--- kernel-power-2.6.28.orig/drivers/usb/serial/ti_usb_3410_5052.c
++++ kernel-power-2.6.28/drivers/usb/serial/ti_usb_3410_5052.c
 @@ -176,25 +176,32 @@
  /* the array dimension is the number of default entries plus */
  /* TI_EXTRA_VID_PID_COUNT user defined entries plus 1 terminating */
        { }
  };
  
---- kernel-maemo-2.6.28.test.orig/drivers/usb/serial/ti_usb_3410_5052.h
-+++ kernel-maemo-2.6.28.test/drivers/usb/serial/ti_usb_3410_5052.h
+--- kernel-power-2.6.28.orig/drivers/usb/serial/ti_usb_3410_5052.h
++++ kernel-power-2.6.28/drivers/usb/serial/ti_usb_3410_5052.h
 @@ -27,7 +27,11 @@
  
  /* Vendor and product ids */
  #define TI_3410_EZ430_ID              0xF430  /* TI ez430 development tool */
  #define TI_5052_BOOT_PRODUCT_ID               0x5052  /* no EEPROM, no firmware */
  #define TI_5152_BOOT_PRODUCT_ID               0x5152  /* no EEPROM, no firmware */
---- kernel-maemo-2.6.28.test.orig/drivers/usb/storage/cypress_atacb.c
-+++ kernel-maemo-2.6.28.test/drivers/usb/storage/cypress_atacb.c
+--- kernel-power-2.6.28.orig/drivers/usb/storage/cypress_atacb.c
++++ kernel-power-2.6.28/drivers/usb/storage/cypress_atacb.c
 @@ -133,19 +133,18 @@
  
                /* build the command for
                 */
  
                /* Sense data is current and format is descriptor. */
---- kernel-maemo-2.6.28.test.orig/drivers/usb/storage/libusual.c
-+++ kernel-maemo-2.6.28.test/drivers/usb/storage/libusual.c
+--- kernel-power-2.6.28.orig/drivers/usb/storage/libusual.c
++++ kernel-power-2.6.28/drivers/usb/storage/libusual.c
 @@ -46,6 +46,12 @@
  { USB_DEVICE_VER(id_vendor, id_product, bcdDeviceMin,bcdDeviceMax), \
    .driver_info = (flags)|(USB_US_TYPE_STOR<<24) }
  
  MODULE_DEVICE_TABLE(usb, storage_usb_ids);
  EXPORT_SYMBOL_GPL(storage_usb_ids);
---- kernel-maemo-2.6.28.test.orig/drivers/usb/storage/scsiglue.c
-+++ kernel-maemo-2.6.28.test/drivers/usb/storage/scsiglue.c
+--- kernel-power-2.6.28.orig/drivers/usb/storage/scsiglue.c
++++ kernel-power-2.6.28/drivers/usb/storage/scsiglue.c
 @@ -59,6 +59,14 @@
  #include "transport.h"
  #include "protocol.h"
        } else {
  
                /* Non-disk-type devices don't need to blacklist any pages
---- kernel-maemo-2.6.28.test.orig/drivers/usb/storage/transport.c
-+++ kernel-maemo-2.6.28.test/drivers/usb/storage/transport.c
+--- kernel-power-2.6.28.orig/drivers/usb/storage/transport.c
++++ kernel-power-2.6.28/drivers/usb/storage/transport.c
 @@ -57,6 +57,9 @@
  #include "scsiglue.h"
  #include "debug.h"
  }
  
  /* Stop the current URB transfer */
---- kernel-maemo-2.6.28.test.orig/drivers/usb/storage/unusual_devs.h
-+++ kernel-maemo-2.6.28.test/drivers/usb/storage/unusual_devs.h
+--- kernel-power-2.6.28.orig/drivers/usb/storage/unusual_devs.h
++++ kernel-power-2.6.28/drivers/usb/storage/unusual_devs.h
 @@ -27,7 +27,8 @@
  
  /* IMPORTANT NOTE: This file must be included in another file which does
   * Patch by Constantin Baranov <const@tltsu.ru>
   * Report by Andreas Koenecke.
   * Motorola ROKR Z6.
---- kernel-maemo-2.6.28.test.orig/drivers/usb/storage/usb.c
-+++ kernel-maemo-2.6.28.test/drivers/usb/storage/usb.c
+--- kernel-power-2.6.28.orig/drivers/usb/storage/usb.c
++++ kernel-power-2.6.28/drivers/usb/storage/usb.c
 @@ -126,6 +126,8 @@
  { USB_DEVICE_VER(id_vendor, id_product, bcdDeviceMin,bcdDeviceMax), \
    .driver_info = (flags)|(USB_US_TYPE_STOR<<24) }
  #     undef USUAL_DEV
  
        /* Terminating entry */
---- kernel-maemo-2.6.28.test.orig/drivers/usb/storage/usb.h
-+++ kernel-maemo-2.6.28.test/drivers/usb/storage/usb.h
+--- kernel-power-2.6.28.orig/drivers/usb/storage/usb.h
++++ kernel-power-2.6.28/drivers/usb/storage/usb.h
 @@ -155,6 +155,10 @@
  #ifdef CONFIG_PM
        pm_hook                 suspend_resume_hook;
  };
  
  /* Convert between us_data and the corresponding Scsi_Host */
---- kernel-maemo-2.6.28.test.orig/drivers/video/aty/mach64_ct.c
-+++ kernel-maemo-2.6.28.test/drivers/video/aty/mach64_ct.c
+--- kernel-power-2.6.28.orig/drivers/video/aty/mach64_ct.c
++++ kernel-power-2.6.28/drivers/video/aty/mach64_ct.c
 @@ -8,6 +8,9 @@
  #include <asm/io.h>
  #include <video/mach64.h>
  #ifdef DEBUG
        pllmclk = (1000000 * pll->ct.mclk_fb_mult * pll->ct.mclk_fb_div) /
                        (par->ref_clk_per * pll->ct.pll_ref_div);
---- kernel-maemo-2.6.28.test.orig/drivers/w1/slaves/w1_therm.c
-+++ kernel-maemo-2.6.28.test/drivers/w1/slaves/w1_therm.c
+--- kernel-power-2.6.28.orig/drivers/w1/slaves/w1_therm.c
++++ kernel-power-2.6.28/drivers/w1/slaves/w1_therm.c
 @@ -115,7 +115,7 @@
  
  static inline int w1_DS18B20_convert_temp(u8 rom[9])
        t = t*1000/16;
        return t;
  }
---- kernel-maemo-2.6.28.test.orig/drivers/watchdog/Kconfig
-+++ kernel-maemo-2.6.28.test/drivers/watchdog/Kconfig
+--- kernel-power-2.6.28.orig/drivers/watchdog/Kconfig
++++ kernel-power-2.6.28/drivers/watchdog/Kconfig
 @@ -406,7 +406,7 @@
        ---help---
          Hardware driver for the intel TCO timer based watchdog devices.
          controller hub.
  
          The TCO (Total Cost of Ownership) timer is a watchdog timer
---- kernel-maemo-2.6.28.test.orig/drivers/watchdog/iTCO_vendor_support.c
-+++ kernel-maemo-2.6.28.test/drivers/watchdog/iTCO_vendor_support.c
+--- kernel-power-2.6.28.orig/drivers/watchdog/iTCO_vendor_support.c
++++ kernel-power-2.6.28/drivers/watchdog/iTCO_vendor_support.c
 @@ -1,7 +1,7 @@
  /*
   *    intel TCO vendor specific watchdog driver support
                supermicro_new_pre_stop();
  }
  EXPORT_SYMBOL(iTCO_vendor_pre_stop);
---- kernel-maemo-2.6.28.test.orig/drivers/watchdog/iTCO_wdt.c
-+++ kernel-maemo-2.6.28.test/drivers/watchdog/iTCO_wdt.c
+--- kernel-power-2.6.28.orig/drivers/watchdog/iTCO_wdt.c
++++ kernel-power-2.6.28/drivers/watchdog/iTCO_wdt.c
 @@ -1,7 +1,7 @@
  /*
 - *    intel TCO Watchdog Driver (Used in i82801 and i6300ESB chipsets)
  
        /* The TCO I/O registers reside in a 32-byte range pointed to
           by the TCOBASE value */
---- kernel-maemo-2.6.28.test.orig/drivers/watchdog/ks8695_wdt.c
-+++ kernel-maemo-2.6.28.test/drivers/watchdog/ks8695_wdt.c
+--- kernel-power-2.6.28.orig/drivers/watchdog/ks8695_wdt.c
++++ kernel-power-2.6.28/drivers/watchdog/ks8695_wdt.c
 @@ -21,6 +21,7 @@
  #include <linux/watchdog.h>
  #include <linux/io.h>
  #include <mach/regs-timer.h>
  
  #define WDT_DEFAULT_TIME      5       /* seconds */
---- kernel-maemo-2.6.28.test.orig/drivers/watchdog/rc32434_wdt.c
-+++ kernel-maemo-2.6.28.test/drivers/watchdog/rc32434_wdt.c
+--- kernel-power-2.6.28.orig/drivers/watchdog/rc32434_wdt.c
++++ kernel-power-2.6.28/drivers/watchdog/rc32434_wdt.c
 @@ -34,104 +34,89 @@
  #include <asm/time.h>
  #include <asm/mach-rc32434/integ.h>
                .name = "rc32434_wdt",
        }
  };
---- kernel-maemo-2.6.28.test.orig/drivers/xen/balloon.c
-+++ kernel-maemo-2.6.28.test/drivers/xen/balloon.c
+--- kernel-power-2.6.28.orig/drivers/xen/balloon.c
++++ kernel-power-2.6.28/drivers/xen/balloon.c
 @@ -488,7 +488,7 @@
        if (!capable(CAP_SYS_ADMIN))
                return -EPERM;
  };
  
  static struct attribute *balloon_info_attrs[] = {
---- kernel-maemo-2.6.28.test.orig/fs/affs/file.c
-+++ kernel-maemo-2.6.28.test/fs/affs/file.c
+--- kernel-power-2.6.28.orig/fs/affs/file.c
++++ kernel-power-2.6.28/fs/affs/file.c
 @@ -628,7 +628,7 @@
        }
  
        if (!page)
                return -ENOMEM;
        *pagep = page;
---- kernel-maemo-2.6.28.test.orig/fs/afs/write.c
-+++ kernel-maemo-2.6.28.test/fs/afs/write.c
+--- kernel-power-2.6.28.orig/fs/afs/write.c
++++ kernel-power-2.6.28/fs/afs/write.c
 @@ -144,7 +144,7 @@
        candidate->state = AFS_WBACK_PENDING;
        init_waitqueue_head(&candidate->waitq);
        if (!page) {
                kfree(candidate);
                return -ENOMEM;
---- kernel-maemo-2.6.28.test.orig/fs/aio.c
-+++ kernel-maemo-2.6.28.test/fs/aio.c
+--- kernel-power-2.6.28.orig/fs/aio.c
++++ kernel-power-2.6.28/fs/aio.c
 @@ -428,7 +428,7 @@
        req->private = NULL;
        req->ki_iovec = NULL;
  {
        struct kioctx *ioctx = lookup_ioctx(ctx_id);
        long ret = -EINVAL;
---- kernel-maemo-2.6.28.test.orig/fs/anon_inodes.c
-+++ kernel-maemo-2.6.28.test/fs/anon_inodes.c
+--- kernel-power-2.6.28.orig/fs/anon_inodes.c
++++ kernel-power-2.6.28/fs/anon_inodes.c
 @@ -79,9 +79,12 @@
        if (IS_ERR(anon_inode_inode))
                return -ENODEV;
        return error;
  }
  EXPORT_SYMBOL_GPL(anon_inode_getfd);
---- kernel-maemo-2.6.28.test.orig/fs/binfmt_elf.c
-+++ kernel-maemo-2.6.28.test/fs/binfmt_elf.c
+--- kernel-power-2.6.28.orig/fs/binfmt_elf.c
++++ kernel-power-2.6.28/fs/binfmt_elf.c
 @@ -1196,9 +1196,11 @@
         * check for an ELF header.  If we find one, dump the first page to
         * aid in determining what was mapped here.
                        return PAGE_SIZE;
        }
  
---- kernel-maemo-2.6.28.test.orig/fs/buffer.c
-+++ kernel-maemo-2.6.28.test/fs/buffer.c
+--- kernel-power-2.6.28.orig/fs/buffer.c
++++ kernel-power-2.6.28/fs/buffer.c
 @@ -1988,7 +1988,7 @@
        page = *pagep;
        if (page == NULL) {
  {
        static int msg_count;
  
---- kernel-maemo-2.6.28.test.orig/fs/cifs/CHANGES
-+++ kernel-maemo-2.6.28.test/fs/cifs/CHANGES
+--- kernel-power-2.6.28.orig/fs/cifs/CHANGES
++++ kernel-power-2.6.28/fs/cifs/CHANGES
 @@ -1,3 +1,8 @@
 +Fix oops in cifs_dfs_ref.c when prefixpath is not reachable when using DFS.
 +Fix "redzone overwritten" bug in cifs_put_tcon (CIFSTcon may allocate too
  Version 1.55
  ------------
  Various fixes to make delete of open files behavior more predictable
---- kernel-maemo-2.6.28.test.orig/fs/cifs/cifs_dfs_ref.c
-+++ kernel-maemo-2.6.28.test/fs/cifs/cifs_dfs_ref.c
+--- kernel-power-2.6.28.orig/fs/cifs/cifs_dfs_ref.c
++++ kernel-power-2.6.28/fs/cifs/cifs_dfs_ref.c
 @@ -122,7 +122,7 @@
                                   char **devname)
  {
                &num_referrals, &referrals,
                cifs_sb->mnt_cifs_flags & CIFS_MOUNT_MAP_SPECIAL_CHR);
  
---- kernel-maemo-2.6.28.test.orig/fs/cifs/cifssmb.c
-+++ kernel-maemo-2.6.28.test/fs/cifs/cifssmb.c
+--- kernel-power-2.6.28.orig/fs/cifs/cifssmb.c
++++ kernel-power-2.6.28/fs/cifs/cifssmb.c
 @@ -2350,8 +2350,10 @@
                                     PATH_MAX, nls_codepage, remap);
                name_len++;     /* trailing null */
                name_len2 =
                    cifsConvertToUCS((__le16 *)&pSMB->OldFileName[name_len + 2],
                                     toName, PATH_MAX, nls_codepage, remap);
---- kernel-maemo-2.6.28.test.orig/fs/cifs/connect.c
-+++ kernel-maemo-2.6.28.test/fs/cifs/connect.c
+--- kernel-power-2.6.28.orig/fs/cifs/connect.c
++++ kernel-power-2.6.28/fs/cifs/connect.c
 @@ -1356,7 +1356,7 @@
  }
  
                                if (tcon->nativeFileSystem)
                                        cifs_strfromUCS_le(
                                                tcon->nativeFileSystem,
---- kernel-maemo-2.6.28.test.orig/fs/cifs/file.c
-+++ kernel-maemo-2.6.28.test/fs/cifs/file.c
+--- kernel-power-2.6.28.orig/fs/cifs/file.c
++++ kernel-power-2.6.28/fs/cifs/file.c
 @@ -2073,7 +2073,7 @@
  
        cFYI(1, ("write_begin from %lld len %d", (long long)pos, len));
        if (!page) {
                rc = -ENOMEM;
                goto out;
---- kernel-maemo-2.6.28.test.orig/fs/cifs/sess.c
-+++ kernel-maemo-2.6.28.test/fs/cifs/sess.c
+--- kernel-power-2.6.28.orig/fs/cifs/sess.c
++++ kernel-power-2.6.28/fs/cifs/sess.c
 @@ -228,7 +228,7 @@
  
        kfree(ses->serverOS);
        if (ses->serverNOS != NULL) {
                cifs_strfromUCS_le(ses->serverNOS, (__le16 *)data, len,
                                   nls_cp);
---- kernel-maemo-2.6.28.test.orig/fs/compat.c
-+++ kernel-maemo-2.6.28.test/fs/compat.c
+--- kernel-power-2.6.28.orig/fs/compat.c
++++ kernel-power-2.6.28/fs/compat.c
 @@ -1386,12 +1386,17 @@
  {
        struct linux_binprm *bprm;
  }
  
  asmlinkage long compat_sys_ppoll(struct pollfd __user *ufds,
---- kernel-maemo-2.6.28.test.orig/fs/compat_ioctl.c
-+++ kernel-maemo-2.6.28.test/fs/compat_ioctl.c
+--- kernel-power-2.6.28.orig/fs/compat_ioctl.c
++++ kernel-power-2.6.28/fs/compat_ioctl.c
 @@ -538,6 +538,7 @@
                 * cannot be fixed without breaking all existing apps.
                 */
  HANDLE_IOCTL(SIOCETHTOOL, ethtool_ioctl)
  HANDLE_IOCTL(SIOCBONDENSLAVE, bond_ioctl)
  HANDLE_IOCTL(SIOCBONDRELEASE, bond_ioctl)
---- kernel-maemo-2.6.28.test.orig/fs/dcache.c
-+++ kernel-maemo-2.6.28.test/fs/dcache.c
+--- kernel-power-2.6.28.orig/fs/dcache.c
++++ kernel-power-2.6.28/fs/dcache.c
 @@ -1620,8 +1620,11 @@
                         */
                        memcpy(dentry->d_iname, target->d_name.name,
  {
        int error;
        struct path pwd, root;
---- kernel-maemo-2.6.28.test.orig/fs/dcookies.c
-+++ kernel-maemo-2.6.28.test/fs/dcookies.c
+--- kernel-power-2.6.28.orig/fs/dcookies.c
++++ kernel-power-2.6.28/fs/dcookies.c
 @@ -140,7 +140,7 @@
  /* And here is where the userspace process can look up the cookie value
   * to retrieve the path.
  
  static int dcookie_init(void)
  {
---- kernel-maemo-2.6.28.test.orig/fs/dlm/plock.c
-+++ kernel-maemo-2.6.28.test/fs/dlm/plock.c
+--- kernel-power-2.6.28.orig/fs/dlm/plock.c
++++ kernel-power-2.6.28/fs/dlm/plock.c
 @@ -304,7 +304,9 @@
        if (rv == -ENOENT)
                rv = 0;
                fl->fl_pid = op->info.pid;
                fl->fl_start = op->info.start;
                fl->fl_end = op->info.end;
---- kernel-maemo-2.6.28.test.orig/fs/dquot.c
-+++ kernel-maemo-2.6.28.test/fs/dquot.c
+--- kernel-power-2.6.28.orig/fs/dquot.c
++++ kernel-power-2.6.28/fs/dquot.c
 @@ -724,7 +724,7 @@
                        continue;
                if (!dqinit_needed(inode, type))
                        continue;
  
                __iget(inode);
---- kernel-maemo-2.6.28.test.orig/fs/drop_caches.c
-+++ kernel-maemo-2.6.28.test/fs/drop_caches.c
+--- kernel-power-2.6.28.orig/fs/drop_caches.c
++++ kernel-power-2.6.28/fs/drop_caches.c
 @@ -18,7 +18,7 @@
  
        spin_lock(&inode_lock);
                        continue;
                if (inode->i_mapping->nrpages == 0)
                        continue;
---- kernel-maemo-2.6.28.test.orig/fs/ecryptfs/crypto.c
-+++ kernel-maemo-2.6.28.test/fs/ecryptfs/crypto.c
+--- kernel-power-2.6.28.orig/fs/ecryptfs/crypto.c
++++ kernel-power-2.6.28/fs/ecryptfs/crypto.c
 @@ -1310,14 +1310,13 @@
  }
  
  out:
        return rc;
  }
---- kernel-maemo-2.6.28.test.orig/fs/ecryptfs/inode.c
-+++ kernel-maemo-2.6.28.test/fs/ecryptfs/inode.c
+--- kernel-power-2.6.28.orig/fs/ecryptfs/inode.c
++++ kernel-power-2.6.28/fs/ecryptfs/inode.c
 @@ -673,10 +673,11 @@
        ecryptfs_printk(KERN_DEBUG, "Calling readlink w/ "
                        "dentry->d_name.name = [%s]\n", dentry->d_name.name);
        rc = 0;
        nd_set_link(nd, buf);
        goto out;
---- kernel-maemo-2.6.28.test.orig/fs/ecryptfs/mmap.c
-+++ kernel-maemo-2.6.28.test/fs/ecryptfs/mmap.c
+--- kernel-power-2.6.28.orig/fs/ecryptfs/mmap.c
++++ kernel-power-2.6.28/fs/ecryptfs/mmap.c
 @@ -288,7 +288,7 @@
        loff_t prev_page_end_size;
        int rc = 0;
        if (!page)
                return -ENOMEM;
        *pagep = page;
---- kernel-maemo-2.6.28.test.orig/fs/eventfd.c
-+++ kernel-maemo-2.6.28.test/fs/eventfd.c
+--- kernel-power-2.6.28.orig/fs/eventfd.c
++++ kernel-power-2.6.28/fs/eventfd.c
 @@ -198,7 +198,7 @@
        return file;
  }
        return sys_eventfd2(count, 0);
  }
 -
---- kernel-maemo-2.6.28.test.orig/fs/eventpoll.c
-+++ kernel-maemo-2.6.28.test/fs/eventpoll.c
+--- kernel-power-2.6.28.orig/fs/eventpoll.c
++++ kernel-power-2.6.28/fs/eventpoll.c
 @@ -1095,7 +1095,7 @@
  /*
   * Open an eventpoll file descriptor.
  {
        int error;
        sigset_t ksigmask, sigsaved;
---- kernel-maemo-2.6.28.test.orig/fs/exec.c
-+++ kernel-maemo-2.6.28.test/fs/exec.c
+--- kernel-power-2.6.28.orig/fs/exec.c
++++ kernel-power-2.6.28/fs/exec.c
 @@ -102,7 +102,7 @@
   *
   * Also note that we take the address to load from from the file itself.
                unsafe |= LSM_UNSAFE_SHARE;
  
        return unsafe;
---- kernel-maemo-2.6.28.test.orig/fs/ext2/super.c
-+++ kernel-maemo-2.6.28.test/fs/ext2/super.c
+--- kernel-power-2.6.28.orig/fs/ext2/super.c
++++ kernel-power-2.6.28/fs/ext2/super.c
 @@ -1177,9 +1177,12 @@
        es = sbi->s_es;
        if (((sbi->s_mount_opt & EXT2_MOUNT_XIP) !=
        if ((*flags & MS_RDONLY) == (sb->s_flags & MS_RDONLY))
                return 0;
        if (*flags & MS_RDONLY) {
---- kernel-maemo-2.6.28.test.orig/fs/ext3/inode.c
-+++ kernel-maemo-2.6.28.test/fs/ext3/inode.c
+--- kernel-power-2.6.28.orig/fs/ext3/inode.c
++++ kernel-power-2.6.28/fs/ext3/inode.c
 @@ -1160,7 +1160,7 @@
        to = from + len;
  
        if (!page)
                return -ENOMEM;
        *pagep = page;
---- kernel-maemo-2.6.28.test.orig/fs/ext3/namei.c
-+++ kernel-maemo-2.6.28.test/fs/ext3/namei.c
+--- kernel-power-2.6.28.orig/fs/ext3/namei.c
++++ kernel-power-2.6.28/fs/ext3/namei.c
 @@ -1357,7 +1357,7 @@
        struct fake_dirent *fde;
  
                if (err) {
                        drop_nlink(inode);
                        ext3_mark_inode_dirty(handle, inode);
---- kernel-maemo-2.6.28.test.orig/fs/ext4/balloc.c
-+++ kernel-maemo-2.6.28.test/fs/ext4/balloc.c
+--- kernel-power-2.6.28.orig/fs/ext4/balloc.c
++++ kernel-power-2.6.28/fs/ext4/balloc.c
 @@ -20,6 +20,7 @@
  #include "ext4.h"
  #include "ext4_jbd2.h"
  error_return:
        brelse(bitmap_bh);
        ext4_std_error(sb, err);
---- kernel-maemo-2.6.28.test.orig/fs/ext4/ext4.h
-+++ kernel-maemo-2.6.28.test/fs/ext4/ext4.h
+--- kernel-power-2.6.28.orig/fs/ext4/ext4.h
++++ kernel-power-2.6.28/fs/ext4/ext4.h
 @@ -19,6 +19,7 @@
  #include <linux/types.h>
  #include <linux/blkdev.h>
  #endif        /* __KERNEL__ */
  
  #endif        /* _EXT4_H */
---- kernel-maemo-2.6.28.test.orig/fs/ext4/ext4_sb.h
-+++ kernel-maemo-2.6.28.test/fs/ext4/ext4_sb.h
+--- kernel-power-2.6.28.orig/fs/ext4/ext4_sb.h
++++ kernel-power-2.6.28/fs/ext4/ext4_sb.h
 @@ -57,6 +57,7 @@
        u32 s_next_generation;
        u32 s_hash_seed[4];
  
        /* tunables */
        unsigned long s_stripe;
---- kernel-maemo-2.6.28.test.orig/fs/ext4/hash.c
-+++ kernel-maemo-2.6.28.test/fs/ext4/hash.c
+--- kernel-power-2.6.28.orig/fs/ext4/hash.c
++++ kernel-power-2.6.28/fs/ext4/hash.c
 @@ -35,23 +35,71 @@
  
  
                        TEA_transform(buf, in);
                        len -= 16;
                        p += 16;
---- kernel-maemo-2.6.28.test.orig/fs/ext4/ialloc.c
-+++ kernel-maemo-2.6.28.test/fs/ext4/ialloc.c
+--- kernel-power-2.6.28.orig/fs/ext4/ialloc.c
++++ kernel-power-2.6.28/fs/ext4/ialloc.c
 @@ -84,7 +84,7 @@
        }
  
  
        percpu_counter_dec(&sbi->s_freeinodes_counter);
        if (S_ISDIR(mode))
---- kernel-maemo-2.6.28.test.orig/fs/ext4/inode.c
-+++ kernel-maemo-2.6.28.test/fs/ext4/inode.c
+--- kernel-power-2.6.28.orig/fs/ext4/inode.c
++++ kernel-power-2.6.28/fs/ext4/inode.c
 @@ -46,8 +46,10 @@
  static inline int ext4_begin_ordered_truncate(struct inode *inode,
                                              loff_t new_size)
        if (!page) {
                ext4_journal_stop(handle);
                ret = -ENOMEM;
---- kernel-maemo-2.6.28.test.orig/fs/ext4/mballoc.c
-+++ kernel-maemo-2.6.28.test/fs/ext4/mballoc.c
+--- kernel-power-2.6.28.orig/fs/ext4/mballoc.c
++++ kernel-power-2.6.28/fs/ext4/mballoc.c
 @@ -100,7 +100,7 @@
   * inode as:
   *
        /* And the group descriptor block */
        BUFFER_TRACE(gd_bh, "dirtied group descriptor block");
        ret = ext4_journal_dirty_metadata(handle, gd_bh);
---- kernel-maemo-2.6.28.test.orig/fs/ext4/mballoc.h
-+++ kernel-maemo-2.6.28.test/fs/ext4/mballoc.h
+--- kernel-power-2.6.28.orig/fs/ext4/mballoc.h
++++ kernel-power-2.6.28/fs/ext4/mballoc.h
 @@ -20,6 +20,7 @@
  #include <linux/version.h>
  #include <linux/blkdev.h>
                                        struct ext4_free_extent *fex)
  {
        ext4_fsblk_t block;
---- kernel-maemo-2.6.28.test.orig/fs/ext4/migrate.c
-+++ kernel-maemo-2.6.28.test/fs/ext4/migrate.c
+--- kernel-power-2.6.28.orig/fs/ext4/migrate.c
++++ kernel-power-2.6.28/fs/ext4/migrate.c
 @@ -480,7 +480,7 @@
                                        + 1);
        if (IS_ERR(handle)) {
  
        return retval;
  }
---- kernel-maemo-2.6.28.test.orig/fs/ext4/namei.c
-+++ kernel-maemo-2.6.28.test/fs/ext4/namei.c
+--- kernel-power-2.6.28.orig/fs/ext4/namei.c
++++ kernel-power-2.6.28/fs/ext4/namei.c
 @@ -372,6 +372,8 @@
                goto fail;
        }
                if (err) {
                        clear_nlink(inode);
                        ext4_mark_inode_dirty(handle, inode);
---- kernel-maemo-2.6.28.test.orig/fs/ext4/resize.c
-+++ kernel-maemo-2.6.28.test/fs/ext4/resize.c
+--- kernel-power-2.6.28.orig/fs/ext4/resize.c
++++ kernel-power-2.6.28/fs/ext4/resize.c
 @@ -284,11 +284,9 @@
        if ((err = extend_or_restart_transaction(handle, 2, bh)))
                goto exit_bh;
        if (test_opt(sb, DEBUG))
                printk(KERN_DEBUG "EXT4-fs: extended group to %llu blocks\n",
                       ext4_blocks_count(es));
---- kernel-maemo-2.6.28.test.orig/fs/ext4/super.c
-+++ kernel-maemo-2.6.28.test/fs/ext4/super.c
+--- kernel-power-2.6.28.orig/fs/ext4/super.c
++++ kernel-power-2.6.28/fs/ext4/super.c
 @@ -1445,7 +1445,6 @@
        ext4_group_t flex_group_count;
        ext4_group_t flex_group;
  }
  
  /*
---- kernel-maemo-2.6.28.test.orig/fs/fcntl.c
-+++ kernel-maemo-2.6.28.test/fs/fcntl.c
+--- kernel-power-2.6.28.orig/fs/fcntl.c
++++ kernel-power-2.6.28/fs/fcntl.c
 @@ -50,7 +50,7 @@
        return res;
  }
  {     
        struct file * filp;
        long err;
---- kernel-maemo-2.6.28.test.orig/fs/filesystems.c
-+++ kernel-maemo-2.6.28.test/fs/filesystems.c
+--- kernel-power-2.6.28.orig/fs/filesystems.c
++++ kernel-power-2.6.28/fs/filesystems.c
 @@ -179,7 +179,7 @@
  /*
   * Whee.. Weird sysv syscall. 
  {
        int retval = -EINVAL;
  
---- kernel-maemo-2.6.28.test.orig/fs/fs-writeback.c
-+++ kernel-maemo-2.6.28.test/fs/fs-writeback.c
+--- kernel-power-2.6.28.orig/fs/fs-writeback.c
++++ kernel-power-2.6.28/fs/fs-writeback.c
 @@ -315,6 +315,7 @@
        int ret;
  
  }
  
  /**
---- kernel-maemo-2.6.28.test.orig/fs/fuse/dev.c
-+++ kernel-maemo-2.6.28.test/fs/fuse/dev.c
+--- kernel-power-2.6.28.orig/fs/fuse/dev.c
++++ kernel-power-2.6.28/fs/fuse/dev.c
 @@ -281,7 +281,8 @@
                        fc->blocked = 0;
                        wake_up_all(&fc->blocked_waitq);
                        clear_bdi_congested(&fc->bdi, READ);
                        clear_bdi_congested(&fc->bdi, WRITE);
                }
---- kernel-maemo-2.6.28.test.orig/fs/fuse/file.c
-+++ kernel-maemo-2.6.28.test/fs/fuse/file.c
+--- kernel-power-2.6.28.orig/fs/fuse/file.c
++++ kernel-power-2.6.28/fs/fuse/file.c
 @@ -54,7 +54,7 @@
                ff->reserved_req = fuse_request_alloc();
                if (!ff->reserved_req) {
                if (!page)
                        break;
  
---- kernel-maemo-2.6.28.test.orig/fs/fuse/inode.c
-+++ kernel-maemo-2.6.28.test/fs/fuse/inode.c
+--- kernel-power-2.6.28.orig/fs/fuse/inode.c
++++ kernel-power-2.6.28/fs/fuse/inode.c
 @@ -292,6 +292,7 @@
        list_del(&fc->entry);
        fuse_ctl_remove_conn(fc);
  
        fc->flags = d.flags;
        fc->user_id = d.user_id;
---- kernel-maemo-2.6.28.test.orig/fs/gfs2/ops_address.c
-+++ kernel-maemo-2.6.28.test/fs/gfs2/ops_address.c
+--- kernel-power-2.6.28.orig/fs/gfs2/ops_address.c
++++ kernel-power-2.6.28/fs/gfs2/ops_address.c
 @@ -675,7 +675,7 @@
                goto out_trans_fail;
  
        *pagep = page;
        if (unlikely(!page))
                goto out_endtrans;
---- kernel-maemo-2.6.28.test.orig/fs/hostfs/hostfs_kern.c
-+++ kernel-maemo-2.6.28.test/fs/hostfs/hostfs_kern.c
+--- kernel-power-2.6.28.orig/fs/hostfs/hostfs_kern.c
++++ kernel-power-2.6.28/fs/hostfs/hostfs_kern.c
 @@ -501,7 +501,7 @@
  {
        pgoff_t index = pos >> PAGE_CACHE_SHIFT;
        if (!*pagep)
                return -ENOMEM;
        return 0;
---- kernel-maemo-2.6.28.test.orig/fs/hugetlbfs/inode.c
-+++ kernel-maemo-2.6.28.test/fs/hugetlbfs/inode.c
+--- kernel-power-2.6.28.orig/fs/hugetlbfs/inode.c
++++ kernel-power-2.6.28/fs/hugetlbfs/inode.c
 @@ -26,7 +26,6 @@
  #include <linux/pagevec.h>
  #include <linux/parser.h>
  }
  
  static int
---- kernel-maemo-2.6.28.test.orig/fs/inode.c
-+++ kernel-maemo-2.6.28.test/fs/inode.c
+--- kernel-power-2.6.28.orig/fs/inode.c
++++ kernel-power-2.6.28/fs/inode.c
 @@ -339,6 +339,7 @@
                invalidate_inode_buffers(inode);
                if (!atomic_read(&inode->i_count)) {
        inode->i_state |= I_FREEING;
        inodes_stat.nr_inodes--;
        spin_unlock(&inode_lock);
---- kernel-maemo-2.6.28.test.orig/fs/inotify.c
-+++ kernel-maemo-2.6.28.test/fs/inotify.c
+--- kernel-power-2.6.28.orig/fs/inotify.c
++++ kernel-power-2.6.28/fs/inotify.c
 @@ -156,7 +156,7 @@
        int ret;
  
                        return -ENOSPC;
                ret = idr_get_new_above(&ih->idr, watch, ih->last_wd+1, &watch->wd);
        } while (ret == -EAGAIN);
---- kernel-maemo-2.6.28.test.orig/fs/inotify_user.c
-+++ kernel-maemo-2.6.28.test/fs/inotify_user.c
+--- kernel-power-2.6.28.orig/fs/inotify_user.c
++++ kernel-power-2.6.28/fs/inotify_user.c
 @@ -427,10 +427,61 @@
        return ret;
  }
  {
        struct file *filp;
        struct inotify_device *dev;
---- kernel-maemo-2.6.28.test.orig/fs/ioctl.c
-+++ kernel-maemo-2.6.28.test/fs/ioctl.c
+--- kernel-power-2.6.28.orig/fs/ioctl.c
++++ kernel-power-2.6.28/fs/ioctl.c
 @@ -472,7 +472,7 @@
        return error;
  }
  {
        struct file *filp;
        int error = -EBADF;
---- kernel-maemo-2.6.28.test.orig/fs/ioprio.c
-+++ kernel-maemo-2.6.28.test/fs/ioprio.c
+--- kernel-power-2.6.28.orig/fs/ioprio.c
++++ kernel-power-2.6.28/fs/ioprio.c
 @@ -65,7 +65,7 @@
        return err;
  }
        return ret;
  }
 -
---- kernel-maemo-2.6.28.test.orig/fs/jbd2/commit.c
-+++ kernel-maemo-2.6.28.test/fs/jbd2/commit.c
+--- kernel-power-2.6.28.orig/fs/jbd2/commit.c
++++ kernel-power-2.6.28/fs/jbd2/commit.c
 @@ -25,6 +25,7 @@
  #include <linux/crc32.h>
  #include <linux/writeback.h>
  
        if (err)
                jbd2_journal_abort(journal, err);
---- kernel-maemo-2.6.28.test.orig/fs/jbd2/journal.c
-+++ kernel-maemo-2.6.28.test/fs/jbd2/journal.c
+--- kernel-power-2.6.28.orig/fs/jbd2/journal.c
++++ kernel-power-2.6.28/fs/jbd2/journal.c
 @@ -430,7 +430,7 @@
  }
  
                ret = 1;
        }
        spin_unlock(&journal->j_state_lock);
---- kernel-maemo-2.6.28.test.orig/fs/jbd2/transaction.c
-+++ kernel-maemo-2.6.28.test/fs/jbd2/transaction.c
+--- kernel-power-2.6.28.orig/fs/jbd2/transaction.c
++++ kernel-power-2.6.28/fs/jbd2/transaction.c
 @@ -2050,26 +2050,46 @@
  }
  
                        new_size, LLONG_MAX);
                if (ret)
                        jbd2_journal_abort(journal, ret);
---- kernel-maemo-2.6.28.test.orig/fs/jffs2/file.c
-+++ kernel-maemo-2.6.28.test/fs/jffs2/file.c
+--- kernel-power-2.6.28.orig/fs/jffs2/file.c
++++ kernel-power-2.6.28/fs/jffs2/file.c
 @@ -132,7 +132,7 @@
        uint32_t pageofs = index << PAGE_CACHE_SHIFT;
        int ret = 0;
        if (!pg)
                return -ENOMEM;
        *pagep = pg;
---- kernel-maemo-2.6.28.test.orig/fs/jffs2/readinode.c
-+++ kernel-maemo-2.6.28.test/fs/jffs2/readinode.c
+--- kernel-power-2.6.28.orig/fs/jffs2/readinode.c
++++ kernel-power-2.6.28/fs/jffs2/readinode.c
 @@ -220,7 +220,7 @@
                                struct jffs2_tmp_dnode_info *tn)
  {
  
                /* Now we have a bunch of nodes in reverse version
                   order, in the tree at ver_root. Most of the time,
---- kernel-maemo-2.6.28.test.orig/fs/libfs.c
-+++ kernel-maemo-2.6.28.test/fs/libfs.c
+--- kernel-power-2.6.28.orig/fs/libfs.c
++++ kernel-power-2.6.28/fs/libfs.c
 @@ -360,7 +360,7 @@
        index = pos >> PAGE_CACHE_SHIFT;
        from = pos & (PAGE_CACHE_SIZE - 1);
        if (!page)
                return -ENOMEM;
  
---- kernel-maemo-2.6.28.test.orig/fs/lockd/svclock.c
-+++ kernel-maemo-2.6.28.test/fs/lockd/svclock.c
+--- kernel-power-2.6.28.orig/fs/lockd/svclock.c
++++ kernel-power-2.6.28/fs/lockd/svclock.c
 @@ -427,7 +427,7 @@
                        goto out;
                case -EAGAIN:
        ret = nlm_lck_blocked;
  
        /* Append to list of blocked */
---- kernel-maemo-2.6.28.test.orig/fs/locks.c
-+++ kernel-maemo-2.6.28.test/fs/locks.c
+--- kernel-power-2.6.28.orig/fs/locks.c
++++ kernel-power-2.6.28/fs/locks.c
 @@ -1564,7 +1564,7 @@
   *    %LOCK_MAND can be combined with %LOCK_READ or %LOCK_WRITE to allow other
   *    processes read and write access respectively.
  {
        struct file *filp;
        struct file_lock *lock;
---- kernel-maemo-2.6.28.test.orig/fs/minix/dir.c
-+++ kernel-maemo-2.6.28.test/fs/minix/dir.c
+--- kernel-power-2.6.28.orig/fs/minix/dir.c
++++ kernel-power-2.6.28/fs/minix/dir.c
 @@ -280,7 +280,7 @@
        return -EINVAL;
  
        err = __minix_write_begin(NULL, page->mapping, pos, sbi->s_dirsize,
                                        AOP_FLAG_UNINTERRUPTIBLE, &page, NULL);
        if (err)
---- kernel-maemo-2.6.28.test.orig/fs/namei.c
-+++ kernel-maemo-2.6.28.test/fs/namei.c
+--- kernel-power-2.6.28.orig/fs/namei.c
++++ kernel-power-2.6.28/fs/namei.c
 @@ -1970,8 +1970,8 @@
        }
  }
  }
  
  const struct inode_operations page_symlink_inode_operations = {
---- kernel-maemo-2.6.28.test.orig/fs/namespace.c
-+++ kernel-maemo-2.6.28.test/fs/namespace.c
+--- kernel-power-2.6.28.orig/fs/namespace.c
++++ kernel-power-2.6.28/fs/namespace.c
 @@ -1128,7 +1128,7 @@
   * unixes. Our API is identical to OSF/1 to avoid making a mess of AMD
   */
  {
        struct vfsmount *tmp;
        struct path new, old, parent_path, root_parent, root;
---- kernel-maemo-2.6.28.test.orig/fs/nfs/file.c
-+++ kernel-maemo-2.6.28.test/fs/nfs/file.c
+--- kernel-power-2.6.28.orig/fs/nfs/file.c
++++ kernel-power-2.6.28/fs/nfs/file.c
 @@ -354,7 +354,7 @@
                file->f_path.dentry->d_name.name,
                mapping->host->i_ino, len, (long long) pos);
        if (!page)
                return -ENOMEM;
        *pagep = page;
---- kernel-maemo-2.6.28.test.orig/fs/nfs/read.c
-+++ kernel-maemo-2.6.28.test/fs/nfs/read.c
+--- kernel-power-2.6.28.orig/fs/nfs/read.c
++++ kernel-power-2.6.28/fs/nfs/read.c
 @@ -533,12 +533,6 @@
        unsigned int len;
        int error;
        len = nfs_page_length(page);
        if (len == 0)
                return nfs_return_empty_page(page);
---- kernel-maemo-2.6.28.test.orig/fs/nfsctl.c
-+++ kernel-maemo-2.6.28.test/fs/nfsctl.c
+--- kernel-power-2.6.28.orig/fs/nfsctl.c
++++ kernel-power-2.6.28/fs/nfsctl.c
 @@ -82,8 +82,8 @@
        },
  };
  {
        struct file *file;
        void __user *p = &arg->u;
---- kernel-maemo-2.6.28.test.orig/fs/nfsd/nfs4state.c
-+++ kernel-maemo-2.6.28.test/fs/nfsd/nfs4state.c
+--- kernel-power-2.6.28.orig/fs/nfsd/nfs4state.c
++++ kernel-power-2.6.28/fs/nfsd/nfs4state.c
 @@ -2769,6 +2769,25 @@
  }
  
        if (error) {
                status = nfserrno(error);
                goto out;
---- kernel-maemo-2.6.28.test.orig/fs/nfsd/nfs4xdr.c
-+++ kernel-maemo-2.6.28.test/fs/nfsd/nfs4xdr.c
+--- kernel-power-2.6.28.orig/fs/nfsd/nfs4xdr.c
++++ kernel-power-2.6.28/fs/nfsd/nfs4xdr.c
 @@ -2598,6 +2598,7 @@
        [OP_LOOKUPP]            = (nfsd4_enc)nfsd4_encode_noop,
        [OP_NVERIFY]            = (nfsd4_enc)nfsd4_encode_noop,
        [OP_OPEN_CONFIRM]       = (nfsd4_enc)nfsd4_encode_open_confirm,
        [OP_OPEN_DOWNGRADE]     = (nfsd4_enc)nfsd4_encode_open_downgrade,
        [OP_PUTFH]              = (nfsd4_enc)nfsd4_encode_noop,
---- kernel-maemo-2.6.28.test.orig/fs/ocfs2/file.c
-+++ kernel-maemo-2.6.28.test/fs/ocfs2/file.c
+--- kernel-power-2.6.28.orig/fs/ocfs2/file.c
++++ kernel-power-2.6.28/fs/ocfs2/file.c
 @@ -1943,7 +1943,7 @@
                   out->f_path.dentry->d_name.len,
                   out->f_path.dentry->d_name.name);
  
        mlog_exit(ret);
        return ret;
---- kernel-maemo-2.6.28.test.orig/fs/ocfs2/journal.h
-+++ kernel-maemo-2.6.28.test/fs/ocfs2/journal.h
+--- kernel-power-2.6.28.orig/fs/ocfs2/journal.h
++++ kernel-power-2.6.28/fs/ocfs2/journal.h
 @@ -445,8 +445,10 @@
  static inline int ocfs2_begin_ordered_truncate(struct inode *inode,
                                               loff_t new_size)
  }
  
  #endif /* OCFS2_JOURNAL_H */
---- kernel-maemo-2.6.28.test.orig/fs/open.c
-+++ kernel-maemo-2.6.28.test/fs/open.c
+--- kernel-power-2.6.28.orig/fs/open.c
++++ kernel-power-2.6.28/fs/open.c
 @@ -122,7 +122,7 @@
        return 0;
  }
  {
        if (capable(CAP_SYS_TTY_CONFIG)) {
                tty_vhangup_self();
---- kernel-maemo-2.6.28.test.orig/fs/pipe.c
-+++ kernel-maemo-2.6.28.test/fs/pipe.c
+--- kernel-power-2.6.28.orig/fs/pipe.c
++++ kernel-power-2.6.28/fs/pipe.c
 @@ -699,12 +699,12 @@
        int retval;
  
  {
        return sys_pipe2(fildes, 0);
  }
---- kernel-maemo-2.6.28.test.orig/fs/proc/base.c
-+++ kernel-maemo-2.6.28.test/fs/proc/base.c
+--- kernel-power-2.6.28.orig/fs/proc/base.c
++++ kernel-power-2.6.28/fs/proc/base.c
 @@ -148,15 +148,22 @@
        return count;
  }
        ret = -ENOMEM;
        p = kmalloc(sizeof(struct proc_mounts), GFP_KERNEL);
        if (!p)
---- kernel-maemo-2.6.28.test.orig/fs/proc/page.c
-+++ kernel-maemo-2.6.28.test/fs/proc/page.c
+--- kernel-power-2.6.28.orig/fs/proc/page.c
++++ kernel-power-2.6.28/fs/proc/page.c
 @@ -80,7 +80,7 @@
  #define KPF_RECLAIM    9
  #define KPF_BUDDY     10
                        kpf_copy_bit(kflags, KPF_ERROR, PG_error) |
                        kpf_copy_bit(kflags, KPF_REFERENCED, PG_referenced) |
                        kpf_copy_bit(kflags, KPF_UPTODATE, PG_uptodate) |
---- kernel-maemo-2.6.28.test.orig/fs/quota.c
-+++ kernel-maemo-2.6.28.test/fs/quota.c
+--- kernel-power-2.6.28.orig/fs/quota.c
++++ kernel-power-2.6.28/fs/quota.c
 @@ -368,7 +368,8 @@
   * calls. Maybe we need to add the process quotas etc. in the future,
   * but we probably should use rlimits for that.
  {
        uint cmds, type;
        struct super_block *sb = NULL;
---- kernel-maemo-2.6.28.test.orig/fs/read_write.c
-+++ kernel-maemo-2.6.28.test/fs/read_write.c
+--- kernel-power-2.6.28.orig/fs/read_write.c
++++ kernel-power-2.6.28/fs/read_write.c
 @@ -134,7 +134,7 @@
  }
  EXPORT_SYMBOL(vfs_llseek);
  {
        loff_t pos;
        ssize_t ret;
---- kernel-maemo-2.6.28.test.orig/fs/readdir.c
-+++ kernel-maemo-2.6.28.test/fs/readdir.c
+--- kernel-power-2.6.28.orig/fs/readdir.c
++++ kernel-power-2.6.28/fs/readdir.c
 @@ -102,7 +102,8 @@
        return -EFAULT;
  }
  {
        struct file * file;
        struct linux_dirent64 __user * lastdirent;
---- kernel-maemo-2.6.28.test.orig/fs/reiserfs/inode.c
-+++ kernel-maemo-2.6.28.test/fs/reiserfs/inode.c
+--- kernel-power-2.6.28.orig/fs/reiserfs/inode.c
++++ kernel-power-2.6.28/fs/reiserfs/inode.c
 @@ -2556,7 +2556,7 @@
        }
  
        if (!page)
                return -ENOMEM;
        *pagep = page;
---- kernel-maemo-2.6.28.test.orig/fs/select.c
-+++ kernel-maemo-2.6.28.test/fs/select.c
+--- kernel-power-2.6.28.orig/fs/select.c
++++ kernel-power-2.6.28/fs/select.c
 @@ -507,8 +507,8 @@
        return ret;
  }
  {
        sigset_t ksigmask, sigsaved;
        struct timespec ts, end_time, *to = NULL;
---- kernel-maemo-2.6.28.test.orig/fs/seq_file.c
-+++ kernel-maemo-2.6.28.test/fs/seq_file.c
+--- kernel-power-2.6.28.orig/fs/seq_file.c
++++ kernel-power-2.6.28/fs/seq_file.c
 @@ -48,12 +48,78 @@
         */
        file->f_version = 0;
                                        retval = file->f_pos = offset;
                                }
                        }
---- kernel-maemo-2.6.28.test.orig/fs/signalfd.c
-+++ kernel-maemo-2.6.28.test/fs/signalfd.c
+--- kernel-power-2.6.28.orig/fs/signalfd.c
++++ kernel-power-2.6.28/fs/signalfd.c
 @@ -205,8 +205,8 @@
        .read           = signalfd_read,
  };
  {
        return sys_signalfd4(ufd, user_mask, sizemask, 0);
  }
---- kernel-maemo-2.6.28.test.orig/fs/smbfs/file.c
-+++ kernel-maemo-2.6.28.test/fs/smbfs/file.c
+--- kernel-power-2.6.28.orig/fs/smbfs/file.c
++++ kernel-power-2.6.28/fs/smbfs/file.c
 @@ -297,7 +297,7 @@
                        struct page **pagep, void **fsdata)
  {
        if (!*pagep)
                return -ENOMEM;
        return 0;
---- kernel-maemo-2.6.28.test.orig/fs/splice.c
-+++ kernel-maemo-2.6.28.test/fs/splice.c
+--- kernel-power-2.6.28.orig/fs/splice.c
++++ kernel-power-2.6.28/fs/splice.c
 @@ -735,10 +735,19 @@
         * ->write_end. Most of the time, these expect i_mutex to
         * be held. Since this may result in an ABBA deadlock with
  {
        struct file *in;
        int error, fput_in;
---- kernel-maemo-2.6.28.test.orig/fs/stat.c
-+++ kernel-maemo-2.6.28.test/fs/stat.c
+--- kernel-power-2.6.28.orig/fs/stat.c
++++ kernel-power-2.6.28/fs/stat.c
 @@ -152,7 +152,7 @@
        return copy_to_user(statbuf,&tmp,sizeof(tmp)) ? -EFAULT : 0;
  }
  {
        struct kstat stat;
        int error = -EINVAL;
---- kernel-maemo-2.6.28.test.orig/fs/super.c
-+++ kernel-maemo-2.6.28.test/fs/super.c
+--- kernel-power-2.6.28.orig/fs/super.c
++++ kernel-power-2.6.28/fs/super.c
 @@ -534,7 +534,7 @@
        return NULL;
  }
  {
          struct super_block *s;
          struct ustat tmp;
---- kernel-maemo-2.6.28.test.orig/fs/sync.c
-+++ kernel-maemo-2.6.28.test/fs/sync.c
+--- kernel-power-2.6.28.orig/fs/sync.c
++++ kernel-power-2.6.28/fs/sync.c
 @@ -36,7 +36,7 @@
                laptop_sync_completion();
  }
                if (ret < 0)
                        goto out;
        }
---- kernel-maemo-2.6.28.test.orig/fs/sysfs/bin.c
-+++ kernel-maemo-2.6.28.test/fs/sysfs/bin.c
+--- kernel-power-2.6.28.orig/fs/sysfs/bin.c
++++ kernel-power-2.6.28/fs/sysfs/bin.c
 @@ -63,6 +63,9 @@
        int count = min_t(size_t, bytes, PAGE_SIZE);
        char *temp;
        if (size) {
                if (offs > size)
                        return 0;
---- kernel-maemo-2.6.28.test.orig/fs/timerfd.c
-+++ kernel-maemo-2.6.28.test/fs/timerfd.c
+--- kernel-power-2.6.28.orig/fs/timerfd.c
++++ kernel-power-2.6.28/fs/timerfd.c
 @@ -177,7 +177,7 @@
        return file;
  }
  {
        struct file *file;
        struct timerfd_ctx *ctx;
---- kernel-maemo-2.6.28.test.orig/fs/ubifs/file.c
-+++ kernel-maemo-2.6.28.test/fs/ubifs/file.c
+--- kernel-power-2.6.28.orig/fs/ubifs/file.c
++++ kernel-power-2.6.28/fs/ubifs/file.c
 @@ -219,7 +219,8 @@
  }
  
        }
  
        /*
---- kernel-maemo-2.6.28.test.orig/fs/utimes.c
-+++ kernel-maemo-2.6.28.test/fs/utimes.c
+--- kernel-power-2.6.28.orig/fs/utimes.c
++++ kernel-power-2.6.28/fs/utimes.c
 @@ -24,7 +24,7 @@
   * must be owner or have write permission.
   * Else, update from *times, must be owner or super user.
  {
        return sys_futimesat(AT_FDCWD, filename, utimes);
  }
---- kernel-maemo-2.6.28.test.orig/fs/xattr.c
-+++ kernel-maemo-2.6.28.test/fs/xattr.c
+--- kernel-power-2.6.28.orig/fs/xattr.c
++++ kernel-power-2.6.28/fs/xattr.c
 @@ -251,9 +251,9 @@
        return error;
  }
  {
        struct file *f;
        struct dentry *dentry;
---- kernel-maemo-2.6.28.test.orig/fs/xfs/linux-2.6/xfs_buf.c
-+++ kernel-maemo-2.6.28.test/fs/xfs/linux-2.6/xfs_buf.c
+--- kernel-power-2.6.28.orig/fs/xfs/linux-2.6/xfs_buf.c
++++ kernel-power-2.6.28/fs/xfs/linux-2.6/xfs_buf.c
 @@ -1114,8 +1114,7 @@
        unsigned int            blocksize = bp->b_target->bt_bsize;
        struct bio_vec          *bvec = bio->bi_io_vec + bio->bi_vcnt - 1;
  
        do {
                struct page     *page = bvec->bv_page;
---- kernel-maemo-2.6.28.test.orig/fs/xfs/xfs_dir2_block.c
-+++ kernel-maemo-2.6.28.test/fs/xfs/xfs_dir2_block.c
+--- kernel-power-2.6.28.orig/fs/xfs/xfs_dir2_block.c
++++ kernel-power-2.6.28/fs/xfs/xfs_dir2_block.c
 @@ -517,9 +517,9 @@
                /*
                 * If it didn't fit, set the final offset to here & return.
        xfs_da_brelse(NULL, bp);
        return 0;
  }
---- kernel-maemo-2.6.28.test.orig/fs/xfs/xfs_dir2_leaf.c
-+++ kernel-maemo-2.6.28.test/fs/xfs/xfs_dir2_leaf.c
+--- kernel-power-2.6.28.orig/fs/xfs/xfs_dir2_leaf.c
++++ kernel-power-2.6.28/fs/xfs/xfs_dir2_leaf.c
 @@ -1092,7 +1092,7 @@
                 * Won't fit.  Return to caller.
                 */
        kmem_free(map);
        if (bp)
                xfs_da_brelse(NULL, bp);
---- kernel-maemo-2.6.28.test.orig/fs/xfs/xfs_dir2_sf.c
-+++ kernel-maemo-2.6.28.test/fs/xfs/xfs_dir2_sf.c
+--- kernel-power-2.6.28.orig/fs/xfs/xfs_dir2_sf.c
++++ kernel-power-2.6.28/fs/xfs/xfs_dir2_sf.c
 @@ -752,8 +752,8 @@
  #if XFS_BIG_INUMS
                ino += mp->m_inoadd;
        return 0;
  }
  
---- kernel-maemo-2.6.28.test.orig/include/acpi/pdc_intel.h
-+++ kernel-maemo-2.6.28.test/include/acpi/pdc_intel.h
+--- kernel-power-2.6.28.orig/include/acpi/pdc_intel.h
++++ kernel-power-2.6.28/include/acpi/pdc_intel.h
 @@ -14,6 +14,7 @@
  #define ACPI_PDC_SMP_T_SWCOORD                (0x0080)
  #define ACPI_PDC_C_C1_FFH             (0x0100)
                                         ACPI_PDC_P_FFH)
  
  #define ACPI_PDC_C_CAPABILITY_SMP     (ACPI_PDC_SMP_C2C3  | \
---- kernel-maemo-2.6.28.test.orig/include/drm/i915_drm.h
-+++ kernel-maemo-2.6.28.test/include/drm/i915_drm.h
+--- kernel-power-2.6.28.orig/include/drm/i915_drm.h
++++ kernel-power-2.6.28/include/drm/i915_drm.h
 @@ -177,6 +177,8 @@
  #define DRM_IOCTL_I915_SET_VBLANK_PIPE        DRM_IOW( DRM_COMMAND_BASE + DRM_I915_SET_VBLANK_PIPE, drm_i915_vblank_pipe_t)
  #define DRM_IOCTL_I915_GET_VBLANK_PIPE        DRM_IOR( DRM_COMMAND_BASE + DRM_I915_GET_VBLANK_PIPE, drm_i915_vblank_pipe_t)
  #define DRM_IOCTL_I915_GEM_PIN                DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_PIN, struct drm_i915_gem_pin)
  #define DRM_IOCTL_I915_GEM_UNPIN      DRM_IOW(DRM_COMMAND_BASE + DRM_I915_GEM_UNPIN, struct drm_i915_gem_unpin)
  #define DRM_IOCTL_I915_GEM_BUSY               DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_BUSY, struct drm_i915_gem_busy)
---- kernel-maemo-2.6.28.test.orig/include/linux/Kbuild
-+++ kernel-maemo-2.6.28.test/include/linux/Kbuild
+--- kernel-power-2.6.28.orig/include/linux/Kbuild
++++ kernel-power-2.6.28/include/linux/Kbuild
 @@ -41,6 +41,7 @@
  header-y += bfs_fs.h
  header-y += blkpg.h
  unifdef-y += if_vlan.h
  unifdef-y += igmp.h
  unifdef-y += inet_diag.h
---- kernel-maemo-2.6.28.test.orig/include/linux/ata.h
-+++ kernel-maemo-2.6.28.test/include/linux/ata.h
+--- kernel-power-2.6.28.orig/include/linux/ata.h
++++ kernel-power-2.6.28/include/linux/ata.h
 @@ -731,12 +731,17 @@
  
  static inline int ata_id_is_cfa(const u16 *id)
                return 1;
        return 0;
  }
---- kernel-maemo-2.6.28.test.orig/include/linux/capability.h
-+++ kernel-maemo-2.6.28.test/include/linux/capability.h
+--- kernel-power-2.6.28.orig/include/linux/capability.h
++++ kernel-power-2.6.28/include/linux/capability.h
 @@ -366,7 +366,21 @@
  #define CAP_FOR_EACH_U32(__capi)  \
        for (__capi = 0; __capi < _KERNEL_CAPABILITY_U32S; ++__capi)
  
  #endif /* _KERNEL_CAPABILITY_U32S != 2 */
  
---- kernel-maemo-2.6.28.test.orig/include/linux/compat.h
-+++ kernel-maemo-2.6.28.test/include/linux/compat.h
+--- kernel-power-2.6.28.orig/include/linux/compat.h
++++ kernel-power-2.6.28/include/linux/compat.h
 @@ -280,5 +280,18 @@
  asmlinkage long compat_sys_timerfd_gettime(int ufd,
                                   struct compat_itimerspec __user *otmr);
 +
  #endif /* CONFIG_COMPAT */
  #endif /* _LINUX_COMPAT_H */
---- kernel-maemo-2.6.28.test.orig/include/linux/fs.h
-+++ kernel-maemo-2.6.28.test/include/linux/fs.h
+--- kernel-power-2.6.28.orig/include/linux/fs.h
++++ kernel-power-2.6.28/include/linux/fs.h
 @@ -63,24 +63,30 @@
  #define MAY_ACCESS 16
  #define MAY_OPEN 32
  extern int page_symlink(struct inode *inode, const char *symname, int len);
  extern const struct inode_operations page_symlink_inode_operations;
  extern int generic_readlink(struct dentry *, char __user *, int);
---- kernel-maemo-2.6.28.test.orig/include/linux/genhd.h
-+++ kernel-maemo-2.6.28.test/include/linux/genhd.h
+--- kernel-power-2.6.28.orig/include/linux/genhd.h
++++ kernel-power-2.6.28/include/linux/genhd.h
 @@ -213,6 +213,7 @@
  #define DISK_PITER_REVERSE    (1 << 0) /* iterate in the reverse direction */
  #define DISK_PITER_INCL_EMPTY (1 << 1) /* include 0-sized parts */
  
  struct disk_part_iter {
        struct gendisk          *disk;
---- kernel-maemo-2.6.28.test.orig/include/linux/if_tunnel.h
-+++ kernel-maemo-2.6.28.test/include/linux/if_tunnel.h
+--- kernel-power-2.6.28.orig/include/linux/if_tunnel.h
++++ kernel-power-2.6.28/include/linux/if_tunnel.h
 @@ -2,7 +2,10 @@
  #define _IF_TUNNEL_H_
  
  
  #define SIOCGETTUNNEL   (SIOCDEVPRIVATE + 0)
  #define SIOCADDTUNNEL   (SIOCDEVPRIVATE + 1)
---- kernel-maemo-2.6.28.test.orig/include/linux/jbd2.h
-+++ kernel-maemo-2.6.28.test/include/linux/jbd2.h
+--- kernel-power-2.6.28.orig/include/linux/jbd2.h
++++ kernel-power-2.6.28/include/linux/jbd2.h
 @@ -308,7 +308,8 @@
                int val = (expr);                                            \
                if (!val) {                                                  \
  extern void      jbd2_journal_init_jbd_inode(struct jbd2_inode *jinode, struct inode *inode);
  extern void      jbd2_journal_release_jbd_inode(journal_t *journal, struct jbd2_inode *jinode);
  
---- kernel-maemo-2.6.28.test.orig/include/linux/klist.h
-+++ kernel-maemo-2.6.28.test/include/linux/klist.h
+--- kernel-power-2.6.28.orig/include/linux/klist.h
++++ kernel-power-2.6.28/include/linux/klist.h
 @@ -23,7 +23,7 @@
        struct list_head        k_list;
        void                    (*get)(struct klist_node *);
  
  #define KLIST_INIT(_name, _get, _put)                                 \
        { .k_lock       = __SPIN_LOCK_UNLOCKED(_name.k_lock),           \
---- kernel-maemo-2.6.28.test.orig/include/linux/kvm.h
-+++ kernel-maemo-2.6.28.test/include/linux/kvm.h
+--- kernel-power-2.6.28.orig/include/linux/kvm.h
++++ kernel-power-2.6.28/include/linux/kvm.h
 @@ -387,6 +387,8 @@
  #define KVM_CAP_DEVICE_ASSIGNMENT 17
  #endif
  
  /*
   * ioctls for VM fds
---- kernel-maemo-2.6.28.test.orig/include/linux/mm.h
-+++ kernel-maemo-2.6.28.test/include/linux/mm.h
+--- kernel-power-2.6.28.orig/include/linux/mm.h
++++ kernel-power-2.6.28/include/linux/mm.h
 @@ -253,7 +253,6 @@
   */
  static inline int get_page_unless_zero(struct page *page)
  extern void set_dma_reserve(unsigned long new_dma_reserve);
  extern void memmap_init_zone(unsigned long, int, unsigned long,
                                unsigned long, enum memmap_context);
---- kernel-maemo-2.6.28.test.orig/include/linux/mmzone.h
-+++ kernel-maemo-2.6.28.test/include/linux/mmzone.h
+--- kernel-power-2.6.28.orig/include/linux/mmzone.h
++++ kernel-power-2.6.28/include/linux/mmzone.h
 @@ -1067,7 +1067,7 @@
  #endif /* CONFIG_SPARSEMEM */
  
  #else
  #define early_pfn_in_nid(pfn, nid)    (1)
  #endif
---- kernel-maemo-2.6.28.test.orig/include/linux/mod_devicetable.h
-+++ kernel-maemo-2.6.28.test/include/linux/mod_devicetable.h
+--- kernel-power-2.6.28.orig/include/linux/mod_devicetable.h
++++ kernel-power-2.6.28/include/linux/mod_devicetable.h
 @@ -443,6 +443,13 @@
        struct dmi_strmatch matches[4];
        void *driver_data;
  #endif
  
  #define DMI_MATCH(a, b)       { a, b }
---- kernel-maemo-2.6.28.test.orig/include/linux/module.h
-+++ kernel-maemo-2.6.28.test/include/linux/module.h
+--- kernel-power-2.6.28.orig/include/linux/module.h
++++ kernel-power-2.6.28/include/linux/module.h
 @@ -391,7 +391,6 @@
  static inline void __module_get(struct module *module)
  {
                local_inc(&module->ref[get_cpu()].count);
                put_cpu();
        }
---- kernel-maemo-2.6.28.test.orig/include/linux/pagemap.h
-+++ kernel-maemo-2.6.28.test/include/linux/pagemap.h
+--- kernel-power-2.6.28.orig/include/linux/pagemap.h
++++ kernel-power-2.6.28/include/linux/pagemap.h
 @@ -18,9 +18,14 @@
   * Bits in mapping->flags.  The lower __GFP_BITS_SHIFT bits are the page
   * allocation mode flags.
  
  /*
   * Returns locked page at given index in given cache, creating it if needed.
---- kernel-maemo-2.6.28.test.orig/include/linux/pci.h
-+++ kernel-maemo-2.6.28.test/include/linux/pci.h
+--- kernel-power-2.6.28.orig/include/linux/pci.h
++++ kernel-power-2.6.28/include/linux/pci.h
 @@ -651,7 +651,7 @@
  void pci_disable_rom(struct pci_dev *pdev);
  void __iomem __must_check *pci_map_rom(struct pci_dev *pdev, size_t *size);
  
  /* Power management related routines */
  int pci_save_state(struct pci_dev *dev);
---- kernel-maemo-2.6.28.test.orig/include/linux/pci_ids.h
-+++ kernel-maemo-2.6.28.test/include/linux/pci_ids.h
+--- kernel-power-2.6.28.orig/include/linux/pci_ids.h
++++ kernel-power-2.6.28/include/linux/pci_ids.h
 @@ -1312,6 +1312,7 @@
  #define PCI_DEVICE_ID_VIA_VT3351      0x0351
  #define PCI_DEVICE_ID_VIA_VT3364      0x0364
  #define PCI_DEVICE_ID_INTEL_ICH7_31   0x27bd
  #define PCI_DEVICE_ID_INTEL_ICH7_17   0x27da
  #define PCI_DEVICE_ID_INTEL_ICH7_19   0x27dd
---- kernel-maemo-2.6.28.test.orig/include/linux/pci_regs.h
-+++ kernel-maemo-2.6.28.test/include/linux/pci_regs.h
+--- kernel-power-2.6.28.orig/include/linux/pci_regs.h
++++ kernel-power-2.6.28/include/linux/pci_regs.h
 @@ -234,7 +234,7 @@
  #define  PCI_PM_CAP_PME_SHIFT 11      /* Start of the PME Mask in PMC */
  #define PCI_PM_CTRL           4       /* PM control and status register */
  #define  PCI_PM_CTRL_PME_ENABLE       0x0100  /* PME pin enable */
  #define  PCI_PM_CTRL_DATA_SEL_MASK    0x1e00  /* Data select (??) */
  #define  PCI_PM_CTRL_DATA_SCALE_MASK  0x6000  /* Data scale (??) */
---- kernel-maemo-2.6.28.test.orig/include/linux/pid.h
-+++ kernel-maemo-2.6.28.test/include/linux/pid.h
+--- kernel-power-2.6.28.orig/include/linux/pid.h
++++ kernel-power-2.6.28/include/linux/pid.h
 @@ -123,6 +123,24 @@
  extern void free_pid(struct pid *pid);
  
   * the helpers to get the pid's id seen from different namespaces
   *
   * pid_nr()    : global id, i.e. the id seen from the init namespace;
---- kernel-maemo-2.6.28.test.orig/include/linux/radix-tree.h
-+++ kernel-maemo-2.6.28.test/include/linux/radix-tree.h
+--- kernel-power-2.6.28.orig/include/linux/radix-tree.h
++++ kernel-power-2.6.28/include/linux/radix-tree.h
 @@ -136,7 +136,7 @@
   */
  static inline void *radix_tree_deref_slot(void **pslot)
        if (unlikely(radix_tree_is_indirect_ptr(ret)))
                ret = RADIX_TREE_RETRY;
        return ret;
---- kernel-maemo-2.6.28.test.orig/include/linux/raid/md_k.h
-+++ kernel-maemo-2.6.28.test/include/linux/raid/md_k.h
+--- kernel-power-2.6.28.orig/include/linux/raid/md_k.h
++++ kernel-power-2.6.28/include/linux/raid/md_k.h
 @@ -245,6 +245,8 @@
                                                         * file in sysfs.
                                                         */
        spinlock_t                      write_lock;
        wait_queue_head_t               sb_wait;        /* for waiting on superblock updates */
        atomic_t                        pending_writes; /* number of active superblock writes */
---- kernel-maemo-2.6.28.test.orig/include/linux/sched.h
-+++ kernel-maemo-2.6.28.test/include/linux/sched.h
+--- kernel-power-2.6.28.orig/include/linux/sched.h
++++ kernel-power-2.6.28/include/linux/sched.h
 @@ -201,7 +201,8 @@
  #define task_is_stopped_or_traced(task)       \
                        ((task->state & (__TASK_STOPPED | __TASK_TRACED)) != 0)
  
  #define __set_task_state(tsk, state_value)            \
        do { (tsk)->state = (state_value); } while (0)
---- kernel-maemo-2.6.28.test.orig/include/linux/seq_file.h
-+++ kernel-maemo-2.6.28.test/include/linux/seq_file.h
+--- kernel-power-2.6.28.orig/include/linux/seq_file.h
++++ kernel-power-2.6.28/include/linux/seq_file.h
 @@ -19,6 +19,7 @@
        size_t from;
        size_t count;
        u64 version;
        struct mutex lock;
        const struct seq_operations *op;
---- kernel-maemo-2.6.28.test.orig/include/linux/serial_core.h
-+++ kernel-maemo-2.6.28.test/include/linux/serial_core.h
+--- kernel-power-2.6.28.orig/include/linux/serial_core.h
++++ kernel-power-2.6.28/include/linux/serial_core.h
 @@ -288,6 +288,7 @@
  #define UPF_HARDPPS_CD                ((__force upf_t) (1 << 11))
  #define UPF_LOW_LATENCY               ((__force upf_t) (1 << 13))
  #define UPF_MAGIC_MULTIPLIER  ((__force upf_t) (1 << 16))
  #define UPF_CONS_FLOW         ((__force upf_t) (1 << 23))
  #define UPF_SHARE_IRQ         ((__force upf_t) (1 << 24))
---- kernel-maemo-2.6.28.test.orig/include/linux/skbuff.h
-+++ kernel-maemo-2.6.28.test/include/linux/skbuff.h
+--- kernel-power-2.6.28.orig/include/linux/skbuff.h
++++ kernel-power-2.6.28/include/linux/skbuff.h
 @@ -411,15 +411,6 @@
                                     void *here);
  extern void         skb_under_panic(struct sk_buff *skb, int len,
  
  extern int skb_append_datato_frags(struct sock *sk, struct sk_buff *skb,
                        int getfrag(void *from, char *to, int offset,
---- kernel-maemo-2.6.28.test.orig/include/linux/slab_def.h
-+++ kernel-maemo-2.6.28.test/include/linux/slab_def.h
+--- kernel-power-2.6.28.orig/include/linux/slab_def.h
++++ kernel-power-2.6.28/include/linux/slab_def.h
 @@ -43,10 +43,7 @@
                        i++;
  #include <linux/kmalloc_sizes.h>
  found:
  #ifdef CONFIG_ZONE_DMA
                if (flags & GFP_DMA)
---- kernel-maemo-2.6.28.test.orig/include/linux/syscalls.h
-+++ kernel-maemo-2.6.28.test/include/linux/syscalls.h
+--- kernel-power-2.6.28.orig/include/linux/syscalls.h
++++ kernel-power-2.6.28/include/linux/syscalls.h
 @@ -54,6 +54,7 @@
  struct compat_timeval;
  struct robust_list_head;
  
  int kernel_execve(const char *filename, char *const argv[], char *const envp[]);
  
---- kernel-maemo-2.6.28.test.orig/include/linux/time.h
-+++ kernel-maemo-2.6.28.test/include/linux/time.h
+--- kernel-power-2.6.28.orig/include/linux/time.h
++++ kernel-power-2.6.28/include/linux/time.h
 @@ -105,6 +105,7 @@
  extern int update_persistent_clock(struct timespec now);
  extern int no_sync_cmos_clock __read_mostly;
  
  unsigned long get_seconds(void);
  struct timespec current_kernel_time(void);
---- kernel-maemo-2.6.28.test.orig/include/linux/timerfd.h
-+++ kernel-maemo-2.6.28.test/include/linux/timerfd.h
+--- kernel-power-2.6.28.orig/include/linux/timerfd.h
++++ kernel-power-2.6.28/include/linux/timerfd.h
 @@ -11,13 +11,21 @@
  /* For O_CLOEXEC and O_NONBLOCK */
  #include <linux/fcntl.h>
  
  #endif /* _LINUX_TIMERFD_H */
 -
---- kernel-maemo-2.6.28.test.orig/include/linux/usb/quirks.h
-+++ kernel-maemo-2.6.28.test/include/linux/usb/quirks.h
+--- kernel-power-2.6.28.orig/include/linux/usb/quirks.h
++++ kernel-power-2.6.28/include/linux/usb/quirks.h
 @@ -16,4 +16,7 @@
  /* device can't handle Set-Interface requests */
  #define USB_QUIRK_NO_SET_INTF         0x00000004
 +#define USB_QUIRK_CONFIG_INTF_STRINGS 0x00000008
 +
  #endif /* __LINUX_USB_QUIRKS_H */
---- kernel-maemo-2.6.28.test.orig/include/linux/usb_usual.h
-+++ kernel-maemo-2.6.28.test/include/linux/usb_usual.h
+--- kernel-power-2.6.28.orig/include/linux/usb_usual.h
++++ kernel-power-2.6.28/include/linux/usb_usual.h
 @@ -52,8 +52,9 @@
        US_FLAG(MAX_SECTORS_MIN,0x00002000)                     \
                /* Sets max_sectors to arch min */              \
  
  #define US_FLAG(name, value)  US_FL_##name = value ,
  enum { US_DO_ALL_FLAGS };
---- kernel-maemo-2.6.28.test.orig/include/linux/wait.h
-+++ kernel-maemo-2.6.28.test/include/linux/wait.h
+--- kernel-power-2.6.28.orig/include/linux/wait.h
++++ kernel-power-2.6.28/include/linux/wait.h
 @@ -132,6 +132,8 @@
        list_del(&old->task_list);
  }
  int autoremove_wake_function(wait_queue_t *wait, unsigned mode, int sync, void *key);
  int wake_bit_function(wait_queue_t *wait, unsigned mode, int sync, void *key);
  
---- kernel-maemo-2.6.28.test.orig/include/linux/writeback.h
-+++ kernel-maemo-2.6.28.test/include/linux/writeback.h
+--- kernel-power-2.6.28.orig/include/linux/writeback.h
++++ kernel-power-2.6.28/include/linux/writeback.h
 @@ -30,7 +30,6 @@
  enum writeback_sync_modes {
        WB_SYNC_NONE,   /* Don't wait on anything */
  };
  
  /*
---- kernel-maemo-2.6.28.test.orig/include/net/sctp/checksum.h
-+++ kernel-maemo-2.6.28.test/include/net/sctp/checksum.h
+--- kernel-power-2.6.28.orig/include/net/sctp/checksum.h
++++ kernel-power-2.6.28/include/net/sctp/checksum.h
 @@ -79,5 +79,5 @@
  
  static inline __be32 sctp_end_cksum(__be32 crc32)
 -      return ~crc32;
 +      return (__force __be32)~cpu_to_le32((__force u32)crc32);
  }
---- kernel-maemo-2.6.28.test.orig/include/net/sock.h
-+++ kernel-maemo-2.6.28.test/include/net/sock.h
+--- kernel-power-2.6.28.orig/include/net/sock.h
++++ kernel-power-2.6.28/include/net/sock.h
 @@ -784,7 +784,6 @@
  
  static inline void sk_wmem_free_skb(struct sock *sk, struct sk_buff *skb)
        sock_set_flag(sk, SOCK_QUEUE_SHRUNK);
        sk->sk_wmem_queued -= skb->truesize;
        sk_mem_uncharge(sk, skb->truesize);
---- kernel-maemo-2.6.28.test.orig/init/Kconfig
-+++ kernel-maemo-2.6.28.test/init/Kconfig
+--- kernel-power-2.6.28.orig/init/Kconfig
++++ kernel-power-2.6.28/init/Kconfig
 @@ -538,6 +538,9 @@
  config SYSCTL
        bool
  choice
        prompt "Choose SLAB allocator"
        default SLUB
---- kernel-maemo-2.6.28.test.orig/ipc/mqueue.c
-+++ kernel-maemo-2.6.28.test/ipc/mqueue.c
+--- kernel-power-2.6.28.orig/ipc/mqueue.c
++++ kernel-power-2.6.28/ipc/mqueue.c
 @@ -506,7 +506,8 @@
                        sig_i.si_errno = 0;
                        sig_i.si_code = SI_MESGQ;
  {
        int ret;
        struct mq_attr mqstat, omqstat;
---- kernel-maemo-2.6.28.test.orig/ipc/msg.c
-+++ kernel-maemo-2.6.28.test/ipc/msg.c
+--- kernel-power-2.6.28.orig/ipc/msg.c
++++ kernel-power-2.6.28/ipc/msg.c
 @@ -309,7 +309,7 @@
        return security_msg_queue_associate(msq, msgflg);
  }
  {
        long err, mtype;
  
---- kernel-maemo-2.6.28.test.orig/ipc/sem.c
-+++ kernel-maemo-2.6.28.test/ipc/sem.c
+--- kernel-power-2.6.28.orig/ipc/sem.c
++++ kernel-power-2.6.28/ipc/sem.c
 @@ -308,7 +308,7 @@
        return 0;
  }
  {
        return sys_semtimedop(semid, tsops, nsops, NULL);
  }
---- kernel-maemo-2.6.28.test.orig/ipc/shm.c
-+++ kernel-maemo-2.6.28.test/ipc/shm.c
+--- kernel-power-2.6.28.orig/ipc/shm.c
++++ kernel-power-2.6.28/ipc/shm.c
 @@ -440,7 +440,7 @@
        return 0;
  }
  {
        struct mm_struct *mm = current->mm;
        struct vm_area_struct *vma, *next;
---- kernel-maemo-2.6.28.test.orig/kernel/acct.c
-+++ kernel-maemo-2.6.28.test/kernel/acct.c
+--- kernel-power-2.6.28.orig/kernel/acct.c
++++ kernel-power-2.6.28/kernel/acct.c
 @@ -277,7 +277,7 @@
   * should be written. If the filename is NULL, accounting will be
   * shutdown.
  {
        int error;
  
---- kernel-maemo-2.6.28.test.orig/kernel/capability.c
-+++ kernel-maemo-2.6.28.test/kernel/capability.c
+--- kernel-power-2.6.28.orig/kernel/capability.c
++++ kernel-power-2.6.28/kernel/capability.c
 @@ -348,7 +348,7 @@
   *
   * Returns 0 on success and < 0 on error.
  {
        struct __user_cap_data_struct kdata[_KERNEL_CAPABILITY_U32S];
        unsigned i, tocopy;
---- kernel-maemo-2.6.28.test.orig/kernel/exec_domain.c
-+++ kernel-maemo-2.6.28.test/kernel/exec_domain.c
+--- kernel-power-2.6.28.orig/kernel/exec_domain.c
++++ kernel-power-2.6.28/kernel/exec_domain.c
 @@ -209,8 +209,7 @@
  module_init(proc_execdomains_init);
  #endif
  {
        u_long old = current->personality;
  
---- kernel-maemo-2.6.28.test.orig/kernel/exit.c
-+++ kernel-maemo-2.6.28.test/kernel/exit.c
+--- kernel-power-2.6.28.orig/kernel/exit.c
++++ kernel-power-2.6.28/kernel/exit.c
 @@ -942,8 +942,7 @@
         */
        if (tsk->exit_signal != SIGCHLD && !task_detached(tsk) &&
  {
        return sys_wait4(pid, stat_addr, options, NULL);
  }
---- kernel-maemo-2.6.28.test.orig/kernel/fork.c
-+++ kernel-maemo-2.6.28.test/kernel/fork.c
+--- kernel-power-2.6.28.orig/kernel/fork.c
++++ kernel-power-2.6.28/kernel/fork.c
 @@ -894,7 +894,7 @@
        clear_freeze_flag(p);
  }
  {
        int err = 0;
        struct fs_struct *fs, *new_fs = NULL;
---- kernel-maemo-2.6.28.test.orig/kernel/futex.c
-+++ kernel-maemo-2.6.28.test/kernel/futex.c
+--- kernel-power-2.6.28.orig/kernel/futex.c
++++ kernel-power-2.6.28/kernel/futex.c
 @@ -1800,9 +1800,8 @@
   * @head: pointer to the list-head
   * @len: length of the list-head, as userspace expects
  {
        struct timespec ts;
        ktime_t t, *tp = NULL;
---- kernel-maemo-2.6.28.test.orig/kernel/hrtimer.c
-+++ kernel-maemo-2.6.28.test/kernel/hrtimer.c
+--- kernel-power-2.6.28.orig/kernel/hrtimer.c
++++ kernel-power-2.6.28/kernel/hrtimer.c
 @@ -1630,8 +1630,8 @@
        return ret;
  }
  {
        struct timespec tu;
  
---- kernel-maemo-2.6.28.test.orig/kernel/itimer.c
-+++ kernel-maemo-2.6.28.test/kernel/itimer.c
+--- kernel-power-2.6.28.orig/kernel/itimer.c
++++ kernel-power-2.6.28/kernel/itimer.c
 @@ -100,7 +100,7 @@
        return 0;
  }
  {
        struct itimerval set_buffer, get_buffer;
        int error;
---- kernel-maemo-2.6.28.test.orig/kernel/kexec.c
-+++ kernel-maemo-2.6.28.test/kernel/kexec.c
+--- kernel-power-2.6.28.orig/kernel/kexec.c
++++ kernel-power-2.6.28/kernel/kexec.c
 @@ -934,9 +934,8 @@
  
  static DEFINE_MUTEX(kexec_mutex);
  {
        struct kimage **dest_image, *image;
        int result;
---- kernel-maemo-2.6.28.test.orig/kernel/kprobes.c
-+++ kernel-maemo-2.6.28.test/kernel/kprobes.c
+--- kernel-power-2.6.28.orig/kernel/kprobes.c
++++ kernel-power-2.6.28/kernel/kprobes.c
 @@ -901,10 +901,8 @@
                ri->rp = rp;
                ri->task = current;
  
                arch_prepare_kretprobe(ri, regs);
  
---- kernel-maemo-2.6.28.test.orig/kernel/module.c
-+++ kernel-maemo-2.6.28.test/kernel/module.c
+--- kernel-power-2.6.28.orig/kernel/module.c
++++ kernel-power-2.6.28/kernel/module.c
 @@ -743,8 +743,8 @@
        mutex_lock(&module_mutex);
  }
  {
        struct module *mod;
        int ret = 0;
---- kernel-maemo-2.6.28.test.orig/kernel/posix-cpu-timers.c
-+++ kernel-maemo-2.6.28.test/kernel/posix-cpu-timers.c
+--- kernel-power-2.6.28.orig/kernel/posix-cpu-timers.c
++++ kernel-power-2.6.28/kernel/posix-cpu-timers.c
 @@ -294,7 +294,7 @@
                cpu->cpu = virt_ticks(p);
                break;
                break;
        }
        return 0;
---- kernel-maemo-2.6.28.test.orig/kernel/posix-timers.c
-+++ kernel-maemo-2.6.28.test/kernel/posix-timers.c
+--- kernel-power-2.6.28.orig/kernel/posix-timers.c
++++ kernel-power-2.6.28/kernel/posix-timers.c
 @@ -477,10 +477,9 @@
  
  /* Create a POSIX.1b interval timer. */
  {
        struct timespec t;
  
---- kernel-maemo-2.6.28.test.orig/kernel/printk.c
-+++ kernel-maemo-2.6.28.test/kernel/printk.c
+--- kernel-power-2.6.28.orig/kernel/printk.c
++++ kernel-power-2.6.28/kernel/printk.c
 @@ -386,7 +386,7 @@
        return error;
  }
  static void call_console_drivers(unsigned start, unsigned end)
  {
  }
---- kernel-maemo-2.6.28.test.orig/kernel/ptrace.c
-+++ kernel-maemo-2.6.28.test/kernel/ptrace.c
+--- kernel-power-2.6.28.orig/kernel/ptrace.c
++++ kernel-power-2.6.28/kernel/ptrace.c
 @@ -545,7 +545,7 @@
  #define arch_ptrace_attach(child)     do { } while (0)
  #endif
  {
        struct task_struct *child;
        long ret;
---- kernel-maemo-2.6.28.test.orig/kernel/relay.c
-+++ kernel-maemo-2.6.28.test/kernel/relay.c
+--- kernel-power-2.6.28.orig/kernel/relay.c
++++ kernel-power-2.6.28/kernel/relay.c
 @@ -663,8 +663,10 @@
  
        mutex_lock(&relay_channels_mutex);
        chan->has_base_filename = 1;
        chan->parent = parent;
        curr_cpu = get_cpu();
---- kernel-maemo-2.6.28.test.orig/kernel/resource.c
-+++ kernel-maemo-2.6.28.test/kernel/resource.c
+--- kernel-power-2.6.28.orig/kernel/resource.c
++++ kernel-power-2.6.28/kernel/resource.c
 @@ -853,6 +853,15 @@
                if (PFN_DOWN(p->start) <= PFN_DOWN(addr) &&
                    PFN_DOWN(p->end) >= PFN_DOWN(addr + size - 1))
                printk(KERN_WARNING "resource map sanity check conflict: "
                       "0x%llx 0x%llx 0x%llx 0x%llx %s\n",
                       (unsigned long long)addr,
---- kernel-maemo-2.6.28.test.orig/kernel/sched.c
-+++ kernel-maemo-2.6.28.test/kernel/sched.c
+--- kernel-power-2.6.28.orig/kernel/sched.c
++++ kernel-power-2.6.28/kernel/sched.c
 @@ -4064,9 +4064,25 @@
  EXPORT_PER_CPU_SYMBOL(kstat);
  
  {
        struct task_struct *p;
        unsigned int time_slice;
---- kernel-maemo-2.6.28.test.orig/kernel/sched_clock.c
-+++ kernel-maemo-2.6.28.test/kernel/sched_clock.c
+--- kernel-power-2.6.28.orig/kernel/sched_clock.c
++++ kernel-power-2.6.28/kernel/sched_clock.c
 @@ -124,7 +124,7 @@
  
        clock = scd->tick_gtod + delta;
        sched_clock_tick();
        touch_softlockup_watchdog();
  }
---- kernel-maemo-2.6.28.test.orig/kernel/sched_fair.c
-+++ kernel-maemo-2.6.28.test/kernel/sched_fair.c
+--- kernel-power-2.6.28.orig/kernel/sched_fair.c
++++ kernel-power-2.6.28/kernel/sched_fair.c
 @@ -283,7 +283,7 @@
                                                   struct sched_entity,
                                                   run_node);
        if (!sched_feat(WAKEUP_PREEMPT))
                return;
  
---- kernel-maemo-2.6.28.test.orig/kernel/seccomp.c
-+++ kernel-maemo-2.6.28.test/kernel/seccomp.c
+--- kernel-power-2.6.28.orig/kernel/seccomp.c
++++ kernel-power-2.6.28/kernel/seccomp.c
 @@ -8,6 +8,7 @@
  
  #include <linux/seccomp.h>
                        syscall = mode1_syscalls_32;
  #endif
                do {
---- kernel-maemo-2.6.28.test.orig/kernel/signal.c
-+++ kernel-maemo-2.6.28.test/kernel/signal.c
+--- kernel-power-2.6.28.orig/kernel/signal.c
++++ kernel-power-2.6.28/kernel/signal.c
 @@ -1552,7 +1552,15 @@
        read_lock(&tasklist_lock);
        if (may_ptrace_stop()) {
  {
        sigset_t newset;
  
---- kernel-maemo-2.6.28.test.orig/kernel/sys.c
-+++ kernel-maemo-2.6.28.test/kernel/sys.c
+--- kernel-power-2.6.28.orig/kernel/sys.c
++++ kernel-power-2.6.28/kernel/sys.c
 @@ -137,7 +137,7 @@
        return error;
  }
  {
        int err = 0;
        int cpu = raw_smp_processor_id();
---- kernel-maemo-2.6.28.test.orig/kernel/sys_ni.c
-+++ kernel-maemo-2.6.28.test/kernel/sys_ni.c
+--- kernel-power-2.6.28.orig/kernel/sys_ni.c
++++ kernel-power-2.6.28/kernel/sys_ni.c
 @@ -131,6 +131,7 @@
  cond_syscall(sys_io_submit);
  cond_syscall(sys_io_cancel);
  
  /* arch-specific weak syscall entries */
  cond_syscall(sys_pciconfig_read);
---- kernel-maemo-2.6.28.test.orig/kernel/sysctl.c
-+++ kernel-maemo-2.6.28.test/kernel/sysctl.c
+--- kernel-power-2.6.28.orig/kernel/sysctl.c
++++ kernel-power-2.6.28/kernel/sysctl.c
 @@ -1623,7 +1623,7 @@
        return error;
  }
  {
        struct __sysctl_args tmp;
        int error;
---- kernel-maemo-2.6.28.test.orig/kernel/time.c
-+++ kernel-maemo-2.6.28.test/kernel/time.c
+--- kernel-power-2.6.28.orig/kernel/time.c
++++ kernel-power-2.6.28/kernel/time.c
 @@ -59,7 +59,7 @@
   * why not move it into the appropriate arch directory (for those
   * architectures that need it).
  {
        struct timex txc;               /* Local copy of parameter */
        int ret;
---- kernel-maemo-2.6.28.test.orig/kernel/time/timekeeping.c
-+++ kernel-maemo-2.6.28.test/kernel/time/timekeeping.c
+--- kernel-power-2.6.28.orig/kernel/time/timekeeping.c
++++ kernel-power-2.6.28/kernel/time/timekeeping.c
 @@ -46,6 +46,9 @@
  struct timespec wall_to_monotonic __attribute__ ((aligned (16)));
  static unsigned long total_sleep_time;                /* seconds */
  /* time in seconds when suspend began */
  static unsigned long timekeeping_suspend_time;
  
---- kernel-maemo-2.6.28.test.orig/kernel/timer.c
-+++ kernel-maemo-2.6.28.test/kernel/timer.c
+--- kernel-power-2.6.28.orig/kernel/timer.c
++++ kernel-power-2.6.28/kernel/timer.c
 @@ -1147,7 +1147,7 @@
   * For backwards compatibility?  This can be done in libc so Alpha
   * and all newer ports shouldn't need it.
  {
        struct sysinfo val;
  
---- kernel-maemo-2.6.28.test.orig/kernel/trace/ring_buffer.c
-+++ kernel-maemo-2.6.28.test/kernel/trace/ring_buffer.c
+--- kernel-power-2.6.28.orig/kernel/trace/ring_buffer.c
++++ kernel-power-2.6.28/kernel/trace/ring_buffer.c
 @@ -769,6 +769,7 @@
         * back to us). This allows us to do a simple loop to
         * assign the commit to the tail.
                        WARN_ON_ONCE(1);
                        goto out_unlock;
                }
---- kernel-maemo-2.6.28.test.orig/kernel/tsacct.c
-+++ kernel-maemo-2.6.28.test/kernel/tsacct.c
+--- kernel-power-2.6.28.orig/kernel/tsacct.c
++++ kernel-power-2.6.28/kernel/tsacct.c
 @@ -120,8 +120,10 @@
        if (likely(tsk->mm)) {
                cputime_t time, dtime;
        }
  }
  
---- kernel-maemo-2.6.28.test.orig/kernel/uid16.c
-+++ kernel-maemo-2.6.28.test/kernel/uid16.c
+--- kernel-power-2.6.28.orig/kernel/uid16.c
++++ kernel-power-2.6.28/kernel/uid16.c
 @@ -17,7 +17,7 @@
  
  #include <asm/uaccess.h>
  {
        return high2lowgid(current->egid);
  }
---- kernel-maemo-2.6.28.test.orig/kernel/wait.c
-+++ kernel-maemo-2.6.28.test/kernel/wait.c
+--- kernel-power-2.6.28.orig/kernel/wait.c
++++ kernel-power-2.6.28/kernel/wait.c
 @@ -91,6 +91,15 @@
  }
  EXPORT_SYMBOL(prepare_to_wait_exclusive);
  }
  EXPORT_SYMBOL(__wait_on_bit_lock);
  
---- kernel-maemo-2.6.28.test.orig/lib/idr.c
-+++ kernel-maemo-2.6.28.test/lib/idr.c
+--- kernel-power-2.6.28.orig/lib/idr.c
++++ kernel-power-2.6.28/lib/idr.c
 @@ -121,7 +121,7 @@
  {
        while (idp->id_free_cnt < IDR_FREE_MAX) {
  }
  
  /**
---- kernel-maemo-2.6.28.test.orig/mm/fadvise.c
-+++ kernel-maemo-2.6.28.test/mm/fadvise.c
+--- kernel-power-2.6.28.orig/mm/fadvise.c
++++ kernel-power-2.6.28/mm/fadvise.c
 @@ -24,7 +24,7 @@
   * POSIX_FADV_WILLNEED could set PG_Referenced, and POSIX_FADV_NOREUSE could
   * deactivate the pages and clear PG_Referenced.
 +#endif
  
  #endif
---- kernel-maemo-2.6.28.test.orig/mm/filemap.c
-+++ kernel-maemo-2.6.28.test/mm/filemap.c
+--- kernel-power-2.6.28.orig/mm/filemap.c
++++ kernel-power-2.6.28/mm/filemap.c
 @@ -210,7 +210,7 @@
        int ret;
        struct writeback_control wbc = {
  
        return written ? written : status;
  }
---- kernel-maemo-2.6.28.test.orig/mm/filemap_xip.c
-+++ kernel-maemo-2.6.28.test/mm/filemap_xip.c
+--- kernel-power-2.6.28.orig/mm/filemap_xip.c
++++ kernel-power-2.6.28/mm/filemap_xip.c
 @@ -89,8 +89,8 @@
                        }
                }
  
                error = mapping->a_ops->get_xip_mem(mapping, index, 0,
                                                        &xip_mem, &xip_pfn);
---- kernel-maemo-2.6.28.test.orig/mm/fremap.c
-+++ kernel-maemo-2.6.28.test/mm/fremap.c
+--- kernel-power-2.6.28.orig/mm/fremap.c
++++ kernel-power-2.6.28/mm/fremap.c
 @@ -120,8 +120,8 @@
   * and the vma's default protection is used. Arbitrary protections
   * might be implemented in the future.
  {
        struct mm_struct *mm = current->mm;
        struct address_space *mapping;
---- kernel-maemo-2.6.28.test.orig/mm/madvise.c
-+++ kernel-maemo-2.6.28.test/mm/madvise.c
+--- kernel-power-2.6.28.orig/mm/madvise.c
++++ kernel-power-2.6.28/mm/madvise.c
 @@ -281,7 +281,7 @@
   *  -EBADF  - map exists, but area maps something that isn't a file.
   *  -EAGAIN - a kernel resource was temporarily unavailable.
  {
        unsigned long end, tmp;
        struct vm_area_struct * vma, *prev;
---- kernel-maemo-2.6.28.test.orig/mm/memory.c
-+++ kernel-maemo-2.6.28.test/mm/memory.c
+--- kernel-power-2.6.28.orig/mm/memory.c
++++ kernel-power-2.6.28/mm/memory.c
 @@ -1882,7 +1882,7 @@
         * Don't let another task, with possibly unlocked vma,
         * keep the mlocked page.
                lock_page(old_page);    /* for LRU manipulation */
                clear_page_mlock(old_page);
                unlock_page(old_page);
---- kernel-maemo-2.6.28.test.orig/mm/mempolicy.c
-+++ kernel-maemo-2.6.28.test/mm/mempolicy.c
+--- kernel-power-2.6.28.orig/mm/mempolicy.c
++++ kernel-power-2.6.28/mm/mempolicy.c
 @@ -1068,10 +1068,9 @@
        return copy_to_user(mask, nodes_addr(*nodes), copy) ? -EFAULT : 0;
  }
  {
        int err;
        int uninitialized_var(pval);
---- kernel-maemo-2.6.28.test.orig/mm/migrate.c
-+++ kernel-maemo-2.6.28.test/mm/migrate.c
+--- kernel-power-2.6.28.orig/mm/migrate.c
++++ kernel-power-2.6.28/mm/migrate.c
 @@ -1070,10 +1070,10 @@
   * Move a list of pages in the address space of the currently executing
   * process.
  {
        struct task_struct *task;
        struct mm_struct *mm;
---- kernel-maemo-2.6.28.test.orig/mm/mincore.c
-+++ kernel-maemo-2.6.28.test/mm/mincore.c
+--- kernel-power-2.6.28.orig/mm/mincore.c
++++ kernel-power-2.6.28/mm/mincore.c
 @@ -177,8 +177,8 @@
   *            mapped
   *  -EAGAIN - A kernel resource was temporarily unavailable.
  {
        long retval;
        unsigned long pages;
---- kernel-maemo-2.6.28.test.orig/mm/mlock.c
-+++ kernel-maemo-2.6.28.test/mm/mlock.c
+--- kernel-power-2.6.28.orig/mm/mlock.c
++++ kernel-power-2.6.28/mm/mlock.c
 @@ -293,14 +293,10 @@
   *
   * return number of pages [> 0] to be removed from locked_vm on success
  {
        int ret;
  
---- kernel-maemo-2.6.28.test.orig/mm/mmap.c
-+++ kernel-maemo-2.6.28.test/mm/mmap.c
+--- kernel-power-2.6.28.orig/mm/mmap.c
++++ kernel-power-2.6.28/mm/mmap.c
 @@ -245,7 +245,7 @@
        return next;
  }
        lru_add_drain();
        flush_cache_mm(mm);
        tlb = tlb_gather_mmu(mm, 1);
---- kernel-maemo-2.6.28.test.orig/mm/mprotect.c
-+++ kernel-maemo-2.6.28.test/mm/mprotect.c
+--- kernel-power-2.6.28.orig/mm/mprotect.c
++++ kernel-power-2.6.28/mm/mprotect.c
 @@ -219,8 +219,8 @@
        return error;
  }
  {
        unsigned long vm_flags, nstart, end, tmp, reqprot;
        struct vm_area_struct *vma, *prev;
---- kernel-maemo-2.6.28.test.orig/mm/mremap.c
-+++ kernel-maemo-2.6.28.test/mm/mremap.c
+--- kernel-power-2.6.28.orig/mm/mremap.c
++++ kernel-power-2.6.28/mm/mremap.c
 @@ -420,9 +420,9 @@
        return ret;
  }
  {
        unsigned long ret;
  
---- kernel-maemo-2.6.28.test.orig/mm/msync.c
-+++ kernel-maemo-2.6.28.test/mm/msync.c
+--- kernel-power-2.6.28.orig/mm/msync.c
++++ kernel-power-2.6.28/mm/msync.c
 @@ -28,7 +28,7 @@
   * So by _not_ starting I/O in MS_ASYNC we provide complete flexibility to
   * applications.
  {
        unsigned long end;
        struct mm_struct *mm = current->mm;
---- kernel-maemo-2.6.28.test.orig/mm/nommu.c
-+++ kernel-maemo-2.6.28.test/mm/nommu.c
+--- kernel-power-2.6.28.orig/mm/nommu.c
++++ kernel-power-2.6.28/mm/nommu.c
 @@ -377,7 +377,7 @@
   *  to a regular file.  in this case, the unmapping will need
   *  to invoke file system routines that need the global lock.
  {
        unsigned long ret;
  
---- kernel-maemo-2.6.28.test.orig/mm/page-writeback.c
-+++ kernel-maemo-2.6.28.test/mm/page-writeback.c
+--- kernel-power-2.6.28.orig/mm/page-writeback.c
++++ kernel-power-2.6.28/mm/page-writeback.c
 @@ -980,9 +980,11 @@
        int done = 0;
        struct pagevec pvec;
                wbc->nr_to_write = nr_to_write;
        }
  
---- kernel-maemo-2.6.28.test.orig/mm/page_alloc.c
-+++ kernel-maemo-2.6.28.test/mm/page_alloc.c
+--- kernel-power-2.6.28.orig/mm/page_alloc.c
++++ kernel-power-2.6.28/mm/page_alloc.c
 @@ -2974,7 +2974,7 @@
   * was used and there are no special requirements, this is a convenient
   * alternative
  
  /* Basic iterator support to walk early_node_map[] */
  #define for_each_active_range_index_in_nid(i, nid) \
---- kernel-maemo-2.6.28.test.orig/mm/swapfile.c
-+++ kernel-maemo-2.6.28.test/mm/swapfile.c
+--- kernel-power-2.6.28.orig/mm/swapfile.c
++++ kernel-power-2.6.28/mm/swapfile.c
 @@ -1352,7 +1352,7 @@
  }
  #endif
  {
        struct swap_info_struct * p;
        char *name = NULL;
---- kernel-maemo-2.6.28.test.orig/mm/vmalloc.c
-+++ kernel-maemo-2.6.28.test/mm/vmalloc.c
+--- kernel-power-2.6.28.orig/mm/vmalloc.c
++++ kernel-power-2.6.28/mm/vmalloc.c
 @@ -23,6 +23,7 @@
  #include <linux/rbtree.h>
  #include <linux/radix-tree.h>
        vunmap_page_range(addr, end);
        flush_tlb_kernel_range(addr, end);
  }
---- kernel-maemo-2.6.28.test.orig/net/bridge/br_if.c
-+++ kernel-maemo-2.6.28.test/net/bridge/br_if.c
+--- kernel-power-2.6.28.orig/net/bridge/br_if.c
++++ kernel-power-2.6.28/net/bridge/br_if.c
 @@ -426,7 +426,6 @@
  err1:
        kobject_del(&p->kobj);
        dev_set_promiscuity(dev, -1);
  put_back:
        dev_put(dev);
---- kernel-maemo-2.6.28.test.orig/net/bridge/netfilter/ebtables.c
-+++ kernel-maemo-2.6.28.test/net/bridge/netfilter/ebtables.c
+--- kernel-power-2.6.28.orig/net/bridge/netfilter/ebtables.c
++++ kernel-power-2.6.28/net/bridge/netfilter/ebtables.c
 @@ -80,7 +80,7 @@
  {
        par->match     = m->u.match;
  }
  
  static inline int ebt_dev_check(char *entry, const struct net_device *device)
---- kernel-maemo-2.6.28.test.orig/net/core/net_namespace.c
-+++ kernel-maemo-2.6.28.test/net/core/net_namespace.c
+--- kernel-power-2.6.28.orig/net/core/net_namespace.c
++++ kernel-power-2.6.28/net/core/net_namespace.c
 @@ -342,8 +342,8 @@
        rv = register_pernet_operations(first_device, ops);
        if (rv < 0)
        return rv;
  }
  EXPORT_SYMBOL_GPL(register_pernet_gen_subsys);
---- kernel-maemo-2.6.28.test.orig/net/core/skbuff.c
-+++ kernel-maemo-2.6.28.test/net/core/skbuff.c
+--- kernel-power-2.6.28.orig/net/core/skbuff.c
++++ kernel-power-2.6.28/net/core/skbuff.c
 @@ -73,17 +73,13 @@
  static void sock_pipe_buf_release(struct pipe_inode_info *pipe,
                                  struct pipe_buffer *buf)
                goto next_skb;
        }
  
---- kernel-maemo-2.6.28.test.orig/net/core/sock.c
-+++ kernel-maemo-2.6.28.test/net/core/sock.c
+--- kernel-power-2.6.28.orig/net/core/sock.c
++++ kernel-power-2.6.28/net/core/sock.c
 @@ -696,6 +696,8 @@
        if (len < 0)
                return -EINVAL;
        atomic_sub(skb->truesize, &sk->sk_rmem_alloc);
        sk_mem_uncharge(skb->sk, skb->truesize);
  }
---- kernel-maemo-2.6.28.test.orig/net/ipv4/ipconfig.c
-+++ kernel-maemo-2.6.28.test/net/ipv4/ipconfig.c
+--- kernel-power-2.6.28.orig/net/ipv4/ipconfig.c
++++ kernel-power-2.6.28/net/ipv4/ipconfig.c
 @@ -1272,6 +1272,9 @@
  static int __init ip_auto_config(void)
  {
                if (ic_dynamic() < 0) {
                        ic_close_devs();
  
---- kernel-maemo-2.6.28.test.orig/net/ipv4/netfilter/arp_tables.c
-+++ kernel-maemo-2.6.28.test/net/ipv4/netfilter/arp_tables.c
+--- kernel-power-2.6.28.orig/net/ipv4/netfilter/arp_tables.c
++++ kernel-power-2.6.28/net/ipv4/netfilter/arp_tables.c
 @@ -374,7 +374,9 @@
                            && unconditional(&e->arp)) || visited) {
                                unsigned int oldpos, size;
                                        duprintf("mark_source_chains: bad "
                                                "negative verdict (%i)\n",
                                                                t->verdict);
---- kernel-maemo-2.6.28.test.orig/net/ipv4/netfilter/ip_tables.c
-+++ kernel-maemo-2.6.28.test/net/ipv4/netfilter/ip_tables.c
+--- kernel-power-2.6.28.orig/net/ipv4/netfilter/ip_tables.c
++++ kernel-power-2.6.28/net/ipv4/netfilter/ip_tables.c
 @@ -500,7 +500,9 @@
                            && unconditional(&e->ip)) || visited) {
                                unsigned int oldpos, size;
                                        duprintf("mark_source_chains: bad "
                                                "negative verdict (%i)\n",
                                                                t->verdict);
---- kernel-maemo-2.6.28.test.orig/net/ipv4/netfilter/nf_conntrack_proto_icmp.c
-+++ kernel-maemo-2.6.28.test/net/ipv4/netfilter/nf_conntrack_proto_icmp.c
+--- kernel-power-2.6.28.orig/net/ipv4/netfilter/nf_conntrack_proto_icmp.c
++++ kernel-power-2.6.28/net/ipv4/netfilter/nf_conntrack_proto_icmp.c
 @@ -20,7 +20,7 @@
  #include <net/netfilter/nf_conntrack_core.h>
  #include <net/netfilter/nf_log.h>
  
  static bool icmp_pkt_to_tuple(const struct sk_buff *skb, unsigned int dataoff,
                              struct nf_conntrack_tuple *tuple)
---- kernel-maemo-2.6.28.test.orig/net/ipv4/tcp.c
-+++ kernel-maemo-2.6.28.test/net/ipv4/tcp.c
+--- kernel-power-2.6.28.orig/net/ipv4/tcp.c
++++ kernel-power-2.6.28/net/ipv4/tcp.c
 @@ -520,8 +520,13 @@
                                unsigned int offset, size_t len)
  {
                    signal_pending(current))
                        break;
        }
---- kernel-maemo-2.6.28.test.orig/net/ipv4/udp.c
-+++ kernel-maemo-2.6.28.test/net/ipv4/udp.c
+--- kernel-power-2.6.28.orig/net/ipv4/udp.c
++++ kernel-power-2.6.28/net/ipv4/udp.c
 @@ -942,9 +942,11 @@
  
        if ((rc = sock_queue_rcv_skb(sk, skb)) < 0) {
        ulen = ntohs(uh->len);
        if (ulen > skb->len)
                goto short_packet;
---- kernel-maemo-2.6.28.test.orig/net/ipv6/inet6_hashtables.c
-+++ kernel-maemo-2.6.28.test/net/ipv6/inet6_hashtables.c
+--- kernel-power-2.6.28.orig/net/ipv6/inet6_hashtables.c
++++ kernel-power-2.6.28/net/ipv6/inet6_hashtables.c
 @@ -210,11 +210,11 @@
  
        if (twp != NULL) {
  
                inet_twsk_put(tw);
        }
---- kernel-maemo-2.6.28.test.orig/net/ipv6/ip6_fib.c
-+++ kernel-maemo-2.6.28.test/net/ipv6/ip6_fib.c
+--- kernel-power-2.6.28.orig/net/ipv6/ip6_fib.c
++++ kernel-power-2.6.28/net/ipv6/ip6_fib.c
 @@ -298,6 +298,10 @@
        struct fib6_walker_t *w = (void*)cb->args[2];
  
        return res;
  }
  
---- kernel-maemo-2.6.28.test.orig/net/ipv6/ip6_flowlabel.c
-+++ kernel-maemo-2.6.28.test/net/ipv6/ip6_flowlabel.c
+--- kernel-power-2.6.28.orig/net/ipv6/ip6_flowlabel.c
++++ kernel-power-2.6.28/net/ipv6/ip6_flowlabel.c
 @@ -323,17 +323,21 @@
  fl_create(struct net *net, struct in6_flowlabel_req *freq, char __user *optval,
          int optlen, int *err_p)
        if (olen > 0) {
                struct msghdr msg;
                struct flowi flowi;
---- kernel-maemo-2.6.28.test.orig/net/ipv6/ip6_input.c
-+++ kernel-maemo-2.6.28.test/net/ipv6/ip6_input.c
+--- kernel-power-2.6.28.orig/net/ipv6/ip6_input.c
++++ kernel-power-2.6.28/net/ipv6/ip6_input.c
 @@ -75,8 +75,7 @@
        if ((skb = skb_share_check(skb, GFP_ATOMIC)) == NULL ||
            !idev || unlikely(idev->cnf.disable_ipv6)) {
        return 0;
  }
  
---- kernel-maemo-2.6.28.test.orig/net/ipv6/ip6_output.c
-+++ kernel-maemo-2.6.28.test/net/ipv6/ip6_output.c
+--- kernel-power-2.6.28.orig/net/ipv6/ip6_output.c
++++ kernel-power-2.6.28/net/ipv6/ip6_output.c
 @@ -1104,6 +1104,18 @@
        return err;
  }
        if (inet->cork.dst) {
                dst_release(inet->cork.dst);
                inet->cork.dst = NULL;
---- kernel-maemo-2.6.28.test.orig/net/ipv6/netfilter/ip6_tables.c
-+++ kernel-maemo-2.6.28.test/net/ipv6/netfilter/ip6_tables.c
+--- kernel-power-2.6.28.orig/net/ipv6/netfilter/ip6_tables.c
++++ kernel-power-2.6.28/net/ipv6/netfilter/ip6_tables.c
 @@ -525,7 +525,9 @@
                            && unconditional(&e->ipv6)) || visited) {
                                unsigned int oldpos, size;
                                        duprintf("mark_source_chains: bad "
                                                "negative verdict (%i)\n",
                                                                t->verdict);
---- kernel-maemo-2.6.28.test.orig/net/ipv6/netfilter/nf_conntrack_proto_icmpv6.c
-+++ kernel-maemo-2.6.28.test/net/ipv6/netfilter/nf_conntrack_proto_icmpv6.c
+--- kernel-power-2.6.28.orig/net/ipv6/netfilter/nf_conntrack_proto_icmpv6.c
++++ kernel-power-2.6.28/net/ipv6/netfilter/nf_conntrack_proto_icmpv6.c
 @@ -26,7 +26,7 @@
  #include <net/netfilter/ipv6/nf_conntrack_icmpv6.h>
  #include <net/netfilter/nf_log.h>
  };
  
  static bool icmpv6_invert_tuple(struct nf_conntrack_tuple *tuple,
---- kernel-maemo-2.6.28.test.orig/net/mac80211/tx.c
-+++ kernel-maemo-2.6.28.test/net/mac80211/tx.c
+--- kernel-power-2.6.28.orig/net/mac80211/tx.c
++++ kernel-power-2.6.28/net/mac80211/tx.c
 @@ -1302,8 +1302,10 @@
                if (is_multicast_ether_addr(hdr->addr3))
                        memcpy(hdr->addr1, hdr->addr3, ETH_ALEN);
                                if (compare_ether_addr(sdata->dev->dev_addr,
                                                       hdr->addr2)) {
                                        dev_hold(sdata->dev);
---- kernel-maemo-2.6.28.test.orig/net/netfilter/nf_conntrack_netlink.c
-+++ kernel-maemo-2.6.28.test/net/netfilter/nf_conntrack_netlink.c
+--- kernel-power-2.6.28.orig/net/netfilter/nf_conntrack_netlink.c
++++ kernel-power-2.6.28/net/netfilter/nf_conntrack_netlink.c
 @@ -825,13 +825,16 @@
        if (!parse_nat_setup) {
  #ifdef CONFIG_MODULES
                rcu_read_lock();
                if (nfnetlink_parse_nat_setup_hook)
                        return -EAGAIN;
---- kernel-maemo-2.6.28.test.orig/net/netfilter/nf_conntrack_proto_tcp.c
-+++ kernel-maemo-2.6.28.test/net/netfilter/nf_conntrack_proto_tcp.c
+--- kernel-power-2.6.28.orig/net/netfilter/nf_conntrack_proto_tcp.c
++++ kernel-power-2.6.28/net/netfilter/nf_conntrack_proto_tcp.c
 @@ -15,6 +15,7 @@
  #include <linux/skbuff.h>
  #include <linux/ipv6.h>
  
                                        if (after(tmp, *sack))
                                                *sack = tmp;
---- kernel-maemo-2.6.28.test.orig/net/netfilter/x_tables.c
-+++ kernel-maemo-2.6.28.test/net/netfilter/x_tables.c
+--- kernel-power-2.6.28.orig/net/netfilter/x_tables.c
++++ kernel-power-2.6.28/net/netfilter/x_tables.c
 @@ -273,6 +273,10 @@
                                have_rev = 1;
                }
        return have_rev;
  }
  
---- kernel-maemo-2.6.28.test.orig/net/netfilter/xt_sctp.c
-+++ kernel-maemo-2.6.28.test/net/netfilter/xt_sctp.c
+--- kernel-power-2.6.28.orig/net/netfilter/xt_sctp.c
++++ kernel-power-2.6.28/net/netfilter/xt_sctp.c
 @@ -105,7 +105,7 @@
  
        switch (chunk_match_type) {
        case SCTP_CHUNK_MATCH_ANY:
                return false;
        case SCTP_CHUNK_MATCH_ONLY:
---- kernel-maemo-2.6.28.test.orig/net/netrom/af_netrom.c
-+++ kernel-maemo-2.6.28.test/net/netrom/af_netrom.c
+--- kernel-power-2.6.28.orig/net/netrom/af_netrom.c
++++ kernel-power-2.6.28/net/netrom/af_netrom.c
 @@ -1082,7 +1082,13 @@
  
        SOCK_DEBUG(sk, "NET/ROM: sendto: Addresses built.\n");
        SOCK_DEBUG(sk, "NET/ROM: sendto: building packet.\n");
        size = len + NR_NETWORK_LEN + NR_TRANSPORT_LEN;
  
---- kernel-maemo-2.6.28.test.orig/net/packet/af_packet.c
-+++ kernel-maemo-2.6.28.test/net/packet/af_packet.c
+--- kernel-power-2.6.28.orig/net/packet/af_packet.c
++++ kernel-power-2.6.28/net/packet/af_packet.c
 @@ -77,6 +77,7 @@
  #include <linux/poll.h>
  #include <linux/module.h>
        return err;
  }
  #endif
---- kernel-maemo-2.6.28.test.orig/net/rose/af_rose.c
-+++ kernel-maemo-2.6.28.test/net/rose/af_rose.c
+--- kernel-power-2.6.28.orig/net/rose/af_rose.c
++++ kernel-power-2.6.28/net/rose/af_rose.c
 @@ -1124,6 +1124,10 @@
  
        /* Build a packet */
        size = len + AX25_BPQ_HEADER_LEN + AX25_MAX_HEADER_LEN + ROSE_MIN_LEN;
  
        if ((skb = sock_alloc_send_skb(sk, size, msg->msg_flags & MSG_DONTWAIT, &err)) == NULL)
---- kernel-maemo-2.6.28.test.orig/net/sched/cls_u32.c
-+++ kernel-maemo-2.6.28.test/net/sched/cls_u32.c
+--- kernel-power-2.6.28.orig/net/sched/cls_u32.c
++++ kernel-power-2.6.28/net/sched/cls_u32.c
 @@ -637,8 +637,9 @@
                                break;
  
  
                *arg = (unsigned long)n;
                return 0;
---- kernel-maemo-2.6.28.test.orig/net/sched/sch_htb.c
-+++ kernel-maemo-2.6.28.test/net/sched/sch_htb.c
+--- kernel-power-2.6.28.orig/net/sched/sch_htb.c
++++ kernel-power-2.6.28/net/sched/sch_htb.c
 @@ -924,6 +924,7 @@
                }
        }
        qdisc_watchdog_schedule(&q->watchdog, next_event);
  fin:
        return skb;
---- kernel-maemo-2.6.28.test.orig/net/sctp/endpointola.c
-+++ kernel-maemo-2.6.28.test/net/sctp/endpointola.c
+--- kernel-power-2.6.28.orig/net/sctp/endpointola.c
++++ kernel-power-2.6.28/net/sctp/endpointola.c
 @@ -111,7 +111,8 @@
                if (sctp_addip_enable) {
                        auth_chunks->chunks[0] = SCTP_CID_ASCONF;
                }
        }
  
---- kernel-maemo-2.6.28.test.orig/net/sctp/input.c
-+++ kernel-maemo-2.6.28.test/net/sctp/input.c
+--- kernel-power-2.6.28.orig/net/sctp/input.c
++++ kernel-power-2.6.28/net/sctp/input.c
 @@ -249,6 +249,19 @@
         */
        sctp_bh_lock_sock(sk);
        if (sock_owned_by_user(sk)) {
                SCTP_INC_STATS_BH(SCTP_MIB_IN_PKT_BACKLOG);
                sctp_add_backlog(sk, skb);
---- kernel-maemo-2.6.28.test.orig/net/sctp/output.c
-+++ kernel-maemo-2.6.28.test/net/sctp/output.c
+--- kernel-power-2.6.28.orig/net/sctp/output.c
++++ kernel-power-2.6.28/net/sctp/output.c
 @@ -324,14 +324,16 @@
        switch (chunk->chunk_hdr->type) {
            case SCTP_CID_DATA:
                        has_data = 1;
                }
  
---- kernel-maemo-2.6.28.test.orig/net/sctp/outqueue.c
-+++ kernel-maemo-2.6.28.test/net/sctp/outqueue.c
+--- kernel-power-2.6.28.orig/net/sctp/outqueue.c
++++ kernel-power-2.6.28/net/sctp/outqueue.c
 @@ -929,7 +929,6 @@
                }
  
  
                        q->empty = 0;
  
---- kernel-maemo-2.6.28.test.orig/net/sctp/sm_statefuns.c
-+++ kernel-maemo-2.6.28.test/net/sctp/sm_statefuns.c
+--- kernel-power-2.6.28.orig/net/sctp/sm_statefuns.c
++++ kernel-power-2.6.28/net/sctp/sm_statefuns.c
 @@ -3691,6 +3691,7 @@
  {
        struct sctp_chunk *chunk = arg;
        sctp_add_cmd_sf(commands, SCTP_CMD_REPORT_FWDTSN, SCTP_U32(tsn));
        if (len > sizeof(struct sctp_fwdtsn_hdr))
                sctp_add_cmd_sf(commands, SCTP_CMD_PROCESS_FWDTSN,
---- kernel-maemo-2.6.28.test.orig/net/socket.c
-+++ kernel-maemo-2.6.28.test/net/socket.c
+--- kernel-power-2.6.28.orig/net/socket.c
++++ kernel-power-2.6.28/net/socket.c
 @@ -1215,7 +1215,7 @@
        return __sock_create(&init_net, family, type, protocol, res, 1);
  }
  {
        unsigned long a[6];
        unsigned long a0, a1;
---- kernel-maemo-2.6.28.test.orig/net/x25/af_x25.c
-+++ kernel-maemo-2.6.28.test/net/x25/af_x25.c
+--- kernel-power-2.6.28.orig/net/x25/af_x25.c
++++ kernel-power-2.6.28/net/x25/af_x25.c
 @@ -1037,6 +1037,12 @@
                sx25.sx25_addr   = x25->dest_addr;
        }
        SOCK_DEBUG(sk, "x25_sendmsg: sendto: Addresses built.\n");
  
        /* Build a packet */
---- kernel-maemo-2.6.28.test.orig/net/xfrm/xfrm_state.c
-+++ kernel-maemo-2.6.28.test/net/xfrm/xfrm_state.c
+--- kernel-power-2.6.28.orig/net/xfrm/xfrm_state.c
++++ kernel-power-2.6.28/net/xfrm/xfrm_state.c
 @@ -1601,7 +1601,7 @@
  
        spin_lock_bh(&xfrm_state_lock);
  }
  EXPORT_SYMBOL(xfrm_state_walk_done);
  
---- kernel-maemo-2.6.28.test.orig/scripts/kernel-doc
-+++ kernel-maemo-2.6.28.test/scripts/kernel-doc
+--- kernel-power-2.6.28.orig/scripts/kernel-doc
++++ kernel-power-2.6.28/scripts/kernel-doc
 @@ -1762,6 +1762,40 @@
      $state = 0;
  }
        reset_state();
      }
  }
---- kernel-maemo-2.6.28.test.orig/scripts/mod/file2alias.c
-+++ kernel-maemo-2.6.28.test/scripts/mod/file2alias.c
+--- kernel-power-2.6.28.orig/scripts/mod/file2alias.c
++++ kernel-power-2.6.28/scripts/mod/file2alias.c
 @@ -210,6 +210,7 @@
  static int do_hid_entry(const char *filename,
                             struct hid_device_id *id, char *alias)
        id->vendor = TO_NATIVE(id->vendor);
        id->product = TO_NATIVE(id->product);
  
---- kernel-maemo-2.6.28.test.orig/security/keys/keyctl.c
-+++ kernel-maemo-2.6.28.test/security/keys/keyctl.c
+--- kernel-power-2.6.28.orig/security/keys/keyctl.c
++++ kernel-power-2.6.28/security/keys/keyctl.c
 @@ -54,11 +54,11 @@
   * - returns the new key's serial number
   * - implements add_key()
  {
        switch (option) {
        case KEYCTL_GET_KEYRING_ID:
---- kernel-maemo-2.6.28.test.orig/security/selinux/hooks.c
-+++ kernel-maemo-2.6.28.test/security/selinux/hooks.c
+--- kernel-power-2.6.28.orig/security/selinux/hooks.c
++++ kernel-power-2.6.28/security/selinux/hooks.c
 @@ -4550,6 +4550,7 @@
        if (err)
                return err;
                return err;
  
        err = sel_netnode_sid(addrp, family, &node_sid);
---- kernel-maemo-2.6.28.test.orig/security/selinux/netlabel.c
-+++ kernel-maemo-2.6.28.test/security/selinux/netlabel.c
+--- kernel-power-2.6.28.orig/security/selinux/netlabel.c
++++ kernel-power-2.6.28/security/selinux/netlabel.c
 @@ -386,11 +386,12 @@
        if (!S_ISSOCK(inode->i_mode) ||
            ((mask & (MAY_WRITE | MAY_APPEND)) == 0))
                netlbl_secattr_destroy(&secattr);
        }
  
---- kernel-maemo-2.6.28.test.orig/security/smack/smack_lsm.c
-+++ kernel-maemo-2.6.28.test/security/smack/smack_lsm.c
+--- kernel-power-2.6.28.orig/security/smack/smack_lsm.c
++++ kernel-power-2.6.28/security/smack/smack_lsm.c
 @@ -604,6 +604,8 @@
            strcmp(name, XATTR_NAME_SMACKIPOUT) == 0) {
                if (!capable(CAP_MAC_ADMIN))
                return -EACCES;
  
        sp = smk_import(value, size);
---- kernel-maemo-2.6.28.test.orig/sound/core/oss/pcm_oss.c
-+++ kernel-maemo-2.6.28.test/sound/core/oss/pcm_oss.c
+--- kernel-power-2.6.28.orig/sound/core/oss/pcm_oss.c
++++ kernel-power-2.6.28/sound/core/oss/pcm_oss.c
 @@ -2872,7 +2872,7 @@
                        setup = kmalloc(sizeof(*setup), GFP_KERNEL);
                        if (! setup) {
                                return;
                        }
                }
---- kernel-maemo-2.6.28.test.orig/sound/core/oss/rate.c
-+++ kernel-maemo-2.6.28.test/sound/core/oss/rate.c
+--- kernel-power-2.6.28.orig/sound/core/oss/rate.c
++++ kernel-power-2.6.28/sound/core/oss/rate.c
 @@ -157,7 +157,7 @@
                while (dst_frames1 > 0) {
                        S1 = S2;
                                src += src_step;
                        }
                        if (pos & ~R_MASK) {
---- kernel-maemo-2.6.28.test.orig/sound/core/sgbuf.c
-+++ kernel-maemo-2.6.28.test/sound/core/sgbuf.c
+--- kernel-power-2.6.28.orig/sound/core/sgbuf.c
++++ kernel-power-2.6.28/sound/core/sgbuf.c
 @@ -38,6 +38,10 @@
        if (! sgbuf)
                return -EINVAL;
  
        kfree(sgbuf->table);
        kfree(sgbuf->page_table);
---- kernel-maemo-2.6.28.test.orig/sound/drivers/mtpav.c
-+++ kernel-maemo-2.6.28.test/sound/drivers/mtpav.c
+--- kernel-power-2.6.28.orig/sound/drivers/mtpav.c
++++ kernel-power-2.6.28/sound/drivers/mtpav.c
 @@ -706,7 +706,6 @@
        mtp_card->card = card;
        mtp_card->irq = -1;
        err = snd_mtpav_get_ISA(mtp_card);
        if (err < 0)
                goto __error;
---- kernel-maemo-2.6.28.test.orig/sound/isa/opl3sa2.c
-+++ kernel-maemo-2.6.28.test/sound/isa/opl3sa2.c
+--- kernel-power-2.6.28.orig/sound/isa/opl3sa2.c
++++ kernel-power-2.6.28/sound/isa/opl3sa2.c
 @@ -550,21 +550,27 @@
  #ifdef CONFIG_PM
  static int snd_opl3sa2_suspend(struct snd_card *card, pm_message_t state)
        /* power up */
        snd_opl3sa2_write(chip, OPL3SA2_PM_CTRL, OPL3SA2_PM_D0);
  
---- kernel-maemo-2.6.28.test.orig/sound/pci/aw2/aw2-alsa.c
-+++ kernel-maemo-2.6.28.test/sound/pci/aw2/aw2-alsa.c
+--- kernel-power-2.6.28.orig/sound/pci/aw2/aw2-alsa.c
++++ kernel-power-2.6.28/sound/pci/aw2/aw2-alsa.c
 @@ -165,7 +165,7 @@
  MODULE_PARM_DESC(enable, "Enable Audiowerk2 soundcard.");
  
         0, 0, 0},
        {0}
  };
---- kernel-maemo-2.6.28.test.orig/sound/pci/hda/hda_intel.c
-+++ kernel-maemo-2.6.28.test/sound/pci/hda/hda_intel.c
+--- kernel-power-2.6.28.orig/sound/pci/hda/hda_intel.c
++++ kernel-power-2.6.28/sound/pci/hda/hda_intel.c
 @@ -2063,26 +2063,31 @@
  {
        const struct snd_pci_quirk *q;
  
        /* read number of streams from GCAP register instead of using
         * hardcoded value
---- kernel-maemo-2.6.28.test.orig/sound/pci/hda/patch_analog.c
-+++ kernel-maemo-2.6.28.test/sound/pci/hda/patch_analog.c
+--- kernel-power-2.6.28.orig/sound/pci/hda/patch_analog.c
++++ kernel-power-2.6.28/sound/pci/hda/patch_analog.c
 @@ -629,6 +629,36 @@
        HDA_BIND_SW("Master Playback Switch", &ad1986a_laptop_master_sw),
        HDA_CODEC_VOLUME("PCM Playback Volume", 0x03, 0x0, HDA_OUTPUT),
                spec->mixers[1] = ad1882_loopback_mixers;
        else
                spec->mixers[1] = ad1882a_loopback_mixers;
---- kernel-maemo-2.6.28.test.orig/sound/pci/hda/patch_conexant.c
-+++ kernel-maemo-2.6.28.test/sound/pci/hda/patch_conexant.c
+--- kernel-power-2.6.28.orig/sound/pci/hda/patch_conexant.c
++++ kernel-power-2.6.28/sound/pci/hda/patch_conexant.c
 @@ -1470,6 +1470,7 @@
        SND_PCI_QUIRK(0x103c, 0x30a5, "HP DV5200T/DV8000T", CXT5047_LAPTOP_HP),
        SND_PCI_QUIRK(0x103c, 0x30b2, "HP DV2000T/DV3000T", CXT5047_LAPTOP),
        SND_PCI_QUIRK(0x1179, 0xff31, "Toshiba P100", CXT5047_LAPTOP_EAPD),
        {}
  };
---- kernel-maemo-2.6.28.test.orig/sound/pci/hda/patch_realtek.c
-+++ kernel-maemo-2.6.28.test/sound/pci/hda/patch_realtek.c
+--- kernel-power-2.6.28.orig/sound/pci/hda/patch_realtek.c
++++ kernel-power-2.6.28/sound/pci/hda/patch_realtek.c
 @@ -967,6 +967,7 @@
                case 0x10ec0267:
                case 0x10ec0268:
        SND_PCI_QUIRK(0x17aa, 0x384e, "Lenovo 3000 y410", ALC262_LENOVO_3000),
        SND_PCI_QUIRK(0x17ff, 0x0560, "Benq ED8", ALC262_BENQ_ED8),
        SND_PCI_QUIRK(0x17ff, 0x058d, "Benq T31-16", ALC262_BENQ_T31),
---- kernel-maemo-2.6.28.test.orig/sound/pci/hda/patch_sigmatel.c
-+++ kernel-maemo-2.6.28.test/sound/pci/hda/patch_sigmatel.c
+--- kernel-power-2.6.28.orig/sound/pci/hda/patch_sigmatel.c
++++ kernel-power-2.6.28/sound/pci/hda/patch_sigmatel.c
 @@ -89,6 +89,7 @@
        STAC_DELL_M4_2,
        STAC_DELL_M4_3,
                break;
        default:
                spec->num_dmics = STAC92HD71BXX_NUM_DMICS;
---- kernel-maemo-2.6.28.test.orig/sound/pci/mixart/mixart.c
-+++ kernel-maemo-2.6.28.test/sound/pci/mixart/mixart.c
+--- kernel-power-2.6.28.orig/sound/pci/mixart/mixart.c
++++ kernel-power-2.6.28/sound/pci/mixart/mixart.c
 @@ -607,6 +607,7 @@
        /* set the format to the board */
        err = mixart_set_format(stream, format);
                return err;
        }
  
---- kernel-maemo-2.6.28.test.orig/sound/pci/oxygen/virtuoso.c
-+++ kernel-maemo-2.6.28.test/sound/pci/oxygen/virtuoso.c
+--- kernel-power-2.6.28.orig/sound/pci/oxygen/virtuoso.c
++++ kernel-power-2.6.28/sound/pci/oxygen/virtuoso.c
 @@ -899,6 +899,7 @@
        .dac_channels = 8,
        .dac_volume_min = 0x0f,
        .function_flags = OXYGEN_FUNCTION_2WIRE,
        .dac_i2s_format = OXYGEN_I2S_FORMAT_LJUST,
        .adc_i2s_format = OXYGEN_I2S_FORMAT_LJUST,
---- kernel-maemo-2.6.28.test.orig/sound/usb/caiaq/caiaq-device.h
-+++ kernel-maemo-2.6.28.test/sound/usb/caiaq/caiaq-device.h
+--- kernel-power-2.6.28.orig/sound/usb/caiaq/caiaq-device.h
++++ kernel-power-2.6.28/sound/usb/caiaq/caiaq-device.h
 @@ -75,6 +75,7 @@
        wait_queue_head_t ep1_wait_queue;
        wait_queue_head_t prepare_wait_queue;
  
        char vendor_name[CAIAQ_USB_STR_LEN];
        char product_name[CAIAQ_USB_STR_LEN];
---- kernel-maemo-2.6.28.test.orig/sound/usb/caiaq/caiaq-midi.c
-+++ kernel-maemo-2.6.28.test/sound/usb/caiaq/caiaq-midi.c
+--- kernel-power-2.6.28.orig/sound/usb/caiaq/caiaq-midi.c
++++ kernel-power-2.6.28/sound/usb/caiaq/caiaq-midi.c
 @@ -59,6 +59,11 @@
  
  static int snd_usb_caiaq_midi_output_close(struct snd_rawmidi_substream *substream)
        snd_usb_caiaq_midi_send(dev, dev->midi_out_substream);
  }
  
---- kernel-maemo-2.6.28.test.orig/sound/usb/usbaudio.c
-+++ kernel-maemo-2.6.28.test/sound/usb/usbaudio.c
+--- kernel-power-2.6.28.orig/sound/usb/usbaudio.c
++++ kernel-power-2.6.28/sound/usb/usbaudio.c
 @@ -2524,7 +2524,6 @@
                 * build the rate table and bitmap flags
                 */
        usb_set_interface(chip->dev, fp->iface, 0);
        init_usb_pitch(chip->dev, fp->iface, alts, fp);
        init_usb_sample_rate(chip->dev, fp->iface, alts, fp, fp->rate_max);
---- kernel-maemo-2.6.28.test.orig/sound/usb/usbmidi.c
-+++ kernel-maemo-2.6.28.test/sound/usb/usbmidi.c
+--- kernel-power-2.6.28.orig/sound/usb/usbmidi.c
++++ kernel-power-2.6.28/sound/usb/usbmidi.c
 @@ -1628,6 +1628,7 @@
        }
  
        ep_info.out_cables = endpoint->out_cables & 0x5555;
        err = snd_usbmidi_out_endpoint_create(umidi, &ep_info, &umidi->endpoints[0]);
        if (err < 0)
---- kernel-maemo-2.6.28.test.orig/virt/kvm/kvm_main.c
-+++ kernel-maemo-2.6.28.test/virt/kvm/kvm_main.c
+--- kernel-power-2.6.28.orig/virt/kvm/kvm_main.c
++++ kernel-power-2.6.28/virt/kvm/kvm_main.c
 @@ -553,11 +553,19 @@
        return young;
  }
  
        r = misc_register(&kvm_dev);
        if (r) {
---- kernel-maemo-2.6.28.test.orig/virt/kvm/kvm_trace.c
-+++ kernel-maemo-2.6.28.test/virt/kvm/kvm_trace.c
+--- kernel-power-2.6.28.orig/virt/kvm/kvm_trace.c
++++ kernel-power-2.6.28/virt/kvm/kvm_trace.c
 @@ -252,6 +252,7 @@
                        struct kvm_trace_probe *p = &kvm_trace_probes[i];
                        marker_probe_unregister(p->name, p->probe_func, p);
diff --git a/kernel-power-2.6.28/debian/patches/leds-lp5523.diff b/kernel-power-2.6.28/debian/patches/leds-lp5523.diff
new file mode 100644 (file)
index 0000000..d7dad77
--- /dev/null
@@ -0,0 +1,55 @@
+--- kernel-power-2.6.28.orig/drivers/leds/leds-lp5523.c
++++ kernel-power-2.6.28/drivers/leds/leds-lp5523.c
+@@ -120,6 +120,8 @@
+       u8                      led_nr;
+       u8                      led_current;
+       struct led_classdev     cdev;
++      struct work_struct      work;
++      u8 brightness;
+ };
+ struct lp5523_chip {
+@@ -472,10 +474,10 @@
+       return pos;
+ }
+-static void lp5523_set_brightness(struct led_classdev *cdev,
+-                           enum led_brightness brightness)
++static void lp5523_set_brightness_work(struct work_struct  *work)
+ {
+-      struct lp5523_led *led = cdev_to_led(cdev);
++        struct lp5523_led *led =
++                container_of(work, struct lp5523_led, work);
+       struct lp5523_chip *chip = led_to_lp5523(led);
+       struct i2c_client *client = chip->client;
+@@ -483,10 +485,20 @@
+       lp5523_write(client,
+                    LP5523_REG_LED_PWM_BASE + led->led_nr,
+-                   (u8)brightness);
++                   led->brightness);
+       mutex_unlock(&chip->lock);
+ }
++static void lp5523_set_brightness(struct led_classdev *cdev,
++                           enum led_brightness brightness)
++{
++      struct lp5523_led *led = cdev_to_led(cdev);
++      struct lp5523_chip *chip = led_to_lp5523(led);
++      struct i2c_client *client = chip->client;
++
++      led->brightness = (u8)brightness;
++      schedule_work(&led->work);
++}
+ static int lp5523_do_store_load(struct lp5523_engine *engine,
+                               const char *buf, size_t len)
+@@ -792,6 +804,7 @@
+       led->cdev.name = name;
+       led->cdev.brightness_set = lp5523_set_brightness;
++      INIT_WORK( &led->work, lp5523_set_brightness_work); 
+       if (led_classdev_register(dev, &led->cdev) < 0) {
+               dev_err(dev, "couldn't register led %d\n", id);
+               return -1;
index 73b5d0d..d628d53 100644 (file)
@@ -5,7 +5,7 @@
  PATCHLEVEL = 6
  SUBLEVEL = 28
 -EXTRAVERSION =
-+EXTRAVERSION = maemo
++EXTRAVERSION = power
  NAME = Erotic Pickled Herring
  
  # *DOCUMENTATION*
diff --git a/kernel-power-2.6.28/debian/patches/overclock-ideal.diff b/kernel-power-2.6.28/debian/patches/overclock-ideal.diff
deleted file mode 100644 (file)
index 5a6df6f..0000000
+++ /dev/null
@@ -1,200 +0,0 @@
---- kernel-maemo-2.6.28.orig/arch/arm/mach-omap2/omap3-opp.h
-+++ kernel-maemo-2.6.28/arch/arm/mach-omap2/omap3-opp.h
-@@ -4,6 +4,15 @@
- #include <mach/omap-pm.h>
- /* MPU speeds */
-+#define S1150M  1150000000
-+#define S1100M  1100000000
-+#define S1000M  1000000000
-+#define S950M   950000000
-+#define S900M   900000000
-+#define S850M   850000000
-+#define S810M   810000000
-+#define S750M   750000000
-+#define S700M   700000000
- #define S600M   600000000
- #define S550M   550000000
- #define S500M   500000000
-@@ -11,6 +20,7 @@
- #define S125M   125000000
- /* DSP speeds */
-+#define S520M   500000000
- #define S430M   430000000
- #define S400M   400000000
- #define S360M   360000000
-@@ -23,16 +33,20 @@
- static struct omap_opp omap3_mpu_rate_table[] = {
-       {0, 0, 0},
--      /*OPP1*/
--      {0, VDD1_OPP1, 0x1E},
--      /*OPP2*/
--      {S250M, VDD1_OPP2, 0x26},
--      /*OPP3*/
--      {S500M, VDD1_OPP3, 0x30},
--      /*OPP4*/
--      {S550M, VDD1_OPP4, 0x36},
--      /*OPP5*/
--      {S600M, VDD1_OPP5, 0x3C},
-+      {0, 1, 0x14},
-+      {S500M, 2, 0x1E},
-+      {S550M, 3, 0x21},
-+      {S600M, 4, 0x26},
-+      /*overclocking*/
-+      {S700M, 5, 0x2D},
-+      {S750M, 6, 0x2D},
-+      {S810M, 7, 0x30},
-+      {S850M, 8, 0x30},
-+      {S900M, 9, 0x36},
-+      {S950M, 10, 0x36},
-+      {S1000M, 11, 0x3C},
-+      {S1100M, 12, 0x43},
-+      {S1150M, 13, 0x48},
- };
- static struct omap_opp omap3_l3_rate_table[] = {
-@@ -47,16 +61,22 @@
- static struct omap_opp omap3_dsp_rate_table[] = {
-       {0, 0, 0},
--      /*OPP1*/
--      {S90M, VDD1_OPP1, 0x1E},
--      /*OPP2*/
--      {S180M, VDD1_OPP2, 0x26},
--      /*OPP3*/
--      {S360M, VDD1_OPP3, 0x30},
--      /*OPP4*/
--      {S400M, VDD1_OPP4, 0x36},
--      /*OPP5*/
--      {S430M, VDD1_OPP5, 0x3C},
-+      /*underclocking*/
-+      {S90M, 1, 0x14},
-+      /*default*/
-+      {S360M, 2, 0x1E},
-+      {S400M, 3, 0x21},
-+      {S430M, 4, 0x26},
-+      /*overclocking*/
-+      {S430M, 5, 0x2D},
-+      {S430M, 6, 0x2D},
-+      {S430M, 7, 0x30},/*800MHz*/
-+      {S520M, 8, 0x36},
-+      {S520M, 9, 0x36},
-+      {S520M, 10, 0x36},
-+      {S520M, 11, 0x3C},
-+      {S520M, 12, 0x3C},
-+      {S520M, 13, 0x40},
- };
- #endif
---- kernel-maemo-2.6.28.orig/arch/arm/plat-omap/include/mach/omap34xx.h
-+++ kernel-maemo-2.6.28/arch/arm/plat-omap/include/mach/omap34xx.h
-@@ -114,7 +114,7 @@
- #define VDD2_OPP3     0x3
- #define MIN_VDD1_OPP  VDD1_OPP1
--#define MAX_VDD1_OPP  VDD1_OPP5
-+#define MAX_VDD1_OPP  13
- #define MIN_VDD2_OPP  VDD2_OPP1
- #define MAX_VDD2_OPP  VDD2_OPP3
---- kernel-maemo-2.6.28.orig/arch/arm/mach-omap2/smartreflex.c
-+++ kernel-maemo-2.6.28/arch/arm/mach-omap2/smartreflex.c
-@@ -513,20 +513,17 @@
-       sr->req_opp_no = target_opp_no;
-       if (sr->srid == SR1) {
--              switch (target_opp_no) {
--              case 5:
-+              switch (min(target_opp_no,4)) {
-+              case 4: /*>=600*/
-                       nvalue_reciprocal = sr->opp5_nvalue;
-                       break;
--              case 4:
-+              case 3: /*550*/
-                       nvalue_reciprocal = sr->opp4_nvalue;
-                       break;
--              case 3:
-+              case 2: /*500*/
-                       nvalue_reciprocal = sr->opp3_nvalue;
-                       break;
--              case 2:
--                      nvalue_reciprocal = sr->opp2_nvalue;
--                      break;
--              case 1:
-+              case 1: /*idle*/
-                       nvalue_reciprocal = sr->opp1_nvalue;
-                       break;
-               default:
---- kernel-maemo-2.6.28.orig/arch/arm/plat-omap/cpu-omap.c
-+++ kernel-maemo-2.6.28/arch/arm/plat-omap/cpu-omap.c
-@@ -148,10 +148,12 @@
-                                                       VERY_HI_RATE) / 1000;
-       }
--      clk_set_rate(mpu_clk, policy->cpuinfo.max_freq * 1000);
-+      /*clk_set_rate(mpu_clk, policy->cpuinfo.max_freq * 1000);*/
-+      clk_set_rate(mpu_clk, 850000 * 1000); /*N900 hack: set default max to 850MHz */
-       policy->min = policy->cpuinfo.min_freq;
--      policy->max = policy->cpuinfo.max_freq;
-+      /*policy->max = policy->cpuinfo.max_freq;*/
-+      policy->max = 850000; /*N900 hack: set default to 500-850MHz */
-       policy->cur = omap_getspeed(0);
-       policy->cpuinfo.transition_latency = 300 * 1000;
---- kernel-maemo-2.6.28.orig/drivers/cpufreq/cpufreq.c
-+++ kernel-maemo-2.6.28/drivers/cpufreq/cpufreq.c
-@@ -465,7 +465,7 @@
- /**
-  * cpufreq_per_cpu_attr_write() / store_##file_name() - sysfs write access
-  */
--#define store_one(file_name, object)                  \
-+#define store_one(file_name, object,ignore)                   \
- static ssize_t store_##file_name                                      \
- (struct cpufreq_policy *policy, const char *buf, size_t count)                \
- {                                                                     \
-@@ -479,15 +479,16 @@
-       ret = sscanf (buf, "%u", &new_policy.object);                   \
-       if (ret != 1)                                                   \
-               return -EINVAL;                                         \
--                                                                      \
--      ret = __cpufreq_set_policy(policy, &new_policy);                \
-+      printk(KERN_DEBUG "cpufreq: request %u -> %u\n",policy->object,new_policy.object);      \
-+      if (new_policy.object != ignore && new_policy.object >= 100000) \
-+          ret = __cpufreq_set_policy(policy, &new_policy);            \
-       policy->user_policy.object = policy->object;                    \
-                                                                       \
-       return ret ? ret : count;                                       \
- }
--store_one(scaling_min_freq,min);
--store_one(scaling_max_freq,max);
-+store_one(scaling_min_freq,min,600000);
-+store_one(scaling_max_freq,max,600000);
- /**
-  * show_cpuinfo_cur_freq - current CPU frequency as detected by hardware
---- kernel-maemo-2.6.28.orig/Makefile
-+++ kernel-maemo-2.6.28/Makefile
-@@ -1,7 +1,7 @@
- VERSION = 2
- PATCHLEVEL = 6
- SUBLEVEL = 28
--EXTRAVERSION = .10maemo
-+EXTRAVERSION = .10maemo-xlv
- NAME = Erotic Pickled Herring
- # *DOCUMENTATION*
---- kernel-maemo-2.6.28.orig/arch/arm/mach-omap2/smartreflex.h
-+++ kernel-maemo-2.6.28/arch/arm/mach-omap2/smartreflex.h
-@@ -254,7 +254,7 @@
- /* XXX: end remove/move */
- /* SR_MAX_LOW_OPP: the highest of the "low OPPs", 1 and 2. */
--#define SR_MAX_LOW_OPP                2
-+#define SR_MAX_LOW_OPP                1
- /* XXX: find more appropriate place for these once DVFS is in place */
- extern u32 current_vdd1_opp;
diff --git a/kernel-power-2.6.28/debian/patches/overclock-lv.diff b/kernel-power-2.6.28/debian/patches/overclock-lv.diff
deleted file mode 100644 (file)
index 57b48a5..0000000
+++ /dev/null
@@ -1,196 +0,0 @@
---- kernel-maemo-2.6.28.orig/arch/arm/mach-omap2/omap3-opp.h
-+++ kernel-maemo-2.6.28/arch/arm/mach-omap2/omap3-opp.h
-@@ -4,11 +4,20 @@
- #include <mach/omap-pm.h>
- /* MPU speeds */
-+#define S1200M  1200000000
-+#define S1100M  1100000000
-+#define S1000M  1000000000
-+#define S950M   950000000
-+#define S900M   900000000
-+#define S850M   850000000
-+#define S810M   810000000
-+#define S750M   750000000
-+#define S700M   700000000
- #define S600M   600000000
- #define S550M   550000000
- #define S500M   500000000
- #define S250M   250000000
--#define S125M   125000000
-+#define S125M   124999000
- /* DSP speeds */
- #define S430M   430000000
-@@ -23,16 +32,24 @@
- static struct omap_opp omap3_mpu_rate_table[] = {
-       {0, 0, 0},
--      /*OPP1*/
-       {0, VDD1_OPP1, 0x1E},
--      /*OPP2*/
--      {S250M, VDD1_OPP2, 0x26},
--      /*OPP3*/
--      {S500M, VDD1_OPP3, 0x30},
--      /*OPP4*/
--      {S550M, VDD1_OPP4, 0x36},
--      /*OPP5*/
--      {S600M, VDD1_OPP5, 0x3C},
-+      /*underclocking*/
-+      {S125M, VDD1_OPP2, 0x1E},
-+      /*default*/
-+      {S250M, VDD1_OPP3, 0x26},
-+      {S500M, VDD1_OPP4, 0x30},
-+      {S550M, VDD1_OPP5, 0x30},
-+      {S600M, 6, 0x36},
-+      /*overclocking*/
-+      {S700M, 7, 0x36},
-+      {S750M, 8, 0x36},
-+      {S810M, 9, 0x36},
-+      {S850M, 10, 0x36},
-+      {S900M, 11, 0x36},
-+      {S950M, 12, 0x36},
-+      {S1000M, 13, 0x3C},
-+      {S1100M, 14, 0x3C},
-+      {S1200M, 15, 0x40},
- };
- static struct omap_opp omap3_l3_rate_table[] = {
-@@ -47,16 +64,24 @@
- static struct omap_opp omap3_dsp_rate_table[] = {
-       {0, 0, 0},
--      /*OPP1*/
-+      /*underclocking*/
-       {S90M, VDD1_OPP1, 0x1E},
--      /*OPP2*/
--      {S180M, VDD1_OPP2, 0x26},
--      /*OPP3*/
--      {S360M, VDD1_OPP3, 0x30},
--      /*OPP4*/
--      {S400M, VDD1_OPP4, 0x36},
--      /*OPP5*/
--      {S430M, VDD1_OPP5, 0x3C},
-+      /*default*/
-+      {S90M, VDD1_OPP2, 0x1E},
-+      {S180M, VDD1_OPP3, 0x26},
-+      {S360M, VDD1_OPP4, 0x30},
-+      {S400M, VDD1_OPP5, 0x36},
-+      {S430M, 6, 0x36},
-+      /*overclocking*/
-+      {S430M, 7, 0x36},
-+      {S430M, 8, 0x36},
-+      {S430M, 9, 0x36},/*800MHz*/
-+      {S500M, 10, 0x3C},
-+      {S500M, 11, 0x3C},
-+      {S500M, 12, 0x3C},
-+      {S500M, 13, 0x3C},
-+      {S500M, 14, 0x3C},
-+      {S500M, 15, 0x3C},
- };
- #endif
---- kernel-maemo-2.6.28.orig/arch/arm/plat-omap/include/mach/omap34xx.h
-+++ kernel-maemo-2.6.28/arch/arm/plat-omap/include/mach/omap34xx.h
-@@ -114,7 +114,8 @@
- #define VDD2_OPP3     0x3
- #define MIN_VDD1_OPP  VDD1_OPP1
--#define MAX_VDD1_OPP  VDD1_OPP5
-+/*#define MAX_VDD1_OPP        VDD1_OPP5*/
-+#define MAX_VDD1_OPP  15
- #define MIN_VDD2_OPP  VDD2_OPP1
- #define MAX_VDD2_OPP  VDD2_OPP3
---- kernel-maemo-2.6.28.orig/arch/arm/mach-omap2/smartreflex.c
-+++ kernel-maemo-2.6.28/arch/arm/mach-omap2/smartreflex.c
-@@ -513,7 +513,7 @@
-       sr->req_opp_no = target_opp_no;
-       if (sr->srid == SR1) {
--              switch (target_opp_no) {
-+              switch (min(target_opp_no-1,5)) {
-               case 5:
-                       nvalue_reciprocal = sr->opp5_nvalue;
-                       break;
-@@ -527,6 +527,7 @@
-                       nvalue_reciprocal = sr->opp2_nvalue;
-                       break;
-               case 1:
-+              case 0:
-                       nvalue_reciprocal = sr->opp1_nvalue;
-                       break;
-               default:
---- kernel-maemo-2.6.28.orig/arch/arm/plat-omap/cpu-omap.c
-+++ kernel-maemo-2.6.28/arch/arm/plat-omap/cpu-omap.c
-@@ -148,10 +148,13 @@
-                                                       VERY_HI_RATE) / 1000;
-       }
--      clk_set_rate(mpu_clk, policy->cpuinfo.max_freq * 1000);
-+      /*clk_set_rate(mpu_clk, policy->cpuinfo.max_freq * 1000);*/
-+      clk_set_rate(mpu_clk, 600000 * 1000); /*N900 hack: set default max to 600MHz */
--      policy->min = policy->cpuinfo.min_freq;
--      policy->max = policy->cpuinfo.max_freq;
-+      /*policy->min = policy->cpuinfo.min_freq;*/
-+      /*policy->max = policy->cpuinfo.max_freq;*/
-+      policy->min = 250000;
-+      policy->max = 600000; /*N900 hack: set default to 250-600MHz */
-       policy->cur = omap_getspeed(0);
-       policy->cpuinfo.transition_latency = 300 * 1000;
---- kernel-maemo-2.6.28.orig/arch/arm/mach-omap2/smartreflex.h
-+++ kernel-maemo-2.6.28/arch/arm/mach-omap2/smartreflex.h
-@@ -254,7 +254,7 @@
- /* XXX: end remove/move */
- /* SR_MAX_LOW_OPP: the highest of the "low OPPs", 1 and 2. */
--#define SR_MAX_LOW_OPP                2
-+#define SR_MAX_LOW_OPP                3
- /* XXX: find more appropriate place for these once DVFS is in place */
- extern u32 current_vdd1_opp;
---- kernel-maemo-2.6.28.orig/drivers/cpufreq/cpufreq.c
-+++ kernel-maemo-2.6.28/drivers/cpufreq/cpufreq.c
-@@ -465,7 +465,7 @@
- /**
-  * cpufreq_per_cpu_attr_write() / store_##file_name() - sysfs write access
-  */
--#define store_one(file_name, object)                  \
-+#define store_one(file_name, object,ignore)                   \
- static ssize_t store_##file_name                                      \
- (struct cpufreq_policy *policy, const char *buf, size_t count)                \
- {                                                                     \
-@@ -479,15 +479,16 @@
-       ret = sscanf (buf, "%u", &new_policy.object);                   \
-       if (ret != 1)                                                   \
-               return -EINVAL;                                         \
--                                                                      \
--      ret = __cpufreq_set_policy(policy, &new_policy);                \
-+      printk(KERN_DEBUG "cpufreq: request %u -> %u\n",policy->object,new_policy.object);      \
-+      if (new_policy.object != ignore && new_policy.object >= 100000) \
-+          ret = __cpufreq_set_policy(policy, &new_policy);            \
-       policy->user_policy.object = policy->object;                    \
-                                                                       \
-       return ret ? ret : count;                                       \
- }
--store_one(scaling_min_freq,min);
--store_one(scaling_max_freq,max);
-+store_one(scaling_min_freq,min,600000);
-+store_one(scaling_max_freq,max,600000);
- /**
-  * show_cpuinfo_cur_freq - current CPU frequency as detected by hardware
---- kernel-maemo-2.6.28.orig/Makefile
-+++ kernel-maemo-2.6.28/Makefile
-@@ -1,7 +1,7 @@
- VERSION = 2
- PATCHLEVEL = 6
- SUBLEVEL = 28
--EXTRAVERSION = .10maemo
-+EXTRAVERSION = .10maemo-lv
- NAME = Erotic Pickled Herring
- # *DOCUMENTATION*
diff --git a/kernel-power-2.6.28/debian/patches/overclock-ulv.diff b/kernel-power-2.6.28/debian/patches/overclock-ulv.diff
deleted file mode 100644 (file)
index 23d6c69..0000000
+++ /dev/null
@@ -1,197 +0,0 @@
---- kernel-maemo-2.6.28.orig/arch/arm/mach-omap2/omap3-opp.h
-+++ kernel-maemo-2.6.28/arch/arm/mach-omap2/omap3-opp.h
-@@ -4,11 +4,20 @@
- #include <mach/omap-pm.h>
- /* MPU speeds */
-+#define S1200M  1200000000
-+#define S1100M  1100000000
-+#define S1000M  1000000000
-+#define S950M   950000000
-+#define S900M   900000000
-+#define S850M   850000000
-+#define S810M   810000000
-+#define S750M   750000000
-+#define S700M   700000000
- #define S600M   600000000
- #define S550M   550000000
- #define S500M   500000000
- #define S250M   250000000
--#define S125M   125000000
-+#define S125M   124999000
- /* DSP speeds */
- #define S430M   430000000
-@@ -23,16 +32,24 @@
- static struct omap_opp omap3_mpu_rate_table[] = {
-       {0, 0, 0},
--      /*OPP1*/
--      {0, VDD1_OPP1, 0x1E},
--      /*OPP2*/
--      {S250M, VDD1_OPP2, 0x26},
--      /*OPP3*/
--      {S500M, VDD1_OPP3, 0x30},
--      /*OPP4*/
--      {S550M, VDD1_OPP4, 0x36},
--      /*OPP5*/
--      {S600M, VDD1_OPP5, 0x3C},
-+      {0, VDD1_OPP1, 0x19},
-+      /*underclocking*/
-+      {S125M, VDD1_OPP2, 0x19},
-+      /*default*/
-+      {S250M, VDD1_OPP3, 0x19},
-+      {S500M, VDD1_OPP4, 0x21},
-+      {S550M, VDD1_OPP5, 0x26},
-+      {S600M, 6, 0x26},
-+      /*overclocking*/
-+      {S700M, 7, 0x2D},
-+      {S750M, 8, 0x2D},
-+      {S810M, 9, 0x30},
-+      {S850M, 10, 0x30},
-+      {S900M, 11, 0x36},
-+      {S950M, 12, 0x36},
-+      {S1000M, 13, 0x3C},
-+      {S1100M, 14, 0x3C},
-+      {S1200M, 15, 0x40},
- };
- static struct omap_opp omap3_l3_rate_table[] = {
-@@ -47,16 +64,24 @@
- static struct omap_opp omap3_dsp_rate_table[] = {
-       {0, 0, 0},
--      /*OPP1*/
-+      /*underclocking*/
-       {S90M, VDD1_OPP1, 0x1E},
--      /*OPP2*/
--      {S180M, VDD1_OPP2, 0x26},
--      /*OPP3*/
--      {S360M, VDD1_OPP3, 0x30},
--      /*OPP4*/
--      {S400M, VDD1_OPP4, 0x36},
--      /*OPP5*/
--      {S430M, VDD1_OPP5, 0x3C},
-+      /*default*/
-+      {S90M, VDD1_OPP2, 0x1E},
-+      {S180M, VDD1_OPP3, 0x26},
-+      {S360M, VDD1_OPP4, 0x30},
-+      {S400M, VDD1_OPP5, 0x36},
-+      {S430M, 6, 0x36},
-+      /*overclocking*/
-+      {S430M, 7, 0x36},
-+      {S430M, 8, 0x36},
-+      {S430M, 9, 0x36},/*800MHz*/
-+      {S500M, 10, 0x3C},
-+      {S500M, 11, 0x3C},
-+      {S500M, 12, 0x3C},
-+      {S500M, 13, 0x3C},
-+      {S500M, 14, 0x3C},
-+      {S500M, 15, 0x3C},
- };
- #endif
---- kernel-maemo-2.6.28.orig/arch/arm/plat-omap/include/mach/omap34xx.h
-+++ kernel-maemo-2.6.28/arch/arm/plat-omap/include/mach/omap34xx.h
-@@ -114,7 +114,8 @@
- #define VDD2_OPP3     0x3
- #define MIN_VDD1_OPP  VDD1_OPP1
--#define MAX_VDD1_OPP  VDD1_OPP5
-+/*#define MAX_VDD1_OPP        VDD1_OPP5*/
-+#define MAX_VDD1_OPP  15
- #define MIN_VDD2_OPP  VDD2_OPP1
- #define MAX_VDD2_OPP  VDD2_OPP3
---- kernel-maemo-2.6.28.orig/arch/arm/mach-omap2/smartreflex.c
-+++ kernel-maemo-2.6.28/arch/arm/mach-omap2/smartreflex.c
-@@ -513,7 +513,7 @@
-       sr->req_opp_no = target_opp_no;
-       if (sr->srid == SR1) {
--              switch (target_opp_no) {
-+              switch (min(target_opp_no-1,5)) {
-               case 5:
-                       nvalue_reciprocal = sr->opp5_nvalue;
-                       break;
-@@ -527,6 +527,7 @@
-                       nvalue_reciprocal = sr->opp2_nvalue;
-                       break;
-               case 1:
-+              case 0:
-                       nvalue_reciprocal = sr->opp1_nvalue;
-                       break;
-               default:
---- kernel-maemo-2.6.28.orig/arch/arm/plat-omap/cpu-omap.c
-+++ kernel-maemo-2.6.28/arch/arm/plat-omap/cpu-omap.c
-@@ -148,10 +148,13 @@
-                                                       VERY_HI_RATE) / 1000;
-       }
--      clk_set_rate(mpu_clk, policy->cpuinfo.max_freq * 1000);
-+      /*clk_set_rate(mpu_clk, policy->cpuinfo.max_freq * 1000);*/
-+      clk_set_rate(mpu_clk, 600000 * 1000); /*N900 hack: set default max to 600MHz */
--      policy->min = policy->cpuinfo.min_freq;
--      policy->max = policy->cpuinfo.max_freq;
-+      /*policy->min = policy->cpuinfo.min_freq;*/
-+      /*policy->max = policy->cpuinfo.max_freq;*/
-+      policy->min = 250000;
-+      policy->max = 600000; /*N900 hack: set default to 250-600MHz */
-       policy->cur = omap_getspeed(0);
-       policy->cpuinfo.transition_latency = 300 * 1000;
---- kernel-maemo-2.6.28.orig/arch/arm/mach-omap2/smartreflex.h
-+++ kernel-maemo-2.6.28/arch/arm/mach-omap2/smartreflex.h
-@@ -254,7 +254,7 @@
- /* XXX: end remove/move */
- /* SR_MAX_LOW_OPP: the highest of the "low OPPs", 1 and 2. */
--#define SR_MAX_LOW_OPP                2
-+#define SR_MAX_LOW_OPP                3
- /* XXX: find more appropriate place for these once DVFS is in place */
- extern u32 current_vdd1_opp;
---- kernel-maemo-2.6.28.orig/drivers/cpufreq/cpufreq.c
-+++ kernel-maemo-2.6.28/drivers/cpufreq/cpufreq.c
-@@ -465,7 +465,7 @@
- /**
-  * cpufreq_per_cpu_attr_write() / store_##file_name() - sysfs write access
-  */
--#define store_one(file_name, object)                  \
-+#define store_one(file_name, object,ignore)                   \
- static ssize_t store_##file_name                                      \
- (struct cpufreq_policy *policy, const char *buf, size_t count)                \
- {                                                                     \
-@@ -479,15 +479,16 @@
-       ret = sscanf (buf, "%u", &new_policy.object);                   \
-       if (ret != 1)                                                   \
-               return -EINVAL;                                         \
--                                                                      \
--      ret = __cpufreq_set_policy(policy, &new_policy);                \
-+      printk(KERN_DEBUG "cpufreq: request %u -> %u\n",policy->object,new_policy.object);      \
-+      if (new_policy.object != ignore && new_policy.object >= 100000) \
-+          ret = __cpufreq_set_policy(policy, &new_policy);            \
-       policy->user_policy.object = policy->object;                    \
-                                                                       \
-       return ret ? ret : count;                                       \
- }
--store_one(scaling_min_freq,min);
--store_one(scaling_max_freq,max);
-+store_one(scaling_min_freq,min,600000);
-+store_one(scaling_max_freq,max,600000);
- /**
-  * show_cpuinfo_cur_freq - current CPU frequency as detected by hardware
---- kernel-maemo-2.6.28.orig/Makefile
-+++ kernel-maemo-2.6.28/Makefile
-@@ -1,7 +1,7 @@
- VERSION = 2
- PATCHLEVEL = 6
- SUBLEVEL = 28
--EXTRAVERSION = .10maemo
-+EXTRAVERSION = .10maemo-ulv
- NAME = Erotic Pickled Herring
- # *DOCUMENTATION*
diff --git a/kernel-power-2.6.28/debian/patches/overclock-xlv.diff b/kernel-power-2.6.28/debian/patches/overclock-xlv.diff
deleted file mode 100644 (file)
index 269da98..0000000
+++ /dev/null
@@ -1,196 +0,0 @@
---- kernel-maemo-2.6.28.orig/arch/arm/mach-omap2/omap3-opp.h
-+++ kernel-maemo-2.6.28/arch/arm/mach-omap2/omap3-opp.h
-@@ -4,11 +4,20 @@
- #include <mach/omap-pm.h>
- /* MPU speeds */
-+#define S1150M  1150000000
-+#define S1100M  1100000000
-+#define S1000M  1000000000
-+#define S950M   950000000
-+#define S900M   900000000
-+#define S850M   850000000
-+#define S810M   810000000
-+#define S750M   750000000
-+#define S700M   700000000
- #define S600M   600000000
- #define S550M   550000000
- #define S500M   500000000
- #define S250M   250000000
--#define S125M   125000000
-+#define S125M   124999000
- /* DSP speeds */
- #define S430M   430000000
-@@ -23,16 +32,24 @@
- static struct omap_opp omap3_mpu_rate_table[] = {
-       {0, 0, 0},
--      /*OPP1*/
-       {0, VDD1_OPP1, 0x1E},
--      /*OPP2*/
--      {S250M, VDD1_OPP2, 0x26},
--      /*OPP3*/
--      {S500M, VDD1_OPP3, 0x30},
--      /*OPP4*/
--      {S550M, VDD1_OPP4, 0x36},
--      /*OPP5*/
--      {S600M, VDD1_OPP5, 0x3C},
-+      /*underclocking*/
-+      {S125M, VDD1_OPP2, 0x14},
-+      /*default*/
-+      {S250M, VDD1_OPP3, 0x1E},
-+      {S500M, VDD1_OPP4, 0x21},
-+      {S550M, VDD1_OPP5, 0x26},
-+      {S600M, 6, 0x26},
-+      /*overclocking*/
-+      {S700M, 7, 0x2D},
-+      {S750M, 8, 0x2D},
-+      {S810M, 9, 0x30},
-+      {S850M, 10, 0x30},
-+      {S900M, 11, 0x36},
-+      {S950M, 12, 0x36},
-+      {S1000M, 13, 0x3C},
-+      {S1100M, 14, 0x43},
-+      {S1150M, 15, 0x48},
- };
- static struct omap_opp omap3_l3_rate_table[] = {
-@@ -47,16 +64,24 @@
- static struct omap_opp omap3_dsp_rate_table[] = {
-       {0, 0, 0},
--      /*OPP1*/
-+      /*underclocking*/
-       {S90M, VDD1_OPP1, 0x1E},
--      /*OPP2*/
--      {S180M, VDD1_OPP2, 0x26},
--      /*OPP3*/
--      {S360M, VDD1_OPP3, 0x30},
--      /*OPP4*/
--      {S400M, VDD1_OPP4, 0x36},
--      /*OPP5*/
--      {S430M, VDD1_OPP5, 0x3C},
-+      /*default*/
-+      {S90M, VDD1_OPP2, 0x1E},
-+      {S180M, VDD1_OPP3, 0x26},
-+      {S360M, VDD1_OPP4, 0x30},
-+      {S400M, VDD1_OPP5, 0x36},
-+      {S430M, 6, 0x36},
-+      /*overclocking*/
-+      {S430M, 7, 0x36},
-+      {S430M, 8, 0x36},
-+      {S430M, 9, 0x36},/*800MHz*/
-+      {S500M, 10, 0x3C},
-+      {S500M, 11, 0x3C},
-+      {S500M, 12, 0x3C},
-+      {S500M, 13, 0x3C},
-+      {S500M, 14, 0x43},
-+      {S500M, 15, 0x48},
- };
- #endif
---- kernel-maemo-2.6.28.orig/arch/arm/plat-omap/include/mach/omap34xx.h
-+++ kernel-maemo-2.6.28/arch/arm/plat-omap/include/mach/omap34xx.h
-@@ -114,7 +114,8 @@
- #define VDD2_OPP3     0x3
- #define MIN_VDD1_OPP  VDD1_OPP1
--#define MAX_VDD1_OPP  VDD1_OPP5
-+/*#define MAX_VDD1_OPP        VDD1_OPP5*/
-+#define MAX_VDD1_OPP  15
- #define MIN_VDD2_OPP  VDD2_OPP1
- #define MAX_VDD2_OPP  VDD2_OPP3
---- kernel-maemo-2.6.28.orig/arch/arm/mach-omap2/smartreflex.c
-+++ kernel-maemo-2.6.28/arch/arm/mach-omap2/smartreflex.c
-@@ -513,7 +513,7 @@
-       sr->req_opp_no = target_opp_no;
-       if (sr->srid == SR1) {
--              switch (target_opp_no) {
-+              switch (min(target_opp_no-1,5)) {
-               case 5:
-                       nvalue_reciprocal = sr->opp5_nvalue;
-                       break;
-@@ -527,6 +527,7 @@
-                       nvalue_reciprocal = sr->opp2_nvalue;
-                       break;
-               case 1:
-+              case 0:
-                       nvalue_reciprocal = sr->opp1_nvalue;
-                       break;
-               default:
---- kernel-maemo-2.6.28.orig/arch/arm/plat-omap/cpu-omap.c
-+++ kernel-maemo-2.6.28/arch/arm/plat-omap/cpu-omap.c
-@@ -148,10 +148,13 @@
-                                                       VERY_HI_RATE) / 1000;
-       }
--      clk_set_rate(mpu_clk, policy->cpuinfo.max_freq * 1000);
-+      /*clk_set_rate(mpu_clk, policy->cpuinfo.max_freq * 1000);*/
-+      clk_set_rate(mpu_clk, 600000 * 1000); /*N900 hack: set default max to 600MHz */
--      policy->min = policy->cpuinfo.min_freq;
--      policy->max = policy->cpuinfo.max_freq;
-+      /*policy->min = policy->cpuinfo.min_freq;*/
-+      /*policy->max = policy->cpuinfo.max_freq;*/
-+      policy->min = 250000;
-+      policy->max = 600000; /*N900 hack: set default to 250-600MHz */
-       policy->cur = omap_getspeed(0);
-       policy->cpuinfo.transition_latency = 300 * 1000;
---- kernel-maemo-2.6.28.orig/arch/arm/mach-omap2/smartreflex.h
-+++ kernel-maemo-2.6.28/arch/arm/mach-omap2/smartreflex.h
-@@ -254,7 +254,7 @@
- /* XXX: end remove/move */
- /* SR_MAX_LOW_OPP: the highest of the "low OPPs", 1 and 2. */
--#define SR_MAX_LOW_OPP                2
-+#define SR_MAX_LOW_OPP                3
- /* XXX: find more appropriate place for these once DVFS is in place */
- extern u32 current_vdd1_opp;
---- kernel-maemo-2.6.28.orig/drivers/cpufreq/cpufreq.c
-+++ kernel-maemo-2.6.28/drivers/cpufreq/cpufreq.c
-@@ -465,7 +465,7 @@
- /**
-  * cpufreq_per_cpu_attr_write() / store_##file_name() - sysfs write access
-  */
--#define store_one(file_name, object)                  \
-+#define store_one(file_name, object,ignore)                   \
- static ssize_t store_##file_name                                      \
- (struct cpufreq_policy *policy, const char *buf, size_t count)                \
- {                                                                     \
-@@ -479,15 +479,16 @@
-       ret = sscanf (buf, "%u", &new_policy.object);                   \
-       if (ret != 1)                                                   \
-               return -EINVAL;                                         \
--                                                                      \
--      ret = __cpufreq_set_policy(policy, &new_policy);                \
-+      printk(KERN_DEBUG "cpufreq: request %u -> %u\n",policy->object,new_policy.object);      \
-+      if (new_policy.object != ignore && new_policy.object >= 100000) \
-+          ret = __cpufreq_set_policy(policy, &new_policy);            \
-       policy->user_policy.object = policy->object;                    \
-                                                                       \
-       return ret ? ret : count;                                       \
- }
--store_one(scaling_min_freq,min);
--store_one(scaling_max_freq,max);
-+store_one(scaling_min_freq,min,0);
-+store_one(scaling_max_freq,max,600000);
- /**
-  * show_cpuinfo_cur_freq - current CPU frequency as detected by hardware
---- kernel-maemo-2.6.28.orig/Makefile
-+++ kernel-maemo-2.6.28/Makefile
-@@ -1,7 +1,7 @@
- VERSION = 2
- PATCHLEVEL = 6
- SUBLEVEL = 28
--EXTRAVERSION = .10maemo
-+EXTRAVERSION = .10maemo-xlv
- NAME = Erotic Pickled Herring
- # *DOCUMENTATION*
index 39deab2..35825a0 100644 (file)
@@ -1,5 +1,5 @@
---- kernel-maemo-2.6.28.orig/arch/arm/mach-omap2/omap3-opp.h
-+++ kernel-maemo-2.6.28/arch/arm/mach-omap2/omap3-opp.h
+--- kernel-power-2.6.28.orig/arch/arm/mach-omap2/omap3-opp.h
++++ kernel-power-2.6.28/arch/arm/mach-omap2/omap3-opp.h
 @@ -4,13 +4,23 @@
  #include <mach/omap-pm.h>
  
@@ -18,7 +18,7 @@
  #define S500M   500000000
  #define S250M   250000000
 -#define S125M   125000000
-+#define S125M   124999000
++#define S125M   124999000 /* temporary workaround to ignore telephone app's stubborn request for the lowest available frequency */
  
  /* DSP speeds */
 +#define S520M   520000000
@@ -71,8 +71,8 @@
 +extern struct omap_opp omap3_l3_rate_table[];
  
  #endif
---- kernel-maemo-2.6.28.orig/arch/arm/plat-omap/include/mach/omap34xx.h
-+++ kernel-maemo-2.6.28/arch/arm/plat-omap/include/mach/omap34xx.h
+--- kernel-power-2.6.28.orig/arch/arm/plat-omap/include/mach/omap34xx.h
++++ kernel-power-2.6.28/arch/arm/plat-omap/include/mach/omap34xx.h
 @@ -114,7 +114,8 @@
  #define VDD2_OPP3     0x3
  
@@ -83,8 +83,8 @@
  #define MIN_VDD2_OPP  VDD2_OPP1
  #define MAX_VDD2_OPP  VDD2_OPP3
  
---- kernel-maemo-2.6.28.orig/arch/arm/mach-omap2/smartreflex.c
-+++ kernel-maemo-2.6.28/arch/arm/mach-omap2/smartreflex.c
+--- kernel-power-2.6.28.orig/arch/arm/mach-omap2/smartreflex.c
++++ kernel-power-2.6.28/arch/arm/mach-omap2/smartreflex.c
 @@ -513,7 +513,7 @@
        sr->req_opp_no = target_opp_no;
  
                        nvalue_reciprocal = sr->opp1_nvalue;
                        break;
                default:
-@@ -564,6 +565,8 @@
-                       (ERRCONFIG_VPBOUNDINTEN | ERRCONFIG_VPBOUNDINTST));
-       if (sr->srid == SR1) {
-+              /*printk(KERN_NOTICE "OPP%d setting voltage %d\n",
-+                                                              target_opp_no,mpu_opps[target_opp_no].vsel);*/
-               errminlimit = (target_opp_no > SR_MAX_LOW_OPP) ?
-                       SR1_ERRMINLIMIT_HIGHOPP : SR1_ERRMINLIMIT_LOWOPP;
-@@ -866,6 +869,8 @@
-       current_opp_no = get_opp_no(current_opp);
-       if (vdd == PRCM_VDD1) {
-+              /*printk(KERN_DEBUG "OPP%d bypass setting voltage %d\n",
-+                                                              target_opp_no,target_vsel);*/
-               t2_smps_steps = abs(target_vsel - current_vsel);
-               errorgain = (target_opp_no > SR_MAX_LOW_OPP) ?
-                       PRM_VP1_CONFIG_ERRORGAIN_HIGHOPP :
---- kernel-maemo-2.6.28.orig/arch/arm/plat-omap/cpu-omap.c
-+++ kernel-maemo-2.6.28/arch/arm/plat-omap/cpu-omap.c
+--- kernel-power-2.6.28.orig/arch/arm/plat-omap/cpu-omap.c
++++ kernel-power-2.6.28/arch/arm/plat-omap/cpu-omap.c
 @@ -148,10 +148,13 @@
                                                        VERY_HI_RATE) / 1000;
        }
        policy->cur = omap_getspeed(0);
  
        policy->cpuinfo.transition_latency = 300 * 1000;
---- kernel-maemo-2.6.28.orig/arch/arm/mach-omap2/smartreflex.h
-+++ kernel-maemo-2.6.28/arch/arm/mach-omap2/smartreflex.h
+--- kernel-power-2.6.28.orig/arch/arm/mach-omap2/smartreflex.h
++++ kernel-power-2.6.28/arch/arm/mach-omap2/smartreflex.h
 @@ -254,7 +254,7 @@
  /* XXX: end remove/move */
  
  
  /* XXX: find more appropriate place for these once DVFS is in place */
  extern u32 current_vdd1_opp;
---- kernel-maemo-2.6.28.orig/drivers/cpufreq/cpufreq.c
-+++ kernel-maemo-2.6.28/drivers/cpufreq/cpufreq.c
+--- kernel-power-2.6.28.orig/drivers/cpufreq/cpufreq.c
++++ kernel-power-2.6.28/drivers/cpufreq/cpufreq.c
 @@ -465,7 +465,7 @@
  /**
   * cpufreq_per_cpu_attr_write() / store_##file_name() - sysfs write access
  static ssize_t store_##file_name                                      \
  (struct cpufreq_policy *policy, const char *buf, size_t count)                \
  {                                                                     \
-@@ -479,15 +479,16 @@
+@@ -479,15 +479,15 @@
        ret = sscanf (buf, "%u", &new_policy.object);                   \
        if (ret != 1)                                                   \
                return -EINVAL;                                         \
 -                                                                      \
 -      ret = __cpufreq_set_policy(policy, &new_policy);                \
-+      printk(KERN_DEBUG "cpufreq: request %u -> %u\n",policy->object,new_policy.object);      \
 +      if (new_policy.object != ignore && new_policy.object >= 100000) \
 +          ret = __cpufreq_set_policy(policy, &new_policy);            \
        policy->user_policy.object = policy->object;                    \
  
  /**
   * show_cpuinfo_cur_freq - current CPU frequency as detected by hardware
---- kernel-maemo-2.6.28.orig/arch/arm/mach-omap2/pm.c
-+++ kernel-maemo-2.6.28/arch/arm/mach-omap2/pm.c
+--- kernel-power-2.6.28.orig/arch/arm/mach-omap2/pm.c
++++ kernel-power-2.6.28/arch/arm/mach-omap2/pm.c
 @@ -39,6 +39,62 @@
  #include "prm-regbits-34xx.h"
  #include "pm.h"
 +      int i;
 +      char *b=buf;
 +      for(i=1;i<=MAX_VDD1_OPP;i++)
-+              b+=sprintf(b, "%lu ", dsp_opps[i].rate);
++              b+=sprintf(b, "%u ", (u16) (dsp_opps[i].rate/1000000));
 +      b+=sprintf(b, "\n");
 +      return b-buf;
 +}
 +                                      struct kobj_attribute *attr,
 +                                      const char *buf, size_t n)
 +{
-+      unsigned long value[16];
++      u16 value[16];
 +      int i;
 +
-+      if (sscanf(buf, "%lu %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu",
++      if (sscanf(buf, "%hu %hu %hu %hu %hu %hu %hu %hu %hu %hu %hu %hu %hu %hu %hu %hu",
 +                              &value[0], &value[1], &value[2], &value[3],
 +                              &value[4], &value[5], &value[6], &value[7],
 +                              &value[8], &value[9], &value[10], &value[11],
 +      mutex_lock(&dvfs_mutex);
 +
 +      for(i=1;i<=MAX_VDD1_OPP;i++) {
-+              if(value[i-1]<=600000) {
-+                      dsp_opps[i].rate = value[i-1];
++              if(value[i-1]<=600) {
++                      dsp_opps[i].rate = 1000000 * (u32)value[i-1];
 +              }
 +      }
 +
index 7991486..19d71ff 100644 (file)
@@ -13,4 +13,8 @@ block2mtd-yoush.diff
 gentoo-fsfixes.diff
 kexec.diff
 bq_matan.diff
+leds-lp5523.diff
+trig-keyb.diff
+twl-scrollock.diff
+squashfs.diff
 overclock.diff
diff --git a/kernel-power-2.6.28/debian/patches/squashfs.diff b/kernel-power-2.6.28/debian/patches/squashfs.diff
new file mode 100644 (file)
index 0000000..e15e583
--- /dev/null
@@ -0,0 +1,4192 @@
+--- kernel-power-2.6.28.orig/fs/Kconfig
++++ kernel-power-2.6.28/fs/Kconfig
+@@ -960,6 +960,56 @@
+         If unsure, say N.
++config SQUASHFS
++      tristate "SquashFS 3.4 - Squashed file system support"
++      select ZLIB_INFLATE
++      help
++        Saying Y here includes support for SquashFS 3.4 (a Compressed
++        Read-Only File System).  Squashfs is a highly compressed read-only
++        filesystem for Linux.  It uses zlib compression to compress both
++        files, inodes and directories.  Inodes in the system are very small
++        and all blocks are packed to minimise data overhead. Block sizes
++        greater than 4K are supported up to a maximum of 1 Mbytes (default
++        block size 128K).  SquashFS 3.3 supports 64 bit filesystems and files
++        (larger than 4GB), full uid/gid information, hard links and timestamps.  
++
++        Squashfs is intended for general read-only filesystem use, for
++        archival use (i.e. in cases where a .tar.gz file may be used), and in
++        embedded systems where low overhead is needed.  Further information
++        and filesystem tools are available from http://squashfs.sourceforge.net.
++
++        If you want to compile this as a module ( = code which can be
++        inserted in and removed from the running kernel whenever you want),
++        say M here and read <file:Documentation/modules.txt>.  The module
++        will be called squashfs.  Note that the root file system (the one
++        containing the directory /) cannot be compiled as a module.
++
++        If unsure, say N.
++
++config SQUASHFS_EMBEDDED
++
++      bool "Additional option for memory-constrained systems" 
++      depends on SQUASHFS
++      default n
++      help
++        Saying Y here allows you to specify cache size.
++
++        If unsure, say N.
++
++config SQUASHFS_FRAGMENT_CACHE_SIZE
++      int "Number of fragments cached" if SQUASHFS_EMBEDDED
++      depends on SQUASHFS
++      default "3"
++      help
++        By default SquashFS caches the last 3 fragments read from
++        the filesystem.  Increasing this amount may mean SquashFS
++        has to re-read fragments less often from disk, at the expense
++        of extra system memory.  Decreasing this amount will mean
++        SquashFS uses less memory at the expense of extra reads from disk.
++
++        Note there must be at least one cached fragment.  Anything
++        much more than three will probably not make much difference.
++
+ config VXFS_FS
+       tristate "FreeVxFS file system support (VERITAS VxFS(TM) compatible)"
+       depends on BLOCK
+--- kernel-power-2.6.28.orig/fs/Makefile
++++ kernel-power-2.6.28/fs/Makefile
+@@ -76,6 +76,7 @@
+ obj-$(CONFIG_JBD2)            += jbd2/
+ obj-$(CONFIG_EXT2_FS)         += ext2/
+ obj-$(CONFIG_CRAMFS)          += cramfs/
++obj-$(CONFIG_SQUASHFS)                += squashfs/
+ obj-y                         += ramfs/
+ obj-$(CONFIG_HUGETLBFS)               += hugetlbfs/
+ obj-$(CONFIG_CODA_FS)         += coda/
+--- /dev/null
++++ kernel-power-2.6.28/fs/squashfs/Makefile
+@@ -0,0 +1,7 @@
++#
++# Makefile for the linux squashfs routines.
++#
++
++obj-$(CONFIG_SQUASHFS) += squashfs.o
++squashfs-y += inode.o
++squashfs-y += squashfs2_0.o
+--- /dev/null
++++ kernel-power-2.6.28/fs/squashfs/inode.c
+@@ -0,0 +1,2157 @@
++/*
++ * Squashfs - a compressed read only filesystem for Linux
++ *
++ * Copyright (c) 2002, 2003, 2004, 2005, 2006, 2007, 2008
++ * Phillip Lougher <phillip@lougher.demon.co.uk>
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License
++ * as published by the Free Software Foundation; either version 2,
++ * or (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
++ *
++ * inode.c
++ */
++
++#include <linux/squashfs_fs.h>
++#include <linux/module.h>
++#include <linux/zlib.h>
++#include <linux/fs.h>
++#include <linux/squashfs_fs_sb.h>
++#include <linux/squashfs_fs_i.h>
++#include <linux/buffer_head.h>
++#include <linux/vfs.h>
++#include <linux/vmalloc.h>
++#include <linux/spinlock.h>
++#include <linux/smp_lock.h>
++#include <linux/exportfs.h>
++
++#include "squashfs.h"
++
++static struct dentry *squashfs_fh_to_dentry(struct super_block *s,
++              struct fid *fid, int fh_len, int fh_type);
++static struct dentry *squashfs_fh_to_parent(struct super_block *s,
++              struct fid *fid, int fh_len, int fh_type);
++static struct dentry *squashfs_get_parent(struct dentry *child);
++static int squashfs_read_inode(struct inode *i, squashfs_inode_t inode);
++static int squashfs_statfs(struct dentry *, struct kstatfs *);
++static int squashfs_symlink_readpage(struct file *file, struct page *page);
++static long long read_blocklist(struct inode *inode, int index,
++                              int readahead_blks, char *block_list,
++                              unsigned short **block_p, unsigned int *bsize);
++static int squashfs_readpage(struct file *file, struct page *page);
++static int squashfs_readdir(struct file *, void *, filldir_t);
++static struct dentry *squashfs_lookup(struct inode *, struct dentry *,
++                              struct nameidata *);
++static int squashfs_remount(struct super_block *s, int *flags, char *data);
++static void squashfs_put_super(struct super_block *);
++static int squashfs_get_sb(struct file_system_type *,int, const char *, void *,
++                              struct vfsmount *);
++static struct inode *squashfs_alloc_inode(struct super_block *sb);
++static void squashfs_destroy_inode(struct inode *inode);
++static int init_inodecache(void);
++static void destroy_inodecache(void);
++
++static struct file_system_type squashfs_fs_type = {
++      .owner = THIS_MODULE,
++      .name = "squashfs",
++      .get_sb = squashfs_get_sb,
++      .kill_sb = kill_block_super,
++      .fs_flags = FS_REQUIRES_DEV
++};
++
++static const unsigned char squashfs_filetype_table[] = {
++      DT_UNKNOWN, DT_DIR, DT_REG, DT_LNK, DT_BLK, DT_CHR, DT_FIFO, DT_SOCK
++};
++
++static struct super_operations squashfs_super_ops = {
++      .alloc_inode = squashfs_alloc_inode,
++      .destroy_inode = squashfs_destroy_inode,
++      .statfs = squashfs_statfs,
++      .put_super = squashfs_put_super,
++      .remount_fs = squashfs_remount
++};
++
++static struct export_operations squashfs_export_ops = {
++      .fh_to_dentry = squashfs_fh_to_dentry,
++      .fh_to_parent = squashfs_fh_to_parent,
++      .get_parent = squashfs_get_parent
++};
++
++SQSH_EXTERN const struct address_space_operations squashfs_symlink_aops = {
++      .readpage = squashfs_symlink_readpage
++};
++
++SQSH_EXTERN const struct address_space_operations squashfs_aops = {
++      .readpage = squashfs_readpage
++};
++
++static const struct file_operations squashfs_dir_ops = {
++      .read = generic_read_dir,
++      .readdir = squashfs_readdir
++};
++
++SQSH_EXTERN struct inode_operations squashfs_dir_inode_ops = {
++      .lookup = squashfs_lookup
++};
++
++
++static struct buffer_head *get_block_length(struct super_block *s,
++                              int *cur_index, int *offset, int *c_byte)
++{
++      struct squashfs_sb_info *msblk = s->s_fs_info;
++      unsigned short temp;
++      struct buffer_head *bh;
++
++      if (!(bh = sb_bread(s, *cur_index)))
++              goto out;
++
++      if (msblk->devblksize - *offset == 1) {
++              if (msblk->swap)
++                      ((unsigned char *) &temp)[1] = *((unsigned char *)
++                              (bh->b_data + *offset));
++              else
++                      ((unsigned char *) &temp)[0] = *((unsigned char *)
++                              (bh->b_data + *offset));
++              brelse(bh);
++              if (!(bh = sb_bread(s, ++(*cur_index))))
++                      goto out;
++              if (msblk->swap)
++                      ((unsigned char *) &temp)[0] = *((unsigned char *)
++                              bh->b_data); 
++              else
++                      ((unsigned char *) &temp)[1] = *((unsigned char *)
++                              bh->b_data); 
++              *c_byte = temp;
++              *offset = 1;
++      } else {
++              if (msblk->swap) {
++                      ((unsigned char *) &temp)[1] = *((unsigned char *)
++                              (bh->b_data + *offset));
++                      ((unsigned char *) &temp)[0] = *((unsigned char *)
++                              (bh->b_data + *offset + 1)); 
++              } else {
++                      ((unsigned char *) &temp)[0] = *((unsigned char *)
++                              (bh->b_data + *offset));
++                      ((unsigned char *) &temp)[1] = *((unsigned char *)
++                              (bh->b_data + *offset + 1)); 
++              }
++              *c_byte = temp;
++              *offset += 2;
++      }
++
++      if (SQUASHFS_CHECK_DATA(msblk->sblk.flags)) {
++              if (*offset == msblk->devblksize) {
++                      brelse(bh);
++                      if (!(bh = sb_bread(s, ++(*cur_index))))
++                              goto out;
++                      *offset = 0;
++              }
++              if (*((unsigned char *) (bh->b_data + *offset)) !=
++                                              SQUASHFS_MARKER_BYTE) {
++                      ERROR("Metadata block marker corrupt @ %x\n",
++                                              *cur_index);
++                      brelse(bh);
++                      goto out;
++              }
++              (*offset)++;
++      }
++      return bh;
++
++out:
++      return NULL;
++}
++
++
++SQSH_EXTERN unsigned int squashfs_read_data(struct super_block *s, char *buffer,
++                      long long index, unsigned int length,
++                      long long *next_index, int srclength)
++{
++      struct squashfs_sb_info *msblk = s->s_fs_info;
++      struct squashfs_super_block *sblk = &msblk->sblk;
++      struct buffer_head **bh;
++      unsigned int offset = index & ((1 << msblk->devblksize_log2) - 1);
++      unsigned int cur_index = index >> msblk->devblksize_log2;
++      int bytes, avail_bytes, b = 0, k = 0;
++      unsigned int compressed;
++      unsigned int c_byte = length;
++
++      bh = kmalloc(((sblk->block_size >> msblk->devblksize_log2) + 1) *
++                                                              sizeof(struct buffer_head *), GFP_KERNEL);
++      if (bh == NULL)
++              goto read_failure;
++
++      if (c_byte) {
++              bytes = -offset;
++              compressed = SQUASHFS_COMPRESSED_BLOCK(c_byte);
++              c_byte = SQUASHFS_COMPRESSED_SIZE_BLOCK(c_byte);
++
++              TRACE("Block @ 0x%llx, %scompressed size %d, src size %d\n", index,
++                                      compressed ? "" : "un", (unsigned int) c_byte, srclength);
++
++              if (c_byte > srclength || index < 0 || (index + c_byte) > sblk->bytes_used)
++                      goto read_failure;
++
++              for (b = 0; bytes < (int) c_byte; b++, cur_index++) {
++                      bh[b] = sb_getblk(s, cur_index);
++                      if (bh[b] == NULL)
++                              goto block_release;
++                      bytes += msblk->devblksize;
++              }
++              ll_rw_block(READ, b, bh);
++      } else {
++              if (index < 0 || (index + 2) > sblk->bytes_used)
++                      goto read_failure;
++
++              bh[0] = get_block_length(s, &cur_index, &offset, &c_byte);
++              if (bh[0] == NULL)
++                      goto read_failure;
++              b = 1;
++
++              bytes = msblk->devblksize - offset;
++              compressed = SQUASHFS_COMPRESSED(c_byte);
++              c_byte = SQUASHFS_COMPRESSED_SIZE(c_byte);
++
++              TRACE("Block @ 0x%llx, %scompressed size %d\n", index, compressed
++                                      ? "" : "un", (unsigned int) c_byte);
++
++              if (c_byte > srclength || (index + c_byte) > sblk->bytes_used)
++                      goto block_release;
++
++              for (; bytes < c_byte; b++) {
++                      bh[b] = sb_getblk(s, ++cur_index);
++                      if (bh[b] == NULL)
++                              goto block_release;
++                      bytes += msblk->devblksize;
++              }
++              ll_rw_block(READ, b - 1, bh + 1);
++      }
++
++      if (compressed) {
++              int zlib_err = 0;
++
++              /*
++              * uncompress block
++              */
++
++              mutex_lock(&msblk->read_data_mutex);
++
++              msblk->stream.next_out = buffer;
++              msblk->stream.avail_out = srclength;
++
++              for (bytes = 0; k < b; k++) {
++                      avail_bytes = min(c_byte - bytes, msblk->devblksize - offset);
++
++                      wait_on_buffer(bh[k]);
++                      if (!buffer_uptodate(bh[k]))
++                              goto release_mutex;
++
++                      msblk->stream.next_in = bh[k]->b_data + offset;
++                      msblk->stream.avail_in = avail_bytes;
++
++                      if (k == 0) {
++                              zlib_err = zlib_inflateInit(&msblk->stream);
++                              if (zlib_err != Z_OK) {
++                                      ERROR("zlib_inflateInit returned unexpected result 0x%x,"
++                                              " srclength %d\n", zlib_err, srclength);
++                                      goto release_mutex;
++                              }
++
++                              if (avail_bytes == 0) {
++                                      offset = 0;
++                                      brelse(bh[k]);
++                                      continue;
++                              }
++                      }
++
++                      zlib_err = zlib_inflate(&msblk->stream, Z_NO_FLUSH);
++                      if (zlib_err != Z_OK && zlib_err != Z_STREAM_END) {
++                              ERROR("zlib_inflate returned unexpected result 0x%x,"
++                                      " srclength %d, avail_in %d, avail_out %d\n", zlib_err,
++                                      srclength, msblk->stream.avail_in, msblk->stream.avail_out);
++                              goto release_mutex;
++                      }
++
++                      bytes += avail_bytes;
++                      offset = 0;
++                      brelse(bh[k]);
++              }
++
++              if (zlib_err != Z_STREAM_END)
++                      goto release_mutex;
++
++              zlib_err = zlib_inflateEnd(&msblk->stream);
++              if (zlib_err != Z_OK) {
++                      ERROR("zlib_inflateEnd returned unexpected result 0x%x,"
++                              " srclength %d\n", zlib_err, srclength);
++                      goto release_mutex;
++              }
++              bytes = msblk->stream.total_out;
++              mutex_unlock(&msblk->read_data_mutex);
++      } else {
++              int i;
++
++              for(i = 0; i < b; i++) {
++                      wait_on_buffer(bh[i]);
++                      if (!buffer_uptodate(bh[i]))
++                              goto block_release;
++              }
++
++              for (bytes = 0; k < b; k++) {
++                      avail_bytes = min(c_byte - bytes, msblk->devblksize - offset);
++
++                      memcpy(buffer + bytes, bh[k]->b_data + offset, avail_bytes);
++                      bytes += avail_bytes;
++                      offset = 0;
++                      brelse(bh[k]);
++              }
++      }
++
++      if (next_index)
++              *next_index = index + c_byte + (length ? 0 :
++                              (SQUASHFS_CHECK_DATA(msblk->sblk.flags) ? 3 : 2));
++
++      kfree(bh);
++      return bytes;
++
++release_mutex:
++      mutex_unlock(&msblk->read_data_mutex);
++
++block_release:
++      for (; k < b; k++)
++              brelse(bh[k]);
++
++read_failure:
++      ERROR("sb_bread failed reading block 0x%x\n", cur_index);
++      kfree(bh);
++      return 0;
++}
++
++
++static struct squashfs_cache_entry *squashfs_cache_get(struct super_block *s,
++      struct squashfs_cache *cache, long long block, int length)
++{
++      int i, n;
++      struct squashfs_cache_entry *entry;
++
++      spin_lock(&cache->lock);
++
++      while (1) {
++              for (i = 0; i < cache->entries && cache->entry[i].block != block; i++);
++
++              if (i == cache->entries) {
++                      if (cache->unused_blks == 0) {
++                              cache->waiting ++;
++                              spin_unlock(&cache->lock);
++                              wait_event(cache->wait_queue, cache->unused_blks);
++                              spin_lock(&cache->lock);
++                              cache->waiting --;
++                              continue;
++                      }
++
++                      i = cache->next_blk;
++                      for (n = 0; n < cache->entries; n++) {
++                              if (cache->entry[i].locked == 0)
++                                      break;
++                              i = (i + 1) % cache->entries;
++                      }
++
++                      cache->next_blk = (i + 1) % cache->entries;
++                      entry = &cache->entry[i];
++
++                      cache->unused_blks --;
++                      entry->block = block;
++                      entry->locked = 1;
++                      entry->pending = 1;
++                      entry->waiting = 0;
++                      entry->error = 0;
++                      spin_unlock(&cache->lock);
++
++                      entry->length = squashfs_read_data(s, entry->data,
++                              block, length, &entry->next_index, cache->block_size);
++
++                      spin_lock(&cache->lock);
++
++                      if (entry->length == 0)
++                              entry->error = 1;
++
++                      entry->pending = 0;
++                      spin_unlock(&cache->lock);
++                      if (entry->waiting)
++                              wake_up_all(&entry->wait_queue);
++                      goto out;
++              }
++
++              entry = &cache->entry[i];
++              if (entry->locked == 0)
++                      cache->unused_blks --;
++              entry->locked++;
++
++              if (entry->pending) {
++                      entry->waiting ++;
++                      spin_unlock(&cache->lock);
++                      wait_event(entry->wait_queue, !entry->pending);
++                      goto out;
++              }
++
++              spin_unlock(&cache->lock);
++              goto out;
++      }
++
++out:
++      TRACE("Got %s %d, start block %lld, locked %d, error %d\n", i,
++              cache->name, entry->block, entry->locked, entry->error);
++      if (entry->error)
++              ERROR("Unable to read %s cache entry [%llx]\n", cache->name, block);
++      return entry;
++}
++
++
++static void squashfs_cache_put(struct squashfs_cache *cache,
++                              struct squashfs_cache_entry *entry)
++{
++      spin_lock(&cache->lock);
++      entry->locked --;
++      if (entry->locked == 0) {
++              cache->unused_blks ++;
++              spin_unlock(&cache->lock);
++              if (cache->waiting)
++                      wake_up(&cache->wait_queue);
++      } else
++              spin_unlock(&cache->lock);
++}
++
++
++static void squashfs_cache_delete(struct squashfs_cache *cache)
++{
++      int i;
++
++      if (cache == NULL)
++              return;
++
++      for (i = 0; i < cache->entries; i++)
++              if (cache->entry[i].data) {
++                      if (cache->use_vmalloc)
++                              vfree(cache->entry[i].data);
++                      else
++                              kfree(cache->entry[i].data);
++              }
++
++      kfree(cache);
++}
++
++
++static struct squashfs_cache *squashfs_cache_init(char *name, int entries,
++      int block_size, int use_vmalloc)
++{
++      int i;
++      struct squashfs_cache *cache = kzalloc(sizeof(struct squashfs_cache) +
++                      entries * sizeof(struct squashfs_cache_entry), GFP_KERNEL);
++      if (cache == NULL) {
++              ERROR("Failed to allocate %s cache\n", name);
++              goto failed;
++      }
++
++      cache->next_blk = 0;
++      cache->unused_blks = entries;
++      cache->entries = entries;
++      cache->block_size = block_size;
++      cache->use_vmalloc = use_vmalloc;
++      cache->name = name;
++      cache->waiting = 0;
++      spin_lock_init(&cache->lock);
++      init_waitqueue_head(&cache->wait_queue);
++
++      for (i = 0; i < entries; i++) {
++              init_waitqueue_head(&cache->entry[i].wait_queue);
++              cache->entry[i].block = SQUASHFS_INVALID_BLK;
++              cache->entry[i].data = use_vmalloc ? vmalloc(block_size) :
++                              kmalloc(block_size, GFP_KERNEL);
++              if (cache->entry[i].data == NULL) {
++                      ERROR("Failed to allocate %s cache entry\n", name);
++                      goto cleanup;
++              }
++      }
++
++      return cache;
++
++cleanup:
++      squashfs_cache_delete(cache);
++failed:
++      return NULL;
++}
++
++
++SQSH_EXTERN int squashfs_get_cached_block(struct super_block *s, void *buffer,
++                              long long block, unsigned int offset,
++                              int length, long long *next_block,
++                              unsigned int *next_offset)
++{
++      struct squashfs_sb_info *msblk = s->s_fs_info;
++      int bytes, return_length = length;
++      struct squashfs_cache_entry *entry;
++
++      TRACE("Entered squashfs_get_cached_block [%llx:%x]\n", block, offset);
++
++      while (1) {
++              entry = squashfs_cache_get(s, msblk->block_cache, block, 0);
++              bytes = entry->length - offset;
++
++              if (entry->error || bytes < 1) {
++                      return_length = 0;
++                      goto finish;
++              } else if (bytes >= length) {
++                      if (buffer)
++                              memcpy(buffer, entry->data + offset, length);
++                      if (entry->length - offset == length) {
++                              *next_block = entry->next_index;
++                              *next_offset = 0;
++                      } else {
++                              *next_block = block;
++                              *next_offset = offset + length;
++                      }
++                      goto finish;
++              } else {
++                      if (buffer) {
++                              memcpy(buffer, entry->data + offset, bytes);
++                              buffer = (char *) buffer + bytes;
++                      }
++                      block = entry->next_index;
++                      squashfs_cache_put(msblk->block_cache, entry);
++                      length -= bytes;
++                      offset = 0;
++              }
++      }
++
++finish:
++      squashfs_cache_put(msblk->block_cache, entry);
++      return return_length;
++}
++
++
++static int get_fragment_location(struct super_block *s, unsigned int fragment,
++                              long long *fragment_start_block,
++                              unsigned int *fragment_size)
++{
++      struct squashfs_sb_info *msblk = s->s_fs_info;
++      long long start_block =
++              msblk->fragment_index[SQUASHFS_FRAGMENT_INDEX(fragment)];
++      int offset = SQUASHFS_FRAGMENT_INDEX_OFFSET(fragment);
++      struct squashfs_fragment_entry fragment_entry;
++
++      if (msblk->swap) {
++              struct squashfs_fragment_entry sfragment_entry;
++
++              if (!squashfs_get_cached_block(s, &sfragment_entry, start_block, offset,
++                                       sizeof(sfragment_entry), &start_block, &offset))
++                      goto out;
++              SQUASHFS_SWAP_FRAGMENT_ENTRY(&fragment_entry, &sfragment_entry);
++      } else
++              if (!squashfs_get_cached_block(s, &fragment_entry, start_block, offset,
++                                       sizeof(fragment_entry), &start_block, &offset))
++                      goto out;
++
++      *fragment_start_block = fragment_entry.start_block;
++      *fragment_size = fragment_entry.size;
++
++      return 1;
++
++out:
++      return 0;
++}
++
++
++SQSH_EXTERN void release_cached_fragment(struct squashfs_sb_info *msblk,
++                              struct squashfs_cache_entry *fragment)
++{
++      squashfs_cache_put(msblk->fragment_cache, fragment);
++}
++
++
++SQSH_EXTERN
++struct squashfs_cache_entry *get_cached_fragment(struct super_block *s,
++                              long long start_block, int length)
++{
++      struct squashfs_sb_info *msblk = s->s_fs_info;
++
++      return squashfs_cache_get(s, msblk->fragment_cache, start_block, length);
++}
++
++
++static void squashfs_new_inode(struct squashfs_sb_info *msblk, struct inode *i,
++                              struct squashfs_base_inode_header *inodeb)
++{
++      i->i_ino = inodeb->inode_number;
++      i->i_mtime.tv_sec = inodeb->mtime;
++      i->i_atime.tv_sec = inodeb->mtime;
++      i->i_ctime.tv_sec = inodeb->mtime;
++      i->i_uid = msblk->uid[inodeb->uid];
++      i->i_mode = inodeb->mode;
++      i->i_size = 0;
++
++      if (inodeb->guid == SQUASHFS_GUIDS)
++              i->i_gid = i->i_uid;
++      else
++              i->i_gid = msblk->guid[inodeb->guid];
++}
++
++
++static squashfs_inode_t squashfs_inode_lookup(struct super_block *s, int ino)
++{
++      struct squashfs_sb_info *msblk = s->s_fs_info;
++      long long start = msblk->inode_lookup_table[SQUASHFS_LOOKUP_BLOCK(ino - 1)];
++      int offset = SQUASHFS_LOOKUP_BLOCK_OFFSET(ino - 1);
++      squashfs_inode_t inode;
++
++      TRACE("Entered squashfs_inode_lookup, inode_number = %d\n", ino);
++
++      if (msblk->swap) {
++              squashfs_inode_t sinode;
++
++              if (!squashfs_get_cached_block(s, &sinode, start, offset,
++                                      sizeof(sinode), &start, &offset))
++                      goto out;
++              SQUASHFS_SWAP_INODE_T((&inode), &sinode);
++      } else if (!squashfs_get_cached_block(s, &inode, start, offset,
++                                      sizeof(inode), &start, &offset))
++                      goto out;
++
++      TRACE("squashfs_inode_lookup, inode = 0x%llx\n", inode);
++
++      return inode;
++
++out:
++      return SQUASHFS_INVALID_BLK;
++}
++
++
++
++static struct dentry *squashfs_export_iget(struct super_block *s,
++      unsigned int inode_number)
++{
++      squashfs_inode_t inode;
++      struct dentry *dentry = ERR_PTR(-ENOENT);
++
++      TRACE("Entered squashfs_export_iget\n");
++
++      inode = squashfs_inode_lookup(s, inode_number);
++      if(inode != SQUASHFS_INVALID_BLK)
++              dentry = d_obtain_alias(squashfs_iget(s, inode, inode_number));
++
++      return dentry;
++}
++
++
++static struct dentry *squashfs_fh_to_dentry(struct super_block *s,
++              struct fid *fid, int fh_len, int fh_type)
++{
++      if((fh_type != FILEID_INO32_GEN && fh_type != FILEID_INO32_GEN_PARENT) ||
++                      fh_len < 2)
++              return NULL;
++
++      return squashfs_export_iget(s, fid->i32.ino);
++}
++
++
++static struct dentry *squashfs_fh_to_parent(struct super_block *s,
++              struct fid *fid, int fh_len, int fh_type)
++{
++      if(fh_type != FILEID_INO32_GEN_PARENT || fh_len < 4)
++              return NULL;
++
++      return squashfs_export_iget(s, fid->i32.parent_ino);
++}
++
++
++static struct dentry *squashfs_get_parent(struct dentry *child)
++{
++      struct inode *i = child->d_inode;
++
++      TRACE("Entered squashfs_get_parent\n");
++
++      return squashfs_export_iget(i->i_sb, SQUASHFS_I(i)->u.s2.parent_inode);
++}
++
++
++SQSH_EXTERN struct inode *squashfs_iget(struct super_block *s,
++                              squashfs_inode_t inode, unsigned int inode_number)
++{
++      struct squashfs_sb_info *msblk = s->s_fs_info;
++      struct inode *i = iget_locked(s, inode_number);
++
++      TRACE("Entered squashfs_iget\n");
++
++      if(i && (i->i_state & I_NEW)) {
++              (msblk->read_inode)(i, inode);
++              unlock_new_inode(i);
++      }
++
++      return i;
++}
++
++
++static int squashfs_read_inode(struct inode *i, squashfs_inode_t inode)
++{
++      struct super_block *s = i->i_sb;
++      struct squashfs_sb_info *msblk = s->s_fs_info;
++      struct squashfs_super_block *sblk = &msblk->sblk;
++      long long block = SQUASHFS_INODE_BLK(inode) + sblk->inode_table_start;
++      unsigned int offset = SQUASHFS_INODE_OFFSET(inode);
++      long long next_block;
++      unsigned int next_offset;
++      union squashfs_inode_header id, sid;
++      struct squashfs_base_inode_header *inodeb = &id.base, *sinodeb = &sid.base;
++
++      TRACE("Entered squashfs_read_inode\n");
++
++      if (msblk->swap) {
++              if (!squashfs_get_cached_block(s, sinodeb, block, offset,
++                                      sizeof(*sinodeb), &next_block, &next_offset))
++                      goto failed_read;
++              SQUASHFS_SWAP_BASE_INODE_HEADER(inodeb, sinodeb, sizeof(*sinodeb));
++      } else
++              if (!squashfs_get_cached_block(s, inodeb, block, offset,
++                                      sizeof(*inodeb), &next_block, &next_offset))
++                      goto failed_read;
++
++      squashfs_new_inode(msblk, i, inodeb);
++
++      switch(inodeb->inode_type) {
++              case SQUASHFS_FILE_TYPE: {
++                      unsigned int frag_size;
++                      long long frag_blk;
++                      struct squashfs_reg_inode_header *inodep = &id.reg;
++                      struct squashfs_reg_inode_header *sinodep = &sid.reg;
++                              
++                      if (msblk->swap) {
++                              if (!squashfs_get_cached_block(s, sinodep, block, offset,
++                                              sizeof(*sinodep), &next_block, &next_offset))
++                                      goto failed_read;
++                              SQUASHFS_SWAP_REG_INODE_HEADER(inodep, sinodep);
++                      } else
++                              if (!squashfs_get_cached_block(s, inodep, block, offset,
++                                              sizeof(*inodep), &next_block, &next_offset))
++                                      goto failed_read;
++
++                      frag_blk = SQUASHFS_INVALID_BLK;
++
++                      if (inodep->fragment != SQUASHFS_INVALID_FRAG)
++                                      if(!get_fragment_location(s, inodep->fragment, &frag_blk,
++                                                                                              &frag_size))
++                                              goto failed_read;
++                              
++                      i->i_nlink = 1;
++                      i->i_size = inodep->file_size;
++                      i->i_fop = &generic_ro_fops;
++                      i->i_mode |= S_IFREG;
++                      i->i_blocks = ((i->i_size - 1) >> 9) + 1;
++                      SQUASHFS_I(i)->u.s1.fragment_start_block = frag_blk;
++                      SQUASHFS_I(i)->u.s1.fragment_size = frag_size;
++                      SQUASHFS_I(i)->u.s1.fragment_offset = inodep->offset;
++                      SQUASHFS_I(i)->start_block = inodep->start_block;
++                      SQUASHFS_I(i)->u.s1.block_list_start = next_block;
++                      SQUASHFS_I(i)->offset = next_offset;
++                      i->i_data.a_ops = &squashfs_aops;
++
++                      TRACE("File inode %x:%x, start_block %llx, "
++                                      "block_list_start %llx, offset %x\n",
++                                      SQUASHFS_INODE_BLK(inode), offset,
++                                      inodep->start_block, next_block,
++                                      next_offset);
++                      break;
++              }
++              case SQUASHFS_LREG_TYPE: {
++                      unsigned int frag_size;
++                      long long frag_blk;
++                      struct squashfs_lreg_inode_header *inodep = &id.lreg;
++                      struct squashfs_lreg_inode_header *sinodep = &sid.lreg;
++                              
++                      if (msblk->swap) {
++                              if (!squashfs_get_cached_block(s, sinodep, block, offset,
++                                              sizeof(*sinodep), &next_block, &next_offset))
++                                      goto failed_read;
++                              SQUASHFS_SWAP_LREG_INODE_HEADER(inodep, sinodep);
++                      } else
++                              if (!squashfs_get_cached_block(s, inodep, block, offset,
++                                              sizeof(*inodep), &next_block, &next_offset))
++                                      goto failed_read;
++
++                      frag_blk = SQUASHFS_INVALID_BLK;
++
++                      if (inodep->fragment != SQUASHFS_INVALID_FRAG)
++                              if (!get_fragment_location(s, inodep->fragment, &frag_blk,
++                                                                                               &frag_size))
++                                      goto failed_read;
++                              
++                      i->i_nlink = inodep->nlink;
++                      i->i_size = inodep->file_size;
++                      i->i_fop = &generic_ro_fops;
++                      i->i_mode |= S_IFREG;
++                      i->i_blocks = ((i->i_size - 1) >> 9) + 1;
++                      SQUASHFS_I(i)->u.s1.fragment_start_block = frag_blk;
++                      SQUASHFS_I(i)->u.s1.fragment_size = frag_size;
++                      SQUASHFS_I(i)->u.s1.fragment_offset = inodep->offset;
++                      SQUASHFS_I(i)->start_block = inodep->start_block;
++                      SQUASHFS_I(i)->u.s1.block_list_start = next_block;
++                      SQUASHFS_I(i)->offset = next_offset;
++                      i->i_data.a_ops = &squashfs_aops;
++
++                      TRACE("File inode %x:%x, start_block %llx, "
++                                      "block_list_start %llx, offset %x\n",
++                                      SQUASHFS_INODE_BLK(inode), offset,
++                                      inodep->start_block, next_block,
++                                      next_offset);
++                      break;
++              }
++              case SQUASHFS_DIR_TYPE: {
++                      struct squashfs_dir_inode_header *inodep = &id.dir;
++                      struct squashfs_dir_inode_header *sinodep = &sid.dir;
++
++                      if (msblk->swap) {
++                              if (!squashfs_get_cached_block(s, sinodep, block, offset,
++                                              sizeof(*sinodep), &next_block, &next_offset))
++                                      goto failed_read;
++                              SQUASHFS_SWAP_DIR_INODE_HEADER(inodep, sinodep);
++                      } else
++                              if (!squashfs_get_cached_block(s, inodep, block, offset,
++                                              sizeof(*inodep), &next_block, &next_offset))
++                                      goto failed_read;
++
++                      i->i_nlink = inodep->nlink;
++                      i->i_size = inodep->file_size;
++                      i->i_op = &squashfs_dir_inode_ops;
++                      i->i_fop = &squashfs_dir_ops;
++                      i->i_mode |= S_IFDIR;
++                      SQUASHFS_I(i)->start_block = inodep->start_block;
++                      SQUASHFS_I(i)->offset = inodep->offset;
++                      SQUASHFS_I(i)->u.s2.directory_index_count = 0;
++                      SQUASHFS_I(i)->u.s2.parent_inode = inodep->parent_inode;
++
++                      TRACE("Directory inode %x:%x, start_block %x, offset "
++                                      "%x\n", SQUASHFS_INODE_BLK(inode),
++                                      offset, inodep->start_block,
++                                      inodep->offset);
++                      break;
++              }
++              case SQUASHFS_LDIR_TYPE: {
++                      struct squashfs_ldir_inode_header *inodep = &id.ldir;
++                      struct squashfs_ldir_inode_header *sinodep = &sid.ldir;
++
++                      if (msblk->swap) {
++                              if (!squashfs_get_cached_block(s, sinodep, block, offset,
++                                              sizeof(*sinodep), &next_block, &next_offset))
++                                      goto failed_read;
++                              SQUASHFS_SWAP_LDIR_INODE_HEADER(inodep, sinodep);
++                      } else
++                              if (!squashfs_get_cached_block(s, inodep, block, offset,
++                                              sizeof(*inodep), &next_block, &next_offset))
++                                      goto failed_read;
++
++                      i->i_nlink = inodep->nlink;
++                      i->i_size = inodep->file_size;
++                      i->i_op = &squashfs_dir_inode_ops;
++                      i->i_fop = &squashfs_dir_ops;
++                      i->i_mode |= S_IFDIR;
++                      SQUASHFS_I(i)->start_block = inodep->start_block;
++                      SQUASHFS_I(i)->offset = inodep->offset;
++                      SQUASHFS_I(i)->u.s2.directory_index_start = next_block;
++                      SQUASHFS_I(i)->u.s2.directory_index_offset = next_offset;
++                      SQUASHFS_I(i)->u.s2.directory_index_count = inodep->i_count;
++                      SQUASHFS_I(i)->u.s2.parent_inode = inodep->parent_inode;
++
++                      TRACE("Long directory inode %x:%x, start_block %x, offset %x\n",
++                                      SQUASHFS_INODE_BLK(inode), offset,
++                                      inodep->start_block, inodep->offset);
++                      break;
++              }
++              case SQUASHFS_SYMLINK_TYPE: {
++                      struct squashfs_symlink_inode_header *inodep = &id.symlink;
++                      struct squashfs_symlink_inode_header *sinodep = &sid.symlink;
++      
++                      if (msblk->swap) {
++                              if (!squashfs_get_cached_block(s, sinodep, block, offset,
++                                              sizeof(*sinodep), &next_block, &next_offset))
++                                      goto failed_read;
++                              SQUASHFS_SWAP_SYMLINK_INODE_HEADER(inodep, sinodep);
++                      } else
++                              if (!squashfs_get_cached_block(s, inodep, block, offset,
++                                              sizeof(*inodep), &next_block, &next_offset))
++                                      goto failed_read;
++
++                      i->i_nlink = inodep->nlink;
++                      i->i_size = inodep->symlink_size;
++                      i->i_op = &page_symlink_inode_operations;
++                      i->i_data.a_ops = &squashfs_symlink_aops;
++                      i->i_mode |= S_IFLNK;
++                      SQUASHFS_I(i)->start_block = next_block;
++                      SQUASHFS_I(i)->offset = next_offset;
++
++                      TRACE("Symbolic link inode %x:%x, start_block %llx, offset %x\n",
++                                      SQUASHFS_INODE_BLK(inode), offset,
++                                      next_block, next_offset);
++                      break;
++               }
++               case SQUASHFS_BLKDEV_TYPE:
++               case SQUASHFS_CHRDEV_TYPE: {
++                      struct squashfs_dev_inode_header *inodep = &id.dev;
++                      struct squashfs_dev_inode_header *sinodep = &sid.dev;
++
++                      if (msblk->swap) {
++                              if (!squashfs_get_cached_block(s, sinodep, block, offset,
++                                              sizeof(*sinodep), &next_block, &next_offset))
++                                      goto failed_read;
++                              SQUASHFS_SWAP_DEV_INODE_HEADER(inodep, sinodep);
++                      } else  
++                              if (!squashfs_get_cached_block(s, inodep, block, offset,
++                                              sizeof(*inodep), &next_block, &next_offset))
++                                      goto failed_read;
++
++                      i->i_nlink = inodep->nlink;
++                      i->i_mode |= (inodeb->inode_type == SQUASHFS_CHRDEV_TYPE) ?
++                                      S_IFCHR : S_IFBLK;
++                      init_special_inode(i, i->i_mode, old_decode_dev(inodep->rdev));
++
++                      TRACE("Device inode %x:%x, rdev %x\n",
++                                      SQUASHFS_INODE_BLK(inode), offset, inodep->rdev);
++                      break;
++               }
++               case SQUASHFS_FIFO_TYPE:
++               case SQUASHFS_SOCKET_TYPE: {
++                      struct squashfs_ipc_inode_header *inodep = &id.ipc;
++                      struct squashfs_ipc_inode_header *sinodep = &sid.ipc;
++
++                      if (msblk->swap) {
++                              if (!squashfs_get_cached_block(s, sinodep, block, offset,
++                                              sizeof(*sinodep), &next_block, &next_offset))
++                                      goto failed_read;
++                              SQUASHFS_SWAP_IPC_INODE_HEADER(inodep, sinodep);
++                      } else  
++                              if (!squashfs_get_cached_block(s, inodep, block, offset,
++                                              sizeof(*inodep), &next_block, &next_offset))
++                                      goto failed_read;
++
++                      i->i_nlink = inodep->nlink;
++                      i->i_mode |= (inodeb->inode_type == SQUASHFS_FIFO_TYPE)
++                                                      ? S_IFIFO : S_IFSOCK;
++                      init_special_inode(i, i->i_mode, 0);
++                      break;
++               }
++               default:
++                      ERROR("Unknown inode type %d in squashfs_iget!\n",
++                                      inodeb->inode_type);
++                      goto failed_read1;
++      }
++      
++      return 1;
++
++failed_read:
++      ERROR("Unable to read inode [%llx:%x]\n", block, offset);
++
++failed_read1:
++      make_bad_inode(i);
++      return 0;
++}
++
++
++static int read_inode_lookup_table(struct super_block *s)
++{
++      struct squashfs_sb_info *msblk = s->s_fs_info;
++      struct squashfs_super_block *sblk = &msblk->sblk;
++      unsigned int length = SQUASHFS_LOOKUP_BLOCK_BYTES(sblk->inodes);
++
++      TRACE("In read_inode_lookup_table, length %d\n", length);
++
++      /* Allocate inode lookup table */
++      msblk->inode_lookup_table = kmalloc(length, GFP_KERNEL);
++      if (msblk->inode_lookup_table == NULL) {
++              ERROR("Failed to allocate inode lookup table\n");
++              return 0;
++      }
++   
++      if (!squashfs_read_data(s, (char *) msblk->inode_lookup_table,
++                      sblk->lookup_table_start, length |
++                      SQUASHFS_COMPRESSED_BIT_BLOCK, NULL, length)) {
++              ERROR("unable to read inode lookup table\n");
++              return 0;
++      }
++
++      if (msblk->swap) {
++              int i;
++              long long block;
++
++              for (i = 0; i < SQUASHFS_LOOKUP_BLOCKS(sblk->inodes); i++) {
++                      /* XXX */
++                      SQUASHFS_SWAP_LOOKUP_BLOCKS((&block),
++                                              &msblk->inode_lookup_table[i], 1);
++                      msblk->inode_lookup_table[i] = block;
++              }
++      }
++
++      return 1;
++}
++
++
++static int read_fragment_index_table(struct super_block *s)
++{
++      struct squashfs_sb_info *msblk = s->s_fs_info;
++      struct squashfs_super_block *sblk = &msblk->sblk;
++      unsigned int length = SQUASHFS_FRAGMENT_INDEX_BYTES(sblk->fragments);
++
++      if(length == 0)
++              return 1;
++
++      /* Allocate fragment index table */
++      msblk->fragment_index = kmalloc(length, GFP_KERNEL);
++      if (msblk->fragment_index == NULL) {
++              ERROR("Failed to allocate fragment index table\n");
++              return 0;
++      }
++   
++      if (!squashfs_read_data(s, (char *) msblk->fragment_index,
++                      sblk->fragment_table_start, length |
++                      SQUASHFS_COMPRESSED_BIT_BLOCK, NULL, length)) {
++              ERROR("unable to read fragment index table\n");
++              return 0;
++      }
++
++      if (msblk->swap) {
++              int i;
++              long long fragment;
++
++              for (i = 0; i < SQUASHFS_FRAGMENT_INDEXES(sblk->fragments); i++) {
++                      /* XXX */
++                      SQUASHFS_SWAP_FRAGMENT_INDEXES((&fragment),
++                                              &msblk->fragment_index[i], 1);
++                      msblk->fragment_index[i] = fragment;
++              }
++      }
++
++      return 1;
++}
++
++
++static int supported_squashfs_filesystem(struct squashfs_sb_info *msblk, int silent)
++{
++      struct squashfs_super_block *sblk = &msblk->sblk;
++
++      msblk->read_inode = squashfs_read_inode;
++      msblk->read_blocklist = read_blocklist;
++      msblk->read_fragment_index_table = read_fragment_index_table;
++
++      if (sblk->s_major == 1) {
++              if (!squashfs_1_0_supported(msblk)) {
++                      SERROR("Major/Minor mismatch, Squashfs 1.0 filesystems "
++                              "are unsupported\n");
++                      SERROR("Please recompile with Squashfs 1.0 support enabled\n");
++                      return 0;
++              }
++      } else if (sblk->s_major == 2) {
++              if (!squashfs_2_0_supported(msblk)) {
++                      SERROR("Major/Minor mismatch, Squashfs 2.0 filesystems "
++                              "are unsupported\n");
++                      SERROR("Please recompile with Squashfs 2.0 support enabled\n");
++                      return 0;
++              }
++      } else if(sblk->s_major != SQUASHFS_MAJOR || sblk->s_minor >
++                      SQUASHFS_MINOR) {
++              SERROR("Major/Minor mismatch, trying to mount newer %d.%d "
++                              "filesystem\n", sblk->s_major, sblk->s_minor);
++              SERROR("Please update your kernel\n");
++              return 0;
++      }
++
++      return 1;
++}
++
++
++static int squashfs_fill_super(struct super_block *s, void *data, int silent)
++{
++      struct squashfs_sb_info *msblk;
++      struct squashfs_super_block *sblk;
++      char b[BDEVNAME_SIZE];
++      struct inode *root;
++
++      TRACE("Entered squashfs_fill_superblock\n");
++
++      s->s_fs_info = kzalloc(sizeof(struct squashfs_sb_info), GFP_KERNEL);
++      if (s->s_fs_info == NULL) {
++              ERROR("Failed to allocate superblock\n");
++              goto failure;
++      }
++      msblk = s->s_fs_info;
++
++      msblk->stream.workspace = vmalloc(zlib_inflate_workspacesize());
++      if (msblk->stream.workspace == NULL) {
++              ERROR("Failed to allocate zlib workspace\n");
++              goto failure;
++      }
++      sblk = &msblk->sblk;
++      
++      msblk->devblksize = sb_min_blocksize(s, BLOCK_SIZE);
++      msblk->devblksize_log2 = ffz(~msblk->devblksize);
++
++      mutex_init(&msblk->read_data_mutex);
++      mutex_init(&msblk->read_page_mutex);
++      mutex_init(&msblk->meta_index_mutex);
++      
++      /* sblk->bytes_used is checked in squashfs_read_data to ensure reads are not
++       * beyond filesystem end.  As we're using squashfs_read_data to read sblk here,
++       * first set sblk->bytes_used to a useful value */
++      sblk->bytes_used = sizeof(struct squashfs_super_block);
++      if (!squashfs_read_data(s, (char *) sblk, SQUASHFS_START,
++                                      sizeof(struct squashfs_super_block) |
++                                      SQUASHFS_COMPRESSED_BIT_BLOCK, NULL, sizeof(struct squashfs_super_block))) {
++              SERROR("unable to read superblock\n");
++              goto failed_mount;
++      }
++
++      /* Check it is a SQUASHFS superblock */
++      if ((s->s_magic = sblk->s_magic) != SQUASHFS_MAGIC) {
++              if (sblk->s_magic == SQUASHFS_MAGIC_SWAP) {
++                      struct squashfs_super_block ssblk;
++
++                      WARNING("Mounting a different endian SQUASHFS filesystem on %s\n",
++                              bdevname(s->s_bdev, b));
++
++                      SQUASHFS_SWAP_SUPER_BLOCK(&ssblk, sblk);
++                      memcpy(sblk, &ssblk, sizeof(struct squashfs_super_block));
++                      msblk->swap = 1;
++              } else  {
++                      SERROR("Can't find a SQUASHFS superblock on %s\n",
++                                                      bdevname(s->s_bdev, b));
++                      goto failed_mount;
++              }
++      }
++
++      /* Check the MAJOR & MINOR versions */
++      if(!supported_squashfs_filesystem(msblk, silent))
++              goto failed_mount;
++
++      /* Check the filesystem does not extend beyond the end of the
++         block device */
++      if(sblk->bytes_used < 0 || sblk->bytes_used > i_size_read(s->s_bdev->bd_inode))
++              goto failed_mount;
++
++      /* Check the root inode for sanity */
++      if (SQUASHFS_INODE_OFFSET(sblk->root_inode) > SQUASHFS_METADATA_SIZE)
++              goto failed_mount;
++
++      TRACE("Found valid superblock on %s\n", bdevname(s->s_bdev, b));
++      TRACE("Inodes are %scompressed\n", SQUASHFS_UNCOMPRESSED_INODES(sblk->flags)
++                                      ? "un" : "");
++      TRACE("Data is %scompressed\n", SQUASHFS_UNCOMPRESSED_DATA(sblk->flags)
++                                      ? "un" : "");
++      TRACE("Check data is %spresent in the filesystem\n",
++                                      SQUASHFS_CHECK_DATA(sblk->flags) ?  "" : "not ");
++      TRACE("Filesystem size %lld bytes\n", sblk->bytes_used);
++      TRACE("Block size %d\n", sblk->block_size);
++      TRACE("Number of inodes %d\n", sblk->inodes);
++      if (sblk->s_major > 1)
++              TRACE("Number of fragments %d\n", sblk->fragments);
++      TRACE("Number of uids %d\n", sblk->no_uids);
++      TRACE("Number of gids %d\n", sblk->no_guids);
++      TRACE("sblk->inode_table_start %llx\n", sblk->inode_table_start);
++      TRACE("sblk->directory_table_start %llx\n", sblk->directory_table_start);
++      if (sblk->s_major > 1)
++              TRACE("sblk->fragment_table_start %llx\n", sblk->fragment_table_start);
++      TRACE("sblk->uid_start %llx\n", sblk->uid_start);
++
++      s->s_maxbytes = MAX_LFS_FILESIZE;
++      s->s_flags |= MS_RDONLY;
++      s->s_op = &squashfs_super_ops;
++
++      msblk->block_cache = squashfs_cache_init("metadata", SQUASHFS_CACHED_BLKS,
++              SQUASHFS_METADATA_SIZE, 0);
++      if (msblk->block_cache == NULL)
++              goto failed_mount;
++
++      /* Allocate read_page block */
++      msblk->read_page = vmalloc(sblk->block_size);
++      if (msblk->read_page == NULL) {
++              ERROR("Failed to allocate read_page block\n");
++              goto failed_mount;
++      }
++
++      /* Allocate uid and gid tables */
++      msblk->uid = kmalloc((sblk->no_uids + sblk->no_guids) *
++                                      sizeof(unsigned int), GFP_KERNEL);
++      if (msblk->uid == NULL) {
++              ERROR("Failed to allocate uid/gid table\n");
++              goto failed_mount;
++      }
++      msblk->guid = msblk->uid + sblk->no_uids;
++   
++      if (msblk->swap) {
++              unsigned int suid[sblk->no_uids + sblk->no_guids];
++
++              if (!squashfs_read_data(s, (char *) &suid, sblk->uid_start,
++                                      ((sblk->no_uids + sblk->no_guids) *
++                                       sizeof(unsigned int)) |
++                                      SQUASHFS_COMPRESSED_BIT_BLOCK, NULL, (sblk->no_uids + sblk->no_guids) * sizeof(unsigned int))) {
++                      ERROR("unable to read uid/gid table\n");
++                      goto failed_mount;
++              }
++
++              SQUASHFS_SWAP_DATA(msblk->uid, suid, (sblk->no_uids +
++                      sblk->no_guids), (sizeof(unsigned int) * 8));
++      } else
++              if (!squashfs_read_data(s, (char *) msblk->uid, sblk->uid_start,
++                                      ((sblk->no_uids + sblk->no_guids) *
++                                       sizeof(unsigned int)) |
++                                      SQUASHFS_COMPRESSED_BIT_BLOCK, NULL, (sblk->no_uids + sblk->no_guids) * sizeof(unsigned int))) {
++                      ERROR("unable to read uid/gid table\n");
++                      goto failed_mount;
++              }
++
++
++      if (sblk->s_major == 1 && squashfs_1_0_supported(msblk))
++              goto allocate_root;
++
++      msblk->fragment_cache = squashfs_cache_init("fragment",
++              SQUASHFS_CACHED_FRAGMENTS, sblk->block_size, 1);
++      if (msblk->fragment_cache == NULL)
++              goto failed_mount;
++
++      /* Allocate and read fragment index table */
++      if (msblk->read_fragment_index_table(s) == 0)
++              goto failed_mount;
++
++      if(sblk->s_major < 3 || sblk->lookup_table_start == SQUASHFS_INVALID_BLK)
++              goto allocate_root;
++
++      /* Allocate and read inode lookup table */
++      if (read_inode_lookup_table(s) == 0)
++              goto failed_mount;
++
++      s->s_export_op = &squashfs_export_ops;
++
++allocate_root:
++      root = new_inode(s);
++      if ((msblk->read_inode)(root, sblk->root_inode) == 0)
++              goto failed_mount;
++      insert_inode_hash(root);
++
++      s->s_root = d_alloc_root(root);
++      if (s->s_root == NULL) {
++              ERROR("Root inode create failed\n");
++              iput(root);
++              goto failed_mount;
++      }
++
++      TRACE("Leaving squashfs_fill_super\n");
++      return 0;
++
++failed_mount:
++      kfree(msblk->inode_lookup_table);
++      kfree(msblk->fragment_index);
++      squashfs_cache_delete(msblk->fragment_cache);
++      kfree(msblk->uid);
++      vfree(msblk->read_page);
++      squashfs_cache_delete(msblk->block_cache);
++      kfree(msblk->fragment_index_2);
++      vfree(msblk->stream.workspace);
++      kfree(s->s_fs_info);
++      s->s_fs_info = NULL;
++      return -EINVAL;
++
++failure:
++      return -ENOMEM;
++}
++
++
++static int squashfs_statfs(struct dentry *dentry, struct kstatfs *buf)
++{
++      struct squashfs_sb_info *msblk = dentry->d_sb->s_fs_info;
++      struct squashfs_super_block *sblk = &msblk->sblk;
++
++      TRACE("Entered squashfs_statfs\n");
++
++      buf->f_type = SQUASHFS_MAGIC;
++      buf->f_bsize = sblk->block_size;
++      buf->f_blocks = ((sblk->bytes_used - 1) >> sblk->block_log) + 1;
++      buf->f_bfree = buf->f_bavail = 0;
++      buf->f_files = sblk->inodes;
++      buf->f_ffree = 0;
++      buf->f_namelen = SQUASHFS_NAME_LEN;
++
++      return 0;
++}
++
++
++static int squashfs_symlink_readpage(struct file *file, struct page *page)
++{
++      struct inode *inode = page->mapping->host;
++      int index = page->index << PAGE_CACHE_SHIFT, length, bytes, avail_bytes;
++      long long block = SQUASHFS_I(inode)->start_block;
++      int offset = SQUASHFS_I(inode)->offset;
++      void *pageaddr = kmap(page);
++
++      TRACE("Entered squashfs_symlink_readpage, page index %ld, start block "
++                              "%llx, offset %x\n", page->index,
++                              SQUASHFS_I(inode)->start_block,
++                              SQUASHFS_I(inode)->offset);
++
++      for (length = 0; length < index; length += bytes) {
++              bytes = squashfs_get_cached_block(inode->i_sb, NULL, block,
++                              offset, PAGE_CACHE_SIZE, &block, &offset);
++              if (bytes == 0) {
++                      ERROR("Unable to read symbolic link [%llx:%x]\n", block, offset);
++                      goto skip_read;
++              }
++      }
++
++      if (length != index) {
++              ERROR("(squashfs_symlink_readpage) length != index\n");
++              bytes = 0;
++              goto skip_read;
++      }
++
++      avail_bytes = min_t(int, i_size_read(inode) - length, PAGE_CACHE_SIZE);
++
++      bytes = squashfs_get_cached_block(inode->i_sb, pageaddr, block, offset,
++              avail_bytes, &block, &offset);
++      if (bytes == 0)
++              ERROR("Unable to read symbolic link [%llx:%x]\n", block, offset);
++
++skip_read:
++      memset(pageaddr + bytes, 0, PAGE_CACHE_SIZE - bytes);
++      kunmap(page);
++      flush_dcache_page(page);
++      SetPageUptodate(page);
++      unlock_page(page);
++
++      return 0;
++}
++
++
++static struct meta_index *locate_meta_index(struct inode *inode, int index, int offset)
++{
++      struct meta_index *meta = NULL;
++      struct squashfs_sb_info *msblk = inode->i_sb->s_fs_info;
++      int i;
++
++      mutex_lock(&msblk->meta_index_mutex);
++
++      TRACE("locate_meta_index: index %d, offset %d\n", index, offset);
++
++      if (msblk->meta_index == NULL)
++              goto not_allocated;
++
++      for (i = 0; i < SQUASHFS_META_NUMBER; i ++) {
++              if (msblk->meta_index[i].inode_number == inode->i_ino &&
++                              msblk->meta_index[i].offset >= offset &&
++                              msblk->meta_index[i].offset <= index &&
++                              msblk->meta_index[i].locked == 0) {
++                      TRACE("locate_meta_index: entry %d, offset %d\n", i,
++                                      msblk->meta_index[i].offset);
++                      meta = &msblk->meta_index[i];
++                      offset = meta->offset;
++              }
++      }
++
++      if (meta)
++              meta->locked = 1;
++
++not_allocated:
++      mutex_unlock(&msblk->meta_index_mutex);
++
++      return meta;
++}
++
++
++static struct meta_index *empty_meta_index(struct inode *inode, int offset, int skip)
++{
++      struct squashfs_sb_info *msblk = inode->i_sb->s_fs_info;
++      struct meta_index *meta = NULL;
++      int i;
++
++      mutex_lock(&msblk->meta_index_mutex);
++
++      TRACE("empty_meta_index: offset %d, skip %d\n", offset, skip);
++
++      if (msblk->meta_index == NULL) {
++              msblk->meta_index = kmalloc(sizeof(struct meta_index) *
++                                      SQUASHFS_META_NUMBER, GFP_KERNEL);
++              if (msblk->meta_index == NULL) {
++                      ERROR("Failed to allocate meta_index\n");
++                      goto failed;
++              }
++              for (i = 0; i < SQUASHFS_META_NUMBER; i++) {
++                      msblk->meta_index[i].inode_number = 0;
++                      msblk->meta_index[i].locked = 0;
++              }
++              msblk->next_meta_index = 0;
++      }
++
++      for (i = SQUASHFS_META_NUMBER; i &&
++                      msblk->meta_index[msblk->next_meta_index].locked; i --)
++              msblk->next_meta_index = (msblk->next_meta_index + 1) %
++                      SQUASHFS_META_NUMBER;
++
++      if (i == 0) {
++              TRACE("empty_meta_index: failed!\n");
++              goto failed;
++      }
++
++      TRACE("empty_meta_index: returned meta entry %d, %p\n",
++                      msblk->next_meta_index,
++                      &msblk->meta_index[msblk->next_meta_index]);
++
++      meta = &msblk->meta_index[msblk->next_meta_index];
++      msblk->next_meta_index = (msblk->next_meta_index + 1) %
++                      SQUASHFS_META_NUMBER;
++
++      meta->inode_number = inode->i_ino;
++      meta->offset = offset;
++      meta->skip = skip;
++      meta->entries = 0;
++      meta->locked = 1;
++
++failed:
++      mutex_unlock(&msblk->meta_index_mutex);
++      return meta;
++}
++
++
++static void release_meta_index(struct inode *inode, struct meta_index *meta)
++{
++      meta->locked = 0;
++      smp_mb();
++}
++
++
++static int read_block_index(struct super_block *s, int blocks, char *block_list,
++                              long long *start_block, int *offset)
++{
++      struct squashfs_sb_info *msblk = s->s_fs_info;
++      unsigned int *block_listp;
++      int block = 0;
++      
++      if (msblk->swap) {
++              char sblock_list[blocks << 2];
++
++              if (!squashfs_get_cached_block(s, sblock_list, *start_block,
++                              *offset, blocks << 2, start_block, offset)) {
++                      ERROR("Fail reading block list [%llx:%x]\n", *start_block, *offset);
++                      goto failure;
++              }
++              SQUASHFS_SWAP_INTS(((unsigned int *)block_list),
++                              ((unsigned int *)sblock_list), blocks);
++      } else {
++              if (!squashfs_get_cached_block(s, block_list, *start_block,
++                              *offset, blocks << 2, start_block, offset)) {
++                      ERROR("Fail reading block list [%llx:%x]\n", *start_block, *offset);
++                      goto failure;
++              }
++      }
++
++      for (block_listp = (unsigned int *) block_list; blocks;
++                              block_listp++, blocks --)
++              block += SQUASHFS_COMPRESSED_SIZE_BLOCK(*block_listp);
++
++      return block;
++
++failure:
++      return -1;
++}
++
++
++#define SIZE 256
++
++static inline int calculate_skip(int blocks) {
++      int skip = (blocks - 1) / ((SQUASHFS_SLOTS * SQUASHFS_META_ENTRIES + 1) * SQUASHFS_META_INDEXES);
++      return skip >= 7 ? 7 : skip + 1;
++}
++
++
++static int get_meta_index(struct inode *inode, int index,
++              long long *index_block, int *index_offset,
++              long long *data_block, char *block_list)
++{
++      struct squashfs_sb_info *msblk = inode->i_sb->s_fs_info;
++      struct squashfs_super_block *sblk = &msblk->sblk;
++      int skip = calculate_skip(i_size_read(inode) >> sblk->block_log);
++      int offset = 0;
++      struct meta_index *meta;
++      struct meta_entry *meta_entry;
++      long long cur_index_block = SQUASHFS_I(inode)->u.s1.block_list_start;
++      int cur_offset = SQUASHFS_I(inode)->offset;
++      long long cur_data_block = SQUASHFS_I(inode)->start_block;
++      int i;
++ 
++      index /= SQUASHFS_META_INDEXES * skip;
++
++      while (offset < index) {
++              meta = locate_meta_index(inode, index, offset + 1);
++
++              if (meta == NULL) {
++                      meta = empty_meta_index(inode, offset + 1, skip);
++                      if (meta == NULL)
++                              goto all_done;
++              } else {
++                      if(meta->entries == 0)
++                              goto failed;
++                      /* XXX */
++                      offset = index < meta->offset + meta->entries ? index :
++                              meta->offset + meta->entries - 1;
++                      /* XXX */
++                      meta_entry = &meta->meta_entry[offset - meta->offset];
++                      cur_index_block = meta_entry->index_block + sblk->inode_table_start;
++                      cur_offset = meta_entry->offset;
++                      cur_data_block = meta_entry->data_block;
++                      TRACE("get_meta_index: offset %d, meta->offset %d, "
++                              "meta->entries %d\n", offset, meta->offset, meta->entries);
++                      TRACE("get_meta_index: index_block 0x%llx, offset 0x%x"
++                              " data_block 0x%llx\n", cur_index_block,
++                              cur_offset, cur_data_block);
++              }
++
++              for (i = meta->offset + meta->entries; i <= index &&
++                              i < meta->offset + SQUASHFS_META_ENTRIES; i++) {
++                      int blocks = skip * SQUASHFS_META_INDEXES;
++
++                      while (blocks) {
++                              int block = blocks > (SIZE >> 2) ? (SIZE >> 2) : blocks;
++                              int res = read_block_index(inode->i_sb, block, block_list,
++                                      &cur_index_block, &cur_offset);
++
++                              if (res == -1)
++                                      goto failed;
++
++                              cur_data_block += res;
++                              blocks -= block;
++                      }
++
++                      meta_entry = &meta->meta_entry[i - meta->offset];
++                      meta_entry->index_block = cur_index_block - sblk->inode_table_start;
++                      meta_entry->offset = cur_offset;
++                      meta_entry->data_block = cur_data_block;
++                      meta->entries ++;
++                      offset ++;
++              }
++
++              TRACE("get_meta_index: meta->offset %d, meta->entries %d\n",
++                              meta->offset, meta->entries);
++
++              release_meta_index(inode, meta);
++      }
++
++all_done:
++      *index_block = cur_index_block;
++      *index_offset = cur_offset;
++      *data_block = cur_data_block;
++
++      return offset * SQUASHFS_META_INDEXES * skip;
++
++failed:
++      release_meta_index(inode, meta);
++      return -1;
++}
++
++
++static long long read_blocklist(struct inode *inode, int index,
++                              int readahead_blks, char *block_list,
++                              unsigned short **block_p, unsigned int *bsize)
++{
++      long long block_ptr;
++      int offset;
++      long long block;
++      int res = get_meta_index(inode, index, &block_ptr, &offset, &block,
++              block_list);
++
++      TRACE("read_blocklist: res %d, index %d, block_ptr 0x%llx, offset"
++                     " 0x%x, block 0x%llx\n", res, index, block_ptr, offset, block);
++
++      if(res == -1)
++              goto failure;
++
++      index -= res;
++
++      while (index) {
++              int blocks = index > (SIZE >> 2) ? (SIZE >> 2) : index;
++              int res = read_block_index(inode->i_sb, blocks, block_list,
++                      &block_ptr, &offset);
++              if (res == -1)
++                      goto failure;
++              block += res;
++              index -= blocks;
++      }
++
++      if (read_block_index(inode->i_sb, 1, block_list, &block_ptr, &offset) == -1)
++              goto failure;
++      *bsize = *((unsigned int *) block_list);
++
++      return block;
++
++failure:
++      return 0;
++}
++
++
++static int squashfs_readpage(struct file *file, struct page *page)
++{
++      struct inode *inode = page->mapping->host;
++      struct squashfs_sb_info *msblk = inode->i_sb->s_fs_info;
++      struct squashfs_super_block *sblk = &msblk->sblk;
++      unsigned char *block_list = NULL;
++      long long block;
++      unsigned int bsize, i;
++      int bytes;
++      int index = page->index >> (sblk->block_log - PAGE_CACHE_SHIFT);
++      void *pageaddr;
++      struct squashfs_cache_entry *fragment = NULL;
++      char *data_ptr = msblk->read_page;
++      
++      int mask = (1 << (sblk->block_log - PAGE_CACHE_SHIFT)) - 1;
++      int start_index = page->index & ~mask;
++      int end_index = start_index | mask;
++      int file_end = i_size_read(inode) >> sblk->block_log;
++      int sparse = 0;
++
++      TRACE("Entered squashfs_readpage, page index %lx, start block %llx\n",
++                                      page->index, SQUASHFS_I(inode)->start_block);
++
++      if (page->index >= ((i_size_read(inode) + PAGE_CACHE_SIZE - 1) >>
++                                      PAGE_CACHE_SHIFT))
++              goto out;
++
++      if (SQUASHFS_I(inode)->u.s1.fragment_start_block == SQUASHFS_INVALID_BLK
++                                      || index < file_end) {
++              block_list = kmalloc(SIZE, GFP_KERNEL);
++              if (block_list == NULL) {
++                      ERROR("Failed to allocate block_list\n");
++                      goto error_out;
++              }
++
++              block = (msblk->read_blocklist)(inode, index, 1, block_list, NULL, &bsize);
++              if (block == 0)
++                      goto error_out;
++
++              if (bsize == 0) { /* hole */
++                      bytes = index == file_end ?
++                              (i_size_read(inode) & (sblk->block_size - 1)) : sblk->block_size;
++                      sparse = 1;
++              } else {
++                      mutex_lock(&msblk->read_page_mutex);
++              
++                      bytes = squashfs_read_data(inode->i_sb, msblk->read_page, block,
++                              bsize, NULL, sblk->block_size);
++
++                      if (bytes == 0) {
++                              ERROR("Unable to read page, block %llx, size %x\n", block, bsize);
++                              mutex_unlock(&msblk->read_page_mutex);
++                              goto error_out;
++                      }
++              }
++      } else {
++              fragment = get_cached_fragment(inode->i_sb,
++                                      SQUASHFS_I(inode)-> u.s1.fragment_start_block,
++                                      SQUASHFS_I(inode)->u.s1.fragment_size);
++
++              if (fragment->error) {
++                      ERROR("Unable to read page, block %llx, size %x\n",
++                                      SQUASHFS_I(inode)->u.s1.fragment_start_block,
++                                      (int) SQUASHFS_I(inode)->u.s1.fragment_size);
++                      release_cached_fragment(msblk, fragment);
++                      goto error_out;
++              }
++              bytes = i_size_read(inode) & (sblk->block_size - 1);
++              data_ptr = fragment->data + SQUASHFS_I(inode)->u.s1.fragment_offset;
++      }
++
++      for (i = start_index; i <= end_index && bytes > 0; i++,
++                                              bytes -= PAGE_CACHE_SIZE, data_ptr += PAGE_CACHE_SIZE) {
++              struct page *push_page;
++              int avail = sparse ? 0 : min_t(unsigned int, bytes, PAGE_CACHE_SIZE);
++
++              TRACE("bytes %d, i %d, available_bytes %d\n", bytes, i, avail);
++
++              push_page = (i == page->index) ? page :
++                      grab_cache_page_nowait(page->mapping, i);
++
++              if (!push_page)
++                      continue;
++
++              if (PageUptodate(push_page))
++                      goto skip_page;
++
++              pageaddr = kmap_atomic(push_page, KM_USER0);
++              memcpy(pageaddr, data_ptr, avail);
++              memset(pageaddr + avail, 0, PAGE_CACHE_SIZE - avail);
++              kunmap_atomic(pageaddr, KM_USER0);
++              flush_dcache_page(push_page);
++              SetPageUptodate(push_page);
++skip_page:
++              unlock_page(push_page);
++              if(i != page->index)
++                      page_cache_release(push_page);
++      }
++
++      if (SQUASHFS_I(inode)->u.s1.fragment_start_block == SQUASHFS_INVALID_BLK
++                                      || index < file_end) {
++              if (!sparse)
++                      mutex_unlock(&msblk->read_page_mutex);
++              kfree(block_list);
++      } else
++              release_cached_fragment(msblk, fragment);
++
++      return 0;
++
++error_out:
++      SetPageError(page);
++out:
++      pageaddr = kmap_atomic(page, KM_USER0);
++      memset(pageaddr, 0, PAGE_CACHE_SIZE);
++      kunmap_atomic(pageaddr, KM_USER0);
++      flush_dcache_page(page);
++      if (!PageError(page))
++              SetPageUptodate(page);
++      unlock_page(page);
++
++      kfree(block_list);
++      return 0;
++}
++
++
++static int get_dir_index_using_offset(struct super_block *s,
++                              long long *next_block, unsigned int *next_offset,
++                              long long index_start, unsigned int index_offset, int i_count,
++                              long long f_pos)
++{
++      struct squashfs_sb_info *msblk = s->s_fs_info;
++      struct squashfs_super_block *sblk = &msblk->sblk;
++      int i, length = 0;
++      struct squashfs_dir_index index;
++
++      TRACE("Entered get_dir_index_using_offset, i_count %d, f_pos %d\n",
++                                      i_count, (unsigned int) f_pos);
++
++      f_pos -= 3;
++      if (f_pos == 0)
++              goto finish;
++
++      for (i = 0; i < i_count; i++) {
++              if (msblk->swap) {
++                      struct squashfs_dir_index sindex;
++                      squashfs_get_cached_block(s, &sindex, index_start, index_offset,
++                                      sizeof(sindex), &index_start, &index_offset);
++                      SQUASHFS_SWAP_DIR_INDEX(&index, &sindex);
++              } else
++                      squashfs_get_cached_block(s, &index, index_start, index_offset,
++                                      sizeof(index), &index_start, &index_offset);
++
++              if (index.index > f_pos)
++                      break;
++
++              squashfs_get_cached_block(s, NULL, index_start, index_offset,
++                                      index.size + 1, &index_start, &index_offset);
++
++              length = index.index;
++              *next_block = index.start_block + sblk->directory_table_start;
++      }
++
++      *next_offset = (length + *next_offset) % SQUASHFS_METADATA_SIZE;
++
++finish:
++      return length + 3;
++}
++
++
++static int get_dir_index_using_name(struct super_block *s,
++                              long long *next_block, unsigned int *next_offset,
++                              long long index_start, unsigned int index_offset, int i_count,
++                              const char *name, int size)
++{
++      struct squashfs_sb_info *msblk = s->s_fs_info;
++      struct squashfs_super_block *sblk = &msblk->sblk;
++      int i, length = 0;
++      struct squashfs_dir_index *index;
++      char *str;
++
++      TRACE("Entered get_dir_index_using_name, i_count %d\n", i_count);
++
++      str = kmalloc(sizeof(struct squashfs_dir_index) +
++              (SQUASHFS_NAME_LEN + 1) * 2, GFP_KERNEL);
++      if (str == NULL) {
++              ERROR("Failed to allocate squashfs_dir_index\n");
++              goto failure;
++      }
++
++      index = (struct squashfs_dir_index *) (str + SQUASHFS_NAME_LEN + 1);
++      strncpy(str, name, size);
++      str[size] = '\0';
++
++      for (i = 0; i < i_count; i++) {
++              if (msblk->swap) {
++                      struct squashfs_dir_index sindex;
++                      squashfs_get_cached_block(s, &sindex, index_start, index_offset,
++                              sizeof(sindex), &index_start, &index_offset);
++                      SQUASHFS_SWAP_DIR_INDEX(index, &sindex);
++              } else
++                      squashfs_get_cached_block(s, index, index_start, index_offset,
++                              sizeof(struct squashfs_dir_index), &index_start, &index_offset);
++
++              squashfs_get_cached_block(s, index->name, index_start, index_offset,
++                                      index->size + 1, &index_start, &index_offset);
++
++              index->name[index->size + 1] = '\0';
++
++              if (strcmp(index->name, str) > 0)
++                      break;
++
++              length = index->index;
++              *next_block = index->start_block + sblk->directory_table_start;
++      }
++
++      *next_offset = (length + *next_offset) % SQUASHFS_METADATA_SIZE;
++      kfree(str);
++
++failure:
++      return length + 3;
++}
++
++              
++static int squashfs_readdir(struct file *file, void *dirent, filldir_t filldir)
++{
++      struct inode *i = file->f_dentry->d_inode;
++      struct squashfs_sb_info *msblk = i->i_sb->s_fs_info;
++      struct squashfs_super_block *sblk = &msblk->sblk;
++      long long next_block = SQUASHFS_I(i)->start_block +
++              sblk->directory_table_start;
++      int next_offset = SQUASHFS_I(i)->offset, length = 0, dir_count;
++      struct squashfs_dir_header dirh;
++      struct squashfs_dir_entry *dire;
++
++      TRACE("Entered squashfs_readdir [%llx:%x]\n", next_block, next_offset);
++
++      dire = kmalloc(sizeof(struct squashfs_dir_entry) +
++              SQUASHFS_NAME_LEN + 1, GFP_KERNEL);
++      if (dire == NULL) {
++              ERROR("Failed to allocate squashfs_dir_entry\n");
++              goto finish;
++      }
++
++      while(file->f_pos < 3) {
++              char *name;
++              int size, i_ino;
++
++              if(file->f_pos == 0) {
++                      name = ".";
++                      size = 1;
++                      i_ino = i->i_ino;
++              } else {
++                      name = "..";
++                      size = 2;
++                      i_ino = SQUASHFS_I(i)->u.s2.parent_inode;
++              }
++              TRACE("Calling filldir(%x, %s, %d, %d, %d, %d)\n",
++                              (unsigned int) dirent, name, size, (int)
++                              file->f_pos, i_ino, squashfs_filetype_table[1]);
++
++              if (filldir(dirent, name, size, file->f_pos, i_ino,
++                              squashfs_filetype_table[1]) < 0) {
++                              TRACE("Filldir returned less than 0\n");
++                      goto finish;
++              }
++              file->f_pos += size;
++      }
++
++      length = get_dir_index_using_offset(i->i_sb, &next_block, &next_offset,
++                              SQUASHFS_I(i)->u.s2.directory_index_start,
++                              SQUASHFS_I(i)->u.s2.directory_index_offset,
++                              SQUASHFS_I(i)->u.s2.directory_index_count, file->f_pos);
++
++      while (length < i_size_read(i)) {
++              /* read directory header */
++              if (msblk->swap) {
++                      struct squashfs_dir_header sdirh;
++                      
++                      if (!squashfs_get_cached_block(i->i_sb, &sdirh, next_block,
++                                       next_offset, sizeof(sdirh), &next_block, &next_offset))
++                              goto failed_read;
++
++                      length += sizeof(sdirh);
++                      SQUASHFS_SWAP_DIR_HEADER(&dirh, &sdirh);
++              } else {
++                      if (!squashfs_get_cached_block(i->i_sb, &dirh, next_block,
++                                      next_offset, sizeof(dirh), &next_block, &next_offset))
++                              goto failed_read;
++
++                      length += sizeof(dirh);
++              }
++
++              dir_count = dirh.count + 1;
++              while (dir_count--) {
++                      if (msblk->swap) {
++                              struct squashfs_dir_entry sdire;
++                              if (!squashfs_get_cached_block(i->i_sb, &sdire, next_block,
++                                              next_offset, sizeof(sdire), &next_block, &next_offset))
++                                      goto failed_read;
++                              
++                              length += sizeof(sdire);
++                              SQUASHFS_SWAP_DIR_ENTRY(dire, &sdire);
++                      } else {
++                              if (!squashfs_get_cached_block(i->i_sb, dire, next_block,
++                                              next_offset, sizeof(*dire), &next_block, &next_offset))
++                                      goto failed_read;
++
++                              length += sizeof(*dire);
++                      }
++
++                      if (!squashfs_get_cached_block(i->i_sb, dire->name, next_block,
++                                              next_offset, dire->size + 1, &next_block, &next_offset))
++                              goto failed_read;
++
++                      length += dire->size + 1;
++
++                      if (file->f_pos >= length)
++                              continue;
++
++                      dire->name[dire->size + 1] = '\0';
++
++                      TRACE("Calling filldir(%x, %s, %d, %d, %x:%x, %d, %d)\n",
++                                      (unsigned int) dirent, dire->name, dire->size + 1,
++                                      (int) file->f_pos, dirh.start_block, dire->offset,
++                                      dirh.inode_number + dire->inode_number,
++                                      squashfs_filetype_table[dire->type]);
++
++                      if (filldir(dirent, dire->name, dire->size + 1, file->f_pos,
++                                      dirh.inode_number + dire->inode_number,
++                                      squashfs_filetype_table[dire->type]) < 0) {
++                              TRACE("Filldir returned less than 0\n");
++                              goto finish;
++                      }
++                      file->f_pos = length;
++              }
++      }
++
++finish:
++      kfree(dire);
++      return 0;
++
++failed_read:
++      ERROR("Unable to read directory block [%llx:%x]\n", next_block,
++              next_offset);
++      kfree(dire);
++      return 0;
++}
++
++
++static struct dentry *squashfs_lookup(struct inode *i, struct dentry *dentry,
++                              struct nameidata *nd)
++{
++      const unsigned char *name = dentry->d_name.name;
++      int len = dentry->d_name.len;
++      struct inode *inode = NULL;
++      struct squashfs_sb_info *msblk = i->i_sb->s_fs_info;
++      struct squashfs_super_block *sblk = &msblk->sblk;
++      long long next_block = SQUASHFS_I(i)->start_block +
++                              sblk->directory_table_start;
++      int next_offset = SQUASHFS_I(i)->offset, length = 0, dir_count;
++      struct squashfs_dir_header dirh;
++      struct squashfs_dir_entry *dire;
++
++      TRACE("Entered squashfs_lookup [%llx:%x]\n", next_block, next_offset);
++
++      dire = kmalloc(sizeof(struct squashfs_dir_entry) +
++              SQUASHFS_NAME_LEN + 1, GFP_KERNEL);
++      if (dire == NULL) {
++              ERROR("Failed to allocate squashfs_dir_entry\n");
++              goto exit_lookup;
++      }
++
++      if (len > SQUASHFS_NAME_LEN)
++              goto exit_lookup;
++
++      length = get_dir_index_using_name(i->i_sb, &next_block, &next_offset,
++                              SQUASHFS_I(i)->u.s2.directory_index_start,
++                              SQUASHFS_I(i)->u.s2.directory_index_offset,
++                              SQUASHFS_I(i)->u.s2.directory_index_count, name, len);
++
++      while (length < i_size_read(i)) {
++              /* read directory header */
++              if (msblk->swap) {
++                      struct squashfs_dir_header sdirh;
++                      if (!squashfs_get_cached_block(i->i_sb, &sdirh, next_block,
++                                       next_offset, sizeof(sdirh), &next_block, &next_offset))
++                              goto failed_read;
++
++                      length += sizeof(sdirh);
++                      SQUASHFS_SWAP_DIR_HEADER(&dirh, &sdirh);
++              } else {
++                      if (!squashfs_get_cached_block(i->i_sb, &dirh, next_block,
++                                      next_offset, sizeof(dirh), &next_block, &next_offset))
++                              goto failed_read;
++
++                      length += sizeof(dirh);
++              }
++
++              dir_count = dirh.count + 1;
++              while (dir_count--) {
++                      if (msblk->swap) {
++                              struct squashfs_dir_entry sdire;
++                              if (!squashfs_get_cached_block(i->i_sb, &sdire, next_block,
++                                              next_offset, sizeof(sdire), &next_block, &next_offset))
++                                      goto failed_read;
++                              
++                              length += sizeof(sdire);
++                              SQUASHFS_SWAP_DIR_ENTRY(dire, &sdire);
++                      } else {
++                              if (!squashfs_get_cached_block(i->i_sb, dire, next_block,
++                                              next_offset, sizeof(*dire), &next_block, &next_offset))
++                                      goto failed_read;
++
++                              length += sizeof(*dire);
++                      }
++
++                      if (!squashfs_get_cached_block(i->i_sb, dire->name, next_block,
++                                      next_offset, dire->size + 1, &next_block, &next_offset))
++                              goto failed_read;
++
++                      length += dire->size + 1;
++
++                      if (name[0] < dire->name[0])
++                              goto exit_lookup;
++
++                      if ((len == dire->size + 1) && !strncmp(name, dire->name, len)) {
++                              squashfs_inode_t ino = SQUASHFS_MKINODE(dirh.start_block,
++                                                              dire->offset);
++
++                              TRACE("calling squashfs_iget for directory entry %s, inode"
++                                      "  %x:%x, %d\n", name, dirh.start_block, dire->offset,
++                                      dirh.inode_number + dire->inode_number);
++
++                              inode = squashfs_iget(i->i_sb, ino, dirh.inode_number + dire->inode_number);
++
++                              goto exit_lookup;
++                      }
++              }
++      }
++
++exit_lookup:
++      kfree(dire);
++      if (inode)
++              return d_splice_alias(inode, dentry);
++      d_add(dentry, inode);
++      return ERR_PTR(0);
++
++failed_read:
++      ERROR("Unable to read directory block [%llx:%x]\n", next_block,
++              next_offset);
++      goto exit_lookup;
++}
++
++
++static int squashfs_remount(struct super_block *s, int *flags, char *data)
++{
++      *flags |= MS_RDONLY;
++      return 0;
++}
++
++
++static void squashfs_put_super(struct super_block *s)
++{
++      if (s->s_fs_info) {
++              struct squashfs_sb_info *sbi = s->s_fs_info;
++              squashfs_cache_delete(sbi->block_cache);
++              squashfs_cache_delete(sbi->fragment_cache);
++              vfree(sbi->read_page);
++              kfree(sbi->uid);
++              kfree(sbi->fragment_index);
++              kfree(sbi->fragment_index_2);
++              kfree(sbi->meta_index);
++              vfree(sbi->stream.workspace);
++              kfree(s->s_fs_info);
++              s->s_fs_info = NULL;
++      }
++}
++
++
++static int squashfs_get_sb(struct file_system_type *fs_type, int flags,
++                              const char *dev_name, void *data, struct vfsmount *mnt)
++{
++      return get_sb_bdev(fs_type, flags, dev_name, data, squashfs_fill_super,
++                              mnt);
++}
++
++
++static int __init init_squashfs_fs(void)
++{
++      int err = init_inodecache();
++      if (err)
++              goto out;
++
++      printk(KERN_INFO "squashfs: version 3.4 (2008/08/26) "
++              "Phillip Lougher\n");
++
++      err = register_filesystem(&squashfs_fs_type);
++      if (err)
++              destroy_inodecache();
++
++out:
++      return err;
++}
++
++
++static void __exit exit_squashfs_fs(void)
++{
++      unregister_filesystem(&squashfs_fs_type);
++      destroy_inodecache();
++}
++
++
++static struct kmem_cache * squashfs_inode_cachep;
++
++
++static struct inode *squashfs_alloc_inode(struct super_block *sb)
++{
++      struct squashfs_inode_info *ei;
++      ei = kmem_cache_alloc(squashfs_inode_cachep, GFP_KERNEL);
++      return ei ? &ei->vfs_inode : NULL;
++}
++
++
++static void squashfs_destroy_inode(struct inode *inode)
++{
++      kmem_cache_free(squashfs_inode_cachep, SQUASHFS_I(inode));
++}
++
++
++static void init_once(void *foo)
++{
++      struct squashfs_inode_info *ei = foo;
++
++      inode_init_once(&ei->vfs_inode);
++}
++ 
++
++static int __init init_inodecache(void)
++{
++      squashfs_inode_cachep = kmem_cache_create("squashfs_inode_cache",
++          sizeof(struct squashfs_inode_info), 0,
++              SLAB_HWCACHE_ALIGN|SLAB_RECLAIM_ACCOUNT, init_once);
++      if (squashfs_inode_cachep == NULL)
++              return -ENOMEM;
++      return 0;
++}
++
++
++static void destroy_inodecache(void)
++{
++      kmem_cache_destroy(squashfs_inode_cachep);
++}
++
++
++module_init(init_squashfs_fs);
++module_exit(exit_squashfs_fs);
++MODULE_DESCRIPTION("squashfs 3.4, a compressed read-only filesystem");
++MODULE_AUTHOR("Phillip Lougher <phillip@lougher.demon.co.uk>");
++MODULE_LICENSE("GPL");
+--- /dev/null
++++ kernel-power-2.6.28/fs/squashfs/squashfs.h
+@@ -0,0 +1,86 @@
++/*
++ * Squashfs - a compressed read only filesystem for Linux
++ *
++ * Copyright (c) 2002, 2003, 2004, 2005, 2006, 2007, 2008
++ * Phillip Lougher <phillip@lougher.demon.co.uk>
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License
++ * as published by the Free Software Foundation; either version 2,
++ * or (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
++ *
++ * squashfs.h
++ */
++
++#ifdef CONFIG_SQUASHFS_1_0_COMPATIBILITY
++#undef CONFIG_SQUASHFS_1_0_COMPATIBILITY
++#endif
++
++#ifdef SQUASHFS_TRACE
++#define TRACE(s, args...)     printk(KERN_NOTICE "SQUASHFS: "s, ## args)
++#else
++#define TRACE(s, args...)     {}
++#endif
++
++#define ERROR(s, args...)     printk(KERN_ERR "SQUASHFS error: "s, ## args)
++
++#define SERROR(s, args...)    do { \
++                              if (!silent) \
++                              printk(KERN_ERR "SQUASHFS error: "s, ## args);\
++                              } while(0)
++
++#define WARNING(s, args...)   printk(KERN_WARNING "SQUASHFS: "s, ## args)
++
++static inline struct squashfs_inode_info *SQUASHFS_I(struct inode *inode)
++{
++      return list_entry(inode, struct squashfs_inode_info, vfs_inode);
++}
++
++#if defined(CONFIG_SQUASHFS_1_0_COMPATIBILITY ) || defined(CONFIG_SQUASHFS_2_0_COMPATIBILITY)
++#define SQSH_EXTERN
++extern unsigned int squashfs_read_data(struct super_block *s, char *buffer,
++                              long long index, unsigned int length,
++                              long long *next_index, int srclength);
++extern int squashfs_get_cached_block(struct super_block *s, void *buffer,
++                              long long block, unsigned int offset,
++                              int length, long long *next_block,
++                              unsigned int *next_offset);
++extern void release_cached_fragment(struct squashfs_sb_info *msblk, struct
++                                      squashfs_cache_entry *fragment);
++extern struct squashfs_cache_entry *get_cached_fragment(struct super_block
++                                      *s, long long start_block,
++                                      int length);
++extern struct inode *squashfs_iget(struct super_block *s, squashfs_inode_t inode, unsigned int inode_number);
++extern const struct address_space_operations squashfs_symlink_aops;
++extern const struct address_space_operations squashfs_aops;
++extern struct inode_operations squashfs_dir_inode_ops;
++#else
++#define SQSH_EXTERN static
++#endif
++
++#ifdef CONFIG_SQUASHFS_1_0_COMPATIBILITY
++extern int squashfs_1_0_supported(struct squashfs_sb_info *msblk);
++#else
++static inline int squashfs_1_0_supported(struct squashfs_sb_info *msblk)
++{
++      return 0;
++}
++#endif
++
++#ifdef CONFIG_SQUASHFS_2_0_COMPATIBILITY
++extern int squashfs_2_0_supported(struct squashfs_sb_info *msblk);
++#else
++static inline int squashfs_2_0_supported(struct squashfs_sb_info *msblk)
++{
++      return 0;
++}
++#endif
+--- /dev/null
++++ kernel-power-2.6.28/fs/squashfs/squashfs2_0.c
+@@ -0,0 +1,740 @@
++/*
++ * Squashfs - a compressed read only filesystem for Linux
++ *
++ * Copyright (c) 2002, 2003, 2004, 2005, 2006, 2007, 2008
++ * Phillip Lougher <phillip@lougher.demon.co.uk>
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License
++ * as published by the Free Software Foundation; either version 2,
++ * or (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
++ *
++ * squashfs2_0.c
++ */
++
++#include <linux/squashfs_fs.h>
++#include <linux/module.h>
++#include <linux/zlib.h>
++#include <linux/fs.h>
++#include <linux/squashfs_fs_sb.h>
++#include <linux/squashfs_fs_i.h>
++
++#include "squashfs.h"
++static int squashfs_readdir_2(struct file *file, void *dirent, filldir_t filldir);
++static struct dentry *squashfs_lookup_2(struct inode *, struct dentry *,
++                              struct nameidata *);
++
++static struct file_operations squashfs_dir_ops_2 = {
++      .read = generic_read_dir,
++      .readdir = squashfs_readdir_2
++};
++
++static struct inode_operations squashfs_dir_inode_ops_2 = {
++      .lookup = squashfs_lookup_2
++};
++
++static unsigned char squashfs_filetype_table[] = {
++      DT_UNKNOWN, DT_DIR, DT_REG, DT_LNK, DT_BLK, DT_CHR, DT_FIFO, DT_SOCK
++};
++
++static int read_fragment_index_table_2(struct super_block *s)
++{
++      struct squashfs_sb_info *msblk = s->s_fs_info;
++      struct squashfs_super_block *sblk = &msblk->sblk;
++
++      if (!(msblk->fragment_index_2 = kmalloc(SQUASHFS_FRAGMENT_INDEX_BYTES_2
++                                      (sblk->fragments), GFP_KERNEL))) {
++              ERROR("Failed to allocate uid/gid table\n");
++              return 0;
++      }
++   
++      if (SQUASHFS_FRAGMENT_INDEX_BYTES_2(sblk->fragments) &&
++                                      !squashfs_read_data(s, (char *)
++                                      msblk->fragment_index_2,
++                                      sblk->fragment_table_start,
++                                      SQUASHFS_FRAGMENT_INDEX_BYTES_2
++                                      (sblk->fragments) |
++                                      SQUASHFS_COMPRESSED_BIT_BLOCK, NULL, SQUASHFS_FRAGMENT_INDEX_BYTES_2(sblk->fragments))) {
++              ERROR("unable to read fragment index table\n");
++              return 0;
++      }
++
++      if (msblk->swap) {
++              int i;
++              unsigned int fragment;
++
++              for (i = 0; i < SQUASHFS_FRAGMENT_INDEXES_2(sblk->fragments);
++                                                                      i++) {
++                      SQUASHFS_SWAP_FRAGMENT_INDEXES_2((&fragment),
++                                              &msblk->fragment_index_2[i], 1);
++                      msblk->fragment_index_2[i] = fragment;
++              }
++      }
++
++      return 1;
++}
++
++
++static int get_fragment_location_2(struct super_block *s, unsigned int fragment,
++                              long long *fragment_start_block,
++                              unsigned int *fragment_size)
++{
++      struct squashfs_sb_info *msblk = s->s_fs_info;
++      long long start_block =
++              msblk->fragment_index_2[SQUASHFS_FRAGMENT_INDEX_2(fragment)];
++      int offset = SQUASHFS_FRAGMENT_INDEX_OFFSET_2(fragment);
++      struct squashfs_fragment_entry_2 fragment_entry;
++
++      if (msblk->swap) {
++              struct squashfs_fragment_entry_2 sfragment_entry;
++
++              if (!squashfs_get_cached_block(s, (char *) &sfragment_entry,
++                                      start_block, offset,
++                                      sizeof(sfragment_entry), &start_block,
++                                      &offset))
++                      goto out;
++              SQUASHFS_SWAP_FRAGMENT_ENTRY_2(&fragment_entry, &sfragment_entry);
++      } else
++              if (!squashfs_get_cached_block(s, (char *) &fragment_entry,
++                                      start_block, offset,
++                                      sizeof(fragment_entry), &start_block,
++                                      &offset))
++                      goto out;
++
++      *fragment_start_block = fragment_entry.start_block;
++      *fragment_size = fragment_entry.size;
++
++      return 1;
++
++out:
++      return 0;
++}
++
++
++static void squashfs_new_inode(struct squashfs_sb_info *msblk, struct inode *i,
++              struct squashfs_base_inode_header_2 *inodeb, unsigned int ino)
++{
++      struct squashfs_super_block *sblk = &msblk->sblk;
++
++      i->i_ino = ino;
++      i->i_mtime.tv_sec = sblk->mkfs_time;
++      i->i_atime.tv_sec = sblk->mkfs_time;
++      i->i_ctime.tv_sec = sblk->mkfs_time;
++      i->i_uid = msblk->uid[inodeb->uid];
++      i->i_mode = inodeb->mode;
++      i->i_nlink = 1;
++      i->i_size = 0;
++      if (inodeb->guid == SQUASHFS_GUIDS)
++              i->i_gid = i->i_uid;
++      else
++              i->i_gid = msblk->guid[inodeb->guid];
++}
++
++
++static int squashfs_read_inode_2(struct inode *i, squashfs_inode_t inode)
++{
++      struct super_block *s = i->i_sb;
++      struct squashfs_sb_info *msblk = s->s_fs_info;
++      struct squashfs_super_block *sblk = &msblk->sblk;
++      unsigned int block = SQUASHFS_INODE_BLK(inode) +
++              sblk->inode_table_start;
++      unsigned int offset = SQUASHFS_INODE_OFFSET(inode);
++      unsigned int ino = SQUASHFS_MK_VFS_INODE(block -
++              sblk->inode_table_start, offset);
++      long long next_block;
++      unsigned int next_offset;
++      union squashfs_inode_header_2 id, sid;
++      struct squashfs_base_inode_header_2 *inodeb = &id.base,
++                                        *sinodeb = &sid.base;
++
++      TRACE("Entered squashfs_read_inode_2\n");
++
++      if (msblk->swap) {
++              if (!squashfs_get_cached_block(s, (char *) sinodeb, block,
++                                      offset, sizeof(*sinodeb), &next_block,
++                                      &next_offset))
++                      goto failed_read;
++              SQUASHFS_SWAP_BASE_INODE_HEADER_2(inodeb, sinodeb,
++                                      sizeof(*sinodeb));
++      } else
++              if (!squashfs_get_cached_block(s, (char *) inodeb, block,
++                                      offset, sizeof(*inodeb), &next_block,
++                                      &next_offset))
++                      goto failed_read;
++
++      squashfs_new_inode(msblk, i, inodeb, ino);
++
++      switch(inodeb->inode_type) {
++              case SQUASHFS_FILE_TYPE: {
++                      struct squashfs_reg_inode_header_2 *inodep = &id.reg;
++                      struct squashfs_reg_inode_header_2 *sinodep = &sid.reg;
++                      long long frag_blk;
++                      unsigned int frag_size = 0;
++                              
++                      if (msblk->swap) {
++                              if (!squashfs_get_cached_block(s, (char *)
++                                              sinodep, block, offset,
++                                              sizeof(*sinodep), &next_block,
++                                              &next_offset))
++                                      goto failed_read;
++                              SQUASHFS_SWAP_REG_INODE_HEADER_2(inodep, sinodep);
++                      } else
++                              if (!squashfs_get_cached_block(s, (char *)
++                                              inodep, block, offset,
++                                              sizeof(*inodep), &next_block,
++                                              &next_offset))
++                                      goto failed_read;
++
++                      frag_blk = SQUASHFS_INVALID_BLK;
++                      if (inodep->fragment != SQUASHFS_INVALID_FRAG &&
++                                      !get_fragment_location_2(s,
++                                      inodep->fragment, &frag_blk, &frag_size))
++                              goto failed_read;
++                              
++                      i->i_size = inodep->file_size;
++                      i->i_fop = &generic_ro_fops;
++                      i->i_mode |= S_IFREG;
++                      i->i_mtime.tv_sec = inodep->mtime;
++                      i->i_atime.tv_sec = inodep->mtime;
++                      i->i_ctime.tv_sec = inodep->mtime;
++                      i->i_blocks = ((i->i_size - 1) >> 9) + 1;
++                      SQUASHFS_I(i)->u.s1.fragment_start_block = frag_blk;
++                      SQUASHFS_I(i)->u.s1.fragment_size = frag_size;
++                      SQUASHFS_I(i)->u.s1.fragment_offset = inodep->offset;
++                      SQUASHFS_I(i)->start_block = inodep->start_block;
++                      SQUASHFS_I(i)->u.s1.block_list_start = next_block;
++                      SQUASHFS_I(i)->offset = next_offset;
++                      i->i_data.a_ops = &squashfs_aops;
++
++                      TRACE("File inode %x:%x, start_block %x, "
++                                      "block_list_start %llx, offset %x\n",
++                                      SQUASHFS_INODE_BLK(inode), offset,
++                                      inodep->start_block, next_block,
++                                      next_offset);
++                      break;
++              }
++              case SQUASHFS_DIR_TYPE: {
++                      struct squashfs_dir_inode_header_2 *inodep = &id.dir;
++                      struct squashfs_dir_inode_header_2 *sinodep = &sid.dir;
++
++                      if (msblk->swap) {
++                              if (!squashfs_get_cached_block(s, (char *)
++                                              sinodep, block, offset,
++                                              sizeof(*sinodep), &next_block,
++                                              &next_offset))
++                                      goto failed_read;
++                              SQUASHFS_SWAP_DIR_INODE_HEADER_2(inodep, sinodep);
++                      } else
++                              if (!squashfs_get_cached_block(s, (char *)
++                                              inodep, block, offset,
++                                              sizeof(*inodep), &next_block,
++                                              &next_offset))
++                                      goto failed_read;
++
++                      i->i_size = inodep->file_size;
++                      i->i_op = &squashfs_dir_inode_ops_2;
++                      i->i_fop = &squashfs_dir_ops_2;
++                      i->i_mode |= S_IFDIR;
++                      i->i_mtime.tv_sec = inodep->mtime;
++                      i->i_atime.tv_sec = inodep->mtime;
++                      i->i_ctime.tv_sec = inodep->mtime;
++                      SQUASHFS_I(i)->start_block = inodep->start_block;
++                      SQUASHFS_I(i)->offset = inodep->offset;
++                      SQUASHFS_I(i)->u.s2.directory_index_count = 0;
++                      SQUASHFS_I(i)->u.s2.parent_inode = 0;
++
++                      TRACE("Directory inode %x:%x, start_block %x, offset "
++                                      "%x\n", SQUASHFS_INODE_BLK(inode),
++                                      offset, inodep->start_block,
++                                      inodep->offset);
++                      break;
++              }
++              case SQUASHFS_LDIR_TYPE: {
++                      struct squashfs_ldir_inode_header_2 *inodep = &id.ldir;
++                      struct squashfs_ldir_inode_header_2 *sinodep = &sid.ldir;
++
++                      if (msblk->swap) {
++                              if (!squashfs_get_cached_block(s, (char *)
++                                              sinodep, block, offset,
++                                              sizeof(*sinodep), &next_block,
++                                              &next_offset))
++                                      goto failed_read;
++                              SQUASHFS_SWAP_LDIR_INODE_HEADER_2(inodep,
++                                              sinodep);
++                      } else
++                              if (!squashfs_get_cached_block(s, (char *)
++                                              inodep, block, offset,
++                                              sizeof(*inodep), &next_block,
++                                              &next_offset))
++                                      goto failed_read;
++
++                      i->i_size = inodep->file_size;
++                      i->i_op = &squashfs_dir_inode_ops_2;
++                      i->i_fop = &squashfs_dir_ops_2;
++                      i->i_mode |= S_IFDIR;
++                      i->i_mtime.tv_sec = inodep->mtime;
++                      i->i_atime.tv_sec = inodep->mtime;
++                      i->i_ctime.tv_sec = inodep->mtime;
++                      SQUASHFS_I(i)->start_block = inodep->start_block;
++                      SQUASHFS_I(i)->offset = inodep->offset;
++                      SQUASHFS_I(i)->u.s2.directory_index_start = next_block;
++                      SQUASHFS_I(i)->u.s2.directory_index_offset =
++                                                              next_offset;
++                      SQUASHFS_I(i)->u.s2.directory_index_count =
++                                                              inodep->i_count;
++                      SQUASHFS_I(i)->u.s2.parent_inode = 0;
++
++                      TRACE("Long directory inode %x:%x, start_block %x, "
++                                      "offset %x\n",
++                                      SQUASHFS_INODE_BLK(inode), offset,
++                                      inodep->start_block, inodep->offset);
++                      break;
++              }
++              case SQUASHFS_SYMLINK_TYPE: {
++                      struct squashfs_symlink_inode_header_2 *inodep =
++                                                              &id.symlink;
++                      struct squashfs_symlink_inode_header_2 *sinodep =
++                                                              &sid.symlink;
++      
++                      if (msblk->swap) {
++                              if (!squashfs_get_cached_block(s, (char *)
++                                              sinodep, block, offset,
++                                              sizeof(*sinodep), &next_block,
++                                              &next_offset))
++                                      goto failed_read;
++                              SQUASHFS_SWAP_SYMLINK_INODE_HEADER_2(inodep,
++                                                              sinodep);
++                      } else
++                              if (!squashfs_get_cached_block(s, (char *)
++                                              inodep, block, offset,
++                                              sizeof(*inodep), &next_block,
++                                              &next_offset))
++                                      goto failed_read;
++
++                      i->i_size = inodep->symlink_size;
++                      i->i_op = &page_symlink_inode_operations;
++                      i->i_data.a_ops = &squashfs_symlink_aops;
++                      i->i_mode |= S_IFLNK;
++                      SQUASHFS_I(i)->start_block = next_block;
++                      SQUASHFS_I(i)->offset = next_offset;
++
++                      TRACE("Symbolic link inode %x:%x, start_block %llx, "
++                                      "offset %x\n",
++                                      SQUASHFS_INODE_BLK(inode), offset,
++                                      next_block, next_offset);
++                      break;
++               }
++               case SQUASHFS_BLKDEV_TYPE:
++               case SQUASHFS_CHRDEV_TYPE: {
++                      struct squashfs_dev_inode_header_2 *inodep = &id.dev;
++                      struct squashfs_dev_inode_header_2 *sinodep = &sid.dev;
++
++                      if (msblk->swap) {
++                              if (!squashfs_get_cached_block(s, (char *)
++                                              sinodep, block, offset,
++                                              sizeof(*sinodep), &next_block,
++                                              &next_offset))
++                                      goto failed_read;
++                              SQUASHFS_SWAP_DEV_INODE_HEADER_2(inodep, sinodep);
++                      } else  
++                              if (!squashfs_get_cached_block(s, (char *)
++                                              inodep, block, offset,
++                                              sizeof(*inodep), &next_block,
++                                              &next_offset))
++                                      goto failed_read;
++
++                      i->i_mode |= (inodeb->inode_type ==
++                                      SQUASHFS_CHRDEV_TYPE) ?  S_IFCHR :
++                                      S_IFBLK;
++                      init_special_inode(i, i->i_mode,
++                                      old_decode_dev(inodep->rdev));
++
++                      TRACE("Device inode %x:%x, rdev %x\n",
++                                      SQUASHFS_INODE_BLK(inode), offset,
++                                      inodep->rdev);
++                      break;
++               }
++               case SQUASHFS_FIFO_TYPE:
++               case SQUASHFS_SOCKET_TYPE: {
++
++                      i->i_mode |= (inodeb->inode_type == SQUASHFS_FIFO_TYPE)
++                                                      ? S_IFIFO : S_IFSOCK;
++                      init_special_inode(i, i->i_mode, 0);
++                      break;
++               }
++               default:
++                      ERROR("Unknown inode type %d in squashfs_iget!\n",
++                                      inodeb->inode_type);
++                      goto failed_read1;
++      }
++      
++      return 1;
++
++failed_read:
++      ERROR("Unable to read inode [%x:%x]\n", block, offset);
++
++failed_read1:
++      return 0;
++}
++
++
++static int get_dir_index_using_offset(struct super_block *s, long long 
++                              *next_block, unsigned int *next_offset,
++                              long long index_start,
++                              unsigned int index_offset, int i_count,
++                              long long f_pos)
++{
++      struct squashfs_sb_info *msblk = s->s_fs_info;
++      struct squashfs_super_block *sblk = &msblk->sblk;
++      int i, length = 0;
++      struct squashfs_dir_index_2 index;
++
++      TRACE("Entered get_dir_index_using_offset, i_count %d, f_pos %d\n",
++                                      i_count, (unsigned int) f_pos);
++
++      if (f_pos == 0)
++              goto finish;
++
++      for (i = 0; i < i_count; i++) {
++              if (msblk->swap) {
++                      struct squashfs_dir_index_2 sindex;
++                      squashfs_get_cached_block(s, (char *) &sindex,
++                                      index_start, index_offset,
++                                      sizeof(sindex), &index_start,
++                                      &index_offset);
++                      SQUASHFS_SWAP_DIR_INDEX_2(&index, &sindex);
++              } else
++                      squashfs_get_cached_block(s, (char *) &index,
++                                      index_start, index_offset,
++                                      sizeof(index), &index_start,
++                                      &index_offset);
++
++              if (index.index > f_pos)
++                      break;
++
++              squashfs_get_cached_block(s, NULL, index_start, index_offset,
++                                      index.size + 1, &index_start,
++                                      &index_offset);
++
++              length = index.index;
++              *next_block = index.start_block + sblk->directory_table_start;
++      }
++
++      *next_offset = (length + *next_offset) % SQUASHFS_METADATA_SIZE;
++
++finish:
++      return length;
++}
++
++
++static int get_dir_index_using_name(struct super_block *s, long long
++                              *next_block, unsigned int *next_offset,
++                              long long index_start,
++                              unsigned int index_offset, int i_count,
++                              const char *name, int size)
++{
++      struct squashfs_sb_info *msblk = s->s_fs_info;
++      struct squashfs_super_block *sblk = &msblk->sblk;
++      int i, length = 0;
++      struct squashfs_dir_index_2 *index;
++      char *str;
++
++      TRACE("Entered get_dir_index_using_name, i_count %d\n", i_count);
++
++      if (!(str = kmalloc(sizeof(struct squashfs_dir_index) +
++              (SQUASHFS_NAME_LEN + 1) * 2, GFP_KERNEL))) {
++              ERROR("Failed to allocate squashfs_dir_index\n");
++              goto failure;
++      }
++
++      index = (struct squashfs_dir_index_2 *) (str + SQUASHFS_NAME_LEN + 1);
++      strncpy(str, name, size);
++      str[size] = '\0';
++
++      for (i = 0; i < i_count; i++) {
++              if (msblk->swap) {
++                      struct squashfs_dir_index_2 sindex;
++                      squashfs_get_cached_block(s, (char *) &sindex,
++                                      index_start, index_offset,
++                                      sizeof(sindex), &index_start,
++                                      &index_offset);
++                      SQUASHFS_SWAP_DIR_INDEX_2(index, &sindex);
++              } else
++                      squashfs_get_cached_block(s, (char *) index,
++                                      index_start, index_offset,
++                                      sizeof(struct squashfs_dir_index_2),
++                                      &index_start, &index_offset);
++
++              squashfs_get_cached_block(s, index->name, index_start,
++                                      index_offset, index->size + 1,
++                                      &index_start, &index_offset);
++
++              index->name[index->size + 1] = '\0';
++
++              if (strcmp(index->name, str) > 0)
++                      break;
++
++              length = index->index;
++              *next_block = index->start_block + sblk->directory_table_start;
++      }
++
++      *next_offset = (length + *next_offset) % SQUASHFS_METADATA_SIZE;
++      kfree(str);
++failure:
++      return length;
++}
++
++              
++static int squashfs_readdir_2(struct file *file, void *dirent, filldir_t filldir)
++{
++      struct inode *i = file->f_dentry->d_inode;
++      struct squashfs_sb_info *msblk = i->i_sb->s_fs_info;
++      struct squashfs_super_block *sblk = &msblk->sblk;
++      long long next_block = SQUASHFS_I(i)->start_block +
++              sblk->directory_table_start;
++      int next_offset = SQUASHFS_I(i)->offset, length = 0,
++              dir_count;
++      struct squashfs_dir_header_2 dirh;
++      struct squashfs_dir_entry_2 *dire;
++
++      TRACE("Entered squashfs_readdir_2 [%llx:%x]\n", next_block, next_offset);
++
++      if (!(dire = kmalloc(sizeof(struct squashfs_dir_entry) +
++              SQUASHFS_NAME_LEN + 1, GFP_KERNEL))) {
++              ERROR("Failed to allocate squashfs_dir_entry\n");
++              goto finish;
++      }
++
++      length = get_dir_index_using_offset(i->i_sb, &next_block, &next_offset,
++                              SQUASHFS_I(i)->u.s2.directory_index_start,
++                              SQUASHFS_I(i)->u.s2.directory_index_offset,
++                              SQUASHFS_I(i)->u.s2.directory_index_count,
++                              file->f_pos);
++
++      while (length < i_size_read(i)) {
++              /* read directory header */
++              if (msblk->swap) {
++                      struct squashfs_dir_header_2 sdirh;
++                      
++                      if (!squashfs_get_cached_block(i->i_sb, (char *) &sdirh,
++                                      next_block, next_offset, sizeof(sdirh),
++                                      &next_block, &next_offset))
++                              goto failed_read;
++
++                      length += sizeof(sdirh);
++                      SQUASHFS_SWAP_DIR_HEADER_2(&dirh, &sdirh);
++              } else {
++                      if (!squashfs_get_cached_block(i->i_sb, (char *) &dirh,
++                                      next_block, next_offset, sizeof(dirh),
++                                      &next_block, &next_offset))
++                              goto failed_read;
++
++                      length += sizeof(dirh);
++              }
++
++              dir_count = dirh.count + 1;
++              while (dir_count--) {
++                      if (msblk->swap) {
++                              struct squashfs_dir_entry_2 sdire;
++                              if (!squashfs_get_cached_block(i->i_sb, (char *)
++                                              &sdire, next_block, next_offset,
++                                              sizeof(sdire), &next_block,
++                                              &next_offset))
++                                      goto failed_read;
++                              
++                              length += sizeof(sdire);
++                              SQUASHFS_SWAP_DIR_ENTRY_2(dire, &sdire);
++                      } else {
++                              if (!squashfs_get_cached_block(i->i_sb, (char *)
++                                              dire, next_block, next_offset,
++                                              sizeof(*dire), &next_block,
++                                              &next_offset))
++                                      goto failed_read;
++
++                              length += sizeof(*dire);
++                      }
++
++                      if (!squashfs_get_cached_block(i->i_sb, dire->name,
++                                              next_block, next_offset,
++                                              dire->size + 1, &next_block,
++                                              &next_offset))
++                              goto failed_read;
++
++                      length += dire->size + 1;
++
++                      if (file->f_pos >= length)
++                              continue;
++
++                      dire->name[dire->size + 1] = '\0';
++
++                      TRACE("Calling filldir(%x, %s, %d, %d, %x:%x, %d)\n",
++                                      (unsigned int) dirent, dire->name,
++                                      dire->size + 1, (int) file->f_pos,
++                                      dirh.start_block, dire->offset,
++                                      squashfs_filetype_table[dire->type]);
++
++                      if (filldir(dirent, dire->name, dire->size + 1,
++                                      file->f_pos, SQUASHFS_MK_VFS_INODE(
++                                      dirh.start_block, dire->offset),
++                                      squashfs_filetype_table[dire->type])
++                                      < 0) {
++                              TRACE("Filldir returned less than 0\n");
++                              goto finish;
++                      }
++                      file->f_pos = length;
++              }
++      }
++
++finish:
++      kfree(dire);
++      return 0;
++
++failed_read:
++      ERROR("Unable to read directory block [%llx:%x]\n", next_block,
++              next_offset);
++      kfree(dire);
++      return 0;
++}
++
++
++static struct dentry *squashfs_lookup_2(struct inode *i, struct dentry *dentry,
++                              struct nameidata *nd)
++{
++      const unsigned char *name = dentry->d_name.name;
++      int len = dentry->d_name.len;
++      struct inode *inode = NULL;
++      struct squashfs_sb_info *msblk = i->i_sb->s_fs_info;
++      struct squashfs_super_block *sblk = &msblk->sblk;
++      long long next_block = SQUASHFS_I(i)->start_block +
++                              sblk->directory_table_start;
++      int next_offset = SQUASHFS_I(i)->offset, length = 0,
++                              dir_count;
++      struct squashfs_dir_header_2 dirh;
++      struct squashfs_dir_entry_2 *dire;
++      int sorted = sblk->s_major == 2 && sblk->s_minor >= 1;
++
++      TRACE("Entered squashfs_lookup_2 [%llx:%x]\n", next_block, next_offset);
++
++      if (!(dire = kmalloc(sizeof(struct squashfs_dir_entry) +
++              SQUASHFS_NAME_LEN + 1, GFP_KERNEL))) {
++              ERROR("Failed to allocate squashfs_dir_entry\n");
++              goto exit_loop;
++      }
++
++      if (len > SQUASHFS_NAME_LEN)
++              goto exit_loop;
++
++      length = get_dir_index_using_name(i->i_sb, &next_block, &next_offset,
++                              SQUASHFS_I(i)->u.s2.directory_index_start,
++                              SQUASHFS_I(i)->u.s2.directory_index_offset,
++                              SQUASHFS_I(i)->u.s2.directory_index_count, name,
++                              len);
++
++      while (length < i_size_read(i)) {
++              /* read directory header */
++              if (msblk->swap) {
++                      struct squashfs_dir_header_2 sdirh;
++                      if (!squashfs_get_cached_block(i->i_sb, (char *) &sdirh,
++                                      next_block, next_offset, sizeof(sdirh),
++                                      &next_block, &next_offset))
++                              goto failed_read;
++
++                      length += sizeof(sdirh);
++                      SQUASHFS_SWAP_DIR_HEADER_2(&dirh, &sdirh);
++              } else {
++                      if (!squashfs_get_cached_block(i->i_sb, (char *) &dirh,
++                                      next_block, next_offset, sizeof(dirh),
++                                      &next_block, &next_offset))
++                              goto failed_read;
++
++                      length += sizeof(dirh);
++              }
++
++              dir_count = dirh.count + 1;
++              while (dir_count--) {
++                      if (msblk->swap) {
++                              struct squashfs_dir_entry_2 sdire;
++                              if (!squashfs_get_cached_block(i->i_sb, (char *)
++                                              &sdire, next_block,next_offset,
++                                              sizeof(sdire), &next_block,
++                                              &next_offset))
++                                      goto failed_read;
++                              
++                              length += sizeof(sdire);
++                              SQUASHFS_SWAP_DIR_ENTRY_2(dire, &sdire);
++                      } else {
++                              if (!squashfs_get_cached_block(i->i_sb, (char *)
++                                              dire, next_block,next_offset,
++                                              sizeof(*dire), &next_block,
++                                              &next_offset))
++                                      goto failed_read;
++
++                              length += sizeof(*dire);
++                      }
++
++                      if (!squashfs_get_cached_block(i->i_sb, dire->name,
++                                      next_block, next_offset, dire->size + 1,
++                                      &next_block, &next_offset))
++                              goto failed_read;
++
++                      length += dire->size + 1;
++
++                      if (sorted && name[0] < dire->name[0])
++                              goto exit_loop;
++
++                      if ((len == dire->size + 1) && !strncmp(name,
++                                              dire->name, len)) {
++                              squashfs_inode_t ino =
++                                      SQUASHFS_MKINODE(dirh.start_block,
++                                      dire->offset);
++                              unsigned int inode_number = SQUASHFS_MK_VFS_INODE(dirh.start_block,
++                                      dire->offset);
++
++                              TRACE("calling squashfs_iget for directory "
++                                      "entry %s, inode %x:%x, %lld\n", name,
++                                      dirh.start_block, dire->offset, ino);
++
++                              inode = squashfs_iget(i->i_sb, ino, inode_number);
++
++                              goto exit_loop;
++                      }
++              }
++      }
++
++exit_loop:
++      kfree(dire);
++      d_add(dentry, inode);
++      return ERR_PTR(0);
++
++failed_read:
++      ERROR("Unable to read directory block [%llx:%x]\n", next_block,
++              next_offset);
++      goto exit_loop;
++}
++
++
++int squashfs_2_0_supported(struct squashfs_sb_info *msblk)
++{
++      struct squashfs_super_block *sblk = &msblk->sblk;
++
++      msblk->read_inode = squashfs_read_inode_2;
++      msblk->read_fragment_index_table = read_fragment_index_table_2;
++
++      sblk->bytes_used = sblk->bytes_used_2;
++      sblk->uid_start = sblk->uid_start_2;
++      sblk->guid_start = sblk->guid_start_2;
++      sblk->inode_table_start = sblk->inode_table_start_2;
++      sblk->directory_table_start = sblk->directory_table_start_2;
++      sblk->fragment_table_start = sblk->fragment_table_start_2;
++
++      return 1;
++}
+--- /dev/null
++++ kernel-power-2.6.28/include/linux/squashfs_fs.h
+@@ -0,0 +1,935 @@
++#ifndef SQUASHFS_FS
++#define SQUASHFS_FS
++
++/*
++ * Squashfs
++ *
++ * Copyright (c) 2002, 2003, 2004, 2005, 2006, 2007, 2008
++ * Phillip Lougher <phillip@lougher.demon.co.uk>
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License
++ * as published by the Free Software Foundation; either version 2,
++ * or (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
++ *
++ * squashfs_fs.h
++ */
++
++#ifndef CONFIG_SQUASHFS_2_0_COMPATIBILITY
++#define CONFIG_SQUASHFS_2_0_COMPATIBILITY
++#endif
++
++#define SQUASHFS_CACHED_FRAGMENTS     CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE     
++#define SQUASHFS_MAJOR                        3
++#define SQUASHFS_MINOR                        1
++#define SQUASHFS_MAGIC                        0x73717368
++#define SQUASHFS_MAGIC_SWAP           0x68737173
++#define SQUASHFS_START                        0
++
++/* size of metadata (inode and directory) blocks */
++#define SQUASHFS_METADATA_SIZE                8192
++#define SQUASHFS_METADATA_LOG         13
++
++/* default size of data blocks */
++#define SQUASHFS_FILE_SIZE            131072
++#define SQUASHFS_FILE_LOG             17
++
++#define SQUASHFS_FILE_MAX_SIZE                1048576
++
++/* Max number of uids and gids */
++#define SQUASHFS_UIDS                 256
++#define SQUASHFS_GUIDS                        255
++
++/* Max length of filename (not 255) */
++#define SQUASHFS_NAME_LEN             256
++
++#define SQUASHFS_INVALID              ((long long) 0xffffffffffff)
++#define SQUASHFS_INVALID_FRAG         ((unsigned int) 0xffffffff)
++#define SQUASHFS_INVALID_BLK          ((long long) -1)
++#define SQUASHFS_USED_BLK             ((long long) -2)
++
++/* Filesystem flags */
++#define SQUASHFS_NOI                  0
++#define SQUASHFS_NOD                  1
++#define SQUASHFS_CHECK                        2
++#define SQUASHFS_NOF                  3
++#define SQUASHFS_NO_FRAG              4
++#define SQUASHFS_ALWAYS_FRAG          5
++#define SQUASHFS_DUPLICATE            6
++#define SQUASHFS_EXPORT                       7
++
++#define SQUASHFS_BIT(flag, bit)               ((flag >> bit) & 1)
++
++#define SQUASHFS_UNCOMPRESSED_INODES(flags)   SQUASHFS_BIT(flags, \
++                                              SQUASHFS_NOI)
++
++#define SQUASHFS_UNCOMPRESSED_DATA(flags)     SQUASHFS_BIT(flags, \
++                                              SQUASHFS_NOD)
++
++#define SQUASHFS_UNCOMPRESSED_FRAGMENTS(flags)        SQUASHFS_BIT(flags, \
++                                              SQUASHFS_NOF)
++
++#define SQUASHFS_NO_FRAGMENTS(flags)          SQUASHFS_BIT(flags, \
++                                              SQUASHFS_NO_FRAG)
++
++#define SQUASHFS_ALWAYS_FRAGMENTS(flags)      SQUASHFS_BIT(flags, \
++                                              SQUASHFS_ALWAYS_FRAG)
++
++#define SQUASHFS_DUPLICATES(flags)            SQUASHFS_BIT(flags, \
++                                              SQUASHFS_DUPLICATE)
++
++#define SQUASHFS_EXPORTABLE(flags)            SQUASHFS_BIT(flags, \
++                                              SQUASHFS_EXPORT)
++
++#define SQUASHFS_CHECK_DATA(flags)            SQUASHFS_BIT(flags, \
++                                              SQUASHFS_CHECK)
++
++#define SQUASHFS_MKFLAGS(noi, nod, check_data, nof, no_frag, always_frag, \
++              duplicate_checking, exportable) (noi | (nod << 1) | (check_data << 2) \
++              | (nof << 3) | (no_frag << 4) | (always_frag << 5) | \
++              (duplicate_checking << 6) | (exportable << 7))
++
++/* Max number of types and file types */
++#define SQUASHFS_DIR_TYPE             1
++#define SQUASHFS_FILE_TYPE            2
++#define SQUASHFS_SYMLINK_TYPE         3
++#define SQUASHFS_BLKDEV_TYPE          4
++#define SQUASHFS_CHRDEV_TYPE          5
++#define SQUASHFS_FIFO_TYPE            6
++#define SQUASHFS_SOCKET_TYPE          7
++#define SQUASHFS_LDIR_TYPE            8
++#define SQUASHFS_LREG_TYPE            9
++
++/* 1.0 filesystem type definitions */
++#define SQUASHFS_TYPES                        5
++#define SQUASHFS_IPC_TYPE             0
++
++/* Flag whether block is compressed or uncompressed, bit is set if block is
++ * uncompressed */
++#define SQUASHFS_COMPRESSED_BIT               (1 << 15)
++
++#define SQUASHFS_COMPRESSED_SIZE(B)   (((B) & ~SQUASHFS_COMPRESSED_BIT) ? \
++              (B) & ~SQUASHFS_COMPRESSED_BIT :  SQUASHFS_COMPRESSED_BIT)
++
++#define SQUASHFS_COMPRESSED(B)                (!((B) & SQUASHFS_COMPRESSED_BIT))
++
++#define SQUASHFS_COMPRESSED_BIT_BLOCK         (1 << 24)
++
++#define SQUASHFS_COMPRESSED_SIZE_BLOCK(B)     ((B) & \
++      ~SQUASHFS_COMPRESSED_BIT_BLOCK)
++
++#define SQUASHFS_COMPRESSED_BLOCK(B)  (!((B) & SQUASHFS_COMPRESSED_BIT_BLOCK))
++
++/*
++ * Inode number ops.  Inodes consist of a compressed block number, and an
++ * uncompressed  offset within that block
++ */
++#define SQUASHFS_INODE_BLK(a)         ((unsigned int) ((a) >> 16))
++
++#define SQUASHFS_INODE_OFFSET(a)      ((unsigned int) ((a) & 0xffff))
++
++#define SQUASHFS_MKINODE(A, B)                ((squashfs_inode_t)(((squashfs_inode_t) (A)\
++                                      << 16) + (B)))
++
++/* Compute 32 bit VFS inode number from squashfs inode number */
++#define SQUASHFS_MK_VFS_INODE(a, b)   ((unsigned int) (((a) << 8) + \
++                                      ((b) >> 2) + 1))
++/* XXX */
++
++/* Translate between VFS mode and squashfs mode */
++#define SQUASHFS_MODE(a)              ((a) & 0xfff)
++
++/* fragment and fragment table defines */
++#define SQUASHFS_FRAGMENT_BYTES(A)    ((A) * sizeof(struct squashfs_fragment_entry))
++
++#define SQUASHFS_FRAGMENT_INDEX(A)    (SQUASHFS_FRAGMENT_BYTES(A) / \
++                                      SQUASHFS_METADATA_SIZE)
++
++#define SQUASHFS_FRAGMENT_INDEX_OFFSET(A)     (SQUASHFS_FRAGMENT_BYTES(A) % \
++                                              SQUASHFS_METADATA_SIZE)
++
++#define SQUASHFS_FRAGMENT_INDEXES(A)  ((SQUASHFS_FRAGMENT_BYTES(A) + \
++                                      SQUASHFS_METADATA_SIZE - 1) / \
++                                      SQUASHFS_METADATA_SIZE)
++
++#define SQUASHFS_FRAGMENT_INDEX_BYTES(A)      (SQUASHFS_FRAGMENT_INDEXES(A) *\
++                                              sizeof(long long))
++
++/* inode lookup table defines */
++#define SQUASHFS_LOOKUP_BYTES(A)      ((A) * sizeof(squashfs_inode_t))
++
++#define SQUASHFS_LOOKUP_BLOCK(A)              (SQUASHFS_LOOKUP_BYTES(A) / \
++                                              SQUASHFS_METADATA_SIZE)
++
++#define SQUASHFS_LOOKUP_BLOCK_OFFSET(A)               (SQUASHFS_LOOKUP_BYTES(A) % \
++                                              SQUASHFS_METADATA_SIZE)
++
++#define SQUASHFS_LOOKUP_BLOCKS(A)     ((SQUASHFS_LOOKUP_BYTES(A) + \
++                                      SQUASHFS_METADATA_SIZE - 1) / \
++                                      SQUASHFS_METADATA_SIZE)
++
++#define SQUASHFS_LOOKUP_BLOCK_BYTES(A)        (SQUASHFS_LOOKUP_BLOCKS(A) *\
++                                      sizeof(long long))
++
++/* cached data constants for filesystem */
++#define SQUASHFS_CACHED_BLKS          8
++
++#define SQUASHFS_MAX_FILE_SIZE_LOG    64
++
++#define SQUASHFS_MAX_FILE_SIZE                ((long long) 1 << \
++                                      (SQUASHFS_MAX_FILE_SIZE_LOG - 2))
++
++#define SQUASHFS_MARKER_BYTE          0xff
++
++/* meta index cache */
++#define SQUASHFS_META_INDEXES (SQUASHFS_METADATA_SIZE / sizeof(unsigned int))
++#define SQUASHFS_META_ENTRIES 31
++#define SQUASHFS_META_NUMBER  8
++#define SQUASHFS_SLOTS                4
++
++struct meta_entry {
++      long long               data_block;
++      unsigned int            index_block;
++      unsigned short          offset;
++      unsigned short          pad;
++};
++
++struct meta_index {
++      unsigned int            inode_number;
++      unsigned int            offset;
++      unsigned short          entries;
++      unsigned short          skip;
++      unsigned short          locked;
++      unsigned short          pad;
++      struct meta_entry       meta_entry[SQUASHFS_META_ENTRIES];
++};
++
++
++/*
++ * definitions for structures on disk
++ */
++
++typedef long long             squashfs_block_t;
++typedef long long             squashfs_inode_t;
++
++struct squashfs_super_block {
++      unsigned int            s_magic;
++      unsigned int            inodes;
++      unsigned int            bytes_used_2;
++      unsigned int            uid_start_2;
++      unsigned int            guid_start_2;
++      unsigned int            inode_table_start_2;
++      unsigned int            directory_table_start_2;
++      unsigned int            s_major:16;
++      unsigned int            s_minor:16;
++      unsigned int            block_size_1:16;
++      unsigned int            block_log:16;
++      unsigned int            flags:8;
++      unsigned int            no_uids:8;
++      unsigned int            no_guids:8;
++      unsigned int            mkfs_time /* time of filesystem creation */;
++      squashfs_inode_t        root_inode;
++      unsigned int            block_size;
++      unsigned int            fragments;
++      unsigned int            fragment_table_start_2;
++      long long               bytes_used;
++      long long               uid_start;
++      long long               guid_start;
++      long long               inode_table_start;
++      long long               directory_table_start;
++      long long               fragment_table_start;
++      long long               lookup_table_start;
++} __attribute__ ((packed));
++
++struct squashfs_dir_index {
++      unsigned int            index;
++      unsigned int            start_block;
++      unsigned char           size;
++      unsigned char           name[0];
++} __attribute__ ((packed));
++
++#define SQUASHFS_BASE_INODE_HEADER            \
++      unsigned int            inode_type:4;   \
++      unsigned int            mode:12;        \
++      unsigned int            uid:8;          \
++      unsigned int            guid:8;         \
++      unsigned int            mtime;          \
++      unsigned int            inode_number;
++
++struct squashfs_base_inode_header {
++      SQUASHFS_BASE_INODE_HEADER;
++} __attribute__ ((packed));
++
++struct squashfs_ipc_inode_header {
++      SQUASHFS_BASE_INODE_HEADER;
++      unsigned int            nlink;
++} __attribute__ ((packed));
++
++struct squashfs_dev_inode_header {
++      SQUASHFS_BASE_INODE_HEADER;
++      unsigned int            nlink;
++      unsigned short          rdev;
++} __attribute__ ((packed));
++      
++struct squashfs_symlink_inode_header {
++      SQUASHFS_BASE_INODE_HEADER;
++      unsigned int            nlink;
++      unsigned short          symlink_size;
++      char                    symlink[0];
++} __attribute__ ((packed));
++
++struct squashfs_reg_inode_header {
++      SQUASHFS_BASE_INODE_HEADER;
++      squashfs_block_t        start_block;
++      unsigned int            fragment;
++      unsigned int            offset;
++      unsigned int            file_size;
++      unsigned short          block_list[0];
++} __attribute__ ((packed));
++
++struct squashfs_lreg_inode_header {
++      SQUASHFS_BASE_INODE_HEADER;
++      unsigned int            nlink;
++      squashfs_block_t        start_block;
++      unsigned int            fragment;
++      unsigned int            offset;
++      long long               file_size;
++      unsigned short          block_list[0];
++} __attribute__ ((packed));
++
++struct squashfs_dir_inode_header {
++      SQUASHFS_BASE_INODE_HEADER;
++      unsigned int            nlink;
++      unsigned int            file_size:19;
++      unsigned int            offset:13;
++      unsigned int            start_block;
++      unsigned int            parent_inode;
++} __attribute__  ((packed));
++
++struct squashfs_ldir_inode_header {
++      SQUASHFS_BASE_INODE_HEADER;
++      unsigned int            nlink;
++      unsigned int            file_size:27;
++      unsigned int            offset:13;
++      unsigned int            start_block;
++      unsigned int            i_count:16;
++      unsigned int            parent_inode;
++      struct squashfs_dir_index       index[0];
++} __attribute__  ((packed));
++
++union squashfs_inode_header {
++      struct squashfs_base_inode_header       base;
++      struct squashfs_dev_inode_header        dev;
++      struct squashfs_symlink_inode_header    symlink;
++      struct squashfs_reg_inode_header        reg;
++      struct squashfs_lreg_inode_header       lreg;
++      struct squashfs_dir_inode_header        dir;
++      struct squashfs_ldir_inode_header       ldir;
++      struct squashfs_ipc_inode_header        ipc;
++};
++      
++struct squashfs_dir_entry {
++      unsigned int            offset:13;
++      unsigned int            type:3;
++      unsigned int            size:8;
++      int                     inode_number:16;
++      char                    name[0];
++} __attribute__ ((packed));
++
++struct squashfs_dir_header {
++      unsigned int            count:8;
++      unsigned int            start_block;
++      unsigned int            inode_number;
++} __attribute__ ((packed));
++
++struct squashfs_fragment_entry {
++      long long               start_block;
++      unsigned int            size;
++      unsigned int            unused;
++} __attribute__ ((packed));
++
++extern int squashfs_uncompress_block(void *d, int dstlen, void *s, int srclen);
++extern int squashfs_uncompress_init(void);
++extern int squashfs_uncompress_exit(void);
++
++/*
++ * macros to convert each packed bitfield structure from little endian to big
++ * endian and vice versa.  These are needed when creating or using a filesystem
++ * on a machine with different byte ordering to the target architecture.
++ *
++ */
++
++#define SQUASHFS_SWAP_START \
++      int bits;\
++      int b_pos;\
++      unsigned long long val;\
++      unsigned char *s;\
++      unsigned char *d;
++
++#define SQUASHFS_SWAP_SUPER_BLOCK(s, d) {\
++      SQUASHFS_SWAP_START\
++      SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_super_block));\
++      SQUASHFS_SWAP((s)->s_magic, d, 0, 32);\
++      SQUASHFS_SWAP((s)->inodes, d, 32, 32);\
++      SQUASHFS_SWAP((s)->bytes_used_2, d, 64, 32);\
++      SQUASHFS_SWAP((s)->uid_start_2, d, 96, 32);\
++      SQUASHFS_SWAP((s)->guid_start_2, d, 128, 32);\
++      SQUASHFS_SWAP((s)->inode_table_start_2, d, 160, 32);\
++      SQUASHFS_SWAP((s)->directory_table_start_2, d, 192, 32);\
++      SQUASHFS_SWAP((s)->s_major, d, 224, 16);\
++      SQUASHFS_SWAP((s)->s_minor, d, 240, 16);\
++      SQUASHFS_SWAP((s)->block_size_1, d, 256, 16);\
++      SQUASHFS_SWAP((s)->block_log, d, 272, 16);\
++      SQUASHFS_SWAP((s)->flags, d, 288, 8);\
++      SQUASHFS_SWAP((s)->no_uids, d, 296, 8);\
++      SQUASHFS_SWAP((s)->no_guids, d, 304, 8);\
++      SQUASHFS_SWAP((s)->mkfs_time, d, 312, 32);\
++      SQUASHFS_SWAP((s)->root_inode, d, 344, 64);\
++      SQUASHFS_SWAP((s)->block_size, d, 408, 32);\
++      SQUASHFS_SWAP((s)->fragments, d, 440, 32);\
++      SQUASHFS_SWAP((s)->fragment_table_start_2, d, 472, 32);\
++      SQUASHFS_SWAP((s)->bytes_used, d, 504, 64);\
++      SQUASHFS_SWAP((s)->uid_start, d, 568, 64);\
++      SQUASHFS_SWAP((s)->guid_start, d, 632, 64);\
++      SQUASHFS_SWAP((s)->inode_table_start, d, 696, 64);\
++      SQUASHFS_SWAP((s)->directory_table_start, d, 760, 64);\
++      SQUASHFS_SWAP((s)->fragment_table_start, d, 824, 64);\
++      SQUASHFS_SWAP((s)->lookup_table_start, d, 888, 64);\
++}
++
++#define SQUASHFS_SWAP_BASE_INODE_CORE(s, d, n)\
++      SQUASHFS_MEMSET(s, d, n);\
++      SQUASHFS_SWAP((s)->inode_type, d, 0, 4);\
++      SQUASHFS_SWAP((s)->mode, d, 4, 12);\
++      SQUASHFS_SWAP((s)->uid, d, 16, 8);\
++      SQUASHFS_SWAP((s)->guid, d, 24, 8);\
++      SQUASHFS_SWAP((s)->mtime, d, 32, 32);\
++      SQUASHFS_SWAP((s)->inode_number, d, 64, 32);
++
++#define SQUASHFS_SWAP_BASE_INODE_HEADER(s, d, n) {\
++      SQUASHFS_SWAP_START\
++      SQUASHFS_SWAP_BASE_INODE_CORE(s, d, n)\
++}
++
++#define SQUASHFS_SWAP_IPC_INODE_HEADER(s, d) {\
++      SQUASHFS_SWAP_START\
++      SQUASHFS_SWAP_BASE_INODE_CORE(s, d, \
++                      sizeof(struct squashfs_ipc_inode_header))\
++      SQUASHFS_SWAP((s)->nlink, d, 96, 32);\
++}
++
++#define SQUASHFS_SWAP_DEV_INODE_HEADER(s, d) {\
++      SQUASHFS_SWAP_START\
++      SQUASHFS_SWAP_BASE_INODE_CORE(s, d, \
++                      sizeof(struct squashfs_dev_inode_header)); \
++      SQUASHFS_SWAP((s)->nlink, d, 96, 32);\
++      SQUASHFS_SWAP((s)->rdev, d, 128, 16);\
++}
++
++#define SQUASHFS_SWAP_SYMLINK_INODE_HEADER(s, d) {\
++      SQUASHFS_SWAP_START\
++      SQUASHFS_SWAP_BASE_INODE_CORE(s, d, \
++                      sizeof(struct squashfs_symlink_inode_header));\
++      SQUASHFS_SWAP((s)->nlink, d, 96, 32);\
++      SQUASHFS_SWAP((s)->symlink_size, d, 128, 16);\
++}
++
++#define SQUASHFS_SWAP_REG_INODE_HEADER(s, d) {\
++      SQUASHFS_SWAP_START\
++      SQUASHFS_SWAP_BASE_INODE_CORE(s, d, \
++                      sizeof(struct squashfs_reg_inode_header));\
++      SQUASHFS_SWAP((s)->start_block, d, 96, 64);\
++      SQUASHFS_SWAP((s)->fragment, d, 160, 32);\
++      SQUASHFS_SWAP((s)->offset, d, 192, 32);\
++      SQUASHFS_SWAP((s)->file_size, d, 224, 32);\
++}
++
++#define SQUASHFS_SWAP_LREG_INODE_HEADER(s, d) {\
++      SQUASHFS_SWAP_START\
++      SQUASHFS_SWAP_BASE_INODE_CORE(s, d, \
++                      sizeof(struct squashfs_lreg_inode_header));\
++      SQUASHFS_SWAP((s)->nlink, d, 96, 32);\
++      SQUASHFS_SWAP((s)->start_block, d, 128, 64);\
++      SQUASHFS_SWAP((s)->fragment, d, 192, 32);\
++      SQUASHFS_SWAP((s)->offset, d, 224, 32);\
++      SQUASHFS_SWAP((s)->file_size, d, 256, 64);\
++}
++
++#define SQUASHFS_SWAP_DIR_INODE_HEADER(s, d) {\
++      SQUASHFS_SWAP_START\
++      SQUASHFS_SWAP_BASE_INODE_CORE(s, d, \
++                      sizeof(struct squashfs_dir_inode_header));\
++      SQUASHFS_SWAP((s)->nlink, d, 96, 32);\
++      SQUASHFS_SWAP((s)->file_size, d, 128, 19);\
++      SQUASHFS_SWAP((s)->offset, d, 147, 13);\
++      SQUASHFS_SWAP((s)->start_block, d, 160, 32);\
++      SQUASHFS_SWAP((s)->parent_inode, d, 192, 32);\
++}
++
++#define SQUASHFS_SWAP_LDIR_INODE_HEADER(s, d) {\
++      SQUASHFS_SWAP_START\
++      SQUASHFS_SWAP_BASE_INODE_CORE(s, d, \
++                      sizeof(struct squashfs_ldir_inode_header));\
++      SQUASHFS_SWAP((s)->nlink, d, 96, 32);\
++      SQUASHFS_SWAP((s)->file_size, d, 128, 27);\
++      SQUASHFS_SWAP((s)->offset, d, 155, 13);\
++      SQUASHFS_SWAP((s)->start_block, d, 168, 32);\
++      SQUASHFS_SWAP((s)->i_count, d, 200, 16);\
++      SQUASHFS_SWAP((s)->parent_inode, d, 216, 32);\
++}
++
++#define SQUASHFS_SWAP_DIR_INDEX(s, d) {\
++      SQUASHFS_SWAP_START\
++      SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_dir_index));\
++      SQUASHFS_SWAP((s)->index, d, 0, 32);\
++      SQUASHFS_SWAP((s)->start_block, d, 32, 32);\
++      SQUASHFS_SWAP((s)->size, d, 64, 8);\
++}
++
++#define SQUASHFS_SWAP_DIR_HEADER(s, d) {\
++      SQUASHFS_SWAP_START\
++      SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_dir_header));\
++      SQUASHFS_SWAP((s)->count, d, 0, 8);\
++      SQUASHFS_SWAP((s)->start_block, d, 8, 32);\
++      SQUASHFS_SWAP((s)->inode_number, d, 40, 32);\
++}
++
++#define SQUASHFS_SWAP_DIR_ENTRY(s, d) {\
++      SQUASHFS_SWAP_START\
++      SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_dir_entry));\
++      SQUASHFS_SWAP((s)->offset, d, 0, 13);\
++      SQUASHFS_SWAP((s)->type, d, 13, 3);\
++      SQUASHFS_SWAP((s)->size, d, 16, 8);\
++      SQUASHFS_SWAP((s)->inode_number, d, 24, 16);\
++}
++
++#define SQUASHFS_SWAP_FRAGMENT_ENTRY(s, d) {\
++      SQUASHFS_SWAP_START\
++      SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_fragment_entry));\
++      SQUASHFS_SWAP((s)->start_block, d, 0, 64);\
++      SQUASHFS_SWAP((s)->size, d, 64, 32);\
++}
++
++#define SQUASHFS_SWAP_INODE_T(s, d) SQUASHFS_SWAP_LONG_LONGS(s, d, 1)
++
++#define SQUASHFS_SWAP_SHORTS(s, d, n) {\
++      int entry;\
++      int bit_position;\
++      SQUASHFS_SWAP_START\
++      SQUASHFS_MEMSET(s, d, n * 2);\
++      for(entry = 0, bit_position = 0; entry < n; entry++, bit_position += \
++                      16)\
++              SQUASHFS_SWAP(s[entry], d, bit_position, 16);\
++}
++
++#define SQUASHFS_SWAP_INTS(s, d, n) {\
++      int entry;\
++      int bit_position;\
++      SQUASHFS_SWAP_START\
++      SQUASHFS_MEMSET(s, d, n * 4);\
++      for(entry = 0, bit_position = 0; entry < n; entry++, bit_position += \
++                      32)\
++              SQUASHFS_SWAP(s[entry], d, bit_position, 32);\
++}
++
++#define SQUASHFS_SWAP_LONG_LONGS(s, d, n) {\
++      int entry;\
++      int bit_position;\
++      SQUASHFS_SWAP_START\
++      SQUASHFS_MEMSET(s, d, n * 8);\
++      for(entry = 0, bit_position = 0; entry < n; entry++, bit_position += \
++                      64)\
++              SQUASHFS_SWAP(s[entry], d, bit_position, 64);\
++}
++
++#define SQUASHFS_SWAP_DATA(s, d, n, bits) {\
++      int entry;\
++      int bit_position;\
++      SQUASHFS_SWAP_START\
++      SQUASHFS_MEMSET(s, d, n * bits / 8);\
++      for(entry = 0, bit_position = 0; entry < n; entry++, bit_position += \
++                      bits)\
++              SQUASHFS_SWAP(s[entry], d, bit_position, bits);\
++}
++
++#define SQUASHFS_SWAP_FRAGMENT_INDEXES(s, d, n) SQUASHFS_SWAP_LONG_LONGS(s, d, n)
++#define SQUASHFS_SWAP_LOOKUP_BLOCKS(s, d, n) SQUASHFS_SWAP_LONG_LONGS(s, d, n)
++
++#ifdef CONFIG_SQUASHFS_1_0_COMPATIBILITY
++
++struct squashfs_base_inode_header_1 {
++      unsigned int            inode_type:4;
++      unsigned int            mode:12; /* protection */
++      unsigned int            uid:4; /* index into uid table */
++      unsigned int            guid:4; /* index into guid table */
++} __attribute__ ((packed));
++
++struct squashfs_ipc_inode_header_1 {
++      unsigned int            inode_type:4;
++      unsigned int            mode:12; /* protection */
++      unsigned int            uid:4; /* index into uid table */
++      unsigned int            guid:4; /* index into guid table */
++      unsigned int            type:4;
++      unsigned int            offset:4;
++} __attribute__ ((packed));
++
++struct squashfs_dev_inode_header_1 {
++      unsigned int            inode_type:4;
++      unsigned int            mode:12; /* protection */
++      unsigned int            uid:4; /* index into uid table */
++      unsigned int            guid:4; /* index into guid table */
++      unsigned short          rdev;
++} __attribute__ ((packed));
++      
++struct squashfs_symlink_inode_header_1 {
++      unsigned int            inode_type:4;
++      unsigned int            mode:12; /* protection */
++      unsigned int            uid:4; /* index into uid table */
++      unsigned int            guid:4; /* index into guid table */
++      unsigned short          symlink_size;
++      char                    symlink[0];
++} __attribute__ ((packed));
++
++struct squashfs_reg_inode_header_1 {
++      unsigned int            inode_type:4;
++      unsigned int            mode:12; /* protection */
++      unsigned int            uid:4; /* index into uid table */
++      unsigned int            guid:4; /* index into guid table */
++      unsigned int            mtime;
++      unsigned int            start_block;
++      unsigned int            file_size:32;
++      unsigned short          block_list[0];
++} __attribute__ ((packed));
++
++struct squashfs_dir_inode_header_1 {
++      unsigned int            inode_type:4;
++      unsigned int            mode:12; /* protection */
++      unsigned int            uid:4; /* index into uid table */
++      unsigned int            guid:4; /* index into guid table */
++      unsigned int            file_size:19;
++      unsigned int            offset:13;
++      unsigned int            mtime;
++      unsigned int            start_block:24;
++} __attribute__  ((packed));
++
++union squashfs_inode_header_1 {
++      struct squashfs_base_inode_header_1     base;
++      struct squashfs_dev_inode_header_1      dev;
++      struct squashfs_symlink_inode_header_1  symlink;
++      struct squashfs_reg_inode_header_1      reg;
++      struct squashfs_dir_inode_header_1      dir;
++      struct squashfs_ipc_inode_header_1      ipc;
++};
++
++#define SQUASHFS_SWAP_BASE_INODE_CORE_1(s, d, n) \
++      SQUASHFS_MEMSET(s, d, n);\
++      SQUASHFS_SWAP((s)->inode_type, d, 0, 4);\
++      SQUASHFS_SWAP((s)->mode, d, 4, 12);\
++      SQUASHFS_SWAP((s)->uid, d, 16, 4);\
++      SQUASHFS_SWAP((s)->guid, d, 20, 4);
++
++#define SQUASHFS_SWAP_BASE_INODE_HEADER_1(s, d, n) {\
++      SQUASHFS_SWAP_START\
++      SQUASHFS_SWAP_BASE_INODE_CORE_1(s, d, n)\
++}
++
++#define SQUASHFS_SWAP_IPC_INODE_HEADER_1(s, d) {\
++      SQUASHFS_SWAP_START\
++      SQUASHFS_SWAP_BASE_INODE_CORE_1(s, d, \
++                      sizeof(struct squashfs_ipc_inode_header_1));\
++      SQUASHFS_SWAP((s)->type, d, 24, 4);\
++      SQUASHFS_SWAP((s)->offset, d, 28, 4);\
++}
++
++#define SQUASHFS_SWAP_DEV_INODE_HEADER_1(s, d) {\
++      SQUASHFS_SWAP_START\
++      SQUASHFS_SWAP_BASE_INODE_CORE_1(s, d, \
++                      sizeof(struct squashfs_dev_inode_header_1));\
++      SQUASHFS_SWAP((s)->rdev, d, 24, 16);\
++}
++
++#define SQUASHFS_SWAP_SYMLINK_INODE_HEADER_1(s, d) {\
++      SQUASHFS_SWAP_START\
++      SQUASHFS_SWAP_BASE_INODE_CORE_1(s, d, \
++                      sizeof(struct squashfs_symlink_inode_header_1));\
++      SQUASHFS_SWAP((s)->symlink_size, d, 24, 16);\
++}
++
++#define SQUASHFS_SWAP_REG_INODE_HEADER_1(s, d) {\
++      SQUASHFS_SWAP_START\
++      SQUASHFS_SWAP_BASE_INODE_CORE_1(s, d, \
++                      sizeof(struct squashfs_reg_inode_header_1));\
++      SQUASHFS_SWAP((s)->mtime, d, 24, 32);\
++      SQUASHFS_SWAP((s)->start_block, d, 56, 32);\
++      SQUASHFS_SWAP((s)->file_size, d, 88, 32);\
++}
++
++#define SQUASHFS_SWAP_DIR_INODE_HEADER_1(s, d) {\
++      SQUASHFS_SWAP_START\
++      SQUASHFS_SWAP_BASE_INODE_CORE_1(s, d, \
++                      sizeof(struct squashfs_dir_inode_header_1));\
++      SQUASHFS_SWAP((s)->file_size, d, 24, 19);\
++      SQUASHFS_SWAP((s)->offset, d, 43, 13);\
++      SQUASHFS_SWAP((s)->mtime, d, 56, 32);\
++      SQUASHFS_SWAP((s)->start_block, d, 88, 24);\
++}
++
++#endif
++
++#ifdef CONFIG_SQUASHFS_2_0_COMPATIBILITY
++
++struct squashfs_dir_index_2 {
++      unsigned int            index:27;
++      unsigned int            start_block:29;
++      unsigned char           size;
++      unsigned char           name[0];
++} __attribute__ ((packed));
++
++struct squashfs_base_inode_header_2 {
++      unsigned int            inode_type:4;
++      unsigned int            mode:12; /* protection */
++      unsigned int            uid:8; /* index into uid table */
++      unsigned int            guid:8; /* index into guid table */
++} __attribute__ ((packed));
++
++struct squashfs_ipc_inode_header_2 {
++      unsigned int            inode_type:4;
++      unsigned int            mode:12; /* protection */
++      unsigned int            uid:8; /* index into uid table */
++      unsigned int            guid:8; /* index into guid table */
++} __attribute__ ((packed));
++
++struct squashfs_dev_inode_header_2 {
++      unsigned int            inode_type:4;
++      unsigned int            mode:12; /* protection */
++      unsigned int            uid:8; /* index into uid table */
++      unsigned int            guid:8; /* index into guid table */
++      unsigned short          rdev;
++} __attribute__ ((packed));
++      
++struct squashfs_symlink_inode_header_2 {
++      unsigned int            inode_type:4;
++      unsigned int            mode:12; /* protection */
++      unsigned int            uid:8; /* index into uid table */
++      unsigned int            guid:8; /* index into guid table */
++      unsigned short          symlink_size;
++      char                    symlink[0];
++} __attribute__ ((packed));
++
++struct squashfs_reg_inode_header_2 {
++      unsigned int            inode_type:4;
++      unsigned int            mode:12; /* protection */
++      unsigned int            uid:8; /* index into uid table */
++      unsigned int            guid:8; /* index into guid table */
++      unsigned int            mtime;
++      unsigned int            start_block;
++      unsigned int            fragment;
++      unsigned int            offset;
++      unsigned int            file_size:32;
++      unsigned short          block_list[0];
++} __attribute__ ((packed));
++
++struct squashfs_dir_inode_header_2 {
++      unsigned int            inode_type:4;
++      unsigned int            mode:12; /* protection */
++      unsigned int            uid:8; /* index into uid table */
++      unsigned int            guid:8; /* index into guid table */
++      unsigned int            file_size:19;
++      unsigned int            offset:13;
++      unsigned int            mtime;
++      unsigned int            start_block:24;
++} __attribute__  ((packed));
++
++struct squashfs_ldir_inode_header_2 {
++      unsigned int            inode_type:4;
++      unsigned int            mode:12; /* protection */
++      unsigned int            uid:8; /* index into uid table */
++      unsigned int            guid:8; /* index into guid table */
++      unsigned int            file_size:27;
++      unsigned int            offset:13;
++      unsigned int            mtime;
++      unsigned int            start_block:24;
++      unsigned int            i_count:16;
++      struct squashfs_dir_index_2     index[0];
++} __attribute__  ((packed));
++
++union squashfs_inode_header_2 {
++      struct squashfs_base_inode_header_2     base;
++      struct squashfs_dev_inode_header_2      dev;
++      struct squashfs_symlink_inode_header_2  symlink;
++      struct squashfs_reg_inode_header_2      reg;
++      struct squashfs_dir_inode_header_2      dir;
++      struct squashfs_ldir_inode_header_2     ldir;
++      struct squashfs_ipc_inode_header_2      ipc;
++};
++      
++struct squashfs_dir_header_2 {
++      unsigned int            count:8;
++      unsigned int            start_block:24;
++} __attribute__ ((packed));
++
++struct squashfs_dir_entry_2 {
++      unsigned int            offset:13;
++      unsigned int            type:3;
++      unsigned int            size:8;
++      char                    name[0];
++} __attribute__ ((packed));
++
++struct squashfs_fragment_entry_2 {
++      unsigned int            start_block;
++      unsigned int            size;
++} __attribute__ ((packed));
++
++#define SQUASHFS_SWAP_BASE_INODE_CORE_2(s, d, n)\
++      SQUASHFS_MEMSET(s, d, n);\
++      SQUASHFS_SWAP((s)->inode_type, d, 0, 4);\
++      SQUASHFS_SWAP((s)->mode, d, 4, 12);\
++      SQUASHFS_SWAP((s)->uid, d, 16, 8);\
++      SQUASHFS_SWAP((s)->guid, d, 24, 8);\
++
++#define SQUASHFS_SWAP_BASE_INODE_HEADER_2(s, d, n) {\
++      SQUASHFS_SWAP_START\
++      SQUASHFS_SWAP_BASE_INODE_CORE_2(s, d, n)\
++}
++
++#define SQUASHFS_SWAP_IPC_INODE_HEADER_2(s, d) \
++      SQUASHFS_SWAP_BASE_INODE_HEADER_2(s, d, sizeof(struct squashfs_ipc_inode_header_2))
++
++#define SQUASHFS_SWAP_DEV_INODE_HEADER_2(s, d) {\
++      SQUASHFS_SWAP_START\
++      SQUASHFS_SWAP_BASE_INODE_CORE_2(s, d, \
++                      sizeof(struct squashfs_dev_inode_header_2)); \
++      SQUASHFS_SWAP((s)->rdev, d, 32, 16);\
++}
++
++#define SQUASHFS_SWAP_SYMLINK_INODE_HEADER_2(s, d) {\
++      SQUASHFS_SWAP_START\
++      SQUASHFS_SWAP_BASE_INODE_CORE_2(s, d, \
++                      sizeof(struct squashfs_symlink_inode_header_2));\
++      SQUASHFS_SWAP((s)->symlink_size, d, 32, 16);\
++}
++
++#define SQUASHFS_SWAP_REG_INODE_HEADER_2(s, d) {\
++      SQUASHFS_SWAP_START\
++      SQUASHFS_SWAP_BASE_INODE_CORE_2(s, d, \
++                      sizeof(struct squashfs_reg_inode_header_2));\
++      SQUASHFS_SWAP((s)->mtime, d, 32, 32);\
++      SQUASHFS_SWAP((s)->start_block, d, 64, 32);\
++      SQUASHFS_SWAP((s)->fragment, d, 96, 32);\
++      SQUASHFS_SWAP((s)->offset, d, 128, 32);\
++      SQUASHFS_SWAP((s)->file_size, d, 160, 32);\
++}
++
++#define SQUASHFS_SWAP_DIR_INODE_HEADER_2(s, d) {\
++      SQUASHFS_SWAP_START\
++      SQUASHFS_SWAP_BASE_INODE_CORE_2(s, d, \
++                      sizeof(struct squashfs_dir_inode_header_2));\
++      SQUASHFS_SWAP((s)->file_size, d, 32, 19);\
++      SQUASHFS_SWAP((s)->offset, d, 51, 13);\
++      SQUASHFS_SWAP((s)->mtime, d, 64, 32);\
++      SQUASHFS_SWAP((s)->start_block, d, 96, 24);\
++}
++
++#define SQUASHFS_SWAP_LDIR_INODE_HEADER_2(s, d) {\
++      SQUASHFS_SWAP_START\
++      SQUASHFS_SWAP_BASE_INODE_CORE_2(s, d, \
++                      sizeof(struct squashfs_ldir_inode_header_2));\
++      SQUASHFS_SWAP((s)->file_size, d, 32, 27);\
++      SQUASHFS_SWAP((s)->offset, d, 59, 13);\
++      SQUASHFS_SWAP((s)->mtime, d, 72, 32);\
++      SQUASHFS_SWAP((s)->start_block, d, 104, 24);\
++      SQUASHFS_SWAP((s)->i_count, d, 128, 16);\
++}
++
++#define SQUASHFS_SWAP_DIR_INDEX_2(s, d) {\
++      SQUASHFS_SWAP_START\
++      SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_dir_index_2));\
++      SQUASHFS_SWAP((s)->index, d, 0, 27);\
++      SQUASHFS_SWAP((s)->start_block, d, 27, 29);\
++      SQUASHFS_SWAP((s)->size, d, 56, 8);\
++}
++#define SQUASHFS_SWAP_DIR_HEADER_2(s, d) {\
++      SQUASHFS_SWAP_START\
++      SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_dir_header_2));\
++      SQUASHFS_SWAP((s)->count, d, 0, 8);\
++      SQUASHFS_SWAP((s)->start_block, d, 8, 24);\
++}
++
++#define SQUASHFS_SWAP_DIR_ENTRY_2(s, d) {\
++      SQUASHFS_SWAP_START\
++      SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_dir_entry_2));\
++      SQUASHFS_SWAP((s)->offset, d, 0, 13);\
++      SQUASHFS_SWAP((s)->type, d, 13, 3);\
++      SQUASHFS_SWAP((s)->size, d, 16, 8);\
++}
++
++#define SQUASHFS_SWAP_FRAGMENT_ENTRY_2(s, d) {\
++      SQUASHFS_SWAP_START\
++      SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_fragment_entry_2));\
++      SQUASHFS_SWAP((s)->start_block, d, 0, 32);\
++      SQUASHFS_SWAP((s)->size, d, 32, 32);\
++}
++
++#define SQUASHFS_SWAP_FRAGMENT_INDEXES_2(s, d, n) SQUASHFS_SWAP_INTS(s, d, n)
++
++/* fragment and fragment table defines */
++#define SQUASHFS_FRAGMENT_BYTES_2(A)  (A * sizeof(struct squashfs_fragment_entry_2))
++
++#define SQUASHFS_FRAGMENT_INDEX_2(A)  (SQUASHFS_FRAGMENT_BYTES_2(A) / \
++                                      SQUASHFS_METADATA_SIZE)
++
++#define SQUASHFS_FRAGMENT_INDEX_OFFSET_2(A)   (SQUASHFS_FRAGMENT_BYTES_2(A) % \
++                                              SQUASHFS_METADATA_SIZE)
++
++#define SQUASHFS_FRAGMENT_INDEXES_2(A)        ((SQUASHFS_FRAGMENT_BYTES_2(A) + \
++                                      SQUASHFS_METADATA_SIZE - 1) / \
++                                      SQUASHFS_METADATA_SIZE)
++
++#define SQUASHFS_FRAGMENT_INDEX_BYTES_2(A)    (SQUASHFS_FRAGMENT_INDEXES_2(A) *\
++                                              sizeof(int))
++
++#endif
++
++#ifdef __KERNEL__
++
++/*
++ * macros used to swap each structure entry, taking into account
++ * bitfields and different bitfield placing conventions on differing
++ * architectures
++ */
++
++#include <asm/byteorder.h>
++
++#ifdef __BIG_ENDIAN
++      /* convert from little endian to big endian */
++#define SQUASHFS_SWAP(value, p, pos, tbits) _SQUASHFS_SWAP(value, p, pos, \
++              tbits, b_pos)
++#else
++      /* convert from big endian to little endian */ 
++#define SQUASHFS_SWAP(value, p, pos, tbits) _SQUASHFS_SWAP(value, p, pos, \
++              tbits, 64 - tbits - b_pos)
++#endif
++
++#define _SQUASHFS_SWAP(value, p, pos, tbits, SHIFT) {\
++      b_pos = pos % 8;\
++      val = 0;\
++      s = (unsigned char *)p + (pos / 8);\
++      d = ((unsigned char *) &val) + 7;\
++      for(bits = 0; bits < (tbits + b_pos); bits += 8) \
++              *d-- = *s++;\
++      value = (val >> (SHIFT))/* & ((1 << tbits) - 1)*/;\
++}
++
++#define SQUASHFS_MEMSET(s, d, n)      memset(s, 0, n);
++
++#endif
++#endif
+--- /dev/null
++++ kernel-power-2.6.28/include/linux/squashfs_fs_i.h
+@@ -0,0 +1,45 @@
++#ifndef SQUASHFS_FS_I
++#define SQUASHFS_FS_I
++/*
++ * Squashfs
++ *
++ * Copyright (c) 2002, 2003, 2004, 2005, 2006, 2007, 2008
++ * Phillip Lougher <phillip@lougher.demon.co.uk>
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License
++ * as published by the Free Software Foundation; either version 2,
++ * or (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
++ *
++ * squashfs_fs_i.h
++ */
++
++struct squashfs_inode_info {
++      long long       start_block;
++      unsigned int    offset;
++      union {
++              struct {
++                      long long       fragment_start_block;
++                      unsigned int    fragment_size;
++                      unsigned int    fragment_offset;
++                      long long       block_list_start;
++              } s1;
++              struct {
++                      long long       directory_index_start;
++                      unsigned int    directory_index_offset;
++                      unsigned int    directory_index_count;
++                      unsigned int    parent_inode;
++              } s2;
++      } u;
++      struct inode    vfs_inode;
++};
++#endif
+--- /dev/null
++++ kernel-power-2.6.28/include/linux/squashfs_fs_sb.h
+@@ -0,0 +1,79 @@
++#ifndef SQUASHFS_FS_SB
++#define SQUASHFS_FS_SB
++/*
++ * Squashfs
++ *
++ * Copyright (c) 2002, 2003, 2004, 2005, 2006, 2007, 2008
++ * Phillip Lougher <phillip@lougher.demon.co.uk>
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License
++ * as published by the Free Software Foundation; either version 2,
++ * or (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
++ *
++ * squashfs_fs_sb.h
++ */
++
++#include <linux/squashfs_fs.h>
++
++struct squashfs_cache_entry {
++      long long       block;
++      int             length;
++      int             locked;
++      long long       next_index;
++      char            pending;
++      char            error;
++      int             waiting;
++      wait_queue_head_t       wait_queue;
++      char            *data;
++};
++
++struct squashfs_cache {
++      char *name;
++      int entries;
++      int block_size;
++      int next_blk;
++      int waiting;
++      int unused_blks;
++      int use_vmalloc;
++      spinlock_t lock;
++      wait_queue_head_t wait_queue;
++      struct squashfs_cache_entry entry[0];
++};
++
++struct squashfs_sb_info {
++      struct squashfs_super_block     sblk;
++      int                     devblksize;
++      int                     devblksize_log2;
++      int                     swap;
++      struct squashfs_cache   *block_cache;
++      struct squashfs_cache   *fragment_cache;
++      int                     next_meta_index;
++      unsigned int            *uid;
++      unsigned int            *guid;
++      long long               *fragment_index;
++      unsigned int            *fragment_index_2;
++      char                    *read_page;
++      struct mutex            read_data_mutex;
++      struct mutex            read_page_mutex;
++      struct mutex            meta_index_mutex;
++      struct meta_index       *meta_index;
++      z_stream                stream;
++      long long               *inode_lookup_table;
++      int                     (*read_inode)(struct inode *i,  squashfs_inode_t \
++                              inode);
++      long long               (*read_blocklist)(struct inode *inode, int \
++                              index, int readahead_blks, char *block_list, \
++                              unsigned short **block_p, unsigned int *bsize);
++      int                     (*read_fragment_index_table)(struct super_block *s);
++};
++#endif
+--- kernel-power-2.6.28.orig/init/do_mounts_rd.c
++++ kernel-power-2.6.28/init/do_mounts_rd.c
+@@ -5,6 +5,7 @@
+ #include <linux/ext2_fs.h>
+ #include <linux/romfs_fs.h>
+ #include <linux/cramfs_fs.h>
++#include <linux/squashfs_fs.h>
+ #include <linux/initrd.h>
+ #include <linux/string.h>
+@@ -37,6 +38,7 @@
+  * numbers could not be found.
+  *
+  * We currently check for the following magic numbers:
++ *      squashfs
+  *    minix
+  *    ext2
+  *    romfs
+@@ -51,6 +53,7 @@
+       struct ext2_super_block *ext2sb;
+       struct romfs_super_block *romfsb;
+       struct cramfs_super *cramfsb;
++      struct squashfs_super_block *squashfsb;
+       int nblocks = -1;
+       unsigned char *buf;
+@@ -62,6 +65,7 @@
+       ext2sb = (struct ext2_super_block *) buf;
+       romfsb = (struct romfs_super_block *) buf;
+       cramfsb = (struct cramfs_super *) buf;
++      squashfsb = (struct squashfs_super_block *) buf;
+       memset(buf, 0xe5, size);
+       /*
+@@ -99,6 +103,18 @@
+               goto done;
+       }
++      /* squashfs is at block zero too */
++      if (squashfsb->s_magic == SQUASHFS_MAGIC) {
++              printk(KERN_NOTICE
++                     "RAMDISK: squashfs filesystem found at block %d\n",
++                     start_block);
++              if (squashfsb->s_major < 3)
++                      nblocks = (squashfsb->bytes_used_2+BLOCK_SIZE-1)>>BLOCK_SIZE_BITS;
++              else
++                      nblocks = (squashfsb->bytes_used+BLOCK_SIZE-1)>>BLOCK_SIZE_BITS;
++              goto done;
++      }
++
+       /*
+        * Read block 1 to test for minix and ext2 superblock
+        */
diff --git a/kernel-power-2.6.28/debian/patches/trig-keyb.diff b/kernel-power-2.6.28/debian/patches/trig-keyb.diff
new file mode 100644 (file)
index 0000000..61cb8d3
--- /dev/null
@@ -0,0 +1,93 @@
+--- kernel-power-2.6.28.orig/drivers/leds/Kconfig
++++ kernel-power-2.6.28/drivers/leds/Kconfig
+@@ -251,4 +251,10 @@
+         This allows LEDs to be initialised in the ON state.
+         If unsure, say Y.
++config LEDS_TRIGGER_KEYB
++      tristate "LED Trigger as Keyboard led"
++      depends on LEDS_TRIGGERS
++      help
++        This allows LEDs to be used as keyboard indication leds.
++
+ endif # NEW_LEDS
+--- kernel-power-2.6.28.orig/drivers/leds/Makefile
++++ kernel-power-2.6.28/drivers/leds/Makefile
+@@ -34,3 +34,4 @@
+ obj-$(CONFIG_LEDS_TRIGGER_HEARTBEAT)  += ledtrig-heartbeat.o
+ obj-$(CONFIG_LEDS_TRIGGER_BACKLIGHT)  += ledtrig-backlight.o
+ obj-$(CONFIG_LEDS_TRIGGER_DEFAULT_ON) += ledtrig-default-on.o
++obj-$(CONFIG_LEDS_TRIGGER_KEYB)       += ledtrig-keyb.o
+--- /dev/null
++++ kernel-power-2.6.28/drivers/leds/ledtrig-keyb.c
+@@ -0,0 +1,70 @@
++/*
++ * LED keyboard driver.
++ *
++ * Author: Matan Ziv-Av <matan@svgalib.org>
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License version 2 as
++ * published by the Free Software Foundation.
++ *
++ */
++
++#include <linux/module.h>
++#include <linux/jiffies.h>
++#include <linux/kernel.h>
++#include <linux/init.h>
++#include <linux/list.h>
++#include <linux/spinlock.h>
++#include <linux/device.h>
++#include <linux/sysdev.h>
++#include <linux/timer.h>
++#include <linux/ctype.h>
++#include <linux/leds.h>
++#include "leds.h"
++
++static int keyb_led_active;
++static struct led_classdev *keyb_led_cdev;
++
++void keyb_led_set (int v) {
++      if(keyb_led_active) {
++              led_set_brightness(keyb_led_cdev, v ? LED_FULL:LED_OFF ) ;
++      }
++}
++
++EXPORT_SYMBOL_GPL(keyb_led_set);
++//static DEVICE_ATTR(delay_on, 0644, led_delay_on_show, led_delay_on_store);
++//static DEVICE_ATTR(delay_off, 0644, led_delay_off_show, led_delay_off_store);
++
++static void trig_activate(struct led_classdev *led_cdev)
++{
++      keyb_led_active=1;
++      keyb_led_cdev = led_cdev;
++}
++
++static void trig_deactivate(struct led_classdev *led_cdev)
++{
++      keyb_led_active=0;
++}
++
++static struct led_trigger keyb_led_trigger = {
++      .name     = "keyb",
++      .activate = trig_activate,
++      .deactivate = trig_deactivate,
++};
++
++static int __init keyb_trig_init(void)
++{
++      return led_trigger_register(&keyb_led_trigger);
++}
++
++static void __exit keyb_trig_exit(void)
++{
++      led_trigger_unregister(&keyb_led_trigger);
++}
++
++module_init(keyb_trig_init);
++module_exit(keyb_trig_exit);
++
++MODULE_AUTHOR("Matan Ziv-Av <matan@svgalib.org>");
++MODULE_DESCRIPTION("Keyboard LED trigger");
++MODULE_LICENSE("GPL");
diff --git a/kernel-power-2.6.28/debian/patches/twl-scrollock.diff b/kernel-power-2.6.28/debian/patches/twl-scrollock.diff
new file mode 100644 (file)
index 0000000..aebc9a3
--- /dev/null
@@ -0,0 +1,31 @@
+--- kernel-power-2.6.28.orig/drivers/input/keyboard/omap-twl4030keypad.c
++++ kernel-power-2.6.28/drivers/input/keyboard/omap-twl4030keypad.c
+@@ -325,6 +325,18 @@
+ static DEVICE_ATTR(disable_kp, 0664, twl4030_kp_disable_show,
+                  twl4030_kp_disable_store);
++extern void keyb_led_set(int v);
++static int ledkbd_event(struct input_dev *dev, unsigned int type, unsigned int code, int value)
++{
++
++      switch (type) {
++              case EV_LED: 
++                      keyb_led_set(value); 
++                      //printk(KERN_ERR "call keyb_led_set(%i)\n", value); 
++                      break; 
++      }
++      return 0;
++}
+ /*
+  * Registers keypad device with input sub system
+  * and configures TWL4030 keypad registers
+@@ -368,6 +380,9 @@
+       /* setup input device */
+       set_bit(EV_KEY, kp->omap_twl4030kp->evbit);
++      set_bit(EV_LED, kp->omap_twl4030kp->evbit);
++      kp->omap_twl4030kp->ledbit[0] = BIT_MASK(LED_SCROLLL);
++      kp->omap_twl4030kp->event = ledkbd_event;
+       /* Enable auto repeat feature of Linux input subsystem */
+       if (pdata->rep)
index 7fbb240..8bcbfd3 100644 (file)
@@ -5,26 +5,23 @@ WEEK := $(shell date +%Y%W)
 RELEASE := $(shell dpkg-parsechangelog | awk '/^Version: / { print $$2 }')
 #REVISION := $(shell echo "$(RELEASE)" | sed 's/\(.*\)-\(.*\)/\2/')
 #no need to update modules so often, api is quite stable between weekly releases
-REVISION := maemo
+REVISION := power
 #EXTRAVERSION := EXTRAVERSION-$(REVISION)
 
 PACKAGE := kernel
-FLASHER_PACKAGE := kernel-flasher-maemo
+FLASHER_PACKAGE := kernel-power-flasher
 #SOURCE_PACKAGE := $(PACKAGE)-source
-KERNEL_PACKAGE := $(PACKAGE)-maemo
-MODULES_PACKAGE := $(PACKAGE)-modules-maemo
-HEADERS_PACKAGE := $(PACKAGE)-headers-maemo
-KBUILD_PACKAGE := $(PACKAGE)-kbuild
-DEBUG_PACKAGE := $(PACKAGE)-debug
-DEBUG_MODULES_PACKAGE := $(PACKAGE)-modules-debug
-LIBC_PACKAGE := linux-kernel-headers-maemo
+KERNEL_PACKAGE := $(PACKAGE)-power
+MODULES_PACKAGE := $(PACKAGE)-power-modules
+HEADERS_PACKAGE := $(PACKAGE)-power-headers
+LIBC_PACKAGE := linux-kernel-power-headers
 
 BUILDTMP := $(CURDIR)/debian/build
 #KSRC := $(BUILDTMP)/$(PACKAGE)
 KSRC := $(CURDIR)
 export KBUILD_OUTPUT = $(BUILDTMP)
 
-DEFCONFIG := rx51maemo_defconfig
+DEFCONFIG := rx51power_defconfig
 KVER = $(shell cat $(BUILDTMP)/include/config/kernel.release 2> /dev/null)
 ARCH = $(shell dpkg-architecture -qDEB_HOST_ARCH_CPU)
 INCLUDE_HEADERS = acpi asm-generic crypto drm Kbuild keys math-emu media mtd net pcmcia rdma rxrpc scsi sound video xen
@@ -103,8 +100,6 @@ install-kernel:
        fiasco-gen -o $(CURDIR)/debian/$(KERNEL_PACKAGE)/boot/zImage-$(RELEASE).fiasco -g \
                        -k $(BUILDTMP)/arch/arm/boot/zImage -v $(RELEASE)
        chmod 644 $(CURDIR)/debian/$(KERNEL_PACKAGE)/boot/zImage-$(RELEASE).fiasco
-       #mkdir -p $(CURDIR)/debian/$(KERNEL_PACKAGE)/etc/event.d
-       #cp $(CURDIR)/debian/upstart $(CURDIR)/debian/$(KERNEL_PACKAGE)/etc/event.d/kernel-maemo
 
 install-modules:
        dh_testdir
diff --git a/kernel-power-2.6.28/debian/rx51maemo_defconfig b/kernel-power-2.6.28/debian/rx51maemo_defconfig
deleted file mode 100644 (file)
index cef3a87..0000000
+++ /dev/null
@@ -1,2327 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.28.10maemo-omap1
-# Sun Apr 11 11:49:20 2010
-#
-CONFIG_ARM=y
-CONFIG_SYS_SUPPORTS_APM_EMULATION=y
-CONFIG_GENERIC_GPIO=y
-CONFIG_GENERIC_TIME=y
-CONFIG_GENERIC_CLOCKEVENTS=y
-CONFIG_MMU=y
-# CONFIG_NO_IOPORT is not set
-CONFIG_GENERIC_HARDIRQS=y
-CONFIG_STACKTRACE_SUPPORT=y
-CONFIG_HAVE_LATENCYTOP_SUPPORT=y
-CONFIG_LOCKDEP_SUPPORT=y
-CONFIG_TRACE_IRQFLAGS_SUPPORT=y
-CONFIG_HARDIRQS_SW_RESEND=y
-CONFIG_GENERIC_IRQ_PROBE=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-# CONFIG_ARCH_HAS_ILOG2_U32 is not set
-# CONFIG_ARCH_HAS_ILOG2_U64 is not set
-CONFIG_GENERIC_HWEIGHT=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
-CONFIG_OPROFILE_OMAP_GPTIMER=y
-CONFIG_OPROFILE_ARMV7=y
-CONFIG_VECTORS_BASE=0xffff0000
-CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
-
-#
-# General setup
-#
-CONFIG_EXPERIMENTAL=y
-CONFIG_BROKEN_ON_SMP=y
-CONFIG_LOCK_KERNEL=y
-CONFIG_INIT_ENV_ARG_LIMIT=32
-CONFIG_LOCALVERSION=""
-CONFIG_LOCALVERSION_AUTO=y
-CONFIG_SWAP=y
-CONFIG_SYSVIPC=y
-CONFIG_SYSVIPC_SYSCTL=y
-CONFIG_POSIX_MQUEUE=y
-CONFIG_BSD_PROCESS_ACCT=y
-# CONFIG_BSD_PROCESS_ACCT_V3 is not set
-# CONFIG_TASKSTATS is not set
-# CONFIG_AUDIT is not set
-CONFIG_IKCONFIG=m
-CONFIG_IKCONFIG_PROC=y
-CONFIG_LOG_BUF_SHIFT=14
-CONFIG_CGROUPS=y
-# CONFIG_CGROUP_DEBUG is not set
-# CONFIG_CGROUP_NS is not set
-CONFIG_CGROUP_FREEZER=y
-# CONFIG_CGROUP_DEVICE is not set
-CONFIG_GROUP_SCHED=y
-CONFIG_FAIR_GROUP_SCHED=y
-CONFIG_RT_GROUP_SCHED=y
-# CONFIG_USER_SCHED is not set
-CONFIG_CGROUP_SCHED=y
-# CONFIG_CGROUP_CPUACCT is not set
-CONFIG_RESOURCE_COUNTERS=y
-CONFIG_MM_OWNER=y
-CONFIG_CGROUP_MEM_RES_CTLR=y
-CONFIG_SYSFS_DEPRECATED=y
-CONFIG_SYSFS_DEPRECATED_V2=y
-# CONFIG_RELAY is not set
-# CONFIG_NAMESPACES is not set
-CONFIG_BLK_DEV_INITRD=y
-CONFIG_INITRAMFS_SOURCE=""
-CONFIG_CC_OPTIMIZE_FOR_SIZE=y
-CONFIG_SYSCTL=y
-CONFIG_ANON_INODES=y
-CONFIG_EMBEDDED=y
-CONFIG_UID16=y
-CONFIG_SYSCTL_SYSCALL=y
-CONFIG_KALLSYMS=y
-CONFIG_KALLSYMS_ALL=y
-CONFIG_KALLSYMS_EXTRA_PASS=y
-CONFIG_HOTPLUG=y
-CONFIG_PRINTK=y
-CONFIG_BUG=y
-CONFIG_ELF_CORE=y
-CONFIG_BASE_FULL=y
-CONFIG_FUTEX=y
-CONFIG_EPOLL=y
-CONFIG_SIGNALFD=y
-CONFIG_TIMERFD=y
-CONFIG_EVENTFD=y
-CONFIG_SHMEM=y
-CONFIG_AIO=y
-CONFIG_VM_EVENT_COUNTERS=y
-CONFIG_SLUB_DEBUG=y
-CONFIG_COMPAT_BRK=y
-# CONFIG_SLAB is not set
-CONFIG_SLUB=y
-# CONFIG_SLOB is not set
-CONFIG_PROFILING=y
-# CONFIG_MARKERS is not set
-CONFIG_OPROFILE=m
-CONFIG_HAVE_OPROFILE=y
-CONFIG_KPROBES=y
-CONFIG_KRETPROBES=y
-CONFIG_HAVE_KPROBES=y
-CONFIG_HAVE_KRETPROBES=y
-CONFIG_HAVE_CLK=y
-CONFIG_HAVE_GENERIC_DMA_COHERENT=y
-CONFIG_SLABINFO=y
-CONFIG_RT_MUTEXES=y
-# CONFIG_TINY_SHMEM is not set
-CONFIG_BASE_SMALL=0
-CONFIG_MODULES=y
-CONFIG_MODULE_FORCE_LOAD=y
-CONFIG_MODULE_UNLOAD=y
-CONFIG_MODULE_FORCE_UNLOAD=y
-CONFIG_MODVERSIONS=y
-CONFIG_MODULE_SRCVERSION_ALL=y
-CONFIG_KMOD=y
-CONFIG_BLOCK=y
-# CONFIG_LBD is not set
-# CONFIG_BLK_DEV_IO_TRACE is not set
-CONFIG_LSF=y
-# CONFIG_BLK_DEV_BSG is not set
-# CONFIG_BLK_DEV_INTEGRITY is not set
-
-#
-# IO Schedulers
-#
-CONFIG_IOSCHED_NOOP=y
-# CONFIG_IOSCHED_AS is not set
-# CONFIG_IOSCHED_DEADLINE is not set
-CONFIG_IOSCHED_CFQ=y
-# CONFIG_DEFAULT_AS is not set
-# CONFIG_DEFAULT_DEADLINE is not set
-CONFIG_DEFAULT_CFQ=y
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="cfq"
-CONFIG_CLASSIC_RCU=y
-CONFIG_FREEZER=y
-
-#
-# System Type
-#
-# CONFIG_ARCH_AAEC2000 is not set
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_REALVIEW is not set
-# CONFIG_ARCH_VERSATILE is not set
-# CONFIG_ARCH_AT91 is not set
-# CONFIG_ARCH_CLPS7500 is not set
-# CONFIG_ARCH_CLPS711X is not set
-# CONFIG_ARCH_EBSA110 is not set
-# CONFIG_ARCH_EP93XX is not set
-# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_NETX is not set
-# CONFIG_ARCH_H720X is not set
-# CONFIG_ARCH_IMX is not set
-# CONFIG_ARCH_IOP13XX is not set
-# CONFIG_ARCH_IOP32X is not set
-# CONFIG_ARCH_IOP33X is not set
-# CONFIG_ARCH_IXP23XX is not set
-# CONFIG_ARCH_IXP2000 is not set
-# CONFIG_ARCH_IXP4XX is not set
-# CONFIG_ARCH_L7200 is not set
-# CONFIG_ARCH_KIRKWOOD is not set
-# CONFIG_ARCH_KS8695 is not set
-# CONFIG_ARCH_NS9XXX is not set
-# CONFIG_ARCH_LOKI is not set
-# CONFIG_ARCH_MV78XX0 is not set
-# CONFIG_ARCH_MXC is not set
-# CONFIG_ARCH_ORION5X is not set
-# CONFIG_ARCH_PNX4008 is not set
-# CONFIG_ARCH_PXA is not set
-# CONFIG_ARCH_RPC is not set
-# CONFIG_ARCH_SA1100 is not set
-# CONFIG_ARCH_S3C2410 is not set
-# CONFIG_ARCH_SHARK is not set
-# CONFIG_ARCH_LH7A40X is not set
-# CONFIG_ARCH_DAVINCI is not set
-CONFIG_ARCH_OMAP=y
-# CONFIG_ARCH_MSM is not set
-
-#
-# TI OMAP Implementations
-#
-CONFIG_ARCH_OMAP_OTG=y
-# CONFIG_ARCH_OMAP1 is not set
-# CONFIG_ARCH_OMAP2 is not set
-CONFIG_ARCH_OMAP3=y
-
-#
-# OMAP Feature Selections
-#
-# CONFIG_OMAP_DEBUG_POWERDOMAIN is not set
-# CONFIG_OMAP_DEBUG_CLOCKDOMAIN is not set
-CONFIG_OMAP_SMARTREFLEX=y
-# CONFIG_OMAP_SMARTREFLEX_TESTING is not set
-CONFIG_OMAP_RESET_CLOCKS=y
-CONFIG_OMAP_BOOT_TAG=y
-CONFIG_OMAP_BOOT_REASON=y
-CONFIG_OMAP_COMPONENT_VERSION=y
-CONFIG_OMAP_GPIO_SWITCH=y
-CONFIG_OMAP_MUX=y
-CONFIG_OMAP_MUX_DEBUG=y
-CONFIG_OMAP_MUX_WARNINGS=y
-CONFIG_OMAP_MCBSP=y
-# CONFIG_OMAP_MMU_FWK is not set
-# CONFIG_OMAP_MBOX_FWK is not set
-CONFIG_OMAP_IOMMU=m
-# CONFIG_OMAP_IOMMU_DEBUG is not set
-# CONFIG_OMAP_MPU_TIMER is not set
-CONFIG_OMAP_32K_TIMER=y
-# CONFIG_OMAP3_DEBOBS is not set
-CONFIG_OMAP_32K_TIMER_HZ=128
-CONFIG_OMAP_TICK_GPTIMER=1
-CONFIG_OMAP_DM_TIMER=y
-# CONFIG_OMAP_LL_DEBUG_UART1 is not set
-# CONFIG_OMAP_LL_DEBUG_UART2 is not set
-CONFIG_OMAP_LL_DEBUG_UART3=y
-CONFIG_OMAP_SERIAL_WAKE=y
-# CONFIG_OMAP_PM_NONE is not set
-# CONFIG_OMAP_PM_NOOP is not set
-CONFIG_OMAP_PM_SRF=y
-CONFIG_ARCH_OMAP34XX=y
-CONFIG_ARCH_OMAP3430=y
-
-#
-# OMAP Board Type
-#
-CONFIG_MACH_NOKIA_RX51=y
-CONFIG_VIDEO_MACH_RX51=m
-# CONFIG_VIDEO_MACH_RX51_OLD_I2C is not set
-CONFIG_MACH_NOKIA_RX71=y
-# CONFIG_MACH_OMAP_LDP is not set
-# CONFIG_MACH_OMAP_3430SDP is not set
-# CONFIG_MACH_OMAP3EVM is not set
-# CONFIG_MACH_OMAP3_BEAGLE is not set
-# CONFIG_MACH_OVERO is not set
-# CONFIG_MACH_OMAP3_PANDORA is not set
-# CONFIG_RX51_CAMERA_BUTTON is not set
-
-#
-# Boot options
-#
-
-#
-# Power management
-#
-
-#
-# Processor Type
-#
-CONFIG_CPU_32=y
-CONFIG_CPU_32v6K=y
-CONFIG_CPU_V7=y
-CONFIG_CPU_32v7=y
-CONFIG_CPU_ABRT_EV7=y
-CONFIG_CPU_PABRT_IFAR=y
-CONFIG_CPU_CACHE_V7=y
-CONFIG_CPU_CACHE_VIPT=y
-CONFIG_CPU_COPY_V6=y
-CONFIG_CPU_TLB_V7=y
-CONFIG_CPU_HAS_ASID=y
-CONFIG_CPU_CP15=y
-CONFIG_CPU_CP15_MMU=y
-
-#
-# Processor Features
-#
-CONFIG_ARM_THUMB=y
-CONFIG_ARM_THUMBEE=y
-# CONFIG_CPU_ICACHE_DISABLE is not set
-# CONFIG_CPU_DCACHE_DISABLE is not set
-# CONFIG_CPU_BPREDICT_DISABLE is not set
-CONFIG_HAS_TLS_REG=y
-# CONFIG_OUTER_CACHE is not set
-
-#
-# Bus support
-#
-# CONFIG_PCI_SYSCALL is not set
-# CONFIG_ARCH_SUPPORTS_MSI is not set
-# CONFIG_PCCARD is not set
-
-#
-# Kernel Features
-#
-CONFIG_TICK_ONESHOT=y
-CONFIG_NO_HZ=y
-CONFIG_HIGH_RES_TIMERS=y
-CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
-CONFIG_VMSPLIT_3G=y
-# CONFIG_VMSPLIT_2G is not set
-# CONFIG_VMSPLIT_1G is not set
-CONFIG_PAGE_OFFSET=0xC0000000
-CONFIG_PREEMPT=y
-CONFIG_HZ=128
-CONFIG_AEABI=y
-# CONFIG_OABI_COMPAT is not set
-CONFIG_ARCH_FLATMEM_HAS_HOLES=y
-# CONFIG_ARCH_SPARSEMEM_DEFAULT is not set
-# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set
-CONFIG_SELECT_MEMORY_MODEL=y
-CONFIG_FLATMEM_MANUAL=y
-# CONFIG_DISCONTIGMEM_MANUAL is not set
-# CONFIG_SPARSEMEM_MANUAL is not set
-CONFIG_FLATMEM=y
-CONFIG_FLAT_NODE_MEM_MAP=y
-CONFIG_PAGEFLAGS_EXTENDED=y
-CONFIG_SPLIT_PTLOCK_CPUS=4
-# CONFIG_RESOURCES_64BIT is not set
-# CONFIG_PHYS_ADDR_T_64BIT is not set
-CONFIG_ZONE_DMA_FLAG=0
-CONFIG_VIRT_TO_BUS=y
-CONFIG_UNEVICTABLE_LRU=y
-# CONFIG_LEDS is not set
-CONFIG_ALIGNMENT_TRAP=y
-
-#
-# Boot options
-#
-CONFIG_ZBOOT_ROM_TEXT=0x0
-CONFIG_ZBOOT_ROM_BSS=0x0
-CONFIG_CMDLINE="init=/sbin/preinit ubi.mtd=rootfs root=ubi0:rootfs rootfstype=ubifs rootflags=bulk_read,no_chk_data_crc rw console=ttyMTD,log console=tty0 snd-soc-rx51.hp_lim=42 snd-soc-tlv320aic3x.hp_dac_lim=6"
-# CONFIG_XIP_KERNEL is not set
-CONFIG_KEXEC=y
-CONFIG_ATAGS_PROC=y
-
-#
-# CPU Power Management
-#
-CONFIG_CPU_FREQ=y
-CONFIG_CPU_FREQ_TABLE=y
-# CONFIG_CPU_FREQ_DEBUG is not set
-CONFIG_CPU_FREQ_STAT=y
-# CONFIG_CPU_FREQ_STAT_DETAILS is not set
-# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
-# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set
-CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y
-# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set
-# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
-# CONFIG_CPU_FREQ_GOV_PERFORMANCE is not set
-CONFIG_CPU_FREQ_GOV_POWERSAVE=y
-CONFIG_CPU_FREQ_GOV_USERSPACE=y
-CONFIG_CPU_FREQ_GOV_ONDEMAND=y
-CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
-CONFIG_CPU_IDLE=y
-CONFIG_CPU_IDLE_GOV_LADDER=y
-CONFIG_CPU_IDLE_GOV_MENU=y
-
-#
-# Floating point emulation
-#
-
-#
-# At least one emulation must be selected
-#
-CONFIG_VFP=y
-CONFIG_VFPv3=y
-CONFIG_NEON=y
-
-#
-# Userspace binary formats
-#
-CONFIG_BINFMT_ELF=y
-# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
-CONFIG_HAVE_AOUT=y
-# CONFIG_BINFMT_AOUT is not set
-CONFIG_BINFMT_MISC=y
-
-#
-# Power management options
-#
-CONFIG_PM=y
-CONFIG_PM_DEBUG=y
-# CONFIG_PM_VERBOSE is not set
-CONFIG_CAN_PM_TRACE=y
-CONFIG_PM_SLEEP=y
-CONFIG_SUSPEND=y
-CONFIG_SUSPEND_FREEZER=y
-# CONFIG_APM_EMULATION is not set
-CONFIG_ARCH_SUSPEND_POSSIBLE=y
-CONFIG_NET=y
-
-#
-# Networking options
-#
-CONFIG_PACKET=y
-# CONFIG_PACKET_MMAP is not set
-CONFIG_UNIX=y
-CONFIG_XFRM=y
-# CONFIG_XFRM_USER is not set
-# CONFIG_XFRM_SUB_POLICY is not set
-# CONFIG_XFRM_MIGRATE is not set
-# CONFIG_XFRM_STATISTICS is not set
-CONFIG_XFRM_IPCOMP=m
-CONFIG_NET_KEY=y
-# CONFIG_NET_KEY_MIGRATE is not set
-CONFIG_INET=y
-# CONFIG_IP_MULTICAST is not set
-CONFIG_IP_ADVANCED_ROUTER=y
-CONFIG_ASK_IP_FIB_HASH=y
-# CONFIG_IP_FIB_TRIE is not set
-CONFIG_IP_FIB_HASH=y
-# CONFIG_IP_MULTIPLE_TABLES is not set
-# CONFIG_IP_ROUTE_MULTIPATH is not set
-# CONFIG_IP_ROUTE_VERBOSE is not set
-CONFIG_IP_PNP=y
-CONFIG_IP_PNP_DHCP=y
-CONFIG_IP_PNP_BOOTP=y
-CONFIG_IP_PNP_RARP=y
-CONFIG_NET_IPIP=m
-CONFIG_NET_IPGRE=m
-# CONFIG_ARPD is not set
-# CONFIG_SYN_COOKIES is not set
-CONFIG_INET_AH=m
-CONFIG_INET_ESP=m
-CONFIG_INET_IPCOMP=m
-CONFIG_INET_XFRM_TUNNEL=m
-CONFIG_INET_TUNNEL=m
-CONFIG_INET_XFRM_MODE_TRANSPORT=m
-CONFIG_INET_XFRM_MODE_TUNNEL=m
-CONFIG_INET_XFRM_MODE_BEET=m
-CONFIG_INET_LRO=m
-CONFIG_INET_DIAG=m
-CONFIG_INET_TCP_DIAG=m
-# CONFIG_TCP_CONG_ADVANCED is not set
-CONFIG_TCP_CONG_CUBIC=y
-CONFIG_DEFAULT_TCP_CONG="cubic"
-# CONFIG_TCP_MD5SIG is not set
-CONFIG_IPV6=m
-CONFIG_IPV6_PRIVACY=y
-CONFIG_IPV6_ROUTER_PREF=y
-# CONFIG_IPV6_ROUTE_INFO is not set
-# CONFIG_IPV6_OPTIMISTIC_DAD is not set
-# CONFIG_INET6_AH is not set
-# CONFIG_INET6_ESP is not set
-CONFIG_INET6_IPCOMP=m
-CONFIG_IPV6_MIP6=m
-CONFIG_INET6_XFRM_TUNNEL=m
-CONFIG_INET6_TUNNEL=m
-CONFIG_INET6_XFRM_MODE_TRANSPORT=m
-CONFIG_INET6_XFRM_MODE_TUNNEL=m
-CONFIG_INET6_XFRM_MODE_BEET=m
-# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
-CONFIG_IPV6_SIT=m
-CONFIG_IPV6_NDISC_NODETYPE=y
-# CONFIG_IPV6_TUNNEL is not set
-# CONFIG_IPV6_MULTIPLE_TABLES is not set
-# CONFIG_IPV6_MROUTE is not set
-# CONFIG_NETLABEL is not set
-# CONFIG_NETWORK_SECMARK is not set
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-CONFIG_NETFILTER_ADVANCED=y
-
-#
-# Core Netfilter Configuration
-#
-# CONFIG_NETFILTER_NETLINK_QUEUE is not set
-# CONFIG_NETFILTER_NETLINK_LOG is not set
-CONFIG_NF_CONNTRACK=m
-# CONFIG_NF_CT_ACCT is not set
-# CONFIG_NF_CONNTRACK_MARK is not set
-# CONFIG_NF_CONNTRACK_EVENTS is not set
-# CONFIG_NF_CT_PROTO_DCCP is not set
-CONFIG_NF_CT_PROTO_GRE=m
-# CONFIG_NF_CT_PROTO_SCTP is not set
-# CONFIG_NF_CT_PROTO_UDPLITE is not set
-# CONFIG_NF_CONNTRACK_AMANDA is not set
-CONFIG_NF_CONNTRACK_FTP=m
-CONFIG_NF_CONNTRACK_H323=m
-CONFIG_NF_CONNTRACK_IRC=m
-CONFIG_NF_CONNTRACK_NETBIOS_NS=m
-CONFIG_NF_CONNTRACK_PPTP=m
-# CONFIG_NF_CONNTRACK_SANE is not set
-CONFIG_NF_CONNTRACK_SIP=m
-# CONFIG_NF_CONNTRACK_TFTP is not set
-# CONFIG_NF_CT_NETLINK is not set
-# CONFIG_NETFILTER_TPROXY is not set
-CONFIG_NETFILTER_XTABLES=m
-CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
-# CONFIG_NETFILTER_XT_TARGET_CONNMARK is not set
-# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
-# CONFIG_NETFILTER_XT_TARGET_MARK is not set
-# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
-# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
-# CONFIG_NETFILTER_XT_TARGET_RATEEST is not set
-# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
-# CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP is not set
-# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
-# CONFIG_NETFILTER_XT_MATCH_CONNBYTES is not set
-CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m
-# CONFIG_NETFILTER_XT_MATCH_CONNMARK is not set
-# CONFIG_NETFILTER_XT_MATCH_CONNTRACK is not set
-# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
-# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
-# CONFIG_NETFILTER_XT_MATCH_ESP is not set
-# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
-# CONFIG_NETFILTER_XT_MATCH_HELPER is not set
-CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
-# CONFIG_NETFILTER_XT_MATCH_LENGTH is not set
-CONFIG_NETFILTER_XT_MATCH_LIMIT=m
-# CONFIG_NETFILTER_XT_MATCH_MAC is not set
-# CONFIG_NETFILTER_XT_MATCH_MARK is not set
-CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
-# CONFIG_NETFILTER_XT_MATCH_OWNER is not set
-# CONFIG_NETFILTER_XT_MATCH_POLICY is not set
-# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set
-# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
-# CONFIG_NETFILTER_XT_MATCH_RATEEST is not set
-# CONFIG_NETFILTER_XT_MATCH_REALM is not set
-# CONFIG_NETFILTER_XT_MATCH_RECENT is not set
-# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
-CONFIG_NETFILTER_XT_MATCH_STATE=m
-# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
-# CONFIG_NETFILTER_XT_MATCH_STRING is not set
-# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set
-# CONFIG_NETFILTER_XT_MATCH_TIME is not set
-CONFIG_NETFILTER_XT_MATCH_U32=m
-# CONFIG_IP_VS is not set
-
-#
-# IP: Netfilter Configuration
-#
-CONFIG_NF_DEFRAG_IPV4=m
-CONFIG_NF_CONNTRACK_IPV4=m
-CONFIG_NF_CONNTRACK_PROC_COMPAT=y
-# CONFIG_IP_NF_QUEUE is not set
-CONFIG_IP_NF_IPTABLES=m
-# CONFIG_IP_NF_MATCH_ADDRTYPE is not set
-# CONFIG_IP_NF_MATCH_AH is not set
-# CONFIG_IP_NF_MATCH_ECN is not set
-# CONFIG_IP_NF_MATCH_TTL is not set
-CONFIG_IP_NF_FILTER=m
-CONFIG_IP_NF_TARGET_REJECT=m
-CONFIG_IP_NF_TARGET_LOG=m
-# CONFIG_IP_NF_TARGET_ULOG is not set
-CONFIG_NF_NAT=m
-CONFIG_NF_NAT_NEEDED=y
-CONFIG_IP_NF_TARGET_MASQUERADE=m
-CONFIG_IP_NF_TARGET_NETMAP=m
-CONFIG_IP_NF_TARGET_REDIRECT=m
-# CONFIG_IP_NF_TARGET_IDLETIMER is not set
-# CONFIG_NF_NAT_SNMP_BASIC is not set
-CONFIG_NF_NAT_PROTO_GRE=m
-CONFIG_NF_NAT_FTP=m
-CONFIG_NF_NAT_IRC=m
-# CONFIG_NF_NAT_TFTP is not set
-# CONFIG_NF_NAT_AMANDA is not set
-CONFIG_NF_NAT_PPTP=m
-CONFIG_NF_NAT_H323=m
-CONFIG_NF_NAT_SIP=m
-CONFIG_IP_NF_MANGLE=m
-# CONFIG_IP_NF_TARGET_CLUSTERIP is not set
-# CONFIG_IP_NF_TARGET_ECN is not set
-# CONFIG_IP_NF_TARGET_TTL is not set
-# CONFIG_IP_NF_RAW is not set
-# CONFIG_IP_NF_SECURITY is not set
-# CONFIG_IP_NF_ARPTABLES is not set
-CONFIG_IP_NF_HB=m
-# CONFIG_IP_NF_HB_DEBUG is not set
-
-#
-# IPv6: Netfilter Configuration
-#
-CONFIG_NF_CONNTRACK_IPV6=m
-# CONFIG_IP6_NF_QUEUE is not set
-CONFIG_IP6_NF_IPTABLES=m
-# CONFIG_IP6_NF_MATCH_AH is not set
-# CONFIG_IP6_NF_MATCH_EUI64 is not set
-# CONFIG_IP6_NF_MATCH_FRAG is not set
-# CONFIG_IP6_NF_MATCH_OPTS is not set
-# CONFIG_IP6_NF_MATCH_HL is not set
-# CONFIG_IP6_NF_MATCH_IPV6HEADER is not set
-# CONFIG_IP6_NF_MATCH_MH is not set
-# CONFIG_IP6_NF_MATCH_RT is not set
-CONFIG_IP6_NF_TARGET_LOG=m
-CONFIG_IP6_NF_FILTER=m
-# CONFIG_IP6_NF_TARGET_REJECT is not set
-# CONFIG_IP6_NF_MANGLE is not set
-# CONFIG_IP6_NF_RAW is not set
-# CONFIG_IP6_NF_SECURITY is not set
-# CONFIG_IP_DCCP is not set
-# CONFIG_IP_SCTP is not set
-# CONFIG_TIPC is not set
-# CONFIG_ATM is not set
-# CONFIG_BRIDGE is not set
-# CONFIG_NET_DSA is not set
-# CONFIG_VLAN_8021Q is not set
-# CONFIG_DECNET is not set
-# CONFIG_LLC2 is not set
-# CONFIG_IPX is not set
-# CONFIG_ATALK is not set
-# CONFIG_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_ECONET is not set
-# CONFIG_WAN_ROUTER is not set
-CONFIG_PHONET=m
-CONFIG_NET_SCHED=y
-
-#
-# Queueing/Scheduling
-#
-CONFIG_NET_SCH_CBQ=m
-CONFIG_NET_SCH_HTB=m
-CONFIG_NET_SCH_HFSC=m
-CONFIG_NET_SCH_PRIO=m
-# CONFIG_NET_SCH_MULTIQ is not set
-# CONFIG_NET_SCH_RED is not set
-CONFIG_NET_SCH_SFQ=m
-# CONFIG_NET_SCH_TEQL is not set
-CONFIG_NET_SCH_TBF=m
-# CONFIG_NET_SCH_GRED is not set
-CONFIG_NET_SCH_DSMARK=m
-# CONFIG_NET_SCH_NETEM is not set
-# CONFIG_NET_SCH_INGRESS is not set
-
-#
-# Classification
-#
-CONFIG_NET_CLS=y
-CONFIG_NET_CLS_BASIC=m
-CONFIG_NET_CLS_TCINDEX=m
-# CONFIG_NET_CLS_ROUTE4 is not set
-CONFIG_NET_CLS_FW=m
-CONFIG_NET_CLS_U32=m
-# CONFIG_CLS_U32_PERF is not set
-# CONFIG_CLS_U32_MARK is not set
-CONFIG_NET_CLS_RSVP=m
-# CONFIG_NET_CLS_RSVP6 is not set
-CONFIG_NET_CLS_FLOW=m
-# CONFIG_NET_EMATCH is not set
-CONFIG_NET_CLS_ACT=y
-CONFIG_NET_ACT_POLICE=m
-CONFIG_NET_ACT_GACT=m
-# CONFIG_GACT_PROB is not set
-# CONFIG_NET_ACT_MIRRED is not set
-CONFIG_NET_ACT_IPT=m
-# CONFIG_NET_ACT_NAT is not set
-# CONFIG_NET_ACT_PEDIT is not set
-# CONFIG_NET_ACT_SIMP is not set
-# CONFIG_NET_ACT_SKBEDIT is not set
-# CONFIG_NET_CLS_IND is not set
-CONFIG_NET_SCH_FIFO=y
-
-#
-# Network testing
-#
-# CONFIG_NET_PKTGEN is not set
-# CONFIG_NET_TCPPROBE is not set
-# CONFIG_HAMRADIO is not set
-# CONFIG_CAN is not set
-# CONFIG_IRDA is not set
-CONFIG_BT=m
-CONFIG_BT_L2CAP=m
-CONFIG_BT_SCO=m
-CONFIG_BT_RFCOMM=m
-CONFIG_BT_RFCOMM_TTY=y
-CONFIG_BT_BNEP=m
-CONFIG_BT_BNEP_MC_FILTER=y
-CONFIG_BT_BNEP_PROTO_FILTER=y
-CONFIG_BT_HIDP=m
-
-#
-# Bluetooth device drivers
-#
-# CONFIG_BT_HCIUSB is not set
-# CONFIG_BT_HCIBTUSB is not set
-# CONFIG_BT_HCIBTSDIO is not set
-# CONFIG_BT_HCIUART is not set
-# CONFIG_BT_HCIBCM203X is not set
-# CONFIG_BT_HCIBPA10X is not set
-# CONFIG_BT_HCIBFUSB is not set
-# CONFIG_BT_HCIBRF6150 is not set
-CONFIG_BT_HCIH4P=m
-# CONFIG_BT_HCIVHCI is not set
-# CONFIG_AF_RXRPC is not set
-CONFIG_WIRELESS=y
-CONFIG_CFG80211=y
-CONFIG_NL80211=y
-CONFIG_WIRELESS_OLD_REGULATORY=y
-CONFIG_WIRELESS_EXT=y
-CONFIG_WIRELESS_EXT_SYSFS=y
-CONFIG_MAC80211=m
-
-#
-# Rate control algorithm selection
-#
-# CONFIG_MAC80211_RC_PID is not set
-CONFIG_MAC80211_RC_MINSTREL=y
-# CONFIG_MAC80211_RC_DEFAULT_PID is not set
-CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y
-CONFIG_MAC80211_RC_DEFAULT="minstrel"
-CONFIG_MAC80211_MESH=y
-# CONFIG_MAC80211_LEDS is not set
-# CONFIG_MAC80211_DEBUGFS is not set
-# CONFIG_MAC80211_DEBUG_MENU is not set
-# CONFIG_IEEE80211 is not set
-# CONFIG_RFKILL is not set
-# CONFIG_NET_9P is not set
-
-#
-# Device Drivers
-#
-
-#
-# Generic Driver Options
-#
-CONFIG_UEVENT_HELPER_PATH=""
-CONFIG_STANDALONE=y
-CONFIG_PREVENT_FIRMWARE_BUILD=y
-CONFIG_FW_LOADER=y
-CONFIG_FIRMWARE_IN_KERNEL=y
-CONFIG_EXTRA_FIRMWARE=""
-# CONFIG_DEBUG_DRIVER is not set
-# CONFIG_DEBUG_DEVRES is not set
-# CONFIG_SYS_HYPERVISOR is not set
-CONFIG_CONNECTOR=y
-CONFIG_PROC_EVENTS=y
-CONFIG_MTD=y
-# CONFIG_MTD_DEBUG is not set
-# CONFIG_MTD_CONCAT is not set
-CONFIG_MTD_PARTITIONS=y
-# CONFIG_MTD_REDBOOT_PARTS is not set
-# CONFIG_MTD_CMDLINE_PARTS is not set
-# CONFIG_MTD_AFS_PARTS is not set
-# CONFIG_MTD_AR7_PARTS is not set
-
-#
-# User Modules And Translation Layers
-#
-CONFIG_MTD_CHAR=y
-CONFIG_MTD_BLKDEVS=m
-CONFIG_MTD_BLOCK=m
-CONFIG_MTD_BLOCK_RO=m
-# CONFIG_FTL is not set
-# CONFIG_NFTL is not set
-# CONFIG_INFTL is not set
-# CONFIG_RFD_FTL is not set
-# CONFIG_SSFDC is not set
-CONFIG_MTD_OOPS=y
-
-#
-# RAM/ROM/Flash chip drivers
-#
-# CONFIG_MTD_CFI is not set
-# CONFIG_MTD_JEDECPROBE is not set
-CONFIG_MTD_MAP_BANK_WIDTH_1=y
-CONFIG_MTD_MAP_BANK_WIDTH_2=y
-CONFIG_MTD_MAP_BANK_WIDTH_4=y
-# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
-CONFIG_MTD_CFI_I1=y
-CONFIG_MTD_CFI_I2=y
-# CONFIG_MTD_CFI_I4 is not set
-# CONFIG_MTD_CFI_I8 is not set
-# CONFIG_MTD_RAM is not set
-# CONFIG_MTD_ROM is not set
-# CONFIG_MTD_ABSENT is not set
-
-#
-# Mapping drivers for chip access
-#
-# CONFIG_MTD_COMPLEX_MAPPINGS is not set
-# CONFIG_MTD_PLATRAM is not set
-
-#
-# Self-contained MTD device drivers
-#
-# CONFIG_MTD_DATAFLASH is not set
-# CONFIG_MTD_M25P80 is not set
-# CONFIG_MTD_SLRAM is not set
-# CONFIG_MTD_PHRAM is not set
-# CONFIG_MTD_MTDRAM is not set
-CONFIG_MTD_BLOCK2MTD=m
-
-#
-# Disk-On-Chip Device Drivers
-#
-# CONFIG_MTD_DOC2000 is not set
-# CONFIG_MTD_DOC2001 is not set
-# CONFIG_MTD_DOC2001PLUS is not set
-CONFIG_MTD_NAND=m
-# CONFIG_MTD_NAND_VERIFY_WRITE is not set
-# CONFIG_MTD_NAND_ECC_SMC is not set
-# CONFIG_MTD_NAND_MUSEUM_IDS is not set
-# CONFIG_MTD_NAND_GPIO is not set
-# CONFIG_MTD_NAND_OMAP2 is not set
-CONFIG_MTD_NAND_IDS=m
-# CONFIG_MTD_NAND_DISKONCHIP is not set
-CONFIG_MTD_NAND_NANDSIM=m
-# CONFIG_MTD_NAND_PLATFORM is not set
-# CONFIG_MTD_ALAUDA is not set
-CONFIG_MTD_ONENAND=y
-# CONFIG_MTD_ONENAND_VERIFY_WRITE is not set
-# CONFIG_MTD_ONENAND_GENERIC is not set
-CONFIG_MTD_ONENAND_OMAP2=y
-# CONFIG_MTD_ONENAND_OTP is not set
-# CONFIG_MTD_ONENAND_2X_PROGRAM is not set
-# CONFIG_MTD_ONENAND_SIM is not set
-
-#
-# UBI - Unsorted block images
-#
-CONFIG_MTD_UBI=y
-CONFIG_MTD_UBI_WL_THRESHOLD=4096
-CONFIG_MTD_UBI_BEB_RESERVE=1
-# CONFIG_MTD_UBI_GLUEBI is not set
-
-#
-# UBI debugging options
-#
-# CONFIG_MTD_UBI_DEBUG is not set
-# CONFIG_PARPORT is not set
-CONFIG_BLK_DEV=y
-# CONFIG_BLK_DEV_COW_COMMON is not set
-CONFIG_BLK_DEV_LOOP=y
-# CONFIG_BLK_DEV_CRYPTOLOOP is not set
-CONFIG_BLK_DEV_NBD=m
-# CONFIG_BLK_DEV_UB is not set
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_COUNT=16
-CONFIG_BLK_DEV_RAM_SIZE=16384
-# CONFIG_BLK_DEV_XIP is not set
-# CONFIG_CDROM_PKTCDVD is not set
-# CONFIG_ATA_OVER_ETH is not set
-CONFIG_MISC_DEVICES=y
-# CONFIG_EEPROM_93CX6 is not set
-CONFIG_NOKIA_AV_DETECT=m
-# CONFIG_ICS932S401 is not set
-CONFIG_OMAP_STI=y
-CONFIG_OMAP_STI_CONSOLE=y
-# CONFIG_ENCLOSURE_SERVICES is not set
-# CONFIG_C2PORT is not set
-CONFIG_OMAP_SSI=m
-CONFIG_SSI_MCSAAB_IMP=m
-CONFIG_SSI_CMT_SPEECH=m
-# CONFIG_SSI_CMT_SPEECH_DEBUG is not set
-CONFIG_SSI_CHAR=m
-# CONFIG_SSI_CHAR_DEBUG is not set
-CONFIG_HAVE_IDE=y
-# CONFIG_IDE is not set
-
-#
-# SCSI device support
-#
-# CONFIG_RAID_ATTRS is not set
-CONFIG_SCSI=m
-CONFIG_SCSI_DMA=y
-# CONFIG_SCSI_TGT is not set
-# CONFIG_SCSI_NETLINK is not set
-CONFIG_SCSI_PROC_FS=y
-
-#
-# SCSI support type (disk, tape, CD-ROM)
-#
-CONFIG_BLK_DEV_SD=m
-# CONFIG_CHR_DEV_ST is not set
-# CONFIG_CHR_DEV_OSST is not set
-# CONFIG_BLK_DEV_SR is not set
-# CONFIG_CHR_DEV_SG is not set
-# CONFIG_CHR_DEV_SCH is not set
-
-#
-# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
-#
-CONFIG_SCSI_MULTI_LUN=y
-# CONFIG_SCSI_CONSTANTS is not set
-# CONFIG_SCSI_LOGGING is not set
-CONFIG_SCSI_SCAN_ASYNC=y
-CONFIG_SCSI_WAIT_SCAN=m
-
-#
-# SCSI Transports
-#
-# CONFIG_SCSI_SPI_ATTRS is not set
-# CONFIG_SCSI_FC_ATTRS is not set
-# CONFIG_SCSI_ISCSI_ATTRS is not set
-# CONFIG_SCSI_SAS_LIBSAS is not set
-# CONFIG_SCSI_SRP_ATTRS is not set
-CONFIG_SCSI_LOWLEVEL=y
-# CONFIG_ISCSI_TCP is not set
-# CONFIG_SCSI_DEBUG is not set
-# CONFIG_SCSI_DH is not set
-# CONFIG_ATA is not set
-CONFIG_MD=y
-# CONFIG_BLK_DEV_MD is not set
-CONFIG_BLK_DEV_DM=m
-# CONFIG_DM_DEBUG is not set
-CONFIG_DM_CRYPT=m
-CONFIG_DM_LOOP=m
-# CONFIG_DM_SNAPSHOT is not set
-# CONFIG_DM_MIRROR is not set
-# CONFIG_DM_ZERO is not set
-# CONFIG_DM_MULTIPATH is not set
-# CONFIG_DM_DELAY is not set
-# CONFIG_DM_UEVENT is not set
-CONFIG_NETDEVICES=y
-# CONFIG_IFB is not set
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_MACVLAN is not set
-# CONFIG_EQUALIZER is not set
-CONFIG_TUN=m
-# CONFIG_VETH is not set
-# CONFIG_PHYLIB is not set
-CONFIG_NET_ETHERNET=y
-CONFIG_MII=m
-# CONFIG_AX88796 is not set
-CONFIG_SMC91X=m
-# CONFIG_DM9000 is not set
-# CONFIG_ENC28J60 is not set
-# CONFIG_SMC911X is not set
-# CONFIG_IBM_NEW_EMAC_ZMII is not set
-# CONFIG_IBM_NEW_EMAC_RGMII is not set
-# CONFIG_IBM_NEW_EMAC_TAH is not set
-# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
-# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
-# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
-# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
-# CONFIG_B44 is not set
-# CONFIG_NETDEV_1000 is not set
-# CONFIG_NETDEV_10000 is not set
-
-#
-# Wireless LAN
-#
-# CONFIG_WLAN_PRE80211 is not set
-CONFIG_WLAN_80211=y
-# CONFIG_LIBERTAS is not set
-# CONFIG_LIBERTAS_THINFIRM is not set
-# CONFIG_USB_ZD1201 is not set
-# CONFIG_USB_NET_RNDIS_WLAN is not set
-# CONFIG_RTL8187 is not set
-# CONFIG_MAC80211_HWSIM is not set
-# CONFIG_P54_COMMON is not set
-# CONFIG_IWLWIFI_LEDS is not set
-# CONFIG_HOSTAP is not set
-# CONFIG_B43 is not set
-# CONFIG_B43LEGACY is not set
-# CONFIG_ZD1211RW is not set
-# CONFIG_RT2X00 is not set
-CONFIG_WL12XX=y
-CONFIG_WL1251=m
-# CONFIG_WL1271 is not set
-
-#
-# USB Network Adapters
-#
-# CONFIG_USB_CATC is not set
-# CONFIG_USB_KAWETH is not set
-# CONFIG_USB_PEGASUS is not set
-# CONFIG_USB_RTL8150 is not set
-# CONFIG_USB_USBNET is not set
-# CONFIG_WAN is not set
-CONFIG_PPP=m
-# CONFIG_PPP_MULTILINK is not set
-CONFIG_PPP_FILTER=y
-CONFIG_PPP_ASYNC=m
-# CONFIG_PPP_SYNC_TTY is not set
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_BSDCOMP=m
-CONFIG_PPP_MPPE=m
-CONFIG_PPPOE=m
-CONFIG_PPPOL2TP=m
-CONFIG_SLIP=m
-CONFIG_SLIP_COMPRESSED=y
-CONFIG_SLHC=m
-CONFIG_SLIP_SMART=y
-# CONFIG_SLIP_MODE_SLIP6 is not set
-# CONFIG_NETCONSOLE is not set
-# CONFIG_NETPOLL is not set
-# CONFIG_NET_POLL_CONTROLLER is not set
-# CONFIG_ISDN is not set
-
-#
-# Input device support
-#
-CONFIG_INPUT=y
-# CONFIG_INPUT_FF_MEMLESS is not set
-# CONFIG_INPUT_POLLDEV is not set
-
-#
-# Userland interfaces
-#
-CONFIG_INPUT_MOUSEDEV=m
-CONFIG_INPUT_MOUSEDEV_PSAUX=y
-CONFIG_INPUT_MOUSEDEV_SCREEN_X=800
-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=480
-CONFIG_INPUT_JOYDEV=m
-CONFIG_INPUT_EVDEV=y
-# CONFIG_INPUT_EVBUG is not set
-
-#
-# Input Device Drivers
-#
-CONFIG_INPUT_KEYBOARD=y
-# CONFIG_KEYBOARD_ATKBD is not set
-# CONFIG_KEYBOARD_SUNKBD is not set
-# CONFIG_KEYBOARD_LKKBD is not set
-# CONFIG_KEYBOARD_XTKBD is not set
-# CONFIG_KEYBOARD_NEWTON is not set
-# CONFIG_KEYBOARD_STOWAWAY is not set
-CONFIG_KEYBOARD_TWL4030=y
-# CONFIG_KEYBOARD_LM8323 is not set
-# CONFIG_KEYBOARD_GPIO is not set
-# CONFIG_INPUT_MOUSE is not set
-# CONFIG_INPUT_JOYSTICK is not set
-# CONFIG_INPUT_TABLET is not set
-CONFIG_INPUT_TOUCHSCREEN=y
-# CONFIG_TOUCHSCREEN_ADS7846 is not set
-# CONFIG_TOUCHSCREEN_FUJITSU is not set
-# CONFIG_TOUCHSCREEN_GUNZE is not set
-# CONFIG_TOUCHSCREEN_ELO is not set
-# CONFIG_TOUCHSCREEN_MTOUCH is not set
-# CONFIG_TOUCHSCREEN_INEXIO is not set
-# CONFIG_TOUCHSCREEN_MK712 is not set
-# CONFIG_TOUCHSCREEN_PENMOUNT is not set
-# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
-# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
-CONFIG_TOUCHSCREEN_TSC2005=m
-# CONFIG_TOUCHSCREEN_TSC210X is not set
-# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set
-# CONFIG_TOUCHSCREEN_TOUCHIT213 is not set
-CONFIG_INPUT_LIRC=y
-CONFIG_LIRC_DEV=m
-CONFIG_LIRC_RX51=m
-CONFIG_INPUT_MISC=y
-# CONFIG_INPUT_ATI_REMOTE is not set
-# CONFIG_INPUT_ATI_REMOTE2 is not set
-# CONFIG_INPUT_KEYSPAN_REMOTE is not set
-# CONFIG_INPUT_POWERMATE is not set
-# CONFIG_INPUT_YEALINK is not set
-# CONFIG_INPUT_CM109 is not set
-CONFIG_INPUT_UINPUT=m
-
-#
-# Hardware I/O ports
-#
-# CONFIG_SERIO is not set
-# CONFIG_GAMEPORT is not set
-
-#
-# Character devices
-#
-CONFIG_VT=y
-CONFIG_CONSOLE_TRANSLATIONS=y
-CONFIG_VT_CONSOLE=y
-CONFIG_HW_CONSOLE=y
-# CONFIG_VT_HW_CONSOLE_BINDING is not set
-CONFIG_DEVKMEM=y
-# CONFIG_SERIAL_NONSTANDARD is not set
-
-#
-# Serial drivers
-#
-CONFIG_SERIAL_8250=y
-CONFIG_SERIAL_8250_CONSOLE=y
-CONFIG_SERIAL_8250_NR_UARTS=4
-CONFIG_SERIAL_8250_RUNTIME_UARTS=4
-# CONFIG_SERIAL_8250_EXTENDED is not set
-
-#
-# Non-8250 serial port support
-#
-CONFIG_SERIAL_CORE=y
-CONFIG_SERIAL_CORE_CONSOLE=y
-CONFIG_UNIX98_PTYS=y
-# CONFIG_LEGACY_PTYS is not set
-# CONFIG_IPMI_HANDLER is not set
-CONFIG_HW_RANDOM=y
-CONFIG_HW_RANDOM_OMAP3_ROM=y
-# CONFIG_NVRAM is not set
-# CONFIG_R3964 is not set
-# CONFIG_RAW_DRIVER is not set
-# CONFIG_TCG_TPM is not set
-CONFIG_I2C=y
-CONFIG_I2C_BOARDINFO=y
-CONFIG_I2C_CHARDEV=y
-CONFIG_I2C_HELPER_AUTO=y
-
-#
-# I2C Hardware Bus support
-#
-
-#
-# I2C system bus drivers (mostly embedded / system-on-chip)
-#
-# CONFIG_I2C_GPIO is not set
-# CONFIG_I2C_OCORES is not set
-CONFIG_I2C_OMAP=y
-# CONFIG_I2C_SIMTEC is not set
-
-#
-# External I2C/SMBus adapter drivers
-#
-# CONFIG_I2C_PARPORT_LIGHT is not set
-# CONFIG_I2C_TAOS_EVM is not set
-# CONFIG_I2C_TINY_USB is not set
-
-#
-# Other I2C/SMBus bus drivers
-#
-# CONFIG_I2C_PCA_PLATFORM is not set
-# CONFIG_I2C_STUB is not set
-
-#
-# Miscellaneous I2C Chip support
-#
-# CONFIG_DS1682 is not set
-# CONFIG_AT24 is not set
-# CONFIG_SENSORS_EEPROM is not set
-CONFIG_TPA6130A2=y
-# CONFIG_SENSORS_PCF8574 is not set
-# CONFIG_PCF8575 is not set
-# CONFIG_SENSORS_PCA9539 is not set
-# CONFIG_SENSORS_PCF8591 is not set
-# CONFIG_TPS65010 is not set
-CONFIG_TWL4030_MADC=y
-CONFIG_TWL4030_PWRBUTTON=y
-CONFIG_TWL4030_POWEROFF=y
-# CONFIG_SENSORS_MAX6875 is not set
-# CONFIG_SENSORS_TSL2550 is not set
-CONFIG_SENSORS_TSL2563=m
-# CONFIG_LP5521 is not set
-CONFIG_LIS302DL=m
-# CONFIG_I2C_DEBUG_CORE is not set
-# CONFIG_I2C_DEBUG_ALGO is not set
-# CONFIG_I2C_DEBUG_BUS is not set
-# CONFIG_I2C_DEBUG_CHIP is not set
-CONFIG_SPI=y
-# CONFIG_SPI_DEBUG is not set
-CONFIG_SPI_MASTER=y
-
-#
-# SPI Master Controller Drivers
-#
-# CONFIG_SPI_BITBANG is not set
-CONFIG_SPI_OMAP24XX=y
-
-#
-# SPI Protocol Masters
-#
-# CONFIG_SPI_AT25 is not set
-# CONFIG_SPI_TSC210X is not set
-# CONFIG_SPI_TSC2301 is not set
-# CONFIG_SPI_SPIDEV is not set
-# CONFIG_SPI_TLE62X0 is not set
-CONFIG_ARCH_REQUIRE_GPIOLIB=y
-CONFIG_GPIOLIB=y
-# CONFIG_DEBUG_GPIO is not set
-CONFIG_GPIO_SYSFS=y
-
-#
-# Memory mapped GPIO expanders:
-#
-
-#
-# I2C GPIO expanders:
-#
-# CONFIG_GPIO_MAX732X is not set
-# CONFIG_GPIO_PCA953X is not set
-# CONFIG_GPIO_PCF857X is not set
-CONFIG_GPIO_TWL4030=y
-
-#
-# PCI GPIO expanders:
-#
-
-#
-# SPI GPIO expanders:
-#
-# CONFIG_GPIO_MAX7301 is not set
-# CONFIG_GPIO_MCP23S08 is not set
-# CONFIG_W1 is not set
-CONFIG_POWER_SUPPLY=m
-# CONFIG_POWER_SUPPLY_DEBUG is not set
-# CONFIG_PDA_POWER is not set
-# CONFIG_BATTERY_DS2760 is not set
-# CONFIG_TWL4030_BCI_BATTERY is not set
-CONFIG_BATTERY_BQ27x00=m
-CONFIG_HWMON=y
-# CONFIG_HWMON_VID is not set
-# CONFIG_SENSORS_AD7414 is not set
-# CONFIG_SENSORS_AD7418 is not set
-# CONFIG_SENSORS_ADCXX is not set
-# CONFIG_SENSORS_ADM1021 is not set
-# CONFIG_SENSORS_ADM1025 is not set
-# CONFIG_SENSORS_ADM1026 is not set
-# CONFIG_SENSORS_ADM1029 is not set
-# CONFIG_SENSORS_ADM1031 is not set
-# CONFIG_SENSORS_ADM9240 is not set
-# CONFIG_SENSORS_ADT7462 is not set
-# CONFIG_SENSORS_ADT7470 is not set
-# CONFIG_SENSORS_ADT7473 is not set
-# CONFIG_SENSORS_ATXP1 is not set
-# CONFIG_SENSORS_DS1621 is not set
-# CONFIG_SENSORS_F71805F is not set
-# CONFIG_SENSORS_F71882FG is not set
-# CONFIG_SENSORS_F75375S is not set
-# CONFIG_SENSORS_GL518SM is not set
-# CONFIG_SENSORS_GL520SM is not set
-# CONFIG_SENSORS_IT87 is not set
-# CONFIG_SENSORS_LM63 is not set
-# CONFIG_SENSORS_LM70 is not set
-# CONFIG_SENSORS_LM75 is not set
-# CONFIG_SENSORS_LM77 is not set
-# CONFIG_SENSORS_LM78 is not set
-# CONFIG_SENSORS_LM80 is not set
-# CONFIG_SENSORS_LM83 is not set
-# CONFIG_SENSORS_LM85 is not set
-# CONFIG_SENSORS_LM87 is not set
-# CONFIG_SENSORS_LM90 is not set
-# CONFIG_SENSORS_LM92 is not set
-# CONFIG_SENSORS_LM93 is not set
-# CONFIG_SENSORS_MAX1111 is not set
-# CONFIG_SENSORS_MAX1619 is not set
-# CONFIG_SENSORS_MAX6650 is not set
-# CONFIG_SENSORS_PC87360 is not set
-# CONFIG_SENSORS_PC87427 is not set
-# CONFIG_SENSORS_DME1737 is not set
-# CONFIG_SENSORS_SMSC47M1 is not set
-# CONFIG_SENSORS_SMSC47M192 is not set
-# CONFIG_SENSORS_SMSC47B397 is not set
-# CONFIG_SENSORS_ADS7828 is not set
-# CONFIG_SENSORS_THMC50 is not set
-# CONFIG_SENSORS_VT1211 is not set
-# CONFIG_SENSORS_W83781D is not set
-# CONFIG_SENSORS_W83791D is not set
-# CONFIG_SENSORS_W83792D is not set
-# CONFIG_SENSORS_W83793 is not set
-# CONFIG_SENSORS_W83L785TS is not set
-# CONFIG_SENSORS_W83L786NG is not set
-# CONFIG_SENSORS_W83627HF is not set
-# CONFIG_SENSORS_W83627EHF is not set
-# CONFIG_SENSORS_TSC210X is not set
-CONFIG_SENSORS_OMAP34XX=y
-# CONFIG_HWMON_DEBUG_CHIP is not set
-# CONFIG_THERMAL is not set
-# CONFIG_THERMAL_HWMON is not set
-CONFIG_WATCHDOG=y
-# CONFIG_WATCHDOG_NOWAYOUT is not set
-
-#
-# Watchdog Device Drivers
-#
-# CONFIG_SOFT_WATCHDOG is not set
-CONFIG_OMAP_WATCHDOG=m
-CONFIG_TWL4030_WATCHDOG=m
-
-#
-# USB-based Watchdog Cards
-#
-# CONFIG_USBPCWATCHDOG is not set
-CONFIG_SSB_POSSIBLE=y
-
-#
-# Sonics Silicon Backplane
-#
-# CONFIG_SSB is not set
-
-#
-# Multifunction device drivers
-#
-# CONFIG_MFD_CORE is not set
-# CONFIG_MFD_SM501 is not set
-# CONFIG_MFD_ASIC3 is not set
-# CONFIG_HTC_EGPIO is not set
-# CONFIG_HTC_PASIC3 is not set
-CONFIG_TWL4030_CORE=y
-CONFIG_TWL4030_POWER=y
-# CONFIG_MFD_TMIO is not set
-# CONFIG_MFD_T7L66XB is not set
-# CONFIG_MFD_TC6387XB is not set
-# CONFIG_MFD_TC6393XB is not set
-# CONFIG_PMIC_DA903X is not set
-# CONFIG_MFD_WM8400 is not set
-# CONFIG_MFD_WM8350_I2C is not set
-
-#
-# Multimedia devices
-#
-
-#
-# Multimedia core support
-#
-CONFIG_VIDEO_DEV=m
-CONFIG_VIDEO_V4L2_COMMON=m
-CONFIG_VIDEO_ALLOW_V4L1=y
-CONFIG_VIDEO_V4L1_COMPAT=y
-# CONFIG_DVB_CORE is not set
-CONFIG_VIDEO_MEDIA=m
-
-#
-# Multimedia drivers
-#
-# CONFIG_MEDIA_ATTACH is not set
-CONFIG_MEDIA_TUNER=m
-CONFIG_MEDIA_TUNER_CUSTOMIZE=y
-# CONFIG_MEDIA_TUNER_SIMPLE is not set
-# CONFIG_MEDIA_TUNER_TDA8290 is not set
-# CONFIG_MEDIA_TUNER_TDA827X is not set
-# CONFIG_MEDIA_TUNER_TDA18271 is not set
-# CONFIG_MEDIA_TUNER_TDA9887 is not set
-# CONFIG_MEDIA_TUNER_TEA5761 is not set
-# CONFIG_MEDIA_TUNER_TEA5767 is not set
-# CONFIG_MEDIA_TUNER_MT20XX is not set
-# CONFIG_MEDIA_TUNER_MT2060 is not set
-# CONFIG_MEDIA_TUNER_MT2266 is not set
-# CONFIG_MEDIA_TUNER_MT2131 is not set
-# CONFIG_MEDIA_TUNER_QT1010 is not set
-# CONFIG_MEDIA_TUNER_XC2028 is not set
-# CONFIG_MEDIA_TUNER_XC5000 is not set
-# CONFIG_MEDIA_TUNER_MXL5005S is not set
-# CONFIG_MEDIA_TUNER_MXL5007T is not set
-CONFIG_VIDEO_V4L2=m
-CONFIG_VIDEO_V4L1=m
-CONFIG_VIDEOBUF_GEN=m
-CONFIG_VIDEOBUF_DMA_SG=m
-CONFIG_VIDEO_CAPTURE_DRIVERS=y
-# CONFIG_VIDEO_ADV_DEBUG is not set
-# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
-# CONFIG_VIDEO_HELPER_CHIPS_AUTO is not set
-
-#
-# Encoders/decoders and other helper chips
-#
-
-#
-# Audio decoders
-#
-# CONFIG_VIDEO_TVAUDIO is not set
-# CONFIG_VIDEO_TDA7432 is not set
-# CONFIG_VIDEO_TDA9840 is not set
-# CONFIG_VIDEO_TDA9875 is not set
-# CONFIG_VIDEO_TEA6415C is not set
-# CONFIG_VIDEO_TEA6420 is not set
-# CONFIG_VIDEO_MSP3400 is not set
-# CONFIG_VIDEO_CS5345 is not set
-# CONFIG_VIDEO_CS53L32A is not set
-# CONFIG_VIDEO_M52790 is not set
-# CONFIG_VIDEO_TLV320AIC23B is not set
-# CONFIG_VIDEO_WM8775 is not set
-# CONFIG_VIDEO_WM8739 is not set
-# CONFIG_VIDEO_VP27SMPX is not set
-
-#
-# Video decoders
-#
-# CONFIG_VIDEO_BT819 is not set
-# CONFIG_VIDEO_BT856 is not set
-# CONFIG_VIDEO_BT866 is not set
-# CONFIG_VIDEO_KS0127 is not set
-# CONFIG_VIDEO_OV7670 is not set
-# CONFIG_VIDEO_TCM825X is not set
-CONFIG_VIDEO_ET8EK8=m
-CONFIG_VIDEO_AD5820=m
-CONFIG_VIDEO_ADP1653=m
-# CONFIG_VIDEO_SAA7110 is not set
-# CONFIG_VIDEO_SAA7111 is not set
-# CONFIG_VIDEO_SAA7114 is not set
-# CONFIG_VIDEO_SAA711X is not set
-# CONFIG_VIDEO_SAA717X is not set
-# CONFIG_VIDEO_SAA7191 is not set
-# CONFIG_VIDEO_TVP5150 is not set
-# CONFIG_VIDEO_VPX3220 is not set
-CONFIG_VIDEO_SMIA_SENSOR=m
-
-#
-# Video and audio decoders
-#
-# CONFIG_VIDEO_CX25840 is not set
-
-#
-# MPEG video encoders
-#
-# CONFIG_VIDEO_CX2341X is not set
-
-#
-# Video encoders
-#
-# CONFIG_VIDEO_SAA7127 is not set
-# CONFIG_VIDEO_SAA7185 is not set
-# CONFIG_VIDEO_ADV7170 is not set
-# CONFIG_VIDEO_ADV7175 is not set
-
-#
-# Video improvement chips
-#
-# CONFIG_VIDEO_UPD64031A is not set
-# CONFIG_VIDEO_UPD64083 is not set
-# CONFIG_VIDEO_VIVI is not set
-# CONFIG_VIDEO_CPIA is not set
-# CONFIG_VIDEO_CPIA2 is not set
-# CONFIG_VIDEO_SAA5246A is not set
-# CONFIG_VIDEO_SAA5249 is not set
-CONFIG_VIDEO_OMAP3=m
-CONFIG_VIDEO_SMIAREGS=m
-# CONFIG_SOC_CAMERA is not set
-CONFIG_V4L_USB_DRIVERS=y
-CONFIG_USB_VIDEO_CLASS=m
-CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y
-CONFIG_USB_GSPCA=m
-# CONFIG_USB_M5602 is not set
-# CONFIG_USB_GSPCA_CONEX is not set
-# CONFIG_USB_GSPCA_ETOMS is not set
-# CONFIG_USB_GSPCA_FINEPIX is not set
-# CONFIG_USB_GSPCA_MARS is not set
-# CONFIG_USB_GSPCA_OV519 is not set
-# CONFIG_USB_GSPCA_PAC207 is not set
-# CONFIG_USB_GSPCA_PAC7311 is not set
-# CONFIG_USB_GSPCA_SONIXB is not set
-# CONFIG_USB_GSPCA_SONIXJ is not set
-# CONFIG_USB_GSPCA_SPCA500 is not set
-# CONFIG_USB_GSPCA_SPCA501 is not set
-# CONFIG_USB_GSPCA_SPCA505 is not set
-# CONFIG_USB_GSPCA_SPCA506 is not set
-# CONFIG_USB_GSPCA_SPCA508 is not set
-# CONFIG_USB_GSPCA_SPCA561 is not set
-# CONFIG_USB_GSPCA_STK014 is not set
-# CONFIG_USB_GSPCA_SUNPLUS is not set
-# CONFIG_USB_GSPCA_T613 is not set
-# CONFIG_USB_GSPCA_TV8532 is not set
-# CONFIG_USB_GSPCA_VC032X is not set
-# CONFIG_USB_GSPCA_ZC3XX is not set
-# CONFIG_VIDEO_PVRUSB2 is not set
-# CONFIG_VIDEO_EM28XX is not set
-# CONFIG_VIDEO_USBVISION is not set
-# CONFIG_USB_VICAM is not set
-# CONFIG_USB_IBMCAM is not set
-# CONFIG_USB_KONICAWC is not set
-# CONFIG_USB_QUICKCAM_MESSENGER is not set
-# CONFIG_USB_ET61X251 is not set
-# CONFIG_VIDEO_OVCAMCHIP is not set
-# CONFIG_USB_OV511 is not set
-# CONFIG_USB_SE401 is not set
-# CONFIG_USB_SN9C102 is not set
-# CONFIG_USB_STV680 is not set
-# CONFIG_USB_ZC0301 is not set
-# CONFIG_USB_PWC is not set
-# CONFIG_USB_ZR364XX is not set
-# CONFIG_USB_STKWEBCAM is not set
-# CONFIG_USB_S2255 is not set
-CONFIG_RADIO_ADAPTERS=y
-CONFIG_I2C_SI4713=m
-# CONFIG_USB_DSBR is not set
-# CONFIG_USB_SI470X is not set
-CONFIG_I2C_BCM2048=m
-# CONFIG_USB_MR800 is not set
-# CONFIG_DAB is not set
-
-#
-# Graphics support
-#
-CONFIG_PVR=m
-CONFIG_PVR_RELEASE=y
-# CONFIG_PVR_DEBUG is not set
-# CONFIG_PVR_TIMING is not set
-# CONFIG_PVR_EXAMPLES is not set
-# CONFIG_VGASTATE is not set
-# CONFIG_VIDEO_OUTPUT_CONTROL is not set
-CONFIG_FB=y
-# CONFIG_FIRMWARE_EDID is not set
-# CONFIG_FB_DDC is not set
-# CONFIG_FB_BOOT_VESA_SUPPORT is not set
-CONFIG_FB_CFB_FILLRECT=y
-CONFIG_FB_CFB_COPYAREA=y
-CONFIG_FB_CFB_IMAGEBLIT=y
-# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
-# CONFIG_FB_SYS_FILLRECT is not set
-# CONFIG_FB_SYS_COPYAREA is not set
-# CONFIG_FB_SYS_IMAGEBLIT is not set
-# CONFIG_FB_FOREIGN_ENDIAN is not set
-# CONFIG_FB_SYS_FOPS is not set
-# CONFIG_FB_SVGALIB is not set
-# CONFIG_FB_MACMODES is not set
-# CONFIG_FB_BACKLIGHT is not set
-# CONFIG_FB_MODE_HELPERS is not set
-# CONFIG_FB_TILEBLITTING is not set
-
-#
-# Frame buffer hardware drivers
-#
-# CONFIG_FB_UVESA is not set
-# CONFIG_FB_S1D13XXX is not set
-# CONFIG_FB_VIRTUAL is not set
-# CONFIG_FB_METRONOME is not set
-# CONFIG_FB_MB862XX is not set
-CONFIG_FB_OMAP_BOOTLOADER_INIT=y
-CONFIG_FB_OMAP_CONSISTENT_DMA_SIZE=14
-CONFIG_OMAP2_DSS=y
-CONFIG_OMAP2_DSS_VRAM_SIZE=0
-# CONFIG_OMAP2_DSS_DEBUG_SUPPORT is not set
-# CONFIG_OMAP2_DSS_RFBI is not set
-CONFIG_OMAP2_DSS_VENC=y
-CONFIG_OMAP2_DSS_SDI=y
-# CONFIG_OMAP2_DSS_DSI is not set
-# CONFIG_OMAP2_DSS_FAKE_VSYNC is not set
-CONFIG_OMAP2_DSS_MIN_FCK_PER_PCK=0
-
-#
-# OMAP2/3 Display Device Drivers
-#
-# CONFIG_PANEL_NEVADA is not set
-CONFIG_PANEL_ACX565AKM=y
-# CONFIG_PANEL_GENERIC is not set
-# CONFIG_PANEL_SAMSUNG_LTE430WQ_F0C is not set
-# CONFIG_PANEL_SHARP_LS037V7DW01 is not set
-CONFIG_FB_OMAP2=y
-# CONFIG_FB_OMAP2_DEBUG_SUPPORT is not set
-# CONFIG_FB_OMAP2_FORCE_AUTO_UPDATE is not set
-CONFIG_FB_OMAP2_NUM_FBS=3
-# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
-CONFIG_BACKLIGHT_CLASS_DEVICE=y
-# CONFIG_BACKLIGHT_CORGI is not set
-
-#
-# Display device support
-#
-CONFIG_DISPLAY_SUPPORT=y
-
-#
-# Display hardware drivers
-#
-
-#
-# Console display driver support
-#
-# CONFIG_VGA_CONSOLE is not set
-CONFIG_DUMMY_CONSOLE=y
-# CONFIG_FRAMEBUFFER_CONSOLE is not set
-# CONFIG_LOGO is not set
-CONFIG_SOUND=y
-# CONFIG_SOUND_OSS_CORE is not set
-CONFIG_SND=y
-CONFIG_SND_TIMER=y
-CONFIG_SND_PCM=y
-CONFIG_SND_JACK=y
-# CONFIG_SND_SEQUENCER is not set
-# CONFIG_SND_MIXER_OSS is not set
-# CONFIG_SND_PCM_OSS is not set
-# CONFIG_SND_DYNAMIC_MINORS is not set
-CONFIG_SND_SUPPORT_OLD_API=y
-CONFIG_SND_VERBOSE_PROCFS=y
-# CONFIG_SND_VERBOSE_PRINTK is not set
-# CONFIG_SND_DEBUG is not set
-CONFIG_SND_DRIVERS=y
-# CONFIG_SND_DUMMY is not set
-# CONFIG_SND_MTPAV is not set
-# CONFIG_SND_SERIAL_U16550 is not set
-# CONFIG_SND_MPU401 is not set
-CONFIG_SND_ARM=y
-CONFIG_SND_SPI=y
-# CONFIG_SND_USB is not set
-CONFIG_SND_SOC=y
-CONFIG_SND_OMAP_SOC=y
-CONFIG_SND_OMAP_SOC_MCBSP=y
-CONFIG_SND_OMAP_SOC_RX51=y
-# CONFIG_SND_SOC_ALL_CODECS is not set
-CONFIG_SND_SOC_TLV320AIC3X=y
-# CONFIG_SOUND_PRIME is not set
-CONFIG_HID_SUPPORT=y
-CONFIG_HID=m
-# CONFIG_HID_DEBUG is not set
-# CONFIG_HIDRAW is not set
-
-#
-# USB Input Devices
-#
-CONFIG_USB_HID=m
-# CONFIG_HID_PID is not set
-# CONFIG_USB_HIDDEV is not set
-
-#
-# USB HID Boot Protocol drivers
-#
-# CONFIG_USB_KBD is not set
-# CONFIG_USB_MOUSE is not set
-
-#
-# Special HID drivers
-#
-# CONFIG_HID_COMPAT is not set
-# CONFIG_HID_A4TECH is not set
-# CONFIG_HID_APPLE is not set
-# CONFIG_HID_BELKIN is not set
-# CONFIG_HID_BRIGHT is not set
-# CONFIG_HID_CHERRY is not set
-# CONFIG_HID_CHICONY is not set
-# CONFIG_HID_CYPRESS is not set
-# CONFIG_HID_DELL is not set
-# CONFIG_HID_EZKEY is not set
-# CONFIG_HID_GYRATION is not set
-# CONFIG_HID_LOGITECH is not set
-# CONFIG_HID_MICROSOFT is not set
-# CONFIG_HID_MONTEREY is not set
-# CONFIG_HID_PANTHERLORD is not set
-# CONFIG_HID_PETALYNX is not set
-# CONFIG_HID_SAMSUNG is not set
-# CONFIG_HID_SONY is not set
-# CONFIG_HID_SUNPLUS is not set
-# CONFIG_THRUSTMASTER_FF is not set
-# CONFIG_ZEROPLUS_FF is not set
-CONFIG_USB_SUPPORT=y
-CONFIG_USB_ARCH_HAS_HCD=y
-CONFIG_USB_ARCH_HAS_OHCI=y
-CONFIG_USB_ARCH_HAS_EHCI=y
-CONFIG_USB=y
-# CONFIG_USB_DEBUG is not set
-# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set
-
-#
-# Miscellaneous USB options
-#
-CONFIG_USB_DEVICEFS=y
-# CONFIG_USB_DEVICE_CLASS is not set
-CONFIG_USB_DYNAMIC_MINORS=y
-CONFIG_USB_SUSPEND=y
-CONFIG_USB_OTG=y
-CONFIG_USB_OTG_WHITELIST=y
-# CONFIG_USB_OTG_BLACKLIST_HUB is not set
-CONFIG_USB_MON=y
-# CONFIG_USB_WUSB is not set
-# CONFIG_USB_WUSB_CBAF is not set
-
-#
-# USB Host Controller Drivers
-#
-# CONFIG_USB_C67X00_HCD is not set
-CONFIG_USB_EHCI_HCD=m
-CONFIG_OMAP_EHCI_PHY_MODE=y
-# CONFIG_OMAP_EHCI_TLL_MODE is not set
-# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
-# CONFIG_USB_EHCI_TT_NEWSCHED is not set
-# CONFIG_USB_ISP116X_HCD is not set
-CONFIG_USB_OHCI_HCD=m
-# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
-# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
-CONFIG_USB_OHCI_LITTLE_ENDIAN=y
-# CONFIG_USB_SL811_HCD is not set
-# CONFIG_USB_R8A66597_HCD is not set
-# CONFIG_USB_HWA_HCD is not set
-CONFIG_USB_MUSB_HDRC=y
-CONFIG_USB_MUSB_SOC=y
-
-#
-# OMAP 343x high speed USB support
-#
-# CONFIG_USB_MUSB_HOST is not set
-# CONFIG_USB_MUSB_PERIPHERAL is not set
-CONFIG_USB_MUSB_OTG=y
-CONFIG_USB_GADGET_MUSB_HDRC=y
-CONFIG_USB_MUSB_HDRC_HCD=y
-# CONFIG_MUSB_PIO_ONLY is not set
-CONFIG_USB_INVENTRA_DMA=y
-# CONFIG_USB_TI_CPPI_DMA is not set
-CONFIG_USB_MUSB_DEBUG=y
-CONFIG_MUSB_PROC_FS=y
-
-#
-# USB Device Class drivers
-#
-CONFIG_USB_ACM=m
-CONFIG_USB_PRINTER=m
-CONFIG_USB_WDM=m
-CONFIG_USB_TMC=m
-
-#
-# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed;
-#
-
-#
-# see USB_STORAGE Help for more information
-#
-CONFIG_USB_STORAGE=m
-# CONFIG_USB_STORAGE_DEBUG is not set
-# CONFIG_USB_STORAGE_DATAFAB is not set
-# CONFIG_USB_STORAGE_FREECOM is not set
-# CONFIG_USB_STORAGE_ISD200 is not set
-# CONFIG_USB_STORAGE_DPCM is not set
-# CONFIG_USB_STORAGE_USBAT is not set
-# CONFIG_USB_STORAGE_SDDR09 is not set
-# CONFIG_USB_STORAGE_SDDR55 is not set
-# CONFIG_USB_STORAGE_JUMPSHOT is not set
-# CONFIG_USB_STORAGE_ALAUDA is not set
-# CONFIG_USB_STORAGE_ONETOUCH is not set
-# CONFIG_USB_STORAGE_KARMA is not set
-# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
-CONFIG_USB_LIBUSUAL=y
-
-#
-# USB Imaging devices
-#
-# CONFIG_USB_MDC800 is not set
-# CONFIG_USB_MICROTEK is not set
-
-#
-# USB port drivers
-#
-CONFIG_USB_SERIAL=m
-# CONFIG_USB_EZUSB is not set
-CONFIG_USB_SERIAL_GENERIC=y
-# CONFIG_USB_SERIAL_AIRCABLE is not set
-# CONFIG_USB_SERIAL_ARK3116 is not set
-# CONFIG_USB_SERIAL_BELKIN is not set
-# CONFIG_USB_SERIAL_CH341 is not set
-# CONFIG_USB_SERIAL_WHITEHEAT is not set
-# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
-# CONFIG_USB_SERIAL_CP2101 is not set
-# CONFIG_USB_SERIAL_CYPRESS_M8 is not set
-# CONFIG_USB_SERIAL_EMPEG is not set
-CONFIG_USB_SERIAL_FTDI_SIO=m
-# CONFIG_USB_SERIAL_FUNSOFT is not set
-# CONFIG_USB_SERIAL_VISOR is not set
-# CONFIG_USB_SERIAL_IPAQ is not set
-# CONFIG_USB_SERIAL_IR is not set
-# CONFIG_USB_SERIAL_EDGEPORT is not set
-# CONFIG_USB_SERIAL_EDGEPORT_TI is not set
-# CONFIG_USB_SERIAL_GARMIN is not set
-# CONFIG_USB_SERIAL_IPW is not set
-# CONFIG_USB_SERIAL_IUU is not set
-# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
-# CONFIG_USB_SERIAL_KEYSPAN is not set
-# CONFIG_USB_SERIAL_KLSI is not set
-# CONFIG_USB_SERIAL_KOBIL_SCT is not set
-# CONFIG_USB_SERIAL_MCT_U232 is not set
-# CONFIG_USB_SERIAL_MOS7720 is not set
-# CONFIG_USB_SERIAL_MOS7840 is not set
-# CONFIG_USB_SERIAL_MOTOROLA is not set
-# CONFIG_USB_SERIAL_NAVMAN is not set
-# CONFIG_USB_SERIAL_PL2303 is not set
-# CONFIG_USB_SERIAL_OTI6858 is not set
-# CONFIG_USB_SERIAL_SPCP8X5 is not set
-# CONFIG_USB_SERIAL_HP4X is not set
-# CONFIG_USB_SERIAL_SAFE is not set
-# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set
-# CONFIG_USB_SERIAL_TI is not set
-# CONFIG_USB_SERIAL_CYBERJACK is not set
-# CONFIG_USB_SERIAL_XIRCOM is not set
-# CONFIG_USB_SERIAL_OPTION is not set
-# CONFIG_USB_SERIAL_OMNINET is not set
-# CONFIG_USB_SERIAL_DEBUG is not set
-
-#
-# USB Miscellaneous drivers
-#
-# CONFIG_USB_EMI62 is not set
-# CONFIG_USB_EMI26 is not set
-# CONFIG_USB_ADUTUX is not set
-# CONFIG_USB_SEVSEG is not set
-# CONFIG_USB_RIO500 is not set
-# CONFIG_USB_LEGOTOWER is not set
-# CONFIG_USB_LCD is not set
-# CONFIG_USB_BERRY_CHARGE is not set
-# CONFIG_USB_LED is not set
-# CONFIG_USB_CYPRESS_CY7C63 is not set
-# CONFIG_USB_CYTHERM is not set
-# CONFIG_USB_PHIDGET is not set
-# CONFIG_USB_IDMOUSE is not set
-# CONFIG_USB_FTDI_ELAN is not set
-# CONFIG_USB_APPLEDISPLAY is not set
-# CONFIG_USB_SISUSBVGA is not set
-# CONFIG_USB_LD is not set
-# CONFIG_USB_TRANCEVIBRATOR is not set
-# CONFIG_USB_IOWARRIOR is not set
-CONFIG_USB_TEST=m
-# CONFIG_USB_ISIGHTFW is not set
-# CONFIG_USB_VST is not set
-CONFIG_USB_GADGET=m
-# CONFIG_USB_GADGET_DEBUG is not set
-# CONFIG_USB_GADGET_DEBUG_FILES is not set
-# CONFIG_USB_GADGET_DEBUG_FS is not set
-CONFIG_USB_GADGET_VBUS_DRAW=2
-CONFIG_USB_GADGET_SELECTED=y
-# CONFIG_USB_GADGET_AT91 is not set
-# CONFIG_USB_GADGET_ATMEL_USBA is not set
-# CONFIG_USB_GADGET_FSL_USB2 is not set
-# CONFIG_USB_GADGET_LH7A40X is not set
-# CONFIG_USB_GADGET_OMAP is not set
-# CONFIG_USB_GADGET_PXA25X is not set
-# CONFIG_USB_GADGET_PXA27X is not set
-# CONFIG_USB_GADGET_S3C2410 is not set
-# CONFIG_USB_GADGET_M66592 is not set
-# CONFIG_USB_GADGET_AMD5536UDC is not set
-# CONFIG_USB_GADGET_FSL_QE is not set
-# CONFIG_USB_GADGET_NET2280 is not set
-# CONFIG_USB_GADGET_GOKU is not set
-# CONFIG_USB_GADGET_DUMMY_HCD is not set
-CONFIG_USB_GADGET_DUALSPEED=y
-CONFIG_USB_ZERO=m
-# CONFIG_USB_ZERO_HNPTEST is not set
-CONFIG_USB_ETH=m
-CONFIG_USB_ETH_RNDIS=y
-# CONFIG_USB_GADGETFS is not set
-CONFIG_USB_FILE_STORAGE=m
-CONFIG_USB_FILE_STORAGE_TEST=y
-CONFIG_USB_G_SERIAL=m
-# CONFIG_USB_MIDI_GADGET is not set
-# CONFIG_USB_G_PRINTER is not set
-# CONFIG_USB_CDC_COMPOSITE is not set
-CONFIG_USB_G_NOKIA=m
-CONFIG_USB_G_SOFTUPD=m
-
-#
-# OTG and related infrastructure
-#
-CONFIG_USB_OTG_UTILS=y
-# CONFIG_USB_GPIO_VBUS is not set
-# CONFIG_ISP1301_OMAP is not set
-CONFIG_TWL4030_USB=y
-CONFIG_USB_IP_COMMON=m
-CONFIG_USB_IP_VHCI_HCD=m
-# CONFIG_USB_IP_HOST is not set
-CONFIG_MMC=m
-# CONFIG_MMC_DEBUG is not set
-CONFIG_MMC_UNSAFE_RESUME=y
-
-#
-# MMC/SD/SDIO Card Drivers
-#
-CONFIG_MMC_BLOCK=m
-# CONFIG_MMC_BLOCK_BOUNCE is not set
-# CONFIG_SDIO_UART is not set
-# CONFIG_MMC_TEST is not set
-
-#
-# MMC/SD/SDIO Host Controller Drivers
-#
-# CONFIG_MMC_SDHCI is not set
-CONFIG_MMC_OMAP_HS=m
-# CONFIG_MMC_SPI is not set
-# CONFIG_MEMSTICK is not set
-# CONFIG_ACCESSIBILITY is not set
-CONFIG_NEW_LEDS=y
-CONFIG_LEDS_CLASS=m
-
-#
-# LED drivers
-#
-# CONFIG_LEDS_OMAP is not set
-# CONFIG_LEDS_OMAP_PWM is not set
-# CONFIG_LEDS_PCA9532 is not set
-# CONFIG_LEDS_GPIO is not set
-# CONFIG_LEDS_PCA955X is not set
-CONFIG_LEDS_TWL4030_VIBRA=m
-CONFIG_LEDS_LP5523=m
-
-#
-# LED Triggers
-#
-CONFIG_LEDS_TRIGGERS=y
-CONFIG_LEDS_TRIGGER_TIMER=y
-CONFIG_LEDS_TRIGGER_HEARTBEAT=y
-# CONFIG_LEDS_TRIGGER_BACKLIGHT is not set
-# CONFIG_LEDS_TRIGGER_DEFAULT_ON is not set
-CONFIG_RTC_LIB=y
-CONFIG_RTC_CLASS=m
-
-#
-# RTC interfaces
-#
-CONFIG_RTC_INTF_SYSFS=y
-CONFIG_RTC_INTF_PROC=y
-CONFIG_RTC_INTF_DEV=y
-# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
-# CONFIG_RTC_DRV_TEST is not set
-
-#
-# I2C RTC drivers
-#
-# CONFIG_RTC_DRV_DS1307 is not set
-# CONFIG_RTC_DRV_DS1374 is not set
-# CONFIG_RTC_DRV_DS1672 is not set
-# CONFIG_RTC_DRV_MAX6900 is not set
-# CONFIG_RTC_DRV_RS5C372 is not set
-# CONFIG_RTC_DRV_ISL1208 is not set
-# CONFIG_RTC_DRV_X1205 is not set
-# CONFIG_RTC_DRV_PCF8563 is not set
-# CONFIG_RTC_DRV_PCF8583 is not set
-# CONFIG_RTC_DRV_M41T80 is not set
-CONFIG_RTC_DRV_TWL4030=m
-# CONFIG_RTC_DRV_S35390A is not set
-# CONFIG_RTC_DRV_FM3130 is not set
-# CONFIG_RTC_DRV_RX8581 is not set
-
-#
-# SPI RTC drivers
-#
-# CONFIG_RTC_DRV_M41T94 is not set
-# CONFIG_RTC_DRV_DS1305 is not set
-# CONFIG_RTC_DRV_DS1390 is not set
-# CONFIG_RTC_DRV_MAX6902 is not set
-# CONFIG_RTC_DRV_R9701 is not set
-# CONFIG_RTC_DRV_RS5C348 is not set
-# CONFIG_RTC_DRV_DS3234 is not set
-
-#
-# Platform RTC drivers
-#
-# CONFIG_RTC_DRV_CMOS is not set
-# CONFIG_RTC_DRV_DS1286 is not set
-# CONFIG_RTC_DRV_DS1511 is not set
-# CONFIG_RTC_DRV_DS1553 is not set
-# CONFIG_RTC_DRV_DS1742 is not set
-# CONFIG_RTC_DRV_STK17TA8 is not set
-# CONFIG_RTC_DRV_M48T86 is not set
-# CONFIG_RTC_DRV_M48T35 is not set
-# CONFIG_RTC_DRV_M48T59 is not set
-# CONFIG_RTC_DRV_BQ4802 is not set
-# CONFIG_RTC_DRV_V3020 is not set
-
-#
-# on-CPU RTC drivers
-#
-# CONFIG_DMADEVICES is not set
-CONFIG_REGULATOR=y
-# CONFIG_REGULATOR_DEBUG is not set
-# CONFIG_REGULATOR_FIXED_VOLTAGE is not set
-# CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set
-# CONFIG_REGULATOR_BQ24022 is not set
-CONFIG_REGULATOR_TWL4030=y
-# CONFIG_UIO is not set
-
-#
-# CBUS support
-#
-# CONFIG_CBUS is not set
-CONFIG_MPU_BRIDGE=m
-CONFIG_BRIDGE_DVFS=y
-CONFIG_BRIDGE_MEMPOOL_SIZE=0x412800
-# CONFIG_BRIDGE_DEBUG is not set
-
-#
-# File systems
-#
-CONFIG_EXT2_FS=m
-# CONFIG_EXT2_FS_XATTR is not set
-# CONFIG_EXT2_FS_XIP is not set
-CONFIG_EXT3_FS=y
-# CONFIG_EXT3_FS_XATTR is not set
-CONFIG_EXT4_FS=m
-# CONFIG_EXT4DEV_COMPAT is not set
-CONFIG_EXT4_FS_XATTR=y
-# CONFIG_EXT4_FS_POSIX_ACL is not set
-# CONFIG_EXT4_FS_SECURITY is not set
-CONFIG_JBD=y
-# CONFIG_JBD_DEBUG is not set
-CONFIG_JBD2=m
-# CONFIG_JBD2_DEBUG is not set
-CONFIG_FS_MBCACHE=m
-CONFIG_REISERFS_FS=m
-# CONFIG_REISERFS_CHECK is not set
-# CONFIG_REISERFS_PROC_INFO is not set
-# CONFIG_REISERFS_FS_XATTR is not set
-# CONFIG_JFS_FS is not set
-# CONFIG_FS_POSIX_ACL is not set
-CONFIG_FILE_LOCKING=y
-CONFIG_XFS_FS=m
-# CONFIG_XFS_QUOTA is not set
-# CONFIG_XFS_POSIX_ACL is not set
-# CONFIG_XFS_RT is not set
-# CONFIG_XFS_DEBUG is not set
-# CONFIG_OCFS2_FS is not set
-CONFIG_DNOTIFY=y
-CONFIG_INOTIFY=y
-CONFIG_INOTIFY_USER=y
-CONFIG_QUOTA=y
-# CONFIG_QUOTA_NETLINK_INTERFACE is not set
-CONFIG_PRINT_QUOTA_WARNING=y
-# CONFIG_QFMT_V1 is not set
-CONFIG_QFMT_V2=y
-CONFIG_QUOTACTL=y
-# CONFIG_AUTOFS_FS is not set
-CONFIG_AUTOFS4_FS=m
-CONFIG_FUSE_FS=m
-
-#
-# CD-ROM/DVD Filesystems
-#
-CONFIG_ISO9660_FS=m
-CONFIG_JOLIET=y
-# CONFIG_ZISOFS is not set
-CONFIG_UDF_FS=m
-CONFIG_UDF_NLS=y
-
-#
-# DOS/FAT/NT Filesystems
-#
-CONFIG_FAT_FS=m
-CONFIG_MSDOS_FS=m
-CONFIG_VFAT_FS=m
-CONFIG_FAT_DEFAULT_CODEPAGE=437
-CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
-CONFIG_NTFS_FS=m
-# CONFIG_NTFS_DEBUG is not set
-# CONFIG_NTFS_RW is not set
-
-#
-# Pseudo filesystems
-#
-CONFIG_PROC_FS=y
-CONFIG_PROC_SYSCTL=y
-CONFIG_PROC_PAGE_MONITOR=y
-CONFIG_SYSFS=y
-CONFIG_TMPFS=y
-# CONFIG_TMPFS_POSIX_ACL is not set
-# CONFIG_HUGETLB_PAGE is not set
-# CONFIG_CONFIGFS_FS is not set
-
-#
-# Layered filesystems
-#
-CONFIG_UNION_FS=m
-# CONFIG_UNION_FS_XATTR is not set
-# CONFIG_UNION_FS_DEBUG is not set
-
-#
-# Miscellaneous filesystems
-#
-# CONFIG_ADFS_FS is not set
-# CONFIG_AFFS_FS is not set
-# CONFIG_HFS_FS is not set
-CONFIG_HFSPLUS_FS=m
-# CONFIG_BEFS_FS is not set
-# CONFIG_BFS_FS is not set
-# CONFIG_EFS_FS is not set
-# CONFIG_JFFS2_FS is not set
-CONFIG_UBIFS_FS=y
-# CONFIG_UBIFS_FS_XATTR is not set
-# CONFIG_UBIFS_FS_ADVANCED_COMPR is not set
-CONFIG_UBIFS_FS_LZO=y
-CONFIG_UBIFS_FS_ZLIB=y
-# CONFIG_UBIFS_FS_DEBUG is not set
-CONFIG_CRAMFS=y
-# CONFIG_VXFS_FS is not set
-# CONFIG_MINIX_FS is not set
-# CONFIG_OMFS_FS is not set
-# CONFIG_HPFS_FS is not set
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_ROMFS_FS is not set
-# CONFIG_SYSV_FS is not set
-# CONFIG_UFS_FS is not set
-CONFIG_NETWORK_FILESYSTEMS=y
-CONFIG_NFS_FS=m
-CONFIG_NFS_V3=y
-# CONFIG_NFS_V3_ACL is not set
-CONFIG_NFS_V4=y
-# CONFIG_NFSD is not set
-CONFIG_LOCKD=m
-CONFIG_LOCKD_V4=y
-CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=m
-CONFIG_SUNRPC_GSS=m
-# CONFIG_SUNRPC_REGISTER_V4 is not set
-CONFIG_RPCSEC_GSS_KRB5=m
-# CONFIG_RPCSEC_GSS_SPKM3 is not set
-# CONFIG_SMB_FS is not set
-CONFIG_CIFS=m
-# CONFIG_CIFS_STATS is not set
-# CONFIG_CIFS_WEAK_PW_HASH is not set
-# CONFIG_CIFS_XATTR is not set
-# CONFIG_CIFS_DEBUG2 is not set
-# CONFIG_CIFS_EXPERIMENTAL is not set
-# CONFIG_NCP_FS is not set
-# CONFIG_CODA_FS is not set
-# CONFIG_AFS_FS is not set
-
-#
-# Partition Types
-#
-CONFIG_PARTITION_ADVANCED=y
-# CONFIG_ACORN_PARTITION is not set
-# CONFIG_OSF_PARTITION is not set
-# CONFIG_AMIGA_PARTITION is not set
-# CONFIG_ATARI_PARTITION is not set
-# CONFIG_MAC_PARTITION is not set
-CONFIG_MSDOS_PARTITION=y
-# CONFIG_BSD_DISKLABEL is not set
-# CONFIG_MINIX_SUBPARTITION is not set
-# CONFIG_SOLARIS_X86_PARTITION is not set
-# CONFIG_UNIXWARE_DISKLABEL is not set
-# CONFIG_LDM_PARTITION is not set
-# CONFIG_SGI_PARTITION is not set
-# CONFIG_ULTRIX_PARTITION is not set
-# CONFIG_SUN_PARTITION is not set
-# CONFIG_KARMA_PARTITION is not set
-CONFIG_EFI_PARTITION=y
-# CONFIG_SYSV68_PARTITION is not set
-CONFIG_NLS=y
-CONFIG_NLS_DEFAULT="iso8859-1"
-CONFIG_NLS_CODEPAGE_437=y
-# CONFIG_NLS_CODEPAGE_737 is not set
-# CONFIG_NLS_CODEPAGE_775 is not set
-CONFIG_NLS_CODEPAGE_850=m
-# CONFIG_NLS_CODEPAGE_852 is not set
-# CONFIG_NLS_CODEPAGE_855 is not set
-# CONFIG_NLS_CODEPAGE_857 is not set
-# CONFIG_NLS_CODEPAGE_860 is not set
-# CONFIG_NLS_CODEPAGE_861 is not set
-# CONFIG_NLS_CODEPAGE_862 is not set
-# CONFIG_NLS_CODEPAGE_863 is not set
-# CONFIG_NLS_CODEPAGE_864 is not set
-# CONFIG_NLS_CODEPAGE_865 is not set
-# CONFIG_NLS_CODEPAGE_866 is not set
-# CONFIG_NLS_CODEPAGE_869 is not set
-# CONFIG_NLS_CODEPAGE_936 is not set
-# CONFIG_NLS_CODEPAGE_950 is not set
-# CONFIG_NLS_CODEPAGE_932 is not set
-# CONFIG_NLS_CODEPAGE_949 is not set
-# CONFIG_NLS_CODEPAGE_874 is not set
-# CONFIG_NLS_ISO8859_8 is not set
-# CONFIG_NLS_CODEPAGE_1250 is not set
-# CONFIG_NLS_CODEPAGE_1251 is not set
-# CONFIG_NLS_ASCII is not set
-CONFIG_NLS_ISO8859_1=y
-# CONFIG_NLS_ISO8859_2 is not set
-# CONFIG_NLS_ISO8859_3 is not set
-# CONFIG_NLS_ISO8859_4 is not set
-# CONFIG_NLS_ISO8859_5 is not set
-# CONFIG_NLS_ISO8859_6 is not set
-# CONFIG_NLS_ISO8859_7 is not set
-# CONFIG_NLS_ISO8859_9 is not set
-# CONFIG_NLS_ISO8859_13 is not set
-# CONFIG_NLS_ISO8859_14 is not set
-CONFIG_NLS_ISO8859_15=m
-# CONFIG_NLS_KOI8_R is not set
-# CONFIG_NLS_KOI8_U is not set
-CONFIG_NLS_UTF8=m
-# CONFIG_DLM is not set
-
-#
-# Kernel hacking
-#
-CONFIG_PRINTK_TIME=y
-CONFIG_ENABLE_WARN_DEPRECATED=y
-CONFIG_ENABLE_MUST_CHECK=y
-CONFIG_FRAME_WARN=1024
-CONFIG_MAGIC_SYSRQ=y
-# CONFIG_UNUSED_SYMBOLS is not set
-CONFIG_DEBUG_FS=y
-# CONFIG_HEADERS_CHECK is not set
-CONFIG_DEBUG_KERNEL=y
-# CONFIG_DEBUG_SHIRQ is not set
-# CONFIG_DETECT_SOFTLOCKUP is not set
-# CONFIG_SCHED_DEBUG is not set
-# CONFIG_SCHEDSTATS is not set
-CONFIG_TIMER_STATS=y
-# CONFIG_DEBUG_OBJECTS is not set
-# CONFIG_SLUB_DEBUG_ON is not set
-# CONFIG_SLUB_STATS is not set
-# CONFIG_DEBUG_PREEMPT is not set
-# CONFIG_DEBUG_RT_MUTEXES is not set
-# CONFIG_RT_MUTEX_TESTER is not set
-# CONFIG_DEBUG_SPINLOCK is not set
-# CONFIG_DEBUG_MUTEXES is not set
-# CONFIG_DEBUG_LOCK_ALLOC is not set
-# CONFIG_PROVE_LOCKING is not set
-# CONFIG_LOCK_STAT is not set
-# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
-# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
-# CONFIG_DEBUG_KOBJECT is not set
-CONFIG_DEBUG_BUGVERBOSE=y
-CONFIG_DEBUG_INFO=y
-# CONFIG_DEBUG_VM is not set
-# CONFIG_DEBUG_WRITECOUNT is not set
-# CONFIG_DEBUG_MEMORY_INIT is not set
-# CONFIG_DEBUG_LIST is not set
-# CONFIG_DEBUG_SG is not set
-CONFIG_FRAME_POINTER=y
-# CONFIG_BOOT_PRINTK_DELAY is not set
-# CONFIG_RCU_TORTURE_TEST is not set
-# CONFIG_RCU_CPU_STALL_DETECTOR is not set
-# CONFIG_KPROBES_SANITY_TEST is not set
-# CONFIG_BACKTRACE_SELF_TEST is not set
-# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
-# CONFIG_LKDTM is not set
-# CONFIG_FAULT_INJECTION is not set
-CONFIG_PANIC_INFO_BUFF=m
-# CONFIG_LATENCYTOP is not set
-# CONFIG_SYSCTL_SYSCALL_CHECK is not set
-CONFIG_HAVE_FUNCTION_TRACER=y
-
-#
-# Tracers
-#
-# CONFIG_FUNCTION_TRACER is not set
-# CONFIG_IRQSOFF_TRACER is not set
-# CONFIG_PREEMPT_TRACER is not set
-# CONFIG_SCHED_TRACER is not set
-# CONFIG_CONTEXT_SWITCH_TRACER is not set
-# CONFIG_BOOT_TRACER is not set
-# CONFIG_STACK_TRACER is not set
-# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
-# CONFIG_SAMPLES is not set
-CONFIG_HAVE_ARCH_KGDB=y
-# CONFIG_KGDB is not set
-# CONFIG_DEBUG_USER is not set
-# CONFIG_DEBUG_ERRORS is not set
-# CONFIG_DEBUG_STACK_USAGE is not set
-# CONFIG_DEBUG_LL is not set
-
-#
-# Security options
-#
-# CONFIG_KEYS is not set
-CONFIG_SECURITY=y
-# CONFIG_SECURITYFS is not set
-# CONFIG_SECURITY_NETWORK is not set
-# CONFIG_SECURITY_FILE_CAPABILITIES is not set
-# CONFIG_SECURITY_ROOTPLUG is not set
-CONFIG_SECURITY_LOWMEM=y
-CONFIG_SECURITY_DEFAULT_MMAP_MIN_ADDR=4096
-CONFIG_CRYPTO=y
-
-#
-# Crypto core or helper
-#
-# CONFIG_CRYPTO_FIPS is not set
-CONFIG_CRYPTO_ALGAPI=y
-CONFIG_CRYPTO_ALGAPI2=y
-CONFIG_CRYPTO_AEAD=m
-CONFIG_CRYPTO_AEAD2=y
-CONFIG_CRYPTO_BLKCIPHER=y
-CONFIG_CRYPTO_BLKCIPHER2=y
-CONFIG_CRYPTO_HASH=m
-CONFIG_CRYPTO_HASH2=y
-CONFIG_CRYPTO_RNG2=y
-CONFIG_CRYPTO_MANAGER=y
-CONFIG_CRYPTO_MANAGER2=y
-# CONFIG_CRYPTO_GF128MUL is not set
-# CONFIG_CRYPTO_NULL is not set
-CONFIG_CRYPTO_CRYPTD=m
-CONFIG_CRYPTO_AUTHENC=m
-# CONFIG_CRYPTO_TEST is not set
-
-#
-# Authenticated Encryption with Associated Data
-#
-# CONFIG_CRYPTO_CCM is not set
-# CONFIG_CRYPTO_GCM is not set
-# CONFIG_CRYPTO_SEQIV is not set
-
-#
-# Block modes
-#
-CONFIG_CRYPTO_CBC=y
-# CONFIG_CRYPTO_CTR is not set
-# CONFIG_CRYPTO_CTS is not set
-CONFIG_CRYPTO_ECB=y
-# CONFIG_CRYPTO_LRW is not set
-CONFIG_CRYPTO_PCBC=m
-# CONFIG_CRYPTO_XTS is not set
-
-#
-# Hash modes
-#
-CONFIG_CRYPTO_HMAC=m
-# CONFIG_CRYPTO_XCBC is not set
-
-#
-# Digest
-#
-# CONFIG_CRYPTO_CRC32C is not set
-# CONFIG_CRYPTO_MD4 is not set
-CONFIG_CRYPTO_MD5=y
-# CONFIG_CRYPTO_MICHAEL_MIC is not set
-# CONFIG_CRYPTO_RMD128 is not set
-# CONFIG_CRYPTO_RMD160 is not set
-# CONFIG_CRYPTO_RMD256 is not set
-# CONFIG_CRYPTO_RMD320 is not set
-CONFIG_CRYPTO_SHA1=m
-CONFIG_CRYPTO_SHA256=m
-CONFIG_CRYPTO_SHA512=m
-# CONFIG_CRYPTO_TGR192 is not set
-# CONFIG_CRYPTO_WP512 is not set
-
-#
-# Ciphers
-#
-CONFIG_CRYPTO_AES=y
-# CONFIG_CRYPTO_ANUBIS is not set
-CONFIG_CRYPTO_ARC4=y
-CONFIG_CRYPTO_BLOWFISH=m
-# CONFIG_CRYPTO_CAMELLIA is not set
-# CONFIG_CRYPTO_CAST5 is not set
-# CONFIG_CRYPTO_CAST6 is not set
-CONFIG_CRYPTO_DES=y
-# CONFIG_CRYPTO_FCRYPT is not set
-# CONFIG_CRYPTO_KHAZAD is not set
-# CONFIG_CRYPTO_SALSA20 is not set
-# CONFIG_CRYPTO_SEED is not set
-# CONFIG_CRYPTO_SERPENT is not set
-# CONFIG_CRYPTO_TEA is not set
-# CONFIG_CRYPTO_TWOFISH is not set
-
-#
-# Compression
-#
-CONFIG_CRYPTO_DEFLATE=y
-CONFIG_CRYPTO_LZO=y
-
-#
-# Random Number Generation
-#
-# CONFIG_CRYPTO_ANSI_CPRNG is not set
-CONFIG_CRYPTO_HW=y
-
-#
-# Library routines
-#
-CONFIG_BITREVERSE=y
-CONFIG_CRC_CCITT=y
-CONFIG_CRC16=y
-# CONFIG_CRC_T10DIF is not set
-CONFIG_CRC_ITU_T=m
-CONFIG_CRC32=y
-CONFIG_CRC7=m
-CONFIG_LIBCRC32C=y
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
-CONFIG_LZO_COMPRESS=y
-CONFIG_LZO_DECOMPRESS=y
-CONFIG_PLIST=y
-CONFIG_HAS_IOMEM=y
-CONFIG_HAS_IOPORT=y
-CONFIG_HAS_DMA=y
diff --git a/kernel-power-2.6.28/debian/rx51power_defconfig b/kernel-power-2.6.28/debian/rx51power_defconfig
new file mode 100644 (file)
index 0000000..caed0f9
--- /dev/null
@@ -0,0 +1,2333 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.28.10maemo-omap1
+# Wed Apr 14 22:22:49 2010
+#
+CONFIG_ARM=y
+CONFIG_SYS_SUPPORTS_APM_EMULATION=y
+CONFIG_GENERIC_GPIO=y
+CONFIG_GENERIC_TIME=y
+CONFIG_GENERIC_CLOCKEVENTS=y
+CONFIG_MMU=y
+# CONFIG_NO_IOPORT is not set
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_STACKTRACE_SUPPORT=y
+CONFIG_HAVE_LATENCYTOP_SUPPORT=y
+CONFIG_LOCKDEP_SUPPORT=y
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+CONFIG_HARDIRQS_SW_RESEND=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+# CONFIG_ARCH_HAS_ILOG2_U32 is not set
+# CONFIG_ARCH_HAS_ILOG2_U64 is not set
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
+CONFIG_OPROFILE_OMAP_GPTIMER=y
+CONFIG_OPROFILE_ARMV7=y
+CONFIG_VECTORS_BASE=0xffff0000
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+
+#
+# General setup
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_LOCK_KERNEL=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+CONFIG_LOCALVERSION=""
+CONFIG_LOCALVERSION_AUTO=y
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=y
+CONFIG_SYSVIPC_SYSCTL=y
+CONFIG_POSIX_MQUEUE=y
+CONFIG_BSD_PROCESS_ACCT=y
+# CONFIG_BSD_PROCESS_ACCT_V3 is not set
+# CONFIG_TASKSTATS is not set
+# CONFIG_AUDIT is not set
+CONFIG_IKCONFIG=m
+CONFIG_IKCONFIG_PROC=y
+CONFIG_LOG_BUF_SHIFT=14
+CONFIG_CGROUPS=y
+# CONFIG_CGROUP_DEBUG is not set
+# CONFIG_CGROUP_NS is not set
+CONFIG_CGROUP_FREEZER=y
+# CONFIG_CGROUP_DEVICE is not set
+CONFIG_GROUP_SCHED=y
+CONFIG_FAIR_GROUP_SCHED=y
+CONFIG_RT_GROUP_SCHED=y
+# CONFIG_USER_SCHED is not set
+CONFIG_CGROUP_SCHED=y
+# CONFIG_CGROUP_CPUACCT is not set
+CONFIG_RESOURCE_COUNTERS=y
+CONFIG_MM_OWNER=y
+CONFIG_CGROUP_MEM_RES_CTLR=y
+CONFIG_SYSFS_DEPRECATED=y
+CONFIG_SYSFS_DEPRECATED_V2=y
+# CONFIG_RELAY is not set
+# CONFIG_NAMESPACES is not set
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_INITRAMFS_SOURCE=""
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_SYSCTL=y
+CONFIG_ANON_INODES=y
+CONFIG_EMBEDDED=y
+CONFIG_UID16=y
+CONFIG_SYSCTL_SYSCALL=y
+CONFIG_KALLSYMS=y
+CONFIG_KALLSYMS_ALL=y
+CONFIG_KALLSYMS_EXTRA_PASS=y
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_EPOLL=y
+CONFIG_SIGNALFD=y
+CONFIG_TIMERFD=y
+CONFIG_EVENTFD=y
+CONFIG_SHMEM=y
+CONFIG_AIO=y
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_SLUB_DEBUG=y
+CONFIG_COMPAT_BRK=y
+# CONFIG_SLAB is not set
+CONFIG_SLUB=y
+# CONFIG_SLOB is not set
+CONFIG_PROFILING=y
+# CONFIG_MARKERS is not set
+CONFIG_OPROFILE=m
+CONFIG_HAVE_OPROFILE=y
+CONFIG_KPROBES=y
+CONFIG_KRETPROBES=y
+CONFIG_HAVE_KPROBES=y
+CONFIG_HAVE_KRETPROBES=y
+CONFIG_HAVE_CLK=y
+CONFIG_HAVE_GENERIC_DMA_COHERENT=y
+CONFIG_SLABINFO=y
+CONFIG_RT_MUTEXES=y
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=0
+CONFIG_MODULES=y
+CONFIG_MODULE_FORCE_LOAD=y
+CONFIG_MODULE_UNLOAD=y
+CONFIG_MODULE_FORCE_UNLOAD=y
+CONFIG_MODVERSIONS=y
+CONFIG_MODULE_SRCVERSION_ALL=y
+CONFIG_KMOD=y
+CONFIG_BLOCK=y
+# CONFIG_LBD is not set
+# CONFIG_BLK_DEV_IO_TRACE is not set
+CONFIG_LSF=y
+# CONFIG_BLK_DEV_BSG is not set
+# CONFIG_BLK_DEV_INTEGRITY is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+# CONFIG_IOSCHED_AS is not set
+# CONFIG_IOSCHED_DEADLINE is not set
+CONFIG_IOSCHED_CFQ=y
+# CONFIG_DEFAULT_AS is not set
+# CONFIG_DEFAULT_DEADLINE is not set
+CONFIG_DEFAULT_CFQ=y
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="cfq"
+CONFIG_CLASSIC_RCU=y
+CONFIG_FREEZER=y
+
+#
+# System Type
+#
+# CONFIG_ARCH_AAEC2000 is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_VERSATILE is not set
+# CONFIG_ARCH_AT91 is not set
+# CONFIG_ARCH_CLPS7500 is not set
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_EP93XX is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_NETX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_IOP13XX is not set
+# CONFIG_ARCH_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IXP23XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_KIRKWOOD is not set
+# CONFIG_ARCH_KS8695 is not set
+# CONFIG_ARCH_NS9XXX is not set
+# CONFIG_ARCH_LOKI is not set
+# CONFIG_ARCH_MV78XX0 is not set
+# CONFIG_ARCH_MXC is not set
+# CONFIG_ARCH_ORION5X is not set
+# CONFIG_ARCH_PNX4008 is not set
+# CONFIG_ARCH_PXA is not set
+# CONFIG_ARCH_RPC is not set
+# CONFIG_ARCH_SA1100 is not set
+# CONFIG_ARCH_S3C2410 is not set
+# CONFIG_ARCH_SHARK is not set
+# CONFIG_ARCH_LH7A40X is not set
+# CONFIG_ARCH_DAVINCI is not set
+CONFIG_ARCH_OMAP=y
+# CONFIG_ARCH_MSM is not set
+
+#
+# TI OMAP Implementations
+#
+CONFIG_ARCH_OMAP_OTG=y
+# CONFIG_ARCH_OMAP1 is not set
+# CONFIG_ARCH_OMAP2 is not set
+CONFIG_ARCH_OMAP3=y
+
+#
+# OMAP Feature Selections
+#
+# CONFIG_OMAP_DEBUG_POWERDOMAIN is not set
+# CONFIG_OMAP_DEBUG_CLOCKDOMAIN is not set
+CONFIG_OMAP_SMARTREFLEX=y
+# CONFIG_OMAP_SMARTREFLEX_TESTING is not set
+CONFIG_OMAP_RESET_CLOCKS=y
+CONFIG_OMAP_BOOT_TAG=y
+CONFIG_OMAP_BOOT_REASON=y
+CONFIG_OMAP_COMPONENT_VERSION=y
+CONFIG_OMAP_GPIO_SWITCH=y
+CONFIG_OMAP_MUX=y
+CONFIG_OMAP_MUX_DEBUG=y
+CONFIG_OMAP_MUX_WARNINGS=y
+CONFIG_OMAP_MCBSP=y
+# CONFIG_OMAP_MMU_FWK is not set
+# CONFIG_OMAP_MBOX_FWK is not set
+CONFIG_OMAP_IOMMU=m
+# CONFIG_OMAP_IOMMU_DEBUG is not set
+# CONFIG_OMAP_MPU_TIMER is not set
+CONFIG_OMAP_32K_TIMER=y
+# CONFIG_OMAP3_DEBOBS is not set
+CONFIG_OMAP_32K_TIMER_HZ=128
+CONFIG_OMAP_TICK_GPTIMER=1
+CONFIG_OMAP_DM_TIMER=y
+# CONFIG_OMAP_LL_DEBUG_UART1 is not set
+# CONFIG_OMAP_LL_DEBUG_UART2 is not set
+CONFIG_OMAP_LL_DEBUG_UART3=y
+CONFIG_OMAP_SERIAL_WAKE=y
+# CONFIG_OMAP_PM_NONE is not set
+# CONFIG_OMAP_PM_NOOP is not set
+CONFIG_OMAP_PM_SRF=y
+CONFIG_ARCH_OMAP34XX=y
+CONFIG_ARCH_OMAP3430=y
+
+#
+# OMAP Board Type
+#
+CONFIG_MACH_NOKIA_RX51=y
+CONFIG_VIDEO_MACH_RX51=m
+# CONFIG_VIDEO_MACH_RX51_OLD_I2C is not set
+CONFIG_MACH_NOKIA_RX71=y
+# CONFIG_MACH_OMAP_LDP is not set
+# CONFIG_MACH_OMAP_3430SDP is not set
+# CONFIG_MACH_OMAP3EVM is not set
+# CONFIG_MACH_OMAP3_BEAGLE is not set
+# CONFIG_MACH_OVERO is not set
+# CONFIG_MACH_OMAP3_PANDORA is not set
+# CONFIG_RX51_CAMERA_BUTTON is not set
+
+#
+# Boot options
+#
+
+#
+# Power management
+#
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+CONFIG_CPU_32v6K=y
+CONFIG_CPU_V7=y
+CONFIG_CPU_32v7=y
+CONFIG_CPU_ABRT_EV7=y
+CONFIG_CPU_PABRT_IFAR=y
+CONFIG_CPU_CACHE_V7=y
+CONFIG_CPU_CACHE_VIPT=y
+CONFIG_CPU_COPY_V6=y
+CONFIG_CPU_TLB_V7=y
+CONFIG_CPU_HAS_ASID=y
+CONFIG_CPU_CP15=y
+CONFIG_CPU_CP15_MMU=y
+
+#
+# Processor Features
+#
+CONFIG_ARM_THUMB=y
+CONFIG_ARM_THUMBEE=y
+# CONFIG_CPU_ICACHE_DISABLE is not set
+# CONFIG_CPU_DCACHE_DISABLE is not set
+# CONFIG_CPU_BPREDICT_DISABLE is not set
+CONFIG_HAS_TLS_REG=y
+# CONFIG_OUTER_CACHE is not set
+
+#
+# Bus support
+#
+# CONFIG_PCI_SYSCALL is not set
+# CONFIG_ARCH_SUPPORTS_MSI is not set
+# CONFIG_PCCARD is not set
+
+#
+# Kernel Features
+#
+CONFIG_TICK_ONESHOT=y
+CONFIG_NO_HZ=y
+CONFIG_HIGH_RES_TIMERS=y
+CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
+CONFIG_VMSPLIT_3G=y
+# CONFIG_VMSPLIT_2G is not set
+# CONFIG_VMSPLIT_1G is not set
+CONFIG_PAGE_OFFSET=0xC0000000
+CONFIG_PREEMPT=y
+CONFIG_HZ=128
+CONFIG_AEABI=y
+# CONFIG_OABI_COMPAT is not set
+CONFIG_ARCH_FLATMEM_HAS_HOLES=y
+# CONFIG_ARCH_SPARSEMEM_DEFAULT is not set
+# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set
+CONFIG_SELECT_MEMORY_MODEL=y
+CONFIG_FLATMEM_MANUAL=y
+# CONFIG_DISCONTIGMEM_MANUAL is not set
+# CONFIG_SPARSEMEM_MANUAL is not set
+CONFIG_FLATMEM=y
+CONFIG_FLAT_NODE_MEM_MAP=y
+CONFIG_PAGEFLAGS_EXTENDED=y
+CONFIG_SPLIT_PTLOCK_CPUS=4
+# CONFIG_RESOURCES_64BIT is not set
+# CONFIG_PHYS_ADDR_T_64BIT is not set
+CONFIG_ZONE_DMA_FLAG=0
+CONFIG_VIRT_TO_BUS=y
+CONFIG_UNEVICTABLE_LRU=y
+# CONFIG_LEDS is not set
+CONFIG_ALIGNMENT_TRAP=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE="init=/sbin/preinit ubi.mtd=rootfs root=ubi0:rootfs rootfstype=ubifs rootflags=bulk_read,no_chk_data_crc rw console=ttyMTD,log console=tty0 snd-soc-rx51.hp_lim=42 snd-soc-tlv320aic3x.hp_dac_lim=6"
+# CONFIG_XIP_KERNEL is not set
+CONFIG_KEXEC=y
+CONFIG_ATAGS_PROC=y
+
+#
+# CPU Power Management
+#
+CONFIG_CPU_FREQ=y
+CONFIG_CPU_FREQ_TABLE=y
+# CONFIG_CPU_FREQ_DEBUG is not set
+CONFIG_CPU_FREQ_STAT=y
+# CONFIG_CPU_FREQ_STAT_DETAILS is not set
+# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
+# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set
+CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y
+# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set
+# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
+# CONFIG_CPU_FREQ_GOV_PERFORMANCE is not set
+CONFIG_CPU_FREQ_GOV_POWERSAVE=y
+CONFIG_CPU_FREQ_GOV_USERSPACE=y
+CONFIG_CPU_FREQ_GOV_ONDEMAND=y
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
+CONFIG_CPU_IDLE=y
+CONFIG_CPU_IDLE_GOV_LADDER=y
+CONFIG_CPU_IDLE_GOV_MENU=y
+
+#
+# Floating point emulation
+#
+
+#
+# At least one emulation must be selected
+#
+CONFIG_VFP=y
+CONFIG_VFPv3=y
+CONFIG_NEON=y
+
+#
+# Userspace binary formats
+#
+CONFIG_BINFMT_ELF=y
+# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
+CONFIG_HAVE_AOUT=y
+# CONFIG_BINFMT_AOUT is not set
+CONFIG_BINFMT_MISC=y
+
+#
+# Power management options
+#
+CONFIG_PM=y
+CONFIG_PM_DEBUG=y
+# CONFIG_PM_VERBOSE is not set
+CONFIG_CAN_PM_TRACE=y
+CONFIG_PM_SLEEP=y
+CONFIG_SUSPEND=y
+CONFIG_SUSPEND_FREEZER=y
+# CONFIG_APM_EMULATION is not set
+CONFIG_ARCH_SUSPEND_POSSIBLE=y
+CONFIG_NET=y
+
+#
+# Networking options
+#
+CONFIG_PACKET=y
+# CONFIG_PACKET_MMAP is not set
+CONFIG_UNIX=y
+CONFIG_XFRM=y
+# CONFIG_XFRM_USER is not set
+# CONFIG_XFRM_SUB_POLICY is not set
+# CONFIG_XFRM_MIGRATE is not set
+# CONFIG_XFRM_STATISTICS is not set
+CONFIG_XFRM_IPCOMP=m
+CONFIG_NET_KEY=y
+# CONFIG_NET_KEY_MIGRATE is not set
+CONFIG_INET=y
+# CONFIG_IP_MULTICAST is not set
+CONFIG_IP_ADVANCED_ROUTER=y
+CONFIG_ASK_IP_FIB_HASH=y
+# CONFIG_IP_FIB_TRIE is not set
+CONFIG_IP_FIB_HASH=y
+# CONFIG_IP_MULTIPLE_TABLES is not set
+# CONFIG_IP_ROUTE_MULTIPATH is not set
+# CONFIG_IP_ROUTE_VERBOSE is not set
+CONFIG_IP_PNP=y
+CONFIG_IP_PNP_DHCP=y
+CONFIG_IP_PNP_BOOTP=y
+CONFIG_IP_PNP_RARP=y
+CONFIG_NET_IPIP=m
+CONFIG_NET_IPGRE=m
+# CONFIG_ARPD is not set
+# CONFIG_SYN_COOKIES is not set
+CONFIG_INET_AH=m
+CONFIG_INET_ESP=m
+CONFIG_INET_IPCOMP=m
+CONFIG_INET_XFRM_TUNNEL=m
+CONFIG_INET_TUNNEL=m
+CONFIG_INET_XFRM_MODE_TRANSPORT=m
+CONFIG_INET_XFRM_MODE_TUNNEL=m
+CONFIG_INET_XFRM_MODE_BEET=m
+CONFIG_INET_LRO=m
+CONFIG_INET_DIAG=m
+CONFIG_INET_TCP_DIAG=m
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_CUBIC=y
+CONFIG_DEFAULT_TCP_CONG="cubic"
+# CONFIG_TCP_MD5SIG is not set
+CONFIG_IPV6=m
+CONFIG_IPV6_PRIVACY=y
+CONFIG_IPV6_ROUTER_PREF=y
+# CONFIG_IPV6_ROUTE_INFO is not set
+# CONFIG_IPV6_OPTIMISTIC_DAD is not set
+# CONFIG_INET6_AH is not set
+# CONFIG_INET6_ESP is not set
+CONFIG_INET6_IPCOMP=m
+CONFIG_IPV6_MIP6=m
+CONFIG_INET6_XFRM_TUNNEL=m
+CONFIG_INET6_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_TRANSPORT=m
+CONFIG_INET6_XFRM_MODE_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_BEET=m
+# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
+CONFIG_IPV6_SIT=m
+CONFIG_IPV6_NDISC_NODETYPE=y
+# CONFIG_IPV6_TUNNEL is not set
+# CONFIG_IPV6_MULTIPLE_TABLES is not set
+# CONFIG_IPV6_MROUTE is not set
+# CONFIG_NETLABEL is not set
+# CONFIG_NETWORK_SECMARK is not set
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+CONFIG_NETFILTER_ADVANCED=y
+
+#
+# Core Netfilter Configuration
+#
+# CONFIG_NETFILTER_NETLINK_QUEUE is not set
+# CONFIG_NETFILTER_NETLINK_LOG is not set
+CONFIG_NF_CONNTRACK=m
+# CONFIG_NF_CT_ACCT is not set
+# CONFIG_NF_CONNTRACK_MARK is not set
+# CONFIG_NF_CONNTRACK_EVENTS is not set
+# CONFIG_NF_CT_PROTO_DCCP is not set
+CONFIG_NF_CT_PROTO_GRE=m
+# CONFIG_NF_CT_PROTO_SCTP is not set
+# CONFIG_NF_CT_PROTO_UDPLITE is not set
+# CONFIG_NF_CONNTRACK_AMANDA is not set
+CONFIG_NF_CONNTRACK_FTP=m
+CONFIG_NF_CONNTRACK_H323=m
+CONFIG_NF_CONNTRACK_IRC=m
+CONFIG_NF_CONNTRACK_NETBIOS_NS=m
+CONFIG_NF_CONNTRACK_PPTP=m
+# CONFIG_NF_CONNTRACK_SANE is not set
+CONFIG_NF_CONNTRACK_SIP=m
+# CONFIG_NF_CONNTRACK_TFTP is not set
+# CONFIG_NF_CT_NETLINK is not set
+# CONFIG_NETFILTER_TPROXY is not set
+CONFIG_NETFILTER_XTABLES=m
+CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
+# CONFIG_NETFILTER_XT_TARGET_CONNMARK is not set
+# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
+# CONFIG_NETFILTER_XT_TARGET_MARK is not set
+# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
+# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
+# CONFIG_NETFILTER_XT_TARGET_RATEEST is not set
+# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
+# CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP is not set
+# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
+# CONFIG_NETFILTER_XT_MATCH_CONNBYTES is not set
+CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m
+# CONFIG_NETFILTER_XT_MATCH_CONNMARK is not set
+# CONFIG_NETFILTER_XT_MATCH_CONNTRACK is not set
+# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
+# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
+# CONFIG_NETFILTER_XT_MATCH_ESP is not set
+# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
+# CONFIG_NETFILTER_XT_MATCH_HELPER is not set
+CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
+# CONFIG_NETFILTER_XT_MATCH_LENGTH is not set
+CONFIG_NETFILTER_XT_MATCH_LIMIT=m
+# CONFIG_NETFILTER_XT_MATCH_MAC is not set
+# CONFIG_NETFILTER_XT_MATCH_MARK is not set
+CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
+# CONFIG_NETFILTER_XT_MATCH_OWNER is not set
+# CONFIG_NETFILTER_XT_MATCH_POLICY is not set
+# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set
+# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
+# CONFIG_NETFILTER_XT_MATCH_RATEEST is not set
+# CONFIG_NETFILTER_XT_MATCH_REALM is not set
+# CONFIG_NETFILTER_XT_MATCH_RECENT is not set
+# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
+CONFIG_NETFILTER_XT_MATCH_STATE=m
+# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
+# CONFIG_NETFILTER_XT_MATCH_STRING is not set
+# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_TIME is not set
+CONFIG_NETFILTER_XT_MATCH_U32=m
+# CONFIG_IP_VS is not set
+
+#
+# IP: Netfilter Configuration
+#
+CONFIG_NF_DEFRAG_IPV4=m
+CONFIG_NF_CONNTRACK_IPV4=m
+CONFIG_NF_CONNTRACK_PROC_COMPAT=y
+# CONFIG_IP_NF_QUEUE is not set
+CONFIG_IP_NF_IPTABLES=m
+# CONFIG_IP_NF_MATCH_ADDRTYPE is not set
+# CONFIG_IP_NF_MATCH_AH is not set
+# CONFIG_IP_NF_MATCH_ECN is not set
+# CONFIG_IP_NF_MATCH_TTL is not set
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_LOG=m
+# CONFIG_IP_NF_TARGET_ULOG is not set
+CONFIG_NF_NAT=m
+CONFIG_NF_NAT_NEEDED=y
+CONFIG_IP_NF_TARGET_MASQUERADE=m
+CONFIG_IP_NF_TARGET_NETMAP=m
+CONFIG_IP_NF_TARGET_REDIRECT=m
+# CONFIG_IP_NF_TARGET_IDLETIMER is not set
+# CONFIG_NF_NAT_SNMP_BASIC is not set
+CONFIG_NF_NAT_PROTO_GRE=m
+CONFIG_NF_NAT_FTP=m
+CONFIG_NF_NAT_IRC=m
+# CONFIG_NF_NAT_TFTP is not set
+# CONFIG_NF_NAT_AMANDA is not set
+CONFIG_NF_NAT_PPTP=m
+CONFIG_NF_NAT_H323=m
+CONFIG_NF_NAT_SIP=m
+CONFIG_IP_NF_MANGLE=m
+# CONFIG_IP_NF_TARGET_CLUSTERIP is not set
+# CONFIG_IP_NF_TARGET_ECN is not set
+# CONFIG_IP_NF_TARGET_TTL is not set
+# CONFIG_IP_NF_RAW is not set
+# CONFIG_IP_NF_SECURITY is not set
+# CONFIG_IP_NF_ARPTABLES is not set
+CONFIG_IP_NF_HB=m
+# CONFIG_IP_NF_HB_DEBUG is not set
+
+#
+# IPv6: Netfilter Configuration
+#
+CONFIG_NF_CONNTRACK_IPV6=m
+# CONFIG_IP6_NF_QUEUE is not set
+CONFIG_IP6_NF_IPTABLES=m
+# CONFIG_IP6_NF_MATCH_AH is not set
+# CONFIG_IP6_NF_MATCH_EUI64 is not set
+# CONFIG_IP6_NF_MATCH_FRAG is not set
+# CONFIG_IP6_NF_MATCH_OPTS is not set
+# CONFIG_IP6_NF_MATCH_HL is not set
+# CONFIG_IP6_NF_MATCH_IPV6HEADER is not set
+# CONFIG_IP6_NF_MATCH_MH is not set
+# CONFIG_IP6_NF_MATCH_RT is not set
+CONFIG_IP6_NF_TARGET_LOG=m
+CONFIG_IP6_NF_FILTER=m
+# CONFIG_IP6_NF_TARGET_REJECT is not set
+# CONFIG_IP6_NF_MANGLE is not set
+# CONFIG_IP6_NF_RAW is not set
+# CONFIG_IP6_NF_SECURITY is not set
+# CONFIG_IP_DCCP is not set
+# CONFIG_IP_SCTP is not set
+# CONFIG_TIPC is not set
+# CONFIG_ATM is not set
+# CONFIG_BRIDGE is not set
+# CONFIG_NET_DSA is not set
+# CONFIG_VLAN_8021Q is not set
+# CONFIG_DECNET is not set
+# CONFIG_LLC2 is not set
+# CONFIG_IPX is not set
+# CONFIG_ATALK is not set
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_ECONET is not set
+# CONFIG_WAN_ROUTER is not set
+CONFIG_PHONET=m
+CONFIG_NET_SCHED=y
+
+#
+# Queueing/Scheduling
+#
+CONFIG_NET_SCH_CBQ=m
+CONFIG_NET_SCH_HTB=m
+CONFIG_NET_SCH_HFSC=m
+CONFIG_NET_SCH_PRIO=m
+# CONFIG_NET_SCH_MULTIQ is not set
+# CONFIG_NET_SCH_RED is not set
+CONFIG_NET_SCH_SFQ=m
+# CONFIG_NET_SCH_TEQL is not set
+CONFIG_NET_SCH_TBF=m
+# CONFIG_NET_SCH_GRED is not set
+CONFIG_NET_SCH_DSMARK=m
+# CONFIG_NET_SCH_NETEM is not set
+# CONFIG_NET_SCH_INGRESS is not set
+
+#
+# Classification
+#
+CONFIG_NET_CLS=y
+CONFIG_NET_CLS_BASIC=m
+CONFIG_NET_CLS_TCINDEX=m
+# CONFIG_NET_CLS_ROUTE4 is not set
+CONFIG_NET_CLS_FW=m
+CONFIG_NET_CLS_U32=m
+# CONFIG_CLS_U32_PERF is not set
+# CONFIG_CLS_U32_MARK is not set
+CONFIG_NET_CLS_RSVP=m
+# CONFIG_NET_CLS_RSVP6 is not set
+CONFIG_NET_CLS_FLOW=m
+# CONFIG_NET_EMATCH is not set
+CONFIG_NET_CLS_ACT=y
+CONFIG_NET_ACT_POLICE=m
+CONFIG_NET_ACT_GACT=m
+# CONFIG_GACT_PROB is not set
+# CONFIG_NET_ACT_MIRRED is not set
+CONFIG_NET_ACT_IPT=m
+# CONFIG_NET_ACT_NAT is not set
+# CONFIG_NET_ACT_PEDIT is not set
+# CONFIG_NET_ACT_SIMP is not set
+# CONFIG_NET_ACT_SKBEDIT is not set
+# CONFIG_NET_CLS_IND is not set
+CONFIG_NET_SCH_FIFO=y
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_NET_TCPPROBE is not set
+# CONFIG_HAMRADIO is not set
+# CONFIG_CAN is not set
+# CONFIG_IRDA is not set
+CONFIG_BT=m
+CONFIG_BT_L2CAP=m
+CONFIG_BT_SCO=m
+CONFIG_BT_RFCOMM=m
+CONFIG_BT_RFCOMM_TTY=y
+CONFIG_BT_BNEP=m
+CONFIG_BT_BNEP_MC_FILTER=y
+CONFIG_BT_BNEP_PROTO_FILTER=y
+CONFIG_BT_HIDP=m
+
+#
+# Bluetooth device drivers
+#
+# CONFIG_BT_HCIUSB is not set
+# CONFIG_BT_HCIBTUSB is not set
+# CONFIG_BT_HCIBTSDIO is not set
+# CONFIG_BT_HCIUART is not set
+# CONFIG_BT_HCIBCM203X is not set
+# CONFIG_BT_HCIBPA10X is not set
+# CONFIG_BT_HCIBFUSB is not set
+# CONFIG_BT_HCIBRF6150 is not set
+CONFIG_BT_HCIH4P=m
+# CONFIG_BT_HCIVHCI is not set
+# CONFIG_AF_RXRPC is not set
+CONFIG_WIRELESS=y
+CONFIG_CFG80211=y
+CONFIG_NL80211=y
+CONFIG_WIRELESS_OLD_REGULATORY=y
+CONFIG_WIRELESS_EXT=y
+CONFIG_WIRELESS_EXT_SYSFS=y
+CONFIG_MAC80211=m
+
+#
+# Rate control algorithm selection
+#
+# CONFIG_MAC80211_RC_PID is not set
+CONFIG_MAC80211_RC_MINSTREL=y
+# CONFIG_MAC80211_RC_DEFAULT_PID is not set
+CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y
+CONFIG_MAC80211_RC_DEFAULT="minstrel"
+CONFIG_MAC80211_MESH=y
+# CONFIG_MAC80211_LEDS is not set
+# CONFIG_MAC80211_DEBUGFS is not set
+# CONFIG_MAC80211_DEBUG_MENU is not set
+# CONFIG_IEEE80211 is not set
+# CONFIG_RFKILL is not set
+# CONFIG_NET_9P is not set
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_UEVENT_HELPER_PATH=""
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=y
+CONFIG_FIRMWARE_IN_KERNEL=y
+CONFIG_EXTRA_FIRMWARE=""
+# CONFIG_DEBUG_DRIVER is not set
+# CONFIG_DEBUG_DEVRES is not set
+# CONFIG_SYS_HYPERVISOR is not set
+CONFIG_CONNECTOR=y
+CONFIG_PROC_EVENTS=y
+CONFIG_MTD=y
+# CONFIG_MTD_DEBUG is not set
+# CONFIG_MTD_CONCAT is not set
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+# CONFIG_MTD_CMDLINE_PARTS is not set
+# CONFIG_MTD_AFS_PARTS is not set
+# CONFIG_MTD_AR7_PARTS is not set
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=y
+CONFIG_MTD_BLKDEVS=m
+CONFIG_MTD_BLOCK=m
+CONFIG_MTD_BLOCK_RO=m
+# CONFIG_FTL is not set
+# CONFIG_NFTL is not set
+# CONFIG_INFTL is not set
+# CONFIG_RFD_FTL is not set
+# CONFIG_SSFDC is not set
+CONFIG_MTD_OOPS=y
+
+#
+# RAM/ROM/Flash chip drivers
+#
+# CONFIG_MTD_CFI is not set
+# CONFIG_MTD_JEDECPROBE is not set
+CONFIG_MTD_MAP_BANK_WIDTH_1=y
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+CONFIG_MTD_MAP_BANK_WIDTH_4=y
+# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
+CONFIG_MTD_CFI_I1=y
+CONFIG_MTD_CFI_I2=y
+# CONFIG_MTD_CFI_I4 is not set
+# CONFIG_MTD_CFI_I8 is not set
+# CONFIG_MTD_RAM is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_DATAFLASH is not set
+# CONFIG_MTD_M25P80 is not set
+# CONFIG_MTD_SLRAM is not set
+# CONFIG_MTD_PHRAM is not set
+# CONFIG_MTD_MTDRAM is not set
+CONFIG_MTD_BLOCK2MTD=m
+
+#
+# Disk-On-Chip Device Drivers
+#
+# CONFIG_MTD_DOC2000 is not set
+# CONFIG_MTD_DOC2001 is not set
+# CONFIG_MTD_DOC2001PLUS is not set
+CONFIG_MTD_NAND=m
+# CONFIG_MTD_NAND_VERIFY_WRITE is not set
+# CONFIG_MTD_NAND_ECC_SMC is not set
+# CONFIG_MTD_NAND_MUSEUM_IDS is not set
+# CONFIG_MTD_NAND_GPIO is not set
+# CONFIG_MTD_NAND_OMAP2 is not set
+CONFIG_MTD_NAND_IDS=m
+# CONFIG_MTD_NAND_DISKONCHIP is not set
+CONFIG_MTD_NAND_NANDSIM=m
+# CONFIG_MTD_NAND_PLATFORM is not set
+# CONFIG_MTD_ALAUDA is not set
+CONFIG_MTD_ONENAND=y
+# CONFIG_MTD_ONENAND_VERIFY_WRITE is not set
+# CONFIG_MTD_ONENAND_GENERIC is not set
+CONFIG_MTD_ONENAND_OMAP2=y
+# CONFIG_MTD_ONENAND_OTP is not set
+# CONFIG_MTD_ONENAND_2X_PROGRAM is not set
+# CONFIG_MTD_ONENAND_SIM is not set
+
+#
+# UBI - Unsorted block images
+#
+CONFIG_MTD_UBI=y
+CONFIG_MTD_UBI_WL_THRESHOLD=4096
+CONFIG_MTD_UBI_BEB_RESERVE=1
+# CONFIG_MTD_UBI_GLUEBI is not set
+
+#
+# UBI debugging options
+#
+# CONFIG_MTD_UBI_DEBUG is not set
+# CONFIG_PARPORT is not set
+CONFIG_BLK_DEV=y
+# CONFIG_BLK_DEV_COW_COMMON is not set
+CONFIG_BLK_DEV_LOOP=y
+# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+CONFIG_BLK_DEV_NBD=m
+# CONFIG_BLK_DEV_UB is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM_SIZE=16384
+# CONFIG_BLK_DEV_XIP is not set
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+CONFIG_MISC_DEVICES=y
+# CONFIG_EEPROM_93CX6 is not set
+CONFIG_NOKIA_AV_DETECT=m
+# CONFIG_ICS932S401 is not set
+CONFIG_OMAP_STI=y
+CONFIG_OMAP_STI_CONSOLE=y
+# CONFIG_ENCLOSURE_SERVICES is not set
+# CONFIG_C2PORT is not set
+CONFIG_OMAP_SSI=m
+CONFIG_SSI_MCSAAB_IMP=m
+CONFIG_SSI_CMT_SPEECH=m
+# CONFIG_SSI_CMT_SPEECH_DEBUG is not set
+CONFIG_SSI_CHAR=m
+# CONFIG_SSI_CHAR_DEBUG is not set
+CONFIG_HAVE_IDE=y
+# CONFIG_IDE is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+CONFIG_SCSI=m
+CONFIG_SCSI_DMA=y
+# CONFIG_SCSI_TGT is not set
+# CONFIG_SCSI_NETLINK is not set
+CONFIG_SCSI_PROC_FS=y
+
+#
+# SCSI support type (disk, tape, CD-ROM)
+#
+CONFIG_BLK_DEV_SD=m
+# CONFIG_CHR_DEV_ST is not set
+# CONFIG_CHR_DEV_OSST is not set
+# CONFIG_BLK_DEV_SR is not set
+# CONFIG_CHR_DEV_SG is not set
+# CONFIG_CHR_DEV_SCH is not set
+
+#
+# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
+#
+CONFIG_SCSI_MULTI_LUN=y
+# CONFIG_SCSI_CONSTANTS is not set
+# CONFIG_SCSI_LOGGING is not set
+CONFIG_SCSI_SCAN_ASYNC=y
+CONFIG_SCSI_WAIT_SCAN=m
+
+#
+# SCSI Transports
+#
+# CONFIG_SCSI_SPI_ATTRS is not set
+# CONFIG_SCSI_FC_ATTRS is not set
+# CONFIG_SCSI_ISCSI_ATTRS is not set
+# CONFIG_SCSI_SAS_LIBSAS is not set
+# CONFIG_SCSI_SRP_ATTRS is not set
+CONFIG_SCSI_LOWLEVEL=y
+# CONFIG_ISCSI_TCP is not set
+# CONFIG_SCSI_DEBUG is not set
+# CONFIG_SCSI_DH is not set
+# CONFIG_ATA is not set
+CONFIG_MD=y
+# CONFIG_BLK_DEV_MD is not set
+CONFIG_BLK_DEV_DM=m
+# CONFIG_DM_DEBUG is not set
+CONFIG_DM_CRYPT=m
+CONFIG_DM_LOOP=m
+# CONFIG_DM_SNAPSHOT is not set
+# CONFIG_DM_MIRROR is not set
+# CONFIG_DM_ZERO is not set
+# CONFIG_DM_MULTIPATH is not set
+# CONFIG_DM_DELAY is not set
+# CONFIG_DM_UEVENT is not set
+CONFIG_NETDEVICES=y
+# CONFIG_IFB is not set
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_MACVLAN is not set
+# CONFIG_EQUALIZER is not set
+CONFIG_TUN=m
+# CONFIG_VETH is not set
+# CONFIG_PHYLIB is not set
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=m
+# CONFIG_AX88796 is not set
+CONFIG_SMC91X=m
+# CONFIG_DM9000 is not set
+# CONFIG_ENC28J60 is not set
+# CONFIG_SMC911X is not set
+# CONFIG_IBM_NEW_EMAC_ZMII is not set
+# CONFIG_IBM_NEW_EMAC_RGMII is not set
+# CONFIG_IBM_NEW_EMAC_TAH is not set
+# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
+# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
+# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
+# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
+# CONFIG_B44 is not set
+# CONFIG_NETDEV_1000 is not set
+# CONFIG_NETDEV_10000 is not set
+
+#
+# Wireless LAN
+#
+# CONFIG_WLAN_PRE80211 is not set
+CONFIG_WLAN_80211=y
+# CONFIG_LIBERTAS is not set
+# CONFIG_LIBERTAS_THINFIRM is not set
+# CONFIG_USB_ZD1201 is not set
+# CONFIG_USB_NET_RNDIS_WLAN is not set
+# CONFIG_RTL8187 is not set
+# CONFIG_MAC80211_HWSIM is not set
+# CONFIG_P54_COMMON is not set
+# CONFIG_IWLWIFI_LEDS is not set
+# CONFIG_HOSTAP is not set
+# CONFIG_B43 is not set
+# CONFIG_B43LEGACY is not set
+# CONFIG_ZD1211RW is not set
+# CONFIG_RT2X00 is not set
+CONFIG_WL12XX=y
+CONFIG_WL1251=m
+# CONFIG_WL1271 is not set
+
+#
+# USB Network Adapters
+#
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_RTL8150 is not set
+# CONFIG_USB_USBNET is not set
+# CONFIG_WAN is not set
+CONFIG_PPP=m
+# CONFIG_PPP_MULTILINK is not set
+CONFIG_PPP_FILTER=y
+CONFIG_PPP_ASYNC=m
+# CONFIG_PPP_SYNC_TTY is not set
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+CONFIG_PPP_MPPE=m
+CONFIG_PPPOE=m
+CONFIG_PPPOL2TP=m
+CONFIG_SLIP=m
+CONFIG_SLIP_COMPRESSED=y
+CONFIG_SLHC=m
+CONFIG_SLIP_SMART=y
+# CONFIG_SLIP_MODE_SLIP6 is not set
+# CONFIG_NETCONSOLE is not set
+# CONFIG_NETPOLL is not set
+# CONFIG_NET_POLL_CONTROLLER is not set
+# CONFIG_ISDN is not set
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS is not set
+# CONFIG_INPUT_POLLDEV is not set
+
+#
+# Userland interfaces
+#
+CONFIG_INPUT_MOUSEDEV=m
+CONFIG_INPUT_MOUSEDEV_PSAUX=y
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=800
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=480
+CONFIG_INPUT_JOYDEV=m
+CONFIG_INPUT_EVDEV=y
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# Input Device Drivers
+#
+CONFIG_INPUT_KEYBOARD=y
+# CONFIG_KEYBOARD_ATKBD is not set
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_LKKBD is not set
+# CONFIG_KEYBOARD_XTKBD is not set
+# CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_KEYBOARD_STOWAWAY is not set
+CONFIG_KEYBOARD_TWL4030=y
+# CONFIG_KEYBOARD_LM8323 is not set
+# CONFIG_KEYBOARD_GPIO is not set
+# CONFIG_INPUT_MOUSE is not set
+# CONFIG_INPUT_JOYSTICK is not set
+# CONFIG_INPUT_TABLET is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+# CONFIG_TOUCHSCREEN_ADS7846 is not set
+# CONFIG_TOUCHSCREEN_FUJITSU is not set
+# CONFIG_TOUCHSCREEN_GUNZE is not set
+# CONFIG_TOUCHSCREEN_ELO is not set
+# CONFIG_TOUCHSCREEN_MTOUCH is not set
+# CONFIG_TOUCHSCREEN_INEXIO is not set
+# CONFIG_TOUCHSCREEN_MK712 is not set
+# CONFIG_TOUCHSCREEN_PENMOUNT is not set
+# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
+# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
+CONFIG_TOUCHSCREEN_TSC2005=m
+# CONFIG_TOUCHSCREEN_TSC210X is not set
+# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set
+# CONFIG_TOUCHSCREEN_TOUCHIT213 is not set
+CONFIG_INPUT_LIRC=y
+CONFIG_LIRC_DEV=m
+CONFIG_LIRC_RX51=m
+CONFIG_INPUT_MISC=y
+# CONFIG_INPUT_ATI_REMOTE is not set
+# CONFIG_INPUT_ATI_REMOTE2 is not set
+# CONFIG_INPUT_KEYSPAN_REMOTE is not set
+# CONFIG_INPUT_POWERMATE is not set
+# CONFIG_INPUT_YEALINK is not set
+# CONFIG_INPUT_CM109 is not set
+CONFIG_INPUT_UINPUT=m
+
+#
+# Hardware I/O ports
+#
+# CONFIG_SERIO is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_CONSOLE_TRANSLATIONS=y
+CONFIG_VT_CONSOLE=y
+CONFIG_HW_CONSOLE=y
+# CONFIG_VT_HW_CONSOLE_BINDING is not set
+CONFIG_DEVKMEM=y
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+CONFIG_SERIAL_8250=y
+CONFIG_SERIAL_8250_CONSOLE=y
+CONFIG_SERIAL_8250_NR_UARTS=4
+CONFIG_SERIAL_8250_RUNTIME_UARTS=4
+# CONFIG_SERIAL_8250_EXTENDED is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+# CONFIG_LEGACY_PTYS is not set
+# CONFIG_IPMI_HANDLER is not set
+CONFIG_HW_RANDOM=y
+CONFIG_HW_RANDOM_OMAP3_ROM=y
+# CONFIG_NVRAM is not set
+# CONFIG_R3964 is not set
+# CONFIG_RAW_DRIVER is not set
+# CONFIG_TCG_TPM is not set
+CONFIG_I2C=y
+CONFIG_I2C_BOARDINFO=y
+CONFIG_I2C_CHARDEV=y
+CONFIG_I2C_HELPER_AUTO=y
+
+#
+# I2C Hardware Bus support
+#
+
+#
+# I2C system bus drivers (mostly embedded / system-on-chip)
+#
+# CONFIG_I2C_GPIO is not set
+# CONFIG_I2C_OCORES is not set
+CONFIG_I2C_OMAP=y
+# CONFIG_I2C_SIMTEC is not set
+
+#
+# External I2C/SMBus adapter drivers
+#
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_TAOS_EVM is not set
+# CONFIG_I2C_TINY_USB is not set
+
+#
+# Other I2C/SMBus bus drivers
+#
+# CONFIG_I2C_PCA_PLATFORM is not set
+# CONFIG_I2C_STUB is not set
+
+#
+# Miscellaneous I2C Chip support
+#
+# CONFIG_DS1682 is not set
+# CONFIG_AT24 is not set
+# CONFIG_SENSORS_EEPROM is not set
+CONFIG_TPA6130A2=y
+# CONFIG_SENSORS_PCF8574 is not set
+# CONFIG_PCF8575 is not set
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_TPS65010 is not set
+CONFIG_TWL4030_MADC=y
+CONFIG_TWL4030_PWRBUTTON=y
+CONFIG_TWL4030_POWEROFF=y
+# CONFIG_SENSORS_MAX6875 is not set
+# CONFIG_SENSORS_TSL2550 is not set
+CONFIG_SENSORS_TSL2563=m
+# CONFIG_LP5521 is not set
+CONFIG_LIS302DL=m
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CHIP is not set
+CONFIG_SPI=y
+# CONFIG_SPI_DEBUG is not set
+CONFIG_SPI_MASTER=y
+
+#
+# SPI Master Controller Drivers
+#
+# CONFIG_SPI_BITBANG is not set
+CONFIG_SPI_OMAP24XX=y
+
+#
+# SPI Protocol Masters
+#
+# CONFIG_SPI_AT25 is not set
+# CONFIG_SPI_TSC210X is not set
+# CONFIG_SPI_TSC2301 is not set
+# CONFIG_SPI_SPIDEV is not set
+# CONFIG_SPI_TLE62X0 is not set
+CONFIG_ARCH_REQUIRE_GPIOLIB=y
+CONFIG_GPIOLIB=y
+# CONFIG_DEBUG_GPIO is not set
+CONFIG_GPIO_SYSFS=y
+
+#
+# Memory mapped GPIO expanders:
+#
+
+#
+# I2C GPIO expanders:
+#
+# CONFIG_GPIO_MAX732X is not set
+# CONFIG_GPIO_PCA953X is not set
+# CONFIG_GPIO_PCF857X is not set
+CONFIG_GPIO_TWL4030=y
+
+#
+# PCI GPIO expanders:
+#
+
+#
+# SPI GPIO expanders:
+#
+# CONFIG_GPIO_MAX7301 is not set
+# CONFIG_GPIO_MCP23S08 is not set
+# CONFIG_W1 is not set
+CONFIG_POWER_SUPPLY=m
+# CONFIG_POWER_SUPPLY_DEBUG is not set
+# CONFIG_PDA_POWER is not set
+# CONFIG_BATTERY_DS2760 is not set
+# CONFIG_TWL4030_BCI_BATTERY is not set
+CONFIG_BATTERY_BQ27x00=m
+CONFIG_HWMON=y
+# CONFIG_HWMON_VID is not set
+# CONFIG_SENSORS_AD7414 is not set
+# CONFIG_SENSORS_AD7418 is not set
+# CONFIG_SENSORS_ADCXX is not set
+# CONFIG_SENSORS_ADM1021 is not set
+# CONFIG_SENSORS_ADM1025 is not set
+# CONFIG_SENSORS_ADM1026 is not set
+# CONFIG_SENSORS_ADM1029 is not set
+# CONFIG_SENSORS_ADM1031 is not set
+# CONFIG_SENSORS_ADM9240 is not set
+# CONFIG_SENSORS_ADT7462 is not set
+# CONFIG_SENSORS_ADT7470 is not set
+# CONFIG_SENSORS_ADT7473 is not set
+# CONFIG_SENSORS_ATXP1 is not set
+# CONFIG_SENSORS_DS1621 is not set
+# CONFIG_SENSORS_F71805F is not set
+# CONFIG_SENSORS_F71882FG is not set
+# CONFIG_SENSORS_F75375S is not set
+# CONFIG_SENSORS_GL518SM is not set
+# CONFIG_SENSORS_GL520SM is not set
+# CONFIG_SENSORS_IT87 is not set
+# CONFIG_SENSORS_LM63 is not set
+# CONFIG_SENSORS_LM70 is not set
+# CONFIG_SENSORS_LM75 is not set
+# CONFIG_SENSORS_LM77 is not set
+# CONFIG_SENSORS_LM78 is not set
+# CONFIG_SENSORS_LM80 is not set
+# CONFIG_SENSORS_LM83 is not set
+# CONFIG_SENSORS_LM85 is not set
+# CONFIG_SENSORS_LM87 is not set
+# CONFIG_SENSORS_LM90 is not set
+# CONFIG_SENSORS_LM92 is not set
+# CONFIG_SENSORS_LM93 is not set
+# CONFIG_SENSORS_MAX1111 is not set
+# CONFIG_SENSORS_MAX1619 is not set
+# CONFIG_SENSORS_MAX6650 is not set
+# CONFIG_SENSORS_PC87360 is not set
+# CONFIG_SENSORS_PC87427 is not set
+# CONFIG_SENSORS_DME1737 is not set
+# CONFIG_SENSORS_SMSC47M1 is not set
+# CONFIG_SENSORS_SMSC47M192 is not set
+# CONFIG_SENSORS_SMSC47B397 is not set
+# CONFIG_SENSORS_ADS7828 is not set
+# CONFIG_SENSORS_THMC50 is not set
+# CONFIG_SENSORS_VT1211 is not set
+# CONFIG_SENSORS_W83781D is not set
+# CONFIG_SENSORS_W83791D is not set
+# CONFIG_SENSORS_W83792D is not set
+# CONFIG_SENSORS_W83793 is not set
+# CONFIG_SENSORS_W83L785TS is not set
+# CONFIG_SENSORS_W83L786NG is not set
+# CONFIG_SENSORS_W83627HF is not set
+# CONFIG_SENSORS_W83627EHF is not set
+# CONFIG_SENSORS_TSC210X is not set
+CONFIG_SENSORS_OMAP34XX=y
+# CONFIG_HWMON_DEBUG_CHIP is not set
+# CONFIG_THERMAL is not set
+# CONFIG_THERMAL_HWMON is not set
+CONFIG_WATCHDOG=y
+# CONFIG_WATCHDOG_NOWAYOUT is not set
+
+#
+# Watchdog Device Drivers
+#
+# CONFIG_SOFT_WATCHDOG is not set
+CONFIG_OMAP_WATCHDOG=m
+CONFIG_TWL4030_WATCHDOG=m
+
+#
+# USB-based Watchdog Cards
+#
+# CONFIG_USBPCWATCHDOG is not set
+CONFIG_SSB_POSSIBLE=y
+
+#
+# Sonics Silicon Backplane
+#
+# CONFIG_SSB is not set
+
+#
+# Multifunction device drivers
+#
+# CONFIG_MFD_CORE is not set
+# CONFIG_MFD_SM501 is not set
+# CONFIG_MFD_ASIC3 is not set
+# CONFIG_HTC_EGPIO is not set
+# CONFIG_HTC_PASIC3 is not set
+CONFIG_TWL4030_CORE=y
+CONFIG_TWL4030_POWER=y
+# CONFIG_MFD_TMIO is not set
+# CONFIG_MFD_T7L66XB is not set
+# CONFIG_MFD_TC6387XB is not set
+# CONFIG_MFD_TC6393XB is not set
+# CONFIG_PMIC_DA903X is not set
+# CONFIG_MFD_WM8400 is not set
+# CONFIG_MFD_WM8350_I2C is not set
+
+#
+# Multimedia devices
+#
+
+#
+# Multimedia core support
+#
+CONFIG_VIDEO_DEV=m
+CONFIG_VIDEO_V4L2_COMMON=m
+CONFIG_VIDEO_ALLOW_V4L1=y
+CONFIG_VIDEO_V4L1_COMPAT=y
+# CONFIG_DVB_CORE is not set
+CONFIG_VIDEO_MEDIA=m
+
+#
+# Multimedia drivers
+#
+# CONFIG_MEDIA_ATTACH is not set
+CONFIG_MEDIA_TUNER=m
+CONFIG_MEDIA_TUNER_CUSTOMIZE=y
+# CONFIG_MEDIA_TUNER_SIMPLE is not set
+# CONFIG_MEDIA_TUNER_TDA8290 is not set
+# CONFIG_MEDIA_TUNER_TDA827X is not set
+# CONFIG_MEDIA_TUNER_TDA18271 is not set
+# CONFIG_MEDIA_TUNER_TDA9887 is not set
+# CONFIG_MEDIA_TUNER_TEA5761 is not set
+# CONFIG_MEDIA_TUNER_TEA5767 is not set
+# CONFIG_MEDIA_TUNER_MT20XX is not set
+# CONFIG_MEDIA_TUNER_MT2060 is not set
+# CONFIG_MEDIA_TUNER_MT2266 is not set
+# CONFIG_MEDIA_TUNER_MT2131 is not set
+# CONFIG_MEDIA_TUNER_QT1010 is not set
+# CONFIG_MEDIA_TUNER_XC2028 is not set
+# CONFIG_MEDIA_TUNER_XC5000 is not set
+# CONFIG_MEDIA_TUNER_MXL5005S is not set
+# CONFIG_MEDIA_TUNER_MXL5007T is not set
+CONFIG_VIDEO_V4L2=m
+CONFIG_VIDEO_V4L1=m
+CONFIG_VIDEOBUF_GEN=m
+CONFIG_VIDEOBUF_DMA_SG=m
+CONFIG_VIDEO_CAPTURE_DRIVERS=y
+# CONFIG_VIDEO_ADV_DEBUG is not set
+# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
+# CONFIG_VIDEO_HELPER_CHIPS_AUTO is not set
+
+#
+# Encoders/decoders and other helper chips
+#
+
+#
+# Audio decoders
+#
+# CONFIG_VIDEO_TVAUDIO is not set
+# CONFIG_VIDEO_TDA7432 is not set
+# CONFIG_VIDEO_TDA9840 is not set
+# CONFIG_VIDEO_TDA9875 is not set
+# CONFIG_VIDEO_TEA6415C is not set
+# CONFIG_VIDEO_TEA6420 is not set
+# CONFIG_VIDEO_MSP3400 is not set
+# CONFIG_VIDEO_CS5345 is not set
+# CONFIG_VIDEO_CS53L32A is not set
+# CONFIG_VIDEO_M52790 is not set
+# CONFIG_VIDEO_TLV320AIC23B is not set
+# CONFIG_VIDEO_WM8775 is not set
+# CONFIG_VIDEO_WM8739 is not set
+# CONFIG_VIDEO_VP27SMPX is not set
+
+#
+# Video decoders
+#
+# CONFIG_VIDEO_BT819 is not set
+# CONFIG_VIDEO_BT856 is not set
+# CONFIG_VIDEO_BT866 is not set
+# CONFIG_VIDEO_KS0127 is not set
+# CONFIG_VIDEO_OV7670 is not set
+# CONFIG_VIDEO_TCM825X is not set
+CONFIG_VIDEO_ET8EK8=m
+CONFIG_VIDEO_AD5820=m
+CONFIG_VIDEO_ADP1653=m
+# CONFIG_VIDEO_SAA7110 is not set
+# CONFIG_VIDEO_SAA7111 is not set
+# CONFIG_VIDEO_SAA7114 is not set
+# CONFIG_VIDEO_SAA711X is not set
+# CONFIG_VIDEO_SAA717X is not set
+# CONFIG_VIDEO_SAA7191 is not set
+# CONFIG_VIDEO_TVP5150 is not set
+# CONFIG_VIDEO_VPX3220 is not set
+CONFIG_VIDEO_SMIA_SENSOR=m
+
+#
+# Video and audio decoders
+#
+# CONFIG_VIDEO_CX25840 is not set
+
+#
+# MPEG video encoders
+#
+# CONFIG_VIDEO_CX2341X is not set
+
+#
+# Video encoders
+#
+# CONFIG_VIDEO_SAA7127 is not set
+# CONFIG_VIDEO_SAA7185 is not set
+# CONFIG_VIDEO_ADV7170 is not set
+# CONFIG_VIDEO_ADV7175 is not set
+
+#
+# Video improvement chips
+#
+# CONFIG_VIDEO_UPD64031A is not set
+# CONFIG_VIDEO_UPD64083 is not set
+# CONFIG_VIDEO_VIVI is not set
+# CONFIG_VIDEO_CPIA is not set
+# CONFIG_VIDEO_CPIA2 is not set
+# CONFIG_VIDEO_SAA5246A is not set
+# CONFIG_VIDEO_SAA5249 is not set
+CONFIG_VIDEO_OMAP3=m
+CONFIG_VIDEO_SMIAREGS=m
+# CONFIG_SOC_CAMERA is not set
+CONFIG_V4L_USB_DRIVERS=y
+CONFIG_USB_VIDEO_CLASS=m
+CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y
+CONFIG_USB_GSPCA=m
+# CONFIG_USB_M5602 is not set
+# CONFIG_USB_GSPCA_CONEX is not set
+# CONFIG_USB_GSPCA_ETOMS is not set
+# CONFIG_USB_GSPCA_FINEPIX is not set
+# CONFIG_USB_GSPCA_MARS is not set
+# CONFIG_USB_GSPCA_OV519 is not set
+# CONFIG_USB_GSPCA_PAC207 is not set
+# CONFIG_USB_GSPCA_PAC7311 is not set
+# CONFIG_USB_GSPCA_SONIXB is not set
+# CONFIG_USB_GSPCA_SONIXJ is not set
+# CONFIG_USB_GSPCA_SPCA500 is not set
+# CONFIG_USB_GSPCA_SPCA501 is not set
+# CONFIG_USB_GSPCA_SPCA505 is not set
+# CONFIG_USB_GSPCA_SPCA506 is not set
+# CONFIG_USB_GSPCA_SPCA508 is not set
+# CONFIG_USB_GSPCA_SPCA561 is not set
+# CONFIG_USB_GSPCA_STK014 is not set
+# CONFIG_USB_GSPCA_SUNPLUS is not set
+# CONFIG_USB_GSPCA_T613 is not set
+# CONFIG_USB_GSPCA_TV8532 is not set
+# CONFIG_USB_GSPCA_VC032X is not set
+# CONFIG_USB_GSPCA_ZC3XX is not set
+# CONFIG_VIDEO_PVRUSB2 is not set
+# CONFIG_VIDEO_EM28XX is not set
+# CONFIG_VIDEO_USBVISION is not set
+# CONFIG_USB_VICAM is not set
+# CONFIG_USB_IBMCAM is not set
+# CONFIG_USB_KONICAWC is not set
+# CONFIG_USB_QUICKCAM_MESSENGER is not set
+# CONFIG_USB_ET61X251 is not set
+# CONFIG_VIDEO_OVCAMCHIP is not set
+# CONFIG_USB_OV511 is not set
+# CONFIG_USB_SE401 is not set
+# CONFIG_USB_SN9C102 is not set
+# CONFIG_USB_STV680 is not set
+# CONFIG_USB_ZC0301 is not set
+# CONFIG_USB_PWC is not set
+# CONFIG_USB_ZR364XX is not set
+# CONFIG_USB_STKWEBCAM is not set
+# CONFIG_USB_S2255 is not set
+CONFIG_RADIO_ADAPTERS=y
+CONFIG_I2C_SI4713=m
+# CONFIG_USB_DSBR is not set
+# CONFIG_USB_SI470X is not set
+CONFIG_I2C_BCM2048=m
+# CONFIG_USB_MR800 is not set
+# CONFIG_DAB is not set
+
+#
+# Graphics support
+#
+CONFIG_PVR=m
+CONFIG_PVR_RELEASE=y
+# CONFIG_PVR_DEBUG is not set
+# CONFIG_PVR_TIMING is not set
+# CONFIG_PVR_EXAMPLES is not set
+# CONFIG_VGASTATE is not set
+# CONFIG_VIDEO_OUTPUT_CONTROL is not set
+CONFIG_FB=y
+# CONFIG_FIRMWARE_EDID is not set
+# CONFIG_FB_DDC is not set
+# CONFIG_FB_BOOT_VESA_SUPPORT is not set
+CONFIG_FB_CFB_FILLRECT=y
+CONFIG_FB_CFB_COPYAREA=y
+CONFIG_FB_CFB_IMAGEBLIT=y
+# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
+# CONFIG_FB_SYS_FILLRECT is not set
+# CONFIG_FB_SYS_COPYAREA is not set
+# CONFIG_FB_SYS_IMAGEBLIT is not set
+# CONFIG_FB_FOREIGN_ENDIAN is not set
+# CONFIG_FB_SYS_FOPS is not set
+# CONFIG_FB_SVGALIB is not set
+# CONFIG_FB_MACMODES is not set
+# CONFIG_FB_BACKLIGHT is not set
+# CONFIG_FB_MODE_HELPERS is not set
+# CONFIG_FB_TILEBLITTING is not set
+
+#
+# Frame buffer hardware drivers
+#
+# CONFIG_FB_UVESA is not set
+# CONFIG_FB_S1D13XXX is not set
+# CONFIG_FB_VIRTUAL is not set
+# CONFIG_FB_METRONOME is not set
+# CONFIG_FB_MB862XX is not set
+CONFIG_FB_OMAP_BOOTLOADER_INIT=y
+CONFIG_FB_OMAP_CONSISTENT_DMA_SIZE=14
+CONFIG_OMAP2_DSS=y
+CONFIG_OMAP2_DSS_VRAM_SIZE=0
+# CONFIG_OMAP2_DSS_DEBUG_SUPPORT is not set
+# CONFIG_OMAP2_DSS_RFBI is not set
+CONFIG_OMAP2_DSS_VENC=y
+CONFIG_OMAP2_DSS_SDI=y
+# CONFIG_OMAP2_DSS_DSI is not set
+# CONFIG_OMAP2_DSS_FAKE_VSYNC is not set
+CONFIG_OMAP2_DSS_MIN_FCK_PER_PCK=0
+
+#
+# OMAP2/3 Display Device Drivers
+#
+# CONFIG_PANEL_NEVADA is not set
+CONFIG_PANEL_ACX565AKM=y
+# CONFIG_PANEL_GENERIC is not set
+# CONFIG_PANEL_SAMSUNG_LTE430WQ_F0C is not set
+# CONFIG_PANEL_SHARP_LS037V7DW01 is not set
+CONFIG_FB_OMAP2=y
+# CONFIG_FB_OMAP2_DEBUG_SUPPORT is not set
+# CONFIG_FB_OMAP2_FORCE_AUTO_UPDATE is not set
+CONFIG_FB_OMAP2_NUM_FBS=3
+# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+# CONFIG_BACKLIGHT_CORGI is not set
+
+#
+# Display device support
+#
+CONFIG_DISPLAY_SUPPORT=y
+
+#
+# Display hardware drivers
+#
+
+#
+# Console display driver support
+#
+# CONFIG_VGA_CONSOLE is not set
+CONFIG_DUMMY_CONSOLE=y
+# CONFIG_FRAMEBUFFER_CONSOLE is not set
+# CONFIG_LOGO is not set
+CONFIG_SOUND=y
+# CONFIG_SOUND_OSS_CORE is not set
+CONFIG_SND=y
+CONFIG_SND_TIMER=y
+CONFIG_SND_PCM=y
+CONFIG_SND_JACK=y
+# CONFIG_SND_SEQUENCER is not set
+# CONFIG_SND_MIXER_OSS is not set
+# CONFIG_SND_PCM_OSS is not set
+# CONFIG_SND_DYNAMIC_MINORS is not set
+CONFIG_SND_SUPPORT_OLD_API=y
+CONFIG_SND_VERBOSE_PROCFS=y
+# CONFIG_SND_VERBOSE_PRINTK is not set
+# CONFIG_SND_DEBUG is not set
+CONFIG_SND_DRIVERS=y
+# CONFIG_SND_DUMMY is not set
+# CONFIG_SND_MTPAV is not set
+# CONFIG_SND_SERIAL_U16550 is not set
+# CONFIG_SND_MPU401 is not set
+CONFIG_SND_ARM=y
+CONFIG_SND_SPI=y
+# CONFIG_SND_USB is not set
+CONFIG_SND_SOC=y
+CONFIG_SND_OMAP_SOC=y
+CONFIG_SND_OMAP_SOC_MCBSP=y
+CONFIG_SND_OMAP_SOC_RX51=y
+# CONFIG_SND_SOC_ALL_CODECS is not set
+CONFIG_SND_SOC_TLV320AIC3X=y
+# CONFIG_SOUND_PRIME is not set
+CONFIG_HID_SUPPORT=y
+CONFIG_HID=m
+# CONFIG_HID_DEBUG is not set
+# CONFIG_HIDRAW is not set
+
+#
+# USB Input Devices
+#
+CONFIG_USB_HID=m
+# CONFIG_HID_PID is not set
+# CONFIG_USB_HIDDEV is not set
+
+#
+# USB HID Boot Protocol drivers
+#
+# CONFIG_USB_KBD is not set
+# CONFIG_USB_MOUSE is not set
+
+#
+# Special HID drivers
+#
+# CONFIG_HID_COMPAT is not set
+# CONFIG_HID_A4TECH is not set
+# CONFIG_HID_APPLE is not set
+# CONFIG_HID_BELKIN is not set
+# CONFIG_HID_BRIGHT is not set
+# CONFIG_HID_CHERRY is not set
+# CONFIG_HID_CHICONY is not set
+# CONFIG_HID_CYPRESS is not set
+# CONFIG_HID_DELL is not set
+# CONFIG_HID_EZKEY is not set
+# CONFIG_HID_GYRATION is not set
+# CONFIG_HID_LOGITECH is not set
+# CONFIG_HID_MICROSOFT is not set
+# CONFIG_HID_MONTEREY is not set
+# CONFIG_HID_PANTHERLORD is not set
+# CONFIG_HID_PETALYNX is not set
+# CONFIG_HID_SAMSUNG is not set
+# CONFIG_HID_SONY is not set
+# CONFIG_HID_SUNPLUS is not set
+# CONFIG_THRUSTMASTER_FF is not set
+# CONFIG_ZEROPLUS_FF is not set
+CONFIG_USB_SUPPORT=y
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB_ARCH_HAS_OHCI=y
+CONFIG_USB_ARCH_HAS_EHCI=y
+CONFIG_USB=y
+# CONFIG_USB_DEBUG is not set
+# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set
+
+#
+# Miscellaneous USB options
+#
+CONFIG_USB_DEVICEFS=y
+# CONFIG_USB_DEVICE_CLASS is not set
+CONFIG_USB_DYNAMIC_MINORS=y
+CONFIG_USB_SUSPEND=y
+CONFIG_USB_OTG=y
+CONFIG_USB_OTG_WHITELIST=y
+# CONFIG_USB_OTG_BLACKLIST_HUB is not set
+CONFIG_USB_MON=y
+# CONFIG_USB_WUSB is not set
+# CONFIG_USB_WUSB_CBAF is not set
+
+#
+# USB Host Controller Drivers
+#
+# CONFIG_USB_C67X00_HCD is not set
+CONFIG_USB_EHCI_HCD=m
+CONFIG_OMAP_EHCI_PHY_MODE=y
+# CONFIG_OMAP_EHCI_TLL_MODE is not set
+# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
+# CONFIG_USB_EHCI_TT_NEWSCHED is not set
+# CONFIG_USB_ISP116X_HCD is not set
+CONFIG_USB_OHCI_HCD=m
+# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
+# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+# CONFIG_USB_SL811_HCD is not set
+# CONFIG_USB_R8A66597_HCD is not set
+# CONFIG_USB_HWA_HCD is not set
+CONFIG_USB_MUSB_HDRC=y
+CONFIG_USB_MUSB_SOC=y
+
+#
+# OMAP 343x high speed USB support
+#
+# CONFIG_USB_MUSB_HOST is not set
+# CONFIG_USB_MUSB_PERIPHERAL is not set
+CONFIG_USB_MUSB_OTG=y
+CONFIG_USB_GADGET_MUSB_HDRC=y
+CONFIG_USB_MUSB_HDRC_HCD=y
+# CONFIG_MUSB_PIO_ONLY is not set
+CONFIG_USB_INVENTRA_DMA=y
+# CONFIG_USB_TI_CPPI_DMA is not set
+CONFIG_USB_MUSB_DEBUG=y
+CONFIG_MUSB_PROC_FS=y
+
+#
+# USB Device Class drivers
+#
+CONFIG_USB_ACM=m
+CONFIG_USB_PRINTER=m
+CONFIG_USB_WDM=m
+CONFIG_USB_TMC=m
+
+#
+# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed;
+#
+
+#
+# see USB_STORAGE Help for more information
+#
+CONFIG_USB_STORAGE=m
+# CONFIG_USB_STORAGE_DEBUG is not set
+# CONFIG_USB_STORAGE_DATAFAB is not set
+# CONFIG_USB_STORAGE_FREECOM is not set
+# CONFIG_USB_STORAGE_ISD200 is not set
+# CONFIG_USB_STORAGE_DPCM is not set
+# CONFIG_USB_STORAGE_USBAT is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_SDDR55 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+# CONFIG_USB_STORAGE_ALAUDA is not set
+# CONFIG_USB_STORAGE_ONETOUCH is not set
+# CONFIG_USB_STORAGE_KARMA is not set
+# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
+CONFIG_USB_LIBUSUAL=y
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_MICROTEK is not set
+
+#
+# USB port drivers
+#
+CONFIG_USB_SERIAL=m
+# CONFIG_USB_EZUSB is not set
+CONFIG_USB_SERIAL_GENERIC=y
+# CONFIG_USB_SERIAL_AIRCABLE is not set
+# CONFIG_USB_SERIAL_ARK3116 is not set
+# CONFIG_USB_SERIAL_BELKIN is not set
+# CONFIG_USB_SERIAL_CH341 is not set
+# CONFIG_USB_SERIAL_WHITEHEAT is not set
+# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
+# CONFIG_USB_SERIAL_CP2101 is not set
+# CONFIG_USB_SERIAL_CYPRESS_M8 is not set
+# CONFIG_USB_SERIAL_EMPEG is not set
+CONFIG_USB_SERIAL_FTDI_SIO=m
+# CONFIG_USB_SERIAL_FUNSOFT is not set
+# CONFIG_USB_SERIAL_VISOR is not set
+# CONFIG_USB_SERIAL_IPAQ is not set
+# CONFIG_USB_SERIAL_IR is not set
+# CONFIG_USB_SERIAL_EDGEPORT is not set
+# CONFIG_USB_SERIAL_EDGEPORT_TI is not set
+# CONFIG_USB_SERIAL_GARMIN is not set
+# CONFIG_USB_SERIAL_IPW is not set
+# CONFIG_USB_SERIAL_IUU is not set
+# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
+# CONFIG_USB_SERIAL_KEYSPAN is not set
+# CONFIG_USB_SERIAL_KLSI is not set
+# CONFIG_USB_SERIAL_KOBIL_SCT is not set
+# CONFIG_USB_SERIAL_MCT_U232 is not set
+# CONFIG_USB_SERIAL_MOS7720 is not set
+# CONFIG_USB_SERIAL_MOS7840 is not set
+# CONFIG_USB_SERIAL_MOTOROLA is not set
+# CONFIG_USB_SERIAL_NAVMAN is not set
+# CONFIG_USB_SERIAL_PL2303 is not set
+# CONFIG_USB_SERIAL_OTI6858 is not set
+# CONFIG_USB_SERIAL_SPCP8X5 is not set
+# CONFIG_USB_SERIAL_HP4X is not set
+# CONFIG_USB_SERIAL_SAFE is not set
+# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set
+# CONFIG_USB_SERIAL_TI is not set
+# CONFIG_USB_SERIAL_CYBERJACK is not set
+# CONFIG_USB_SERIAL_XIRCOM is not set
+# CONFIG_USB_SERIAL_OPTION is not set
+# CONFIG_USB_SERIAL_OMNINET is not set
+# CONFIG_USB_SERIAL_DEBUG is not set
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_EMI62 is not set
+# CONFIG_USB_EMI26 is not set
+# CONFIG_USB_ADUTUX is not set
+# CONFIG_USB_SEVSEG is not set
+# CONFIG_USB_RIO500 is not set
+# CONFIG_USB_LEGOTOWER is not set
+# CONFIG_USB_LCD is not set
+# CONFIG_USB_BERRY_CHARGE is not set
+# CONFIG_USB_LED is not set
+# CONFIG_USB_CYPRESS_CY7C63 is not set
+# CONFIG_USB_CYTHERM is not set
+# CONFIG_USB_PHIDGET is not set
+# CONFIG_USB_IDMOUSE is not set
+# CONFIG_USB_FTDI_ELAN is not set
+# CONFIG_USB_APPLEDISPLAY is not set
+# CONFIG_USB_SISUSBVGA is not set
+# CONFIG_USB_LD is not set
+# CONFIG_USB_TRANCEVIBRATOR is not set
+# CONFIG_USB_IOWARRIOR is not set
+CONFIG_USB_TEST=m
+# CONFIG_USB_ISIGHTFW is not set
+# CONFIG_USB_VST is not set
+CONFIG_USB_GADGET=m
+# CONFIG_USB_GADGET_DEBUG is not set
+# CONFIG_USB_GADGET_DEBUG_FILES is not set
+# CONFIG_USB_GADGET_DEBUG_FS is not set
+CONFIG_USB_GADGET_VBUS_DRAW=2
+CONFIG_USB_GADGET_SELECTED=y
+# CONFIG_USB_GADGET_AT91 is not set
+# CONFIG_USB_GADGET_ATMEL_USBA is not set
+# CONFIG_USB_GADGET_FSL_USB2 is not set
+# CONFIG_USB_GADGET_LH7A40X is not set
+# CONFIG_USB_GADGET_OMAP is not set
+# CONFIG_USB_GADGET_PXA25X is not set
+# CONFIG_USB_GADGET_PXA27X is not set
+# CONFIG_USB_GADGET_S3C2410 is not set
+# CONFIG_USB_GADGET_M66592 is not set
+# CONFIG_USB_GADGET_AMD5536UDC is not set
+# CONFIG_USB_GADGET_FSL_QE is not set
+# CONFIG_USB_GADGET_NET2280 is not set
+# CONFIG_USB_GADGET_GOKU is not set
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
+CONFIG_USB_GADGET_DUALSPEED=y
+CONFIG_USB_ZERO=m
+# CONFIG_USB_ZERO_HNPTEST is not set
+CONFIG_USB_ETH=m
+CONFIG_USB_ETH_RNDIS=y
+# CONFIG_USB_GADGETFS is not set
+CONFIG_USB_FILE_STORAGE=m
+CONFIG_USB_FILE_STORAGE_TEST=y
+CONFIG_USB_G_SERIAL=m
+# CONFIG_USB_MIDI_GADGET is not set
+# CONFIG_USB_G_PRINTER is not set
+# CONFIG_USB_CDC_COMPOSITE is not set
+CONFIG_USB_G_NOKIA=m
+CONFIG_USB_G_SOFTUPD=m
+
+#
+# OTG and related infrastructure
+#
+CONFIG_USB_OTG_UTILS=y
+# CONFIG_USB_GPIO_VBUS is not set
+# CONFIG_ISP1301_OMAP is not set
+CONFIG_TWL4030_USB=y
+CONFIG_USB_IP_COMMON=m
+CONFIG_USB_IP_VHCI_HCD=m
+# CONFIG_USB_IP_HOST is not set
+CONFIG_MMC=m
+# CONFIG_MMC_DEBUG is not set
+CONFIG_MMC_UNSAFE_RESUME=y
+
+#
+# MMC/SD/SDIO Card Drivers
+#
+CONFIG_MMC_BLOCK=m
+# CONFIG_MMC_BLOCK_BOUNCE is not set
+# CONFIG_SDIO_UART is not set
+# CONFIG_MMC_TEST is not set
+
+#
+# MMC/SD/SDIO Host Controller Drivers
+#
+# CONFIG_MMC_SDHCI is not set
+CONFIG_MMC_OMAP_HS=m
+# CONFIG_MMC_SPI is not set
+# CONFIG_MEMSTICK is not set
+# CONFIG_ACCESSIBILITY is not set
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=m
+
+#
+# LED drivers
+#
+# CONFIG_LEDS_OMAP is not set
+# CONFIG_LEDS_OMAP_PWM is not set
+# CONFIG_LEDS_PCA9532 is not set
+# CONFIG_LEDS_GPIO is not set
+# CONFIG_LEDS_PCA955X is not set
+CONFIG_LEDS_TWL4030_VIBRA=m
+CONFIG_LEDS_LP5523=m
+
+#
+# LED Triggers
+#
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=y
+CONFIG_LEDS_TRIGGER_HEARTBEAT=y
+# CONFIG_LEDS_TRIGGER_BACKLIGHT is not set
+# CONFIG_LEDS_TRIGGER_DEFAULT_ON is not set
+CONFIG_LEDS_TRIGGER_KEYB=y
+CONFIG_RTC_LIB=y
+CONFIG_RTC_CLASS=m
+
+#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=y
+CONFIG_RTC_INTF_PROC=y
+CONFIG_RTC_INTF_DEV=y
+# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
+# CONFIG_RTC_DRV_TEST is not set
+
+#
+# I2C RTC drivers
+#
+# CONFIG_RTC_DRV_DS1307 is not set
+# CONFIG_RTC_DRV_DS1374 is not set
+# CONFIG_RTC_DRV_DS1672 is not set
+# CONFIG_RTC_DRV_MAX6900 is not set
+# CONFIG_RTC_DRV_RS5C372 is not set
+# CONFIG_RTC_DRV_ISL1208 is not set
+# CONFIG_RTC_DRV_X1205 is not set
+# CONFIG_RTC_DRV_PCF8563 is not set
+# CONFIG_RTC_DRV_PCF8583 is not set
+# CONFIG_RTC_DRV_M41T80 is not set
+CONFIG_RTC_DRV_TWL4030=m
+# CONFIG_RTC_DRV_S35390A is not set
+# CONFIG_RTC_DRV_FM3130 is not set
+# CONFIG_RTC_DRV_RX8581 is not set
+
+#
+# SPI RTC drivers
+#
+# CONFIG_RTC_DRV_M41T94 is not set
+# CONFIG_RTC_DRV_DS1305 is not set
+# CONFIG_RTC_DRV_DS1390 is not set
+# CONFIG_RTC_DRV_MAX6902 is not set
+# CONFIG_RTC_DRV_R9701 is not set
+# CONFIG_RTC_DRV_RS5C348 is not set
+# CONFIG_RTC_DRV_DS3234 is not set
+
+#
+# Platform RTC drivers
+#
+# CONFIG_RTC_DRV_CMOS is not set
+# CONFIG_RTC_DRV_DS1286 is not set
+# CONFIG_RTC_DRV_DS1511 is not set
+# CONFIG_RTC_DRV_DS1553 is not set
+# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_STK17TA8 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
+# CONFIG_RTC_DRV_M48T35 is not set
+# CONFIG_RTC_DRV_M48T59 is not set
+# CONFIG_RTC_DRV_BQ4802 is not set
+# CONFIG_RTC_DRV_V3020 is not set
+
+#
+# on-CPU RTC drivers
+#
+# CONFIG_DMADEVICES is not set
+CONFIG_REGULATOR=y
+# CONFIG_REGULATOR_DEBUG is not set
+# CONFIG_REGULATOR_FIXED_VOLTAGE is not set
+# CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set
+# CONFIG_REGULATOR_BQ24022 is not set
+CONFIG_REGULATOR_TWL4030=y
+# CONFIG_UIO is not set
+
+#
+# CBUS support
+#
+# CONFIG_CBUS is not set
+CONFIG_MPU_BRIDGE=m
+CONFIG_BRIDGE_DVFS=y
+CONFIG_BRIDGE_MEMPOOL_SIZE=0x412800
+# CONFIG_BRIDGE_DEBUG is not set
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=m
+# CONFIG_EXT2_FS_XATTR is not set
+# CONFIG_EXT2_FS_XIP is not set
+CONFIG_EXT3_FS=y
+# CONFIG_EXT3_FS_XATTR is not set
+CONFIG_EXT4_FS=m
+# CONFIG_EXT4DEV_COMPAT is not set
+CONFIG_EXT4_FS_XATTR=y
+# CONFIG_EXT4_FS_POSIX_ACL is not set
+# CONFIG_EXT4_FS_SECURITY is not set
+CONFIG_JBD=y
+# CONFIG_JBD_DEBUG is not set
+CONFIG_JBD2=m
+# CONFIG_JBD2_DEBUG is not set
+CONFIG_FS_MBCACHE=m
+CONFIG_REISERFS_FS=m
+# CONFIG_REISERFS_CHECK is not set
+# CONFIG_REISERFS_PROC_INFO is not set
+# CONFIG_REISERFS_FS_XATTR is not set
+# CONFIG_JFS_FS is not set
+# CONFIG_FS_POSIX_ACL is not set
+CONFIG_FILE_LOCKING=y
+CONFIG_XFS_FS=m
+# CONFIG_XFS_QUOTA is not set
+# CONFIG_XFS_POSIX_ACL is not set
+# CONFIG_XFS_RT is not set
+# CONFIG_XFS_DEBUG is not set
+# CONFIG_OCFS2_FS is not set
+CONFIG_DNOTIFY=y
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+CONFIG_QUOTA=y
+# CONFIG_QUOTA_NETLINK_INTERFACE is not set
+CONFIG_PRINT_QUOTA_WARNING=y
+# CONFIG_QFMT_V1 is not set
+CONFIG_QFMT_V2=y
+CONFIG_QUOTACTL=y
+# CONFIG_AUTOFS_FS is not set
+CONFIG_AUTOFS4_FS=m
+CONFIG_FUSE_FS=m
+
+#
+# CD-ROM/DVD Filesystems
+#
+CONFIG_ISO9660_FS=m
+CONFIG_JOLIET=y
+# CONFIG_ZISOFS is not set
+CONFIG_UDF_FS=m
+CONFIG_UDF_NLS=y
+
+#
+# DOS/FAT/NT Filesystems
+#
+CONFIG_FAT_FS=m
+CONFIG_MSDOS_FS=m
+CONFIG_VFAT_FS=m
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+CONFIG_NTFS_FS=m
+# CONFIG_NTFS_DEBUG is not set
+# CONFIG_NTFS_RW is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_PROC_PAGE_MONITOR=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_TMPFS_POSIX_ACL is not set
+# CONFIG_HUGETLB_PAGE is not set
+# CONFIG_CONFIGFS_FS is not set
+
+#
+# Layered filesystems
+#
+CONFIG_UNION_FS=m
+# CONFIG_UNION_FS_XATTR is not set
+# CONFIG_UNION_FS_DEBUG is not set
+
+#
+# Miscellaneous filesystems
+#
+# CONFIG_ADFS_FS is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_HFS_FS is not set
+CONFIG_HFSPLUS_FS=m
+# CONFIG_BEFS_FS is not set
+# CONFIG_BFS_FS is not set
+# CONFIG_EFS_FS is not set
+# CONFIG_JFFS2_FS is not set
+CONFIG_UBIFS_FS=y
+# CONFIG_UBIFS_FS_XATTR is not set
+# CONFIG_UBIFS_FS_ADVANCED_COMPR is not set
+CONFIG_UBIFS_FS_LZO=y
+CONFIG_UBIFS_FS_ZLIB=y
+# CONFIG_UBIFS_FS_DEBUG is not set
+CONFIG_CRAMFS=y
+CONFIG_SQUASHFS=m
+# CONFIG_SQUASHFS_EMBEDDED is not set
+CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
+# CONFIG_VXFS_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_OMFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_ROMFS_FS is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+CONFIG_NETWORK_FILESYSTEMS=y
+CONFIG_NFS_FS=m
+CONFIG_NFS_V3=y
+# CONFIG_NFS_V3_ACL is not set
+CONFIG_NFS_V4=y
+# CONFIG_NFSD is not set
+CONFIG_LOCKD=m
+CONFIG_LOCKD_V4=y
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=m
+CONFIG_SUNRPC_GSS=m
+# CONFIG_SUNRPC_REGISTER_V4 is not set
+CONFIG_RPCSEC_GSS_KRB5=m
+# CONFIG_RPCSEC_GSS_SPKM3 is not set
+# CONFIG_SMB_FS is not set
+CONFIG_CIFS=m
+# CONFIG_CIFS_STATS is not set
+# CONFIG_CIFS_WEAK_PW_HASH is not set
+# CONFIG_CIFS_XATTR is not set
+# CONFIG_CIFS_DEBUG2 is not set
+# CONFIG_CIFS_EXPERIMENTAL is not set
+# CONFIG_NCP_FS is not set
+# CONFIG_CODA_FS is not set
+# CONFIG_AFS_FS is not set
+
+#
+# Partition Types
+#
+CONFIG_PARTITION_ADVANCED=y
+# CONFIG_ACORN_PARTITION is not set
+# CONFIG_OSF_PARTITION is not set
+# CONFIG_AMIGA_PARTITION is not set
+# CONFIG_ATARI_PARTITION is not set
+# CONFIG_MAC_PARTITION is not set
+CONFIG_MSDOS_PARTITION=y
+# CONFIG_BSD_DISKLABEL is not set
+# CONFIG_MINIX_SUBPARTITION is not set
+# CONFIG_SOLARIS_X86_PARTITION is not set
+# CONFIG_UNIXWARE_DISKLABEL is not set
+# CONFIG_LDM_PARTITION is not set
+# CONFIG_SGI_PARTITION is not set
+# CONFIG_ULTRIX_PARTITION is not set
+# CONFIG_SUN_PARTITION is not set
+# CONFIG_KARMA_PARTITION is not set
+CONFIG_EFI_PARTITION=y
+# CONFIG_SYSV68_PARTITION is not set
+CONFIG_NLS=y
+CONFIG_NLS_DEFAULT="iso8859-1"
+CONFIG_NLS_CODEPAGE_437=y
+# CONFIG_NLS_CODEPAGE_737 is not set
+# CONFIG_NLS_CODEPAGE_775 is not set
+CONFIG_NLS_CODEPAGE_850=m
+# CONFIG_NLS_CODEPAGE_852 is not set
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+# CONFIG_NLS_CODEPAGE_936 is not set
+# CONFIG_NLS_CODEPAGE_950 is not set
+# CONFIG_NLS_CODEPAGE_932 is not set
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_ISO8859_8 is not set
+# CONFIG_NLS_CODEPAGE_1250 is not set
+# CONFIG_NLS_CODEPAGE_1251 is not set
+# CONFIG_NLS_ASCII is not set
+CONFIG_NLS_ISO8859_1=y
+# CONFIG_NLS_ISO8859_2 is not set
+# CONFIG_NLS_ISO8859_3 is not set
+# CONFIG_NLS_ISO8859_4 is not set
+# CONFIG_NLS_ISO8859_5 is not set
+# CONFIG_NLS_ISO8859_6 is not set
+# CONFIG_NLS_ISO8859_7 is not set
+# CONFIG_NLS_ISO8859_9 is not set
+# CONFIG_NLS_ISO8859_13 is not set
+# CONFIG_NLS_ISO8859_14 is not set
+CONFIG_NLS_ISO8859_15=m
+# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_KOI8_U is not set
+CONFIG_NLS_UTF8=m
+# CONFIG_DLM is not set
+
+#
+# Kernel hacking
+#
+CONFIG_PRINTK_TIME=y
+CONFIG_ENABLE_WARN_DEPRECATED=y
+CONFIG_ENABLE_MUST_CHECK=y
+CONFIG_FRAME_WARN=1024
+CONFIG_MAGIC_SYSRQ=y
+# CONFIG_UNUSED_SYMBOLS is not set
+CONFIG_DEBUG_FS=y
+# CONFIG_HEADERS_CHECK is not set
+CONFIG_DEBUG_KERNEL=y
+# CONFIG_DEBUG_SHIRQ is not set
+# CONFIG_DETECT_SOFTLOCKUP is not set
+# CONFIG_SCHED_DEBUG is not set
+# CONFIG_SCHEDSTATS is not set
+CONFIG_TIMER_STATS=y
+# CONFIG_DEBUG_OBJECTS is not set
+# CONFIG_SLUB_DEBUG_ON is not set
+# CONFIG_SLUB_STATS is not set
+# CONFIG_DEBUG_PREEMPT is not set
+# CONFIG_DEBUG_RT_MUTEXES is not set
+# CONFIG_RT_MUTEX_TESTER is not set
+# CONFIG_DEBUG_SPINLOCK is not set
+# CONFIG_DEBUG_MUTEXES is not set
+# CONFIG_DEBUG_LOCK_ALLOC is not set
+# CONFIG_PROVE_LOCKING is not set
+# CONFIG_LOCK_STAT is not set
+# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
+# CONFIG_DEBUG_KOBJECT is not set
+CONFIG_DEBUG_BUGVERBOSE=y
+CONFIG_DEBUG_INFO=y
+# CONFIG_DEBUG_VM is not set
+# CONFIG_DEBUG_WRITECOUNT is not set
+# CONFIG_DEBUG_MEMORY_INIT is not set
+# CONFIG_DEBUG_LIST is not set
+# CONFIG_DEBUG_SG is not set
+CONFIG_FRAME_POINTER=y
+# CONFIG_BOOT_PRINTK_DELAY is not set
+# CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_RCU_CPU_STALL_DETECTOR is not set
+# CONFIG_KPROBES_SANITY_TEST is not set
+# CONFIG_BACKTRACE_SELF_TEST is not set
+# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
+# CONFIG_LKDTM is not set
+# CONFIG_FAULT_INJECTION is not set
+CONFIG_PANIC_INFO_BUFF=m
+# CONFIG_LATENCYTOP is not set
+# CONFIG_SYSCTL_SYSCALL_CHECK is not set
+CONFIG_HAVE_FUNCTION_TRACER=y
+
+#
+# Tracers
+#
+# CONFIG_FUNCTION_TRACER is not set
+# CONFIG_IRQSOFF_TRACER is not set
+# CONFIG_PREEMPT_TRACER is not set
+# CONFIG_SCHED_TRACER is not set
+# CONFIG_CONTEXT_SWITCH_TRACER is not set
+# CONFIG_BOOT_TRACER is not set
+# CONFIG_STACK_TRACER is not set
+# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
+# CONFIG_SAMPLES is not set
+CONFIG_HAVE_ARCH_KGDB=y
+# CONFIG_KGDB is not set
+# CONFIG_DEBUG_USER is not set
+# CONFIG_DEBUG_ERRORS is not set
+# CONFIG_DEBUG_STACK_USAGE is not set
+# CONFIG_DEBUG_LL is not set
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+CONFIG_SECURITY=y
+# CONFIG_SECURITYFS is not set
+# CONFIG_SECURITY_NETWORK is not set
+# CONFIG_SECURITY_FILE_CAPABILITIES is not set
+# CONFIG_SECURITY_ROOTPLUG is not set
+CONFIG_SECURITY_LOWMEM=y
+CONFIG_SECURITY_DEFAULT_MMAP_MIN_ADDR=4096
+CONFIG_CRYPTO=y
+
+#
+# Crypto core or helper
+#
+# CONFIG_CRYPTO_FIPS is not set
+CONFIG_CRYPTO_ALGAPI=y
+CONFIG_CRYPTO_ALGAPI2=y
+CONFIG_CRYPTO_AEAD=m
+CONFIG_CRYPTO_AEAD2=y
+CONFIG_CRYPTO_BLKCIPHER=y
+CONFIG_CRYPTO_BLKCIPHER2=y
+CONFIG_CRYPTO_HASH=m
+CONFIG_CRYPTO_HASH2=y
+CONFIG_CRYPTO_RNG=m
+CONFIG_CRYPTO_RNG2=y
+CONFIG_CRYPTO_MANAGER=y
+CONFIG_CRYPTO_MANAGER2=y
+# CONFIG_CRYPTO_GF128MUL is not set
+# CONFIG_CRYPTO_NULL is not set
+CONFIG_CRYPTO_CRYPTD=m
+CONFIG_CRYPTO_AUTHENC=m
+# CONFIG_CRYPTO_TEST is not set
+
+#
+# Authenticated Encryption with Associated Data
+#
+# CONFIG_CRYPTO_CCM is not set
+# CONFIG_CRYPTO_GCM is not set
+CONFIG_CRYPTO_SEQIV=m
+
+#
+# Block modes
+#
+CONFIG_CRYPTO_CBC=y
+# CONFIG_CRYPTO_CTR is not set
+# CONFIG_CRYPTO_CTS is not set
+CONFIG_CRYPTO_ECB=y
+# CONFIG_CRYPTO_LRW is not set
+CONFIG_CRYPTO_PCBC=m
+# CONFIG_CRYPTO_XTS is not set
+
+#
+# Hash modes
+#
+CONFIG_CRYPTO_HMAC=m
+# CONFIG_CRYPTO_XCBC is not set
+
+#
+# Digest
+#
+# CONFIG_CRYPTO_CRC32C is not set
+# CONFIG_CRYPTO_MD4 is not set
+CONFIG_CRYPTO_MD5=y
+# CONFIG_CRYPTO_MICHAEL_MIC is not set
+# CONFIG_CRYPTO_RMD128 is not set
+# CONFIG_CRYPTO_RMD160 is not set
+# CONFIG_CRYPTO_RMD256 is not set
+# CONFIG_CRYPTO_RMD320 is not set
+CONFIG_CRYPTO_SHA1=m
+CONFIG_CRYPTO_SHA256=m
+CONFIG_CRYPTO_SHA512=m
+# CONFIG_CRYPTO_TGR192 is not set
+# CONFIG_CRYPTO_WP512 is not set
+
+#
+# Ciphers
+#
+CONFIG_CRYPTO_AES=y
+# CONFIG_CRYPTO_ANUBIS is not set
+CONFIG_CRYPTO_ARC4=y
+CONFIG_CRYPTO_BLOWFISH=m
+# CONFIG_CRYPTO_CAMELLIA is not set
+# CONFIG_CRYPTO_CAST5 is not set
+# CONFIG_CRYPTO_CAST6 is not set
+CONFIG_CRYPTO_DES=y
+# CONFIG_CRYPTO_FCRYPT is not set
+# CONFIG_CRYPTO_KHAZAD is not set
+# CONFIG_CRYPTO_SALSA20 is not set
+# CONFIG_CRYPTO_SEED is not set
+# CONFIG_CRYPTO_SERPENT is not set
+# CONFIG_CRYPTO_TEA is not set
+CONFIG_CRYPTO_TWOFISH=m
+CONFIG_CRYPTO_TWOFISH_COMMON=m
+
+#
+# Compression
+#
+CONFIG_CRYPTO_DEFLATE=y
+CONFIG_CRYPTO_LZO=y
+
+#
+# Random Number Generation
+#
+# CONFIG_CRYPTO_ANSI_CPRNG is not set
+CONFIG_CRYPTO_HW=y
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+CONFIG_CRC_CCITT=y
+CONFIG_CRC16=y
+# CONFIG_CRC_T10DIF is not set
+CONFIG_CRC_ITU_T=m
+CONFIG_CRC32=y
+CONFIG_CRC7=m
+CONFIG_LIBCRC32C=y
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_LZO_COMPRESS=y
+CONFIG_LZO_DECOMPRESS=y
+CONFIG_PLIST=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
+CONFIG_HAS_DMA=y
diff --git a/kernel-power-2.6.28/debian/upstart b/kernel-power-2.6.28/debian/upstart
deleted file mode 100644 (file)
index d89b7ec..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-start on started dsme
-stop on starting shutdown
-service
-console none
-script
-  echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/ondemand/ignore_nice_load
-  #echo 75 > /sys/devices/system/cpu/cpu0/cpufreq/ondemand/up_threshold
-  #echo 150000 > /sys/devices/system/cpu/cpu0/cpufreq/ondemand/sampling_rate
-  #modprobe bq27x00_battery
-  echo "30 30 38 48 54 48 60 60 60 60 60 60 60 72 72" > /sys/power/vdd1_opps_vsel
-  echo "90000000 90000000 180000000 360000000 400000000 430000000 430000000 430000000 430000000 500000000 500000000 500000000 500000000 520000000 520000000" > /sys/power/dsp_opps_rate
-end script