[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(>t_sem);
++ mutex_lock(>t_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(>t_sem);
++ mutex_unlock(>t_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(>t_sem);
++ mutex_lock(>t_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(>t_sem);
++ mutex_unlock(>t_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