summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--conf/distro/include/preferred-om-2008-versions.inc2
-rw-r--r--conf/distro/include/preferred-xorg-versions-X11R7.0.inc6
-rw-r--r--conf/distro/include/preferred-xorg-versions-X11R7.1.inc6
-rw-r--r--conf/distro/include/preferred-xorg-versions-X11R7.2.inc5
-rw-r--r--conf/distro/include/preferred-xorg-versions-X11R7.3.inc5
-rw-r--r--conf/distro/include/preferred-xorg-versions-X11R7.4.inc6
-rw-r--r--conf/distro/include/preferred-xorg-versions.inc4
-rw-r--r--conf/distro/include/sane-srcrevs.inc2
-rw-r--r--conf/distro/openmoko.conf2
-rw-r--r--conf/machine/nokia770.conf2
-rw-r--r--packages/amule/.mtn2git_empty (renamed from packages/xorg-lib/diet-x11/.mtn2git_empty)0
-rw-r--r--packages/amule/amule_2.1.3.bb25
-rw-r--r--packages/amule/files/.mtn2git_empty (renamed from packages/xorg-lib/files/.mtn2git_empty)0
-rw-r--r--packages/amule/files/parser.patch20
-rw-r--r--packages/gtk-webcore/osb-nrcore.inc5
-rw-r--r--packages/ipkg/files/update_version_comparision.patch82
-rw-r--r--packages/ipkg/ipkg-native_0.99.163.bb3
-rw-r--r--packages/ipkg/ipkg.inc1
-rw-r--r--packages/ipkg/ipkg_0.99.163.bb2
-rw-r--r--packages/linux/linux-2.6.23/mpc8313e-rdb/defconfig84
-rw-r--r--packages/linux/linux-2.6.23/mpc8313e-rdb/mpc8313e-rdb-leds.patch10
-rw-r--r--packages/linux/linux-2.6.24/mpc8313e-rdb/defconfig78
-rw-r--r--packages/linux/linux-2.6.24/mpc8313e-rdb/mpc8313e-rdb-leds.patch10
-rw-r--r--packages/linux/linux-2.6.24/mpc8313e-rdb/mpc831x-nand.patch1807
-rw-r--r--packages/linux/linux_2.6.23.bb2
-rw-r--r--packages/linux/linux_2.6.24.bb3
-rw-r--r--packages/psplash/files/logo-math.patch2
-rw-r--r--packages/xorg-lib/diet-x11/autofoo.patch22
-rw-r--r--packages/xorg-lib/diet-x11/makekeys.diff12
-rw-r--r--packages/xorg-lib/diet-x11_1.1.1.bb2
-rw-r--r--packages/xorg-lib/diet-x11_1.1.2.bb2
-rw-r--r--packages/xorg-lib/diet-x11_1.1.3.bb2
-rw-r--r--packages/xorg-lib/files/errordb-keysymdb-path-fix.patch22
-rw-r--r--packages/xorg-lib/files/fix-utf8-wrong-define.patch16
-rw-r--r--packages/xorg-lib/libice/.mtn2git_empty0
-rw-r--r--packages/xorg-lib/libice/autofoo.patch21
-rw-r--r--packages/xorg-lib/liblbxutil/mkg3states-1.0.0.patch54
-rw-r--r--packages/xorg-lib/libsm/.mtn2git_empty0
-rw-r--r--packages/xorg-lib/libsm/autofoo.patch21
-rw-r--r--packages/xorg-lib/libx11/X18NCMSstubs.diff (renamed from packages/xorg-lib/diet-x11/X18NCMSstubs.diff)0
-rw-r--r--packages/xorg-lib/libx11/autofoo.patch22
-rw-r--r--packages/xorg-lib/libx11/fix-disable-xlocale.diff (renamed from packages/xorg-lib/diet-x11/fix-disable-xlocale.diff)0
-rw-r--r--packages/xorg-lib/libx11/fix-utf8-wrong-define.patch (renamed from packages/xorg-lib/diet-x11/fix-utf8-wrong-define.patch)0
-rw-r--r--packages/xorg-lib/libx11/ruutf8.patch (renamed from packages/xorg-lib/files/ruutf8.patch)0
-rw-r--r--packages/xorg-lib/libx11/xchar2b.patch (renamed from packages/xorg-lib/diet-x11/xchar2b.patch)0
-rw-r--r--packages/xorg-lib/libx11/xim.patch (renamed from packages/xorg-lib/diet-x11/xim.patch)0
-rw-r--r--packages/xorg-lib/libxau/.mtn2git_empty0
-rw-r--r--packages/xorg-lib/libxau/autofoo.patch21
-rw-r--r--packages/xorg-lib/libxaw/.mtn2git_empty0
-rw-r--r--packages/xorg-lib/libxaw/auxdir.patch10
-rw-r--r--packages/xorg-lib/libxcalibrate/.mtn2git_empty0
-rw-r--r--packages/xorg-lib/libxcalibrate/coords.patch50
-rw-r--r--packages/xorg-lib/libxcalibrate_git.bb6
-rw-r--r--packages/xorg-lib/libxcomposite-1.0.1/.mtn2git_empty0
-rw-r--r--packages/xorg-lib/libxcomposite-1.0.1/autofoo.patch17
-rw-r--r--packages/xorg-lib/libxcursor-1.1.2/.mtn2git_empty0
-rw-r--r--packages/xorg-lib/libxcursor-1.1.2/autofoo.patch20
-rw-r--r--packages/xorg-lib/libxcursor/.mtn2git_empty0
-rw-r--r--packages/xorg-lib/libxcursor/autofoo.patch22
-rw-r--r--packages/xorg-lib/libxdamage-1.0.1/.mtn2git_empty0
-rw-r--r--packages/xorg-lib/libxdamage-1.0.1/autofoo.patch17
-rw-r--r--packages/xorg-lib/libxdamage/.mtn2git_empty0
-rw-r--r--packages/xorg-lib/libxdamage/m4.patch65
-rw-r--r--packages/xorg-lib/libxdmcp/.mtn2git_empty0
-rw-r--r--packages/xorg-lib/libxdmcp/autofoo.patch22
-rw-r--r--packages/xorg-lib/libxext/.mtn2git_empty0
-rw-r--r--packages/xorg-lib/libxext/autofoo.patch18
-rw-r--r--packages/xorg-lib/libxfixes/.mtn2git_empty0
-rw-r--r--packages/xorg-lib/libxfixes/autofoo.patch20
-rw-r--r--packages/xorg-lib/libxfont/autofoo.patch18
-rw-r--r--packages/xorg-lib/libxfont/scalable.patch27
-rw-r--r--packages/xorg-lib/libxft/.mtn2git_empty0
-rw-r--r--packages/xorg-lib/libxft/autofoo.patch21
-rw-r--r--packages/xorg-lib/libxi/.mtn2git_empty0
-rw-r--r--packages/xorg-lib/libxi/autofoo.patch12
-rw-r--r--packages/xorg-lib/libxpm/.mtn2git_empty0
-rw-r--r--packages/xorg-lib/libxpm/autofoo.patch18
-rw-r--r--packages/xorg-lib/libxrandr-1.0.2/.mtn2git_empty0
-rw-r--r--packages/xorg-lib/libxrandr-1.0.2/autofoo.patch20
-rw-r--r--packages/xorg-lib/libxrandr/.mtn2git_empty0
-rw-r--r--packages/xorg-lib/libxrandr/autofoo.patch30
-rw-r--r--packages/xorg-lib/libxrender/.mtn2git_empty0
-rw-r--r--packages/xorg-lib/libxrender/autofoo.patch20
-rw-r--r--packages/xorg-lib/libxt/.mtn2git_empty0
-rw-r--r--packages/xorg-lib/libxt/autofoo.patch20
-rw-r--r--packages/xorg-proto/calibrateproto/.mtn2git_empty0
-rw-r--r--packages/xorg-proto/calibrateproto/coords.patch56
-rw-r--r--packages/xorg-proto/calibrateproto_git.bb6
-rw-r--r--packages/xorg-proto/renderproto_0.9.3.bb2
-rw-r--r--packages/xorg-xserver/files/fix-picturestr-include-order.patch (renamed from packages/xorg-xserver/xserver-kdrive/fix-picturestr-include-order.patch)0
-rw-r--r--packages/xorg-xserver/xserver-kdrive-xomap_1.1.99.3.bb2
91 files changed, 2020 insertions, 890 deletions
diff --git a/conf/distro/include/preferred-om-2008-versions.inc b/conf/distro/include/preferred-om-2008-versions.inc
index 5641c8ee39..9d002f617b 100644
--- a/conf/distro/include/preferred-om-2008-versions.inc
+++ b/conf/distro/include/preferred-om-2008-versions.inc
@@ -1,7 +1,7 @@
PREFERRED_VERSION_dbus = "1.1.4"
PREFERRED_VERSION_busybox = "1.9.1"
PREFERRED_VERSION_gst-pulse = "0.9.7"
-PREFERRED_VERSION_libtool = "1.2.14"
+PREFERRED_VERSION_libtool = "1.5.24"
PREFERRED_VERSION_pulseaudio = "0.9.9"
PREFERRED_VERSION_udev = "118"
PREFERRED_VERSION_vte = "0.16.10"
diff --git a/conf/distro/include/preferred-xorg-versions-X11R7.0.inc b/conf/distro/include/preferred-xorg-versions-X11R7.0.inc
index 6db9d92f71..5a391aa45a 100644
--- a/conf/distro/include/preferred-xorg-versions-X11R7.0.inc
+++ b/conf/distro/include/preferred-xorg-versions-X11R7.0.inc
@@ -339,3 +339,9 @@ PREFERRED_VERSION_util-macros-native = "X11R7.0-1.0.1"
PREFERRED_VERSION_util-macros = "X11R7.0-1.0.1"
PREFERRED_VERSION_xorg-cf-files = "X11R7.0-1.0.1"
PREFERRED_VERSION_xserver-xorg = "X11R7.0-1.0.1"
+
+# Unreleased Packages
+SRCREV_pn-libxcalibrate ?= "7b8e29186097170e930de634a4a68072558aa056"
+PV_pn-libxcalibrate ?= "0.0-oe1-${SRCREV}"
+SRCREV_pn-calibrateproto ?= "1da6fd1e2c7a49648245c98481fabea8b9690a8c"
+PV_pn-calibrateproto ?= "0.0-oe1-${SRCREV}"
diff --git a/conf/distro/include/preferred-xorg-versions-X11R7.1.inc b/conf/distro/include/preferred-xorg-versions-X11R7.1.inc
index 782549589d..c387161577 100644
--- a/conf/distro/include/preferred-xorg-versions-X11R7.1.inc
+++ b/conf/distro/include/preferred-xorg-versions-X11R7.1.inc
@@ -183,3 +183,9 @@ PREFERRED_VERSION_util-macros ?= "X11R7.1-1.0.2"
PREFERRED_VERSION_xorg-cf-files ?= "X11R7.1-1.0.2"
PREFERRED_VERSION_xserver-kdrive ?= "X11R7.1-1.1.0"
PREFERRED_VERSION_xserver-xorg ?= "X11R7.1-1.1.0"
+
+# Unreleased packages
+SRCREV_pn-libxcalibrate ?= "7b8e29186097170e930de634a4a68072558aa056"
+PV_pn-libxcalibrate ?= "0.0-oe1-${SRCREV}"
+SRCREV_pn-calibrateproto ?= "1da6fd1e2c7a49648245c98481fabea8b9690a8c"
+PV_pn-calibrateproto ?= "0.0-oe1-${SRCREV}"
diff --git a/conf/distro/include/preferred-xorg-versions-X11R7.2.inc b/conf/distro/include/preferred-xorg-versions-X11R7.2.inc
index 59a481a104..dc34a99340 100644
--- a/conf/distro/include/preferred-xorg-versions-X11R7.2.inc
+++ b/conf/distro/include/preferred-xorg-versions-X11R7.2.inc
@@ -269,3 +269,8 @@ PREFERRED_VERSION_xorg-cf-files ?= "X11R7.1-1.0.2"
PREFERRED_VERSION_xserver-kdrive ?= "1.2.0"
PREFERRED_VERSION_xserver-xorg ?= "1.2.0"
+# Unreleased packages
+SRCREV_pn-libxcalibrate ?= "7b8e29186097170e930de634a4a68072558aa056"
+PV_pn-libxcalibrate ?= "0.0-oe1-${SRCREV}"
+SRCREV_pn-calibrateproto ?= "1da6fd1e2c7a49648245c98481fabea8b9690a8c"
+PV_pn-calibrateproto ?= "0.0-oe1-${SRCREV}"
diff --git a/conf/distro/include/preferred-xorg-versions-X11R7.3.inc b/conf/distro/include/preferred-xorg-versions-X11R7.3.inc
index d7e19284bc..648472e9b6 100644
--- a/conf/distro/include/preferred-xorg-versions-X11R7.3.inc
+++ b/conf/distro/include/preferred-xorg-versions-X11R7.3.inc
@@ -280,3 +280,8 @@ PREFERRED_VERSION_xorg-cf-files ?= "1.0.2"
PREFERRED_VERSION_xserver-kdrive ?= "1.4"
PREFERRED_VERSION_xserver-xorg ?= "1.4"
+# Unreleased packages
+SRCREV_pn-libxcalibrate ?= "7b8e29186097170e930de634a4a68072558aa056"
+PV_pn-libxcalibrate ?= "0.0-oe1-${SRCREV}"
+SRCREV_pn-calibrateproto ?= "1da6fd1e2c7a49648245c98481fabea8b9690a8c"
+PV_pn-calibrateproto ?= "0.0-oe1-${SRCREV}"
diff --git a/conf/distro/include/preferred-xorg-versions-X11R7.4.inc b/conf/distro/include/preferred-xorg-versions-X11R7.4.inc
index b04f72180d..4af2405aa7 100644
--- a/conf/distro/include/preferred-xorg-versions-X11R7.4.inc
+++ b/conf/distro/include/preferred-xorg-versions-X11R7.4.inc
@@ -284,3 +284,9 @@ PREFERRED_VERSION_xorg-cf-files ?= "1.0.2"
# xserver
PREFERRED_VERSION_xserver-kdrive ?= "1.4"
PREFERRED_VERSION_xserver-xorg ?= "1.4"
+
+# Unreleased packages
+SRCREV_pn-libxcalibrate ?= "7b8e29186097170e930de634a4a68072558aa056"
+PV_pn-libxcalibrate ?= "0.0-oe1-${SRCREV}"
+SRCREV_pn-calibrateproto ?= "1da6fd1e2c7a49648245c98481fabea8b9690a8c"
+PV_pn-calibrateproto ?= "0.0-oe1-${SRCREV}"
diff --git a/conf/distro/include/preferred-xorg-versions.inc b/conf/distro/include/preferred-xorg-versions.inc
index f34b29f147..05136138fc 100644
--- a/conf/distro/include/preferred-xorg-versions.inc
+++ b/conf/distro/include/preferred-xorg-versions.inc
@@ -109,3 +109,7 @@ PREFERRED_VERSION_xtrans ?= "1.0.3"
PREFERRED_VERSION_xtrans-native ?= "1.0.3"
PREFERRED_VERSION_xinit ?= "1.0.4"
PREFERRED_VERSION_xev ?= "1.0.2"
+SRCREV_pn-libxcalibrate ?= "7b8e29186097170e930de634a4a68072558aa056"
+PV_pn-libxcalibrate ?= "0.0-oe1-${SRCREV}"
+SRCREV_pn-calibrateproto ?= "1da6fd1e2c7a49648245c98481fabea8b9690a8c"
+PV_pn-calibrateproto ?= "0.0-oe1-${SRCREV}"
diff --git a/conf/distro/include/sane-srcrevs.inc b/conf/distro/include/sane-srcrevs.inc
index 755b874083..3784303d19 100644
--- a/conf/distro/include/sane-srcrevs.inc
+++ b/conf/distro/include/sane-srcrevs.inc
@@ -47,7 +47,7 @@ SRCREV_pn-lightmediascanner ?= "68"
SRCREV_pn-linux-bfin ?= "3758"
SRCREV_pn-linux-hackndev-2.6 ?= "1308"
SRCREV_pn-linux-ixp4xx ?= "1039"
-SRCREV_pn-linux-openmoko ?= "4014"
+SRCREV_pn-linux-openmoko ?= "4079"
SRCREV_pn-llvm-gcc4 ?= "374"
SRCREV_pn-llvm-gcc4-cross ?= "374"
SRCREV_pn-maemo-mapper ?= "118"
diff --git a/conf/distro/openmoko.conf b/conf/distro/openmoko.conf
index b08e5f2ddb..f6968cee00 100644
--- a/conf/distro/openmoko.conf
+++ b/conf/distro/openmoko.conf
@@ -15,7 +15,7 @@ DISTRO_VERSION = "P1-Snapshot-${DATE}"
#DISTRO_TYPE = "release"
DISTRO_TYPE = "debug"
-OVERRIDES = "local:${MACHINE}:${DISTRO}:angstrom:${TARGET_OS}:${TARGET_ARCH}:build-${BUILD_OS}:fail-fast:pn-${PN}"
+OVERRIDES = "local:${MACHINE}:openmoko:angstrom:${TARGET_OS}:${TARGET_ARCH}:build-${BUILD_OS}:fail-fast:pn-${PN}"
CVS_TARBALL_STASH = "http://downloads.openmoko.org/sources/"
diff --git a/conf/machine/nokia770.conf b/conf/machine/nokia770.conf
index 4e36c6d38a..15126d56a9 100644
--- a/conf/machine/nokia770.conf
+++ b/conf/machine/nokia770.conf
@@ -4,7 +4,7 @@
TARGET_ARCH = "arm"
PACKAGE_EXTRA_ARCHS = "armv4 armv4t armv5te"
-PREFERRED_PROVIDER_virtual/xserver = "xserver-kdrive-omap"
+PREFERRED_PROVIDER_virtual/xserver = "xserver-kdrive-xomap"
PREFERRED_PROVIDER_virtual/bootloader = ""
PREFERRED_PROVIDER_tslib = "tslib-maemo"
diff --git a/packages/xorg-lib/diet-x11/.mtn2git_empty b/packages/amule/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/xorg-lib/diet-x11/.mtn2git_empty
+++ b/packages/amule/.mtn2git_empty
diff --git a/packages/amule/amule_2.1.3.bb b/packages/amule/amule_2.1.3.bb
new file mode 100644
index 0000000000..b160203ffd
--- /dev/null
+++ b/packages/amule/amule_2.1.3.bb
@@ -0,0 +1,25 @@
+DESCRIPTION = "aMule is an eMule-like client for the eD2k \
+and Kademlia networks, supporting multiple platforms."
+HOMEPAGE = "http://www.amule.org"
+LICENSE = "GPL"
+SECTION = "web"
+PRIORITY = "optional"
+DEPENDS = "wxbase"
+
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/amule/aMule-${PV}.tar.bz2 \
+ file://parser.patch;patch=1"
+
+S = "${WORKDIR}/aMule-${PV}"
+
+inherit autotools pkgconfig
+
+EXTRA_OECONF = "--enable-amulecmd \
+ --enable-webserver \
+ --disable-monolithic \
+ --enable-amule-daemon \
+ --disable-nls"
+# --enable-optimize"
+
+FILES_${PN} += " \
+ ${libdir}/xchat"
diff --git a/packages/xorg-lib/files/.mtn2git_empty b/packages/amule/files/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/xorg-lib/files/.mtn2git_empty
+++ b/packages/amule/files/.mtn2git_empty
diff --git a/packages/amule/files/parser.patch b/packages/amule/files/parser.patch
new file mode 100644
index 0000000000..ee77c42380
--- /dev/null
+++ b/packages/amule/files/parser.patch
@@ -0,0 +1,20 @@
+diff -ur aMule-2.1.0_orig/src/Parser.cpp aMule-2.1.0/src/Parser.cpp
+--- aMule-2.1.0_orig/src/Parser.cpp 2005-12-20 05:13:25.000000000 +0100
++++ aMule-2.1.0/src/Parser.cpp 2006-01-29 15:16:45.000000000 +0100
+@@ -203,14 +203,14 @@
+ # define YYMALLOC malloc
+ # if (! defined (malloc) && ! defined (YYINCLUDED_STDLIB_H) \
+ && (defined (__STDC__) || defined (__cplusplus)))
+-void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
++/*void *malloc (YYSIZE_T);*/ /* INFRINGES ON USER NAME SPACE */
+ # endif
+ # endif
+ # ifndef YYFREE
+ # define YYFREE free
+ # if (! defined (free) && ! defined (YYINCLUDED_STDLIB_H) \
+ && (defined (__STDC__) || defined (__cplusplus)))
+-void free (void *); /* INFRINGES ON USER NAME SPACE */
++/*void free (void *);*/ /* INFRINGES ON USER NAME SPACE */
+ # endif
+ # endif
+ # ifdef __cplusplus
diff --git a/packages/gtk-webcore/osb-nrcore.inc b/packages/gtk-webcore/osb-nrcore.inc
index 7cbf0ce890..6fd1d22580 100644
--- a/packages/gtk-webcore/osb-nrcore.inc
+++ b/packages/gtk-webcore/osb-nrcore.inc
@@ -3,12 +3,15 @@ HOMEPAGE = "http://gtk-webcore.sourceforge.net/"
PRIORITY = "optional"
SECTION = "gpe"
LICENSE = "GPL"
-DEPENDS = "glib-2.0 gtk+ pango osb-jscore libxt"
+DEPENDS = "glib-2.0 gtk+ pango osb-jscore libxt gperf-native"
LEAD_SONAME = "libnrcore.so"
inherit autotools pkgconfig
+#/khtml/css/cssproperties.h failes to generate properly with high parallel makes
+PARALLEL_MAKE = ""
+
do_configure () {
autotools_do_configure
cd ${S}
diff --git a/packages/ipkg/files/update_version_comparision.patch b/packages/ipkg/files/update_version_comparision.patch
new file mode 100644
index 0000000000..9f617ef9f0
--- /dev/null
+++ b/packages/ipkg/files/update_version_comparision.patch
@@ -0,0 +1,82 @@
+Update the version comparision to a more recent one from dpkg. This
+means it now recognises 0.0-foo > 0.0+foo as it should.
+
+Index: ipkg-0.99.163/pkg.c
+===================================================================
+--- ipkg-0.99.163.orig/pkg.c 2008-02-18 11:24:45.000000000 +0000
++++ ipkg-0.99.163/pkg.c 2008-02-19 00:24:50.000000000 +0000
+@@ -1128,43 +1130,37 @@
+ return r;
+ }
+
+-int verrevcmp(const char *val, const char *ref)
+-{
+- int vc, rc;
+- long vl, rl;
+- const char *vp, *rp;
+- const char *vsep, *rsep;
+-
+- if (!val) val= "";
+- if (!ref) ref= "";
+- for (;;) {
+- vp= val; while (*vp && !isdigit(*vp)) vp++;
+- rp= ref; while (*rp && !isdigit(*rp)) rp++;
+- for (;;) {
+- vc= (val == vp) ? 0 : *val++;
+- rc= (ref == rp) ? 0 : *ref++;
+- if (!rc && !vc) break;
+- if (vc && !isalpha(vc)) vc += 256; /* assumes ASCII character set */
+- if (rc && !isalpha(rc)) rc += 256;
+- if (vc != rc) return vc - rc;
+- }
+- val= vp;
+- ref= rp;
+- vl=0; if (isdigit(*vp)) vl= strtol(val,(char**)&val,10);
+- rl=0; if (isdigit(*rp)) rl= strtol(ref,(char**)&ref,10);
+- if (vl != rl) return vl - rl;
+-
+- vc = *val;
+- rc = *ref;
+- vsep = strchr(".-", vc);
+- rsep = strchr(".-", rc);
+- if (vsep && !rsep) return -1;
+- if (!vsep && rsep) return +1;
+-
+- if (!*val && !*ref) return 0;
+- if (!*val) return -1;
+- if (!*ref) return +1;
+- }
++/* assume ascii; warning: evaluates x multiple times! */
++#define order(x) ((x) == '~' ? -1 \
++ : isdigit((x)) ? 0 \
++ : !(x) ? 0 \
++ : isalpha((x)) ? (x) \
++ : (x) + 256)
++
++static int verrevcmp(const char *val, const char *ref) {
++ if (!val) val= "";
++ if (!ref) ref= "";
++
++ while (*val || *ref) {
++ int first_diff= 0;
++
++ while ( (*val && !isdigit(*val)) || (*ref && !isdigit(*ref)) ) {
++ int vc= order(*val), rc= order(*ref);
++ if (vc != rc) return vc - rc;
++ val++; ref++;
++ }
++
++ while ( *val == '0' ) val++;
++ while ( *ref == '0' ) ref++;
++ while (isdigit(*val) && isdigit(*ref)) {
++ if (!first_diff) first_diff= *val - *ref;
++ val++; ref++;
++ }
++ if (isdigit(*val)) return 1;
++ if (isdigit(*ref)) return -1;
++ if (first_diff) return first_diff;
++ }
++ return 0;
+ }
+
+ int pkg_version_satisfied(pkg_t *it, pkg_t *ref, const char *op)
diff --git a/packages/ipkg/ipkg-native_0.99.163.bb b/packages/ipkg/ipkg-native_0.99.163.bb
index 7a95b28159..163eba62e2 100644
--- a/packages/ipkg/ipkg-native_0.99.163.bb
+++ b/packages/ipkg/ipkg-native_0.99.163.bb
@@ -2,11 +2,12 @@ S = "${WORKDIR}/ipkg-${PV}"
#require ipkg_${PV}.bb
require ipkg-native.inc
-PR = "r4"
+PR = "r5"
inherit autotools pkgconfig native
SRC_URI = "http://www.handhelds.org/pub/packages/ipkg/ipkg-${PV}.tar.gz \
+ file://update_version_comparision.patch;patch=1 \
file://is-processing.patch;patch=1 \
file://1-pkg-parse--Optimize-inefficient-parsing.patch;patch=1 \
file://2-pkg-vec--Optimize-gross-inefficiency.patch;patch=1 \
diff --git a/packages/ipkg/ipkg.inc b/packages/ipkg/ipkg.inc
index 9154572f08..980a4265bd 100644
--- a/packages/ipkg/ipkg.inc
+++ b/packages/ipkg/ipkg.inc
@@ -10,6 +10,7 @@ FILES_libipkg = "${libdir}/*.so.*"
AUTO_LIBNAME_PKGS = "libipkg"
SRC_URI = "${HANDHELDS_CVS};module=familiar/dist/ipkg;tag=${@'V' + bb.data.getVar('PV',d,1).replace('.', '-')} \
+ file://update_version_comparision.patch;patch=1 \
file://ipkg-configure \
file://terse.patch;patch=1"
diff --git a/packages/ipkg/ipkg_0.99.163.bb b/packages/ipkg/ipkg_0.99.163.bb
index fccfe8d53f..f2d7652b89 100644
--- a/packages/ipkg/ipkg_0.99.163.bb
+++ b/packages/ipkg/ipkg_0.99.163.bb
@@ -1,5 +1,5 @@
include ipkg.inc
-PR = "r6"
+PR = "r7"
S = "${WORKDIR}/ipkg-${PV}"
diff --git a/packages/linux/linux-2.6.23/mpc8313e-rdb/defconfig b/packages/linux/linux-2.6.23/mpc8313e-rdb/defconfig
index 3cc17679c1..d842308fc9 100644
--- a/packages/linux/linux-2.6.23/mpc8313e-rdb/defconfig
+++ b/packages/linux/linux-2.6.23/mpc8313e-rdb/defconfig
@@ -687,7 +687,7 @@ CONFIG_EEPROM_93CX6=m
# SCSI device support
#
# CONFIG_RAID_ATTRS is not set
-CONFIG_SCSI=y
+CONFIG_SCSI=m
CONFIG_SCSI_DMA=y
# CONFIG_SCSI_TGT is not set
# CONFIG_SCSI_NETLINK is not set
@@ -696,11 +696,11 @@ CONFIG_SCSI_PROC_FS=y
#
# SCSI support type (disk, tape, CD-ROM)
#
-CONFIG_BLK_DEV_SD=y
+CONFIG_BLK_DEV_SD=m
# CONFIG_CHR_DEV_ST is not set
# CONFIG_CHR_DEV_OSST is not set
# CONFIG_BLK_DEV_SR is not set
-CONFIG_CHR_DEV_SG=y
+# CONFIG_CHR_DEV_SG is not set
# CONFIG_CHR_DEV_SCH is not set
#
@@ -715,45 +715,11 @@ CONFIG_SCSI_WAIT_SCAN=m
#
# SCSI Transports
#
-CONFIG_SCSI_SPI_ATTRS=y
+CONFIG_SCSI_SPI_ATTRS=m
# CONFIG_SCSI_FC_ATTRS is not set
# CONFIG_SCSI_ISCSI_ATTRS is not set
# CONFIG_SCSI_SAS_LIBSAS is not set
-CONFIG_SCSI_LOWLEVEL=y
-# CONFIG_ISCSI_TCP is not set
-# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
-# CONFIG_SCSI_3W_9XXX is not set
-# CONFIG_SCSI_ACARD is not set
-# CONFIG_SCSI_AACRAID is not set
-# CONFIG_SCSI_AIC7XXX is not set
-# CONFIG_SCSI_AIC7XXX_OLD is not set
-# CONFIG_SCSI_AIC79XX is not set
-# CONFIG_SCSI_AIC94XX is not set
-# CONFIG_SCSI_DPT_I2O is not set
-# CONFIG_SCSI_ARCMSR is not set
-# CONFIG_MEGARAID_NEWGEN is not set
-# CONFIG_MEGARAID_LEGACY is not set
-# CONFIG_MEGARAID_SAS is not set
-# CONFIG_SCSI_HPTIOP is not set
-# CONFIG_SCSI_BUSLOGIC is not set
-# CONFIG_SCSI_DMX3191D is not set
-# CONFIG_SCSI_EATA is not set
-# CONFIG_SCSI_FUTURE_DOMAIN is not set
-# CONFIG_SCSI_GDTH is not set
-# CONFIG_SCSI_IPS is not set
-# CONFIG_SCSI_INITIO is not set
-# CONFIG_SCSI_INIA100 is not set
-# CONFIG_SCSI_STEX is not set
-# CONFIG_SCSI_SYM53C8XX_2 is not set
-# CONFIG_SCSI_QLOGIC_1280 is not set
-# CONFIG_SCSI_QLA_FC is not set
-# CONFIG_SCSI_QLA_ISCSI is not set
-# CONFIG_SCSI_LPFC is not set
-# CONFIG_SCSI_DC395x is not set
-# CONFIG_SCSI_DC390T is not set
-# CONFIG_SCSI_NSP32 is not set
-# CONFIG_SCSI_DEBUG is not set
-# CONFIG_SCSI_SRP is not set
+# CONFIG_SCSI_LOWLEVEL is not set
# CONFIG_ATA is not set
# CONFIG_MD is not set
@@ -796,34 +762,7 @@ CONFIG_CICADA_PHY=y
# CONFIG_BROADCOM_PHY is not set
# CONFIG_ICPLUS_PHY is not set
# CONFIG_FIXED_PHY is not set
-CONFIG_NET_ETHERNET=y
-CONFIG_MII=y
-# CONFIG_HAPPYMEAL is not set
-# CONFIG_SUNGEM is not set
-# CONFIG_CASSINI is not set
-# CONFIG_NET_VENDOR_3COM is not set
-# CONFIG_NET_TULIP is not set
-# CONFIG_HP100 is not set
-CONFIG_NET_PCI=y
-# CONFIG_PCNET32 is not set
-# CONFIG_AMD8111_ETH is not set
-# CONFIG_ADAPTEC_STARFIRE is not set
-# CONFIG_B44 is not set
-# CONFIG_FORCEDETH is not set
-# CONFIG_DGRS is not set
-# CONFIG_EEPRO100 is not set
-CONFIG_E100=y
-# CONFIG_FEALNX is not set
-# CONFIG_NATSEMI is not set
-# CONFIG_NE2K_PCI is not set
-# CONFIG_8139CP is not set
-# CONFIG_8139TOO is not set
-# CONFIG_SIS900 is not set
-# CONFIG_EPIC100 is not set
-# CONFIG_SUNDANCE is not set
-# CONFIG_TLAN is not set
-# CONFIG_VIA_RHINE is not set
-# CONFIG_SC92031 is not set
+# CONFIG_NET_ETHERNET is not set
CONFIG_NETDEV_1000=y
# CONFIG_ACENIC is not set
# CONFIG_DL2K is not set
@@ -843,14 +782,7 @@ CONFIG_GIANFAR=y
CONFIG_GFAR_NAPI=y
# CONFIG_QLA3XXX is not set
# CONFIG_ATL1 is not set
-CONFIG_NETDEV_10000=y
-# CONFIG_CHELSIO_T1 is not set
-# CONFIG_CHELSIO_T3 is not set
-# CONFIG_IXGB is not set
-# CONFIG_S2IO is not set
-# CONFIG_MYRI10GE is not set
-# CONFIG_NETXEN_NIC is not set
-# CONFIG_MLX4_CORE is not set
+# CONFIG_NETDEV_10000 is not set
# CONFIG_TR is not set
#
@@ -1470,7 +1402,7 @@ CONFIG_USB_UHCI_HCD=y
#
# may also be needed; see USB_STORAGE Help for more information
#
-CONFIG_USB_STORAGE=y
+CONFIG_USB_STORAGE=m
# CONFIG_USB_STORAGE_DEBUG is not set
# CONFIG_USB_STORAGE_DATAFAB is not set
# CONFIG_USB_STORAGE_FREECOM is not set
diff --git a/packages/linux/linux-2.6.23/mpc8313e-rdb/mpc8313e-rdb-leds.patch b/packages/linux/linux-2.6.23/mpc8313e-rdb/mpc8313e-rdb-leds.patch
index be322be927..1116ce3998 100644
--- a/packages/linux/linux-2.6.23/mpc8313e-rdb/mpc8313e-rdb-leds.patch
+++ b/packages/linux/linux-2.6.23/mpc8313e-rdb/mpc8313e-rdb-leds.patch
@@ -20,8 +20,8 @@ diff -urN linux-2.6.23.orig/drivers/leds/leds-mpc8313e-rdb.c linux-2.6.23/driver
@@ -0,0 +1,171 @@
+/*
+ * drivers/leds/leds-mpc8313e-rdb.c
-+ * Copyright (C) 2007 Leon Woestenberg <leon@sidebranch.com>
+ * Copyright (C) 2007 Jeremy Laine <jeremy.laine@bolloretelecom.eu>
++ * Copyright (C) 2007 Leon Woestenberg <leon@sidebranch.com>
+ *
+ * This file is subject to the terms and conditions of the GNU General Public
+ * License. See the file COPYING in the main directory of this archive for
@@ -99,21 +99,21 @@ diff -urN linux-2.6.23.orig/drivers/leds/leds-mpc8313e-rdb.c linux-2.6.23/driver
+ },
+ {
+ .cdev = {
-+ .name = "mpc8313:green",
++ .name = "mpc8313:led5",
+ .brightness_set = mpc8313leds_set,
+ },
+ .bitmask = 32,
+ },
+ {
+ .cdev = {
-+ .name = "mpc8313:yellow",
++ .name = "mpc8313:led6",
+ .brightness_set = mpc8313leds_set,
+ },
+ .bitmask = 64,
+ },
+ {
+ .cdev = {
-+ .name = "mpc8313:red",
++ .name = "mpc8313:led7",
+ .brightness_set = mpc8313leds_set,
+ },
+ .bitmask = 128,
@@ -186,7 +186,7 @@ diff -urN linux-2.6.23.orig/drivers/leds/leds-mpc8313e-rdb.c linux-2.6.23/driver
+module_init(mpc8313leds_init);
+module_exit(mpc8313leds_exit);
+
-+MODULE_AUTHOR("Leon Woestenberg <leon@sidebranch.com>");
++MODULE_AUTHOR("Jeremy Laine <jeremy.laine@bolloretelecom.eu>");
+MODULE_DESCRIPTION("MPC8313E-RDB LED driver");
+MODULE_LICENSE("GPL");
diff -urN linux-2.6.23.orig/drivers/leds/Makefile linux-2.6.23/drivers/leds/Makefile
diff --git a/packages/linux/linux-2.6.24/mpc8313e-rdb/defconfig b/packages/linux/linux-2.6.24/mpc8313e-rdb/defconfig
index 9c385704df..b87f62acbc 100644
--- a/packages/linux/linux-2.6.24/mpc8313e-rdb/defconfig
+++ b/packages/linux/linux-2.6.24/mpc8313e-rdb/defconfig
@@ -707,7 +707,7 @@ CONFIG_EEPROM_93CX6=m
# SCSI device support
#
# CONFIG_RAID_ATTRS is not set
-CONFIG_SCSI=y
+CONFIG_SCSI=m
CONFIG_SCSI_DMA=y
# CONFIG_SCSI_TGT is not set
# CONFIG_SCSI_NETLINK is not set
@@ -716,11 +716,11 @@ CONFIG_SCSI_PROC_FS=y
#
# SCSI support type (disk, tape, CD-ROM)
#
-CONFIG_BLK_DEV_SD=y
+CONFIG_BLK_DEV_SD=m
# CONFIG_CHR_DEV_ST is not set
# CONFIG_CHR_DEV_OSST is not set
# CONFIG_BLK_DEV_SR is not set
-CONFIG_CHR_DEV_SG=y
+# CONFIG_CHR_DEV_SG is not set
# CONFIG_CHR_DEV_SCH is not set
#
@@ -735,47 +735,11 @@ CONFIG_SCSI_WAIT_SCAN=m
#
# SCSI Transports
#
-CONFIG_SCSI_SPI_ATTRS=y
+CONFIG_SCSI_SPI_ATTRS=m
# CONFIG_SCSI_FC_ATTRS is not set
# CONFIG_SCSI_ISCSI_ATTRS is not set
# CONFIG_SCSI_SAS_LIBSAS is not set
# CONFIG_SCSI_SRP_ATTRS is not set
-CONFIG_SCSI_LOWLEVEL=y
-# CONFIG_ISCSI_TCP is not set
-# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
-# CONFIG_SCSI_3W_9XXX is not set
-# CONFIG_SCSI_ACARD is not set
-# CONFIG_SCSI_AACRAID is not set
-# CONFIG_SCSI_AIC7XXX is not set
-# CONFIG_SCSI_AIC7XXX_OLD is not set
-# CONFIG_SCSI_AIC79XX is not set
-# CONFIG_SCSI_AIC94XX is not set
-# CONFIG_SCSI_DPT_I2O is not set
-# CONFIG_SCSI_ADVANSYS is not set
-# CONFIG_SCSI_ARCMSR is not set
-# CONFIG_MEGARAID_NEWGEN is not set
-# CONFIG_MEGARAID_LEGACY is not set
-# CONFIG_MEGARAID_SAS is not set
-# CONFIG_SCSI_HPTIOP is not set
-# CONFIG_SCSI_BUSLOGIC is not set
-# CONFIG_SCSI_DMX3191D is not set
-# CONFIG_SCSI_EATA is not set
-# CONFIG_SCSI_FUTURE_DOMAIN is not set
-# CONFIG_SCSI_GDTH is not set
-# CONFIG_SCSI_IPS is not set
-# CONFIG_SCSI_INITIO is not set
-# CONFIG_SCSI_INIA100 is not set
-# CONFIG_SCSI_STEX is not set
-# CONFIG_SCSI_SYM53C8XX_2 is not set
-# CONFIG_SCSI_QLOGIC_1280 is not set
-# CONFIG_SCSI_QLA_FC is not set
-# CONFIG_SCSI_QLA_ISCSI is not set
-# CONFIG_SCSI_LPFC is not set
-# CONFIG_SCSI_DC395x is not set
-# CONFIG_SCSI_DC390T is not set
-# CONFIG_SCSI_NSP32 is not set
-# CONFIG_SCSI_DEBUG is not set
-# CONFIG_SCSI_SRP is not set
# CONFIG_ATA is not set
# CONFIG_MD is not set
# CONFIG_FUSION is not set
@@ -813,25 +777,7 @@ CONFIG_CICADA_PHY=y
# CONFIG_ICPLUS_PHY is not set
# CONFIG_FIXED_PHY is not set
# CONFIG_MDIO_BITBANG is not set
-CONFIG_NET_ETHERNET=y
-CONFIG_MII=y
-# CONFIG_HAPPYMEAL is not set
-# CONFIG_SUNGEM is not set
-# CONFIG_CASSINI is not set
-# CONFIG_NET_VENDOR_3COM is not set
-# CONFIG_NET_TULIP is not set
-# CONFIG_HP100 is not set
-# CONFIG_IBM_NEW_EMAC_ZMII is not set
-# CONFIG_IBM_NEW_EMAC_RGMII is not set
-# CONFIG_IBM_NEW_EMAC_TAH is not set
-# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
-CONFIG_NET_PCI=y
-# CONFIG_PCNET32 is not set
-# CONFIG_AMD8111_ETH is not set
-# CONFIG_ADAPTEC_STARFIRE is not set
-# CONFIG_B44 is not set
-# CONFIG_FORCEDETH is not set
-# CONFIG_EEPRO100 is not set
+# CONFIG_NET_ETHERNET is not set
CONFIG_E100=y
# CONFIG_FEALNX is not set
# CONFIG_NATSEMI is not set
@@ -865,17 +811,7 @@ CONFIG_GIANFAR=y
CONFIG_GFAR_NAPI=y
# CONFIG_QLA3XXX is not set
# CONFIG_ATL1 is not set
-CONFIG_NETDEV_10000=y
-# CONFIG_CHELSIO_T1 is not set
-# CONFIG_CHELSIO_T3 is not set
-# CONFIG_IXGBE is not set
-# CONFIG_IXGB is not set
-# CONFIG_S2IO is not set
-# CONFIG_MYRI10GE is not set
-# CONFIG_NETXEN_NIC is not set
-# CONFIG_NIU is not set
-# CONFIG_MLX4_CORE is not set
-# CONFIG_TEHUTI is not set
+# CONFIG_NETDEV_10000 is not set
# CONFIG_TR is not set
#
@@ -1509,7 +1445,7 @@ CONFIG_USB_UHCI_HCD=y
#
# may also be needed; see USB_STORAGE Help for more information
#
-CONFIG_USB_STORAGE=y
+CONFIG_USB_STORAGE=m
# CONFIG_USB_STORAGE_DEBUG is not set
# CONFIG_USB_STORAGE_DATAFAB is not set
# CONFIG_USB_STORAGE_FREECOM is not set
diff --git a/packages/linux/linux-2.6.24/mpc8313e-rdb/mpc8313e-rdb-leds.patch b/packages/linux/linux-2.6.24/mpc8313e-rdb/mpc8313e-rdb-leds.patch
index f1dca9d8e1..5336905a66 100644
--- a/packages/linux/linux-2.6.24/mpc8313e-rdb/mpc8313e-rdb-leds.patch
+++ b/packages/linux/linux-2.6.24/mpc8313e-rdb/mpc8313e-rdb-leds.patch
@@ -20,8 +20,8 @@ diff -urN linux-2.6.24.orig/drivers/leds/leds-mpc8313e-rdb.c linux-2.6.24/driver
@@ -0,0 +1,171 @@
+/*
+ * drivers/leds/leds-mpc8313e-rdb.c
-+ * Copyright (C) 2007 Leon Woestenberg <leon@sidebranch.com>
+ * Copyright (C) 2007 Jeremy Laine <jeremy.laine@bolloretelecom.eu>
++ * Copyright (C) 2007 Leon Woestenberg <leon@sidebranch.com>
+ *
+ * This file is subject to the terms and conditions of the GNU General Public
+ * License. See the file COPYING in the main directory of this archive for
@@ -99,21 +99,21 @@ diff -urN linux-2.6.24.orig/drivers/leds/leds-mpc8313e-rdb.c linux-2.6.24/driver
+ },
+ {
+ .cdev = {
-+ .name = "mpc8313:green",
++ .name = "mpc8313:led5",
+ .brightness_set = mpc8313leds_set,
+ },
+ .bitmask = 32,
+ },
+ {
+ .cdev = {
-+ .name = "mpc8313:yellow",
++ .name = "mpc8313:led6",
+ .brightness_set = mpc8313leds_set,
+ },
+ .bitmask = 64,
+ },
+ {
+ .cdev = {
-+ .name = "mpc8313:red",
++ .name = "mpc8313:led7",
+ .brightness_set = mpc8313leds_set,
+ },
+ .bitmask = 128,
@@ -186,7 +186,7 @@ diff -urN linux-2.6.24.orig/drivers/leds/leds-mpc8313e-rdb.c linux-2.6.24/driver
+module_init(mpc8313leds_init);
+module_exit(mpc8313leds_exit);
+
-+MODULE_AUTHOR("Leon Woestenberg <leon@sidebranch.com>");
++MODULE_AUTHOR("Jeremy Laine <jeremy.laine@bolloretelecom.eu>");
+MODULE_DESCRIPTION("MPC8313E-RDB LED driver");
+MODULE_LICENSE("GPL");
diff -urN linux-2.6.24.orig/drivers/leds/Makefile linux-2.6.24/drivers/leds/Makefile
diff --git a/packages/linux/linux-2.6.24/mpc8313e-rdb/mpc831x-nand.patch b/packages/linux/linux-2.6.24/mpc8313e-rdb/mpc831x-nand.patch
new file mode 100644
index 0000000000..7c6502d232
--- /dev/null
+++ b/packages/linux/linux-2.6.24/mpc8313e-rdb/mpc831x-nand.patch
@@ -0,0 +1,1807 @@
+diff -urN linux-2.6.24.orig/arch/powerpc/boot/dts/mpc8313erdb.dts linux-2.6.24/arch/powerpc/boot/dts/mpc8313erdb.dts
+--- linux-2.6.24.orig/arch/powerpc/boot/dts/mpc8313erdb.dts 2008-01-24 23:58:37.000000000 +0100
++++ linux-2.6.24/arch/powerpc/boot/dts/mpc8313erdb.dts 2008-02-18 16:39:43.000000000 +0100
+@@ -36,6 +36,12 @@
+ device_type = "memory";
+ reg = <00000000 08000000>; // 128MB at 0
+ };
++
++ nand0 {
++ device_type = "nand";
++ compatible = "fsl-nand";
++ reg = <e2800000 00000200>;
++ };
+
+ soc8313@e0000000 {
+ #address-cells = <1>;
+@@ -177,6 +183,16 @@
+ reg = <700 100>;
+ device_type = "ipic";
+ };
++
++ elbc@5000 {
++ device_type = "elbc";
++ compatible = "fsl-elbc";
++ reg = <5000 1000>;
++ interrupts = <4d 8>;
++ interrupt-parent = < &ipic >;
++ allow-direct-device-sleep;
++ };
++
+ };
+
+ pci@e0008500 {
+diff -urN linux-2.6.24.orig/arch/powerpc/sysdev/fsl_soc.c linux-2.6.24/arch/powerpc/sysdev/fsl_soc.c
+--- linux-2.6.24.orig/arch/powerpc/sysdev/fsl_soc.c 2008-01-24 23:58:37.000000000 +0100
++++ linux-2.6.24/arch/powerpc/sysdev/fsl_soc.c 2008-02-18 17:07:57.000000000 +0100
+@@ -6,6 +6,12 @@
+ * 2006 (c) MontaVista Software, Inc.
+ * Vitaly Bordug <vbordug@ru.mvista.com>
+ *
++ * Change log:
++ * Copyright (C) 2006 Freescale Semiconductor, Inc.
++ * 2006: Lo Wilson (r43300@freescale.com)
++ * Added support for Enhanced Local Bus Controller
++ * Added support for USB UTMI mode on-chip PHY
++ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+@@ -28,6 +34,8 @@
+ #include <linux/fsl_devices.h>
+ #include <linux/fs_enet_pd.h>
+ #include <linux/fs_uart_pd.h>
++#include <linux/mtd/nand.h>
++#include <linux/mtd/fsl_elbc.h>
+
+ #include <asm/system.h>
+ #include <asm/atomic.h>
+@@ -671,6 +679,75 @@
+
+ arch_initcall(fsl_usb_of_init);
+
++static int __init fsl_elbc_of_init(void)
++{
++ struct device_node *np;
++ unsigned int i;
++ struct platform_device *elbc_dev = NULL;
++ struct platform_device *nand_dev = NULL;
++ int ret;
++
++ /* find and register the enhanced local bus controller */
++ for (np = NULL, i = 0;
++ (np = of_find_compatible_node(np, "elbc", "fsl-elbc")) != NULL;
++ i++) {
++ struct resource r[2];
++
++ memset(&r, 0, sizeof(r));
++
++ ret = of_address_to_resource(np, 0, &r[0]);
++ if (ret)
++ goto err;
++
++ r[1].start = r[1].end = irq_of_parse_and_map(np, 0);
++ r[1].flags = IORESOURCE_IRQ;
++
++ elbc_dev =
++ platform_device_register_simple("fsl-elbc", i, r, 2);
++ if (IS_ERR(elbc_dev)) {
++ ret = PTR_ERR(elbc_dev);
++ goto err;
++ }
++ }
++
++ /* find and register NAND memories if the eLBC was found */
++ for (np = NULL, i = 0;
++ elbc_dev &&
++ (np = of_find_compatible_node(np, "nand", "fsl-nand")) != NULL;
++ i++) {
++ struct resource r;
++ struct platform_fsl_nand_chip chip_data;
++
++ memset(&r, 0, sizeof(r));
++ memset(&chip_data, 0, sizeof(chip_data));
++
++ ret = of_address_to_resource(np, 0, &r);
++ if (ret)
++ goto err;
++
++ nand_dev =
++ platform_device_register_simple("fsl-nand", i, &r, 1);
++ if (IS_ERR(nand_dev)) {
++ ret = PTR_ERR(nand_dev);
++ goto err;
++ }
++
++ chip_data.name = of_get_property(np, "name", NULL);
++ chip_data.partitions_str = of_get_property(np, "partitions", NULL);
++
++ ret = platform_device_add_data(nand_dev, &chip_data,
++ sizeof(struct platform_fsl_nand_chip));
++ if (ret)
++ goto err;
++ }
++ return 0;
++
++err:
++ return ret;
++}
++
++arch_initcall(fsl_elbc_of_init);
++
+ #ifndef CONFIG_PPC_CPM_NEW_BINDING
+ #ifdef CONFIG_CPM2
+
+diff -urN linux-2.6.24.orig/drivers/mtd/nand/fsl_elbc.c linux-2.6.24/drivers/mtd/nand/fsl_elbc.c
+--- linux-2.6.24.orig/drivers/mtd/nand/fsl_elbc.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.24/drivers/mtd/nand/fsl_elbc.c 2008-02-18 17:08:08.000000000 +0100
+@@ -0,0 +1,1324 @@
++/* linux/drivers/mtd/nand/fsl_elbc.c
++ *
++ * Copyright (C) 2006 Freescale Semiconductor, Inc.
++ *
++ * Freescale Enhanced Local Bus Controller NAND driver
++ *
++ * Author: Nick Spence <Nick.Spence@freescale.com>
++ * Maintainer: Tony Li <Tony.Li@freescale.com>
++ *
++ * Changelog:
++ * 2006-12 Tony Li <Tony.Li@freescale.com>
++ * Adopt to MPC8313ERDB board
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
++*/
++
++//#ifdef CONFIG_MTD_NAND_DEBUG
++//#define DEBUG
++//#endif
++//#define DEBUG
++
++#include <linux/module.h>
++#include <linux/types.h>
++#include <linux/init.h>
++#include <linux/kernel.h>
++#include <linux/string.h>
++#include <linux/ioport.h>
++#include <linux/platform_device.h>
++#include <linux/delay.h>
++#include <linux/err.h>
++#include <linux/slab.h>
++#include <linux/interrupt.h>
++#include <linux/device.h>
++#include <linux/fsl_devices.h>
++
++#include <linux/mtd/mtd.h>
++#include <linux/mtd/nand.h>
++#include <linux/mtd/nand_ecc.h>
++#include <linux/mtd/partitions.h>
++
++#include <asm/io.h>
++#include <linux/mtd/fsl_elbc.h>
++
++#define PFX "fsl-elbc: "
++
++#undef CFG_FCM_DEBUG
++#define CFG_FCM_DEBUG_LVL 3
++#ifdef CFG_FCM_DEBUG
++static int fcm_debug_level = CFG_FCM_DEBUG_LVL;
++#define FCM_DEBUG(n, args...) \
++ do { \
++ if (n <= fcm_debug_level) \
++ printk(args); \
++ } while(0)
++#else /* CONFIG_FCM_DEBUG */
++#define FCM_DEBUG(n, args...) do { } while(0)
++#endif
++
++#define FCM_SIZE (8 * 1024)
++
++#define MAX_BANKS (8)
++
++/* use interrupt instead of busy waiting TODO */
++#define FCM_USE_INTERRUPT
++
++#define MIN(x, y) ((x < y) ? x : y)
++
++#define ERR_BYTE 0xFF /* Value returned for read bytes when read failed */
++
++#define FCM_TIMEOUT_MSECS 100 /* Maximum number of mSecs to wait for FCM */
++
++
++
++struct fsl_elbc_ctrl;
++
++/* mtd information per set */
++
++struct fsl_elbc_mtd {
++ struct mtd_info mtd;
++ struct nand_chip chip;
++ struct platform_fsl_nand_chip pl_chip;
++ struct fsl_elbc_ctrl *ctrl;
++
++ struct device *device;
++// int nr_chips; /* Number of chips in set */
++// int nr_partitions; /* Number of partitions or 0 */
++ char *name; /* Name of set (optional) */
++ int *nr_map; /* Physical chip num (option)*/
++// struct mtd_partition *partitions; /* MTD partition list (option*/
++// struct nand_ecclayout *ecclayout;
++ unsigned int options;
++ struct resource *area;
++ int bank; /* Chip select bank number */
++ unsigned int pbase; /* Chip select base physical address */
++ unsigned int vbase; /* Chip select base virtual address */
++ int pgs; /* NAND page size (0=512, 1=2048) */
++ unsigned int fmr; /* FCM Flash Mode Register value */
++};
++
++/* overview of the fsl elbc controller */
++
++struct fsl_elbc_ctrl {
++ struct nand_hw_control controller;
++ struct fsl_elbc_mtd *nmtd[MAX_BANKS];
++
++ /* device info */
++ atomic_t childs_active;
++ struct device *device;
++ struct resource *area;
++ lbus83xx_t *regs;
++ int irq;
++ wait_queue_head_t irq_wait;
++ unsigned int irq_status; /* status read from LTESR by irq handler */
++ u_char *addr; /* Address of assigned FCM buffer */
++ unsigned int page; /* Last page written to / read from */
++ unsigned int read_bytes; /* Number of bytes read during command */
++ unsigned int index; /* Pointer to next byte to 'read' */
++ unsigned int status; /* status read from LTESR after last op */
++ int oobbuf; /* Pointer to OOB block */
++ unsigned int mdr; /* UPM/FCM Data Register value */
++ unsigned int use_mdr; /* Non zero if the MDR is to be set */
++};
++
++struct fsl_elbc_ctrl elbc_ctrl;
++
++/* These map to the positions used by the FCM hardware ECC generator */
++
++/* Small Page FLASH with FMR[ECCM] = 0 */
++static struct nand_ecclayout fsl_elbc_oob_sp_eccm0 = { /* TODO */
++//TODO .useecc = MTD_NANDECC_AUTOPL_USR, /* MTD_NANDECC_PLACEONLY, */
++ .eccbytes = 3,
++ .eccpos = {6, 7, 8},
++ .oobfree = { {0, 5}, {9, 7} }
++};
++
++/* Small Page FLASH with FMR[ECCM] = 1 */
++static struct nand_ecclayout fsl_elbc_oob_sp_eccm1 = { /* TODO */
++//TODO .useecc = MTD_NANDECC_AUTOPL_USR, /* MTD_NANDECC_PLACEONLY, */
++ .eccbytes = 3,
++ .eccpos = {8, 9, 10},
++ .oobfree = { {0, 5}, {6, 2}, {11, 5} }
++};
++
++/* Large Page FLASH with FMR[ECCM] = 0 */
++static struct nand_ecclayout fsl_elbc_oob_lp_eccm0 = {
++//TODO .useecc = MTD_NANDECC_AUTOPL_USR, /* MTD_NANDECC_PLACEONLY, */
++ .eccbytes = 12,
++ .eccpos = {6, 7, 8, 22, 23, 24, 38, 39, 40, 54, 55, 56},
++ .oobfree = { {1, 5}, {9, 13}, {25, 13}, {41, 13}, {57, 7} }
++};
++
++/* Large Page FLASH with FMR[ECCM] = 1 */
++static struct nand_ecclayout fsl_elbc_oob_lp_eccm1 = {
++//TODO .useecc = MTD_NANDECC_AUTOPL_USR, /* MTD_NANDECC_PLACEONLY, */
++ .eccbytes = 12,
++ .eccpos = {8, 9, 10, 24, 25, 26, 40, 41, 42, 56, 57, 58},
++ .oobfree = { {1, 7}, {11, 13}, {27, 13}, {43, 13}, {59, 5} }
++};
++
++/*=================================*/
++
++/*
++ * Set up the FCM hardware block and page address fields, and the fcm
++ * structure addr field to point to the correct FCM buffer in memory
++ */
++static void set_addr(struct mtd_info *mtd, int column, int page_addr, int oob)
++{
++ struct nand_chip *chip = mtd->priv;
++ struct fsl_elbc_mtd *nmtd = chip->priv;
++ struct fsl_elbc_ctrl *ctrl = nmtd->ctrl;
++ volatile lbus83xx_t *lbc = ctrl->regs;
++ int buf_num;
++
++ ctrl->page = page_addr;
++
++ lbc->fbar = page_addr >> (chip->phys_erase_shift - chip->page_shift);
++ if (nmtd->pgs) {
++ lbc->fpar = ((page_addr << FPAR_LP_PI_SHIFT) & FPAR_LP_PI) |
++ ( oob ? FPAR_LP_MS : 0) |
++ column;
++ buf_num = (page_addr & 1) << 2;
++ } else {
++ lbc->fpar = ((page_addr << FPAR_SP_PI_SHIFT) & FPAR_SP_PI) |
++ ( oob ? FPAR_SP_MS : 0) |
++ column;
++ buf_num = page_addr & 7;
++ }
++ ctrl->addr = (unsigned char*)(nmtd->vbase + (buf_num * 1024));
++
++ /* for OOB data point to the second half of the buffer */
++ if (oob) {
++ ctrl->addr += (nmtd->pgs ? 2048 : 512);
++ }
++ FCM_DEBUG(2,"set_addr: bank=%d, ctrl->addr=0x%p (0x%08x)\n", buf_num, ctrl->addr, nmtd->vbase);
++}
++
++/*
++ * execute FCM command and wait for it to complete
++ */
++static int fsl_elbc_run_command(struct mtd_info *mtd)
++{
++ struct nand_chip *chip = mtd->priv;
++ struct fsl_elbc_mtd *nmtd = chip->priv;
++ struct fsl_elbc_ctrl *ctrl = nmtd->ctrl;
++ volatile lbus83xx_t *lbc = ctrl->regs;
++ /* Setup the FMR[OP] to execute without write protection */
++ lbc->fmr = nmtd->fmr | 3;
++ if (ctrl->use_mdr)
++ lbc->mdr = ctrl->mdr;
++
++ FCM_DEBUG(5,"fsl_elbc_run_command: fmr= %08X fir= %08X fcr= %08X\n",
++ lbc->fmr, lbc->fir, lbc->fcr);
++ FCM_DEBUG(5,"fsl_elbc_run_command: fbar=%08X fpar=%08X fbcr=%08X bank=%d\n",
++ lbc->fbar, lbc->fpar, lbc->fbcr, nmtd->bank);
++
++ /* clear event registers */
++ lbc->lteatr = 0;
++ lbc->ltesr |= (LTESR_FCT | LTESR_PAR | LTESR_CC);
++
++ /* execute special operation */
++ lbc->lsor = nmtd->bank;
++
++ /* wait for FCM complete flag or timeout */
++/* TODO */
++#ifdef FCM_USE_INTERRUPT
++ ctrl->status = ctrl->irq_status = 0;
++ wait_event_timeout(ctrl->irq_wait, ctrl->irq_status, FCM_TIMEOUT_MSECS * HZ/1000);
++ ctrl->status = ctrl->irq_status;
++#else
++ {
++ unsigned long timeout;
++ unsigned long now;
++ now = jiffies_to_msecs(jiffies);
++ timeout = now + FCM_TIMEOUT_MSECS;
++ while (time_before(now, timeout)) {
++ ctrl->status = lbc->ltesr & (LTESR_FCT | LTESR_PAR | LTESR_CC);
++ if (ctrl->status)
++ break;
++ now = jiffies_to_msecs(jiffies);
++ }
++ }
++#endif
++
++ /* store mdr value in case it was needed */
++ if (ctrl->use_mdr)
++ ctrl->mdr = lbc->mdr;
++
++ ctrl->use_mdr = 0;
++
++ FCM_DEBUG(5,"fsl_elbc_run_command: stat=%08X mdr= %08X fmr= %08X\n",
++ ctrl->status, ctrl->mdr, lbc->fmr);
++
++ /* returns 0 on success otherwise non-zero) */
++ return (ctrl->status == LTESR_CC ? 0 : EFAULT);
++}
++
++/* cmdfunc send commands to the FCM */
++static void fsl_elbc_cmdfunc(struct mtd_info *mtd, unsigned command,
++ int column, int page_addr)
++{
++ struct nand_chip *chip = mtd->priv;
++ struct fsl_elbc_mtd *nmtd = chip->priv;
++ struct fsl_elbc_ctrl *ctrl = nmtd->ctrl;
++ volatile lbus83xx_t *lbc = ctrl->regs;
++
++ ctrl->use_mdr = 0;
++
++ /* clear the read buffer */
++ ctrl->read_bytes = 0;
++ if (command != NAND_CMD_PAGEPROG) {
++ ctrl->index = 0;
++ ctrl->oobbuf = -1;
++ }
++
++ switch (command) {
++ /* READ0 and READ1 read the entire buffer to use hardware ECC */
++ case NAND_CMD_READ1:
++ FCM_DEBUG(2,"fsl_elbc_cmdfunc: NAND_CMD_READ1, page_addr:"
++ " 0x%x, column: 0x%x.\n", page_addr, column);
++ ctrl->index = column + 256;
++ goto read0;
++ case NAND_CMD_READ0:
++ FCM_DEBUG(2,"fsl_elbc_cmdfunc: NAND_CMD_READ0, page_addr:"
++ " 0x%x, column: 0x%x.\n", page_addr, column);
++ ctrl->index = column;
++read0:
++ if (nmtd->pgs) {
++ lbc->fir = (FIR_OP_CW0 << FIR_OP0_SHIFT) |
++ (FIR_OP_CA << FIR_OP1_SHIFT) |
++ (FIR_OP_PA << FIR_OP2_SHIFT) |
++ (FIR_OP_CW1 << FIR_OP3_SHIFT) |
++ (FIR_OP_RBW << FIR_OP4_SHIFT);
++ } else {
++ lbc->fir = (FIR_OP_CW0 << FIR_OP0_SHIFT) |
++ (FIR_OP_CA << FIR_OP1_SHIFT) |
++ (FIR_OP_PA << FIR_OP2_SHIFT) |
++ (FIR_OP_RBW << FIR_OP3_SHIFT);
++ }
++ lbc->fcr = (NAND_CMD_READ0 << FCR_CMD0_SHIFT) |
++ (NAND_CMD_READSTART << FCR_CMD1_SHIFT);
++ lbc->fbcr = 0; /* read entire page to enable ECC */
++ set_addr(mtd, 0, page_addr, 0);
++ ctrl->read_bytes = mtd->writesize + mtd->oobsize;
++ goto write_cmd2;
++ /* READOOB read only the OOB becasue no ECC is performed */
++ case NAND_CMD_READOOB:
++ FCM_DEBUG(2,"fsl_elbc_cmdfunc: NAND_CMD_READOOB, page_addr:"
++ " 0x%x, column: 0x%x.\n", page_addr, column);
++ if (nmtd->pgs) {
++ lbc->fir = (FIR_OP_CW0 << FIR_OP0_SHIFT) |
++ (FIR_OP_CA << FIR_OP1_SHIFT) |
++ (FIR_OP_PA << FIR_OP2_SHIFT) |
++ (FIR_OP_CW1 << FIR_OP3_SHIFT) |
++ (FIR_OP_RBW << FIR_OP4_SHIFT);
++ lbc->fcr = (NAND_CMD_READ0 << FCR_CMD0_SHIFT) |
++ (NAND_CMD_READSTART << FCR_CMD1_SHIFT);
++ } else {
++ lbc->fir = (FIR_OP_CW0 << FIR_OP0_SHIFT) |
++ (FIR_OP_CA << FIR_OP1_SHIFT) |
++ (FIR_OP_PA << FIR_OP2_SHIFT) |
++ (FIR_OP_RBW << FIR_OP3_SHIFT);
++ lbc->fcr = (NAND_CMD_READOOB << FCR_CMD0_SHIFT);
++ }
++ lbc->fbcr = mtd->oobsize - column;
++ set_addr(mtd, column, page_addr, 1);
++ ctrl->read_bytes = mtd->oobsize;
++ ctrl->index = column;
++ goto write_cmd2;
++ /* READID must read all 5 possible bytes while CEB is active */
++ case NAND_CMD_READID:
++ FCM_DEBUG(2,"fsl_elbc_cmdfunc: NAND_CMD_READID.\n");
++ lbc->fir = (FIR_OP_CW0 << FIR_OP0_SHIFT) |
++ (FIR_OP_UA << FIR_OP1_SHIFT) |
++ (FIR_OP_RBW << FIR_OP2_SHIFT);
++ lbc->fcr = (NAND_CMD_READID << FCR_CMD0_SHIFT);
++ lbc->fbcr = 5; /* 5 bytes for manuf, device and exts */
++ ctrl->use_mdr = 1;
++ ctrl->mdr = 0;
++ goto write_cmd0;
++ /* ERASE1 stores the block and page address */
++ case NAND_CMD_ERASE1:
++ FCM_DEBUG(2,"fsl_elbc_cmdfunc: NAND_CMD_ERASE1, page_addr:"
++ " 0x%x.\n", page_addr);
++ set_addr(mtd, 0, page_addr, 0);
++ goto end;
++ /* ERASE2 uses the block and page address from ERASE1 */
++ case NAND_CMD_ERASE2:
++ FCM_DEBUG(2,"fsl_elbc_cmdfunc: NAND_CMD_ERASE2.\n");
++ lbc->fir = (FIR_OP_CW0 << FIR_OP0_SHIFT) |
++ (FIR_OP_PA << FIR_OP1_SHIFT) |
++ (FIR_OP_CM1 << FIR_OP2_SHIFT);
++ lbc->fcr = (NAND_CMD_ERASE1 << FCR_CMD0_SHIFT) |
++ (NAND_CMD_ERASE2 << FCR_CMD1_SHIFT);
++ lbc->fbcr = 0;
++ goto write_cmd1;
++ /* SEQIN sets up the addr buffer and all registers except the length */
++ case NAND_CMD_SEQIN:
++ FCM_DEBUG(2,"fsl_elbc_cmdfunc: NAND_CMD_SEQIN/PAGE_PROG, page_addr:"
++ " 0x%x, column: 0x%x.\n", page_addr, column);
++ if (column == 0) {
++ lbc->fbcr = 0; /* write entire page to enable ECC */
++ } else {
++ lbc->fbcr = 1; /* mark as partial page so no HW ECC */
++ }
++ if (nmtd->pgs) {
++ /* always use READ0 for large page devices */
++ lbc->fir = (FIR_OP_CW0 << FIR_OP0_SHIFT) |
++ (FIR_OP_CA << FIR_OP1_SHIFT) |
++ (FIR_OP_PA << FIR_OP2_SHIFT) |
++ (FIR_OP_WB << FIR_OP3_SHIFT) |
++ (FIR_OP_CW1 << FIR_OP4_SHIFT);
++ lbc->fcr = (NAND_CMD_SEQIN << FCR_CMD0_SHIFT) |
++ (NAND_CMD_PAGEPROG << FCR_CMD1_SHIFT);
++ set_addr(mtd, column, page_addr, 0);
++ } else {
++ lbc->fir = (FIR_OP_CW0 << FIR_OP0_SHIFT) |
++ (FIR_OP_CM2 << FIR_OP1_SHIFT) |
++ (FIR_OP_CA << FIR_OP2_SHIFT) |
++ (FIR_OP_PA << FIR_OP3_SHIFT) |
++ (FIR_OP_WB << FIR_OP4_SHIFT) |
++ (FIR_OP_CW1 << FIR_OP5_SHIFT);
++ if (column >= mtd->writesize) {
++ /* OOB area --> READOOB */
++ column -= mtd->writesize;
++ lbc->fcr = (NAND_CMD_READOOB << FCR_CMD0_SHIFT)
++ | (NAND_CMD_PAGEPROG<< FCR_CMD1_SHIFT)
++ | (NAND_CMD_SEQIN << FCR_CMD2_SHIFT);
++ set_addr(mtd, column, page_addr, 1);
++ } else if (column < 256) {
++ /* First 256 bytes --> READ0 */
++ lbc->fcr = (NAND_CMD_READ0 << FCR_CMD0_SHIFT)
++ | (NAND_CMD_PAGEPROG<< FCR_CMD1_SHIFT)
++ | (NAND_CMD_SEQIN << FCR_CMD2_SHIFT);
++ set_addr(mtd, column, page_addr, 0);
++ } else {
++ /* Second 256 bytes --> READ1 */
++ column -= 256;
++ lbc->fcr = (NAND_CMD_READ1 << FCR_CMD0_SHIFT)
++ | (NAND_CMD_PAGEPROG<< FCR_CMD1_SHIFT)
++ | (NAND_CMD_SEQIN << FCR_CMD2_SHIFT);
++ set_addr(mtd, column, page_addr, 0);
++ }
++ }
++ goto end;
++ /* PAGEPROG reuses all of the setup from SEQIN and adds the length */
++ case NAND_CMD_PAGEPROG:
++ FCM_DEBUG(2,"fsl_elbc_cmdfunc: NAND_CMD_PAGEPROG"
++ " writing %d bytes.\n",ctrl->index);
++ /* if the write did not start at 0 or is not a full page */
++ /* then set the exact length, otherwise use a full page */
++ /* write so the HW generates the ECC. */
++ if (lbc->fbcr ||
++ (ctrl->index != (mtd->writesize + mtd->oobsize)))
++ lbc->fbcr = ctrl->index;
++ goto write_cmd2;
++ /* CMD_STATUS must read the status byte while CEB is active */
++ /* Note - it does not wait for the ready line */
++ case NAND_CMD_STATUS:
++ FCM_DEBUG(2,"fsl_elbc_cmdfunc: NAND_CMD_STATUS.\n");
++ lbc->fir = (FIR_OP_CM0 << FIR_OP0_SHIFT) |
++ (FIR_OP_RBW << FIR_OP1_SHIFT);
++ lbc->fcr = (NAND_CMD_STATUS << FCR_CMD0_SHIFT);
++ lbc->fbcr = 1;
++ goto write_cmd0;
++ /* RESET without waiting for the ready line */
++ case NAND_CMD_RESET:
++ FCM_DEBUG(2,"fsl_elbc_cmdfunc: NAND_CMD_RESET.\n");
++ lbc->fir = (FIR_OP_CM0 << FIR_OP0_SHIFT);
++ lbc->fcr = (NAND_CMD_RESET << FCR_CMD0_SHIFT);
++ lbc->fbcr = 0;
++ goto write_cmd0;
++ default:
++ printk("fsl_elbc_cmdfunc: error, unsupported command.\n");
++ goto end;
++ }
++
++ /* Short cuts fall through to save code */
++ write_cmd0:
++ set_addr(mtd, 0, 0, 0);
++ write_cmd1:
++ ctrl->read_bytes = lbc->fbcr;
++ write_cmd2:
++ fsl_elbc_run_command(mtd);
++
++#ifdef CONFIG_MTD_NAND_VERIFY_WRITE
++ /* if we wrote a page then read back the oob to get the ECC */
++ if ((command == NAND_CMD_PAGEPROG) &&
++ (chip->ecc.mode > NAND_ECC_SOFT) &&
++ (lbc->fbcr == 0) &&
++ (ctrl->oobbuf != 0) &&
++ (ctrl->oobbuf != -1)) {
++ int i;
++ uint *oob_config;
++ unsigned char *oob_buf;
++
++ i = ctrl->page;
++ oob_buf = (unsigned char*) ctrl->oobbuf;
++ oob_config = chip->ecc.layout->eccpos;
++
++ /* wait for the write to complete and check it passed */
++ if (!(chip->waitfunc(mtd, chip) & 0x01)) {
++ /* read back the OOB */
++ fsl_elbc_cmdfunc(mtd, NAND_CMD_READOOB, 0, i);
++ /* if it succeeded then copy the ECC bytes */
++ if (ctrl->status == LTESR_CC) {
++ for (i=0; i < chip->ecc.layout->eccbytes; i++) {
++ oob_buf[oob_config[i]] =
++ ctrl->addr[oob_config[i]];
++ }
++ }
++ }
++ }
++#endif
++
++ end:
++ return;
++}
++
++/* select chip */
++
++static void fsl_elbc_select_chip(struct mtd_info *mtd, int chip)
++{
++}
++
++/* fsl_elbc_cmd_ctrl
++ *
++ * Issue command and address cycles to the chip
++*/
++
++static void fsl_elbc_cmd_ctrl(struct mtd_info *mtd, int dat,
++ unsigned int ctrl)
++{
++}
++
++/* fsl_elbc_dev_ready()
++ *
++ * returns 0 if the nand is busy, 1 if it is ready
++*/
++
++static int fsl_elbc_dev_ready(struct mtd_info *mtd)
++{
++ return 0;
++}
++
++/*
++ * FCM does not support 16 bit data busses
++ */
++static u16 fsl_elbc_read_word(struct mtd_info *mtd)
++{
++ struct nand_chip *chip = mtd->priv;
++ struct fsl_elbc_ctrl *ctrl = (struct fsl_elbc_ctrl *) chip->controller;
++
++ dev_err(ctrl->device, "fsl_elbc_read_word: UNIMPLEMENTED.\n");
++ return 0;
++}
++
++/*
++ * Write buf to the FCM Controller Data Buffer
++ */
++static void fsl_elbc_write_buf(struct mtd_info *mtd, const u_char *buf, int len)
++{
++ struct nand_chip *chip = mtd->priv;
++ struct fsl_elbc_mtd *nmtd = chip->priv;
++ struct fsl_elbc_ctrl *ctrl = nmtd->ctrl;
++
++ FCM_DEBUG(3,"fsl_elbc_write_buf: writing %d bytes starting with 0x%lx"
++ " at %d.\n", len, *((unsigned long*) buf), ctrl->index);
++
++ /* If armed catch the address of the OOB buffer so that it can be */
++ /* updated with the real signature after the program comletes */
++ if (!ctrl->oobbuf)
++ ctrl->oobbuf = (int) buf;
++
++ /* copy the data into the FCM hardware buffer and update the index */
++ memcpy(&(ctrl->addr[ctrl->index]), buf, len);
++ ctrl->index += len;
++ return;
++}
++
++
++/*
++ * read a byte from either the FCM hardware buffer if it has any data left
++ * otherwise issue a command to read a single byte.
++ */
++static u_char fsl_elbc_read_byte(struct mtd_info *mtd)
++{
++ struct nand_chip *chip = mtd->priv;
++ struct fsl_elbc_mtd *nmtd = chip->priv;
++ struct fsl_elbc_ctrl *ctrl = nmtd->ctrl;
++ volatile lbus83xx_t *lbc = ctrl->regs;
++ unsigned char byte;
++
++ /* If there are still bytes in the FCM then use the next byte */
++ if(ctrl->index < ctrl->read_bytes) {
++ byte = ctrl->addr[(ctrl->index)++];
++ FCM_DEBUG(4,"fsl_elbc_read_byte: byte %u (%02X): %d of %d.\n",
++ byte, byte, ctrl->index-1, ctrl->read_bytes);
++ } else {
++ /* otherwise issue a command to read 1 byte */
++ lbc->fir = (FIR_OP_RSW << FIR_OP0_SHIFT);
++ ctrl->use_mdr = 1;
++ ctrl->read_bytes = 0;
++ ctrl->index = 0;
++ ctrl->read_bytes = 0;
++ ctrl->index = 0;
++ byte = fsl_elbc_run_command(mtd) ? ERR_BYTE : ctrl->mdr & 0xff;
++ FCM_DEBUG(4,"fsl_elbc_read_byte: byte %u (%02X) from bus.\n",
++ byte, byte);
++ }
++
++ return byte;
++}
++
++/*
++ * Read from the FCM Controller Data Buffer
++ */
++static void fsl_elbc_read_buf(struct mtd_info *mtd, u_char* buf, int len)
++{
++ struct nand_chip *chip = mtd->priv;
++ struct fsl_elbc_mtd *nmtd = chip->priv;
++ struct fsl_elbc_ctrl *ctrl = nmtd->ctrl;
++ int i;
++ int rest;
++ unsigned long old_status;
++
++ FCM_DEBUG(3,"fsl_elbc_read_buf: reading %d bytes.\n", len);
++
++ /* see how much is still in the FCM buffer */
++ i = min((unsigned int)len, (ctrl->read_bytes - ctrl->index));
++ rest = len - i;
++ len = i;
++
++ /* copying bytes even if there was an error so that the oob works */
++ memcpy(buf, &(ctrl->addr[(ctrl->index)]), len);
++ ctrl->index += len;
++
++ /* If more data is needed then issue another block read */
++ if (rest) {
++ FCM_DEBUG(3,"fsl_elbc_read_buf: getting %d more bytes.\n",
++ rest);
++
++ buf += len;
++
++ /* keep last status in case it was an error */
++ old_status = ctrl->status;
++
++ /* read full next page to use HW ECC if enabled */
++ fsl_elbc_cmdfunc(mtd, NAND_CMD_READ0, 0, ctrl->page + 1);
++
++ /* preserve the worst status code */
++ if (ctrl->status == LTESR_CC)
++ ctrl->status = old_status;
++
++ fsl_elbc_read_buf(mtd, buf, rest);
++ }
++ return;
++}
++
++
++/*
++ * Verify buffer against the FCM Controller Data Buffer
++ */
++static int fsl_elbc_verify_buf(struct mtd_info *mtd, const u_char *buf, int len)
++{
++ struct nand_chip *chip = mtd->priv;
++ struct fsl_elbc_mtd *nmtd = chip->priv;
++ struct fsl_elbc_ctrl *ctrl = nmtd->ctrl;
++ int i;
++ int rest;
++
++ FCM_DEBUG(3,"fsl_elbc_verify_buf: checking %d bytes starting with 0x%02lx.\n",
++ len, *((unsigned long*) buf));
++
++ /* If last read failed then return error bytes */
++ if (ctrl->status != LTESR_CC) {
++ return EFAULT;
++ }
++
++ /* see how much is still in the FCM buffer */
++ i = min((unsigned int)len, (ctrl->read_bytes - ctrl->index));
++ rest = len - i;
++ len = i;
++
++ if (memcmp(buf, &(ctrl->addr[(ctrl->index)]), len)) {
++ return EFAULT;
++ }
++
++ ctrl->index += len;
++ if (rest) {
++ FCM_DEBUG(3,"fsl_elbc_verify_buf: getting %d more bytes.\n", rest);
++ buf += len;
++
++ /* read full next page to use HW ECC if enabled */
++ fsl_elbc_cmdfunc(mtd, NAND_CMD_READ0, 0, ctrl->page + 1);
++
++ return fsl_elbc_verify_buf(mtd, buf, rest);
++ }
++ return 0;
++}
++
++/* this function is called after Program and Erase Operations to
++ * check for success or failure */
++static int fsl_elbc_wait(struct mtd_info *mtd, struct nand_chip *this)
++{
++ struct nand_chip *chip = mtd->priv;
++ struct fsl_elbc_mtd *nmtd = chip->priv;
++ struct fsl_elbc_ctrl *ctrl = nmtd->ctrl;
++ volatile lbus83xx_t *lbc = ctrl->regs;
++
++ if (ctrl->status != LTESR_CC) {
++ return(0x1); /* Status Read error */
++ }
++
++ /* Use READ_STATUS command, but wait for the device to be ready */
++ ctrl->use_mdr = 0;
++ ctrl->oobbuf = -1;
++ lbc->fir = (FIR_OP_CW0 << FIR_OP0_SHIFT) |
++ (FIR_OP_RBW << FIR_OP1_SHIFT);
++ lbc->fcr = (NAND_CMD_STATUS << FCR_CMD0_SHIFT);
++ set_addr(mtd, 0, 0, 0);
++ lbc->fbcr = 1;
++ ctrl->index = 0;
++ ctrl->read_bytes = lbc->fbcr;
++ fsl_elbc_run_command(mtd);
++ if (ctrl->status != LTESR_CC) {
++ return(0x1); /* Status Read error */
++ }
++ return chip->read_byte(mtd);
++}
++
++/* ECC handling functions */
++
++/*
++ * fsl_elbc_enable_hwecc - start ECC generation
++ */
++static void fsl_elbc_enable_hwecc(struct mtd_info *mtd, int mode)
++{
++ return;
++}
++
++/*
++ * fsl_elbc_calculate_ecc - Calculate the ECC bytes
++ * This is done by hardware during the write process, so we use this
++ * to arm the oob buf capture on the next write_buf() call. The ECC bytes
++ * only need to be captured if CONFIG_MTD_NAND_VERIFY_WRITE is defined which
++ * reads back the pages and checks they match the data and oob buffers.
++ */
++static int fsl_elbc_calculate_ecc(struct mtd_info *mtd, const u_char *dat, u_char *ecc_code)
++{
++#ifdef CONFIG_MTD_NAND_VERIFY_WRITE
++ struct nand_chip *chip = mtd->priv;
++ struct fsl_elbc_mtd *nmtd = chip->priv;
++ struct fsl_elbc_ctrl *ctrl = nmtd->ctrl;
++
++ /* arm capture of oob buf ptr on next write_buf */
++ ctrl->oobbuf = 0;
++#endif
++ return 0;
++}
++
++/*
++ * fsl_elbc_correct_data - Detect and correct bit error(s)
++ * The detection and correction is done automatically by the hardware,
++ * if the complete page was read. If the status code is okay then there
++ * was no error, otherwise we return an error code indicating an uncorrectable
++ * error.
++ */
++static int fsl_elbc_correct_data(struct mtd_info *mtd, u_char *dat, u_char *read_ecc, u_char *calc_ecc)
++{
++ struct nand_chip *chip = mtd->priv;
++ struct fsl_elbc_mtd *nmtd = chip->priv;
++ struct fsl_elbc_ctrl *ctrl = nmtd->ctrl;
++
++ /* No errors */
++ if (ctrl->status == LTESR_CC)
++ return 0;
++
++ return -1; /* uncorrectable error */
++}
++
++/*************************************************************************/
++/* Chip setup and control functions */
++/*************************************************************************/
++
++/*
++ * Dummy scan_bbt to complete setup of the FMR based on NAND size
++ */
++static int fsl_elbc_chip_init_tail (struct mtd_info *mtd)
++{
++ struct nand_chip *chip = mtd->priv;
++ struct fsl_elbc_mtd *nmtd = chip->priv;
++ struct fsl_elbc_ctrl *ctrl = nmtd->ctrl;
++ volatile lbus83xx_t *lbc = ctrl->regs;
++ unsigned int i;
++ unsigned int al;
++
++ /* calculate FMR Address Length field */
++ al = 0;
++ for (i = chip->pagemask >> 16; i ; i >>= 8) {
++ al++;
++ }
++
++ /* add to ECCM mode set in fsl_elbc_init */
++ nmtd->fmr |= 12 << FMR_CWTO_SHIFT | /* Timeout > 12 mSecs */
++ al << FMR_AL_SHIFT;
++
++ FCM_DEBUG(1,"fsl_elbc_init: nand->options = %08X\n", chip->options);
++ FCM_DEBUG(1,"fsl_elbc_init: nand->numchips = %10d\n", chip->numchips);
++ FCM_DEBUG(1,"fsl_elbc_init: nand->chipsize = %10ld\n", chip->chipsize);
++ FCM_DEBUG(1,"fsl_elbc_init: nand->pagemask = %10X\n", chip->pagemask);
++ FCM_DEBUG(1,"fsl_elbc_init: nand->chip_delay = %8d\n", chip->chip_delay);
++ FCM_DEBUG(1,"fsl_elbc_init: nand->badblockpos = %7d\n", chip->badblockpos);
++ FCM_DEBUG(1,"fsl_elbc_init: nand->chip_shift = %8d\n", chip->chip_shift);
++ FCM_DEBUG(1,"fsl_elbc_init: nand->page_shift = %8d\n", chip->page_shift);
++ FCM_DEBUG(1,"fsl_elbc_init: nand->phys_erase_shift = %2d\n",
++ chip->phys_erase_shift);
++ FCM_DEBUG(1,"fsl_elbc_init: nand->ecclayout= %10p\n", chip->ecclayout);
++ FCM_DEBUG(1,"fsl_elbc_init: nand->eccmode = %10d\n", chip->ecc.mode );
++ FCM_DEBUG(1,"fsl_elbc_init: nand->eccsteps = %10d\n", chip->ecc.steps);
++ FCM_DEBUG(1,"fsl_elbc_init: nand->eccsize = %10d\n", chip->ecc.size );
++ FCM_DEBUG(1,"fsl_elbc_init: nand->eccbytes = %10d\n", chip->ecc.bytes);
++ FCM_DEBUG(1,"fsl_elbc_init: nand->ecctotal = %10d\n", chip->ecc.total);
++ FCM_DEBUG(1,"fsl_elbc_init: nand->ecclayout= %10p\n", chip->ecc.layout);
++ FCM_DEBUG(1,"fsl_elbc_init: mtd->flags = %08X\n", mtd->flags);
++ FCM_DEBUG(1,"fsl_elbc_init: mtd->size = %10d\n", mtd->size);
++ FCM_DEBUG(1,"fsl_elbc_init: mtd->erasesize = %10d\n", mtd->erasesize);
++ FCM_DEBUG(1,"fsl_elbc_init: mtd->writesize = %10d\n", mtd->writesize);
++ FCM_DEBUG(1,"fsl_elbc_init: mtd->oobsize = %10d\n", mtd->oobsize);
++ FCM_DEBUG(1,"fsl_elbc_init: mtd->ecctype = %10d\n", mtd->ecctype);
++ FCM_DEBUG(1,"fsl_elbc_init: mtd->eccsize = %10d\n", mtd->eccsize);
++
++ /* adjust Option Register and ECC to match Flash page size */
++ if (mtd->writesize == 512)
++ lbc->bank[nmtd->bank].or &= ~(OR_FCM_PGS);
++ else if (mtd->writesize == 2048) {
++ lbc->bank[nmtd->bank].or |= OR_FCM_PGS;
++ /* adjust ecc setup if needed */
++ if ( (lbc->bank[nmtd->bank].br & BR_DECC) == BR_DECC_CHK_GEN) {
++ chip->ecc.size = 2048;
++ chip->ecc.steps = 1;
++//TODO chip->ecc.bytes += 9;
++//TODO chip->ecc.total += 9;
++ chip->ecc.layout = (nmtd->fmr & FMR_ECCM) ?
++ &fsl_elbc_oob_lp_eccm1 : &fsl_elbc_oob_lp_eccm0;
++ mtd->ecclayout = chip->ecc.layout;
++ }
++ }
++ else {
++ printk("fsl_elbc_init: page size %d is not supported\n",
++ mtd->writesize);
++ return -1;
++ }
++ nmtd->pgs = (lbc->bank[nmtd->bank].or>>OR_FCM_PGS_SHIFT) & 1;
++
++ /* fix up the oobavail size in case the layout was changed */
++ chip->ecc.layout->oobavail = 0;
++ for (i = 0; chip->ecc.layout->oobfree[i].length; i++)
++ chip->ecc.layout->oobavail +=
++ chip->ecc.layout->oobfree[i].length;
++
++ /* return to the default bbt_scan_routine */
++ chip->scan_bbt = nand_default_bbt;
++
++ /* restore complete options including the real SKIP_BBTSCAN setting */
++ chip->options = nmtd->options;
++
++ /* Check, if we should skip the bad block table scan */
++ if (chip->options & NAND_SKIP_BBTSCAN)
++ return 0;
++
++ return chip->scan_bbt(mtd);
++}
++/* fsl_elbc_chip_init
++ *
++ * init a single instance of an chip
++*/
++
++static int fsl_elbc_chip_init(struct fsl_elbc_mtd *nmtd)
++{
++ struct fsl_elbc_ctrl *ctrl = nmtd->ctrl;
++ volatile lbus83xx_t *lbc = ctrl->regs;
++ struct nand_chip *chip = &nmtd->chip;
++
++ FCM_DEBUG(1,"eLBC Set Information for bank %d\n", nmtd->bank);
++ FCM_DEBUG(1," name = %s\n",
++ nmtd->pl_chip.name ? nmtd->pl_chip.name : "(NULL)");
++ FCM_DEBUG(1," nr_chips = %d\n", nmtd->pl_chip.nr_chips);
++ FCM_DEBUG(1," partitions = %s\n",
++ nmtd->pl_chip.partitions_str ?
++ nmtd->pl_chip.partitions_str : "(NULL)");
++ dev_dbg(nmtd->device,"eLBC Set Information for bank %d\n", nmtd->bank);
++ dev_dbg(nmtd->device," name = %s\n",
++ nmtd->name ? nmtd->name : "(NULL)");
++ dev_dbg(nmtd->device," nr_chips = %d\n", nmtd->pl_chip.nr_chips);
++ dev_dbg(nmtd->device," partitions = %s\n",
++ nmtd->pl_chip.partitions_str ?
++ nmtd->pl_chip.partitions_str : "(NULL)");
++
++ /* Fill in fsl_elbc_mtd structure */
++ nmtd->name = (char *) nmtd->pl_chip.name;
++ nmtd->mtd.name = nmtd->name;
++ nmtd->mtd.priv = chip;
++ nmtd->mtd.owner = THIS_MODULE;
++ nmtd->pgs = (lbc->bank[nmtd->bank].or>>OR_FCM_PGS_SHIFT) & 1;
++// TODO nmtd->fmr = FMR_ECCM; /* rest filled in later */
++ nmtd->fmr = 0; /* rest filled in later */
++
++ /* fill in nand_chip structure */
++ /* set physical base address from the Base Register */
++ chip->IO_ADDR_W = (void __iomem*) (nmtd->pbase);
++ chip->IO_ADDR_R = chip->IO_ADDR_W;
++
++ /* set up function call table */
++// chip->hwcontrol = fsl_elbc_hwcontrol;
++ chip->read_byte = fsl_elbc_read_byte;
++ chip->read_word = fsl_elbc_read_word;
++ chip->write_buf = fsl_elbc_write_buf;
++ chip->read_buf = fsl_elbc_read_buf;
++ chip->verify_buf = fsl_elbc_verify_buf;
++ chip->select_chip = fsl_elbc_select_chip;
++// TODO chip->block_bad
++// TODO chip->block_markbad
++ chip->cmd_ctrl = fsl_elbc_cmd_ctrl;
++ chip->dev_ready = fsl_elbc_dev_ready;
++ chip->cmdfunc = fsl_elbc_cmdfunc;
++ chip->waitfunc = fsl_elbc_wait;
++ chip->scan_bbt = fsl_elbc_chip_init_tail;
++// TODO chip->errstat
++
++ /* set up nand options */
++ chip->options = NAND_NO_READRDY;
++ chip->chip_delay = 1;
++
++ chip->controller = &ctrl->controller;
++ chip->priv = nmtd;
++
++ /* If CS Base Register selects full hardware ECC then use it */
++ if ( (lbc->bank[nmtd->bank].br & BR_DECC) == BR_DECC_CHK_GEN) {
++ chip->ecc.mode = NAND_ECC_HW;
++ chip->ecc.calculate = fsl_elbc_calculate_ecc;
++ chip->ecc.correct = fsl_elbc_correct_data;
++ chip->ecc.hwctl = fsl_elbc_enable_hwecc;
++ /* put in small page settings and adjust later if needed */
++ chip->ecc.layout = (nmtd->fmr & FMR_ECCM) ?
++ &fsl_elbc_oob_sp_eccm1 : &fsl_elbc_oob_sp_eccm0;
++ chip->ecc.size = 512;
++ chip->ecc.bytes = 3;
++ } else {
++ /* otherwise fall back to default software ECC */
++ chip->ecc.mode = NAND_ECC_SOFT;
++ }
++
++ /* force BBT scan to get to custom scan_bbt for final settings */
++ nmtd->options = chip->options;
++ chip-> options &= ~(NAND_SKIP_BBTSCAN);
++
++ return 0;
++}
++
++
++
++static int fsl_elbc_chip_remove(struct platform_device *pdev)
++{
++ struct fsl_elbc_mtd *nmtd = platform_get_drvdata(pdev);
++ struct fsl_elbc_ctrl *ctrl = nmtd->ctrl;
++
++ nand_release(&nmtd->mtd);
++
++ if (nmtd->vbase != 0) {
++ iounmap((void __iomem*)nmtd->vbase);
++ nmtd->vbase = 0;
++ }
++
++/* TODO
++ if (nmtd->area != NULL) {
++ release_resource(nmtd->area);
++ kfree(nmtd->area);
++ nmtd->area = NULL;
++ }
++*/
++
++ platform_set_drvdata(pdev, NULL);
++
++ ctrl->nmtd[nmtd->bank] = NULL;
++ atomic_dec(&ctrl->childs_active);
++
++ kfree(nmtd);
++
++ return 0;
++}
++
++#ifdef CONFIG_MTD_PARTITIONS
++const char *part_probes[] = { "cmdlinepart", NULL };
++#endif
++
++static int fsl_elbc_chip_probe(struct platform_device *pdev)
++{
++ struct platform_fsl_nand_chip *pnc = pdev->dev.platform_data;
++ struct fsl_elbc_ctrl *ctrl = &elbc_ctrl;
++ volatile lbus83xx_t *lbc = ctrl->regs;
++ struct fsl_elbc_mtd *nmtd;
++ struct resource *res;
++ int err = 0;
++ int size;
++ int bank;
++ int mtd_parts_nb = 0;
++ struct mtd_partition *mtd_parts = 0;
++
++ dev_dbg(&pdev->dev, "fsl_elbc_chip_probe(%p)\n", pdev);
++
++ /* check that the platform data structure was supplied */
++ if (pnc == NULL) {
++ dev_err(&pdev->dev,"Device needs a platform data structure\n");
++ return -ENOENT;
++ }
++
++ /* check that the device has a name */
++ if (pnc->name == NULL) {
++ dev_err(&pdev->dev,"Device requires a name\n");
++ return -ENOENT;
++ }
++ /* get, allocate and map the memory resource */
++ res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
++ if (res == NULL) {
++ dev_err(&pdev->dev,"failed to get memory region resource\n");
++ return -ENOENT;
++ }
++ /* find which chip select it is connected to */
++ for (bank=0; bank < MAX_BANKS; bank++) {
++ if ( (lbc->bank[bank].br & BR_V) &&
++ ((lbc->bank[bank].br & BR_MSEL) == BR_MS_FCM) &&
++ ((lbc->bank[bank].br & lbc->bank[bank].or & BR_BA) ==
++ res->start) ) {
++ break;
++ }
++ }
++
++ if (bank >= MAX_BANKS) {
++ dev_err(&pdev->dev,"address did not match any chip selects\n");
++ return -ENOENT;
++ }
++
++ nmtd = kmalloc (sizeof(*nmtd), GFP_KERNEL);
++ if (!nmtd) {
++ dev_err(ctrl->device, "no memory for nand chip structure\n");
++ return -ENOMEM;
++ }
++ memset(nmtd, 0, sizeof(*nmtd));
++
++ platform_set_drvdata(pdev, nmtd);
++
++ atomic_inc(&ctrl->childs_active);
++ if (pnc)
++ memcpy(&(nmtd->pl_chip), pnc, sizeof(*pnc));
++ ctrl->nmtd[bank] = nmtd;
++ nmtd->bank = bank;
++ nmtd->ctrl = ctrl;
++ nmtd->device = &pdev->dev;
++
++ size = ( res->end - res->start ) + 1;
++/* TODO - already requested by the elbc instance ?????
++ ctrl->area = request_mem_region(res->start, size, pdev->name);
++ if (ctrl->area == NULL) {
++ dev_err(&pdev->dev, "failed to get memory region\n");
++ err = -ENOENT;
++ goto exit_error;
++ }
++*/
++ nmtd->pbase = res->start;
++ nmtd->vbase = (unsigned int) ioremap(nmtd->pbase, FCM_SIZE);
++ if (nmtd->vbase == 0) {
++ dev_err(ctrl->device, "failed to ioremap() memory region\n");
++ err = -EIO;
++ goto exit_error;
++ }
++
++ err = fsl_elbc_chip_init(nmtd);
++ if (err != 0)
++ goto exit_error;
++
++ err = nand_scan(&nmtd->mtd,
++ nmtd->pl_chip.nr_chips ? nmtd->pl_chip.nr_chips : 1 );
++ if (err != 0)
++ goto exit_error;
++
++#ifdef CONFIG_MTD_PARTITIONS
++ /* check for command line partition information */
++ if (!(nmtd->pl_chip.options & FSL_ELBC_NO_CMDLINE_PARTITIONS))
++ mtd_parts_nb = parse_mtd_partitions(
++ &nmtd->mtd,
++ part_probes,
++ &mtd_parts,
++ 0);
++#if 0
++ /* otherwise try local partition string */
++ if (mtd_parts_nb <= 0 && nmtd->pl_chip.partitions_str)
++ mtd_parts_nb = parse_mtd_string_partitions(
++ &nmtd->mtd,
++ part_probes,
++ &mtd_parts,
++ 0,
++ nmtd->pl_chip.partitions_str);
++#endif
++ if (mtd_parts_nb > 0)
++ err = add_mtd_partitions(&nmtd->mtd,
++ mtd_parts,
++ mtd_parts_nb);
++ else
++#endif
++ err = add_mtd_device(&nmtd->mtd);
++
++ if (err == 0)
++ return 0;
++
++ exit_error:
++ fsl_elbc_chip_remove(pdev);
++
++ if (err == 0)
++ err = -EINVAL;
++ return err;
++}
++
++
++/**************************************************************************/
++/* Controller setup and control functions */
++/**************************************************************************/
++
++static int fsl_elbc_ctrl_init(struct fsl_elbc_ctrl *ctrl,
++ struct platform_device *pdev)
++{
++ volatile lbus83xx_t *lbc= (lbus83xx_t*) ctrl->regs;
++
++ /* Enable only FCM detection of timeouts, ECC errors and completion */
++ lbc->ltedr = ~(LTESR_FCT | LTESR_PAR | LTESR_CC);
++
++ /* clear event registers */
++ lbc->lteatr = 0;
++ lbc->ltesr |= (LTESR_FCT | LTESR_PAR | LTESR_CC);
++
++ /* Enable interrupts for any detected events */
++ lbc->lteir = ~0;
++
++ ctrl->read_bytes = 0;
++ ctrl->index = 0;
++ ctrl->addr = (unsigned char*) (NULL);
++ ctrl->oobbuf = -1;
++
++ return 0;
++}
++
++static int fsl_elbc_ctrl_remove(struct platform_device *pdev)
++{
++ struct fsl_elbc_ctrl *ctrl = platform_get_drvdata(pdev);
++
++ if (atomic_read(&ctrl->childs_active))
++ return -EBUSY;
++
++ if (ctrl->regs != NULL) {
++ iounmap(ctrl->regs);
++ ctrl->regs = NULL;
++ }
++
++/* TODO
++ if (ctrl->area != NULL) {
++ release_resource(ctrl->area);
++ kfree(ctrl->area);
++ ctrl->area = NULL;
++ }
++*/
++ if (ctrl->irq) {
++ free_irq(ctrl->irq, pdev);
++ ctrl->irq = 0;
++ }
++
++ platform_set_drvdata(pdev, NULL);
++ memset(ctrl, 0, sizeof(*ctrl));
++
++ return 0;
++}
++
++
++/* interrupt handler code */
++
++static irqreturn_t fsl_elbc_ctrl_irq(int irqno, void *param)
++{
++ struct fsl_elbc_ctrl *ctrl = platform_get_drvdata((struct platform_device*)param);
++ volatile lbus83xx_t *lbc= (lbus83xx_t*) ctrl->regs;
++
++ ctrl->irq_status = lbc->ltesr & (LTESR_FCT | LTESR_PAR | LTESR_CC);
++ if (ctrl->irq_status)
++ wake_up(&ctrl->irq_wait);
++
++ /* clear event registers */
++ lbc->lteatr = 0;
++ lbc->ltesr |= ctrl->irq_status;
++
++ return IRQ_HANDLED;
++}
++
++
++/* fsl_elbc_ctrl_probe
++ *
++ * called by device layer when it finds a device matching
++ * one our driver can handled. This code allocates all of
++ * the resources needed for the controller only. The
++ * resources for the NAND banks themselves are allocated
++ * in the chip probe function.
++*/
++
++static int fsl_elbc_ctrl_probe(struct platform_device *pdev)
++{
++ struct fsl_elbc_ctrl *ctrl;
++ struct resource *res;
++ int err = 0;
++ int size;
++ int ret;
++
++ dev_dbg(&pdev->dev, "fsl_elbc_ctrl_probe(%p)\n", pdev);
++ ctrl = &elbc_ctrl;
++
++ memset(ctrl, 0, sizeof(*ctrl));
++ platform_set_drvdata(pdev, ctrl);
++
++ spin_lock_init(&ctrl->controller.lock);
++ init_waitqueue_head(&ctrl->controller.wq);
++ init_waitqueue_head(&ctrl->irq_wait);
++
++ /* get, allocate and map the memory resource */
++ res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
++ if (res == NULL) {
++ dev_err(&pdev->dev,"failed to get memory region resouce\n");
++ err = -ENOENT;
++ goto exit_error;
++ }
++
++ size = ( res->end - res->start ) + 1;
++/* TODO - already requested by the elbc instance ?????
++ ctrl->area = request_mem_region(res->start, size, pdev->name);
++ if (ctrl->area == NULL) {
++ dev_err(&pdev->dev, "failed to get memory region\n");
++ err = -ENOENT;
++ goto exit_error;
++ }
++*/
++ ctrl->regs = ioremap(res->start, size);
++ if (ctrl->regs == 0) {
++ dev_err(&pdev->dev, "failed to ioremap() region\n");
++ err = -EIO;
++ goto exit_error;
++ }
++
++ /* get and allocate the irq resource */
++ res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
++ if (res == NULL) {
++ dev_err(&pdev->dev, "failed to get irq resource\n");
++ err = -ENOENT;
++ goto exit_error;
++ }
++
++ ret = request_irq(res->start, fsl_elbc_ctrl_irq, 0, pdev->name, pdev);
++ if (ret != 0) {
++ dev_err(&pdev->dev, "failed to install irq (%d)\n", ret);
++ err = -EIO;
++ goto exit_error;
++ }
++
++ ctrl->irq = res->start;
++ ctrl->device = &pdev->dev;
++ dev_dbg(&pdev->dev, "mapped registers at %p\n", ctrl->regs);
++
++ /* initialise the hardware */
++
++ err = fsl_elbc_ctrl_init(ctrl, pdev);
++ if (err == 0)
++ return 0;
++
++ exit_error:
++ fsl_elbc_ctrl_remove(pdev);
++
++ if (err == 0)
++ err = -EINVAL;
++ return err;
++}
++
++/* PM Support */
++#ifdef CONFIG_PM
++
++static int fsl_elbc_ctrl_suspend(struct platform_device *dev, pm_message_t pm)
++{
++ return 0;
++}
++
++static int fsl_elbc_ctrl_resume(struct platform_device *dev)
++{
++ return 0;
++}
++
++#else
++#define fsl_elbc_ctrl_suspend NULL
++#define fsl_elbc_ctrl_resume NULL
++#endif
++
++/*************************************************************************/
++/* device driver registration */
++/*************************************************************************/
++
++
++static struct platform_driver fsl_elbc_ctrl_driver = {
++ .probe = fsl_elbc_ctrl_probe,
++ .remove = fsl_elbc_ctrl_remove,
++ .suspend = fsl_elbc_ctrl_suspend,
++ .resume = fsl_elbc_ctrl_resume,
++ .driver = {
++ .name = "fsl-elbc",
++ .owner = THIS_MODULE,
++ },
++};
++
++static struct platform_driver fsl_elbc_chip_driver = {
++ .probe = fsl_elbc_chip_probe,
++ .remove = fsl_elbc_chip_remove,
++ .driver = {
++ .name = "fsl-nand",
++ .owner = THIS_MODULE,
++ },
++};
++
++static int __init fsl_elbc_init(void)
++{
++ int ret;
++
++ printk("Freescale eLBC NAND Driver (C) 2006 Freescale\n");
++
++ ret = platform_driver_register(&fsl_elbc_ctrl_driver);
++ if (!ret)
++ ret = platform_driver_register(&fsl_elbc_chip_driver);
++
++ return ret;
++}
++
++static void __exit fsl_elbc_exit(void)
++{
++ platform_driver_unregister(&fsl_elbc_chip_driver);
++ platform_driver_unregister(&fsl_elbc_ctrl_driver);
++}
++
++module_init(fsl_elbc_init);
++module_exit(fsl_elbc_exit);
++
++MODULE_LICENSE("GPL");
++MODULE_AUTHOR("Nick Spence");
++MODULE_DESCRIPTION("Freescale Enhanced Local Bus Controller MTD NAND driver");
+diff -urN linux-2.6.24.orig/drivers/mtd/nand/Kconfig linux-2.6.24/drivers/mtd/nand/Kconfig
+--- linux-2.6.24.orig/drivers/mtd/nand/Kconfig 2008-01-24 23:58:37.000000000 +0100
++++ linux-2.6.24/drivers/mtd/nand/Kconfig 2008-02-18 16:39:43.000000000 +0100
+@@ -284,6 +284,14 @@
+ depends on MTD_NAND && MACH_ARMCORE
+
+
++config MTD_NAND_FSL_ELBC
++ tristate "NAND support for MPC831x"
++ depends on MTD_NAND && PPC_MPC831x
++ help
++ The MPC831x includes a NAND FLASH Controller Module with built-in hardware
++ ECC capabilities. Enabling this This option will enable you to use these to
++ control external NAND device.
++
+ config MTD_NAND_NANDSIM
+ tristate "Support for NAND Flash Simulator"
+ depends on MTD_PARTITIONS
+diff -urN linux-2.6.24.orig/drivers/mtd/nand/Makefile linux-2.6.24/drivers/mtd/nand/Makefile
+--- linux-2.6.24.orig/drivers/mtd/nand/Makefile 2008-01-24 23:58:37.000000000 +0100
++++ linux-2.6.24/drivers/mtd/nand/Makefile 2008-02-18 16:40:08.000000000 +0100
+@@ -29,5 +29,6 @@
+ obj-$(CONFIG_MTD_NAND_BASLER_EXCITE) += excite_nandflash.o
+ obj-$(CONFIG_MTD_NAND_PLATFORM) += plat_nand.o
+ obj-$(CONFIG_MTD_ALAUDA) += alauda.o
++obj-$(CONFIG_MTD_NAND_FSL_ELBC) += fsl_elbc.o
+
+ nand-objs := nand_base.o nand_bbt.o
+diff -urN linux-2.6.24.orig/include/linux/mtd/fsl_elbc.h linux-2.6.24/include/linux/mtd/fsl_elbc.h
+--- linux-2.6.24.orig/include/linux/mtd/fsl_elbc.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.24/include/linux/mtd/fsl_elbc.h 2008-02-18 16:39:43.000000000 +0100
+@@ -0,0 +1,313 @@
++/*
++ * (C) Copyright 2004-2006 Freescale Semiconductor, Inc.
++ *
++ * Freescale Enhanced Local Bus Controller Internal Memory Map
++ *
++ * History :
++ * 20061010 : Extracted fomr immap_83xx.h
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License as
++ * published by the Free Software Foundation; either version 2 of
++ * the License, or (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
++ * MA 02111-1307 USA
++ *
++ */
++#ifdef __KERNEL__
++#ifndef __FSL_ELBC__
++#define __FSL_ELBC__
++
++/*
++ * Local Bus Controller Registers
++ */
++typedef struct lbus_bank{
++ u32 br; /**< Base Register */
++#define BR0 0x5000
++#define BR1 0x5008
++#define BR2 0x5010
++#define BR3 0x5018
++#define BR4 0x5020
++#define BR5 0x5028
++#define BR6 0x5030
++#define BR7 0x5038
++
++#define BR_BA 0xFFFF8000
++#define BR_BA_SHIFT 15
++#define BR_PS 0x00001800
++#define BR_PS_SHIFT 11
++#define BR_PS_8 0x00000800 /* Port Size 8 bit */
++#define BR_PS_16 0x00001000 /* Port Size 16 bit */
++#define BR_PS_32 0x00001800 /* Port Size 32 bit */
++#define BR_DECC 0x00000600
++#define BR_DECC_SHIFT 9
++#define BR_DECC_OFF 0x00000000 /* HW ECC checking and generation off */
++#define BR_DECC_CHK 0x00000200 /* HW ECC checking on, generation off */
++#define BR_DECC_CHK_GEN 0x00000400 /* HW ECC checking and generation on */
++#define BR_WP 0x00000100
++#define BR_WP_SHIFT 8
++#define BR_MSEL 0x000000E0
++#define BR_MSEL_SHIFT 5
++#define BR_MS_GPCM 0x00000000 /* GPCM */
++#define BR_MS_FCM 0x00000020 /* FCM */
++#define BR_MS_SDRAM 0x00000060 /* SDRAM */
++#define BR_MS_UPMA 0x00000080 /* UPMA */
++#define BR_MS_UPMB 0x000000A0 /* UPMB */
++#define BR_MS_UPMC 0x000000C0 /* UPMC */
++#define BR_V 0x00000001
++#define BR_V_SHIFT 0
++#define BR_RES ~(BR_BA|BR_PS|BR_DECC|BR_WP|BR_MSEL|BR_V)
++
++ u32 or; /**< Base Register */
++#define OR0 0x5004
++#define OR1 0x500C
++#define OR2 0x5014
++#define OR3 0x501C
++#define OR4 0x5024
++#define OR5 0x502C
++#define OR6 0x5034
++#define OR7 0x503C
++
++#define OR_GPCM_AM 0xFFFF8000
++#define OR_GPCM_AM_SHIFT 15
++#define OR_GPCM_BCTLD 0x00001000
++#define OR_GPCM_BCTLD_SHIFT 12
++#define OR_GPCM_CSNT 0x00000800
++#define OR_GPCM_CSNT_SHIFT 11
++#define OR_GPCM_ACS 0x00000600
++#define OR_GPCM_ACS_SHIFT 9
++#define OR_GPCM_ACS_0b10 0x00000400
++#define OR_GPCM_ACS_0b11 0x00000600
++#define OR_GPCM_XACS 0x00000100
++#define OR_GPCM_XACS_SHIFT 8
++#define OR_GPCM_SCY 0x000000F0
++#define OR_GPCM_SCY_SHIFT 4
++#define OR_GPCM_SCY_1 0x00000010
++#define OR_GPCM_SCY_2 0x00000020
++#define OR_GPCM_SCY_3 0x00000030
++#define OR_GPCM_SCY_4 0x00000040
++#define OR_GPCM_SCY_5 0x00000050
++#define OR_GPCM_SCY_6 0x00000060
++#define OR_GPCM_SCY_7 0x00000070
++#define OR_GPCM_SCY_8 0x00000080
++#define OR_GPCM_SCY_9 0x00000090
++#define OR_GPCM_SCY_10 0x000000a0
++#define OR_GPCM_SCY_11 0x000000b0
++#define OR_GPCM_SCY_12 0x000000c0
++#define OR_GPCM_SCY_13 0x000000d0
++#define OR_GPCM_SCY_14 0x000000e0
++#define OR_GPCM_SCY_15 0x000000f0
++#define OR_GPCM_SETA 0x00000008
++#define OR_GPCM_SETA_SHIFT 3
++#define OR_GPCM_TRLX 0x00000004
++#define OR_GPCM_TRLX_SHIFT 2
++#define OR_GPCM_EHTR 0x00000002
++#define OR_GPCM_EHTR_SHIFT 1
++#define OR_GPCM_EAD 0x00000001
++#define OR_GPCM_EAD_SHIFT 0
++
++#define OR_UPM_AM 0xFFFF8000
++#define OR_UPM_AM_SHIFT 15
++#define OR_UPM_XAM 0x00006000
++#define OR_UPM_XAM_SHIFT 13
++#define OR_UPM_BCTLD 0x00001000
++#define OR_UPM_BCTLD_SHIFT 12
++#define OR_UPM_BI 0x00000100
++#define OR_UPM_BI_SHIFT 8
++#define OR_UPM_TRLX 0x00000004
++#define OR_UPM_TRLX_SHIFT 2
++#define OR_UPM_EHTR 0x00000002
++#define OR_UPM_EHTR_SHIFT 1
++#define OR_UPM_EAD 0x00000001
++#define OR_UPM_EAD_SHIFT 0
++
++#define OR_SDRAM_AM 0xFFFF8000
++#define OR_SDRAM_AM_SHIFT 15
++#define OR_SDRAM_XAM 0x00006000
++#define OR_SDRAM_XAM_SHIFT 13
++#define OR_SDRAM_COLS 0x00001C00
++#define OR_SDRAM_COLS_SHIFT 10
++#define OR_SDRAM_ROWS 0x000001C0
++#define OR_SDRAM_ROWS_SHIFT 6
++#define OR_SDRAM_PMSEL 0x00000020
++#define OR_SDRAM_PMSEL_SHIFT 5
++#define OR_SDRAM_EAD 0x00000001
++#define OR_SDRAM_EAD_SHIFT 0
++
++#define OR_FCM_AM 0xFFFF8000
++#define OR_FCM_AM_SHIFT 15
++#define OR_FCM_BCTLD 0x00001000
++#define OR_FCM_BCTLD_SHIFT 12
++#define OR_FCM_PGS 0x00000400
++#define OR_FCM_PGS_SHIFT 10
++#define OR_FCM_CSCT 0x00000200
++#define OR_FCM_CSCT_SHIFT 9
++#define OR_FCM_CST 0x00000100
++#define OR_FCM_CST_SHIFT 8
++#define OR_FCM_CHT 0x00000080
++#define OR_FCM_CHT_SHIFT 7
++#define OR_FCM_SCY 0x00000070
++#define OR_FCM_SCY_SHIFT 4
++#define OR_FCM_SCY_1 0x00000010
++#define OR_FCM_SCY_2 0x00000020
++#define OR_FCM_SCY_3 0x00000030
++#define OR_FCM_SCY_4 0x00000040
++#define OR_FCM_SCY_5 0x00000050
++#define OR_FCM_SCY_6 0x00000060
++#define OR_FCM_SCY_7 0x00000070
++#define OR_FCM_RST 0x00000008
++#define OR_FCM_RST_SHIFT 3
++#define OR_FCM_TRLX 0x00000004
++#define OR_FCM_TRLX_SHIFT 2
++#define OR_FCM_EHTR 0x00000002
++#define OR_FCM_EHTR_SHIFT 1
++} lbus_bank_t;
++
++typedef struct lbus83xx {
++ lbus_bank_t bank[8];
++ u8 res0[0x28];
++ u32 mar; /**< UPM Address Register */
++ u8 res1[0x4];
++ u32 mamr; /**< UPMA Mode Register */
++ u32 mbmr; /**< UPMB Mode Register */
++ u32 mcmr; /**< UPMC Mode Register */
++ u8 res2[0x8];
++ u32 mrtpr; /**< Memory Refresh Timer Prescaler Register */
++ u32 mdr; /**< UPM Data Register */
++ u8 res3[0x4];
++ u32 lsor; /**< Special Operation Initiation Register */
++ u32 lsdmr; /**< SDRAM Mode Register */
++ u8 res4[0x8];
++ u32 lurt; /**< UPM Refresh Timer */
++ u32 lsrt; /**< SDRAM Refresh Timer */
++ u8 res5[0x8];
++ u32 ltesr; /**< Transfer Error Status Register */
++#define LTESR_BM 0x80000000
++#define LTESR_FCT 0x40000000
++#define LTESR_PAR 0x20000000
++#define LTESR_WP 0x04000000
++#define LTESR_ATMW 0x00800000
++#define LTESR_ATMR 0x00400000
++#define LTESR_CS 0x00080000
++#define LTESR_CC 0x00000001
++ u32 ltedr; /**< Transfer Error Disable Register */
++ u32 lteir; /**< Transfer Error Interrupt Register */
++ u32 lteatr; /**< Transfer Error Attributes Register */
++ u32 ltear; /**< Transfer Error Address Register */
++ u8 res6[0xC];
++ u32 lbcr; /**< Configuration Register */
++#define LBCR_LDIS 0x80000000
++#define LBCR_LDIS_SHIFT 31
++#define LBCR_BCTLC 0x00C00000
++#define LBCR_BCTLC_SHIFT 22
++#define LBCR_AHD 0x00200000
++#define LBCR_LPBSE 0x00020000
++#define LBCR_LPBSE_SHIFT 17
++#define LBCR_EPAR 0x00010000
++#define LBCR_EPAR_SHIFT 16
++#define LBCR_BMT 0x0000FF00
++#define LBCR_BMT_SHIFT 8
++#define LBCR_INIT 0x00040000
++ u32 lcrr; /**< Clock Ratio Register */
++#define LCRR_DBYP 0x80000000
++#define LCRR_DBYP_SHIFT 31
++#define LCRR_BUFCMDC 0x30000000
++#define LCRR_BUFCMDC_SHIFT 28
++#define LCRR_ECL 0x03000000
++#define LCRR_ECL_SHIFT 24
++#define LCRR_EADC 0x00030000
++#define LCRR_EADC_SHIFT 16
++#define LCRR_CLKDIV 0x0000000F
++#define LCRR_CLKDIV_SHIFT 0
++ u8 res7[0x8];
++ u32 fmr; /**< Flash Mode Register */
++#define FMR_CWTO 0x0000F000
++#define FMR_CWTO_SHIFT 12
++#define FMR_BOOT 0x00000800
++#define FMR_ECCM 0x00000100
++#define FMR_AL 0x00000030
++#define FMR_AL_SHIFT 4
++#define FMR_OP 0x00000003
++#define FMR_OP_SHIFT 0
++ u32 fir; /**< Flash Instruction Register */
++#define FIR_OP0 0xF0000000
++#define FIR_OP0_SHIFT 28
++#define FIR_OP1 0x0F000000
++#define FIR_OP1_SHIFT 24
++#define FIR_OP2 0x00F00000
++#define FIR_OP2_SHIFT 20
++#define FIR_OP3 0x000F0000
++#define FIR_OP3_SHIFT 16
++#define FIR_OP4 0x0000F000
++#define FIR_OP4_SHIFT 12
++#define FIR_OP5 0x00000F00
++#define FIR_OP5_SHIFT 8
++#define FIR_OP6 0x000000F0
++#define FIR_OP6_SHIFT 4
++#define FIR_OP7 0x0000000F
++#define FIR_OP7_SHIFT 0
++#define FIR_OP_NOP 0x0 /* No operation and end of sequence */
++#define FIR_OP_CA 0x1 /* Issue current column address */
++#define FIR_OP_PA 0x2 /* Issue current block+page address */
++#define FIR_OP_UA 0x3 /* Issue user defined address */
++#define FIR_OP_CM0 0x4 /* Issue command from FCR[CMD0] */
++#define FIR_OP_CM1 0x5 /* Issue command from FCR[CMD1] */
++#define FIR_OP_CM2 0x6 /* Issue command from FCR[CMD2] */
++#define FIR_OP_CM3 0x7 /* Issue command from FCR[CMD3] */
++#define FIR_OP_WB 0x8 /* Write FBCR bytes from FCM buffer */
++#define FIR_OP_WS 0x9 /* Write 1 or 2 bytes from MDR[AS] */
++#define FIR_OP_RB 0xA /* Read FBCR bytes to FCM buffer */
++#define FIR_OP_RS 0xB /* Read 1 or 2 bytes to MDR[AS] */
++#define FIR_OP_CW0 0xC /* Wait then issue FCR[CMD0] */
++#define FIR_OP_CW1 0xD /* Wait then issue FCR[CMD1] */
++#define FIR_OP_RBW 0xE /* Wait then read FBCR bytes */
++#define FIR_OP_RSW 0xE /* Wait then read 1 or 2 bytes */
++ u32 fcr; /**< Flash Command Register */
++#define FCR_CMD0 0xFF000000
++#define FCR_CMD0_SHIFT 24
++#define FCR_CMD1 0x00FF0000
++#define FCR_CMD1_SHIFT 16
++#define FCR_CMD2 0x0000FF00
++#define FCR_CMD2_SHIFT 8
++#define FCR_CMD3 0x000000FF
++#define FCR_CMD3_SHIFT 0
++ u32 fbar; /**< Flash Block Address Register */
++#define FBAR_BLK 0x00FFFFFF
++ u32 fpar; /**< Flash Page Address Register */
++#define FPAR_SP_PI 0x00007C00
++#define FPAR_SP_PI_SHIFT 10
++#define FPAR_SP_MS 0x00000200
++#define FPAR_SP_CI 0x000001FF
++#define FPAR_SP_CI_SHIFT 0
++#define FPAR_LP_PI 0x0003F000
++#define FPAR_LP_PI_SHIFT 12
++#define FPAR_LP_MS 0x00000800
++#define FPAR_LP_CI 0x000007FF
++#define FPAR_LP_CI_SHIFT 0
++ u32 fbcr; /**< Flash Byte Count Register */
++#define FBCR_BC 0x00000FFF
++ u8 res11[0x8];
++ u8 res8[0xF00];
++} lbus83xx_t;
++
++struct platform_fsl_nand_chip {
++ const char *name;
++ int nr_chips;
++ const char *partitions_str;
++ unsigned int options;
++};
++
++/* Setting this option prevents the command line from being parsed
++ * for MTD partitions. */
++#define FSL_ELBC_NO_CMDLINE_PARTITIONS 0x10000000
++
++#endif /* __FSL_ELBC__ */
++#endif /* __KERNEL__ */
diff --git a/packages/linux/linux_2.6.23.bb b/packages/linux/linux_2.6.23.bb
index f754e6be83..ffc1820229 100644
--- a/packages/linux/linux_2.6.23.bb
+++ b/packages/linux/linux_2.6.23.bb
@@ -10,7 +10,7 @@ DEFAULT_PREFERENCE_avr32 = "1"
DEPENDS_append_mpc8313e-rdb = " dtc-native"
DEPENDS_append_mpc8323e-rdb = " dtc-native"
-PR = "r11"
+PR = "r12"
SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-2.6.23.tar.bz2 \
file://binutils-buildid-arm.patch;patch=1 \
diff --git a/packages/linux/linux_2.6.24.bb b/packages/linux/linux_2.6.24.bb
index afb45159c4..04470bdf03 100644
--- a/packages/linux/linux_2.6.24.bb
+++ b/packages/linux/linux_2.6.24.bb
@@ -7,7 +7,7 @@ DEFAULT_PREFERENCE_mpc8313e-rdb = "1"
DEPENDS_append_mpc8313e-rdb = " dtc-native"
-PR = "r5"
+PR = "r6"
SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-2.6.24.tar.bz2 \
http://kamikaze.waninkoko.info/patches/2.6.24/kamikaze1/broken-out/squashfs-lzma-2.6.24.patch;patch=1 \
@@ -24,6 +24,7 @@ SRC_URI_append_gesbc-9302 = " \
"
SRC_URI_append_mpc8313e-rdb = "\
+ file://mpc831x-nand.patch;patch=1 \
file://mpc8313e-rdb-leds.patch;patch=1 \
file://mpc8313e-rdb-rtc.patch;patch=1"
diff --git a/packages/psplash/files/logo-math.patch b/packages/psplash/files/logo-math.patch
index 87574b1855..21467af0ec 100644
--- a/packages/psplash/files/logo-math.patch
+++ b/packages/psplash/files/logo-math.patch
@@ -1,3 +1,5 @@
+upstream: http://bugzilla.openedhand.com/show_bug.cgi?id=801
+comment:
Do better math when showing logo vs progressbar.
--- psplash/psplash.c.org 2007-09-22 20:33:36.000000000 +0300
diff --git a/packages/xorg-lib/diet-x11/autofoo.patch b/packages/xorg-lib/diet-x11/autofoo.patch
deleted file mode 100644
index 8bdba09768..0000000000
--- a/packages/xorg-lib/diet-x11/autofoo.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-
-#
-# Patch managed by http://www.holgerschurig.de/patcher.html
-#
-
---- libX11-6.2.1/configure.ac~autofoo
-+++ libX11-6.2.1/configure.ac
-@@ -7,12 +7,12 @@
- [jg@freedesktop.org],
- libX11)
- AC_CONFIG_SRCDIR([Makefile.am])
--AM_INIT_AUTOMAKE([dist-bzip2])
-+AC_CONFIG_AUX_DIR(.)
-
-+AM_INIT_AUTOMAKE([dist-bzip2])
- AM_MAINTAINER_MODE
-
- AM_CONFIG_HEADER([src/config.h])
--AC_CONFIG_AUX_DIR(.)
-
- # Checks for programs.
- AC_PROG_LIBTOOL
diff --git a/packages/xorg-lib/diet-x11/makekeys.diff b/packages/xorg-lib/diet-x11/makekeys.diff
deleted file mode 100644
index cea08725ec..0000000000
--- a/packages/xorg-lib/diet-x11/makekeys.diff
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -Nru libX11-X11R7.1-1.0.1.org/src/util/makekeys.c libX11-X11R7.1-1.0.1/src/util/makekeys.c
---- libX11-X11R7.1-1.0.1.org/src/util/makekeys.c 2007-03-08 14:34:34.000000000 +0100
-+++ libX11-X11R7.1-1.0.1/src/util/makekeys.c 2007-03-08 14:34:58.000000000 +0100
-@@ -49,7 +49,7 @@
- KeySym val;
- } info[KTNUM];
-
--#define MIN_REHASH 10
-+#define MIN_REHASH 15
- #define MATCHES 10
-
- char tab[KTNUM];
diff --git a/packages/xorg-lib/diet-x11_1.1.1.bb b/packages/xorg-lib/diet-x11_1.1.1.bb
index 8dc3174a16..4219b0c997 100644
--- a/packages/xorg-lib/diet-x11_1.1.1.bb
+++ b/packages/xorg-lib/diet-x11_1.1.1.bb
@@ -4,6 +4,8 @@ require libx11_${PV}.bb
EXTRA_OECONF += "--disable-udc --enable-xcms --disable-xlocale --disable-xkb"
CFLAGS += "-D_GNU_SOURCE"
+FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/libx11"
+
SRC_URI += "file://X18NCMSstubs.diff;patch=1 \
file://fix-disable-xlocale.diff;patch=1 \
file://fix-utf8-wrong-define.patch;patch=1 \
diff --git a/packages/xorg-lib/diet-x11_1.1.2.bb b/packages/xorg-lib/diet-x11_1.1.2.bb
index f032987b88..2dbd458ec7 100644
--- a/packages/xorg-lib/diet-x11_1.1.2.bb
+++ b/packages/xorg-lib/diet-x11_1.1.2.bb
@@ -4,5 +4,7 @@ SRC_URI += "file://X18NCMSstubs.diff;patch=1 \
file://fix-disable-xlocale.diff;patch=1 \
file://fix-utf8-wrong-define.patch;patch=1"
+FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/libx11"
+
EXTRA_OECONF += "--disable-udc --disable-xcms --disable-xlocale --disable-xkb"
CFLAGS += "-D_GNU_SOURCE"
diff --git a/packages/xorg-lib/diet-x11_1.1.3.bb b/packages/xorg-lib/diet-x11_1.1.3.bb
index f032987b88..2dbd458ec7 100644
--- a/packages/xorg-lib/diet-x11_1.1.3.bb
+++ b/packages/xorg-lib/diet-x11_1.1.3.bb
@@ -4,5 +4,7 @@ SRC_URI += "file://X18NCMSstubs.diff;patch=1 \
file://fix-disable-xlocale.diff;patch=1 \
file://fix-utf8-wrong-define.patch;patch=1"
+FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/libx11"
+
EXTRA_OECONF += "--disable-udc --disable-xcms --disable-xlocale --disable-xkb"
CFLAGS += "-D_GNU_SOURCE"
diff --git a/packages/xorg-lib/files/errordb-keysymdb-path-fix.patch b/packages/xorg-lib/files/errordb-keysymdb-path-fix.patch
deleted file mode 100644
index f43d38065e..0000000000
--- a/packages/xorg-lib/files/errordb-keysymdb-path-fix.patch
+++ /dev/null
@@ -1,22 +0,0 @@
---- X11/src/ErrDes.c.orig 2005-09-03 16:15:48 +0200
-+++ X11/src/ErrDes.c 2005-09-03 16:16:03 +0200
-@@ -56,7 +56,7 @@
- #include <stdio.h>
-
- #ifndef ERRORDB
--#define ERRORDB "/usr/lib/X11/XErrorDB"
-+#define ERRORDB "/usr/share/X11/XErrorDB"
- #endif
-
- /*
---- X11/src/StrKeysym.c.orig 2005-09-03 16:41:18 +0200
-+++ X11/src/StrKeysym.c 2005-09-03 16:41:33 +0200
-@@ -36,7 +36,7 @@
- #include "Key.h"
-
- #ifndef KEYSYMDB
--#define KEYSYMDB "/usr/lib/X11/XKeysymDB"
-+#define KEYSYMDB "/usr/share/X11/XKeysymDB"
- #endif
-
- static Bool initialized;
diff --git a/packages/xorg-lib/files/fix-utf8-wrong-define.patch b/packages/xorg-lib/files/fix-utf8-wrong-define.patch
deleted file mode 100644
index dca88fba92..0000000000
--- a/packages/xorg-lib/files/fix-utf8-wrong-define.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-
-#
-# Patch managed by http://www.holgerschurig.de/patcher.html
-#
-
---- libX11-6.2.1/include/X11/Xlib.h~fix-utf8-wrong-define
-+++ libX11-6.2.1/include/X11/Xlib.h
-@@ -100,7 +100,7 @@
-
- /* API mentioning "UTF8" or "utf8" is an XFree86 extension, introduced in
- November 2000. Its presence is indicated through the following macro. */
--#define X_HAVE_UTF8_STRING 1
-+#undef X_HAVE_UTF8_STRING
-
- typedef char *XPointer;
-
diff --git a/packages/xorg-lib/libice/.mtn2git_empty b/packages/xorg-lib/libice/.mtn2git_empty
deleted file mode 100644
index e69de29bb2..0000000000
--- a/packages/xorg-lib/libice/.mtn2git_empty
+++ /dev/null
diff --git a/packages/xorg-lib/libice/autofoo.patch b/packages/xorg-lib/libice/autofoo.patch
deleted file mode 100644
index 8ab0585fb8..0000000000
--- a/packages/xorg-lib/libice/autofoo.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-
-#
-# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
-#
-
---- libICE-6.3.3/configure.ac~autofoo 2004-05-11 01:50:07.000000000 -0400
-+++ libICE-6.3.3/configure.ac 2005-01-18 02:30:07.463895544 -0500
-@@ -8,12 +8,12 @@
- libICE)
-
- AC_CONFIG_SRCDIR([Makefile.am])
-+AC_CONFIG_AUX_DIR(.)
- AM_INIT_AUTOMAKE([dist-bzip2])
-
- AM_MAINTAINER_MODE
-
- AM_CONFIG_HEADER([config.h])
--AC_CONFIG_AUX_DIR(.)
-
- # Checks for programs.
- AC_PROG_LIBTOOL
diff --git a/packages/xorg-lib/liblbxutil/mkg3states-1.0.0.patch b/packages/xorg-lib/liblbxutil/mkg3states-1.0.0.patch
deleted file mode 100644
index afa34712e2..0000000000
--- a/packages/xorg-lib/liblbxutil/mkg3states-1.0.0.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-diff -ruN liblbxutil-X11R7.0-1.0.0_orig/configure.ac liblbxutil-X11R7.0-1.0.0/configure.ac
---- liblbxutil-X11R7.0-1.0.0_orig/configure.ac 2005-12-15 00:24:36.000000000 +0000
-+++ liblbxutil-X11R7.0-1.0.0/configure.ac 2006-08-21 18:32:04.000000000 +0000
-@@ -60,4 +60,5 @@
-
- AC_OUTPUT([Makefile
- src/Makefile
-+ src/image/Makefile
- lbxutil.pc])
-diff -ruN liblbxutil-X11R7.0-1.0.0_orig/src/Makefile.am liblbxutil-X11R7.0-1.0.0/src/Makefile.am
---- liblbxutil-X11R7.0-1.0.0_orig/src/Makefile.am 2005-10-16 02:07:10.000000000 +0000
-+++ liblbxutil-X11R7.0-1.0.0/src/Makefile.am 2006-08-21 18:32:04.000000000 +0000
-@@ -1,9 +1,6 @@
- lib_LTLIBRARIES = liblbxutil.la
-
--noinst_PROGRAMS = mkg3states
--
--mkg3states_SOURCES = \
-- $(srcdir)/image/mkg3states.c
-+SUBDIRS = image
-
- liblbxutil_la_SOURCES = \
- $(srcdir)/lbx_zlib/reqstats.h \
-@@ -28,9 +25,8 @@
-
- $(srcdir)/image/dfaxg42d.c: g3states.h
-
--g3states.h: mkg3states
-- -rm -f g3states.h
-- ./mkg3states -c > g3states.h_ && mv g3states.h_ g3states.h
-+g3states.h: image/mkg3states
-+ ./image/mkg3states -c > g3states.h_ && mv g3states.h_ g3states.h
-
- liblbxutil_la_LDFLAGS = -version-number 1:0:0
-
-diff -ruN liblbxutil-X11R7.0-1.0.0_orig/src/image/Makefile.am liblbxutil-X11R7.0-1.0.0/src/image/Makefile.am
---- liblbxutil-X11R7.0-1.0.0_orig/src/image/Makefile.am 1970-01-01 00:00:00.000000000 +0000
-+++ liblbxutil-X11R7.0-1.0.0/src/image/Makefile.am 2006-08-21 18:32:04.000000000 +0000
-@@ -0,0 +1,15 @@
-+# evil hack
-+CFLAGS=$(CFLAGS_FOR_BUILD)
-+CPPFLAGS=$(CPPFLAGS_FOR_BUILD)
-+LDFLAGS=$(LDFLAGS_FOR_BUILD)
-+
-+CC=$(CC_FOR_BUILD)
-+LIBTOOL = @LIBTOOL@ --tag=CC
-+
-+noinst_PROGRAMS = mkg3states
-+
-+mkg3states_SOURCES = \
-+ mkg3states.c
-+
-+mkg3states_CFLAGS=$(CFLAGS_FOR_BUILD)
-+mkg3states_LDFLAGS=$(LDFLAGS_FOR_BUILD)
diff --git a/packages/xorg-lib/libsm/.mtn2git_empty b/packages/xorg-lib/libsm/.mtn2git_empty
deleted file mode 100644
index e69de29bb2..0000000000
--- a/packages/xorg-lib/libsm/.mtn2git_empty
+++ /dev/null
diff --git a/packages/xorg-lib/libsm/autofoo.patch b/packages/xorg-lib/libsm/autofoo.patch
deleted file mode 100644
index 8cb204a66e..0000000000
--- a/packages/xorg-lib/libsm/autofoo.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-
-#
-# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
-#
-
---- libSM-6.0.3/configure.ac~autofoo 2004-05-11 01:51:21.000000000 -0400
-+++ libSM-6.0.3/configure.ac 2005-01-18 12:15:50.405356376 -0500
-@@ -8,12 +8,12 @@
- libSM)
-
- AC_CONFIG_SRCDIR([Makefile.am])
-+AC_CONFIG_AUX_DIR(.)
- AM_INIT_AUTOMAKE([dist-bzip2])
-
- AM_MAINTAINER_MODE
-
- AM_CONFIG_HEADER([config.h])
--AC_CONFIG_AUX_DIR(.)
-
- # Checks for programs.
- AC_PROG_LIBTOOL
diff --git a/packages/xorg-lib/diet-x11/X18NCMSstubs.diff b/packages/xorg-lib/libx11/X18NCMSstubs.diff
index 54b1727a95..54b1727a95 100644
--- a/packages/xorg-lib/diet-x11/X18NCMSstubs.diff
+++ b/packages/xorg-lib/libx11/X18NCMSstubs.diff
diff --git a/packages/xorg-lib/libx11/autofoo.patch b/packages/xorg-lib/libx11/autofoo.patch
deleted file mode 100644
index 8bdba09768..0000000000
--- a/packages/xorg-lib/libx11/autofoo.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-
-#
-# Patch managed by http://www.holgerschurig.de/patcher.html
-#
-
---- libX11-6.2.1/configure.ac~autofoo
-+++ libX11-6.2.1/configure.ac
-@@ -7,12 +7,12 @@
- [jg@freedesktop.org],
- libX11)
- AC_CONFIG_SRCDIR([Makefile.am])
--AM_INIT_AUTOMAKE([dist-bzip2])
-+AC_CONFIG_AUX_DIR(.)
-
-+AM_INIT_AUTOMAKE([dist-bzip2])
- AM_MAINTAINER_MODE
-
- AM_CONFIG_HEADER([src/config.h])
--AC_CONFIG_AUX_DIR(.)
-
- # Checks for programs.
- AC_PROG_LIBTOOL
diff --git a/packages/xorg-lib/diet-x11/fix-disable-xlocale.diff b/packages/xorg-lib/libx11/fix-disable-xlocale.diff
index 9dbf6dac68..9dbf6dac68 100644
--- a/packages/xorg-lib/diet-x11/fix-disable-xlocale.diff
+++ b/packages/xorg-lib/libx11/fix-disable-xlocale.diff
diff --git a/packages/xorg-lib/diet-x11/fix-utf8-wrong-define.patch b/packages/xorg-lib/libx11/fix-utf8-wrong-define.patch
index a098db1941..a098db1941 100644
--- a/packages/xorg-lib/diet-x11/fix-utf8-wrong-define.patch
+++ b/packages/xorg-lib/libx11/fix-utf8-wrong-define.patch
diff --git a/packages/xorg-lib/files/ruutf8.patch b/packages/xorg-lib/libx11/ruutf8.patch
index 0822b30cb8..0822b30cb8 100644
--- a/packages/xorg-lib/files/ruutf8.patch
+++ b/packages/xorg-lib/libx11/ruutf8.patch
diff --git a/packages/xorg-lib/diet-x11/xchar2b.patch b/packages/xorg-lib/libx11/xchar2b.patch
index 31da58fa5c..31da58fa5c 100644
--- a/packages/xorg-lib/diet-x11/xchar2b.patch
+++ b/packages/xorg-lib/libx11/xchar2b.patch
diff --git a/packages/xorg-lib/diet-x11/xim.patch b/packages/xorg-lib/libx11/xim.patch
index 0eab197a80..0eab197a80 100644
--- a/packages/xorg-lib/diet-x11/xim.patch
+++ b/packages/xorg-lib/libx11/xim.patch
diff --git a/packages/xorg-lib/libxau/.mtn2git_empty b/packages/xorg-lib/libxau/.mtn2git_empty
deleted file mode 100644
index e69de29bb2..0000000000
--- a/packages/xorg-lib/libxau/.mtn2git_empty
+++ /dev/null
diff --git a/packages/xorg-lib/libxau/autofoo.patch b/packages/xorg-lib/libxau/autofoo.patch
deleted file mode 100644
index 1e42eb974d..0000000000
--- a/packages/xorg-lib/libxau/autofoo.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-
-#
-# Patch managed by http://www.holgerschurig.de/patcher.html
-#
-
---- libXau-0.1.1/configure.ac~autofoo
-+++ libXau-0.1.1/configure.ac
-@@ -25,11 +25,10 @@
-
- AC_PREREQ([2.57])
- AC_INIT(libXau, [0.1.1], [keithp@keithp.com],libXau)
--AM_INIT_AUTOMAKE([dist-bzip2])
--AM_MAINTAINER_MODE
--
- AM_CONFIG_HEADER(config.h)
- AC_CONFIG_AUX_DIR(.)
-+AM_INIT_AUTOMAKE([dist-bzip2])
-+AM_MAINTAINER_MODE
-
- AC_PROG_CC
- AC_PROG_INSTALL
diff --git a/packages/xorg-lib/libxaw/.mtn2git_empty b/packages/xorg-lib/libxaw/.mtn2git_empty
deleted file mode 100644
index e69de29bb2..0000000000
--- a/packages/xorg-lib/libxaw/.mtn2git_empty
+++ /dev/null
diff --git a/packages/xorg-lib/libxaw/auxdir.patch b/packages/xorg-lib/libxaw/auxdir.patch
deleted file mode 100644
index 4226ab6a4d..0000000000
--- a/packages/xorg-lib/libxaw/auxdir.patch
+++ /dev/null
@@ -1,10 +0,0 @@
---- /tmp/configure.ac 2005-06-17 21:26:17.519157272 +0200
-+++ libXaw-7.0.2/configure.ac 2005-06-17 21:26:34.832525240 +0200
-@@ -10,7 +10,6 @@
- AM_INIT_AUTOMAKE([dist-bzip2])
-
- AM_CONFIG_HEADER(config.h)
--AC_CONFIG_AUX_DIR(.)
-
- # Check for progs
- AC_PROG_CC
diff --git a/packages/xorg-lib/libxcalibrate/.mtn2git_empty b/packages/xorg-lib/libxcalibrate/.mtn2git_empty
deleted file mode 100644
index e69de29bb2..0000000000
--- a/packages/xorg-lib/libxcalibrate/.mtn2git_empty
+++ /dev/null
diff --git a/packages/xorg-lib/libxcalibrate/coords.patch b/packages/xorg-lib/libxcalibrate/coords.patch
deleted file mode 100644
index 19cf1639f6..0000000000
--- a/packages/xorg-lib/libxcalibrate/coords.patch
+++ /dev/null
@@ -1,50 +0,0 @@
----
- xcalibrate.c | 26 ++++++++++++++++++++++++++
- xcalibrate.h | 2 ++
- 2 files changed, 28 insertions(+)
-
-Index: XCalibrate/xcalibrate.c
-===================================================================
---- XCalibrate.orig/xcalibrate.c 2007-06-30 14:12:22.000000000 +0100
-+++ XCalibrate/xcalibrate.c 2007-06-30 14:18:10.000000000 +0100
-@@ -227,3 +227,29 @@ XCalibrateSetRawMode (Display *dpy, Bool
- SyncHandle ();
- return 0;
- }
-+
-+Status
-+XCalibrateScreenToCoord (Display *dpy, int *x, int *y)
-+{
-+ XExtDisplayInfo *info = XCalibrateFindDisplay (dpy);
-+ xXCalibrateScreenToCoordReq *req;
-+ xXCalibrateScreenToCoordReply rep;
-+ LockDisplay (dpy);
-+ GetReq (XCalibrateScreenToCoord, req);
-+ req->reqType = info->codes->major_opcode;
-+ req->xCalibrateReqType = X_XCalibrateScreenToCoord;
-+ req->x = *x;
-+ req->y = *y;
-+ if (!_XReply (dpy, (xReply *) &rep, 0, xFalse))
-+ {
-+ UnlockDisplay (dpy);
-+ SyncHandle ();
-+ return 1;
-+ }
-+ *x = rep.x;
-+ *y = rep.y;
-+ UnlockDisplay (dpy);
-+ SyncHandle ();
-+ return 0;
-+}
-+
-Index: XCalibrate/xcalibrate.h
-===================================================================
---- XCalibrate.orig/xcalibrate.h 2007-06-30 14:16:16.000000000 +0100
-+++ XCalibrate/xcalibrate.h 2007-06-30 14:16:38.000000000 +0100
-@@ -43,4 +43,6 @@ Status XCalibrateQueryVersion (Display *
-
- Status XCalibrateSetRawMode (Display *dpy, Bool enable);
-
-+Status XCalibrateScreenToCoord (Display *dpy, int *x, int *y);
-+
- #endif
diff --git a/packages/xorg-lib/libxcalibrate_git.bb b/packages/xorg-lib/libxcalibrate_git.bb
index 99f11e40fd..24b4a1f067 100644
--- a/packages/xorg-lib/libxcalibrate_git.bb
+++ b/packages/xorg-lib/libxcalibrate_git.bb
@@ -3,11 +3,9 @@ require xorg-lib-common.inc
DESCRIPTION = " Touchscreen calibration client library"
LICENSE = "BSD-X"
DEPENDS = "virtual/libx11 calibrateproto libxext"
-PV = "0.0+git${SRCDATE}"
-PR = "r2"
+PV = "0.0+git${SRCREV}"
-SRC_URI = "git://anongit.freedesktop.org/git/xorg/lib/libXCalibrate;protocol=git;tag=4be232e30cd33a44a1ce6d3ec429ee6101540c62 \
- file://coords.patch;patch=1"
+SRC_URI = "git://anongit.freedesktop.org/git/xorg/lib/libXCalibrate;protocol=git"
S = "${WORKDIR}/git"
diff --git a/packages/xorg-lib/libxcomposite-1.0.1/.mtn2git_empty b/packages/xorg-lib/libxcomposite-1.0.1/.mtn2git_empty
deleted file mode 100644
index e69de29bb2..0000000000
--- a/packages/xorg-lib/libxcomposite-1.0.1/.mtn2git_empty
+++ /dev/null
diff --git a/packages/xorg-lib/libxcomposite-1.0.1/autofoo.patch b/packages/xorg-lib/libxcomposite-1.0.1/autofoo.patch
deleted file mode 100644
index 072cf25214..0000000000
--- a/packages/xorg-lib/libxcomposite-1.0.1/autofoo.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-Index: libXcomposite-1.0.1/configure.ac
-===================================================================
---- libXcomposite-1.0.1.orig/configure.ac 2004-01-15 03:59:12.000000000 -0500
-+++ libXcomposite-1.0.1/configure.ac 2005-01-18 17:05:25.573929256 -0500
-@@ -33,11 +33,11 @@
- dnl protocol, so Xfixes version l.n.m corresponds to protocol version l.n
- dnl
- AC_INIT(libXcomposite, 1.0.1, [keithp@keithp.com], libXcomposite)
-+AC_CONFIG_AUX_DIR(.)
- AM_INIT_AUTOMAKE([dist-bzip2])
- AM_MAINTAINER_MODE
-
- AM_CONFIG_HEADER(config.h)
--AC_CONFIG_AUX_DIR(.)
-
- # Check for progs
- AC_PROG_CC
diff --git a/packages/xorg-lib/libxcursor-1.1.2/.mtn2git_empty b/packages/xorg-lib/libxcursor-1.1.2/.mtn2git_empty
deleted file mode 100644
index e69de29bb2..0000000000
--- a/packages/xorg-lib/libxcursor-1.1.2/.mtn2git_empty
+++ /dev/null
diff --git a/packages/xorg-lib/libxcursor-1.1.2/autofoo.patch b/packages/xorg-lib/libxcursor-1.1.2/autofoo.patch
deleted file mode 100644
index 99cd45a7ea..0000000000
--- a/packages/xorg-lib/libxcursor-1.1.2/autofoo.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-
-#
-# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
-#
-
---- libXcursor-1.1.2/configure.ac~autofoo 2004-01-16 23:38:26.000000000 -0500
-+++ libXcursor-1.1.2/configure.ac 2005-01-18 13:40:06.539707120 -0500
-@@ -31,11 +31,11 @@
- dnl not possible to extract the version number here from Xcursor.h
- dnl
- AC_INIT([libXcursor],1.1.2,[keithp@keithp.com],[libXcursor])
-+AC_CONFIG_AUX_DIR(.)
- AM_INIT_AUTOMAKE([dist-bzip2])
- AC_CONFIG_SRCDIR([Makefile.am])
- AM_MAINTAINER_MODE
- AM_CONFIG_HEADER(config.h)
--AC_CONFIG_AUX_DIR(.)
-
- dnl libtool versioning
-
diff --git a/packages/xorg-lib/libxcursor/.mtn2git_empty b/packages/xorg-lib/libxcursor/.mtn2git_empty
deleted file mode 100644
index e69de29bb2..0000000000
--- a/packages/xorg-lib/libxcursor/.mtn2git_empty
+++ /dev/null
diff --git a/packages/xorg-lib/libxcursor/autofoo.patch b/packages/xorg-lib/libxcursor/autofoo.patch
deleted file mode 100644
index 7aa573ce13..0000000000
--- a/packages/xorg-lib/libxcursor/autofoo.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-
-#
-# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
-#
-
-Index: Xcursor/configure.ac
-===================================================================
---- Xcursor.orig/configure.ac 2004-04-12 10:11:12.000000000 -0400
-+++ Xcursor/configure.ac 2005-01-18 16:04:36.860617992 -0500
-@@ -31,11 +31,11 @@
- dnl not possible to extract the version number here from Xcursor.h
- dnl
- AC_INIT([libXcursor],1.1.3,[keithp@keithp.com],[libXcursor])
-+AC_CONFIG_AUX_DIR(.)
- AM_INIT_AUTOMAKE([dist-bzip2])
- AC_CONFIG_SRCDIR([Makefile.am])
- AM_MAINTAINER_MODE
- AM_CONFIG_HEADER(config.h)
--AC_CONFIG_AUX_DIR(.)
-
- dnl libtool versioning
-
diff --git a/packages/xorg-lib/libxdamage-1.0.1/.mtn2git_empty b/packages/xorg-lib/libxdamage-1.0.1/.mtn2git_empty
deleted file mode 100644
index e69de29bb2..0000000000
--- a/packages/xorg-lib/libxdamage-1.0.1/.mtn2git_empty
+++ /dev/null
diff --git a/packages/xorg-lib/libxdamage-1.0.1/autofoo.patch b/packages/xorg-lib/libxdamage-1.0.1/autofoo.patch
deleted file mode 100644
index 1e3ec45d4a..0000000000
--- a/packages/xorg-lib/libxdamage-1.0.1/autofoo.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-Index: libXdamage-1.0.1/configure.ac
-===================================================================
---- libXdamage-1.0.1.orig/configure.ac 2004-01-15 03:54:55.000000000 -0500
-+++ libXdamage-1.0.1/configure.ac 2005-01-18 19:07:16.951430928 -0500
-@@ -33,11 +33,11 @@
- dnl protocol, so Xfixes version l.n.m corresponds to protocol version l.n
- dnl
- AC_INIT(libXdamage, 1.0.1, [keithp@keithp.com], libXdamage)
-+AC_CONFIG_AUX_DIR(.)
- AM_INIT_AUTOMAKE([dist-bzip2])
- AM_MAINTAINER_MODE
-
- AM_CONFIG_HEADER(config.h)
--AC_CONFIG_AUX_DIR(.)
-
- # Check for progs
- AC_PROG_CC
diff --git a/packages/xorg-lib/libxdamage/.mtn2git_empty b/packages/xorg-lib/libxdamage/.mtn2git_empty
deleted file mode 100644
index e69de29bb2..0000000000
--- a/packages/xorg-lib/libxdamage/.mtn2git_empty
+++ /dev/null
diff --git a/packages/xorg-lib/libxdamage/m4.patch b/packages/xorg-lib/libxdamage/m4.patch
deleted file mode 100644
index 393f3d13d2..0000000000
--- a/packages/xorg-lib/libxdamage/m4.patch
+++ /dev/null
@@ -1,65 +0,0 @@
-
-#
-# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
-#
-
---- /dev/null
-+++ Xdamage/m4/pkg.m4
-@@ -0,0 +1,57 @@
-+
-+dnl PKG_CHECK_MODULES(GSTUFF, gtk+-2.0 >= 1.3 glib = 1.3.4, action-if, action-not)
-+dnl defines GSTUFF_LIBS, GSTUFF_CFLAGS, see pkg-config man page
-+dnl also defines GSTUFF_PKG_ERRORS on error
-+AC_DEFUN(PKG_CHECK_MODULES, [
-+ succeeded=no
-+
-+ if test -z "$PKG_CONFIG"; then
-+ AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
-+ fi
-+
-+ if test "$PKG_CONFIG" = "no" ; then
-+ echo "*** The pkg-config script could not be found. Make sure it is"
-+ echo "*** in your path, or set the PKG_CONFIG environment variable"
-+ echo "*** to the full path to pkg-config."
-+ echo "*** Or see http://www.freedesktop.org/software/pkgconfig to get pkg-config."
-+ else
-+ PKG_CONFIG_MIN_VERSION=0.9.0
-+ if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
-+ AC_MSG_CHECKING(for $2)
-+
-+ if $PKG_CONFIG --exists "$2" ; then
-+ AC_MSG_RESULT(yes)
-+ succeeded=yes
-+
-+ AC_MSG_CHECKING($1_CFLAGS)
-+ $1_CFLAGS=`$PKG_CONFIG --cflags "$2"`
-+ AC_MSG_RESULT($$1_CFLAGS)
-+
-+ AC_MSG_CHECKING($1_LIBS)
-+ $1_LIBS=`$PKG_CONFIG --libs "$2"`
-+ AC_MSG_RESULT($$1_LIBS)
-+ else
-+ $1_CFLAGS=""
-+ $1_LIBS=""
-+ ## If we have a custom action on failure, don't print errors, but
-+ ## do set a variable so people can do so.
-+ $1_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$2"`
-+ ifelse([$4], ,echo $$1_PKG_ERRORS,)
-+ fi
-+
-+ AC_SUBST($1_CFLAGS)
-+ AC_SUBST($1_LIBS)
-+ else
-+ echo "*** Your version of pkg-config is too old. You need version $PKG_CONFIG_MIN_VERSION or newer."
-+ echo "*** See http://www.freedesktop.org/software/pkgconfig"
-+ fi
-+ fi
-+
-+ if test $succeeded = yes; then
-+ ifelse([$3], , :, [$3])
-+ else
-+ ifelse([$4], , AC_MSG_ERROR([Library requirements ($2) not met; consider adjusting the PKG_CONFIG_PATH environment variable if your libraries are in a nonstandard prefix so pkg-config can find them.]), [$4])
-+ fi
-+])
-+
-+
diff --git a/packages/xorg-lib/libxdmcp/.mtn2git_empty b/packages/xorg-lib/libxdmcp/.mtn2git_empty
deleted file mode 100644
index e69de29bb2..0000000000
--- a/packages/xorg-lib/libxdmcp/.mtn2git_empty
+++ /dev/null
diff --git a/packages/xorg-lib/libxdmcp/autofoo.patch b/packages/xorg-lib/libxdmcp/autofoo.patch
deleted file mode 100644
index ff1a76ad04..0000000000
--- a/packages/xorg-lib/libxdmcp/autofoo.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-
-#
-# Patch managed by http://www.holgerschurig.de/patcher.html
-#
-
---- libXdmcp-0.1.3/configure.ac~autofoo
-+++ libXdmcp-0.1.3/configure.ac
-@@ -25,12 +25,11 @@
-
- AC_PREREQ([2.57])
- AC_INIT(libXdmcp, [0.1.3], [keithp@keithp.com],libXdmcp)
-+AC_CONFIG_AUX_DIR(.)
-+AC_CONFIG_HEADERS([include/X11/Xdmcpconf.h])
- AM_INIT_AUTOMAKE([dist-bzip2])
- AM_MAINTAINER_MODE
--
- AM_CONFIG_HEADER(config.h)
--AC_CONFIG_AUX_DIR(.)
--AC_CONFIG_HEADERS([include/X11/Xdmcpconf.h])
-
- AC_PROG_CC
- AC_PROG_INSTALL
diff --git a/packages/xorg-lib/libxext/.mtn2git_empty b/packages/xorg-lib/libxext/.mtn2git_empty
deleted file mode 100644
index e69de29bb2..0000000000
--- a/packages/xorg-lib/libxext/.mtn2git_empty
+++ /dev/null
diff --git a/packages/xorg-lib/libxext/autofoo.patch b/packages/xorg-lib/libxext/autofoo.patch
deleted file mode 100644
index c006884526..0000000000
--- a/packages/xorg-lib/libxext/autofoo.patch
+++ /dev/null
@@ -1,18 +0,0 @@
-
-#
-# Patch managed by http://www.holgerschurig.de/patcher.html
-#
-
---- Xext/configure.ac~autofoo
-+++ Xext/configure.ac
-@@ -8,9 +8,8 @@
- libXext)
-
- AC_CONFIG_SRCDIR([Makefile.am])
--AM_INIT_AUTOMAKE([dist-bzip2])
--
- AC_CONFIG_AUX_DIR(.)
-+AM_INIT_AUTOMAKE([dist-bzip2])
-
- AM_MAINTAINER_MODE
-
diff --git a/packages/xorg-lib/libxfixes/.mtn2git_empty b/packages/xorg-lib/libxfixes/.mtn2git_empty
deleted file mode 100644
index e69de29bb2..0000000000
--- a/packages/xorg-lib/libxfixes/.mtn2git_empty
+++ /dev/null
diff --git a/packages/xorg-lib/libxfixes/autofoo.patch b/packages/xorg-lib/libxfixes/autofoo.patch
deleted file mode 100644
index 26803cf7f3..0000000000
--- a/packages/xorg-lib/libxfixes/autofoo.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-
-#
-# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
-#
-
---- libXfixes-2.0.1/configure.ac~autofoo 2004-01-15 03:40:23.000000000 -0500
-+++ libXfixes-2.0.1/configure.ac 2005-01-18 13:35:33.461221360 -0500
-@@ -33,11 +33,11 @@
- dnl protocol, so Xfixes version l.n.m corresponds to protocol version l.n
- dnl
- AC_INIT(libXfixes, 2.0.1, [keithp@keithp.com], libXfixes)
-+AC_CONFIG_AUX_DIR(.)
- AM_INIT_AUTOMAKE([dist-bzip2])
- AM_MAINTAINER_MODE
-
- AM_CONFIG_HEADER(config.h)
--AC_CONFIG_AUX_DIR(.)
-
- # Check for progs
- AC_PROG_CC
diff --git a/packages/xorg-lib/libxfont/autofoo.patch b/packages/xorg-lib/libxfont/autofoo.patch
deleted file mode 100644
index 4998625c24..0000000000
--- a/packages/xorg-lib/libxfont/autofoo.patch
+++ /dev/null
@@ -1,18 +0,0 @@
-
-#
-# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
-#
-
---- libXfont-1.4.2/configure.ac~autofoo 2004-05-06 20:19:03.000000000 -0400
-+++ libXfont-1.4.2/configure.ac 2005-01-16 12:14:14.042598720 -0500
-@@ -35,9 +35,9 @@
- dnl Yes, it is a pain to synchronize version numbers. Unfortunately, it's
- dnl not possible to extract the version number here from Xfont.h
- dnl
-+AC_CONFIG_AUX_DIR(.)
- AM_INIT_AUTOMAKE([dist-bzip2])
- AM_CONFIG_HEADER(config.h)
--AC_CONFIG_AUX_DIR(.)
- AC_CONFIG_HEADERS([include/X11/fonts/fontconf.h])
-
- # Check for progs
diff --git a/packages/xorg-lib/libxfont/scalable.patch b/packages/xorg-lib/libxfont/scalable.patch
deleted file mode 100644
index 7f97b9a8f6..0000000000
--- a/packages/xorg-lib/libxfont/scalable.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-Index: fontfile/fontdir.c
-===================================================================
-RCS file: /cvs/xlibs/Xfont/fontfile/fontdir.c,v
-retrieving revision 3.22
-diff -u -r3.22 fontdir.c
---- xfont/fontfile/fontdir.c 7 Jul 2003 16:40:11 -0000 3.22
-+++ xfont/fontfile/fontdir.c 30 Dec 2004 20:37:12 -0000
-@@ -699,6 +699,11 @@
- */
- if (isscale)
- {
-+ /* If the fontname says it is scalable, make sure that the
-+ * renderer supports OpenScalable and GetInfoScalable.
-+ */
-+ if (renderer->OpenScalable && renderer->GetInfoScalable)
-+ {
- if (vals.values_supplied & SIZE_SPECIFY_MASK)
- {
- bzero((char *)&zeroVals, sizeof(zeroVals));
-@@ -798,6 +803,7 @@
- bitmap->name.name);
- }
- }
-+ }
- }
- return TRUE;
- }
diff --git a/packages/xorg-lib/libxft/.mtn2git_empty b/packages/xorg-lib/libxft/.mtn2git_empty
deleted file mode 100644
index e69de29bb2..0000000000
--- a/packages/xorg-lib/libxft/.mtn2git_empty
+++ /dev/null
diff --git a/packages/xorg-lib/libxft/autofoo.patch b/packages/xorg-lib/libxft/autofoo.patch
deleted file mode 100644
index 54120aa612..0000000000
--- a/packages/xorg-lib/libxft/autofoo.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-
-#
-# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
-#
-
---- libXft-2.1.6/configure.ac~autofoo 2004-03-22 10:02:59.000000000 -0500
-+++ libXft-2.1.6/configure.ac 2005-01-17 02:08:10.165951760 -0500
-@@ -33,12 +33,12 @@
- dnl Please bump the minor library number at each release as well.
- dnl
- AC_INIT(libXft, 2.1.6, [keithp@keithp.com], libXft)
-+AC_CONFIG_AUX_DIR(.)
-
- AM_INIT_AUTOMAKE([dist-bzip2])
- AM_MAINTAINER_MODE
-
- AM_CONFIG_HEADER(config.h)
--AC_CONFIG_AUX_DIR(.)
-
- # checks for progs
- AC_PROG_CC
diff --git a/packages/xorg-lib/libxi/.mtn2git_empty b/packages/xorg-lib/libxi/.mtn2git_empty
deleted file mode 100644
index e69de29bb2..0000000000
--- a/packages/xorg-lib/libxi/.mtn2git_empty
+++ /dev/null
diff --git a/packages/xorg-lib/libxi/autofoo.patch b/packages/xorg-lib/libxi/autofoo.patch
deleted file mode 100644
index f1bce9ed7a..0000000000
--- a/packages/xorg-lib/libxi/autofoo.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-Index: libXi-6.0.1/configure.ac
-===================================================================
---- libXi-6.0.1.orig/configure.ac 2003-11-01 04:11:49.000000000 -0500
-+++ libXi-6.0.1/configure.ac 2005-01-20 11:34:06.878357352 -0500
-@@ -8,7 +8,6 @@
- AM_MAINTAINER_MODE
-
- AM_CONFIG_HEADER([config.h])
--AC_CONFIG_AUX_DIR(.)
-
- # Checks for programs.
- AC_PROG_LIBTOOL
diff --git a/packages/xorg-lib/libxpm/.mtn2git_empty b/packages/xorg-lib/libxpm/.mtn2git_empty
deleted file mode 100644
index e69de29bb2..0000000000
--- a/packages/xorg-lib/libxpm/.mtn2git_empty
+++ /dev/null
diff --git a/packages/xorg-lib/libxpm/autofoo.patch b/packages/xorg-lib/libxpm/autofoo.patch
deleted file mode 100644
index 6b2174bf02..0000000000
--- a/packages/xorg-lib/libxpm/autofoo.patch
+++ /dev/null
@@ -1,18 +0,0 @@
-Index: libXpm-3.5.1/configure.ac
-===================================================================
---- libXpm-3.5.1.orig/configure.ac 2004-05-11 02:00:35.000000000 -0400
-+++ libXpm-3.5.1/configure.ac 2005-01-19 18:35:57.187402008 -0500
-@@ -1,12 +1,12 @@
- AC_PREREQ(2.57)
- AC_INIT([libXpm], 3.5.1, [daniel@freedesktop.org], libXpm)
- AC_CONFIG_SRCDIR([Makefile.am])
-+AC_CONFIG_AUX_DIR(.)
- AM_INIT_AUTOMAKE([dist-bzip2])
-
- AM_MAINTAINER_MODE
-
- AM_CONFIG_HEADER([lib/config.h])
--AC_CONFIG_AUX_DIR(.)
-
- # Checks for programs.
- AC_PROG_LIBTOOL
diff --git a/packages/xorg-lib/libxrandr-1.0.2/.mtn2git_empty b/packages/xorg-lib/libxrandr-1.0.2/.mtn2git_empty
deleted file mode 100644
index e69de29bb2..0000000000
--- a/packages/xorg-lib/libxrandr-1.0.2/.mtn2git_empty
+++ /dev/null
diff --git a/packages/xorg-lib/libxrandr-1.0.2/autofoo.patch b/packages/xorg-lib/libxrandr-1.0.2/autofoo.patch
deleted file mode 100644
index 21f6e7fd78..0000000000
--- a/packages/xorg-lib/libxrandr-1.0.2/autofoo.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-
-#
-# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
-#
-
---- libXrandr-1.0.2/configure.ac~autofoo 2004-01-15 03:23:00.000000000 -0500
-+++ libXrandr-1.0.2/configure.ac 2005-01-16 11:18:35.924069872 -0500
-@@ -33,11 +33,11 @@
- dnl protocol, so Xrandr version l.n.m corresponds to protocol version l.n
- dnl
- AC_INIT(libXrandr, 1.0.2, [keithp@keithp.com], libXrandr)
-+AC_CONFIG_AUX_DIR(.)
- AM_INIT_AUTOMAKE([dist-bzip2])
- AM_MAINTAINER_MODE
-
- AM_CONFIG_HEADER(config.h)
--AC_CONFIG_AUX_DIR(.)
-
- # Check for progs
- AC_PROG_CC
diff --git a/packages/xorg-lib/libxrandr/.mtn2git_empty b/packages/xorg-lib/libxrandr/.mtn2git_empty
deleted file mode 100644
index e69de29bb2..0000000000
--- a/packages/xorg-lib/libxrandr/.mtn2git_empty
+++ /dev/null
diff --git a/packages/xorg-lib/libxrandr/autofoo.patch b/packages/xorg-lib/libxrandr/autofoo.patch
deleted file mode 100644
index 7b1db760f2..0000000000
--- a/packages/xorg-lib/libxrandr/autofoo.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-
-#
-# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
-#
-
---- Xrandr/configure.ac~autofoo.patch 2004-07-01 15:01:55.000000000 -0400
-+++ Xrandr/configure.ac 2005-01-16 11:22:09.169651616 -0500
-@@ -33,11 +33,11 @@
- dnl protocol, so Xrandr version l.n.m corresponds to protocol version l.n
- dnl
- AC_INIT(libXrandr, 1.0.2, [keithp@keithp.com], libXrandr)
-+AC_CONFIG_AUX_DIR(.)
- AM_INIT_AUTOMAKE([dist-bzip2])
- AM_MAINTAINER_MODE
-
- AM_CONFIG_HEADER(config.h)
--AC_CONFIG_AUX_DIR(.)
-
- # Check for progs
- AC_PROG_CC
---- Xrandr/ChangeLog~autofoo.patch 2004-09-19 04:53:38.000000000 -0400
-+++ Xrandr/ChangeLog 2005-01-16 11:52:29.694889712 -0500
-@@ -1,3 +1,7 @@
-+2005-01-16 Chris Larson <kergoth@handhelds.org>
-+
-+ * configure.ac: Fix to work with automake 1.9.x.
-+
- 2004-09-19 Carlos Romero <kidcrash@freedesktop.org>
-
- * Makefile.am:
diff --git a/packages/xorg-lib/libxrender/.mtn2git_empty b/packages/xorg-lib/libxrender/.mtn2git_empty
deleted file mode 100644
index e69de29bb2..0000000000
--- a/packages/xorg-lib/libxrender/.mtn2git_empty
+++ /dev/null
diff --git a/packages/xorg-lib/libxrender/autofoo.patch b/packages/xorg-lib/libxrender/autofoo.patch
deleted file mode 100644
index eb21c766f8..0000000000
--- a/packages/xorg-lib/libxrender/autofoo.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-
-#
-# Patch managed by http://www.holgerschurig.de/patcher.html
-#
-
---- libXrender-0.8.4/configure.ac~autofoo
-+++ libXrender-0.8.4/configure.ac
-@@ -33,11 +33,10 @@
- dnl protocol, so Xrender version l.n.m corresponds to protocol version l.n
- dnl
- AC_INIT(libXrender, 0.8.4, [keithp@keithp.com], libXrender)
-+AC_CONFIG_AUX_DIR(.)
- AM_INIT_AUTOMAKE([dist-bzip2])
- AM_MAINTAINER_MODE
--
- AM_CONFIG_HEADER(config.h)
--AC_CONFIG_AUX_DIR(.)
-
- # Check for progs
- AC_PROG_CC
diff --git a/packages/xorg-lib/libxt/.mtn2git_empty b/packages/xorg-lib/libxt/.mtn2git_empty
deleted file mode 100644
index e69de29bb2..0000000000
--- a/packages/xorg-lib/libxt/.mtn2git_empty
+++ /dev/null
diff --git a/packages/xorg-lib/libxt/autofoo.patch b/packages/xorg-lib/libxt/autofoo.patch
deleted file mode 100644
index ff6dfdbbcc..0000000000
--- a/packages/xorg-lib/libxt/autofoo.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-
-#
-# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
-#
-
---- libXt-0.1.5/configure.ac~autofoo 2004-05-06 20:19:04.000000000 -0400
-+++ libXt-0.1.5/configure.ac 2005-01-18 13:10:13.683262728 -0500
-@@ -28,11 +28,11 @@
- dnl
- dnl
- AC_INIT(libXt, 0.1.5, [keithp@keithp.com], libXt)
-+AC_CONFIG_AUX_DIR(.)
- AM_INIT_AUTOMAKE([dist-bzip2])
- AM_MAINTAINER_MODE
-
- AM_CONFIG_HEADER(config.h)
--AC_CONFIG_AUX_DIR(.)
-
- # Check for progs
- AC_PROG_CC
diff --git a/packages/xorg-proto/calibrateproto/.mtn2git_empty b/packages/xorg-proto/calibrateproto/.mtn2git_empty
deleted file mode 100644
index e69de29bb2..0000000000
--- a/packages/xorg-proto/calibrateproto/.mtn2git_empty
+++ /dev/null
diff --git a/packages/xorg-proto/calibrateproto/coords.patch b/packages/xorg-proto/calibrateproto/coords.patch
deleted file mode 100644
index 8f44b029c5..0000000000
--- a/packages/xorg-proto/calibrateproto/coords.patch
+++ /dev/null
@@ -1,56 +0,0 @@
----
- xcalibrateproto.h | 25 +++++++++++++++++++++++++
- xcalibratewire.h | 3 ++-
- 2 files changed, 27 insertions(+), 1 deletion(-)
-
-Index: XCalibrateExt/xcalibrateproto.h
-===================================================================
---- XCalibrateExt.orig/xcalibrateproto.h 2004-06-02 20:18:47.000000000 +0100
-+++ XCalibrateExt/xcalibrateproto.h 2007-06-30 14:17:29.000000000 +0100
-@@ -78,6 +78,31 @@ typedef struct {
-
- #define sz_xXCalibrateRawModeReply 32
-
-+typedef struct {
-+ CARD8 reqType;
-+ CARD8 xCalibrateReqType;
-+ CARD16 length B16;
-+ CARD32 x B32;
-+ CARD32 y B32;
-+} xXCalibrateScreenToCoordReq;
-+
-+#define sz_xXCalibrateScreenToCoordReq 12
-+
-+typedef struct {
-+ BYTE type; /* X_Reply */
-+ BYTE pad1;
-+ CARD16 sequenceNumber B16;
-+ CARD32 x;
-+ CARD32 y;
-+ CARD32 pad2 B32;
-+ CARD32 pad3 B32;
-+ CARD32 pad4 B32;
-+ CARD32 pad5 B32;
-+ CARD32 pad6 B32;
-+} xXCalibrateScreenToCoordReply;
-+
-+#define sz_xXCalibrateScreenToCoordReply 32
-+
- /* Events */
-
- typedef struct {
-Index: XCalibrateExt/xcalibratewire.h
-===================================================================
---- XCalibrateExt.orig/xcalibratewire.h 2004-06-02 20:18:47.000000000 +0100
-+++ XCalibrateExt/xcalibratewire.h 2007-06-30 14:17:29.000000000 +0100
-@@ -31,8 +31,9 @@
-
- #define X_XCalibrateQueryVersion 0
- #define X_XCalibrateRawMode 1
-+#define X_XCalibrateScreenToCoord 2
-
--#define XCalibrateNumberRequests (X_XCalibrateSetRawMode + 1)
-+#define XCalibrateNumberRequests (X_XCalibrateScreenToCoord + 1)
-
- #define X_XCalibrateRawTouchscreen 0
-
diff --git a/packages/xorg-proto/calibrateproto_git.bb b/packages/xorg-proto/calibrateproto_git.bb
index 60308601b9..02d20b5038 100644
--- a/packages/xorg-proto/calibrateproto_git.bb
+++ b/packages/xorg-proto/calibrateproto_git.bb
@@ -2,10 +2,8 @@ require xorg-proto-common.inc
DESCRIPTION = "Touchscreen calibration protocol"
-PV = "0.0+git${SRCDATE}"
+PV = "0.0+git${SRCREV}"
PR = "r1"
-SRC_URI = "git://anongit.freedesktop.org/git/xorg/proto/calibrateproto;protocol=git;tag=a1d5ef0c73fbef3e758c51b57ac69ba9567bae04 \
- file://coords.patch;patch=1"
-
+SRC_URI = "git://anongit.freedesktop.org/git/xorg/proto/calibrateproto;protocol=git"
S = "${WORKDIR}/git"
diff --git a/packages/xorg-proto/renderproto_0.9.3.bb b/packages/xorg-proto/renderproto_0.9.3.bb
index f1d19df46e..3d20b24afd 100644
--- a/packages/xorg-proto/renderproto_0.9.3.bb
+++ b/packages/xorg-proto/renderproto_0.9.3.bb
@@ -2,5 +2,3 @@ require xorg-proto-common.inc
CONFLICTS = "renderext"
PE = "1"
-
-DEFAULT_PREFERENCE = "-1"
diff --git a/packages/xorg-xserver/xserver-kdrive/fix-picturestr-include-order.patch b/packages/xorg-xserver/files/fix-picturestr-include-order.patch
index 3da235e1e1..3da235e1e1 100644
--- a/packages/xorg-xserver/xserver-kdrive/fix-picturestr-include-order.patch
+++ b/packages/xorg-xserver/files/fix-picturestr-include-order.patch
diff --git a/packages/xorg-xserver/xserver-kdrive-xomap_1.1.99.3.bb b/packages/xorg-xserver/xserver-kdrive-xomap_1.1.99.3.bb
index 372971e2ed..9a8db266b6 100644
--- a/packages/xorg-xserver/xserver-kdrive-xomap_1.1.99.3.bb
+++ b/packages/xorg-xserver/xserver-kdrive-xomap_1.1.99.3.bb
@@ -7,6 +7,7 @@ SECTION = "x11/base"
DESCRIPTION = "X server from freedesktop.org"
DESCRIPTION_xserver-kdrive-xomap = "X server for the OMAP in the Nokia 800"
+PR = "r1"
PE = "1"
COMPATIBLE_MACHINE = "nokia(800|770)"
@@ -23,6 +24,7 @@ SRC_URI = "http://repository.maemo.org/pool/maemo3.1/free/source/xorg-server_1.1
file://fixups.patch;patch=1 \
file://button_only.patch;patch=1 \
file://calibrateext.patch;patch=1 \
+ file://fix-picturestr-include-order.patch;patch=1 \
file://xcalibrate_coords.patch;patch=1"
# file://kdrive-evdev.patch;patch=1 \
# file://kdrive-use-evdev.patch;patch=1 \