[meego-commits] 14726: Changes to Trunk:Testing/kernel-adaptation-connext

Qi Wang no_reply at build.meego.com
Mon Mar 14 02:27:50 UTC 2011


Hi,
I have made the following changes to kernel-adaptation-connext in project Trunk:Testing. Please review and accept ASAP.

Thank You,
Qi Wang

[This message was auto-generated]

---

Request #14726:

  submit:   devel:kernel/kernel-adaptation-connext(r9)(update) -> Trunk:Testing/kernel-adaptation-connext


Message:
    None

State:   new          2011-03-13T19:27:09 qi
Comment: None



changes files:
--------------
--- kernel-adaptation-connext.changes
+++ kernel-adaptation-connext.changes
@@ -0,0 +1,9 @@
+* Fri Mar 11 2011 Virgil Bucoci <virgil.bucoci at windriver.com> - 2.6.37.2
+- Updated to kernel 2.6.37.2
+- Updated to release from 2011-03-04 of STMicro ConneXt IOH drivers
+  * BMC #13360. Fixed frequent wake ups when idle
+  * BMC #13347. Fixed I/O error on SD slot CN5
+  * BMC #13352. Integrated touchscreen driver
+  * MMC driver is now builtin and can be used to boot from eMMC/SD
+- Modified touchscreen mapper driver to use I2C bus #1
+

old:
----
  linux-2.6-build-nonintconfig.patch
  linux-2.6.35-ahci-alpm-accounting.patch
  linux-2.6.35-annotate-device-pm.patch
  linux-2.6.35-connext-0001-common.patch
  linux-2.6.35-connext-0002-gpio.patch
  linux-2.6.35-connext-0003-pcie-amba.patch
  linux-2.6.35-connext-0004-dma.patch
  linux-2.6.35-connext-0005-uart.patch
  linux-2.6.35-connext-0006-sata.patch
  linux-2.6.35-connext-0007-eth.patch
  linux-2.6.35-connext-0008-usb.patch
  linux-2.6.35-connext-0009-mmc.patch
  linux-2.6.35-connext-0010-can.patch
  linux-2.6.35-connext-0011-i2c.patch
  linux-2.6.35-connext-0012-spi.patch
  linux-2.6.35-connext-0013-video-input.patch
  linux-2.6.35-connext-0014-usb-otg.patch
  linux-2.6.35-connext-0015-msp.patch
  linux-2.6.35-connext-0016-fm-radio.patch
  linux-2.6.35-connext-0017-tsc2007.patch
  linux-2.6.35-connext-0018-mapper.patch
  linux-2.6.35-dont-skew-the-tick.patch
  linux-2.6.35-dont-wait-for-mouse.patch
  linux-2.6.35-emgd-0001-add-makefile.patch
  linux-2.6.35-emgd-0002-initial-import-1812.patch
  linux-2.6.35-emgd-0003-1859-build.patch
  linux-2.6.35-emgd-0004-add-2.6.37-support.patch
  linux-2.6.35-intel-idle.patch
  linux-2.6.35-slab-timer.patch
  linux-2.6.35-sreadahead.patch
  linux-2.6.35-vfs-tracepoints.patch
  linux-2.6.35.tar.bz2
  patch-2.6.35.10.bz2

new:
----
  linux-2.6.37-connext-0001-pcie-amba.patch
  linux-2.6.37-connext-0002-gpio.patch
  linux-2.6.37-connext-0003-dma.patch
  linux-2.6.37-connext-0004-uart.patch
  linux-2.6.37-connext-0005-sata.patch
  linux-2.6.37-connext-0006-eth.patch
  linux-2.6.37-connext-0007-mmc.patch
  linux-2.6.37-connext-0008-i2c.patch
  linux-2.6.37-connext-0009-can.patch
  linux-2.6.37-connext-0010-mlb.patch
  linux-2.6.37-connext-0011-video-input.patch
  linux-2.6.37-connext-0012-msp.patch
  linux-2.6.37-connext-0013-fm-radio.patch
  linux-2.6.37-connext-0014-usb-otg.patch
  linux-2.6.37-connext-0015-common-cut1.patch
  linux-2.6.37-connext-0016-pcie-amba-cut1.patch
  linux-2.6.37-connext-0017-uart-cut1.patch
  linux-2.6.37-connext-0018-sata-cut1.patch
  linux-2.6.37-connext-0019-usb-cut1.patch
  linux-2.6.37-connext-0020-eth-cut1.patch
  linux-2.6.37-connext-0021-mmc-cut1.patch
  linux-2.6.37-connext-0022-i2c-cut1.patch
  linux-2.6.37-connext-0023-can-cut1.patch
  linux-2.6.37-connext-0024-mlb-cut1.patch
  linux-2.6.37-connext-0025-msp-cut1.patch
  linux-2.6.37-connext-0026-usb-otg-cut1.patch
  linux-2.6.37-connext-0027-tsc2007.patch
  linux-2.6.37-connext-0028-mapper.patch
  linux-2.6.37-emgd-0001-initial-import-1812.patch
  linux-2.6.37-emgd-0002-add-makefile.patch
  linux-2.6.37-emgd-0003-1859-build.patch
  linux-2.6.37-emgd-0004-add-2.6.37-support.patch
  linux-2.6.37-rc1-ahci-alpm-accounting.patch
  linux-2.6.37-rc3-vfs-dirty-inode.patch
  linux-2.6.37.tar.bz2
  linux-2.6.38-ath3k.patch
  linux-2.6.38-egalax-tablet.patch
  patch-2.6.37.2.bz2

spec files:
-----------
--- kernel-adaptation-connext.spec
+++ kernel-adaptation-connext.spec
@@ -16,13 +16,13 @@
 # on top of -- for example, 2.6.22-rc7 starts with a 2.6.21 base,
 # which yields a base_sublevel of 21.
 
-%define base_sublevel 35
+%define base_sublevel 37
 
 
 ## If this is a released kernel ##
 %if 0%{?released_kernel}
 # Do we have a 2.6.21.y update to apply?
-%define stable_update 10
+%define stable_update 2
 # Set rpm version accordingly
 %if 0%{?stable_update}
 %define stablerev .%{stable_update}
@@ -35,7 +35,7 @@
 %define upstream_sublevel %(expr %{base_sublevel} + 1)
 # The rc snapshot level
 
-%define rcrev 0
+%define rcrev 8
 
 
 %if 0%{?rcrev}
@@ -83,9 +83,8 @@
 %define make_target zImage
 %endif
 
-%define oldconfig_target nonint_oldconfig
-
 ExclusiveArch: %{all_x86}
+
 #
 # Packages that need to be installed before the kernel is, because the %post
 # scripts use them.
@@ -117,7 +116,7 @@
 License: GPLv2
 URL: http://www.kernel.org/
 Version: %{rpmversion}
-Release: 6
+Release: 9
 
 %kernel_reqprovconf
 
@@ -138,7 +137,8 @@
 Source20: Makefile.config
 
 Source100: config-generic
-Source102: config-adaptation-connext
+Source104: config-adaptation-connext
+
 
 # For a stable release kernel
 %if 0%{?stable_update}
@@ -152,101 +152,114 @@
 # linux-<version it is supposed to be upstream>-<description-separated-with-dashes>.patch
 #
 
-#
-# Patch to add a "nonintconfig" option to the Makefile
-# needed for unattended builds
-#
-Patch1: linux-2.6-build-nonintconfig.patch
 
-#####################################################################
 #
-# Boot time and power patches
-# Section maintainer:  Arjan van de Ven <arjan at linux.intel.com
+# Stable patch - critical bugfixes
 #
 
+
 #
-# Patch to try mounting / before all devices (the mouse)
-# are done probing. This saves several seconds of boot time.
-#
-#linux-2.6.35-dont-wait-for-mouse.patch
-#
-# Patch to support the old sreadahead versions
+# Daily development snapshots
 #
-#linux-2.6.35-sreadahead.patch
 
+#####################################################################
 #
-# Patches to help PowerTOP
+# Direct Backport section.. only patches already in Linus' or maintainer git trees
+# (for linux-next) should go here.
+# We will regularly drop patches from this section as we rebase to newer
+# kernels.
+
+
+# Driver backports, new device IDs and the like
+Patch100: linux-2.6.38-ath3k.patch
+Patch101: linux-2.6.38-egalax-tablet.patch
 #
-#linux-2.6.35-vfs-tracepoints.patch
-#linux-2.6.35-ahci-alpm-accounting.patch
-#linux-2.6.35-annotate-device-pm.patch
+
+# Kernel CVE patches - these go last in the backport section
+# no non-cve patches should go here!
+
 
 #
-# Fix the slab timer to not be a power hog
+# End of the Direct Backports section
 #
-#linux-2.6.35-slab-timer.patch
+#####################################################################
+
 
+
+
+
+#####################################################################
 #
-# Fix Linux deliberately skewing the timer for
-# historic reasons that are no longer true.
+# Boot time and power patches
+# Section maintainer:  Arjan van de Ven <arjan at linux.intel.com
 #
-#linux-2.6.35-dont-skew-the-tick.patch
 
 #
-# Atom C state fixes
+# Patches to help PowerTOP
 #
-# linux-2.6.35-intel-idle.patch
+Patch200: linux-2.6.37-rc3-vfs-dirty-inode.patch
+Patch201: linux-2.6.37-rc1-ahci-alpm-accounting.patch
 
 #
 # End of the boot time and power patches
 #
 #####################################################################
 
+
+
 #####################################################################
 #
 # All other patches
 #
-#linux-2.6.35-fatal-signals.patch
-
-#
-# Add support for STM ConneXt IOH
-#
-Patch100: linux-2.6.35-connext-0001-common.patch
-Patch101: linux-2.6.35-connext-0002-gpio.patch
-Patch102: linux-2.6.35-connext-0003-pcie-amba.patch
-Patch103: linux-2.6.35-connext-0004-dma.patch
-Patch104: linux-2.6.35-connext-0005-uart.patch
-Patch105: linux-2.6.35-connext-0006-sata.patch
-Patch106: linux-2.6.35-connext-0007-eth.patch
-Patch107: linux-2.6.35-connext-0008-usb.patch
-Patch108: linux-2.6.35-connext-0009-mmc.patch
-Patch109: linux-2.6.35-connext-0010-can.patch
-Patch110: linux-2.6.35-connext-0011-i2c.patch
-Patch111: linux-2.6.35-connext-0012-spi.patch
-Patch112: linux-2.6.35-connext-0013-video-input.patch
-Patch113: linux-2.6.35-connext-0014-usb-otg.patch
-Patch114: linux-2.6.35-connext-0015-msp.patch
-Patch115: linux-2.6.35-connext-0016-fm-radio.patch
-Patch116: linux-2.6.35-connext-0017-tsc2007.patch
-Patch117: linux-2.6.35-connext-0018-mapper.patch
-#
-# Add EMGD
-#
-Patch118: linux-2.6.35-emgd-0001-add-makefile.patch
-Patch119: linux-2.6.35-emgd-0002-initial-import-1812.patch
-Patch120: linux-2.6.35-emgd-0003-1859-build.patch
-Patch121: linux-2.6.35-emgd-0004-add-2.6.37-support.patch
 
 #
-# End of all other patches
+# ConneXt drivers
 #
-#####################################################################
+Patch202: linux-2.6.37-connext-0001-pcie-amba.patch
+Patch203: linux-2.6.37-connext-0002-gpio.patch
+Patch204: linux-2.6.37-connext-0003-dma.patch
+Patch205: linux-2.6.37-connext-0004-uart.patch
+Patch206: linux-2.6.37-connext-0005-sata.patch
+Patch207: linux-2.6.37-connext-0006-eth.patch
+Patch208: linux-2.6.37-connext-0007-mmc.patch
+Patch209: linux-2.6.37-connext-0008-i2c.patch
+Patch210: linux-2.6.37-connext-0009-can.patch
+Patch211: linux-2.6.37-connext-0010-mlb.patch
+Patch212: linux-2.6.37-connext-0011-video-input.patch
+Patch213: linux-2.6.37-connext-0012-msp.patch
+Patch214: linux-2.6.37-connext-0013-fm-radio.patch
+Patch215: linux-2.6.37-connext-0014-usb-otg.patch
+Patch216: linux-2.6.37-connext-0015-common-cut1.patch
+Patch217: linux-2.6.37-connext-0016-pcie-amba-cut1.patch
+Patch218: linux-2.6.37-connext-0017-uart-cut1.patch
+Patch219: linux-2.6.37-connext-0018-sata-cut1.patch
+Patch220: linux-2.6.37-connext-0019-usb-cut1.patch
+Patch221: linux-2.6.37-connext-0020-eth-cut1.patch
+Patch222: linux-2.6.37-connext-0021-mmc-cut1.patch
+Patch223: linux-2.6.37-connext-0022-i2c-cut1.patch
+Patch224: linux-2.6.37-connext-0023-can-cut1.patch
+Patch225: linux-2.6.37-connext-0024-mlb-cut1.patch
+Patch226: linux-2.6.37-connext-0025-msp-cut1.patch
+Patch227: linux-2.6.37-connext-0026-usb-otg-cut1.patch
+Patch228: linux-2.6.37-connext-0027-tsc2007.patch
+Patch229: linux-2.6.37-connext-0028-mapper.patch
+
+#
+# EMGD
+# 
+Patch230: linux-2.6.37-emgd-0001-initial-import-1812.patch
+Patch231: linux-2.6.37-emgd-0002-add-makefile.patch
+Patch232: linux-2.6.37-emgd-0003-1859-build.patch
+Patch233: linux-2.6.37-emgd-0004-add-2.6.37-support.patch
+
+# turn on "print fatal signals" by default, so that we can debug /sbin/init
+# crashes
+Patch234: linux-2.6.35-fatal-signals.patch
 
 
 BuildRoot: %{_tmppath}/kernel-%{KVERREL}-root
 
 
-
 #
 # This macro creates a kernel-<subpackage>-devel package.
 #	%%kernel_devel_package <subpackage> <pretty-name>
@@ -286,23 +299,25 @@
 
 
 
-
 # Now, each variant package.
 
 %ifarch %all_x86
 
+
+%define variant_summary Reference kernel for MeeGo
 %kernel_devel_package adaptation-connext
 %description -n kernel-adaptation-connext
 This package contains the kernel optimized for In Vehicle Infotainment segments
 
 %endif
 
-%ifarch %{all_arm}
-
-#Put other ARM variants here
-
-%endif
-
+%package -n perf
+Summary: The 'perf' performance counter tool
+Group: System/Performance
+%description -n perf
+This package provides the "perf" tool that can be used to monitor performance counter events
+as well as various kernel internal events.
+Obsoletes: oprofile <= 0.9.5
 
 %prep
 
@@ -337,15 +352,14 @@
 #
 # The add an -rc patch if needed
 #
-
-%if 0%{?stable_update}
-# patch-2.6.%{base_sublevel}.%{stable_update}.bz2
-%patch00 -p1
-%endif
 %if 0%{?rcrev}
 # patch-2.6.%{upstream_sublevel}-rc%{rcrev}.bz2
 %patch00 -p1
 %endif
+%if 0%{?stable_update}
+# patch-2.6.%{base_sublevel}.%{stable_update}.bz2
+%patch00 -p1
+%endif
 
 
 #
@@ -355,118 +369,146 @@
 # linux-<version it is supposed to be upstream>-<description-separated-with-dashes>.patch
 #
 
-#
-# Patch to add a "nonintconfig" option to the Makefile
-# needed for unattended builds
-#
-# linux-2.6-build-nonintconfig.patch
-%patch1 -p1
 
-#####################################################################
 #
-# Boot time and power patches
-# Section maintainer:  Arjan van de Ven <arjan at linux.intel.com
+# Stable patch - critical bugfixes
 #
 
+
 #
-# Patch to try mounting / before all devices (the mouse)
-# are done probing. This saves several seconds of boot time.
-#
-#linux-2.6.35-dont-wait-for-mouse.patch
-#
-# Patch to support the old sreadahead versions
+# Daily development snapshots
 #
-#linux-2.6.35-sreadahead.patch
 
+#####################################################################
 #
-# Patches to help PowerTOP
+# Direct Backport section.. only patches already in Linus' or maintainer git trees
+# (for linux-next) should go here.
+# We will regularly drop patches from this section as we rebase to newer
+# kernels.
+
+
+# Driver backports, new device IDs and the like
+# linux-2.6.38-ath3k.patch
+%patch100 -p1
+# linux-2.6.38-egalax-tablet.patch
+%patch101 -p1
 #
-#linux-2.6.35-vfs-tracepoints.patch
-#linux-2.6.35-ahci-alpm-accounting.patch
-#linux-2.6.35-annotate-device-pm.patch
+
+# Kernel CVE patches - these go last in the backport section
+# no non-cve patches should go here!
+
 
 #
-# Fix the slab timer to not be a power hog
+# End of the Direct Backports section
 #
-#linux-2.6.35-slab-timer.patch
+#####################################################################
+
 
+
+
+
+#####################################################################
 #
-# Fix Linux deliberately skewing the timer for
-# historic reasons that are no longer true.
+# Boot time and power patches
+# Section maintainer:  Arjan van de Ven <arjan at linux.intel.com
 #
-#linux-2.6.35-dont-skew-the-tick.patch
 
 #
-# Atom C state fixes
+# Patches to help PowerTOP
 #
-# linux-2.6.35-intel-idle.patch
+# linux-2.6.37-rc3-vfs-dirty-inode.patch
+%patch200 -p1
+# linux-2.6.37-rc1-ahci-alpm-accounting.patch
+%patch201 -p1
 
 #
 # End of the boot time and power patches
 #
 #####################################################################
 
+
+
 #####################################################################
 #
 # All other patches
 #
-#linux-2.6.35-fatal-signals.patch
-
-#
-# Add support for STM ConneXt IOH
-#
-# linux-2.6.35-connext-0001-common.patch
-%patch100 -p1
-# linux-2.6.35-connext-0002-gpio.patch
-%patch101 -p1
-# linux-2.6.35-connext-0003-pcie-amba.patch
-%patch102 -p1
-# linux-2.6.35-connext-0004-dma.patch
-%patch103 -p1
-# linux-2.6.35-connext-0005-uart.patch
-%patch104 -p1
-# linux-2.6.35-connext-0006-sata.patch
-%patch105 -p1
-# linux-2.6.35-connext-0007-eth.patch
-%patch106 -p1
-# linux-2.6.35-connext-0008-usb.patch
-%patch107 -p1
-# linux-2.6.35-connext-0009-mmc.patch
-%patch108 -p1
-# linux-2.6.35-connext-0010-can.patch
-%patch109 -p1
-# linux-2.6.35-connext-0011-i2c.patch
-%patch110 -p1
-# linux-2.6.35-connext-0012-spi.patch
-%patch111 -p1
-# linux-2.6.35-connext-0013-video-input.patch
-%patch112 -p1
-# linux-2.6.35-connext-0014-usb-otg.patch
-%patch113 -p1
-# linux-2.6.35-connext-0015-msp.patch
-%patch114 -p1
-# linux-2.6.35-connext-0016-fm-radio.patch
-%patch115 -p1
-# linux-2.6.35-connext-0017-tsc2007.patch
-%patch116 -p1
-# linux-2.6.35-connext-0018-mapper.patch
-%patch117 -p1
-#
-# Add EMGD
-#
-# linux-2.6.35-emgd-0001-add-makefile.patch
-%patch118 -p1
-# linux-2.6.35-emgd-0002-initial-import-1812.patch
-%patch119 -p1
-# linux-2.6.35-emgd-0003-1859-build.patch
-%patch120 -p1
-# linux-2.6.35-emgd-0004-add-2.6.37-support.patch
-%patch121 -p1
 
 #
-# End of all other patches
+# ConneXt drivers
 #
-#####################################################################
+# linux-2.6.37-connext-0001-pcie-amba.patch
+%patch202 -p1
+# linux-2.6.37-connext-0002-gpio.patch
+%patch203 -p1
+# linux-2.6.37-connext-0003-dma.patch
+%patch204 -p1
+# linux-2.6.37-connext-0004-uart.patch
+%patch205 -p1
+# linux-2.6.37-connext-0005-sata.patch
+%patch206 -p1
+# linux-2.6.37-connext-0006-eth.patch
+%patch207 -p1
+# linux-2.6.37-connext-0007-mmc.patch
+%patch208 -p1
+# linux-2.6.37-connext-0008-i2c.patch
+%patch209 -p1
+# linux-2.6.37-connext-0009-can.patch
+%patch210 -p1
+# linux-2.6.37-connext-0010-mlb.patch
+%patch211 -p1
+# linux-2.6.37-connext-0011-video-input.patch
+%patch212 -p1
+# linux-2.6.37-connext-0012-msp.patch
+%patch213 -p1
+# linux-2.6.37-connext-0013-fm-radio.patch
+%patch214 -p1
+# linux-2.6.37-connext-0014-usb-otg.patch
+%patch215 -p1
+# linux-2.6.37-connext-0015-common-cut1.patch
+%patch216 -p1
+# linux-2.6.37-connext-0016-pcie-amba-cut1.patch
+%patch217 -p1
+# linux-2.6.37-connext-0017-uart-cut1.patch
+%patch218 -p1
+# linux-2.6.37-connext-0018-sata-cut1.patch
+%patch219 -p1
+# linux-2.6.37-connext-0019-usb-cut1.patch
+%patch220 -p1
+# linux-2.6.37-connext-0020-eth-cut1.patch
+%patch221 -p1
+# linux-2.6.37-connext-0021-mmc-cut1.patch
+%patch222 -p1
+# linux-2.6.37-connext-0022-i2c-cut1.patch
+%patch223 -p1
+# linux-2.6.37-connext-0023-can-cut1.patch
+%patch224 -p1
+# linux-2.6.37-connext-0024-mlb-cut1.patch
+%patch225 -p1
+# linux-2.6.37-connext-0025-msp-cut1.patch
+%patch226 -p1
+# linux-2.6.37-connext-0026-usb-otg-cut1.patch
+%patch227 -p1
+# linux-2.6.37-connext-0027-tsc2007.patch
+%patch228 -p1
+# linux-2.6.37-connext-0028-mapper.patch
+%patch229 -p1
+
+#
+# EMGD
+# 
+# linux-2.6.37-emgd-0001-initial-import-1812.patch
+%patch230 -p1
+# linux-2.6.37-emgd-0002-add-makefile.patch
+%patch231 -p1
+# linux-2.6.37-emgd-0003-1859-build.patch
+%patch232 -p1
+# linux-2.6.37-emgd-0004-add-2.6.37-support.patch
+%patch233 -p1
+
+# turn on "print fatal signals" by default, so that we can debug /sbin/init
+# crashes
+# linux-2.6.35-fatal-signals.patch
+%patch234 -p1
 
 # Drop some necessary files from the source dir into the buildroot
 cp $RPM_SOURCE_DIR/config-* .
@@ -504,7 +546,15 @@
 
   # make oldconfig > /dev/null
   echo Doing $i
-  make ARCH=$Arch %{oldconfig_target} > /dev/null
+
+  make ARCH=$Arch listnewconfig &> /tmp/configs
+  export conf=`cat /tmp/configs | grep CONFIG | wc -l`
+  echo CONF is $conf
+  if [ $conf -gt 0 ]; then
+	  make ARCH=$Arch listnewconfig  
+	  exit 1
+  fi
+  make ARCH=$Arch oldconfig > /dev/null
   echo "# $Arch" > configs/$i
   cat .config >> configs/$i
 done
@@ -568,7 +618,7 @@
         make -s mrproper
         cp configs/$Config .config
 
-        make -s ARCH=$Arch %{oldconfig_target} > /dev/null
+        make -s ARCH=$Arch oldconfig > /dev/null
         make -s CONFIG_DEBUG_SECTION_MISMATCH=y ARCH=$Arch %{?_smp_mflags} $MakeTarget %{?sparse_mflags}
         make -s CONFIG_DEBUG_SECTION_MISMATCH=y ARCH=$Arch %{?_smp_mflags} modules %{?sparse_mflags} || exit 1
 
@@ -589,7 +639,6 @@
 %ifnarch %{all_arm}
         make -s ARCH=$Arch INSTALL_MOD_PATH=$RPM_BUILD_ROOT vdso_install KERNELRELEASE=$KernelVer
 %endif
-	mkdir -p $RPM_BUILD_ROOT/lib/modules/$KernelVer/updates
 
         # And save the headers/makefiles etc for building modules against
         #
@@ -691,10 +740,15 @@
 
 cd linux-%{kversion}
 
+BuildKernel %make_target %kernel_image x86 adaptation-connext
 
-   BuildKernel %make_target %kernel_image x86 adaptation-connext
-
-
+# Build the perf utility
+#
+cd tools/perf
+unset LD_AS_NEEDED
+chmod a+x util/generate-cmdlist.sh
+make %{?_smp_mflags}
+cd ../..
 
 
 ###
@@ -709,11 +763,18 @@
 
 cd linux-%{kversion}
 
+rm -rf $RPM_BUILD_ROOT/lib/firmware
+
 #
 # the perf utility
 #
-
-rm -rf $RPM_BUILD_ROOT/lib/firmware
+cd tools/perf
+make DESTDIR=$RPM_BUILD_ROOT install
+mkdir -p $RPM_BUILD_ROOT/usr/bin/
+mkdir -p $RPM_BUILD_ROOT/usr/libexec/
+mv $RPM_BUILD_ROOT/bin/* $RPM_BUILD_ROOT/usr/bin/
+mv $RPM_BUILD_ROOT/libexec/* $RPM_BUILD_ROOT/usr/libexec/
+cd ../..
 
 
 ###
@@ -775,16 +836,11 @@
 
 %ifarch %all_x86
 
-
-
 %kernel_variant_preun adaptation-connext
 %kernel_variant_post -v adaptation-connext
 
 %endif
 
-%ifarch %{all_arm}
-
-%endif
 
 ###
 ### file lists
@@ -808,7 +864,6 @@
 %{?-a:%{-a*}}\
 %dir /lib/modules/%{KVERREL}%{?2:-%{2}}\
 /lib/modules/%{KVERREL}%{?2:-%{2}}/kernel\
-/lib/modules/%{KVERREL}%{?2:-%{2}}/updates\
 /lib/modules/%{KVERREL}%{?2:-%{2}}/build\
 /lib/modules/%{KVERREL}%{?2:-%{2}}/source\
 %ifnarch %{all_arm}\
@@ -831,7 +886,9 @@
 %{nil}
 
 
+%files -n perf
+/usr/bin/perf
+/usr/libexec/perf-core/
 
 
 %kernel_variant_files %all_x86 adaptation-connext
-

other changes:
--------------

++++++ config-adaptation-connext
--- config-adaptation-connext
+++ config-adaptation-connext
@@ -107,7 +107,6 @@
 CONFIG_MOST_SYNC=m
 CONFIG_MOST_ASYNC=m
 CONFIG_GPIO_MC33880=m
-CONFIG_MOST_TIMB_MLB=m
 CONFIG_RADIO_ADAPTERS=y
 # CONFIG_RADIO_CADET is not set
 # CONFIG_RADIO_RTRACK is not set
@@ -230,10 +229,10 @@
 CONFIG_USB_GADGET_EG20T=y
 CONFIG_USB_EG20T=y
 CONFIG_USB_GADGET_DUALSPEED=y
-CONFIG_CAN=y
-CONFIG_PCH_CAN=y
-CONFIG_PCH_DMA=y
+# CONFIG_PCH_CAN is not set
+# CONFIG_PCH_DMA is not set
 CONFIG_SERIAL_PCH_UART=y
+
 # ST
 # CONFIG_ARCH_PHYS_ADDR_T_64BIT is not set
 CONFIG_HIGHMEM4G=y
@@ -242,8 +241,7 @@
 # CONFIG_PHYS_ADDR_T_64BIT is not set
 # CONFIG_TIMB_DMA is not set
 # CONFIG_VIDEO_TIMBERDALE is not set
-CONFIG_PCI_PL08X=m
-# CONFIG_SERIAL_PCI_PL011_DMA is not set
+CONFIG_PCI_PL08X=y
 CONFIG_CAN=m
 CONFIG_CAN_RAW=m
 CONFIG_CAN_DEV=m
@@ -281,14 +279,17 @@
 CONFIG_STA2X11_PCI_APBREG=y
 CONFIG_STA2X11_PCI_MUX=y
 CONFIG_STA2X11_PCI_SCTL=y
-CONFIG_MAPPER_HELPER=y
-# CONFIG_STMMAC_ETH is not set
+CONFIG_MAPPER_HELPER=m
+CONFIG_STMMAC_ETH=m
+# CONFIG_STMMAC_DA is not set
+# CONFIG_STMMAC_DUAL_MAC is not set
 CONFIG_GPIO_PL061_PCI=y
 CONFIG_GPIO_PL061_PCI_IRQ=y
 CONFIG_SERIAL_PCI_PL011=y
 CONFIG_SERIAL_PCI_PL011_CONSOLE=y
-CONFIG_MMC_ARMMMCI_PCI=m
-# CONFIG_MMC_ARMMMCI_PCI_DMA_SUPPORT is not set
+CONFIG_SERIAL_PCI_PL011_DMA=y
+CONFIG_MMC_ARMMMCI_PCI=y
+CONFIG_MMC_ARMMMCI_PCI_DMA_SUPPORT=y
 
 CONFIG_CAN_STA2X11=m
 CONFIG_RADIO_TDA7706=m
@@ -301,9 +302,8 @@
 CONFIG_SPI_STEVAL_DEVICES=m
 CONFIG_SPI_DUMMYSPICHIP=m
 
-CONFIG_SERIAL_PCI_PL011_DMA=y
-
 CONFIG_USB_STA2X11_OTG=m
+CONFIG_VIDEO_ADV7180=m
 CONFIG_STA2X11_VIP=m
 
 # EMGD

++++++ config-generic
--- config-generic
+++ config-generic
@@ -710,7 +710,7 @@
 # CONFIG_LAPB is not set
 # CONFIG_ECONET is not set
 # CONFIG_WAN_ROUTER is not set
-# CONFIG_NET_SCHED is not set
+CONFIG_NET_SCHED=y
 CONFIG_NET_CLS_ROUTE=y
 # CONFIG_DCB is not set
 
@@ -1259,7 +1259,7 @@
 CONFIG_RT2400PCI=m
 CONFIG_RT2500PCI=m
 CONFIG_RT61PCI=m
-CONFIG_RT2800PCI_PCI=m
+CONFIG_RT2800PCI_PCI=y
 # CONFIG_RT2800PCI is not set
 CONFIG_RT2500USB=m
 CONFIG_RT73USB=m
@@ -3401,11 +3401,10 @@
 # CONFIG_SPI_STEVAL_DEVICES is not set
 # CONFIG_SPI_DUMMYSPICHIP is not set
 #
-# CONFIG_SERIAL_PCI_PL011_DMA=y
+# CONFIG_SERIAL_PCI_PL011_DMA is not set
 # CONFIG_USB_STA2X11_OTG is not set
 # CONFIG_STA2X11_VIP is not set
 
-# CONFIG_MAPPER_HELPER is not set
 # CONFIG_PCI_PL08X is not set
 
 # CONFIG_DRM_EMGD is not set
@@ -3415,3 +3414,153 @@
 # CONFIG_CAN_SJA1000 is not set
 # CONFIG_CAN_EMS_USB is not set
 # CONFIG_CAN_DEBUG_DEVICES is not set
+
+# 2.6.37
+CONFIG_X86_RESERVE_LOW=64
+CONFIG_MMC_BLOCK_MINORS=8
+# CONFIG_SYSFS_DEPRECATED is not set
+# CONFIG_JUMP_LABEL is not set
+# CONFIG_IRQ_TIME_ACCOUNTING is not set
+# CONFIG_X86_RESERVE_LOW is not set
+# CONFIG_ACPI_EC_DEBUGFS is not set
+# CONFIG_OLPC_OPENFIRMWARE is not set
+# CONFIG_NET_IPGRE_DEMUX is not set
+# CONFIG_NETWORK_PHY_TIMESTAMPING is not set
+# CONFIG_NETFILTER_XT_TARGET_CHECKSUM is not set
+# CONFIG_NETFILTER_XT_TARGET_IDLETIMER is not set
+# CONFIG_NETFILTER_XT_MATCH_CPU is not set
+# CONFIG_CAN_ESD_USB2 is not set
+# CONFIG_BT_HCIUART_ATH3K is not set
+# CONFIG_CEPH_LIB is not set
+# CONFIG_BLK_DEV_RBD is not set
+# CONFIG_APDS9802ALS is not set
+# CONFIG_ISL29020 is not set
+# CONFIG_SENSORS_BH1780 is not set
+# CONFIG_SENSORS_BH1770 is not set
+# CONFIG_SENSORS_APDS990X is not set
+# CONFIG_HMC6352 is not set
+# CONFIG_BMP085 is not set
+# CONFIG_ISCSI_BOOT_SYSFS is not set
+# CONFIG_SCSI_CXGB4_ISCSI is not set
+# CONFIG_FIREWIRE_NOSY is not set
+# CONFIG_BCM63XX_PHY is not set
+# CONFIG_CHELSIO_T4VF is not set
+# CONFIG_BNA is not set
+# CONFIG_ATH9K_RATE_CONTROL is not set
+# CONFIG_CARL9170 is not set
+# CONFIG_IWLWIFI_DEBUGFS is not set
+# CONFIG_P54_SPI_DEFAULT_EEPROM is not set
+# CONFIG_WL1251 is not set
+# CONFIG_USB_NET_CX82310_ETH is not set
+# CONFIG_KEYBOARD_GPIO_POLLED is not set
+# CONFIG_KEYBOARD_MCS is not set
+# CONFIG_TOUCHSCREEN_AD7879 is not set
+# CONFIG_TOUCHSCREEN_BU21013 is not set
+# CONFIG_TOUCHSCREEN_QT602240 is not set
+# CONFIG_INPUT_ADXL34X is not set
+# CONFIG_SERIO_PS2MULT is not set
+# CONFIG_SERIAL_MFD_HSU is not set
+# CONFIG_I2C_MUX is not set
+# CONFIG_I2C_INTEL_MID is not set
+# CONFIG_GPIO_BASIC_MMIO is not set
+# CONFIG_GPIO_VX855 is not set
+# CONFIG_GPIO_SX150X is not set
+# CONFIG_GPIO_74X164 is not set
+# CONFIG_BATTERY_BQ20Z75 is not set
+# CONFIG_CHARGER_ISP1704 is not set
+# CONFIG_SENSORS_GPIO_FAN is not set
+# CONFIG_SENSORS_PKGTEMP is not set
+# CONFIG_SENSORS_JC42 is not set
+# CONFIG_SENSORS_LTC4261 is not set
+# CONFIG_SENSORS_SMM665 is not set
+# CONFIG_SENSORS_EMC2103 is not set
+# CONFIG_SENSORS_W83795 is not set
+# CONFIG_IR_CORE is not set
+# CONFIG_IR_RC5_SZ_DECODER is not set
+# CONFIG_IR_LIRC_CODEC is not set
+# CONFIG_IR_ENE is not set
+# CONFIG_IR_MCEUSB is not set
+# CONFIG_IR_NUVOTON is not set
+# CONFIG_IR_STREAMZAP is not set
+# CONFIG_VIDEO_CPIA2 is not set
+# CONFIG_VIDEO_SR030PC30 is not set
+# CONFIG_USB_GSPCA_KONICA is not set
+# CONFIG_USB_GSPCA_SPCA1528 is not set
+# CONFIG_USB_GSPCA_SQ930X is not set
+# CONFIG_USB_GSPCA_XIRLINK_CIT is not set
+# CONFIG_USB_PWC is not set
+# CONFIG_STUB_POULSBO is not set
+# CONFIG_SND_ALOOP is not set
+# CONFIG_SND_HDA_CODEC_HDMI is not set
+# CONFIG_HID_ACRUX_FF is not set
+# CONFIG_HID_ELECOM is not set
+# CONFIG_HID_UCLOGIC is not set
+# CONFIG_HID_WALTOP is not set
+# CONFIG_LOGIWII_FF is not set
+# CONFIG_HID_ROCCAT_PYRA is not set
+# CONFIG_USB_UAS is not set
+# CONFIG_USB_SERIAL_SAMBA is not set
+# CONFIG_USB_SERIAL_SSU100 is not set
+# CONFIG_USB_YUREX is not set
+# CONFIG_MMC_USHC is not set
+# CONFIG_LEDS_LP5523 is not set
+# CONFIG_RTC_DRV_DS3232 is not set
+# CONFIG_RTC_DRV_ISL12022 is not set
+# CONFIG_INTEL_MID_DMAC is not set
+# CONFIG_BRCM80211 is not set
+# CONFIG_R8712U is not set
+# CONFIG_LINE6_USB_DEBUG is not set
+# CONFIG_LINE6_USB_DUMP_CTRL is not set
+# CONFIG_LINE6_USB_DUMP_MIDI is not set
+# CONFIG_LINE6_USB_DUMP_PCM is not set
+# CONFIG_LINE6_USB_RAW is not set
+# CONFIG_LINE6_USB_IMPULSE_RESPONSE is not set
+# CONFIG_DRM_I2C_SIL164 is not set
+# CONFIG_ZRAM is not set
+# CONFIG_LIRC_STAGING is not set
+# CONFIG_EASYCAP is not set
+# CONFIG_SOLO6X10 is not set
+# CONFIG_ACPI_QUICKSTART is not set
+# CONFIG_ATH6K_LEGACY is not set
+# CONFIG_USB_ENESTORAGE is not set
+# CONFIG_BCM_WIMAX is not set
+# CONFIG_FT1000 is not set
+# CONFIG_SPEAKUP is not set
+# CONFIG_IDEAPAD_LAPTOP is not set
+# CONFIG_INTEL_IPS is not set
+# CONFIG_IBM_RTL is not set
+# CONFIG_FANOTIFY is not set
+# CONFIG_SQUASHFS_XATTR is not set
+# CONFIG_SQUASHFS_LZO is not set
+# CONFIG_LOCKUP_DETECTOR is not set
+# CONFIG_BKL is not set
+# CONFIG_SPARSE_RCU_POINTER is not set
+# CONFIG_DEBUG_INFO_REDUCED is not set
+# CONFIG_TEST_LIST_SORT is not set
+# CONFIG_SECURITY_DMESG_RESTRICT is not set
+# CONFIG_CRYPTO_MANAGER_DISABLE_TESTS is not set
+# CONFIG_NET_SCH_CBQ is not set
+# CONFIG_NET_SCH_HTB is not set
+# CONFIG_NET_SCH_HFSC is not set
+# CONFIG_NET_SCH_PRIO is not set
+# CONFIG_NET_SCH_MULTIQ is not set
+# CONFIG_NET_SCH_RED is not set
+# CONFIG_NET_SCH_SFQ is not set
+# CONFIG_NET_SCH_TEQL is not set
+# CONFIG_NET_SCH_TBF is not set
+# CONFIG_NET_SCH_GRED is not set
+# CONFIG_NET_SCH_DSMARK is not set
+# CONFIG_NET_SCH_NETEM is not set
+# CONFIG_NET_SCH_DRR is not set
+# CONFIG_NET_CLS_BASIC is not set
+# CONFIG_NET_CLS_TCINDEX is not set
+# CONFIG_NET_CLS_ROUTE4 is not set
+# CONFIG_NET_CLS_FW is not set
+# CONFIG_NET_CLS_U32 is not set
+# CONFIG_NET_CLS_RSVP is not set
+# CONFIG_NET_CLS_RSVP6 is not set
+# CONFIG_NET_CLS_FLOW is not set
+# CONFIG_NET_CLS_CGROUP is not set
+# CONFIG_NET_EMATCH is not set
+# CONFIG_NET_CLS_ACT is not set
+

++++++ kernel.spec.in
--- kernel.spec.in
+++ kernel.spec.in
@@ -16,13 +16,13 @@
 # on top of -- for example, 2.6.22-rc7 starts with a 2.6.21 base,
 # which yields a base_sublevel of 21.
 
-%define base_sublevel 35
+%define base_sublevel 37
 
 
 ## If this is a released kernel ##
 %if 0%{?released_kernel}
 # Do we have a 2.6.21.y update to apply?
-%define stable_update 10
+%define stable_update 2
 # Set rpm version accordingly
 %if 0%{?stable_update}
 %define stablerev .%{stable_update}
@@ -35,7 +35,7 @@
 %define upstream_sublevel %(expr %{base_sublevel} + 1)
 # The rc snapshot level
 
-%define rcrev 0
+%define rcrev 8
 
 
 %if 0%{?rcrev}
@@ -83,15 +83,8 @@
 %define make_target zImage
 %endif
 
-%define oldconfig_target nonint_oldconfig
+ExclusiveArch: %{all_x86}
 
-@@N900 ExclusiveArch: %{all_arm}
-@@N ExclusiveArch: %{all_x86}
-@@M ExclusiveArch: %{all_x86}
-@@M ExclusiveArch: %{all_x86}
-@@A ExclusiveArch: %{all_x86}
-@@I ExclusiveArch: %{all_x86}
-@@S ExclusiveArch: %{all_x86} %{all_arm}
 #
 # Packages that need to be installed before the kernel is, because the %post
 # scripts use them.
@@ -117,17 +110,13 @@
 AutoProv: yes\
 %{nil}
 
-@@S %if 1
-@@S Name: kernel
-@@S %else
-@@I Name: kernel-adaptation-connext
-@@S %endif
+Name: kernel-adaptation-connext
 
 Group: System/Kernel
 License: GPLv2
 URL: http://www.kernel.org/
 Version: %{rpmversion}
-Release: 6
+Release: 9
 
 %kernel_reqprovconf
 
@@ -148,7 +137,8 @@
 Source20: Makefile.config
 
 Source100: config-generic
-Source102: config-adaptation-connext
+Source104: config-adaptation-connext
+
 
 # For a stable release kernel
 %if 0%{?stable_update}
@@ -158,17 +148,11 @@
 Patch00: patch-2.6.%{upstream_sublevel}-rc%{rcrev}.bz2
 %endif
 
-@@P
+@@PATCHSOURCE
 
 
 BuildRoot: %{_tmppath}/kernel-%{KVERREL}-root
 
-@@S %description -n kernel
-@@S The kernel package contains the Linux kernel (vmlinuz), the core of any
-@@S Linux operating system.  The kernel handles the basic functions
-@@S of the operating system: memory allocation, process allocation, device
-@@S input and output, etc.
-
 
 #
 # This macro creates a kernel-<subpackage>-devel package.
@@ -207,34 +191,27 @@
 # First the auxiliary packages of the main kernel package.
 %kernel_devel_package
 
-@@S %package -n perf
-@@S Summary: The 'perf' performance counter tool
-@@S Group: System/Performance
-@@S %description -n perf
-@@S This package provides the "perf" tool that can be used to monitor performance counter events
-@@S as well as various kernel internal events.
-@@S Obsoletes: oprofile <= 0.9.5
-
 
 
 # Now, each variant package.
 
 %ifarch %all_x86
 
-@@@I %define variant_summary Kernel for IVI
-@@@I %kernel_variant_package adaptation-connext
-@@I %kernel_devel_package adaptation-connext
-@@I %description -n kernel-adaptation-connext
-@@I This package contains the kernel optimized for In Vehicle Infotainment segments
 
-%endif
-
-%ifarch %{all_arm}
-
-#Put other ARM variants here
+%define variant_summary Reference kernel for MeeGo
+%kernel_devel_package adaptation-connext
+%description -n kernel-adaptation-connext
+This package contains the kernel optimized for In Vehicle Infotainment segments
 
 %endif
 
+%package -n perf
+Summary: The 'perf' performance counter tool
+Group: System/Performance
+%description -n perf
+This package provides the "perf" tool that can be used to monitor performance counter events
+as well as various kernel internal events.
+Obsoletes: oprofile <= 0.9.5
 
 %prep
 
@@ -269,21 +246,20 @@
 #
 # The add an -rc patch if needed
 #
-
-%if 0%{?stable_update}
-# patch-2.6.%{base_sublevel}.%{stable_update}.bz2
-%patch00 -p1
-%endif
 %if 0%{?rcrev}
 # patch-2.6.%{upstream_sublevel}-rc%{rcrev}.bz2
 %patch00 -p1
 %endif
+%if 0%{?stable_update}
+# patch-2.6.%{base_sublevel}.%{stable_update}.bz2
+%patch00 -p1
+%endif
 
 
 #
 # Then apply all the patches
 #
-@@p
+@@PATCHAPPLY
 
 # Drop some necessary files from the source dir into the buildroot
 cp $RPM_SOURCE_DIR/config-* .
@@ -321,7 +297,15 @@
 
   # make oldconfig > /dev/null
   echo Doing $i
-  make ARCH=$Arch %{oldconfig_target} > /dev/null
+
+  make ARCH=$Arch listnewconfig &> /tmp/configs
+  export conf=`cat /tmp/configs | grep CONFIG | wc -l`
+  echo CONF is $conf
+  if [ $conf -gt 0 ]; then
+	  make ARCH=$Arch listnewconfig  
+	  exit 1
+  fi
+  make ARCH=$Arch oldconfig > /dev/null
   echo "# $Arch" > configs/$i
   cat .config >> configs/$i
 done
@@ -371,7 +355,7 @@
 %ifarch %{all_arm}
     Arch="arm"
 %endif
-   
+
 
     if [ "$Arch" = "$TargetArch" ]; then
         echo BUILDING A KERNEL FOR ${Flavour} %{_target_cpu}... ${KernelVer}
@@ -385,7 +369,7 @@
         make -s mrproper
         cp configs/$Config .config
 
-        make -s ARCH=$Arch %{oldconfig_target} > /dev/null
+        make -s ARCH=$Arch oldconfig > /dev/null
         make -s CONFIG_DEBUG_SECTION_MISMATCH=y ARCH=$Arch %{?_smp_mflags} $MakeTarget %{?sparse_mflags}
         make -s CONFIG_DEBUG_SECTION_MISMATCH=y ARCH=$Arch %{?_smp_mflags} modules %{?sparse_mflags} || exit 1
(130 more lines skipped)

++++++ linux-2.6.37-connext-0001-pcie-amba.patch (new)
--- linux-2.6.37-connext-0001-pcie-amba.patch
+++ linux-2.6.37-connext-0001-pcie-amba.patch
+From cefb4e776f7ba905f3ac682057d1787a404595b2 Mon Sep 17 00:00:00 2001
+From: Anders Wallin <anders.wallin at windriver.com>
+Date: Tue, 8 Mar 2011 17:34:26 +0200
+Subject: [PATCH 01/28] linux-2.6.37-connext-0001-pcie-amba.patch
+
+---
+ arch/x86/Kconfig                   |   13 +
+ arch/x86/include/asm/device.h      |    2 +-
+ arch/x86/include/asm/dma-mapping.h |    9 +-
+ arch/x86/include/asm/sta2x11.h     |   48 ++++
+ arch/x86/pci/Makefile              |    2 +
+ arch/x86/pci/sta2x11-fixup.c       |  440 ++++++++++++++++++++++++++++++++++++
+ lib/swiotlb.c                      |    4 +-
+ 7 files changed, 514 insertions(+), 4 deletions(-)
+ create mode 100644 arch/x86/include/asm/sta2x11.h
+ create mode 100644 arch/x86/pci/sta2x11-fixup.c
+
+diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
+index 57e823a..6d55190 100644
+--- a/arch/x86/Kconfig
++++ b/arch/x86/Kconfig
+@@ -11,6 +11,7 @@ config X86_32
+ 
+ config X86_64
+ 	def_bool 64BIT
++	select X86_DEV_DMA_OPS
+ 
+ ### Arch settings
+ config X86
+@@ -2055,6 +2056,15 @@ config OLPC_OPENFIRMWARE
+ 	  that is used on the OLPC XO-1 Children's Machine.
+ 	  If unsure, say N here.
+ 
++config STA2X11
++       bool "STA2X11 Companion Chip Support"
++       select X86_DEV_DMA_OPS
++       select SWIOTLB
++       select IOMMU_HELPER
++       default n
++       ---help---
++         Add support for the STA2X11 Companion chip
++
+ endif # X86_32
+ 
+ config AMD_NB
+@@ -2099,6 +2109,9 @@ config SYSVIPC_COMPAT
+ 	def_bool y
+ 	depends on COMPAT && SYSVIPC
+ 
++config X86_DEV_DMA_OPS
++	bool "dma_ops in device structure for x86 architectures"
++	default n
+ endmenu
+ 
+ 
+diff --git a/arch/x86/include/asm/device.h b/arch/x86/include/asm/device.h
+index 029f230..e46e5b7 100644
+--- a/arch/x86/include/asm/device.h
++++ b/arch/x86/include/asm/device.h
+@@ -5,7 +5,7 @@ struct dev_archdata {
+ #ifdef CONFIG_ACPI
+ 	void	*acpi_handle;
+ #endif
+-#ifdef CONFIG_X86_64
++#ifdef CONFIG_X86_DEV_DMA_OPS
+ struct dma_map_ops *dma_ops;
+ #endif
+ #if defined(CONFIG_DMAR) || defined(CONFIG_AMD_IOMMU)
+diff --git a/arch/x86/include/asm/dma-mapping.h b/arch/x86/include/asm/dma-mapping.h
+index d4c419f..6651362 100644
+--- a/arch/x86/include/asm/dma-mapping.h
++++ b/arch/x86/include/asm/dma-mapping.h
+@@ -30,7 +30,7 @@ extern struct dma_map_ops *dma_ops;
+ 
+ static inline struct dma_map_ops *get_dma_ops(struct device *dev)
+ {
+-#ifdef CONFIG_X86_32
++#ifndef CONFIG_X86_DEV_DMA_OPS
+ 	return dma_ops;
+ #else
+ 	if (unlikely(!dev) || !dev->archdata.dma_ops)
+@@ -61,6 +61,8 @@ extern int dma_set_mask(struct device *dev, u64 mask);
+ extern void *dma_generic_alloc_coherent(struct device *dev, size_t size,
+ 					dma_addr_t *dma_addr, gfp_t flag);
+ 
++#ifndef CONFIG_X86_DEV_DMA_OPS
++
+ static inline bool dma_capable(struct device *dev, dma_addr_t addr, size_t size)
+ {
+ 	if (!dev->dma_mask)
+@@ -78,6 +80,11 @@ static inline phys_addr_t dma_to_phys(struct device *dev, dma_addr_t daddr)
+ {
+ 	return daddr;
+ }
++#else
++bool dma_capable(struct device *dev, dma_addr_t addr, size_t size);
++dma_addr_t phys_to_dma(struct device *dev, phys_addr_t paddr);
++phys_addr_t dma_to_phys(struct device *dev, dma_addr_t daddr);
++#endif
+ 
+ static inline void
+ dma_cache_sync(struct device *dev, void *vaddr, size_t size,
+diff --git a/arch/x86/include/asm/sta2x11.h b/arch/x86/include/asm/sta2x11.h
+new file mode 100644
+index 0000000..a09315a
+--- /dev/null
++++ b/arch/x86/include/asm/sta2x11.h
+@@ -0,0 +1,48 @@
++/*
++* Copyright (c) 2009-2010 Wind River Systems, Inc.
++*
++* 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.
++*
++* 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, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
++*
++* Header file for STMicroelectronics ConneXt (STA2X11) IOHub
++*
++*/
++
++#ifndef __STA2X11_H
++#define __STA2X11_H
++
++#define PCI_DEVICE_ID_STMICRO_USB_HOST          0xCC00
++#define PCI_DEVICE_ID_STMICRO_USB_OHCI          0xCC01
++#define PCI_DEVICE_ID_STMICRO_USB_OTG           0xCC02
++#define PCI_DEVICE_ID_STMICRO_UART_HWFC         0xCC03
++#define PCI_DEVICE_ID_STMICRO_UART_NO_HWFC      0xCC04
++#define PCI_DEVICE_ID_STMICRO_SOC_DMA           0xCC05
++#define PCI_DEVICE_ID_STMICRO_SATAII            0xCC06
++#define PCI_DEVICE_ID_STMICRO_I2C               0xCC07
++#define PCI_DEVICE_ID_STMICRO_SPI_HS            0xCC08
++#define PCI_DEVICE_ID_STMICRO_MAC               0xCC09
++#define PCI_DEVICE_ID_STMICRO_SDIO_EMMC         0xCC0A
++#define PCI_DEVICE_ID_STMICRO_SDIO              0xCC0B
++#define PCI_DEVICE_ID_STMICRO_GPIO              0xCC0C
++#define PCI_DEVICE_ID_STMICRO_VIP               0xCC0D
++#define PCI_DEVICE_ID_STMICRO_AUDIO_ROUTER_DMA  0xCC0E
++#define PCI_DEVICE_ID_STMICRO_AUDIO_ROUTER_SRCS 0xCC0F
++#define PCI_DEVICE_ID_STMICRO_AUDIO_ROUTER_MSPS 0xCC10
++#define PCI_DEVICE_ID_STMICRO_CAN               0xCC11
++#define PCI_DEVICE_ID_STMICRO_MLB               0xCC12
++#define PCI_DEVICE_ID_STMICRO_DBP               0xCC13
++#define PCI_DEVICE_ID_STMICRO_SATA_PHY          0xCC14
++#define PCI_DEVICE_ID_STMICRO_ESRAM             0xCC15
++#define PCI_DEVICE_ID_STMICRO_VIC               0xCC16
++
++#endif /* __STA2X11_H */
+diff --git a/arch/x86/pci/Makefile b/arch/x86/pci/Makefile
+index effd96e..6d025eb 100644
+--- a/arch/x86/pci/Makefile
++++ b/arch/x86/pci/Makefile
+@@ -24,3 +24,5 @@ obj-$(CONFIG_PCI_CNB20LE_QUIRK)	+= broadcom_bus.o
+ ifeq ($(CONFIG_PCI_DEBUG),y)
+ EXTRA_CFLAGS += -DDEBUG
+ endif
++
++obj-$(CONFIG_STA2X11)		+= sta2x11-fixup.o
+diff --git a/arch/x86/pci/sta2x11-fixup.c b/arch/x86/pci/sta2x11-fixup.c
+new file mode 100644
+index 0000000..997ceee
+--- /dev/null
++++ b/arch/x86/pci/sta2x11-fixup.c
+@@ -0,0 +1,440 @@
++/**
++ * arch/x86/pci/sta2x11-fixup.c, clue code for lib/swiotlb.c
++ *
++ * ST Microelectronics ConneXt (STA2X11/STA2X10)
++ *
++ * Copyright (c) 2010 Wind River Systems, Inc.
++ *
++ * 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.
++ *
++ * 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, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
++ *
++ **/
++
++#include <linux/pci.h>
++#include <asm/sta2x11.h>
++
++struct ep_mapping {
(439 more lines skipped)

++++++ linux-2.6.37-connext-0002-gpio.patch (new)
--- linux-2.6.37-connext-0002-gpio.patch
+++ linux-2.6.37-connext-0002-gpio.patch
+From 4f9852ae13955fef9a3dec4fd09fa6b39360ec52 Mon Sep 17 00:00:00 2001
+From: Anders Wallin <anders.wallin at windriver.com>
+Date: Tue, 8 Mar 2011 17:34:27 +0200
+Subject: [PATCH 02/28] linux-2.6.37-connext-0002-gpio.patch
+
+---
+ arch/x86/include/asm/gpio.h   |    2 +-
+ drivers/gpio/Kconfig          |   18 +
+ drivers/gpio/Makefile         |    1 +
+ drivers/gpio/pl061_pci.c      |  863 +++++++++++++++++++++++++++++++++++++++++
+ drivers/gpio/pl061_pci.h      |   29 ++
+ drivers/misc/Kconfig          |   26 ++
+ drivers/misc/Makefile         |    3 +
+ drivers/misc/sta2x11_apbreg.c |  200 ++++++++++
+ drivers/misc/sta2x11_apbreg.h |   39 ++
+ drivers/misc/sta2x11_mux.c    |  278 +++++++++++++
+ drivers/misc/sta2x11_mux.h    |   51 +++
+ drivers/misc/sta2x11_sctl.c   |  208 ++++++++++
+ drivers/misc/sta2x11_sctl.h   |  143 +++++++
+ 13 files changed, 1860 insertions(+), 1 deletions(-)
+ create mode 100644 drivers/gpio/pl061_pci.c
+ create mode 100644 drivers/gpio/pl061_pci.h
+ create mode 100644 drivers/misc/sta2x11_apbreg.c
+ create mode 100644 drivers/misc/sta2x11_apbreg.h
+ create mode 100644 drivers/misc/sta2x11_mux.c
+ create mode 100644 drivers/misc/sta2x11_mux.h
+ create mode 100644 drivers/misc/sta2x11_sctl.c
+ create mode 100644 drivers/misc/sta2x11_sctl.h
+
+diff --git a/arch/x86/include/asm/gpio.h b/arch/x86/include/asm/gpio.h
+index 49dbfdf..9da6f01 100644
+--- a/arch/x86/include/asm/gpio.h
++++ b/arch/x86/include/asm/gpio.h
+@@ -43,7 +43,7 @@ static inline int gpio_cansleep(unsigned int gpio)
+  */
+ static inline int gpio_to_irq(unsigned int gpio)
+ {
+-	return -ENOSYS;
++	return __gpio_to_irq(gpio);
+ }
+ 
+ static inline int irq_to_gpio(unsigned int irq)
+diff --git a/drivers/gpio/Kconfig b/drivers/gpio/Kconfig
+index 3143ac7..acbf9b4 100644
+--- a/drivers/gpio/Kconfig
++++ b/drivers/gpio/Kconfig
+@@ -401,4 +401,22 @@ config GPIO_JANZ_TTL
+ 	  This driver provides support for driving the pins in output
+ 	  mode only. Input mode is not supported.
+ 
++config GPIO_PL061_PCI
++	bool "STA2x11/ConneXt PL061_PCI GPIO support"
++	depends on STA2X11_PCI_MUX
++	help
++	  Say yes here to support the STA2x11/ConneXt
++	  PL061_PCI GPIO device. The GPIO module has
++	  4 blocks of 32 GPIO pin each. The driver
++	  supports to set input, output and alternate
++	  function
++
++config GPIO_PL061_PCI_IRQ
++	bool "ConneXt PL061_PCI gpio_to_irq support"
++	depends on GPIO_PL061_PCI
++	help
++	  The gpiolib has a function called gpio_to_irq that has
++	  the requirement that the number returned should be usable by
++	  calling request_irq.
++
+ endif
+diff --git a/drivers/gpio/Makefile b/drivers/gpio/Makefile
+index bdf3dde..0d5d3fe 100644
+--- a/drivers/gpio/Makefile
++++ b/drivers/gpio/Makefile
+@@ -8,6 +8,7 @@ ccflags-$(CONFIG_DEBUG_GPIO)	+= -DDEBUG
+ 
+ obj-$(CONFIG_GPIOLIB)		+= gpiolib.o
+ 
++obj-$(CONFIG_GPIO_PL061_PCI)	+= pl061_pci.o
+ obj-$(CONFIG_GPIO_ADP5520)	+= adp5520-gpio.o
+ obj-$(CONFIG_GPIO_ADP5588)	+= adp5588-gpio.o
+ obj-$(CONFIG_GPIO_BASIC_MMIO)	+= basic_mmio_gpio.o
+diff --git a/drivers/gpio/pl061_pci.c b/drivers/gpio/pl061_pci.c
+new file mode 100644
+index 0000000..b1abc0c
+--- /dev/null
++++ b/drivers/gpio/pl061_pci.c
+@@ -0,0 +1,863 @@
++/*
++ * linux/driver/gpio/pl061_pci.c, pl061 GPIO driver for ConneXt
++ *
++ * STMicroelectronics ConneXt (STA2X11/STA2X10) GPIO file
++ * derived from from linux/driver/gpio/pl061.c
++ *
++ * Copyright (c) 2009-2010 Wind River Systems, Inc.
++ *
++ * 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.
++ *
++ * 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, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
++ *
++ */
++
++#include <linux/spinlock.h>
++#include <linux/io.h>
++#include <linux/ioport.h>
++#include <linux/errno.h>
++#include <linux/module.h>
++#include <linux/pci.h>
++#include <linux/bitops.h>
++#include <linux/debugfs.h>
++#include <linux/irq.h>
++#include <linux/interrupt.h>
++#include <linux/gpio.h>
++#include "../misc/sta2x11_mux.h"
++#include "pl061_pci.h"
++
++/* all gpio registers */
++#define GPIO_DAT	0x00
++#define GPIO_DATS	0x04
++#define GPIO_DATC	0x08
++#define GPIO_PDIS	0x0c
++#define GPIO_DIR	0x10
++#define GPIO_DIRS	0x14
++#define GPIO_DIRC	0x18
++#define GPIO_AFSELA	0x20
++#define GPIO_RIMSC	0x40
++#define GPIO_FIMSC	0x44
++#define GPIO_IS		0x48
++#define GPIO_IC		0x4c
++#define GPIO_PERIPH_ID0	0xfe0
++#define GPIO_PERIPH_ID1	0xfe4
++#define GPIO_PERIPH_ID2	0xfe8
++#define GPIO_PERIPH_ID3	0xfec
++#define GPIO_PCELL_ID0	0xff0
++#define GPIO_PCELL_ID1	0xff4
++#define GPIO_PCELL_ID2	0xff8
++#define GPIO_PCELL_ID3	0xffc
++
++#define DRV_VERSION "1.1"
++
++#define CHIP_REGS_LENGTH	0x1000	/* registers length for each GPIO */
++#define GPIO_BLOCKS		4	/* instances of GPIO blocks */
++#define PINS_PER_CHIP		32	/* pins for each GPIO */
++
++#define PIN_NR	(PINS_PER_CHIP * GPIO_BLOCKS)	/* All pins */
++
++#define nr_to_mask(nr)	(1 << (nr % PINS_PER_CHIP))
++
++struct gpio_alternative {
++	int start;
++	int end;
++};
++
++static bool initialized;
++
++#define STA2X11_NORTHVILLE
++#ifdef STA2X11_NORTHVILLE
++static struct gpio_alternative alt_cfg[] = {
++	{8, 15},		/* RGB Red   8 bit parallel */
++	{16, 23},		/* RGB Green 8 bit parallel */
++	{24, 31},		/* RGB Blue  8 bit parallel */
++	{32, 34},		/* RGB ctrl */
++	{35, 43},		/* ETH */
++	{44, 45},		/* CAN 2 */
++	{46, 47},		/* MLB */
++	{48, 51},		/* SPI 0 */
++	/* {52, 55 },*/	        /* SPI 1 */
++	/* {56, 58},*/		/* SPI 2 */
++	{60, 61},		/* I2C 0 */
++	{62, 63},		/* I2C 1 */
++	{64, 65},		/* I2C 2 */
++	/* {66, 67},*/		/* I2C 3 */
++	/* {68, 74},*/		/* MSP 0 */
++	{75, 78},		/* MSP 1 */
++	/* {79, 82},*/		/* MSP 2 */
++	{83, 86},		/* MSP 3 */
++	{87, 89},		/* MSP 4 */
++	{91, 94},		/* MSP 5 */
++	/*{95, 100},*/		/* SDIO 3 */
++	{105, 110},		/* SDIO 2 */
++	{115, 120},		/* SDIO 1 */
++	{125, 126},		/* rx/tx UART 2 */
++	{127, 127},		/* tx    UART 3 */
++	{0, 0}
++};
++#else
++static struct gpio_alternative alt_cfg[] = {
++	{8, 15},		/* RGB Red   8 bit parallel */
++	{16, 23},		/* RGB Green 8 bit parallel */
++	{24, 31},		/* RGB Blue  8 bit parallel */
(1793 more lines skipped)

++++++ linux-2.6.37-connext-0003-dma.patch (new)
--- linux-2.6.37-connext-0003-dma.patch
+++ linux-2.6.37-connext-0003-dma.patch
+From 7d97b29949c6c7cccc70cd906ca76e7488a6c33a Mon Sep 17 00:00:00 2001
+From: Anders Wallin <anders.wallin at windriver.com>
+Date: Tue, 8 Mar 2011 17:34:28 +0200
+Subject: [PATCH 03/28] linux-2.6.37-connext-0003-dma.patch
+
+---
+ drivers/dma/Kconfig         |   12 +
+ drivers/dma/Makefile        |    1 +
+ drivers/dma/amba-pl08x.c    |  294 ++++++++++++++++-----
+ drivers/dma/sta2x11_pl080.c |  620 +++++++++++++++++++++++++++++++++++++++++++
+ include/linux/amba/pl080.h  |  140 ++++++++++
+ include/linux/amba/pl08x.h  |    8 +-
+ 6 files changed, 1005 insertions(+), 70 deletions(-)
+ create mode 100644 drivers/dma/sta2x11_pl080.c
+ create mode 100644 include/linux/amba/pl080.h
+
+diff --git a/drivers/dma/Kconfig b/drivers/dma/Kconfig
+index 6ee2359..c8589c6 100644
+--- a/drivers/dma/Kconfig
++++ b/drivers/dma/Kconfig
+@@ -57,6 +57,18 @@ config AMBA_PL08X
+ 	  Platform has a PL08x DMAC device
+ 	  which can provide DMA engine support
+ 
++config PCI_PL08X
++	bool "PCI PrimeCell PL080 support for STMicro STA2x11"
++	depends on PCI && EXPERIMENTAL
++	select DMA_ENGINE
++	help
++	  The STMicro STA2X11 IOHub has 2 PL080 DMAC device
++	  connected via PCIE bridge.
++	  These DMAC provides DMA support between the IOHub
++	  and the host side of the PCI bridge.
++	  The available DMA memory size is limited to 512 Mb by
++	  the PCIE bridge implementation.
++
+ config INTEL_IOATDMA
+ 	tristate "Intel I/OAT DMA support"
+ 	depends on PCI && X86
+diff --git a/drivers/dma/Makefile b/drivers/dma/Makefile
+index 64b21f5..475f937 100644
+--- a/drivers/dma/Makefile
++++ b/drivers/dma/Makefile
+@@ -28,3 +28,4 @@ obj-$(CONFIG_STE_DMA40) += ste_dma40.o ste_dma40_ll.o
+ obj-$(CONFIG_PL330_DMA) += pl330.o
+ obj-$(CONFIG_PCH_DMA) += pch_dma.o
+ obj-$(CONFIG_AMBA_PL08X) += amba-pl08x.o
++obj-$(CONFIG_PCI_PL08X) += amba-pl08x.o
+diff --git a/drivers/dma/amba-pl08x.c b/drivers/dma/amba-pl08x.c
+index b605cc9..9476cd1 100644
+--- a/drivers/dma/amba-pl08x.c
++++ b/drivers/dma/amba-pl08x.c
+@@ -71,9 +71,11 @@
+ #include <linux/debugfs.h>
+ #include <linux/seq_file.h>
+ 
+-#include <asm/hardware/pl080.h>
++#include <linux/amba/pl080.h>
+ #include <asm/dma.h>
+-#include <asm/mach/dma.h>
++#ifndef CONFIG_PCI_PL08X
++#include <asm/mach/dma.h>  /* AW: Needed ??? */
++#endif
+ #include <asm/atomic.h>
+ #include <asm/processor.h>
+ #include <asm/cacheflush.h>
+@@ -87,11 +89,14 @@
+  * @channels: the number of channels available in this variant
+  * @dualmaster: whether this version supports dual AHB masters
+  * or not.
++ * @invert_master: whether this chip should invert the selection
++ * of ahb source/destination master (only used when dualmaster=true)
+  */
+ struct vendor_data {
+ 	char *name;
+ 	u8 channels;
+ 	bool dualmaster;
++	bool invert_master;
+ };
+ 
+ /*
+@@ -125,7 +130,11 @@ struct pl08x_driver_data {
+ 	struct dma_device slave;
+ 	struct dma_device memcpy;
+ 	void __iomem *base;
++#ifdef CONFIG_PCI_PL08X
++	struct pci_dev *adev;
++#else
+ 	struct amba_device *adev;
++#endif
+ 	struct vendor_data *vd;
+ 	struct pl08x_platform_data *pd;
+ 	struct pl08x_phy_chan *phy_chans;
+@@ -157,6 +166,11 @@ struct pl08x_driver_data {
+ #define MAX_NUM_TSFR_LLIS	(PL08X_LLI_TSFR_SIZE/sizeof(struct lli))
+ #define PL08X_ALIGN		8
+ 
++/* Helper for generating a warning when asked to free the "wrong" end of a
++ * device transfer
++ */
++#define INVALID_DMA_ADDRESS 0x0 /* AW Needed ? */
++
+ static inline struct pl08x_dma_chan *to_pl08x_chan(struct dma_chan *chan)
+ {
+ 	return container_of(chan, struct pl08x_dma_chan, chan);
+@@ -316,7 +330,7 @@ static inline u32 get_bytes_in_cctl(u32 cctl)
+ 	/* The source width defines the number of bytes */
+ 	u32 bytes = cctl & PL080_CONTROL_TRANSFER_SIZE_MASK;
+ 
+-	switch (cctl >> PL080_CONTROL_SWIDTH_SHIFT) {
++	switch ((cctl >> PL080_CONTROL_SWIDTH_SHIFT) & 0x7) {
+ 	case PL080_WIDTH_8BIT:
+ 		break;
+ 	case PL080_WIDTH_16BIT:
+@@ -325,6 +339,8 @@ static inline u32 get_bytes_in_cctl(u32 cctl)
+ 	case PL080_WIDTH_32BIT:
+ 		bytes *= 4;
+ 		break;
++	default:
++		BUG();
+ 	}
+ 	return bytes;
+ }
+@@ -574,6 +590,12 @@ int pl08x_fill_lli_for_desc(struct pl08x_driver_data *pl08x,
+ 	llis_va[num_llis].next =
+ 		(dma_addr_t)((u32) &(llis_bus[num_llis + 1]));
+ 
++#ifdef CONFIG_PCI_PL08X
++	if (llis_va[num_llis].next)
++		if (pl08x->vd->invert_master)
++			llis_va[num_llis].next |= PL080_LLI_LM_AHB2;
++#endif
++
+ 	if (cctl & PL080_CONTROL_SRC_INCR)
+ 		txd->srcbus.addr += len;
+ 	if (cctl & PL080_CONTROL_DST_INCR)
+@@ -589,6 +611,9 @@ int pl08x_fill_lli_for_desc(struct pl08x_driver_data *pl08x,
+  */
+ static inline u32 pl08x_pre_boundary(u32 addr, u32 len)
+ {
++#ifdef CONFIG_PCI_PL08X
++	return len;
++#else
+ 	u32 boundary;
+ 
+ 	boundary = ((addr >> PL08X_BOUNDARY_SHIFT) + 1)
+@@ -598,6 +623,7 @@ static inline u32 pl08x_pre_boundary(u32 addr, u32 len)
+ 		return boundary - addr;
+ 	else
+ 		return len;
++#endif
+ }
+ 
+ /*
+@@ -650,18 +676,27 @@ static int pl08x_fill_llis_for_desc(struct pl08x_driver_data *pl08x,
+ 	 * destination. We try to use AHB2 for the
+ 	 * bus which does not increment (typically the
+ 	 * peripheral) else we just choose something.
++	 * Use default settings for memcpy (DMA_NONE)
+ 	 */
+-	cctl &= ~(PL080_CONTROL_DST_AHB2 | PL080_CONTROL_SRC_AHB2);
+-	if (pl08x->vd->dualmaster) {
+-		if (cctl & PL080_CONTROL_SRC_INCR)
+-			/* Source increments, use AHB2 for destination */
+-			cctl |= PL080_CONTROL_DST_AHB2;
+-		else if (cctl & PL080_CONTROL_DST_INCR)
+-			/* Destination increments, use AHB2 for source */
+-			cctl |= PL080_CONTROL_SRC_AHB2;
+-		else
+-			/* Just pick something, source AHB1 dest AHB2 */
+-			cctl |= PL080_CONTROL_DST_AHB2;
++	if (txd->direction != DMA_NONE) {
++		cctl &= ~(PL080_CONTROL_DST_AHB2 | PL080_CONTROL_SRC_AHB2);
++		if (pl08x->vd->dualmaster) {
++			uint32_t cctl_master;
++
++			if (cctl & PL080_CONTROL_SRC_INCR)
++				/* Source increment, use AHB2 for destination */
++				cctl_master = PL080_CONTROL_DST_AHB2;
++			else if (cctl & PL080_CONTROL_DST_INCR)
++				/* Destination increment, use AHB2 for source */
++					cctl_master = PL080_CONTROL_SRC_AHB2;
++			else
++				/* Just pick something, source AHB1 dest AHB2 */
++					cctl_master = PL080_CONTROL_DST_AHB2;
++			if (pl08x->vd->invert_master)
++				cctl_master ^= PL080_CONTROL_SRC_AHB2 |
++					PL080_CONTROL_DST_AHB2;
++			cctl |= cctl_master;
++		}
+ 	}
+ 
+ 	/* Find maximum width of the source bus */
+@@ -848,11 +883,26 @@ static int pl08x_fill_llis_for_desc(struct pl08x_driver_data *pl08x,
+ 				 * the smallest bus width - 1
+ 				 */
+ 				/* FIXME: use round_down()? */
++#ifdef CONFIG_PCI_PL08X
(1208 more lines skipped)

++++++ linux-2.6.37-connext-0004-uart.patch (new)
--- linux-2.6.37-connext-0004-uart.patch
+++ linux-2.6.37-connext-0004-uart.patch
+From 93fb3bab45e4570b1f7244348cfac2a7720a2d1e Mon Sep 17 00:00:00 2001
+From: Anders Wallin <anders.wallin at windriver.com>
+Date: Tue, 8 Mar 2011 17:34:28 +0200
+Subject: [PATCH 04/28] linux-2.6.37-connext-0004-uart.patch
+
+---
+ drivers/serial/Kconfig             |   40 ++
+ drivers/serial/Makefile            |    1 +
+ drivers/serial/pl011-pci-debugfs.c |  150 +++++
+ drivers/serial/pl011-pci-dma.c     |  778 +++++++++++++++++++++++
+ drivers/serial/pl011-pci-dma.h     |   69 ++
+ drivers/serial/pl011-pci.c         | 1225 ++++++++++++++++++++++++++++++++++++
+ include/asm-generic/ioctls.h       |    2 +
+ 7 files changed, 2265 insertions(+), 0 deletions(-)
+ create mode 100644 drivers/serial/pl011-pci-debugfs.c
+ create mode 100644 drivers/serial/pl011-pci-dma.c
+ create mode 100644 drivers/serial/pl011-pci-dma.h
+ create mode 100644 drivers/serial/pl011-pci.c
+
+diff --git a/drivers/serial/Kconfig b/drivers/serial/Kconfig
+index aff9dcd..85ac6a1 100644
+--- a/drivers/serial/Kconfig
++++ b/drivers/serial/Kconfig
+@@ -323,6 +323,46 @@ config SERIAL_AMBA_PL011_CONSOLE
+ 	  your boot loader (lilo or loadlin) about how to pass options to the
+ 	  kernel at boot time.)
+ 
++config SERIAL_PCI_PL011
++	tristate "PL011 serial port connected via PCI"
++	depends on PCI
++	select SERIAL_CORE
++	help
++	  This selects the STA2x11 PL011 UART connected via PCI.
++	  The STA2X11 has 4 asynchronous serial ports (UARTs).
++	  All four UARTs are identical but their implementation differs as follows:
++		- UART0 and UART1 the transmit/receive signals with hardware flow control
++	          signals (RTS/CTS) .
++                - UART2 and UART3 the transmit/receive signals without hardware flow control
++		  signals (RTS/CTS).
++
++config SERIAL_PCI_PL011_CONSOLE
++	bool "Support for console on PL011 serial port connected via PCI"
++	depends on SERIAL_PCI_PL011=y
++	select SERIAL_CORE_CONSOLE
++	help
++	  Say Y here if you wish to use an PrimeCell PL011 UART as the system
++	  console (the system console is the device which receives all kernel
++	  messages and warnings and which allows logins in single user mode).
++
++	  Even if you say Y here, the currently visible framebuffer console
++	  (/dev/tty0) will still be used as the system console by default, but
++	  you can alter that using a kernel command line option such as
++	  "console=ttyAM1". (Try "man bootparam" or see the documentation of
++	  your boot loader (lilo or loadlin) about how to pass options to the
++	  kernel at boot time.)
++
++config SERIAL_PCI_PL011_DMA
++	bool "DMA support for PrimeCell PL011 UART"
++	depends on SERIAL_PCI_PL011 && PCI_PL08X
++	default n
++	help
++	  Say Y here if you wish to enable DMA for PrimeCell PL011 UART.
++	  The driver will use the pci_pl08x dma driver for read and write
++	  of data packages bigger then 32 byte.
++	  Software flow control is not supported when using this mode.
++	  Module argument dma_portX=1 (X=0,1,2,3) will enable DMA for this port.
++
+ config SERIAL_SB1250_DUART
+ 	tristate "BCM1xxx on-chip DUART serial support"
+ 	depends on SIBYTE_SB1xxx_SOC=y
+diff --git a/drivers/serial/Makefile b/drivers/serial/Makefile
+index c570576..71b4ab1 100644
+--- a/drivers/serial/Makefile
++++ b/drivers/serial/Makefile
+@@ -30,6 +30,7 @@ obj-$(CONFIG_SERIAL_8250_HUB6) += 8250_hub6.o
+ obj-$(CONFIG_SERIAL_8250_MCA) += 8250_mca.o
+ obj-$(CONFIG_SERIAL_AMBA_PL010) += amba-pl010.o
+ obj-$(CONFIG_SERIAL_AMBA_PL011) += amba-pl011.o
++obj-$(CONFIG_SERIAL_PCI_PL011) += pl011-pci.o
+ obj-$(CONFIG_SERIAL_CLPS711X) += clps711x.o
+ obj-$(CONFIG_SERIAL_PXA) += pxa.o
+ obj-$(CONFIG_SERIAL_PNX8XXX) += pnx8xxx_uart.o
+diff --git a/drivers/serial/pl011-pci-debugfs.c b/drivers/serial/pl011-pci-debugfs.c
+new file mode 100644
+index 0000000..16eabbc
+--- /dev/null
++++ b/drivers/serial/pl011-pci-debugfs.c
+@@ -0,0 +1,150 @@
++/*
++* Copyright (c) 2009-2011 Wind River Systems, Inc.
++*
++* 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.
++*
++* 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, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
++*
++*
++*/
++
++#include <linux/debugfs.h>
++
++#ifdef CONFIG_DEBUG_FS
++static struct dentry *pci_pl011_debugfs_dir;
++static int pci_pl011_debugfs_open(struct inode *inode, struct file *file);
++static ssize_t pci_pl011_debugfs_read(struct file *file, char __user *user_buf,
++				      size_t count, loff_t *ppos);
++
++static const struct file_operations pci_pl011_debugfs_operations = {
++	.owner = THIS_MODULE,
++	.open = pci_pl011_debugfs_open,
++	.read = pci_pl011_debugfs_read
++};
++
++static void pci_pl011_debugfs_create_debugfile(const char *debugfs_filename,
++					       void __iomem *reg_base)
++{
++	(void)debugfs_create_file(debugfs_filename, S_IFREG | S_IRUGO,
++				  pci_pl011_debugfs_dir, reg_base,
++				  &pci_pl011_debugfs_operations);
++}
++
++#define BUFSIZE	1024
++static ssize_t pci_pl011_debugfs_read(struct file *file, char __user *user_buf,
++				      size_t count, loff_t *ppos)
++{
++	char *buf;
++	u32 len = 0;
++	ssize_t ret;
++	void __iomem *reg_base;
++
++	reg_base = (void __iomem *)file->private_data;
++	if (!reg_base)
++		return 0;
++
++	buf = kzalloc(BUFSIZE, GFP_KERNEL);
++	if (!buf)
++		return 0;
++
++	len += snprintf(buf + len, BUFSIZE - len,
++			"UART01x_DR:\t\t0x%08x\n",
++			readl(reg_base +  UART01x_DR));
++	len += snprintf(buf + len, BUFSIZE - len,
++			"UART01x_RSR:\t\t0x%08x\n",
++			readl(reg_base + UART01x_RSR));
++	len += snprintf(buf + len, BUFSIZE - len,
++			"ST_UART011_DMAWM:\t0x%08x\n",
++			readl(reg_base + ST_UART011_DMAWM));
++	len += snprintf(buf + len, BUFSIZE - len,
++			"ST_UART011_TIMEOUT:\t0x%08x\n",
++			readl(reg_base + ST_UART011_TIMEOUT));
++	len += snprintf(buf + len, BUFSIZE - len,
++			"UART010_LCRL:\t\t0x%08x\n",
++			readl(reg_base + UART010_LCRL));
++	len += snprintf(buf + len, BUFSIZE - len,
++			"UART010_CR:\t\t0x%08x\n",
++			readl(reg_base + UART010_CR));
++	len += snprintf(buf + len, BUFSIZE - len,
++			"UART01x_FR:\t\t0x%08x\n",
++			readl(reg_base + UART01x_FR));
++	len += snprintf(buf + len, BUFSIZE - len,
++			"ST_UART011_LCRH_RX:\t0x%08x\n",
++			readl(reg_base + ST_UART011_LCRH_RX));
++	len += snprintf(buf + len, BUFSIZE - len,
++			"UART01x_ILPR:\t\t0x%08x\n",
++			readl(reg_base + UART01x_ILPR));
++	len += snprintf(buf + len, BUFSIZE - len,
++			"UART011_IBRD:\t\t0x%08x\n",
++			readl(reg_base + UART011_IBRD));
++	len += snprintf(buf + len, BUFSIZE - len,
++			"UART011_FBRD:\t\t0x%08x\n",
++			readl(reg_base + UART011_FBRD));
++	len += snprintf(buf + len, BUFSIZE - len,
++			"ST_UART011_LCRH_TX:\t0x%08x\n",
++			readl(reg_base + ST_UART011_LCRH_TX));
++	len += snprintf(buf + len, BUFSIZE - len,
++			"UART011_CR:\t\t0x%08x\n",
++			readl(reg_base + UART011_CR));
++	len += snprintf(buf + len, BUFSIZE - len,
++			"UART011_IFLS:\t\t0x%08x\n",
++			readl(reg_base + UART011_IFLS));
++	len += snprintf(buf + len, BUFSIZE - len,
++			"UART011_IMSC:\t\t0x%08x\n",
++			readl(reg_base + UART011_IMSC));
++	len += snprintf(buf + len, BUFSIZE - len,
++			"UART011_RIS:\t\t0x%08x\n",
++			readl(reg_base + UART011_RIS));
++	len += snprintf(buf + len, BUFSIZE - len,
++			"UART011_MIS:\t\t0x%08x\n",
++			readl(reg_base + UART011_MIS));
++	len += snprintf(buf + len, BUFSIZE - len,
(2146 more lines skipped)

++++++ linux-2.6.37-connext-0005-sata.patch (new)
--- linux-2.6.37-connext-0005-sata.patch
+++ linux-2.6.37-connext-0005-sata.patch
+From 76d52ae9a6503a314da117690e769c13f4967ce6 Mon Sep 17 00:00:00 2001
+From: Anders Wallin <anders.wallin at windriver.com>
+Date: Tue, 8 Mar 2011 17:34:29 +0200
+Subject: [PATCH 05/28] linux-2.6.37-connext-0005-sata.patch
+
+---
+ drivers/ata/libahci.c |    8 ++++++++
+ 1 files changed, 8 insertions(+), 0 deletions(-)
+
+diff --git a/drivers/ata/libahci.c b/drivers/ata/libahci.c
+index af59ac7..bf4c807 100644
+--- a/drivers/ata/libahci.c
++++ b/drivers/ata/libahci.c
+@@ -1859,6 +1859,9 @@ irqreturn_t ahci_interrupt(int irq, void *dev_instance)
+ 	if (!irq_stat)
+ 		return IRQ_NONE;
+ 
++#ifdef CONFIG_STA2X11
++	do {
++#endif
+ 	irq_masked = irq_stat & hpriv->port_map;
+ 
+ 	spin_lock(&host->lock);
+@@ -1896,6 +1899,11 @@ irqreturn_t ahci_interrupt(int irq, void *dev_instance)
+ 
+ 	spin_unlock(&host->lock);
+ 
++#ifdef CONFIG_STA2X11
++	irq_stat = readl(mmio + HOST_IRQ_STAT);
++	} while (irq_stat);
++#endif
++
+ 	VPRINTK("EXIT\n");
+ 
+ 	return IRQ_RETVAL(handled);
+-- 
+1.7.1
+

++++++ linux-2.6.37-connext-0006-eth.patch (new)
--- linux-2.6.37-connext-0006-eth.patch
+++ linux-2.6.37-connext-0006-eth.patch
+From 5105b98fc6f109c89fe7243f5a2b3638bee039dd Mon Sep 17 00:00:00 2001
+From: Anders Wallin <anders.wallin at windriver.com>
+Date: Tue, 8 Mar 2011 17:34:30 +0200
+Subject: [PATCH 06/28] linux-2.6.37-connext-0006-eth.patch
+
+---
+ drivers/net/stmmac/stmmac.h         |   40 +---
+ drivers/net/stmmac/stmmac_ethtool.c |    4 +-
+ drivers/net/stmmac/stmmac_main.c    |  449 +++++++++++++++++++++++++----------
+ drivers/net/stmmac/stmmac_mdio.c    |    8 +-
+ include/linux/stmmac.h              |    6 +-
+ 5 files changed, 341 insertions(+), 166 deletions(-)
+
+diff --git a/drivers/net/stmmac/stmmac.h b/drivers/net/stmmac/stmmac.h
+index 79bdc2e..5f06c47 100644
+--- a/drivers/net/stmmac/stmmac.h
++++ b/drivers/net/stmmac/stmmac.h
+@@ -20,7 +20,7 @@
+   Author: Giuseppe Cavallaro <peppe.cavallaro at st.com>
+ *******************************************************************************/
+ 
+-#define DRV_MODULE_VERSION	"Apr_2010"
++#define DRV_MODULE_VERSION	"Nov_2010"
+ #include <linux/platform_device.h>
+ #include <linux/stmmac.h>
+ 
+@@ -37,7 +37,6 @@ struct stmmac_priv {
+ 	unsigned int cur_tx;
+ 	unsigned int dirty_tx;
+ 	unsigned int dma_tx_size;
+-	int tx_coe;
+ 	int tx_coalesce;
+ 
+ 	struct dma_desc *dma_rx ;
+@@ -48,7 +47,6 @@ struct stmmac_priv {
+ 	struct sk_buff_head rx_recycle;
+ 
+ 	struct net_device *dev;
+-	int is_gmac;
+ 	dma_addr_t dma_rx_phy;
+ 	unsigned int dma_rx_size;
+ 	unsigned int dma_buf_sz;
+@@ -60,14 +58,11 @@ struct stmmac_priv {
+ 	struct napi_struct napi;
+ 
+ 	phy_interface_t phy_interface;
+-	int pbl;
+-	int bus_id;
+ 	int phy_addr;
+ 	int phy_mask;
+ 	int (*phy_reset) (void *priv);
+-	void (*fix_mac_speed) (void *priv, unsigned int speed);
+-	void (*bus_setup)(void __iomem *ioaddr);
+-	void *bsp_priv;
++	int rx_coe;
++	int no_csum_insertion;
+ 
+ 	int phy_irq;
+ 	struct phy_device *phydev;
+@@ -77,47 +72,20 @@ struct stmmac_priv {
+ 	unsigned int flow_ctrl;
+ 	unsigned int pause;
+ 	struct mii_bus *mii;
+-	int mii_clk_csr;
+ 
+ 	u32 msg_enable;
+ 	spinlock_t lock;
+ 	int wolopts;
+ 	int wolenabled;
+-	int shutdown;
+ #ifdef CONFIG_STMMAC_TIMER
+ 	struct stmmac_timer *tm;
+ #endif
+ #ifdef STMMAC_VLAN_TAG_USED
+ 	struct vlan_group *vlgrp;
+ #endif
+-	int enh_desc;
+-	int rx_coe;
+-	int bugged_jumbo;
+-	int no_csum_insertion;
++	struct plat_stmmacenet_data *plat;
+ };
+ 
+-#ifdef CONFIG_STM_DRIVERS
+-#include <linux/stm/pad.h>
+-static inline int stmmac_claim_resource(struct platform_device *pdev)
+-{
+-	int ret = 0;
+-	struct plat_stmmacenet_data *plat_dat = pdev->dev.platform_data;
+-
+-	/* Pad routing setup */
+-	if (IS_ERR(devm_stm_pad_claim(&pdev->dev, plat_dat->pad_config,
+-			dev_name(&pdev->dev)))) {
+-		printk(KERN_ERR "%s: Failed to request pads!\n", __func__);
+-		ret = -ENODEV;
+-	}
+-	return ret;
+-}
+-#else
+-static inline int stmmac_claim_resource(struct platform_device *pdev)
+-{
+-	return 0;
+-}
+-#endif
+-
+ extern int stmmac_mdio_unregister(struct net_device *ndev);
+ extern int stmmac_mdio_register(struct net_device *ndev);
+ extern void stmmac_set_ethtool_ops(struct net_device *netdev);
+diff --git a/drivers/net/stmmac/stmmac_ethtool.c b/drivers/net/stmmac/stmmac_ethtool.c
+index 6d65482..f2695fd 100644
+--- a/drivers/net/stmmac/stmmac_ethtool.c
++++ b/drivers/net/stmmac/stmmac_ethtool.c
+@@ -94,7 +94,7 @@ static void stmmac_ethtool_getdrvinfo(struct net_device *dev,
+ {
+ 	struct stmmac_priv *priv = netdev_priv(dev);
+ 
+-	if (!priv->is_gmac)
++	if (!priv->plat->has_gmac)
+ 		strcpy(info->driver, MAC100_ETHTOOL_NAME);
+ 	else
+ 		strcpy(info->driver, GMAC_ETHTOOL_NAME);
+@@ -176,7 +176,7 @@ static void stmmac_ethtool_gregs(struct net_device *dev,
+ 
+ 	memset(reg_space, 0x0, REG_SPACE_SIZE);
+ 
+-	if (!priv->is_gmac) {
++	if (!priv->plat->has_gmac) {
+ 		/* MAC registers */
+ 		for (i = 0; i < 12; i++)
+ 			reg_space[i] = readl(priv->ioaddr + (i * 4));
+diff --git a/drivers/net/stmmac/stmmac_main.c b/drivers/net/stmmac/stmmac_main.c
+index 2114837..4c634bd 100644
+--- a/drivers/net/stmmac/stmmac_main.c
++++ b/drivers/net/stmmac/stmmac_main.c
+@@ -1,8 +1,10 @@
+ /*******************************************************************************
+-  This is the driver for the ST MAC 10/100/1000 on-chip Ethernet controllers.
++  This is the driver for the ST MAC 10/100/1000 on-chip and PCI Ethernet
++  controllers.
+   ST Ethernet IPs are built around a Synopsys IP Core.
+ 
+   Copyright (C) 2007-2009  STMicroelectronics Ltd
++  Copyright (C) 2010       Wind River Systems, Inc.
+ 
+   This program is free software; you can redistribute it and/or modify it
+   under the terms and conditions of the GNU General Public License,
+@@ -21,6 +23,7 @@
+   the file called "COPYING".
+ 
+   Author: Giuseppe Cavallaro <peppe.cavallaro at st.com>
++  Author : Vlad Lungu        <vlad.lungu at windriver.com> -- add PCI support
+ 
+   Documentation available at:
+ 	http://www.stlinux.com
+@@ -34,6 +37,7 @@
+ #include <linux/interrupt.h>
+ #include <linux/etherdevice.h>
+ #include <linux/platform_device.h>
++#include <linux/pci.h>
+ #include <linux/ip.h>
+ #include <linux/tcp.h>
+ #include <linux/skbuff.h>
+@@ -186,6 +190,18 @@ static inline u32 stmmac_tx_avail(struct stmmac_priv *priv)
+ 	return priv->dirty_tx + priv->dma_tx_size - priv->cur_tx - 1;
+ }
+ 
++/* On some ST platforms, some HW system configuraton registers have to be
++ * set according to the link speed negotiated.
++ */
++static inline void stmmac_hw_fix_mac_speed(struct stmmac_priv *priv)
++{
++	struct phy_device *phydev = priv->phydev;
++
++	if (likely(priv->plat->fix_mac_speed))
++		priv->plat->fix_mac_speed(priv->plat->bsp_priv,
++					  phydev->speed);
++}
++
+ /**
+  * stmmac_adjust_link
+  * @dev: net device structure
+@@ -228,15 +244,13 @@ static void stmmac_adjust_link(struct net_device *dev)
+ 			new_state = 1;
+ 			switch (phydev->speed) {
+ 			case 1000:
+-				if (likely(priv->is_gmac))
++				if (likely(priv->plat->has_gmac))
+ 					ctrl &= ~priv->hw->link.port;
+-				if (likely(priv->fix_mac_speed))
+-					priv->fix_mac_speed(priv->bsp_priv,
+-							    phydev->speed);
++				stmmac_hw_fix_mac_speed(priv);
+ 				break;
+ 			case 100:
+ 			case 10:
+-				if (priv->is_gmac) {
++				if (priv->plat->has_gmac) {
+ 					ctrl |= priv->hw->link.port;
(746 more lines skipped)

++++++ linux-2.6.37-connext-0007-mmc.patch (new)
--- linux-2.6.37-connext-0007-mmc.patch
+++ linux-2.6.37-connext-0007-mmc.patch
+From 8369f670f3f2a95d4efe226ec80c60c0a8cc1a19 Mon Sep 17 00:00:00 2001
+From: Anders Wallin <anders.wallin at windriver.com>
+Date: Tue, 8 Mar 2011 17:34:30 +0200
+Subject: [PATCH 07/28] linux-2.6.37-connext-0007-mmc.patch
+
+---
+ drivers/mmc/host/Kconfig    |   20 +
+ drivers/mmc/host/Makefile   |    1 +
+ drivers/mmc/host/mmci-pci.c | 1762 +++++++++++++++++++++++++++++++++++++++++++
+ drivers/mmc/host/mmci-pci.h |  318 ++++++++
+ 4 files changed, 2101 insertions(+), 0 deletions(-)
+ create mode 100644 drivers/mmc/host/mmci-pci.c
+ create mode 100644 drivers/mmc/host/mmci-pci.h
+
+diff --git a/drivers/mmc/host/Kconfig b/drivers/mmc/host/Kconfig
+index d618e86..99fa768 100644
+--- a/drivers/mmc/host/Kconfig
++++ b/drivers/mmc/host/Kconfig
+@@ -14,6 +14,26 @@ config MMC_ARMMMCI
+ 
+ 	  If unsure, say N.
+ 
++config MMC_ARMMMCI_PCI
++        tristate "PCI version of the ARM AMBA MMC Card driver"
++        depends on STA2X11_PCI_SCTL && GPIO_PL061_PCI && PCI
++        help
++          This selects the PCI support for PrimeCell Multimedia Card
++          Interface (PL180 and PL181).  If you have an STA2X11
++          platform with a Multimedia Card slot, say Y or M here.
++
++          If unsure, say N.
++
++config MMC_ARMMMCI_PCI_DMA_SUPPORT
++	boolean "DMA support for PCI MMCI Card"
++	depends on MMC_ARMMMCI_PCI && PCI_PL08X
++	default y
++        help
++	  Enable dma support code in the mmci-pci driver
++	  The DMA support can be turned in runtime
++	  by passing the use_dma=0 argument to the module
++          If unsure, say Y.
++
+ config MMC_PXA
+ 	tristate "Intel PXA25x/26x/27x Multimedia Card Interface support"
+ 	depends on ARCH_PXA
+diff --git a/drivers/mmc/host/Makefile b/drivers/mmc/host/Makefile
+index 7b645ff..cee0116 100644
+--- a/drivers/mmc/host/Makefile
++++ b/drivers/mmc/host/Makefile
+@@ -2,6 +2,7 @@
+ # Makefile for MMC/SD host controller drivers
+ #
+ 
++obj-$(CONFIG_MMC_ARMMMCI_PCI)	+= mmci-pci.o
+ obj-$(CONFIG_MMC_ARMMMCI)	+= mmci.o
+ obj-$(CONFIG_MMC_PXA)		+= pxamci.o
+ obj-$(CONFIG_MMC_IMX)		+= imxmmc.o
+diff --git a/drivers/mmc/host/mmci-pci.c b/drivers/mmc/host/mmci-pci.c
+new file mode 100644
+index 0000000..d802fc5
+--- /dev/null
++++ b/drivers/mmc/host/mmci-pci.c
+@@ -0,0 +1,1762 @@
++/**
++ * linux/drivers/mmc/host/mmci-pci.c
++ * Derived from  linux/drivers/mmc/host/mmci.c &
++ * linux/drivers/mmc/host/sdhci-pci.c
++ * pl18x Modification version based on pci
++ *
++ * Copyright (c) 2009-2011 Wind River Systems, Inc.
++ *
++ * 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.
++ *
++ * 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, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
++ *
++ */
++
++/* FIXME/TODO
++ *
++ *  - Power management: not tested
++ *
++ *  - SDIO2 : fails due to missing interrupts
++ *
++ *  - Add platform concept
++ *
++ *  - mmc_test fails on some test cases
++ *
++ *  - Should we turn off/on power on slot when card inserted/removed
++ *
++ *  - remove FIXME/TODO's
++ *
++ */
++
++#include <linux/module.h>
++#include <linux/moduleparam.h>
++#include <linux/init.h>
++#include <linux/ioport.h>
++#include <linux/device.h>
++#include <linux/interrupt.h>
++#include <linux/delay.h>
++#include <linux/err.h>
++#include <linux/highmem.h>
++#include <linux/log2.h>
++#include <linux/mmc/host.h>
++#include <linux/mmc/card.h>
++#include <linux/clk.h>
++#include <linux/scatterlist.h>
++#include <asm/cacheflush.h>
++#include <asm/div64.h>
++#include <linux/io.h>
++#include <linux/gpio.h>
++#include <linux/pci.h>
++#include <linux/debugfs.h>
++
++/* gpio settings */
++#include <asm/sta2x11.h>
++#include "../../gpio/pl061_pci.h"
++#include "../../misc/sta2x11_sctl.h"
++
++#ifdef CONFIG_MMC_ARMMMCI_PCI_DMA_SUPPORT
++#include <linux/dmaengine.h>
++#include <linux/dma-mapping.h>
++#include <linux/amba/pl08x.h>
++#endif
++
++#include "mmci-pci.h"
++
++#define ST_DESIGNER 0x08
++#define DRIVER_NAME "mmci-pl18x-pci"
++#define BLK_SIZE 2048
++
++#ifdef CONFIG_MMC_ARMMMCI_PCI_DMA_SUPPORT
++#define DMA_SUPPORT 1
++static int use_dma = 1;
++module_param_named(use_dma, use_dma, int, S_IRUGO);
++static int use_pio_write;
++module_param_named(use_pio_write, use_pio_write, int, S_IRUGO);
++#else
++#define DMA_SUPPORT 0
++#endif
++
++static int f_max = -1;
++module_param(f_max, int, S_IRUGO);
++MODULE_PARM_DESC(f_max, "limit max frequency (in Hz)");
++
++struct mmci_pci_chip;
++struct mmci_pci_slot;
++
++struct mmci_pci_config {
++	int (*probe) (struct mmci_pci_chip *);
++	void (*remove) (struct mmci_pci_chip *);
++};
++
++struct mmci_pci_slot {
++	struct mmci_pci_chip *chip;
++	struct mmci_host *host;
++	int pci_bar;
++};
++
++struct mmci_pci_chip {
++	struct pci_dev *pdev;
++	const struct mmci_pci_config *config;
++	struct mmci_pci_slot *slot;
++};
++
++static unsigned char *trans;
++static struct scatterlist new_sg;
++static struct scatterlist *orig_sg;
++static unsigned int orig_blksz, orig_blocks;
++static int var_len;
++
++static struct mmci_config {
++	bool enabled;
++	char name[32];
++	char chan_name[16];
++	u32 fifo_reg;
++	const char *cd_name;
++	int cd_pin;
++	const char *pwr_name;
++	int pwr_pin;
++	int clk_pin;
++	int cmd_pin;
++	int sctl_clk_mux_bit;
++	struct dentry *dentry;
++} mmci_configs[8] = {
++	{
++		.enabled = false,
++	}, {
++		.enabled = true,
(1954 more lines skipped)

++++++ linux-2.6.37-connext-0008-i2c.patch (new)
--- linux-2.6.37-connext-0008-i2c.patch
+++ linux-2.6.37-connext-0008-i2c.patch
+From d362c5eece8c25ebd5905b2fe4964f1ffab2dfec Mon Sep 17 00:00:00 2001
+From: Anders Wallin <anders.wallin at windriver.com>
+Date: Tue, 8 Mar 2011 17:34:31 +0200
+Subject: [PATCH 08/28] linux-2.6.37-connext-0008-i2c.patch
+
+---
+ drivers/i2c/busses/Kconfig                   |   10 +
+ drivers/i2c/busses/Makefile                  |    1 +
+ drivers/i2c/busses/i2c-sta2x11_pci-debugfs.c |  123 ++
+ drivers/i2c/busses/i2c-sta2x11_pci.c         | 1701 ++++++++++++++++++++++++++
+ 4 files changed, 1835 insertions(+), 0 deletions(-)
+ create mode 100644 drivers/i2c/busses/i2c-sta2x11_pci-debugfs.c
+ create mode 100644 drivers/i2c/busses/i2c-sta2x11_pci.c
+
+diff --git a/drivers/i2c/busses/Kconfig b/drivers/i2c/busses/Kconfig
+index 3a6321c..de1213e 100644
+--- a/drivers/i2c/busses/Kconfig
++++ b/drivers/i2c/busses/Kconfig
+@@ -204,6 +204,16 @@ config I2C_SIS96X
+ 	  This driver can also be built as a module.  If so, the module
+ 	  will be called i2c-sis96x.
+ 
++config I2C_STA2X11_PCI
++         tristate "STA2X11"
++	 depends on PCI
++	 help
++	  If you say yes to this option, support will be included for the
++	  STA2X11 I2C controller.
++
++	  This driver can also be built as a module.  If so, the module
++	  will be called i2c-sta2x11-pci
++
+ config I2C_VIA
+ 	tristate "VIA VT82C586B"
+ 	depends on PCI && EXPERIMENTAL
+diff --git a/drivers/i2c/busses/Makefile b/drivers/i2c/busses/Makefile
+index 84cb16a..930d75f 100644
+--- a/drivers/i2c/busses/Makefile
++++ b/drivers/i2c/busses/Makefile
+@@ -57,6 +57,7 @@ obj-$(CONFIG_I2C_S6000)		+= i2c-s6000.o
+ obj-$(CONFIG_I2C_SH7760)	+= i2c-sh7760.o
+ obj-$(CONFIG_I2C_SH_MOBILE)	+= i2c-sh_mobile.o
+ obj-$(CONFIG_I2C_SIMTEC)	+= i2c-simtec.o
++obj-$(CONFIG_I2C_STA2X11_PCI)	+= i2c-sta2x11_pci.o
+ obj-$(CONFIG_I2C_STU300)	+= i2c-stu300.o
+ obj-$(CONFIG_I2C_VERSATILE)	+= i2c-versatile.o
+ obj-$(CONFIG_I2C_OCTEON)	+= i2c-octeon.o
+diff --git a/drivers/i2c/busses/i2c-sta2x11_pci-debugfs.c b/drivers/i2c/busses/i2c-sta2x11_pci-debugfs.c
+new file mode 100644
+index 0000000..f2a7284
+--- /dev/null
++++ b/drivers/i2c/busses/i2c-sta2x11_pci-debugfs.c
+@@ -0,0 +1,123 @@
++/*
++ * Copyright (C) 2011 Wind River
++ *
++ * I2C master/slave mode controller driver, used in ST Microelectronics
++ * STA2X11 chipset.
++ *
++ * Author: Ivar Holmqvist <ivar.holmqvist at windriver.com>
++ *     - Based on the i2c-nomadik.c driver.
++ *     - Added support for PCI style driver instead of platform.
++ *     - Added support for SLAVE mode.
++ *
++ * 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.
++ */
++
++struct dentry *sta2x11_debugfs_dir;
++
++#ifdef CONFIG_DEBUG_FS
++#define BUFSIZE	1024
++static ssize_t sta2x11_debugfs_read(struct file *file, char __user * user_buf,
++			    size_t count, loff_t *ppos)
++{
++	char *buf;
++	u32 len = 0;
++	ssize_t ret;
++	struct nmk_i2c_dev *dev;
++
++	dev = (struct nmk_i2c_dev *)file->private_data;
++	if (!dev)
++		return 0;
++
++	buf = kzalloc(BUFSIZE, GFP_KERNEL);
++	if (!buf)
++		return 0;
++
++	len += snprintf(buf + len, BUFSIZE - len,
++			"Mode: \t%s\n",
++			dev->cfg.mode == MASTER ? "MASTER" : "SLAVE");
++	len += snprintf(buf + len, BUFSIZE - len, "Clk: \t%li\n",
++			dev->cfg.clk_freq);
++
++	if (dev->cfg.mode == SLAVE) {
++		struct i2c_slave *slave = dev->slave_private;
++
++		if (slave != NULL) {
++			len += snprintf(buf + len, BUFSIZE - len,
++					"Slave address = %i\n", slave->addr);
++			len += snprintf(buf + len, BUFSIZE - len,
++					"Slave state = %s\n\n",
++					statestr(slave->state));
++		}
++
++	}
++
++	len += snprintf(buf + len, BUFSIZE - len, "I2C_CR:\t\t0x%08x\n",
++			readl(dev->virtbase + I2C_CR));
++	len += snprintf(buf + len, BUFSIZE - len, "I2C_SCR:\t0x%08x\n",
++			readl(dev->virtbase + I2C_SCR));
++	len += snprintf(buf + len, BUFSIZE - len, "I2C_HSMCR:\t0x%08x\n",
++			readl(dev->virtbase + I2C_HSMCR));
++	len += snprintf(buf + len, BUFSIZE - len, "I2C_MCR:\t0x%08x\n",
++			readl(dev->virtbase + I2C_MCR));
++	len += snprintf(buf + len, BUFSIZE - len, "I2C_TFR:\t0x%08x\n",
++			readl(dev->virtbase + I2C_TFR));
++	len += snprintf(buf + len, BUFSIZE - len, "I2C_SR:\t\t0x%08x\n",
++			readl(dev->virtbase + I2C_SR));
++	len += snprintf(buf + len, BUFSIZE - len, "I2C_RFR:\t0x%08x\n",
++			readl(dev->virtbase + I2C_RFR));
++	len += snprintf(buf + len, BUFSIZE - len, "I2C_TFTR:\t0x%08x\n",
++			readl(dev->virtbase + I2C_TFTR));
++	len += snprintf(buf + len, BUFSIZE - len, "I2C_RFTR:\t0x%08x\n",
++			readl(dev->virtbase + I2C_RFTR));
++	len += snprintf(buf + len, BUFSIZE - len, "I2C_DMAR:\t0x%08x\n",
++			readl(dev->virtbase + I2C_DMAR));
++	len += snprintf(buf + len, BUFSIZE - len, "I2C_BRCR:\t0x%08x\n",
++			readl(dev->virtbase + I2C_BRCR));
++	len += snprintf(buf + len, BUFSIZE - len, "I2C_IMSCR:\t0x%08x\n",
++			readl(dev->virtbase + I2C_IMSCR));
++	len += snprintf(buf + len, BUFSIZE - len, "I2C_RISR:\t0x%08x\n",
++			readl(dev->virtbase + I2C_RISR));
++	len += snprintf(buf + len, BUFSIZE - len, "I2C_MISR:\t0x%08x\n",
++			readl(dev->virtbase + I2C_MISR));
++	len += snprintf(buf + len, BUFSIZE - len, "I2C_ICR:\t0x%08x\n",
++			readl(dev->virtbase + I2C_ICR));
++
++	ret = simple_read_from_buffer(user_buf, count, ppos, buf, len);
++	kfree(buf);
++	return ret;
++}
++
++static int sta2x11_debugfs_open(struct inode *inode, struct file *file)
++{
++	file->private_data = inode->i_private;
++
++	return 0;
++}
++
++static const struct file_operations sta2x11_i2c_operations = {
++	.owner = THIS_MODULE,
++	.open = sta2x11_debugfs_open,
++	.read = sta2x11_debugfs_read
++};
++
++static int __init sta2x11_debugfs_init(void)
++{
++	sta2x11_debugfs_dir = debugfs_create_dir(DRIVER_NAME, NULL);
++	if (!sta2x11_debugfs_dir)
++		return -ENOMEM;
++
++	return 0;
++}
++
++static int __exit sta2x11_debugfs_exit(void)
++{
++	debugfs_remove_recursive(sta2x11_debugfs_dir);
++
++	return 0;
++}
++#else
++#define sta2x11_debugfs_init() {}
++#define sta2x11_debugfs_exit() {}
++#endif /* DEBUG_FS */
+diff --git a/drivers/i2c/busses/i2c-sta2x11_pci.c b/drivers/i2c/busses/i2c-sta2x11_pci.c
+new file mode 100644
+index 0000000..330cdba
+--- /dev/null
++++ b/drivers/i2c/busses/i2c-sta2x11_pci.c
+@@ -0,0 +1,1701 @@
++/*
++ * Copyright (C) 2009 ST-Ericsson
++ * Copyright (C) 2009 ST Microelectronics
++ * Copyright (C) 2010-2011 Wind River
++ *
++ * I2C master/slave mode controller driver, used in ST Microelectronics
++ * STA2X11 chipset.
++ *
++ * Author: Ivar Holmqvist <ivar.holmqvist at windriver.com>
++ *     - Based on the i2c-nomadik.c driver.
++ *     - Added support for PCI style driver instead of platform.
++ *     - Added support for SLAVE mode.
++ *
++ * 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.
(1688 more lines skipped)

++++++ linux-2.6.37-connext-0009-can.patch (new)
--- linux-2.6.37-connext-0009-can.patch
+++ linux-2.6.37-connext-0009-can.patch
+From db129251215fb4eefe2b6ec4abc0447cfeb65c5f Mon Sep 17 00:00:00 2001
+From: Anders Wallin <anders.wallin at windriver.com>
+Date: Tue, 8 Mar 2011 17:34:32 +0200
+Subject: [PATCH 09/28] linux-2.6.37-connext-0009-can.patch
+
+---
+ drivers/net/can/Kconfig       |   12 +
+ drivers/net/can/Makefile      |    1 +
+ drivers/net/can/sta2x11_can.c |  995 +++++++++++++++++++++++++++++++++++++++++
+ drivers/net/can/sta2x11_can.h |  161 +++++++
+ 4 files changed, 1169 insertions(+), 0 deletions(-)
+ create mode 100644 drivers/net/can/sta2x11_can.c
+ create mode 100644 drivers/net/can/sta2x11_can.h
+
+diff --git a/drivers/net/can/Kconfig b/drivers/net/can/Kconfig
+index 080574b..a5d2f83 100644
+--- a/drivers/net/can/Kconfig
++++ b/drivers/net/can/Kconfig
+@@ -96,6 +96,18 @@ source "drivers/net/can/sja1000/Kconfig"
+ 
+ source "drivers/net/can/usb/Kconfig"
+ 
++config CAN_STA2X11
++        depends on CAN_DEV && HAS_IOMEM && STA2X11_PCI_APBREG
++	tristate "CAN STA2X11"
++	---help---
++	  Driver for the STA2x11 CAN controller
++	  Supports CAN protocol version 2.0 part A and B
++	  Bit rates up to 1 MBit/s
++	  32 Message Objects
++	  Programmable loop-back mode for self-test operation
++	  8-bit non-multiplex Motorola HC08 compatible module interface
++
++
+ config CAN_DEBUG_DEVICES
+ 	bool "CAN devices debugging messages"
+ 	depends on CAN
+diff --git a/drivers/net/can/Makefile b/drivers/net/can/Makefile
+index 90af15a..d46382b 100644
+--- a/drivers/net/can/Makefile
++++ b/drivers/net/can/Makefile
+@@ -18,5 +18,6 @@ obj-$(CONFIG_CAN_BFIN)		+= bfin_can.o
+ obj-$(CONFIG_CAN_JANZ_ICAN3)	+= janz-ican3.o
+ obj-$(CONFIG_CAN_FLEXCAN)	+= flexcan.o
+ obj-$(CONFIG_PCH_CAN)		+= pch_can.o
++obj-$(CONFIG_CAN_STA2X11)	+= sta2x11_can.o
+ 
+ ccflags-$(CONFIG_CAN_DEBUG_DEVICES) := -DDEBUG
+diff --git a/drivers/net/can/sta2x11_can.c b/drivers/net/can/sta2x11_can.c
+new file mode 100644
+index 0000000..21d452b
+--- /dev/null
++++ b/drivers/net/can/sta2x11_can.c
+@@ -0,0 +1,995 @@
++/*
++* Copyright (c) 2010-2011 Wind River Systems, Inc.
++*
++* 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.
++*
++* 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, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
++*
++*
++*/
++
++#include <linux/module.h>
++#include <linux/pci.h>
++#include <linux/netdevice.h>
++#include <linux/debugfs.h>
++
++#include <linux/can.h>
++#include <linux/can/dev.h>
++#include <linux/can/error.h>
++
++#include "sta2x11_can.h"
++
++#include "../../misc/sta2x11_apbreg.h"
++
++#define DRV_NAME "sta2x11_can"
++#define STA2X11_APB_FREQ 104000000
++
++/* TX and RX message objects */
++#define STA2X11_OBJ_TX 1
++#define STA2X11_OBJ_RX 2
++
++static struct can_bittiming_const sta2x11_bittiming_const = {
++	.name = DRV_NAME,
++	.tseg1_min = 2,
++	.tseg1_max = 16,
++	.tseg2_min = 1,
++	.tseg2_max = 8,
++	.sjw_max = 4,
++	.brp_min = 1,
++	.brp_max = 1024,
++	.brp_inc = 1,
++};
++
++static void sta2x11_write_reg(struct sta2x11_priv *priv, int reg, u16 val)
++{
++	writew(val, priv->reg_base + reg);
++}
++
++static u16 sta2x11_read_reg(struct sta2x11_priv *priv, int reg)
++{
++	return readw(priv->reg_base + reg);
++}
++
++static void clear_interrupts(struct sta2x11_priv *priv)
++{
++	unsigned int mo;
++
++	sta2x11_write_reg(priv, CAN_IF1_CMR, CAN_IF_CMR_CPI);
++	for (mo = MSGOBJ_FIRST; mo <= MSGOBJ_LAST; mo++)
++		sta2x11_write_reg(priv, CAN_IF1_CRR, mo);
++}
++
++static void enable_objs(const struct net_device *dev)
++{
++	struct sta2x11_priv *priv = netdev_priv(dev);
++
++	/* RX message object */
++	dev_dbg(dev->dev.parent, "message object %d for RX\n", STA2X11_OBJ_RX);
++
++	/* command mask */
++	sta2x11_write_reg(priv, CAN_IF1_CMR, CAN_IF_CMR_WR | CAN_IF_CMR_AR |
++			  CAN_IF_CMR_MSK | CAN_IF_CMR_CTL);
++	/* mask */
++	sta2x11_write_reg(priv, CAN_IF1_M1R, 0x0);
++	sta2x11_write_reg(priv, CAN_IF1_M2R, 0x0);
++	/* arb */
++	sta2x11_write_reg(priv, CAN_IF1_A1R, 0x0);
++	sta2x11_write_reg(priv, CAN_IF1_A2R, CAN_IF_A2R_MSGVAL);
++	/* control */
++	sta2x11_write_reg(priv, CAN_IF1_MCR, CAN_IF_MCR_RXIE |
++			  CAN_IF_MCR_UMSK | CAN_IF_MCR_EOB);
++
++	sta2x11_write_reg(priv, CAN_IF1_CRR, STA2X11_OBJ_RX);
++
++	/* TX message object */
++	dev_dbg(dev->dev.parent, "message object %d for TX\n", STA2X11_OBJ_TX);
++
++	/* command mask */
++	sta2x11_write_reg(priv, CAN_IF1_CMR, CAN_IF_CMR_WR |
++			  CAN_IF_CMR_AR | CAN_IF_CMR_CTL);
++	/* arb */
++	sta2x11_write_reg(priv, CAN_IF1_A1R, 0x0);
++	sta2x11_write_reg(priv, CAN_IF1_A2R, 0x0);
++	/* control */
++	sta2x11_write_reg(priv, CAN_IF1_MCR, 0x0);
++
++	sta2x11_write_reg(priv, CAN_IF1_CRR, STA2X11_OBJ_TX);
++}
++
++static void disable_objs(struct sta2x11_priv *priv)
++{
++	/* RX message object */
++	/* command mask */
++	sta2x11_write_reg(priv, CAN_IF1_CMR, CAN_IF_CMR_WR |
++			  CAN_IF_CMR_AR | CAN_IF_CMR_CTL);
++	/* arb */
++	sta2x11_write_reg(priv, CAN_IF1_A1R, 0x0);
++	sta2x11_write_reg(priv, CAN_IF1_A2R, 0x0);
++	/* control */
++	sta2x11_write_reg(priv, CAN_IF1_MCR, 0);
++	/* command */
++	sta2x11_write_reg(priv, CAN_IF1_CRR, STA2X11_OBJ_RX);
++
++	/* TX message object */
++	/* command mask */
++	sta2x11_write_reg(priv, CAN_IF1_CMR, CAN_IF_CMR_WR |
++			  CAN_IF_CMR_AR | CAN_IF_CMR_CTL);
++	/* arb */
++	sta2x11_write_reg(priv, CAN_IF1_A1R, 0x0);
++	sta2x11_write_reg(priv, CAN_IF1_A2R, 0x0);
++	/* control */
++	sta2x11_write_reg(priv, CAN_IF1_MCR, 0);
++	/* command */
++	sta2x11_write_reg(priv, CAN_IF1_CRR, STA2X11_OBJ_TX);
++}
++
++static void set_reset_mode(struct net_device *dev)
++{
++	struct sta2x11_priv *priv = netdev_priv(dev);
++
++	if (priv->can.ctrlmode & CAN_CTRLMODE_ONE_SHOT) {
++		/* cancel timer handling tx request poll */
++		del_timer_sync(&priv->txtimer);
++	}
++
++	/* enable configuration and puts chip in bus-off, disable interrupts */
(1021 more lines skipped)

++++++ linux-2.6.37-connext-0010-mlb.patch (new)
--- linux-2.6.37-connext-0010-mlb.patch
+++ linux-2.6.37-connext-0010-mlb.patch
+From 8c6336078492e0e10cc1e429c0e184e3eeadf8d5 Mon Sep 17 00:00:00 2001
+From: Anders Wallin <anders.wallin at windriver.com>
+Date: Tue, 8 Mar 2011 17:34:33 +0200
+Subject: [PATCH 10/28] linux-2.6.37-connext-0010-mlb.patch
+
+---
+ drivers/net/Makefile          |    1 +
+ drivers/net/most/Kconfig      |   22 +
+ drivers/net/most/Makefile     |    7 +
+ drivers/net/most/sta2x11mlb.c | 1610 +++++++++++++++++++++++++++++++++++++++++
+ include/net/most/async.h      |   12 +
+ include/net/most/ctl.h        |   12 +
+ include/net/most/dev.h        |   27 +
+ include/net/most/most.h       |  110 +++
+ include/net/most/most_core.h  |  137 ++++
+ include/net/most/sync.h       |   12 +
+ net/Kconfig                   |    1 +
+ net/Makefile                  |    1 +
+ net/most/Kconfig              |   46 ++
+ net/most/Makefile             |   15 +
+ net/most/af_most.c            |  170 +++++
+ net/most/async_sock.c         |  155 ++++
+ net/most/ctl_sock.c           |  160 ++++
+ net/most/dev_sock.c           |  171 +++++
+ net/most/most_core.c          |  287 ++++++++
+ net/most/most_sock.c          |  315 ++++++++
+ net/most/sync_sock.c          |  151 ++++
+ 21 files changed, 3422 insertions(+), 0 deletions(-)
+ create mode 100644 drivers/net/most/Kconfig
+ create mode 100644 drivers/net/most/Makefile
+ create mode 100644 drivers/net/most/sta2x11mlb.c
+ create mode 100644 include/net/most/async.h
+ create mode 100644 include/net/most/ctl.h
+ create mode 100644 include/net/most/dev.h
+ create mode 100644 include/net/most/most.h
+ create mode 100644 include/net/most/most_core.h
+ create mode 100644 include/net/most/sync.h
+ create mode 100644 net/most/Kconfig
+ create mode 100644 net/most/Makefile
+ create mode 100644 net/most/af_most.c
+ create mode 100644 net/most/async_sock.c
+ create mode 100644 net/most/ctl_sock.c
+ create mode 100644 net/most/dev_sock.c
+ create mode 100644 net/most/most_core.c
+ create mode 100644 net/most/most_sock.c
+ create mode 100644 net/most/sync_sock.c
+
+diff --git a/drivers/net/Makefile b/drivers/net/Makefile
+index b90738d..3108898 100644
+--- a/drivers/net/Makefile
++++ b/drivers/net/Makefile
+@@ -37,6 +37,7 @@ obj-$(CONFIG_JME) += jme.o
+ obj-$(CONFIG_BE2NET) += benet/
+ obj-$(CONFIG_VMXNET3) += vmxnet3/
+ obj-$(CONFIG_BNA) += bna/
++obj-$(CONFIG_MOST) += most/
+ 
+ gianfar_driver-objs := gianfar.o \
+ 		gianfar_ethtool.o \
+diff --git a/drivers/net/most/Kconfig b/drivers/net/most/Kconfig
+new file mode 100644
+index 0000000..6a6693a
+--- /dev/null
++++ b/drivers/net/most/Kconfig
+@@ -0,0 +1,22 @@
++menu "MOST Device Drivers"
++	depends on MOST
++
++config MOST_TIMB_MLB
++	tristate "The timberdale MOST block"
++	depends on MOST
++	depends on GENERIC_GPIO
++	depends on HAS_IOMEM
++	select TIMB_DMA
++	default N
++	---help---
++	  Adds support for MOST on the timberdale FPGA.
++
++config MOST_STA2X11_MLB
++	tristate "The STA2X11 MOST block"
++	depends on MOST
++	depends on GENERIC_GPIO
++	default N
++	---help---
++	  Adds support for MLB on the sta2x11
++
++endmenu
+diff --git a/drivers/net/most/Makefile b/drivers/net/most/Makefile
+new file mode 100644
+index 0000000..b7a4531
+--- /dev/null
++++ b/drivers/net/most/Makefile
+@@ -0,0 +1,7 @@
++#
++#  Makefile for the Linux Media Oriented Systems Transport drivers.
++#
++
++obj-$(CONFIG_MOST_TIMB_MLB)	+= timbmlb.o
++obj-$(CONFIG_MOST_STA2X11_MLB)	+= sta2x11mlb.o
++
+diff --git a/drivers/net/most/sta2x11mlb.c b/drivers/net/most/sta2x11mlb.c
+new file mode 100644
+index 0000000..efad92e
+--- /dev/null
++++ b/drivers/net/most/sta2x11mlb.c
+@@ -0,0 +1,1610 @@
++/*
++ * sta2x11mlb.c Driver for the sta2x11 MLB block
++ * Copyright (c) 2010 Wind River
++ *
++ * 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.
++ *
++ * 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, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
++ */
++
++#include <linux/module.h>
++#include <linux/pci.h>
++#include <linux/interrupt.h>
++#include <net/most/most_core.h>
++#include <linux/debugfs.h>
++
++#define ENTER() do { printk(KERN_DEBUG "ENTER: %s %s:%d\n", \
++		__func__,  __FILE__, __LINE__); } while (0)
++#define EXIT() do { printk(KERN_DEBUG "EXIT: %s %s:%d\n", \
++		__func__, __FILE__, __LINE__); } while (0)
++
++#define PCI_DRIVER_NAME "sta2x11_mlb"
++#define DRIVER_VERSION "0.2"
++
++#define VEND_ID 0x104a
++#define DEVICE_ID  0xcc12
++
++#define BAR      0
++#define BAR_MASK 1
++
++/* size of internal RAM in "quadlets" */
++#define INTRAM 1024
++#define MAX_CHANNELS 30
++#define MAX_LCHAN 126
++
++#define MLB_DCCR 0x00
++#define MLB_SSCR 0x04
++#define MLB_SDCR 0x08
++#define MLB_SMCR 0x0c
++#define MLB_VCCR 0x1c
++#define MLB_SBCR 0x20
++#define MLB_ABCR 0x24
++#define MLB_CBCR 0x28
++#define MLB_IBCR 0x2c
++#define MLB_CICR 0x30
++
++#define MLB_CECRn(n)   (0x10*(n)+0x40)
++#define MLB_CSCRn(n)   (0x10*(n)+0x44)
++#define MLB_CCBCRn(n)  (0x10*(n)+0x48)
++#define MLB_CNBCRn(n)  (0x10*(n)+0x4c)
++#define MLB_LCBCRn(n)  (0x04*(n)+0x280)
++
++/* Device Control Configuration Register bit definitions
++ */
++#define DCCR_MDE_BIT         (1<<31)
++#define DCCR_LBM_BIT         (1<<30)
++#define DCCR_MCS_MASK            0x3
++#define DCCR_MCS_SHIFT            28
++/*bit 27 reserved */
++#define DCCR_MLK_BIT         (1<<26)
++#define DCCR_MLE_BIT         (1<<25)
++#define DCCR_MHRE_BIT        (1<<24)
++#define DCCR_MRS_BIT         (1<<23)
++/*bits 22-8 reserved */
++#define DCCR_MDA_MASK           0xff
++#define DCCR_MDA_SHIFT             0
++
++#define DCCR_MCS_256FS            0
++#define DCCR_MCS_512FS            1
++#define DCCR_MCS_1024FS           2
++
++/* System Status Configuration Register bit definitions
++ */
++#define SSCR_SSRE_BIT         (1<<7)
++#define SSCR_SDMU_BIT         (1<<6)
++#define SSCR_SDML_BIT         (1<<5)
++#define SSCR_SDSC_BIT         (1<<4)
++#define SSCR_SDCS_BIT         (1<<3)
++#define SSCR_SDNU_BIT         (1<<2)
++#define SSCR_SDNL_BIT         (1<<1)
++#define SSCR_SDR_BIT          (1<<0)
++
++/* System Mask Configuration Register bit definitions
++ */
(3415 more lines skipped)

++++++ linux-2.6.37-connext-0011-video-input.patch (new)
--- linux-2.6.37-connext-0011-video-input.patch
+++ linux-2.6.37-connext-0011-video-input.patch
+From e01496dcd9b2694b1f0a94ea50caa7cd12b128b3 Mon Sep 17 00:00:00 2001
+From: Anders Wallin <anders.wallin at windriver.com>
+Date: Tue, 8 Mar 2011 17:34:34 +0200
+Subject: [PATCH 11/28] linux-2.6.37-connext-0011-video-input.patch
+
+---
+ drivers/media/video/Kconfig                    |    2 +
+ drivers/media/video/Makefile                   |    1 +
+ drivers/media/video/adv7180.c                  |  438 ++++++--
+ drivers/media/video/sta2x11/Kconfig            |   12 +
+ drivers/media/video/sta2x11/Makefile           |    4 +
+ drivers/media/video/sta2x11/sta2x11_vip_main.c | 1532 ++++++++++++++++++++++++
+ drivers/media/video/videobuf-dma-contig.c      |  206 +++-
+ include/media/videobuf-dma-contig.h            |   12 +-
+ 8 files changed, 2074 insertions(+), 133 deletions(-)
+ create mode 100644 drivers/media/video/sta2x11/Kconfig
+ create mode 100644 drivers/media/video/sta2x11/Makefile
+ create mode 100644 drivers/media/video/sta2x11/sta2x11_vip_main.c
+
+diff --git a/drivers/media/video/Kconfig b/drivers/media/video/Kconfig
+index 6830d28..4a669de 100644
+--- a/drivers/media/video/Kconfig
++++ b/drivers/media/video/Kconfig
+@@ -611,6 +611,8 @@ config VIDEO_VINO
+ 
+ source "drivers/media/video/zoran/Kconfig"
+ 
++source "drivers/media/video/sta2x11/Kconfig"
++
+ config VIDEO_MEYE
+ 	tristate "Sony Vaio Picturebook Motion Eye Video For Linux"
+ 	depends on PCI && SONY_LAPTOP && VIDEO_V4L2
+diff --git a/drivers/media/video/Makefile b/drivers/media/video/Makefile
+index af79d47..ff33ae3 100644
+--- a/drivers/media/video/Makefile
++++ b/drivers/media/video/Makefile
+@@ -106,6 +106,7 @@ obj-$(CONFIG_VIDEO_CPIA2) += cpia2/
+ obj-$(CONFIG_VIDEO_MXB) += mxb.o
+ obj-$(CONFIG_VIDEO_HEXIUM_ORION) += hexium_orion.o
+ obj-$(CONFIG_VIDEO_HEXIUM_GEMINI) += hexium_gemini.o
++obj-$(CONFIG_STA2X11_VIP) += sta2x11/
+ 
+ obj-$(CONFIG_VIDEOBUF_GEN) += videobuf-core.o
+ obj-$(CONFIG_VIDEOBUF_DMA_SG) += videobuf-dma-sg.o
+diff --git a/drivers/media/video/adv7180.c b/drivers/media/video/adv7180.c
+index d2138d0..f8a388d 100644
+--- a/drivers/media/video/adv7180.c
++++ b/drivers/media/video/adv7180.c
+@@ -22,7 +22,7 @@
+ #include <linux/kernel.h>
+ #include <linux/interrupt.h>
+ #include <linux/i2c.h>
+-#include <linux/slab.h>
++#include <linux/i2c-id.h>
+ #include <media/v4l2-ioctl.h>
+ #include <linux/videodev2.h>
+ #include <media/v4l2-device.h>
+@@ -48,6 +48,7 @@
+ #define ADV7180_INPUT_CONTROL_PAL_COMB_N_PED		0xd0
+ #define ADV7180_INPUT_CONTROL_PAL_SECAM			0xe0
+ #define ADV7180_INPUT_CONTROL_PAL_SECAM_PED		0xf0
++#define ADV7180_INPUT_CONTROL_INSEL_MASK		0x0f
+ 
+ #define ADV7180_EXTENDED_OUTPUT_CONTROL_REG		0x04
+ #define ADV7180_EXTENDED_OUTPUT_CONTROL_NTSCDIS		0xC5
+@@ -55,9 +56,29 @@
+ #define ADV7180_AUTODETECT_ENABLE_REG			0x07
+ #define ADV7180_AUTODETECT_DEFAULT			0x7f
+ 
++#define ADV7180_CON_REG		0x08	/*Unsigned */
++#define CON_REG_MIN		0
++#define CON_REG_DEF		128
++#define CON_REG_MAX		255
++
++#define ADV7180_BRI_REG		0x0a	/*Signed */
++#define BRI_REG_MIN		-128
++#define BRI_REG_DEF		0
++#define BRI_REG_MAX		127
++
++#define ADV7180_HUE_REG		0x0b	/*Signed, inverted */
++#define HUE_REG_MIN		-127
++#define HUE_REG_DEF		0
++#define HUE_REG_MAX		128
++
+ #define ADV7180_ADI_CTRL_REG				0x0e
+ #define ADV7180_ADI_CTRL_IRQ_SPACE			0x20
+ 
++#define ADV7180_PWR_MAN_REG		0x0f
++#define ADV7180_PWR_MAN_ON		0x04
++#define ADV7180_PWR_MAN_OFF		0x24
++#define ADV7180_PWR_MAN_RES		0x80
++
+ #define ADV7180_STATUS1_REG				0x10
+ #define ADV7180_STATUS1_IN_LOCK		0x01
+ #define ADV7180_STATUS1_AUTOD_MASK	0x70
+@@ -78,6 +99,12 @@
+ #define ADV7180_ICONF1_PSYNC_ONLY	0x10
+ #define ADV7180_ICONF1_ACTIVE_TO_CLR	0xC0
+ 
++#define ADV7180_SD_SAT_CB_REG	0xe3	/*Unsigned */
++#define ADV7180_SD_SAT_CR_REG	0xe4	/*Unsigned */
++#define SAT_REG_MIN		0
++#define SAT_REG_DEF		128
++#define SAT_REG_MAX		255
++
+ #define ADV7180_IRQ1_LOCK	0x01
+ #define ADV7180_IRQ1_UNLOCK	0x02
+ #define ADV7180_ISR1_ADI	0x42
+@@ -90,13 +117,21 @@
+ #define ADV7180_IMR3_ADI	0x4C
+ #define ADV7180_IMR4_ADI	0x50
+ 
++#define ADV7180_NTSC_V_BIT_END_REG	0xE6
++#define ADV7180_NTSC_V_BIT_END_MANUAL_NVEND	0x4F
++
+ struct adv7180_state {
+-	struct v4l2_subdev	sd;
+-	struct work_struct	work;
+-	struct mutex		mutex; /* mutual excl. when accessing chip */
+-	int			irq;
+-	v4l2_std_id		curr_norm;
+-	bool			autodetect;
++	struct v4l2_subdev sd;
++	struct work_struct work;
++	struct mutex mutex;	/* mutual excl. when accessing chip */
++	int irq;
++	v4l2_std_id curr_norm;
++	bool autodetect;
++	s8 brightness;
++	s16 hue;
++	u8 contrast;
++	u8 saturation;
++	u8 input;
+ };
+ 
+ static v4l2_std_id adv7180_std_to_v4l2(u8 status1)
+@@ -154,8 +189,8 @@ static u32 adv7180_status_to_v4l2(u8 status1)
+ 	return 0;
+ }
+ 
+-static int __adv7180_status(struct i2c_client *client, u32 *status,
+-	v4l2_std_id *std)
++static int __adv7180_status(struct i2c_client *client, u32 * status,
++			    v4l2_std_id *std)
+ {
+ 	int status1 = i2c_smbus_read_byte_data(client, ADV7180_STATUS1_REG);
+ 
+@@ -175,7 +210,7 @@ static inline struct adv7180_state *to_state(struct v4l2_subdev *sd)
+ 	return container_of(sd, struct adv7180_state, sd);
+ }
+ 
+-static int adv7180_querystd(struct v4l2_subdev *sd, v4l2_std_id *std)
++static int adv7180_querystd(struct v4l2_subdev *sd, v4l2_std_id * std)
+ {
+ 	struct adv7180_state *state = to_state(sd);
+ 	int err = mutex_lock_interruptible(&state->mutex);
+@@ -192,7 +227,37 @@ static int adv7180_querystd(struct v4l2_subdev *sd, v4l2_std_id *std)
+ 	return err;
+ }
+ 
+-static int adv7180_g_input_status(struct v4l2_subdev *sd, u32 *status)
++static int adv7180_s_routing(struct v4l2_subdev *sd, u32 input,
++			     u32 output, u32 config)
++{
++	struct adv7180_state *state = to_state(sd);
++	int ret = mutex_lock_interruptible(&state->mutex);
++	struct i2c_client *client = v4l2_get_subdevdata(sd);
++
++	if (ret)
++		return ret;
++
++	/*We cannot discriminate between LQFP and 40-pin LFCSP, so accept
++	 * all inputs and let the card driver take care of validation
++	 */
++	if ((input & ADV7180_INPUT_CONTROL_INSEL_MASK) != input)
++		goto out;
++
++	ret = i2c_smbus_read_byte_data(client, ADV7180_INPUT_CONTROL_REG);
++
++	if (ret < 0)
++		goto out;
++
++	ret &= ~ADV7180_INPUT_CONTROL_INSEL_MASK;
++	ret = i2c_smbus_write_byte_data(client,
++					ADV7180_INPUT_CONTROL_REG, ret | input);
++	state->input = input;
++out:
++	mutex_unlock(&state->mutex);
++	return ret;
++}
++
++static int adv7180_g_input_status(struct v4l2_subdev *sd, u32 * status)
+ {
+ 	struct adv7180_state *state = to_state(sd);
+ 	int ret = mutex_lock_interruptible(&state->mutex);
+@@ -205,7 +270,7 @@ static int adv7180_g_input_status(struct v4l2_subdev *sd, u32 *status)
+ }
+ 
(2397 more lines skipped)

++++++ linux-2.6.37-connext-0012-msp.patch (new)
--- linux-2.6.37-connext-0012-msp.patch
+++ linux-2.6.37-connext-0012-msp.patch
+From 7a2418f8627f138a18c49c32a730227638d7e825 Mon Sep 17 00:00:00 2001
+From: Anders Wallin <anders.wallin at windriver.com>
+Date: Tue, 8 Mar 2011 17:34:35 +0200
+Subject: [PATCH 12/28] linux-2.6.37-connext-0012-msp.patch
+
+---
+ drivers/misc/Kconfig                           |    1 +
+ drivers/misc/Makefile                          |    1 +
+ drivers/misc/sta2x11_msp/Kconfig               |   20 +
+ drivers/misc/sta2x11_msp/Makefile              |    5 +
+ drivers/misc/sta2x11_msp/sta2x11_msp_core.c    | 1206 ++++++
+ drivers/misc/sta2x11_msp/sta2x11_msp_core.h    |  110 +
+ drivers/misc/sta2x11_msp/sta2x11_msp_debugfs.c |  134 +
+ drivers/misc/sta2x11_msp/sta2x11_msp_debugfs.h |   34 +
+ drivers/misc/sta2x11_msp/sta2x11_msp_pci.c     |  183 +
+ drivers/misc/sta2x11_msp/sta2x11_msp_regs.h    | 5039 ++++++++++++++++++++++++
+ drivers/misc/sta2x11_msp/sta2x11_msp_test.c    |  592 +++
+ 11 files changed, 7325 insertions(+), 0 deletions(-)
+ create mode 100644 drivers/misc/sta2x11_msp/Kconfig
+ create mode 100644 drivers/misc/sta2x11_msp/Makefile
+ create mode 100644 drivers/misc/sta2x11_msp/sta2x11_msp_core.c
+ create mode 100644 drivers/misc/sta2x11_msp/sta2x11_msp_core.h
+ create mode 100644 drivers/misc/sta2x11_msp/sta2x11_msp_debugfs.c
+ create mode 100644 drivers/misc/sta2x11_msp/sta2x11_msp_debugfs.h
+ create mode 100644 drivers/misc/sta2x11_msp/sta2x11_msp_pci.c
+ create mode 100644 drivers/misc/sta2x11_msp/sta2x11_msp_regs.h
+ create mode 100644 drivers/misc/sta2x11_msp/sta2x11_msp_test.c
+
+diff --git a/drivers/misc/Kconfig b/drivers/misc/Kconfig
+index 4e40f09..216b0c7 100644
+--- a/drivers/misc/Kconfig
++++ b/drivers/misc/Kconfig
+@@ -482,6 +482,7 @@ source "drivers/misc/c2port/Kconfig"
+ source "drivers/misc/eeprom/Kconfig"
+ source "drivers/misc/cb710/Kconfig"
+ source "drivers/misc/iwmc3200top/Kconfig"
++source "drivers/misc/sta2x11_msp/Kconfig"
+ source "drivers/misc/ti-st/Kconfig"
+ 
+ endif # MISC_DEVICES
+diff --git a/drivers/misc/Makefile b/drivers/misc/Makefile
+index daf6849..da1d882 100644
+--- a/drivers/misc/Makefile
++++ b/drivers/misc/Makefile
+@@ -40,6 +40,7 @@ obj-y				+= cb710/
+ obj-$(CONFIG_VMWARE_BALLOON)	+= vmw_balloon.o
+ obj-$(CONFIG_ARM_CHARLCD)	+= arm-charlcd.o
+ obj-$(CONFIG_PCH_PHUB)		+= pch_phub.o
++obj-y				+= sta2x11_msp/
+ obj-y				+= ti-st/
+ obj-$(CONFIG_AB8500_PWM)	+= ab8500-pwm.o
+ obj-$(CONFIG_STA2X11_PCI_MUX)   += sta2x11_mux.o
+diff --git a/drivers/misc/sta2x11_msp/Kconfig b/drivers/misc/sta2x11_msp/Kconfig
+new file mode 100644
+index 0000000..26d6983
+--- /dev/null
++++ b/drivers/misc/sta2x11_msp/Kconfig
+@@ -0,0 +1,20 @@
++config STA2X11_MSP
++	tristate "STA2x11 Multichannel Serial Port"
++	depends on STA2X11 && PCI_PL08X
++	help
++	  The STMicroelectronics ConneXt (STA2x11) Multichannel
++	  Serial Ports (MSP) driver. 6 ports with full duplex
++	  communication are supported.
++	  Direct interface to:
++	  - industry-standard codecs and serially connected A/D and D/A devices
++	  - I2S compliant devices
++	  - SPI compliant devices
++	  Support for Direct Memory Access (DMA)
++
++config STA2X11_MSP_TEST
++	tristate "STA2x11 Multichannel Serial Port Tests"
++	depends on STA2X11_MSP
++	help
++	  The STMicroelectronics ConneXt (STA2x11) Multichannel
++	  Serial Ports (MSP) driver test module.
++
+diff --git a/drivers/misc/sta2x11_msp/Makefile b/drivers/misc/sta2x11_msp/Makefile
+new file mode 100644
+index 0000000..8f11758
+--- /dev/null
++++ b/drivers/misc/sta2x11_msp/Makefile
+@@ -0,0 +1,5 @@
++obj-$(CONFIG_STA2X11_MSP) += sta2x11_msp.o
++obj-$(CONFIG_STA2X11_MSP_TEST) += sta2x11_msp_test.o
++
++sta2x11_msp-objs = sta2x11_msp_debugfs.o sta2x11_msp_pci.o sta2x11_msp_core.o
++
+diff --git a/drivers/misc/sta2x11_msp/sta2x11_msp_core.c b/drivers/misc/sta2x11_msp/sta2x11_msp_core.c
+new file mode 100644
+index 0000000..df3830e
+--- /dev/null
++++ b/drivers/misc/sta2x11_msp/sta2x11_msp_core.c
+@@ -0,0 +1,1206 @@
++/*
++* linux/drivers/misc/sta2x11_msp/sta2x11_msp_core.c
++*
++* Driver for ST-micro sta2x11 Mulitchannel Serial Port.
++*
++* This file contains the core driver which should be bus agnostic.
++*
++* Copyright (c) 2010-2011 Wind River Systems, Inc.
++* Copyright (c) 2010-2011 STMicroelectronics
++*
++* 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.
++*
++* 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, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
++*
++*/
++
++#include <linux/slab.h>
++#include <linux/module.h>
++#include <linux/io.h>
++#include <linux/ctype.h>
++#include <linux/interrupt.h>
++#include <linux/device.h>
++
++#include <linux/atomic.h>
++
++#include "sta2x11_msp_core.h"
++#include "sta2x11_msp_debugfs.h"
++
++#include <linux/dmaengine.h>
++#include <linux/dma-mapping.h>
++#include <linux/scatterlist.h>
++#include <linux/completion.h>
++#include <linux/delay.h>
++
++#include <linux/string.h>
++#include <linux/timer.h>
++#include <linux/workqueue.h>
++
++
++#include <linux/amba/pl08x.h>
++
++#define FIFO_DEPTH 8
++
++/* TODO:
++ *
++ * Setting fifo type is only supported for i2s master/slave currently.
++ * all others are default 8 bits.
++ *
++ * Configure master/slave on same channel not supported. (TDM broken)
++ *
++ */
++
++/* Deals with DMA configuration */
++struct msp_dma_config {
++	char rx_chan[16];
++	char tx_chan[16];
++	u32 fifo_reg;
++} msp_dma_config[] = {
++	{ /* MSP0 */
++		.tx_chan = "msp_tx0",
++		.rx_chan = "msp_rx0",
++		.fifo_reg = 0x58005000 + 0x00,
++	},
++	{ /* MSP1 */
++		.tx_chan = "msp_tx1",
++		.rx_chan = "msp_rx1",
++		.fifo_reg = 0x58006000 + 0x00,
++	},
++	{ /* MSP2 */
++		.rx_chan = "msp_rx2",
++		.tx_chan = "msp_tx2",
++		.fifo_reg = 0x58007000 + 0x00,
++	},
++	{ /* MSP3 */
++		.rx_chan = "msp_rx3",
++		.tx_chan = "msp_tx3",
++		.fifo_reg = 0x58008000 + 0x00,
++	},
++	{ /* MSP4 */
++		.tx_chan = "msp_tx4",
++		.rx_chan = "msp_rx4",
++		.fifo_reg = 0x58009000 + 0x00,
++	},
++	{ /* MSP5 */
++		.tx_chan = "msp_tx5",
++		.rx_chan = "msp_rx5",
++		.fifo_reg = 0x5800A000 + 0x00,
++	}
++};
++
++/* This struct is used to pass the "user" callback info
++ * from the dma completion handler down to a state
++ * where the user callback can do a new msp_read().
++ * (With DMA it is not possible to schedule new transfers
(7234 more lines skipped)

++++++ linux-2.6.37-connext-0013-fm-radio.patch (new)
--- linux-2.6.37-connext-0013-fm-radio.patch
+++ linux-2.6.37-connext-0013-fm-radio.patch
+From de0f1b90fc4119c3705b418c3849d5a39d353438 Mon Sep 17 00:00:00 2001
+From: Anders Wallin <anders.wallin at windriver.com>
+Date: Tue, 8 Mar 2011 17:34:36 +0200
+Subject: [PATCH 13/28] linux-2.6.37-connext-0013-fm-radio.patch
+
+---
+ drivers/media/radio/Kconfig        |    8 +
+ drivers/media/radio/Makefile       |    3 +
+ drivers/media/radio/tda7706_core.c | 1211 ++++++++++++++++++++++++++++++++++++
+ drivers/media/radio/tda7706_i2c.c  |  371 +++++++++++
+ drivers/media/radio/tda7706_i2c.h  |   57 ++
+ sound/drivers/Kconfig              |   12 +
+ sound/drivers/Makefile             |    2 +
+ sound/drivers/sta2x11i2s.c         |  528 ++++++++++++++++
+ 8 files changed, 2192 insertions(+), 0 deletions(-)
+ create mode 100644 drivers/media/radio/tda7706_core.c
+ create mode 100644 drivers/media/radio/tda7706_i2c.c
+ create mode 100644 drivers/media/radio/tda7706_i2c.h
+ create mode 100644 sound/drivers/sta2x11i2s.c
+
+diff --git a/drivers/media/radio/Kconfig b/drivers/media/radio/Kconfig
+index 83567b8..747e641 100644
+--- a/drivers/media/radio/Kconfig
++++ b/drivers/media/radio/Kconfig
+@@ -398,6 +398,14 @@ config USB_MR800
+ 	  To compile this driver as a module, choose M here: the
+ 	  module will be called radio-mr800.
+ 
++config RADIO_TDA7706
++	tristate "Enable the TDA7706 radio driver"
++	depends on I2C && VIDEO_V4L2
++	---help---
++	  Say Y here if you want to use the TDA7706 Radio
++	  To compile this driver as a module, choose M here: the
++	  module will be called tda7706.
++
+ config RADIO_TEA5764
+ 	tristate "TEA5764 I2C FM radio support"
+ 	depends on I2C && VIDEO_V4L2
+diff --git a/drivers/media/radio/Makefile b/drivers/media/radio/Makefile
+index f615583..47d6871 100644
+--- a/drivers/media/radio/Makefile
++++ b/drivers/media/radio/Makefile
+@@ -2,6 +2,9 @@
+ # Makefile for the kernel character device drivers.
+ #
+ 
++tda7706-objs = tda7706_core.o tda7706_i2c.o
++
++obj-$(CONFIG_RADIO_TDA7706) += tda7706.o
+ obj-$(CONFIG_RADIO_AZTECH) += radio-aztech.o
+ obj-$(CONFIG_RADIO_RTRACK2) += radio-rtrack2.o
+ obj-$(CONFIG_RADIO_SF16FMI) += radio-sf16fmi.o
+diff --git a/drivers/media/radio/tda7706_core.c b/drivers/media/radio/tda7706_core.c
+new file mode 100644
+index 0000000..f4b830d
+--- /dev/null
++++ b/drivers/media/radio/tda7706_core.c
+@@ -0,0 +1,1211 @@
++/*
++ *  Copyright (c) 2010-2011 by Wind River
++ *
++ *   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.
++ *
++ *   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, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
++ *
++ */
++#define VERBOSE_DEBUG 0
++
++#include <linux/kernel.h>
++#include <linux/module.h>
++#include <linux/init.h>
++#include <linux/videodev2.h>
++#include <linux/i2c.h>
++#include <media/v4l2-common.h>
++#include <media/v4l2-ioctl.h>
++#include <media/v4l2-device.h>
++#include <media/v4l2-chip-ident.h>
++
++#include <linux/version.h>
++#include <linux/firmware.h>
++
++#include <linux/gpio.h>
++
++#include "tda7706_i2c.h"
++
++#define DRV_VERSION "0.2.1"
++#define DRV_NAME    "tda7706"
++#define FW_NAME     "TDA7706_OM.txt"
++
++#define TDA7706_RST_PIN  96
++#define STA680_RST_PIN   98
++#define FW_TIMEOUT_MS    20
++
++/* Definitions of Firmware commands and their respective delays
++ */
++#define T_mute          0xad
++#define T_tune          0x29
++#define T_tune_adel     0x32
++#define T_unmute        0xb6
++#define T_unfreeze      0x32
++#define T_aftest        0x48
++#define T_adel          0x09
++
++
++/* FIXME: T_AlgWait not in documentation, but only used by
++ * FW_START_ALIGNMENT. And we wait for start alignment by
++ * polling TDSR_BUSY...
++ */
++#define T_AlgWait             100
++
++
++#define FW_READ_DMA          0x00
++#define T_READ_DMA              1
++
++#define FW_WRITE_DMA         0x03
++#define T_WRITE_DMA             1
++
++#define FW_AF_START          0x0d /* p1 -freq [p2 injection side] */
++#define T_AF_START_1ST      (11 + T_mute + T_tune_adel)
++#define T_AF_START_NEXT     (10 + T_tune_adel)
++
++#define FW_AF_MEASURE        0x0e /* no params */
++#define T_AF_MEASURE            4
++
++#define FW_AF_CHECK          0x07  /* p1 - freq [p2 injection side] */
++#define T_AF_CHECK          (28 + T_mute + T_tune_adel + T_aftest\
++			     + T_adel + T_tune + T_unmute + T_unfreeze)
++
++#define FW_AF_END            0x0f /* p1 - freq */
++#define T_AF_END           (15 + T_tune_adel + T_unmute + T_unfreeze)
++
++#define FW_AF_READQUAL       0x13 /* no params */
++#define T_AF_READQUAL           1
++
++#define FW_WRITE_DSP_MEM     0x1f
++#define T_WRITE_DSP_MEM         1
++
++#define FW_START_ALIGNMENT   0x0c
++#define T_START_ALIGNMENT  (9 + T_mute + 35*(3 + T_tune) +		\
++			    5*(2 + T_tune_adel + 15*(3 + T_AlgWait))	\
++			    + T_tune_adel + T_unmute)
++
++#define FW_READ_TDSR         0x11
++#define T_READ_TDSR             1
++
++#define FW_SET_FREQUENCY     0x08 /* p1 - freq [p2 injection side] */
++#define T_SET_FREQUENCY_FM      6
++#define T_SET_FREQUENCY_AM     10
++
++#define FW_SET_TUNER         0x09 /* p1 - FE subaddress,
++				   * p2 - FEx value [p3 FEx+1 value,...]
++				   */
++#define T_SET_TUNER             1
++
++#define FW_READ_TREG         0x12 /* p1 -1 FE subaddress, p2 -#regs to read,
++				   * - result is #regs to read long
++				   */
++#define T_READ_TREG             1
++
++#define FW_SET_IBOC_BLENDER  0x06 /* p1 -blending mode [ p2 p3 optional] */
++#define T_SET_IBOC_BLENDER      1
++
++#define FW_SET_DISS          0x1a /* p1 -blending mode [ p2 p3 optional] */
++#define T_SET_DISS           4560 /* FIXME: not properly documented.
++				   * But there should be
++				   * a 100ms delay between the 2 calls
++				   * needed to change frequency. Skipping
++				   * the 100ms delay between the commands
++				   * and using this value as delay
++				   * before reading the result seems ok.
++				   */
++
++#define FW_SET_THRESHOLDS    0x14 /* p1 - seek time (audio clocks)
++				   * p2 - field strength threshold
++				   * p3-p6 optional (more quality thresholds)
++				   */
++#define T_SET_THRESHOLDS        1
++
++#define FW_START_AUTO_SEEK   0x16 /* p1 - step in KHz,
++				   * p2 - exit status 0-muted - 1-unmuted
++				   */
++#define T_START_AUTO_SEEK       1 /* We poll for seek complete */
++
++#define FW_END_SEEK          0x17 /* p1 - action
++				   *   0 - stop keep muted
++				   *   1 - stop and unmute
++				   *   2 - continue
++				   */
(2092 more lines skipped)

++++++ linux-2.6.37-connext-0014-usb-otg.patch (new)
--- linux-2.6.37-connext-0014-usb-otg.patch
+++ linux-2.6.37-connext-0014-usb-otg.patch
+From 7ed385052d065f964880c1d88cbe1e2f92e59a58 Mon Sep 17 00:00:00 2001
+From: Anders Wallin <anders.wallin at windriver.com>
+Date: Tue, 8 Mar 2011 17:34:37 +0200
+Subject: [PATCH 14/28] linux-2.6.37-connext-0014-usb-otg.patch
+
+---
+ drivers/usb/Kconfig                        |    2 +
+ drivers/usb/Makefile                       |    1 +
+ drivers/usb/sta2x11_otg/Kconfig            |    6 +
+ drivers/usb/sta2x11_otg/Makefile           |   19 +
+ drivers/usb/sta2x11_otg/sta2x11_otg.h      |  245 +++
+ drivers/usb/sta2x11_otg/sta2x11_otg_hcd.c  | 2712 ++++++++++++++++++++++++++++
+ drivers/usb/sta2x11_otg/sta2x11_otg_main.c |  318 ++++
+ 7 files changed, 3303 insertions(+), 0 deletions(-)
+ create mode 100644 drivers/usb/sta2x11_otg/Kconfig
+ create mode 100644 drivers/usb/sta2x11_otg/Makefile
+ create mode 100644 drivers/usb/sta2x11_otg/sta2x11_otg.h
+ create mode 100644 drivers/usb/sta2x11_otg/sta2x11_otg_hcd.c
+ create mode 100644 drivers/usb/sta2x11_otg/sta2x11_otg_main.c
+
+diff --git a/drivers/usb/Kconfig b/drivers/usb/Kconfig
+index 67eb377..665c860 100644
+--- a/drivers/usb/Kconfig
++++ b/drivers/usb/Kconfig
+@@ -113,6 +113,8 @@ source "drivers/usb/wusbcore/Kconfig"
+ 
+ source "drivers/usb/host/Kconfig"
+ 
++source "drivers/usb/sta2x11_otg/Kconfig"
++
+ source "drivers/usb/musb/Kconfig"
+ 
+ source "drivers/usb/class/Kconfig"
+diff --git a/drivers/usb/Makefile b/drivers/usb/Makefile
+index 239f050..53bdfee 100644
+--- a/drivers/usb/Makefile
++++ b/drivers/usb/Makefile
+@@ -22,6 +22,7 @@ obj-$(CONFIG_USB_R8A66597_HCD)	+= host/
+ obj-$(CONFIG_USB_HWA_HCD)	+= host/
+ obj-$(CONFIG_USB_ISP1760_HCD)	+= host/
+ obj-$(CONFIG_USB_IMX21_HCD)	+= host/
++obj-$(CONFIG_USB_STA2X11_OTG)	+= sta2x11_otg/
+ 
+ obj-$(CONFIG_USB_C67X00_HCD)	+= c67x00/
+ 
+diff --git a/drivers/usb/sta2x11_otg/Kconfig b/drivers/usb/sta2x11_otg/Kconfig
+new file mode 100644
+index 0000000..9ece0b6
+--- /dev/null
++++ b/drivers/usb/sta2x11_otg/Kconfig
+@@ -0,0 +1,6 @@
++config USB_STA2X11_OTG
++	tristate "STA2X11 OTG controller support"
++	depends on USB && PCI
++	select USB_OTG_UTILS
++	default m
++
+diff --git a/drivers/usb/sta2x11_otg/Makefile b/drivers/usb/sta2x11_otg/Makefile
+new file mode 100644
+index 0000000..75172d4
+--- /dev/null
++++ b/drivers/usb/sta2x11_otg/Makefile
+@@ -0,0 +1,19 @@
++ifneq ($(KERNELRELEASE),)
++obj-$(CONFIG_USB_STA2X11_OTG) += sta2x11_otg.o
++obj-$(CONFIG_USB_STA2X11_OTG) += sta2x11_otg_hcd.o
++sta2x11_otg-objs+=sta2x11_otg_main.o
++else
++obj-m += sta2x11_otg.o
++obj-m += sta2x11_otg_hcd.o
++sta2x11_otg-objs+=sta2x11_otg_main.o
++
++KDIR:=/usr/src/stm/gerrit/linux-2.6/
++
++PWD := $(shell pwd)
++
++
++default:
++	$(MAKE) -C $(KDIR) M=$(PWD) modules CONFIG_USB_STA2X11_OTG=m
++clean:
++	$(MAKE) -C $(KDIR) M=$(PWD) clean
++endif
+diff --git a/drivers/usb/sta2x11_otg/sta2x11_otg.h b/drivers/usb/sta2x11_otg/sta2x11_otg.h
+new file mode 100644
+index 0000000..d6505da
+--- /dev/null
++++ b/drivers/usb/sta2x11_otg/sta2x11_otg.h
+@@ -0,0 +1,245 @@
++/*
++ * Copyright (C) 2010-2011 Wind River Systems, Inc.
++ *
++ * 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.
++ *
++ * 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, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
++ *
++ */
++
++#ifndef __STA2X11_OTG_H__
++#define __STA2X11_OTG_H__
++#include <linux/usb/otg.h>
++#include <linux/pci.h>
++
++/*Multibit register field access*/
++#define FGET(value, field) (((value)&(field##_M))>>(field##_S))
++#define FSET(value, field) (((value)<<(field##_S))&(field##_M))
++
++/*Register offsets*/
++#define GOTGCTL		0x00000000
++#define GOTGINT		0x00000004
++#define GAHBCFG		0x00000008
++#define GUSBCFG		0x0000000C
++#define GRSTCTL		0x00000010
++#define GINTSTS		0x00000014
++#define GINTMSK		0x00000018
++#define GRXSTSR		0x0000001C
++#define GRXSTSP		0x00000020
++#define GRXFSIZ		0x00000024
++#define GNPTXFSIZ	0x00000028
++#define GNPTXSTS	0x0000002C
++
++#define GHWCFG1		0x00000044
++#define GHWCFG2		0x00000048
++#define GHWCFG3		0x0000004C
++#define GHWCFG4		0x00000050
++
++#define HPTXFSIZ	0x00000100
++
++#define HCFG		0x00000400
++#define HFNUM		0x00000408
++#define HPRT		0x00000440
++#define HAINT		0x00000414
++#define HAINTMSK	0x00000418
++
++#define HCCHAR(i)	(0x00000500+0x20*i)
++#define HCSPLT(i)	(0x00000504+0x20*i)
++#define HCINT(i)	(0x00000508+0x20*i)
++#define HCINTMSK(i)	(0x0000050C+0x20*i)
++#define HCTSIZ(i)	(0x00000510+0x20*i)
++
++#define PCGCCTL		0x00000E00
++/*Register fields*/
++#define GOTGCTL_BSESVLD		0x00080000
++#define GOTGCTL_ASESVLD		0x00040000
++#define GOTGCTL_DBNCTIME	0x00020000
++#define GOTGCTL_CONIDSTS	0x00010000
++#define GOTGCTL_DEVHNPEN	0x00000800
++#define GOTGCTL_HSTSETHNPEN	0x00000400
++#define GOTGCTL_HNPREQ		0x00000200
++#define GOTGCTL_HSTNEGSCS	0x00000100
++#define GOTGCTL_SESREQ		0x00000002
++#define GOTGCTL_SESREQSCS	0x00000001
++
++#define GAHBCFG_GLBLINTRMSK	0x00000001
++
++#define GUSBCFG_FORCEDEVMODE	0x40000000
++#define GUSBCFG_FORCEHSTMODE	0x20000000
++
++#define GRSTCTL_AHBIDLE		0x80000000
++#define GRSTCTL_DMAREQ		0x40000000
++#define GRSTCTL_TXFNUM_M	0x000007C0
++#define GRSTCTL_TXFNUM_S	6
++#define GRSTCTL_TXFFLSH		0x00000020
++#define GRSTCTL_RXFFLSH		0x00000010
++#define GRSTCTL_INTKNQFLSH	0x00000008
++#define GRSTCTL_FRMCNTRST	0x00000004
++#define GRSTCTL_HSFTRST		0x00000002
++#define GRSTCTL_CSFTRST		0x00000001
++
++#define GINT_WKUPINT		0x80000000
++#define GINT_SESSREQINT		0x40000000
++#define GINT_DISCONNINT		0x20000000
++#define GINT_CONIDSTSCHNG	0x10000000
++#define GINT_LPMINT		0x08000000
++#define GINT_PTXFEMP		0x04000000
++#define GINT_HCHINT		0x02000000
++#define GINT_PRTINT		0x01000000
++#define GINT_RESETDET		0x00800000
++#define GINT_FETSUSP		0x00400000
++#define GINT_INCOMPLP		0x00200000
++#define GINT_INCOMPLISOOUT	GINT_INCOMPLP
++#define GINT_INCOMPLISOIN	0x00100000
++#define GINT_OEPINT		0x00080000
++#define GINT_IEPINT		0x00040000
++#define GINT_EPMIS		0x00020000
++#define GINT_EOPF		0x00008000
++#define GINT_ISOOUTDROP		0x00004000
++#define GINT_ENUMDONE		0x00002000
++#define GINT_USBRST		0x00001000
++#define GINT_USSUSP		0x00000800
(3180 more lines skipped)

++++++ linux-2.6.37-connext-0015-common-cut1.patch (new)
--- linux-2.6.37-connext-0015-common-cut1.patch
+++ linux-2.6.37-connext-0015-common-cut1.patch
+From 601c1fe11796c0dda27d972a31756572413a81b4 Mon Sep 17 00:00:00 2001
+From: Anders Wallin <anders.wallin at windriver.com>
+Date: Tue, 8 Mar 2011 17:34:37 +0200
+Subject: [PATCH 15/28] linux-2.6.37-connext-0015-common-cut1.patch
+
+---
+ arch/x86/configs/sta2x11_defconfig | 3055 ++++++++++++++++++++++++++++++++++++
+ 1 files changed, 3055 insertions(+), 0 deletions(-)
+ create mode 100644 arch/x86/configs/sta2x11_defconfig
+
+diff --git a/arch/x86/configs/sta2x11_defconfig b/arch/x86/configs/sta2x11_defconfig
+new file mode 100644
+index 0000000..7c058a3
+--- /dev/null
++++ b/arch/x86/configs/sta2x11_defconfig
+@@ -0,0 +1,3055 @@
++#
++# Automatically generated make config: don't edit
++# Linux/x86 2.6.37 Kernel Configuration
++# Fri Feb 11 10:50:52 2011
++#
++# CONFIG_64BIT is not set
++CONFIG_X86_32=y
++# CONFIG_X86_64 is not set
++CONFIG_X86=y
++CONFIG_INSTRUCTION_DECODER=y
++CONFIG_OUTPUT_FORMAT="elf32-i386"
++CONFIG_ARCH_DEFCONFIG="arch/x86/configs/i386_defconfig"
++CONFIG_GENERIC_CMOS_UPDATE=y
++CONFIG_CLOCKSOURCE_WATCHDOG=y
++CONFIG_GENERIC_CLOCKEVENTS=y
++CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
++CONFIG_LOCKDEP_SUPPORT=y
++CONFIG_STACKTRACE_SUPPORT=y
++CONFIG_HAVE_LATENCYTOP_SUPPORT=y
++CONFIG_MMU=y
++CONFIG_ZONE_DMA=y
++# CONFIG_NEED_DMA_MAP_STATE is not set
++CONFIG_NEED_SG_DMA_LENGTH=y
++CONFIG_GENERIC_ISA_DMA=y
++CONFIG_GENERIC_IOMAP=y
++CONFIG_GENERIC_BUG=y
++CONFIG_GENERIC_HWEIGHT=y
++CONFIG_GENERIC_GPIO=y
++CONFIG_ARCH_MAY_HAVE_PC_FDC=y
++# CONFIG_RWSEM_GENERIC_SPINLOCK is not set
++CONFIG_RWSEM_XCHGADD_ALGORITHM=y
++CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
++CONFIG_GENERIC_CALIBRATE_DELAY=y
++# CONFIG_GENERIC_TIME_VSYSCALL is not set
++CONFIG_ARCH_HAS_CPU_RELAX=y
++CONFIG_ARCH_HAS_DEFAULT_IDLE=y
++CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y
++CONFIG_HAVE_SETUP_PER_CPU_AREA=y
++CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y
++CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK=y
++# CONFIG_HAVE_CPUMASK_OF_CPU_MAP is not set
++CONFIG_ARCH_HIBERNATION_POSSIBLE=y
++CONFIG_ARCH_SUSPEND_POSSIBLE=y
++# CONFIG_ZONE_DMA32 is not set
++CONFIG_ARCH_POPULATES_NODE_MAP=y
++# CONFIG_AUDIT_ARCH is not set
++CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y
++CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
++CONFIG_USE_GENERIC_SMP_HELPERS=y
++CONFIG_X86_32_SMP=y
++CONFIG_X86_HT=y
++CONFIG_X86_TRAMPOLINE=y
++CONFIG_X86_32_LAZY_GS=y
++CONFIG_ARCH_HWEIGHT_CFLAGS="-fcall-saved-ecx -fcall-saved-edx"
++CONFIG_KTIME_SCALAR=y
++CONFIG_ARCH_CPU_PROBE_RELEASE=y
++CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
++CONFIG_CONSTRUCTORS=y
++CONFIG_HAVE_IRQ_WORK=y
++CONFIG_IRQ_WORK=y
++
++#
++# General setup
++#
++CONFIG_EXPERIMENTAL=y
++CONFIG_LOCK_KERNEL=y
++CONFIG_INIT_ENV_ARG_LIMIT=32
++CONFIG_CROSS_COMPILE=""
++CONFIG_LOCALVERSION=""
++# CONFIG_LOCALVERSION_AUTO is not set
++CONFIG_HAVE_KERNEL_GZIP=y
++CONFIG_HAVE_KERNEL_BZIP2=y
++CONFIG_HAVE_KERNEL_LZMA=y
++CONFIG_HAVE_KERNEL_LZO=y
++CONFIG_KERNEL_GZIP=y
++# CONFIG_KERNEL_BZIP2 is not set
++# CONFIG_KERNEL_LZMA is not set
++# CONFIG_KERNEL_LZO is not set
++CONFIG_SWAP=y
++CONFIG_SYSVIPC=y
++CONFIG_SYSVIPC_SYSCTL=y
++CONFIG_POSIX_MQUEUE=y
++CONFIG_POSIX_MQUEUE_SYSCTL=y
++CONFIG_BSD_PROCESS_ACCT=y
++CONFIG_BSD_PROCESS_ACCT_V3=y
++# CONFIG_TASKSTATS is not set
++# CONFIG_AUDIT is not set
++CONFIG_HAVE_GENERIC_HARDIRQS=y
++
++#
++# IRQ subsystem
++#
++CONFIG_GENERIC_HARDIRQS=y
++CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
++# CONFIG_GENERIC_HARDIRQS_NO_DEPRECATED is not set
++CONFIG_HAVE_SPARSE_IRQ=y
++CONFIG_GENERIC_IRQ_PROBE=y
++CONFIG_GENERIC_PENDING_IRQ=y
++# CONFIG_AUTO_IRQ_AFFINITY is not set
++# CONFIG_IRQ_PER_CPU is not set
++# CONFIG_HARDIRQS_SW_RESEND is not set
++# CONFIG_SPARSE_IRQ is not set
++
++#
++# RCU Subsystem
++#
++CONFIG_TREE_PREEMPT_RCU=y
++CONFIG_PREEMPT_RCU=y
++# CONFIG_RCU_TRACE is not set
++CONFIG_RCU_FANOUT=32
++# CONFIG_RCU_FANOUT_EXACT is not set
++# CONFIG_TREE_RCU_TRACE is not set
++# CONFIG_IKCONFIG is not set
++CONFIG_LOG_BUF_SHIFT=17
++CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y
++CONFIG_CGROUPS=y
++# CONFIG_CGROUP_DEBUG is not set
++CONFIG_CGROUP_NS=y
++CONFIG_CGROUP_FREEZER=y
++CONFIG_CGROUP_DEVICE=y
++CONFIG_CPUSETS=y
++CONFIG_PROC_PID_CPUSET=y
++CONFIG_CGROUP_CPUACCT=y
++CONFIG_RESOURCE_COUNTERS=y
++CONFIG_CGROUP_MEM_RES_CTLR=y
++# CONFIG_CGROUP_MEM_RES_CTLR_SWAP is not set
++CONFIG_CGROUP_SCHED=y
++CONFIG_FAIR_GROUP_SCHED=y
++# CONFIG_RT_GROUP_SCHED is not set
++# CONFIG_BLK_CGROUP is not set
++CONFIG_NAMESPACES=y
++# CONFIG_UTS_NS is not set
++# CONFIG_IPC_NS is not set
++# CONFIG_USER_NS is not set
++# CONFIG_PID_NS is not set
++# CONFIG_NET_NS is not set
++CONFIG_MM_OWNER=y
++# CONFIG_SYSFS_DEPRECATED is not set
++CONFIG_RELAY=y
++CONFIG_BLK_DEV_INITRD=y
++CONFIG_INITRAMFS_SOURCE=""
++CONFIG_RD_GZIP=y
++CONFIG_RD_BZIP2=y
++CONFIG_RD_LZMA=y
++CONFIG_RD_LZO=y
++CONFIG_CC_OPTIMIZE_FOR_SIZE=y
++CONFIG_SYSCTL=y
++CONFIG_ANON_INODES=y
++# CONFIG_EMBEDDED is not set
++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_PCSPKR_PLATFORM=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_HAVE_PERF_EVENTS=y
++
++#
++# Kernel Performance Events And Counters
++#
++CONFIG_PERF_EVENTS=y
++CONFIG_PERF_COUNTERS=y
++# CONFIG_DEBUG_PERF_USE_VMALLOC is not set
++CONFIG_VM_EVENT_COUNTERS=y
++CONFIG_PCI_QUIRKS=y
++# CONFIG_COMPAT_BRK is not set
++CONFIG_SLAB=y
++# CONFIG_SLUB is not set
++CONFIG_PROFILING=y
++CONFIG_TRACEPOINTS=y
(2876 more lines skipped)

++++++ linux-2.6.37-connext-0016-pcie-amba-cut1.patch (new)
--- linux-2.6.37-connext-0016-pcie-amba-cut1.patch
+++ linux-2.6.37-connext-0016-pcie-amba-cut1.patch
+From fee00bd4a5dda4d4d0331761ec62135cca85610b Mon Sep 17 00:00:00 2001
+From: Anders Wallin <anders.wallin at windriver.com>
+Date: Tue, 8 Mar 2011 17:34:38 +0200
+Subject: [PATCH 16/28] linux-2.6.37-connext-0016-pcie-amba-cut1.patch
+
+---
+ arch/x86/Kconfig             |   15 +++++++++++++++
+ arch/x86/pci/sta2x11-fixup.c |   42 ++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 57 insertions(+), 0 deletions(-)
+
+diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
+index 6d55190..850bbff 100644
+--- a/arch/x86/Kconfig
++++ b/arch/x86/Kconfig
+@@ -2065,6 +2065,21 @@ config STA2X11
+        ---help---
+          Add support for the STA2X11 Companion chip
+ 
++choice
++        prompt "STA2X11 Hardware version"
++        default STA2X11_CUT1
++        ---help---
++          STMicro ConneXt/STA2x11 hardware version
++
++config STA2X11_CUT1
++        bool "CUT1"
++
++config STA2X11_CUT2
++        bool "CUT2"
++
++endchoice
++
++
+ endif # X86_32
+ 
+ config AMD_NB
+diff --git a/arch/x86/pci/sta2x11-fixup.c b/arch/x86/pci/sta2x11-fixup.c
+index 997ceee..714fcc6 100644
+--- a/arch/x86/pci/sta2x11-fixup.c
++++ b/arch/x86/pci/sta2x11-fixup.c
+@@ -438,3 +438,45 @@ DECLARE_PCI_FIXUP_RESUME(PCI_VENDOR_ID_STMICRO, PCI_DEVICE_ID_STMICRO_VIP,
+ 			 resume_mapping);
+ 
+ #endif
++
++#ifdef CONFIG_STA2X11_CUT1
++/* Code to enable master on all sta2x11 devices. A bug in the cut forces
++ * us to enable master on all devices for it to work on any of devices.
++ */
++static void enable_master(struct pci_dev *pdev)
++{
++	dev_info(&pdev->dev, "STA2X11: Enable master for device %04x:%04x\n",
++		 pdev->vendor, pdev->device);
++	pci_set_master(pdev);
++}
++
++#ifdef CONFIG_PM
++DECLARE_PCI_FIXUP_RESUME(PCI_VENDOR_ID_STMICRO, PCI_ANY_ID, enable_master);
++#endif
++
++#if 0 /* don't work since it's called to early */
++DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_STMICRO, PCI_ANY_ID, enable_master);
++#else
++/* Code to enable master on all sta2x11 devices. A bug in the cut forces
++ * us to enable master on all devices for it to work on any of devices.
++ */
++static int __init enable_master_on_sta2x11(void)
++{
++	struct pci_dev *pdev = NULL;
++	for_each_pci_dev(pdev) {
++		if (pdev->vendor == PCI_VENDOR_ID_STMICRO) {
++			printk(KERN_INFO
++			       "sta2x11: Enable master for device %04x:%04x\n",
++			       pdev->vendor, pdev->device);
++			pci_set_master(pdev);
++		}
++
++	}
++	return 0;
++}
++late_initcall(enable_master_on_sta2x11);
++#endif
++
++#else
++#error faulty configuration
++#endif
+-- 
+1.7.1
+

++++++ linux-2.6.37-connext-0017-uart-cut1.patch (new)
--- linux-2.6.37-connext-0017-uart-cut1.patch
+++ linux-2.6.37-connext-0017-uart-cut1.patch
+From 7955d2b3a23f55894c70f87d3cd3f0989f993526 Mon Sep 17 00:00:00 2001
+From: Anders Wallin <anders.wallin at windriver.com>
+Date: Tue, 8 Mar 2011 17:34:38 +0200
+Subject: [PATCH 17/28] linux-2.6.37-connext-0017-uart-cut1.patch
+
+---
+ drivers/serial/pl011-pci.c |    4 ++++
+ 1 files changed, 4 insertions(+), 0 deletions(-)
+
+diff --git a/drivers/serial/pl011-pci.c b/drivers/serial/pl011-pci.c
+index 4d70b2f..f39a0fe 100644
+--- a/drivers/serial/pl011-pci.c
++++ b/drivers/serial/pl011-pci.c
+@@ -1107,7 +1107,9 @@ out_release:
+ 	pci_disable_msi(pdev);
+ 	pci_release_regions(pdev);
+ out_disable_device:
++#ifndef CONFIG_STA2X11_CUT1
+ 	pci_disable_device(pdev);
++#endif
+ out_free:
+ 	kfree(uap);
+ out:
+@@ -1134,7 +1136,9 @@ static void __devexit pci_pl011_remove(struct pci_dev *pdev)
+ 	iounmap(uap->port.membase);
+ 	pci_disable_msi(pdev);
+ 	pci_release_regions(pdev);
++#ifndef CONFIG_STA2X11_CUT1
+ 	pci_disable_device(pdev);
++#endif
+ 	kfree(uap);
+ }
+ 
+-- 
+1.7.1
+

++++++ linux-2.6.37-connext-0018-sata-cut1.patch (new)
--- linux-2.6.37-connext-0018-sata-cut1.patch
+++ linux-2.6.37-connext-0018-sata-cut1.patch
+From 304f23dd13d69870e6195f513fad4e62a0856c94 Mon Sep 17 00:00:00 2001
+From: Anders Wallin <anders.wallin at windriver.com>
+Date: Tue, 8 Mar 2011 17:34:39 +0200
+Subject: [PATCH 18/28] linux-2.6.37-connext-0018-sata-cut1.patch
+
+---
+ drivers/ata/ahci.c |   13 ++++++++++++-
+ 1 files changed, 12 insertions(+), 1 deletions(-)
+
+diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c
+index 3288263..6492b0f 100644
+--- a/drivers/ata/ahci.c
++++ b/drivers/ata/ahci.c
+@@ -50,9 +50,12 @@
+ 
+ #define DRV_NAME	"ahci"
+ #define DRV_VERSION	"3.0"
+-
+ enum {
++#ifdef CONFIG_STA2X11_CUT1
++	AHCI_PCI_BAR            = 0,
++#else
+ 	AHCI_PCI_BAR		= 5,
++#endif
+ };
+ 
+ enum board_ids {
+@@ -662,6 +665,14 @@ static int ahci_configure_dma_masks(struct pci_dev *pdev, int using_dac)
+ {
+ 	int rc;
+ 
++#ifdef CONFIG_STA2X11_CUT1
++/* If the dma mask is already set to something less then 32 bits,
++ * don't extend it
++ */
++	if (pdev->dma_mask < DMA_BIT_MASK(32))
++		return 0;
++#endif
++
+ 	if (using_dac &&
+ 	    !pci_set_dma_mask(pdev, DMA_BIT_MASK(64))) {
+ 		rc = pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(64));
+-- 
+1.7.1
+

++++++ linux-2.6.37-connext-0019-usb-cut1.patch (new)
--- linux-2.6.37-connext-0019-usb-cut1.patch
+++ linux-2.6.37-connext-0019-usb-cut1.patch
+From 56ce6692644d59233c52b36da97e647869918e11 Mon Sep 17 00:00:00 2001
+From: Anders Wallin <anders.wallin at windriver.com>
+Date: Tue, 8 Mar 2011 17:34:40 +0200
+Subject: [PATCH 19/28] linux-2.6.37-connext-0019-usb-cut1.patch
+
+---
+ drivers/usb/host/ehci-mem.c |    4 ++
+ drivers/usb/host/ehci-pci.c |   25 +++++++++++-
+ drivers/usb/host/ehci-q.c   |   93 +++++++++++++++++++++++++++++++++++++++++++
+ 3 files changed, 121 insertions(+), 1 deletions(-)
+
+diff --git a/drivers/usb/host/ehci-mem.c b/drivers/usb/host/ehci-mem.c
+index 12f70c3..f9ed968 100644
+--- a/drivers/usb/host/ehci-mem.c
++++ b/drivers/usb/host/ehci-mem.c
+@@ -51,7 +51,11 @@ static struct ehci_qtd *ehci_qtd_alloc (struct ehci_hcd *ehci, gfp_t flags)
+ 	struct ehci_qtd		*qtd;
+ 	dma_addr_t		dma;
+ 
++#ifdef CONFIG_STA2X11_CUT1
++	qtd = dma_pool_alloc(ehci->qtd_pool, flags|GFP_DMA, &dma);
++#else
+ 	qtd = dma_pool_alloc (ehci->qtd_pool, flags, &dma);
++#endif
+ 	if (qtd != NULL) {
+ 		ehci_qtd_init(ehci, qtd, dma);
+ 	}
+diff --git a/drivers/usb/host/ehci-pci.c b/drivers/usb/host/ehci-pci.c
+index 331ab20..9536a27 100644
+--- a/drivers/usb/host/ehci-pci.c
++++ b/drivers/usb/host/ehci-pci.c
+@@ -130,7 +130,27 @@ static int ehci_pci_setup(struct usb_hcd *hcd)
+ 			break;
+ 		}
+ 		break;
++
++#ifdef CONFIG_STA2X11_CUT1
++	case PCI_VENDOR_ID_STMICRO:
++		switch (pdev->device) {
++		case 0xcc00:
++		{
++			/* Set 8 bit access */
++			u32 __iomem *usbhost_strap1 =
++				(u32 __iomem *)((u8 *)ehci->caps + 0x300);
++			u32 reg;
++			reg = ehci_readl(ehci, usbhost_strap1);
++			ehci_writel(ehci, reg&0xfffffff7, usbhost_strap1);
++
++			break;
++		}
++		case 0xcc02:
++			return -EINVAL;
++			break;
++		}
+ 	}
++#endif
+ 
+ 	/* cache this readonly data; minimize chip reads */
+ 	ehci->hcs_params = ehci_readl(ehci, &ehci->caps->hcs_params);
+@@ -296,8 +316,11 @@ static int ehci_pci_setup(struct usb_hcd *hcd)
+ 	}
+ 
+ 	/* Serial Bus Release Number is at PCI 0x60 offset */
++#ifdef CONFIG_STA2X11_CUT1
++	ehci->sbrn = 0x20; /* STA2x11 does not have SBRN register */
++#else
+ 	pci_read_config_byte(pdev, 0x60, &ehci->sbrn);
+-
++#endif
+ 	/* Keep this around for a while just in case some EHCI
+ 	 * implementation uses legacy PCI PM support.  This test
+ 	 * can be removed on 17 Dec 2009 if the dev_warn() hasn't
+diff --git a/drivers/usb/host/ehci-q.c b/drivers/usb/host/ehci-q.c
+index 233c288..2589fbd 100644
+--- a/drivers/usb/host/ehci-q.c
++++ b/drivers/usb/host/ehci-q.c
+@@ -42,6 +42,12 @@
+ 
+ /* fill a qtd, returning how much of the buffer we were able to queue up */
+ 
++#ifdef CONFIG_STA2X11_CUT1
++static void dump_qtd(struct ehci_qtd *qtd);
++static void dump_ehciregs(const struct ehci_hcd *ehci);
++extern void dump_ehci(const struct ehci_hcd *ehci);
++#endif
++
+ static int
+ qtd_fill(struct ehci_hcd *ehci, struct ehci_qtd *qtd, dma_addr_t buf,
+ 		  size_t len, int token, int maxpacket)
+@@ -1011,6 +1017,93 @@ static void qh_link_async (struct ehci_hcd *ehci, struct ehci_qh *qh)
+ 	/* qtd completions reported later by interrupt */
+ }
+ 
++#ifdef CONFIG_STA2X11_CUT1
++static void dump_qtd(struct ehci_qtd *qtd)
++{
++	int i;
++	printk(KERN_DEBUG "  qtd@%p\n", qtd);
++	printk(KERN_DEBUG "    qtd->hw_next     = %#10x\n", qtd->hw_next);
++	printk(KERN_DEBUG "    qtd->hw_alt_next = %#10x\n", qtd->hw_alt_next);
++	printk(KERN_DEBUG "    qtd->token       = %#10x\n", qtd->hw_token);
++	for (i = 0; i < 5; i++)
++		printk(KERN_DEBUG "    qtd->hw_buf[%d] = %#10x\n", i,
++		       qtd->hw_buf[i]);
++	printk(KERN_DEBUG "    qtd->qtd_dma     = %#10x\n", (int)qtd->qtd_dma);
++	printk(KERN_DEBUG "    qtd->length      = %#10x\n", qtd->length);
++
++	if (qtd->length <= 32 && qtd->hw_buf[0] != 0) {
++		unsigned char *data =
++			phys_to_virt(qtd->hw_buf[0] - 0x70000000UL);
++		int i;
++		for (i = 0; i < qtd->length; i++) {
++			if ((i % 16) == 0 && i > 0) {
++				if (i > 0)
++					printk(KERN_DEBUG "\n");
++				printk(KERN_DEBUG "    DATA: %3d:", i);
++			}
++			printk(KERN_DEBUG "%02x ", data[i]);
++		}
++		printk("\n");
++	}
++
++}
++
++static void dump_qh(const struct ehci_qh *qh)
++{
++	int epnum = (qh->hw->hw_info1 >> 8) & 0x0f;
++	printk(KERN_DEBUG "qh@%p\n", qh);
++	printk(KERN_DEBUG "  hw_next     :%#10x\n", qh->hw->hw_next);
++	printk(KERN_DEBUG "  hw_info1    :%#10x\n", qh->hw->hw_info1);
++	printk(KERN_DEBUG "    epnum     :%#10x\n", epnum);
++	printk(KERN_DEBUG "  hw_info2    :%#10x\n", qh->hw->hw_info2);
++	printk(KERN_DEBUG "  hw_current  :%#10x\n", qh->hw->hw_current);
++}
++
++static void dump_ehciregs(const struct ehci_hcd *ehci)
++{
++	printk(KERN_DEBUG "command:    %#10x\n",
++	       ehci_readl(ehci, &ehci->regs->command));
++	printk(KERN_DEBUG "status:     %#10x\n",
++	       ehci_readl(ehci, &ehci->regs->status));
++	printk(KERN_DEBUG "int_en:     %#10x\n",
++	       ehci_readl(ehci, &ehci->regs->intr_enable));
++	printk(KERN_DEBUG "fr_idx:     %#10x\n",
++	       ehci_readl(ehci, &ehci->regs->frame_index));
++	printk(KERN_DEBUG "segment:    %#10x\n",
++	       ehci_readl(ehci, &ehci->regs->segment));
++	printk(KERN_DEBUG "frame_list: %#10x\n",
++	       ehci_readl(ehci, &ehci->regs->frame_list));
++	printk(KERN_DEBUG "async_next: %#10x\n",
++	       ehci_readl(ehci, &ehci->regs->async_next));
++	printk(KERN_DEBUG "conf_flag:  %#10x\n",
++	       ehci_readl(ehci, &ehci->regs->configured_flag));
++
++}
++
++void dump_ehci(const struct ehci_hcd *ehci)
++{
++	printk(KERN_DEBUG "EHCI DUMP\n");
++	printk(KERN_DEBUG "=============================================\n");
++	dump_ehciregs(ehci);
++	{
++		struct ehci_qh *qh = ehci->async;
++		qh = ehci->async->qh_next.qh;
++		while (qh != NULL) {
++			struct list_head *entry, *tmp;
++			dump_qh(qh);
++			list_for_each_safe(entry, tmp, &qh->qtd_list) {
++				struct ehci_qtd	*qtd =
++					list_entry(entry, struct ehci_qtd,
++						   qtd_list);
++				dump_qtd(qtd);
++			}
++			qh = qh->qh_next.qh;
++		} while (qh);
++	}
++	printk(KERN_DEBUG "=============================================\n");
++}
++#endif
++
+ /*-------------------------------------------------------------------------*/
+ 
+ /*
+-- 
+1.7.1
+

++++++ linux-2.6.37-connext-0020-eth-cut1.patch (new)
--- linux-2.6.37-connext-0020-eth-cut1.patch
+++ linux-2.6.37-connext-0020-eth-cut1.patch
+From c500f7f78623aba15d67029d4a74861bec5f804c Mon Sep 17 00:00:00 2001
+From: Anders Wallin <anders.wallin at windriver.com>
+Date: Tue, 8 Mar 2011 17:34:40 +0200
+Subject: [PATCH 20/28] linux-2.6.37-connext-0020-eth-cut1.patch
+
+---
+ drivers/net/stmmac/stmmac_main.c |   13 ++++++++++++-
+ 1 files changed, 12 insertions(+), 1 deletions(-)
+
+diff --git a/drivers/net/stmmac/stmmac_main.c b/drivers/net/stmmac/stmmac_main.c
+index 4c634bd..881eec1 100644
+--- a/drivers/net/stmmac/stmmac_main.c
++++ b/drivers/net/stmmac/stmmac_main.c
+@@ -2033,8 +2033,13 @@ out:
+ 	pci_release_regions(pdev);
+ 	pci_set_drvdata(pdev, NULL);
+ 	pci_disable_msi(pdev);
++#ifdef CONFIG_STA2X11_CUT1
++	/* pci_diable_device disables bus mastering which will
++	 * break all other Bus master on this EP
++	 */
++#else
+ 	pci_disable_device(pdev);
+-
++#endif
+ 	return ret;
+ }
+ 
+@@ -2065,7 +2070,13 @@ static void __devexit stmmac_pci_remove_one(struct pci_dev *pdev)
+ 	pci_release_regions(pdev);
+ 	pci_disable_msi(pdev);
+ 	pci_set_drvdata(pdev, NULL);
++#ifdef CONFIG_STA2X11_CUT1
++	/* pci_diable_device disables bus mastering which will
++	 * break all other Bus master on this EP
++	 */
++#else
+ 	pci_disable_device(pdev);
++#endif
+ 
+ }
+ 
+-- 
+1.7.1
+

++++++ linux-2.6.37-connext-0021-mmc-cut1.patch (new)
--- linux-2.6.37-connext-0021-mmc-cut1.patch
+++ linux-2.6.37-connext-0021-mmc-cut1.patch
+From c44a88dfa9788820b5baa7796e2f8dd99fc614b0 Mon Sep 17 00:00:00 2001
+From: Anders Wallin <anders.wallin at windriver.com>
+Date: Tue, 8 Mar 2011 17:34:41 +0200
+Subject: [PATCH 21/28] linux-2.6.37-connext-0021-mmc-cut1.patch
+
+---
+ drivers/mmc/host/mmci-pci.c |   23 +++++++++++++++++++++++
+ 1 files changed, 23 insertions(+), 0 deletions(-)
+
+diff --git a/drivers/mmc/host/mmci-pci.c b/drivers/mmc/host/mmci-pci.c
+index d802fc5..4042fd6 100644
+--- a/drivers/mmc/host/mmci-pci.c
++++ b/drivers/mmc/host/mmci-pci.c
+@@ -156,7 +156,11 @@ static struct mmci_config {
+ 		.cmd_pin = SDIO1_CMD,
+ 		.sctl_clk_mux_bit = (1 << 5)
+ 	}, {
++#ifdef CONFIG_STA2X11_CUT1
++		.enabled = false, /* Disabled due to missing interrupt*/
++#else
+ 		.enabled = true,
++#endif
+ 		.name = "SDIO2",
+ 		.chan_name = "sdio2",
+ 		.fifo_reg = SDIO2_PHYS_BASE + SDI_FIFO,
+@@ -1471,7 +1475,13 @@ static int mmci_pci_suspend(struct pci_dev *pdev, pm_message_t state)
+ 
+ 	pci_save_state(pdev);
+ 	pci_enable_wake(pdev, pci_choose_state(pdev, state), 0);
++#ifdef CONFIG_STA2X11_CUT1
++	/* pci_disable_device disables bus mastering which will
++	 * break all other Bus master on this EP
++	 */
++#else
+ 	pci_disable_device(pdev);
++#endif
+ 	pci_set_power_state(pdev, pci_choose_state(pdev, state));
+ 
+ 	return 0;
+@@ -1681,7 +1691,13 @@ free:
+ 
+ err:
+ 	dev_dbg(&pdev->dev, "err!");
++#ifdef CONFIG_STA2X11_CUT1
++	/* pci_disable_device disables bus mastering which will
++	 * break all other Bus master on this EP
++	 */
++#else
+ 	pci_disable_device(pdev);
++#endif
+ 	return ret;
+ }
+ 
+@@ -1726,7 +1742,14 @@ static void __devexit mmci_pci_remove(struct pci_dev *pdev)
+ 	}
+ 
+ 	pci_disable_msi(pdev);
++
++#ifdef CONFIG_STA2X11_CUT1
++	/* pci_disable_device disables bus mastering which will
++	 * break all other Bus master on this EP
++	 */
++#else
+ 	pci_disable_device(pdev);
++#endif
+ }
+ 
+ static struct pci_driver mmci_driver = {
+-- 
+1.7.1
+

++++++ linux-2.6.37-connext-0022-i2c-cut1.patch (new)
--- linux-2.6.37-connext-0022-i2c-cut1.patch
+++ linux-2.6.37-connext-0022-i2c-cut1.patch
+From 04cf006156b2871df9be3428c0fd33fe699acdf3 Mon Sep 17 00:00:00 2001
+From: Anders Wallin <anders.wallin at windriver.com>
+Date: Tue, 8 Mar 2011 17:34:41 +0200
+Subject: [PATCH 22/28] linux-2.6.37-connext-0022-i2c-cut1.patch
+
+---
+ drivers/i2c/busses/i2c-sta2x11_pci.c |   13 ++++++++++++-
+ 1 files changed, 12 insertions(+), 1 deletions(-)
+
+diff --git a/drivers/i2c/busses/i2c-sta2x11_pci.c b/drivers/i2c/busses/i2c-sta2x11_pci.c
+index 330cdba..3754da3 100644
+--- a/drivers/i2c/busses/i2c-sta2x11_pci.c
++++ b/drivers/i2c/busses/i2c-sta2x11_pci.c
+@@ -1494,7 +1494,13 @@ del_adap:
+ unmap:
+ 	pcim_iounmap(pdev, drv->virtbase);
+ disable_device:
++#ifdef CONFIG_STA2X11_CUT1
++	/* pci_diable_device disables bus mastering which will
++	 * break all other Bus master on this EP
++	 */
++#else
+ 	pci_disable_device(pdev);
++#endif
+ 
+ free_drv:
+ 	kfree(drv);
+@@ -1522,8 +1528,13 @@ static void __devexit remove(struct pci_dev *pdev)
+ 	init_hw(drv);
+ 
+ 	pcim_iounmap(pdev, drv->virtbase);
+-
++#ifdef CONFIG_STA2X11_CUT1
++	/* pci_diable_device disables bus mastering which will
++	 * break all other Bus master on this EP
++	 */
++#else
+ 	pci_disable_device(pdev);
++#endif
+ 	kfree(drv);
+ }
+ 
+-- 
+1.7.1
+

++++++ linux-2.6.37-connext-0023-can-cut1.patch (new)
--- linux-2.6.37-connext-0023-can-cut1.patch
+++ linux-2.6.37-connext-0023-can-cut1.patch
+From 1a5ac746891e7325ed990bfd6a57650c832ca6cc Mon Sep 17 00:00:00 2001
+From: Anders Wallin <anders.wallin at windriver.com>
+Date: Tue, 8 Mar 2011 17:34:42 +0200
+Subject: [PATCH 23/28] linux-2.6.37-connext-0023-can-cut1.patch
+
+---
+ drivers/net/can/sta2x11_can.c |   12 ++++++++++++
+ 1 files changed, 12 insertions(+), 0 deletions(-)
+
+diff --git a/drivers/net/can/sta2x11_can.c b/drivers/net/can/sta2x11_can.c
+index 21d452b..fcb6624 100644
+--- a/drivers/net/can/sta2x11_can.c
++++ b/drivers/net/can/sta2x11_can.c
+@@ -939,7 +939,13 @@ out_release_regions:
+ 	pci_disable_msi(pdev);
+ 	pci_release_regions(pdev);
+ out_disable_device:
++#ifdef CONFIG_STA2X11_CUT1
++	/* pci_diable_device disables bus mastering which will
++	 * break all other Bus master on this EP
++	 */
++#else
+ 	pci_disable_device(pdev);
++#endif
+ out:
+ 	return rc;
+ }
+@@ -960,7 +966,13 @@ static void __devexit sta2x11_pci_remove(struct pci_dev *pdev)
+ 
+ 	pci_disable_msi(pdev);
+ 	pci_release_regions(pdev);
++#ifdef CONFIG_STA2X11_CUT1
++	/* pci_diable_device disables bus mastering which will
++	 * break all other Bus master on this EP
++	 */
++#else
+ 	pci_disable_device(pdev);
++#endif
+ }
+ 
+ static struct pci_driver sta2x11_pci_driver = {
+-- 
+1.7.1
+

++++++ linux-2.6.37-connext-0024-mlb-cut1.patch (new)
--- linux-2.6.37-connext-0024-mlb-cut1.patch
+++ linux-2.6.37-connext-0024-mlb-cut1.patch
+From 0e0d91ae15031bc42b703ccab441f5502d166aad Mon Sep 17 00:00:00 2001
+From: Anders Wallin <anders.wallin at windriver.com>
+Date: Tue, 8 Mar 2011 17:34:43 +0200
+Subject: [PATCH 24/28] linux-2.6.37-connext-0024-mlb-cut1.patch
+
+---
+ drivers/net/most/sta2x11mlb.c |   13 +++++++++++++
+ 1 files changed, 13 insertions(+), 0 deletions(-)
+
+diff --git a/drivers/net/most/sta2x11mlb.c b/drivers/net/most/sta2x11mlb.c
+index efad92e..1ff8a51 100644
+--- a/drivers/net/most/sta2x11mlb.c
++++ b/drivers/net/most/sta2x11mlb.c
+@@ -1330,8 +1330,14 @@ no_irq:
+ 	dev_dbg(&pdev->dev, "unmapping io\n");
+ 	iounmap(self->base);
+ no_ioremap:
++#ifdef CONFIG_STA2X11_CUT1
++	/* pci_diable_device disables bus mastering which will
++	 * break all other Bus masters on this EP
++	 */
++#else
+ 	dev_dbg(&pdev->dev, "disable device\n");
+ 	pci_disable_device(pdev);
++#endif
+ no_enable:
+ 	return -1;
+ }
+@@ -1375,7 +1381,14 @@ static void unconfigure(struct pci_dev *pdev)
+ 	pcim_iounmap_regions(pdev, BAR_MASK);
+ 	pci_disable_msi(pdev);
+ 
++#ifdef CONFIG_STA2X11_CUT1
++	/* pci_diable_device disables bus mastering which will
++	 * break all other Bus masters on this EP
++	 */
++#else
++	dev_dbg(&pdev->dev, "disable device\n");
+ 	pci_disable_device(pdev);
++#endif
+ 
+ 	kfree(self);
+ }
+-- 
+1.7.1
+

++++++ linux-2.6.37-connext-0025-msp-cut1.patch (new)
--- linux-2.6.37-connext-0025-msp-cut1.patch
+++ linux-2.6.37-connext-0025-msp-cut1.patch
+From 3cedfb469f7757033266d4e9cbb8d3069bc43578 Mon Sep 17 00:00:00 2001
+From: Anders Wallin <anders.wallin at windriver.com>
+Date: Tue, 8 Mar 2011 17:34:43 +0200
+Subject: [PATCH 25/28] linux-2.6.37-connext-0025-msp-cut1.patch
+
+---
+ drivers/misc/sta2x11_msp/sta2x11_msp_pci.c |   14 ++++++++++++--
+ 1 files changed, 12 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/misc/sta2x11_msp/sta2x11_msp_pci.c b/drivers/misc/sta2x11_msp/sta2x11_msp_pci.c
+index 3fef30a..24b4dc7 100644
+--- a/drivers/misc/sta2x11_msp/sta2x11_msp_pci.c
++++ b/drivers/misc/sta2x11_msp/sta2x11_msp_pci.c
+@@ -115,8 +115,13 @@ sta2x11_msp_pci_probe(struct pci_dev *dev, const struct pci_device_id *id)
+ 
+ out_disable:
+ 	pci_disable_msi(dev);
++#ifdef CONFIG_STA2X11_CUT1
++	/* pci_disable_device disables bus mastering which will
++	 * break all other Bus master on this EP
++	 */
++#else
+ 	pci_disable_device(dev);
+-
++#endif
+ out_free:
+ 	kfree(drvdata);
+ out:
+@@ -135,8 +140,13 @@ static void sta2x11_msp_pci_remove(struct pci_dev *dev)
+ 			sta2x11_msp_destroy(drvdata->devs[i]);
+ 	}
+ 	pcim_iounmap_regions(dev, (1 << 6) - 1);
+-
++#ifdef CONFIG_STA2X11_CUT1
++	/* pci_disable_device disables bus mastering which will
++	 * break all other Bus master on this EP
++	 */
++#else
+ 	pci_disable_device(dev);
++#endif
+ }
+ 
+ static int sta2x11_msp_pci_suspend(struct pci_dev *dev, pm_message_t state)
+-- 
+1.7.1
+

++++++ linux-2.6.37-connext-0026-usb-otg-cut1.patch (new)
--- linux-2.6.37-connext-0026-usb-otg-cut1.patch
+++ linux-2.6.37-connext-0026-usb-otg-cut1.patch
+From 3db3046553e6705201d85f7c9f1116fc611f001f Mon Sep 17 00:00:00 2001
+From: Anders Wallin <anders.wallin at windriver.com>
+Date: Tue, 8 Mar 2011 17:34:44 +0200
+Subject: [PATCH 26/28] linux-2.6.37-connext-0026-usb-otg-cut1.patch
+
+---
+ drivers/usb/sta2x11_otg/sta2x11_otg_main.c |   12 ++++++++++++
+ 1 files changed, 12 insertions(+), 0 deletions(-)
+
+diff --git a/drivers/usb/sta2x11_otg/sta2x11_otg_main.c b/drivers/usb/sta2x11_otg/sta2x11_otg_main.c
+index 6530698..ba6068a 100644
+--- a/drivers/usb/sta2x11_otg/sta2x11_otg_main.c
++++ b/drivers/usb/sta2x11_otg/sta2x11_otg_main.c
+@@ -245,7 +245,13 @@ iounmap:
+ release:
+ 	pci_release_regions(pdev);
+ disable:
++#ifdef CONFIG_STA2X11_CUT1
++	/* pci_disable_device disables bus mastering which will
++	 * break all other Bus master on this EP
++	 */
++#else
+ 	pci_disable_device(pdev);
++#endif
+ end:
+ 	kfree(otg);
+ 	xcvr = NULL;
+@@ -270,7 +276,13 @@ static void __devexit sta2x11_otg_remove_one(struct pci_dev *pdev)
+ /*	pci_disable_msi(pdev); */
+ 	pci_iounmap(pdev, xcvr->iomem);
+ 	pci_release_regions(pdev);
++#ifdef CONFIG_STA2X11_CUT1
++	/* pci_disable_device disables bus mastering which will
++	 * break all other Bus master on this EP
++	 */
++#else
+ 	pci_disable_device(pdev);
++#endif
+ 	kfree(xcvr);
+ 	xcvr = NULL;
+ }
+-- 
+1.7.1
+

++++++ linux-2.6.35-connext-0017-tsc2007.patch -> linux-2.6.37-connext-0027-tsc2007.patch
--- linux-2.6.35-connext-0017-tsc2007.patch
+++ linux-2.6.37-connext-0027-tsc2007.patch
@@ -1,175 +1,175 @@
-From dfe8feca931c875c24c379c19fa617d9e4cf5c59 Mon Sep 17 00:00:00 2001
-From: Virgil Bucoci <virgil.bucoci at windriver.com>
-Date: Mon, 24 Jan 2011 19:40:05 +0200
-Subject: [PATCH 1/2] tsc2007.patch
-
----
- drivers/input/touchscreen/tsc2007.c |   72 ++++++++++++++++++++++++++---------
- include/linux/i2c/tsc2007.h         |   15 +++++++
- 2 files changed, 69 insertions(+), 18 deletions(-)
-
-diff --git a/drivers/input/touchscreen/tsc2007.c b/drivers/input/touchscreen/tsc2007.c
-index be23780..36e07f9 100644
---- a/drivers/input/touchscreen/tsc2007.c
-+++ b/drivers/input/touchscreen/tsc2007.c
-@@ -29,6 +29,7 @@
- 
- #define TS_POLL_DELAY			1 /* ms delay between samples */
- #define TS_POLL_PERIOD			1 /* ms delay between samples */
-+#define TS_SLOW_POLL_PERIOD		20 /* ms delay between pen down check */
- 
- #define TSC2007_MEASURE_TEMP0		(0x0 << 4)
- #define TSC2007_MEASURE_AUX		(0x2 << 4)
-@@ -75,8 +76,10 @@ struct tsc2007 {
- 
- 	u16			model;
- 	u16			x_plate_ohms;
-+	u16			z1_low_threshold;
- 
- 	bool			pendown;
-+	bool			ignore_next_irq;
- 	int			irq;
- 
- 	int			(*get_pendown_state)(void);
-@@ -129,7 +132,7 @@ static u32 tsc2007_calculate_pressure(struct tsc2007 *tsc, struct ts_event *tc)
- 	if (tc->x == MAX_12BIT)
- 		tc->x = 0;
- 
--	if (likely(tc->x && tc->z1)) {
-+	if (likely(tc->x && (tc->z1 > tsc->z1_low_threshold))) {
- 		/* compute touch pressure resistance using equation #1 */
- 		rt = tc->z2 - tc->z1;
- 		rt *= tc->x;
-@@ -228,14 +231,39 @@ static void tsc2007_work(struct work_struct *work)
- 	if (ts->pendown)
- 		schedule_delayed_work(&ts->work,
- 				      msecs_to_jiffies(TS_POLL_PERIOD));
--	else
--		enable_irq(ts->irq);
-+	else {
-+		/* if we don't have the get pen down state callback we
-+		 * ignore the next IRQ because it is provoked when we checked
-+		 * the touch pressure.
-+		 * If the user really touches the screen we will get a new
-+		 * interrupt anyway so it is safe to ignore it
-+		 *
-+		 * This is basically implementing this part of the manual:
-+		 * "In both cases previously listed, it is recommended that
-+		 *  whenever the host writes to the TSC2007, the master
-+		 *  processor masks the interrupt associated to PENIRQ.
-+		 *  This masking prevents false triggering of interrupts when
-+		 *  the PENIRQ line is disabled in the cases previously listed."
-+		 */
-+		if (!ts->get_pendown_state)
-+			ts->ignore_next_irq = (ts->model == 2003);
-+		if (ts->irq)
-+			enable_irq(ts->irq);
-+		else
-+			schedule_delayed_work(&ts->work,
-+					msecs_to_jiffies(TS_SLOW_POLL_PERIOD));
-+	}
- }
- 
- static irqreturn_t tsc2007_irq(int irq, void *handle)
- {
- 	struct tsc2007 *ts = handle;
- 
-+	if (ts->ignore_next_irq) {
-+		ts->ignore_next_irq = false;
-+		return IRQ_HANDLED;
-+	}
-+
- 	if (!ts->get_pendown_state || likely(ts->get_pendown_state())) {
- 		disable_irq_nosync(ts->irq);
- 		schedule_delayed_work(&ts->work,
-@@ -250,15 +278,18 @@ static irqreturn_t tsc2007_irq(int irq, void *handle)
- 
- static void tsc2007_free_irq(struct tsc2007 *ts)
- {
--	free_irq(ts->irq, ts);
--	if (cancel_delayed_work_sync(&ts->work)) {
--		/*
--		 * Work was pending, therefore we need to enable
--		 * IRQ here to balance the disable_irq() done in the
--		 * interrupt handler.
--		 */
--		enable_irq(ts->irq);
--	}
-+	if (ts->irq) {
-+		free_irq(ts->irq, ts);
-+		if (cancel_delayed_work_sync(&ts->work)) {
-+			/*
-+			 * Work was pending, therefore we need to enable
-+			 * IRQ here to balance the disable_irq() done in the
-+			 * interrupt handler.
-+			 */
-+			enable_irq(ts->irq);
-+		}
-+	} else
-+		cancel_delayed_work_sync(&ts->work);
- }
- 
- static int __devinit tsc2007_probe(struct i2c_client *client,
-@@ -292,6 +323,7 @@ static int __devinit tsc2007_probe(struct i2c_client *client,
- 
- 	ts->model             = pdata->model;
- 	ts->x_plate_ohms      = pdata->x_plate_ohms;
-+	ts->z1_low_threshold  = pdata->z1_low_threshold;
- 	ts->get_pendown_state = pdata->get_pendown_state;
- 	ts->clear_penirq      = pdata->clear_penirq;
- 
-@@ -312,12 +344,16 @@ static int __devinit tsc2007_probe(struct i2c_client *client,
- 	if (pdata->init_platform_hw)
- 		pdata->init_platform_hw();
- 
--	err = request_irq(ts->irq, tsc2007_irq, 0,
--			client->dev.driver->name, ts);
--	if (err < 0) {
--		dev_err(&client->dev, "irq %d busy?\n", ts->irq);
--		goto err_free_mem;
--	}
-+
-+	if (ts->irq) {
-+		err = request_irq(ts->irq, tsc2007_irq, 0,
-+				client->dev.driver->name, ts);
-+		if (err < 0) {
-+			dev_err(&client->dev, "irq %d busy?\n", ts->irq);
-+			goto err_free_mem;
-+		}
-+	} else
-+		schedule_delayed_work(&ts->work, TS_SLOW_POLL_PERIOD);
- 
- 	/* Prepare for touch readings - power down ADC and enable PENIRQ */
- 	err = tsc2007_xfer(ts, PWRDOWN);
-diff --git a/include/linux/i2c/tsc2007.h b/include/linux/i2c/tsc2007.h
-index c6361fb..21d7a3b 100644
---- a/include/linux/i2c/tsc2007.h
-+++ b/include/linux/i2c/tsc2007.h
-@@ -3,9 +3,24 @@
- 
- /* linux/i2c/tsc2007.h */
- 
-+/**
-+ * struct tsc2007_platform_data - Platform data of the TSC2007 driver
-+ *
-+ * @model:		Touch controller model, currently 2003 or 2007.
-+ * @x_plate_ohms:	X-Plate resistance.
-+ * @z1_low_threshold:	All measured Z1 values below or equal to the threshold
-+ *			are regarded as 0.
-+ * @get_pendown_state:	Optional callback used to check if the film is touched.
-+ *			Can be useful since the pressure value can fluctuate for
-+ *			quite a while after lifting the pen.
-+ * @clear_penirq:	Optional callback clear 2nd level interrupt source.
-+ * @init_platform_hw:	Optional callback to initialise the hardware.
-+ * @exit_platform_hw:	Optional callback to de-initialise the hardware.
-+ */
- struct tsc2007_platform_data {
- 	u16	model;				/* 2007. */
- 	u16	x_plate_ohms;
-+	u16	z1_low_threshold;
- 
- 	int	(*get_pendown_state)(void);
- 	void	(*clear_penirq)(void);		/* If needed, clear 2nd level
--- 
-1.7.1
-
+From ca8ea14662f5020ee87d81703f4c0fa57bf23371 Mon Sep 17 00:00:00 2001
+From: MeeGo <kernel at meego.com>
+Date: Wed, 9 Mar 2011 15:22:15 +0200
+Subject: [PATCH 27/28] linux-2.6.37-connext-0027-tsc2007.patch
+
+---
+ drivers/input/touchscreen/tsc2007.c |   72 ++++++++++++++++++++++++++---------
+ include/linux/i2c/tsc2007.h         |   15 +++++++
+ 2 files changed, 69 insertions(+), 18 deletions(-)
+
+diff --git a/drivers/input/touchscreen/tsc2007.c b/drivers/input/touchscreen/tsc2007.c
+index 80467f2..130b37e 100644
+--- a/drivers/input/touchscreen/tsc2007.c
++++ b/drivers/input/touchscreen/tsc2007.c
+@@ -29,6 +29,7 @@
+ 
+ #define TS_POLL_DELAY			1 /* ms delay between samples */
+ #define TS_POLL_PERIOD			1 /* ms delay between samples */
++#define TS_SLOW_POLL_PERIOD		20 /* ms delay between pen down check */
+ 
+ #define TSC2007_MEASURE_TEMP0		(0x0 << 4)
+ #define TSC2007_MEASURE_AUX		(0x2 << 4)
(153 more lines skipped)

++++++ linux-2.6.37-connext-0028-mapper.patch (new)
--- linux-2.6.37-connext-0028-mapper.patch
+++ linux-2.6.37-connext-0028-mapper.patch
+From 8c0dc62b89ba84fe2a781f70088571e57e0a0781 Mon Sep 17 00:00:00 2001
+From: Virgil Bucoci <virgil.bucoci at windriver.com>
+Date: Wed, 9 Mar 2011 15:36:30 +0200
+Subject: [PATCH 28/28] linux-2.6.37-connext-0028-mapper.patch
+
+---
+ drivers/misc/Kconfig  |    9 ++++
+ drivers/misc/Makefile |    1 +
+ drivers/misc/mapper.c |  115 +++++++++++++++++++++++++++++++++++++++++++++++++
+ 3 files changed, 125 insertions(+), 0 deletions(-)
+ create mode 100644 drivers/misc/mapper.c
+
+diff --git a/drivers/misc/Kconfig b/drivers/misc/Kconfig
+index 216b0c7..334a5b8 100644
+--- a/drivers/misc/Kconfig
++++ b/drivers/misc/Kconfig
+@@ -478,6 +478,15 @@ config STA2X11_PCI_APBREG
+ 	  CAN/MLB and SaRaC ConneXt drivers need this and it will
+ 	  be auto selected.
+ 
++config MAPPER_HELPER
++	tristate "Board Mapping driver"
++	depends on I2C && GPIOLIB
++	help
++	  If you say yes here you will get support for the board mapping
++	  driver.
++
++	  It adds the TSC2007 to the I2C bus	  
++
+ source "drivers/misc/c2port/Kconfig"
+ source "drivers/misc/eeprom/Kconfig"
+ source "drivers/misc/cb710/Kconfig"
+diff --git a/drivers/misc/Makefile b/drivers/misc/Makefile
+index da1d882..00c36e8 100644
+--- a/drivers/misc/Makefile
++++ b/drivers/misc/Makefile
+@@ -46,3 +46,4 @@ obj-$(CONFIG_AB8500_PWM)	+= ab8500-pwm.o
+ obj-$(CONFIG_STA2X11_PCI_MUX)   += sta2x11_mux.o
+ obj-$(CONFIG_STA2X11_PCI_SCTL)  += sta2x11_sctl.o
+ obj-$(CONFIG_STA2X11_PCI_APBREG)+= sta2x11_apbreg.o
++obj-$(CONFIG_MAPPER_HELPER)	+= mapper.o
+diff --git a/drivers/misc/mapper.c b/drivers/misc/mapper.c
+new file mode 100644
+index 0000000..f0f45f9
+--- /dev/null
++++ b/drivers/misc/mapper.c
+@@ -0,0 +1,115 @@
++/*
++ * I/O board mapping driver
++ * Copyright (c) 2010 Intel Corporation
++ *
++ * 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.
++ *
++ * 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, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
++ */
++
++#include <linux/gpio.h>
++#include <linux/i2c.h>
++#include <linux/i2c/tsc2007.h>
++
++#define DRIVER_NAME "mapper"
++
++static int	i2c_bus = 1;
++static unsigned	tsc2007_irq_pin = 102;
++
++static __devinitdata struct tsc2007_platform_data tsc2007_platform_data = {
++	.model = 2007,
++	.x_plate_ohms = 200,
++	.z1_low_threshold = 20
++};
++
++static __initdata struct i2c_board_info tsc2007_i2c_board_info = {
++	I2C_BOARD_INFO("tsc2007", 0x48),
++	.platform_data = &tsc2007_platform_data,
++	/* irq to be filled in runtime */
++};
++
++static struct i2c_client *tsc2007_client;
++
++static __init int mapper_get_irq(unsigned gpio_pin)
++{
++	int err;
++
++	err = gpio_request(gpio_pin, DRIVER_NAME);
++	if (err)
++		return err;
++
++	err = gpio_direction_input(gpio_pin);
++	if (err)
++		goto err;
++
++	err = gpio_to_irq(gpio_pin);
++	if (err < 0)
++		goto err;
++
++	return err;
++err:
++	gpio_free(tsc2007_irq_pin);
++	return err;
++}
++
++static __init int mapper_init(void)
++{
++	struct i2c_adapter *adapt;
++	int err;
++
++	adapt = i2c_get_adapter(i2c_bus);
++	if (!adapt) {
++		printk(KERN_ERR "%s: Failed to get I2C adapter\n", __func__);
++		return -ENODEV;
++	}
++
++	err = mapper_get_irq(tsc2007_irq_pin);
++	if (err < 0)
++		goto put_adapter;
++	tsc2007_i2c_board_info.irq = err;
++
++	/* add in the devices on the bus */
++	tsc2007_client = i2c_new_device(adapt, &tsc2007_i2c_board_info);
++	if (!tsc2007_client)
++		goto free_tsc2007_pin;
++
++	i2c_put_adapter(adapt);
++
++	return 0;
++
++free_tsc2007_pin:
++	gpio_free(tsc2007_irq_pin);
++put_adapter:
++	i2c_put_adapter(adapt);
++
++	return err;
++}
++
++static void __exit mapper_exit(void)
++{
++	i2c_unregister_device(tsc2007_client);
++}
++
++module_init(mapper_init);
++module_exit(mapper_exit);
++
++module_param(i2c_bus, int, 0);
++MODULE_PARM_DESC(i2c_bus,
++	"I2C bus to register mapper devices on, default = 1");
++
++module_param(tsc2007_irq_pin, uint, 0);
++MODULE_PARM_DESC(tsc2007_irq_pin,
++	"GPIO pin where the TSC2007 penIRQ is connected, default = 102");
++
++MODULE_DESCRIPTION("Automotive development board mapping driver");
++MODULE_AUTHOR("Richard Röjfors <richard.rojfors at pelagicore.com>");
++MODULE_LICENSE("GPL v2");
+-- 
+1.7.1
+

++++++ linux-2.6.35-emgd-0002-initial-import-1812.patch -> linux-2.6.37-emgd-0001-initial-import-1812.patch
--- linux-2.6.35-emgd-0002-initial-import-1812.patch
+++ linux-2.6.37-emgd-0001-initial-import-1812.patch
@@ -1,11 +1,8 @@
-From 3ce182fa264547f209addd7c7ecf26d9d18d414d Mon Sep 17 00:00:00 2001
-From: Liu Xinyun <xinyun.liu at intel.com>
-Date: Fri, 7 Jan 2011 11:53:47 +0800
-Subject: [PATCH 2/2] Add EMGD driver
+From 726e13af5ad3c02d74228fad058078d2176b2755 Mon Sep 17 00:00:00 2001
+From: MeeGo <kernel at meego.com>
+Date: Wed, 9 Mar 2011 15:39:57 +0200
+Subject: [PATCH 1/4] linux-2.6.37-emgd-0001-initial-import-1812.patch
 
-This is imported from EMGD 1812 revised by Matthew.
-
-Signed-off-by: Roper, Matthew D <matthew.d.roper at intel.com>
 ---
  drivers/staging/emgd/COPYING                       |  350 ++
  drivers/staging/emgd/Kconfig                       |   39 +
@@ -157862,5 +157859,5 @@
 +				$(DBGDRV_SOURCES_ROOT)/linux/hostfunc.c \
 +				$(DBGDRV_SOURCES_ROOT)/common/hotkey.c
 -- 
-1.7.0.4
+1.7.1
 

++++++ linux-2.6.37-emgd-0002-add-makefile.patch (new)
--- linux-2.6.37-emgd-0002-add-makefile.patch
+++ linux-2.6.37-emgd-0002-add-makefile.patch
+From df8a044fc0b66260481502dc4938ff398e3ec93e Mon Sep 17 00:00:00 2001
+From: Virgil Bucoci <virgil.bucoci at windriver.com>
+Date: Wed, 9 Mar 2011 15:47:10 +0200
+Subject: [PATCH 2/4] linux-2.6.37-emdg-0002-add-makefile.patch
+
+---
+ drivers/staging/Kconfig  |    2 ++
+ drivers/staging/Makefile |    1 +
+ 2 files changed, 3 insertions(+), 0 deletions(-)
+
+diff --git a/drivers/staging/Kconfig b/drivers/staging/Kconfig
+index 5eafdf4..a81097e 100644
+--- a/drivers/staging/Kconfig
++++ b/drivers/staging/Kconfig
+@@ -175,5 +175,7 @@ source "drivers/staging/intel_sst/Kconfig"
+ 
+ source "drivers/staging/speakup/Kconfig"
+ 
++source "drivers/staging/emgd/Kconfig"
++
+ endif # !STAGING_EXCLUDE_BUILD
+ endif # STAGING
+diff --git a/drivers/staging/Makefile b/drivers/staging/Makefile
+index a97a955..3913394 100644
+--- a/drivers/staging/Makefile
++++ b/drivers/staging/Makefile
+@@ -68,3 +68,4 @@ obj-$(CONFIG_BCM_WIMAX)	+= bcm/
+ obj-$(CONFIG_FT1000)		+= ft1000/
+ obj-$(CONFIG_SND_INTEL_SST)		+= intel_sst/
+ obj-$(CONFIG_SPEAKUP)	+= speakup/
++obj-$(CONFIG_DRM_EMGD)		+= emgd/
+-- 
+1.7.1
+

++++++ linux-2.6.37-emgd-0003-1859-build.patch (new)
--- linux-2.6.37-emgd-0003-1859-build.patch
+++ linux-2.6.37-emgd-0003-1859-build.patch
+From 171973d618cba14ebf3eaa5f89b868d82bf32104 Mon Sep 17 00:00:00 2001
+From: MeeGo <kernel at meego.com>
+Date: Wed, 9 Mar 2011 15:48:17 +0200
+Subject: [PATCH 3/4] linux-2.6.37-emgd-0003-1859-build.patch
+
+---
+ drivers/staging/emgd/emgd/cfg/config.h             |   29 +-
+ drivers/staging/emgd/emgd/cfg/config_default.h     |   27 +-
+ drivers/staging/emgd/emgd/cfg/config_helper.c      |   27 +-
+ drivers/staging/emgd/emgd/cfg/personality.h        |   27 +-
+ .../staging/emgd/emgd/core/init/cmn/igd_global.c   |   29 +-
+ drivers/staging/emgd/emgd/core/init/cmn/igd_init.c |   35 ++-
+ .../emgd/emgd/core/init/cmn/init_dispatch.h        |   27 +-
+ drivers/staging/emgd/emgd/core/init/plb/init_plb.c |   27 +-
+ .../emgd/emgd/core/init/plb/micro_init_plb.c       |   27 +-
+ drivers/staging/emgd/emgd/core/init/tnc/init_tnc.c |   76 ++++-
+ .../emgd/emgd/core/init/tnc/micro_init_tnc.c       |   76 ++++-
+ drivers/staging/emgd/emgd/display/dsp/cmn/dsp.c    |   29 +-
+ .../emgd/emgd/display/dsp/cmn/dsp_dispatch.h       |   27 +-
+ .../staging/emgd/emgd/display/dsp/plb/dsp_plb.c    |   27 +-
+ .../staging/emgd/emgd/display/dsp/tnc/dsp_tnc.c    |   27 +-
+ .../staging/emgd/emgd/display/mode/cmn/igd_mode.c  |   29 +-
+ drivers/staging/emgd/emgd/display/mode/cmn/match.c |   29 +-
+ drivers/staging/emgd/emgd/display/mode/cmn/match.h |   29 +-
+ .../emgd/emgd/display/mode/cmn/micro_mode.c        |   30 +-
+ .../emgd/emgd/display/mode/cmn/mode_dispatch.h     |   27 +-
+ .../staging/emgd/emgd/display/mode/cmn/vga_mode.c  |   27 +-
+ .../emgd/emgd/display/mode/plb/clocks_plb.c        |   29 +-
+ .../emgd/emgd/display/mode/plb/micro_mode_plb.c    |   27 +-
+ .../staging/emgd/emgd/display/mode/plb/mode_plb.c  |   29 +-
+ .../emgd/emgd/display/mode/tnc/clocks_tnc.c        |   29 +-
+ .../emgd/emgd/display/mode/tnc/micro_mode_tnc.c    |  405 +++++++++++++++++---
+ .../staging/emgd/emgd/display/mode/tnc/mode_tnc.c  |  113 +++---
+ drivers/staging/emgd/emgd/display/pd/cmn/pd.c      |   29 +-
+ .../staging/emgd/emgd/display/pi/cmn/displayid.c   |   29 +-
+ drivers/staging/emgd/emgd/display/pi/cmn/edid.c    |   29 +-
+ .../emgd/emgd/display/pi/cmn/i2c_dispatch.h        |   27 +-
+ drivers/staging/emgd/emgd/display/pi/cmn/igd_pi.c  |   29 +-
+ .../staging/emgd/emgd/display/pi/cmn/mode_table.c  |   29 +-
+ .../staging/emgd/emgd/display/pi/cmn/pd_init_all.c |   27 +-
+ drivers/staging/emgd/emgd/display/pi/cmn/pi.c      |   33 +-
+ drivers/staging/emgd/emgd/display/pi/plb/i2c_plb.c |   29 +-
+ .../emgd/emgd/display/pi/tnc/i2c_bitbash_tnc.c     |   29 +-
+ .../emgd/emgd/display/pi/tnc/i2c_gmbus_tnc.c       |   32 +-
+ drivers/staging/emgd/emgd/drm/bitmap_data.h        |   28 +-
+ drivers/staging/emgd/emgd/drm/drm_emgd_private.h   |   27 +-
+ drivers/staging/emgd/emgd/drm/emgd_drv.c           |   31 +-
+ drivers/staging/emgd/emgd/drm/emgd_drv.h           |   27 +-
+ drivers/staging/emgd/emgd/drm/emgd_fb.c            |   27 +-
+ drivers/staging/emgd/emgd/drm/emgd_interface.c     |   27 +-
+ drivers/staging/emgd/emgd/drm/emgd_mmap.c          |   27 +-
+ drivers/staging/emgd/emgd/drm/emgd_test_pvrsrv.c   |   27 +-
+ drivers/staging/emgd/emgd/drm/splash_screen.c      |   27 +-
+ drivers/staging/emgd/emgd/drm/splash_screen.h      |   27 +-
+ drivers/staging/emgd/emgd/drm/user_config.c        |   27 +-
+ drivers/staging/emgd/emgd/drm/user_config.h        |   27 +-
+ drivers/staging/emgd/emgd/gmm/gmm.c                |   27 +-
+ drivers/staging/emgd/emgd/gmm/gtt.c                |   27 +-
+ drivers/staging/emgd/emgd/include/cmd.h            |   27 +-
+ drivers/staging/emgd/emgd/include/context.h        |   33 +-
+ drivers/staging/emgd/emgd/include/debug.h          |   29 +-
+ drivers/staging/emgd/emgd/include/decode.h         |   27 +-
+ drivers/staging/emgd/emgd/include/dispatch.h       |   27 +-
+ drivers/staging/emgd/emgd/include/dispatch_utils.h |   27 +-
+ drivers/staging/emgd/emgd/include/displayid.h      |   29 +-
+ drivers/staging/emgd/emgd/include/dsp.h            |   29 +-
+ drivers/staging/emgd/emgd/include/edid.h           |   29 +-
+ drivers/staging/emgd/emgd/include/general.h        |   29 +-
+ drivers/staging/emgd/emgd/include/instr_common.h   |   27 +-
+ drivers/staging/emgd/emgd/include/intelpci.h       |   39 ++-
+ drivers/staging/emgd/emgd/include/math_fix.h       |   27 +-
+ drivers/staging/emgd/emgd/include/memlist.h        |   27 +-
+ drivers/staging/emgd/emgd/include/memory.h         |   27 +-
+ drivers/staging/emgd/emgd/include/mode.h           |   29 +-
+ drivers/staging/emgd/emgd/include/mode_access.h    |   29 +-
+ drivers/staging/emgd/emgd/include/module_init.h    |   27 +-
+ drivers/staging/emgd/emgd/include/msvdx.h          |   27 +-
+ drivers/staging/emgd/emgd/include/pci.h            |   27 +-
+ drivers/staging/emgd/emgd/include/pd.h             |   29 +-
+ drivers/staging/emgd/emgd/include/pd_init.h        |   29 +-
+ drivers/staging/emgd/emgd/include/pi.h             |   29 +-
+ drivers/staging/emgd/emgd/include/plb/appcontext.h |   27 +-
+ drivers/staging/emgd/emgd/include/plb/cmd.h        |   27 +-
+ drivers/staging/emgd/emgd/include/plb/context.h    |   29 +-
+ drivers/staging/emgd/emgd/include/plb/instr.h      |   29 +-
+ drivers/staging/emgd/emgd/include/plb/mi.h         |   27 +-
+ drivers/staging/emgd/emgd/include/plb/regs.h       |   29 +-
+ drivers/staging/emgd/emgd/include/plb/sgx.h        |   27 +-
+ drivers/staging/emgd/emgd/include/plb/state3d.h    |   27 +-
+ .../staging/emgd/emgd/include/plb/state3d_plb.h    |   27 +-
+ drivers/staging/emgd/emgd/include/psb_regs.h       |   29 +-
+ drivers/staging/emgd/emgd/include/rb.h             |   29 +-
+ drivers/staging/emgd/emgd/include/reset.h          |   27 +-
+ drivers/staging/emgd/emgd/include/sched.h          |   27 +-
+ drivers/staging/emgd/emgd/include/state2d.h        |   27 +-
+ drivers/staging/emgd/emgd/include/tnc/appcontext.h |   27 +-
+ drivers/staging/emgd/emgd/include/tnc/cmd.h        |   27 +-
+ drivers/staging/emgd/emgd/include/tnc/context.h    |   27 +-
+ drivers/staging/emgd/emgd/include/tnc/igd_tnc_wa.h |   28 +-
+ drivers/staging/emgd/emgd/include/tnc/instr.h      |   29 +-
+ drivers/staging/emgd/emgd/include/tnc/mi.h         |   27 +-
+ drivers/staging/emgd/emgd/include/tnc/regs.h       |   30 +-
+ drivers/staging/emgd/emgd/include/tnc/sgx.h        |   27 +-
+ drivers/staging/emgd/emgd/include/tnc/state3d.h    |   27 +-
+ .../staging/emgd/emgd/include/tnc/state3d_plb.h    |   27 +-
+ drivers/staging/emgd/emgd/include/topaz.h          |   27 +-
+ drivers/staging/emgd/emgd/include/utils.h          |   35 ++-
+ drivers/staging/emgd/emgd/include/vga.h            |   27 +-
+ drivers/staging/emgd/emgd/oal/src/math_fix.c       |   27 +-
+ drivers/staging/emgd/emgd/oal/src/memmap.c         |   27 +-
+ drivers/staging/emgd/emgd/oal/src/pci.c            |   27 +-
+ drivers/staging/emgd/emgd/pal/Makefile.include     |   35 +-
+ drivers/staging/emgd/emgd/pal/lpd/lpd.c            |   27 +-
+ drivers/staging/emgd/emgd/pal/lpd/pd_print.h       |   29 +-
+ drivers/staging/emgd/emgd/pal/lvds/lvds.c          |   39 +-
+ drivers/staging/emgd/emgd/pal/lvds/lvds.h          |   29 +-
+ drivers/staging/emgd/emgd/pal/sdvo/sdvo_attr.c     |   45 ++-
+ drivers/staging/emgd/emgd/pal/sdvo/sdvo_attr.h     |   27 +-
+ drivers/staging/emgd/emgd/pal/sdvo/sdvo_hdmi.c     |   27 +-
+ drivers/staging/emgd/emgd/pal/sdvo/sdvo_hdmi.h     |   27 +-
+ drivers/staging/emgd/emgd/pal/sdvo/sdvo_intf.c     |   75 +++-
+ drivers/staging/emgd/emgd/pal/sdvo/sdvo_intf.h     |   30 +-
+ drivers/staging/emgd/emgd/pal/sdvo/sdvo_port.c     |  147 ++++++--
+ drivers/staging/emgd/emgd/pal/sdvo/sdvo_port.h     |   31 +-
+ .../state/appcontext/cmn/appcontext_dispatch.h     |   27 +-
+ .../emgd/state/appcontext/cmn/igd_appcontext.c     |   29 +-
+ .../emgd/state/appcontext/plb/appcontext_plb.c     |   29 +-
+ .../staging/emgd/emgd/state/power/cmn/igd_pwr.c    |   29 +-
+ .../emgd/emgd/state/power/cmn/pwr_dispatch.h       |   29 +-
+ .../staging/emgd/emgd/state/power/plb/pwr_plb.c    |   29 +-
+ drivers/staging/emgd/emgd/state/reg/cmn/reg.c      |   27 +-
+ .../staging/emgd/emgd/state/reg/cmn/reg_dispatch.h |   27 +-
+ drivers/staging/emgd/emgd/state/reg/plb/reg_plb.c  |   27 +-
+ drivers/staging/emgd/emgd/state/reg/tnc/reg_tnc.c  |   35 +-
+ drivers/staging/emgd/emgd/utils/math_fix.c         |   27 +-
+ drivers/staging/emgd/emgd/utils/memmap.c           |   27 +-
+ drivers/staging/emgd/emgd/utils/pci.c              |   27 +-
+ drivers/staging/emgd/emgd/video/msvdx/msvdx.c      |   27 +-
+ drivers/staging/emgd/emgd/video/msvdx/msvdx_init.c |   27 +-
+ drivers/staging/emgd/emgd/video/msvdx/msvdx_pvr.c  |   27 +-
+ drivers/staging/emgd/emgd/video/msvdx/msvdx_pvr.h  |   27 +-
+ .../staging/emgd/emgd/video/overlay/cmn/igd_ovl.c  |   27 +-
+ .../emgd/emgd/video/overlay/cmn/micro_ovl.c        |   27 +-
+ .../emgd/emgd/video/overlay/cmn/ovl_coeff.c        |   27 +-
+ .../emgd/emgd/video/overlay/cmn/ovl_coeff.h        |   27 +-
+ .../emgd/emgd/video/overlay/cmn/ovl_dispatch.h     |   27 +-
+ .../staging/emgd/emgd/video/overlay/cmn/ovl_virt.h |   27 +-
+ .../emgd/emgd/video/overlay/plb/micro_ovl_plb.c    |   27 +-
+ .../staging/emgd/emgd/video/overlay/plb/ovl2_plb.c |   27 +-
+ .../staging/emgd/emgd/video/overlay/plb/ovl2_plb.h |   27 +-
+ .../emgd/emgd/video/overlay/plb/ovl2_regs_plb.h    |   27 +-
+ .../staging/emgd/emgd/video/overlay/plb/ovl_plb.c  |   27 +-
+ .../emgd/emgd/video/overlay/plb/ovl_plb_cache.c    |   28 +-
+ .../emgd/emgd/video/overlay/plb/ovl_plb_cache.h    |   28 +-
+ .../emgd/emgd/video/overlay/plb/ovl_regs_plb.h     |   27 +-
+ .../emgd/emgd/video/overlay/tnc/micro_ovl_tnc.c    |   27 +-
+ .../emgd/emgd/video/overlay/tnc/ovl2_regs_tnc.h    |   27 +-
+ .../staging/emgd/emgd/video/overlay/tnc/ovl2_tnc.c |   27 +-
+ .../staging/emgd/emgd/video/overlay/tnc/ovl2_tnc.h |   27 +-
+ .../emgd/emgd/video/overlay/tnc/ovl_regs_tnc.h     |   27 +-
+ .../staging/emgd/emgd/video/overlay/tnc/ovl_tnc.c  |   27 +-
+ .../emgd/emgd/video/overlay/tnc/ovl_tnc_cache.c    |   27 +-
+ .../emgd/emgd/video/overlay/tnc/ovl_tnc_cache.h    |   27 +-
+ drivers/staging/emgd/emgd/video/topaz/topaz.c      |   27 +-
+ drivers/staging/emgd/emgd/video/topaz/topaz_hdr.h  |   27 +-
+ drivers/staging/emgd/emgd/video/topaz/topaz_init.c |   27 +-
+ drivers/staging/emgd/include/emgd_drm.h            |   27 +-
+ drivers/staging/emgd/include/emgd_shared.h         |   27 +-
+ drivers/staging/emgd/include/gart.h                |   27 +-
+ drivers/staging/emgd/include/igd.h                 |   27 +-
+ drivers/staging/emgd/include/igd_2d.h              |   27 +-
+ drivers/staging/emgd/include/igd_appcontext.h      |   29 +-
+ drivers/staging/emgd/include/igd_blend.h           |   29 +-
+ drivers/staging/emgd/include/igd_debug.h           |   27 +-
+ drivers/staging/emgd/include/igd_errno.h           |   27 +-
+ drivers/staging/emgd/include/igd_gart.h            |   27 +-
+ drivers/staging/emgd/include/igd_gmm.h             |   27 +-
+ drivers/staging/emgd/include/igd_init.h            |   29 +-
+ drivers/staging/emgd/include/igd_interrupt.h       |   27 +-
+ drivers/staging/emgd/include/igd_mode.h            |   31 +-
+ drivers/staging/emgd/include/igd_ovl.h             |   27 +-
+ drivers/staging/emgd/include/igd_pd.h              |   29 +-
+ drivers/staging/emgd/include/igd_pi.h              |   29 +-
+ drivers/staging/emgd/include/igd_pwr.h             |   27 +-
+ drivers/staging/emgd/include/igd_rb.h              |   29 +-
+ drivers/staging/emgd/include/igd_render.h          |   29 +-
+ drivers/staging/emgd/include/igd_reset.h           |   27 +-
+ drivers/staging/emgd/include/igd_version.h         |   31 +-
+ drivers/staging/emgd/include/igd_vga.h             |   27 +-
+ drivers/staging/emgd/include/io.h                  |   27 +-
+ drivers/staging/emgd/include/memmap.h              |   27 +-
+ drivers/staging/emgd/pvr/include4/dbgdrvif.h       |   42 +--
+ drivers/staging/emgd/pvr/include4/img_defs.h       |   42 +--
+ drivers/staging/emgd/pvr/include4/img_types.h      |   42 +--
+ drivers/staging/emgd/pvr/include4/ioctldef.h       |   43 +--
+ drivers/staging/emgd/pvr/include4/pdumpdefs.h      |   42 +--
+ drivers/staging/emgd/pvr/include4/pvr_debug.h      |   42 +--
+ drivers/staging/emgd/pvr/include4/pvrmodule.h      |   44 +--
(17396 more lines skipped)

++++++ linux-2.6.37-emgd-0004-add-2.6.37-support.patch (new)
--- linux-2.6.37-emgd-0004-add-2.6.37-support.patch
+++ linux-2.6.37-emgd-0004-add-2.6.37-support.patch
+From c36d49425adf582e90980202d20466d555cd2c58 Mon Sep 17 00:00:00 2001
+From: MeeGo <kernel at meego.com>
+Date: Wed, 9 Mar 2011 15:48:18 +0200
+Subject: [PATCH 4/4] linux-2.6.37-emgd-0004-add-2.6.37-support.patch
+
+---
+ drivers/staging/emgd/emgd/drm/emgd_drv.c           |    3 +
+ drivers/staging/emgd/emgd/drm/emgd_fb.c            |    6 +
+ drivers/staging/emgd/emgd/gmm/gtt.c                |   16 +-
+ drivers/staging/emgd/emgd/include/plb/cmd.h        |  461 --------------------
+ drivers/staging/emgd/emgd/include/sched.h          |   28 +-
+ .../emgd/pvr/services4/srvkm/common/resman.c       |   12 +-
+ 6 files changed, 24 insertions(+), 502 deletions(-)
+
+diff --git a/drivers/staging/emgd/emgd/drm/emgd_drv.c b/drivers/staging/emgd/emgd/drm/emgd_drv.c
+index 2b68a12..b68231e 100644
+--- a/drivers/staging/emgd/emgd/drm/emgd_drv.c
++++ b/drivers/staging/emgd/emgd/drm/emgd_drv.c
+@@ -1937,8 +1937,10 @@ static struct drm_driver driver = {
+ 	.irq_uninstall      = emgd_driver_irq_uninstall,
+ 	.irq_handler        = emgd_driver_irq_handler,
+ 	.reclaim_buffers    = drm_core_reclaim_buffers,
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,37)
+ 	.get_map_ofs        = drm_core_get_map_ofs,
+ 	.get_reg_ofs        = drm_core_get_reg_ofs,
++#endif
+ 	.ioctls             = emgd_ioctl,
+ 	.fops = {
+ 		.owner   = THIS_MODULE,
+@@ -1975,6 +1977,7 @@ static int __init emgd_init(void) {
+ 	EMGD_TRACE_ENTER;
+ 	driver.num_ioctls = emgd_max_ioctl;
+ 	ret = drm_init(&driver);
++	PVRDPFInit();
+ 	printk(KERN_INFO "[EMGD] drm_init() returning %d\n", ret);
+ 	EMGD_TRACE_EXIT;
+ 	return ret;
+diff --git a/drivers/staging/emgd/emgd/drm/emgd_fb.c b/drivers/staging/emgd/emgd/drm/emgd_fb.c
+index 2612444..2f0e14d 100644
+--- a/drivers/staging/emgd/emgd/drm/emgd_fb.c
++++ b/drivers/staging/emgd/emgd/drm/emgd_fb.c
+@@ -137,6 +137,9 @@ static int emgd_crtc_cursor_set(struct drm_crtc *crtc,
+ static int emgd_crtc_cursor_move(struct drm_crtc *crtc, int x, int y);
+ static void emgd_crtc_gamma_set(struct drm_crtc *crtc,
+ 		unsigned short *red, unsigned short *green, unsigned short *blue,
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37)
++		uint32_t start,
++#endif
+ 		uint32_t size);
+ static void emgd_crtc_destroy(struct drm_crtc *crtc);
+ 
+@@ -637,6 +640,9 @@ static int emgd_crtc_cursor_move(struct drm_crtc *crtc, int x, int y)
+ 
+ static void emgd_crtc_gamma_set(struct drm_crtc *crtc,
+ 		unsigned short *red, unsigned short *green, unsigned short *blue,
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37)
++		uint32_t start,
++#endif
+ 		uint32_t size)
+ {
+ 	printk(KERN_ALERT "emgd_crtc_gamma_set: STUB\n");
+diff --git a/drivers/staging/emgd/emgd/gmm/gtt.c b/drivers/staging/emgd/emgd/gmm/gtt.c
+index 0f81c5f..34b7221 100644
+--- a/drivers/staging/emgd/emgd/gmm/gtt.c
++++ b/drivers/staging/emgd/emgd/gmm/gtt.c
+@@ -46,8 +46,8 @@
+ 
+ void emgd_free_pages(gmm_mem_buffer_t *mem);
+ 
+-static DECLARE_MUTEX(client_sem);
+-static DECLARE_MUTEX(gtt_sem);
++static DEFINE_MUTEX(client_sem);
++static DEFINE_MUTEX(gtt_sem);
+ 
+ struct client_list_struct {
+ 	struct list_head list;
+@@ -87,7 +87,7 @@ static void invalidate_vma(unsigned long pg_offset, unsigned long bus_addr) {
+ 	pmd_t *pmd;
+ 	pte_t *pte;
+ 
+-	down(&client_sem);
++	mutex_lock(&client_sem);
+ 	list_for_each(tmp, &client_list) {
+ 		entry = list_entry(tmp, struct client_list_struct, list);
+ 
+@@ -157,7 +157,7 @@ static void invalidate_vma(unsigned long pg_offset, unsigned long bus_addr) {
+ 			pte_unmap(pte);
+ 		}
+ 	}
+-	up(&client_sem);
++	mutex_unlock(&client_sem);
+ }
+ 
+ 
+@@ -357,7 +357,7 @@ void emgd_gtt_insert(igd_context_t *context,
+ 
+ 
+ 	/* Insert the pages into the GTT */
+-	down(&gtt_sem);
++	mutex_lock(&gtt_sem);
+ 	for (i = 0, j = pg_off; i < mem->page_count; i++, j++) {
+ 		page = mem->pages[i];
+ 		/* FIXME: Apparently we don't really need to copy stolen memory pages.
+@@ -378,7 +378,7 @@ void emgd_gtt_insert(igd_context_t *context,
+ 
+ 	}
+ 
+-	up(&gtt_sem);
++	mutex_unlock(&gtt_sem);
+ 
+ 	(void)readl(context->device_context.virt_gttadr + j - 1);
+ 
+@@ -413,7 +413,7 @@ void emgd_gtt_remove(igd_context_t *context,
+ 	emgd_cache_flush();
+ 	tlb_flush();
+ 
+-	down(&gtt_sem);
++	mutex_lock(&gtt_sem);
+ 
+ 	page = context->device_context.scratch_page;
+ 	pte = page_to_phys(page) | PSB_PTE_VALID;
+@@ -433,7 +433,7 @@ void emgd_gtt_remove(igd_context_t *context,
+ 
+ 	}
+ 
+-	up(&gtt_sem);
++	mutex_unlock(&gtt_sem);
+ 
+ 	/* Invaidate VMA's */
+ 	invalidate_vma(i,
+diff --git a/drivers/staging/emgd/emgd/include/plb/cmd.h b/drivers/staging/emgd/emgd/include/plb/cmd.h
+index 7d2825b..6bebb6c 100644
+--- a/drivers/staging/emgd/emgd/include/plb/cmd.h
++++ b/drivers/staging/emgd/emgd/include/plb/cmd.h
+@@ -39,466 +39,5 @@
+ #include <instr_common.h>
+ #include <utils.h>
+ 
+-//#define TMP_PLB_SERIALIZE_2D
+-//#define TMP_PLB_SERIALIZE_RASTER
+-//#define TMP_PLB_SERIALIZE_BINNER
+-#define CONFIG_ENABLE_SYNC_SLEEP 0
+-#define CONFIG_ENABLE_CPU_SYNC 0
+-#define CONFIG_ENABLE_DIRECT_2D 1
+-#define CONFIG_ENABLE_DIRECT_BIN 1
+-#define CONFIG_ENABLE_DIRECT_VIDEO 1
+-
+-
+-#define CMD_QUEUE_SIZE_PLB (1024*128)
+-#define MAX_2D_COMMAND_PLB 0x60
+-
+-/* Wait at most 2 second for a 2D, 3D, or Video operation to complete */
+-#define CMD_TIMEOUT_PLB 2000
+-
+-/*
+- * Bitfield to track which engines are possibly busy and in need
+- * of sync.
+- */
+-#define CMD_ENGINE_2D_PLB     0x01
+-#define CMD_ENGINE_BINNER_PLB 0x02
+-#define CMD_ENGINE_RASTER_PLB 0x04
+-#define CMD_ENGINE_VIDEO_PLB  0x08
+-#define CMD_ENGINE_CPU_PLB    0x10
+-#define CMD_ENGINE_WAIT_PLB   0x20
+-#define CMD_ENGINE_DPM_PLB    0x40
+-#define CMD_ENGINE_ALL_PLB    0x7f
+-
+-typedef unsigned long cmd_engine_plb_t;
+-
+-/*
+- * Virtual Commands for the PLB Virtual Engine.
+- * Note: They are numbered such that they are unlikely to happen in
+- * a command stream and should then be easily spotted during debug.
+- *
+- * There is a special relationship between the 3D and RASTER numbers.
+- * The command packet for these two is the same and the command is either
+- * a binner + raster (3D) or just a raster alone (RASTER).
+- * Sometimes the binner is processed out of order and the command ID is
+- * converted from 3D to raster by or'ing in the extra bit.
+- */
+-#define VCOMMAND_2D_PLB          0x12300000
+-#define VCOMMAND_3D_PLB          0x12310000
+-#define VCOMMAND_RASTER_PLB      0x12330000
+-#define VCOMMAND_VIDEO_PLB       0x12340000
+-#define VCOMMAND_REG_PLB         0x12350000
+-#define VCOMMAND_WAIT_PLB        0x12360000
+-#define VCOMMAND_SYNC_PLB        0x12370000
+-#define VCOMMAND_SW2D_PLB        0x12380000
+-#define VCOMMAND_EXIT_PLB        0x123e0000
+-#define VCOMMAND_WRAP_PLB        0x123f0000
+-#define VCOMMAND_ID_MASK_PLB     0xffff0000
+-#define VCOMMAND_SIZE_MASK_PLB   0x0000ffff
+-
+-#define CMD_SYNC_NEED_IDLE_PLB (CMD_ENGINE_RASTER_PLB | CMD_ENGINE_DPM_PLB | \
+-		CMD_ENGINE_VIDEO_PLB | CMD_ENGINE_WAIT_PLB | CMD_ENGINE_2D_PLB)
+-
+-#define CMD_2D_NEED_IDLE_PLB (CMD_ENGINE_RASTER_PLB | \
+-		CMD_ENGINE_VIDEO_PLB | CMD_ENGINE_WAIT_PLB)
(488 more lines skipped)

++++++ linux-2.6.37-rc1-ahci-alpm-accounting.patch (new)
--- linux-2.6.37-rc1-ahci-alpm-accounting.patch
+++ linux-2.6.37-rc1-ahci-alpm-accounting.patch
+From: Arjan van de Ven <arjan at linux.intel.com>
+Subject: [PATCH] libata: Add ALPM power state accounting to the AHCI driver
+
+PowerTOP wants to be able to show the user how effective the ALPM link
+power management is for the user. ALPM is worth around 0.5W on a quiet
+link; PowerTOP wants to be able to find cases where the "quiet link" isn't
+actually quiet.
+
+This patch adds state accounting functionality to the AHCI driver for
+PowerTOP to use.
+The parts of the patch are
+1) the sysfs logic of exposing the stats for each state in sysfs
+2) the basic accounting logic that gets update on link change interrupts
+   (or when the user accesses the info from sysfs)
+3) a "accounting enable" flag; in order to get the accounting to work,
+   the driver needs to get phyrdy interrupts on link status changes.
+   Normally and currently this is disabled by the driver when ALPM is
+   on (to reduce overhead); when PowerTOP is running this will need
+   to be on to get usable statistics... hence the sysfs tunable.
+
+The PowerTOP output currently looks like this:
+
+Recent SATA AHCI link activity statistics
+Active	Partial	Slumber	Device name
+  0.5%	 99.5%	  0.0%	host0
+
+(work to resolve "host0" to a more human readable name is in progress)
+
+Signed-off-by: Arjan van de Ven <arjan at linux.intel.com>
+
+---
+ drivers/ata/ahci.h    |   15 ++++
+ drivers/ata/libahci.c |  187 +++++++++++++++++++++++++++++++++++++++++++++++++-
+ 2 files changed, 200 insertions(+), 2 deletions(-)
+
+Index: linux.trees.git/drivers/ata/ahci.h
+===================================================================
+--- linux.trees.git.orig/drivers/ata/ahci.h
++++ linux.trees.git/drivers/ata/ahci.h
+@@ -262,6 +262,13 @@ struct ahci_em_priv {
+ 	unsigned long led_state;
+ };
+ 
++enum ahci_port_states {
++	AHCI_PORT_NOLINK = 0,
++	AHCI_PORT_ACTIVE = 1,
++	AHCI_PORT_PARTIAL = 2,
++	AHCI_PORT_SLUMBER = 3
++};
++
+ struct ahci_port_priv {
+ 	struct ata_link		*active_link;
+ 	struct ahci_cmd_hdr	*cmd_slot;
+@@ -280,6 +287,14 @@ struct ahci_port_priv {
+ 	int			fbs_last_dev;	/* save FBS.DEV of last FIS */
+ 	/* enclosure management info per PM slot */
+ 	struct ahci_em_priv	em_priv[EM_MAX_SLOTS];
++
++	/* ALPM accounting state and stats */
++	unsigned int 		accounting_active:1;
++	u64			active_jiffies;
++	u64			partial_jiffies;
++	u64			slumber_jiffies;
++	int			previous_state;
++	int			previous_jiffies;
+ };
+ 
+ struct ahci_host_priv {
+Index: linux.trees.git/drivers/ata/libahci.c
+===================================================================
+--- linux.trees.git.orig/drivers/ata/libahci.c
++++ linux.trees.git/drivers/ata/libahci.c
+@@ -58,6 +58,17 @@ MODULE_PARM_DESC(ignore_sss, "Ignore sta
+ 
+ static int ahci_set_lpm(struct ata_link *link, enum ata_lpm_policy policy,
+ 			unsigned hints);
++static ssize_t ahci_alpm_show_active(struct device *dev,
++				  struct device_attribute *attr, char *buf);
++static ssize_t ahci_alpm_show_slumber(struct device *dev,
++				  struct device_attribute *attr, char *buf);
++static ssize_t ahci_alpm_show_partial(struct device *dev,
++				  struct device_attribute *attr, char *buf);
++static ssize_t ahci_alpm_show_accounting(struct device *dev,
++				  struct device_attribute *attr, char *buf);
++static ssize_t ahci_alpm_set_accounting(struct device *dev,
++				  struct device_attribute *attr,
++				  const char *buf, size_t count);
+ static ssize_t ahci_led_show(struct ata_port *ap, char *buf);
+ static ssize_t ahci_led_store(struct ata_port *ap, const char *buf,
+ 			      size_t size);
+@@ -117,6 +128,12 @@ static DEVICE_ATTR(ahci_host_caps, S_IRU
+ static DEVICE_ATTR(ahci_host_cap2, S_IRUGO, ahci_show_host_cap2, NULL);
+ static DEVICE_ATTR(ahci_host_version, S_IRUGO, ahci_show_host_version, NULL);
+ static DEVICE_ATTR(ahci_port_cmd, S_IRUGO, ahci_show_port_cmd, NULL);
++static DEVICE_ATTR(ahci_alpm_active, S_IRUGO, ahci_alpm_show_active, NULL);
++static DEVICE_ATTR(ahci_alpm_partial, S_IRUGO, ahci_alpm_show_partial, NULL);
++static DEVICE_ATTR(ahci_alpm_slumber, S_IRUGO, ahci_alpm_show_slumber, NULL);
++static DEVICE_ATTR(ahci_alpm_accounting, S_IRUGO | S_IWUSR,
++		ahci_alpm_show_accounting, ahci_alpm_set_accounting);
++
+ static DEVICE_ATTR(em_buffer, S_IWUSR | S_IRUGO,
+ 		   ahci_read_em_buffer, ahci_store_em_buffer);
+ 
+@@ -128,6 +145,10 @@ struct device_attribute *ahci_shost_attr
+ 	&dev_attr_ahci_host_cap2,
+ 	&dev_attr_ahci_host_version,
+ 	&dev_attr_ahci_port_cmd,
++	&dev_attr_ahci_alpm_active,
++	&dev_attr_ahci_alpm_partial,
++	&dev_attr_ahci_alpm_slumber,
++	&dev_attr_ahci_alpm_accounting,
+ 	&dev_attr_em_buffer,
+ 	NULL
+ };
+@@ -653,9 +674,14 @@ static int ahci_set_lpm(struct ata_link 
+ 		 * Disable interrupts on Phy Ready. This keeps us from
+ 		 * getting woken up due to spurious phy ready
+ 		 * interrupts.
++		 *
++		 * However, when accounting_active is set, we do want
++		 * the interrupts for accounting purposes.
+ 		 */
+-		pp->intr_mask &= ~PORT_IRQ_PHYRDY;
+-		writel(pp->intr_mask, port_mmio + PORT_IRQ_MASK);
++		if (!pp->accounting_active) {
++			pp->intr_mask &= ~PORT_IRQ_PHYRDY;
++			writel(pp->intr_mask, port_mmio + PORT_IRQ_MASK);
++		}
+ 
+ 		sata_link_scr_lpm(link, policy, false);
+ 	}
+@@ -1570,6 +1596,162 @@ static void ahci_error_intr(struct ata_p
+ 		ata_port_abort(ap);
+ }
+ 
++static int get_current_alpm_state(struct ata_port *ap)
++{
++	u32 status = 0;
++
++	ahci_scr_read(&ap->link, SCR_STATUS, &status);
++
++	/* link status is in bits 11-8 */
++	status = status >> 8;
++	status = status & 0x7;
++
++	if (status == 6)
++		return AHCI_PORT_SLUMBER;
++	if (status == 2)
++		return AHCI_PORT_PARTIAL;
++	if (status == 1)
++		return AHCI_PORT_ACTIVE;
++	return AHCI_PORT_NOLINK;
++}
++
++static void account_alpm_stats(struct ata_port *ap)
++{
++	struct ahci_port_priv *pp;
++
++	int new_state;
++	u64 new_jiffies, jiffies_delta;
++
++	if (ap == NULL)
++		return;
++	pp = ap->private_data;
++
++	if (!pp) return;
++
++	new_state = get_current_alpm_state(ap);
++	new_jiffies = jiffies;
++
++	jiffies_delta = new_jiffies - pp->previous_jiffies;
++
++	switch (pp->previous_state) {
++	case AHCI_PORT_NOLINK:
++		pp->active_jiffies = 0;
++		pp->partial_jiffies = 0;
++		pp->slumber_jiffies = 0;
++		break;
++	case AHCI_PORT_ACTIVE:
++		pp->active_jiffies += jiffies_delta;
++		break;
++	case AHCI_PORT_PARTIAL:
++		pp->partial_jiffies += jiffies_delta;
++		break;
++	case AHCI_PORT_SLUMBER:
++		pp->slumber_jiffies += jiffies_delta;
++		break;
++	default:
++		break;
++	}
++	pp->previous_state = new_state;
++	pp->previous_jiffies = new_jiffies;
++}
++
++static ssize_t ahci_alpm_show_active(struct device *dev,
++				   struct device_attribute *attr, char *buf)
++{
++	struct Scsi_Host *shost = class_to_shost(dev);
(104 more lines skipped)

++++++ linux-2.6.37-rc3-vfs-dirty-inode.patch (new)
--- linux-2.6.37-rc3-vfs-dirty-inode.patch
+++ linux-2.6.37-rc3-vfs-dirty-inode.patch
+From 3950d3c04a6bf8ccf9ff912a49bdd242a2fe9e47 Mon Sep 17 00:00:00 2001
+From: Arjan van de Ven <arjan at linux.intel.com>
+Date: Fri, 26 Nov 2010 12:18:03 -0800
+Subject: [PATCH] vfs: Add a trace point in the mark_inode_dirty function
+
+PowerTOP would like to be able to show who is keeping the disk
+busy by dirtying data. The most logical spot for this is in the vfs
+in the mark_inode_dirty() function, doing this on the block level
+is not possible because by the time the IO hits the block layer the
+guilty party can no longer be found ("kjournald" and "pdflush" are not
+useful answers to "who caused this file to be dirty).
+
+The trace point follows the same logic/style as the block_dump code
+and pretty much dumps the same data, just not to dmesg (and thus to
+/var/log/messages) but via the trace events streams.
+
+Eventually we should be able to phase out the block dump code, but that's
+for later on after a transition time.
+
+Signed-of-by: Arjan van de Ven <arjan at linux.intel.com>
+---
+ fs/fs-writeback.c                |    3 +++
+ include/linux/fs.h               |   12 ++++++++++++
+ include/trace/events/writeback.h |   28 ++++++++++++++++++++++++++++
+ 3 files changed, 43 insertions(+), 0 deletions(-)
+
+diff --git a/fs/fs-writeback.c b/fs/fs-writeback.c
+index 3d06ccc..62e33cc 100644
+--- a/fs/fs-writeback.c
++++ b/fs/fs-writeback.c
+@@ -952,6 +952,9 @@ void __mark_inode_dirty(struct inode *inode, int flags)
+ 	if ((inode->i_state & flags) == flags)
+ 		return;
+ 
++	if (flags & (I_DIRTY_SYNC | I_DIRTY_DATASYNC | I_DIRTY_PAGES))
++		trace_writeback_inode_dirty(inode, flags);
++
+ 	if (unlikely(block_dump))
+ 		block_dump___mark_inode_dirty(inode);
+ 
+diff --git a/include/linux/fs.h b/include/linux/fs.h
+index c9e06cc..25935e1 100644
+--- a/include/linux/fs.h
++++ b/include/linux/fs.h
+@@ -1676,6 +1676,18 @@ struct super_operations {
+ 
+ #define I_DIRTY (I_DIRTY_SYNC | I_DIRTY_DATASYNC | I_DIRTY_PAGES)
+ 
++#define INODE_DIRTY_FLAGS \
++	{ I_DIRTY_SYNC,		"DIRTY-SYNC" }, \
++	{ I_DIRTY_DATASYNC,	"DIRTY-DATASYNC" }, \
++	{ I_DIRTY_PAGES,	"DIRTY-PAGES" }, \
++	{ I_NEW,		"NEW" }, \
++	{ I_WILL_FREE,		"WILL-FREE" }, \
++	{ I_FREEING,		"FREEING" }, \
++	{ I_CLEAR,		"CLEAR" }, \
++	{ I_SYNC,		"SYNC" }, \
++	{ I_REFERENCED,		"REFERENCED" }
++
++
+ extern void __mark_inode_dirty(struct inode *, int);
+ static inline void mark_inode_dirty(struct inode *inode)
+ {
+diff --git a/include/trace/events/writeback.h b/include/trace/events/writeback.h
+index 89a2b2d..5c80875 100644
+--- a/include/trace/events/writeback.h
++++ b/include/trace/events/writeback.h
+@@ -186,6 +186,34 @@ DEFINE_EVENT(writeback_congest_waited_template, writeback_wait_iff_congested,
+ 	TP_ARGS(usec_timeout, usec_delayed)
+ );
+ 
++/*
++ * Tracepoint for dirtying an inode; used by PowerTOP
++ */
++TRACE_EVENT(writeback_inode_dirty,
++
++	TP_PROTO(struct inode *inode, int flags),
++
++	TP_ARGS(inode, flags),
++
++	TP_STRUCT__entry(
++		__field(	__kernel_dev_t,	dev		)
++		__field(	ino_t,		ino		)
++		__field(	u32,		flags		)
++	),
++
++	TP_fast_assign(
++		__entry->dev	= inode->i_sb->s_dev;
++		__entry->ino	= inode->i_ino;
++		__entry->flags  = flags;
++	),
++
++	TP_printk("dev %d:%d ino %lu flags %d %s", MAJOR(__entry->dev), MINOR(__entry->dev),
++		  (unsigned long) __entry->ino,
++		  __entry->flags,
++		  __print_flags(__entry->flags, "|", INODE_DIRTY_FLAGS)
++	)
++);
++
+ #endif /* _TRACE_WRITEBACK_H */
+ 
+ /* This part must be outside protection */
+-- 
+1.7.2.3
+

++++++ linux-2.6.35.tar.bz2 -> linux-2.6.37.tar.bz2
3524329 lines of diff (skipped)

++++++ linux-2.6.38-ath3k.patch (new)
--- linux-2.6.38-ath3k.patch
+++ linux-2.6.38-ath3k.patch
+Add a known device to the supported table in ath3k, and blacklist it
+in btusb.  These devices claim to be USB Bluetooth before their
+firmware is loaded, and thus get claimed by btusb and won't work
+unless blacklisted.  When ath3k is loaded, they get flashed, change
+their device IDs, and get captured properly.
+
+Signed-off-by: Andy Ross <andy.ross at windriver.com>
+---
+ drivers/bluetooth/ath3k.c |    1 +
+ drivers/bluetooth/btusb.c |    1 +
+ 2 files changed, 2 insertions(+), 0 deletions(-)
+
+diff --git a/drivers/bluetooth/ath3k.c b/drivers/bluetooth/ath3k.c
+index 949ed09..6460957 100644
+--- a/drivers/bluetooth/ath3k.c
++++ b/drivers/bluetooth/ath3k.c
+@@ -38,6 +38,7 @@ static struct usb_device_id ath3k_table[] = {
+ 
+ 	/* Atheros AR3011 with sflash firmware*/
+ 	{ USB_DEVICE(0x0CF3, 0x3002) },
++	{ USB_DEVICE(0x13d3, 0x3304) },
+ 
+ 	{ }	/* Terminating entry */
+ };
+diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
+index 1da773f..5995602 100644
+--- a/drivers/bluetooth/btusb.c
++++ b/drivers/bluetooth/btusb.c
+@@ -101,6 +101,7 @@ static struct usb_device_id blacklist_table[] = {
+ 
+ 	/* Atheros 3011 with sflash firmware */
+ 	{ USB_DEVICE(0x0cf3, 0x3002), .driver_info = BTUSB_IGNORE },
++	{ USB_DEVICE(0x13d3, 0x3304), .driver_info = BTUSB_IGNORE },
+ 
+ 	/* Broadcom BCM2035 */
+ 	{ USB_DEVICE(0x0a5c, 0x2035), .driver_info = BTUSB_WRONG_SCO_MTU },
+-- 
+1.7.1
+

++++++ linux-2.6.38-egalax-tablet.patch (new)
--- linux-2.6.38-egalax-tablet.patch
+++ linux-2.6.38-egalax-tablet.patch
+From: Kwanhong Lee <kwanhong.lee at windriver.com>
+
+Backported eGalax touch release handling from input-mt tree to support newer
+devices.
+
+Signed-off-by: Andy Ross <andy.ross at windriver.com>
+---
+ drivers/hid/hid-core.c   |    2 ++
+ drivers/hid/hid-egalax.c |   45 +++++++++++++++++++++++----------------------
+ drivers/hid/hid-ids.h    |    2 ++
+ 3 files changed, 27 insertions(+), 22 deletions(-)
+
+diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c
+index 88cb04e..e33c750 100644
+--- a/drivers/hid/hid-core.c
++++ b/drivers/hid/hid-core.c
+@@ -1300,6 +1300,8 @@ static const struct hid_device_id hid_blacklist[] = {
+ 	{ HID_USB_DEVICE(USB_VENDOR_ID_DRAGONRISE, 0x0006) },
+ 	{ HID_USB_DEVICE(USB_VENDOR_ID_DWAV, USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH) },
+ 	{ HID_USB_DEVICE(USB_VENDOR_ID_DWAV, USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH1) },
++	{ HID_USB_DEVICE(USB_VENDOR_ID_DWAV, USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH2) },
++	{ HID_USB_DEVICE(USB_VENDOR_ID_DWAV, USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH3) },
+ 	{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_BM084) },
+ 	{ HID_USB_DEVICE(USB_VENDOR_ID_EZKEY, USB_DEVICE_ID_BTC_8193) },
+ 	{ HID_USB_DEVICE(USB_VENDOR_ID_GAMERON, USB_DEVICE_ID_GAMERON_DUAL_PSX_ADAPTOR) },
+diff --git a/drivers/hid/hid-egalax.c b/drivers/hid/hid-egalax.c
+index 5a1b52e..afd7535 100644
+--- a/drivers/hid/hid-egalax.c
++++ b/drivers/hid/hid-egalax.c
+@@ -28,10 +28,11 @@ MODULE_LICENSE("GPL");
+ struct egalax_data {
+ 	__u16 x, y, z;
+ 	__u8 id;
++	__u8 first_id;
+ 	bool first;		/* is this the first finger in the frame? */
+ 	bool valid;		/* valid finger data, or just placeholder? */
+ 	bool activity;		/* at least one active finger previously? */
+-	__u16 lastx, lasty, lastz;	/* latest valid (x, y, z) in the frame */
++	bool touch;
+ };
+ 
+ static int egalax_input_mapping(struct hid_device *hdev, struct hid_input *hi,
+@@ -109,8 +110,10 @@ static int egalax_input_mapped(struct hid_device *hdev, struct hid_input *hi,
+ static void egalax_filter_event(struct egalax_data *td, struct input_dev *input)
+ {
+ 	td->first = !td->first; /* touchscreen emulation */
++	if (!td->activity)
++		td->first_id = td->id;
+ 
+-	if (td->valid) {
++	if (td->touch) {
+ 		/* emit multitouch events */
+ 		input_event(input, EV_ABS, ABS_MT_TRACKING_ID, td->id);
+ 		input_event(input, EV_ABS, ABS_MT_POSITION_X, td->x >> 3);
+@@ -118,14 +121,6 @@ static void egalax_filter_event(struct egalax_data *td, struct input_dev *input)
+ 		input_event(input, EV_ABS, ABS_MT_PRESSURE, td->z);
+ 
+ 		input_mt_sync(input);
+-
+-		/*
+-		 * touchscreen emulation: store (x, y) as
+-		 * the last valid values in this frame
+-		 */
+-		td->lastx = td->x;
+-		td->lasty = td->y;
+-		td->lastz = td->z;
+ 	}
+ 
+ 	/*
+@@ -133,20 +128,17 @@ static void egalax_filter_event(struct egalax_data *td, struct input_dev *input)
+ 	 * one in this frame is valid, the latest valid in the frame is
+ 	 * the oldest on the panel, the one we want for single touch
+ 	 */
+-	if (!td->first && td->activity) {
+-		input_event(input, EV_ABS, ABS_X, td->lastx >> 3);
+-		input_event(input, EV_ABS, ABS_Y, td->lasty >> 3);
+- 		input_event(input, EV_ABS, ABS_PRESSURE, td->lastz);
++	if (td->first_id == td->id && td->touch) {
++		input_event(input, EV_ABS, ABS_X, td->x >> 3);
++		input_event(input, EV_ABS, ABS_Y, td->y >> 3);
++		input_event(input, EV_ABS, ABS_PRESSURE, td->z);
+ 	}
+ 
+-	if (!td->valid) {
+-		/*
+-		 * touchscreen emulation: if the first finger is invalid
+-		 * and there previously was finger activity, this is a release
+-		 */ 
+-		if (td->first && td->activity) {
++	if (!td->touch) {
++		if (td->activity && (td->first_id == td->id)) {
+ 			input_event(input, EV_KEY, BTN_TOUCH, 0);
+ 			td->activity = false;
++			td->first = false;
+ 		}
+ 		return;
+ 	}
+@@ -177,11 +169,13 @@ static int egalax_event(struct hid_device *hid, struct hid_field *field,
+ 
+ 		switch (usage->hid) {
+ 		case HID_DG_INRANGE:
++			td->valid = value;
++			break;
+ 		case HID_DG_CONFIDENCE:
+ 			/* avoid interference from generic hidinput handling */
+ 			break;
+ 		case HID_DG_TIPSWITCH:
+-			td->valid = value;
++			td->touch = value;
+ 			break;
+ 		case HID_DG_TIPPRESSURE:
+ 			td->z = value;
+@@ -195,7 +189,8 @@ static int egalax_event(struct hid_device *hid, struct hid_field *field,
+ 		case HID_GD_Y:
+ 			td->y = value;
+ 			/* this is the last field in a finger */
+-			egalax_filter_event(td, input);
++			if (td->valid)
++				egalax_filter_event(td, input);
+ 			break;
+ 		case HID_DG_CONTACTCOUNT:
+ 			/* touch emulation: this is the last field in a frame */
+@@ -226,6 +221,8 @@ static int egalax_probe(struct hid_device *hdev, const struct hid_device_id *id)
+ 		dev_err(&hdev->dev, "cannot allocate eGalax data\n");
+ 		return -ENOMEM;
+ 	}
++
++	td->activity = false;
+ 	hid_set_drvdata(hdev, td);
+ 
+ 	ret = hid_parse(hdev);
+@@ -261,6 +258,10 @@ static const struct hid_device_id egalax_devices[] = {
+ 			USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH) },
+ 	{ HID_USB_DEVICE(USB_VENDOR_ID_DWAV,
+ 			USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH1) },
++	{ HID_USB_DEVICE(USB_VENDOR_ID_DWAV,
++			USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH2) },
++	{ HID_USB_DEVICE(USB_VENDOR_ID_DWAV,
++			USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH3) },
+ 	{ }
+ };
+ MODULE_DEVICE_TABLE(hid, egalax_devices);
+diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
+index 3341baa..3ecc9ed 100644
+--- a/drivers/hid/hid-ids.h
++++ b/drivers/hid/hid-ids.h
+@@ -196,6 +196,8 @@
+ #define USB_DEVICE_ID_EGALAX_TOUCHCONTROLLER	0x0001
+ #define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH	0x480d
+ #define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH1	0x720c
++#define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH2	0x72a1
++#define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH3	0x726b
+ 
+ #define USB_VENDOR_ID_ELECOM		0x056e
+ #define USB_DEVICE_ID_ELECOM_BM084	0x0061
+-- 
+1.7.1
+

++++++ makespec.pl
--- makespec.pl
+++ makespec.pl
@@ -3,14 +3,14 @@
 use strict;
 
 my $want_main = 0;
-my $want_mid = 0;
 my $want_netbook = 0;
 my $want_ivi = 0;
-my $want_menlow = 0;
 my $want_n900 = 0;
+my $want_panda = 0;
+my $want_u8500 = 0;
 
 
-sub do_Patch
+sub do_patch_source
 {
   my $patchcounter = 1;
   open MYFILE, "<series" || die "Cannot open series\n";;
@@ -27,7 +27,7 @@
       print "$line\n";
       next;
     }
-    
+
     # ok now we have a patch
     print "Patch$patchcounter: $line\n";
     $patchcounter = $patchcounter + 1;
@@ -35,7 +35,7 @@
   close MYFILE;
 }
 
-sub do_patch
+sub do_patch_apply
 {
   my $patchcounter = 1;
   open MYFILE, "<series" || die "Cannot open series\n";;
@@ -52,7 +52,7 @@
       print "$line\n";
       next;
     }
-    
+
     # ok now we have a patch
     print "# $line\n";
     print "\%patch$patchcounter -p1\n";
@@ -65,84 +65,82 @@
 if ( -e "./MAIN") {
   $want_main = 1;
 }
-if ( -e "./MID") {
-  $want_mid = 1;
-}
 if ( -e "./IVI") {
   $want_ivi = 1;
 }
-if ( -e "./MENLOW") {
-  $want_menlow = 1;
-}
 if ( -e "./NETBOOK") {
   $want_netbook = 1;
 }
-
 if ( -e "./N900") {
   $want_n900 = 1;
 }
+if ( -e "./PANDA") {
+  $want_panda = 1;
+}
+if ( -e "./U8500") {
+  $want_u8500 = 1;
+}
 
 while (<>) {
   my $line = $_;
   chomp($line);
-  
+
   if ($line =~ /\@\@/) {
 
-    # Moorsetown only lines
-    if ($want_mid > 0 && $line =~ /^\@\@M (.*)/) {
+    if ($want_netbook > 0 && $line =~ /^\@\@NETBOOK (.*)/) {
         print "$1\n";
         next;
     }
-    if ($want_netbook > 0 && $line =~ /^\@\@N (.*)/) {
+    if ($want_ivi > 0 && $line =~ /^\@\@IVI (.*)/) {
         print "$1\n";
         next;
     }
-    if ($want_ivi > 0 && $line =~ /^\@\@I (.*)/) {
+    if ($want_n900 > 0 && $line =~ /^\@\@N900 (.*)/) {
         print "$1\n";
         next;
     }
-    if ($want_n900 > 0 && $line =~ /^\@\@N900 (.*)/) {
+    if ($want_panda > 0 && $line =~ /^\@\@PANDA (.*)/) {
         print "$1\n";
         next;
     }
-    if ($want_menlow > 0 && $line =~ /^\@\@W (.*)/) {
+    if ($want_u8500 > 0 && $line =~ /^\@\@U8500 (.*)/) {
         print "$1\n";
         next;
     }
-    if ($want_main > 0 && $line =~ /^\@\@S (.*)/) {
+    if ($want_main > 0 && $line =~ /^\@\@MAIN (.*)/) {
         print "$1\n";
         next;
     }
 
-    if ($want_mid > 0 && $want_main == 1 && $line =~ /\@\@\@M (.*)/) {
+    if ($want_netbook > 0 && $want_main == 1 && $line =~ /\@\@\@NETBOOK (.*)/) {
         print "$1\n";
         next;
     }
-    if ($want_netbook > 0 && $want_main == 1 && $line =~ /\@\@\@N (.*)/) {
+    if ($want_ivi > 0 && $want_main == 1 && $line =~ /\@\@\@IVI (.*)/) {
         print "$1\n";
         next;
     }
-    if ($want_ivi > 0 && $want_main == 1 && $line =~ /\@\@\@I (.*)/) {
+    if ($want_n900 > 0 && $want_main == 1 && $line =~ /\@\@\@N900 (.*)/) {
         print "$1\n";
         next;
     }
-    if ($want_n900 > 0 && $want_main == 1 && $line =~ /\@\@\@N900 (.*)/) {
+    if ($want_panda > 0 && $want_main == 1 && $line =~ /\@\@\@PANDA (.*)/) {
         print "$1\n";
         next;
     }
-    if ($want_menlow > 0 && $want_main == 1 && $line =~ /\@\@\@W (.*)/) {
+    if ($want_u8500 > 0 && $want_main == 1 && $line =~ /\@\@\@U8500 (.*)/) {
         print "$1\n";
         next;
     }
 
     # Patch directive
-    if ($line =~ /\@\@P/) {
-        do_Patch();
+    if ($line =~ /^\@\@PATCHSOURCE$/) {
+        do_patch_source();
         next;
     }
     # patch directive
-    if ($line =~ /\@\@p/) {
-        do_patch();
+    if ($line =~ /^\@\@PATCHAPPLY$/) {
+        do_patch_apply();
         next;
     }
   } else {

++++++ patch-2.6.37.2.bz2 (new)
--- patch-2.6.37.2.bz2
+++ patch-2.6.37.2.bz2
+diff --git a/Documentation/hwmon/jc42 b/Documentation/hwmon/jc42
+index 0e76ef1..a22ecf4 100644
+--- a/Documentation/hwmon/jc42
++++ b/Documentation/hwmon/jc42
+@@ -51,7 +51,8 @@ Supported chips:
+   * JEDEC JC 42.4 compliant temperature sensor chips
+     Prefix: 'jc42'
+     Addresses scanned: I2C 0x18 - 0x1f
+-    Datasheet: -
++    Datasheet:
++	http://www.jedec.org/sites/default/files/docs/4_01_04R19.pdf
+ 
+ Author:
+ 	Guenter Roeck <guenter.roeck at ericsson.com>
+@@ -60,7 +61,11 @@ Author:
+ Description
+ -----------
+ 
+-This driver implements support for JEDEC JC 42.4 compliant temperature sensors.
++This driver implements support for JEDEC JC 42.4 compliant temperature sensors,
++which are used on many DDR3 memory modules for mobile devices and servers. Some
++systems use the sensor to prevent memory overheating by automatically throttling
++the memory controller.
++
+ The driver auto-detects the chips listed above, but can be manually instantiated
+ to support other JC 42.4 compliant chips.
+ 
+@@ -81,15 +86,19 @@ limits. The chip supports only a single register to configure the hysteresis,
+ which applies to all limits. This register can be written by writing into
+ temp1_crit_hyst. Other hysteresis attributes are read-only.
+ 
++If the BIOS has configured the sensor for automatic temperature management, it
++is likely that it has locked the registers, i.e., that the temperature limits
++cannot be changed.
++
+ Sysfs entries
+ -------------
+ 
+ temp1_input		Temperature (RO)
+-temp1_min		Minimum temperature (RW)
+-temp1_max		Maximum temperature (RW)
+-temp1_crit		Critical high temperature (RW)
++temp1_min		Minimum temperature (RO or RW)
++temp1_max		Maximum temperature (RO or RW)
++temp1_crit		Critical high temperature (RO or RW)
+ 
+-temp1_crit_hyst		Critical hysteresis temperature (RW)
++temp1_crit_hyst		Critical hysteresis temperature (RO or RW)
+ temp1_max_hyst		Maximum hysteresis temperature (RO)
+ 
+ temp1_min_alarm		Temperature low alarm
+diff --git a/Documentation/hwmon/k10temp b/Documentation/hwmon/k10temp
+index 6526eee..d2b56a4 100644
+--- a/Documentation/hwmon/k10temp
++++ b/Documentation/hwmon/k10temp
+@@ -9,6 +9,8 @@ Supported chips:
+   Socket S1G3: Athlon II, Sempron, Turion II
+ * AMD Family 11h processors:
+   Socket S1G2: Athlon (X2), Sempron (X2), Turion X2 (Ultra)
++* AMD Family 12h processors: "Llano"
++* AMD Family 14h processors: "Brazos" (C/E/G-Series)
+ 
+   Prefix: 'k10temp'
+   Addresses scanned: PCI space
+@@ -17,10 +19,14 @@ Supported chips:
+     http://support.amd.com/us/Processor_TechDocs/31116.pdf
+   BIOS and Kernel Developer's Guide (BKDG) for AMD Family 11h Processors:
+     http://support.amd.com/us/Processor_TechDocs/41256.pdf
++  BIOS and Kernel Developer's Guide (BKDG) for AMD Family 14h Models 00h-0Fh Processors:
++    http://support.amd.com/us/Processor_TechDocs/43170.pdf
+   Revision Guide for AMD Family 10h Processors:
+     http://support.amd.com/us/Processor_TechDocs/41322.pdf
+   Revision Guide for AMD Family 11h Processors:
+     http://support.amd.com/us/Processor_TechDocs/41788.pdf
++  Revision Guide for AMD Family 14h Models 00h-0Fh Processors:
++    http://support.amd.com/us/Processor_TechDocs/47534.pdf
+   AMD Family 11h Processor Power and Thermal Data Sheet for Notebooks:
+     http://support.amd.com/us/Processor_TechDocs/43373.pdf
+   AMD Family 10h Server and Workstation Processor Power and Thermal Data Sheet:
+@@ -34,7 +40,7 @@ Description
+ -----------
+ 
+ This driver permits reading of the internal temperature sensor of AMD
+-Family 10h and 11h processors.
++Family 10h/11h/12h/14h processors.
+ 
+ All these processors have a sensor, but on those for Socket F or AM2+,
+ the sensor may return inconsistent values (erratum 319).  The driver
+diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
+index 01ece1b..596bb3c 100644
+--- a/Documentation/kernel-parameters.txt
++++ b/Documentation/kernel-parameters.txt
+@@ -884,6 +884,7 @@ and is between 256 and 4096 characters. It is defined in the file
+ 			     controller
+ 	i8042.nopnp	[HW] Don't use ACPIPnP / PnPBIOS to discover KBD/AUX
+ 			     controllers
++	i8042.notimeout	[HW] Ignore timeout condition signalled by conroller
+ 	i8042.reset	[HW] Reset the controller during init and cleanup
+ 	i8042.unlock	[HW] Unlock (ignore) the keylock
+ 
+diff --git a/Makefile b/Makefile
+index 74b2555..b3cdfa5 100644
+--- a/Makefile
++++ b/Makefile
+@@ -1,7 +1,7 @@
+ VERSION = 2
+ PATCHLEVEL = 6
+ SUBLEVEL = 37
+-EXTRAVERSION =
++EXTRAVERSION = .2
+ NAME = Flesh-Eating Bats with Fangs
+ 
+ # *DOCUMENTATION*
+diff --git a/arch/arm/kernel/head.S b/arch/arm/kernel/head.S
+index 6bd82d2..7306b8e 100644
+--- a/arch/arm/kernel/head.S
++++ b/arch/arm/kernel/head.S
+@@ -91,6 +91,11 @@ ENTRY(stext)
+ 	movs	r8, r5				@ invalid machine (r5=0)?
+  THUMB( it	eq )		@ force fixup-able long branch encoding
+ 	beq	__error_a			@ yes, error 'a'
++
++	/*
++	 * r1 = machine no, r2 = atags,
++	 * r8 = machinfo, r9 = cpuid, r10 = procinfo
++	 */
+ 	bl	__vet_atags
+ #ifdef CONFIG_SMP_ON_UP
+ 	bl	__fixup_smp
+@@ -387,34 +392,32 @@ ENDPROC(__turn_mmu_on)
+ 
+ #ifdef CONFIG_SMP_ON_UP
+ __fixup_smp:
+-	mov	r7, #0x00070000
+-	orr	r6, r7, #0xff000000	@ mask 0xff070000
+-	orr	r7, r7, #0x41000000	@ val 0x41070000
+-	and	r0, r9, r6
+-	teq	r0, r7			@ ARM CPU and ARMv6/v7?
++	and	r3, r9, #0x000f0000	@ architecture version
++	teq	r3, #0x000f0000		@ CPU ID supported?
+ 	bne	__fixup_smp_on_up	@ no, assume UP
+ 
+-	orr	r6, r6, #0x0000ff00
+-	orr	r6, r6, #0x000000f0	@ mask 0xff07fff0
+-	orr	r7, r7, #0x0000b000
+-	orr	r7, r7, #0x00000020	@ val 0x4107b020
+-	and	r0, r9, r6
+-	teq	r0, r7			@ ARM 11MPCore?
++	bic	r3, r9, #0x00ff0000
++	bic	r3, r3, #0x0000000f	@ mask 0xff00fff0
++	mov	r4, #0x41000000
++	orr	r4, r4, #0x0000b000
++	orr	r4, r4, #0x00000020	@ val 0x4100b020
++	teq	r3, r4			@ ARM 11MPCore?
+ 	moveq	pc, lr			@ yes, assume SMP
+ 
+ 	mrc	p15, 0, r0, c0, c0, 5	@ read MPIDR
+-	tst	r0, #1 << 31
+-	movne	pc, lr			@ bit 31 => SMP
++	and	r0, r0, #0xc0000000	@ multiprocessing extensions and
++	teq	r0, #0x80000000		@ not part of a uniprocessor system?
++	moveq	pc, lr			@ yes, assume SMP
+ 
+ __fixup_smp_on_up:
+ 	adr	r0, 1f
+-	ldmia	r0, {r3, r6, r7}
++	ldmia	r0, {r3 - r5}
+ 	sub	r3, r0, r3
+-	add	r6, r6, r3
+-	add	r7, r7, r3
+-2:	cmp	r6, r7
+-	ldmia	r6!, {r0, r4}
+-	strlo	r4, [r0, r3]
++	add	r4, r4, r3
++	add	r5, r5, r3
++2:	cmp	r4, r5
++	ldmia	r4!, {r0, r6}
++	strlo	r6, [r0, r3]
+ 	blo	2b
+ 	mov	pc, lr
+ ENDPROC(__fixup_smp)
+diff --git a/arch/arm/kernel/signal.c b/arch/arm/kernel/signal.c
+index 907d5a6..abaf844 100644
+--- a/arch/arm/kernel/signal.c
++++ b/arch/arm/kernel/signal.c
+@@ -474,7 +474,9 @@ setup_return(struct pt_regs *regs, struct k_sigaction *ka,
+ 	unsigned long handler = (unsigned long)ka->sa.sa_handler;
+ 	unsigned long retcode;
+ 	int thumb = 0;
+-	unsigned long cpsr = regs->ARM_cpsr & ~PSR_f;
++	unsigned long cpsr = regs->ARM_cpsr & ~(PSR_f | PSR_E_BIT);
++
++	cpsr |= PSR_ENDSTATE;
+ 
+ 	/*
+ 	 * Maybe we need to deliver a 32-bit signal to a 26-bit task.
+diff --git a/arch/arm/kernel/vmlinux.lds.S b/arch/arm/kernel/vmlinux.lds.S
+index cead889..223ba96 100644
(12575 more lines skipped)

++++++ series
--- series
+++ series
@@ -2,92 +2,106 @@
 # linux-<version it is supposed to be upstream>-<description-separated-with-dashes>.patch
 #
 
-#
-# Patch to add a "nonintconfig" option to the Makefile
-# needed for unattended builds
-#
-linux-2.6-build-nonintconfig.patch
 
-#####################################################################
 #
-# Boot time and power patches
-# Section maintainer:  Arjan van de Ven <arjan at linux.intel.com
+# Stable patch - critical bugfixes
 #
 
+
 #
-# Patch to try mounting / before all devices (the mouse)
-# are done probing. This saves several seconds of boot time.
-#
-#linux-2.6.35-dont-wait-for-mouse.patch
-#
-# Patch to support the old sreadahead versions
+# Daily development snapshots
 #
-#linux-2.6.35-sreadahead.patch
 
+#####################################################################
 #
-# Patches to help PowerTOP
+# Direct Backport section.. only patches already in Linus' or maintainer git trees
+# (for linux-next) should go here.
+# We will regularly drop patches from this section as we rebase to newer
+# kernels.
+
+
+# Driver backports, new device IDs and the like
+linux-2.6.38-ath3k.patch
+linux-2.6.38-egalax-tablet.patch
 #
-#linux-2.6.35-vfs-tracepoints.patch
-#linux-2.6.35-ahci-alpm-accounting.patch
-#linux-2.6.35-annotate-device-pm.patch
+
+# Kernel CVE patches - these go last in the backport section
+# no non-cve patches should go here!
+
 
 #
-# Fix the slab timer to not be a power hog
+# End of the Direct Backports section
 #
-#linux-2.6.35-slab-timer.patch
+#####################################################################
 
+
+
+
+
+#####################################################################
 #
-# Fix Linux deliberately skewing the timer for
-# historic reasons that are no longer true.
+# Boot time and power patches
+# Section maintainer:  Arjan van de Ven <arjan at linux.intel.com
 #
-#linux-2.6.35-dont-skew-the-tick.patch
 
 #
-# Atom C state fixes
+# Patches to help PowerTOP
 #
-# linux-2.6.35-intel-idle.patch
+linux-2.6.37-rc3-vfs-dirty-inode.patch
+linux-2.6.37-rc1-ahci-alpm-accounting.patch
 
 #
 # End of the boot time and power patches
 #
 #####################################################################
 
+
+
 #####################################################################
 #
 # All other patches
 #
-#linux-2.6.35-fatal-signals.patch
 
 #
-# Add support for STM ConneXt IOH
+# ConneXt drivers
 #
-linux-2.6.35-connext-0001-common.patch
-linux-2.6.35-connext-0002-gpio.patch
-linux-2.6.35-connext-0003-pcie-amba.patch
-linux-2.6.35-connext-0004-dma.patch
-linux-2.6.35-connext-0005-uart.patch
-linux-2.6.35-connext-0006-sata.patch
-linux-2.6.35-connext-0007-eth.patch
-linux-2.6.35-connext-0008-usb.patch
-linux-2.6.35-connext-0009-mmc.patch
-linux-2.6.35-connext-0010-can.patch
-linux-2.6.35-connext-0011-i2c.patch
-linux-2.6.35-connext-0012-spi.patch
-linux-2.6.35-connext-0013-video-input.patch
-linux-2.6.35-connext-0014-usb-otg.patch
-linux-2.6.35-connext-0015-msp.patch
-linux-2.6.35-connext-0016-fm-radio.patch
-linux-2.6.35-connext-0017-tsc2007.patch
-linux-2.6.35-connext-0018-mapper.patch
-#
-# Add EMGD
-#
-linux-2.6.35-emgd-0001-add-makefile.patch
-linux-2.6.35-emgd-0002-initial-import-1812.patch
-linux-2.6.35-emgd-0003-1859-build.patch
-linux-2.6.35-emgd-0004-add-2.6.37-support.patch
-
-#
-# End of all other patches
-#
-#####################################################################
+linux-2.6.37-connext-0001-pcie-amba.patch
+linux-2.6.37-connext-0002-gpio.patch
+linux-2.6.37-connext-0003-dma.patch
+linux-2.6.37-connext-0004-uart.patch
+linux-2.6.37-connext-0005-sata.patch
+linux-2.6.37-connext-0006-eth.patch
+linux-2.6.37-connext-0007-mmc.patch
+linux-2.6.37-connext-0008-i2c.patch
+linux-2.6.37-connext-0009-can.patch
+linux-2.6.37-connext-0010-mlb.patch
+linux-2.6.37-connext-0011-video-input.patch
+linux-2.6.37-connext-0012-msp.patch
+linux-2.6.37-connext-0013-fm-radio.patch
+linux-2.6.37-connext-0014-usb-otg.patch
+linux-2.6.37-connext-0015-common-cut1.patch
+linux-2.6.37-connext-0016-pcie-amba-cut1.patch
+linux-2.6.37-connext-0017-uart-cut1.patch
+linux-2.6.37-connext-0018-sata-cut1.patch
+linux-2.6.37-connext-0019-usb-cut1.patch
+linux-2.6.37-connext-0020-eth-cut1.patch
+linux-2.6.37-connext-0021-mmc-cut1.patch
+linux-2.6.37-connext-0022-i2c-cut1.patch
+linux-2.6.37-connext-0023-can-cut1.patch
+linux-2.6.37-connext-0024-mlb-cut1.patch
+linux-2.6.37-connext-0025-msp-cut1.patch
+linux-2.6.37-connext-0026-usb-otg-cut1.patch
+linux-2.6.37-connext-0027-tsc2007.patch
+linux-2.6.37-connext-0028-mapper.patch
+
+#
+# EMGD
+# 
+linux-2.6.37-emgd-0001-initial-import-1812.patch
+linux-2.6.37-emgd-0002-add-makefile.patch
+linux-2.6.37-emgd-0003-1859-build.patch
+linux-2.6.37-emgd-0004-add-2.6.37-support.patch
+
+# turn on "print fatal signals" by default, so that we can debug /sbin/init
+# crashes
+linux-2.6.35-fatal-signals.patch

++++++ deleted files:
--- linux-2.6-build-nonintconfig.patch
--- linux-2.6.35-ahci-alpm-accounting.patch
--- linux-2.6.35-annotate-device-pm.patch
--- linux-2.6.35-connext-0001-common.patch
--- linux-2.6.35-connext-0002-gpio.patch
--- linux-2.6.35-connext-0003-pcie-amba.patch
--- linux-2.6.35-connext-0004-dma.patch
--- linux-2.6.35-connext-0005-uart.patch
--- linux-2.6.35-connext-0006-sata.patch
--- linux-2.6.35-connext-0007-eth.patch
--- linux-2.6.35-connext-0008-usb.patch
--- linux-2.6.35-connext-0009-mmc.patch
--- linux-2.6.35-connext-0010-can.patch
--- linux-2.6.35-connext-0011-i2c.patch
--- linux-2.6.35-connext-0012-spi.patch
--- linux-2.6.35-connext-0013-video-input.patch
--- linux-2.6.35-connext-0014-usb-otg.patch
--- linux-2.6.35-connext-0015-msp.patch
--- linux-2.6.35-connext-0016-fm-radio.patch
--- linux-2.6.35-connext-0018-mapper.patch
--- linux-2.6.35-dont-skew-the-tick.patch
--- linux-2.6.35-dont-wait-for-mouse.patch
--- linux-2.6.35-emgd-0001-add-makefile.patch
--- linux-2.6.35-emgd-0003-1859-build.patch
--- linux-2.6.35-emgd-0004-add-2.6.37-support.patch
--- linux-2.6.35-intel-idle.patch
--- linux-2.6.35-slab-timer.patch
--- linux-2.6.35-sreadahead.patch
--- linux-2.6.35-vfs-tracepoints.patch
--- patch-2.6.35.10.bz2



More information about the MeeGo-commits mailing list