aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKoen Kooi <koen@openembedded.org>2007-12-11 09:42:16 +0000
committerKoen Kooi <koen@openembedded.org>2007-12-11 09:42:16 +0000
commit7bcf4828673040af5022534981de6416f5884cff (patch)
tree18ab00a9b6f1ce29fa7b613662e256785fb59781
parent84b2b31930881004a73267cf24fe6fe701e0f8a8 (diff)
parent78c32ad25a3883dc7a127a36673890225f9f54f2 (diff)
downloadopenembedded-7bcf4828673040af5022534981de6416f5884cff.tar.gz
propagate from branch 'org.openembedded.dev' (head acccc4840b95c279164a3eeacf893200164bdc65)
to branch 'org.openembedded.dev.avr32' (head 4a915ee0a28076c53049330f3f2e58c7b85ef7a8)
-rw-r--r--MAINTAINERS6
-rw-r--r--classes/base.bbclass36
-rw-r--r--classes/binconfig.bbclass8
-rw-r--r--classes/cross.bbclass4
-rw-r--r--classes/debian.bbclass2
-rw-r--r--classes/distutils.bbclass20
-rw-r--r--classes/image.bbclass8
-rw-r--r--classes/insane.bbclass28
-rw-r--r--classes/kernel.bbclass5
-rw-r--r--classes/mozilla.bbclass2
-rw-r--r--classes/nslu2-image.bbclass38
-rw-r--r--classes/package.bbclass139
-rw-r--r--classes/package_ipk.bbclass25
-rw-r--r--classes/packaged-staging2.bbclass229
-rw-r--r--classes/pkgconfig.bbclass6
-rw-r--r--classes/rm_work.bbclass2
-rw-r--r--classes/rootfs_deb.bbclass18
-rw-r--r--classes/sdk.bbclass28
-rw-r--r--classes/seppuku.bbclass24
-rw-r--r--classes/setuptools.bbclass8
-rw-r--r--classes/sip.bbclass10
-rw-r--r--classes/siteinfo.bbclass1
-rw-r--r--classes/tmake.bbclass2
-rw-r--r--classes/xlibs.bbclass4
-rw-r--r--conf/bitbake.conf45
-rw-r--r--conf/checksums.ini124
-rw-r--r--conf/distro/angstrom-2007.1.conf88
-rw-r--r--conf/distro/angstrom-2008.1.conf132
-rw-r--r--conf/distro/include/angstrom-2007-preferred-versions.inc32
-rw-r--r--conf/distro/include/angstrom-eglibc.inc14
-rw-r--r--conf/distro/include/angstrom.inc12
-rw-r--r--conf/distro/include/insane-srcrevs.inc3
-rw-r--r--conf/distro/include/moko-autorev.inc2
-rw-r--r--conf/distro/include/preferred-openmoko-versions.inc10
-rw-r--r--conf/distro/include/sane-srcdates.inc7
-rw-r--r--conf/distro/include/sane-srcrevs.inc80
-rw-r--r--conf/distro/include/slugos.inc54
-rw-r--r--conf/distro/openmoko.conf6
-rw-r--r--conf/distro/slugos.conf1
-rw-r--r--conf/local.conf.sample2
-rw-r--r--conf/machine/alix.conf2
-rw-r--r--conf/machine/aximx50.conf5
-rw-r--r--conf/machine/davinci-sffsdr.conf25
-rw-r--r--conf/machine/em-x270.conf8
-rw-r--r--conf/machine/fic-gta01.conf1
-rw-r--r--conf/machine/fic-gta02.conf3
-rw-r--r--conf/machine/h2200.conf7
-rw-r--r--conf/machine/h3600.conf23
-rw-r--r--conf/machine/h4000.conf5
-rw-r--r--conf/machine/htcuniversal.conf6
-rw-r--r--conf/machine/hx4700.conf5
-rw-r--r--conf/machine/include/ixp4xx.inc17
-rw-r--r--conf/machine/include/tune-geodelx.inc (renamed from conf/machine/include/tune-geodelx.conf)0
-rw-r--r--conf/machine/include/zaurus-2.6.inc2
-rw-r--r--conf/machine/magician.conf1
-rw-r--r--conf/machine/mpc8313e-rdb.conf4
-rw-r--r--conf/machine/mpc8323e-rdb.conf6
-rw-r--r--conf/machine/simpad.conf2
-rw-r--r--conf/machine/tosa.conf3
-rw-r--r--conf/machine/vmware.conf25
-rw-r--r--contrib/angstrom/.mtn2git_empty (renamed from packages/apex/nslu2/.mtn2git_empty)0
-rw-r--r--contrib/angstrom/angstrom.pngbin0 -> 17803 bytes
-rw-r--r--contrib/angstrom/angstrom.svg639
-rwxr-xr-xcontrib/angstrom/build-release.sh91
-rw-r--r--contrib/angstrom/rss.php48
-rw-r--r--contrib/angstrom/rss2.php63
-rw-r--r--contrib/feed-browser/includes/config.inc161
-rwxr-xr-xcontrib/python/generate-manifest-2.5.py112
-rw-r--r--files/device_table-minimal.txt1
-rw-r--r--packages/agg/agg_2.5.bb24
-rw-r--r--packages/alsa/alsa-lib_1.0.15.bb44
-rw-r--r--packages/alsa/alsa-oss_1.0.15.bb17
-rw-r--r--packages/alsa/alsa-state.bb6
-rw-r--r--packages/alsa/alsa-state/fic-gta01/voip-handset.state900
-rw-r--r--packages/alsa/alsa-state/fic-gta01/voip-headset.state900
-rw-r--r--packages/alsa/alsa-utils_1.0.14.bb13
-rw-r--r--packages/alsa/alsa-utils_1.0.15.bb57
-rw-r--r--packages/alsa/files/alsa-utils-automake.patch10
-rw-r--r--packages/altboot/altboot_1.1.1+wip-SVNR69.bb (renamed from packages/altboot/altboot_1.1.1+wip-SVNR66.bb)6
-rw-r--r--packages/angstrom/angstrom-feed-configs.bb5
-rw-r--r--packages/angstrom/angstrom-gpe-task-base.bb4
-rw-r--r--packages/angstrom/angstrom-gpe-task-settings.bb3
-rw-r--r--packages/apache2/apache2_2.2.3.bb5
-rw-r--r--packages/apex/apex-nslu2-16mb_1.5.8.bb14
-rw-r--r--packages/apex/apex-nslu2_1.5.8.bb14
-rw-r--r--packages/apex/files/.mtn2git_empty (renamed from packages/ettercap/ettercap-0.6.b/.mtn2git_empty)0
-rw-r--r--packages/apex/files/defconfig (renamed from packages/apex/nslu2/defconfig)0
-rw-r--r--packages/apex/files/defconfig-16mb (renamed from packages/apex/nslu2/defconfig-16mb)0
-rw-r--r--packages/apmd/apmd_3.2.2.bb2
-rw-r--r--packages/apr/apr-util_0.9.12.bb2
-rw-r--r--packages/apr/apr-util_1.2.7.bb4
-rw-r--r--packages/asterisk/asterisk_1.2.24.bb2
-rw-r--r--packages/atk/atk.inc2
-rw-r--r--packages/atk/atk_1.20.0.bb2
-rw-r--r--packages/autoconf/autoconf-2.61/fix_path_xtra.patch114
-rw-r--r--packages/autoconf/autoconf-native_2.61.bb9
-rw-r--r--packages/autoconf/autoconf_2.61.bb5
-rw-r--r--packages/autofs/autofs-4.1.4/no-bash.patch18
-rw-r--r--packages/autofs/autofs_4.1.4.bb10
-rw-r--r--packages/base-files/base-files/akita/fstab4
-rw-r--r--packages/base-files/base-files/c7x0/fstab2
-rw-r--r--packages/base-files/base-files/collie/fstab6
-rw-r--r--packages/base-files/base-files/poodle/fstab2
-rw-r--r--packages/base-files/base-files/spitz/fstab2
-rw-r--r--packages/base-files/base-files/tosa/fstab2
-rw-r--r--packages/base-files/base-files_3.0.14.bb2
-rw-r--r--packages/binutils/binutils-2.17.50.0.5/binutils-configure-texinfo-version.patch22
-rw-r--r--packages/binutils/binutils-2.17.50.0.8/binutils-configure-texinfo-version.patch22
-rw-r--r--packages/binutils/binutils-cross.inc2
-rw-r--r--packages/binutils/binutils_2.17.50.0.5.bb1
-rw-r--r--packages/binutils/binutils_2.17.50.0.8.bb1
-rw-r--r--packages/blueprobe/blueprobe-0.18/h4000.patch2
-rw-r--r--packages/blueprobe/blueprobe.inc1
-rw-r--r--packages/blueprobe/blueprobe_0.18.bb2
-rw-r--r--packages/bluez/bluez-cups-backend_3.22.bb26
-rw-r--r--packages/bluez/bluez-cups-backend_3.23.bb26
-rw-r--r--packages/bluez/bluez-gnome_0.10.bb2
-rw-r--r--packages/bluez/bluez-gnome_0.13.bb2
-rw-r--r--packages/bluez/bluez-gnome_0.14.bb2
-rw-r--r--packages/bluez/bluez-gnome_cvs.bb2
-rw-r--r--packages/bluez/bluez-gnome_git.bb2
-rw-r--r--packages/bluez/bluez-gstreamer-plugin_3.22.bb26
-rw-r--r--packages/bluez/bluez-gstreamer-plugin_3.23.bb26
-rw-r--r--packages/bluez/bluez-libs_3.22.bb1
-rw-r--r--packages/bluez/bluez-libs_3.23.bb1
-rw-r--r--packages/bluez/bluez-utils-alsa_3.22.bb24
-rw-r--r--packages/bluez/bluez-utils-alsa_3.23.bb24
-rw-r--r--packages/bluez/bluez-utils_3.22.bb29
-rw-r--r--packages/bluez/bluez-utils_3.23.bb29
-rw-r--r--packages/boost/boost_1.33.0.bb2
-rw-r--r--packages/boost/boost_1.33.1.bb2
-rw-r--r--packages/busybox/busybox-1.2.0/angstrom/defconfig4
-rw-r--r--packages/busybox/busybox-1.2.1/angstrom/defconfig4
-rw-r--r--packages/busybox/busybox-1.2.1/slugos/defconfig6
-rw-r--r--packages/busybox/busybox-1.2.2/angstrom/defconfig4
-rw-r--r--packages/busybox/busybox-1.3.1/angstrom/defconfig4
-rw-r--r--packages/busybox/busybox-1.5.0/angstrom/defconfig4
-rw-r--r--packages/busybox/busybox-1.6.0/angstrom/defconfig4
-rw-r--r--packages/busybox/busybox-1.7.2/angstrom/defconfig4
-rw-r--r--packages/busybox/busybox-1.7.2/defconfig647
-rw-r--r--packages/busybox/busybox-static-1.2.1/defconfig4
-rw-r--r--packages/busybox/busybox-static_1.2.1.bb2
-rw-r--r--packages/busybox/busybox_1.00.bb2
-rw-r--r--packages/busybox/busybox_1.01.bb2
-rw-r--r--packages/busybox/busybox_1.2.0.bb2
-rw-r--r--packages/busybox/busybox_1.2.1.bb4
-rw-r--r--packages/busybox/busybox_1.2.2.bb2
-rw-r--r--packages/busybox/busybox_1.3.1.bb2
-rw-r--r--packages/busybox/busybox_1.5.0.bb2
-rw-r--r--packages/busybox/busybox_1.6.0.bb2
-rw-r--r--packages/busybox/busybox_1.7.2.bb2
-rw-r--r--packages/cacao/cacao-cldc_0.98.bb10
-rw-r--r--packages/cacao/cacao.inc1
-rw-r--r--packages/cacao/cacaoh-cldc-native_0.98.bb2
-rw-r--r--packages/clamav/clamav.inc2
-rw-r--r--packages/cryptsetup/.mtn2git_empty (renamed from packages/keylaunch/files/akita/.mtn2git_empty)0
-rw-r--r--packages/cryptsetup/cryptsetup_1.0.5.bb21
-rw-r--r--packages/dbus/dbus-glib-native_0.74.bb2
-rw-r--r--packages/dbus/dbus-glib_0.74.bb2
-rw-r--r--packages/dbus/dbus-native_1.0.1.bb2
-rw-r--r--packages/dbus/dbus-python_0.71.bb2
-rw-r--r--packages/dbus/dbus.inc2
-rw-r--r--packages/desktop-file-utils/desktop-file-utils-native_0.14.bb12
-rw-r--r--packages/devmem2/devmem2.bb1
-rw-r--r--packages/directfb/directfb-examples_1.0.0.bb6
-rw-r--r--packages/directfb/directfb_1.1.0.bb21
-rw-r--r--packages/display-brightness/display-brightness.sh2
-rw-r--r--packages/display-brightness/display-brightness_1.0.0.bb2
-rw-r--r--packages/dropbear/dropbear-early/.mtn2git_empty (renamed from packages/keylaunch/files/c7x0/.mtn2git_empty)0
-rw-r--r--packages/dropbear/dropbear-early/dropbear-early10
-rw-r--r--packages/dropbear/dropbear-early_1.0.bb18
-rw-r--r--packages/dropbear/dropbear.inc2
-rwxr-xr-xpackages/dropbear/dropbear/init12
-rw-r--r--packages/dropbear/dropbear_0.49.bb2
-rw-r--r--packages/dtc/dtc-native_1.0.0.bb16
-rw-r--r--packages/duma/duma_2.5.7.bb2
-rw-r--r--packages/e17/expedite/.mtn2git_empty (renamed from packages/keylaunch/files/collie/.mtn2git_empty)0
-rw-r--r--packages/e17/expedite/hack-disable-opengl.patch87
-rw-r--r--packages/e17/expedite_cvs.bb13
-rw-r--r--packages/e17/rage_0.2.0.003.bb10
-rw-r--r--packages/e17/rage_0.2.0.005.bb11
-rw-r--r--packages/e2fsprogs/e2fsprogs-native_1.38.bb2
-rw-r--r--packages/e2fsprogs/e2fsprogs.inc3
-rw-r--r--packages/e2fsprogs/e2fsprogs_1.38.bb2
-rw-r--r--packages/eds/eds-dbus_svn.bb11
-rw-r--r--packages/efl1/ecore.inc8
-rw-r--r--packages/efl1/ecore_cvs.bb4
-rw-r--r--packages/efl1/evas-native_cvs.bb2
-rw-r--r--packages/efl1/evas.inc6
-rw-r--r--packages/efl1/evas_cvs.bb8
-rw-r--r--packages/efl1/ewl_cvs.bb16
-rw-r--r--packages/enchant/enchant_1.1.3.bb4
-rw-r--r--packages/enchant/enchant_1.2.5.bb6
-rw-r--r--packages/enchant/enchant_1.3.0.bb4
-rw-r--r--packages/ettercap/ettercap-0.6.b/configure.patch165
-rw-r--r--packages/ettercap/ettercap-ng_0.7.3.bb18
-rw-r--r--packages/ettercap/ettercap_0.6.b.bb14
-rw-r--r--packages/ettercap/files/.mtn2git_empty (renamed from packages/keylaunch/files/corgie/.mtn2git_empty)0
-rw-r--r--packages/ettercap/files/autotools.patch173
-rw-r--r--packages/ezx/ezxd_svn.bb4
-rw-r--r--packages/fftw/fftw.inc1
-rw-r--r--packages/file-roller/file-roller_2.6.1.bb2
-rw-r--r--packages/flite/flite-1.2/flite-1.2-alsa_support-1.2.diff512
-rw-r--r--packages/flite/flite-1.3/.mtn2git_empty (renamed from packages/keylaunch/files/husky/.mtn2git_empty)0
-rw-r--r--packages/flite/flite-1.3/flite-1.3-alsa_support-1.2.diff6615
-rw-r--r--packages/flite/flite.inc44
-rw-r--r--packages/flite/flite_1.2.bb49
-rw-r--r--packages/flite/flite_1.3.bb8
-rw-r--r--packages/fontconfig/fontconfig_2.4.1.bb3
-rw-r--r--packages/fuse/fuse-2.7.1/.mtn2git_empty (renamed from packages/keylaunch/files/shepherd/.mtn2git_empty)0
-rw-r--r--packages/fuse/fuse-2.7.1/not-run-updaterc.d-on-host.patch23
-rw-r--r--packages/fuse/fuse-module_2.7.1.bb29
-rw-r--r--packages/fuse/fuse_2.7.1.bb27
-rw-r--r--packages/fuse/gmailfs.inc22
-rw-r--r--packages/fuse/gmailfs_0.7.3.bb23
-rw-r--r--packages/fuse/gmailfs_0.8.0.bb1
-rw-r--r--packages/gcalctool/gcalctool_5.5.21.bb2
-rw-r--r--packages/gcc/gcc-4.1.0/pr34130.patch16
-rw-r--r--packages/gcc/gcc-4.1.1/gcc-4.1.1-e300cx.patch301
-rw-r--r--packages/gcc/gcc-4.1.1/pr34130.patch16
-rw-r--r--packages/gcc/gcc-4.1.2/pr34130.patch16
-rw-r--r--packages/gcc/gcc-4.2.1/pr34130.patch16
-rw-r--r--packages/gcc/gcc-4.2.2/pr34130.patch16
-rw-r--r--packages/gcc/gcc-cross-initial_4.2.1.bb2
-rw-r--r--packages/gcc/gcc-cross-initial_4.2.2.bb2
-rw-r--r--packages/gcc/gcc-cross-sdk_4.1.1.bb2
-rw-r--r--packages/gcc/gcc-cross_3.3.3.bb1
-rw-r--r--packages/gcc/gcc-cross_3.3.4.bb2
-rw-r--r--packages/gcc/gcc-cross_3.4.3.bb2
-rw-r--r--packages/gcc/gcc-cross_3.4.4.bb2
-rw-r--r--packages/gcc/gcc-cross_4.0.0.bb2
-rw-r--r--packages/gcc/gcc-cross_4.0.2.bb2
-rw-r--r--packages/gcc/gcc-cross_4.1.0.bb2
-rw-r--r--packages/gcc/gcc-cross_4.1.1.bb2
-rw-r--r--packages/gcc/gcc-cross_4.1.2.bb4
-rw-r--r--packages/gcc/gcc-cross_4.2.1.bb9
-rw-r--r--packages/gcc/gcc-cross_4.2.2.bb10
-rw-r--r--packages/gcc/gcc-cross_csl-arm-2005q3.bb2
-rw-r--r--packages/gcc/gcc-cross_csl-arm-cvs.bb2
-rw-r--r--packages/gcc/gcc-cross_csl-arm.bb2
-rw-r--r--packages/gcc/gcc-package-cross.inc5
-rw-r--r--packages/gcc/gcc-package.inc12
-rw-r--r--packages/gcc/gcc3-build.inc23
-rw-r--r--packages/gcc/gcc_3.3.3.bb2
-rw-r--r--packages/gcc/gcc_3.3.4.bb2
-rw-r--r--packages/gcc/gcc_3.4.3.bb2
-rw-r--r--packages/gcc/gcc_3.4.4.bb2
-rw-r--r--packages/gcc/gcc_4.0.0.bb2
-rw-r--r--packages/gcc/gcc_4.0.2.bb2
-rw-r--r--packages/gcc/gcc_4.1.0.bb5
-rw-r--r--packages/gcc/gcc_4.1.1.bb4
-rw-r--r--packages/gcc/gcc_4.1.2.bb5
-rw-r--r--packages/gcc/gcc_4.2.1.bb3
-rw-r--r--packages/gcc/gcc_4.2.2.bb3
-rw-r--r--packages/gcc/gcc_csl-arm-2005q3.bb2
-rw-r--r--packages/gcc/gcc_csl-arm-cvs.bb2
-rw-r--r--packages/gcc/gcc_csl-arm.bb2
-rw-r--r--packages/gettext/gettext-0.14.1/disable_java.patch33
-rw-r--r--packages/gettext/gettext_0.14.1.bb5
-rw-r--r--packages/git/git-native_1.5.3.bb4
-rw-r--r--packages/git/git.inc19
-rwxr-xr-xpackages/glibc/files/glibc-2.5-soft-fp-separate-strong-alias.patch205
-rw-r--r--packages/glibc/glibc-initial.inc2
-rw-r--r--packages/glibc/glibc-intermediate_2.7.bb8
-rw-r--r--packages/glibc/glibc-package.bbclass7
-rw-r--r--packages/glibc/glibc_2.5.bb5
-rw-r--r--packages/glibc/glibc_2.7.bb156
-rw-r--r--packages/gnome/epiphany_2.19.6.bb14
-rw-r--r--packages/gnome/epiphany_svn.bb21
-rw-r--r--packages/gnome/gio-standalone_0.1.2.bb14
-rw-r--r--packages/gnome/gnome-desktop_2.10.2.bb4
-rw-r--r--packages/gnome/gnome-desktop_2.16.1.bb4
-rw-r--r--packages/gnome/gnome-desktop_2.18.3.bb2
-rw-r--r--packages/gnome/gnome-desktop_2.7.90.bb4
-rw-r--r--packages/gnome/gvfs_0.0.2.bb22
-rw-r--r--packages/gnuplot/files/gnuplot.desktop6
-rw-r--r--packages/gnuplot/gnuplot-4.2.0/term.patch20
-rw-r--r--packages/gnuplot/gnuplot.inc37
-rw-r--r--packages/gnuplot/gnuplot_4.0.0.bb36
-rw-r--r--packages/gnuplot/gnuplot_4.2.0.bb40
-rw-r--r--packages/gnutls/gnutls.inc3
-rw-r--r--packages/gnutls/gnutls/configure_madness.patch22
-rw-r--r--packages/gnutls/gnutls_1.6.3.bb2
-rw-r--r--packages/gpdf/gpdf_2.10.0.bb2
-rw-r--r--packages/gpdf/gpdf_2.8.0.bb2
-rw-r--r--packages/gpdf/gpdf_2.8.2.bb2
-rw-r--r--packages/gpe-login/files/gpe-xcalibrate-rises-from-dead.patch8
-rw-r--r--packages/gpe-login/files/lock-on-supend.patch14
-rw-r--r--packages/gpe-login/files/size-autolock-properly.patch26
-rw-r--r--packages/gpe-login/gpe-login_0.90.bb5
-rw-r--r--packages/gpe-themes/gpe-theme-clearlooks_0.2.bb2
-rw-r--r--packages/gpe-themes/gpe-theme-clearlooks_0.3.bb2
-rw-r--r--packages/gpe-themes/gpe-theme-industrial_0.1.bb2
-rw-r--r--packages/gpe-themes/gpe-theme-industrial_0.2.bb2
-rw-r--r--packages/gpephone/contact_svn.bb18
-rw-r--r--packages/gpephone/firewall_svn.bb18
-rw-r--r--packages/gpephone/libabenabler2/.mtn2git_empty (renamed from packages/keylaunch/files/spitz/.mtn2git_empty)0
-rw-r--r--packages/gpephone/libabenabler2/i18n.patch18
-rw-r--r--packages/gpephone/libabenabler2_1.0.bb12
-rw-r--r--packages/gpephone/libabenabler2_svn.bb21
-rw-r--r--packages/gpephone/libcalenabler2_svn.bb25
-rw-r--r--packages/gpephone/libchenabler/.mtn2git_empty (renamed from packages/maemo3/.mtn2git_empty)0
-rw-r--r--packages/gpephone/libchenabler/po.patch9
-rw-r--r--packages/gpephone/libchenabler_0.1.bb8
-rw-r--r--packages/gpephone/libgemwidget/disable-tests.patch8
-rw-r--r--packages/gpephone/libgemwidget_1.0.bb17
-rw-r--r--packages/gpephone/libiac-0.1/.mtn2git_empty (renamed from packages/maemo3/hildon-1/.mtn2git_empty)0
-rw-r--r--packages/gpephone/libiac-0.1/po.patch17
-rw-r--r--packages/gpephone/libiac_0.1.bb4
-rw-r--r--packages/gpephone/ptim-engine_1.0.bb20
-rw-r--r--packages/gpephone/ptim-headers_1.0.bb15
-rw-r--r--packages/gpephone/ptim-helper_1.0.bb28
-rw-r--r--packages/gpephone/ptim-manager_1.0.bb27
-rw-r--r--packages/gpephone/quickdial_svn.bb21
-rw-r--r--packages/gpephone/useen_svn.bb18
-rw-r--r--packages/gpsdrive/gpsdrive_2.10pre2.bb2
-rw-r--r--packages/gsl/gsl_1.10.bb (renamed from packages/gsl/gsl_1.4.bb)2
-rw-r--r--packages/gsm/gsmd.inc49
-rw-r--r--packages/gsm/libgsmd-devel_svn.bb1
-rw-r--r--packages/gsm/pty/.mtn2git_empty (renamed from packages/maemo3/libhildonfm/.mtn2git_empty)0
-rw-r--r--packages/gsm/pty/pty.c163
-rw-r--r--packages/gsm/pty_0.0.bb15
-rw-r--r--packages/gtk+/gdk-pixbuf_2.10.14.bb86
-rw-r--r--packages/gtk+/gtk+-fastscaling_2.10.14.bb2
-rw-r--r--packages/gtk-webcore/midori_0.0.11.bb11
-rw-r--r--packages/gtk-webcore/midori_0.0.12.bb11
-rw-r--r--packages/hostap/files/hostap-fw-load.patch4
-rw-r--r--packages/hostap/hostap-daemon-0.6.0/.mtn2git_empty (renamed from packages/maemo3/osso-ic-oss/.mtn2git_empty)0
-rw-r--r--packages/hostap/hostap-daemon-0.6.0/init37
-rw-r--r--packages/hostap/hostap-daemon-0.6.0/makefile-cross.diff25
-rw-r--r--packages/hostap/hostap-daemon_0.6.0.bb40
-rw-r--r--packages/hostap/hostap-utils.inc2
-rw-r--r--packages/icu/icu_3.6.bb5
-rw-r--r--packages/images/console-mipv6-image.bb7
-rw-r--r--packages/images/devimage-image.bb8
-rw-r--r--packages/images/essential-image.bb15
-rw-r--r--packages/images/essential-machine-image.bb23
-rw-r--r--packages/images/initramfs-bootmenu-image.bb11
-rw-r--r--packages/images/nslu2-minimal-image.bb14
-rw-r--r--packages/images/slugos-image.bb2
-rw-r--r--packages/initrdscripts/files/10-initfs.sh5
-rw-r--r--packages/initrdscripts/files/30-bootmenu.sh160
-rw-r--r--packages/initrdscripts/files/80-loopboot.sh (renamed from packages/initrdscripts/files/loopboot.sh)4
-rw-r--r--packages/initrdscripts/files/80-nfsboot.sh (renamed from packages/initrdscripts/files/nfsboot.sh)0
-rw-r--r--packages/initrdscripts/files/85-blockboot.sh (renamed from packages/initrdscripts/files/blockboot.sh)0
-rw-r--r--packages/initrdscripts/files/init.sh10
-rw-r--r--packages/initrdscripts/initramfs-jffs2_0.1.bb3
-rw-r--r--packages/initrdscripts/initramfs-module-block_0.1.bb11
-rw-r--r--packages/initrdscripts/initramfs-module-block_1.0.bb12
-rw-r--r--packages/initrdscripts/initramfs-module-bootmenu_1.0.bb12
-rw-r--r--packages/initrdscripts/initramfs-module-initfs_1.0.bb13
-rw-r--r--packages/initrdscripts/initramfs-module-loop_0.1.bb13
-rw-r--r--packages/initrdscripts/initramfs-module-loop_1.0.bb14
-rw-r--r--packages/initrdscripts/initramfs-module-nfs_1.0.bb (renamed from packages/initrdscripts/initramfs-module-nfs_0.1.bb)7
-rw-r--r--packages/initrdscripts/initramfs-uniboot_1.0.bb (renamed from packages/initrdscripts/initramfs-uniboot_0.2.bb)5
-rw-r--r--packages/initscripts/initscripts-1.0/slugos/bootclean.sh47
-rw-r--r--packages/initscripts/initscripts-1.0/slugos/volatiles36
-rw-r--r--packages/initscripts/initscripts-1.0/volatiles3
-rw-r--r--packages/initscripts/initscripts-slugos_1.0.bb6
-rw-r--r--packages/initscripts/initscripts_1.0.bb2
-rw-r--r--packages/inotify-tools/files/.mtn2git_empty (renamed from packages/tinymail/libtinymail-0.0.3/.mtn2git_empty)0
-rw-r--r--packages/inotify-tools/files/no-tests.patch31
-rw-r--r--packages/inotify-tools/inotify-tools_3.12.bb14
-rw-r--r--packages/ipkg-utils/ipkg-utils-native_1.6+cvs20050404.bb4
-rw-r--r--packages/ipkg-utils/ipkg-utils_1.6+cvs20050404.bb7
-rw-r--r--packages/ipkg/files/ipkg-configure5
-rw-r--r--packages/ipkg/files/ipkg_bugfix.patch44
-rw-r--r--packages/ipkg/ipkg-native_0.99.163.bb3
-rw-r--r--packages/ipkg/ipkg.inc21
-rw-r--r--packages/ipkg/ipkg_0.99.163.bb3
-rw-r--r--packages/ipkg/ipkgorphan_0.0.1.bb18
-rw-r--r--packages/iptables/files/getsockopt-failed.patch28
-rw-r--r--packages/iptables/iptables_1.3.8.bb3
-rw-r--r--packages/keylaunch/files/keylaunchrc8
-rw-r--r--packages/keylaunch/files/unbreak-keyevents.patch22
-rw-r--r--packages/keylaunch/keylaunch-conf/.mtn2git_empty (renamed from packages/zaurus-updater/c7x0/.mtn2git_empty)0
-rw-r--r--packages/keylaunch/keylaunch-conf/80chvt-SUID (renamed from packages/keylaunch/files/80chvt-SUID)0
-rw-r--r--packages/keylaunch/keylaunch-conf/akita/.mtn2git_empty (renamed from packages/zaurus-updater/spitz/.mtn2git_empty)0
-rw-r--r--packages/keylaunch/keylaunch-conf/akita/keylaunchrc (renamed from packages/keylaunch/files/akita/keylaunchrc)0
-rw-r--r--packages/keylaunch/keylaunch-conf/c7x0/.mtn2git_empty (renamed from packages/zaurus-updater/tosa/.mtn2git_empty)0
-rw-r--r--packages/keylaunch/keylaunch-conf/c7x0/keylaunchrc (renamed from packages/keylaunch/files/c7x0/keylaunchrc)0
-rw-r--r--packages/keylaunch/keylaunch-conf/collie/.mtn2git_empty (renamed from packages/keylaunch/files/collie/keylaunchrc)0
-rw-r--r--packages/keylaunch/keylaunch-conf/collie/keylaunchrc0
-rw-r--r--packages/keylaunch/keylaunch-conf/corgie/.mtn2git_empty0
-rw-r--r--packages/keylaunch/keylaunch-conf/corgie/keylaunchrc (renamed from packages/keylaunch/files/corgie/keylaunchrc)0
-rw-r--r--packages/keylaunch/keylaunch-conf/husky/.mtn2git_empty0
-rw-r--r--packages/keylaunch/keylaunch-conf/husky/keylaunchrc (renamed from packages/keylaunch/files/husky/keylaunchrc)0
-rw-r--r--packages/keylaunch/keylaunch-conf/keylaunchrc31
-rw-r--r--packages/keylaunch/keylaunch-conf/shepherd/.mtn2git_empty0
-rw-r--r--packages/keylaunch/keylaunch-conf/shepherd/keylaunchrc (renamed from packages/keylaunch/files/shepherd/keylaunchrc)0
-rw-r--r--packages/keylaunch/keylaunch-conf/spitz/.mtn2git_empty0
-rw-r--r--packages/keylaunch/keylaunch-conf/spitz/keylaunchrc (renamed from packages/keylaunch/files/spitz/keylaunchrc)0
-rw-r--r--packages/keylaunch/keylaunch-conf_2.0.10.bb27
-rw-r--r--packages/keylaunch/keylaunch_2.0.10.bb36
-rw-r--r--packages/keymap-locales/files/qemux86/.mtn2git_empty0
-rw-r--r--packages/keymap-locales/files/qemux86/keymap-extension-2.6-fr.map109
-rw-r--r--packages/keymap-locales/keymap-locales.bb3
-rw-r--r--packages/keymaps/files/qemux86/.mtn2git_empty0
-rw-r--r--packages/keymaps/files/qemux86/keymap-2.6.map186
-rw-r--r--packages/keymaps/keymaps_1.0.bb5
-rw-r--r--packages/klibc/files/fstype-sane-and-vfat.patch60
-rw-r--r--packages/klibc/klibc-utils-fstype_1.1.1.bb14
-rw-r--r--packages/klibc/klibc.inc1
-rw-r--r--packages/klibc/klibc_1.1.1.bb2
-rw-r--r--packages/libdaemon/libdaemon_0.12.bb20
-rw-r--r--packages/libical/.mtn2git_empty0
-rw-r--r--packages/libical/libical/.mtn2git_empty0
-rw-r--r--packages/libical/libical/pthread-link.patch11
-rw-r--r--packages/libical/libical_0.27.bb15
-rw-r--r--packages/libogg/libtheora_0.9+1.0alpha7.bb2
-rw-r--r--packages/liboil/liboil-0.3.11/.mtn2git_empty0
-rw-r--r--packages/liboil/liboil-0.3.11/ppc-detect-fpu.patch11
-rw-r--r--packages/liboil/liboil_0.3.11.bb6
-rw-r--r--packages/libopie/libopie2/h4000_and_default_rot.patch25
-rw-r--r--packages/libopie/libopie2_1.2.3.bb7
-rw-r--r--packages/libpixman/libpixman_0.9.6.bb13
-rw-r--r--packages/librcf/librcf_0.4.bb1
-rw-r--r--packages/libsndfile/libsndfile1_1.0.17.bb8
-rw-r--r--packages/libtool/libtool-1.5.10/libdir-la2.patch64
-rw-r--r--packages/libtool/libtool-1.5.10/nmedit_fix.patch56
-rw-r--r--packages/libtool/libtool-1.5.10/nousrlib.patch11
-rw-r--r--packages/libtool/libtool-1.5.10/tag1.patch13
-rw-r--r--packages/libtool/libtool-cross_1.5.10.bb17
-rw-r--r--packages/libtool/libtool-native_1.5.10.bb6
-rw-r--r--packages/libtool/libtool_1.5.10.bb5
-rw-r--r--packages/libungif/libungif_4.1.3.bb2
-rw-r--r--packages/linux/ixp4xx-kernel/2.6.21/defconfig133
-rw-r--r--packages/linux/ixp4xx-kernel/2.6.23/.mtn2git_empty0
-rw-r--r--packages/linux/ixp4xx-kernel/2.6.23/defconfig1940
-rw-r--r--packages/linux/ixp4xx-kernel_2.6.21.6.bb2
-rw-r--r--packages/linux/ixp4xx-kernel_2.6.23.8.bb24
-rw-r--r--packages/linux/linux-2.6.23/leds-cpu-activity-powerpc.patch46
-rw-r--r--packages/linux/linux-2.6.23/leds-cpu-activity.patch554
-rw-r--r--packages/linux/linux-2.6.23/mpc8313e-rdb/defconfig759
-rw-r--r--packages/linux/linux-2.6.23/mpc8313e-rdb/mpc8313e-rdb-leds.patch158
-rw-r--r--packages/linux/linux-2.6.23/mpc8313e-rdb/mpc8313e-rdb-rtc.patch40
-rw-r--r--packages/linux/linux-2.6.23/mpc8313e-rdb/mpc831x-nand.patch1807
-rw-r--r--packages/linux/linux-2.6.23/mpc8323e-rdb/defconfig640
-rw-r--r--packages/linux/linux-2.6.23/mpc8323e-rdb/mpc832x-leds.patch150
-rw-r--r--packages/linux/linux-bfin_svn.bb2
-rw-r--r--packages/linux/linux-davinci/davinci-sffsdr/.mtn2git_empty0
-rw-r--r--packages/linux/linux-davinci/davinci-sffsdr/defconfig1289
-rw-r--r--packages/linux/linux-davinci_2.6.x+git-davinci.bb2
-rw-r--r--packages/linux/linux-efika-2.6.20/defconfig161
-rw-r--r--packages/linux/linux-efika_2.6.20.20.bb2
-rw-r--r--packages/linux/linux-ezx_2.6.23.bb2
-rw-r--r--packages/linux/linux-hackndev-2.6_git.bb (renamed from packages/linux/linux-hackndev-2.6_svn.bb)7
-rw-r--r--packages/linux/linux-handhelds-2.6.inc12
-rw-r--r--packages/linux/linux-handhelds-2.6/asus620/defconfig16
-rw-r--r--packages/linux/linux-handhelds-2.6/asus730/defconfig16
-rw-r--r--packages/linux/linux-handhelds-2.6/aximx50/defconfig16
-rw-r--r--packages/linux/linux-handhelds-2.6/eteng500/defconfig4
-rw-r--r--packages/linux/linux-handhelds-2.6/h1910/defconfig16
-rw-r--r--packages/linux/linux-handhelds-2.6/h2200/defconfig16
-rw-r--r--packages/linux/linux-handhelds-2.6/h3600/defconfig16
-rw-r--r--packages/linux/linux-handhelds-2.6/h3800/defconfig16
-rw-r--r--packages/linux/linux-handhelds-2.6/h3900/defconfig16
-rw-r--r--packages/linux/linux-handhelds-2.6/h4000/defconfig16
-rw-r--r--packages/linux/linux-handhelds-2.6/h5000/defconfig16
-rw-r--r--packages/linux/linux-handhelds-2.6/htcalpine/defconfig16
-rw-r--r--packages/linux/linux-handhelds-2.6/htcapache/defconfig16
-rw-r--r--packages/linux/linux-handhelds-2.6/htcbeetles/defconfig16
-rw-r--r--packages/linux/linux-handhelds-2.6/htcblueangel/defconfig16
-rw-r--r--packages/linux/linux-handhelds-2.6/htchimalaya/defconfig16
-rw-r--r--packages/linux/linux-handhelds-2.6/htcsable/defconfig16
-rw-r--r--packages/linux/linux-handhelds-2.6/htcuniversal/defconfig16
-rw-r--r--packages/linux/linux-handhelds-2.6/htcwallaby/defconfig16
-rw-r--r--packages/linux/linux-handhelds-2.6/hx4700/defconfig16
-rw-r--r--packages/linux/linux-handhelds-2.6/looxc550/defconfig16
-rw-r--r--packages/linux/linux-handhelds-2.6/magician/defconfig17
-rw-r--r--packages/linux/linux-handhelds-2.6/rx1950/defconfig4
-rw-r--r--packages/linux/linux-handhelds-2.6/rx3000/defconfig4
-rw-r--r--packages/linux/linux-handhelds-2.6_2.6.21-hh11.bb13
-rw-r--r--packages/linux/linux-handhelds-2.6_2.6.21-hh14.bb11
-rw-r--r--packages/linux/linux-handhelds-2.6_2.6.21-hh15.bb11
-rw-r--r--packages/linux/linux-handhelds-2.6_2.6.21-hh17.bb2
-rw-r--r--packages/linux/linux-handhelds-2.6_2.6.21-hh18.bb (renamed from packages/linux/linux-handhelds-2.6_2.6.21-hh13.bb)0
-rw-r--r--packages/linux/linux-handhelds-2.6_2.6.21-hh19.bb (renamed from packages/linux/linux-handhelds-2.6_2.6.21-hh12.bb)0
-rw-r--r--packages/linux/linux-ixp4xx.inc26
-rw-r--r--packages/linux/linux-ixp4xx/.mtn2git_empty0
-rw-r--r--packages/linux/linux-ixp4xx/defconfig-2.6.181840
-rw-r--r--packages/linux/linux-ixp4xx/defconfig-2.6.191950
-rw-r--r--packages/linux/linux-ixp4xx/defconfig-2.6.202031
-rw-r--r--packages/linux/linux-ixp4xx/defconfig-2.6.21.62092
-rw-r--r--packages/linux/linux-ixp4xx/defconfig-2.6.221984
-rw-r--r--packages/linux/linux-ixp4xx/defconfig-2.6.23.81940
-rw-r--r--packages/linux/linux-ixp4xx/nslu2/.mtn2git_empty0
-rw-r--r--packages/linux/linux-ixp4xx/nslu2/defconfig-2.6.21.62085
-rw-r--r--packages/linux/linux-ixp4xx_2.6.18.bb22
-rw-r--r--packages/linux/linux-ixp4xx_2.6.19.bb22
-rw-r--r--packages/linux/linux-ixp4xx_2.6.20.bb22
-rw-r--r--packages/linux/linux-ixp4xx_2.6.21.6.bb24
-rw-r--r--packages/linux/linux-ixp4xx_2.6.23.8.bb31
-rw-r--r--packages/linux/linux-omap1-2.6.23-omap1/.mtn2git_empty0
-rw-r--r--packages/linux/linux-omap1-2.6.23-omap1/binutils-buildid-arm.patch12
-rw-r--r--packages/linux/linux-omap1-2.6.23-omap1/defconfig1098
-rw-r--r--packages/linux/linux-omap1_2.6.23-omap1.bb10
-rw-r--r--packages/linux/linux-openmoko/defconfig-2.6.22.538
-rw-r--r--packages/linux/linux-openmoko/glamo-report-vram-size-to-userspace.patch67
-rw-r--r--packages/linux/linux-openmoko/gta-vibro-pwm-suspend.patch27
-rw-r--r--packages/linux/linux-openmoko/gta02-sound.patch754
-rw-r--r--packages/linux/linux-openmoko/iis-suspend.patch63
-rw-r--r--packages/linux/linux-openmoko/s3c24xx-pcm-suspend.patch73
-rw-r--r--packages/linux/linux-openmoko/soc-core-suspend.patch47
-rw-r--r--packages/linux/linux-openmoko_2.6.22.5.bb12
-rw-r--r--packages/linux/linux-rp-2.6.23/arm-dma-coherent.patch361
-rw-r--r--packages/linux/linux-rp-2.6.23/connectplus-prevent-oops-HACK.patch17
-rw-r--r--packages/linux/linux-rp-2.6.23/defconfig-tosa13
-rw-r--r--packages/linux/linux-rp-2.6.23/pxa2xx_udc_support_inverse_vbus.patch120
-rw-r--r--packages/linux/linux-rp-2.6.23/tmio-ohci-r9.patch472
-rw-r--r--packages/linux/linux-rp-2.6.23/tosa_udc_use_gpio_vbus.patch100
-rw-r--r--packages/linux/linux-rp-2.6.23/usb-ohci-hooks-r3.patch47
-rw-r--r--packages/linux/linux-rp.inc1
-rw-r--r--packages/linux/linux-rp_2.6.17.bb4
-rw-r--r--packages/linux/linux-rp_2.6.20.bb2
-rw-r--r--packages/linux/linux-rp_2.6.21.bb3
-rw-r--r--packages/linux/linux-rp_2.6.22.bb4
-rw-r--r--packages/linux/linux-rp_2.6.23.bb14
-rw-r--r--packages/linux/linux.inc69
-rw-r--r--packages/linux/linux/vmware/.mtn2git_empty0
-rw-r--r--packages/linux/linux/vmware/defconfig1242
-rw-r--r--packages/linux/linux_2.6.23.bb27
-rw-r--r--packages/lm_sensors/lmsensors-apps_2.10.1.bb2
-rw-r--r--packages/lyx/lyx_1.4.1.bb2
-rw-r--r--packages/lyx/lyx_1.4.4.bb2
-rw-r--r--packages/lyx/lyx_1.5.1.bb6
-rw-r--r--packages/madwifi/madwifi-ng_r2826-20071105.bb13
-rw-r--r--packages/maemo-mapper/files/mapper-hildon1.diff20
-rw-r--r--packages/maemo-mapper/maemo-mapper_svn.bb21
-rw-r--r--packages/maemo4/.mtn2git_empty0
-rw-r--r--packages/maemo4/hildon-1/.mtn2git_empty0
-rw-r--r--packages/maemo4/hildon-1/buttonbox.patch (renamed from packages/maemo3/hildon-1/buttonbox.patch)0
-rw-r--r--packages/maemo4/hildon-1_svn.bb (renamed from packages/maemo3/hildon-1_svn.bb)2
-rw-r--r--packages/maemo4/hildon-base-lib_0.11.1.bb (renamed from packages/maemo3/hildon-base-lib_0.11.1.bb)0
-rw-r--r--packages/maemo4/hildon-lgpl_0.12.1.bb (renamed from packages/maemo3/hildon-lgpl_0.12.1.bb)0
-rw-r--r--packages/maemo4/hildon-libs_0.15.1.bb (renamed from packages/maemo3/hildon-libs_0.15.1.bb)2
-rw-r--r--packages/maemo4/hildon-thumbnail_0.11.bb (renamed from packages/maemo3/hildon-thumbnail_0.11.bb)0
-rw-r--r--packages/maemo4/libconic/.mtn2git_empty0
-rw-r--r--packages/maemo4/libconic/dbus-api-update.patch19
-rw-r--r--packages/maemo4/libconic_0.13.bb13
-rw-r--r--packages/maemo4/libgpsbt_0.1.bb (renamed from packages/maemo3/libgpsbt_0.1.bb)0
-rw-r--r--packages/maemo4/libgpsmgr_0.1.bb (renamed from packages/maemo3/libgpsmgr_0.1.bb)0
-rw-r--r--packages/maemo4/libhildonfm/.mtn2git_empty0
-rw-r--r--packages/maemo4/libhildonfm/hildonfm-ifdef-maemogtk.diff (renamed from packages/maemo3/libhildonfm/hildonfm-ifdef-maemogtk.diff)0
-rw-r--r--packages/maemo4/libhildonfm_1.9.41.bb (renamed from packages/maemo3/libhildonfm_1.9.41.bb)3
-rw-r--r--packages/maemo4/libhildonhelp_1.9.1.bb (renamed from packages/maemo3/libhildonhelp_1.9.1.bb)0
-rw-r--r--packages/maemo4/libhildonmime_1.9.5.bb (renamed from packages/maemo3/libhildonmime_1.9.5.bb)0
-rw-r--r--packages/maemo4/libosso-gsf_1.11.10.4.bb (renamed from packages/maemo3/libosso-gsf_1.11.10.4.bb)0
-rw-r--r--packages/maemo4/libosso-help_2.1.2.bb (renamed from packages/maemo3/libosso-help_2.1.2.bb)0
-rw-r--r--packages/maemo4/libosso_1.20.bb (renamed from packages/maemo3/libosso_1.20.bb)0
-rw-r--r--packages/maemo4/mce-dev_1.5.6.bb (renamed from packages/maemo3/mce-dev_1.5.6.bb)0
-rw-r--r--packages/maemo4/osso-gwconnect_1.0.8.bb (renamed from packages/maemo3/osso-gwconnect_1.0.8.bb)0
-rw-r--r--packages/maemo4/osso-ic-oss/.mtn2git_empty0
-rw-r--r--packages/maemo4/osso-ic-oss/dbus-api-update.patch (renamed from packages/maemo3/osso-ic-oss/dbus-api-update.patch)0
-rw-r--r--packages/maemo4/osso-ic-oss_1.0.4.bb (renamed from packages/maemo3/osso-ic-oss_1.0.4.bb)0
-rw-r--r--packages/maemo4/osso-thumbnail_0.7.bb (renamed from packages/maemo3/osso-thumbnail_0.7.bb)0
-rw-r--r--packages/maemo4/outo_0.1.1.bb (renamed from packages/maemo3/outo_0.1.1.bb)0
-rw-r--r--packages/matchbox-applet-inputmanager/files/visibility-protocol.patch33
-rw-r--r--packages/matchbox-applet-inputmanager/matchbox-applet-inputmanager_0.6.bb3
-rw-r--r--packages/matchbox-common/matchbox-common_0.9.1.bb21
-rw-r--r--packages/matchbox-common/matchbox-common_svn.bb15
-rw-r--r--packages/matchbox-keyboard/matchbox-keyboard_svn.bb8
-rw-r--r--packages/matchbox-keyboard/mboxkbd-layouts-gui/.mtn2git_empty0
-rw-r--r--packages/matchbox-keyboard/mboxkbd-layouts-gui/auto-mkdir.patch16
-rw-r--r--packages/matchbox-keyboard/mboxkbd-layouts-gui/mboxkbd-layouts-gui.pngbin0 -> 739 bytes
-rw-r--r--packages/matchbox-keyboard/mboxkbd-layouts-gui/sanitize-desktop-file.patch18
-rw-r--r--packages/matchbox-keyboard/mboxkbd-layouts-gui_git.bb15
-rw-r--r--packages/matchbox-wm/matchbox-wm_0.8.3.bb4
-rw-r--r--packages/matchbox-wm/matchbox-wm_0.8.4.bb4
-rw-r--r--packages/matchbox-wm/matchbox-wm_0.9.2.bb6
-rw-r--r--packages/matchbox-wm/matchbox-wm_0.9.3.bb6
-rw-r--r--packages/matchbox-wm/matchbox-wm_0.9.4.bb4
-rw-r--r--packages/matchbox-wm/matchbox-wm_0.9.5.bb6
-rw-r--r--packages/matchbox-wm/matchbox-wm_0.9.bb4
-rw-r--r--packages/matchbox-wm/matchbox-wm_1.0.bb6
-rw-r--r--packages/matchbox-wm/matchbox-wm_1.1.bb6
-rw-r--r--packages/matchbox-wm/matchbox-wm_1.2.bb8
-rw-r--r--packages/matchbox-wm/matchbox-wm_svn.bb6
-rw-r--r--packages/mesa/mesa-7.0.2/.mtn2git_empty0
-rw-r--r--packages/mesa/mesa-7.0.2/fix-host-compile.patch30
-rw-r--r--packages/mesa/mesa-7.0.2/mklib-rpath-link.patch23
-rw-r--r--packages/mesa/mesa-dri_6.5.2.bb4
-rw-r--r--packages/mesa/mesa_7.0.2.bb6
-rw-r--r--packages/meta/external-toolchain.bb50
-rw-r--r--packages/meta/meta-sdk-gpe.bb101
-rw-r--r--packages/meta/meta-sdk-sbox-gpe.bb100
-rw-r--r--packages/meta/meta-sdk-sbox.bb96
-rw-r--r--packages/meta/meta-sdk.bb100
-rw-r--r--packages/meta/meta-toolchain-gpe-sbox.bb11
-rw-r--r--packages/meta/meta-toolchain-gpe.bb9
-rw-r--r--packages/meta/meta-toolchain-openmoko.bb1
-rw-r--r--packages/meta/meta-toolchain-sbox.bb6
-rw-r--r--packages/meta/meta-toolchain.bb38
-rw-r--r--packages/meta/slugos-packages.bb13
-rw-r--r--packages/midpath/midpath-alsa_0.1.bb4
-rw-r--r--packages/midpath/midpath-cldc-sdl_0.1.bb2
-rw-r--r--packages/midpath/midpath-cldc-x11_0.1.bb2
-rw-r--r--packages/midpath/midpath-cldc_0.1.bb1
-rw-r--r--packages/midpath/midpath-gtk_0.1.bb2
-rw-r--r--packages/midpath/midpath-pulseaudio_0.1.bb39
-rw-r--r--packages/midpath/midpath-qt3x11_0.1.bb2
-rw-r--r--packages/midpath/midpath-qte_0.1.bb2
-rw-r--r--packages/midpath/midpath.inc2
-rw-r--r--packages/mipl-mipv6/mipv6_2.0.2.bb22
-rw-r--r--packages/monotone/monotone-6-0.37/.mtn2git_empty0
-rw-r--r--packages/monotone/monotone-6-0.37/txt2c-cross-post-0.22.patch11
-rw-r--r--packages/monotone/monotone-6_0.37.bb52
-rw-r--r--packages/mozilla/firefox-2.0.0.3/linkage-problem.patch14
-rw-r--r--packages/mozilla/firefox-2.0.0.3/mozconfig3
-rw-r--r--packages/mozilla/firefox_2.0.0.3.bb20
-rw-r--r--packages/mozilla/mozilla/.mtn2git_empty0
-rw-r--r--packages/mozilla/mozilla/files/.mtn2git_empty0
-rw-r--r--packages/mozilla/mozilla/files/i386/.mtn2git_empty0
-rw-r--r--packages/mozilla/mozilla/files/i386/jsautocfg.h52
-rw-r--r--packages/mozilla/mozilla/files/i486/.mtn2git_empty0
-rw-r--r--packages/mozilla/mozilla/files/i486/jsautocfg.h52
-rw-r--r--packages/mozilla/mozilla/files/i586/.mtn2git_empty0
-rw-r--r--packages/mozilla/mozilla/files/i586/jsautocfg.h52
-rw-r--r--packages/mozilla/mozilla/files/i686/.mtn2git_empty0
-rw-r--r--packages/mozilla/mozilla/files/i686/jsautocfg.h52
-rw-r--r--packages/mozilla/mozilla/firefox-2.0.0.3/.mtn2git_empty0
-rw-r--r--packages/mozilla/mozilla/firefox-2.0.0.3/linkage-problem.patch14
-rw-r--r--packages/mpfr/mpfr-native_2.3.0.bb4
-rw-r--r--packages/mpfr/mpfr-native_svn.bb3
-rw-r--r--packages/mpfr/mpfr.inc6
-rw-r--r--packages/mpfr/mpfr_2.1.1.bb9
-rw-r--r--packages/mpfr/mpfr_2.3.0.bb15
-rw-r--r--packages/mpfr/mpfr_cvs.bb19
-rw-r--r--packages/mpfr/mpfr_svn.bb16
-rw-r--r--packages/mplayer/files/motion-comp-pld.patch163
-rw-r--r--packages/mplayer/mplayer_0.0+1.0rc2.bb5
-rw-r--r--packages/navit/navit_0.0.1.bb3
-rw-r--r--packages/navit/navit_0.0.2.bb13
-rw-r--r--packages/navit/navit_cvs.bb19
-rw-r--r--packages/net-tools/net-tools_1.60.bb6
-rw-r--r--packages/netbase/netbase/fic-gta01/interfaces1
-rw-r--r--packages/netbase/netbase/fic-gta02/interfaces1
-rw-r--r--packages/netbase/netbase/interfaces1
-rw-r--r--packages/netbase/netbase_4.21.bb2
-rw-r--r--packages/notecase/notecase-1.6.9/.mtn2git_empty0
-rw-r--r--packages/notecase/notecase-1.6.9/no-hardcoded-cxx.patch38
-rw-r--r--packages/notecase/notecase-1.7.2/.mtn2git_empty0
-rw-r--r--packages/notecase/notecase-1.7.2/no-hardcoded-cxx.patch38
-rw-r--r--packages/notecase/notecase.inc13
-rw-r--r--packages/notecase/notecase_1.2.6.bb15
-rw-r--r--packages/notecase/notecase_1.6.9.bb17
-rw-r--r--packages/notecase/notecase_1.7.2.bb17
-rw-r--r--packages/nslu2-binary-only/nslu2-linksys-firmware_2.3r63.bb4
-rw-r--r--packages/ntp/ntp.inc2
-rw-r--r--packages/ntp/ntp_4.1.2.bb2
-rw-r--r--packages/ntp/ntp_4.2.0.bb2
-rw-r--r--packages/ntp/ntp_4.2.2p3.bb2
-rw-r--r--packages/octave/files/.mtn2git_empty0
-rw-r--r--packages/octave/files/configure.patch15
-rw-r--r--packages/octave/octave.inc (renamed from packages/octave/octave_2.1.71.bb)20
-rw-r--r--packages/octave/octave_2.1.73.bb11
-rw-r--r--packages/octave/octave_2.9.17.bb27
-rw-r--r--packages/openmoko-panel-plugins/openmoko-panel-gsm_svn.bb2
-rw-r--r--packages/openmoko-spaces/.mtn2git_empty0
-rw-r--r--packages/openmoko-spaces/openmoko-toolchain-scripts_svn.bb15
-rw-r--r--packages/openmoko2/libjana_svn.bb5
-rw-r--r--packages/openmoko2/libmokogsmd2_svn.bb2
-rw-r--r--packages/openmoko2/neod_svn.bb9
-rw-r--r--packages/openmoko2/openmoko-browser2/.mtn2git_empty0
-rw-r--r--packages/openmoko2/openmoko-browser2/fingerscroll.diff13
-rw-r--r--packages/openmoko2/openmoko-browser2_svn.bb4
-rw-r--r--packages/openmoko2/openmoko-dialer2_svn.bb3
-rw-r--r--packages/openmoko2/openmoko-messages2_svn.bb11
-rw-r--r--packages/openmoko2/openmoko-sample2_svn.bb24
-rw-r--r--packages/openmoko2/openmoko-session2.bb20
-rwxr-xr-xpackages/openmoko2/openmoko-session2/etc/matchbox/session2
-rwxr-xr-xpackages/openmoko2/openmoko-session2/matchbox-session24
-rwxr-xr-xpackages/openmoko2/openmoko-sound-system2/pulseaudio18
-rw-r--r--packages/openmoko2/openmoko-sound-system2_0.1.0.bb2
-rw-r--r--packages/openmoko2/openmoko-today2-folders_svn.bb3
-rw-r--r--packages/openmoko2/openmoko-worldclock2_svn.bb2
-rw-r--r--packages/openrdate/.mtn2git_empty0
-rw-r--r--packages/openrdate/openrdate_1.1.3.bb12
-rw-r--r--packages/openssl/openssl.inc6
-rw-r--r--packages/pango/pango-1.18.3/.mtn2git_empty0
-rw-r--r--packages/pango/pango-1.18.3/no-tests.patch10
-rw-r--r--packages/pango/pango_1.18.3.bb4
-rw-r--r--packages/perl/libxml-parser-perl_2.34.bb4
-rw-r--r--packages/pimlico/contacts.inc2
-rw-r--r--packages/pimlico/dates.inc2
-rw-r--r--packages/poppler/poppler_0.6.2.bb6
-rw-r--r--packages/portmap/portmap-6.0/no-pie.patch14
-rw-r--r--packages/portmap/portmap_6.0.bb5
-rw-r--r--packages/powertop/powertop_1.9.bb17
-rw-r--r--packages/psplash/files/angstrom/angstrom-psplash-qvga-img.h1336
-rw-r--r--packages/psplash/files/angstrom/angstrom-psplash-vga-img.h2109
-rw-r--r--packages/psplash/files/angstrom/psplash-hand-img.h2778
-rw-r--r--packages/psplash/files/configurability.patch46
-rw-r--r--packages/psplash/files/logo-math.patch13
-rw-r--r--packages/psplash/files/psplash-init2
-rw-r--r--packages/psplash/psplash_svn.bb4
-rw-r--r--packages/pulseaudio/files/disable-using-glibc-tls.patch15
-rw-r--r--packages/pulseaudio/files/fix-dbus-without-hal.patch15
-rw-r--r--packages/pulseaudio/pulse.inc1
-rw-r--r--packages/pulseaudio/pulseaudio_0.9.8.bb17
-rw-r--r--packages/python/python-2.5-manifest.inc133
-rw-r--r--packages/python/python-2.5.1/enable-ctypes-module.patch106
-rw-r--r--packages/python/python-cheetah_2.0.1.bb11
-rw-r--r--packages/python/python-cython-native_0.9.6.9.bb9
-rw-r--r--packages/python/python-cython_0.9.6.9.bb13
-rw-r--r--packages/python/python-django_0.96.1.bb16
-rw-r--r--packages/python/python-ecore_cvs.bb6
-rw-r--r--packages/python/python-efl.bb7
-rw-r--r--packages/python/python-efl.inc10
-rw-r--r--packages/python/python-epsilon_cvs.bb4
-rw-r--r--packages/python/python-formencode/setup.py.diff13
-rw-r--r--packages/python/python-formencode_svn.bb5
-rw-r--r--packages/python/python-gst_0.10.8.bb6
-rw-r--r--packages/python/python-pycairo_1.4.0.bb3
-rw-r--r--packages/python/python-pygobject_2.12.3.bb2
-rw-r--r--packages/python/python-pygtk-1.2/acinclude.m490
-rw-r--r--packages/python/python-pygtk_2.10.3.bb41
-rw-r--r--packages/python/python-pygtk_2.10.4.bb35
-rw-r--r--packages/python/python-pygtk_2.6.3.bb4
-rw-r--r--packages/python/python-pyopenssl_0.6.bb12
-rw-r--r--packages/python/python-pyqt/01_configure.dpatch288
-rw-r--r--packages/python/python-pyqt/02_htmllinks.dpatch18
-rw-r--r--packages/python/python-pyqt/03_qreal.dpatch18
-rw-r--r--packages/python/python-pyqt/04_qreal_api_fixes.dpatch259
-rw-r--r--packages/python/python-pyqt_4.3.1.bb71
-rw-r--r--packages/python/python-pyqt_4.3.bb84
-rw-r--r--packages/python/python-pyrad_1.1.bb11
-rw-r--r--packages/python/python-pysqlite2/.mtn2git_empty0
-rw-r--r--packages/python/python-pysqlite2/fix-setup.patch9
-rw-r--r--packages/python/python-pysqlite2_2.4.0.bb17
-rw-r--r--packages/python/python-sip_4.7.1.bb (renamed from packages/python/python-sip_4.7.bb)4
-rw-r--r--packages/python/python-sword_1.5.10.bb (renamed from packages/python/python-sword_1.5.9.bb)0
-rw-r--r--packages/python/python-sword_1.5.8.bb30
-rw-r--r--packages/python/python_2.5.1.bb3
-rw-r--r--packages/qte/qte-common_2.3.10.inc15
-rw-r--r--packages/qte/qte-mt_2.3.10.bb4
-rw-r--r--packages/quasar/.mtn2git_empty0
-rw-r--r--packages/quasar/files/.mtn2git_empty0
-rw-r--r--packages/quasar/files/cross-compile.patch31
-rw-r--r--packages/quasar/quasar_0.9beta3.bb28
-rw-r--r--packages/shasum/shasum-native.bb3
-rw-r--r--packages/sip/sip-native_4.7.1.bb (renamed from packages/sip/sip-native_4.7.bb)4
-rw-r--r--packages/slugos-init/files/turnup3
-rw-r--r--packages/slugos-init/slugos-init_0.10.bb2
-rw-r--r--packages/sofia-sip/sofia-sip.inc21
-rw-r--r--packages/sofia-sip/sofia-sip_1.11.7.bb14
-rw-r--r--packages/sofia-sip/sofia-sip_1.12.7.bb3
-rw-r--r--packages/sqlite/sqlite3/.mtn2git_empty0
-rw-r--r--packages/sqlite/sqlite3/cross-compile.patch92
-rw-r--r--packages/sqlite/sqlite3/ldflags.patch67
-rw-r--r--packages/sqlite/sqlite3/libtool.patch25
-rw-r--r--packages/sqlite/sqlite3_3.5.2.bb1
-rw-r--r--packages/squashfs-tools/squashfs-tools-3.3/.mtn2git_empty0
-rw-r--r--packages/squashfs-tools/squashfs-tools-3.3/Makefile.patch32
-rw-r--r--packages/squashfs-tools/squashfs-tools-native_3.3.bb11
-rw-r--r--packages/squashfs-tools/squashfs-tools.inc18
-rw-r--r--packages/squashfs-tools/squashfs-tools_3.3.bb8
-rw-r--r--packages/squid/squid-native_2.6.STABLE14.bb11
-rw-r--r--packages/squid/squid_2.6.STABLE14.bb16
-rwxr-xr-xpackages/stage-manager/files/stage-manager57
-rw-r--r--packages/stage-manager/stagemanager-native_0.0.1.bb2
-rw-r--r--packages/subversion/subversion_1.4.5.bb33
-rw-r--r--packages/sword/sword_1.5.10.bb19
-rw-r--r--packages/tasks/task-base.bb65
-rw-r--r--packages/tasks/task-boot.bb2
-rw-r--r--packages/tasks/task-devimage.bb25
-rw-r--r--packages/tasks/task-gpe-sectest.bb18
-rw-r--r--packages/tasks/task-mipl.bb16
-rw-r--r--packages/tasks/task-native-sdk.bb3
-rw-r--r--packages/tasks/task-openmoko.bb11
-rw-r--r--packages/tasks/task-opie-16mb.bb4
-rw-r--r--packages/tasks/task-python-everything.bb11
-rw-r--r--packages/tasks/task-python-sharprom_20060425.bb5
-rw-r--r--packages/tasks/task-toolchain-openmoko-sdk.bb5
-rw-r--r--packages/tinymail/files/no-iconv-detect.patch76
-rw-r--r--packages/tinymail/libtinymail-0.0.1/.mtn2git_empty0
-rw-r--r--packages/tinymail/libtinymail-0.0.1/no-iconv-detect.patch78
-rw-r--r--packages/tinymail/libtinymail-0.0.3/no-iconv-detect.patch18
-rw-r--r--packages/tinymail/libtinymail_0.0.5.bb1
-rw-r--r--packages/tinymail/libtinymail_svn.bb2
-rw-r--r--packages/tinymail/tmut_1.1.0.bb9
-rw-r--r--packages/tinymail/tmut_svn.bb7
-rw-r--r--packages/uboot/files/glamo-ram-init.patch21
-rw-r--r--packages/uboot/u-boot-1.1.6/u-boot-1.1.6-83xx-optimizations.patch89
-rw-r--r--packages/uboot/u-boot-1.1.6/u-boot-1.1.6-fsl-1-Add-support-for-the-MPC832XEMDS-board.patch1809
-rw-r--r--packages/uboot/u-boot-1.1.6/u-boot-1.1.6-fsl-1-Add-the-MPC832XEMDS-board-readme.patch131
-rw-r--r--packages/uboot/u-boot-1.1.6/u-boot-1.1.6-fsl-1-Added-MPC8323E-RDB-board-support-2.patch1221
-rw-r--r--packages/uboot/u-boot-1.1.6/u-boot-1.1.6-fsl-1-Fix-the-UEC-driver-bug-of-QE.patch62
-rw-r--r--packages/uboot/u-boot-1.1.6/u-boot-1.1.6-fsl-1-UEC-remove-udelay.patch15
-rw-r--r--packages/uboot/u-boot-1.1.6/u-boot-1.1.6-fsl-1-mpc83xx-20061206.patch32020
-rw-r--r--packages/uboot/u-boot-1.1.6/u-boot-1.1.6-fsl-1-streamline-the-83xx-immr-head-file.patch3640
-rw-r--r--packages/uboot/u-boot_1.1.6.bb17
-rw-r--r--packages/uboot/u-boot_1.3.0.bb7
-rw-r--r--packages/uboot/u-boot_git.bb5
-rw-r--r--packages/uboot/uboot-openmoko_svn.bb6
-rw-r--r--packages/uclibc/uclibc-0.9.29/qemux86/.mtn2git_empty0
-rw-r--r--packages/uclibc/uclibc-0.9.29/qemux86/uClibc.machine68
-rw-r--r--packages/uicmoc/uicmoc3-native_3.3.5.bb1
-rw-r--r--packages/uicmoc/uicmoc4-native_4.2.3.bb43
-rw-r--r--packages/uicmoc/uicmoc4-native_4.3.0.bb53
-rw-r--r--packages/update-rc.d/files/.mtn2git_empty0
-rw-r--r--packages/update-rc.d/files/add-verbose.patch47
-rw-r--r--packages/update-rc.d/update-rc.d_0.7.bb5
-rw-r--r--packages/vala/.mtn2git_empty0
-rw-r--r--packages/vala/vala-native_0.1.4.bb5
-rw-r--r--packages/vala/vala_0.1.4.bb15
-rw-r--r--packages/vte/vte_0.16.8.bb1
-rw-r--r--packages/webcam-server/webcam-server_0.50.bb4
-rw-r--r--packages/wesnoth/.mtn2git_empty0
-rw-r--r--packages/wesnoth/wesnoth_svn.bb19
-rw-r--r--packages/wifi-radar/wifi-radar_1.9.6.bb4
-rw-r--r--packages/wifistix/wifistix-modules/mcf252
-rw-r--r--packages/wifistix/wifistix-modules/wifistix.conf4
-rw-r--r--packages/wifistix/wifistix-modules_5.0.16.p0.bb6
-rwxr-xr-xpackages/wireless-tools/wireless-tools/wireless-tools.if-pre-up8
-rw-r--r--packages/wireless-tools/wireless-tools_28+29pre21.bb2
-rw-r--r--packages/wlan-ng/wlan-ng-modules-0.2.7/2.6.22-fixes.patch221
-rw-r--r--packages/wlan-ng/wlan-ng-modules-0.2.8+svn20071030/.mtn2git_empty0
-rw-r--r--packages/wlan-ng/wlan-ng-modules-0.2.8+svn20071030/config.in21
-rw-r--r--packages/wlan-ng/wlan-ng-modules-0.2.8+svn20071030/only-the-modules.patch26
-rw-r--r--packages/wlan-ng/wlan-ng-modules_0.2.7.bb5
-rw-r--r--packages/wlan-ng/wlan-ng-modules_0.2.8+svn20071030.bb9
-rw-r--r--packages/wlan-ng/wlan-ng-utils-0.2.8/.mtn2git_empty0
-rw-r--r--packages/wlan-ng/wlan-ng-utils-0.2.8/config.in21
-rw-r--r--packages/wlan-ng/wlan-ng-utils-0.2.8/only-the-utils.patch26
-rw-r--r--packages/wlan-ng/wlan-ng-utils_0.2.8.bb7
-rw-r--r--packages/x11vnc/x11vnc_0.9.3.bb2
-rw-r--r--packages/xfce/xfce-mcs-manager.inc2
-rw-r--r--packages/xkbd/xkbd-0.8.15/add-default-common-slides.patch44
-rw-r--r--packages/xkbd/xkbd-0.8.15/differentiate-desktop-name.patch12
-rw-r--r--packages/xkbd/xkbd-layout-ru/.mtn2git_empty0
-rw-r--r--packages/xkbd/xkbd-layout-ru/en-ru-123.xkbd1353
-rw-r--r--packages/xkbd/xkbd-layout-ru_0.1.1.bb6
-rw-r--r--packages/xkbd/xkbd_0.8.15.bb4
-rw-r--r--packages/xorg-data/xbitmaps_1.0.1.bb2
-rw-r--r--packages/xorg-driver/xf86-video-ati_6.7.196.bb6
-rw-r--r--packages/xorg-driver/xf86-video-vmware_10.15.2.bb6
-rw-r--r--packages/xorg-driver/xf86-video-xgi_1.5.0.bb6
-rw-r--r--packages/xorg-driver/xorg-driver-common.inc4
-rw-r--r--packages/xorg-lib/libx11-native_1.0.3.bb28
-rw-r--r--packages/xorg-lib/libx11-native_1.1.1.bb28
-rw-r--r--packages/xorg-lib/pixman_0.9.6.bb16
-rw-r--r--packages/xorg-xserver/xorg-xserver-common.inc4
-rw-r--r--packages/xorg-xserver/xserver-kdrive-1.3.0.0/build-glamo.patch91
-rw-r--r--packages/xorg-xserver/xserver-kdrive-1.3.0.0/smedia-glamo.patch3702
-rw-r--r--packages/xorg-xserver/xserver-kdrive-common.inc4
-rw-r--r--packages/xorg-xserver/xserver-kdrive/00-xglamo-logs.patch386
-rw-r--r--packages/xorg-xserver/xserver-kdrive/01-xglamo-scrolling-artifact-fix.patch15
-rw-r--r--packages/xorg-xserver/xserver-kdrive/02-xglamo-no-dri.patch438
-rw-r--r--packages/xorg-xserver/xserver-kdrive/03-xglamo-no-vesa.patch141
-rw-r--r--packages/xorg-xserver/xserver-kdrive_1.3.0.0.bb17
-rw-r--r--packages/xorg-xserver/xserver-xorg_1.3.0.0.bb2
-rw-r--r--packages/xournal/xournal_0.4.0.1.bb4
-rw-r--r--packages/xournal/xournal_0.4.1.bb15
-rw-r--r--packages/xserver-kdrive-common/xserver-kdrive-common/Xserver21
-rw-r--r--packages/xserver-kdrive-common/xserver-kdrive-common/openmoko/Xserver3
-rw-r--r--packages/xserver-kdrive-common/xserver-kdrive-common_0.1.bb2
-rw-r--r--packages/zaurus-updater/akita/updater.sh84
-rw-r--r--packages/zaurus-updater/c7x0/updater.sh242
-rwxr-xr-xpackages/zaurus-updater/spitz/updater.sh280
-rw-r--r--packages/zaurus-updater/tosa/updater.sh241
-rw-r--r--packages/zaurus-updater/zaurus-updater.bb2
-rw-r--r--packages/zaurus-updater/zaurus-updater/.mtn2git_empty0
-rw-r--r--packages/zaurus-updater/zaurus-updater/updater.sh401
-rw-r--r--packages/zaurusd/files/zaurus-hinge.bl-off12
-rw-r--r--packages/zaurusd/files/zaurus-hinge.bl-on42
-rw-r--r--packages/zaurusd/files/zaurus-hinge.matchbox-landscape6
-rw-r--r--packages/zaurusd/files/zaurus-hinge.matchbox-portrait5
-rw-r--r--packages/zaurusd/zaurusd_svn.bb2
-rw-r--r--site/arm-common3
-rw-r--r--site/arm-darwin5
-rw-r--r--site/arm-linux1
-rw-r--r--site/common-glibc11
873 files changed, 92789 insertions, 9305 deletions
diff --git a/MAINTAINERS b/MAINTAINERS
index 1e6b9821b9..53c4380116 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -90,6 +90,12 @@ Person: Joaquim Duran
Mail: joaquinduran@adtelecom.es
Recipes: gtk+, gtkmm
+Person: Junqian Gordon Xu 'xjqian'
+Mail: xjqian@gmail.com
+Machines: tosa, borzoi, nokia770
+Distros: Ångström
+Recipes: gnuplot octave
+
Person: Justin Patrin
Mail: papercrane@reversefold.com
Website: http://www.reversefold.com
diff --git a/classes/base.bbclass b/classes/base.bbclass
index c504f78283..7526dff65e 100644
--- a/classes/base.bbclass
+++ b/classes/base.bbclass
@@ -315,7 +315,9 @@ oe_libinstall() {
# stop libtool using the final directory name for libraries
# in staging:
__runcmd rm -f $destpath/$libname.la
- __runcmd sed -e 's/^installed=yes$/installed=no/' -e '/^dependency_libs=/s,${WORKDIR}[[:alnum:]/\._+-]*/\([[:alnum:]\._+-]*\),${STAGING_LIBDIR}/\1,g' $dotlai >$destpath/$libname.la
+ __runcmd sed -e 's/^installed=yes$/installed=no/' \
+ -e '/^dependency_libs=/s,${WORKDIR}[[:alnum:]/\._+-]*/\([[:alnum:]\._+-]*\),${STAGING_LIBDIR}/\1,g' \
+ $dotlai >$destpath/$libname.la
else
__runcmd install -m 0644 $dotlai $destpath/$libname.la
fi
@@ -508,6 +510,13 @@ base_do_fetchall() {
:
}
+addtask buildall after do_build
+do_buildall[recrdeptask] = "do_build"
+base_do_buildall() {
+ :
+}
+
+
def oe_unpack_file(file, data, url = None):
import bb, os
if not url:
@@ -684,8 +693,8 @@ base_do_stage () {
:
}
-do_populate_staging[dirs] = "${STAGING_DIR_TARGET}/bin ${STAGING_DIR_TARGET}/lib \
- ${STAGING_DIR_TARGET}/include \
+do_populate_staging[dirs] = "${STAGING_DIR_TARGET}/${layout_bindir} ${STAGING_DIR_TARGET}/${layout_libdir} \
+ ${STAGING_DIR_TARGET}/${layout_includedir} \
${STAGING_BINDIR_NATIVE} ${STAGING_LIBDIR_NATIVE} \
${STAGING_INCDIR_NATIVE} \
${STAGING_DATADIR} \
@@ -695,7 +704,7 @@ do_populate_staging[dirs] = "${STAGING_DIR_TARGET}/bin ${STAGING_DIR_TARGET}/lib
addtask populate_staging after do_install
python do_populate_staging () {
- bb.build.exec_func('do_stage', d)
+ bb.build.exec_func('do_stage', d)
}
addtask install after do_compile
@@ -737,7 +746,7 @@ def explode_deps(s):
def packaged(pkg, d):
import os, bb
- return os.access(bb.data.expand('${PKGDATA_DIR}/runtime/%s.packaged' % pkg, d), os.R_OK)
+ return os.access(get_subpkgedata_fn(pkg, d) + '.packaged', os.R_OK)
def read_pkgdatafile(fn):
pkgdata = {}
@@ -761,16 +770,23 @@ def read_pkgdatafile(fn):
return pkgdata
+def get_subpkgedata_fn(pkg, d):
+ import bb, os
+ archs = bb.data.expand("${PACKAGE_ARCHS}", d).split(" ")
+ archs.reverse()
+ for arch in archs:
+ fn = bb.data.expand('${STAGING_DIR}/pkgdata/' + arch + '${TARGET_VENDOR}-${TARGET_OS}/runtime/%s' % pkg, d)
+ if os.path.exists(fn):
+ return fn
+ return bb.data.expand('${PKGDATA_DIR}/runtime/%s' % pkg, d)
+
def has_subpkgdata(pkg, d):
import bb, os
- fn = bb.data.expand('${PKGDATA_DIR}/runtime/%s' % pkg, d)
- return os.access(fn, os.R_OK)
+ return os.access(get_subpkgedata_fn(pkg, d), os.R_OK)
def read_subpkgdata(pkg, d):
import bb, os
- fn = bb.data.expand('${PKGDATA_DIR}/runtime/%s' % pkg, d)
- return read_pkgdatafile(fn)
-
+ return read_pkgdatafile(get_subpkgedata_fn(pkg, d))
def has_pkgdata(pn, d):
import bb, os
diff --git a/classes/binconfig.bbclass b/classes/binconfig.bbclass
index 497b78f454..4e425a76d6 100644
--- a/classes/binconfig.bbclass
+++ b/classes/binconfig.bbclass
@@ -16,8 +16,8 @@ def get_binconfig_mangle(d):
s += " -e 's:OELIBDIR:${STAGING_LIBDIR}:;'"
s += " -e 's:OEINCDIR:${STAGING_INCDIR}:;'"
s += " -e 's:OEDATADIR:${STAGING_DATADIR}:'"
- s += " -e 's:OEPREFIX:${STAGING_LIBDIR}/..:'"
- s += " -e 's:OEEXECPREFIX:${STAGING_LIBDIR}/..:'"
+ s += " -e 's:OEPREFIX:${STAGING_DIR_HOST}${layout_prefix}:'"
+ s += " -e 's:OEEXECPREFIX:${STAGING_DIR_HOST}${layout_exec_prefix}:'"
s += " -e 's:-I${WORKDIR}:-I${STAGING_INCDIR}:'"
s += " -e 's:-L${WORKDIR}:-L${STAGING_LIBDIR}:'"
return s
@@ -33,7 +33,7 @@ do_install_append() {
-e 's:${STAGING_LIBDIR}:${libdir}:g;' \
-e 's:${STAGING_INCDIR}:${includedir}:g;' \
-e 's:${STAGING_DATADIR}:${datadir}:' \
- -e 's:${STAGING_LIBDIR}/..:${prefix}:' > ${D}${bindir}/`basename $config`
+ -e 's:${STAGING_DIR_HOST}${layout_prefix}:${prefix}:' > ${D}${bindir}/`basename $config`
done
fi
@@ -42,7 +42,7 @@ do_install_append() {
-e 's:${STAGING_LIBDIR}:${libdir}:g;' \
-e 's:${STAGING_INCDIR}:${includedir}:g;' \
-e 's:${STAGING_DATADIR}:${datadir}:' \
- -e 's:${STAGING_LIBDIR}/..:${prefix}:' \
+ -e 's:${STAGING_DIR_HOST}${layout_prefix}:${prefix}:' \
$lafile
done
}
diff --git a/classes/cross.bbclass b/classes/cross.bbclass
index a6b000cb6a..89cb3e9569 100644
--- a/classes/cross.bbclass
+++ b/classes/cross.bbclass
@@ -18,7 +18,9 @@ CPPFLAGS = "${BUILD_CPPFLAGS}"
CFLAGS = "${BUILD_CFLAGS}"
CXXFLAGS = "${BUILD_CFLAGS}"
LDFLAGS = "${BUILD_LDFLAGS}"
-LDFLAGS_build-darwin = "-L${STAGING_LIBDIR_NATIVE} "
+LDFLAGS_build-darwin = "-L${STAGING_LIBDIR_NATIVE}"
+
+TOOLCHAIN_OPTIONS = ""
# Overrides for paths
diff --git a/classes/debian.bbclass b/classes/debian.bbclass
index a38f10d629..dd0789adae 100644
--- a/classes/debian.bbclass
+++ b/classes/debian.bbclass
@@ -1,5 +1,3 @@
-STAGING_PKGMAPS_DIR = "${STAGING_DIR}/pkgmaps/debian"
-
# Debian package renaming only occurs when a package is built
# We therefore have to make sure we build all runtime packages
# before building the current package to make the packages runtime
diff --git a/classes/distutils.bbclass b/classes/distutils.bbclass
index c07a9911cd..18aee09a26 100644
--- a/classes/distutils.bbclass
+++ b/classes/distutils.bbclass
@@ -1,5 +1,11 @@
inherit distutils-base
+DISTUTILS_STAGE_HEADERS_ARGS ?= "--install-dir=${STAGING_INCDIR}/${PYTHON_DIR}"
+DISTUTILS_STAGE_ALL_ARGS ?= "--prefix=${STAGING_DIR_HOST}${layout_prefix} \
+ --install-data=${STAGING_DATADIR}"
+DISTUTILS_INSTALL_ARGS ?= "--prefix=${D}/${prefix} \
+ --install-data=${D}/${datadir}"
+
distutils_do_compile() {
BUILD_SYS=${BUILD_SYS} HOST_SYS=${HOST_SYS} \
${STAGING_BINDIR_NATIVE}/python setup.py build || \
@@ -7,16 +13,18 @@ distutils_do_compile() {
}
distutils_stage_headers() {
+ install -d ${STAGING_DIR_HOST}${layout_prefix}/lib/${PYTHON_DIR}/site-packages
BUILD_SYS=${BUILD_SYS} HOST_SYS=${HOST_SYS} \
- ${STAGING_BINDIR_NATIVE}/python setup.py install_headers --install-dir=${STAGING_INCDIR}/${PYTHON_DIR} || \
+ ${STAGING_BINDIR_NATIVE}/python setup.py install_headers ${DISTUTILS_STAGE_HEADERS_ARGS} || \
oefatal "python setup.py install_headers execution failed."
}
distutils_stage_all() {
- install -d ${STAGING_INCDIR}/../${PYTHON_DIR}/site-packages
- PYTHONPATH=${STAGING_INCDIR}/../${PYTHON_DIR}/site-packages \
+ install -d ${STAGING_DIR_HOST}${layout_prefix}/lib/${PYTHON_DIR}/site-packages
+ # is this missing a lib below?
+ PYTHONPATH=${STAGING_DIR_HOST}${layout_prefix}/${PYTHON_DIR}/site-packages \
BUILD_SYS=${BUILD_SYS} HOST_SYS=${HOST_SYS} \
- ${STAGING_BINDIR_NATIVE}/python setup.py install --prefix=${STAGING_INCDIR}/.. --install-data=${STAGING_INCDIR}/../share || \
+ ${STAGING_BINDIR_NATIVE}/python setup.py install ${DISTUTILS_STAGE_ALL_ARGS} || \
oefatal "python setup.py install (stage) execution failed."
}
@@ -24,7 +32,7 @@ distutils_do_install() {
install -d ${D}${libdir}/${PYTHON_DIR}/site-packages
PYTHONPATH=${D}/${libdir}/${PYTHON_DIR}/site-packages \
BUILD_SYS=${BUILD_SYS} HOST_SYS=${HOST_SYS} \
- ${STAGING_BINDIR_NATIVE}/python setup.py install --prefix=${D}/${prefix} --install-data=${D}/${datadir} || \
+ ${STAGING_BINDIR_NATIVE}/python setup.py install ${DISTUTILS_INSTALL_ARGS} || \
oefatal "python setup.py install execution failed."
for i in `find ${D} -name "*.py"` ; do \
@@ -43,7 +51,7 @@ distutils_do_install() {
done
fi
- rm -f ${D}${libdir}/${PYTHON_DIR}/site-packages/easy-install.pth
+ rm -f ${D}${libdir}/${PYTHON_DIR}/site-packages/easy-install.pth
}
EXPORT_FUNCTIONS do_compile do_install
diff --git a/classes/image.bbclass b/classes/image.bbclass
index 3420e3f53a..312307c831 100644
--- a/classes/image.bbclass
+++ b/classes/image.bbclass
@@ -4,6 +4,7 @@ LICENSE = "MIT"
PACKAGES = ""
RDEPENDS += "${IMAGE_INSTALL}"
+# "export IMAGE_BASENAME" not supported at this time
IMAGE_BASENAME[export] = "1"
export PACKAGE_INSTALL ?= "${IMAGE_INSTALL}"
@@ -179,8 +180,13 @@ set_image_autologin () {
sed -i 's%^AUTOLOGIN=\"false"%AUTOLOGIN="true"%g' ${IMAGE_ROOTFS}/etc/sysconfig/gpelogin
}
+# Can be use to create /etc/timestamp during image construction to give a reasonably
+# sane default time setting
+rootfs_update_timestamp () {
+ date "+%m%d%H%M%Y" >${IMAGE_ROOTFS}/etc/timestamp
+}
# export the zap_root_password, create_etc_timestamp and remote_init_link
-EXPORT_FUNCTIONS zap_root_password create_etc_timestamp remove_init_link do_rootfs make_zimage_symlink_relative set_image_autologin
+EXPORT_FUNCTIONS zap_root_password create_etc_timestamp remove_init_link do_rootfs make_zimage_symlink_relative set_image_autologin rootfs_update_timestamp
addtask rootfs before do_build after do_install
diff --git a/classes/insane.bbclass b/classes/insane.bbclass
index 3fb2d04a81..473fe6ebbf 100644
--- a/classes/insane.bbclass
+++ b/classes/insane.bbclass
@@ -21,7 +21,7 @@
# We play a special package function
inherit package
-PACKAGE_DEPENDS += "pax-utils-native"
+PACKAGE_DEPENDS += "pax-utils-native desktop-file-utils-native"
#PACKAGE_DEPENDS += chrpath-native"
PACKAGEFUNCS += " do_package_qa "
@@ -57,8 +57,12 @@ def package_qa_get_machine_dict():
"arm" : ( 40, 97, 0, True, True),
"armeb": ( 40, 97, 0, False, True),
"powerpc": ( 20, 0, 0, False, True),
+ "i386": ( 3, 0, 0, True, True),
+ "i486": ( 3, 0, 0, True, True),
+ "i586": ( 3, 0, 0, True, True),
+ "i686": ( 3, 0, 0, True, True),
"mipsel": ( 8, 0, 0, True, True),
- "avr32": (6317, 0, 0, False, True),
+ "avr32": (6317, 0, 0, False, True),
},
"uclinux-uclibc" : {
"bfin": ( 106, 0, 0, True, True),
@@ -308,8 +312,22 @@ def package_qa_check_pcla(path,name,d):
.pc and .la files should not point to the WORKDIR
"""
sane = True
+ # TODO
return sane
+def package_qa_check_desktop(path, name, d):
+ """
+ Run all desktop files through desktop-file-validate.
+ """
+ import bb, os
+ if path.endswith(".desktop"):
+ validate = os.path.join(bb.data.getVar('STAGING_BINDIR_NATIVE',d,True), 'desktop-file-validate')
+ output = os.popen("%s %s" % (validate, path))
+ # This only produces output on errors
+ for l in output:
+ bb.error(l.strip())
+ return True
+
def package_qa_check_staged(path,d):
"""
Check staged la and pc files for sanity
@@ -416,9 +434,13 @@ python do_package_qa () {
walk_sane = True
rdepends_sane = True
for package in packages.split():
+ if bb.data.getVar('INSANE_SKIP_' + package, d, True):
+ bb.note("Package: %s (skipped)" % package)
+ continue
+
bb.note("Checking Package: %s" % package)
path = "%s/install/%s" % (workdir, package)
- if not package_qa_walk(path, [package_qa_check_rpath, package_qa_check_devdbg, package_qa_check_perm, package_qa_check_arch], package, d):
+ if not package_qa_walk(path, [package_qa_check_rpath, package_qa_check_devdbg, package_qa_check_perm, package_qa_check_arch, package_qa_check_desktop], package, d):
walk_sane = False
if not package_qa_check_rdepends(package, workdir, d):
rdepends_sane = False
diff --git a/classes/kernel.bbclass b/classes/kernel.bbclass
index 5976f42c71..c00d0f3f58 100644
--- a/classes/kernel.bbclass
+++ b/classes/kernel.bbclass
@@ -349,6 +349,9 @@ python populate_packages_prepend () {
# If autoloading is requested, output /etc/modutils/<name> and append
# appropriate modprobe commands to the postinst
autoload = bb.data.getVar('module_autoload_%s' % basename, d, 1)
+ if not autoload:
+ # Also, try canonical name with dashes
+ autoload = bb.data.getVar('module_autoload_%s' % basename.replace('_', '-'), d, 1)
if autoload:
name = '%s/etc/modutils/%s' % (dvar, basename)
f = open(name, 'w')
@@ -400,7 +403,7 @@ python populate_packages_prepend () {
metapkg = "kernel-modules"
bb.data.setVar('ALLOW_EMPTY_' + metapkg, "1", d)
bb.data.setVar('FILES_' + metapkg, "", d)
- blacklist = [ 'kernel-dev', 'kernel-image', 'kernel-base' ]
+ blacklist = [ 'kernel-dev', 'kernel-image', 'kernel-base', 'kernel-vmlinux' ]
for l in module_deps.values():
for i in l:
pkg = module_pattern % legitimize_package_name(re.match(module_regex, os.path.basename(i)).group(1))
diff --git a/classes/mozilla.bbclass b/classes/mozilla.bbclass
index abf2bc7623..84c83ebe05 100644
--- a/classes/mozilla.bbclass
+++ b/classes/mozilla.bbclass
@@ -19,7 +19,7 @@ export MOZ_OBJDIR = "${S}"
export CONFIGURE_ARGS = "${EXTRA_OECONF}"
export HOST_LIBIDL_CFLAGS = "`${HOST_LIBIDL_CONFIG} --cflags`"
export HOST_LIBIDL_LIBS = "`${HOST_LIBIDL_CONFIG} --libs`"
-export HOST_LIBIDL_CONFIG = "PKG_CONFIG_PATH=${STAGING_DATADIR_NATIVE}/pkgconfig pkg-config libIDL-2.0"
+export HOST_LIBIDL_CONFIG = "PKG_CONFIG_PATH=${STAGING_LIBDIR_NATIVE}/pkgconfig pkg-config libIDL-2.0"
export HOST_CC = "${BUILD_CC}"
export HOST_CXX = "${BUILD_CXX}"
export HOST_CFLAGS = "${BUILD_CFLAGS}"
diff --git a/classes/nslu2-image.bbclass b/classes/nslu2-image.bbclass
index edd23ae07f..8be1fa762f 100644
--- a/classes/nslu2-image.bbclass
+++ b/classes/nslu2-image.bbclass
@@ -1,25 +1,23 @@
nslu2_pack_image () {
- install -d ${DEPLOY_DIR_IMAGE}/slug
- install -m 0644 ${STAGING_LIBDIR}/nslu2-binaries/RedBoot \
- ${STAGING_LIBDIR}/nslu2-binaries/Trailer \
- ${STAGING_LIBDIR}/nslu2-binaries/SysConf \
- ${STAGING_LOADER_DIR}/apex-nslu2.bin \
- ${STAGING_LOADER_DIR}/apex-nslu2-16mb.bin \
- ${DEPLOY_DIR_IMAGE}/slug/
- install -m 0644 ${DEPLOY_DIR_IMAGE}/zImage-ixp4xx${SITEINFO_ENDIANESS} \
- ${DEPLOY_DIR_IMAGE}/slug/vmlinuz
- install -m 0644 ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.jffs2 \
- ${DEPLOY_DIR_IMAGE}/slug/flashdisk.jffs2
- install -m 0644 ${STAGING_FIRMWARE_DIR}/NPE-B ${DEPLOY_DIR_IMAGE}/slug/
- cd ${DEPLOY_DIR_IMAGE}/slug
- slugimage -p -b RedBoot -s SysConf -k vmlinuz -L apex-nslu2.bin \
- -r Flashdisk:flashdisk.jffs2 -m NPE-B -t Trailer \
+ slugimage -p \
+ -b ${STAGING_LIBDIR}/nslu2-binaries/RedBoot \
+ -s ${STAGING_LIBDIR}/nslu2-binaries/SysConf \
+ -k ${DEPLOY_DIR_IMAGE}/zImage-${MACHINE}.bin \
+ -L ${STAGING_LOADER_DIR}/apex-nslu2.bin \
+ -r Flashdisk:${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.jffs2 \
+ -m ${STAGING_FIRMWARE_DIR}/NPE-B \
+ -t ${STAGING_LIBDIR}/nslu2-binaries/Trailer \
-o ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}-nslu2.bin
- slugimage -F -p -b RedBoot -s SysConf -k vmlinuz -L apex-nslu2-16mb.bin \
- -r Flashdisk:flashdisk.jffs2 -m NPE-B -t Trailer \
+ slugimage -F -p \
+ -b ${STAGING_LIBDIR}/nslu2-binaries/RedBoot \
+ -s ${STAGING_LIBDIR}/nslu2-binaries/SysConf \
+ -k ${DEPLOY_DIR_IMAGE}/zImage-${MACHINE}.bin \
+ -L ${STAGING_LOADER_DIR}/apex-nslu2-16mb.bin \
+ -r Flashdisk:${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.jffs2 \
+ -m ${STAGING_FIRMWARE_DIR}/NPE-B \
+ -t ${STAGING_LIBDIR}/nslu2-binaries/Trailer \
-o ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}-nslu2-16mb.bin
- rm -rf ${DEPLOY_DIR_IMAGE}/slug
}
-EXTRA_IMAGEDEPENDS_nslu2 += 'slugimage-native nslu2-linksys-firmware ixp4xx-npe upslug2-native apex-nslu2 apex-nslu2-16mb'
-IMAGE_POSTPROCESS_COMMAND_nslu2 += "nslu2_pack_image; "
+EXTRA_IMAGEDEPENDS += 'slugimage-native nslu2-linksys-firmware ixp4xx-npe apex-nslu2 apex-nslu2-16mb'
+IMAGE_POSTPROCESS_COMMAND += "nslu2_pack_image; "
diff --git a/classes/package.bbclass b/classes/package.bbclass
index b114049b8e..67aeb33a13 100644
--- a/classes/package.bbclass
+++ b/classes/package.bbclass
@@ -34,9 +34,6 @@ def do_split_packages(d, root, file_regex, output_pattern, description, postinst
return
packages = bb.data.getVar('PACKAGES', d, 1).split()
- if not packages:
- # nothing to do
- return
if postinst:
postinst = '#!/bin/sh\n' + postinst + '\n'
@@ -189,42 +186,15 @@ def runstrip(file, d):
# Package data handling routines
#
-STAGING_PKGMAPS_DIR ?= "${STAGING_DIR}/pkgmaps"
-
-def add_package_mapping (pkg, new_name, d):
- import bb, os
-
- def encode(str):
- import codecs
- c = codecs.getencoder("string_escape")
- return c(str)[0]
-
- pmap_dir = bb.data.getVar('STAGING_PKGMAPS_DIR', d, 1)
-
- bb.mkdirhier(pmap_dir)
-
- data_file = os.path.join(pmap_dir, pkg)
-
- f = open(data_file, 'w')
- f.write("%s\n" % encode(new_name))
- f.close()
-
def get_package_mapping (pkg, d):
import bb, os
- def decode(str):
- import codecs
- c = codecs.getdecoder("string_escape")
- return c(str)[0]
+ data = read_subpkgdata(pkg, d)
+ key = "PKG_%s" % pkg
- data_file = bb.data.expand("${STAGING_PKGMAPS_DIR}/%s" % pkg, d)
+ if key in data:
+ return data[key]
- if os.access(data_file, os.R_OK):
- f = file(data_file, 'r')
- lines = f.readlines()
- f.close()
- for l in lines:
- return decode(l).strip()
return pkg
def runtime_mapping_rename (varname, d):
@@ -258,9 +228,6 @@ python package_do_split_locales() {
return
packages = (bb.data.getVar('PACKAGES', d, 1) or "").split()
- if not packages:
- bb.debug(1, "no packages to build; not splitting locales")
- return
datadir = bb.data.getVar('datadir', d, 1)
if not datadir:
@@ -318,6 +285,76 @@ python package_do_split_locales() {
#bb.data.setVar('RDEPENDS_%s' % mainpkg, ' '.join(rdep), d)
}
+def copyfile(src,dest,newmtime=None,sstat=None):
+ """
+ Copies a file from src to dest, preserving all permissions and
+ attributes; mtime will be preserved even when moving across
+ filesystems. Returns true on success and false on failure.
+ """
+ import os, stat, shutil, commands
+
+ #print "copyfile("+src+","+dest+","+str(newmtime)+","+str(sstat)+")"
+ try:
+ if not sstat:
+ sstat=os.lstat(src)
+ except Exception, e:
+ print "copyfile: Stating source file failed...", e
+ return False
+
+ destexists=1
+ try:
+ dstat=os.lstat(dest)
+ except:
+ dstat=os.lstat(os.path.dirname(dest))
+ destexists=0
+
+ if destexists:
+ if stat.S_ISLNK(dstat[stat.ST_MODE]):
+ try:
+ os.unlink(dest)
+ destexists=0
+ except Exception, e:
+ pass
+
+ if stat.S_ISLNK(sstat[stat.ST_MODE]):
+ try:
+ target=os.readlink(src)
+ if destexists and not stat.S_ISDIR(dstat[stat.ST_MODE]):
+ os.unlink(dest)
+ os.symlink(target,dest)
+ #os.lchown(dest,sstat[stat.ST_UID],sstat[stat.ST_GID])
+ return os.lstat(dest)
+ except Exception, e:
+ print "copyfile: failed to properly create symlink:", dest, "->", target, e
+ return False
+
+ if stat.S_ISREG(sstat[stat.ST_MODE]):
+ try: # For safety copy then move it over.
+ shutil.copyfile(src,dest+"#new")
+ os.rename(dest+"#new",dest)
+ except Exception, e:
+ print 'copyfile: copy', src, '->', dest, 'failed.', e
+ return False
+ else:
+ #we don't yet handle special, so we need to fall back to /bin/mv
+ a=commands.getstatusoutput("/bin/cp -f "+"'"+src+"' '"+dest+"'")
+ if a[0]!=0:
+ print "copyfile: Failed to copy special file:" + src + "' to '" + dest + "'", a
+ return False # failure
+ try:
+ os.lchown(dest,sstat[stat.ST_UID],sstat[stat.ST_GID])
+ os.chmod(dest, stat.S_IMODE(sstat[stat.ST_MODE])) # Sticky is reset on chown
+ except Exception, e:
+ print "copyfile: Failed to chown/chmod/unlink", dest, e
+ return False
+
+ if newmtime:
+ os.utime(dest,(newmtime,newmtime))
+ else:
+ os.utime(dest, (sstat[stat.ST_ATIME], sstat[stat.ST_MTIME]))
+ newmtime=sstat[stat.ST_MTIME]
+ return newmtime
+
python populate_packages () {
import glob, stat, errno, re
@@ -340,9 +377,6 @@ python populate_packages () {
bb.mkdirhier(dvar)
packages = bb.data.getVar('PACKAGES', d, 1)
- if not packages:
- bb.debug(1, "PACKAGES not defined, nothing to package")
- return
pn = bb.data.getVar('PN', d, 1)
if not pn:
@@ -380,6 +414,8 @@ python populate_packages () {
pkgdest = bb.data.getVar('PKGDEST', d, 1)
os.system('rm -rf %s' % pkgdest)
+ seen = []
+
for pkg in package_list:
localdata = bb.data.createCopy(d)
root = os.path.join(pkgdest, pkg)
@@ -410,11 +446,18 @@ python populate_packages () {
continue
if (not os.path.islink(file)) and (not os.path.exists(file)):
continue
+ if file in seen:
+ continue
+ seen.append(file)
+ if os.path.isdir(file) and not os.path.islink(file):
+ bb.mkdirhier(os.path.join(root,file))
+ os.chmod(os.path.join(root,file), os.stat(file).st_mode)
+ continue
fpath = os.path.join(root,file)
dpath = os.path.dirname(fpath)
bb.mkdirhier(dpath)
- ret = bb.movefile(file,fpath)
- if ret is None or ret == 0:
+ ret = copyfile(file, fpath)
+ if ret is False or ret == 0:
raise bb.build.FuncFailed("File population failed")
del localdata
os.chdir(workdir)
@@ -423,7 +466,8 @@ python populate_packages () {
for root, dirs, files in os.walk(dvar):
for f in files:
path = os.path.join(root[len(dvar):], f)
- unshipped.append(path)
+ if ('.' + path) not in seen:
+ unshipped.append(path)
if unshipped != []:
bb.note("the following files were installed but not shipped in any package:")
@@ -436,8 +480,6 @@ python populate_packages () {
pkgname = bb.data.getVar('PKG_%s' % pkg, d, 1)
if pkgname is None:
bb.data.setVar('PKG_%s' % pkg, pkg, d)
- else:
- add_package_mapping(pkg, pkgname, d)
dangling_links = {}
pkg_files = {}
@@ -524,6 +566,8 @@ python emit_pkgdata() {
sf.close()
allow_empty = bb.data.getVar('ALLOW_EMPTY_%s' % pkg, d, 1)
+ if not allow_empty:
+ allow_empty = bb.data.getVar('ALLOW_EMPTY', d, 1)
root = "%s/install/%s" % (workdir, pkg)
os.chdir(root)
g = glob('*')
@@ -823,10 +867,7 @@ python package_depchains() {
prefixes = (bb.data.getVar('DEPCHAIN_PRE', d, 1) or '').split()
def pkg_addrrecs(pkg, base, suffix, getname, rdepends, d):
- def packaged(pkg, d):
- return os.access(bb.data.expand('${PKGDATA_DIR}/runtime/%s.packaged' % pkg, d), os.R_OK)
-
- #bb.note('rdepends for %s is %s' % (base, rdepends))
+ #bb.note('rdepends for %s is %s' % (base, rdepends))
rreclist = explode_deps(bb.data.getVar('RRECOMMENDS_' + pkg, d, 1) or bb.data.getVar('RRECOMMENDS', d, 1) or "")
diff --git a/classes/package_ipk.bbclass b/classes/package_ipk.bbclass
index a12899e2a1..16d6050573 100644
--- a/classes/package_ipk.bbclass
+++ b/classes/package_ipk.bbclass
@@ -32,7 +32,7 @@ python package_ipk_install () {
# Generate ipk.conf if it or the stamp doesnt exist
conffile = os.path.join(stagingdir,"ipkg.conf")
- if not os.access(conffile, os.R_OK):
+ if not os.access(conffile, os.R_OK):
ipkg_archs = bb.data.getVar('PACKAGE_ARCHS',d)
if ipkg_archs is None:
bb.error("PACKAGE_ARCHS missing")
@@ -114,7 +114,7 @@ package_generate_ipkg_conf () {
}
python do_package_ipk () {
- import sys, re, fcntl, copy
+ import sys, re, copy, fcntl
workdir = bb.data.getVar('WORKDIR', d, 1)
if not workdir:
@@ -127,10 +127,6 @@ python do_package_ipk () {
bb.error("DEPLOY_DIR_IPK not defined, unable to package")
return
- arch = bb.data.getVar('PACKAGE_ARCH', d, 1)
- outdir = "%s/%s" % (outdir, arch)
- bb.mkdirhier(outdir)
-
dvar = bb.data.getVar('D', d, 1)
if not dvar:
bb.error("D not defined, unable to package")
@@ -160,9 +156,11 @@ python do_package_ipk () {
fcntl.flock(lf.fileno(), fcntl.LOCK_UN)
lf.close
+
for pkg in packages.split():
localdata = bb.data.createCopy(d)
- root = "%s/install/%s" % (workdir, pkg)
+ pkgdest = bb.data.getVar('PKGDEST', d, 1)
+ root = "%s/%s" % (pkgdest, pkg)
lf = lockfile(root + ".lock")
@@ -181,7 +179,8 @@ python do_package_ipk () {
bb.data.update_data(localdata)
basedir = os.path.join(os.path.dirname(root))
- pkgoutdir = outdir
+ arch = bb.data.getVar('PACKAGE_ARCH', localdata, 1)
+ pkgoutdir = "%s/%s" % (outdir, arch)
bb.mkdirhier(pkgoutdir)
os.chdir(root)
from glob import glob
@@ -202,6 +201,7 @@ python do_package_ipk () {
try:
ctrlfile = file(os.path.join(controldir, 'control'), 'w')
except OSError:
+ unlockfile(lf)
raise bb.build.FuncFailed("unable to open control file for writing.")
fields = []
@@ -235,6 +235,7 @@ python do_package_ipk () {
except KeyError:
(type, value, traceback) = sys.exc_info()
ctrlfile.close()
+ unlockfile(lf)
raise bb.build.FuncFailed("Missing field for ipk generation: %s" % value)
# more fields
@@ -271,6 +272,7 @@ python do_package_ipk () {
try:
scriptfile = file(os.path.join(controldir, script), 'w')
except OSError:
+ unlockfile(lf)
raise bb.build.FuncFailed("unable to open %s script file for writing." % script)
scriptfile.write(scriptvar)
scriptfile.close()
@@ -281,6 +283,7 @@ python do_package_ipk () {
try:
conffiles = file(os.path.join(controldir, 'conffiles'), 'w')
except OSError:
+ unlockfile(lf)
raise bb.build.FuncFailed("unable to open conffiles for writing.")
for f in conffiles_str.split():
conffiles.write('%s\n' % f)
@@ -290,6 +293,7 @@ python do_package_ipk () {
ret = os.system("PATH=\"%s\" %s %s %s" % (bb.data.getVar("PATH", localdata, 1),
bb.data.getVar("IPKGBUILDCMD",d,1), pkg, pkgoutdir))
if ret != 0:
+ unlockfile(lf)
raise bb.build.FuncFailed("ipkg-build execution failed")
for script in ["preinst", "postinst", "prerm", "postrm", "control" ]:
@@ -308,7 +312,10 @@ python do_package_ipk () {
python () {
import bb
if bb.data.getVar('PACKAGES', d, True) != '':
- bb.data.setVarFlag('do_package_write_ipk', 'depends', 'ipkg-utils-native:do_populate_staging fakeroot-native:do_populate_staging', d)
+ deps = (bb.data.getVarFlag('do_package_write_ipk', 'depends', d) or "").split()
+ deps.append('ipkg-utils-native:do_populate_staging')
+ deps.append('fakeroot-native:do_populate_staging')
+ bb.data.setVarFlag('do_package_write_ipk', 'depends', " ".join(deps), d)
}
python do_package_write_ipk () {
diff --git a/classes/packaged-staging2.bbclass b/classes/packaged-staging2.bbclass
new file mode 100644
index 0000000000..29ce72d65c
--- /dev/null
+++ b/classes/packaged-staging2.bbclass
@@ -0,0 +1,229 @@
+#
+# Populate builds using prebuilt packages where possible to speed up builds
+# and allow staging to be reconstructed.
+#
+# To use it add that line to conf/local.conf:
+#
+# INHERIT = "packaged-staging"
+
+python () {
+ import bb
+ if not bb.data.inherits_class('native', d) and not bb.data.inherits_class('image', d) and not bb.data.inherits_class('cross', d) and not bb.data.inherits_class('sdk', d):
+ deps = bb.data.getVarFlag('do_populate_staging', 'depends', d) or ""
+ deps += " stagemanager-native:do_populate_staging"
+ bb.data.setVarFlag('do_populate_staging', 'depends', deps, d)
+
+ deps = bb.data.getVarFlag('do_prepackaged_stage', 'depends', d) or ""
+ deps += " ipkg-native:do_populate_staging ipkg-utils-native:do_populate_staging"
+ bb.data.setVarFlag('do_prepackaged_stage', 'depends', deps, d)
+ else:
+ bb.data.setVar("PSTAGING_DISABLED", "1", d)
+}
+
+export PSTAGING_DISABLED = "0"
+
+DEPLOY_DIR_PSTAGE = "${DEPLOY_DIR}/pstage"
+
+PSTAGE_BUILD_CMD = "${IPKGBUILDCMD}"
+PSTAGE_INSTALL_CMD = "ipkg-cl install -force-depends -f ${DEPLOY_DIR_PSTAGE}/ipkg-${MACHINE}.conf -o ${TMPDIR}"
+PSTAGE_UPDATE_CMD = "ipkg-cl update -f ${DEPLOY_DIR_PSTAGE}/ipkg-${MACHINE}.conf -o ${TMPDIR}"
+PSTAGE_REMOVE_CMD = "ipkg-cl remove -force-depends -f ${DEPLOY_DIR_PSTAGE}/ipkg-${MACHINE}.conf -o ${TMPDIR}"
+PSTAGE_LIST_CMD = "ipkg-cl list_installed -f ${DEPLOY_DIR_PSTAGE}/ipkg-${MACHINE}.conf -o ${TMPDIR}"
+PSTAGE_PKGNAME = "staging-${PN}_${PV}-${PR}_${MULTIMACH_ARCH}.ipk"
+
+PSTAGE_TMPDIR_STAGE = "${WORKDIR}/staging-pkg"
+
+do_clean_append() {
+ """
+ Clear the build and temp directories
+ """
+ bb.note("Uninstalling package from staging...")
+ path = bb.data.getVar("PATH", d, 1)
+ removecmd = bb.data.getVar("PSTAGE_REMOVE_CMD", d, 1)
+ removepkg = bb.data.expand("staging-${PN}", d)
+ ret = os.system("PATH=\"%s\" %s %s" % (path, removecmd, removepkg))
+ if ret != 0:
+ bb.note("Failure removing staging package")
+
+ stagepkg = bb.data.expand("${DEPLOY_DIR_PSTAGE}/${PSTAGE_PKGNAME}", d)
+ bb.note("Removing staging package %s" % stagepkg)
+ #os.system('rm -rf ' + stagepkg)
+}
+
+staging_helper () {
+ #assemble appropriate ipkg.conf
+ conffile=${DEPLOY_DIR_PSTAGE}/ipkg-${MACHINE}.conf
+ mkdir -p ${DEPLOY_DIR_PSTAGE}/pstaging_lists
+ if [ ! -e $conffile ]; then
+ ipkgarchs="${BUILD_ARCH} all any noarch ${TARGET_ARCH} ${PACKAGE_ARCHS} ${PACKAGE_EXTRA_ARCHS} ${MACHINE}"
+ priority=1
+ for arch in $ipkgarchs; do
+ echo "arch $arch $priority" >> $conffile
+ priority=$(expr $priority + 5)
+ done
+ echo "src oe-staging file:${DEPLOY_DIR_PSTAGE}" >> $conffile
+
+ OLD_PWD=`pwd`
+ cd ${DEPLOY_DIR_PSTAGE}
+ ipkg-make-index -p Packages .
+ cd ${OLD_PWD}
+
+ ${PSTAGE_UPDATE_CMD}
+ fi
+}
+
+python do_prepackaged_stage () {
+ import os
+
+ if bb.data.getVar("PSTAGING_DISABLED", d, 1) == "1":
+ bb.build.make_stamp("do_prepackaged_stage", d)
+ return
+
+ bb.note("Uninstalling any existing package from staging...")
+ path = bb.data.getVar("PATH", d, 1)
+ removecmd = bb.data.getVar("PSTAGE_REMOVE_CMD", d, 1)
+ removepkg = bb.data.expand("staging-${PN}", d)
+ lf = bb.utils.lockfile(bb.data.expand("${STAGING_DIR}/staging.lock", d))
+ ret = os.system("PATH=\"%s\" %s %s" % (path, removecmd, removepkg))
+ bb.utils.unlockfile(lf)
+ if ret != 0:
+ bb.note("Failure attempting to remove staging package")
+
+ stagepkg = bb.data.expand("${DEPLOY_DIR_PSTAGE}/${PSTAGE_PKGNAME}", d)
+
+ if os.path.exists(stagepkg):
+ bb.note("Following speedup\n")
+ path = bb.data.getVar("PATH", d, 1)
+ installcmd = bb.data.getVar("PSTAGE_INSTALL_CMD", d, 1)
+
+ bb.build.exec_func("staging_helper", d)
+
+ bb.debug(1, "Staging stuff already packaged, using that instead")
+ lf = bb.utils.lockfile(bb.data.expand("${STAGING_DIR}/staging.lock", d))
+ ret = os.system("PATH=\"%s\" %s %s" % (path, installcmd, stagepkg))
+ bb.utils.unlockfile(lf)
+ if ret != 0:
+ bb.note("Failure installing prestage package")
+
+ bb.build.make_stamp("do_prepackaged_stage", d)
+ bb.build.make_stamp("do_fetch", d)
+ bb.build.make_stamp("do_unpack", d)
+ bb.build.make_stamp("do_munge", d)
+ bb.build.make_stamp("do_patch", d)
+ bb.build.make_stamp("do_configure", d)
+ bb.build.make_stamp("do_qa_configure", d)
+ bb.build.make_stamp("do_rig_locales", d)
+ bb.build.make_stamp("do_compile", d)
+ bb.build.make_stamp("do_install", d)
+ bb.build.make_stamp("do_deploy", d)
+ bb.build.make_stamp("do_package", d)
+ bb.build.make_stamp("do_populate_staging", d)
+ bb.build.make_stamp("do_package_write_deb", d)
+ bb.build.make_stamp("do_package_write_ipk", d)
+ bb.build.make_stamp("do_package_write", d)
+ bb.build.make_stamp("do_package_stage", d)
+ bb.build.make_stamp("do_qa_staging", d)
+
+ else:
+ bb.build.make_stamp("do_prepackaged_stage", d)
+}
+do_prepackaged_stage[cleandirs] = "${PSTAGE_TMPDIR_STAGE}"
+do_prepackaged_stage[selfstamp] = "1"
+addtask prepackaged_stage before do_fetch
+
+populate_staging_preamble () {
+ if [ "$PSTAGING_DISABLED" != "1" ]; then
+ #mkdir -p ${DEPLOY_DIR_PSTAGE}
+
+ stage-manager -p ${STAGING_DIR} -c ${DEPLOY_DIR_PSTAGE}/stamp-cache-staging -u
+ stage-manager -p ${CROSS_DIR} -c ${DEPLOY_DIR_PSTAGE}/stamp-cache-cross -u
+ fi
+}
+
+populate_staging_postamble () {
+ if [ "$PSTAGING_DISABLED" != "1" ]; then
+ # list the packages currently installed in staging
+ ${PSTAGE_LIST_CMD} | awk '{print $1}' > ${DEPLOY_DIR_PSTAGE}/installed-list
+
+ set +e
+ stage-manager -p ${STAGING_DIR} -c ${DEPLOY_DIR_PSTAGE}/stamp-cache-staging -u -d ${PSTAGE_TMPDIR_STAGE}/staging
+ stage-manager -p ${CROSS_DIR} -c ${DEPLOY_DIR_PSTAGE}/stamp-cache-cross -u -d ${PSTAGE_TMPDIR_STAGE}/cross
+ set -e
+ fi
+}
+
+do_populate_staging[lockfiles] = "${STAGING_DIR}/staging.lock"
+do_populate_staging[dirs] =+ "${DEPLOY_DIR_PSTAGE}"
+python do_populate_staging_prepend() {
+ bb.build.exec_func("populate_staging_preamble", d)
+}
+
+python do_populate_staging_append() {
+ bb.build.exec_func("populate_staging_postamble", d)
+}
+
+
+staging_packager () {
+
+ mkdir -p ${PSTAGE_TMPDIR_STAGE}/CONTROL
+
+ echo "Package: staging-${PN}" > ${PSTAGE_TMPDIR_STAGE}/CONTROL/control
+ echo "Version: ${PV}-${PR}" >> ${PSTAGE_TMPDIR_STAGE}/CONTROL/control
+ echo "Description: ${DESCRIPTION}" >> ${PSTAGE_TMPDIR_STAGE}/CONTROL/control
+ echo "Section: ${SECTION}" >> ${PSTAGE_TMPDIR_STAGE}/CONTROL/control
+ echo "Priority: Optional" >> ${PSTAGE_TMPDIR_STAGE}/CONTROL/control
+ echo "Maintainer: ${MAINTAINER}" >> ${PSTAGE_TMPDIR_STAGE}/CONTROL/control
+ echo "Architecture: ${MULTIMACH_ARCH}" >> ${PSTAGE_TMPDIR_STAGE}/CONTROL/control
+ echo "Source: ${SRC_URI}" >> ${PSTAGE_TMPDIR_STAGE}/CONTROL/control
+
+ ${PSTAGE_BUILD_CMD} ${PSTAGE_TMPDIR_STAGE} ${DEPLOY_DIR_PSTAGE}
+ ${PSTAGE_INSTALL_CMD} ${DEPLOY_DIR_PSTAGE}/${PSTAGE_PKGNAME}
+}
+
+python do_package_stage () {
+ if bb.data.getVar("PSTAGING_DISABLED", d, 1) == "1":
+ return
+
+ bb.build.exec_func("read_subpackage_metadata", d)
+ packages = (bb.data.getVar('PACKAGES', d, 1) or "").split()
+ if len(packages) > 0:
+ stagepath = bb.data.getVar("PSTAGE_TMPDIR_STAGE", d, 1)
+ if bb.data.inherits_class('package_ipk', d):
+ ipkpath = os.path.join(stagepath, "deploy", "ipk")
+ bb.mkdirhier(ipkpath)
+ if bb.data.inherits_class('package_deb', d):
+ debpath = os.path.join(stagepath, "deploy", "deb")
+ bb.mkdirhier(debpath)
+
+ for pkg in packages:
+ pkgname = bb.data.getVar('PKG_%s' % pkg, d, 1)
+ if not pkgname:
+ pkgname = pkg
+ arch = bb.data.getVar('PACKAGE_ARCH_%s' % pkg, d, 1)
+ if not arch:
+ arch = bb.data.getVar('PACKAGE_ARCH', d, 1)
+ if not packaged(pkg, d):
+ continue
+ if bb.data.inherits_class('package_ipk', d):
+ srcname = bb.data.expand(pkgname + "_${PV}-${PR}_" + arch + ".ipk", d)
+ srcfile = bb.data.expand("${DEPLOY_DIR_IPK}/" + arch + "/" + srcname, d)
+ if not os.path.exists(srcfile):
+ bb.fatal("Package %s does not exist yet it should" % srcfile)
+ bb.copyfile(srcfile, ipkpath + "/" + srcname)
+ if bb.data.inherits_class('package_deb', d):
+ if arch == 'all':
+ srcname = bb.data.expand(pkgname + "_${PV}-${PR}_all.deb", d)
+ else:
+ srcname = bb.data.expand(pkgname + "_${PV}-${PR}_${DPKG_ARCH}.deb", d)
+ srcfile = bb.data.expand("${DEPLOY_DIR_DEB}/" + arch + "/" + srcname, d)
+ if not os.path.exists(srcfile):
+ bb.fatal("Package %s does not exist yet it should" % srcfile)
+ bb.copyfile(srcfile, debpath + "/" + srcname)
+ bb.build.exec_func("staging_helper", d)
+ lf = bb.utils.lockfile(bb.data.expand("${STAGING_DIR}/staging.lock", d))
+ bb.build.exec_func("staging_packager", d)
+ bb.utils.unlockfile(lf)
+}
+
+addtask package_stage after do_package_write_ipk do_package_write_deb do_package_write do_populate_staging before do_build
+
diff --git a/classes/pkgconfig.bbclass b/classes/pkgconfig.bbclass
index c795c8a709..d2176d8b39 100644
--- a/classes/pkgconfig.bbclass
+++ b/classes/pkgconfig.bbclass
@@ -15,8 +15,8 @@ def get_pkgconfig_mangle(d):
s += " -e 's:OELIBDIR:${STAGING_LIBDIR}:;'"
s += " -e 's:OEINCDIR:${STAGING_INCDIR}:;'"
s += " -e 's:OEDATADIR:${STAGING_DATADIR}:'"
- s += " -e 's:OEPREFIX:${STAGING_LIBDIR}/..:'"
- s += " -e 's:OEEXECPREFIX:${STAGING_LIBDIR}/..:'"
+ s += " -e 's:OEPREFIX:${STAGING_DIR_HOST}${layout_prefix}:'"
+ s += " -e 's:OEEXECPREFIX:${STAGING_DIR_HOST}${layout_exec_prefix}:'"
s += " -e 's:-L${WORKDIR}\S*: :g'"
s += " -e 's:-I${WORKDIR}\S*: :g'"
@@ -24,7 +24,7 @@ def get_pkgconfig_mangle(d):
do_install_append () {
for pc in `find ${D} -name '*.pc' -type f | grep -v -- '-uninstalled.pc$'`; do
- sed -i ${@get_pkgconfig_mangle(d)} -e 's:${D}::g' ${pc}
+ sed -i ${@get_pkgconfig_mangle(d)} -e 's:${D}::g' -e 's:${STAGING_LIBDIR}:${libdir}:g' -e 's:${STAGING_INCDIR}:${includedir}:g' -e 's:${STAGING_DIR_TARGET}:${prefix}:g' ${pc}
done
}
diff --git a/classes/rm_work.bbclass b/classes/rm_work.bbclass
index 8569148212..4efd39c557 100644
--- a/classes/rm_work.bbclass
+++ b/classes/rm_work.bbclass
@@ -15,8 +15,6 @@ do_rm_work () {
do
if [ `basename ${S}` = $dir ]; then
rm -rf $dir
- elif [ $dir != 'temp' ]; then
- rm -rf $dir
fi
done
}
diff --git a/classes/rootfs_deb.bbclass b/classes/rootfs_deb.bbclass
index 5571f699e7..935ef6e3f7 100644
--- a/classes/rootfs_deb.bbclass
+++ b/classes/rootfs_deb.bbclass
@@ -10,8 +10,8 @@ fakeroot rootfs_deb_do_rootfs () {
mkdir -p ${IMAGE_ROOTFS}/var/dpkg/info
mkdir -p ${IMAGE_ROOTFS}/var/dpkg/updates
- rm -f ${STAGING_DIR}${sysconfdir}/apt/sources.list.rev
- rm -f ${STAGING_DIR}${sysconfdir}/apt/preferences
+ rm -f ${STAGING_ETCDIR_NATIVE}/apt/sources.list.rev
+ rm -f ${STAGING_ETCDIR_NATIVE}/apt/preferences
> ${IMAGE_ROOTFS}/var/dpkg/status
> ${IMAGE_ROOTFS}/var/dpkg/available
# > ${STAGING_DIR}/var/dpkg/status
@@ -28,25 +28,27 @@ fakeroot rootfs_deb_do_rootfs () {
apt-ftparchive packages . | bzip2 > Packages.bz2
echo "Label: $arch" > Release
- echo "deb file:${DEPLOY_DIR_DEB}/$arch/ ./" >> ${STAGING_DIR}${sysconfdir}/apt/sources.list.rev
+ echo "deb file:${DEPLOY_DIR_DEB}/$arch/ ./" >> ${STAGING_ETCDIR_NATIVE}/apt/sources.list.rev
(echo "Package: *"
echo "Pin: release l=$arch"
echo "Pin-Priority: $((800 + $priority))"
- echo) >> ${STAGING_DIR}${sysconfdir}/apt/preferences
+ echo) >> ${STAGING_ETCDIR_NATIVE}/apt/preferences
priority=$(expr $priority + 5)
done
- tac ${STAGING_DIR}${sysconfdir}/apt/sources.list.rev > ${STAGING_DIR}${sysconfdir}/apt/sources.list
+ tac ${STAGING_ETCDIR_NATIVE}/apt/sources.list.rev > ${STAGING_ETCDIR_NATIVE}/apt/sources.list
- cat "${STAGING_DIR}${sysconfdir}/apt/apt.conf.sample" \
+ cat "${STAGING_ETCDIR_NATIVE}/apt/apt.conf.sample" \
| sed -e 's#Architecture ".*";#Architecture "${TARGET_ARCH}";#' \
- > "${STAGING_DIR}${sysconfdir}/apt/apt-rootfs.conf"
+ > "${STAGING_ETCDIR_NATIVE}/apt/apt-rootfs.conf"
- export APT_CONFIG="${STAGING_DIR}${sysconfdir}/apt/apt-rootfs.conf"
+ export APT_CONFIG="${STAGING_ETCDIR_NATIVE}/apt/apt-rootfs.conf"
export D=${IMAGE_ROOTFS}
export OFFLINE_ROOT=${IMAGE_ROOTFS}
export IPKG_OFFLINE_ROOT=${IMAGE_ROOTFS}
+ mkdir -p ${IMAGE_ROOTFS}/var/lib/dpkg/alternatives
+
apt-get update
_flag () {
diff --git a/classes/sdk.bbclass b/classes/sdk.bbclass
index 441da77bd0..63f12117eb 100644
--- a/classes/sdk.bbclass
+++ b/classes/sdk.bbclass
@@ -16,12 +16,36 @@ CFLAGS = "${BUILD_CFLAGS}"
CXXFLAGS = "${BUILD_CFLAGS}"
LDFLAGS = "${BUILD_LDFLAGS}"
+# Path prefixes
prefix = "${SDK_PREFIX}"
exec_prefix = "${prefix}"
-base_prefix = "${exec_prefix}"
+base_prefix = "${prefix}"
+
+# Base paths
+export base_bindir = "${prefix}/bin"
+export base_sbindir = "${prefix}/bin"
+export base_libdir = "${prefix}/lib"
+
+# Architecture independent paths
+export datadir = "${prefix}/share"
+export sysconfdir = "${prefix}/etc"
+export sharedstatedir = "${datadir}/com"
+export localstatedir = "${prefix}/var"
+export infodir = "${datadir}/info"
+export mandir = "${datadir}/man"
+export docdir = "${datadir}/doc"
+export servicedir = "${prefix}/srv"
+
+# Architecture dependent paths
+export bindir = "${prefix}/bin"
+export sbindir = "${prefix}/bin"
+export libexecdir = "${prefix}/libexec"
+export libdir = "${prefix}/lib"
+export includedir = "${prefix}/include"
+export oldincludedir = "${prefix}/include"
FILES_${PN} = "${prefix}"
FILES_${PN}-dbg += "${prefix}/.debug \
${prefix}/bin/.debug \
- ${prefix}/sbin/.debug \
"
+
diff --git a/classes/seppuku.bbclass b/classes/seppuku.bbclass
index 101f621303..834bee34b4 100644
--- a/classes/seppuku.bbclass
+++ b/classes/seppuku.bbclass
@@ -140,11 +140,11 @@ def seppuku_find_bug_report(debug_file, opener, query, product, component, bugna
if len(scanner.result()) == 0:
print >> debug_file, "Scanner failed to scan the html site"
print >> debug_file, "%(query)sproduct=%(product)s&component=%(component)s&short_desc_type=substring&short_desc=%(bugname)s" % vars()
- print >> debug_file, txt
+ #print >> debug_file, txt
return (False,None)
else: # silently pick the first result
print >> debug_file, "Result of bug search is "
- print >> debug_file, txt
+ #print >> debug_file, txt
(number,status) = scanner.result()[0]
return (not status in ["CLOS", "RESO", "VERI"],number)
@@ -237,8 +237,16 @@ def seppuku_create_attachment(debug, poster, attach_query, product, component, b
if not bug_number:
import bb
bb.note("Can't create an attachment, no bugnumber passed to method")
+ print >> debug, "Can't create an attachment, no bugnumber passed to method"
+ return False
+
+ if not attach_query:
+ import bb
+ bb.note("Can't create an attachment, no attach_query passed to method")
+ print >> debug, "Can't create an attachment, no attach_query passed to method"
return False
+
import urllib2
param = { "bugid" : bug_number, "action" : "insert", "data" : file, "description" : "Build log", "ispatch" : "0", "contenttypemethod" : "list", "contenttypeselection" : "text/plain", "comment" : text }
@@ -250,12 +258,16 @@ def seppuku_create_attachment(debug, poster, attach_query, product, component, b
return False
except Exception, e:
print e
- return False
+ print >> debug, "Got exception in poster.open( attach_query, param )"
+ print >> debug, "attach_query: %s param: %s" % (attach_query, param )
+ return False
- print >> debug, result.read()
+ txt = result.read()
if result.code != 200:
+ print >> debug, "Got bad return code (%s)" % result.code
return False
else:
+ print >> debug, "Got good return code (200)"
return True
@@ -361,11 +373,11 @@ python seppuku_eventhandler() {
if bug_number and file:
if not seppuku_create_attachment(debug_file, poster, attach, product, component, bug_number, text, file):
- print >> debug_file, "Failed to attach the build log for bug #%" % bug_number
+ print >> debug_file, "Failed to attach the build log for bug #%s" % bug_number
else:
print >> debug_file, "Created an attachment for '%s' '%s' '%s'" % (product, component, bug_number)
else:
- print >> debug_file, "Not trying to create an attachment for bug #%" % bug_number
+ print >> debug_file, "Not trying to create an attachment for bug #%s" % bug_number
return NotHandled
}
diff --git a/classes/setuptools.bbclass b/classes/setuptools.bbclass
new file mode 100644
index 0000000000..17c039bf33
--- /dev/null
+++ b/classes/setuptools.bbclass
@@ -0,0 +1,8 @@
+inherit distutils
+
+DEPENDS += "python-setuptools"
+
+DISTUTILS_INSTALL_ARGS = "--root=${D} \
+ --single-version-externally-managed \
+ --prefix=${prefix} \
+ --install-data=${datadir}"
diff --git a/classes/sip.bbclass b/classes/sip.bbclass
index a258fda629..6f77f460dc 100644
--- a/classes/sip.bbclass
+++ b/classes/sip.bbclass
@@ -1,8 +1,10 @@
# Build Class for Sip based Python Bindings
# (C) Michael 'Mickey' Lauer <mickey@Vanille.de>
#
-DEPENDS =+ "sip-native"
-RDEPENDS += "python-sip"
+
+# yes, python-sip is actually a build-time dependency, since
+# the recipe installs sip.h
+DEPENDS =+ "sip-native python-sip"
# default stuff, do not uncomment
# EXTRA_SIPTAGS = "-tWS_X11 -tQt_4_3_0"
@@ -34,8 +36,8 @@ sip_do_generate() {
for module in $MODULES
do
install -d ${module}/
- echo "calling 'sip4 -I sip -I ${STAGING_SIPDIR} ${SIPTAGS} ${FEATURES} -c ${module} -b ${module}/${module}.pro.in sip/${module}/${module}mod.sip'"
- sip4 -I ${STAGING_SIPDIR} -I sip ${SIPTAGS} ${FEATURES} -c ${module} -b ${module}/${module}.sbf \
+ echo "calling 'sip -I sip -I ${STAGING_SIPDIR} ${SIPTAGS} ${FEATURES} -c ${module} -b ${module}/${module}.pro.in sip/${module}/${module}mod.sip'"
+ sip -I ${STAGING_SIPDIR} -I sip ${SIPTAGS} ${FEATURES} -c ${module} -b ${module}/${module}.sbf \
sip/${module}/${module}mod.sip || die "Error calling sip on ${module}"
cat ${module}/${module}.sbf | sed s,target,TARGET, \
| sed s,sources,SOURCES, \
diff --git a/classes/siteinfo.bbclass b/classes/siteinfo.bbclass
index c41a3ff369..a3b67b5798 100644
--- a/classes/siteinfo.bbclass
+++ b/classes/siteinfo.bbclass
@@ -25,6 +25,7 @@ def get_siteinfo_list(d):
"armeb-linux-gnueabi": "endian-big bit-32 common-glibc arm-common armeb-linux",\
"armeb-linux-uclibc": "endian-big bit-32 common-uclibc arm-common",\
"armeb-linux-uclibcgnueabi": "endian-big bit-32 common-uclibc arm-common armeb-linux-uclibc",\
+ "arm-darwin": "endian-little bit-32 common-darwin",\
"arm-linux": "endian-little bit-32 common-glibc arm-common",\
"arm-linux-gnueabi": "endian-little bit-32 common-glibc arm-common arm-linux",\
"arm-linux-uclibc": "endian-little bit-32 common-uclibc arm-common",\
diff --git a/classes/tmake.bbclass b/classes/tmake.bbclass
index 05b82e496d..dbd0bf2763 100644
--- a/classes/tmake.bbclass
+++ b/classes/tmake.bbclass
@@ -54,7 +54,7 @@ python tmake_do_createpro() {
}
tmake_do_configure() {
- paths="${STAGING_DATADIR}/tmake/qws/${TARGET_OS}-${TARGET_ARCH}-g++ $STAGING_DIR/share/tmake/$OS-g++"
+ paths="${STAGING_DATADIR}/tmake/qws/${TARGET_OS}-${TARGET_ARCH}-g++ ${STAGING_DATADIR}/tmake/$OS-g++"
if (echo "${TARGET_ARCH}"|grep -q 'i.86'); then
paths="${STAGING_DATADIR}/tmake/qws/${TARGET_OS}-x86-g++ $paths"
fi
diff --git a/classes/xlibs.bbclass b/classes/xlibs.bbclass
index e797748770..ae8f928f1e 100644
--- a/classes/xlibs.bbclass
+++ b/classes/xlibs.bbclass
@@ -6,10 +6,10 @@ XLIBS_CVS = "${FREEDESKTOP_CVS}/xlibs"
inherit autotools pkgconfig
do_stage() {
- oe_runmake install prefix=${STAGING_DIR} \
+ oe_runmake install prefix=${STAGING_DIR_HOST}${layout_prefix} \
bindir=${STAGING_BINDIR} \
includedir=${STAGING_INCDIR} \
libdir=${STAGING_LIBDIR} \
datadir=${STAGING_DATADIR} \
- mandir=${STAGING_DATADIR}/man
+ mandir=${STAGING_DIR_HOST}${layout_mandir}
}
diff --git a/conf/bitbake.conf b/conf/bitbake.conf
index 9e10e7405f..123d9ce7a7 100644
--- a/conf/bitbake.conf
+++ b/conf/bitbake.conf
@@ -107,7 +107,18 @@ DATETIME = "${DATE}${TIME}"
# python-native should be here but python relies on building
# its own in staging
-ASSUME_PROVIDED = "cvs-native svn-native bzip2-native diffstat-native patch-native python-native-runtime perl-native-runtime texinfo-native util-linux-native"
+ASSUME_PROVIDED = "\
+ bc-native \
+ bzip2-native \
+ cvs-native \
+ diffstat-native \
+ patch-native \
+ perl-native-runtime \
+ python-native-runtime \
+ svn-native \
+ texinfo-native \
+ util-linux-native \
+ "
##################################################################
# Package default variables.
@@ -118,6 +129,8 @@ PV = "${@bb.parse.BBHandler.vars_from_file(bb.data.getVar('FILE',d),d)[1] or '1.
PR = "${@bb.parse.BBHandler.vars_from_file(bb.data.getVar('FILE',d),d)[2] or 'r0'}"
PF = "${PN}-${EXTENDPE}${PV}-${PR}"
EXTENDPE = "${@['','${PE\x7d_'][bb.data.getVar('PE',d,1) > 0]}"
+EXTENDPEVER = "${@['','${PE\x7d:'][bb.data.getVar('PE',d,1) > 0]}"
+DEBPV = "${EXTENDPEVER}${PV}-${PR}"
P = "${PN}-${PV}"
# Package info.
@@ -163,14 +176,14 @@ FILES_${PN}-dev = "${includedir} ${libdir}/lib*.so ${libdir}/*.la \
${base_libdir}/*.a ${base_libdir}/*.o ${datadir}/aclocal"
SECTION_${PN}-dev = "devel"
ALLOW_EMPTY_${PN}-dev = "1"
-RDEPENDS_${PN}-dev = "${@['', '${PN} (>= ${PV})'][packaged(bb.data.getVar('PN', d, 1), d) == True]}"
+RDEPENDS_${PN}-dev = "${@['', '${PN} (= ${DEBPV})'][packaged(bb.data.getVar('PN', d, 1), d) == True]}"
FILES_${PN}-dbg = "${bindir}/.debug ${sbindir}/.debug ${libexecdir}/.debug ${libdir}/.debug \
${base_bindir}/.debug ${base_sbindir}/.debug ${base_libdir}/.debug ${libdir}/${PN}/.debug \
${libdir}/matchbox-panel/.debug"
SECTION_${PN}-dbg = "devel"
ALLOW_EMPTY_${PN}-dbg = "1"
-RRECOMMENDS_${PN}-dbg = "${@['', '${PN} (>= ${PV})'][packaged(bb.data.getVar('PN', d, 1), d) == True]}"
+RRECOMMENDS_${PN}-dbg = "${@['', '${PN} (= ${DEBPV})'][packaged(bb.data.getVar('PN', d, 1), d) == True]}"
FILES_${PN}-locale = "${datadir}/locale"
@@ -252,7 +265,7 @@ IMAGE_LINK_NAME = "${IMAGE_BASENAME}-${MACHINE}"
IMAGE_CMD = ""
IMAGE_CMD_jffs2 = "mkfs.jffs2 -x lzo --root=${IMAGE_ROOTFS} --faketime --output=${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.jffs2 ${EXTRA_IMAGECMD}"
-IMAGE_CMD_yaffs2 = "mkyaffs2image 1 ${IMAGE_ROOTFS} ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.yaffs2 ${EXTRA_IMAGECMD}"
+IMAGE_CMD_yaffs2 = "mkyaffs2image ${EXTRA_IMAGECMD} ${IMAGE_ROOTFS} ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.yaffs2"
IMAGE_CMD_cramfs = "mkcramfs ${IMAGE_ROOTFS} ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.cramfs ${EXTRA_IMAGECMD}"
IMAGE_CMD_ext2 = "genext2fs -b ${IMAGE_ROOTFS_SIZE} -d ${IMAGE_ROOTFS} ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.ext2 ${EXTRA_IMAGECMD}"
IMAGE_CMD_ext2.gz = "rm -rf ${DEPLOY_DIR_IMAGE}/tmp.gz && mkdir ${DEPLOY_DIR_IMAGE}/tmp.gz; genext2fs -b ${IMAGE_ROOTFS_SIZE} -d ${IMAGE_ROOTFS} ${DEPLOY_DIR_IMAGE}/tmp.gz/${IMAGE_NAME}.rootfs.ext2 ${EXTRA_IMAGECMD}; gzip -f -9 ${DEPLOY_DIR_IMAGE}/tmp.gz/${IMAGE_NAME}.rootfs.ext2; mv ${DEPLOY_DIR_IMAGE}/tmp.gz/${IMAGE_NAME}.rootfs.ext2.gz ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.ext2.gz; rmdir ${DEPLOY_DIR_IMAGE}/tmp.gz"
@@ -268,7 +281,7 @@ IMAGE_CMD_cpio.gz = "cd ${IMAGE_ROOTFS} && (find . | cpio -o -H newc | gzip -c -
EXTRA_IMAGECMD = ""
EXTRA_IMAGECMD_jffs2 = ""
-EXTRA_IMAGECMD_yaffs2 = ""
+EXTRA_IMAGECMD_yaffs2 = "1"
EXTRA_IMAGECMD_squashfs = ""
EXTRA_IMAGECMD_squashfs-lzma = ""
@@ -291,19 +304,20 @@ EXTRA_IMAGEDEPENDS = ""
CROSS_DIR = "${TMPDIR}/cross"
CROSS_DATADIR = "${CROSS_DIR}/share"
-export PATH_prepend = "${STAGING_BINDIR_CROSS}:${STAGING_BINDIR_NATIVE}:${CROSS_DIR}/bin:"
+export PATH_prepend = "${STAGING_BINDIR_CROSS}:${STAGING_DIR_NATIVE}${layout_sbindir}:${STAGING_BINDIR_NATIVE}:${CROSS_DIR}/bin:${STAGING_DIR_NATIVE}${layout_base_sbindir}:"
##################################################################
# Build utility info.
##################################################################
CCACHE = "${@bb.which(bb.data.getVar('PATH', d), 'ccache') and 'ccache '}"
+TOOLCHAIN_OPTIONS = ""
-export CC = "${CCACHE}${HOST_PREFIX}gcc ${HOST_CC_ARCH}"
-export CXX = "${CCACHE}${HOST_PREFIX}g++ ${HOST_CC_ARCH}"
-export F77 = "${CCACHE}${HOST_PREFIX}g77 ${HOST_CC_ARCH}"
-export CPP = "${HOST_PREFIX}gcc -E"
-export LD = "${HOST_PREFIX}ld"
+export CC = "${CCACHE}${HOST_PREFIX}gcc ${HOST_CC_ARCH}${TOOLCHAIN_OPTIONS}"
+export CXX = "${CCACHE}${HOST_PREFIX}g++ ${HOST_CC_ARCH}${TOOLCHAIN_OPTIONS}"
+export F77 = "${CCACHE}${HOST_PREFIX}g77 ${HOST_CC_ARCH}${TOOLCHAIN_OPTIONS}"
+export CPP = "${HOST_PREFIX}gcc -E${TOOLCHAIN_OPTIONS}"
+export LD = "${HOST_PREFIX}ld${TOOLCHAIN_OPTIONS}"
export CCLD = "${CC}"
export AR = "${HOST_PREFIX}ar"
export AS = "${HOST_PREFIX}as"
@@ -441,15 +455,16 @@ SRC_URI = "file://${FILE}"
##################################################################
SHELLRCCMD = "bash --rcfile $TERMRCFILE"
+export SHELLCMDS = "${SHELLRCCMD}"
# Some common terminal programs to choose from
GNOME_TERMCMD = 'gnome-terminal --disable-factory -t "$TERMWINDOWTITLE"'
-GNOME_TERMCMDRUN = '${GNOME_TERMCMD} -x ${SHELLRCCMD}'
+GNOME_TERMCMDRUN = '${GNOME_TERMCMD} -x $SHELLCMDS'
SCREEN_TERMCMD = 'screen -D -m -t "$TERMWINDOWTITLE"'
-SCREEN_TERMCMDRUN = '${SCREEN_TERMCMD} ${SHELLRCCMD}'
+SCREEN_TERMCMDRUN = '${SCREEN_TERMCMD} $SHELLCMDS'
XTERM_TERMCMD = 'xterm -T "$TERMWINDOWTITLE"'
-XTERM_TERMCMDRUN = '${XTERM_TERMCMD} -e ${SHELLRCCMD}'
+XTERM_TERMCMDRUN = '${XTERM_TERMCMD} -e $SHELLCMDS'
KONSOLE_TERMCMD = 'konsole -T "$TERMWINDOWTITLE"'
-KONSOLE_TERMCMDRUN = '${KCONSOLE_TERMCMD} -e ${SHELLRCCMD}'
+KONSOLE_TERMCMDRUN = '${KONSOLE_TERMCMD} -e $SHELLCMDS'
# Set a default
TERMCMD ?= "${GNOME_TERMCMD}"
diff --git a/conf/checksums.ini b/conf/checksums.ini
index 19ffcdb42e..afa2a95e2b 100644
--- a/conf/checksums.ini
+++ b/conf/checksums.ini
@@ -322,6 +322,10 @@ sha256=325fdc7351a08bd8d811e7fb53c41bff11764648ab1a671abd910afec946b38a
md5=44c2226eff0f3fc1f2fedaa1ce596533
sha256=0b2245250d5e800d1b6b6a2c5ca9e697052cae00833bf90ca0488f5bffd38477
+[http://www.python.org/ftp/python/2.5.1/Python-2.5.1.tar.bz2]
+md5=70084ffa561660f07de466c2c8c4842d
+sha256=d0b5d4dce02c56d2eb0728db3ebd63afc3dae906d158be6532ae4480d311e167
+
[http://jerakeen.org/files/PythonDaap-0.4.tar.gz]
md5=f7672bfd563787a76fb7e9a43c062f18
sha256=5318946df77937e0b601c95a198790f9ba52d4afb4eb153480289350182bb739
@@ -886,6 +890,10 @@ sha256=2cb6a15a9fff56c0d24f3a95b7f67c52436a88716e640c7f7afd48c9a5cbd740
md5=6acdff79afa2631f765f3bbbc3e25a74
sha256=89ae5fd08018679b80cee201e1c1350d86db73bdcf6718aabb4bd3ea86f93ec9
+[http://avahi.org/download/avahi-0.6.21.tar.gz]
+md5=9cc68f79c50c9dd9e419990c3c9b05b9
+sha256=d817c35f43011861476eab02eea14edd123b2bc58b4408d9d9b69b0c39252561
+
[http://downloads.sourceforge.net/avetanabt/avetanaBluetooth-20060413.tgz]
md5=3cb3be404950ef08e51adbe59c7b811e
sha256=c3648f02dd7d4dc8c0ef9a48089fda4ca47b81a977c838b17f55e6abf7f51447
@@ -1098,6 +1106,10 @@ sha256=00dbb7513115d2fcdb7ca3bd777e4bc38e5ed80964fec2d1454e4acadc950094
md5=9e091f2ce00b906c4c456fff24e69e55
sha256=fe6de9ccfab9e9fbdbe1a2cbe4a9ea771d1a2efc7f2122a2350214394587ff39
+[http://bluez.sourceforge.net/download/bluez-libs-3.20.tar.gz]
+md5=9d7e02ea9a4c43d8f030500f282ee8bf
+sha256=cf37ac1eb3ec0c473e527f11f068fc5fcc7452d688acc89a0e52553f51fc36bb
+
[http://bluez.sourceforge.net/download/bluez-libs-3.4.tar.gz]
md5=8b73b0ccbcef6a4270468487b1309990
sha256=6c40f8b2dcf9359cc7f6afa803fc5744652c1d95669c134b975758a8748a87e8
@@ -1118,6 +1130,10 @@ sha256=8e722a732f53c070ad68b7a70f8e9568eeb186558af68334571917a11f40cb0e
md5=2b6b4d519b8f75ef3990122934e660ba
sha256=f8f242c6835ae826bf1f4eaee6c50d47d6208715e45450ba42c1769094c3f296
+[http://bluez.sourceforge.net/download/bluez-utils-3.20.tar.gz]
+md5=ef596746d656ed034ed64596f72ef3c2
+sha256=5ed4245e31fa43789a3090d02a25ed90eaee95819cce30cda59d4d09f4fc0db0
+
[http://bluez.sourceforge.net/download/bluez-utils-3.4.tar.gz]
md5=f63b440396baee7dee9259395a205d48
sha256=44a50104072a39e4f941ab68b6ffce5feb2fec7a94f3dd32f0945939d09eca39
@@ -1206,6 +1222,10 @@ sha256=49020d3cc60b58a95fc94b5333c3c4a3b630c82287b08a3a94ad5a74cfe7bd75
md5=2cab42847c4654e58c4d0ba114bfe2c2
sha256=3fd05b5b77b9913b93036b48ed28d23d794e67660ba2d2ad63b0b7701b22181d
+[http://downloads.sourceforge.net/bridge/bridge-utils-1.2.tar.gz]
+md5=1e6cff57ac90d7ab984d9512fdd9f2dd
+sha256=c93b9fab6b12a80bcf69114aab66d1d298455e9269c44f9e5f6430c142f9e349
+
[http://www.holtmann.org/linux/bluetooth/bt950-0.1.tar.gz]
md5=41d6a2dfe88693b5ec999d9ae4e97aac
sha256=e3ff9a7f6dead90d55f1a4a2b1277e3bf5f0ec44ccb6ba8f375acbbedb1263c1
@@ -1678,6 +1698,10 @@ sha256=fc8dcda5a933c370c15c832bf1e7316a0690f473fdd6000454d233edaa33bc23
md5=37a1de15c4300ca9413d39d2bcea9b36
sha256=2e833e81d43f6294e5bd0d1776d68bd147bdab31e86c7544dc1462e44db9bfa2
+[http://curl.haxx.se/download/curl-7.16.4.tar.bz2]
+md5=ffa6d1f4e28ca493a43f9dc17882c4d8
+sha256=45c69529126b6ff50e7ebe2c2b8157a4ecb405174a1349234903021e9ac5c87b
+
[http://www.blackie.dk/Zaurus/custominput/custominput-1.1.0.tgz]
md5=7a0f97339a1caed5695715581306b83e
sha256=9af88287720701691b58ee13898d248dd9afc63d9c593eb79c1149cc2a7f4e92
@@ -1818,6 +1842,14 @@ sha256=d0fbedef20fb0843318d60551023631176b27ceb1e11de7468a971770d0e048d
md5=2f8c073084c27d0df40e747eda7f79ba
sha256=22b1f489afef6849919220591ffc51615b9cddbea61b66b43791fdeebb4dbe09
+[http://downloads.sourceforge.net/dejavu/dejavu-ttf-2.18.tar.bz2]
+md5=78012718a15d43e2c4952db7409c9e7e
+sha256=792776053c5842c4335d3f17d9f0c789063ad34c4fc0e2ccabbdefbd84f14726
+
+[http://freedesktop.org/software/desktop-file-utils/releases/desktop-file-utils-0.14.tar.gz]
+md5=e0b5057a4e3166f34635ac6f27c712c0
+sha256=97856d2621d4e3273340b7f1172c2e074c74263629b05bde0f0f077425ec0699
+
[http://freedesktop.org/Software/desktop-file-utils/releases/desktop-file-utils-0.3.tar.gz]
md5=40a93def0f37f1577c5edc638fcb35a5
sha256=6e932e73818697ea9ec8909bed535a87ba34651031bbbedb63a42e4cdc423284
@@ -2454,6 +2486,10 @@ sha256=5090d5123ea642842d04d3f93a821e1372e5d9e434c74c08ee2483cc150a6273
md5=402bdb26356791bd5d277099adacc006
sha256=c0810fb3ddb6cb73c9ff045965e542af6e3eaa7f2995b3037181766d26d5e6e7
+[ftp://ftp.fi.debian.org/pub/gentoo/distfiles/file-4.21.tar.gz]
+md5=9e3503116f4269a1be70220ee2234b0e
+sha256=6f5644d56cc603138533158076a6cb41cd33c33d27e5310cb76cb6576151ca67
+
[http://ftp.gnome.org/pub/gnome/sources/file-roller/2.6/file-roller-2.6.1.tar.gz]
md5=68a1b645b2e44227f7aca604fd42f8d1
sha256=21e68eeb291ab5a9f4d618f2985c16c26cdfeb0f0f37d3b88550446678dab30a
@@ -3142,6 +3178,10 @@ sha256=7f55ec02b5ab9e86c64f5718be64854fd9c64899908e580e1a9759421ac3b436
md5=c4f72d96f62ae97c6e8d5cdb4afd55ca
sha256=907138a7537ff8cef5a9bb258cbba3e32fa46b240f66cd16d5bf530e081ac6b9
+[http://www.kernel.org/pub/software/scm/git/git-1.5.2.3.tar.bz2]
+md5=8bb8995f098826154178d5f2d926b6c6
+sha256=d7a92ec68849cc8b333f10263ea3c9c19ccc99fe9b581b5769fb729b14ac54ac
+
[http://www.kernel.org/pub/software/scm/git/git-1.5.3.tar.bz2]
md5=798e5784670e0a3e0daaea048e60851d
sha256=aeef281072cf3e045b73e7047bd9830a71128b828920b3d389a5b7b7cbd0beff
@@ -3906,6 +3946,10 @@ sha256=14fb095d231343a576da5e8aa7807b09cd7bde2df59a5a569495dc03a434d178
md5=875ed73f43584cd3ece4a7ac28dd692a
sha256=a7ec60003a96975523598c2ef5f2927c9a362e689e7159b268c7fe431754635a
+[http://gpe.linuxtogo.org/download/source/gpe-scap-1.3.tar.bz2]
+md5=7ba3d2592585c8bcf9d3bf1aafeefef3
+sha256=609e24aa1413b1053ee3fd42c36c6ccf05d8067867021511c7d50d4829875b44
+
[http://gpe.linuxtogo.org/download/source/gpe-session-scripts-0.67.tar.gz]
md5=774c64ed54455f1297ecbeeffdc52eed
sha256=da051f5049d44415fff02b48368db4e3e3b6154135a50f990844d73896d18e19
@@ -5722,10 +5766,6 @@ sha256=494636571ae72af7524c3a7703324ef68dbf755f753054317489fe79ac895ae0
md5=bdcdb1b8ca13dba897c0a2138d1643f5
sha256=694ea8352edf845b0a7dc0c2e0e990bcb8507f64e405edc048ad115c6578e5f7
-[http://gpephone.linuxtogo.org/download/gpephone/libabenabler-0.1/libabenabler-0.1.tar.bz2]
-md5=49fe67302fd76543a7574a73c01395ba
-sha256=512674419ac2013d11eccf4f106d6cfc719c9c2b49215a8f0e89c5327d176a84
-
[http://search.belnet.be/packages/lineox/4.0/updates/SRPMS/libaio-0.3.103-3.src.rpm]
md5=3d6ca28cb7cf73ca1d9fe902924bdc84
sha256=9f578643db9fff6ae088a492e6a4aca3cac4c2cbc51afce551687f4f0d36465f
@@ -5850,6 +5890,10 @@ sha256=9aa09bb2de91727de68ee57b1a1e4c03059cbbc7166f9f181ee8b5c2792e724d
md5=6812a5e4063b5016f25e9a0cebbd3dd9
sha256=83004489cce844d4f9180fb74cc4781bb79e31aecf60d529608a510cf114484e
+[http://0pointer.de/lennart/projects/libdaemon/libdaemon-0.11.tar.gz]
+md5=b99a608ae9a762e809b667bfa20d86dd
+sha256=d54efe38aad450363c46eaa32b1bf29cbd3b7f8c870c0ffcaec8891c22681eb0
+
[http://0pointer.de/lennart/projects/libdaemon/libdaemon-0.12.tar.gz]
md5=76596823cc1a6d1cdf7779b782ff0ee6
sha256=39e7c9f8644d1af310d076c1a5cc648040033e4724e7edfd85eb983ad88336d0
@@ -6226,6 +6270,10 @@ sha256=7baf0a33a717c5d5b24faf592ba16fc5e962f1537f46b11f6ed003010a8ff1e9
md5=aae34a35b00c547f2e41c747cf87f8b7
sha256=d815a1a5445fc26de5c7b10192acb77cf4277a100124842b616f85a5a4fbfe3b
+[ftp://ftp.gnupg.org/gcrypt/libgpg-error/libgpg-error-1.4.tar.gz]
+md5=86e60e9a03205fb706e99be101a2387e
+sha256=fff67ec5ffc93cf91fc62350a19a9f677c9bc6eb2730395d22f9d40c754ed619
+
[http://downloads.sourceforge.net/gphoto/libgphoto2-2.1.4.tar.bz2]
md5=a201650482bbc2edbd948449cf4d3f5a
sha256=98af9747179c4d284104fc155b624c6cda4e91a554de0a04e6a6878c0e852c63
@@ -6302,10 +6350,6 @@ sha256=383e0a22a537f653b8d41688277560f95678a042967198085ec7caa1a5cc2f4c
md5=2f0882a711759113b2388a790abe8fd8
sha256=68dd467cf8bd54283da874af54ac35de58b88444371ea48bb5cef289a0942981
-[http://gpephone.linuxtogo.org/download/gpephone/libiac-0.1/libiac-0.1.tar.bz2]
-md5=cf829bb82f84728194c64a41e9f1cf32
-sha256=10197df9daee806453c5a7e99e538d7eac0421796f2a9ae114d4369d85fcf3af
-
[ftp://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.11.tar.gz]
md5=b77a17e4a5a817100ad4b2613935055e
sha256=fbf5b9a63ea6e3abebfabc04506f0e18a2860071031e34ea4ad4f450b8c43d4b
@@ -6558,6 +6602,10 @@ sha256=f20d19b1f32e4ee465169ff1e17a3755bfda8c697cfed11fe36cbf6959c80441
md5=b0626ad59004fe5767ddd2ce743a2271
sha256=6a6568bc082c266864687674707628d1531e86cffad439af72b865ac3169c322
+[http://www.tcpdump.org/release/libpcap-0.9.6.tar.gz]
+md5=2e1b5e983654c1d5991450e3e0e525ca
+sha256=cac67ef8837a2bdd20d7fb5e990e233d80a9ff398cf08a62bb7fac068a419b3e
+
[http://www.xmailserver.org/libpcl-1.4.tar.gz]
md5=6d63c462911349de80109c0161ed6d37
sha256=3c64155a9218c0367f3b0afd4bd8a4a46cc467ad6c85e98952a4ef517b183686
@@ -6578,6 +6626,10 @@ sha256=7d06103ce32bffa39730d1c12c4b4dcfd50a8f1c18d2462807cfe7c0c3ca0e64
md5=7a1ca4f49bcffdec60d50f48460642bd
sha256=3a14200862cf4fe59fd66340364537d9973b032b7831b7fe33eb827baebc0019
+[http://downloads.sourceforge.net/libpng/libpng-1.2.20.tar.bz2]
+md5=8c186d9da3d011e2c3076b28f9c6be7b
+sha256=f5e1037be2cb2a47a7f50181a42fac289a662e78d0ec4c68971f557d5451b8c2
+
[http://downloads.sourceforge.net/libpng/libpng-1.2.8.tar.bz2]
md5=00cea4539bea4bd34cbf8b82ff9589cd
sha256=9bec729a1e77d8bbc5800b14aa81f09290aa18daa40f344103f2c0d1d681531b
@@ -6710,6 +6762,10 @@ sha256=d98203f017c6e1de7dca2037c533000705fc86b12f29694ddb4db17854e5498a
md5=5fe69ba13bf35d505b733247032a8a64
sha256=222803a98d1e86ac7eee9491beb5fbf30e259a3c74cd4166bda1796374c26cd1
+[http://downloads.sourceforge.net/libspiff/libspiff-0.7.2.tar.bz2]
+md5=3b291762e0149c975dab9f5ea15bad15
+sha256=6b498c1070e17f665625dc3e5113e8af55da5ce3d4d5abf0ae3fec344b8208d4
+
[http://www.0xbadc0de.be/libssh/libssh-0.11.tgz]
md5=ad703c4702646c83ca4fcace92c220d3
sha256=94ca32ac10615a7c0ba19180e67f2e40e2bfa4cc8de6ceb2a3a54d2dd83141cb
@@ -6810,6 +6866,10 @@ sha256=d03295e5cb22ed7d086ce1ce754c498ed6bc2388c45e4547417d922580d3cd7c
md5=f7aad7b8dad79b38d3055d84c3838e2c
sha256=e881c527398904f450f3983dcebb71094b5f558f823fe57d0af5a4c1fa6f6f7f
+[http://ftp.gnome.org/pub/GNOME/sources/libwnck/2.13/libwnck-2.13.5.tar.bz2]
+md5=cb2da2795f517c713ec98560d078a102
+sha256=ce959b7349de056205e992b05c9c914994bc269d2b1d02de85eacd398263aab6
+
[http://ftp.gnome.org/pub/GNOME/sources/libwnck/2.8/libwnck-2.8.1.tar.bz2]
md5=c0a5a8478064287e167c15e3ec0e82a1
sha256=e9d15538a0bb97f6a440b23a5b372c41387773065dac69cab9fd1dc1d22a432b
@@ -6946,6 +7006,10 @@ sha256=d337faebd64ddb8c52cde23df8469e1b3c65545af5f939e9bb4be9eeb9658c8a
md5=4ea2dc22a23bf2aa570f868aa86357f8
sha256=ce92f00031c885e04cb65ea76c4675b07aa98af9607572fb0d68180c34bf5346
+[ftp://xmlsoft.org/libxml2/libxslt-1.1.21.tar.gz]
+md5=59fe34e85692f71df2a38c2ee291b3ca
+sha256=ccefd4ceb29bb729dcaa9a9d4a86654a9134adfd29bdd72be1a9d3726efb54e0
+
[http://www.lighttpd.net/download/lighttpd-1.4.13.tar.gz]
md5=d775d6478391b95d841a1018c8db0b95
sha256=62d5997fdb41afa9400adcdb040d04a1f5fa950045df96e3e3f593e8f0de5739
@@ -7506,6 +7570,10 @@ sha256=f54035309b2a4d45a90979c2b56ab2488546826862062bfc22cd7e7ed8b5ebf6
md5=42187ec7b3db21ba237a3a2858bf9acd
sha256=fdf06c44ff8d7bc1d1a33d890e1dad8962d2a83c4521abce8381b6d1a4429cf2
+[http://projects.o-hand.com/matchbox/sources/matchbox-window-manager/1.2/matchbox-window-manager-1.2.tar.bz2]
+md5=3e158dcf57823b55c926d95b245500fb
+sha256=81a23a4af797cf350759fd5ac738797015a66dd5dba2f3d9f3c6908506c1ceff
+
[http://openembedded.org/dl/matrixssl-1-1-1.tar.gz]
md5=0f867a7b5ce70650f36caf00c4941ebf
sha256=b46ade42d080851ba4c5a10d3c520eb169fc33ab5c259ee8ca147eff57741246
@@ -8066,6 +8134,10 @@ sha256=83a15eb99bb7a895d52e31be1c1548789a8bc29e83d30e758cf034a6627a1184
md5=a5a9aa63205e624da8468e35722b08bf
sha256=a187976c1957a7a0e17014ed97cbb4341f6898d5f60301f1b0c37e52188ebd13
+[http://www.galago-project.org/files/releases/source/notification-daemon/notification-daemon-0.3.7.tar.gz]
+md5=7fa369bff1031acbe4ca41f03bee7d02
+sha256=53d2f92c3d14423b49c2ff077855cf3987d38def963c82fd26fba5de379ca540
+
[http://hauppauge.lightpath.net/de/nova-pci218c.exe]
md5=139a1ed50a1a12e47b1f7deedf4f40c3
sha256=4310a3a526ae5461e17f57353fc29f71d13820a215eaa62c629190cc2a026173
@@ -8206,6 +8278,10 @@ sha256=5adb9b2c2002650e15216bf94ed9db9541d9a17c96fcd876784861a8890bc92b
md5=7e9880ac20a9b9db0d3fea30a9ff3d46
sha256=4ba757d6c933e7d075b6424124d92d197eb5d91e4a58794596b67f5f0ca21d4f
+[ftp://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-4.6p1.tar.gz]
+md5=6a7fa99f44d9e1b5b04d15256e1405bb
+sha256=7bbe277faa80c8d8d9cb96111db65fc0007d451784cc459207cd46b746a6f23a
+
[http://www.openssl.org/source/openssl-0.9.7e.tar.gz]
md5=a8777164bca38d84e5eb2b1535223474
sha256=25121b5dbd2b830929519325e033086ce45861cff2d0000d928f48261b1e0b7c
@@ -9370,7 +9446,7 @@ sha256=abc37774d327a9b1d1d35e223f014c7e92168cd6c7baf66156badca68f8f1440
md5=9519eccf0638c9962f73a7b20da77e0e
sha256=8fdbc7da376b22796879d6e3b756f71a8800ed1b35fc88aa76cddffd6f1fd883
-[ftp://ftp.trolltech.com/pub/qt/source/qtopia-core-opensource-src-4.3.2.tar.gz]
+[ftp://ftp.trolltech.com/qt/source/qtopia-core-opensource-src-4.3.2.tar.gz]
md5=70b729dd5dd8b2b432d685918e1971f1
sha256=38af7b39e7805d8e3ba81091aa29af8bd38ce7cbbf8e721c8bb7ab810c38d963
@@ -10094,6 +10170,10 @@ sha256=e81d1176960a14459f9ff492b2c4fb1e2b55d0b2c82fd225dbc37afd02334256
md5=2feec9b429f9298c9f288420c8b449f8
sha256=0ad86c4b26cd687122b158bf848f0a07d7cd644033d15c4f43b6d643bd74cd81
+[http://www.sqlite.org/sqlite-3.5.2.tar.gz]
+md5=b4f631268d811189cfca1d5259cb5dd8
+sha256=af0b4ca361435e54316ddf715737b5b94c737c41e3c0b0e6d66ee8a8938f4500
+
[http://downloads.sourceforge.net/squashfs/squashfs2.0-r2.tar.gz]
md5=0b7fcaab8e634ae2385984885c731082
sha256=353b768294783959219f1203e76c128fb4c75fa37f3a3bb139603c5db55c6974
@@ -10342,6 +10422,10 @@ sha256=9543d7adedf78a6de0b221ccbbd1952e08b5138717f4ade814039bb489a4315d
md5=26c2f6405d6a94f1160a83109b2f71dd
sha256=d701a3e4d7ab296fecdd6f8f84610a3c6d275839f9db4269b1ff7db3e0a9c0e5
+[http://www.tcpdump.org/release/tcpdump-3.9.7.tar.gz]
+md5=2aacf4dc9a3bc500a8b4f3887a32cdd5
+sha256=09f1daece22a3555f1ca1f9779caf36357cc8d5b9ad1964606093c7e884e0da4
+
[http://downloads.sourceforge.net/tcpick/tcpick-0.1.22.tar.gz]
md5=77b991a686e83cb716fd241aaa6ea432
sha256=db19142fd2ca6218ead04fb3144b1640e2ad5a1c784a4e790c8816a37a79ac2e
@@ -10386,6 +10470,10 @@ sha256=1c76d6ac7e80de0ae88cc5cbdad7a2a564eac96788549359b001366dc52fe817
md5=e7b056a7619cdd460b5db5a7e263cafc
sha256=cf7becd610e298d23780216f474907745bd29484f7f81308a9d13cf07f2a4e2d
+[http://www.catb.org/~esr/terminfo/termtypes.tc.gz]
+md5=37318885db65314f1bcc2b22751123d3
+sha256=c4fa04257fea6e968d4caa28cc18dbbf9eea4769a463296eaca21ceea757a728
+
[http://downloads.sourceforge.net/tesseract-ocr/tesseract-1.0.tar.gz]
md5=e3bc57773a60134ef37e9f06fe541108
sha256=6fc9e28a574bf22028249e9a12e033c8bee0aeccbf90621238a6f538e60e7d60
@@ -10710,6 +10798,10 @@ sha256=e42ac3b45c1c8a3199bbd9b666e9225d76bc18d902339c54cbb4df3a75909e53
md5=9002b1bc2de9285588dd97b618a867a7
sha256=bdb715784bf0c94825cf40f97c60a5ec83fd3e17e9e186a78cd145781c4d9804
+[http://downloads.sourceforge.net/uriparser/uriparser-0.5.1.tar.bz2]
+md5=faf561c6260e1b580cba2509f410a29f
+sha256=5a664f5c8f404c1148f661499866f1fe8df8debef2adc55c630ac83e6d57a98c
+
[http://excess.org/urwid/urwid-0.8.4.tar.gz]
md5=4bf9e297f1db0502ec2753f3e084f4cd
sha256=03c1970273b211be8a6a8d23e44522b5d20a774781d31b51c26109985ac28cdd
@@ -10790,7 +10882,7 @@ sha256=e95a45db65b33be472a3134492e348c4cd6edc200d02a85654ffe62bc2e6fdcd
md5=6ce5a6e85653afdd10c48b89b4bcc8aa
sha256=cef1e438a2f936efe00ffbb3758c80de72ed514f210e067cb8469a8b00b8feb4
-[http://ftp.debian.org/debian/pool/main/u/uucp/uucp_1.07.orig.tar.gz]
+[ftp://ftp.gnu.org/pub/gnu/uucp/uucp-1.07.tar.gz]
md5=64c54d43787339a7cced48390eb3e1d0
sha256=060c15bfba6cfd1171ad81f782789032113e199a5aded8f8e0c1c5bd1385b62c
@@ -12434,6 +12526,10 @@ sha256=c45176d002c85c142ac52774680f5325d330c5ecc32d4d6a056d85ee039a0cbc
md5=977ee3fd1525418aaa8bfc55ffbf6fc9
sha256=f3c25042dfd332c3aee22176b3bcd244a99bc475112a97d9d4cc03505fe7b48f
+[http://xorg.freedesktop.org/releases/individual/app/xrandr-1.2.0.tar.bz2]
+md5=9e74e6919cf731ec10ce26fd6a4483fa
+sha256=7bf3bd3cf46a6a29e35b9dd1c8d3d14494be76da0d24c6ef5dab36974445004d
+
[http://xorg.freedesktop.org/releases/individual/app/xrandr-1.2.2.tar.bz2]
md5=c6ec9dc42396e3b3a2da932f3feca6ec
sha256=632f3ff492a07f8279807ffbafe4f89af069bb0e7b4934b3ddf7379509aa9303
@@ -12466,6 +12562,10 @@ sha256=9915ee47ff85d83eee825b1a44857b92b4b16558e4bf436671ae7a37f4ab65ad
md5=16df4b8f3d844236dfd24efd88e8ea99
sha256=964f96d9d86140564fa42de6f803bf3065ef287620cec4462d2fae8ca396034b
+[http://projects.o-hand.com/sources/xrestop/xrestop-0.4.tar.gz]
+md5=d8a54596cbaf037e62b80c4585a3ca9b
+sha256=67c2fc94a7ecedbaae0d1837e82e93d1d98f4a6d759828860e552119af3ce257
+
[http://xorg.freedesktop.org/releases/X11R7.0/src/app/xrx-X11R7.0-1.0.1.tar.bz2]
md5=9de3b04392c98df59c79a34fd51c385f
sha256=2a177a9f36c92fdc109260a7c04980db6920fb9d3529d79e9bc019ae7f5a310e
@@ -12782,7 +12882,3 @@ sha256=12f5b654f6b91953391d2492a09d2c9586d5b7af419f0eeb306e1d30245659d3
md5=a6538f6c44ceeed0ed7e8e356f444168
sha256=f684397ce39ec400ba3369521892b7c3a8711d3ef1be59115db9f8d57707bbb8
-[http://projects.o-hand.com/sources/xrestop/xrestop-0.4.tar.gz]
-md5=d8a54596cbaf037e62b80c4585a3ca9b
-sha256=67c2fc94a7ecedbaae0d1837e82e93d1d98f4a6d759828860e552119af3ce257
-
diff --git a/conf/distro/angstrom-2007.1.conf b/conf/distro/angstrom-2007.1.conf
index fe6be3e614..4c9a254cd9 100644
--- a/conf/distro/angstrom-2007.1.conf
+++ b/conf/distro/angstrom-2007.1.conf
@@ -2,7 +2,7 @@
#@TYPE: Distribution
#@NAME: Angstrom <http://www.angstrom-distribution.org>
#@DESCRIPTION: The Linux Distribution for Kernel 2.6 based devices
-#@MAINTAINER: Koen Kooi <koen@dominion.kabel.utwente.nl>
+#@MAINTAINER: Koen Kooi <koen@openembedded.org>
#@MAINTAINER: Michael 'Mickey' Lauer <mickey@Vanille.de>
#@--------------------------------------------------------------------
@@ -14,7 +14,7 @@ require conf/distro/include/sane-srcdates.inc
require conf/distro/include/sane-srcrevs.inc
#Images built can have to modes:
-# 'debug': empty rootpassword, strace and gdb included
+# 'debug': empty rootpassword, strace included
# 'release' no root password, no strace and gdb by default
DISTRO_TYPE ?= "debug"
#DISTRO_TYPE = "release"
@@ -29,18 +29,24 @@ DISTRO_TYPE ?= "debug"
# Also, it appears that no locales fit in 16Mb for now. "C" locale rules!
IMAGE_LINGUAS = '${@base_less_or_equal("ROOT_FLASH_SIZE", "16", "", "en-gb", d)}'
-FEED_URIS += " \
- no-arch##${ANGSTROM_URI}/unstable/feed/all \
- base##${ANGSTROM_URI}/unstable/feed/${FEED_ARCH}/base \
- perl##${ANGSTROM_URI}/unstable/feed/${FEED_ARCH}/perl \
- python##${ANGSTROM_URI}/unstable/feed/${FEED_ARCH}/python \
- debug##${ANGSTROM_URI}/unstable/feed/${FEED_ARCH}/debug \
- gstreamer##${ANGSTROM_URI}/unstable/feed/${FEED_ARCH}/gstreamer \
- ${MACHINE}##${ANGSTROM_URI}/unstable/feed/${FEED_ARCH}/machine/${MACHINE}"
+# These will be put under package management soon
+#FEED_URIS += " \
+# no-arch##${ANGSTROM_URI}/unstable/feed/all \
+# base##${ANGSTROM_URI}/unstable/feed/${FEED_ARCH}/base \
+# perl##${ANGSTROM_URI}/unstable/feed/${FEED_ARCH}/perl \
+# python##${ANGSTROM_URI}/unstable/feed/${FEED_ARCH}/python \
+# debug##${ANGSTROM_URI}/unstable/feed/${FEED_ARCH}/debug \
+# gstreamer##${ANGSTROM_URI}/unstable/feed/${FEED_ARCH}/gstreamer \
+# ${MACHINE}##${ANGSTROM_URI}/unstable/feed/${FEED_ARCH}/machine/${MACHINE}"
# base##${ANGSTROM_URI}/releases/${DISTRO_VERSION}/feed/${FEED_ARCH}/base \
# ${MACHINE}##${ANGSTROM_URI}/releases/${DISTRO_VERSION}/feed/${FEED_ARCH}/machine/${MACHINE} \
# updates##${ANGSTROM_URI}/releases/${DISTRO_VERSION}/feed/${FEED_ARCH}/updates"
+
+# set feed path variables
+FEED_BASEPATH = "feeds/2007/${ANGSTROM_PKG_FORMAT}/${ANGSTROM_MODE}/"
+
+
#The angstrom-mirrors.bbclass should have everything, but we can use this as a fallback
CVS_TARBALL_STASH ?= "\
http://www.angstrom-distribution.org/unstable/sources/ \
@@ -54,29 +60,12 @@ MACHINE_KERNEL_VERSION = "2.6"
PCMCIA_MANAGER = "pcmciautils"
#Preferred version for the kernel on various machines
-PREFERRED_VERSION_linux-handhelds-2.6 ?= "2.6.21-hh17"
+PREFERRED_VERSION_linux-handhelds-2.6 ?= "2.6.21-hh19"
+PREFERRED_VERSION_linux-ixp4xx ?= "2.6.21.6+svnr${SRCREV}"
RDEPENDS_kernel-base_hx4700 = ""
RDEPENDS_kernel-base_htcuniversal = ""
-# Needed for crappy ipaqs with broken hostap in the kernel
-PREFERRED_VERSION_hostap-modules ?= "0.4.7"
-PREFERRED_VERSION_hostap-utils ?= "0.4.7"
-
-PREFERRED_VERSION_file = "4.18"
-PREFERRED_VERSION_file_native = "4.18"
-
-PREFERRED_VERSION_fontconfig = "2.4.1"
-PREFERRED_VERSION_freetype = "2.3.4"
-PREFERRED_VERSION_freetype-native = "2.2.1"
-PREFERRED_VERSION_cairo = "1.4.10"
-PREFERRED_VERSION_glib-2.0 = "2.12.12"
-PREFERRED_VERSION_pango = "1.16.4"
-PREFERRED_VERSION_atk = "1.20.0"
-PREFERRED_VERSION_gtk+ = "2.10.14"
-
-# newer poppler cvs breaks some apps, fix until popper 6 and apps
-# catch up with api changes
-# PREFERRED_VERSION_poppler = "0.5.4"
+PREFERRED_PROVIDER_libgsmd = "libgsmd"
# older gtk-webcore releases don't work on ARM/EABI
# We need to switch to a fixed SRCDATE or release as soon as possible
@@ -91,14 +80,6 @@ PREFERRED_PROVIDER_avahi = "avahi"
PREFERRED_PROVIDER_virtual/xserver ?= "xserver-kdrive"
PREFERRED_PROVIDER_xserver ?= "xserver-kdrive"
-PREFERRED_VERSION_xserver-kdrive ?= "1.3.0.0"
-PREFERRED_VERSION_libxrandr ?= "1.2.1"
-PREFERRED_VERSION_xrandr ?= "1.2.0"
-PREFERRED_VERSION_randrproto ?= "1.2.1"
-
-PREFERRED_VERSION_libgnomeui = "2.18.1"
-PREFERRED_VERSION_prismstumbler = "0.7.3"
-
#use EABI ready toolchain
PREFERRED_VERSION_gcc ?= "4.1.2"
PREFERRED_VERSION_gcc-cross ?= "4.1.2"
@@ -110,6 +91,16 @@ PREFERRED_VERSION_gcc-cross_dht-walnut ?= "4.1.1"
PREFERRED_VERSION_gcc-cross-sdk_dht-walnut ?= "4.1.1"
PREFERRED_VERSION_gcc-cross-initial_dht-walnut ?= "4.1.1"
+PREFERRED_VERSION_gcc_xilinx-ml403 ?= "4.1.1"
+PREFERRED_VERSION_gcc-cross_xilinx-ml403 ?= "4.1.1"
+PREFERRED_VERSION_gcc-cross-sdk_xilinx-ml403 ?= "4.1.1"
+PREFERRED_VERSION_gcc-cross-initial_xilinx-ml403 ?= "4.1.1"
+
+PREFERRED_VERSION_gcc_mpc8323e-rdb ?= "4.1.1"
+PREFERRED_VERSION_gcc-cross_mpc8323e-rdb ?= "4.1.1"
+PREFERRED_VERSION_gcc-cross-sdk_mpc8323e-rdb ?= "4.1.1"
+PREFERRED_VERSION_gcc-cross-initial_mpc8323e-rdb ?= "4.1.1"
+
PREFERRED_VERSION_binutils ?= "2.18"
PREFERRED_VERSION_binutils-cross ?= "2.18"
PREFERRED_VERSION_binutils-cross-sdk ?= "2.18"
@@ -149,21 +140,15 @@ PREFERRED_VERSION_glibc-initial ?= "2.5"
# PREFERRED_VERSION_gcc-cross = "3.4.4+csl-arm-2005q3"
# PREFERRED_VERSION_gcc-cross-initial = "3.4.4+csl-arm-2005q3"
-
-# Busybox <1.1.0 doesn't have EABI support
-PREFERRED_VERSION_busybox = "1.2.1"
-
-PREFERRED_VERSION_dbus ?= "1.0.2"
-PREFERRED_VERSION_dbus-glib ?= "0.74"
-
#Loads preferred versions from files, these have weak assigments (?=), so put them at the bottom
+require conf/distro/include/preferred-xorg-versions.inc
+require conf/distro/include/angstrom-2007-preferred-versions.inc
require conf/distro/include/preferred-gpe-versions-2.8.inc
require conf/distro/include/preferred-e-versions.inc
-require conf/distro/include/preferred-xorg-versions.inc
-require conf/distro/include/preferred-openmoko-versions.inc
# Virtuals:
+PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}binutils = "binutils-cross"
PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}gcc-initial = "gcc-cross-initial"
PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}gcc = "gcc-cross"
PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}g++ = "gcc-cross"
@@ -193,6 +178,7 @@ PREFERRED_PROVIDER_virtual/libxine ?= "libxine-x11"
PREFERRED_PROVIDER_virtual/xserver ?= "xserver-kdrive"
# Others:
+PREFERRED_PROVIDER_linux-libc-headers = "linux-libc-headers"
PREFERRED_PROVIDER_dbus-glib = "dbus-glib"
PREFERRED_PROVIDER_esound ?= "pulseaudio"
PREFERRED_PROVIDER_gconf ?= "gconf-dbus"
@@ -225,10 +211,6 @@ PREFERRED_PROVIDER_gdk-pixbuf-loader-xpm ?= "gtk+"
#Silence a warning during parsing
PREFERRED_PROVIDER_task-bootstrap = "task-bootstrap"
-
-# Lock down almost every recipe:
-require conf/distro/include/angstrom-2007-preferred-versions.inc
-
#This is needed to get a correct PACKAGE_ARCH for packages that have PACKAGE_ARCH = ${MACHINE_ARCH}
ARM_ABI ?= "${@['','oabi'][bb.data.getVar('MACHINE',d) in ['collie','h3600', 'h3800', 'simpad', 'htcwallaby']]}"
require conf/distro/include/angstrom${ARM_ABI}.inc
@@ -237,7 +219,7 @@ require conf/distro/include/angstrom${ARM_ABI}.inc
# We want to ship extra debug utils in the rootfs when doing a debug build
DEBUG_APPS ?= ""
-DEBUG_APPS += '${@base_conditional("DISTRO_TYPE", "release", "", "tslib-tests tslib-calibrate gdb strace procps",d)}'
+DEBUG_APPS += '${@base_conditional("DISTRO_TYPE", "release", "", "strace procps",d)}'
#this should go away soon
EXTRA_STUFF ?= ""
@@ -255,7 +237,7 @@ DISTRO_EXTRA_RDEPENDS += "\
update-modules \
${@base_contains("MACHINE_FEATURES", "screen", "psplash", "",d)} \
angstrom-version \
- ipkg ipkg-collateral \
+ ipkg ipkg-collateral ${ANGSTROM_FEED_CONFIGS} \
util-linux-mount util-linux-umount \
${EXTRA_STUFF} \
${DEBUG_APPS} \
diff --git a/conf/distro/angstrom-2008.1.conf b/conf/distro/angstrom-2008.1.conf
index 976ac38663..5d9f761a95 100644
--- a/conf/distro/angstrom-2008.1.conf
+++ b/conf/distro/angstrom-2008.1.conf
@@ -2,15 +2,10 @@
#@TYPE: Distribution
#@NAME: Angstrom <http://www.angstrom-distribution.org>
#@DESCRIPTION: The Linux Distribution for Kernel 2.6 based devices
-#@MAINTAINER: Koen Kooi <koen@dominion.kabel.utwente.nl>
+#@MAINTAINER: Koen Kooi <koen@openembedded.org>
#@MAINTAINER: Michael 'Mickey' Lauer <mickey@Vanille-media.de>
#@--------------------------------------------------------------------
-
-# Use Xorg R7.3 release
-require conf/distro/include/preferred-xorg-versions-X11R7.3.inc
-
-
# This is a testbed for unstable and/or untested things, while angstrom-2007.1
# is aiming for stability and a release.
# Use this at your own risk, we welcome bugreports filed at
@@ -30,7 +25,7 @@ require conf/distro/include/sane-srcdates.inc
require conf/distro/include/sane-srcrevs.inc
#Images built can have to modes:
-# 'debug': empty rootpassword, strace and gdb included
+# 'debug': empty rootpassword, strace included
# 'release' no root password, no strace and gdb by default
DISTRO_TYPE ?= "debug"
#DISTRO_TYPE = "release"
@@ -54,6 +49,10 @@ FEED_URIS += " \
gstreamer##${ANGSTROM_URI}/unstable/feed/${FEED_ARCH}/gstreamer \
${MACHINE}##${ANGSTROM_URI}/unstable/feed/${FEED_ARCH}/machine/${MACHINE}"
+# set feed path variables
+FEED_BASEPATH = "feeds/2008/${ANGSTROM_PKG_FORMAT}/${ANGSTROM_MODE}/"
+
+
#The angstrom-mirrors.bbclass should have everything, but we can use this as a fallback
CVS_TARBALL_STASH ?= "\
http://www.angstrom-distribution.org/unstable/sources/ \
@@ -67,19 +66,18 @@ MACHINE_KERNEL_VERSION = "2.6"
PCMCIA_MANAGER = "pcmciautils"
#Preferred version for the kernel on various machines
-PREFERRED_VERSION_linux-handhelds-2.6 ?= "2.6.21-hh17"
-
-PREFERRED_VERSION_gcc = "4.2.1"
-PREFERRED_VERSION_gcc-cross = "4.2.1"
-PREFERRED_VERSION_gcc-cross-initial = "4.1.2"
+PREFERRED_VERSION_linux-handhelds-2.6 ?= "2.6.21-hh18"
#This is unrelated to the kernel version, but userspace apps (e.g. HAL) require a recent version to build against
-PREFERRED_VERSION_linux-libc-headers = "2.6.22"
+PREFERRED_VERSION_linux-libc-headers = "2.6.23"
#Prefer glibc 2.6 and uclibc 0.9.29, these have had the most testing.
PREFERRED_VERSION_glibc = "2.6.1"
PREFERRED_VERSION_glibc-intermediate = "2.6.1"
PREFERRED_VERSION_glibc-initial = "2.6.1"
+PREFERRED_VERSION_uclibc ?= "0.9.29"
+PREFERRED_VERSION_uclibc-initial ?= "0.9.29"
+
#Prefer a newer GTK+ and friends
PREFERRED_VERSION_gtk+ = "2.12.0"
@@ -92,6 +90,21 @@ PREFERRED_VERSION_udev = "115"
# Our patched-to-hell busybox 1.2.1 is getting old and unmaintanable
PREFERRED_VERSION_busybox = "1.7.2"
+PREFERRED_PROVIDER_avahi = "avahi"
+
+#Small machines prefer kdrive, but we might ship full Xorg in other images
+PREFERRED_PROVIDER_virtual/xserver ?= "xserver-kdrive"
+PREFERRED_PROVIDER_xserver ?= "xserver-kdrive"
+
+PREFERRED_VERSION_gcc ?= "4.2.2"
+PREFERRED_VERSION_gcc-cross ?= "4.2.2"
+PREFERRED_VERSION_gcc-cross-sdk ?= "4.2.2"
+PREFERRED_VERSION_gcc-cross-initial ?= "4.2.2"
+
+#Loads preferred versions from files, these have weak assigments (?=), so put them at the bottom
+require conf/distro/include/preferred-gpe-versions-2.8.inc
+require conf/distro/include/preferred-e-versions.inc
+require conf/distro/include/preferred-xorg-versions-X11R7.3.inc
#avr32 only has patches for binutils 2.17 and gcc 4.1.2 in OE
PREFERRED_VERSION_gcc_avr32 = "4.1.2"
@@ -105,3 +118,96 @@ PREFERRED_VERSION_binutils-cross-sdk_avr32 = "2.17"
PREFERRED_VERSION_uclibc_avr32 = "0.9.28"
PREFERRED_VERSION_uclibc-initial_avr32 = "0.9.28"
+# Virtuals:
+PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}binutils = "binutils-cross"
+PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}gcc-initial = "gcc-cross-initial"
+PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}gcc = "gcc-cross"
+PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}g++ = "gcc-cross"
+
+#Set preferred provider for the C library that is used to build the crosscompiler (NPTL voodoo)
+PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}libc-for-gcc = "glibc-intermediate"
+PREFERRED_PROVIDER_virtual/arm-angstrom-linux-gnueabi-libc-for-gcc = "glibc-intermediate"
+PREFERRED_PROVIDER_virtual/armeb-angstrom-linux-gnueabi-libc-for-gcc = "glibc-intermediate"
+PREFERRED_PROVIDER_virtual/arm-angstrom-linux-libc-for-gcc = "glibc-intermediate"
+PREFERRED_PROVIDER_virtual/powerpc-angstrom-linux-libc-for-gcc = "glibc-intermediate"
+PREFERRED_PROVIDER_virtual/mipsel-angstrom-linux-libc-for-gcc = "glibc-intermediate"
+PREFERRED_PROVIDER_virtual/sparc-angstrom-linux-libc-for-gcc = "glibc-intermediate"
+
+PREFERRED_PROVIDER_virtual/arm-angstrom-linux-uclibcgnueabi-libc-for-gcc = "uclibc-initial"
+PREFERRED_PROVIDER_virtual/armeb-angstrom-linux-uclibcgnueabi-libc-for-gcc = "uclibc-initial"
+
+# hostap stuff, we prefer the in-kernel modules, but those don't work for all machines
+PREFERRED_PROVIDER_hostap-conf ?= "hostap-conf"
+PREFERRED_PROVIDER_hostap-modules_h2200 ?= "hostap-modules"
+PREFERRED_PROVIDER_hostap-modules_hx4700 ?= "hostap-modules"
+
+PREFERRED_PROVIDER_virtual/db ?= "db"
+PREFERRED_PROVIDER_virtual/db-native ?= "db-native"
+PREFERRED_PROVIDER_virtual/libsdl ?= "libsdl-x11"
+PREFERRED_PROVIDER_virtual/libx11 ?= "libx11"
+PREFERRED_PROVIDER_virtual/libxine ?= "libxine-x11"
+PREFERRED_PROVIDER_virtual/xserver ?= "xserver-kdrive"
+
+# Others:
+PREFERRED_PROVIDER_linux-libc-headers = "linux-libc-headers"
+PREFERRED_PROVIDER_dbus-glib = "dbus-glib"
+PREFERRED_PROVIDER_esound ?= "pulseaudio"
+PREFERRED_PROVIDER_gconf ?= "gconf-dbus"
+PREFERRED_PROVIDER_gnome-vfs ?= "gnome-vfs"
+PREFERRED_PROVIDER_gnome-vfs-plugin-file ?= "gnome-vfs"
+PREFERRED_PROVIDER_tslib ?= "tslib"
+PREFERRED_PROVIDER_tslib-conf ?= "tslib"
+PREFERRED_PROVIDER_libgpewidget ?= "libgpewidget"
+PREFERRED_PROVIDER_ntp ?= "ntp"
+PREFERRED_PROVIDER_hotplug = "udev"
+PREFERRED_PROVIDER_libxss = "libxss"
+
+# we don't ship gtk-directfb by default
+PREFERRED_PROVIDER_gtk+ ?= "gtk+"
+PREFERRED_PROVIDER_gdk-pixbuf-loader-ani ?= "gtk+"
+PREFERRED_PROVIDER_gdk-pixbuf-loader-bmpg ?= "gtk+"
+PREFERRED_PROVIDER_gdk-pixbuf-loader-gif ?= "gtk+"
+PREFERRED_PROVIDER_gdk-pixbuf-loader-ico ?= "gtk+"
+PREFERRED_PROVIDER_gdk-pixbuf-loader-jpeg ?= "gtk+"
+PREFERRED_PROVIDER_gdk-pixbuf-loader-pcx ?= "gtk+"
+PREFERRED_PROVIDER_gdk-pixbuf-loader-png ?= "gtk+"
+PREFERRED_PROVIDER_gdk-pixbuf-loader-pnm ?= "gtk+"
+PREFERRED_PROVIDER_gdk-pixbuf-loader-ras ?= "gtk+"
+PREFERRED_PROVIDER_gdk-pixbuf-loader-tga ?= "gtk+"
+PREFERRED_PROVIDER_gdk-pixbuf-loader-wbmp ?= "gtk+"
+PREFERRED_PROVIDER_gdk-pixbuf-loader-xbm ?= "gtk+"
+PREFERRED_PROVIDER_gdk-pixbuf-loader-xpm ?= "gtk+"
+
+
+#Silence a warning during parsing
+PREFERRED_PROVIDER_task-bootstrap = "task-bootstrap"
+
+#This is needed to get a correct PACKAGE_ARCH for packages that have PACKAGE_ARCH = ${MACHINE_ARCH}
+ARM_ABI ?= "${@['','oabi'][bb.data.getVar('MACHINE',d) in ['collie','h3600', 'h3800', 'simpad', 'htcwallaby']]}"
+require conf/distro/include/angstrom${ARM_ABI}.inc
+
+# do some task-base stuff here
+
+# We want to ship extra debug utils in the rootfs when doing a debug build
+DEBUG_APPS ?= ""
+DEBUG_APPS += '${@base_conditional("DISTRO_TYPE", "release", "", "strace procps",d)}'
+
+# Angstrom want to ship some extra stuff. This should be moved into task-base eventually
+# contains ipkg specific stuff as well :(
+DISTRO_EXTRA_RDEPENDS += "\
+ update-modules \
+ ${@base_contains("MACHINE_FEATURES", "screen", "psplash", "",d)} \
+ angstrom-version \
+ ipkg ipkg-collateral \
+ util-linux-mount util-linux-umount \
+ ${DEBUG_APPS} \
+ "
+
+DISTRO_EXTRA_RRECOMMENDS += " \
+ kernel-module-vfat \
+ kernel-module-ext2 \
+ kernel-module-af-packet \
+ avahi-daemon \
+ avahi-autoipd \
+ openssh-sftp-server \
+ "
diff --git a/conf/distro/include/angstrom-2007-preferred-versions.inc b/conf/distro/include/angstrom-2007-preferred-versions.inc
index c3a8fcc9ec..72533c65e5 100644
--- a/conf/distro/include/angstrom-2007-preferred-versions.inc
+++ b/conf/distro/include/angstrom-2007-preferred-versions.inc
@@ -21,11 +21,11 @@ PREFERRED_VERSION_aircrack-ng ?= "0.9.1"
PREFERRED_VERSION_albumshaper ?= "2.1"
PREFERRED_VERSION_aliens ?= "1.0.0"
PREFERRED_VERSION_aliens-qt ?= "1.0.0"
-PREFERRED_VERSION_alsa-lib ?= "1.0.14"
-PREFERRED_VERSION_alsa-oss ?= "1.0.14"
+PREFERRED_VERSION_alsa-lib ?= "1.0.15"
+PREFERRED_VERSION_alsa-oss ?= "1.0.15"
PREFERRED_VERSION_alsa-plugins ?= "1.0.14"
PREFERRED_VERSION_alsa-state ?= "0.1.0"
-PREFERRED_VERSION_alsa-utils ?= "1.0.14"
+PREFERRED_VERSION_alsa-utils ?= "1.0.15"
PREFERRED_VERSION_anthy ?= "7811"
PREFERRED_VERSION_anthy-native ?= "7811"
PREFERRED_VERSION_antlr ?= "2.7.5"
@@ -97,14 +97,14 @@ PREFERRED_VERSION_bison-native ?= "2.0"
PREFERRED_VERSION_bitbake ?= "1.8.6"
PREFERRED_VERSION_bitchx ?= "1.1"
PREFERRED_VERSION_bluesnarfer ?= "0.1"
-PREFERRED_VERSION_bluez-cups-backend ?= "3.20"
+PREFERRED_VERSION_bluez-cups-backend ?= "3.22"
PREFERRED_VERSION_bluez-dtl1-workaround ?= "1.0"
PREFERRED_VERSION_bluez-gnome ?= "0.14"
-PREFERRED_VERSION_bluez-gstreamer-plugin ?= "3.20"
+PREFERRED_VERSION_bluez-gstreamer-plugin ?= "3.22"
PREFERRED_VERSION_bluez-hcidump ?= "1.38"
-PREFERRED_VERSION_bluez-libs ?= "3.20"
-PREFERRED_VERSION_bluez-utils ?= "3.20"
-PREFERRED_VERSION_bluez-utils-alsa ?= "3.20"
+PREFERRED_VERSION_bluez-libs ?= "3.22"
+PREFERRED_VERSION_bluez-utils ?= "3.22"
+PREFERRED_VERSION_bluez-utils-alsa ?= "3.22"
PREFERRED_VERSION_bmon ?= "2.1.0"
PREFERRED_VERSION_boa ?= "0.94.13"
PREFERRED_VERSION_bochs ?= "2.1"
@@ -620,6 +620,7 @@ PREFERRED_VERSION_gst-plugins-good ?= "0.10.6"
PREFERRED_VERSION_gst-plugins-ugly ?= "0.10.6"
PREFERRED_VERSION_gstreamer ?= "0.10.14"
PREFERRED_VERSION_gthumb ?= "2.6.9"
+PREFERRED_VERSION_gtk+ ?= "2.10.14"
PREFERRED_VERSION_gtk-clearlooks-engine ?= "0.6.2"
PREFERRED_VERSION_gtk-doc ?= "1.0"
PREFERRED_VERSION_gtk-doc-native ?= "1.0"
@@ -652,7 +653,7 @@ PREFERRED_VERSION_gweled ?= "0.5"
PREFERRED_VERSION_gxine ?= "0.4.1enhanced"
PREFERRED_VERSION_gzip ?= "1.3.5"
PREFERRED_VERSION_hal ?= "0.5.9"
-PREFERRED_VERSION_hal-info ?= "20070618"
+PREFERRED_VERSION_hal-info ?= "20070918+git"
PREFERRED_VERSION_haserl ?= "0.8.0"
PREFERRED_VERSION_havp ?= "0.86"
PREFERRED_VERSION_hdparm ?= "6.9"
@@ -661,7 +662,7 @@ PREFERRED_VERSION_hexatrolic ?= "1.0beta3"
PREFERRED_VERSION_hfsplusutils ?= "1.0.4-4"
PREFERRED_VERSION_hfsutils ?= "3.2.6"
PREFERRED_VERSION_hibernate-script ?= "1.12"
-PREFERRED_VERSION_hicolor-icon-theme ?= "0.9"
+PREFERRED_VERSION_hicolor-icon-theme ?= "0.10"
PREFERRED_VERSION_hiker ?= "0.9.1"
PREFERRED_VERSION_hildon-base-lib ?= "0.11.1"
PREFERRED_VERSION_hildon-control-panel ?= "0.9.1-1.2"
@@ -675,8 +676,7 @@ PREFERRED_VERSION_hildon-status-bar ?= "0.8.11-1"
PREFERRED_VERSION_hildon-thumbnail ?= "0.11"
PREFERRED_VERSION_hostap-conf ?= "1.0"
PREFERRED_VERSION_hostap-daemon ?= "0.4.4"
-PREFERRED_VERSION_hostap-modules ?= "0.4.7"
-PREFERRED_VERSION_hostap-utils ?= "0.4.0"
+PREFERRED_VERSION_hostap-utils ?= "0.4.7"
PREFERRED_VERSION_hotplug-dbus ?= "0.9"
PREFERRED_VERSION_hotplug-ng ?= "002"
PREFERRED_VERSION_hotplug-qcop ?= "cvs"
@@ -776,7 +776,7 @@ PREFERRED_VERSION_keymap-locales ?= "1.0"
PREFERRED_VERSION_keymaps ?= "1.0"
PREFERRED_VERSION_keyring ?= "0.6.8"
PREFERRED_VERSION_kf ?= "0.5.4.1"
-PREFERRED_VERSION_kismet ?= "2007-01-R1b"
+PREFERRED_VERSION_kismet ?= "2007-10-R1"
PREFERRED_VERSION_klibc ?= "1.1.1"
PREFERRED_VERSION_klimt ?= "0.6.1"
PREFERRED_VERSION_knights ?= "1.14"
@@ -1283,8 +1283,8 @@ PREFERRED_VERSION_mousepad ?= "0.2.12"
PREFERRED_VERSION_mp3blaster ?= "3.2.3"
PREFERRED_VERSION_mpc ?= "0.12.1"
PREFERRED_VERSION_mpeg2dec ?= "0.4.0b"
-PREFERRED_VERSION_mpfr ?= "2.1.1"
-PREFERRED_VERSION_mpfr-native ?= "2.1.1"
+PREFERRED_VERSION_mpfr ?= "2.3.0"
+PREFERRED_VERSION_mpfr-native ?= "2.3.0"
PREFERRED_VERSION_mpg123 ?= "0.66"
PREFERRED_VERSION_mpg321 ?= "0.2.10"
PREFERRED_VERSION_mplayer-common ?= "0.0.1"
@@ -2086,7 +2086,7 @@ PREFERRED_VERSION_xrdb ?= "1.0.4"
PREFERRED_VERSION_xscreensaver ?= "4.22"
PREFERRED_VERSION_xscrnsaverh ?= "1.0"
PREFERRED_VERSION_xserver-common ?= "1.18"
-PREFERRED_VERSION_xserver-kdrive ?= "1.4"
+PREFERRED_VERSION_xserver-kdrive ?= "1.3.0.0"
PREFERRED_VERSION_xserver-kdrive-common ?= "0.1"
PREFERRED_VERSION_xserver-nodm-init ?= "1.0"
PREFERRED_VERSION_xserver-xorg ?= "1.3.0.0"
diff --git a/conf/distro/include/angstrom-eglibc.inc b/conf/distro/include/angstrom-eglibc.inc
index 6726710aa9..837aec9f2d 100644
--- a/conf/distro/include/angstrom-eglibc.inc
+++ b/conf/distro/include/angstrom-eglibc.inc
@@ -5,14 +5,12 @@ PREFERRED_PROVIDER_virtual/libc = "eglibc"
PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}libc-initial = "eglibc-initial"
PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}libc-for-gcc = "eglibc-intermediate"
-PREFERRED_PROVIDER_virtual/arm-angstrom-linux-gnueabi-libc-for-gcc = "eglibc-intermediate"
-PREFERRED_PROVIDER_virtual/armeb-angstrom-linux-gnueabi-libc-for-gcc = "eglibc-intermediate"
-PREFERRED_PROVIDER_virtual/arm-angstrom-linux-libc-for-gcc = "eglibc-intermediate"
-PREFERRED_PROVIDER_virtual/powerpc-angstrom-linux-libc-for-gcc = "eglibc-intermediate"
-PREFERRED_PROVIDER_virtual/mipsel-angstrom-linux-libc-for-gcc = "eglibc-intermediate"
-PREFERRED_PROVIDER_virtual/sparc-angstrom-linux-libc-for-gcc = "eglibc-intermediate"
-
-
+PREFERRED_PROVIDER_virtual/arm${TARGET_VENDOR}-linux-gnueabi-libc-for-gcc = "eglibc-intermediate"
+PREFERRED_PROVIDER_virtual/armeb${TARGET_VENDOR}-linux-gnueabi-libc-for-gcc = "eglibc-intermediate"
+PREFERRED_PROVIDER_virtual/arm${TARGET_VENDOR}-linux-libc-for-gcc = "eglibc-intermediate"
+PREFERRED_PROVIDER_virtual/powerpc${TARGET_VENDOR}-linux-libc-for-gcc = "eglibc-intermediate"
+PREFERRED_PROVIDER_virtual/mipsel${TARGET_VENDOR}-linux-libc-for-gcc = "eglibc-intermediate"
+PREFERRED_PROVIDER_virtual/sparc${TARGET_VENDOR}-linux-libc-for-gcc = "eglibc-intermediate"
TARGET_OS = "linux${@['','-gnueabi'][bb.data.getVar('TARGET_ARCH',d,1) in ['arm', 'armeb'] and bb.data.getVar('MACHINE',d) not in ['collie','h3600', 'h3800', 'simpad', 'htcwallaby']]}"
diff --git a/conf/distro/include/angstrom.inc b/conf/distro/include/angstrom.inc
index 8116bcb307..510a752211 100644
--- a/conf/distro/include/angstrom.inc
+++ b/conf/distro/include/angstrom.inc
@@ -35,6 +35,9 @@ require conf/distro/include/angstrom-package-${ANGSTROM_PKG_FORMAT}.inc
PREFERRED_PROVIDER_qemu-native = "qemu-native"
ENABLE_BINARY_LOCALE_GENERATION ?= "1"
+# We only want to build UTF8 locales
+LOCALE_UTF8_ONLY = "1"
+
#qemu doesn't like armv6/eabi/vfp
ENABLE_BINARY_LOCALE_GENERATION_mx31ads = "0"
ENABLE_BINARY_LOCALE_GENERATION_nokia800 = "0"
@@ -185,6 +188,8 @@ FEED_ARCH_lsppchd = "ppc603e"
FEED_ARCH_lsppchg = "ppc603e"
FEED_ARCH_storcenter = "ppc603e"
FEED_ARCH_turbostation = "ppc603e"
+FEED_ARCH_mpc8313e-rdb = "ppce300c3"
+FEED_ARCH_mpc8323e-rdb = "ppce300c2"
#strongarm machines, no EABI
@@ -250,10 +255,11 @@ TINDER_REPORT = "1"
# seppuku bbclass
SEPPUKU_LOGIN = "http://bugs.openembedded.org/query.cgi?"
-SEPPUKU_QUERY = "http://bugs.openembedded.org/buglist.cgi?"
+SEPPUKU_QUERY = "http://bugs.openembedded.org/buglist.cgi?"
SEPPUKU_NEWREPORT = "http://bugs.openembedded.org/post_bug.cgi?bug_file_loc=http%3A%2F%2F&version=Angstrom&priority=P2&bug_severity=normal&op_sys=Linux&rep_platform=Other&"
-SEPPUKU_ADDCOMMENT = "http://bugs.openembedded.org/process_bug.cgi?bug_file_loc=http%3A%2F%2F&version=Angstrom&priority=P2&bug_severity=normal&op_sys=Linux&rep_platform=Other&"SEPPUKU_ATTACHMENT = "http://bugs.openembedded.org/attachment.cgi?"
-SEPPUKU_AUTOBUILD = "1"
+SEPPUKU_ADDCOMMENT = "http://bugs.openembedded.org/process_bug.cgi?bug_file_loc=http%3A%2F%2F&version=Angstrom&priority=P2&bug_severity=normal&op_sys=Linux&rep_platform=Other&"
+SEPPUKU_ATTACHMENT = "http://bugs.openembedded.org/attachment.cgi?"
+SEPPUKU_AUTOBUILD = "1"
SEPPUKU_PRODUCT = "Openembedded"
SEPPUKU_COMPONENT = "build"
diff --git a/conf/distro/include/insane-srcrevs.inc b/conf/distro/include/insane-srcrevs.inc
index c70e799705..e039a144d3 100644
--- a/conf/distro/include/insane-srcrevs.inc
+++ b/conf/distro/include/insane-srcrevs.inc
@@ -1,6 +1,7 @@
SRCREV_pn-aircrack-ng ?= "${AUTOREV}"
SRCREV_pn-dfu-util ?= "${AUTOREV}"
SRCREV_pn-dfu-util-native ?= "${AUTOREV}"
+SRCREV_pn-eds-dbus ?= "${AUTOREV}"
SRCREV_pn-eglibc ?= "${AUTOREV}"
SRCREV_pn-eglibc-initial ?= "${AUTOREV}"
SRCREV_pn-eglibc-intermediate ?= "${AUTOREV}"
@@ -19,6 +20,7 @@ SRCREV_pn-libmokopanelui2 ?= "${AUTOREV}"
SRCREV_pn-libmokoui2 ?= "${AUTOREV}"
SRCREV_pn-libowl ?= "${AUTOREV}"
SRCREV_pn-libxosd ?= "${AUTOREV}"
+SRCREV_pn-linux-openmoko ?= "${AUTOREV}"
SRCREV_pn-llvm-gcc4 ?= "${AUTOREV}"
SRCREV_pn-llvm-gcc4-cross ?= "${AUTOREV}"
SRCREV_pn-maemo-mapper ?= "${AUTOREV}"
@@ -60,6 +62,7 @@ SRCREV_pn-openmoko-panel-gsm ?= "${AUTOREV}"
SRCREV_pn-openmoko-panel-mainmenu ?= "${AUTOREV}"
SRCREV_pn-openmoko-panel-usb ?= "${AUTOREV}"
SRCREV_pn-openmoko-session ?= "${AUTOREV}"
+SRCREV_pn-openmoko-sample2 ?= "${AUTOREV}"
SRCREV_pn-openmoko-simplemediaplayer ?= "${AUTOREV}"
SRCREV_pn-openmoko-sound-theme-standard ?= "${AUTOREV}"
SRCREV_pn-openmoko-stylus-demo ?= "${AUTOREV}"
diff --git a/conf/distro/include/moko-autorev.inc b/conf/distro/include/moko-autorev.inc
index aeb0a2afbc..316fc5a4de 100644
--- a/conf/distro/include/moko-autorev.inc
+++ b/conf/distro/include/moko-autorev.inc
@@ -35,6 +35,7 @@ SRCREV_pn-openmoko-keyboard ?= "${AUTOREV}"
SRCREV_pn-openmoko-libs ?= "${AUTOREV}"
SRCREV_pn-openmoko-mediaplayer2 ?= "${AUTOREV}"
SRCREV_pn-openmoko-messages ?= "${AUTOREV}"
+SRCREV_pn-openmoko-messages2 ?= "${AUTOREV}"
SRCREV_pn-openmoko-panel-battery ?= "${AUTOREV}"
SRCREV_pn-openmoko-panel-bt ?= "${AUTOREV}"
SRCREV_pn-openmoko-panel-clock ?= "${AUTOREV}"
@@ -44,6 +45,7 @@ SRCREV_pn-openmoko-panel-gps ?= "${AUTOREV}"
SRCREV_pn-openmoko-panel-gsm ?= "${AUTOREV}"
SRCREV_pn-openmoko-panel-mainmenu ?= "${AUTOREV}"
SRCREV_pn-openmoko-panel-usb ?= "${AUTOREV}"
+SRCREV_pn-openmoko-sample2 ?= "${AUTOREV}"
SRCREV_pn-openmoko-session ?= "${AUTOREV}"
SRCREV_pn-openmoko-simplemediaplayer ?= "${AUTOREV}"
SRCREV_pn-openmoko-sound-theme-standard ?= "${AUTOREV}"
diff --git a/conf/distro/include/preferred-openmoko-versions.inc b/conf/distro/include/preferred-openmoko-versions.inc
deleted file mode 100644
index c002776d70..0000000000
--- a/conf/distro/include/preferred-openmoko-versions.inc
+++ /dev/null
@@ -1,10 +0,0 @@
-#
-# Specify which versions of OpenMoko packages to build
-#
-
-#
-# Bootloader and Kernel
-#
-
-SRCREV_pn-linux-openmoko ?= "2937"
-
diff --git a/conf/distro/include/sane-srcdates.inc b/conf/distro/include/sane-srcdates.inc
index e5db7a9ceb..4d9509fc15 100644
--- a/conf/distro/include/sane-srcdates.inc
+++ b/conf/distro/include/sane-srcdates.inc
@@ -53,7 +53,7 @@ SRCDATE_gtkhtml2 ?= "20060323"
# Enlightenment Foundation Libraries
# Caution: This is not alphabetically, but (roughly) dependency-sorted.
# Please leave it like that.
-EFL_SRCDATE = "20070819"
+EFL_SRCDATE = "20071206"
SRCDATE_edb-native ?= "${EFL_SRCDATE}"
SRCDATE_edb ?= "${EFL_SRCDATE}"
SRCDATE_eet-native ?= "${EFL_SRCDATE}"
@@ -88,6 +88,8 @@ SRCDATE_eflpp ?= "${EFL_SRCDATE}"
SRCDATE_python-evas ?= "${EFL_SRCDATE}"
SRCDATE_python-ecore ?= "${EFL_SRCDATE}"
SRCDATE_python-edje ?= "${EFL_SRCDATE}"
+SRCDATE_python-emotion ?= "${EFL_SRCDATE}"
+SRCDATE_python-epsilon ?= "${EFL_SRCDATE}"
SRCDATE_python-ewl ?= "${EFL_SRCDATE}"
SRCDATE_python-etk ?= "${EFL_SRCDATE}"
@@ -101,8 +103,11 @@ SRCDATE_exhibit ?= "${EFL_SRCDATE}"
SRCDATE_expedite ?= "${EFL_SRCDATE}"
SRCDATE_elitaire ?= "${EFL_SRCDATE}"
SRCDATE_entice ?= "${EFL_SRCDATE}"
+SRCDATE_entrance ?= "${EFL_SRCDATE}"
SRCDATE_e-utils ?= "${EFL_SRCDATE}"
+SRCDATE_e-wm ?= "${EFL_SRCDATE}"
SRCDATE_enna ?= "${EFL_SRCDATE}"
+SRCDATE_exquisite ?= "${EFL_SRCDATE}"
# Misc packages, sorted by alphabet
SRCDATE_avetanabt ?= "20060814"
diff --git a/conf/distro/include/sane-srcrevs.inc b/conf/distro/include/sane-srcrevs.inc
index e537c66c30..a65f477296 100644
--- a/conf/distro/include/sane-srcrevs.inc
+++ b/conf/distro/include/sane-srcrevs.inc
@@ -9,45 +9,51 @@
SRCREV_pn-aircrack-ng ?= "802"
SRCREV_pn-bfin-uclibc ?= "1857"
+SRCREV_pn-contact ?= "1410"
SRCREV_pn-dbus-c++-native ?= "13131"
SRCREV_pn-dbus-c++ ?= "13131"
SRCREV_pn-dfu-util ?= "2866"
SRCREV_pn-dfu-util-native ?= "2866"
-SRCREV_pn-eglibc ?= "3531"
-SRCREV_pn-eglibc-initial ?= "3531"
-SRCREV_pn-eglibc-intermediate ?= "3531"
-SRCREV_pn-ezxd ?= "2070"
-SRCREV_pn-elf2flt="1786"
+SRCREV_pn-eds-dbus ?= "628"
+SRCREV_pn-eglibc ?= "4355"
+SRCREV_pn-eglibc-initial ?= "4355"
+SRCREV_pn-eglibc-intermediate ?= "4355"
+SRCREV_pn-ezxd ?= "2074"
+SRCREV_pn-elf2flt ?= "1786"
+SRCREV_pn-epiphany ?= "7650"
SRCREV_pn-fbgrab-viewer-native ?= "1943"
SRCREV_pn-fstests ?= "204"
SRCREV_pn-gconf-dbus ?= "606"
SRCREV_pn-gnuradio ?= "6377"
SRCREV_pn-gypsy ?= "56"
-SRCREV_pn-hildon-1 ?= "14173"
+SRCREV_pn-hildon-1 ?= "14429"
SRCREV_pn-kismet ?= "2285"
SRCREV_pn-kismet-newcore ?= "2285"
+SRCREV_pn-libcalenabler2 ?= "1410"
SRCREV_pn-libfakekey ?= "1455"
-SRCREV_pn-libgsmd ?= "3074"
+SRCREV_pn-libgsmd ?= "3519"
SRCREV_pn-libgsmd-devel ?= "3293"
-SRCREV_pn-libjana ?= "665"
-SRCREV_pn-libmokogsmd2 ?= "2950"
+SRCREV_pn-libjana ?= "697"
+SRCREV_pn-libmokogsmd2 ?= "3378"
SRCREV_pn-libmokojournal2 ?= "3217"
-SRCREV_pn-libmokopanelui2 ?= "3226"
+SRCREV_pn-libmokopanelui2 ?= "3349"
SRCREV_pn-libmokoui2 ?= "3229"
SRCREV_pn-libowl ?= "277"
SRCREV_pn-libxosd ?= "627"
-SRCREV_pn-linux-bfin ?= "3745"
+SRCREV_pn-linux-bfin ?= "3758"
SRCREV_pn-linux-hackndev-2.6 ?= "1308"
+SRCREV_pn-linux-ixp4xx ?= "927"
+SRCREV_pn-linux-openmoko ?= "3238"
SRCREV_pn-llvm-gcc4 ?= "374"
SRCREV_pn-llvm-gcc4-cross ?= "374"
-SRCREV_pn-maemo-mapper ?= "108"
-SRCREV_pn-matchbox-desktop-2 ?= "1649"
+SRCREV_pn-maemo-mapper ?= "118"
+SRCREV_pn-matchbox-desktop-2 ?= "1778"
SRCREV_pn-matchbox-keyboard ?= "1739"
SRCREV_pn-matchbox-keyboard-inputmethod ?= "1739"
SRCREV_pn-matchbox-panel-2 ?= "1626"
-SRCREV_pn-moko-gtk-engine ?= "3207"
+SRCREV_pn-moko-gtk-engine ?= "3405"
SRCREV_pn-mpd-alsa ?= "6952"
-SRCREV_pn-neod ?= "2956"
+SRCREV_pn-neod ?= "3421"
SRCREV_pn-oh-puzzles ?= "22"
SRCREV_pn-osb-browser ?= "125"
SRCREV_pn-osb-jscore ?= "117"
@@ -55,66 +61,70 @@ SRCREV_pn-osb-nrcit ?= "125"
SRCREV_pn-osb-nrcore ?= "126"
SRCREV_pn-openmoko-appearance ?= "3239"
SRCREV_pn-openmoko-appmanager ?= "1851"
-SRCREV_pn-openmoko-appmanager2 ?= "3299"
+SRCREV_pn-openmoko-appmanager2 ?= "3442"
SRCREV_pn-openmoko-browser2 ?= "3249"
SRCREV_pn-openmoko-calculator ?= "2404"
SRCREV_pn-openmoko-calculator2 ?= "3235"
SRCREV_pn-openmoko-common ?= "397"
-SRCREV_pn-openmoko-common2 ?= "2679"
+SRCREV_pn-openmoko-common2 ?= "3259"
SRCREV_pn-openmoko-contacts ?= "2298"
-SRCREV_pn-openmoko-contacts2 ?= "358"
+SRCREV_pn-openmoko-contacts2 ?= "374"
SRCREV_pn-openmoko-dates ?= "467"
-SRCREV_pn-openmoko-dates2 ?= "658"
+SRCREV_pn-openmoko-dates2 ?= "661"
SRCREV_pn-openmoko-dialer ?= "2811"
-SRCREV_pn-openmoko-dialer2 ?= "3298"
+SRCREV_pn-openmoko-dialer2 ?= "3522"
SRCREV_pn-openmoko-feedreader2 ?= "3080"
SRCREV_pn-openmoko-finger-demo ?= "1671"
SRCREV_pn-openmoko-firststart2 ?= "3158"
SRCREV_pn-openmoko-footer ?= "2354"
SRCREV_pn-openmoko-icon-theme-standard ?= "2232"
-SRCREV_pn-openmoko-icon-theme-standard2 ?= "3225"
-SRCREV_pn-openmoko-icon-theme-standard2-qvga ?= "3225"
+SRCREV_pn-openmoko-icon-theme-standard2 ?= "3247"
+SRCREV_pn-openmoko-icon-theme-standard2-qvga ?= "3247"
SRCREV_pn-openmoko-keyboard ?= "1631"
SRCREV_pn-openmoko-libs ?= "2367"
-SRCREV_pn-openmoko-mediaplayer2 ?= "3300"
+SRCREV_pn-openmoko-mediaplayer2 ?= "3345"
SRCREV_pn-openmoko-messages ?= "2276"
-SRCREV_pn-openmoko-panel-battery ?= "3272"
-SRCREV_pn-openmoko-panel-bt ?= "2896"
+SRCREV_pn-openmoko-messages2 ?= "3477"
+SRCREV_pn-openmoko-panel-battery ?= "3360"
+SRCREV_pn-openmoko-panel-bt ?= "3149"
SRCREV_pn-openmoko-panel-clock ?= "2567"
SRCREV_pn-openmoko-panel-demo ?= "1622"
SRCREV_pn-openmoko-panel-demo-simple ?= "1328"
SRCREV_pn-openmoko-panel-gps ?= "2900"
-SRCREV_pn-openmoko-panel-gsm ?= "3185"
+SRCREV_pn-openmoko-panel-gsm ?= "3256"
SRCREV_pn-openmoko-panel-mainmenu ?= "2567"
-SRCREV_pn-openmoko-panel-usb ?= "2893"
+SRCREV_pn-openmoko-panel-usb ?= "3360"
SRCREV_pn-openmoko-session ?= "152"
+SRCREV_pn-openmoko-sample2 ?= "3537"
SRCREV_pn-openmoko-simplemediaplayer ?= "1688"
SRCREV_pn-openmoko-sound-theme-standard2 ?= "3192"
SRCREV_pn-openmoko-stylus-demo ?= "2324"
SRCREV_pn-openmoko-stylus-demo-simple ?= "1818"
SRCREV_pn-openmoko-taskmanager ?= "1663"
SRCREV_pn-openmoko-tasks ?= "320"
-SRCREV_pn-openmoko-tasks2 ?= "346"
-SRCREV_pn-openmoko-terminal2 ?= "2972"
+SRCREV_pn-openmoko-tasks2 ?= "348"
+SRCREV_pn-openmoko-terminal2 ?= "3435"
SRCREV_pn-openmoko-theme-standard ?= "2370"
SRCREV_pn-openmoko-theme-standard-qvga ?= "2370"
-SRCREV_pn-openmoko-theme-standard2 ?= "3210"
-SRCREV_pn-openmoko-theme-standard2-qvga ?= "3210"
+SRCREV_pn-openmoko-theme-standard2 ?= "3425"
+SRCREV_pn-openmoko-theme-standard2-qvga ?= "3425"
SRCREV_pn-openmoko-today ?= "3056"
-SRCREV_pn-openmoko-today2 ?= "3287"
-SRCREV_pn-openmoko-today2-folders ?= "2680"
-SRCREV_pn-openmoko-worldclock2 ?= "3301"
+SRCREV_pn-openmoko-today2 ?= "3478"
+SRCREV_pn-openmoko-today2-folders ?= "3414"
+SRCREV_pn-openmoko-worldclock2 ?= "3365"
SRCREV_pn-openocd ?= "206"
SRCREV_pn-openocd-native ?= "206"
SRCREV_pn-oprofileui ?= "160"
SRCREV_pn-psplash ?= "249"
+SRCREV_pn-python-formencode = "3148"
SRCREV_pn-settings-daemon ?= "1755"
SRCREV_pn-sjf2410-linux-native ?= "933"
SRCREV_pn-sphyrna ?= "45"
-SRCREV_pn-tmut ?= "15"
+SRCREV_pn-tmut ?= "60"
SRCREV_pn-webkit-gtk ?= "27222"
SRCREV_pn-webkit-qt ?= "27222"
SRCREV_pn-webkit-qtopia ?= "27222"
+SRCREV_pn-wesnoth ?= "22021"
SRCREV_pn-xoo ?= "1623"
SRCREV_pn-mplayer ?= "24587"
SRCREV_pn-networkmanager ?= "2887"
diff --git a/conf/distro/include/slugos.inc b/conf/distro/include/slugos.inc
index 652373a3eb..ab80719646 100644
--- a/conf/distro/include/slugos.inc
+++ b/conf/distro/include/slugos.inc
@@ -16,7 +16,7 @@
#TARGET_OS "linux" or "linux-uclibc"
# The following may be overridden to make sub-versions
-SLUGOS_VERSION = "4.6"
+SLUGOS_VERSION = "4.7"
DISTRO_REVISION ?= ""
DISTRO_VERSION ?= "${SLUGOS_VERSION}${DISTRO_REVISION}-${DISTRO_TYPE}"
# For release (only):
@@ -64,6 +64,7 @@ FEED_URIS_append += "native##http://ipkg.nslu2-linux.org/feeds/${IMAGE_BASENAME}
# to enable/disable debugging in the distro. Here noirqdebug is used to
# remove the messages about unhandled interrupts - people debugging interrupt
# issues in the kernel need to cancel this (set CMDLINE_DEBUG empty in local.conf)
+CMDLINE_ROOT = "root=/dev/mtdblock4 rootfstype=jffs2 rw init=/linuxrc"
CMDLINE_DEBUG = "noirqdebug"
# EXTRA PACKAGES
@@ -89,28 +90,38 @@ DISTRO_EXTRA_RRECOMMENDS ?= ""
# necessary to define which gets generated first, glibc or the kernel, and
# this is done by selecting the provider of libc (in this case it needs the
# kernel, so there has to be a non-libc gcc to build the kernel!)
-PREFERRED_PROVIDERS += "virtual/${TARGET_PREFIX}gcc-initial:gcc-cross-initial"
-PREFERRED_PROVIDERS += "virtual/${TARGET_PREFIX}gcc:gcc-cross"
-PREFERRED_PROVIDERS += "virtual/${TARGET_PREFIX}g++:gcc-cross"
-PREFERRED_PROVIDERS += "virtual/${TARGET_PREFIX}libc-for-gcc:glibc"
-# Select 2.6 versions of the depmod support
-PREFERRED_PROVIDERS += "virtual/${TARGET_PREFIX}depmod:module-init-tools-cross"
-PREFERRED_PROVIDERS += "virtual/${TARGET_PREFIX}libc-for-gcc:glibc"
+
+# Virtuals:
+PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}gcc-initial = "gcc-cross-initial"
+PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}gcc = "gcc-cross"
+PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}g++ = "gcc-cross"
+
+#Set preferred provider for the C library that is used to build the crosscompiler (NPTL voodoo)
+PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}libc-for-gcc = "glibc-intermediate"
+PREFERRED_PROVIDER_virtual/arm-linux-libc-for-gcc = "glibc-intermediate"
+PREFERRED_PROVIDER_virtual/armeb-linux-libc-for-gcc = "glibc-intermediate"
+
+# Set the preferred provider for a few toolchain-related items, otherwise
+# these may be selected from the external-toolchain instead.
+PREFERRED_PROVIDER_virtual/arm-linux-binutils = "binutils-cross"
+PREFERRED_PROVIDER_virtual/armeb-linux-binutils = "binutils-cross"
+PREFERRED_PROVIDER_linux-libc-headers = "linux-libc-headers"
# compiler/binary/library versions
-PREFERRED_VERSION_binutils ?= "2.16"
-PREFERRED_VERSION_binutils-cross ?= "2.16"
-PREFERRED_VERSION_gcc-cross-initial ?= "4.1.1"
-PREFERRED_VERSION_gcc-cross ?= "4.1.1"
-PREFERRED_VERSION_gcc ?= "4.1.1"
-PREFERRED_VERSION_glibc ?= "2.3.5+cvs20050627"
-#For SVN uclibc:
-#SRCDATE_uclibc ?= "20060120"
-#PREFERRED_VERSION_uclibc ?= "0.9.28+svn${SRCDATE_uclibc}"
+PREFERRED_VERSION_binutils ?= "2.18"
+PREFERRED_VERSION_binutils-cross ?= "2.18"
+PREFERRED_VERSION_binutils-cross-sdk ?= "2.18"
+PREFERRED_VERSION_gcc ?= "4.1.2"
+PREFERRED_VERSION_gcc-cross ?= "4.1.2"
+PREFERRED_VERSION_gcc-cross-sdk ?= "4.1.2"
+PREFERRED_VERSION_gcc-cross-initial ?= "4.1.2"
+PREFERRED_VERSION_glibc ?= "2.5"
+PREFERRED_VERSION_glibc-intermediate ?= "2.5"
+PREFERRED_VERSION_glibc-initial ?= "2.5"
# Select the correct versions of the kernel and modules (these are the
# defaults, override in the conf/distro top-level distro file).
-PREFERRED_PROVIDER_virtual/kernel ?= "ixp4xx-kernel"
+PREFERRED_PROVIDER_virtual/kernel ?= "linux-ixp4xx"
PREFERRED_VERSION_ixp4xx-kernel ?= "2.6.21.6"
# Select the smallest provider of x11 libraries
@@ -139,12 +150,7 @@ PREFERRED_VERSION_ipkg-native ?= "0.99.163"
#FIXME: HACK: REMOVE THIS
IGNORE_STRIP_ERRORS = ""
-# Due to upstream instability, and another OE project with conflicting
-# needs, nail down a specific, known-working version of madwifi-ng.
-# Remove this once the madwifi-ng stuff seems to stabilize once again.
-#PREFERRED_VERSION_madwifi-ng ?= "r2156-20070225"
-
-PREFERRED_VERSION_linux-libc-headers = "2.6.18"
+PREFERRED_VERSION_linux-libc-headers ?= "2.6.20"
# we don't ship gtk-directfb by default
PREFERRED_PROVIDER_gtk+ ?= "gtk+"
diff --git a/conf/distro/openmoko.conf b/conf/distro/openmoko.conf
index 0f2716b0db..f2007c231f 100644
--- a/conf/distro/openmoko.conf
+++ b/conf/distro/openmoko.conf
@@ -24,10 +24,12 @@ PREMIRRORS = "(ftp|https?)$://.*/.*/ http://downloads.openmoko.org/sources/"
FEED_URIS = "\
snapshot-all##http://buildhost.openmoko.org/snapshots/2007.08/ipk/all \
snapshot-armv4t##http://buildhost.openmoko.org/snapshots/2007.08/ipk/armv4t \
+ snapshot-neo1973##http://buildhost.openmoko.org/snapshots/2007.08/ipk/neo1973 \
snapshot-fic-gta01##http://buildhost.openmoko.org/snapshots/2007.08/ipk/fic-gta01 \
\
updates-all##http://buildhost.openmoko.org/OM2007.2/tmp/deploy/glibc/ipk/all \
updates-armv4t##http://buildhost.openmoko.org/OM2007.2/tmp/deploy/glibc/ipk/armv4t \
+ updates-neo1973##http://buildhost.openmoko.org/OM2007.2/tmp/deploy/glibc/ipk/neo1973 \
updates-fic-gta01##http://buildhost.openmoko.org/OM2007.2/tmp/deploy/glibc/ipk/fic-gta01 "
# 2.18 seems to break badly on 64-bit systems
@@ -37,8 +39,6 @@ PREFERRED_VERSION_binutils-cross ?= "2.17.50.0.12"
# we want the openmoko svn version of gsmd
PREFERRED_PROVIDER_libgsmd = "libgsmd"
-require conf/distro/include/preferred-openmoko-versions.inc
-
# Bleeding-edge developers should add the following line to their local.conf:
# require conf/distro/include/moko-autorev.inc
@@ -62,7 +62,7 @@ PACKAGE_ARCH_pn-keymaps_fic-gta02 = "${MACHINE_CLASS}"
PACKAGE_ARCH_pn-neod_fic-gta01 = "${MACHINE_CLASS}"
PACKAGE_ARCH_pn-neod_fic-gta02 = "${MACHINE_CLASS}"
-# Select packge versions we wash to use.
+# Select package versions we want to use.
PREFERRED_PROVIDER_gtk+ = "gtk+-fastscaling"
PREFERRED_VERSION_gtk+-fastscaling = "2.10.14"
diff --git a/conf/distro/slugos.conf b/conf/distro/slugos.conf
index 564a2d0cfb..29c96ce384 100644
--- a/conf/distro/slugos.conf
+++ b/conf/distro/slugos.conf
@@ -19,3 +19,4 @@ require conf/distro/include/slugos.inc
PREFERRED_PROVIDER_virtual/libiconv ?= "glibc"
PREFERRED_PROVIDER_virtual/libintl ?= "glibc"
PREFERRED_PROVIDER_virtual/libc ?= "glibc"
+PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}libc-initial ?= "glibc-initial"
diff --git a/conf/local.conf.sample b/conf/local.conf.sample
index cf3c793c68..0fa2b7d122 100644
--- a/conf/local.conf.sample
+++ b/conf/local.conf.sample
@@ -77,7 +77,7 @@ PREFERRED_PROVIDERS += " virtual/${TARGET_PREFIX}g++:gcc-cross"
# openzaurus-unstable is a so called "versioned" distro, i.e. they
# explicitely select specific versions of various packages.
# Stay away from unversioned distros unless you really know what you are doing
-# DISTRO = "generic"
+# DISTRO = "angstrom-2007.1"
# So far, angstrom.conf sets ENABLE_BINARY_LOCALE_GENERATION
# to generate binary locale packages at build time using qemu-native and
diff --git a/conf/machine/alix.conf b/conf/machine/alix.conf
index 3c50ef561b..f4423946bd 100644
--- a/conf/machine/alix.conf
+++ b/conf/machine/alix.conf
@@ -17,7 +17,7 @@ GLIBC_EXTRA_OECONF = "--with-tls"
MACHINE_FEATURES = "kernel26 usbhost ext2 pci screen alsa acpi x86"
-require.inc/machine/include/tune-geodelx.inc
+require conf/machine/include/tune-geodelx.inc
IMAGE_FSTYPES += "tar.gz"
diff --git a/conf/machine/aximx50.conf b/conf/machine/aximx50.conf
index 0dda9492e9..b119a24359 100644
--- a/conf/machine/aximx50.conf
+++ b/conf/machine/aximx50.conf
@@ -32,10 +32,7 @@ PREFERRED_PROVIDER_xserver = "xserver-kdrive"
PREFERRED_VERSION_orinoco-modules = "0.15rc1"
MACHINE_EXTRA_RDEPENDS = "tiinit acx-firmware"
-MACHINE_EXTRA_RRECOMMENDS = "kernel-module-nls-cp437 \
- kernel-module-nls-iso8859-1 \
- kernel-module-nls-utf8 \
- kernel-module-af-key \
+MACHINE_EXTRA_RRECOMMENDS = "\
kernel-module-i2c-pxa"
#
diff --git a/conf/machine/davinci-sffsdr.conf b/conf/machine/davinci-sffsdr.conf
new file mode 100644
index 0000000000..ecff6fae13
--- /dev/null
+++ b/conf/machine/davinci-sffsdr.conf
@@ -0,0 +1,25 @@
+#@TYPE: Machine
+#@NAME: DM6446 cpu on a Lyrtech Small Form Factor SDR board
+#@DESCRIPTION: Machine configuration for the Lyrtech Small Form Factor SDR board
+
+TARGET_ARCH = "arm"
+PACKAGE_EXTRA_ARCHS = "armv4t armv5te"
+
+HOTPLUG = "udev"
+
+PREFERRED_PROVIDER_xserver = "xserver-kdrive"
+PREFERRED_PROVIDER_virtual/kernel = "linux-davinci"
+PREFERRED_PROVIDERS += "virtual/${TARGET_PREFIX}depmod:module-init-tools-cross"
+
+PREFERRED_VERSION_u-boot = "git"
+UBOOT_MACHINE = "davinci_sffsdr_config"
+
+SERIAL_CONSOLE ?= "115200 ttyS0"
+EXTRA_IMAGECMD_jffs2 = "--pad --little-endian --eraseblock=0x20000 -n"
+
+#ROOT_FLASH_SIZE = "29"
+
+MACHINE_FEATURES = "kernel26 pcmcia usbhost alsa"
+
+require conf/machine/include/tune-arm926ejs.inc
+
diff --git a/conf/machine/em-x270.conf b/conf/machine/em-x270.conf
index 95ba519d3b..3cf0a7fab2 100644
--- a/conf/machine/em-x270.conf
+++ b/conf/machine/em-x270.conf
@@ -21,10 +21,10 @@ require conf/machine/include/tune-xscale.inc
ROOT_FLASH_SIZE = "128"
IMAGE_CMD_jffs2 = " \
-/usr/sbin/mkfs.jffs2 --root=${IMAGE_ROOTFS} \
- --output=${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.jffs2 \
- --eraseblock=0x20000 --pad --faketime -n; \
-/usr/sbin/sumtool -i ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.jffs2 \
+ mkfs.jffs2 --root=${IMAGE_ROOTFS} \
+ --output=${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.jffs2 \
+ --eraseblock=0x20000 --pad --faketime -n; \
+ sumtool -i ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.jffs2 \
-o ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs-summary.jffs2 \
-e 0x20000 -p; \
cd ${DEPLOY_DIR_IMAGE}; \
diff --git a/conf/machine/fic-gta01.conf b/conf/machine/fic-gta01.conf
index bd14df5814..09517fd11d 100644
--- a/conf/machine/fic-gta01.conf
+++ b/conf/machine/fic-gta01.conf
@@ -16,6 +16,7 @@ MACHINE_DISPLAY_WIDTH_PIXELS = "480"
MACHINE_DISPLAY_HEIGHT_PIXELS = "640"
MACHINE_DISPLAY_ORIENTATION = "0"
MACHINE_DISPLAY_PPI = "285"
+XSERVER = "xserver-kdrive-fbdev"
# package machine specific modules
MACHINE_EXTRA_RRECOMMENDS = "\
diff --git a/conf/machine/fic-gta02.conf b/conf/machine/fic-gta02.conf
index 1760424fc8..4cad7924f1 100644
--- a/conf/machine/fic-gta02.conf
+++ b/conf/machine/fic-gta02.conf
@@ -16,6 +16,7 @@ MACHINE_DISPLAY_WIDTH_PIXELS = "480"
MACHINE_DISPLAY_HEIGHT_PIXELS = "640"
MACHINE_DISPLAY_ORIENTATION = "0"
MACHINE_DISPLAY_PPI = "285"
+XSERVER = "xserver-kdrive-glamo xserver-kdrive-fbdev"
# package machine specific modules
MACHINE_EXTRA_RRECOMMENDS = "\
@@ -26,7 +27,7 @@ MACHINE_EXTRA_RRECOMMENDS = "\
kernel-module-s3cmci \
kernel-module-ext2 \
kernel-module-vfat \
- kernel-module-snd-soc-neo1973-wm8753 \
+ kernel-module-snd-soc-neo1973-gta02-wm8753 \
kernel-module-snd-soc-smdk2440 \
kernel-module-nls-iso8859-1 \
kernel-module-nls-cp437 \
diff --git a/conf/machine/h2200.conf b/conf/machine/h2200.conf
index 60a732ffa6..c149da18fa 100644
--- a/conf/machine/h2200.conf
+++ b/conf/machine/h2200.conf
@@ -27,12 +27,19 @@ PREFERRED_PROVIDER_xserver = "xserver-kdrive"
PREFERRED_PROVIDER_virtual/kernel = "linux-handhelds-2.6"
MACHINE_EXTRA_RDEPENDS = "h2200-bootloader udev-hostap-cs-vcc-workaround"
+MACHINE_EXTRA_RRECOMMENDS = "\
+ kernel-module-snd-h2200-audio \
+ kernel-module-i2c-pxa \
+ "
+
EXTRA_IMAGECMD_jffs2 = "--pad --eraseblock=0x4000"
#
# Modules autoload and other boot properties
#
module_autoload_snd-pcm-oss = "snd-pcm-oss"
+module_autoload_snd-mixer-oss = "snd-mixer-oss"
+module_autoload_snd-h2000-audio = "snd-h2000-audio"
SERIAL_CONSOLE = "115200 ttyS0 vt100"
USE_VT = "0"
diff --git a/conf/machine/h3600.conf b/conf/machine/h3600.conf
index 9cf8272b51..1fcaf664d4 100644
--- a/conf/machine/h3600.conf
+++ b/conf/machine/h3600.conf
@@ -27,32 +27,11 @@ PCMCIA_MANAGER = "pcmciautils"
PREFERRED_PROVIDER_xserver = "xserver-kdrive"
MACHINE_EXTRA_RDEPENDS = "ipaq-boot-params"
-MACHINE_EXTRA_RRECOMMENDS = "kernel-module-nls-cp437 \
+MACHINE_EXTRA_RRECOMMENDS = "\
kernel-module-micro"
EXTRA_IMAGECMD_jffs2 = "-e 0x40000 -p ; echo '${IMAGE_NAME} ${IMAGE_NAME}.rootfs.jffs2 - root' >> ${DEPLOY_DIR_IMAGE}/reflash.ctl"
-
-
-# TODO: see if any of these modules have 2.6 counterparts
-# and need to be RRECOMMENDED
-#
-#H3600_MODULES = "\
-#h3600-asic \
-#hwtimer \
-#nvrd \
-#sa1100-cs \
-#sa1100-ir \
-#sa1100-wdt \
-#sa1100-audio \
-#sa1100-rtc \
-#sa1100usb-core \
-#sd-mod \
-#serial-h3800 \
-#"
-
-
-
#
# Modules autoload and other boot properties
#
diff --git a/conf/machine/h4000.conf b/conf/machine/h4000.conf
index f56bee00e8..0683498c5f 100644
--- a/conf/machine/h4000.conf
+++ b/conf/machine/h4000.conf
@@ -26,8 +26,9 @@ PREFERRED_PROVIDER_xserver = "xserver-kdrive"
MACHINE_EXTRA_RDEPENDS = "tiinit acx-firmware ${PCMCIA_MANAGER}"
MACHINE_EXTRA_RRECOMMENDS = "kernel-module-snd-h4000-audio \
- kernel-module-h4000-pcmcia \
kernel-module-i2c-pxa \
+ kernel-module-h4000-bt \
+ kernel-module-h4000-pcmcia \
kernel-module-acx \
"
@@ -36,7 +37,7 @@ MACHINE_EXTRA_RRECOMMENDS = "kernel-module-snd-h4000-audio \
#
module_autoload_snd-pcm-oss = "snd-pcm-oss"
module_autoload_snd-mixer-oss = "snd-mixer-oss"
-module_autoload_snd-h4000_audio = "snd-h4000_audio"
+module_autoload_snd-h4000-audio = "snd-h4000-audio"
module_autoload_g_ether = "g_ether"
module_conf_acx = "blacklist acx"
diff --git a/conf/machine/htcuniversal.conf b/conf/machine/htcuniversal.conf
index c3e7cf710e..b7b9b5cdc0 100644
--- a/conf/machine/htcuniversal.conf
+++ b/conf/machine/htcuniversal.conf
@@ -28,11 +28,7 @@ PREFERRED_PROVIDER_xserver = "xserver-kdrive"
XSERVER = "xserver-kdrive-fbdev"
MACHINE_EXTRA_RDEPENDS = "tiinit acx-firmware"
-MACHINE_EXTRA_RRECOMMENDS = " kernel-module-nls-cp437 \
- kernel-module-nls-iso8859-1 \
- kernel-module-nls-utf8 \
- kernel-module-af-key \
- kernel-module-bsd-comp \
+MACHINE_EXTRA_RRECOMMENDS = "\
kernel-module-i2c-pxa \
kernel-module-snd-htcuniversal-audio \
kernel-module-htcuniversal-acx \
diff --git a/conf/machine/hx4700.conf b/conf/machine/hx4700.conf
index 87e03a7bdd..daa74866b2 100644
--- a/conf/machine/hx4700.conf
+++ b/conf/machine/hx4700.conf
@@ -34,10 +34,7 @@ XSERVER = "xserver-kdrive-w100"
PREFERRED_VERSION_orinoco-modules = "0.15rc1"
MACHINE_EXTRA_RDEPENDS = "tiinit acx-firmware"
-MACHINE_EXTRA_RRECOMMENDS = "kernel-module-nls-cp437 \
- kernel-module-nls-iso8859-1 \
- kernel-module-nls-utf8 \
- kernel-module-af-key \
+MACHINE_EXTRA_RRECOMMENDS = "\
kernel-module-i2c-pxa \
kernel-module-pxa27x-voltage \
kernel-module-pxa27x-voltage-max158xx \
diff --git a/conf/machine/include/ixp4xx.inc b/conf/machine/include/ixp4xx.inc
index 175ec80e6a..6e7d303586 100644
--- a/conf/machine/include/ixp4xx.inc
+++ b/conf/machine/include/ixp4xx.inc
@@ -2,13 +2,24 @@
#@NAME: ixp4xx
#@DESCRIPTION: genric machine configuration for ixp4xx platforms
-MACHINE_FEATURES = "kernel26 usbhost ext2"
+# Set default for common ixp4xx-based machines
+MACHINE_FEATURES ?= "kernel26 usbhost ext2 redboot apex"
+# Select an appropriate default kernel
+PREFERRED_PROVIDER_virtual/kernel ?= "linux-ixp4xx"
+PREFERRED_VERSION_linux-ixp4xx ?= "2.6.21.6+svnr${SRCREV}"
+
+# Add packages required for basic networking support
+MACHINE_ESSENTIAL_EXTRA_RDEPENDS ?= "ixp4xx-npe"
+
+# Set default for 16MB machines - can be overridden for more or less flash.
ROOT_FLASH_SIZE ?= "12"
-EXTRA_IMAGECMD_jffs2 = "--pad --eraseblock=0x20000 -n"
+# Allow for rootfs loaded direct from internal hard disk
+IMAGE_FSTYPES ?= "jffs2 tar.gz"
-PREFERRED_PROVIDER_virtual/kernel ?= "ixp4xx-kernel"
+# Set default for common ixp4xx-based machines
+EXTRA_IMAGECMD_jffs2 = "--pad --eraseblock=0x20000 -n"
require conf/machine/include/tune-xscale.inc
require conf/machine/include/tune-thumb.inc
diff --git a/conf/machine/include/tune-geodelx.conf b/conf/machine/include/tune-geodelx.inc
index 335fadec6e..335fadec6e 100644
--- a/conf/machine/include/tune-geodelx.conf
+++ b/conf/machine/include/tune-geodelx.inc
diff --git a/conf/machine/include/zaurus-2.6.inc b/conf/machine/include/zaurus-2.6.inc
index 8f48c614d1..7e41da0783 100644
--- a/conf/machine/include/zaurus-2.6.inc
+++ b/conf/machine/include/zaurus-2.6.inc
@@ -55,7 +55,7 @@ zaurus_make_installkit () {
cp gnu-tar ${IMAGE_NAME}-installkit/
cp ${IMAGE_NAME}.rootfs.tar.gz ${IMAGE_NAME}-installkit/hdimage1.tgz
else
- cp ${IMAGE_NAME}.rootfs.jffs2 ${IMAGE_NAME}-installkit/initrd.bin
+ [ -f ${IMAGE_NAME}.rootfs.jffs2 ] && cp ${IMAGE_NAME}.rootfs.jffs2 ${IMAGE_NAME}-installkit/initrd.bin
fi
# All zaurus machines except collie need updater.sh
diff --git a/conf/machine/magician.conf b/conf/machine/magician.conf
index 900b24b751..e099825a40 100644
--- a/conf/machine/magician.conf
+++ b/conf/machine/magician.conf
@@ -41,7 +41,6 @@ PREFERRED_PROVIDER_virtual/xserver = "xserver-kdrive"
PREFERRED_VERSION_orinoco-modules = "0.15rc1"
MACHINE_EXTRA_RRECOMMENDS = " \
- kernel-module-af-key \
kernel-module-i2c-pxa \
kernel-module-pxa27x-voltage \
kernel-module-pxa27x-voltage-max158xx \
diff --git a/conf/machine/mpc8313e-rdb.conf b/conf/machine/mpc8313e-rdb.conf
index f32f78ee8a..81c3e29e91 100644
--- a/conf/machine/mpc8313e-rdb.conf
+++ b/conf/machine/mpc8313e-rdb.conf
@@ -10,8 +10,12 @@ PREFERRED_VERSION_u-boot = "git"
MACHINE_FEATURES = "kernel26 usbhost ext2"
+PREFERRED_VERSION_u-boot = "1.3.0"
UBOOT_MACHINE = "MPC8313ERDB_33_config"
+#rootfs on NAND flash
+EXTRA_IMAGECMD_jffs2 = "--pad --big-endian --eraseblock=0x4000 --no-cleanmarkers"
+
#don't try to access tty1
USE_VT = "0"
diff --git a/conf/machine/mpc8323e-rdb.conf b/conf/machine/mpc8323e-rdb.conf
index a6b29552c5..ee2c6144a9 100644
--- a/conf/machine/mpc8323e-rdb.conf
+++ b/conf/machine/mpc8323e-rdb.conf
@@ -3,14 +3,14 @@
#@DESCRIPTION: Machine configuration for the Freescale MPC8323E-RDB
TARGET_ARCH = "powerpc"
-TARGET_FPU = "soft"
+TARGET_FPU ?= "soft"
PACKAGE_EXTRA_ARCHS = "all ${MACHINE} ppc ppce300c2"
PREFERRED_PROVIDER_virtual/kernel = "linux"
-MACHINE_FEATURES = "kernel26 usbhost ext2"
+MACHINE_FEATURES = "kernel26 usbhost pci ext2 uboot"
-PREFERRED_VERSION_u-boot = "git"
+PREFERRED_VERSION_u-boot = "1.1.6"
UBOOT_MACHINE = "MPC8323ERDB_config"
EXTRA_IMAGECMD_jffs2 = "--pad --big-endian --eraseblock=0x20000"
diff --git a/conf/machine/simpad.conf b/conf/machine/simpad.conf
index 3b527293df..ab3da912ba 100644
--- a/conf/machine/simpad.conf
+++ b/conf/machine/simpad.conf
@@ -2,7 +2,7 @@
#@NAME: SIEMENS SIMpad SL4, SIEMENS SIMpad CL4, SIEMENS SIMpad SLC, Telekom T-Sinus PAD
#@DESCRIPTION: Machine configuration for the SA1100 based SIEMENS SIMpad and Telekom T-Sinus PAD devices
-MACHINE_KERNEL_VERSION ?= "2.4"
+MACHINE_KERNEL_VERSION ?= "2.6"
TARGET_ARCH = "arm"
diff --git a/conf/machine/tosa.conf b/conf/machine/tosa.conf
index d70db72f38..d8ea4b8890 100644
--- a/conf/machine/tosa.conf
+++ b/conf/machine/tosa.conf
@@ -6,9 +6,6 @@ require conf/machine/include/zaurus-2.6.inc
IMAGE_FSTYPES ?= "jffs2"
-# newer kernels does not build
-PREFERRED_VERSION_linux-rp = "2.6.17"
-
# wlan-ng Modules
MACHINE_EXTRA_RRECOMMENDS += "wlan-ng-modules-usb"
diff --git a/conf/machine/vmware.conf b/conf/machine/vmware.conf
new file mode 100644
index 0000000000..4822c389a1
--- /dev/null
+++ b/conf/machine/vmware.conf
@@ -0,0 +1,25 @@
+# Copyright (C) 2007, Florian Boor - based on x86.conf:
+# Copyright (C) 2007, Stelios Koroneos - Digital OPSiS, All Rights Reserved
+# Released under the MIT license (see packages/COPYING)
+#@TYPE: Machine
+#@NAME: VMWare
+#@DESCRIPTION: Machine configuration for a VMWare virtual PC
+
+TARGET_ARCH = "i686"
+PACKAGE_EXTRA_ARCHS = "vmware"
+
+PREFERRED_PROVIDER_virtual/kernel = "linux"
+PREFERRED_PROVIDER_virtual/xserver = "xserver-kdrive"
+XSERVER="xserver-kdrive-vesa"
+
+KERNEL_IMAGETYPE = "bzImage"
+
+MACHINE_EXTRA_RRECOMMENDS = " kernel-modules"
+MACHINE_FEATURES = "kernel26 pci usbhost ext2 screen x86"
+
+udevdir = "/dev"
+OLDEST_KERNEL = "2.6.17"
+GLIBC_ADDONS = "nptl"
+GLIBC_EXTRA_OECONF = "--with-tls"
+
+require conf/machine/include/pentiumpro.inc
diff --git a/packages/apex/nslu2/.mtn2git_empty b/contrib/angstrom/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/apex/nslu2/.mtn2git_empty
+++ b/contrib/angstrom/.mtn2git_empty
diff --git a/contrib/angstrom/angstrom.png b/contrib/angstrom/angstrom.png
new file mode 100644
index 0000000000..cdb84ae12b
--- /dev/null
+++ b/contrib/angstrom/angstrom.png
Binary files differ
diff --git a/contrib/angstrom/angstrom.svg b/contrib/angstrom/angstrom.svg
new file mode 100644
index 0000000000..1cce5a547d
--- /dev/null
+++ b/contrib/angstrom/angstrom.svg
@@ -0,0 +1,639 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://web.resource.org/cc/"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="300"
+ height="300"
+ id="svg2"
+ sodipodi:version="0.32"
+ inkscape:version="0.45.1"
+ version="1.0"
+ sodipodi:docbase="/home/pfalcon/linux-ppc/org.openembedded.dev/contrib/angstrom"
+ sodipodi:docname="angstrom.svg"
+ inkscape:export-filename="/mnt/MultimediaA/passer_s.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape">
+ <defs
+ id="defs4" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ecece1"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ gridtolerance="10000"
+ guidetolerance="10"
+ objecttolerance="10"
+ inkscape:pageopacity="1"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.5"
+ inkscape:cx="305.99401"
+ inkscape:cy="-129.81925"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer2"
+ width="300px"
+ height="300px"
+ showgrid="true"
+ gridspacingx="1px"
+ gridspacingy="1px"
+ inkscape:grid-bbox="true"
+ inkscape:grid-points="true"
+ gridoriginy="0px"
+ gridoriginx="0px"
+ inkscape:window-width="1590"
+ inkscape:window-height="961"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:object-points="true" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1">
+ <rect
+ style="opacity:1;color:black;fill:#1c2422;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:0.47713897;stroke-linecap:square;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ id="rect17263"
+ width="46.672043"
+ height="39.924259"
+ x="-176.07109"
+ y="-55.51947"
+ ry="11.246277"
+ rx="11.246277" />
+ <rect
+ style="opacity:1;color:black;fill:#93aca7;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:0.47713897;stroke-linecap:square;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ id="rect17265"
+ width="46.672043"
+ height="39.924259"
+ x="-176.07109"
+ y="-3.3768997"
+ ry="11.246277"
+ rx="11.246277" />
+ <rect
+ style="opacity:1;color:black;fill:#536c67;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:0.47713897;stroke-linecap:square;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ id="rect17267"
+ width="46.672043"
+ height="39.924259"
+ x="-176.07109"
+ y="100.90823"
+ ry="11.246277"
+ rx="11.246277" />
+ <rect
+ style="opacity:1;color:black;fill:#dbe3e2;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:0.47713897;stroke-linecap:square;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ id="rect17269"
+ width="46.672043"
+ height="39.924259"
+ x="-176.07109"
+ y="153.05081"
+ ry="11.246277"
+ rx="11.246277" />
+ <text
+ xml:space="preserve"
+ style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Garamond"
+ x="-219"
+ y="222"
+ id="text1929"
+ sodipodi:linespacing="100%"><tspan
+ sodipodi:role="line"
+ id="tspan1931"
+ x="-219"
+ y="222">Colour scheme</tspan></text>
+ <rect
+ style="opacity:1;color:black;fill:#6f918a;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:0.47713897;stroke-linecap:square;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ id="rect4585"
+ width="46.672043"
+ height="39.924259"
+ x="-176.07109"
+ y="48.765663"
+ ry="11.246277"
+ rx="11.246277" />
+ <g
+ id="g1927"
+ transform="matrix(2.146701,0,0,2.146701,-398.0853,376.2692)"
+ inkscape:export-filename="/home/pfalcon/linux-ppc/org.openembedded.dev/contrib/angstrom/angstrom.png"
+ inkscape:export-xdpi="95.910004"
+ inkscape:export-ydpi="95.910004">
+ <text
+ transform="matrix(0,-1,1,0,0,0)"
+ sodipodi:linespacing="100%"
+ id="text1930"
+ y="94.3358"
+ x="-86.595512"
+ style="font-size:20.16246986px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#536c67;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DejaVu Serif"
+ xml:space="preserve"><tspan
+ y="94.3358"
+ x="-86.595512"
+ id="tspan1932"
+ sodipodi:role="line">ngström</tspan></text>
+ <path
+ id="path1934"
+ d="M 78.016636,93.581841 C 77.603166,93.58185 77.252031,93.729524 76.963231,94.024864 C 76.667895,94.313657 76.520222,94.664793 76.520212,95.078274 C 76.520222,95.498333 76.664617,95.852751 76.953385,96.14153 C 77.235627,96.423757 77.590041,96.564868 78.016636,96.564863 C 78.430148,96.564868 78.781283,96.423757 79.070052,96.14153 C 79.358851,95.852751 79.503246,95.498333 79.503225,95.078274 C 79.503246,94.664793 79.358851,94.313657 79.070052,94.024864 C 78.781283,93.729524 78.430148,93.58185 78.016636,93.581841 M 88.698417,98.277885 L 88.698417,92.902539 L 81.708498,95.580367 L 88.698417,98.277885 M 94.024538,102.43246 L 92.980973,102.43246 L 92.980973,101.14276 L 80.399121,96.328584 C 80.156295,96.801147 79.834688,97.162129 79.434312,97.411529 C 79.033966,97.654375 78.561408,97.775797 78.016636,97.775793 C 77.268445,97.775797 76.631799,97.513265 76.106721,96.988195 C 75.575105,96.463137 75.309298,95.826498 75.309277,95.078274 C 75.309298,94.330066 75.575105,93.693426 76.106721,93.168353 C 76.631799,92.636735 77.268445,92.370921 78.016636,92.370912 C 78.541715,92.370921 79.014274,92.498906 79.434312,92.754865 C 79.847813,93.010843 80.16942,93.375106 80.399121,93.847655 L 92.980973,89.003937 L 92.980973,87.556728 L 94.024538,87.556728 L 94.024538,92.902539 L 92.980973,92.902539 L 92.980973,91.268276 L 89.751828,92.498895 L 89.751828,98.681529 L 92.980973,99.912148 L 92.980973,98.297575 L 94.024538,98.297575 L 94.024538,102.43246"
+ style="font-size:19.43293762px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#536c67;fill-opacity:1;stroke:#536c67;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;font-family:DejaVu Serif" />
+ </g>
+ <g
+ id="g1936"
+ transform="matrix(2.052686,0,0,2.052686,-404.4489,380.2516)"
+ inkscape:export-filename="/home/pfalcon/linux-ppc/org.openembedded.dev/contrib/angstrom/angstrom.png"
+ inkscape:export-xdpi="95.910004"
+ inkscape:export-ydpi="95.910004">
+ <path
+ sodipodi:nodetypes="cc"
+ id="path1938"
+ d="M 12.999066,47.703463 L 55.357092,47.703463"
+ style="fill:#374845;fill-rule:evenodd;stroke:#6f918a;stroke-width:2.15206432;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ transform="matrix(0.794213,0,0,0.794213,161.2522,0.580159)"
+ d="M -150 26 A 10 10 0 1 1 -170,26 A 10 10 0 1 1 -150 26 z"
+ sodipodi:ry="10"
+ sodipodi:rx="10"
+ sodipodi:cy="26"
+ sodipodi:cx="-160"
+ id="path1940"
+ style="color:black;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#6f918a;stroke-width:1.56876302;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ sodipodi:type="arc" />
+ <path
+ sodipodi:nodetypes="cccccccczc"
+ id="path1942"
+ d="M 32.589654,1.1096339 L 32.589654,2.6980598 L 32.589654,11.752088 L 33.330918,14.50536 L 35.02524,14.50536 L 35.766506,11.752088 L 35.766506,2.6980598 L 35.766506,1.1096339 C 35.23703,1.021388 34.707554,0.84489625 34.178079,0.84489625 C 33.648604,0.84489625 33.119128,1.021388 32.589654,1.1096339 z "
+ style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:#93aca7;stroke-width:0.9061324;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="cccccc"
+ id="path1944"
+ d="M 3.4488346,94.677852 L 1.9959014,102.74656 L 2.3485637,105.51135 L 3.6040027,103.02868 L 5.0569359,94.988187 L 3.4488346,94.677852 z "
+ style="fill:#536c67;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.79999995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ transform="matrix(1.601179,0,0,1.601179,218.9345,-53.31984)"
+ d="M -131.25 91.8125 A 1.8125 1.8125 0 1 1 -134.875,91.8125 A 1.8125 1.8125 0 1 1 -131.25 91.8125 z"
+ sodipodi:ry="1.8125"
+ sodipodi:rx="1.8125"
+ sodipodi:cy="91.8125"
+ sodipodi:cx="-133.0625"
+ id="path1946"
+ style="color:black;fill:white;fill-opacity:1;fill-rule:nonzero;stroke:#93aca7;stroke-width:0.42443681;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ sodipodi:type="arc" />
+ <path
+ sodipodi:nodetypes="ccccc"
+ id="path1948"
+ d="M 65.113385,96.296589 L 66.285516,103.16021 L 65.262411,104.69422 L 63.809478,96.653724 L 65.113385,96.296589 z "
+ style="fill:#536c67;fill-opacity:1;fill-rule:evenodd;stroke:#536c67;stroke-width:0.33979961;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="ccc"
+ id="path1950"
+ d="M 58.810986,73.853337 L 56.19236,74.95143 L 58.810986,73.853337"
+ style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#93aca7;stroke-width:0.79286575;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path1952"
+ d="M 31.100503,25.233854 L 1.7477151,95.190781 L 2.0124527,101.51139 L 3.9979853,101.84231 L 34.178079,29.899855 L 64.358173,101.84231 L 66.343705,101.51139 L 66.608443,95.190781 L 37.255655,25.233854 L 34.906107,26.22662 L 34.178079,29.171827 L 33.450051,26.22662 L 31.100503,25.233854 z "
+ style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:#93aca7;stroke-width:0.9061324;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path1954"
+ d="M 50.955828,69.908335 L 55.257816,80.133827 L 59.526711,78.346848 L 56.316767,70.669455 L 50.955828,69.908335 z "
+ style="color:black;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#93aca7;stroke-width:0.5663327;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
+ <path
+ transform="matrix(1.601179,0,0,1.601179,275.5363,-51.72735)"
+ d="M -131.25 91.8125 A 1.8125 1.8125 0 1 1 -134.875,91.8125 A 1.8125 1.8125 0 1 1 -131.25 91.8125 z"
+ sodipodi:ry="1.8125"
+ sodipodi:rx="1.8125"
+ sodipodi:cy="91.8125"
+ sodipodi:cx="-133.0625"
+ id="path1956"
+ style="color:black;fill:white;fill-opacity:1;fill-rule:nonzero;stroke:#93aca7;stroke-width:0.42443681;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ sodipodi:type="arc" />
+ <path
+ sodipodi:nodetypes="cc"
+ id="path1958"
+ d="M 14.322754,46.379775 L 14.322754,49.027151"
+ style="fill:#4d4d4d;fill-rule:evenodd;stroke:#6f918a;stroke-width:3.28472996;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="cc"
+ id="path1960"
+ d="M 54.033404,46.379775 L 54.033404,49.027151"
+ style="fill:#4d4d4d;fill-rule:evenodd;stroke:#6f918a;stroke-width:3.28472996;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="ccc"
+ id="path1962"
+ d="M 57.375198,79.240556 L 54.805887,73.113512 L 57.375198,79.240556"
+ style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#93aca7;stroke-width:0.67959929;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="ccc"
+ id="path1964"
+ d="M 57.721094,71.214665 L 59.929123,76.480163 L 57.721094,71.214665"
+ style="color:black;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#93aca7;stroke-width:0.9061324;stroke-linecap:square;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
+ <path
+ transform="matrix(0.881113,0,0,0.881113,166.3452,-0.181653)"
+ d="M -147.5 33.5 A 2.5 2.5 0 1 1 -152.5,33.5 A 2.5 2.5 0 1 1 -147.5 33.5 z"
+ sodipodi:ry="2.5"
+ sodipodi:rx="2.5"
+ sodipodi:cy="33.5"
+ sodipodi:cx="-150"
+ id="path1966"
+ style="color:black;fill:white;fill-opacity:1;fill-rule:evenodd;stroke:#93aca7;stroke-width:0.77129638;stroke-linecap:square;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ sodipodi:type="arc" />
+ <path
+ id="path1968"
+ d="M 34.012618,42.938185 C 33.639517,43.017596 33.375542,43.351026 33.383866,43.732398 L 33.383866,51.674528 C 33.37981,51.960951 33.530297,52.227368 33.77769,52.371761 C 34.025092,52.516155 34.331066,52.516155 34.578468,52.371761 C 34.825861,52.227368 34.976348,51.960951 34.972292,51.674528 L 34.972292,43.732398 C 34.977598,43.489694 34.871628,43.257887 34.684607,43.10311 C 34.497586,42.948333 34.250045,42.887581 34.012618,42.938185 z "
+ style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:#93aca7;stroke-width:0.67959929;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ transform="matrix(1.058951,0,0,1.058951,192.2794,-7.626709)"
+ d="M -157.5 52.25 A 1.25 1.25 0 1 1 -160,52.25 A 1.25 1.25 0 1 1 -157.5 52.25 z"
+ sodipodi:ry="1.25"
+ sodipodi:rx="1.25"
+ sodipodi:cy="52.25"
+ sodipodi:cx="-158.75"
+ id="path1970"
+ style="color:black;fill:white;fill-opacity:1;fill-rule:evenodd;stroke:#93aca7;stroke-width:0.64176649;stroke-linecap:square;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ sodipodi:type="arc" />
+ <path
+ transform="matrix(1.058951,0,0,1.058951,212.2935,-7.626709)"
+ d="M -157.5 52.25 A 1.25 1.25 0 1 1 -160,52.25 A 1.25 1.25 0 1 1 -157.5 52.25 z"
+ sodipodi:ry="1.25"
+ sodipodi:rx="1.25"
+ sodipodi:cy="52.25"
+ sodipodi:cx="-158.75"
+ id="path1972"
+ style="color:black;fill:white;fill-opacity:1;fill-rule:evenodd;stroke:#93aca7;stroke-width:0.64176649;stroke-linecap:square;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ sodipodi:type="arc" />
+ <path
+ sodipodi:nodetypes="ccc"
+ id="path1974"
+ d="M 10.404637,86.686084 L 42.735724,9.6143312 L 10.404637,86.686084 z "
+ style="fill:white;fill-opacity:0;fill-rule:evenodd;stroke:black;stroke-width:0.56633264;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0" />
+ <path
+ transform="matrix(0.422478,0,0,0.422478,72.47005,73.2379)"
+ d="M -157.5 52.25 A 1.25 1.25 0 1 1 -160,52.25 A 1.25 1.25 0 1 1 -157.5 52.25 z"
+ sodipodi:ry="1.25"
+ sodipodi:rx="1.25"
+ sodipodi:cy="52.25"
+ sodipodi:cx="-158.75"
+ id="path1976"
+ style="color:black;fill:white;fill-opacity:1;fill-rule:evenodd;stroke:#93aca7;stroke-width:1.60860264;stroke-linecap:square;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ sodipodi:type="arc" />
+ </g>
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer2"
+ inkscape:label="tekst">
+ <g
+ id="g18321"
+ transform="matrix(4.972105,0,0,4.972105,472.6639,-140.1673)">
+ <path
+ sodipodi:nodetypes="cc"
+ id="path18323"
+ d="M 12.76643,48.872248 L 54.26807,48.872248"
+ style="fill:#374845;fill-rule:evenodd;stroke:#6f918a;stroke-width:1.60260403;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ transform="matrix(0.778156,0,0,0.778156,158.0222,2.701674)"
+ d="M -150 26 A 10 10 0 1 1 -170,26 A 10 10 0 1 1 -150 26 z"
+ sodipodi:ry="10"
+ sodipodi:rx="10"
+ sodipodi:cy="26"
+ sodipodi:cx="-160"
+ id="path18325"
+ style="color:black;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#6f918a;stroke-width:1.45228577;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ sodipodi:type="arc" />
+ <path
+ sodipodi:nodetypes="cccccccczc"
+ id="path18327"
+ d="M 31.960939,3.220444 L 31.960939,4.7767555 L 31.960939,13.647731 L 32.687217,16.345338 L 34.347283,16.345338 L 35.073562,13.647731 L 35.073562,4.7767555 L 35.073562,3.220444 C 34.554791,3.1339823 34.03602,2.9610588 33.51725,2.9610588 C 32.99848,2.9610588 32.479709,3.1339823 31.960939,3.220444 z "
+ style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:#93aca7;stroke-width:0.53420138;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="cccccc"
+ id="path18329"
+ d="M 3.4092835,94.896918 L 1.9857254,102.80249 L 2.3312576,105.51139 L 3.5613144,103.07891 L 4.9848725,95.200979 L 3.4092835,94.896918 z "
+ style="fill:#536c67;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.79999995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ transform="matrix(1.568807,0,0,1.568807,214.5383,-50.10859)"
+ d="M -131.25 91.8125 A 1.8125 1.8125 0 1 1 -134.875,91.8125 A 1.8125 1.8125 0 1 1 -131.25 91.8125 z"
+ sodipodi:ry="1.8125"
+ sodipodi:rx="1.8125"
+ sodipodi:cy="91.8125"
+ sodipodi:cx="-133.0625"
+ id="path18331"
+ style="color:black;fill:white;fill-opacity:1;fill-rule:nonzero;stroke:#93aca7;stroke-width:0.20430867;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ sodipodi:type="arc" />
+ <path
+ sodipodi:nodetypes="ccccc"
+ id="path18333"
+ d="M 63.80795,96.501979 L 64.956383,103.22684 L 63.953963,104.72984 L 62.530405,96.851893 L 63.80795,96.501979 z "
+ style="fill:#536c67;fill-opacity:1;fill-rule:evenodd;stroke:#536c67;stroke-width:0.32052082;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="ccc"
+ id="path18335"
+ d="M 57.652134,74.493429 L 55.086451,75.569321 L 57.652134,74.493429"
+ style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#93aca7;stroke-width:0.74788189;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path18337"
+ d="M 30.501896,26.856925 L 1.7425569,95.399477 L 2.0019421,101.5923 L 3.9473315,101.91653 L 33.51725,31.42859 L 63.087169,101.91653 L 65.032558,101.5923 L 65.291943,95.399477 L 36.532604,26.856925 L 34.230559,27.82962 L 33.51725,30.715281 L 32.803941,27.82962 L 30.501896,26.856925 z "
+ style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:#93aca7;stroke-width:0.53420138;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path18339"
+ d="M 49.95579,70.628186 L 54.170801,80.646941 L 58.353388,78.896091 L 55.208342,71.373918 L 49.95579,70.628186 z "
+ style="color:black;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#93aca7;stroke-width:0.32052094;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
+ <path
+ transform="matrix(1.568807,0,0,1.568807,269.9957,-48.54829)"
+ d="M -131.25 91.8125 A 1.8125 1.8125 0 1 1 -134.875,91.8125 A 1.8125 1.8125 0 1 1 -131.25 91.8125 z"
+ sodipodi:ry="1.8125"
+ sodipodi:rx="1.8125"
+ sodipodi:cy="91.8125"
+ sodipodi:cx="-133.0625"
+ id="path18341"
+ style="color:black;fill:white;fill-opacity:1;fill-rule:nonzero;stroke:#93aca7;stroke-width:0.20430867;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ sodipodi:type="arc" />
+ <path
+ sodipodi:nodetypes="cc"
+ id="path18343"
+ d="M 14.063356,47.575322 L 14.063356,50.169174"
+ style="fill:#4d4d4d;fill-rule:evenodd;stroke:#6f918a;stroke-width:2.67100668;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="cc"
+ id="path18345"
+ d="M 52.971144,47.575322 L 52.971144,50.169174"
+ style="fill:#4d4d4d;fill-rule:evenodd;stroke:#6f918a;stroke-width:2.67100668;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="ccc"
+ id="path18347"
+ d="M 56.245374,79.77173 L 53.728009,73.768562 L 56.245374,79.77173"
+ style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#93aca7;stroke-width:0.32052082;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="ccc"
+ id="path18349"
+ d="M 56.584277,71.908105 L 58.747664,77.067146 L 56.584277,71.908105"
+ style="color:black;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#93aca7;stroke-width:0.74788189;stroke-linecap:square;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
+ <path
+ transform="matrix(0.863299,0,0,0.863299,163.0122,1.955264)"
+ d="M -147.5 33.5 A 2.5 2.5 0 1 1 -152.5,33.5 A 2.5 2.5 0 1 1 -147.5 33.5 z"
+ sodipodi:ry="2.5"
+ sodipodi:rx="2.5"
+ sodipodi:cy="33.5"
+ sodipodi:cx="-150"
+ id="path18351"
+ style="color:black;fill:white;fill-opacity:1;fill-rule:evenodd;stroke:#93aca7;stroke-width:0.37127414;stroke-linecap:square;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ sodipodi:type="arc" />
+ <path
+ id="path18353"
+ d="M 33.355134,44.203314 C 32.989577,44.281119 32.730939,44.607808 32.739094,44.981469 L 32.739094,52.763027 C 32.73512,53.043659 32.882565,53.30469 33.124956,53.446163 C 33.367356,53.587638 33.667144,53.587638 33.909544,53.446163 C 34.151935,53.30469 34.29938,53.043659 34.295406,52.763027 L 34.295406,44.981469 C 34.300604,44.743672 34.196777,44.516552 34.013537,44.364904 C 33.830297,44.213256 33.587761,44.153733 33.355134,44.203314 z "
+ style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:#93aca7;stroke-width:0.32052082;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ transform="matrix(1.037541,0,0,1.037541,188.4221,-5.339269)"
+ d="M -157.5 52.25 A 1.25 1.25 0 1 1 -160,52.25 A 1.25 1.25 0 1 1 -157.5 52.25 z"
+ sodipodi:ry="1.25"
+ sodipodi:rx="1.25"
+ sodipodi:cy="52.25"
+ sodipodi:cx="-158.75"
+ id="path18355"
+ style="color:black;fill:white;fill-opacity:1;fill-rule:evenodd;stroke:#93aca7;stroke-width:0.30892351;stroke-linecap:square;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ sodipodi:type="arc" />
+ <path
+ transform="matrix(1.037541,0,0,1.037541,208.0316,-5.339269)"
+ d="M -157.5 52.25 A 1.25 1.25 0 1 1 -160,52.25 A 1.25 1.25 0 1 1 -157.5 52.25 z"
+ sodipodi:ry="1.25"
+ sodipodi:rx="1.25"
+ sodipodi:cy="52.25"
+ sodipodi:cx="-158.75"
+ id="path18357"
+ style="color:black;fill:white;fill-opacity:1;fill-rule:evenodd;stroke:#93aca7;stroke-width:0.30892351;stroke-linecap:square;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ sodipodi:type="arc" />
+ <path
+ sodipodi:nodetypes="ccc"
+ id="path18359"
+ d="M 10.224455,87.066726 L 41.901878,11.553195 L 10.224455,87.066726 z "
+ style="fill:white;fill-opacity:0;fill-rule:evenodd;stroke:black;stroke-width:0.53420138;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0" />
+ <path
+ transform="matrix(0.413936,0,0,0.413936,71.03504,73.89043)"
+ d="M -157.5 52.25 A 1.25 1.25 0 1 1 -160,52.25 A 1.25 1.25 0 1 1 -157.5 52.25 z"
+ sodipodi:ry="1.25"
+ sodipodi:rx="1.25"
+ sodipodi:cy="52.25"
+ sodipodi:cx="-158.75"
+ id="path18361"
+ style="color:black;fill:white;fill-opacity:1;fill-rule:evenodd;stroke:#93aca7;stroke-width:0.77432352;stroke-linecap:square;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ sodipodi:type="arc" />
+ </g>
+ <text
+ xml:space="preserve"
+ style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Garamond"
+ x="505.65808"
+ y="413.98828"
+ id="text1921"
+ sodipodi:linespacing="100%"><tspan
+ sodipodi:role="line"
+ id="tspan1923"
+ x="505.65808"
+ y="413.98828">Large version, thinner lines</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Garamond"
+ x="-423.13144"
+ y="648.26971"
+ id="text1925"
+ sodipodi:linespacing="100%"><tspan
+ sodipodi:role="line"
+ id="tspan1927"
+ x="-423.13144"
+ y="648.26971">Small version for psplash</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Garamond"
+ x="-20"
+ y="360"
+ id="text1978"
+ sodipodi:linespacing="100%"><tspan
+ sodipodi:role="line"
+ x="-20"
+ y="360"
+ id="tspan1982">Small version for psplash (300×300)</tspan></text>
+ <g
+ id="g2936"
+ transform="translate(-476.8848,-138.3898)">
+ <g
+ transform="matrix(2.942637,0,0,2.942637,481.8975,134.4777)"
+ id="g21062">
+ <text
+ xml:space="preserve"
+ style="font-size:20.16246986px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#536c67;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DejaVu Serif"
+ x="-86.595512"
+ y="94.3358"
+ id="text1941"
+ sodipodi:linespacing="100%"
+ transform="matrix(0,-1,1,0,0,0)"><tspan
+ sodipodi:role="line"
+ id="tspan1943"
+ x="-86.595512"
+ y="94.3358">ngström</tspan></text>
+ <path
+ style="font-size:19.43293762px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#536c67;fill-opacity:1;stroke:none;stroke-width:0.10194937;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;font-family:DejaVu Serif"
+ d="M 78.016636,93.581841 C 77.603166,93.58185 77.252031,93.729524 76.963231,94.024864 C 76.667895,94.313657 76.520222,94.664793 76.520212,95.078274 C 76.520222,95.498333 76.664617,95.852751 76.953385,96.14153 C 77.235627,96.423757 77.590041,96.564868 78.016636,96.564863 C 78.430148,96.564868 78.781283,96.423757 79.070052,96.14153 C 79.358851,95.852751 79.503246,95.498333 79.503225,95.078274 C 79.503246,94.664793 79.358851,94.313657 79.070052,94.024864 C 78.781283,93.729524 78.430148,93.58185 78.016636,93.581841 M 94.024538,102.43246 L 92.980973,102.43246 L 92.980973,101.14276 L 80.399121,96.328584 C 80.156295,96.801147 79.834688,97.162129 79.434312,97.411529 C 79.033966,97.654375 78.561408,97.775797 78.016636,97.775793 C 77.268445,97.775797 76.631799,97.513265 76.106721,96.988195 C 75.575105,96.463137 75.309298,95.826498 75.309277,95.078274 C 75.309298,94.330066 75.575105,93.693426 76.106721,93.168353 C 76.631799,92.636735 77.268445,92.370921 78.016636,92.370912 C 78.541715,92.370921 79.014274,92.498906 79.434312,92.754865 C 79.847813,93.010843 80.16942,93.375106 80.399121,93.847655 L 92.980973,89.003937 L 92.980973,87.556728 L 94.024538,87.556728 L 94.024538,92.902539 L 92.980973,92.902539 L 92.980973,91.268276 L 81.708498,95.580367 L 92.980973,99.912148 L 92.980973,98.297575 L 94.024538,98.297575 L 94.024538,102.43246"
+ id="text17274"
+ sodipodi:nodetypes="ccssscsccccccccscscscccccccccccc" />
+ </g>
+ <g
+ transform="matrix(2.813764,0,0,2.813764,476.4644,139.9367)"
+ id="g21067">
+ <path
+ style="fill:#374845;fill-rule:evenodd;stroke:#6f918a;stroke-width:2.15206432;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 12.999066,47.703463 L 55.357092,47.703463"
+ id="path1945"
+ sodipodi:nodetypes="cc" />
+ <path
+ sodipodi:type="arc"
+ style="color:black;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#6f918a;stroke-width:1.56876302;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ id="path1947"
+ sodipodi:cx="-160"
+ sodipodi:cy="26"
+ sodipodi:rx="10"
+ sodipodi:ry="10"
+ d="M -150 26 A 10 10 0 1 1 -170,26 A 10 10 0 1 1 -150 26 z"
+ transform="matrix(0.794213,0,0,0.794213,161.2522,0.580159)" />
+ <path
+ style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:#93aca7;stroke-width:0.9061324;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 32.589654,1.1096339 L 32.589654,2.6980598 L 32.589654,11.752088 L 33.330918,14.50536 L 35.02524,14.50536 L 35.766506,11.752088 L 35.766506,2.6980598 L 35.766506,1.1096339 C 35.23703,1.021388 34.707554,0.84489625 34.178079,0.84489625 C 33.648604,0.84489625 33.119128,1.021388 32.589654,1.1096339 z "
+ id="path1949"
+ sodipodi:nodetypes="cccccccczc" />
+ <path
+ style="fill:#536c67;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.79999995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 3.4488346,94.677852 L 1.9959014,102.74656 L 2.3485637,105.51135 L 3.6040027,103.02868 L 5.0569359,94.988187 L 3.4488346,94.677852 z "
+ id="path2854"
+ sodipodi:nodetypes="cccccc" />
+ <path
+ sodipodi:type="arc"
+ style="color:black;fill:white;fill-opacity:1;fill-rule:nonzero;stroke:#93aca7;stroke-width:0.42443681;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ id="path3767"
+ sodipodi:cx="-133.0625"
+ sodipodi:cy="91.8125"
+ sodipodi:rx="1.8125"
+ sodipodi:ry="1.8125"
+ d="M -131.25 91.8125 A 1.8125 1.8125 0 1 1 -134.875,91.8125 A 1.8125 1.8125 0 1 1 -131.25 91.8125 z"
+ transform="matrix(1.601179,0,0,1.601179,218.9345,-53.31984)" />
+ <path
+ style="fill:#536c67;fill-opacity:1;fill-rule:evenodd;stroke:#536c67;stroke-width:0.33979961;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 65.113385,96.296589 L 66.285516,103.16021 L 65.262411,104.69422 L 63.809478,96.653724 L 65.113385,96.296589 z "
+ id="path2878"
+ sodipodi:nodetypes="ccccc" />
+ <path
+ style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#93aca7;stroke-width:0.79286575;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 58.810986,73.853337 L 56.19236,74.95143 L 58.810986,73.853337"
+ id="path10016"
+ sodipodi:nodetypes="ccc" />
+ <path
+ style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:#93aca7;stroke-width:0.9061324;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 31.100503,25.233854 L 1.7477151,95.190781 L 2.0124527,101.51139 L 3.9979853,101.84231 L 34.178079,29.899855 L 64.358173,101.84231 L 66.343705,101.51139 L 66.608443,95.190781 L 37.255655,25.233854 L 34.906107,26.22662 L 34.178079,29.171827 L 33.450051,26.22662 L 31.100503,25.233854 z "
+ id="path1951" />
+ <path
+ style="color:black;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#93aca7;stroke-width:0.5663327;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ d="M 50.955828,69.908335 L 55.257816,80.133827 L 59.526711,78.346848 L 56.316767,70.669455 L 50.955828,69.908335 z "
+ id="rect6452" />
+ <path
+ sodipodi:type="arc"
+ style="color:black;fill:white;fill-opacity:1;fill-rule:nonzero;stroke:#93aca7;stroke-width:0.42443681;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ id="path3765"
+ sodipodi:cx="-133.0625"
+ sodipodi:cy="91.8125"
+ sodipodi:rx="1.8125"
+ sodipodi:ry="1.8125"
+ d="M -131.25 91.8125 A 1.8125 1.8125 0 1 1 -134.875,91.8125 A 1.8125 1.8125 0 1 1 -131.25 91.8125 z"
+ transform="matrix(1.601179,0,0,1.601179,275.5363,-51.72735)" />
+ <path
+ style="fill:#4d4d4d;fill-rule:evenodd;stroke:#6f918a;stroke-width:3.28472996;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 14.322754,46.379775 L 14.322754,49.027151"
+ id="path5559"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:#4d4d4d;fill-rule:evenodd;stroke:#6f918a;stroke-width:3.28472996;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 54.033404,46.379775 L 54.033404,49.027151"
+ id="path5561"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#93aca7;stroke-width:0.67959929;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 57.375198,79.240556 L 54.805887,73.113512 L 57.375198,79.240556"
+ id="path8228"
+ sodipodi:nodetypes="ccc" />
+ <path
+ style="color:black;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#93aca7;stroke-width:0.9061324;stroke-linecap:square;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ d="M 57.721094,71.214665 L 59.929123,76.480163 L 57.721094,71.214665"
+ id="path9123"
+ sodipodi:nodetypes="ccc" />
+ <path
+ sodipodi:type="arc"
+ style="color:black;fill:white;fill-opacity:1;fill-rule:evenodd;stroke:#93aca7;stroke-width:0.77129638;stroke-linecap:square;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ id="path13689"
+ sodipodi:cx="-150"
+ sodipodi:cy="33.5"
+ sodipodi:rx="2.5"
+ sodipodi:ry="2.5"
+ d="M -147.5 33.5 A 2.5 2.5 0 1 1 -152.5,33.5 A 2.5 2.5 0 1 1 -147.5 33.5 z"
+ transform="matrix(0.881113,0,0,0.881113,166.3452,-0.181653)" />
+ <path
+ style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:#93aca7;stroke-width:0.67959929;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 34.012618,42.938185 C 33.639517,43.017596 33.375542,43.351026 33.383866,43.732398 L 33.383866,51.674528 C 33.37981,51.960951 33.530297,52.227368 33.77769,52.371761 C 34.025092,52.516155 34.331066,52.516155 34.578468,52.371761 C 34.825861,52.227368 34.976348,51.960951 34.972292,51.674528 L 34.972292,43.732398 C 34.977598,43.489694 34.871628,43.257887 34.684607,43.10311 C 34.497586,42.948333 34.250045,42.887581 34.012618,42.938185 z "
+ id="path4672" />
+ <path
+ sodipodi:type="arc"
+ style="color:black;fill:white;fill-opacity:1;fill-rule:evenodd;stroke:#93aca7;stroke-width:0.64176649;stroke-linecap:square;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ id="path11020"
+ sodipodi:cx="-158.75"
+ sodipodi:cy="52.25"
+ sodipodi:rx="1.25"
+ sodipodi:ry="1.25"
+ d="M -157.5 52.25 A 1.25 1.25 0 1 1 -160,52.25 A 1.25 1.25 0 1 1 -157.5 52.25 z"
+ transform="matrix(1.058951,0,0,1.058951,192.2794,-7.626709)" />
+ <path
+ sodipodi:type="arc"
+ style="color:black;fill:white;fill-opacity:1;fill-rule:evenodd;stroke:#93aca7;stroke-width:0.64176649;stroke-linecap:square;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ id="path11907"
+ sodipodi:cx="-158.75"
+ sodipodi:cy="52.25"
+ sodipodi:rx="1.25"
+ sodipodi:ry="1.25"
+ d="M -157.5 52.25 A 1.25 1.25 0 1 1 -160,52.25 A 1.25 1.25 0 1 1 -157.5 52.25 z"
+ transform="matrix(1.058951,0,0,1.058951,212.2935,-7.626709)" />
+ <path
+ style="fill:white;fill-opacity:0;fill-rule:evenodd;stroke:black;stroke-width:0.56633264;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0"
+ d="M 10.404637,86.686084 L 42.735724,9.6143312 L 10.404637,86.686084 z "
+ id="path3777"
+ sodipodi:nodetypes="ccc" />
+ <path
+ sodipodi:type="arc"
+ style="color:black;fill:white;fill-opacity:1;fill-rule:evenodd;stroke:#93aca7;stroke-width:1.60860264;stroke-linecap:square;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ id="path11909"
+ sodipodi:cx="-158.75"
+ sodipodi:cy="52.25"
+ sodipodi:rx="1.25"
+ sodipodi:ry="1.25"
+ d="M -157.5 52.25 A 1.25 1.25 0 1 1 -160,52.25 A 1.25 1.25 0 1 1 -157.5 52.25 z"
+ transform="matrix(0.422478,0,0,0.422478,72.47005,73.2379)" />
+ </g>
+ </g>
+ <rect
+ style="opacity:1;color:black;fill:#536c67;fill-opacity:1;fill-rule:evenodd;stroke:#536c67;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ id="rect2964"
+ width="0"
+ height="15.817692"
+ x="436.01993"
+ y="359.46634"
+ rx="2.2974668"
+ ry="4.2123618" />
+ <rect
+ style="opacity:1;color:black;fill:#536c67;fill-opacity:1;fill-rule:evenodd;stroke:#536c67;stroke-width:0.46281698;stroke-linecap:square;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ id="rect2966"
+ width="2.6431277"
+ height="13.088069"
+ x="255.23138"
+ y="270.68051" />
+ </g>
+</svg>
diff --git a/contrib/angstrom/build-release.sh b/contrib/angstrom/build-release.sh
new file mode 100755
index 0000000000..efaaecf110
--- /dev/null
+++ b/contrib/angstrom/build-release.sh
@@ -0,0 +1,91 @@
+#!/bin/bash
+
+DO_UCLIBC=0
+
+do_build() {
+ echo "MACHINE = \"$BUILD_MACHINE\"" > conf/auto.conf
+
+ BUILD_MODE="glibc"
+ if [ "$BUILD_CLEAN" != "" ]
+ then
+ bitbake -c clean $BUILD_CLEAN
+ fi
+
+ for target in $BUILD_TARGETS
+ do
+ bitbake $target && do_report_success
+ done
+
+ if [ $DO_UCLIBC = 1 ]
+ then
+ BUILD_MODE="uclibc"
+ echo 'ANGSTROM_MODE = "uclibc"' >> conf/auto.conf
+ for target in $BUILD_TARGETS
+ do
+ bitbake $target && do_report_success
+ done
+ fi
+}
+
+do_report_success() {
+
+ echo "$(date -u +%s) $target $BUILD_MODE $machine" >> autobuilder.log
+}
+
+# No graphics
+for machine in ep93xx gumstix-connex gumstix-verdex efika omap5912osk
+do
+ BUILD_MACHINE=$machine
+ BUILD_TARGETS="minimal-image console-image"
+ do_build
+done
+
+for machine in ixp4xxle ixp4xxbe
+do
+ BUILD_MACHINE=$machine
+ BUILD_TARGETS="nslu2-minimal-image"
+ do_build
+done
+
+# build altboot images for zaurus
+for machine in c7x0 poodle tosa akita spitz collie
+do
+ BUILD_MACHINE=$machine
+ BUILD_TARGETS="altboot-console-image"
+ do_build
+done
+
+# graphics, flash storage
+for machine in fic-gta01 a780 at91sam9263ek qemuarm h2200 h4000 poodle tosa hx4700 c7x0 spitz akita collie
+do
+ BUILD_MACHINE=$machine
+ BUILD_TARGETS="minimal-image console-image x11-image"
+ do_build
+done
+
+# graphics, disk storage
+for machine in spitz
+do
+ BUILD_MACHINE=$machine
+ BUILD_TARGETS="x11-gpe-image x11-pimlico-image x11-office-image"
+ BUILD_CLEAN="qmake2-native"
+ do_build
+done
+
+#phones
+for machine in fic-gta01 a780
+do
+ BUILD_MACHINE=$machine
+ BUILD_TARGETS="openmoko-image"
+ BUILD_CLEAN="qmake2-native"
+ do_build
+done
+
+#native toolchain
+for machine in ep93xx a780 efika collie ixp4xxbe
+do
+ BUILD_MACHINE=$machine
+ BUILD_TARGETS="gcc binutils pkgconfig make automake autoconf libtool m4 perl python gdb strace screen"
+ do_build
+done
+
diff --git a/contrib/angstrom/rss.php b/contrib/angstrom/rss.php
new file mode 100644
index 0000000000..cf5a9e0218
--- /dev/null
+++ b/contrib/angstrom/rss.php
@@ -0,0 +1,48 @@
+<?php echo ('<?xml version="1.0" encoding="utf-8"?>'); ?>
+<rss version="2.0" xml:base="http://www.angstrom-distribution.org/unstable/autobuild/" xmlns:dc="http://purl.org/dc/elements/1.1/">
+ <channel>
+ <title>Ångström autobuilder updates</title>
+ <link>http://www.angstrom-distribution.org/unstable/autobuild/</link>
+ <description></description>
+ <language>en</language>
+<?php
+
+$base_path = "/home/angstrom/website/unstable/autobuild";
+
+if ($handle = opendir("$base_path"))
+{
+ while (false !== ($file = readdir($handle)))
+ {
+ if(!(is_dir($file) && $file != "." && $file != ".."))
+ {
+ continue;
+ }
+
+ $second_handle = opendir("$base_path/$file/");
+
+ while (false !== ($file2 = readdir($second_handle)))
+ {
+ if(is_file("/$base_path/$file/$file2"))
+ {
+ $fmtime = filemtime("$file/$file2");
+
+ echo "<item>\n"
+ echo "<title>$file/$file2 uploaded</title>\n";
+ echo " <link>http://www.angstrom-distribution.org/unstable/autobuild/$file/$file2</link>\n";
+
+ $rsstime = strftime("%a, %d %b %Y %T +0100", $fmtime);
+
+ echo "<pubDate>$rsstime</pubDate>\n";
+ echo "<dc:creator>Angstrom autobuilder</dc:creator>";
+ echo "</item>\n";
+ }
+ }
+
+ closedir($second_handle);
+ }
+
+ closedir($handle);
+}
+?>
+ </channel>
+</rss>
diff --git a/contrib/angstrom/rss2.php b/contrib/angstrom/rss2.php
new file mode 100644
index 0000000000..995c344e14
--- /dev/null
+++ b/contrib/angstrom/rss2.php
@@ -0,0 +1,63 @@
+<?php
+
+/*
+ * This generator expect only log from autobuilder in simple format:
+ * TIME_OF_BUILD BUILD_TARGET BUILD_MODE MACHINE
+ *
+ * where TIME_OF_BUILD is epoch
+ *
+ * All what it does is parsing log and output it in reverse order (new builds
+ * first) in RSS 2.0 format.
+ *
+ * (C) 2007 Marcin Juszkiewicz
+ *
+ * License: MIT
+ *
+ */
+
+$build_link_base = 'http://www.angstrom-distribution.org/unstable/autobuild/';
+
+$builder_log_date = file('autobuilder.log');
+
+if(empty($builder_log_date))
+ die("No logs\n");
+
+$builder_log_date = array_reverse($builder_log_date);
+
+$rss_xml = new xmlWriter();
+
+if(!$rss_xml)
+ die("Unable to create XML Writer\n");
+
+$rss_xml->openMemory();
+
+$rss_xml->startDocument('1.0','utf-8');
+$rss_xml->startElement('rss');
+$rss_xml->writeAttribute('version', '2.0');
+
+$rss_xml->startElement('channel');
+
+$rss_xml->writeElement('title', 'Ångström autobuilder updates');
+$rss_xml->writeElement('link', $build_link_base);
+$rss_xml->writeElement('description', 'Ångström autobuilder updates list');
+
+foreach($builder_log_date as $build)
+{
+ $build = str_replace("\n", "", $build);
+ $data = explode(' ', $build);
+
+ $rss_xml->startElement('item');
+ $rss_xml->writeElement('title', "{$data[1]} ({$data[2]}) built for {$data[3]}");
+ $rss_xml->writeElement('link', "{$build_link_base}{$data[3]}/");
+ $rss_xml->writeElement('pubDate', date('r', $data[0]));
+
+ $rss_xml->endElement();
+}
+
+$rss_xml->endElement();
+$rss_xml->endElement();
+
+echo $rss_xml->outputMemory(true);
+
+echo "\n";
+?>
diff --git a/contrib/feed-browser/includes/config.inc b/contrib/feed-browser/includes/config.inc
index e1999b066f..c4a9fc0fc3 100644
--- a/contrib/feed-browser/includes/config.inc
+++ b/contrib/feed-browser/includes/config.inc
@@ -139,4 +139,163 @@ $feeds = array(
)
);
-?>
+
+$ipkpath = "/var/www/angstrom/unstable/feed/unsorted";
+$cpu_archs = array('arm-oabi', 'armv4', 'armv4t', 'armv5te', 'armv6', 'armv7', 'avr32', 'bfin', 'i386', 'i486', 'i586', 'i686', 'iwmmxt', 'ppc405', 'ppc603e', 'sparc');
+$device_archs = array(
+ "a1200" => "armv5te",
+ "a780"=> "armv5te",
+ "acern30",
+ "adsp-bf537-stamp" => "bfin",
+ "adzs-bf538f-ezlite" => "bfin",
+ "akita" => "armv5te",
+ "alix",
+ "amsdelta",
+ "asus620",
+ "asus730",
+ "at32stk1000" => "avr32",
+ "at91sam9260ek" => "armv5te",
+ "at91sam9261ek" => "armv5te",
+ "at91sam9263ek" => "armv5te",
+ "atngw100" => "avr32",
+ "aximx50" => "armv5te",
+ "aximx50v" => "armv5te",
+ "borzoi" => "armv5te",
+ "boxer" => "armv5te",
+ "c7x0" => "armv5te",
+ "colinux",
+ "collie",
+ "compulab-pxa270" => "armv5te",
+ "corgi" => "armv5te",
+ "davinci-dvevm",
+ "db1200",
+ "devkitidp-pxa255" => "armv5te",
+ "dht-walnut" => "ppc405",
+ "e680" => "armv5te",
+ "efika" => "ppc603e",
+ "ep93xx" => "armv4t",
+ "epia",
+ "er0100" => "armv5te",
+ "eteng500" => "armv5te",
+ "fic-gta01" => "armv4t",
+ "fic-gta02" => "armv4t",
+ "fsg3be",
+ "geodegx",
+ "geodelx",
+ "guinness",
+ "gumstix-connex" => "armv5te",
+ "gumstix-verdex" => "armv5te",
+ "h1910",
+ "h1940",
+ "h2200" => "armv5te",
+ "h3600" => "arm-oabi",
+ "h3800" => "arm-oabi",
+ "h3900" => "armv5te",
+ "h4000" => "armv5te",
+ "h5000" => "armv5te",
+ "h6300" => "armv4t",
+ "htcalpine",
+ "htcapache",
+ "htcblueangel",
+ "htchimalaya",
+ "htcsable",
+ "htctornado",
+ "htcuniversal" => "armv5te",
+ "htcwallaby",
+ "husky" => "armv5te",
+ "hx2000" => "armv5te",
+ "hx4700" => "armv5te",
+ "i586-generic" => "i586",
+ "i686-generic" => "i586",
+ "ixp4xx",
+ "ixp4xxbe" => "armv5teb",
+ "ixp4xxle" => "armv5te",
+ "jornada56x",
+ "jornada6xx",
+ "jornada7xx",
+ "kb9202" => "armv4t",
+ "ks8695",
+ "lite5200",
+ "logicpd-pxa270" => "armv5te",
+ "looxc550",
+ "lsarm",
+ "lsppchd",
+ "lsppchg",
+ "magicbox",
+ "magician" => "armv5te",
+ "mainstone" => "armv5te",
+ "mnci",
+ "mtx-1",
+ "mtx-2",
+ "mtx-3",
+ "mtx-3a",
+ "mx21ads" => "armv5te",
+ "mx31ads" => "armv6",
+ "n2100",
+ "native",
+ "navman-icn330",
+ "netbook-pro" => "armv5te",
+ "netvista",
+ "nokia770" => "armv5te",
+ "nokia800",
+ "nslu2" => "armv5te",
+ "nslu2be" => "armv5teb",
+ "nslu2le" => "armv5te",
+ "omap1510inn" => "armv5te",
+ "omap1610h2" => "armv5te",
+ "omap1710h3" => "armv5te",
+ "omap2420h4",
+ "omap2430sdp",
+ "omap5912osk" => "armv5te",
+ "palmld" => "armv5te",
+ "palmt650" => "armv5te",
+ "palmt680",
+ "palmtc",
+ "palmtt",
+ "palmtt2",
+ "palmtt3",
+ "palmtt5",
+ "palmtx",
+ "palmz31",
+ "palmz71",
+ "palmz72",
+ "poodle" => "armv5te",
+ "progear",
+ "qemuarm" => "armv5te",
+ "qemux86",
+ "rb500",
+ "rokre2" => "armv5te",
+ "rokre6" => "armv5te",
+ "rt3000",
+ "rx1950",
+ "rx3000",
+ "sarge-at91" => "armv4t",
+ "sequoia",
+ "shark" => "arm-oabi",
+ "shepherd" => "armv5te",
+ "simpad" => "arm-oabi",
+ "smdk2440" => "armv4t",
+ "smdk2443" => "armv4t",
+ "spitz" => "armv5te",
+ "storcenter",
+ "sun4cdm",
+ "terrier" => "armv5te",
+ "titan",
+ "tosa" => "armv5te",
+ "triton",
+ "ts72xx",
+ "turbostation",
+ "wgt634u",
+ "wl500g",
+ "wrap",
+ "wrt54",
+ "x86-32-nocona",
+ "x86-prescott",
+ "x86-uml",
+ "x86",
+ "xilinx-ml403",
+ "xilinx-ml410",
+ "xxs1500",
+ );
+
+?>
diff --git a/contrib/python/generate-manifest-2.5.py b/contrib/python/generate-manifest-2.5.py
index 76a203a84f..440434229c 100755
--- a/contrib/python/generate-manifest-2.5.py
+++ b/contrib/python/generate-manifest-2.5.py
@@ -2,7 +2,8 @@
# generate Python Manifest for the OpenEmbedded build system
# (C) 2002-2007 Michael 'Mickey' Lauer <mlauer@vanille-media.de>
-# MIT license
+# (C) 2007 Jeremy Laine
+# licensed under MIT, see COPYING.MIT
import os
import sys
@@ -10,18 +11,17 @@ import time
VERSION = "2.5.1"
# increase when touching python-core, this should be the same ml version as in python_2.5.1.bb
-BASEREV = 1
+BASEREV = 5
__author__ = "Michael 'Mickey' Lauer <mickey@Vanille.de>"
-__version__ = "20070823"
+__version__ = "20071205"
class MakefileMaker:
def __init__( self, outfile ):
"""initialize"""
self.packages = {}
- self.sourcePrefix = "/lib/python%s/" % VERSION[:3]
- self.targetPrefix = "${libdir}/python%s" % VERSION[:3]
+ self.targetPrefix = "${libdir}/python%s/" % VERSION[:3]
self.output = outfile
self.out( "#" * 120 )
self.out( "### AUTO-GENERATED by '%s' [(C) 2002-2007 Michael 'Mickey' Lauer <mlauer@vanille-media.de>] on %s" % ( sys.argv[0], time.asctime() ) )
@@ -39,9 +39,8 @@ class MakefileMaker:
"""print a line to the output file"""
print >> self.output, data
- def setPrefix( self, sourcePrefix, targetPrefix ):
+ def setPrefix( self, targetPrefix ):
"""set a file prefix for addPackage files"""
- self.sourcePrefix = sourcePrefix
self.targetPrefix = targetPrefix
def doProlog( self ):
@@ -54,10 +53,10 @@ class MakefileMaker:
filenames = filenames.split()
fullFilenames = []
for filename in filenames:
- if filename[0] != "/":
- fullFilenames.append( ( "%s%s" % ( self.sourcePrefix, filename ), "%s%s" % ( self.targetPrefix, filename ) ) )
+ if filename[0] != "$":
+ fullFilenames.append( "%s%s" % ( self.targetPrefix, filename ) )
else:
- fullFilenames.append( ( filename, filename ) )
+ fullFilenames.append( filename )
self.packages[name] = revision, description, dependencies, fullFilenames
def doBody( self ):
@@ -101,7 +100,7 @@ class MakefileMaker:
#
self.out( 'DESCRIPTION_%s="%s"' % ( name, desc ) )
self.out( 'PR_%s="ml%d"' % ( name, rev + BASEREV ) )
- self.out( 'RDEPENDS_%s="%s"' % ( name, deps.replace( ",", "" ) ) )
+ self.out( 'RDEPENDS_%s="%s"' % ( name, deps ) )
line = 'FILES_%s="' % name
@@ -110,14 +109,14 @@ class MakefileMaker:
#
dirset = {} # if python had a set-datatype this would be sufficient. for now, we're using a dict instead.
- for source, target in files:
+ for target in files:
dirset[os.path.dirname( target )] = True
#
# generate which files to copy for the target (-dfR because whole directories are also allowed)
#
- for source, target in files:
+ for target in files:
line += "%s " % target
line += '"'
@@ -147,33 +146,29 @@ if __name__ == "__main__":
# Parameters: revision, name, description, dependencies, filenames
#
- m.setPrefix( "/", "/usr/" )
-
- m.addPackage( 2, "python-core", "Python Interpreter and core modules (needed!)", "",
- "lib/python2.5/__future__.* lib/python2.5/copy.* lib/python2.5/copy_reg.* lib/python2.5/ConfigParser.* " +
- "lib/python2.5/getopt.* lib/python2.5/linecache.* lib/python2.5/new.* " +
- "lib/python2.5/os.* lib/python2.5/posixpath.* " +
- "lib/python2.5/warnings.* lib/python2.5/site.* lib/python2.5/stat.* " +
- "lib/python2.5/UserDict.* lib/python2.5/UserList.* lib/python2.5/UserString.* " +
- "lib/python2.5/lib-dynload/binascii.so lib/python2.5/lib-dynload/struct.so lib/python2.5/lib-dynload/time.so " +
- "lib/python2.5/lib-dynload/xreadlines.so lib/python2.5/types.* bin/python*" )
+ m.addPackage( 0, "python-core", "Python Interpreter and core modules (needed!)", "",
+ "__future__.* copy.* copy_reg.* ConfigParser.* " +
+ "getopt.* linecache.* new.* " +
+ "os.* posixpath.* struct.* " +
+ "warnings.* site.* stat.* " +
+ "UserDict.* UserList.* UserString.* " +
+ "lib-dynload/binascii.so lib-dynload/_struct.so lib-dynload/time.so " +
+ "lib-dynload/xreadlines.so types.* ${bindir}/python*" )
m.addPackage( 0, "python-core-dbg", "Python core module debug information", "python-core",
- "lib/python2.5/lib-dynload/.debug bin/.debug lib/.debug" )
+ "lib-dynload/.debug ${bindir}/.debug ${libdir}/.debug" )
m.addPackage( 0, "python-devel", "Python Development Package", "python-core",
- "include lib/python2.5/config" ) # package
+ "${includedir} config" ) # package
- m.addPackage( 0, "python-idle", "Python Integrated Development Environment", "python-core, python-tkinter",
- "bin/idle lib/python2.5/idlelib" ) # package
+ m.addPackage( 0, "python-idle", "Python Integrated Development Environment", "python-core python-tkinter",
+ "${bindir}/idle idlelib" ) # package
- m.addPackage( 0, "python-pydoc", "Python Interactive Help Support", "python-core, python-lang, python-stringold, python-re",
- "bin/pydoc lib/python2.5/pydoc.*" )
+ m.addPackage( 0, "python-pydoc", "Python Interactive Help Support", "python-core python-lang python-stringold python-re",
+ "${bindir}/pydoc pydoc.*" )
m.addPackage( 0, "python-smtpd", "Python Simple Mail Transport Daemon", "python-core python-netserver python-email python-mime",
- "bin/smtpd.*" )
-
- m.setPrefix( "/lib/python2.5/", "${libdir}/python2.5/" )
+ "${bindir}/smtpd.*" )
m.addPackage( 0, "python-audio", "Python Audio Handling", "python-core",
"wave.* chunk.* sndhdr.* lib-dynload/ossaudiodev.so lib-dynload/audioop.so" )
@@ -181,7 +176,7 @@ if __name__ == "__main__":
m.addPackage( 0, "python-bsddb", "Python Berkeley Database Bindings", "python-core",
"bsddb" ) # package
- m.addPackage( 0, "python-codecs", "Python Codecs, Encodings & i18n Support", "python-core",
+ m.addPackage( 0, "python-codecs", "Python Codecs, Encodings & i18n Support", "python-core python-lang",
"codecs.* encodings gettext.* locale.* lib-dynload/_locale.so lib-dynload/unicodedata.so stringprep.* xdrlib.*" )
m.addPackage( 0, "python-compile", "Python Bytecode Compilation Support", "python-core",
@@ -190,31 +185,34 @@ if __name__ == "__main__":
m.addPackage( 0, "python-compiler", "Python Compiler Support", "python-core",
"compiler" ) # package
- m.addPackage( 0, "python-compression", "Python High Level Compression Support", "python-core, python-zlib",
+ m.addPackage( 0, "python-compression", "Python High Level Compression Support", "python-core python-zlib",
"gzip.* zipfile.*" )
m.addPackage( 0, "python-crypt", "Python Basic Cryptographic and Hashing Support", "python-core",
- "lib-dynload/crypt.so lib-dynload/md5.so lib-dynload/rotor.so lib-dynload/sha.so" )
+ "hashlib.* md5.* sha.* lib-dynload/crypt.so lib-dynload/_hashlib.so lib-dynload/_sha256.so lib-dynload/_sha512.so" )
- m.addPackage( 0, "python-textutils", "Python Option Parsing, Text Wrapping and Comma-Separated-Value Support", "python-core, python-io, python-re, python-stringold",
+ m.addPackage( 0, "python-textutils", "Python Option Parsing, Text Wrapping and Comma-Separated-Value Support", "python-core python-io python-re python-stringold",
"lib-dynload/_csv.so csv.* optparse.* textwrap.*" )
m.addPackage( 0, "python-curses", "Python Curses Support", "python-core",
- "curses lib-dynload/_curses.so lib-dynload/_curses_panel.so" ) # package
+ "curses lib-dynload/_curses.so lib-dynload/_curses_panel.so" ) # directory + low level module
+
+ m.addPackage( 0, "python-ctypes", "Python C Types Support", "python-core",
+ "ctypes lib-dynload/_ctypes.so" ) # directory + low level module
- m.addPackage( 0, "python-datetime", "Python Calendar and Time support", "python-core, python-codecs",
+ m.addPackage( 0, "python-datetime", "Python Calendar and Time support", "python-core python-codecs",
"_strptime.* calendar.* lib-dynload/datetime.so" )
m.addPackage( 0, "python-db", "Python File-Based Database Support", "python-core",
"anydbm.* dumbdbm.* whichdb.* " )
- m.addPackage( 0, "python-debugger", "Python Debugger", "python-core, python-io, python-lang, python-re, python-stringold, python-shell",
+ m.addPackage( 0, "python-debugger", "Python Debugger", "python-core python-io python-lang python-re python-stringold python-shell",
"bdb.* pdb.*" )
m.addPackage( 0, "python-distutils", "Python Distribution Utilities", "python-core",
"config distutils" ) # package
- m.addPackage( 0, "python-email", "Python Email Support", "python-core, python-io, python-re, python-mime, python-audio python-image",
+ m.addPackage( 0, "python-email", "Python Email Support", "python-core python-io python-re python-mime python-audio python-image",
"email" ) # package
m.addPackage( 0, "python-fcntl", "Python's fcntl Interface", "python-core",
@@ -232,7 +230,7 @@ if __name__ == "__main__":
m.addPackage( 0, "python-image", "Python Graphical Image Handling", "python-core",
"colorsys.* imghdr.* lib-dynload/imageop.so lib-dynload/rgbimg.so" )
- m.addPackage( 0, "python-io", "Python Low-Level I/O", "python-core, python-math",
+ m.addPackage( 0, "python-io", "Python Low-Level I/O", "python-core python-math",
"lib-dynload/_socket.so lib-dynload/_ssl.so lib-dynload/select.so lib-dynload/termios.so lib-dynload/cStringIO.so "
"pipes.* socket.* tempfile.* StringIO.* " )
@@ -242,7 +240,7 @@ if __name__ == "__main__":
"atexit.* bisect.* code.* codeop.* dis.* heapq.* inspect.* keyword.* opcode.* repr.* token.* tokenize.* " +
"traceback.* linecache.* weakref.*" )
- m.addPackage( 0, "python-logging", "Python Logging Support", "python-core",
+ m.addPackage( 0, "python-logging", "Python Logging Support", "python-core python-io python-lang python-stringold",
"logging" ) # package
m.addPackage( 0, "python-lib-old-and-deprecated", "Python Deprecated Libraries", "python-core",
@@ -254,23 +252,23 @@ if __name__ == "__main__":
m.addPackage( 0, "python-math", "Python Math Support", "python-core",
"lib-dynload/cmath.so lib-dynload/math.so lib-dynload/_random.so random.* sets.*" )
- m.addPackage( 0, "python-mime", "Python MIME Handling APIs", "python-core, python-io",
+ m.addPackage( 0, "python-mime", "Python MIME Handling APIs", "python-core python-io",
"mimetools.* uu.* quopri.* rfc822.*" )
- m.addPackage( 0, "python-mmap", "Python Memory-Mapped-File Support", "python-core, python-io",
+ m.addPackage( 0, "python-mmap", "Python Memory-Mapped-File Support", "python-core python-io",
"lib-dynload/mmap.so " )
m.addPackage( 0, "python-unixadmin", "Python Unix Administration Support", "python-core",
"lib-dynload/nis.so lib-dynload/grp.so lib-dynload/pwd.so getpass.*" )
- m.addPackage( 0, "python-netclient", "Python Internet Protocol Clients", "python-core, python-datetime, python-io, python-lang, python-logging, python-mime",
+ m.addPackage( 0, "python-netclient", "Python Internet Protocol Clients", "python-core python-crypt python-datetime python-io python-lang python-logging python-mime",
"*Cookie*.* " +
"base64.* cookielib.* ftplib.* gopherlib.* hmac.* httplib.* mimetypes.* nntplib.* poplib.* smtplib.* telnetlib.* urllib.* urllib2.* urlparse.*" )
- m.addPackage( 0, "python-netserver", "Python Internet Protocol Servers", "python-core, python-netclient",
+ m.addPackage( 0, "python-netserver", "Python Internet Protocol Servers", "python-core python-netclient",
"cgi.* BaseHTTPServer.* SimpleHTTPServer.* SocketServer.*" )
- m.addPackage( 0, "python-pickle", "Python Persistence Support", "python-core, python-codecs, python-io, python-re",
+ m.addPackage( 0, "python-pickle", "Python Persistence Support", "python-core python-codecs python-io python-re",
"pickle.* shelve.* lib-dynload/cPickle.so" )
m.addPackage( 0, "python-pprint", "Python Pretty-Print Support", "python-core",
@@ -288,46 +286,46 @@ if __name__ == "__main__":
m.addPackage( 0, "python-resource", "Python Resource Control Interface", "python-core",
"lib-dynload/resource.so" )
- m.addPackage( 0, "python-shell", "Python Shell-Like Functionality", "python-core, python-re",
+ m.addPackage( 0, "python-shell", "Python Shell-Like Functionality", "python-core python-re",
"cmd.* commands.* dircache.* fnmatch.* glob.* popen2.* shutil.*" )
- m.addPackage( 0, "python-robotparser", "Python robots.txt parser", "python-core, python-netclient",
+ m.addPackage( 0, "python-robotparser", "Python robots.txt parser", "python-core python-netclient",
"robotparser.*")
- m.addPackage( 0, "python-subprocess", "Python Subprocess Support", "python-core, python-io, python-re, python-fcntl, python-pickle",
+ m.addPackage( 0, "python-subprocess", "Python Subprocess Support", "python-core python-io python-re python-fcntl python-pickle",
"subprocess.*" )
m.addPackage( 0, "python-sqlite3", "Python Sqlite3 Database Support", "python-core",
"sqlite3" ) # package
- m.addPackage( 0, "python-stringold", "Python String APIs [deprecated]", "python-core, python-re",
+ m.addPackage( 0, "python-stringold", "Python String APIs [deprecated]", "python-core python-re",
"lib-dynload/strop.so string.*" )
m.addPackage( 0, "python-syslog", "Python's syslog Interface", "python-core",
"lib-dynload/syslog.so" )
- m.addPackage( 0, "python-terminal", "Python Terminal Controlling Support", "python-core, python-io",
+ m.addPackage( 0, "python-terminal", "Python Terminal Controlling Support", "python-core python-io",
"pty.* tty.*" )
m.addPackage( 0, "python-tests", "Python Tests", "python-core",
"test" ) # package
- m.addPackage( 0, "python-threading", "Python Threading & Synchronization Support", "python-core, python-lang",
+ m.addPackage( 0, "python-threading", "Python Threading & Synchronization Support", "python-core python-lang",
"_threading_local.* dummy_thread.* dummy_threading.* mutex.* threading.* Queue.*" )
- m.addPackage( 0, "python-unittest", "Python Unit Testing Framework", "python-core, python-stringold, python-lang",
+ m.addPackage( 0, "python-unittest", "Python Unit Testing Framework", "python-core python-stringold python-lang",
"unittest.*" )
- m.addPackage( 0, "python-xml", "Python basic XML support.", "python-core, python-re",
+ m.addPackage( 0, "python-xml", "Python basic XML support.", "python-core python-re python-netclient",
"lib-dynload/pyexpat.so xml xmllib.*" ) # package
- m.addPackage( 0, "python-xmlrpc", "Python XMLRPC Support", "python-core, python-xml, python-netserver, python-lang",
+ m.addPackage( 0, "python-xmlrpc", "Python XMLRPC Support", "python-core python-xml python-netserver python-lang",
"xmlrpclib.* SimpleXMLRPCServer.*" )
m.addPackage( 0, "python-zlib", "Python zlib Support.", "python-core",
"lib-dynload/zlib.so" )
- m.addPackage( 0, "python-mailbox", "Python Mailbox Format Support", "python-core, python-mime",
+ m.addPackage( 0, "python-mailbox", "Python Mailbox Format Support", "python-core python-mime",
"mailbox.*" )
m.make()
diff --git a/files/device_table-minimal.txt b/files/device_table-minimal.txt
index 495b5d5635..1d15b09053 100644
--- a/files/device_table-minimal.txt
+++ b/files/device_table-minimal.txt
@@ -28,3 +28,4 @@
/dev/console c 662 0 5 5 1 - - -
/dev/random c 644 0 0 1 8 - - -
/dev/urandom c 644 0 0 1 9 - - -
+/dev/ptmx c 644 0 0 5 2 - - -
diff --git a/packages/agg/agg_2.5.bb b/packages/agg/agg_2.5.bb
index f91d0112be..a3cf4b9557 100644
--- a/packages/agg/agg_2.5.bb
+++ b/packages/agg/agg_2.5.bb
@@ -8,12 +8,12 @@ DEPENDS = "virtual/libx11 virtual/libsdl freetype"
PR = "r0"
SRC_URI = "http://www.antigrain.com/${P}.tar.gz"
-
S = "${WORKDIR}/${P}"
inherit autotools pkgconfig
-EXTRA_OECONF = "--with-sdl-exec-prefix=${STAGING_DIR_NATIVE}${layout_exec_prefix}"
+export SDL_CONFIG=${STAGING_BINDIR_CROSS}/sdl-config
+
CFLAGS += " -I{$STAGING_INCDIR} "
PACKAGES =+ "${PN}-sdl ${PN}-x11"
@@ -26,14 +26,18 @@ FILES_${PN} = "${libdir}/libagg.so.* \
LEAD_SONAME = "libagg.so"
do_stage() {
- install -m 0644 libagg.m4 ${STAGING_DATADIR}/aclocal/
- install -d ${STAGING_INCDIR}/agg2
- cd include
- headers=`find . -name "*.h"`
- for f in $headers
- do
- install -m 0644 $f ${STAGING_INCDIR}/agg2/
- done
+ oe_libinstall -a -so libagg ${STAGING_LIBDIR}
+ oe_libinstall -a -so libaggfontfreetype ${STAGING_LIBDIR}
+ oe_libinstall -a -so libaggplatformX11 ${STAGING_LIBDIR}
+ oe_libinstall -a -so libaggplatformsdl ${STAGING_LIBDIR}
+ install -m 0644 libagg.m4 ${STAGING_DATADIR}/aclocal/
+ install -d ${STAGING_INCDIR}/agg2
+ cd include
+ headers=`find . -name "*.h"`
+ for f in $headers
+ do
+ install -D -m 0644 $f ${STAGING_INCDIR}/agg2/$f
+ done
}
diff --git a/packages/alsa/alsa-lib_1.0.15.bb b/packages/alsa/alsa-lib_1.0.15.bb
new file mode 100644
index 0000000000..60b44dbc8e
--- /dev/null
+++ b/packages/alsa/alsa-lib_1.0.15.bb
@@ -0,0 +1,44 @@
+DESCRIPTION = "Alsa sound library"
+HOMEPAGE = "http://www.alsa-project.org"
+SECTION = "libs/multimedia"
+LICENSE = "GPL"
+
+# configure.in sets -D__arm__ on the command line for any arm system
+# (not just those with the ARM instruction set), this should be removed,
+# (or replaced by a permitted #define).
+#FIXME: remove the following
+ARM_INSTRUCTION_SET = "arm"
+
+SRC_URI = "ftp://ftp.alsa-project.org/pub/lib/alsa-lib-${PV}.tar.bz2 \
+ file://fix-tstamp-declaration.patch;patch=1"
+
+inherit autotools pkgconfig
+
+require alsa-fpu.inc
+EXTRA_OECONF += "${@get_alsa_fpu_setting(bb, d)} "
+
+EXTRA_OECONF = "--with-cards=pdaudiocf --with-oss=yes --disable-python"
+
+do_stage () {
+ oe_libinstall -so -C src libasound ${STAGING_LIBDIR}/
+ install -d ${STAGING_INCDIR}/alsa/sound
+ install -m 0644 include/*.h ${STAGING_INCDIR}/alsa/
+ install -m 0644 include/sound/ainstr*.h ${STAGING_INCDIR}/alsa/sound/
+ install -d ${STAGING_DATADIR}/aclocal
+ install -m 0644 utils/alsa.m4 ${STAGING_DATADIR}/aclocal/
+}
+
+PACKAGES =+ "alsa-server libasound alsa-conf-base alsa-conf alsa-doc alsa-dev"
+FILES_${PN}-dbg += "${libdir}/alsa-lib/*/.debu*"
+FILES_libasound = "${libdir}/libasound.so.*"
+FILES_alsa-server = "${bindir}/*"
+FILES_alsa-conf = "${datadir}/alsa/"
+FILES_alsa-dev += "${libdir}/pkgconfig/ /usr/include/ ${datadir}/aclocal/*"
+FILES_alsa-conf-base = "\
+${datadir}/alsa/alsa.conf \
+${datadir}/alsa/cards/aliases.conf \
+${datadir}/alsa/pcm/default.conf \
+${datadir}/alsa/pcm/dmix.conf \
+${datadir}/alsa/pcm/dsnoop.conf"
+
+RDEPENDS_libasound = "alsa-conf-base"
diff --git a/packages/alsa/alsa-oss_1.0.15.bb b/packages/alsa/alsa-oss_1.0.15.bb
new file mode 100644
index 0000000000..b11947e86a
--- /dev/null
+++ b/packages/alsa/alsa-oss_1.0.15.bb
@@ -0,0 +1,17 @@
+DESCRIPTION = "Alsa OSS Compatibility Package"
+SECTION = "libs/multimedia"
+LICENSE = "GPL"
+DEPENDS = "alsa-lib"
+
+SRC_URI = "ftp://ftp.alsa-project.org/pub/oss-lib/alsa-oss-${PV}.tar.bz2"
+
+inherit autotools
+
+do_configure_prepend () {
+ touch NEWS README AUTHORS ChangeLog
+}
+
+do_stage () {
+ oe_libinstall -C alsa -a -so libaoss ${STAGING_LIBDIR}
+ oe_libinstall -C alsa -a -so libalsatoss ${STAGING_LIBDIR}
+}
diff --git a/packages/alsa/alsa-state.bb b/packages/alsa/alsa-state.bb
index 89ab0e0687..2707aa224a 100644
--- a/packages/alsa/alsa-state.bb
+++ b/packages/alsa/alsa-state.bb
@@ -8,7 +8,7 @@ DESCRIPTION = "Default ALSA configuration"
LICENSE = "GPL"
RRECOMMENDS_alsa-state = "alsa-states"
PV = "0.1.0"
-PR = "r6"
+PR = "r7"
SRC_URI = " \
file://asoundrc \
@@ -22,7 +22,9 @@ SRC_URI_append_fic-gta01 = " \
file://gsmhandset.state \
file://gsmheadset.state \
file://gsmspeakerout.state \
- file://stereoout.state"
+ file://stereoout.state \
+ file://voip-handset.state \
+ file://voip-headset.state"
inherit update-rc.d
diff --git a/packages/alsa/alsa-state/fic-gta01/voip-handset.state b/packages/alsa/alsa-state/fic-gta01/voip-handset.state
new file mode 100644
index 0000000000..e4892afc5b
--- /dev/null
+++ b/packages/alsa/alsa-state/fic-gta01/voip-handset.state
@@ -0,0 +1,900 @@
+state.neo1973 {
+ control.1 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 2
+ comment.range '0 - 255'
+ iface MIXER
+ name 'PCM Volume'
+ value.0 255
+ value.1 255
+ }
+ control.2 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 2
+ comment.range '0 - 255'
+ iface MIXER
+ name 'ADC Capture Volume'
+ value.0 195
+ value.1 195
+ }
+ control.3 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 2
+ comment.range '0 - 127'
+ iface MIXER
+ name 'Headphone Playback Volume'
+ value.0 121
+ value.1 121
+ }
+ control.4 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 2
+ comment.range '0 - 127'
+ iface MIXER
+ name 'Speaker Playback Volume'
+ value.0 121
+ value.1 121
+ }
+ control.5 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 1
+ comment.range '0 - 127'
+ iface MIXER
+ name 'Mono Playback Volume'
+ value 121
+ }
+ control.6 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 2
+ comment.range '0 - 7'
+ iface MIXER
+ name 'Bypass Playback Volume'
+ value.0 6
+ value.1 6
+ }
+ control.7 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 2
+ comment.range '0 - 7'
+ iface MIXER
+ name 'Sidetone Playback Volume'
+ value.0 2
+ value.1 2
+ }
+ control.8 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 2
+ comment.range '0 - 7'
+ iface MIXER
+ name 'Voice Playback Volume'
+ value.0 2
+ value.1 2
+ }
+ control.9 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 2
+ iface MIXER
+ name 'Headphone Playback ZC Switch'
+ value.0 true
+ value.1 true
+ }
+ control.10 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 2
+ iface MIXER
+ name 'Speaker Playback ZC Switch'
+ value.0 false
+ value.1 false
+ }
+ control.11 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 1
+ comment.range '0 - 7'
+ iface MIXER
+ name 'Mono Bypass Playback Volume'
+ value 6
+ }
+ control.12 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 1
+ comment.range '0 - 7'
+ iface MIXER
+ name 'Mono Sidetone Playback Volume'
+ value 2
+ }
+ control.13 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 1
+ comment.range '0 - 7'
+ iface MIXER
+ name 'Mono Voice Playback Volume'
+ value 2
+ }
+ control.14 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+ name 'Mono Playback ZC Switch'
+ value false
+ }
+ control.15 {
+ comment.access 'read write'
+ comment.type ENUMERATED
+ comment.count 1
+ comment.item.0 'Linear Control'
+ comment.item.1 'Adaptive Boost'
+ iface MIXER
+ name 'Bass Boost'
+ value 'Linear Control'
+ }
+ control.16 {
+ comment.access 'read write'
+ comment.type ENUMERATED
+ comment.count 1
+ comment.item.0 '130Hz @ 48kHz'
+ comment.item.1 '200Hz @ 48kHz'
+ comment.item.2 '100Hz @ 16kHz'
+ comment.item.3 '400Hz @ 48kHz'
+ comment.item.4 '100Hz @ 8kHz'
+ comment.item.5 '200Hz @ 8kHz'
+ iface MIXER
+ name 'Bass Filter'
+ value '130Hz @ 48kHz'
+ }
+ control.17 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 1
+ comment.range '0 - 15'
+ iface MIXER
+ name 'Bass Volume'
+ value 0
+ }
+ control.18 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 1
+ comment.range '0 - 15'
+ iface MIXER
+ name 'Treble Volume'
+ value 7
+ }
+ control.19 {
+ comment.access 'read write'
+ comment.type ENUMERATED
+ comment.count 1
+ comment.item.0 '8kHz'
+ comment.item.1 '4kHz'
+ iface MIXER
+ name 'Treble Cut-off'
+ value '8kHz'
+ }
+ control.20 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 2
+ comment.range '0 - 7'
+ iface MIXER
+ name 'Sidetone Capture Volume'
+ value.0 2
+ value.1 2
+ }
+ control.21 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 1
+ comment.range '0 - 7'
+ iface MIXER
+ name 'Voice Sidetone Capture Volume'
+ value 2
+ }
+ control.22 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 2
+ comment.range '0 - 63'
+ iface MIXER
+ name 'Capture Volume'
+ value.0 63
+ value.1 63
+ }
+ control.23 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 2
+ iface MIXER
+ name 'Capture ZC Switch'
+ value.0 false
+ value.1 false
+ }
+ control.24 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 2
+ iface MIXER
+ name 'Capture Switch'
+ value.0 true
+ value.1 true
+ }
+ control.25 {
+ comment.access 'read write'
+ comment.type ENUMERATED
+ comment.count 1
+ comment.item.0 '3.4Hz @ 48kHz'
+ comment.item.1 '82Hz @ 16k'
+ comment.item.2 '82Hz @ 8kHz'
+ comment.item.3 '170Hz @ 8kHz'
+ iface MIXER
+ name 'Capture Filter Select'
+ value '3.4Hz @ 48kHz'
+ }
+ control.26 {
+ comment.access 'read write'
+ comment.type ENUMERATED
+ comment.count 1
+ comment.item.0 HiFi
+ comment.item.1 Voice
+ iface MIXER
+ name 'Capture Filter Cut-off'
+ value Voice
+ }
+ control.27 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+ name 'Capture Filter Switch'
+ value false
+ }
+ control.28 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 1
+ comment.range '0 - 7'
+ iface MIXER
+ name 'ALC Capture Target Volume'
+ value 3
+ }
+ control.29 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 1
+ comment.range '0 - 7'
+ iface MIXER
+ name 'ALC Capture Max Volume'
+ value 7
+ }
+ control.30 {
+ comment.access 'read write'
+ comment.type ENUMERATED
+ comment.count 1
+ comment.item.0 Off
+ comment.item.1 Right
+ comment.item.2 Left
+ comment.item.3 Stereo
+ iface MIXER
+ name 'ALC Capture Function'
+ value Left
+ }
+ control.31 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+ name 'ALC Capture ZC Switch'
+ value true
+ }
+ control.32 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 1
+ comment.range '0 - 15'
+ iface MIXER
+ name 'ALC Capture Hold Time'
+ value 15
+ }
+ control.33 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 1
+ comment.range '0 - 15'
+ iface MIXER
+ name 'ALC Capture Decay Time'
+ value 12
+ }
+ control.34 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 1
+ comment.range '0 - 15'
+ iface MIXER
+ name 'ALC Capture Attack Time'
+ value 11
+ }
+ control.35 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 1
+ comment.range '0 - 31'
+ iface MIXER
+ name 'ALC Capture NG Threshold'
+ value 5
+ }
+ control.36 {
+ comment.access 'read write'
+ comment.type ENUMERATED
+ comment.count 1
+ comment.item.0 'Constant PGA Gain'
+ comment.item.1 'Mute ADC Output'
+ iface MIXER
+ name 'ALC Capture NG Type'
+ value 'Constant PGA Gain'
+ }
+ control.37 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+ name 'ALC Capture NG Switch'
+ value false
+ }
+ control.38 {
+ comment.access 'read write'
+ comment.type ENUMERATED
+ comment.count 1
+ comment.item.0 Capture
+ comment.item.1 Playback
+ iface MIXER
+ name '3D Function'
+ value Playback
+ }
+ control.39 {
+ comment.access 'read write'
+ comment.type ENUMERATED
+ comment.count 1
+ comment.item.0 '2.2kHz'
+ comment.item.1 '1.5kHz'
+ iface MIXER
+ name '3D Upper Cut-off'
+ value '2.2kHz'
+ }
+ control.40 {
+ comment.access 'read write'
+ comment.type ENUMERATED
+ comment.count 1
+ comment.item.0 '200Hz'
+ comment.item.1 '500Hz'
+ iface MIXER
+ name '3D Lower Cut-off'
+ value '200Hz'
+ }
+ control.41 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 1
+ comment.range '0 - 15'
+ iface MIXER
+ name '3D Volume'
+ value 0
+ }
+ control.42 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+ name '3D Switch'
+ value false
+ }
+ control.43 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+ name 'Capture 6dB Attenuate'
+ value false
+ }
+ control.44 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+ name 'Playback 6dB Attenuate'
+ value false
+ }
+ control.45 {
+ comment.access 'read write'
+ comment.type ENUMERATED
+ comment.count 1
+ comment.item.0 None
+ comment.item.1 '32kHz'
+ comment.item.2 '44.1kHz'
+ comment.item.3 '48kHz'
+ iface MIXER
+ name De-emphasis
+ value None
+ }
+ control.46 {
+ comment.access 'read write'
+ comment.type ENUMERATED
+ comment.count 1
+ comment.item.0 Stereo
+ comment.item.1 Left
+ comment.item.2 Right
+ comment.item.3 Mono
+ iface MIXER
+ name 'Playback Mono Mix'
+ value Right
+ }
+ control.47 {
+ comment.access 'read write'
+ comment.type ENUMERATED
+ comment.count 1
+ comment.item.0 'Non Inverted'
+ comment.item.1 Inverted
+ iface MIXER
+ name 'Playback Phase'
+ value 'Non Inverted'
+ }
+ control.48 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 1
+ comment.range '0 - 3'
+ iface MIXER
+ name 'Mic2 Capture Volume'
+ value 0
+ }
+ control.49 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 1
+ comment.range '0 - 3'
+ iface MIXER
+ name 'Mic1 Capture Volume'
+ value 2
+ }
+ control.50 {
+ comment.access 'read write'
+ comment.type ENUMERATED
+ comment.count 1
+ comment.item.0 'DAI 0'
+ comment.item.1 'DAI 1'
+ comment.item.2 'DAI 2'
+ comment.item.3 'DAI 3'
+ iface MIXER
+ name 'DAI Mode'
+ value 'DAI 2'
+ }
+ control.51 {
+ comment.access 'read write'
+ comment.type ENUMERATED
+ comment.count 1
+ comment.item.0 Stereo
+ comment.item.1 'Left ADC'
+ comment.item.2 'Right ADC'
+ comment.item.3 'Channel Swap'
+ iface MIXER
+ name 'ADC Data Select'
+ value 'Channel Swap'
+ }
+ control.52 {
+ comment.access 'read write'
+ comment.type ENUMERATED
+ comment.count 1
+ comment.item.0 'Mic 1'
+ comment.item.1 'Mic 2'
+ comment.item.2 'Mic 3'
+ iface MIXER
+ name 'Mic Selection Mux'
+ value 'Mic 2'
+ }
+ control.53 {
+ comment.access 'read write'
+ comment.type ENUMERATED
+ comment.count 1
+ comment.item.0 'RXP - RXN'
+ comment.item.1 'RXP + RXN'
+ comment.item.2 RXP
+ comment.item.3 RXN
+ iface MIXER
+ name 'Rx Mixer'
+ value 'RXP - RXN'
+ }
+ control.54 {
+ comment.access 'read write'
+ comment.type ENUMERATED
+ comment.count 1
+ comment.item.0 'Line 1 + 2'
+ comment.item.1 'Line 1 - 2'
+ comment.item.2 'Line 1'
+ comment.item.3 'Line 2'
+ iface MIXER
+ name 'Line Mixer'
+ value 'Line 1 + 2'
+ }
+ control.55 {
+ comment.access 'read write'
+ comment.type ENUMERATED
+ comment.count 1
+ comment.item.0 'Line Mix'
+ comment.item.1 'Rx Mix'
+ iface MIXER
+ name 'Line Mono Mux'
+ value 'Rx Mix'
+ }
+ control.56 {
+ comment.access 'read write'
+ comment.type ENUMERATED
+ comment.count 1
+ comment.item.0 'Line 2'
+ comment.item.1 'Rx Mix'
+ iface MIXER
+ name 'Line Right Mux'
+ value 'Rx Mix'
+ }
+ control.57 {
+ comment.access 'read write'
+ comment.type ENUMERATED
+ comment.count 1
+ comment.item.0 'Line 1'
+ comment.item.1 'Rx Mix'
+ iface MIXER
+ name 'Line Left Mux'
+ value 'Line 1'
+ }
+ control.58 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+ name 'ALC Mixer Line Capture Switch'
+ value false
+ }
+ control.59 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+ name 'ALC Mixer Mic2 Capture Switch'
+ value true
+ }
+ control.60 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+ name 'ALC Mixer Mic1 Capture Switch'
+ value false
+ }
+ control.61 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+ name 'ALC Mixer Rx Capture Switch'
+ value false
+ }
+ control.62 {
+ comment.access 'read write'
+ comment.type ENUMERATED
+ comment.count 1
+ comment.item.0 'Left PGA'
+ comment.item.1 'Mic 1'
+ comment.item.2 'Mic 2'
+ comment.item.3 'Right PGA'
+ iface MIXER
+ name 'Mic Sidetone Mux'
+ value 'Mic 1'
+ }
+ control.63 {
+ comment.access 'read write'
+ comment.type ENUMERATED
+ comment.count 1
+ comment.item.0 PGA
+ comment.item.1 'Line or RXP-RXN'
+ comment.item.2 Sidetone
+ iface MIXER
+ name 'Capture Right Mux'
+ value PGA
+ }
+ control.64 {
+ comment.access 'read write'
+ comment.type ENUMERATED
+ comment.count 1
+ comment.item.0 PGA
+ comment.item.1 'Line or RXP-RXN'
+ comment.item.2 Line
+ iface MIXER
+ name 'Capture Left Mux'
+ value PGA
+ }
+ control.65 {
+ comment.access 'read write'
+ comment.type ENUMERATED
+ comment.count 1
+ comment.item.0 Stereo
+ comment.item.1 'Analogue Mix Left'
+ comment.item.2 'Analogue Mix Right'
+ comment.item.3 'Digital Mono Mix'
+ iface MIXER
+ name 'Capture Right Mixer'
+ value 'Analogue Mix Left'
+ }
+ control.66 {
+ comment.access 'read write'
+ comment.type ENUMERATED
+ comment.count 1
+ comment.item.0 Stereo
+ comment.item.1 'Analogue Mix Left'
+ comment.item.2 'Analogue Mix Right'
+ comment.item.3 'Digital Mono Mix'
+ iface MIXER
+ name 'Capture Left Mixer'
+ value 'Analogue Mix Left'
+ }
+ control.67 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+ name 'Playback Mixer Voice Capture Sw'
+ value false
+ }
+ control.68 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+ name 'Playback Mixer Left Capture Swi'
+ value false
+ }
+ control.69 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+ name 'Playback Mixer Right Capture Sw'
+ value false
+ }
+ control.70 {
+ comment.access 'read write'
+ comment.type ENUMERATED
+ comment.count 1
+ comment.item.0 VREF
+ comment.item.1 'Capture ST'
+ comment.item.2 LOUT2
+ iface MIXER
+ name 'Out4 Mux'
+ value VREF
+ }
+ control.71 {
+ comment.access 'read write'
+ comment.type ENUMERATED
+ comment.count 1
+ comment.item.0 VREF
+ comment.item.1 ROUT2
+ comment.item.2 'Left + Right'
+ iface MIXER
+ name 'Out3 Mux'
+ value VREF
+ }
+ control.72 {
+ comment.access 'read write'
+ comment.type ENUMERATED
+ comment.count 1
+ comment.item.0 'Inverted Mono 1'
+ comment.item.1 Left
+ comment.item.2 Right
+ comment.item.3 'Left + Right'
+ iface MIXER
+ name 'Mono 2 Mux'
+ value 'Inverted Mono 1'
+ }
+ control.73 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+ name 'Mono Mixer Left Playback Switch'
+ value false
+ }
+ control.74 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+ name 'Mono Mixer Right Playback Switc'
+ value false
+ }
+ control.75 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+ name 'Mono Mixer Voice Playback Switc'
+ value false
+ }
+ control.76 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+ name 'Mono Mixer Sidetone Playback Sw'
+ value false
+ }
+ control.77 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+ name 'Mono Mixer Bypass Playback Swit'
+ value false
+ }
+ control.78 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+ name 'Right Mixer Voice Playback Swit'
+ value false
+ }
+ control.79 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+ name 'Right Mixer Sidetone Playback S'
+ value false
+ }
+ control.80 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+ name 'Right Mixer Right Playback Swit'
+ value true
+ }
+ control.81 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+ name 'Right Mixer Bypass Playback Swi'
+ value false
+ }
+ control.82 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+ name 'Left Mixer Voice Playback Switc'
+ value false
+ }
+ control.83 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+ name 'Left Mixer Sidetone Playback Sw'
+ value false
+ }
+ control.84 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+ name 'Left Mixer Left Playback Switch'
+ value true
+ }
+ control.85 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+ name 'Left Mixer Bypass Playback Swit'
+ value false
+ }
+ control.86 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 1
+ comment.range '0 - 31'
+ iface MIXER
+ name 'Amp Left Playback Volume'
+ value 16
+ }
+ control.87 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 1
+ comment.range '0 - 31'
+ iface MIXER
+ name 'Amp Right Playback Volume'
+ value 29
+ }
+ control.88 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 1
+ comment.range '0 - 31'
+ iface MIXER
+ name 'Amp Mono Playback Volume'
+ value 18
+ }
+ control.89 {
+ comment.access 'read write'
+ comment.type ENUMERATED
+ comment.count 1
+ comment.item.0 Off
+ comment.item.1 'Call Speaker'
+ comment.item.2 'Stereo Speakers'
+ comment.item.3 'Stereo Speakers + Headphones'
+ comment.item.4 Headphones
+ iface MIXER
+ name 'Amp Mode'
+ value 'Call Speaker'
+ }
+ control.90 {
+ comment.access 'read write'
+ comment.type ENUMERATED
+ comment.count 1
+ comment.item.0 Off
+ comment.item.1 'GSM Handset'
+ comment.item.2 'GSM Headset'
+ comment.item.3 'GSM Bluetooth'
+ comment.item.4 Speakers
+ comment.item.5 Headphones
+ comment.item.6 'Capture Handset'
+ comment.item.7 'Capture Headset'
+ comment.item.8 'Capture Bluetooth'
+ iface MIXER
+ name 'Neo Mode'
+ value 'GSM Handset'
+ }
+ control.91 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+ name 'Amp Spk 3D Playback Switch'
+ value true
+ }
+ control.92 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+ name 'Amp HP 3d Playback Switch'
+ value false
+ }
+ control.93 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+ name 'Amp Fast Wakeup Playback Switch'
+ value false
+ }
+ control.94 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+ name 'Amp Earpiece 6dB Playback Switch'
+ value false
+ }
+}
diff --git a/packages/alsa/alsa-state/fic-gta01/voip-headset.state b/packages/alsa/alsa-state/fic-gta01/voip-headset.state
new file mode 100644
index 0000000000..cccaa99c9a
--- /dev/null
+++ b/packages/alsa/alsa-state/fic-gta01/voip-headset.state
@@ -0,0 +1,900 @@
+state.neo1973 {
+ control.1 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 2
+ comment.range '0 - 255'
+ iface MIXER
+ name 'PCM Volume'
+ value.0 255
+ value.1 255
+ }
+ control.2 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 2
+ comment.range '0 - 255'
+ iface MIXER
+ name 'ADC Capture Volume'
+ value.0 195
+ value.1 195
+ }
+ control.3 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 2
+ comment.range '0 - 127'
+ iface MIXER
+ name 'Headphone Playback Volume'
+ value.0 121
+ value.1 121
+ }
+ control.4 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 2
+ comment.range '0 - 127'
+ iface MIXER
+ name 'Speaker Playback Volume'
+ value.0 121
+ value.1 121
+ }
+ control.5 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 1
+ comment.range '0 - 127'
+ iface MIXER
+ name 'Mono Playback Volume'
+ value 121
+ }
+ control.6 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 2
+ comment.range '0 - 7'
+ iface MIXER
+ name 'Bypass Playback Volume'
+ value.0 6
+ value.1 6
+ }
+ control.7 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 2
+ comment.range '0 - 7'
+ iface MIXER
+ name 'Sidetone Playback Volume'
+ value.0 2
+ value.1 2
+ }
+ control.8 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 2
+ comment.range '0 - 7'
+ iface MIXER
+ name 'Voice Playback Volume'
+ value.0 2
+ value.1 2
+ }
+ control.9 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 2
+ iface MIXER
+ name 'Headphone Playback ZC Switch'
+ value.0 true
+ value.1 true
+ }
+ control.10 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 2
+ iface MIXER
+ name 'Speaker Playback ZC Switch'
+ value.0 false
+ value.1 false
+ }
+ control.11 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 1
+ comment.range '0 - 7'
+ iface MIXER
+ name 'Mono Bypass Playback Volume'
+ value 6
+ }
+ control.12 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 1
+ comment.range '0 - 7'
+ iface MIXER
+ name 'Mono Sidetone Playback Volume'
+ value 2
+ }
+ control.13 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 1
+ comment.range '0 - 7'
+ iface MIXER
+ name 'Mono Voice Playback Volume'
+ value 2
+ }
+ control.14 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+ name 'Mono Playback ZC Switch'
+ value false
+ }
+ control.15 {
+ comment.access 'read write'
+ comment.type ENUMERATED
+ comment.count 1
+ comment.item.0 'Linear Control'
+ comment.item.1 'Adaptive Boost'
+ iface MIXER
+ name 'Bass Boost'
+ value 'Linear Control'
+ }
+ control.16 {
+ comment.access 'read write'
+ comment.type ENUMERATED
+ comment.count 1
+ comment.item.0 '130Hz @ 48kHz'
+ comment.item.1 '200Hz @ 48kHz'
+ comment.item.2 '100Hz @ 16kHz'
+ comment.item.3 '400Hz @ 48kHz'
+ comment.item.4 '100Hz @ 8kHz'
+ comment.item.5 '200Hz @ 8kHz'
+ iface MIXER
+ name 'Bass Filter'
+ value '130Hz @ 48kHz'
+ }
+ control.17 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 1
+ comment.range '0 - 15'
+ iface MIXER
+ name 'Bass Volume'
+ value 0
+ }
+ control.18 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 1
+ comment.range '0 - 15'
+ iface MIXER
+ name 'Treble Volume'
+ value 7
+ }
+ control.19 {
+ comment.access 'read write'
+ comment.type ENUMERATED
+ comment.count 1
+ comment.item.0 '8kHz'
+ comment.item.1 '4kHz'
+ iface MIXER
+ name 'Treble Cut-off'
+ value '8kHz'
+ }
+ control.20 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 2
+ comment.range '0 - 7'
+ iface MIXER
+ name 'Sidetone Capture Volume'
+ value.0 2
+ value.1 2
+ }
+ control.21 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 1
+ comment.range '0 - 7'
+ iface MIXER
+ name 'Voice Sidetone Capture Volume'
+ value 2
+ }
+ control.22 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 2
+ comment.range '0 - 63'
+ iface MIXER
+ name 'Capture Volume'
+ value.0 63
+ value.1 63
+ }
+ control.23 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 2
+ iface MIXER
+ name 'Capture ZC Switch'
+ value.0 false
+ value.1 false
+ }
+ control.24 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 2
+ iface MIXER
+ name 'Capture Switch'
+ value.0 true
+ value.1 true
+ }
+ control.25 {
+ comment.access 'read write'
+ comment.type ENUMERATED
+ comment.count 1
+ comment.item.0 '3.4Hz @ 48kHz'
+ comment.item.1 '82Hz @ 16k'
+ comment.item.2 '82Hz @ 8kHz'
+ comment.item.3 '170Hz @ 8kHz'
+ iface MIXER
+ name 'Capture Filter Select'
+ value '3.4Hz @ 48kHz'
+ }
+ control.26 {
+ comment.access 'read write'
+ comment.type ENUMERATED
+ comment.count 1
+ comment.item.0 HiFi
+ comment.item.1 Voice
+ iface MIXER
+ name 'Capture Filter Cut-off'
+ value Voice
+ }
+ control.27 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+ name 'Capture Filter Switch'
+ value false
+ }
+ control.28 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 1
+ comment.range '0 - 7'
+ iface MIXER
+ name 'ALC Capture Target Volume'
+ value 3
+ }
+ control.29 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 1
+ comment.range '0 - 7'
+ iface MIXER
+ name 'ALC Capture Max Volume'
+ value 7
+ }
+ control.30 {
+ comment.access 'read write'
+ comment.type ENUMERATED
+ comment.count 1
+ comment.item.0 Off
+ comment.item.1 Right
+ comment.item.2 Left
+ comment.item.3 Stereo
+ iface MIXER
+ name 'ALC Capture Function'
+ value Left
+ }
+ control.31 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+ name 'ALC Capture ZC Switch'
+ value true
+ }
+ control.32 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 1
+ comment.range '0 - 15'
+ iface MIXER
+ name 'ALC Capture Hold Time'
+ value 15
+ }
+ control.33 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 1
+ comment.range '0 - 15'
+ iface MIXER
+ name 'ALC Capture Decay Time'
+ value 12
+ }
+ control.34 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 1
+ comment.range '0 - 15'
+ iface MIXER
+ name 'ALC Capture Attack Time'
+ value 11
+ }
+ control.35 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 1
+ comment.range '0 - 31'
+ iface MIXER
+ name 'ALC Capture NG Threshold'
+ value 5
+ }
+ control.36 {
+ comment.access 'read write'
+ comment.type ENUMERATED
+ comment.count 1
+ comment.item.0 'Constant PGA Gain'
+ comment.item.1 'Mute ADC Output'
+ iface MIXER
+ name 'ALC Capture NG Type'
+ value 'Constant PGA Gain'
+ }
+ control.37 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+ name 'ALC Capture NG Switch'
+ value false
+ }
+ control.38 {
+ comment.access 'read write'
+ comment.type ENUMERATED
+ comment.count 1
+ comment.item.0 Capture
+ comment.item.1 Playback
+ iface MIXER
+ name '3D Function'
+ value Playback
+ }
+ control.39 {
+ comment.access 'read write'
+ comment.type ENUMERATED
+ comment.count 1
+ comment.item.0 '2.2kHz'
+ comment.item.1 '1.5kHz'
+ iface MIXER
+ name '3D Upper Cut-off'
+ value '2.2kHz'
+ }
+ control.40 {
+ comment.access 'read write'
+ comment.type ENUMERATED
+ comment.count 1
+ comment.item.0 '200Hz'
+ comment.item.1 '500Hz'
+ iface MIXER
+ name '3D Lower Cut-off'
+ value '200Hz'
+ }
+ control.41 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 1
+ comment.range '0 - 15'
+ iface MIXER
+ name '3D Volume'
+ value 0
+ }
+ control.42 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+ name '3D Switch'
+ value false
+ }
+ control.43 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+ name 'Capture 6dB Attenuate'
+ value false
+ }
+ control.44 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+ name 'Playback 6dB Attenuate'
+ value false
+ }
+ control.45 {
+ comment.access 'read write'
+ comment.type ENUMERATED
+ comment.count 1
+ comment.item.0 None
+ comment.item.1 '32kHz'
+ comment.item.2 '44.1kHz'
+ comment.item.3 '48kHz'
+ iface MIXER
+ name De-emphasis
+ value None
+ }
+ control.46 {
+ comment.access 'read write'
+ comment.type ENUMERATED
+ comment.count 1
+ comment.item.0 Stereo
+ comment.item.1 Left
+ comment.item.2 Right
+ comment.item.3 Mono
+ iface MIXER
+ name 'Playback Mono Mix'
+ value Right
+ }
+ control.47 {
+ comment.access 'read write'
+ comment.type ENUMERATED
+ comment.count 1
+ comment.item.0 'Non Inverted'
+ comment.item.1 Inverted
+ iface MIXER
+ name 'Playback Phase'
+ value 'Non Inverted'
+ }
+ control.48 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 1
+ comment.range '0 - 3'
+ iface MIXER
+ name 'Mic2 Capture Volume'
+ value 0
+ }
+ control.49 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 1
+ comment.range '0 - 3'
+ iface MIXER
+ name 'Mic1 Capture Volume'
+ value 2
+ }
+ control.50 {
+ comment.access 'read write'
+ comment.type ENUMERATED
+ comment.count 1
+ comment.item.0 'DAI 0'
+ comment.item.1 'DAI 1'
+ comment.item.2 'DAI 2'
+ comment.item.3 'DAI 3'
+ iface MIXER
+ name 'DAI Mode'
+ value 'DAI 2'
+ }
+ control.51 {
+ comment.access 'read write'
+ comment.type ENUMERATED
+ comment.count 1
+ comment.item.0 Stereo
+ comment.item.1 'Left ADC'
+ comment.item.2 'Right ADC'
+ comment.item.3 'Channel Swap'
+ iface MIXER
+ name 'ADC Data Select'
+ value 'Channel Swap'
+ }
+ control.52 {
+ comment.access 'read write'
+ comment.type ENUMERATED
+ comment.count 1
+ comment.item.0 'Mic 1'
+ comment.item.1 'Mic 2'
+ comment.item.2 'Mic 3'
+ iface MIXER
+ name 'Mic Selection Mux'
+ value 'Mic 1'
+ }
+ control.53 {
+ comment.access 'read write'
+ comment.type ENUMERATED
+ comment.count 1
+ comment.item.0 'RXP - RXN'
+ comment.item.1 'RXP + RXN'
+ comment.item.2 RXP
+ comment.item.3 RXN
+ iface MIXER
+ name 'Rx Mixer'
+ value 'RXP - RXN'
+ }
+ control.54 {
+ comment.access 'read write'
+ comment.type ENUMERATED
+ comment.count 1
+ comment.item.0 'Line 1 + 2'
+ comment.item.1 'Line 1 - 2'
+ comment.item.2 'Line 1'
+ comment.item.3 'Line 2'
+ iface MIXER
+ name 'Line Mixer'
+ value 'Line 1 + 2'
+ }
+ control.55 {
+ comment.access 'read write'
+ comment.type ENUMERATED
+ comment.count 1
+ comment.item.0 'Line Mix'
+ comment.item.1 'Rx Mix'
+ iface MIXER
+ name 'Line Mono Mux'
+ value 'Rx Mix'
+ }
+ control.56 {
+ comment.access 'read write'
+ comment.type ENUMERATED
+ comment.count 1
+ comment.item.0 'Line 2'
+ comment.item.1 'Rx Mix'
+ iface MIXER
+ name 'Line Right Mux'
+ value 'Rx Mix'
+ }
+ control.57 {
+ comment.access 'read write'
+ comment.type ENUMERATED
+ comment.count 1
+ comment.item.0 'Line 1'
+ comment.item.1 'Rx Mix'
+ iface MIXER
+ name 'Line Left Mux'
+ value 'Line 1'
+ }
+ control.58 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+ name 'ALC Mixer Line Capture Switch'
+ value false
+ }
+ control.59 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+ name 'ALC Mixer Mic2 Capture Switch'
+ value false
+ }
+ control.60 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+ name 'ALC Mixer Mic1 Capture Switch'
+ value true
+ }
+ control.61 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+ name 'ALC Mixer Rx Capture Switch'
+ value false
+ }
+ control.62 {
+ comment.access 'read write'
+ comment.type ENUMERATED
+ comment.count 1
+ comment.item.0 'Left PGA'
+ comment.item.1 'Mic 1'
+ comment.item.2 'Mic 2'
+ comment.item.3 'Right PGA'
+ iface MIXER
+ name 'Mic Sidetone Mux'
+ value 'Mic 1'
+ }
+ control.63 {
+ comment.access 'read write'
+ comment.type ENUMERATED
+ comment.count 1
+ comment.item.0 PGA
+ comment.item.1 'Line or RXP-RXN'
+ comment.item.2 Sidetone
+ iface MIXER
+ name 'Capture Right Mux'
+ value PGA
+ }
+ control.64 {
+ comment.access 'read write'
+ comment.type ENUMERATED
+ comment.count 1
+ comment.item.0 PGA
+ comment.item.1 'Line or RXP-RXN'
+ comment.item.2 Line
+ iface MIXER
+ name 'Capture Left Mux'
+ value PGA
+ }
+ control.65 {
+ comment.access 'read write'
+ comment.type ENUMERATED
+ comment.count 1
+ comment.item.0 Stereo
+ comment.item.1 'Analogue Mix Left'
+ comment.item.2 'Analogue Mix Right'
+ comment.item.3 'Digital Mono Mix'
+ iface MIXER
+ name 'Capture Right Mixer'
+ value 'Analogue Mix Left'
+ }
+ control.66 {
+ comment.access 'read write'
+ comment.type ENUMERATED
+ comment.count 1
+ comment.item.0 Stereo
+ comment.item.1 'Analogue Mix Left'
+ comment.item.2 'Analogue Mix Right'
+ comment.item.3 'Digital Mono Mix'
+ iface MIXER
+ name 'Capture Left Mixer'
+ value 'Analogue Mix Left'
+ }
+ control.67 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+ name 'Playback Mixer Voice Capture Sw'
+ value false
+ }
+ control.68 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+ name 'Playback Mixer Left Capture Swi'
+ value false
+ }
+ control.69 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+ name 'Playback Mixer Right Capture Sw'
+ value false
+ }
+ control.70 {
+ comment.access 'read write'
+ comment.type ENUMERATED
+ comment.count 1
+ comment.item.0 VREF
+ comment.item.1 'Capture ST'
+ comment.item.2 LOUT2
+ iface MIXER
+ name 'Out4 Mux'
+ value VREF
+ }
+ control.71 {
+ comment.access 'read write'
+ comment.type ENUMERATED
+ comment.count 1
+ comment.item.0 VREF
+ comment.item.1 ROUT2
+ comment.item.2 'Left + Right'
+ iface MIXER
+ name 'Out3 Mux'
+ value VREF
+ }
+ control.72 {
+ comment.access 'read write'
+ comment.type ENUMERATED
+ comment.count 1
+ comment.item.0 'Inverted Mono 1'
+ comment.item.1 Left
+ comment.item.2 Right
+ comment.item.3 'Left + Right'
+ iface MIXER
+ name 'Mono 2 Mux'
+ value 'Inverted Mono 1'
+ }
+ control.73 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+ name 'Mono Mixer Left Playback Switch'
+ value false
+ }
+ control.74 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+ name 'Mono Mixer Right Playback Switc'
+ value false
+ }
+ control.75 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+ name 'Mono Mixer Voice Playback Switc'
+ value false
+ }
+ control.76 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+ name 'Mono Mixer Sidetone Playback Sw'
+ value false
+ }
+ control.77 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+ name 'Mono Mixer Bypass Playback Swit'
+ value false
+ }
+ control.78 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+ name 'Right Mixer Voice Playback Swit'
+ value false
+ }
+ control.79 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+ name 'Right Mixer Sidetone Playback S'
+ value false
+ }
+ control.80 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+ name 'Right Mixer Right Playback Swit'
+ value true
+ }
+ control.81 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+ name 'Right Mixer Bypass Playback Swi'
+ value false
+ }
+ control.82 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+ name 'Left Mixer Voice Playback Switc'
+ value false
+ }
+ control.83 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+ name 'Left Mixer Sidetone Playback Sw'
+ value false
+ }
+ control.84 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+ name 'Left Mixer Left Playback Switch'
+ value true
+ }
+ control.85 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+ name 'Left Mixer Bypass Playback Swit'
+ value false
+ }
+ control.86 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 1
+ comment.range '0 - 31'
+ iface MIXER
+ name 'Amp Left Playback Volume'
+ value 16
+ }
+ control.87 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 1
+ comment.range '0 - 31'
+ iface MIXER
+ name 'Amp Right Playback Volume'
+ value 29
+ }
+ control.88 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 1
+ comment.range '0 - 31'
+ iface MIXER
+ name 'Amp Mono Playback Volume'
+ value 18
+ }
+ control.89 {
+ comment.access 'read write'
+ comment.type ENUMERATED
+ comment.count 1
+ comment.item.0 Off
+ comment.item.1 'Call Speaker'
+ comment.item.2 'Stereo Speakers'
+ comment.item.3 'Stereo Speakers + Headphones'
+ comment.item.4 Headphones
+ iface MIXER
+ name 'Amp Mode'
+ value Headphones
+ }
+ control.90 {
+ comment.access 'read write'
+ comment.type ENUMERATED
+ comment.count 1
+ comment.item.0 Off
+ comment.item.1 'GSM Handset'
+ comment.item.2 'GSM Headset'
+ comment.item.3 'GSM Bluetooth'
+ comment.item.4 Speakers
+ comment.item.5 Headphones
+ comment.item.6 'Capture Handset'
+ comment.item.7 'Capture Headset'
+ comment.item.8 'Capture Bluetooth'
+ iface MIXER
+ name 'Neo Mode'
+ value 'GSM Headset'
+ }
+ control.91 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+ name 'Amp Spk 3D Playback Switch'
+ value true
+ }
+ control.92 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+ name 'Amp HP 3d Playback Switch'
+ value false
+ }
+ control.93 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+ name 'Amp Fast Wakeup Playback Switch'
+ value false
+ }
+ control.94 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+ name 'Amp Earpiece 6dB Playback Switch'
+ value false
+ }
+}
diff --git a/packages/alsa/alsa-utils_1.0.14.bb b/packages/alsa/alsa-utils_1.0.14.bb
index 240b995e7b..25eeade7cd 100644
--- a/packages/alsa/alsa-utils_1.0.14.bb
+++ b/packages/alsa/alsa-utils_1.0.14.bb
@@ -3,16 +3,11 @@ HOMEPAGE = "http://www.alsa-project.org"
SECTION = "console/utils"
LICENSE = "GPL"
DEPENDS = "alsa-lib ncurses"
+PR = "r1"
-SRC_URI = "ftp://ftp.alsa-project.org/pub/utils/alsa-utils-${PV}.tar.bz2"
-
-# lazy hack. needs proper fixing in gettext.m4, see
-# http://bugs.openembedded.org/show_bug.cgi?id=2348
-# please close bug and remove this comment when properly fixed
-#
-EXTRA_OECONF_linux-uclibc = "--disable-nls"
-EXTRA_OECONF_linux-uclibcgnueabi = "--disable-nls"
-
+SRC_URI = "ftp://ftp.alsa-project.org/pub/utils/alsa-utils-${PV}.tar.bz2 \
+ file://alsa-utils-automake.patch;patch=1 \
+ "
inherit autotools
# This are all packages that we need to make. Also, the now empty alsa-utils
diff --git a/packages/alsa/alsa-utils_1.0.15.bb b/packages/alsa/alsa-utils_1.0.15.bb
new file mode 100644
index 0000000000..b271e75439
--- /dev/null
+++ b/packages/alsa/alsa-utils_1.0.15.bb
@@ -0,0 +1,57 @@
+DESCRIPTION = "ALSA Utilities"
+HOMEPAGE = "http://www.alsa-project.org"
+SECTION = "console/utils"
+LICENSE = "GPL"
+DEPENDS = "alsa-lib ncurses"
+PR = "r1"
+
+SRC_URI = "ftp://ftp.alsa-project.org/pub/utils/alsa-utils-${PV}.tar.bz2 \
+ file://alsa-utils-automake.patch;patch=1 \
+ "
+
+inherit autotools
+
+# This are all packages that we need to make. Also, the now empty alsa-utils
+# ipk depend on them.
+
+PACKAGES += "\
+ alsa-utils-alsamixer \
+ alsa-utils-midi \
+ alsa-utils-aplay \
+ alsa-utils-amixer \
+ alsa-utils-aconnect \
+ alsa-utils-iecset \
+ alsa-utils-speakertest \
+ alsa-utils-aseqnet \
+ alsa-utils-aseqdump \
+ alsa-utils-alsaconf \
+ alsa-utils-alsactl "
+
+# We omit alsaconf, because
+# a) this is a bash script
+# b) it creates config files not suitable for OE-based distros
+
+FILES_${PN} = ""
+FILES_alsa-utils-aplay = "${bindir}/aplay ${bindir}/arecord"
+FILES_alsa-utils-amixer = "${bindir}/amixer"
+FILES_alsa-utils-alsamixer = "${bindir}/alsamixer"
+FILES_alsa-utils-speakertest = "${bindir}/speaker-test ${datadir}/sounds/alsa/ ${datadir}/alsa/"
+FILES_alsa-utils-midi = "${bindir}/aplaymidi ${bindir}/arecordmidi ${bindir}/amidi"
+FILES_alsa-utils-aconnect = "${bindir}/aconnect"
+FILES_alsa-utils-aseqnet = "${bindir}/aseqnet"
+FILES_alsa-utils-iecset = "${bindir}/iecset"
+FILES_alsa-utils-alsactl = "${sbindir}/alsactl"
+FILES_alsa-utils-aseqdump = "${bindir}/aseqdump"
+FILES_alsa-utils-alsaconf = "${sbindir}/alsaconf"
+
+DESCRIPTION_alsa-utils-aplay = "play (and record) sound files via ALSA"
+DESCRIPTION_alsa-utils-amixer = "command-line based control for ALSA mixer and settings"
+DESCRIPTION_alsa-utils-alsamixer = "ncurses based control for ALSA mixer and settings"
+DESCRIPTION_alsa-utils-speakertest = "ALSA surround speaker test utility"
+DESCRIPTION_alsa-utils-midi = "miscalleanous MIDI utilities for ALSA"
+DESCRIPTION_alsa-utils-aconnect = "ALSA sequencer connection manager"
+DESCRIPTION_alsa-utils-aseqnet = "network client/server on ALSA sequencer"
+DESCRIPTION_alsa-utils-alsactl = "saves/restores ALSA-settings in /etc/asound.state"
+DESCRIPTION_alsa-utils-alsaconf = "a bash script that creates ALSA configuration files"
+
+ALLOW_EMPTY_alsa-utils = "1"
diff --git a/packages/alsa/files/alsa-utils-automake.patch b/packages/alsa/files/alsa-utils-automake.patch
new file mode 100644
index 0000000000..de0eee94fd
--- /dev/null
+++ b/packages/alsa/files/alsa-utils-automake.patch
@@ -0,0 +1,10 @@
+Index: alsa-utils-1.0.14/seq/aseqnet/Makefile.am
+===================================================================
+--- alsa-utils-1.0.14.orig/seq/aseqnet/Makefile.am 2007-05-31 10:07:21.000000000 +0200
++++ alsa-utils-1.0.14/seq/aseqnet/Makefile.am 2007-10-31 21:11:41.000000000 +0100
+@@ -3,4 +3,5 @@
+
+ bin_PROGRAMS = aseqnet
+ aseqnet_SOURCES = aseqnet.c
++aseqnet_LDADD = $(INTLLIBS)
+ man_MANS = aseqnet.1
diff --git a/packages/altboot/altboot_1.1.1+wip-SVNR66.bb b/packages/altboot/altboot_1.1.1+wip-SVNR69.bb
index 0eda8ba44b..b9ee96d048 100644
--- a/packages/altboot/altboot_1.1.1+wip-SVNR66.bb
+++ b/packages/altboot/altboot_1.1.1+wip-SVNR69.bb
@@ -1,10 +1,10 @@
require altboot.inc
-PR = "r1"
+PR = "r0"
-SVN_REV = "66"
+SVN_REV = "69"
SRC_URI = "svn://hentges.net/public/altboot;module=trunk;rev=${SVN_REV} \
- file://sd-dynamic-fix.patch;patch=1"
+ "
do_install() {
install -d ${D}/sbin
diff --git a/packages/angstrom/angstrom-feed-configs.bb b/packages/angstrom/angstrom-feed-configs.bb
index 6730b6a044..9d94747179 100644
--- a/packages/angstrom/angstrom-feed-configs.bb
+++ b/packages/angstrom/angstrom-feed-configs.bb
@@ -1,6 +1,7 @@
DESCRIPTION = "Configuration files for online package repositories aka feeds"
-PR = "1"
+#PV = "${DISTRO_VERSION}"
+PR = "r2"
PACKAGE_ARCH = "${MACHINE_ARCH}"
FEED_BASEPATH ?= "unstable/feed/"
@@ -11,7 +12,7 @@ do_compile() {
echo "src/gz ${feed} ${ANGSTROM_URI}/${FEED_BASEPATH}${FEED_ARCH}/${feed}" > ${S}/${sysconfdir}/ipkg/${feed}-feed.conf
done
- echo "src/gz ${MACHINE_ARCH} ${ANGSTROM_URI}/${FEED_BASEPATH}${FEED_ARCH}/${MACHINE_ARCH}" > ${S}/${sysconfdir}/ipkg/${MACHINE_ARCH}-feed.conf
+ echo "src/gz ${MACHINE_ARCH} ${ANGSTROM_URI}/${FEED_BASEPATH}${FEED_ARCH}/machine/${MACHINE_ARCH}" > ${S}/${sysconfdir}/ipkg/${MACHINE_ARCH}-feed.conf
echo "src/gz no-arch ${ANGSTROM_URI}/${FEED_BASEPATH}/all" > ${S}/${sysconfdir}/ipkg/noarch-feed.conf
}
diff --git a/packages/angstrom/angstrom-gpe-task-base.bb b/packages/angstrom/angstrom-gpe-task-base.bb
index 265f51863d..cc3d08972f 100644
--- a/packages/angstrom/angstrom-gpe-task-base.bb
+++ b/packages/angstrom/angstrom-gpe-task-base.bb
@@ -1,5 +1,5 @@
DESCRIPTION = "Task packages for the Angstrom distribution"
-PR = "r32"
+PR = "r33"
inherit task
@@ -12,6 +12,8 @@ RDEPENDS_${PN} = "\
rxvt-unicode \
gpe-terminal \
matchbox-keyboard \
+ xkbd \
+ xkbd-layout-ru \
gpe-theme-clearlooks \
xst \
xhost \
diff --git a/packages/angstrom/angstrom-gpe-task-settings.bb b/packages/angstrom/angstrom-gpe-task-settings.bb
index a9463fdbe5..adc4bb0756 100644
--- a/packages/angstrom/angstrom-gpe-task-settings.bb
+++ b/packages/angstrom/angstrom-gpe-task-settings.bb
@@ -1,10 +1,11 @@
DESCRIPTION = "Task packages for the Angstrom distribution"
-PR = "r32"
+PR = "r33"
inherit task
RDEPENDS_${PN} = "\
matchbox-panel-manager \
+ mboxkbd-layouts-gui \
gpe-su \
gpe-conf \
gpe-package \
diff --git a/packages/apache2/apache2_2.2.3.bb b/packages/apache2/apache2_2.2.3.bb
index ddc4131dae..b6ec8f81f9 100644
--- a/packages/apache2/apache2_2.2.3.bb
+++ b/packages/apache2/apache2_2.2.3.bb
@@ -10,7 +10,8 @@ SRC_URI = "http://apache.mirrors.tds.net/httpd/httpd-2.2.3.tar.bz2 \
file://apr-sockets-patch;patch=1 \
file://configure-patch;patch=1 \
file://server-makefile-patch;patch=1 \
- file://configure-fix-cross-compile-ptr-check.patch;patch=1"
+ file://configure-fix-cross-compile-ptr-check.patch;patch=1 \
+ file://init"
#
# over-ride needed since apache unpacks into httpd
@@ -93,7 +94,7 @@ do_configure() {
do_install_append() {
install -d ${D}/${sysconfdir}/init.d
- cat ${FILESDIR}/../files/init | \
+ cat ${WORKDIR}/init | \
sed -e 's,/usr/sbin/,${sbindir}/,g' \
-e 's,/usr/bin/,${bindir}/,g' \
-e 's,/usr/lib,${libdir}/,g' \
diff --git a/packages/apex/apex-nslu2-16mb_1.5.8.bb b/packages/apex/apex-nslu2-16mb_1.5.8.bb
index abdc188ecf..48b8412088 100644
--- a/packages/apex/apex-nslu2-16mb_1.5.8.bb
+++ b/packages/apex/apex-nslu2-16mb_1.5.8.bb
@@ -3,10 +3,7 @@ SECTION = ""
PRIORITY = "optional"
HOMEPAGE = "http://wiki.buici.com/twiki/bin/view/Main/ApexBootloader"
LICENSE = "GPL"
-PR = "r1"
-
-# Note that this recipe only works for the NSLU2 at the moment.
-# Patches to make it more generic are welcome.
+PR = "r2"
SRC_URI = "ftp://ftp.buici.com/pub/apex/apex-${PV}.tar.gz \
file://defconfig-16mb"
@@ -14,11 +11,7 @@ S = ${WORKDIR}/apex-${PV}
CMDLINE_CONSOLE = "console=${@bb.data.getVar("KERNEL_CONSOLE",d,1) or "ttyS0"}"
-CMDLINE_ROOT = "root=/dev/mtdblock2 rootfstype=jffs2 rw"
-
-CMDLINE_ROOT_nslu2 = "root=/dev/mtdblock4 rootfstype=jffs2 rw init=/linuxrc"
-CMDLINE_ROOT_dsmg600 = "root=/dev/mtdblock2 rootfstype=jffs2 rw init=/linuxrc"
-CMDLINE_ROOT_nas100d = "root=/dev/mtdblock2 rootfstype=jffs2 rw init=/linuxrc"
+CMDLINE_ROOT ?= "root=/dev/mtdblock4 rootfstype=jffs2 rw"
CMDLINE_DEBUG ?= ""
@@ -44,7 +37,6 @@ do_configure() {
elif [ "x$ac_cv_c_littleendian" = "xyes" -o "x$ac_cv_c_bigendian" = "xno" ]; then
sed -e 's/.*CONFIG_USER_LITTLEENDIAN.*/CONFIG_USER_LITTLEENDIAN=y/' \
-e 's/.*CONFIG_LITTLEENDIAN.*/CONFIG_LITTLEENDIAN=y/' \
- -e 's/.*CONFIG_ENV_REGION_KERNEL_SWAP.*/CONFIG_ENV_REGION_KERNEL_SWAP=y/' \
-e 's/.*CONFIG_TARGET_DESCRIPTION.*/CONFIG_TARGET_DESCRIPTION=\"OpenEmbedded NSLU2\/LE (16MiB Flash)\"/' \
-e 's|CONFIG_ENV_DEFAULT_CMDLINE=|CONFIG_ENV_DEFAULT_CMDLINE=\"${CMDLINE_CONSOLE} ${CMDLINE_ROOT} ${CMDLINE_DEBUG}\"|' \
${WORKDIR}/defconfig-16mb > ${S}/.config
@@ -60,10 +52,8 @@ do_populate_staging() {
install -d ${STAGING_LOADER_DIR}
. ${CONFIG_SITE}
if [ "x$ac_cv_c_bigendian" = "xyes" -o "x$ac_cv_c_littleendian" = "xno" ]; then
- # FIXME - arch-arm should not be hard-coded
cp src/arch-arm/rom/apex.bin ${STAGING_LOADER_DIR}/apex-nslu2-16mb.bin
elif [ "x$ac_cv_c_littleendian" = "xyes" -o "x$ac_cv_c_bigendian" = "xno" ]; then
- # FIXME - arch-arm should not be hard-coded
devio '<<'src/arch-arm/rom/apex.bin >${STAGING_LOADER_DIR}/apex-nslu2-16mb.bin 'xp $,4'
else
oefatal do_populate_staging cannot determine endianess
diff --git a/packages/apex/apex-nslu2_1.5.8.bb b/packages/apex/apex-nslu2_1.5.8.bb
index 6c2b7ccd63..8444d19472 100644
--- a/packages/apex/apex-nslu2_1.5.8.bb
+++ b/packages/apex/apex-nslu2_1.5.8.bb
@@ -3,10 +3,7 @@ SECTION = ""
PRIORITY = "optional"
HOMEPAGE = "http://wiki.buici.com/twiki/bin/view/Main/ApexBootloader"
LICENSE = "GPL"
-PR = "r1"
-
-# Note that this recipe only works for the NSLU2 at the moment.
-# Patches to make it more generic are welcome.
+PR = "r2"
SRC_URI = "ftp://ftp.buici.com/pub/apex/apex-${PV}.tar.gz \
file://defconfig"
@@ -14,11 +11,7 @@ S = ${WORKDIR}/apex-${PV}
CMDLINE_CONSOLE = "console=${@bb.data.getVar("KERNEL_CONSOLE",d,1) or "ttyS0"}"
-CMDLINE_ROOT = "root=/dev/mtdblock2 rootfstype=jffs2 rw"
-
-CMDLINE_ROOT_nslu2 = "root=/dev/mtdblock4 rootfstype=jffs2 rw init=/linuxrc"
-CMDLINE_ROOT_dsmg600 = "root=/dev/mtdblock2 rootfstype=jffs2 rw init=/linuxrc"
-CMDLINE_ROOT_nas100d = "root=/dev/mtdblock2 rootfstype=jffs2 rw init=/linuxrc"
+CMDLINE_ROOT ?= "root=/dev/mtdblock4 rootfstype=jffs2 rw"
CMDLINE_DEBUG ?= ""
@@ -44,7 +37,6 @@ do_configure() {
elif [ "x$ac_cv_c_littleendian" = "xyes" -o "x$ac_cv_c_bigendian" = "xno" ]; then
sed -e 's/.*CONFIG_USER_LITTLEENDIAN.*/CONFIG_USER_LITTLEENDIAN=y/' \
-e 's/.*CONFIG_LITTLEENDIAN.*/CONFIG_LITTLEENDIAN=y/' \
- -e 's/.*CONFIG_ENV_REGION_KERNEL_SWAP.*/CONFIG_ENV_REGION_KERNEL_SWAP=y/' \
-e 's/.*CONFIG_TARGET_DESCRIPTION.*/CONFIG_TARGET_DESCRIPTION=\"OpenEmbedded NSLU2\/LE (8MiB Flash)\"/' \
-e 's|CONFIG_ENV_DEFAULT_CMDLINE=|CONFIG_ENV_DEFAULT_CMDLINE=\"${CMDLINE_CONSOLE} ${CMDLINE_ROOT} ${CMDLINE_DEBUG}\"|' \
${WORKDIR}/defconfig > ${S}/.config
@@ -60,10 +52,8 @@ do_populate_staging() {
install -d ${STAGING_LOADER_DIR}
. ${CONFIG_SITE}
if [ "x$ac_cv_c_bigendian" = "xyes" -o "x$ac_cv_c_littleendian" = "xno" ]; then
- # FIXME - arch-arm should not be hard-coded
cp src/arch-arm/rom/apex.bin ${STAGING_LOADER_DIR}/apex-nslu2.bin
elif [ "x$ac_cv_c_littleendian" = "xyes" -o "x$ac_cv_c_bigendian" = "xno" ]; then
- # FIXME - arch-arm should not be hard-coded
devio '<<'src/arch-arm/rom/apex.bin >${STAGING_LOADER_DIR}/apex-nslu2.bin 'xp $,4'
else
oefatal do_populate_staging cannot determine endianess
diff --git a/packages/ettercap/ettercap-0.6.b/.mtn2git_empty b/packages/apex/files/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/ettercap/ettercap-0.6.b/.mtn2git_empty
+++ b/packages/apex/files/.mtn2git_empty
diff --git a/packages/apex/nslu2/defconfig b/packages/apex/files/defconfig
index 3c8522e2e8..3c8522e2e8 100644
--- a/packages/apex/nslu2/defconfig
+++ b/packages/apex/files/defconfig
diff --git a/packages/apex/nslu2/defconfig-16mb b/packages/apex/files/defconfig-16mb
index c9688e3d75..c9688e3d75 100644
--- a/packages/apex/nslu2/defconfig-16mb
+++ b/packages/apex/files/defconfig-16mb
diff --git a/packages/apmd/apmd_3.2.2.bb b/packages/apmd/apmd_3.2.2.bb
index 5402e67632..c3fce375d3 100644
--- a/packages/apmd/apmd_3.2.2.bb
+++ b/packages/apmd/apmd_3.2.2.bb
@@ -5,7 +5,7 @@ DEPENDS = "libtool-cross"
LICENSE = "GPL"
PR = "r8"
-SRC_URI = "${DEBIAN_MIRROR}/main/a/apmd/apmd_${PV}.orig.tar.gz; \
+SRC_URI = "${DEBIAN_MIRROR}/main/a/apmd/apmd_${PV}.orig.tar.gz \
file://debian.patch;patch=1 \
file://workaround.patch;patch=1 \
file://zaurus24.patch;patch=1 \
diff --git a/packages/apr/apr-util_0.9.12.bb b/packages/apr/apr-util_0.9.12.bb
index b726f2adf1..d5964added 100644
--- a/packages/apr/apr-util_0.9.12.bb
+++ b/packages/apr/apr-util_0.9.12.bb
@@ -9,7 +9,7 @@ SRC_URI = "${APACHE_MIRROR}/apr/${P}.tar.gz \
file://gen_uri_delims.patch;patch=1 \
file://uri_delims.h"
-EXTRA_OECONF = "--with-apr=${STAGING_BINDIR_CROSS} --with-dbm=gdbm --with-gdbm=${STAGING_DIR}/${HOST_SYS} --with-expat=${STAGING_DIR}/${HOST_SYS}"
+EXTRA_OECONF = "--with-apr=${STAGING_BINDIR_CROSS} --with-dbm=gdbm --with-gdbm=${STAGING_DIR_HOST}${layout_prefix} --with-expat=${STAGING_DIR_HOST}${layout_prefix}"
inherit autotools lib_package binconfig
diff --git a/packages/apr/apr-util_1.2.7.bb b/packages/apr/apr-util_1.2.7.bb
index c73eb8023c..ea81607953 100644
--- a/packages/apr/apr-util_1.2.7.bb
+++ b/packages/apr/apr-util_1.2.7.bb
@@ -9,10 +9,10 @@ PR = "r2"
SRC_URI = "${APACHE_MIRROR}/apr/${P}.tar.gz"
EXTRA_OECONF = "--with-apr=${STAGING_BINDIR_CROSS} --with-dbm=gdbm \
- --with-gdbm=${STAGING_DIR}/${HOST_SYS} \
+ --with-gdbm=${STAGING_DIR_HOST}${layout_prefix} \
--without-sqlite2 \
--without-sqlite3 \
- --with-expat=${STAGING_DIR}/${HOST_SYS}"
+ --with-expat=${STAGING_DIR_HOST}${layout_prefix}"
inherit autotools lib_package binconfig
diff --git a/packages/asterisk/asterisk_1.2.24.bb b/packages/asterisk/asterisk_1.2.24.bb
index 01b825d19e..1673276f45 100644
--- a/packages/asterisk/asterisk_1.2.24.bb
+++ b/packages/asterisk/asterisk_1.2.24.bb
@@ -18,7 +18,7 @@ S = "${WORKDIR}/asterisk-${PV}"
export CROSS_COMPILE="${CCACHE}${HOST_PREFIX}"
export CROSS_COMPILE_BIN="${STAGING_BINDIR_CROSS}"
-export CROSS_COMPILE_TARGET="${STAGING_DIR}/${HOST_SYS}"
+export CROSS_COMPILE_TARGET="${STAGING_DIR_HOST}"
export CROSS_ARCH="Linux"
export CROSS_PROC="${TARGET_ARCH}"
diff --git a/packages/atk/atk.inc b/packages/atk/atk.inc
index c4878d87ce..e47a431e5c 100644
--- a/packages/atk/atk.inc
+++ b/packages/atk/atk.inc
@@ -1,4 +1,4 @@
-DEPENDS = "glib-2.0 gtk-doc"
+DEPENDS = "glib-2.0 gtk-doc-native"
DESCRIPTION = "An accessibility toolkit for GNOME."
SECTION = "x11/libs"
PRIORITY = "optional"
diff --git a/packages/atk/atk_1.20.0.bb b/packages/atk/atk_1.20.0.bb
index e2733d5b87..a909e0eb61 100644
--- a/packages/atk/atk_1.20.0.bb
+++ b/packages/atk/atk_1.20.0.bb
@@ -3,7 +3,7 @@ SECTION = "x11/libs"
PRIORITY = "optional"
LICENSE = "LGPL"
-DEPENDS = "glib-2.0 gtk-doc"
+DEPENDS = "glib-2.0 gtk-doc-native"
SRC_URI = "http://download.gnome.org/sources/atk/1.20/${PN}-${PV}.tar.bz2"
diff --git a/packages/autoconf/autoconf-2.61/fix_path_xtra.patch b/packages/autoconf/autoconf-2.61/fix_path_xtra.patch
new file mode 100644
index 0000000000..c3a2c4578a
--- /dev/null
+++ b/packages/autoconf/autoconf-2.61/fix_path_xtra.patch
@@ -0,0 +1,114 @@
+We don't build xmkmf so any values returned from it are going to be wrong.
+Using any paths in /usr/ for x headers/libs is a bad idea when cross compiling.
+This patch removes them to stop any confusion.
+
+RP - 20071115
+
+Index: autoconf-2.61/lib/autoconf/libs.m4
+===================================================================
+--- autoconf-2.61.orig/lib/autoconf/libs.m4 2006-10-15 01:12:02.000000000 +0000
++++ autoconf-2.61/lib/autoconf/libs.m4 2007-11-15 12:09:59.000000000 +0000
+@@ -180,53 +180,6 @@
+ # --------------------- #
+
+
+-# _AC_PATH_X_XMKMF
+-# ----------------
+-# Internal subroutine of _AC_PATH_X.
+-# Set ac_x_includes and/or ac_x_libraries.
+-m4_define([_AC_PATH_X_XMKMF],
+-[AC_ARG_VAR(XMKMF, [Path to xmkmf, Makefile generator for X Window System])dnl
+-rm -f -r conftest.dir
+-if mkdir conftest.dir; then
+- cd conftest.dir
+- cat >Imakefile <<'_ACEOF'
+-incroot:
+- @echo incroot='${INCROOT}'
+-usrlibdir:
+- @echo usrlibdir='${USRLIBDIR}'
+-libdir:
+- @echo libdir='${LIBDIR}'
+-_ACEOF
+- if (export CC; ${XMKMF-xmkmf}) >/dev/null 2>/dev/null && test -f Makefile; then
+- # GNU make sometimes prints "make[1]: Entering...", which would confuse us.
+- for ac_var in incroot usrlibdir libdir; do
+- eval "ac_im_$ac_var=\`\${MAKE-make} $ac_var 2>/dev/null | sed -n 's/^$ac_var=//p'\`"
+- done
+- # Open Windows xmkmf reportedly sets LIBDIR instead of USRLIBDIR.
+- for ac_extension in a so sl; do
+- if test ! -f "$ac_im_usrlibdir/libX11.$ac_extension" &&
+- test -f "$ac_im_libdir/libX11.$ac_extension"; then
+- ac_im_usrlibdir=$ac_im_libdir; break
+- fi
+- done
+- # Screen out bogus values from the imake configuration. They are
+- # bogus both because they are the default anyway, and because
+- # using them would break gcc on systems where it needs fixed includes.
+- case $ac_im_incroot in
+- /usr/include) ac_x_includes= ;;
+- *) test -f "$ac_im_incroot/X11/Xos.h" && ac_x_includes=$ac_im_incroot;;
+- esac
+- case $ac_im_usrlibdir in
+- /usr/lib | /lib) ;;
+- *) test -d "$ac_im_usrlibdir" && ac_x_libraries=$ac_im_usrlibdir ;;
+- esac
+- fi
+- cd ..
+- rm -f -r conftest.dir
+-fi
+-])# _AC_PATH_X_XMKMF
+-
+-
+ # _AC_PATH_X_DIRECT
+ # -----------------
+ # Internal subroutine of _AC_PATH_X.
+@@ -234,40 +187,7 @@
+ m4_define([_AC_PATH_X_DIRECT],
+ [# Standard set of common directories for X headers.
+ # Check X11 before X11Rn because it is often a symlink to the current release.
+-ac_x_header_dirs='
+-/usr/X11/include
+-/usr/X11R6/include
+-/usr/X11R5/include
+-/usr/X11R4/include
+-
+-/usr/include/X11
+-/usr/include/X11R6
+-/usr/include/X11R5
+-/usr/include/X11R4
+-
+-/usr/local/X11/include
+-/usr/local/X11R6/include
+-/usr/local/X11R5/include
+-/usr/local/X11R4/include
+-
+-/usr/local/include/X11
+-/usr/local/include/X11R6
+-/usr/local/include/X11R5
+-/usr/local/include/X11R4
+-
+-/usr/X386/include
+-/usr/x386/include
+-/usr/XFree86/include/X11
+-
+-/usr/include
+-/usr/local/include
+-/usr/unsupported/include
+-/usr/athena/include
+-/usr/local/x11r5/include
+-/usr/lpp/Xamples/include
+-
+-/usr/openwin/include
+-/usr/openwin/share/include'
++ac_x_header_dirs=''
+
+ if test "$ac_x_includes" = no; then
+ # Guess where to find include files, by looking for Xlib.h.
+@@ -316,7 +236,6 @@
+ [AC_CACHE_VAL(ac_cv_have_x,
+ [# One or both of the vars are not set, and there is no cached value.
+ ac_x_includes=no ac_x_libraries=no
+-_AC_PATH_X_XMKMF
+ _AC_PATH_X_DIRECT
+ case $ac_x_includes,$ac_x_libraries in #(
+ no,* | *,no | *\'*)
diff --git a/packages/autoconf/autoconf-native_2.61.bb b/packages/autoconf/autoconf-native_2.61.bb
index e992de97b7..ad6cb79445 100644
--- a/packages/autoconf/autoconf-native_2.61.bb
+++ b/packages/autoconf/autoconf-native_2.61.bb
@@ -3,14 +3,9 @@ require autoconf_${PV}.bb
DEPENDS = "m4-native gnu-config-native"
RDEPENDS_${PN} = "m4-native gnu-config-native"
+SRC_URI += "file://fix_path_xtra.patch;patch=1"
+
S = "${WORKDIR}/autoconf-${PV}"
FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/autoconf-${PV}"
inherit native
-
-#
-# without it the build breaks:
-# | make[1]: *** No rule to make target `../bin/autom4te', needed by `autoconf.in'. Stop.
-#
-PARALLEL_MAKE = ""
-
diff --git a/packages/autoconf/autoconf_2.61.bb b/packages/autoconf/autoconf_2.61.bb
index 525e8d0f92..6b92dc8120 100644
--- a/packages/autoconf/autoconf_2.61.bb
+++ b/packages/autoconf/autoconf_2.61.bb
@@ -1,6 +1,8 @@
require autoconf.inc
-PARALLEL_MAKE = ""
+PR = "r1"
+
+PARALLEL_MAKE = ""
DEPENDS += "m4-native"
RDEPENDS_${PN} = "m4 gnu-config"
@@ -12,4 +14,3 @@ SRC_URI += "file://autoreconf-include.patch;patch=1 \
file://autoheader-nonfatal-warnings.patch;patch=1 \
file://config-site.patch;patch=1 \
${@['file://path_prog_fixes.patch;patch=1', ''][bb.data.inherits_class('native', d)]}"
-
diff --git a/packages/autofs/autofs-4.1.4/no-bash.patch b/packages/autofs/autofs-4.1.4/no-bash.patch
new file mode 100644
index 0000000000..16e83a0371
--- /dev/null
+++ b/packages/autofs/autofs-4.1.4/no-bash.patch
@@ -0,0 +1,18 @@
+diff -Naur autofs-4.1.4/samples.orig/auto.net autofs-4.1.4/samples/auto.net
+--- autofs-4.1.4/samples.orig/auto.net 2007-11-21 11:29:57.000000000 -0600
++++ autofs-4.1.4/samples/auto.net 2007-11-21 11:30:27.000000000 -0600
+@@ -1,4 +1,4 @@
+-#!/bin/bash
++#!/bin/sh
+
+ # $Id: auto.net,v 1.8 2005/04/05 13:02:09 raven Exp $
+
+diff -Naur autofs-4.1.4/samples.orig/auto.smb autofs-4.1.4/samples/auto.smb
+--- autofs-4.1.4/samples.orig/auto.smb 2007-11-21 11:29:57.000000000 -0600
++++ autofs-4.1.4/samples/auto.smb 2007-11-21 11:30:34.000000000 -0600
+@@ -1,4 +1,4 @@
+-#!/bin/bash
++#!/bin/sh
+
+ # $Id: auto.smb,v 1.3 2005/04/05 13:02:09 raven Exp $
+
diff --git a/packages/autofs/autofs_4.1.4.bb b/packages/autofs/autofs_4.1.4.bb
index ab2bacedb7..d9863ad9dd 100644
--- a/packages/autofs/autofs_4.1.4.bb
+++ b/packages/autofs/autofs_4.1.4.bb
@@ -2,7 +2,7 @@ DESCRIPTION = "Kernel based automounter for linux."
SECTION = "base"
LICENSE = "GPL"
-PR = "r1"
+PR = "r2"
SRC_URI = "${KERNELORG_MIRROR}/pub/linux/daemons/autofs/v4/autofs-${PV}.tar.bz2 \
${KERNELORG_MIRROR}/pub/linux/daemons/autofs/v4/autofs-4.1.4-misc-fixes.patch;patch=1 \
@@ -12,9 +12,13 @@ SRC_URI = "${KERNELORG_MIRROR}/pub/linux/daemons/autofs/v4/autofs-${PV}.tar.bz2
file://Makefile.rules-cross.patch;patch=1 \
file://install.patch;patch=1 \
file://auto.net-sort-option-fix.patch;patch=1 \
- file://autofs-additional-distros.patch;patch=1"
+ file://autofs-additional-distros.patch;patch=1 \
+ file://no-bash.patch;patch=1"
-inherit autotools
+inherit autotools update-rc.d
+
+INITSCRIPT_NAME = "autofs"
+INITSCRIPT_PARAMS = "defaults"
EXTRA_OEMAKE="TARGET_PREFIX=${TARGET_PREFIX}"
PARALLEL_MAKE = ""
diff --git a/packages/base-files/base-files/akita/fstab b/packages/base-files/base-files/akita/fstab
index 8a2b07a089..46b778600e 100644
--- a/packages/base-files/base-files/akita/fstab
+++ b/packages/base-files/base-files/akita/fstab
@@ -8,12 +8,12 @@ tmpfs /media/ram tmpfs defaults 0 0
tmpfs /dev/shm tmpfs mode=0777 0 0
# SD/MMC in kernel 2.4
-/dev/mmcda1 /media/card auto defaults,sync,noauto 0 0
+#/dev/mmcda1 /media/card auto defaults,sync,noauto 0 0
# SD/MMC in kernel 2.6
/dev/mmcblk0p1 /media/card auto defaults,sync,noauto 0 0
# USB Storage
/dev/sda1 /media/usbhdd vfat noauto,umask=000,noatime,iocharset=utf8,codepage=932 0 0
-usbfs /proc/bus/usb usbf defaults 0 0
+usbfs /proc/bus/usb usbfs defaults 0 0
diff --git a/packages/base-files/base-files/c7x0/fstab b/packages/base-files/base-files/c7x0/fstab
index c3de8d28dc..54fe556905 100644
--- a/packages/base-files/base-files/c7x0/fstab
+++ b/packages/base-files/base-files/c7x0/fstab
@@ -8,6 +8,6 @@ tmpfs /media/ram tmpfs defaults 0 0
tmpfs /dev/shm tmpfs mode=0777 0 0
# SD/MMC in kernel 2.4
-/dev/mmcda1 /media/card auto defaults,sync,noauto 0 0
+#/dev/mmcda1 /media/card auto defaults,sync,noauto 0 0
# SD/MMC in kernel 2.6
/dev/mmcblk0p1 /media/card auto defaults,sync,noauto 0 0
diff --git a/packages/base-files/base-files/collie/fstab b/packages/base-files/base-files/collie/fstab
index a3a9ea2df1..c2e3f3c189 100644
--- a/packages/base-files/base-files/collie/fstab
+++ b/packages/base-files/base-files/collie/fstab
@@ -1,9 +1,13 @@
/dev/mtdblock4 / jffs2 defaults 1 1
proc /proc proc defaults 0 0
/dev/hda1 /media/cf auto defaults,sync,noauto,noatime,user,exec,suid,gid=100,umask=0002 0 0
-/dev/mmcda1 /media/card auto defaults,sync,noauto,noatime,user,exec,suid 0 0
tmpfs /var/volatile tmpfs mode=0755 0 0
tmpfs /dev/shm tmpfs mode=0777 0 0
# we use a non-volatile ramdisk, see /etc/init.d/ramdisk
#tmpfs /media/ram tmpfs defaults 0 0
+
+# SD/MMC in kernel 2.4
+#/dev/mmcda1 /media/card auto defaults,sync,noauto 0 0
+# SD/MMC in kernel 2.6
+/dev/mmcblk0p1 /media/card auto defaults,sync,noauto 0 0
diff --git a/packages/base-files/base-files/poodle/fstab b/packages/base-files/base-files/poodle/fstab
index 9f87b91155..64076fa181 100644
--- a/packages/base-files/base-files/poodle/fstab
+++ b/packages/base-files/base-files/poodle/fstab
@@ -7,7 +7,7 @@ proc /proc proc defaults 0 0
/dev/mmcblk0p1 /media/card auto defaults,sync,noauto 0 0
# SD/MMC in kernel 2.4
-/dev/mmcda1 /media/card auto defaults,sync,noauto 0 0
+#/dev/mmcda1 /media/card auto defaults,sync,noauto 0 0
tmpfs /dev/shm tmpfs mode=0777 0 0
tmpfs /var/volatile tmpfs mode=0755 0 0
diff --git a/packages/base-files/base-files/spitz/fstab b/packages/base-files/base-files/spitz/fstab
index f266212135..dc419e62be 100644
--- a/packages/base-files/base-files/spitz/fstab
+++ b/packages/base-files/base-files/spitz/fstab
@@ -12,7 +12,7 @@ tmpfs /dev/shm tmpfs mode=0777 0 0
# Compact Flash memory cards
/dev/hdc1 /media/cf auto defaults,sync,noauto 0 0
# SD/MMC in kernel 2.4
-/dev/mmcda1 /media/card auto defaults,sync,noauto 0 0
+#/dev/mmcda1 /media/card auto defaults,sync,noauto 0 0
# SD/MMC in kernel 2.6
/dev/mmcblk0p1 /media/card auto defaults,sync,noauto 0 0
diff --git a/packages/base-files/base-files/tosa/fstab b/packages/base-files/base-files/tosa/fstab
index 8607c79be8..badbebe1f7 100644
--- a/packages/base-files/base-files/tosa/fstab
+++ b/packages/base-files/base-files/tosa/fstab
@@ -10,6 +10,6 @@ tmpfs /dev/shm tmpfs mode=0777 0 0
usbfs /proc/bus/usb usbfs auto 0 0
# SD/MMC in kernel 2.4
-/dev/mmcda1 /media/card auto defaults,sync,noauto 0 0
+#/dev/mmcda1 /media/card auto defaults,sync,noauto 0 0
# SD/MMC in kernel 2.6
/dev/mmcblk0p1 /media/card auto defaults,sync,noauto 0 0
diff --git a/packages/base-files/base-files_3.0.14.bb b/packages/base-files/base-files_3.0.14.bb
index 7ccd26b5cf..21a83e98e5 100644
--- a/packages/base-files/base-files_3.0.14.bb
+++ b/packages/base-files/base-files_3.0.14.bb
@@ -1,7 +1,7 @@
DESCRIPTION = "Miscellaneous files for the base system."
SECTION = "base"
PRIORITY = "required"
-PR = "r74"
+PR = "r76"
LICENSE = "GPL"
SRC_URI = " \
diff --git a/packages/binutils/binutils-2.17.50.0.5/binutils-configure-texinfo-version.patch b/packages/binutils/binutils-2.17.50.0.5/binutils-configure-texinfo-version.patch
new file mode 100644
index 0000000000..9cc18412fd
--- /dev/null
+++ b/packages/binutils/binutils-2.17.50.0.5/binutils-configure-texinfo-version.patch
@@ -0,0 +1,22 @@
+--- binutils-2.18/configure.orig 2007-10-11 21:09:27.000000000 -0700
++++ binutils-2.18/configure 2007-10-11 21:10:20.000000000 -0700
+@@ -6128,7 +6128,7 @@ case " $build_configdirs " in
+ # For an installed makeinfo, we require it to be from texinfo 4.4 or
+ # higher, else we use the "missing" dummy.
+ if ${MAKEINFO} --version \
+- | egrep 'texinfo[^0-9]*([1-3][0-9]|4\.[4-9]|[5-9])' >/dev/null 2>&1; then
++ | egrep 'texinfo[^0-9]*(4\.([6-9]|[1-9][0-9])|[5-9]|[1-9][0-9])' >/dev/null 2>&1; then
+ :
+ else
+ MAKEINFO="$MISSING makeinfo"
+--- binutils-2.18/configure.in.orig 2007-10-11 21:10:54.000000000 -0700
++++ binutils-2.18/configure.in 2007-10-11 21:11:13.000000000 -0700
+@@ -2403,7 +2403,7 @@ changequote(,)
+ # For an installed makeinfo, we require it to be from texinfo 4.4 or
+ # higher, else we use the "missing" dummy.
+ if ${MAKEINFO} --version \
+- | egrep 'texinfo[^0-9]*([1-3][0-9]|4\.[4-9]|[5-9])' >/dev/null 2>&1; then
++ | egrep 'texinfo[^0-9]*(4\.([6-9]|[1-9][0-9])|[5-9]|[1-9][0-9])' >/dev/null 2>&1; then
+ :
+ else
+ MAKEINFO="$MISSING makeinfo"
diff --git a/packages/binutils/binutils-2.17.50.0.8/binutils-configure-texinfo-version.patch b/packages/binutils/binutils-2.17.50.0.8/binutils-configure-texinfo-version.patch
new file mode 100644
index 0000000000..9cc18412fd
--- /dev/null
+++ b/packages/binutils/binutils-2.17.50.0.8/binutils-configure-texinfo-version.patch
@@ -0,0 +1,22 @@
+--- binutils-2.18/configure.orig 2007-10-11 21:09:27.000000000 -0700
++++ binutils-2.18/configure 2007-10-11 21:10:20.000000000 -0700
+@@ -6128,7 +6128,7 @@ case " $build_configdirs " in
+ # For an installed makeinfo, we require it to be from texinfo 4.4 or
+ # higher, else we use the "missing" dummy.
+ if ${MAKEINFO} --version \
+- | egrep 'texinfo[^0-9]*([1-3][0-9]|4\.[4-9]|[5-9])' >/dev/null 2>&1; then
++ | egrep 'texinfo[^0-9]*(4\.([6-9]|[1-9][0-9])|[5-9]|[1-9][0-9])' >/dev/null 2>&1; then
+ :
+ else
+ MAKEINFO="$MISSING makeinfo"
+--- binutils-2.18/configure.in.orig 2007-10-11 21:10:54.000000000 -0700
++++ binutils-2.18/configure.in 2007-10-11 21:11:13.000000000 -0700
+@@ -2403,7 +2403,7 @@ changequote(,)
+ # For an installed makeinfo, we require it to be from texinfo 4.4 or
+ # higher, else we use the "missing" dummy.
+ if ${MAKEINFO} --version \
+- | egrep 'texinfo[^0-9]*([1-3][0-9]|4\.[4-9]|[5-9])' >/dev/null 2>&1; then
++ | egrep 'texinfo[^0-9]*(4\.([6-9]|[1-9][0-9])|[5-9]|[1-9][0-9])' >/dev/null 2>&1; then
+ :
+ else
+ MAKEINFO="$MISSING makeinfo"
diff --git a/packages/binutils/binutils-cross.inc b/packages/binutils/binutils-cross.inc
index fb966d3c7b..642d5318e7 100644
--- a/packages/binutils/binutils-cross.inc
+++ b/packages/binutils/binutils-cross.inc
@@ -6,7 +6,7 @@ PACKAGES = ""
EXTRA_OECONF = "--with-sysroot=${CROSS_DIR}/${TARGET_SYS} \
--program-prefix=${TARGET_PREFIX} \
--enable-install-libbfd \
- "
+ --disable-werror"
do_stage () {
oe_runmake install
diff --git a/packages/binutils/binutils_2.17.50.0.5.bb b/packages/binutils/binutils_2.17.50.0.5.bb
index dc73dc6909..fa601c18a7 100644
--- a/packages/binutils/binutils_2.17.50.0.5.bb
+++ b/packages/binutils/binutils_2.17.50.0.5.bb
@@ -6,6 +6,7 @@ SRC_URI = \
"${KERNELORG_MIRROR}/pub/linux/devel/binutils/binutils-${PV}.tar.bz2 \
file://binutils-2.16.91.0.6-objcopy-rename-errorcode.patch;patch=1 \
file://binutils-uclibc-100-uclibc-conf.patch;patch=1 \
+ file://binutils-configure-texinfo-version.patch;patch=1 \
file://110-arm-eabi-conf.patch;patch=1 \
file://binutils-uclibc-300-001_ld_makefile_patch.patch;patch=1 \
file://binutils-uclibc-300-006_better_file_error.patch;patch=1 \
diff --git a/packages/binutils/binutils_2.17.50.0.8.bb b/packages/binutils/binutils_2.17.50.0.8.bb
index f832d97cd1..a60c7524d7 100644
--- a/packages/binutils/binutils_2.17.50.0.8.bb
+++ b/packages/binutils/binutils_2.17.50.0.8.bb
@@ -5,6 +5,7 @@ SRC_URI = \
"${KERNELORG_MIRROR}/pub/linux/devel/binutils/binutils-${PV}.tar.bz2 \
file://binutils-2.16.91.0.6-objcopy-rename-errorcode.patch;patch=1 \
file://binutils-uclibc-100-uclibc-conf.patch;patch=1 \
+ file://binutils-configure-texinfo-version.patch;patch=1 \
file://110-arm-eabi-conf.patch;patch=1 \
file://binutils-uclibc-300-001_ld_makefile_patch.patch;patch=1 \
file://binutils-uclibc-300-006_better_file_error.patch;patch=1 \
diff --git a/packages/blueprobe/blueprobe-0.18/h4000.patch b/packages/blueprobe/blueprobe-0.18/h4000.patch
index 35a30c4943..79ea3ebae4 100644
--- a/packages/blueprobe/blueprobe-0.18/h4000.patch
+++ b/packages/blueprobe/blueprobe-0.18/h4000.patch
@@ -4,7 +4,7 @@
PROTO=bcsp
PROBE=yes
;;
-+ "HP iPAQ H4000")
++ "HP iPAQ H4100" | "HP iPAQ H4300")
+ BLUETOOTH=yes
+ PORT=/dev/ttyS1
+ SPEED=115200
diff --git a/packages/blueprobe/blueprobe.inc b/packages/blueprobe/blueprobe.inc
index f619f7336c..894a3ebe7e 100644
--- a/packages/blueprobe/blueprobe.inc
+++ b/packages/blueprobe/blueprobe.inc
@@ -1,3 +1,4 @@
SECTION = "base"
LICENSE = "GPL"
+DESCRIPTION = "Discovers machine-specific Bluetooth parameters"
inherit gpe
diff --git a/packages/blueprobe/blueprobe_0.18.bb b/packages/blueprobe/blueprobe_0.18.bb
index 5db1bc4337..08fb6798bf 100644
--- a/packages/blueprobe/blueprobe_0.18.bb
+++ b/packages/blueprobe/blueprobe_0.18.bb
@@ -1,6 +1,6 @@
require blueprobe.inc
-PR = "r2"
+PR = "r3"
SRC_URI += "file://h4000.patch;patch=1 \
file://uclibc-fix.patch;patch=1"
diff --git a/packages/bluez/bluez-cups-backend_3.22.bb b/packages/bluez/bluez-cups-backend_3.22.bb
new file mode 100644
index 0000000000..64884fa904
--- /dev/null
+++ b/packages/bluez/bluez-cups-backend_3.22.bb
@@ -0,0 +1,26 @@
+require bluez-utils3.inc
+
+DEPENDS += "cups"
+
+# see bluez-utils3.inc for the explanation of these option
+EXTRA_OECONF = " \
+ --enable-bccmd \
+ --enable-hid2hci \
+ --disable-alsa \
+ --enable-cups \
+ --enable-glib \
+ --disable-sdpd \
+ --enable-network \
+ --enable-serial \
+ --enable-input \
+ --enable-audio \
+ --enable-echo \
+ --enable-configfile \
+ --enable-initscripts \
+ --enable-test \
+ "
+
+PACKAGES = "${PN}"
+
+FILES_${PN} = "${libdir}/cups/backend/bluetooth"
+RDEPENDS_${PN} = "cups" \ No newline at end of file
diff --git a/packages/bluez/bluez-cups-backend_3.23.bb b/packages/bluez/bluez-cups-backend_3.23.bb
new file mode 100644
index 0000000000..64884fa904
--- /dev/null
+++ b/packages/bluez/bluez-cups-backend_3.23.bb
@@ -0,0 +1,26 @@
+require bluez-utils3.inc
+
+DEPENDS += "cups"
+
+# see bluez-utils3.inc for the explanation of these option
+EXTRA_OECONF = " \
+ --enable-bccmd \
+ --enable-hid2hci \
+ --disable-alsa \
+ --enable-cups \
+ --enable-glib \
+ --disable-sdpd \
+ --enable-network \
+ --enable-serial \
+ --enable-input \
+ --enable-audio \
+ --enable-echo \
+ --enable-configfile \
+ --enable-initscripts \
+ --enable-test \
+ "
+
+PACKAGES = "${PN}"
+
+FILES_${PN} = "${libdir}/cups/backend/bluetooth"
+RDEPENDS_${PN} = "cups" \ No newline at end of file
diff --git a/packages/bluez/bluez-gnome_0.10.bb b/packages/bluez/bluez-gnome_0.10.bb
index d50e8e5fde..398e99d5c1 100644
--- a/packages/bluez/bluez-gnome_0.10.bb
+++ b/packages/bluez/bluez-gnome_0.10.bb
@@ -1,4 +1,4 @@
-DESCRIPTION = "BLuetooth configuration applet"
+DESCRIPTION = "Bluetooth configuration applet"
LICENSE = "GPL+LGPL"
DEPENDS = "dbus-glib gconf libnotify gtk+"
diff --git a/packages/bluez/bluez-gnome_0.13.bb b/packages/bluez/bluez-gnome_0.13.bb
index 0fb8a7980f..e3aaeafeb3 100644
--- a/packages/bluez/bluez-gnome_0.13.bb
+++ b/packages/bluez/bluez-gnome_0.13.bb
@@ -1,4 +1,4 @@
-DESCRIPTION = "BLuetooth configuration applet"
+DESCRIPTION = "Bluetooth configuration applet"
LICENSE = "GPL+LGPL"
PR = "r1"
diff --git a/packages/bluez/bluez-gnome_0.14.bb b/packages/bluez/bluez-gnome_0.14.bb
index 0fb8a7980f..e3aaeafeb3 100644
--- a/packages/bluez/bluez-gnome_0.14.bb
+++ b/packages/bluez/bluez-gnome_0.14.bb
@@ -1,4 +1,4 @@
-DESCRIPTION = "BLuetooth configuration applet"
+DESCRIPTION = "Bluetooth configuration applet"
LICENSE = "GPL+LGPL"
PR = "r1"
diff --git a/packages/bluez/bluez-gnome_cvs.bb b/packages/bluez/bluez-gnome_cvs.bb
index 8900bda6bf..728d20e5f1 100644
--- a/packages/bluez/bluez-gnome_cvs.bb
+++ b/packages/bluez/bluez-gnome_cvs.bb
@@ -1,4 +1,4 @@
-DESCRIPTION = "BLuetooth configuration applet"
+DESCRIPTION = "Bluetooth configuration applet"
LICENSE = "GPL+LGPL"
DEFAULT_PREFERENCE = "-1"
diff --git a/packages/bluez/bluez-gnome_git.bb b/packages/bluez/bluez-gnome_git.bb
index e16fee109d..e8bfd97419 100644
--- a/packages/bluez/bluez-gnome_git.bb
+++ b/packages/bluez/bluez-gnome_git.bb
@@ -1,4 +1,4 @@
-DESCRIPTION = "BLuetooth configuration applet"
+DESCRIPTION = "Bluetooth configuration applet"
LICENSE = "GPL+LGPL"
DEFAULT_PREFERENCE = "-2"
diff --git a/packages/bluez/bluez-gstreamer-plugin_3.22.bb b/packages/bluez/bluez-gstreamer-plugin_3.22.bb
new file mode 100644
index 0000000000..c5a1a9acee
--- /dev/null
+++ b/packages/bluez/bluez-gstreamer-plugin_3.22.bb
@@ -0,0 +1,26 @@
+require bluez-utils3.inc
+
+DEPENDS += "gstreamer gst-plugins-base "
+
+# see bluez-utils3.inc for the explanation of these option
+EXTRA_OECONF = " \
+ --enable-bccmd \
+ --enable-hid2hci \
+ --enable-alsa \
+ --disable-cups \
+ --enable-glib \
+ --enable-gstreamer \
+ --disable-sdpd \
+ --enable-network \
+ --enable-serial \
+ --enable-input \
+ --enable-audio \
+ --enable-echo \
+ --enable-configfile \
+ --enable-initscripts \
+ --enable-test \
+ "
+
+PACKAGES = "${PN}"
+
+FILES_${PN} = "${libdir}/gstreamer-0.10/libgstbluetooth.so"
diff --git a/packages/bluez/bluez-gstreamer-plugin_3.23.bb b/packages/bluez/bluez-gstreamer-plugin_3.23.bb
new file mode 100644
index 0000000000..c5a1a9acee
--- /dev/null
+++ b/packages/bluez/bluez-gstreamer-plugin_3.23.bb
@@ -0,0 +1,26 @@
+require bluez-utils3.inc
+
+DEPENDS += "gstreamer gst-plugins-base "
+
+# see bluez-utils3.inc for the explanation of these option
+EXTRA_OECONF = " \
+ --enable-bccmd \
+ --enable-hid2hci \
+ --enable-alsa \
+ --disable-cups \
+ --enable-glib \
+ --enable-gstreamer \
+ --disable-sdpd \
+ --enable-network \
+ --enable-serial \
+ --enable-input \
+ --enable-audio \
+ --enable-echo \
+ --enable-configfile \
+ --enable-initscripts \
+ --enable-test \
+ "
+
+PACKAGES = "${PN}"
+
+FILES_${PN} = "${libdir}/gstreamer-0.10/libgstbluetooth.so"
diff --git a/packages/bluez/bluez-libs_3.22.bb b/packages/bluez/bluez-libs_3.22.bb
new file mode 100644
index 0000000000..6ddf62a4fb
--- /dev/null
+++ b/packages/bluez/bluez-libs_3.22.bb
@@ -0,0 +1 @@
+require bluez-libs.inc
diff --git a/packages/bluez/bluez-libs_3.23.bb b/packages/bluez/bluez-libs_3.23.bb
new file mode 100644
index 0000000000..6ddf62a4fb
--- /dev/null
+++ b/packages/bluez/bluez-libs_3.23.bb
@@ -0,0 +1 @@
+require bluez-libs.inc
diff --git a/packages/bluez/bluez-utils-alsa_3.22.bb b/packages/bluez/bluez-utils-alsa_3.22.bb
new file mode 100644
index 0000000000..e2f48fba49
--- /dev/null
+++ b/packages/bluez/bluez-utils-alsa_3.22.bb
@@ -0,0 +1,24 @@
+require bluez-utils3.inc
+
+DEPENDS += "alsa-lib"
+
+# see bluez-utils3.inc for the explanation of these option
+EXTRA_OECONF = " \
+ --enable-bccmd \
+ --disable-hid2hci \
+ --enable-alsa \
+ --disable-cups \
+ --enable-glib \
+ --disable-sdpd \
+ --enable-network \
+ --enable-serial \
+ --enable-input \
+ --enable-audio \
+ --enable-echo \
+ --enable-configfile \
+ --enable-initscripts \
+ --enable-test \
+ "
+
+PACKAGES = "${PN}"
+FILES_${PN} = "${libdir}/alsa-lib/libasound*"
diff --git a/packages/bluez/bluez-utils-alsa_3.23.bb b/packages/bluez/bluez-utils-alsa_3.23.bb
new file mode 100644
index 0000000000..e2f48fba49
--- /dev/null
+++ b/packages/bluez/bluez-utils-alsa_3.23.bb
@@ -0,0 +1,24 @@
+require bluez-utils3.inc
+
+DEPENDS += "alsa-lib"
+
+# see bluez-utils3.inc for the explanation of these option
+EXTRA_OECONF = " \
+ --enable-bccmd \
+ --disable-hid2hci \
+ --enable-alsa \
+ --disable-cups \
+ --enable-glib \
+ --disable-sdpd \
+ --enable-network \
+ --enable-serial \
+ --enable-input \
+ --enable-audio \
+ --enable-echo \
+ --enable-configfile \
+ --enable-initscripts \
+ --enable-test \
+ "
+
+PACKAGES = "${PN}"
+FILES_${PN} = "${libdir}/alsa-lib/libasound*"
diff --git a/packages/bluez/bluez-utils_3.22.bb b/packages/bluez/bluez-utils_3.22.bb
new file mode 100644
index 0000000000..48f147aa69
--- /dev/null
+++ b/packages/bluez/bluez-utils_3.22.bb
@@ -0,0 +1,29 @@
+require bluez-utils3.inc
+
+# see bluez-utils3.inc for the explanation of these option
+EXTRA_OECONF = " \
+ --enable-bccmd \
+ --enable-hid2hci \
+ --disable-alsa \
+ --disable-cups \
+ --enable-glib \
+ --disable-sdpd \
+ --enable-network \
+ --enable-serial \
+ --enable-input \
+ --enable-audio \
+ --enable-echo \
+ --enable-configfile \
+ --enable-initscripts \
+ --enable-test \
+ "
+
+CONFFILES_${PN} = " \
+ ${sysconfdir}/bluetooth/hcid.conf \
+ ${sysconfdir}/default/bluetooth \
+ "
+
+CONFFILES_${PN}-compat = " \
+ ${sysconfdir}/bluetooth/rfcomm.conf \
+ "
+
diff --git a/packages/bluez/bluez-utils_3.23.bb b/packages/bluez/bluez-utils_3.23.bb
new file mode 100644
index 0000000000..48f147aa69
--- /dev/null
+++ b/packages/bluez/bluez-utils_3.23.bb
@@ -0,0 +1,29 @@
+require bluez-utils3.inc
+
+# see bluez-utils3.inc for the explanation of these option
+EXTRA_OECONF = " \
+ --enable-bccmd \
+ --enable-hid2hci \
+ --disable-alsa \
+ --disable-cups \
+ --enable-glib \
+ --disable-sdpd \
+ --enable-network \
+ --enable-serial \
+ --enable-input \
+ --enable-audio \
+ --enable-echo \
+ --enable-configfile \
+ --enable-initscripts \
+ --enable-test \
+ "
+
+CONFFILES_${PN} = " \
+ ${sysconfdir}/bluetooth/hcid.conf \
+ ${sysconfdir}/default/bluetooth \
+ "
+
+CONFFILES_${PN}-compat = " \
+ ${sysconfdir}/bluetooth/rfcomm.conf \
+ "
+
diff --git a/packages/boost/boost_1.33.0.bb b/packages/boost/boost_1.33.0.bb
index 0a72d360d6..6d4a2b860f 100644
--- a/packages/boost/boost_1.33.0.bb
+++ b/packages/boost/boost_1.33.0.bb
@@ -63,7 +63,7 @@ FILES_boost-wserialization = "${libdir}/libboost_wserialization.so.${PV}"
#PYTHON_ROOT = "/dev/null"
# to remove the python build
DEPENDS += "python"
-PYTHON_ROOT = "${STAGING_DIR}/${HOST_SYS}"
+PYTHON_ROOT = "${STAGING_DIR_HOST}"
PYTHON_VERSION = "2.4"
PACKAGES += "boost-python"
diff --git a/packages/boost/boost_1.33.1.bb b/packages/boost/boost_1.33.1.bb
index 4de97661d3..f132785d79 100644
--- a/packages/boost/boost_1.33.1.bb
+++ b/packages/boost/boost_1.33.1.bb
@@ -63,7 +63,7 @@ FILES_boost-wserialization = "${libdir}/libboost_wserialization.so.${PV}"
#PYTHON_ROOT = "/dev/null"
# to remove the python build
DEPENDS += "python"
-PYTHON_ROOT = "${STAGING_DIR}/${HOST_SYS}"
+PYTHON_ROOT = "${STAGING_DIR_HOST}"
PYTHON_VERSION = "2.4"
PACKAGES += "boost-python"
diff --git a/packages/busybox/busybox-1.2.0/angstrom/defconfig b/packages/busybox/busybox-1.2.0/angstrom/defconfig
index 981b7d7c71..e5f48ec64f 100644
--- a/packages/busybox/busybox-1.2.0/angstrom/defconfig
+++ b/packages/busybox/busybox-1.2.0/angstrom/defconfig
@@ -603,8 +603,8 @@ CONFIG_ASH=y
# Ash Shell Options
#
CONFIG_ASH_JOB_CONTROL=y
-# CONFIG_ASH_READ_NCHARS is not set
-# CONFIG_ASH_READ_TIMEOUT is not set
+CONFIG_ASH_READ_NCHARS=y
+CONFIG_ASH_READ_TIMEOUT=y
CONFIG_ASH_ALIAS=y
CONFIG_ASH_MATH_SUPPORT=y
# CONFIG_ASH_MATH_SUPPORT_64 is not set
diff --git a/packages/busybox/busybox-1.2.1/angstrom/defconfig b/packages/busybox/busybox-1.2.1/angstrom/defconfig
index eb0b8d7c64..1807dab68e 100644
--- a/packages/busybox/busybox-1.2.1/angstrom/defconfig
+++ b/packages/busybox/busybox-1.2.1/angstrom/defconfig
@@ -603,8 +603,8 @@ CONFIG_ASH=y
# Ash Shell Options
#
CONFIG_ASH_JOB_CONTROL=y
-# CONFIG_ASH_READ_NCHARS is not set
-# CONFIG_ASH_READ_TIMEOUT is not set
+CONFIG_ASH_READ_NCHARS=y
+CONFIG_ASH_READ_TIMEOUT=y
CONFIG_ASH_ALIAS=y
CONFIG_ASH_MATH_SUPPORT=y
# CONFIG_ASH_MATH_SUPPORT_64 is not set
diff --git a/packages/busybox/busybox-1.2.1/slugos/defconfig b/packages/busybox/busybox-1.2.1/slugos/defconfig
index c76954e711..74ece9c3b6 100644
--- a/packages/busybox/busybox-1.2.1/slugos/defconfig
+++ b/packages/busybox/busybox-1.2.1/slugos/defconfig
@@ -171,7 +171,7 @@ CONFIG_MKNOD=y
CONFIG_MV=y
# CONFIG_FEATURE_MV_LONG_OPTIONS is not set
# CONFIG_NICE is not set
-# CONFIG_NOHUP is not set
+CONFIG_NOHUP=y
CONFIG_OD=y
# CONFIG_PRINTENV is not set
CONFIG_PRINTF=y
@@ -595,8 +595,8 @@ CONFIG_ASH=y
# Ash Shell Options
#
CONFIG_ASH_JOB_CONTROL=y
-# CONFIG_ASH_READ_NCHARS is not set
-# CONFIG_ASH_READ_TIMEOUT is not set
+CONFIG_ASH_READ_NCHARS=y
+CONFIG_ASH_READ_TIMEOUT=y
CONFIG_ASH_ALIAS=y
CONFIG_ASH_MATH_SUPPORT=y
# CONFIG_ASH_MATH_SUPPORT_64 is not set
diff --git a/packages/busybox/busybox-1.2.2/angstrom/defconfig b/packages/busybox/busybox-1.2.2/angstrom/defconfig
index eb0b8d7c64..1807dab68e 100644
--- a/packages/busybox/busybox-1.2.2/angstrom/defconfig
+++ b/packages/busybox/busybox-1.2.2/angstrom/defconfig
@@ -603,8 +603,8 @@ CONFIG_ASH=y
# Ash Shell Options
#
CONFIG_ASH_JOB_CONTROL=y
-# CONFIG_ASH_READ_NCHARS is not set
-# CONFIG_ASH_READ_TIMEOUT is not set
+CONFIG_ASH_READ_NCHARS=y
+CONFIG_ASH_READ_TIMEOUT=y
CONFIG_ASH_ALIAS=y
CONFIG_ASH_MATH_SUPPORT=y
# CONFIG_ASH_MATH_SUPPORT_64 is not set
diff --git a/packages/busybox/busybox-1.3.1/angstrom/defconfig b/packages/busybox/busybox-1.3.1/angstrom/defconfig
index eb0b8d7c64..1807dab68e 100644
--- a/packages/busybox/busybox-1.3.1/angstrom/defconfig
+++ b/packages/busybox/busybox-1.3.1/angstrom/defconfig
@@ -603,8 +603,8 @@ CONFIG_ASH=y
# Ash Shell Options
#
CONFIG_ASH_JOB_CONTROL=y
-# CONFIG_ASH_READ_NCHARS is not set
-# CONFIG_ASH_READ_TIMEOUT is not set
+CONFIG_ASH_READ_NCHARS=y
+CONFIG_ASH_READ_TIMEOUT=y
CONFIG_ASH_ALIAS=y
CONFIG_ASH_MATH_SUPPORT=y
# CONFIG_ASH_MATH_SUPPORT_64 is not set
diff --git a/packages/busybox/busybox-1.5.0/angstrom/defconfig b/packages/busybox/busybox-1.5.0/angstrom/defconfig
index eb0b8d7c64..1807dab68e 100644
--- a/packages/busybox/busybox-1.5.0/angstrom/defconfig
+++ b/packages/busybox/busybox-1.5.0/angstrom/defconfig
@@ -603,8 +603,8 @@ CONFIG_ASH=y
# Ash Shell Options
#
CONFIG_ASH_JOB_CONTROL=y
-# CONFIG_ASH_READ_NCHARS is not set
-# CONFIG_ASH_READ_TIMEOUT is not set
+CONFIG_ASH_READ_NCHARS=y
+CONFIG_ASH_READ_TIMEOUT=y
CONFIG_ASH_ALIAS=y
CONFIG_ASH_MATH_SUPPORT=y
# CONFIG_ASH_MATH_SUPPORT_64 is not set
diff --git a/packages/busybox/busybox-1.6.0/angstrom/defconfig b/packages/busybox/busybox-1.6.0/angstrom/defconfig
index eb0b8d7c64..1807dab68e 100644
--- a/packages/busybox/busybox-1.6.0/angstrom/defconfig
+++ b/packages/busybox/busybox-1.6.0/angstrom/defconfig
@@ -603,8 +603,8 @@ CONFIG_ASH=y
# Ash Shell Options
#
CONFIG_ASH_JOB_CONTROL=y
-# CONFIG_ASH_READ_NCHARS is not set
-# CONFIG_ASH_READ_TIMEOUT is not set
+CONFIG_ASH_READ_NCHARS=y
+CONFIG_ASH_READ_TIMEOUT=y
CONFIG_ASH_ALIAS=y
CONFIG_ASH_MATH_SUPPORT=y
# CONFIG_ASH_MATH_SUPPORT_64 is not set
diff --git a/packages/busybox/busybox-1.7.2/angstrom/defconfig b/packages/busybox/busybox-1.7.2/angstrom/defconfig
index 19cfafab2c..30e71e8ffe 100644
--- a/packages/busybox/busybox-1.7.2/angstrom/defconfig
+++ b/packages/busybox/busybox-1.7.2/angstrom/defconfig
@@ -677,8 +677,8 @@ CONFIG_ASH=y
# Ash Shell Options
#
CONFIG_ASH_JOB_CONTROL=y
-# CONFIG_ASH_READ_NCHARS is not set
-# CONFIG_ASH_READ_TIMEOUT is not set
+CONFIG_ASH_READ_NCHARS=y
+CONFIG_ASH_READ_TIMEOUT=y
CONFIG_ASH_ALIAS=y
CONFIG_ASH_MATH_SUPPORT=y
# CONFIG_ASH_MATH_SUPPORT_64 is not set
diff --git a/packages/busybox/busybox-1.7.2/defconfig b/packages/busybox/busybox-1.7.2/defconfig
deleted file mode 100644
index 7308eead76..0000000000
--- a/packages/busybox/busybox-1.7.2/defconfig
+++ /dev/null
@@ -1,647 +0,0 @@
-#
-# Automatically generated make config: don't edit
-#
-HAVE_DOT_CONFIG=y
-
-#
-# Busybox Settings
-#
-
-#
-# General Configuration
-#
-# CONFIG_NITPICK is not set
-# CONFIG_FEATURE_BUFFERS_USE_MALLOC is not set
-# CONFIG_FEATURE_BUFFERS_GO_ON_STACK is not set
-# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set
-CONFIG_SHOW_USAGE=y
-# CONFIG_FEATURE_VERBOSE_USAGE is not set
-# CONFIG_FEATURE_COMPRESS_USAGE is not set
-# CONFIG_FEATURE_INSTALLER is not set
-CONFIG_LOCALE_SUPPORT=y
-CONFIG_GETOPT_LONG=y
-CONFIG_FEATURE_DEVPTS=y
-# CONFIG_FEATURE_CLEAN_UP is not set
-# CONFIG_FEATURE_SUID is not set
-# CONFIG_FEATURE_SUID_CONFIG is not set
-# CONFIG_FEATURE_SUID_CONFIG_QUIET is not set
-# CONFIG_SELINUX is not set
-CONFIG_BUSYBOX_EXEC_PATH="/proc/self/exe"
-
-#
-# Build Options
-#
-# CONFIG_STATIC is not set
-# CONFIG_BUILD_LIBBUSYBOX is not set
-# CONFIG_FEATURE_FULL_LIBBUSYBOX is not set
-# CONFIG_FEATURE_SHARED_BUSYBOX is not set
-CONFIG_LFS=y
-USING_CROSS_COMPILER=y
-CROSS_COMPILER_PREFIX="arm-angstrom-linux-gnueabi-"
-CONFIG_BUILD_AT_ONCE=y
-
-#
-# Debugging Options
-#
-# CONFIG_DEBUG is not set
-# CONFIG_DEBUG_PESSIMIZE is not set
-# CONFIG_NO_DEBUG_LIB is not set
-# CONFIG_DMALLOC is not set
-# CONFIG_EFENCE is not set
-CONFIG_DEBUG_YANK_SUSv2=y
-
-#
-# Installation Options
-#
-# CONFIG_INSTALL_NO_USR is not set
-CONFIG_INSTALL_APPLET_SYMLINKS=y
-# CONFIG_INSTALL_APPLET_HARDLINKS is not set
-# CONFIG_INSTALL_APPLET_DONT is not set
-PREFIX="./_install"
-
-#
-# Busybox Library Tuning
-#
-CONFIG_MD5_SIZE_VS_SPEED=2
-
-#
-# Applets
-#
-
-#
-# Archival Utilities
-#
-CONFIG_AR=y
-# CONFIG_FEATURE_AR_LONG_FILENAMES is not set
-CONFIG_BUNZIP2=y
-CONFIG_CPIO=y
-# CONFIG_DPKG is not set
-# CONFIG_DPKG_DEB is not set
-# CONFIG_FEATURE_DPKG_DEB_EXTRACT_ONLY is not set
-CONFIG_GUNZIP=y
-# CONFIG_FEATURE_GUNZIP_UNCOMPRESS is not set
-CONFIG_GZIP=y
-# CONFIG_RPM2CPIO is not set
-# CONFIG_RPM is not set
-CONFIG_TAR=y
-CONFIG_FEATURE_TAR_CREATE=y
-CONFIG_FEATURE_TAR_BZIP2=y
-# CONFIG_FEATURE_TAR_LZMA is not set
-CONFIG_FEATURE_TAR_FROM=y
-CONFIG_FEATURE_TAR_GZIP=y
-# CONFIG_FEATURE_TAR_COMPRESS is not set
-# CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY is not set
-CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y
-# CONFIG_FEATURE_TAR_LONG_OPTIONS is not set
-# CONFIG_UNCOMPRESS is not set
-# CONFIG_UNLZMA is not set
-# CONFIG_FEATURE_LZMA_FAST is not set
-CONFIG_UNZIP=y
-
-#
-# Common options for cpio and tar
-#
-# CONFIG_FEATURE_UNARCHIVE_TAPE is not set
-# CONFIG_FEATURE_DEB_TAR_GZ is not set
-# CONFIG_FEATURE_DEB_TAR_BZ2 is not set
-# CONFIG_FEATURE_DEB_TAR_LZMA is not set
-
-#
-# Coreutils
-#
-CONFIG_BASENAME=y
-# CONFIG_CAL is not set
-CONFIG_CAT=y
-# CONFIG_CATV is not set
-CONFIG_CHGRP=y
-CONFIG_CHMOD=y
-CONFIG_CHOWN=y
-CONFIG_CHROOT=y
-# CONFIG_CKSUM is not set
-# CONFIG_CMP is not set
-# CONFIG_COMM is not set
-CONFIG_CP=y
-CONFIG_CUT=y
-CONFIG_DATE=y
-# CONFIG_FEATURE_DATE_ISOFMT is not set
-CONFIG_DD=y
-CONFIG_FEATURE_DD_SIGNAL_HANDLING=y
-# CONFIG_FEATURE_DD_IBS_OBS is not set
-CONFIG_DF=y
-CONFIG_DIFF=y
-CONFIG_FEATURE_DIFF_BINARY=y
-CONFIG_FEATURE_DIFF_DIR=y
-# CONFIG_FEATURE_DIFF_MINIMAL is not set
-CONFIG_DIRNAME=y
-# CONFIG_DOS2UNIX is not set
-# CONFIG_UNIX2DOS is not set
-CONFIG_DU=y
-CONFIG_FEATURE_DU_DEFAULT_BLOCKSIZE_1K=y
-CONFIG_ECHO=y
-CONFIG_FEATURE_FANCY_ECHO=y
-CONFIG_ENV=y
-CONFIG_FEATURE_ENV_LONG_OPTIONS=y
-CONFIG_EXPR=y
-# CONFIG_EXPR_MATH_SUPPORT_64 is not set
-CONFIG_FALSE=y
-# CONFIG_FOLD is not set
-CONFIG_HEAD=y
-# CONFIG_FEATURE_FANCY_HEAD is not set
-# CONFIG_HOSTID is not set
-CONFIG_ID=y
-# CONFIG_INSTALL is not set
-# CONFIG_FEATURE_INSTALL_LONG_OPTIONS is not set
-# CONFIG_LENGTH is not set
-CONFIG_LN=y
-CONFIG_LOGNAME=y
-CONFIG_LS=y
-CONFIG_FEATURE_LS_FILETYPES=y
-CONFIG_FEATURE_LS_FOLLOWLINKS=y
-CONFIG_FEATURE_LS_RECURSIVE=y
-CONFIG_FEATURE_LS_SORTFILES=y
-CONFIG_FEATURE_LS_TIMESTAMPS=y
-CONFIG_FEATURE_LS_USERNAME=y
-CONFIG_FEATURE_LS_COLOR=y
-# CONFIG_FEATURE_LS_COLOR_IS_DEFAULT is not set
-CONFIG_MD5SUM=y
-CONFIG_MKDIR=y
-CONFIG_FEATURE_MKDIR_LONG_OPTIONS=y
-CONFIG_MKFIFO=y
-CONFIG_MKNOD=y
-CONFIG_MV=y
-# CONFIG_FEATURE_MV_LONG_OPTIONS is not set
-# CONFIG_NICE is not set
-CONFIG_NOHUP=y
-CONFIG_OD=y
-# CONFIG_PRINTENV is not set
-CONFIG_PRINTF=y
-CONFIG_PWD=y
-CONFIG_REALPATH=y
-CONFIG_RM=y
-CONFIG_RMDIR=y
-CONFIG_SEQ=y
-# CONFIG_SHA1SUM is not set
-CONFIG_SLEEP=y
-CONFIG_FEATURE_FANCY_SLEEP=y
-CONFIG_SORT=y
-CONFIG_FEATURE_SORT_BIG=y
-# CONFIG_STAT is not set
-# CONFIG_FEATURE_STAT_FORMAT is not set
-CONFIG_STTY=y
-# CONFIG_SUM is not set
-CONFIG_SYNC=y
-CONFIG_TAIL=y
-CONFIG_FEATURE_FANCY_TAIL=y
-CONFIG_TEE=y
-# CONFIG_FEATURE_TEE_USE_BLOCK_IO is not set
-CONFIG_TEST=y
-# CONFIG_FEATURE_TEST_64 is not set
-CONFIG_TOUCH=y
-CONFIG_TR=y
-CONFIG_FEATURE_TR_CLASSES=y
-# CONFIG_FEATURE_TR_EQUIV is not set
-CONFIG_TRUE=y
-CONFIG_TTY=y
-CONFIG_UNAME=y
-CONFIG_UNIQ=y
-CONFIG_USLEEP=y
-# CONFIG_UUDECODE is not set
-# CONFIG_UUENCODE is not set
-CONFIG_WATCH=y
-CONFIG_WC=y
-CONFIG_WHO=y
-CONFIG_WHOAMI=y
-CONFIG_YES=y
-
-#
-# Common options for cp and mv
-#
-# CONFIG_FEATURE_PRESERVE_HARDLINKS is not set
-
-#
-# Common options for ls, more and telnet
-#
-CONFIG_FEATURE_AUTOWIDTH=y
-
-#
-# Common options for df, du, ls
-#
-CONFIG_FEATURE_HUMAN_READABLE=y
-
-#
-# Common options for md5sum, sha1sum
-#
-CONFIG_FEATURE_MD5_SHA1_SUM_CHECK=y
-
-#
-# Console Utilities
-#
-CONFIG_CHVT=y
-CONFIG_CLEAR=y
-CONFIG_DEALLOCVT=y
-CONFIG_DUMPKMAP=y
-CONFIG_LOADFONT=y
-CONFIG_LOADKMAP=y
-CONFIG_OPENVT=y
-CONFIG_RESET=y
-CONFIG_SETCONSOLE=y
-# CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS is not set
-# CONFIG_SETKEYCODES is not set
-# CONFIG_SETLOGCONS is not set
-
-#
-# Debian Utilities
-#
-CONFIG_MKTEMP=y
-# CONFIG_PIPE_PROGRESS is not set
-CONFIG_READLINK=y
-CONFIG_FEATURE_READLINK_FOLLOW=y
-CONFIG_RUN_PARTS=y
-# CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS is not set
-CONFIG_START_STOP_DAEMON=y
-CONFIG_FEATURE_START_STOP_DAEMON_FANCY=y
-CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS=y
-CONFIG_WHICH=y
-
-#
-# Editors
-#
-CONFIG_AWK=y
-CONFIG_FEATURE_AWK_MATH=y
-# CONFIG_ED is not set
-CONFIG_PATCH=y
-CONFIG_SED=y
-CONFIG_VI=y
-CONFIG_FEATURE_VI_COLON=y
-CONFIG_FEATURE_VI_YANKMARK=y
-CONFIG_FEATURE_VI_SEARCH=y
-CONFIG_FEATURE_VI_USE_SIGNALS=y
-# CONFIG_FEATURE_VI_DOT_CMD is not set
-# CONFIG_FEATURE_VI_READONLY is not set
-# CONFIG_FEATURE_VI_SETOPTS is not set
-# CONFIG_FEATURE_VI_SET is not set
-CONFIG_FEATURE_VI_WIN_RESIZE=y
-CONFIG_FEATURE_VI_OPTIMIZE_CURSOR=y
-
-#
-# Finding Utilities
-#
-CONFIG_FIND=y
-CONFIG_FEATURE_FIND_PRINT0=y
-CONFIG_FEATURE_FIND_MTIME=y
-CONFIG_FEATURE_FIND_MMIN=y
-CONFIG_FEATURE_FIND_PERM=y
-CONFIG_FEATURE_FIND_TYPE=y
-CONFIG_FEATURE_FIND_XDEV=y
-CONFIG_FEATURE_FIND_NEWER=y
-# CONFIG_FEATURE_FIND_INUM is not set
-CONFIG_FEATURE_FIND_EXEC=y
-CONFIG_GREP=y
-CONFIG_FEATURE_GREP_EGREP_ALIAS=y
-CONFIG_FEATURE_GREP_FGREP_ALIAS=y
-CONFIG_FEATURE_GREP_CONTEXT=y
-CONFIG_XARGS=y
-# CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION is not set
-# CONFIG_FEATURE_XARGS_SUPPORT_QUOTES is not set
-# CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT is not set
-# CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM is not set
-
-#
-# Init Utilities
-#
-# CONFIG_INIT is not set
-# CONFIG_DEBUG_INIT is not set
-# CONFIG_FEATURE_USE_INITTAB is not set
-# CONFIG_FEATURE_INIT_SCTTY is not set
-# CONFIG_FEATURE_EXTRA_QUIET is not set
-# CONFIG_FEATURE_INIT_COREDUMPS is not set
-# CONFIG_FEATURE_INITRD is not set
-# CONFIG_HALT is not set
-# CONFIG_MESG is not set
-
-#
-# Login/Password Management Utilities
-#
-# CONFIG_FEATURE_SHADOWPASSWDS is not set
-# CONFIG_USE_BB_SHADOW is not set
-# CONFIG_USE_BB_PWD_GRP is not set
-# CONFIG_ADDGROUP is not set
-# CONFIG_DELGROUP is not set
-# CONFIG_ADDUSER is not set
-# CONFIG_DELUSER is not set
-# CONFIG_GETTY is not set
-CONFIG_FEATURE_UTMP=y
-# CONFIG_FEATURE_WTMP is not set
-# CONFIG_LOGIN is not set
-# CONFIG_FEATURE_SECURETTY is not set
-# CONFIG_PASSWD is not set
-# CONFIG_SU is not set
-# CONFIG_SULOGIN is not set
-# CONFIG_VLOCK is not set
-
-#
-# Linux Ext2 FS Progs
-#
-CONFIG_CHATTR=y
-CONFIG_E2FSCK=y
-CONFIG_FSCK=y
-# CONFIG_LSATTR is not set
-CONFIG_MKE2FS=y
-# CONFIG_TUNE2FS is not set
-# CONFIG_E2LABEL is not set
-# CONFIG_FINDFS is not set
-
-#
-# Linux Module Utilities
-#
-CONFIG_INSMOD=y
-# CONFIG_FEATURE_INSMOD_VERSION_CHECKING is not set
-# CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS is not set
-# CONFIG_FEATURE_INSMOD_LOADINKMEM is not set
-# CONFIG_FEATURE_INSMOD_LOAD_MAP is not set
-# CONFIG_FEATURE_INSMOD_LOAD_MAP_FULL is not set
-CONFIG_RMMOD=y
-CONFIG_LSMOD=y
-# CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT is not set
-CONFIG_MODPROBE=y
-CONFIG_FEATURE_MODPROBE_MULTIPLE_OPTIONS=y
-
-#
-# Options common to multiple modutils
-#
-CONFIG_FEATURE_CHECK_TAINTED_MODULE=y
-# CONFIG_FEATURE_2_4_MODULES is not set
-CONFIG_FEATURE_2_6_MODULES=y
-# CONFIG_FEATURE_QUERY_MODULE_INTERFACE is not set
-
-#
-# Linux System Utilities
-#
-CONFIG_DMESG=y
-CONFIG_FBSET=y
-CONFIG_FEATURE_FBSET_FANCY=y
-CONFIG_FEATURE_FBSET_READMODE=y
-# CONFIG_FDFLUSH is not set
-# CONFIG_FDFORMAT is not set
-CONFIG_FDISK=y
-FDISK_SUPPORT_LARGE_DISKS=y
-CONFIG_FEATURE_FDISK_WRITABLE=y
-# CONFIG_FEATURE_AIX_LABEL is not set
-# CONFIG_FEATURE_SGI_LABEL is not set
-# CONFIG_FEATURE_SUN_LABEL is not set
-# CONFIG_FEATURE_OSF_LABEL is not set
-# CONFIG_FEATURE_FDISK_ADVANCED is not set
-# CONFIG_FREERAMDISK is not set
-CONFIG_FSCK_MINIX=y
-CONFIG_MKFS_MINIX=y
-
-#
-# Minix filesystem support
-#
-CONFIG_FEATURE_MINIX2=y
-# CONFIG_GETOPT is not set
-CONFIG_HEXDUMP=y
-CONFIG_HWCLOCK=y
-CONFIG_FEATURE_HWCLOCK_LONG_OPTIONS=y
-CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS=y
-# CONFIG_IPCRM is not set
-# CONFIG_IPCS is not set
-CONFIG_LOSETUP=y
-# CONFIG_MDEV is not set
-# CONFIG_FEATURE_MDEV_CONF is not set
-# CONFIG_FEATURE_MDEV_EXEC is not set
-CONFIG_MKSWAP=y
-# CONFIG_FEATURE_MKSWAP_V0 is not set
-CONFIG_MORE=y
-CONFIG_FEATURE_USE_TERMIOS=y
-CONFIG_MOUNT=y
-CONFIG_FEATURE_MOUNT_NFS=y
-CONFIG_PIVOT_ROOT=y
-CONFIG_RDATE=y
-# CONFIG_READPROFILE is not set
-# CONFIG_SETARCH is not set
-CONFIG_SWAPONOFF=y
-# CONFIG_SWITCH_ROOT is not set
-CONFIG_UMOUNT=y
-# CONFIG_FEATURE_UMOUNT_ALL is not set
-
-#
-# Common options for mount/umount
-#
-CONFIG_FEATURE_MOUNT_LOOP=y
-# CONFIG_FEATURE_MTAB_SUPPORT is not set
-
-#
-# Miscellaneous Utilities
-#
-# CONFIG_ADJTIMEX is not set
-# CONFIG_BBCONFIG is not set
-# CONFIG_CROND is not set
-# CONFIG_DEBUG_CROND_OPTION is not set
-# CONFIG_FEATURE_CROND_CALL_SENDMAIL is not set
-# CONFIG_CRONTAB is not set
-CONFIG_DC=y
-# CONFIG_DEVFSD is not set
-# CONFIG_DEVFSD_MODLOAD is not set
-# CONFIG_DEVFSD_FG_NP is not set
-# CONFIG_DEVFSD_VERBOSE is not set
-# CONFIG_FEATURE_DEVFS is not set
-# CONFIG_EJECT is not set
-# CONFIG_LAST is not set
-CONFIG_LESS=y
-CONFIG_FEATURE_LESS_BRACKETS=y
-CONFIG_FEATURE_LESS_FLAGS=y
-# CONFIG_FEATURE_LESS_FLAGCS is not set
-# CONFIG_FEATURE_LESS_MARKS is not set
-# CONFIG_FEATURE_LESS_REGEXP is not set
-# CONFIG_HDPARM is not set
-# CONFIG_FEATURE_HDPARM_GET_IDENTITY is not set
-# CONFIG_FEATURE_HDPARM_HDIO_SCAN_HWIF is not set
-# CONFIG_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF is not set
-# CONFIG_FEATURE_HDPARM_HDIO_DRIVE_RESET is not set
-# CONFIG_FEATURE_HDPARM_HDIO_TRISTATE_HWIF is not set
-# CONFIG_FEATURE_HDPARM_HDIO_GETSET_DMA is not set
-# CONFIG_MAKEDEVS is not set
-# CONFIG_FEATURE_MAKEDEVS_LEAF is not set
-# CONFIG_FEATURE_MAKEDEVS_TABLE is not set
-# CONFIG_MOUNTPOINT is not set
-# CONFIG_MT is not set
-# CONFIG_RUNLEVEL is not set
-# CONFIG_RX is not set
-CONFIG_STRINGS=y
-# CONFIG_SETSID is not set
-# CONFIG_TASKSET is not set
-CONFIG_TIME=y
-# CONFIG_WATCHDOG is not set
-
-#
-# Networking Utilities
-#
-CONFIG_FEATURE_IPV6=y
-# CONFIG_ARPING is not set
-# CONFIG_DNSD is not set
-# CONFIG_ETHER_WAKE is not set
-# CONFIG_FAKEIDENTD is not set
-# CONFIG_FTPGET is not set
-# CONFIG_FTPPUT is not set
-# CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS is not set
-CONFIG_HOSTNAME=y
-# CONFIG_HTTPD is not set
-# CONFIG_FEATURE_HTTPD_WITHOUT_INETD is not set
-# CONFIG_FEATURE_HTTPD_RELOAD_CONFIG_SIGHUP is not set
-# CONFIG_FEATURE_HTTPD_SETUID is not set
-# CONFIG_FEATURE_HTTPD_BASIC_AUTH is not set
-# CONFIG_FEATURE_HTTPD_AUTH_MD5 is not set
-# CONFIG_FEATURE_HTTPD_CONFIG_WITH_MIME_TYPES is not set
-# CONFIG_FEATURE_HTTPD_CGI is not set
-# CONFIG_FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR is not set
-# CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV is not set
-# CONFIG_FEATURE_HTTPD_ENCODE_URL_STR is not set
-CONFIG_IFCONFIG=y
-CONFIG_FEATURE_IFCONFIG_STATUS=y
-# CONFIG_FEATURE_IFCONFIG_SLIP is not set
-# CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ is not set
-CONFIG_FEATURE_IFCONFIG_HW=y
-# CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS is not set
-CONFIG_IFUPDOWN=y
-# CONFIG_FEATURE_IFUPDOWN_IP is not set
-CONFIG_FEATURE_IFUPDOWN_IP_BUILTIN=y
-CONFIG_FEATURE_IFUPDOWN_IPV4=y
-CONFIG_FEATURE_IFUPDOWN_IPV6=y
-# CONFIG_FEATURE_IFUPDOWN_IPX is not set
-CONFIG_FEATURE_IFUPDOWN_MAPPING=y
-# CONFIG_INETD is not set
-# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_ECHO is not set
-# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD is not set
-# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_TIME is not set
-# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME is not set
-# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN is not set
-# CONFIG_FEATURE_INETD_RPC is not set
-CONFIG_IP=y
-CONFIG_FEATURE_IP_ADDRESS=y
-CONFIG_FEATURE_IP_LINK=y
-CONFIG_FEATURE_IP_ROUTE=y
-CONFIG_FEATURE_IP_TUNNEL=y
-# CONFIG_FEATURE_IP_SHORT_FORMS is not set
-# CONFIG_IPADDR is not set
-# CONFIG_IPLINK is not set
-# CONFIG_IPROUTE is not set
-# CONFIG_IPTUNNEL is not set
-# CONFIG_IPCALC is not set
-# CONFIG_FEATURE_IPCALC_FANCY is not set
-# CONFIG_FEATURE_IPCALC_LONG_OPTIONS is not set
-# CONFIG_NAMEIF is not set
-CONFIG_NC=y
-# CONFIG_NC_GAPING_SECURITY_HOLE is not set
-CONFIG_NETSTAT=y
-CONFIG_NSLOOKUP=y
-CONFIG_PING=y
-CONFIG_FEATURE_FANCY_PING=y
-CONFIG_PING6=y
-CONFIG_FEATURE_FANCY_PING6=y
-CONFIG_ROUTE=y
-CONFIG_TELNET=y
-# CONFIG_FEATURE_TELNET_TTYPE is not set
-CONFIG_FEATURE_TELNET_AUTOLOGIN=y
-# CONFIG_TELNETD is not set
-# CONFIG_FEATURE_TELNETD_INETD is not set
-CONFIG_TFTP=y
-CONFIG_FEATURE_TFTP_GET=y
-CONFIG_FEATURE_TFTP_PUT=y
-# CONFIG_FEATURE_TFTP_BLOCKSIZE is not set
-# CONFIG_DEBUG_TFTP is not set
-CONFIG_TRACEROUTE=y
-# CONFIG_FEATURE_TRACEROUTE_VERBOSE is not set
-# CONFIG_FEATURE_TRACEROUTE_SOURCE_ROUTE is not set
-# CONFIG_FEATURE_TRACEROUTE_USE_ICMP is not set
-
-#
-# udhcp Server/Client
-#
-CONFIG_APP_UDHCPD=y
-CONFIG_APP_UDHCPC=y
-CONFIG_APP_DUMPLEASES=y
-CONFIG_FEATURE_UDHCP_SYSLOG=y
-# CONFIG_FEATURE_UDHCP_DEBUG is not set
-# CONFIG_VCONFIG is not set
-CONFIG_WGET=y
-CONFIG_FEATURE_WGET_STATUSBAR=y
-CONFIG_FEATURE_WGET_AUTHENTICATION=y
-CONFIG_FEATURE_WGET_IP6_LITERAL=y
-CONFIG_FEATURE_WGET_LONG_OPTIONS=y
-# CONFIG_ZCIP is not set
-
-#
-# Process Utilities
-#
-CONFIG_FREE=y
-CONFIG_FUSER=y
-CONFIG_KILL=y
-CONFIG_KILLALL=y
-CONFIG_PIDOF=y
-# CONFIG_FEATURE_PIDOF_SINGLE is not set
-# CONFIG_FEATURE_PIDOF_OMIT is not set
-CONFIG_PS=y
-CONFIG_FEATURE_PS_WIDE=y
-CONFIG_RENICE=y
-CONFIG_BB_SYSCTL=y
-CONFIG_TOP=y
-CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE=y
-CONFIG_UPTIME=y
-
-#
-# Shells
-#
-CONFIG_FEATURE_SH_IS_ASH=y
-# CONFIG_FEATURE_SH_IS_HUSH is not set
-# CONFIG_FEATURE_SH_IS_LASH is not set
-# CONFIG_FEATURE_SH_IS_MSH is not set
-# CONFIG_FEATURE_SH_IS_NONE is not set
-CONFIG_ASH=y
-
-#
-# Ash Shell Options
-#
-CONFIG_ASH_JOB_CONTROL=y
-# CONFIG_ASH_READ_NCHARS is not set
-# CONFIG_ASH_READ_TIMEOUT is not set
-CONFIG_ASH_ALIAS=y
-CONFIG_ASH_MATH_SUPPORT=y
-# CONFIG_ASH_MATH_SUPPORT_64 is not set
-CONFIG_ASH_GETOPTS=y
-# CONFIG_ASH_BUILTIN_ECHO is not set
-CONFIG_ASH_BUILTIN_TEST=y
-# CONFIG_ASH_CMDCMD is not set
-# CONFIG_ASH_MAIL is not set
-CONFIG_ASH_OPTIMIZE_FOR_SIZE=y
-# CONFIG_ASH_RANDOM_SUPPORT is not set
-CONFIG_ASH_EXPAND_PRMT=y
-# CONFIG_HUSH is not set
-# CONFIG_LASH is not set
-# CONFIG_MSH is not set
-
-#
-# Bourne Shell Options
-#
-CONFIG_FEATURE_SH_EXTRA_QUIET=y
-# CONFIG_FEATURE_SH_STANDALONE_SHELL is not set
-CONFIG_FEATURE_COMMAND_EDITING=y
-# CONFIG_FEATURE_COMMAND_EDITING_VI is not set
-CONFIG_FEATURE_COMMAND_HISTORY=63
-# CONFIG_FEATURE_COMMAND_SAVEHISTORY is not set
-CONFIG_FEATURE_COMMAND_TAB_COMPLETION=y
-# CONFIG_FEATURE_COMMAND_USERNAME_COMPLETION is not set
-CONFIG_FEATURE_SH_FANCY_PROMPT=y
-
-#
-# System Logging Utilities
-#
-CONFIG_SYSLOGD=y
-CONFIG_FEATURE_ROTATE_LOGFILE=y
-CONFIG_FEATURE_REMOTE_LOG=y
-CONFIG_FEATURE_IPC_SYSLOG=y
-CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=16
-CONFIG_LOGREAD=y
-CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING=y
-CONFIG_KLOGD=y
-CONFIG_LOGGER=y
diff --git a/packages/busybox/busybox-static-1.2.1/defconfig b/packages/busybox/busybox-static-1.2.1/defconfig
index eb0b8d7c64..1807dab68e 100644
--- a/packages/busybox/busybox-static-1.2.1/defconfig
+++ b/packages/busybox/busybox-static-1.2.1/defconfig
@@ -603,8 +603,8 @@ CONFIG_ASH=y
# Ash Shell Options
#
CONFIG_ASH_JOB_CONTROL=y
-# CONFIG_ASH_READ_NCHARS is not set
-# CONFIG_ASH_READ_TIMEOUT is not set
+CONFIG_ASH_READ_NCHARS=y
+CONFIG_ASH_READ_TIMEOUT=y
CONFIG_ASH_ALIAS=y
CONFIG_ASH_MATH_SUPPORT=y
# CONFIG_ASH_MATH_SUPPORT_64 is not set
diff --git a/packages/busybox/busybox-static_1.2.1.bb b/packages/busybox/busybox-static_1.2.1.bb
index f3bff07530..519468039a 100644
--- a/packages/busybox/busybox-static_1.2.1.bb
+++ b/packages/busybox/busybox-static_1.2.1.bb
@@ -1,5 +1,5 @@
require busybox_${PV}.bb
-PR = "r0"
+PR = "r1"
S = "${WORKDIR}/busybox-1.2.1"
diff --git a/packages/busybox/busybox_1.00.bb b/packages/busybox/busybox_1.00.bb
index 073a561e22..ca2db7e760 100644
--- a/packages/busybox/busybox_1.00.bb
+++ b/packages/busybox/busybox_1.00.bb
@@ -1,6 +1,6 @@
require busybox.inc
-PR = "r37"
+PR = "r38"
SRC_URI += "file://add-getkey-applet.patch;patch=1 \
file://below.patch;patch=1 \
diff --git a/packages/busybox/busybox_1.01.bb b/packages/busybox/busybox_1.01.bb
index 22e7e064a5..39a052bc90 100644
--- a/packages/busybox/busybox_1.01.bb
+++ b/packages/busybox/busybox_1.01.bb
@@ -1,6 +1,6 @@
require busybox.inc
-PR = "r12"
+PR = "r13"
SRC_URI += "file://add-getkey-applet.patch;patch=1 \
file://below.patch;patch=1 \
diff --git a/packages/busybox/busybox_1.2.0.bb b/packages/busybox/busybox_1.2.0.bb
index db8dd68c01..009d1724ff 100644
--- a/packages/busybox/busybox_1.2.0.bb
+++ b/packages/busybox/busybox_1.2.0.bb
@@ -1,6 +1,6 @@
require busybox.inc
-PR = "r1"
+PR = "r2"
SRC_URI += "file://defconfig"
diff --git a/packages/busybox/busybox_1.2.1.bb b/packages/busybox/busybox_1.2.1.bb
index 773c5e1a7e..325111c22f 100644
--- a/packages/busybox/busybox_1.2.1.bb
+++ b/packages/busybox/busybox_1.2.1.bb
@@ -1,13 +1,11 @@
require busybox.inc
-PR = "r14"
+PR = "r15"
SRC_URI += "file://wget-long-options.patch;patch=1 \
file://df_rootfs.patch;patch=1 \
file://defconfig"
-SRC_URI_append_avr32 = " file://install-should-unlink-dest-if-it-exists.patch;patch=1"
-
do_configure () {
install -m 0644 ${WORKDIR}/defconfig ${S}/.config.oe
diff --git a/packages/busybox/busybox_1.2.2.bb b/packages/busybox/busybox_1.2.2.bb
index 59aa5f07fc..75847e1117 100644
--- a/packages/busybox/busybox_1.2.2.bb
+++ b/packages/busybox/busybox_1.2.2.bb
@@ -1,5 +1,7 @@
require busybox.inc
+PR = "r1"
+
DEFAULT_PREFERENCE = "-1"
SRC_URI = "file://wget-long-options.patch;patch=1 \
diff --git a/packages/busybox/busybox_1.3.1.bb b/packages/busybox/busybox_1.3.1.bb
index a42a87c50d..369500fc7b 100644
--- a/packages/busybox/busybox_1.3.1.bb
+++ b/packages/busybox/busybox_1.3.1.bb
@@ -1,5 +1,7 @@
require busybox.inc
+PR = "r1"
+
DEFAULT_PREFERENCE = "-1"
SRC_URI = "file://defconfig"
diff --git a/packages/busybox/busybox_1.5.0.bb b/packages/busybox/busybox_1.5.0.bb
index a8678602e7..b8ee4854b8 100644
--- a/packages/busybox/busybox_1.5.0.bb
+++ b/packages/busybox/busybox_1.5.0.bb
@@ -1,6 +1,6 @@
require busybox.inc
-PR = "r0"
+PR = "r1"
DEFAULT_PREFERENCE = "-1"
diff --git a/packages/busybox/busybox_1.6.0.bb b/packages/busybox/busybox_1.6.0.bb
index a8678602e7..b8ee4854b8 100644
--- a/packages/busybox/busybox_1.6.0.bb
+++ b/packages/busybox/busybox_1.6.0.bb
@@ -1,6 +1,6 @@
require busybox.inc
-PR = "r0"
+PR = "r1"
DEFAULT_PREFERENCE = "-1"
diff --git a/packages/busybox/busybox_1.7.2.bb b/packages/busybox/busybox_1.7.2.bb
index 80a5aa2da6..98ed135f66 100644
--- a/packages/busybox/busybox_1.7.2.bb
+++ b/packages/busybox/busybox_1.7.2.bb
@@ -1,6 +1,6 @@
require busybox.inc
-PR = "r2"
+PR = "r4"
DEFAULT_PREFERENCE = "-1"
diff --git a/packages/cacao/cacao-cldc_0.98.bb b/packages/cacao/cacao-cldc_0.98.bb
index f7797206de..0f6af678f5 100644
--- a/packages/cacao/cacao-cldc_0.98.bb
+++ b/packages/cacao/cacao-cldc_0.98.bb
@@ -10,16 +10,16 @@ SRC_URI +="file://midpath.patch;patch=1 \
SRC_URI_append_arm = "file://offset.h_arm.patch;patch=1"
DEPENDS = "cacaoh-cldc-native ecj-native classpath-minimal-native virtual/cldc-api-1.1 libtool zlib"
-RDEPENDS = "virtual/cldc-api-1.1"
+RDEPENDS = "virtual/cldc-api-1.1 libltdl"
RPROVIDES = "virtual/java"
-EXTRA_OECONF += "--with-classpath-libdir=${STAGING_LIBDIR}/classpath-minimal \
+EXTRA_OECONF += "--with-classpath-libdir=${STAGING_DATADIR}/classpath-minimal \
--with-classpath-includedir=${STAGING_INCDIR}/classpath-minimal \
--enable-jni \
--enable-java=cldc1.1 \
--with-classpath=cldc1.1 \
- --with-classpath-classes=${STAGING_LIBDIR}/java/cldc1.1.jar \
- --with-target-classpath-classes=${libdir}/java/cldc1.1.jar \
+ --with-classpath-classes=${STAGING_DATADIR}/java/cldc1.1.jar \
+ --with-target-classpath-classes=${datadir}/java/cldc1.1.jar \
--with-cacaoh=${STAGING_BINDIR_NATIVE}/cacaoh \
--disable-libjvm \
"
@@ -28,7 +28,7 @@ PACKAGES = "${PN} ${PN}-doc ${PN}-dbg"
FILES_${PN} = "${bindir}/cacao"
FILES_${PN}-doc = "${datadir}/man"
-FILES_${PN}-dbg = "${bindir}/.debug ${libdir}/.debug/lib*.so*"
+FILES_${PN}-dbg = "${bindir}/.debug"
ALTERNATIVE_NAME = "java"
ALTERNATIVE_PATH = "${bindir}/cacao"
diff --git a/packages/cacao/cacao.inc b/packages/cacao/cacao.inc
index 1f783b8238..9315babfb9 100644
--- a/packages/cacao/cacao.inc
+++ b/packages/cacao/cacao.inc
@@ -3,6 +3,7 @@ HOMEPAGE = "http://www.cacaojvm.org/"
LICENSE = "GPL"
PRIORITY = "optional"
SECTION = "interpreters"
+PR = "r1"
inherit autotools
diff --git a/packages/cacao/cacaoh-cldc-native_0.98.bb b/packages/cacao/cacaoh-cldc-native_0.98.bb
index ebadf3e023..7ea7cad5dd 100644
--- a/packages/cacao/cacaoh-cldc-native_0.98.bb
+++ b/packages/cacao/cacaoh-cldc-native_0.98.bb
@@ -9,7 +9,7 @@ EXTRA_OECONF += "--with-classpath-includedir=${STAGING_INCDIR}/classpath-minimal
--enable-jni \
--enable-java=cldc1.1 \
--with-classpath=cldc1.1 \
- --with-classpath-classes=${STAGING_LIBDIR}/java/cldc1.1.jar \
+ --with-classpath-classes=${STAGING_DATADIR}/java/cldc1.1.jar \
"
do_stage() {
install -m 0755 src/cacaoh/.libs/cacaoh ${STAGING_BINDIR}/
diff --git a/packages/clamav/clamav.inc b/packages/clamav/clamav.inc
index 6bdd36c7d2..49b8023a53 100644
--- a/packages/clamav/clamav.inc
+++ b/packages/clamav/clamav.inc
@@ -33,7 +33,7 @@ inherit autotools update-rc.d binconfig
# Don't check for clamav uid/gid - they don't exist on the host
# Put virus definitions in /var/lib not /usr/lib
EXTRA_OECONF = "--disable-clamav \
- --with-zlib=${STAGING_DIR}/${HOST_SYS} \
+ --with-zlib=${STAGING_DIR_HOST}${layout_prefix} \
--with-libcurl \
--with-dbdir=${localstatedir}/lib/clamav"
diff --git a/packages/keylaunch/files/akita/.mtn2git_empty b/packages/cryptsetup/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/keylaunch/files/akita/.mtn2git_empty
+++ b/packages/cryptsetup/.mtn2git_empty
diff --git a/packages/cryptsetup/cryptsetup_1.0.5.bb b/packages/cryptsetup/cryptsetup_1.0.5.bb
new file mode 100644
index 0000000000..7c070dc651
--- /dev/null
+++ b/packages/cryptsetup/cryptsetup_1.0.5.bb
@@ -0,0 +1,21 @@
+# Copyright Matthias Hentges <devel@hentges.net> (c) 2007
+# License: MIT (see http://www.opensource.org/licenses/mit-license.php
+# for a copy of the license)
+
+DESCRIPTION = "cryptsetup with luks support creates and manages encrypted containers and partitions"
+HOMEPAGE = "http://luks.endorphin.org/"
+SECTION = "console"
+LICENSE = "GPL"
+DEPENDS = "e2fsprogs-libs device-mapper libgcrypt popt"
+RRECOMMENDS = "kernel-module-aes \
+ kernel-module-dm-crypt \
+ kernel-module-md5 \
+ kernel-module-cbc \
+ kernel-module-sha256 \
+ "
+PR = "r2"
+
+SRC_URI = "http://luks.endorphin.org/source/cryptsetup-${PV}.tar.bz2"
+
+inherit autotools
+
diff --git a/packages/dbus/dbus-glib-native_0.74.bb b/packages/dbus/dbus-glib-native_0.74.bb
index d76cc043d4..e37a64cfea 100644
--- a/packages/dbus/dbus-glib-native_0.74.bb
+++ b/packages/dbus/dbus-glib-native_0.74.bb
@@ -1,7 +1,7 @@
SECTION = "base"
PR = "r0"
HOMEPAGE = "http://www.freedesktop.org/Software/dbus"
-DESCRIPTION = "message bus system for applications to talk to one another"
+DESCRIPTION = "Message bus system for applications to talk to one another"
LICENSE = "GPL"
SRC_URI = "http://dbus.freedesktop.org/releases/dbus-glib/dbus-glib-${PV}.tar.gz \
diff --git a/packages/dbus/dbus-glib_0.74.bb b/packages/dbus/dbus-glib_0.74.bb
index 0a34c738c3..3c5512feb6 100644
--- a/packages/dbus/dbus-glib_0.74.bb
+++ b/packages/dbus/dbus-glib_0.74.bb
@@ -1,7 +1,7 @@
SECTION = "base"
PR = "r0"
HOMEPAGE = "http://www.freedesktop.org/Software/dbus"
-DESCRIPTION = "message bus system for applications to talk to one another"
+DESCRIPTION = "Message bus system for applications to talk to one another"
LICENSE = "GPL"
DEPENDS = "expat glib-2.0 virtual/libintl dbus-glib-native dbus"
diff --git a/packages/dbus/dbus-native_1.0.1.bb b/packages/dbus/dbus-native_1.0.1.bb
index a897ae5bba..1ad5cf246a 100644
--- a/packages/dbus/dbus-native_1.0.1.bb
+++ b/packages/dbus/dbus-native_1.0.1.bb
@@ -1,4 +1,4 @@
-DESCRIPTION = "message bus system for applications to talk to one another"
+DESCRIPTION = "Message bus system for applications to talk to one another"
HOMEPAGE = "http://www.freedesktop.org/Software/dbus"
LICENSE = "GPL"
SECTION = "base"
diff --git a/packages/dbus/dbus-python_0.71.bb b/packages/dbus/dbus-python_0.71.bb
index a2d9bd70b3..ed586b7f4b 100644
--- a/packages/dbus/dbus-python_0.71.bb
+++ b/packages/dbus/dbus-python_0.71.bb
@@ -1,4 +1,4 @@
-DESCRIPTION = "message bus system for applications to talk to one another - python bindings"
+DESCRIPTION = "Message bus system for applications to talk to one another - python bindings"
HOMEPAGE = "http://www.freedesktop.org/Software/dbus"
LICENSE = "GPL"
SECTION = "devel/python"
diff --git a/packages/dbus/dbus.inc b/packages/dbus/dbus.inc
index 4f38be304d..21316c2d09 100644
--- a/packages/dbus/dbus.inc
+++ b/packages/dbus/dbus.inc
@@ -1,6 +1,6 @@
SECTION = "base"
HOMEPAGE = "http://www.freedesktop.org/Software/dbus"
-DESCRIPTION = "message bus system for applications to talk to one another"
+DESCRIPTION = "Message bus system for applications to talk to one another"
LICENSE = "GPL"
DEPENDS = "expat glib-2.0 virtual/libintl"
diff --git a/packages/desktop-file-utils/desktop-file-utils-native_0.14.bb b/packages/desktop-file-utils/desktop-file-utils-native_0.14.bb
new file mode 100644
index 0000000000..9603982ea6
--- /dev/null
+++ b/packages/desktop-file-utils/desktop-file-utils-native_0.14.bb
@@ -0,0 +1,12 @@
+SECTION = "console/utils"
+HOMEPAGE = "http://www.freedesktop.org/wiki/Software/desktop-file-utils"
+DESCRIPTION = "command line utilities to work with *.desktop files"
+LICENSE = "GPL"
+
+DEPENDS = "glib-2.0-native"
+
+SRC_URI = "http://freedesktop.org/software/desktop-file-utils/releases/desktop-file-utils-${PV}.tar.gz"
+
+inherit autotools native
+
+S = "${WORKDIR}/desktop-file-utils-${PV}"
diff --git a/packages/devmem2/devmem2.bb b/packages/devmem2/devmem2.bb
index 64de9fcbf3..56095f5c99 100644
--- a/packages/devmem2/devmem2.bb
+++ b/packages/devmem2/devmem2.bb
@@ -1,3 +1,4 @@
+DESCRIPTION = "Simple program to read/write from/to any location in memory."
SRC_URI = "http://www.abcsinc.com/small-linux/devmem2.c"
LICENSE = "GPL"
diff --git a/packages/directfb/directfb-examples_1.0.0.bb b/packages/directfb/directfb-examples_1.0.0.bb
index 8a792b4ae4..064a808273 100644
--- a/packages/directfb/directfb-examples_1.0.0.bb
+++ b/packages/directfb/directfb-examples_1.0.0.bb
@@ -3,8 +3,10 @@ DEPENDS = "directfb"
SECTION = "libs"
LICENSE = "GPL"
-SRC_URI = "http://www.directfb.org/downloads/Extras/DirectFB-extra-${PV}.tar.gz"
-S = "${WORKDIR}/DirectFB-extra-${PV}"
+SRC_URI = " \
+ http://www.directfb.org/downloads/Extras/DirectFB-examples-${PV}.tar.gz \
+ "
+S = "${WORKDIR}/DirectFB-examples-${PV}"
inherit autotools
diff --git a/packages/directfb/directfb_1.1.0.bb b/packages/directfb/directfb_1.1.0.bb
index 84772b6a25..c3c1e66413 100644
--- a/packages/directfb/directfb_1.1.0.bb
+++ b/packages/directfb/directfb_1.1.0.bb
@@ -7,15 +7,17 @@ SECTION = "libs"
LICENSE = "LGPL"
HOMEPAGE = "http://directfb.org"
DEPENDS = "jpeg libpng freetype zlib tslib"
-PR = "r1"
+PR = "r2"
RV = "1.1-0"
-SRC_URI = "http://www.directfb.org/download/DirectFB/DirectFB-${PV}.tar.gz \
- file://fix-pkgconfig-cflags.patch;patch=1 \
- file://fix-font-missing-char.patch;patch=1 \
- file://getpagesize.patch;patch=1 \
- file://fix-includes.patch;patch=1 \
- file://mkdfiff.patch;patch=1"
+SRC_URI = " \
+ http://www.directfb.org/download/DirectFB/DirectFB-${PV}.tar.gz \
+ file://fix-pkgconfig-cflags.patch;patch=1 \
+ file://fix-font-missing-char.patch;patch=1 \
+ file://getpagesize.patch;patch=1 \
+ file://fix-includes.patch;patch=1 \
+ file://mkdfiff.patch;patch=1 \
+ "
S = "${WORKDIR}/DirectFB-${PV}"
@@ -23,11 +25,12 @@ LDFLAGS_append =" -lts -lm"
inherit autotools pkgconfig
-EXTRA_OECONF = "--with-gfxdrivers=none \
+EXTRA_OECONF = " \
+ --with-gfxdrivers=none \
--enable-libmpeg3=no \
--enable-freetype=yes \
--enable-sdl=no \
- --enable-vnc=no \
+ --enable-vnc=no \
--disable-x11 \
"
diff --git a/packages/display-brightness/display-brightness.sh b/packages/display-brightness/display-brightness.sh
index a82c748309..935dabff7b 100644
--- a/packages/display-brightness/display-brightness.sh
+++ b/packages/display-brightness/display-brightness.sh
@@ -38,7 +38,7 @@ if [ "$1" = "up" ]; then
fi
if [ "$1" = "down" ]; then
- if [ $ACTUAL_BRIGHTNESS -eq 0 ]; then
+ if [ $ACTUAL_BRIGHTNESS -lt 2 ]; then
exit 0
elif [ $ACTUAL_BRIGHTNESS -lt $STEP ]; then
STEP=1
diff --git a/packages/display-brightness/display-brightness_1.0.0.bb b/packages/display-brightness/display-brightness_1.0.0.bb
index bc46c16631..f06fde0fa9 100644
--- a/packages/display-brightness/display-brightness_1.0.0.bb
+++ b/packages/display-brightness/display-brightness_1.0.0.bb
@@ -2,7 +2,7 @@ DESCRIPTION = "display brightness utility"
AUTHOR = "Patrick Steiner <patrick.steiner@a1.net>"
DEPENDS = ""
PRIORITY = "optional"
-PR = "r3"
+PR = "r4"
LICENSE = "GPLv2"
SRC_URI = "file://display-brightness.sh"
diff --git a/packages/keylaunch/files/c7x0/.mtn2git_empty b/packages/dropbear/dropbear-early/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/keylaunch/files/c7x0/.mtn2git_empty
+++ b/packages/dropbear/dropbear-early/.mtn2git_empty
diff --git a/packages/dropbear/dropbear-early/dropbear-early b/packages/dropbear/dropbear-early/dropbear-early
new file mode 100644
index 0000000000..fa06a93003
--- /dev/null
+++ b/packages/dropbear/dropbear-early/dropbear-early
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+for x in $(cat /proc/cmdline); do
+ case $x in
+ dropbear=early)
+ echo "Starting dropbear early"
+ exec /etc/init.d/dropbear $*
+ ;;
+ esac
+done
diff --git a/packages/dropbear/dropbear-early_1.0.bb b/packages/dropbear/dropbear-early_1.0.bb
new file mode 100644
index 0000000000..df2c2dc26f
--- /dev/null
+++ b/packages/dropbear/dropbear-early_1.0.bb
@@ -0,0 +1,18 @@
+DESCRIPTION = "Allow to start dropbear soon after boot, depending on kernel command line option."
+SECTION = "devel"
+PR = "r2"
+RDEPENDS = "dropbear"
+
+SRC_URI = "file://dropbear-early"
+
+inherit update-rc.d
+
+do_install() {
+ install -d ${D}${sysconfdir}/init.d
+ install -m 0755 ${WORKDIR}/${INITSCRIPT_NAME} ${D}${sysconfdir}/init.d/
+}
+
+PACKAGE_ARCH = "all"
+
+INITSCRIPT_NAME = "dropbear-early"
+INITSCRIPT_PARAMS = "start 00 S ."
diff --git a/packages/dropbear/dropbear.inc b/packages/dropbear/dropbear.inc
index acd09d89fc..ebe0c1ea9c 100644
--- a/packages/dropbear/dropbear.inc
+++ b/packages/dropbear/dropbear.inc
@@ -1,4 +1,4 @@
-DESCRIPTION = "Dropbear is a lightweight SSH and SCP Implementation"
+DESCRIPTION = "Dropbear is a lightweight SSH and SCP implementation"
HOMEPAGE = "http://matt.ucc.asn.au/dropbear/dropbear.html"
SECTION = "console/network"
LICENSE = "MIT"
diff --git a/packages/dropbear/dropbear/init b/packages/dropbear/dropbear/init
index d019bdb4ba..5c8dfc12a8 100755
--- a/packages/dropbear/dropbear/init
+++ b/packages/dropbear/dropbear/init
@@ -50,10 +50,16 @@ gen_keys() {
for t in $DROPBEAR_KEYTYPES; do
case $t in
rsa)
- test -f $DROPBEAR_RSAKEY || dropbearkey -t rsa -f $DROPBEAR_RSAKEY
+ if [ ! -f $DROPBEAR_RSAKEY ]; then
+ echo "Creating $DESC RSA host key."
+ dropbearkey -t rsa -f $DROPBEAR_RSAKEY
+ fi
;;
dsa)
- test -f $DROPBEAR_DSSKEY || dropbearkey -t dss -f $DROPBEAR_DSSKEY
+ if [ ! -f $DROPBEAR_DSSKEY ]; then
+ echo "Creating $DESC DSA host key."
+ dropbearkey -t dss -f $DROPBEAR_DSSKEY
+ fi
;;
esac
done
@@ -61,8 +67,8 @@ done
case "$1" in
start)
- echo -n "Starting $DESC: "
gen_keys
+ echo -n "Starting $DESC: "
KEY_ARGS=""
test -f $DROPBEAR_DSSKEY && KEY_ARGS="$KEY_ARGS -d $DROPBEAR_DSSKEY"
test -f $DROPBEAR_RSAKEY && KEY_ARGS="$KEY_ARGS -r $DROPBEAR_RSAKEY"
diff --git a/packages/dropbear/dropbear_0.49.bb b/packages/dropbear/dropbear_0.49.bb
index f98c0ac8f6..0ed386ca0c 100644
--- a/packages/dropbear/dropbear_0.49.bb
+++ b/packages/dropbear/dropbear_0.49.bb
@@ -1 +1,3 @@
+PR = "r1"
+
require dropbear.inc
diff --git a/packages/dtc/dtc-native_1.0.0.bb b/packages/dtc/dtc-native_1.0.0.bb
new file mode 100644
index 0000000000..35c9b1161c
--- /dev/null
+++ b/packages/dtc/dtc-native_1.0.0.bb
@@ -0,0 +1,16 @@
+DESCRIPTION = "The Device Tree Compiler is a tool used to manipulate the Open-Firmware-like device tree used by PowerPC kernels."
+SECTION = "bootloader"
+PRIORITY = "optional"
+LICENSE = "GPL"
+
+DEFAULT_PREFERENCE = "1"
+
+SRC_URI = "http://www.jdl.com/pub/software/dtc-${PV}.tgz"
+
+S = "${WORKDIR}/dtc"
+
+inherit autotools native
+
+do_stage() {
+ install -m 755 dtc ${STAGING_BINDIR}/dtc
+}
diff --git a/packages/duma/duma_2.5.7.bb b/packages/duma/duma_2.5.7.bb
index d4bc416234..9f50c356a6 100644
--- a/packages/duma/duma_2.5.7.bb
+++ b/packages/duma/duma_2.5.7.bb
@@ -12,7 +12,7 @@ EXTRA_OECONF = "-e"
do_configure () {
oe_runmake createconf
- qemu-${TARGET_ARCH} -L ${STAGING_DIR}/${HOST_SYS} ./createconf
+ qemu-${TARGET_ARCH} -L ${STAGING_DIR_HOST} ./createconf
}
do_compile () {
diff --git a/packages/keylaunch/files/collie/.mtn2git_empty b/packages/e17/expedite/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/keylaunch/files/collie/.mtn2git_empty
+++ b/packages/e17/expedite/.mtn2git_empty
diff --git a/packages/e17/expedite/hack-disable-opengl.patch b/packages/e17/expedite/hack-disable-opengl.patch
new file mode 100644
index 0000000000..7d368d320d
--- /dev/null
+++ b/packages/e17/expedite/hack-disable-opengl.patch
@@ -0,0 +1,87 @@
+Index: expedite/configure.in
+===================================================================
+--- expedite.orig/configure.in
++++ expedite/configure.in
+@@ -47,24 +47,11 @@
+ PKG_CHECK_MODULES([EVAS], evas)
+
+ dnl OpenGL GLEW
+-PKG_CHECK_EXISTS(evas-opengl-glew,
+- [
+- AC_DEFINE(HAVE_EVAS_OPENGL_GLEW, 1, [Evas GL Glew Engine Support])
+- have_opengl_glew="yes"
+- glew_libs="-lglew32 -lgdi32"
+- ],
+- [ have_opengl_glew="no" ]
+-)
++have_opengl_glew="no"
+ AM_CONDITIONAL(BUILD_OPENGL_GLEW, test "x$have_opengl_glew" = "xyes")
+
+ dnl OpenGL X11
+-PKG_CHECK_EXISTS(evas-opengl-x11,
+- [
+- AC_DEFINE(HAVE_EVAS_OPENGL_X11, 1, [Evas GL X11 Engine Support])
+- have_opengl_x11="yes"
+- ],
+- [ have_opengl_x11="no" ]
+-)
++have_opengl_x11="no"
+ AM_CONDITIONAL(BUILD_OPENGL_X11, test "x$have_opengl_x11" = "xyes")
+
+ dnl Software X11
+@@ -109,49 +96,23 @@
+
+ # TODO: Check availability of libs
+ dnl DirectDraw
+-PKG_CHECK_EXISTS(evas-software-ddraw,
+- [
+- AC_DEFINE(HAVE_EVAS_SOFTWARE_DDRAW, 1, [Evas Software DirectDraw Engine Support])
+- have_software_ddraw="yes"
+- ddraw_libs="-lddraw -ldxguid"
+- ],
+- [ have_software_ddraw="no" ]
+-)
++have_software_ddraw="no"
+ AM_CONDITIONAL(BUILD_SOFTWARE_DDRAW, test "x$have_software_ddraw" = "xyes")
+
+ # TODO: Check availability of libs
+ dnl 16bit DirectDraw
+-PKG_CHECK_EXISTS(evas-software-16-ddraw,
+- [
+- AC_DEFINE(HAVE_EVAS_SOFTWARE_16_DDRAW, 1, [Evas Software 16bit DirectDraw Engine Support])
+- have_software_16_ddraw="yes"
+- ddraw_libs="-lddraw -ldxguid"
+- ],
+- [ have_software_16_ddraw="no" ]
+-)
++have_software_16_ddraw="no"
+ AM_CONDITIONAL(BUILD_SOFTWARE_16_DDRAW, test "x$have_software_16_ddraw" = "xyes")
+
+ # TODO: Check availability of libs
+ dnl Direct3D
+-PKG_CHECK_EXISTS(evas-direct3d,
+- [
+- AC_DEFINE(HAVE_EVAS_DIRECT3D, 1, [Evas Direct3D Engine Support])
+- have_direct3d="yes"
+- d3d_libs="-ld3d9 -ld3dx9d"
+- ],
+- [ have_direct3d="no" ]
+-)
++have_direct3d="no"
+ AM_CONDITIONAL(BUILD_DIRECT3D, test "x$have_direct3d" = "xyes")
+
+ dnl Software SDL
+-PKG_CHECK_EXISTS(evas-software-sdl,
+- [
+- AC_DEFINE(HAVE_EVAS_SOFTWARE_SDL, 1, [Evas Software SDL Engine Support])
+- have_software_sdl="yes"
+- ],
+- [ have_direct3d="no" ]
+-)
+-AM_CONDITIONAL(BUILD_SOFTWARE_SDL, test "x$have_software_sdl" = "xyes")
++have_software_sdl="no"
++AM_CONDITIONAL(BUILD_SOFTWARE_SDL, test "x$have_software_sdl" = "xyes")
++
+
+ if test "x$have_software_x11" = "xyes" -o "x$have_software_16_x11" = "xyes" -o "x$have_xrender_x11" = "xyes" -o "x$have_opengl_x11" = "xyes"; then
+ AC_PATH_XTRA
diff --git a/packages/e17/expedite_cvs.bb b/packages/e17/expedite_cvs.bb
index 9d8a7d6070..a35d3b182e 100644
--- a/packages/e17/expedite_cvs.bb
+++ b/packages/e17/expedite_cvs.bb
@@ -1,15 +1,18 @@
-DESCRIPTION = "Expedite is a comprehensive benchmarking suite for evas"
-DEPENDS = "evas"
+DESCRIPTION = "Expedite is a comprehensive benchmarking suite for Evas"
+DEPENDS = "eet evas"
LICENSE = "MIT"
PV = "0.0.0+cvs${SRCDATE}"
-PR = "r0"
+PR = "r1"
-inherit e
+inherit autotools
-SRC_URI = "${E_CVS};module=e17/apps/expedite"
+SRC_URI = "${E_CVS};module=e17/apps/expedite \
+ file://hack-disable-opengl.patch;patch=1"
S = "${WORKDIR}/${PN}"
do_configure_append() {
find ${S} -name Makefile | xargs sed -i s:'-I$(includedir)':'-I.':g
}
+FILES_${PN} += "${datadir}"
+
diff --git a/packages/e17/rage_0.2.0.003.bb b/packages/e17/rage_0.2.0.003.bb
deleted file mode 100644
index ab527e214b..0000000000
--- a/packages/e17/rage_0.2.0.003.bb
+++ /dev/null
@@ -1,10 +0,0 @@
-DESCRIPTION = "rage is a media center application based on EFL"
-AUTHOR = "Carsten 'The Rasterman' Heitzler"
-HOMEPAGE = "http://www.rasterman.com"
-LICENSE = "GPL"
-DEPENDS = "evas ecore edje"
-SECTION = "x11/multimedia"
-
-SRC_URI = "http://download.enlightenment.org/snapshots/2007-06-17/rage-${PV}.tar.gz"
-
-inherit e
diff --git a/packages/e17/rage_0.2.0.005.bb b/packages/e17/rage_0.2.0.005.bb
new file mode 100644
index 0000000000..e5b5032b10
--- /dev/null
+++ b/packages/e17/rage_0.2.0.005.bb
@@ -0,0 +1,11 @@
+DESCRIPTION = "Rage is a media center application based on EFL"
+AUTHOR = "Carsten 'The Rasterman' Heitzler"
+HOMEPAGE = "http://www.rasterman.com"
+LICENSE = "GPL"
+DEPENDS = "evas ecore edje"
+SECTION = "x11/multimedia"
+
+SRC_URI = "http://download.enlightenment.org/snapshots/2007-08-26/rage-${PV}.tar.gz"
+
+inherit autotools
+
diff --git a/packages/e2fsprogs/e2fsprogs-native_1.38.bb b/packages/e2fsprogs/e2fsprogs-native_1.38.bb
index dcb5c412d0..e111ac9b61 100644
--- a/packages/e2fsprogs/e2fsprogs-native_1.38.bb
+++ b/packages/e2fsprogs/e2fsprogs-native_1.38.bb
@@ -2,6 +2,8 @@ SECTION = "base"
require e2fsprogs.inc
inherit native
+PR = "r1"
+
EXTRA_OECONF = ""
FILESPATH = "${@base_set_filespath([ '${FILE_DIRNAME}/e2fsprogs-${PV}', '${FILE_DIRNAME}/e2fsprogs', '${FILE_DIRNAME}/files', '${FILE_DIRNAME}' ], d)}"
diff --git a/packages/e2fsprogs/e2fsprogs.inc b/packages/e2fsprogs/e2fsprogs.inc
index f209baf3b4..7673d49e21 100644
--- a/packages/e2fsprogs/e2fsprogs.inc
+++ b/packages/e2fsprogs/e2fsprogs.inc
@@ -9,6 +9,7 @@ S = "${WORKDIR}/e2fsprogs-${PV}"
inherit autotools
-EXTRA_OECONF = " --enable-dynamic-e2fsck"
+EXTRA_OECONF_linux-uclibc = "--disable-nls"
+EXTRA_OECONF += " --enable-dynamic-e2fsck"
PARALLEL_MAKE = ""
diff --git a/packages/e2fsprogs/e2fsprogs_1.38.bb b/packages/e2fsprogs/e2fsprogs_1.38.bb
index 2e8bf3d219..4f6f62bb12 100644
--- a/packages/e2fsprogs/e2fsprogs_1.38.bb
+++ b/packages/e2fsprogs/e2fsprogs_1.38.bb
@@ -1,6 +1,6 @@
require e2fsprogs.inc
-PR = "r8"
+PR = "r10"
SRC_URI += "file://no-hardlinks.patch;patch=1"
diff --git a/packages/eds/eds-dbus_svn.bb b/packages/eds/eds-dbus_svn.bb
index 46d3a4c450..4e40528747 100644
--- a/packages/eds/eds-dbus_svn.bb
+++ b/packages/eds/eds-dbus_svn.bb
@@ -3,8 +3,8 @@ HOMEPAGE = "http://projects.o-hand.com/eds"
LICENSE = "LGPL"
DEPENDS = "intltool-native libglade glib-2.0 gtk+ gconf dbus db gnome-common virtual/libiconv zlib intltool"
-PV = "1.4.0+svn${SRCDATE}"
-PR = "r6"
+PV = "1.4.0+svnr${SRCREV}"
+PR = "r7"
SRC_URI = "svn://svn.o-hand.com/repos/${PN};module=trunk;proto=http \
file://no_libdb.patch;patch=1 \
@@ -19,7 +19,8 @@ inherit autotools pkgconfig
# -ldb needs this on some platforms
LDFLAGS += "-lpthread"
-EXTRA_OECONF = "--without-openldap --with-dbus --without-bug-buddy --without-soup --with-libdb=${STAGING_DIR}/${HOST_SYS} --disable-smime --disable-nss --disable-nntp --disable-gtk-doc"
+do_configure_append = " cp ${WORKDIR}/iconv-detect.h ${S} "
+EXTRA_OECONF = "--without-openldap --with-dbus --without-bug-buddy --without-soup --with-libdb=${STAGING_DIR_HOST}${layout_prefix} --disable-smime --disable-nss --disable-nntp --disable-gtk-doc"
PACKAGES =+ "libcamel-collateral libcamel libcamel-dev libebook libebook-dev libecal libecal-dev libedata-book libedata-book-dev libedata-cal libedata-cal-dev libedataserver libedataserver-dev"
@@ -32,9 +33,11 @@ FILES_libcamel-collateral = "${libdir}/libcamel-provider-*.so.* ${libdir}/evolut
FILES_libebook = "${libdir}/libebook-*.so.*"
FILES_libebook-dev = "${libdir}/libebook-1.2.so ${libdir}/pkgconfig/libebook-*.pc ${includedir}/evolution-data-server*/libebook/*.h"
+RRECOMMENDS_libebook = "libedata-book"
FILES_libecal = "${libdir}/libecal-*.so.* ${datadir}/evolution-data-server-1.4/zoneinfo"
FILES_libecal-dev = "${libdir}/libecal-*.so ${libdir}/pkgconfig/libecal-*.pc ${includedir}/evolution-data-server*/libecal/*.h ${includedir}/evolution-data-server*/libical/*.h"
+RRECOMMENDS_libecal = "libedata-cal tzdata"
FILES_libedata-book = "${libexecdir}/e-addressbook-factory ${datadir}/dbus-1/services/*.AddressBook.service ${libdir}/libedata-book-*.so.* ${libdir}/evolution-data-server-*/extensions/libebook*.so"
FILES_libedata-book-dev = "${libdir}/libedata-book-*.so ${libdir}/pkgconfig/libedata-book-*.pc ${includedir}/evolution-data-server-*/libedata-book"
@@ -45,8 +48,6 @@ FILES_libedata-cal-dev = "${libdir}/libedata-cal-*.so ${libdir}/pkgconfig/libeda
FILES_libedataserver = "${libdir}/libedataserver-*.so.*"
FILES_libedataserver-dev = "${libdir}/libedataserver-*.so ${libdir}/pkgconfig/libedataserver-*.pc ${includedir}/evolution-data-server-*/libedataserver/*.h"
-do_configure_append = " cp ${WORKDIR}/iconv-detect.h ${S} "
-
do_stage () {
autotools_stage_all
}
diff --git a/packages/efl1/ecore.inc b/packages/efl1/ecore.inc
index 86c87214cf..b71a4b7582 100644
--- a/packages/efl1/ecore.inc
+++ b/packages/efl1/ecore.inc
@@ -9,9 +9,11 @@ PV = "0.9.9.041+cvs${SRCDATE}"
inherit efl_library
-SRC_URI += "file://configure.patch;patch=1 \
- file://fix-tslib-configure.patch;patch=1 \
- file://fix-directfb-include.patch;patch=1"
+# SRC_URI += "file://configure.patch;patch=1 \
+# file://fix-tslib-configure.patch;patch=1 \
+# file://fix-directfb-include.patch;patch=1"
+
+SRC_URI += "file://fix-directfb-include.patch;patch=1"
FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/ecore"
diff --git a/packages/efl1/ecore_cvs.bb b/packages/efl1/ecore_cvs.bb
index dd6c467c54..53ee8642d8 100644
--- a/packages/efl1/ecore_cvs.bb
+++ b/packages/efl1/ecore_cvs.bb
@@ -6,8 +6,8 @@ EXTRA_OECONF = "\
--disable-ecore-x-xcb \
--enable-ecore-x \
--enable-ecore-job \
- --enable-ecore-directfb \
- --enable-ecore-sdl \
+ --disable-ecore-directfb \
+ --disable-ecore-sdl \
--enable-ecore-fb \
--enable-ecore-evas \
--disable-ecore-evas-gl \
diff --git a/packages/efl1/evas-native_cvs.bb b/packages/efl1/evas-native_cvs.bb
index 8b8694899e..204abbb821 100644
--- a/packages/efl1/evas-native_cvs.bb
+++ b/packages/efl1/evas-native_cvs.bb
@@ -6,7 +6,7 @@ PR = "r0"
EXTRA_OECONF = "\
--x-includes=${STAGING_INCDIR}/X11 \
--x-libraries=${STAGING_LIBDIR} \
- --disable-fb \
+ --enable-fb \
--disable-directfb \
--disable-sdl \
--enable-buffer \
diff --git a/packages/efl1/evas.inc b/packages/efl1/evas.inc
index 840f2929c5..de3359114c 100644
--- a/packages/efl1/evas.inc
+++ b/packages/efl1/evas.inc
@@ -3,13 +3,13 @@ anti-aliased text, smooth super and sub-images, alpha-blend, as well as drop \
down to using normal X11 primitives such as pixmaps, lines and rectangles if \
your CPU or graphics hardware are too slow."
LICENSE = "MIT"
-# can also depend on valgrind (?)
-DEPENDS = "libsdl-x11 directfb eet freetype jpeg virtual/libx11 libxext"
+# can also depend on valgrind, libsdl-x11, directfb
+DEPENDS = "eet freetype jpeg virtual/libx11 libxext libxrender"
PV = "0.9.9.041+cvs${SRCDATE}"
inherit efl_library
-SRC_URI += "file://fix-configure.patch;patch=1"
+# SRC_URI += "file://fix-configure.patch;patch=1"
FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/evas"
diff --git a/packages/efl1/evas_cvs.bb b/packages/efl1/evas_cvs.bb
index b80ff8bcba..a19a9c944b 100644
--- a/packages/efl1/evas_cvs.bb
+++ b/packages/efl1/evas_cvs.bb
@@ -1,17 +1,17 @@
require evas.inc
-PR = "r0"
+PR = "r2"
EXTRA_OECONF = "\
--x-includes=${STAGING_INCDIR}/X11 \
--x-libraries=${STAGING_LIBDIR} \
--enable-fb \
- --enable-directfb \
- --enable-sdl \
+ --disable-directfb \
+ --disable-sdl \
--enable-buffer \
--disable-software-ddraw \
--disable-software-qtopia \
--enable-software-x11 \
- --disable-software-16-x11 \
+ --enable-software-16-x11 \
--disable-software-xcb \
--disable-gl-x11 \
--enable-xrender-x11 \
diff --git a/packages/efl1/ewl_cvs.bb b/packages/efl1/ewl_cvs.bb
index 2ac7c65279..8fb8521d62 100644
--- a/packages/efl1/ewl_cvs.bb
+++ b/packages/efl1/ewl_cvs.bb
@@ -1,14 +1,26 @@
DESCRIPTION = "The Enlightened Widget Library, \
a simple-to-use general purpose widget library \
based on the enlightenment foundation libraries."
-DEPENDS = "evas ecore edje emotion efreet"
+DEPENDS = "evas ecore edje emotion efreet epsilon"
RSUGGESTS_${PN} += "ewl-themes"
LICENSE = "MIT"
PV = "0.5.1+cvs${SRCDATE}"
-PR = "r0"
+PR = "r1"
inherit efl_library
+EXTRA_OECONF = "\
+ --enable-software-x11 \
+ --enable-software-16-x11 \
+ --enable-xrender-x11 \
+ --disable-opengl-x11 \
+ --disable-software-xcb \
+ --disable-software-sdl \
+ --enable-framebuffer \
+ --enable-software-buffer \
+ --disable-opengl-glew \
+"
+
# TODO package engines more granular
PACKAGES += "${PN}-plugins ${PN}-engines"
diff --git a/packages/enchant/enchant_1.1.3.bb b/packages/enchant/enchant_1.1.3.bb
index c33a1a3927..7618c5d3ee 100644
--- a/packages/enchant/enchant_1.1.3.bb
+++ b/packages/enchant/enchant_1.1.3.bb
@@ -14,10 +14,10 @@ S = "${WORKDIR}/enchant-${PV}"
SRC_URI = "http://download.sourceforge.net/abiword/enchant-1.1.3.tar.gz"
do_stage() {
- oe_runmake install prefix=${STAGING_DIR} \
+ oe_runmake install prefix=${STAGING_DIR_HOST}${layout_prefix} \
bindir=${STAGING_BINDIR} \
includedir=${STAGING_INCDIR} \
libdir=${STAGING_LIBDIR} \
datadir=${STAGING_DATADIR} \
- mandir=${STAGING_DIR}/share/man
+ mandir=${STAGING_DIR_HOST}${layout_mandir}
}
diff --git a/packages/enchant/enchant_1.2.5.bb b/packages/enchant/enchant_1.2.5.bb
index 5896d1275a..be9082d2af 100644
--- a/packages/enchant/enchant_1.2.5.bb
+++ b/packages/enchant/enchant_1.2.5.bb
@@ -14,15 +14,15 @@ S = "${WORKDIR}/enchant-${PV}"
SRC_URI = "http://www.abisource.com/downloads/enchant/${PV}/enchant-${PV}.tar.gz \
file://configure.patch;patch=1"
-EXTRA_OECONF = "--with-aspell-prefix=${STAGING_DIR}/${HOST_SYS} --enable-aspell --disable-binreloc"
+EXTRA_OECONF = "--with-aspell-prefix=${STAGING_DIR_HOST}${layout_prefix} --enable-aspell --disable-binreloc"
FILES_${PN} = "/usr/bin/* /usr/lib/enchant/*.so /usr/share/enchant /usr/lib/libenchant*.so.*"
do_stage() {
- oe_runmake install prefix=${STAGING_DIR} \
+ oe_runmake install prefix=${STAGING_DIR_HOST}${layout_prefix} \
bindir=${STAGING_BINDIR} \
includedir=${STAGING_INCDIR} \
libdir=${STAGING_LIBDIR} \
datadir=${STAGING_DATADIR} \
- mandir=${STAGING_DIR}/share/man
+ mandir=${STAGING_DIR_HOST}${layout_mandir}
}
diff --git a/packages/enchant/enchant_1.3.0.bb b/packages/enchant/enchant_1.3.0.bb
index f1544336af..cceceebabf 100644
--- a/packages/enchant/enchant_1.3.0.bb
+++ b/packages/enchant/enchant_1.3.0.bb
@@ -13,7 +13,9 @@ S = "${WORKDIR}/enchant-${PV}"
SRC_URI = "http://www.abisource.com/downloads/enchant/${PV}/enchant-${PV}.tar.gz"
-EXTRA_OECONF = "--with-aspell-prefix=${STAGING_DIR}/${HOST_SYS} --enable-aspell --disable-binreloc"
+EXTRA_OECONF = "--with-aspell-prefix=${STAGING_DIR_HOST}${layout_prefix} --enable-aspell --disable-binreloc"
+
+export CXXFLAGS += " -L${STAGING_LIBDIR} -lstdc++ "
FILES_${PN} = "/usr/bin/* /usr/lib/enchant/*.so /usr/share/enchant /usr/lib/libenchant*.so.*"
diff --git a/packages/ettercap/ettercap-0.6.b/configure.patch b/packages/ettercap/ettercap-0.6.b/configure.patch
deleted file mode 100644
index 89132125b8..0000000000
--- a/packages/ettercap/ettercap-0.6.b/configure.patch
+++ /dev/null
@@ -1,165 +0,0 @@
---- tmp/base/ettercap-0.6.b-r0/ettercap-0.6.b/acinclude.m4 Thu Jul 10 03:25:31 2003
-+++ ettercap-0.6.b/acinclude.m4 Thu Nov 6 18:25:39 2003
-@@ -182,9 +182,11 @@
- dnl HAVE_SOCKLEN_T
- dnl
-
--AC_DEFUN(EC_SOCKLEN_CHECK,
-- [AC_MSG_CHECKING(for socklen_t in sys/socket.h)
-+samba_cv_socklen_t
-
-+AC_DEFUN(EC_SOCKLEN_CHECK,
-+ [AC_CACHE_CHECK([for socklen_t in sys/socket.h],
-+ [ettercap_cv_type_socklen_t],
- AC_TRY_RUN([
- #include <sys/types.h>
- #include <sys/socket.h>
-@@ -197,14 +199,12 @@
- return 0;
- }
- ],
-- [ AC_MSG_RESULT(yes)
-- AC_DEFINE(HAVE_SOCKLEN_T)
-- ],
-- AC_MSG_RESULT(no);
-- ,
-- AC_MSG_RESULT(unkown when cross-compiling)
-- )
-+ [ettercap_cv_type_socklen_t=yes],
-+ [ettercap_cv_type_socklen_t=no]))
-
-+ if test X$ettercap_cv_type_socklen_t = Xyes; then
-+ AC_DEFINE(HAVE_SOCKLEN_T)
-+ fi
- ])
-
-
-@@ -377,24 +377,78 @@
-
- AC_DEFUN(EC_NS_GET,[
-
-- AC_MSG_CHECKING(for NS_GET32)
-- AC_TRY_RUN([
-- #include <arpa/nameser.h>
-+AC_CACHE_CHECK([for NS_GET32],
-+ ec_cv_func_ns_get32,
-+ [AC_TRY_LINK([
-+ #include <arpa/nameser.h>
-+ ],
-+ [
-+ int i;
-+ char *p = "\x01\x02\x03\x04";
-+ NS_GET32(i, p);
-+ ],
-+ ec_cv_func_ns_get32=yes,
-+ ec_cv_func_ns_get32=no)
-+ if test X$ec_cv_func_ns_get32 = Xyes; then
-+ AC_DEFINE(HAVE_NS_GET,1)
-+ fi])
-+])
-
-- int main()
-- {
-- int i;
-- char *p = "\x01\x02\x03\x04";
-- NS_GET32(i, p);
-+dnl vim:ts=3:expandtab
-
-- return 0;
-- }
-- ],
-- [ AC_MSG_RESULT(yes)
-- AC_DEFINE(HAVE_NS_GET,1) ],
-- [ AC_MSG_RESULT(no); ]
-- )
-+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
- ])
-
--dnl vim:ts=3:expandtab
-+
---- tmp/base/ettercap-0.6.b-r0/ettercap-0.6.b/configure.in Thu Jul 10 03:25:31 2003
-+++ ettercap-0.6.b/configure.in Thu Nov 6 18:13:44 2003
-@@ -20,9 +20,10 @@
- dnl $Id: configure.in,v 1.69 2003/06/30 19:57:41 alor Exp $
- dnl
-
--AC_PREREQ([2.50])
-+AC_PREREQ(2.57)
-
--AC_INIT(src/ec_main.c)
-+AC_INIT
-+AC_CONFIG_SRCDIR([src/ec_main.c])
- AC_CONFIG_HEADER(config.h)
-
- echo "char configure_line[[]] = \"$0 $*\";" > ./src/include/ec_debug_info.h
-@@ -77,7 +78,7 @@
- dnl Check the OS
- dnl ================
-
--AC_CANONICAL_SYSTEM
-+AC_CANONICAL_TARGET([])
- case "$target_os" in
- *linux*)
- EC_LINUX_KERNEL()
-@@ -868,7 +869,8 @@
-
- AC_SUBST(MAKEPLUG)
-
--AC_OUTPUT(ettercap.spec ettercap.8 Makefile $makeplug win32/ettercap.nsi)
-+AC_CONFIG_FILES([ettercap.spec ettercap.8 Makefile $makeplug win32/ettercap.nsi])
-+AC_OUTPUT
-
- dnl ============================
- dnl FOR DEBUGING INFORMATIONS
diff --git a/packages/ettercap/ettercap-ng_0.7.3.bb b/packages/ettercap/ettercap-ng_0.7.3.bb
new file mode 100644
index 0000000000..c9e73d9ea0
--- /dev/null
+++ b/packages/ettercap/ettercap-ng_0.7.3.bb
@@ -0,0 +1,18 @@
+DESCRIPTION = "network sniffer/interceptor/logger for ethernet LANs. It \
+supports active and passive dissection of many protocols (even ciphered ones, \
+like SSH and HTTPS)."
+SECTION = "console/network"
+DEPENDS = "virtual/libiconv libnet libpcap openssl libpcre ncurses zlib libtool"
+LICENSE = "GPL"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/ettercap/ettercap-NG-${PV}.tar.gz \
+ file://autotools.patch;patch=1"
+
+S = "${WORKDIR}/ettercap-NG-${PV}"
+
+inherit autotools
+
+EXTRA_OECONF += "--disable-gtk"
+
+FILES_${PN} += "${datadir} ${libdir}/ettercap/*.so"
+FILES_${PN}-dbg += "${libdir}/ettercap/.debug"
diff --git a/packages/ettercap/ettercap_0.6.b.bb b/packages/ettercap/ettercap_0.6.b.bb
deleted file mode 100644
index d5983d4481..0000000000
--- a/packages/ettercap/ettercap_0.6.b.bb
+++ /dev/null
@@ -1,14 +0,0 @@
-SECTION = "console/network"
-DEPENDS = "ncurses openssl"
-LICENSE = "GPL"
-DESCRIPTION = "Ettercap is a network sniffer/interceptor/logger \
-for ethernet LANs. It supports active and passive dissection of \
-many protocols (even ciphered ones, like SSH and HTTPS)."
-
-SRC_URI = "${SOURCEFORGE_MIRROR}/ettercap/ettercap-${PV}.tar.gz \
- file://configure.patch;patch=1"
-
-inherit autotools
-
-EXTRA_OECONF = "--disable-gtk \
- --with-openssl=${STAGING_LIBDIR}/.."
diff --git a/packages/keylaunch/files/corgie/.mtn2git_empty b/packages/ettercap/files/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/keylaunch/files/corgie/.mtn2git_empty
+++ b/packages/ettercap/files/.mtn2git_empty
diff --git a/packages/ettercap/files/autotools.patch b/packages/ettercap/files/autotools.patch
new file mode 100644
index 0000000000..b6024c48c7
--- /dev/null
+++ b/packages/ettercap/files/autotools.patch
@@ -0,0 +1,173 @@
+diff -ur ettercap-NG-0.7.3/configure.in ettercap-NG-0.7.3-changed/configure.in
+--- ettercap-NG-0.7.3/configure.in 2005-01-13 10:24:28.000000000 +0100
++++ ettercap-NG-0.7.3-changed/configure.in 2007-11-07 11:42:25.000000000 +0100
+@@ -178,6 +178,7 @@
+
+ AC_PROG_CC
+ AM_PROG_CC_STDC
++AM_PROG_CC_C_O
+ AC_PROG_INSTALL
+ AC_PROG_MAKE_SET
+ AC_PROG_GCC_TRADITIONAL
+@@ -236,7 +237,7 @@
+ AC_CHECK_HEADERS(sys/poll.h poll.h sys/select.h)
+ AC_CHECK_HEADERS(sys/cdefs.h)
+ dnl nameser NS_GET32 and so on...
+-EC_NS_GET()
++dnl EC_NS_GET()
+
+ dnl ==================================================================
+ dnl Checks for typedefs, structures, and compiler characteristics.
+@@ -379,129 +380,6 @@
+ dnl ==================
+
+
+-dnl ---------
+-dnl libpcap
+-dnl ---------
+-ac_ec_libpcap=default
+-
+-AC_MSG_CHECKING(for libpcap)
+-AC_ARG_WITH(libpcap, AC_HELP_STRING(--with-libpcap=DIR,use libpcap in DIR),
+-[ case "$withval" in
+- no)
+- AC_MSG_RESULT(no)
+- AC_MSG_ERROR(["*** ettercap cannot operate without libpcap. ***"])
+- ;;
+- *)
+- if test -f $withval/pcap.h; then
+- owd=`pwd`
+- if cd $withval; then withval=`pwd`; cd $owd; fi
+- PCAPINC="-I$withval"
+- if test "$OS" = "WINDOWS"; then
+- PCAPLIB="-L$withval -lwpcap -lpacket"
+- else
+- PCAPLIB="-L$withval -lpcap"
+- fi
+- ac_ec_libpcap=$withval
+- AC_MSG_RESULT($withval)
+- elif test -f $withval/include/pcap.h; then
+- owd=`pwd`
+- if cd $withval; then withval=`pwd`; cd $owd; fi
+- PCAPINC="-I$withval/include"
+- if test "$OS" = "WINDOWS"; then
+- PCAPLIB="-L$withval/lib -lwpcap -lpacket"
+- else
+- PCAPLIB="-L$withval/lib -lpcap"
+- fi
+- ac_ec_libpcap=$withval
+- AC_MSG_RESULT($withval)
+- else
+- AC_MSG_RESULT(no)
+- AC_MSG_ERROR([pcap.h not found in $withval])
+- fi
+- ;;
+- esac ],
+-[ if test -f /usr/include/pcap/pcap.h; then
+- PCAPINC="-I/usr/include/pcap"
+- if test "$OS" = "WINDOWS"; then
+- PCAPLIB="-lwpcap -lpacket"
+- else
+- PCAPLIB="-lpcap"
+- fi
+- elif test -f /usr/include/pcap.h; then
+- if test "$OS" = "WINDOWS"; then
+- PCAPLIB="-lwpcap -lpacket"
+- else
+- PCAPLIB="-lpcap"
+- fi
+- elif test -f /usr/local/include/pcap.h; then
+- PCAPINC="-I/usr/local/include"
+- if test "$OS" = "WINDOWS"; then
+- PCAPLIB="-lwpcap -lpacket"
+- else
+- PCAPLIB="-lpcap"
+- fi
+- else
+- AC_MSG_RESULT(no)
+- AC_MSG_ERROR([libpcap not found])
+- fi
+- AC_MSG_RESULT(yes) ]
+-)
+-
+-if test "$OS" = "WINDOWS"; then
+- EC_CHECK_FUNC(wpcap, pcap_datalink_val_to_description, $PCAPLIB, $LIBS,, AC_MSG_ERROR([Incorrect libpcap version. libpcap >= 0.8.1 required]))
+- EC_CHECK_FUNC(packet, PacketInitPacket, $PCAPLIB, $LIBS,, AC_MSG_ERROR([Incorrect libpcap version. libpcap >= 0.8.1 required]))
+- AC_CHECK_LIB(ws2_32, ntohs,, AC_MSG_ERROR([Incorrect ws2_32 version.]))
+- AC_CHECK_LIB(iphlpapi, main)
+-else
+- EC_CHECK_FUNC(pcap, pcap_datalink_val_to_description, $PCAPLIB, $LIBS,, AC_MSG_ERROR([Incorrect libpcap version. libpcap >= 0.8.1 required]))
+-fi
+-
+-dnl ---------
+-dnl libnet
+-dnl ---------
+-ac_ec_libnet=default
+-
+-AC_MSG_CHECKING(for libnet)
+-AC_ARG_WITH(libnet, AC_HELP_STRING(--with-libnet=DIR,use libnet in DIR),
+-[ case "$withval" in
+- no)
+- AC_MSG_RESULT(no)
+- AC_MSG_ERROR(["*** ettercap cannot operate without libnet. ***"])
+- ;;
+- *)
+- if test -f $withval/lnet.h; then
+- owd=`pwd`
+- if cd $withval; then withval=`pwd`; cd $owd; fi
+- LNETINC="-I$withval"
+- LNETLIB="-L$withval -lnet"
+- ac_ec_libnet=$withval
+- AC_MSG_RESULT($withval)
+- elif test -f $withval/include/libnet.h; then
+- owd=`pwd`
+- if cd $withval; then withval=`pwd`; cd $owd; fi
+- LNETINC="-I$withval/include"
+- LNETLIB="-L$withval/lib -L$withval/src -lnet"
+- ac_ec_libnet=$withval
+- AC_MSG_RESULT($withval)
+- else
+- AC_MSG_RESULT(no)
+- AC_MSG_ERROR([libnet.h not found in $withval])
+- fi
+- ;;
+- esac ],
+-[ if test -f /usr/include/libnet.h; then
+- AC_MSG_RESULT(yes)
+- LNETINC=""
+- LNETLIB="-lnet"
+- else
+- AC_MSG_RESULT(no)
+- AC_MSG_ERROR([libnet >= 1.1.2.1 not found])
+- fi
+-]
+-)
+-
+-EC_CHECK_FUNC(net, libnet_adv_free_packet, $LNETLIB, $LIBS,, AC_MSG_ERROR([Incorrect libnet version. libnet >= 1.1.2.1 required]))
+-
+ dnl ------------------
+ dnl Checks for openssl
+ dnl ------------------
+@@ -794,7 +672,8 @@
+ dnl set up the final vars
+ dnl -----------------------
+ EC_CFLAGS="$DEBUG_FLAGS $PCAPINC $LNETINC $SSLINC $PCREINC $ICONVINC"
+-EC_LIBS="$LIBS $PCAPLIB $LNETLIB $SSLLIB $PCRELIB $NCURSLIB $GTK_LIBS $ICONVLIB"
++dnl EC_LIBS="$LIBS $PCAPLIB $LNETLIB $SSLLIB $PCRELIB $NCURSLIB $GTK_LIBS $ICONVLIB"
++EC_LIBS="$LIBS $PCAPLIB $LNETLIB $SSLLIB $PCRELIB $NCURSLIB $GTK_LIBS $ICONVLIB -lpcap -lnet"
+
+ AC_SUBST(EC_CFLAGS)
+ AC_SUBST(EC_LIBS)
+diff -ur ettercap-NG-0.7.3/src/Makefile.am ettercap-NG-0.7.3-changed/src/Makefile.am
+--- ettercap-NG-0.7.3/src/Makefile.am 2005-01-13 10:18:48.000000000 +0100
++++ ettercap-NG-0.7.3-changed/src/Makefile.am 2007-11-06 20:15:12.000000000 +0100
+@@ -127,8 +127,7 @@
+
+ ettercap_CFLAGS = @EC_CFLAGS@
+
+-ettercap_LDADD = @LIBOBJS@ \
+- os/libec_os.a \
++ettercap_LDADD = missing/strlcpy.o os/libec_os.a \
+ interfaces/daemon/libec_daemon.a \
+ interfaces/text/libec_text.a
+
diff --git a/packages/ezx/ezxd_svn.bb b/packages/ezx/ezxd_svn.bb
index 86c3dc0aba..ab1010c48e 100644
--- a/packages/ezx/ezxd_svn.bb
+++ b/packages/ezx/ezxd_svn.bb
@@ -4,7 +4,7 @@ SECTION = "devel"
AUTHOR = "Daniel Ribeiro"
PV = "0.0+svnr${SRCREV}"
-PR = "r3"
+PR = "r4"
SRC_URI = "svn://svn.openezx.org/trunk/src/userspace/;module=ezxd;proto=http \
file://ezxd.init \
@@ -17,6 +17,8 @@ INITSCRIPT_PARAMS = "start 00 S ."
S = "${WORKDIR}/${PN}"
+CFLAGS_append = " -DDEBUG "
+
do_configure() {
sed -i -e s:CROSS:CC:g Makefile
}
diff --git a/packages/fftw/fftw.inc b/packages/fftw/fftw.inc
index 88c946b1d4..acd1b27f4b 100644
--- a/packages/fftw/fftw.inc
+++ b/packages/fftw/fftw.inc
@@ -2,6 +2,7 @@ DESCRIPTION = "FFTW"
SECTION = "libs"
PRIORITY = "optional"
LICENSE = "GPL"
+RPROVIDES += "libfftw3"
PR = "r1"
diff --git a/packages/file-roller/file-roller_2.6.1.bb b/packages/file-roller/file-roller_2.6.1.bb
index f4490884bb..43ba49ac5e 100644
--- a/packages/file-roller/file-roller_2.6.1.bb
+++ b/packages/file-roller/file-roller_2.6.1.bb
@@ -11,5 +11,5 @@ DEPENDS="gtk+ libgnomeui gnome-common gnome-vfs libglade libbonoboui"
inherit autotools
do_configure_prepend () {
- cp ${STAGING_DIR}/${HOST_SYS}/share/gnome-common/data/omf.make ${S}
+ cp ${STAGING_DATADIR}/gnome-common/data/omf.make ${S}
}
diff --git a/packages/flite/flite-1.2/flite-1.2-alsa_support-1.2.diff b/packages/flite/flite-1.2/flite-1.2-alsa_support-1.2.diff
new file mode 100644
index 0000000000..3d2753a01f
--- /dev/null
+++ b/packages/flite/flite-1.2/flite-1.2-alsa_support-1.2.diff
@@ -0,0 +1,512 @@
+Index: configure
+===================================================================
+--- flite-1.2-release/configure (.../flite-1.2-orig) (revision 10)
++++ flite-1.2-release/configure (.../release-v1.2) (revision 10)
+@@ -1415,16 +1415,16 @@
+ echo "$ac_t""no" 1>&6
+ fi
+
+-ac_safe=`echo "sys/asoundlib.h" | sed 'y%./+-%__p_%'`
+-echo $ac_n "checking for sys/asoundlib.h""... $ac_c" 1>&6
+-echo "configure:1421: checking for sys/asoundlib.h" >&5
++ac_safe=`echo "alsa/asoundlib.h" | sed 'y%./+-%__p_%'`
++echo $ac_n "checking for alsa/asoundlib.h""... $ac_c" 1>&6
++echo "configure:1421: checking for alsa/asoundlib.h" >&5
+ if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+ cat > conftest.$ac_ext <<EOF
+ #line 1426 "configure"
+ #include "confdefs.h"
+-#include <sys/asoundlib.h>
++#include <alsa/asoundlib.h>
+ EOF
+ ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+ { (eval echo configure:1431: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+@@ -1445,23 +1445,24 @@
+ echo "$ac_t""yes" 1>&6
+ AUDIODRIVER="alsa"
+ AUDIODEFS=-DCST_AUDIO_ALSA
++ AUDIOLIBS=-lasound
+ else
+ echo "$ac_t""no" 1>&6
+ fi
+
+ ac_safe=`echo "mmsystem.h" | sed 'y%./+-%__p_%'`
+ echo $ac_n "checking for mmsystem.h""... $ac_c" 1>&6
+-echo "configure:1455: checking for mmsystem.h" >&5
++echo "configure:1456: checking for mmsystem.h" >&5
+ if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+ cat > conftest.$ac_ext <<EOF
+-#line 1460 "configure"
++#line 1461 "configure"
+ #include "confdefs.h"
+ #include <mmsystem.h>
+ EOF
+ ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+-{ (eval echo configure:1465: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
++{ (eval echo configure:1466: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+ if test -z "$ac_err"; then
+ rm -rf conftest*
+Index: include/cst_sts.h
+===================================================================
+--- flite-1.2-release/include/cst_sts.h (.../flite-1.2-orig) (revision 10)
++++ flite-1.2-release/include/cst_sts.h (.../release-v1.2) (revision 10)
+@@ -47,9 +47,9 @@
+ /* else where, this information plus the indexes in the Unit relation */
+ /* allow reconstruction of the signal itself */
+ struct cst_sts_struct {
+- const unsigned short *frame;
+- const int size; /* in samples */
+- const unsigned char *residual;
++ unsigned short *frame;
++ int size; /* in samples */
++ unsigned char *residual;
+ };
+ typedef struct cst_sts_struct cst_sts;
+
+Index: configure.in
+===================================================================
+--- flite-1.2-release/configure.in (.../flite-1.2-orig) (revision 10)
++++ flite-1.2-release/configure.in (.../release-v1.2) (revision 10)
+@@ -131,9 +131,10 @@
+ AC_CHECK_HEADER(sys/audioio.h,
+ [AUDIODRIVER="sun"
+ AUDIODEFS=-DCST_AUDIO_SUNOS])
+-AC_CHECK_HEADER(sys/asoundlib.h,
++AC_CHECK_HEADER(alsa/asoundlib.h,
+ [AUDIODRIVER="alsa"
+- AUDIODEFS=-DCST_AUDIO_ALSA])
++ AUDIODEFS=-DCST_AUDIO_ALSA
++ AUDIOLIBS=-lasound])
+ AC_CHECK_HEADER(mmsystem.h,
+ [AUDIODRIVER="wince"
+ AUDIODEFS=-DCST_AUDIO_WINCE
+Index: src/audio/au_alsa.c
+===================================================================
+--- flite-1.2-release/src/audio/au_alsa.c (.../flite-1.2-orig) (revision 10)
++++ flite-1.2-release/src/audio/au_alsa.c (.../release-v1.2) (revision 10)
+@@ -2,7 +2,7 @@
+ /* */
+ /* Language Technologies Institute */
+ /* Carnegie Mellon University */
+-/* Copyright (c) 2001 */
++/* Copyright (c) 2000 */
+ /* All Rights Reserved. */
+ /* */
+ /* Permission is hereby granted, free of charge, to use and distribute */
+@@ -29,158 +29,283 @@
+ /* ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF */
+ /* THIS SOFTWARE. */
+ /* */
++/*********************************************************************** */
++/* Author: Lukas Loehrer ( */
++/* Date: January 2005 */
+ /*************************************************************************/
+-/* Author: Geoff Harrison (mandrake@cepstral.com) */
+-/* Date: Sepetember 2001 */
+-/*************************************************************************/
+ /* */
+-/* Access to ALSA audio devices */
+-/* */
++/* Native access to alsa audio devices on Linux */
++/* Tested with libasound version 1.0.10 */
+ /*************************************************************************/
+
+-#include <stdio.h>
+ #include <stdlib.h>
+ #include <unistd.h>
+ #include <sys/types.h>
++#include <assert.h>
++#include <errno.h>
++
+ #include "cst_string.h"
+ #include "cst_wave.h"
+ #include "cst_audio.h"
+
+-#include <sys/asoundlib.h>
++#include <alsa/asoundlib.h>
+
+-#include <sys/stat.h>
+-#include <fcntl.h>
+
+-static int alsa_card = 0, alsa_device = 0;
++/*static char *pcm_dev_name = "hw:0,0"; */
++static char *pcm_dev_name ="default";
+
++static inline void print_pcm_state(snd_pcm_t *handle, char *msg)
++{
++ fprintf(stderr, "PCM state at %s = %s\n", msg,
++ snd_pcm_state_name(snd_pcm_state(handle)));
++}
++
+ cst_audiodev *audio_open_alsa(int sps, int channels, cst_audiofmt fmt)
+ {
+- snd_pcm_channel_info_t pinfo;
+- snd_pcm_channel_params_t params;
+- snd_pcm_channel_setup_t setup;
+- snd_pcm_t *pcm;
+- cst_audiodev *ad;
+- int err;
++ cst_audiodev *ad;
++ unsigned int real_rate;
++ int err;
+
+-#ifdef __QNXNTO__
+- if (snd_pcm_open_preferred(&pcm,&alsa_card,&alsa_device,SND_PCM_OPEN_PLAYBACK) < 0)
+- {
+- cst_errmsg("alsa_audio: failed to open audio device\n");
+- cst_error();
+- }
+- if (snd_pcm_plugin_set_disable(pcm,PLUGIN_DISABLE_MMAP) < 0)
+- {
+- cst_errmsg("alsa_audio: failed to disable mmap\n");
+- snd_pcm_close(pcm);
+- cst_error();
+- }
+-#else
+- if (snd_pcm_open(&pcm,alsa_card,alsa_device,SND_PCM_OPEN_PLAYBACK) < 0)
+- {
+- cst_errmsg("alsa_audio: failed to open audio device\n");
+- cst_error();
+- }
+-#endif
++ /* alsa specific stuff */
++ snd_pcm_t *pcm_handle;
++ snd_pcm_stream_t stream = SND_PCM_STREAM_PLAYBACK;
++ snd_pcm_hw_params_t *hwparams;
++ snd_pcm_format_t format;
++ snd_pcm_access_t access = SND_PCM_ACCESS_RW_INTERLEAVED;
+
++ /* Allocate the snd_pcm_hw_params_t structure on the stack. */
++ snd_pcm_hw_params_alloca(&hwparams);
+
+- memset(&pinfo, 0, sizeof(pinfo));
+- memset(&params, 0, sizeof(params));
+- memset(&setup, 0, sizeof(setup));
++ /* Open pcm device */
++ err = snd_pcm_open(&pcm_handle, pcm_dev_name, stream, 0);
++ if (err < 0)
++ {
++ cst_errmsg("audio_open_alsa: failed to open audio device %s. %s\n",
++ pcm_dev_name, snd_strerror(err));
++ return NULL;
++ }
+
+- pinfo.channel = SND_PCM_CHANNEL_PLAYBACK;
+- snd_pcm_plugin_info(pcm,&pinfo);
++ /* Init hwparams with full configuration space */
++ err = snd_pcm_hw_params_any(pcm_handle, hwparams);
++ if (err < 0)
++ {
++ snd_pcm_close(pcm_handle);
++ cst_errmsg("audio_open_alsa: failed to get hardware parameters from audio device. %s\n", snd_strerror(err));
++ return NULL;
++ }
+
+- params.mode = SND_PCM_MODE_BLOCK;
+- params.channel = SND_PCM_CHANNEL_PLAYBACK;
+- params.start_mode = SND_PCM_START_DATA;
+- params.stop_mode = SND_PCM_STOP_STOP;
++ /* Set access mode */
++ err = snd_pcm_hw_params_set_access(pcm_handle, hwparams, access);
++ if (err < 0)
++ {
++ snd_pcm_close(pcm_handle);
++ cst_errmsg("audio_open_alsa: failed to set access mode. %s.\n", snd_strerror(err));
++ return NULL;
++ }
+
+- params.buf.block.frag_size = pinfo.max_fragment_size;
+- params.buf.block.frags_max = 1;
+- params.buf.block.frags_min = 1;
+-
+- params.format.interleave = 1;
+- params.format.rate = sps;
+- params.format.voices = channels;
+-
+- switch (fmt)
+- {
+- case CST_AUDIO_LINEAR16:
++ /* Determine matching alsa sample format */
++ /* This could be implemented in a more */
++ /* flexible way (byte order conversion). */
++ switch (fmt)
++ {
++ case CST_AUDIO_LINEAR16:
+ if (CST_LITTLE_ENDIAN)
+- params.format.format = SND_PCM_SFMT_S16_LE;
++ format = SND_PCM_FORMAT_S16_LE;
+ else
+- params.format.format = SND_PCM_SFMT_S16_BE;
++ format = SND_PCM_FORMAT_S16_BE;
+ break;
+- case CST_AUDIO_LINEAR8:
+- params.format.format = SND_PCM_SFMT_U8;
++ case CST_AUDIO_LINEAR8:
++ format = SND_PCM_FORMAT_U8;
+ break;
+- case CST_AUDIO_MULAW:
+- params.format.format = SND_PCM_SFMT_MU_LAW;
++ case CST_AUDIO_MULAW:
++ format = SND_PCM_FORMAT_MU_LAW;
+ break;
+- }
++ default:
++ snd_pcm_close(pcm_handle);
++ cst_errmsg("audio_open_alsa: failed to find suitable format.\n");
++ return NULL;
++ break;
++ }
+
+- if((err = snd_pcm_plugin_params(pcm,&params)) < 0)
+- {
+- cst_errmsg("alsa_audio params setting failed: %s\n",snd_strerror(err));
+- snd_pcm_close(pcm);
+- cst_error();
+- }
+- if((err = snd_pcm_plugin_setup(pcm,SND_PCM_CHANNEL_PLAYBACK)) > 0) {
+- cst_errmsg("alsa_audio sound prepare setting failed: %s\n",snd_strerror(err));
+- snd_pcm_close(pcm);
+- cst_error();
+- }
+- if((err = snd_pcm_plugin_prepare(pcm,SND_PCM_CHANNEL_PLAYBACK)) > 0) {
+- cst_errmsg("alsa_audio sound prepare setting failed: %s\n",snd_strerror(err));
+- snd_pcm_close(pcm);
+- cst_error();
+- }
++ /* Set samble format */
++ err = snd_pcm_hw_params_set_format(pcm_handle, hwparams, format);
++ if (err <0)
++ {
++ snd_pcm_close(pcm_handle);
++ cst_errmsg("audio_open_alsa: failed to set format. %s.\n", snd_strerror(err));
++ return NULL;
++ }
+
+- pinfo.channel = SND_PCM_CHANNEL_PLAYBACK;
+- snd_pcm_plugin_info(pcm,&pinfo);
++ /* Set sample rate near the disired rate */
++ real_rate = sps;
++ err = snd_pcm_hw_params_set_rate_near(pcm_handle, hwparams, &real_rate, 0);
++ if (err < 0)
++ {
++ snd_pcm_close(pcm_handle);
++ cst_errmsg("audio_open_alsa: failed to set sample rate near %d. %s.\n", sps, snd_strerror(err));
++ return NULL;
++ }
++ /*FIXME: This is probably too strict */
++ assert(sps == real_rate);
+
+- ad = cst_alloc(cst_audiodev, 1);
+- ad->platform_data = pcm;
+- ad->sps = ad->real_sps = sps;
+- ad->channels = ad->real_channels = channels;
+- ad->fmt = ad->real_fmt = fmt;
++ /* Set number of channels */
++ assert(channels >0);
++ err = snd_pcm_hw_params_set_channels(pcm_handle, hwparams, channels);
++ if (err < 0)
++ {
++ snd_pcm_close(pcm_handle);
++ cst_errmsg("audio_open_alsa: failed to set number of channels to %d. %s.\n", channels, snd_strerror(err));
++ return NULL;
++ }
+
+- return ad;
++ /* Commit hardware parameters */
++ err = snd_pcm_hw_params(pcm_handle, hwparams);
++ if (err < 0)
++ {
++ snd_pcm_close(pcm_handle);
++ cst_errmsg("audio_open_alsa: failed to set hw parameters. %s.\n", snd_strerror(err));
++ return NULL;
++ }
++
++ /* Make sure the device is ready to accept data */
++ assert(snd_pcm_state(pcm_handle) == SND_PCM_STATE_PREPARED);
++
++ /* Write hardware parameters to flite audio device data structure */
++ ad = cst_alloc(cst_audiodev, 1);
++ assert(ad != NULL);
++ ad->real_sps = ad->sps = sps;
++ ad->real_channels = ad->channels = channels;
++ ad->real_fmt = ad->fmt = fmt;
++ ad->platform_data = (void *) pcm_handle;
++
++ return ad;
+ }
+
+ int audio_close_alsa(cst_audiodev *ad)
+ {
+- snd_pcm_t *pcm;
++ int result;
++ snd_pcm_t *pcm_handle;
+
+- if (ad == NULL)
+- return 0;
++ if (ad == NULL)
++ return 0;
+
+- pcm = ad->platform_data;
+- snd_pcm_plugin_flush(pcm,0);
+- snd_pcm_close(pcm);
+- cst_free(ad);
++ pcm_handle = (snd_pcm_t *) ad->platform_data;
++ result = snd_pcm_close(pcm_handle);
++ if (result < 0)
++ {
++ cst_errmsg("audio_close_alsa: Error: %s.\n", snd_strerror(result));
++ }
++ cst_free(ad);
++ return result;
++}
+
+- return 0;
++/* Returns zero if recovery was successful. */
++static int recover_from_error(snd_pcm_t *pcm_handle, ssize_t res)
++{
++ if (res == -EPIPE) /* xrun */
++ {
++ res = snd_pcm_prepare(pcm_handle);
++ if (res < 0)
++ {
++ /* Failed to recover from xrun */
++ cst_errmsg("recover_from_write_error: failed to recover from xrun. %s\n.", snd_strerror(res));
++ return res;
++ }
++ }
++ else if (res == -ESTRPIPE) /* Suspend */
++ {
++ while ((res = snd_pcm_resume(pcm_handle)) == -EAGAIN)
++ {
++ snd_pcm_wait(pcm_handle, 1000);
++ }
++ if (res < 0)
++ {
++ res = snd_pcm_prepare(pcm_handle);
++ if (res <0)
++ {
++ /* Resume failed */
++ cst_errmsg("audio_recover_from_write_error: failed to resume after suspend. %s\n.", snd_strerror(res));
++ return res;
++ }
++ }
++ }
++ else if (res < 0)
++ {
++ /* Unknown failure */
++ cst_errmsg("audio_recover_from_write_error: %s.\n", snd_strerror(res));
++ return res;
++ }
++ return 0;
+ }
+
+ int audio_write_alsa(cst_audiodev *ad, void *samples, int num_bytes)
+ {
+- snd_pcm_t *pcm = ad->platform_data;
++ size_t frame_size;
++ ssize_t num_frames, res;
++ snd_pcm_t *pcm_handle;
++ char *buf = (char *) samples;
+
+- return snd_pcm_plugin_write(pcm,samples,num_bytes);
++ /* Determine frame size in bytes */
++ frame_size = audio_bps(ad->real_fmt) * ad->real_channels;
++ /* Require that only complete frames are handed in */
++ assert((num_bytes % frame_size) == 0);
++ num_frames = num_bytes / frame_size;
++ pcm_handle = (snd_pcm_t *) ad->platform_data;
++
++ while (num_frames > 0)
++ {
++ res = snd_pcm_writei(pcm_handle, buf, num_frames);
++ if (res != num_frames)
++ {
++ if (res == -EAGAIN || (res > 0 && res < num_frames))
++ {
++ snd_pcm_wait(pcm_handle, 100);
++ }
++ else if (recover_from_error(pcm_handle, res) < 0)
++ {
++ return -1;
++ }
++ }
++
++ if (res >0)
++ {
++ num_frames -= res;
++ buf += res * frame_size;
++ }
++ }
++ return num_bytes;
+ }
+
+ int audio_flush_alsa(cst_audiodev *ad)
+ {
+- snd_pcm_t *pcm = ad->platform_data;
+-
+- return snd_pcm_plugin_flush(pcm,0);
++ int result;
++ result = snd_pcm_drain((snd_pcm_t *) ad->platform_data);
++ if (result < 0)
++ {
++ cst_errmsg("audio_flush_alsa: Error: %s.\n", snd_strerror(result));
++ }
++ /* Prepare device for more data */
++ result = snd_pcm_prepare((snd_pcm_t *) ad->platform_data);
++if (result < 0)
++ {
++ cst_errmsg("audio_flush_alsa: Error: %s.\n", snd_strerror(result));
++ }
++ return result;
+ }
+
+ int audio_drain_alsa(cst_audiodev *ad)
+ {
+- snd_pcm_t *pcm = ad->platform_data;
+-
+- return snd_pcm_plugin_playback_drain(pcm);
++ int result;
++ result = snd_pcm_drop((snd_pcm_t *) ad->platform_data);
++ if (result < 0)
++ {
++ cst_errmsg("audio_drain_alsa: Error: %s.\n", snd_strerror(result));
++ }
++/* Prepare device for more data */
++ result = snd_pcm_prepare((snd_pcm_t *) ad->platform_data);
++if (result < 0)
++ {
++ cst_errmsg("audio_drain_alsa: Error: %s.\n", snd_strerror(result));
++ }
++ return result;
+ }
+-
+Index: doc/Makefile
+===================================================================
+--- flite-1.2-release/doc/Makefile (.../flite-1.2-orig) (revision 10)
++++ flite-1.2-release/doc/Makefile (.../release-v1.2) (revision 10)
+@@ -53,6 +53,7 @@
+ @ if [ ! -d html ] ; \
+ then mkdir -p html ; fi
+ (cd html; texi2html -number -split_chapter ../flite.texi)
++ mv html/flite/*.html html/ && rmdir html/flite
+ @ for i in html/*.html ; \
+ do \
+ sed 's/<BODY>/<BODY bgcolor="#ffffff">/' $$i >ttt.html; \
+Index: config/common_make_rules
+===================================================================
+--- flite-1.2-release/config/common_make_rules (.../flite-1.2-orig) (revision 10)
++++ flite-1.2-release/config/common_make_rules (.../release-v1.2) (revision 10)
+@@ -88,7 +88,7 @@
+ @ rm -rf shared_os && mkdir shared_os
+ @ rm -f $@ $(LIBDIR)/$@.${PROJECT_VERSION} $(LIBDIR)/$@.${PROJECT_SHLIB_VERSION}
+ @ (cd shared_os && ar x ../$<)
+- @ (cd shared_os && $(CC) -shared -Wl,-soname,$@.${PROJECT_SHLIB_VERSION} -o ../$@.${PROJECT_VERSION} *.os)
++ @ (cd shared_os && $(CC) -shared -Wl,-soname,$@.${PROJECT_SHLIB_VERSION} -o ../$@.${PROJECT_VERSION} *.os $(AUDIOLIBS))
+ @ ln -s $(LIBDIR)/$@.${PROJECT_VERSION} $(LIBDIR)/$@.${PROJECT_SHLIB_VERSION}
+ @ ln -s $(LIBDIR)/$@.${PROJECT_SHLIB_VERSION} $(LIBDIR)/$@
+ @ rm -rf shared_os
diff --git a/packages/keylaunch/files/husky/.mtn2git_empty b/packages/flite/flite-1.3/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/keylaunch/files/husky/.mtn2git_empty
+++ b/packages/flite/flite-1.3/.mtn2git_empty
diff --git a/packages/flite/flite-1.3/flite-1.3-alsa_support-1.2.diff b/packages/flite/flite-1.3/flite-1.3-alsa_support-1.2.diff
new file mode 100644
index 0000000000..b3e4b7aae4
--- /dev/null
+++ b/packages/flite/flite-1.3/flite-1.3-alsa_support-1.2.diff
@@ -0,0 +1,6615 @@
+Index: lang/usenglish/Makefile
+===================================================================
+--- flite-1.3-release/lang/usenglish/Makefile (.../flite-1.3-orig) (revision 7)
++++ flite-1.3-release/lang/usenglish/Makefile (.../release-1.2) (revision 7)
+@@ -38,6 +38,7 @@
+ DIRNAME=lang/usenglish
+ BUILD_DIRS =
+ ALL_DIRS=
++include $(TOP)/config/config
+ H = usenglish.h us_int_accent_cart.h us_int_tone_cart.h us_durz_cart.h \
+ us_ffeatures.h us_phrasing_cart.h us_text.h us_f0.h us_nums_cart.h
+ SRCS = us_int_accent_cart.c us_int_tone_cart.c us_f0_model.c \
+@@ -45,7 +46,11 @@
+ us_phoneset.c us_ffeatures.c us_phrasing_cart.c \
+ us_gpos.c us_text.c us_expand.c us_postlex.c \
+ us_nums_cart.c us_aswd.c usenglish.c
+-OBJS = $(SRCS:.c=.o)
++ifdef SHFLAGS
++OBJS := $(SRCS:.c=.os)
++else
++OBJS := $(SRCS:.c=.o)
++endif
+ SCM=
+ FILES = Makefile $(SCM) $(SRCS) $(H)
+ LIBNAME = flite_usenglish
+Index: lang/cmu_us_kal/Makefile
+===================================================================
+--- flite-1.3-release/lang/cmu_us_kal/Makefile (.../flite-1.3-orig) (revision 7)
++++ flite-1.3-release/lang/cmu_us_kal/Makefile (.../release-1.2) (revision 7)
+@@ -43,7 +43,12 @@
+ cmu_us_kal_lpc.c \
+ cmu_us_kal_res.c \
+ cmu_us_kal_residx.c
+-OBJS = $(SRCS:.c=.o)
++include $(TOP)/config/config
++ifdef SHFLAGS
++OBJS := $(SRCS:.c=.os)
++else
++OBJS := $(SRCS:.c=.o)
++endif
+ SCM=
+ FILES = Makefile $(SCM) $(SRCS) $(H)
+ LIBNAME = flite_cmu_us_kal
+Index: lang/cmu_us_kal16/Makefile
+===================================================================
+--- flite-1.3-release/lang/cmu_us_kal16/Makefile (.../flite-1.3-orig) (revision 7)
++++ flite-1.3-release/lang/cmu_us_kal16/Makefile (.../release-1.2) (revision 7)
+@@ -44,7 +44,12 @@
+ cmu_us_kal16_lpc.c \
+ cmu_us_kal16_res.c \
+ cmu_us_kal16_residx.c
+-OBJS = $(SRCS:.c=.o)
++include $(TOP)/config/config
++ifdef SHFLAGS
++OBJS := $(SRCS:.c=.os)
++else
++OBJS := $(SRCS:.c=.o)
++endif
+ SCM=
+ FILES = Makefile $(SCM) $(SRCS) $(H)
+ LIBNAME = flite_cmu_us_kal16
+Index: lang/cmu_time_awb/Makefile
+===================================================================
+--- flite-1.3-release/lang/cmu_time_awb/Makefile (.../flite-1.3-orig) (revision 7)
++++ flite-1.3-release/lang/cmu_time_awb/Makefile (.../release-1.2) (revision 7)
+@@ -45,7 +45,12 @@
+ cmu_time_awb_mcep.c \
+ cmu_time_awb_lpc.c \
+ cmu_time_awb_lex_entry.c
+-OBJS = $(SRCS:.c=.o)
++include $(TOP)/config/config
++ifdef SHFLAGS
++OBJS := $(SRCS:.c=.os)
++else
++OBJS := $(SRCS:.c=.o)
++endif
+ SCM=
+ FILES = Makefile $(SCM) $(SRCS) $(H)
+ LIBNAME = flite_cmu_time_awb
+Index: lang/cmulex/Makefile
+===================================================================
+--- flite-1.3-release/lang/cmulex/Makefile (.../flite-1.3-orig) (revision 7)
++++ flite-1.3-release/lang/cmulex/Makefile (.../release-1.2) (revision 7)
+@@ -38,13 +38,20 @@
+ DIRNAME=lang/cmulex
+ BUILD_DIRS =
+ ALL_DIRS=
++
+ H = cmu_lts_model.h cmulex.h
+ SRCS = cmu_lts_rules.c cmu_lts_model.c \
+ cmu_lex.c cmu_lex_entries.c cmu_lex_data.c
+ LEX_DATA_INCLUDES = cmu_lex_data_raw.c cmu_lex_num_bytes.c \
+ cmu_lex_phones_huff_table.c cmu_lex_entries_huff_table.c
+
+-OBJS = $(SRCS:.c=.o)
++include $(TOP)/config/config
++ifdef SHFLAGS
++OBJS := $(SRCS:.c=.os)
++else
++OBJS := $(SRCS:.c=.o)
++endif
++
+ SCRIPTS=make_cmulex
+
+ SCM=
+Index: configure
+===================================================================
+--- flite-1.3-release/configure (.../flite-1.3-orig) (revision 7)
++++ flite-1.3-release/configure (.../release-1.2) (revision 7)
+@@ -1,324 +1,38 @@
+ #! /bin/sh
++
+ # Guess values for system-dependent variables and create Makefiles.
+-# Generated by GNU Autoconf 2.57.
++# Generated automatically using autoconf version 2.13
++# Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc.
+ #
+-# Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002
+-# Free Software Foundation, Inc.
+ # This configure script is free software; the Free Software Foundation
+ # gives unlimited permission to copy, distribute and modify it.
+-## --------------------- ##
+-## M4sh Initialization. ##
+-## --------------------- ##
+
+-# Be Bourne compatible
+-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+- emulate sh
+- NULLCMD=:
+- # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+- # is contrary to our usage. Disable this feature.
+- alias -g '${1+"$@"}'='"$@"'
+-elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
+- set -o posix
+-fi
+-
+-# Support unset when possible.
+-if (FOO=FOO; unset FOO) >/dev/null 2>&1; then
+- as_unset=unset
+-else
+- as_unset=false
+-fi
+-
+-
+-# Work around bugs in pre-3.0 UWIN ksh.
+-$as_unset ENV MAIL MAILPATH
+-PS1='$ '
+-PS2='> '
+-PS4='+ '
+-
+-# NLS nuisances.
+-for as_var in \
+- LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
+- LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
+- LC_TELEPHONE LC_TIME
+-do
+- if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then
+- eval $as_var=C; export $as_var
+- else
+- $as_unset $as_var
+- fi
+-done
+-
+-# Required to use basename.
+-if expr a : '\(a\)' >/dev/null 2>&1; then
+- as_expr=expr
+-else
+- as_expr=false
+-fi
+-
+-if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
+- as_basename=basename
+-else
+- as_basename=false
+-fi
+-
+-
+-# Name of the executable.
+-as_me=`$as_basename "$0" ||
+-$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+- X"$0" : 'X\(//\)$' \| \
+- X"$0" : 'X\(/\)$' \| \
+- . : '\(.\)' 2>/dev/null ||
+-echo X/"$0" |
+- sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
+- /^X\/\(\/\/\)$/{ s//\1/; q; }
+- /^X\/\(\/\).*/{ s//\1/; q; }
+- s/.*/./; q'`
+-
+-
+-# PATH needs CR, and LINENO needs CR and PATH.
+-# Avoid depending upon Character Ranges.
+-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+-as_cr_digits='0123456789'
+-as_cr_alnum=$as_cr_Letters$as_cr_digits
+-
+-# The user is always right.
+-if test "${PATH_SEPARATOR+set}" != set; then
+- echo "#! /bin/sh" >conf$$.sh
+- echo "exit 0" >>conf$$.sh
+- chmod +x conf$$.sh
+- if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+- PATH_SEPARATOR=';'
+- else
+- PATH_SEPARATOR=:
+- fi
+- rm -f conf$$.sh
+-fi
+-
+-
+- as_lineno_1=$LINENO
+- as_lineno_2=$LINENO
+- as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+- test "x$as_lineno_1" != "x$as_lineno_2" &&
+- test "x$as_lineno_3" = "x$as_lineno_2" || {
+- # Find who we are. Look in the path if we contain no path at all
+- # relative or not.
+- case $0 in
+- *[\\/]* ) as_myself=$0 ;;
+- *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+-for as_dir in $PATH
+-do
+- IFS=$as_save_IFS
+- test -z "$as_dir" && as_dir=.
+- test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+-done
+-
+- ;;
+- esac
+- # We did not find ourselves, most probably we were run as `sh COMMAND'
+- # in which case we are not to be found in the path.
+- if test "x$as_myself" = x; then
+- as_myself=$0
+- fi
+- if test ! -f "$as_myself"; then
+- { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2
+- { (exit 1); exit 1; }; }
+- fi
+- case $CONFIG_SHELL in
+- '')
+- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+-for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+-do
+- IFS=$as_save_IFS
+- test -z "$as_dir" && as_dir=.
+- for as_base in sh bash ksh sh5; do
+- case $as_dir in
+- /*)
+- if ("$as_dir/$as_base" -c '
+- as_lineno_1=$LINENO
+- as_lineno_2=$LINENO
+- as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+- test "x$as_lineno_1" != "x$as_lineno_2" &&
+- test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then
+- $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }
+- $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }
+- CONFIG_SHELL=$as_dir/$as_base
+- export CONFIG_SHELL
+- exec "$CONFIG_SHELL" "$0" ${1+"$@"}
+- fi;;
+- esac
+- done
+-done
+-;;
+- esac
+-
+- # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
+- # uniformly replaced by the line number. The first 'sed' inserts a
+- # line-number line before each line; the second 'sed' does the real
+- # work. The second script uses 'N' to pair each line-number line
+- # with the numbered line, and appends trailing '-' during
+- # substitution so that $LINENO is not a special case at line end.
+- # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
+- # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-)
+- sed '=' <$as_myself |
+- sed '
+- N
+- s,$,-,
+- : loop
+- s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
+- t loop
+- s,-$,,
+- s,^['$as_cr_digits']*\n,,
+- ' >$as_me.lineno &&
+- chmod +x $as_me.lineno ||
+- { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
+- { (exit 1); exit 1; }; }
+-
+- # Don't try to exec as it changes $[0], causing all sort of problems
+- # (the dirname of $[0] is not the place where we might find the
+- # original and so on. Autoconf is especially sensible to this).
+- . ./$as_me.lineno
+- # Exit status is that of the last command.
+- exit
+-}
+-
+-
+-case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
+- *c*,-n*) ECHO_N= ECHO_C='
+-' ECHO_T=' ' ;;
+- *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;;
+- *) ECHO_N= ECHO_C='\c' ECHO_T= ;;
+-esac
+-
+-if expr a : '\(a\)' >/dev/null 2>&1; then
+- as_expr=expr
+-else
+- as_expr=false
+-fi
+-
+-rm -f conf$$ conf$$.exe conf$$.file
+-echo >conf$$.file
+-if ln -s conf$$.file conf$$ 2>/dev/null; then
+- # We could just check for DJGPP; but this test a) works b) is more generic
+- # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
+- if test -f conf$$.exe; then
+- # Don't use ln at all; we don't have any links
+- as_ln_s='cp -p'
+- else
+- as_ln_s='ln -s'
+- fi
+-elif ln conf$$.file conf$$ 2>/dev/null; then
+- as_ln_s=ln
+-else
+- as_ln_s='cp -p'
+-fi
+-rm -f conf$$ conf$$.exe conf$$.file
+-
+-if mkdir -p . 2>/dev/null; then
+- as_mkdir_p=:
+-else
+- as_mkdir_p=false
+-fi
+-
+-as_executable_p="test -f"
+-
+-# Sed expression to map a string onto a valid CPP name.
+-as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g"
+-
+-# Sed expression to map a string onto a valid variable name.
+-as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g"
+-
+-
+-# IFS
+-# We need space, tab and new line, in precisely that order.
+-as_nl='
+-'
+-IFS=" $as_nl"
+-
+-# CDPATH.
+-$as_unset CDPATH
+-
+-
+-# Name of the host.
+-# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
+-# so uname gets run too.
+-ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
+-
+-exec 6>&1
+-
+-#
+-# Initializations.
+-#
++# Defaults:
++ac_help=
+ ac_default_prefix=/usr/local
+-ac_config_libobj_dir=.
+-cross_compiling=no
+-subdirs=
+-MFLAGS=
+-MAKEFLAGS=
+-SHELL=${CONFIG_SHELL-/bin/sh}
++# Any additions from configure.in:
++ac_help="$ac_help
++ --disable-shared without shared library support"
++ac_help="$ac_help
++ --disable-sockets without socket support"
++ac_help="$ac_help
++ --with-audio with specific audio support (none linux freebsd etc) "
++ac_help="$ac_help
++ --with-lang with language "
++ac_help="$ac_help
++ --with-vox with vox "
++ac_help="$ac_help
++ --with-lex with lexicon "
+
+-# Maximum number of lines to put in a shell here document.
+-# This variable seems obsolete. It should probably be removed, and
+-# only ac_max_sed_lines should be used.
+-: ${ac_max_here_lines=38}
+-
+-# Identity of this package.
+-PACKAGE_NAME=
+-PACKAGE_TARNAME=
+-PACKAGE_VERSION=
+-PACKAGE_STRING=
+-PACKAGE_BUGREPORT=
+-
+-ac_unique_file="include/flite.h"
+-# Factoring default headers for most tests.
+-ac_includes_default="\
+-#include <stdio.h>
+-#if HAVE_SYS_TYPES_H
+-# include <sys/types.h>
+-#endif
+-#if HAVE_SYS_STAT_H
+-# include <sys/stat.h>
+-#endif
+-#if STDC_HEADERS
+-# include <stdlib.h>
+-# include <stddef.h>
+-#else
+-# if HAVE_STDLIB_H
+-# include <stdlib.h>
+-# endif
+-#endif
+-#if HAVE_STRING_H
+-# if !STDC_HEADERS && HAVE_MEMORY_H
+-# include <memory.h>
+-# endif
+-# include <string.h>
+-#endif
+-#if HAVE_STRINGS_H
+-# include <strings.h>
+-#endif
+-#if HAVE_INTTYPES_H
+-# include <inttypes.h>
+-#else
+-# if HAVE_STDINT_H
+-# include <stdint.h>
+-# endif
+-#endif
+-#if HAVE_UNISTD_H
+-# include <unistd.h>
+-#endif"
+-
+-ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT RANLIB ac_ct_RANLIB INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA AR ac_ct_AR TARGET_OS TARGET_CPU M68KCC LEXDEFS VOXDEFS HOST_OS HOST_CPU OTHERLIBS SHFLAGS MMAPTYPE STDIOTYPE CPP EGREP AUDIODRIVER AUDIODEFS AUDIOLIBS FL_LANG FL_VOX FL_LEX LIBOBJS LTLIBOBJS'
+-ac_subst_files=''
+-
+ # Initialize some variables set by options.
+-ac_init_help=
+-ac_init_version=false
+ # The variables have the same names as the options, with
+ # dashes changed to underlines.
+-cache_file=/dev/null
++build=NONE
++cache_file=./config.cache
+ exec_prefix=NONE
++host=NONE
+ no_create=
++nonopt=NONE
+ no_recursion=
+ prefix=NONE
+ program_prefix=NONE
+@@ -327,15 +41,10 @@
+ silent=
+ site=
+ srcdir=
++target=NONE
+ verbose=
+ x_includes=NONE
+ x_libraries=NONE
+-
+-# Installation directory options.
+-# These are left unexpanded so users can "make install exec_prefix=/foo"
+-# and all the variables that are supposed to be based on exec_prefix
+-# by default will actually change.
+-# Use braces instead of parens because sh, perl, etc. also accept them.
+ bindir='${exec_prefix}/bin'
+ sbindir='${exec_prefix}/sbin'
+ libexecdir='${exec_prefix}/libexec'
+@@ -349,9 +58,17 @@
+ infodir='${prefix}/info'
+ mandir='${prefix}/man'
+
++# Initialize some other variables.
++subdirs=
++MFLAGS= MAKEFLAGS=
++SHELL=${CONFIG_SHELL-/bin/sh}
++# Maximum number of lines to put in a shell here document.
++ac_max_here_lines=12
++
+ ac_prev=
+ for ac_option
+ do
++
+ # If the previous option needs an argument, assign it.
+ if test -n "$ac_prev"; then
+ eval "$ac_prev=\$ac_option"
+@@ -359,59 +76,59 @@
+ continue
+ fi
+
+- ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'`
++ case "$ac_option" in
++ -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
++ *) ac_optarg= ;;
++ esac
+
+ # Accept the important Cygnus configure options, so we can diagnose typos.
+
+- case $ac_option in
++ case "$ac_option" in
+
+ -bindir | --bindir | --bindi | --bind | --bin | --bi)
+ ac_prev=bindir ;;
+ -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
+- bindir=$ac_optarg ;;
++ bindir="$ac_optarg" ;;
+
+ -build | --build | --buil | --bui | --bu)
+- ac_prev=build_alias ;;
++ ac_prev=build ;;
+ -build=* | --build=* | --buil=* | --bui=* | --bu=*)
+- build_alias=$ac_optarg ;;
++ build="$ac_optarg" ;;
+
+ -cache-file | --cache-file | --cache-fil | --cache-fi \
+ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
+ ac_prev=cache_file ;;
+ -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
+ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
+- cache_file=$ac_optarg ;;
++ cache_file="$ac_optarg" ;;
+
+- --config-cache | -C)
+- cache_file=config.cache ;;
+-
+ -datadir | --datadir | --datadi | --datad | --data | --dat | --da)
+ ac_prev=datadir ;;
+ -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
+ | --da=*)
+- datadir=$ac_optarg ;;
++ datadir="$ac_optarg" ;;
+
+ -disable-* | --disable-*)
+- ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
++ ac_feature=`echo $ac_option|sed -e 's/-*disable-//'`
+ # Reject names that are not valid shell variable names.
+- expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+- { echo "$as_me: error: invalid feature name: $ac_feature" >&2
+- { (exit 1); exit 1; }; }
+- ac_feature=`echo $ac_feature | sed 's/-/_/g'`
+- eval "enable_$ac_feature=no" ;;
++ if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then
++ { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
++ fi
++ ac_feature=`echo $ac_feature| sed 's/-/_/g'`
++ eval "enable_${ac_feature}=no" ;;
+
+ -enable-* | --enable-*)
+- ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
++ ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'`
+ # Reject names that are not valid shell variable names.
+- expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+- { echo "$as_me: error: invalid feature name: $ac_feature" >&2
+- { (exit 1); exit 1; }; }
+- ac_feature=`echo $ac_feature | sed 's/-/_/g'`
+- case $ac_option in
+- *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
++ if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then
++ { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
++ fi
++ ac_feature=`echo $ac_feature| sed 's/-/_/g'`
++ case "$ac_option" in
++ *=*) ;;
+ *) ac_optarg=yes ;;
+ esac
+- eval "enable_$ac_feature='$ac_optarg'" ;;
++ eval "enable_${ac_feature}='$ac_optarg'" ;;
+
+ -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+@@ -420,47 +137,95 @@
+ -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+ | --exec=* | --exe=* | --ex=*)
+- exec_prefix=$ac_optarg ;;
++ exec_prefix="$ac_optarg" ;;
+
+ -gas | --gas | --ga | --g)
+ # Obsolete; use --with-gas.
+ with_gas=yes ;;
+
+- -help | --help | --hel | --he | -h)
+- ac_init_help=long ;;
+- -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
+- ac_init_help=recursive ;;
+- -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
+- ac_init_help=short ;;
++ -help | --help | --hel | --he)
++ # Omit some internal or obsolete options to make the list less imposing.
++ # This message is too long to be a string in the A/UX 3.1 sh.
++ cat << EOF
++Usage: configure [options] [host]
++Options: [defaults in brackets after descriptions]
++Configuration:
++ --cache-file=FILE cache test results in FILE
++ --help print this message
++ --no-create do not create output files
++ --quiet, --silent do not print \`checking...' messages
++ --version print the version of autoconf that created configure
++Directory and file names:
++ --prefix=PREFIX install architecture-independent files in PREFIX
++ [$ac_default_prefix]
++ --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
++ [same as prefix]
++ --bindir=DIR user executables in DIR [EPREFIX/bin]
++ --sbindir=DIR system admin executables in DIR [EPREFIX/sbin]
++ --libexecdir=DIR program executables in DIR [EPREFIX/libexec]
++ --datadir=DIR read-only architecture-independent data in DIR
++ [PREFIX/share]
++ --sysconfdir=DIR read-only single-machine data in DIR [PREFIX/etc]
++ --sharedstatedir=DIR modifiable architecture-independent data in DIR
++ [PREFIX/com]
++ --localstatedir=DIR modifiable single-machine data in DIR [PREFIX/var]
++ --libdir=DIR object code libraries in DIR [EPREFIX/lib]
++ --includedir=DIR C header files in DIR [PREFIX/include]
++ --oldincludedir=DIR C header files for non-gcc in DIR [/usr/include]
++ --infodir=DIR info documentation in DIR [PREFIX/info]
++ --mandir=DIR man documentation in DIR [PREFIX/man]
++ --srcdir=DIR find the sources in DIR [configure dir or ..]
++ --program-prefix=PREFIX prepend PREFIX to installed program names
++ --program-suffix=SUFFIX append SUFFIX to installed program names
++ --program-transform-name=PROGRAM
++ run sed PROGRAM on installed program names
++EOF
++ cat << EOF
++Host type:
++ --build=BUILD configure for building on BUILD [BUILD=HOST]
++ --host=HOST configure for HOST [guessed]
++ --target=TARGET configure for TARGET [TARGET=HOST]
++Features and packages:
++ --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
++ --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
++ --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
++ --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
++ --x-includes=DIR X include files are in DIR
++ --x-libraries=DIR X library files are in DIR
++EOF
++ if test -n "$ac_help"; then
++ echo "--enable and --with options recognized:$ac_help"
++ fi
++ exit 0 ;;
+
+ -host | --host | --hos | --ho)
+- ac_prev=host_alias ;;
++ ac_prev=host ;;
+ -host=* | --host=* | --hos=* | --ho=*)
+- host_alias=$ac_optarg ;;
++ host="$ac_optarg" ;;
+
+ -includedir | --includedir | --includedi | --included | --include \
+ | --includ | --inclu | --incl | --inc)
+ ac_prev=includedir ;;
+ -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
+ | --includ=* | --inclu=* | --incl=* | --inc=*)
+- includedir=$ac_optarg ;;
++ includedir="$ac_optarg" ;;
+
+ -infodir | --infodir | --infodi | --infod | --info | --inf)
+ ac_prev=infodir ;;
+ -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
+- infodir=$ac_optarg ;;
++ infodir="$ac_optarg" ;;
+
+ -libdir | --libdir | --libdi | --libd)
+ ac_prev=libdir ;;
+ -libdir=* | --libdir=* | --libdi=* | --libd=*)
+- libdir=$ac_optarg ;;
++ libdir="$ac_optarg" ;;
+
+ -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
+ | --libexe | --libex | --libe)
+ ac_prev=libexecdir ;;
+ -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
+ | --libexe=* | --libex=* | --libe=*)
+- libexecdir=$ac_optarg ;;
++ libexecdir="$ac_optarg" ;;
+
+ -localstatedir | --localstatedir | --localstatedi | --localstated \
+ | --localstate | --localstat | --localsta | --localst \
+@@ -469,19 +234,19 @@
+ -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+ | --localstate=* | --localstat=* | --localsta=* | --localst=* \
+ | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
+- localstatedir=$ac_optarg ;;
++ localstatedir="$ac_optarg" ;;
+
+ -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+ ac_prev=mandir ;;
+ -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
+- mandir=$ac_optarg ;;
++ mandir="$ac_optarg" ;;
+
+ -nfp | --nfp | --nf)
+ # Obsolete; use --without-fp.
+ with_fp=no ;;
+
+ -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+- | --no-cr | --no-c | -n)
++ | --no-cr | --no-c)
+ no_create=yes ;;
+
+ -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+@@ -495,26 +260,26 @@
+ -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
+ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
+ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
+- oldincludedir=$ac_optarg ;;
++ oldincludedir="$ac_optarg" ;;
+
+ -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+ ac_prev=prefix ;;
+ -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+- prefix=$ac_optarg ;;
++ prefix="$ac_optarg" ;;
+
+ -program-prefix | --program-prefix | --program-prefi | --program-pref \
+ | --program-pre | --program-pr | --program-p)
+ ac_prev=program_prefix ;;
+ -program-prefix=* | --program-prefix=* | --program-prefi=* \
+ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
+- program_prefix=$ac_optarg ;;
++ program_prefix="$ac_optarg" ;;
+
+ -program-suffix | --program-suffix | --program-suffi | --program-suff \
+ | --program-suf | --program-su | --program-s)
+ ac_prev=program_suffix ;;
+ -program-suffix=* | --program-suffix=* | --program-suffi=* \
+ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
+- program_suffix=$ac_optarg ;;
++ program_suffix="$ac_optarg" ;;
+
+ -program-transform-name | --program-transform-name \
+ | --program-transform-nam | --program-transform-na \
+@@ -531,7 +296,7 @@
+ | --program-transfo=* | --program-transf=* \
+ | --program-trans=* | --program-tran=* \
+ | --progr-tra=* | --program-tr=* | --program-t=*)
+- program_transform_name=$ac_optarg ;;
++ program_transform_name="$ac_optarg" ;;
+
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil)
+@@ -541,7 +306,7 @@
+ ac_prev=sbindir ;;
+ -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+ | --sbi=* | --sb=*)
+- sbindir=$ac_optarg ;;
++ sbindir="$ac_optarg" ;;
+
+ -sharedstatedir | --sharedstatedir | --sharedstatedi \
+ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
+@@ -552,57 +317,58 @@
+ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
+ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
+ | --sha=* | --sh=*)
+- sharedstatedir=$ac_optarg ;;
++ sharedstatedir="$ac_optarg" ;;
+
+ -site | --site | --sit)
+ ac_prev=site ;;
+ -site=* | --site=* | --sit=*)
+- site=$ac_optarg ;;
++ site="$ac_optarg" ;;
+
+ -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+ ac_prev=srcdir ;;
+ -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+- srcdir=$ac_optarg ;;
++ srcdir="$ac_optarg" ;;
+
+ -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
+ | --syscon | --sysco | --sysc | --sys | --sy)
+ ac_prev=sysconfdir ;;
+ -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
+ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
+- sysconfdir=$ac_optarg ;;
++ sysconfdir="$ac_optarg" ;;
+
+ -target | --target | --targe | --targ | --tar | --ta | --t)
+- ac_prev=target_alias ;;
++ ac_prev=target ;;
+ -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
+- target_alias=$ac_optarg ;;
++ target="$ac_optarg" ;;
+
+ -v | -verbose | --verbose | --verbos | --verbo | --verb)
+ verbose=yes ;;
+
+- -version | --version | --versio | --versi | --vers | -V)
+- ac_init_version=: ;;
++ -version | --version | --versio | --versi | --vers)
++ echo "configure generated by autoconf version 2.13"
++ exit 0 ;;
+
+ -with-* | --with-*)
+- ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
++ ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'`
+ # Reject names that are not valid shell variable names.
+- expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+- { echo "$as_me: error: invalid package name: $ac_package" >&2
+- { (exit 1); exit 1; }; }
++ if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then
++ { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
++ fi
+ ac_package=`echo $ac_package| sed 's/-/_/g'`
+- case $ac_option in
+- *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
++ case "$ac_option" in
++ *=*) ;;
+ *) ac_optarg=yes ;;
+ esac
+- eval "with_$ac_package='$ac_optarg'" ;;
++ eval "with_${ac_package}='$ac_optarg'" ;;
+
+ -without-* | --without-*)
+- ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'`
++ ac_package=`echo $ac_option|sed -e 's/-*without-//'`
+ # Reject names that are not valid shell variable names.
+- expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+- { echo "$as_me: error: invalid package name: $ac_package" >&2
+- { (exit 1); exit 1; }; }
+- ac_package=`echo $ac_package | sed 's/-/_/g'`
+- eval "with_$ac_package=no" ;;
++ if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then
++ { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
++ fi
++ ac_package=`echo $ac_package| sed 's/-/_/g'`
++ eval "with_${ac_package}=no" ;;
+
+ --x)
+ # Obsolete; use --with-x.
+@@ -613,110 +379,99 @@
+ ac_prev=x_includes ;;
+ -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
+ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
+- x_includes=$ac_optarg ;;
++ x_includes="$ac_optarg" ;;
+
+ -x-libraries | --x-libraries | --x-librarie | --x-librari \
+ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
+ ac_prev=x_libraries ;;
+ -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
+ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
+- x_libraries=$ac_optarg ;;
++ x_libraries="$ac_optarg" ;;
+
+- -*) { echo "$as_me: error: unrecognized option: $ac_option
+-Try \`$0 --help' for more information." >&2
+- { (exit 1); exit 1; }; }
++ -*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; }
+ ;;
+
+- *=*)
+- ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
+- # Reject names that are not valid shell variable names.
+- expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null &&
+- { echo "$as_me: error: invalid variable name: $ac_envvar" >&2
+- { (exit 1); exit 1; }; }
+- ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`
+- eval "$ac_envvar='$ac_optarg'"
+- export $ac_envvar ;;
+-
+ *)
+- # FIXME: should be removed in autoconf 3.0.
+- echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+- expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+- echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+- : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
++ if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then
++ echo "configure: warning: $ac_option: invalid host type" 1>&2
++ fi
++ if test "x$nonopt" != xNONE; then
++ { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; }
++ fi
++ nonopt="$ac_option"
+ ;;
+
+ esac
+ done
+
+ if test -n "$ac_prev"; then
+- ac_option=--`echo $ac_prev | sed 's/_/-/g'`
+- { echo "$as_me: error: missing argument to $ac_option" >&2
+- { (exit 1); exit 1; }; }
++ { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; }
+ fi
+
+-# Be sure to have absolute paths.
+-for ac_var in exec_prefix prefix
+-do
+- eval ac_val=$`echo $ac_var`
+- case $ac_val in
+- [\\/$]* | ?:[\\/]* | NONE | '' ) ;;
+- *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
+- { (exit 1); exit 1; }; };;
+- esac
+-done
++trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
+
+-# Be sure to have absolute paths.
+-for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \
+- localstatedir libdir includedir oldincludedir infodir mandir
++# File descriptor usage:
++# 0 standard input
++# 1 file creation
++# 2 errors and warnings
++# 3 some systems may open it to /dev/tty
++# 4 used on the Kubota Titan
++# 6 checking for... messages and results
++# 5 compiler messages saved in config.log
++if test "$silent" = yes; then
++ exec 6>/dev/null
++else
++ exec 6>&1
++fi
++exec 5>./config.log
++
++echo "\
++This file contains any messages produced by compilers while
++running configure, to aid debugging if configure makes a mistake.
++" 1>&5
++
++# Strip out --no-create and --no-recursion so they do not pile up.
++# Also quote any args containing shell metacharacters.
++ac_configure_args=
++for ac_arg
+ do
+- eval ac_val=$`echo $ac_var`
+- case $ac_val in
+- [\\/$]* | ?:[\\/]* ) ;;
+- *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
+- { (exit 1); exit 1; }; };;
++ case "$ac_arg" in
++ -no-create | --no-create | --no-creat | --no-crea | --no-cre \
++ | --no-cr | --no-c) ;;
++ -no-recursion | --no-recursion | --no-recursio | --no-recursi \
++ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;;
++ *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*)
++ ac_configure_args="$ac_configure_args '$ac_arg'" ;;
++ *) ac_configure_args="$ac_configure_args $ac_arg" ;;
+ esac
+ done
+
+-# There might be people who depend on the old broken behavior: `$host'
+-# used to hold the argument of --host etc.
+-# FIXME: To remove some day.
+-build=$build_alias
+-host=$host_alias
+-target=$target_alias
++# NLS nuisances.
++# Only set these to C if already set. These must not be set unconditionally
++# because not all systems understand e.g. LANG=C (notably SCO).
++# Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'!
++# Non-C LC_CTYPE values break the ctype check.
++if test "${LANG+set}" = set; then LANG=C; export LANG; fi
++if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi
++if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi
++if test "${LC_CTYPE+set}" = set; then LC_CTYPE=C; export LC_CTYPE; fi
+
+-# FIXME: To remove some day.
+-if test "x$host_alias" != x; then
+- if test "x$build_alias" = x; then
+- cross_compiling=maybe
+- echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
+- If a cross compiler is detected then cross compile mode will be used." >&2
+- elif test "x$build_alias" != "x$host_alias"; then
+- cross_compiling=yes
+- fi
+-fi
++# confdefs.h avoids OS command line length limits that DEFS can exceed.
++rm -rf conftest* confdefs.h
++# AIX cpp loses on an empty file, so make sure it contains at least a newline.
++echo > confdefs.h
+
+-ac_tool_prefix=
+-test -n "$host_alias" && ac_tool_prefix=$host_alias-
++# A filename unique to this package, relative to the directory that
++# configure is in, which we can look for to find out if srcdir is correct.
++ac_unique_file=include/flite.h
+
+-test "$silent" = yes && exec 6>/dev/null
+-
+-
+ # Find the source files, if location was not specified.
+ if test -z "$srcdir"; then
+ ac_srcdir_defaulted=yes
+ # Try the directory containing this script, then its parent.
+- ac_confdir=`(dirname "$0") 2>/dev/null ||
+-$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+- X"$0" : 'X\(//\)[^/]' \| \
+- X"$0" : 'X\(//\)$' \| \
+- X"$0" : 'X\(/\)' \| \
+- . : '\(.\)' 2>/dev/null ||
+-echo X"$0" |
+- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+- /^X\(\/\/\)$/{ s//\1/; q; }
+- /^X\(\/\).*/{ s//\1/; q; }
+- s/.*/./; q'`
++ ac_prog=$0
++ ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'`
++ test "x$ac_confdir" = "x$ac_prog" && ac_confdir=.
+ srcdir=$ac_confdir
+ if test ! -r $srcdir/$ac_unique_file; then
+ srcdir=..
+@@ -726,441 +481,13 @@
+ fi
+ if test ! -r $srcdir/$ac_unique_file; then
+ if test "$ac_srcdir_defaulted" = yes; then
+- { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2
+- { (exit 1); exit 1; }; }
++ { echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; }
+ else
+- { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
+- { (exit 1); exit 1; }; }
++ { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; }
+ fi
+ fi
+-(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null ||
+- { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2
+- { (exit 1); exit 1; }; }
+-srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'`
+-ac_env_build_alias_set=${build_alias+set}
+-ac_env_build_alias_value=$build_alias
+-ac_cv_env_build_alias_set=${build_alias+set}
+-ac_cv_env_build_alias_value=$build_alias
+-ac_env_host_alias_set=${host_alias+set}
+-ac_env_host_alias_value=$host_alias
+-ac_cv_env_host_alias_set=${host_alias+set}
+-ac_cv_env_host_alias_value=$host_alias
+-ac_env_target_alias_set=${target_alias+set}
+-ac_env_target_alias_value=$target_alias
+-ac_cv_env_target_alias_set=${target_alias+set}
+-ac_cv_env_target_alias_value=$target_alias
+-ac_env_CC_set=${CC+set}
+-ac_env_CC_value=$CC
+-ac_cv_env_CC_set=${CC+set}
+-ac_cv_env_CC_value=$CC
+-ac_env_CFLAGS_set=${CFLAGS+set}
+-ac_env_CFLAGS_value=$CFLAGS
+-ac_cv_env_CFLAGS_set=${CFLAGS+set}
+-ac_cv_env_CFLAGS_value=$CFLAGS
+-ac_env_LDFLAGS_set=${LDFLAGS+set}
+-ac_env_LDFLAGS_value=$LDFLAGS
+-ac_cv_env_LDFLAGS_set=${LDFLAGS+set}
+-ac_cv_env_LDFLAGS_value=$LDFLAGS
+-ac_env_CPPFLAGS_set=${CPPFLAGS+set}
+-ac_env_CPPFLAGS_value=$CPPFLAGS
+-ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set}
+-ac_cv_env_CPPFLAGS_value=$CPPFLAGS
+-ac_env_CPP_set=${CPP+set}
+-ac_env_CPP_value=$CPP
+-ac_cv_env_CPP_set=${CPP+set}
+-ac_cv_env_CPP_value=$CPP
++srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'`
+
+-#
+-# Report the --help message.
+-#
+-if test "$ac_init_help" = "long"; then
+- # Omit some internal or obsolete options to make the list less imposing.
+- # This message is too long to be a string in the A/UX 3.1 sh.
+- cat <<_ACEOF
+-\`configure' configures this package to adapt to many kinds of systems.
+-
+-Usage: $0 [OPTION]... [VAR=VALUE]...
+-
+-To assign environment variables (e.g., CC, CFLAGS...), specify them as
+-VAR=VALUE. See below for descriptions of some of the useful variables.
+-
+-Defaults for the options are specified in brackets.
+-
+-Configuration:
+- -h, --help display this help and exit
+- --help=short display options specific to this package
+- --help=recursive display the short help of all the included packages
+- -V, --version display version information and exit
+- -q, --quiet, --silent do not print \`checking...' messages
+- --cache-file=FILE cache test results in FILE [disabled]
+- -C, --config-cache alias for \`--cache-file=config.cache'
+- -n, --no-create do not create output files
+- --srcdir=DIR find the sources in DIR [configure dir or \`..']
+-
+-_ACEOF
+-
+- cat <<_ACEOF
+-Installation directories:
+- --prefix=PREFIX install architecture-independent files in PREFIX
+- [$ac_default_prefix]
+- --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
+- [PREFIX]
+-
+-By default, \`make install' will install all the files in
+-\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify
+-an installation prefix other than \`$ac_default_prefix' using \`--prefix',
+-for instance \`--prefix=\$HOME'.
+-
+-For better control, use the options below.
+-
+-Fine tuning of the installation directories:
+- --bindir=DIR user executables [EPREFIX/bin]
+- --sbindir=DIR system admin executables [EPREFIX/sbin]
+- --libexecdir=DIR program executables [EPREFIX/libexec]
+- --datadir=DIR read-only architecture-independent data [PREFIX/share]
+- --sysconfdir=DIR read-only single-machine data [PREFIX/etc]
+- --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
+- --localstatedir=DIR modifiable single-machine data [PREFIX/var]
+- --libdir=DIR object code libraries [EPREFIX/lib]
+- --includedir=DIR C header files [PREFIX/include]
+- --oldincludedir=DIR C header files for non-gcc [/usr/include]
+- --infodir=DIR info documentation [PREFIX/info]
+- --mandir=DIR man documentation [PREFIX/man]
+-_ACEOF
+-
+- cat <<\_ACEOF
+-
+-System types:
+- --build=BUILD configure for building on BUILD [guessed]
+- --host=HOST cross-compile to build programs to run on HOST [BUILD]
+- --target=TARGET configure for building compilers for TARGET [HOST]
+-_ACEOF
+-fi
+-
+-if test -n "$ac_init_help"; then
+-
+- cat <<\_ACEOF
+-
+-Optional Features:
+- --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
+- --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
+- --disable-shared without shared library support
+- --disable-sockets without socket support
+-
+-Optional Packages:
+- --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
+- --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
+- --with-audio with specific audio support (none linux freebsd etc)
+- --with-lang with language
+- --with-vox with vox
+- --with-lex with lexicon
+-
+-Some influential environment variables:
+- CC C compiler command
+- CFLAGS C compiler flags
+- LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a
+- nonstandard directory <lib dir>
+- CPPFLAGS C/C++ preprocessor flags, e.g. -I<include dir> if you have
+- headers in a nonstandard directory <include dir>
+- CPP C preprocessor
+-
+-Use these variables to override the choices made by `configure' or to help
+-it to find libraries and programs with nonstandard names/locations.
+-
+-_ACEOF
+-fi
+-
+-if test "$ac_init_help" = "recursive"; then
+- # If there are subdirs, report their specific --help.
+- ac_popdir=`pwd`
+- for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
+- test -d $ac_dir || continue
+- ac_builddir=.
+-
+-if test "$ac_dir" != .; then
+- ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+- # A "../" for each directory in $ac_dir_suffix.
+- ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
+-else
+- ac_dir_suffix= ac_top_builddir=
+-fi
+-
+-case $srcdir in
+- .) # No --srcdir option. We are building in place.
+- ac_srcdir=.
+- if test -z "$ac_top_builddir"; then
+- ac_top_srcdir=.
+- else
+- ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
+- fi ;;
+- [\\/]* | ?:[\\/]* ) # Absolute path.
+- ac_srcdir=$srcdir$ac_dir_suffix;
+- ac_top_srcdir=$srcdir ;;
+- *) # Relative path.
+- ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
+- ac_top_srcdir=$ac_top_builddir$srcdir ;;
+-esac
+-# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be
+-# absolute.
+-ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd`
+-ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd`
+-ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd`
+-ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd`
+-
+- cd $ac_dir
+- # Check for guested configure; otherwise get Cygnus style configure.
+- if test -f $ac_srcdir/configure.gnu; then
+- echo
+- $SHELL $ac_srcdir/configure.gnu --help=recursive
+- elif test -f $ac_srcdir/configure; then
+- echo
+- $SHELL $ac_srcdir/configure --help=recursive
+- elif test -f $ac_srcdir/configure.ac ||
+- test -f $ac_srcdir/configure.in; then
+- echo
+- $ac_configure --help
+- else
+- echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+- fi
+- cd $ac_popdir
+- done
+-fi
+-
+-test -n "$ac_init_help" && exit 0
+-if $ac_init_version; then
+- cat <<\_ACEOF
+-
+-Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002
+-Free Software Foundation, Inc.
+-This configure script is free software; the Free Software Foundation
+-gives unlimited permission to copy, distribute and modify it.
+-_ACEOF
+- exit 0
+-fi
+-exec 5>config.log
+-cat >&5 <<_ACEOF
+-This file contains any messages produced by compilers while
+-running configure, to aid debugging if configure makes a mistake.
+-
+-It was created by $as_me, which was
+-generated by GNU Autoconf 2.57. Invocation command line was
+-
+- $ $0 $@
+-
+-_ACEOF
+-{
+-cat <<_ASUNAME
+-## --------- ##
+-## Platform. ##
+-## --------- ##
+-
+-hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
+-uname -m = `(uname -m) 2>/dev/null || echo unknown`
+-uname -r = `(uname -r) 2>/dev/null || echo unknown`
+-uname -s = `(uname -s) 2>/dev/null || echo unknown`
+-uname -v = `(uname -v) 2>/dev/null || echo unknown`
+-
+-/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
+-/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown`
+-
+-/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown`
+-/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown`
+-/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
+-hostinfo = `(hostinfo) 2>/dev/null || echo unknown`
+-/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown`
+-/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown`
+-/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown`
+-
+-_ASUNAME
+-
+-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+-for as_dir in $PATH
+-do
+- IFS=$as_save_IFS
+- test -z "$as_dir" && as_dir=.
+- echo "PATH: $as_dir"
+-done
+-
+-} >&5
+-
+-cat >&5 <<_ACEOF
+-
+-
+-## ----------- ##
+-## Core tests. ##
+-## ----------- ##
+-
+-_ACEOF
+-
+-
+-# Keep a trace of the command line.
+-# Strip out --no-create and --no-recursion so they do not pile up.
+-# Strip out --silent because we don't want to record it for future runs.
+-# Also quote any args containing shell meta-characters.
+-# Make two passes to allow for proper duplicate-argument suppression.
+-ac_configure_args=
+-ac_configure_args0=
+-ac_configure_args1=
+-ac_sep=
+-ac_must_keep_next=false
+-for ac_pass in 1 2
+-do
+- for ac_arg
+- do
+- case $ac_arg in
+- -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
+- -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+- | -silent | --silent | --silen | --sile | --sil)
+- continue ;;
+- *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
+- ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+- esac
+- case $ac_pass in
+- 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;;
+- 2)
+- ac_configure_args1="$ac_configure_args1 '$ac_arg'"
+- if test $ac_must_keep_next = true; then
+- ac_must_keep_next=false # Got value, back to normal.
+- else
+- case $ac_arg in
+- *=* | --config-cache | -C | -disable-* | --disable-* \
+- | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
+- | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
+- | -with-* | --with-* | -without-* | --without-* | --x)
+- case "$ac_configure_args0 " in
+- "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
+- esac
+- ;;
+- -* ) ac_must_keep_next=true ;;
+- esac
+- fi
+- ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'"
+- # Get rid of the leading space.
+- ac_sep=" "
+- ;;
+- esac
+- done
+-done
+-$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; }
+-$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; }
+-
+-# When interrupted or exit'd, cleanup temporary files, and complete
+-# config.log. We remove comments because anyway the quotes in there
+-# would cause problems or look ugly.
+-# WARNING: Be sure not to use single quotes in there, as some shells,
+-# such as our DU 5.0 friend, will then `close' the trap.
+-trap 'exit_status=$?
+- # Save into config.log some information that might help in debugging.
+- {
+- echo
+-
+- cat <<\_ASBOX
+-## ---------------- ##
+-## Cache variables. ##
+-## ---------------- ##
+-_ASBOX
+- echo
+- # The following way of writing the cache mishandles newlines in values,
+-{
+- (set) 2>&1 |
+- case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in
+- *ac_space=\ *)
+- sed -n \
+- "s/'"'"'/'"'"'\\\\'"'"''"'"'/g;
+- s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p"
+- ;;
+- *)
+- sed -n \
+- "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
+- ;;
+- esac;
+-}
+- echo
+-
+- cat <<\_ASBOX
+-## ----------------- ##
+-## Output variables. ##
+-## ----------------- ##
+-_ASBOX
+- echo
+- for ac_var in $ac_subst_vars
+- do
+- eval ac_val=$`echo $ac_var`
+- echo "$ac_var='"'"'$ac_val'"'"'"
+- done | sort
+- echo
+-
+- if test -n "$ac_subst_files"; then
+- cat <<\_ASBOX
+-## ------------- ##
+-## Output files. ##
+-## ------------- ##
+-_ASBOX
+- echo
+- for ac_var in $ac_subst_files
+- do
+- eval ac_val=$`echo $ac_var`
+- echo "$ac_var='"'"'$ac_val'"'"'"
+- done | sort
+- echo
+- fi
+-
+- if test -s confdefs.h; then
+- cat <<\_ASBOX
+-## ----------- ##
+-## confdefs.h. ##
+-## ----------- ##
+-_ASBOX
+- echo
+- sed "/^$/d" confdefs.h | sort
+- echo
+- fi
+- test "$ac_signal" != 0 &&
+- echo "$as_me: caught signal $ac_signal"
+- echo "$as_me: exit $exit_status"
+- } >&5
+- rm -f core core.* *.core &&
+- rm -rf conftest* confdefs* conf$$* $ac_clean_files &&
+- exit $exit_status
+- ' 0
+-for ac_signal in 1 2 13 15; do
+- trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal
+-done
+-ac_signal=0
+-
+-# confdefs.h avoids OS command line length limits that DEFS can exceed.
+-rm -rf conftest* confdefs.h
+-# AIX cpp loses on an empty file, so make sure it contains at least a newline.
+-echo >confdefs.h
+-
+-# Predefined preprocessor variables.
+-
+-cat >>confdefs.h <<_ACEOF
+-#define PACKAGE_NAME "$PACKAGE_NAME"
+-_ACEOF
+-
+-
+-cat >>confdefs.h <<_ACEOF
+-#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
+-_ACEOF
+-
+-
+-cat >>confdefs.h <<_ACEOF
+-#define PACKAGE_VERSION "$PACKAGE_VERSION"
+-_ACEOF
+-
+-
+-cat >>confdefs.h <<_ACEOF
+-#define PACKAGE_STRING "$PACKAGE_STRING"
+-_ACEOF
+-
+-
+-cat >>confdefs.h <<_ACEOF
+-#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
+-_ACEOF
+-
+-
+-# Let the site file select an alternate cache file if it wants to.
+ # Prefer explicitly selected file to automatically selected ones.
+ if test -z "$CONFIG_SITE"; then
+ if test "x$prefix" != xNONE; then
+@@ -1171,106 +498,42 @@
+ fi
+ for ac_site_file in $CONFIG_SITE; do
+ if test -r "$ac_site_file"; then
+- { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5
+-echo "$as_me: loading site script $ac_site_file" >&6;}
+- sed 's/^/| /' "$ac_site_file" >&5
++ echo "loading site script $ac_site_file"
+ . "$ac_site_file"
+ fi
+ done
+
+ if test -r "$cache_file"; then
+- # Some versions of bash will fail to source /dev/null (special
+- # files actually), so we avoid doing that.
+- if test -f "$cache_file"; then
+- { echo "$as_me:$LINENO: loading cache $cache_file" >&5
+-echo "$as_me: loading cache $cache_file" >&6;}
+- case $cache_file in
+- [\\/]* | ?:[\\/]* ) . $cache_file;;
+- *) . ./$cache_file;;
+- esac
+- fi
++ echo "loading cache $cache_file"
++ . $cache_file
+ else
+- { echo "$as_me:$LINENO: creating cache $cache_file" >&5
+-echo "$as_me: creating cache $cache_file" >&6;}
+- >$cache_file
++ echo "creating cache $cache_file"
++ > $cache_file
+ fi
+
+-# Check that the precious variables saved in the cache have kept the same
+-# value.
+-ac_cache_corrupted=false
+-for ac_var in `(set) 2>&1 |
+- sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do
+- eval ac_old_set=\$ac_cv_env_${ac_var}_set
+- eval ac_new_set=\$ac_env_${ac_var}_set
+- eval ac_old_val="\$ac_cv_env_${ac_var}_value"
+- eval ac_new_val="\$ac_env_${ac_var}_value"
+- case $ac_old_set,$ac_new_set in
+- set,)
+- { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+-echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+- ac_cache_corrupted=: ;;
+- ,set)
+- { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5
+-echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+- ac_cache_corrupted=: ;;
+- ,);;
+- *)
+- if test "x$ac_old_val" != "x$ac_new_val"; then
+- { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5
+-echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+- { echo "$as_me:$LINENO: former value: $ac_old_val" >&5
+-echo "$as_me: former value: $ac_old_val" >&2;}
+- { echo "$as_me:$LINENO: current value: $ac_new_val" >&5
+-echo "$as_me: current value: $ac_new_val" >&2;}
+- ac_cache_corrupted=:
+- fi;;
+- esac
+- # Pass precious variables to config.status.
+- if test "$ac_new_set" = set; then
+- case $ac_new_val in
+- *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
+- ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+- *) ac_arg=$ac_var=$ac_new_val ;;
+- esac
+- case " $ac_configure_args " in
+- *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy.
+- *) ac_configure_args="$ac_configure_args '$ac_arg'" ;;
+- esac
+- fi
+-done
+-if $ac_cache_corrupted; then
+- { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5
+-echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+- { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
+-echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;}
+- { (exit 1); exit 1; }; }
+-fi
+-
+ ac_ext=c
++# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
+ ac_cpp='$CPP $CPPFLAGS'
+-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+-ac_compiler_gnu=$ac_cv_c_compiler_gnu
++ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
++ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
++cross_compiling=$ac_cv_prog_cc_cross
+
++ac_exeext=
++ac_objext=o
++if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then
++ # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu.
++ if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then
++ ac_n= ac_c='
++' ac_t=' '
++ else
++ ac_n=-n ac_c= ac_t=
++ fi
++else
++ ac_n= ac_c='\c' ac_t=
++fi
+
+
+
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+ ac_aux_dir=
+ for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
+ if test -f $ac_dir/install-sh; then
+@@ -1281,740 +544,312 @@
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/install.sh -c"
+ break
+- elif test -f $ac_dir/shtool; then
+- ac_aux_dir=$ac_dir
+- ac_install_sh="$ac_aux_dir/shtool install -c"
+- break
+ fi
+ done
+ if test -z "$ac_aux_dir"; then
+- { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5
+-echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;}
+- { (exit 1); exit 1; }; }
++ { echo "configure: error: can not find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." 1>&2; exit 1; }
+ fi
+-ac_config_guess="$SHELL $ac_aux_dir/config.guess"
+-ac_config_sub="$SHELL $ac_aux_dir/config.sub"
+-ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure.
++ac_config_guess=$ac_aux_dir/config.guess
++ac_config_sub=$ac_aux_dir/config.sub
++ac_configure=$ac_aux_dir/configure # This should be Cygnus configure.
+
+-# Make sure we can run config.sub.
+-$ac_config_sub sun4 >/dev/null 2>&1 ||
+- { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5
+-echo "$as_me: error: cannot run $ac_config_sub" >&2;}
+- { (exit 1); exit 1; }; }
+
+-echo "$as_me:$LINENO: checking build system type" >&5
+-echo $ECHO_N "checking build system type... $ECHO_C" >&6
+-if test "${ac_cv_build+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- ac_cv_build_alias=$build_alias
+-test -z "$ac_cv_build_alias" &&
+- ac_cv_build_alias=`$ac_config_guess`
+-test -z "$ac_cv_build_alias" &&
+- { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5
+-echo "$as_me: error: cannot guess build type; you must specify one" >&2;}
+- { (exit 1); exit 1; }; }
+-ac_cv_build=`$ac_config_sub $ac_cv_build_alias` ||
+- { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5
+-echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;}
+- { (exit 1); exit 1; }; }
++# Do some error checking and defaulting for the host and target type.
++# The inputs are:
++# configure --host=HOST --target=TARGET --build=BUILD NONOPT
++#
++# The rules are:
++# 1. You are not allowed to specify --host, --target, and nonopt at the
++# same time.
++# 2. Host defaults to nonopt.
++# 3. If nonopt is not specified, then host defaults to the current host,
++# as determined by config.guess.
++# 4. Target and build default to nonopt.
++# 5. If nonopt is not specified, then target and build default to host.
+
++# The aliases save the names the user supplied, while $host etc.
++# will get canonicalized.
++case $host---$target---$nonopt in
++NONE---*---* | *---NONE---* | *---*---NONE) ;;
++*) { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; } ;;
++esac
++
++
++# Make sure we can run config.sub.
++if ${CONFIG_SHELL-/bin/sh} $ac_config_sub sun4 >/dev/null 2>&1; then :
++else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; }
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_build" >&5
+-echo "${ECHO_T}$ac_cv_build" >&6
+-build=$ac_cv_build
+-build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+-build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+-build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+
++echo $ac_n "checking host system type""... $ac_c" 1>&6
++echo "configure:585: checking host system type" >&5
+
+-echo "$as_me:$LINENO: checking host system type" >&5
+-echo $ECHO_N "checking host system type... $ECHO_C" >&6
+-if test "${ac_cv_host+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- ac_cv_host_alias=$host_alias
+-test -z "$ac_cv_host_alias" &&
+- ac_cv_host_alias=$ac_cv_build_alias
+-ac_cv_host=`$ac_config_sub $ac_cv_host_alias` ||
+- { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5
+-echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;}
+- { (exit 1); exit 1; }; }
++host_alias=$host
++case "$host_alias" in
++NONE)
++ case $nonopt in
++ NONE)
++ if host_alias=`${CONFIG_SHELL-/bin/sh} $ac_config_guess`; then :
++ else { echo "configure: error: can not guess host type; you must specify one" 1>&2; exit 1; }
++ fi ;;
++ *) host_alias=$nonopt ;;
++ esac ;;
++esac
+
+-fi
+-echo "$as_me:$LINENO: result: $ac_cv_host" >&5
+-echo "${ECHO_T}$ac_cv_host" >&6
+-host=$ac_cv_host
+-host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+-host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+-host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
++host=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $host_alias`
++host_cpu=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
++host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
++host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
++echo "$ac_t""$host" 1>&6
+
++echo $ac_n "checking target system type""... $ac_c" 1>&6
++echo "configure:606: checking target system type" >&5
+
+-echo "$as_me:$LINENO: checking target system type" >&5
+-echo $ECHO_N "checking target system type... $ECHO_C" >&6
+-if test "${ac_cv_target+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- ac_cv_target_alias=$target_alias
+-test "x$ac_cv_target_alias" = "x" &&
+- ac_cv_target_alias=$ac_cv_host_alias
+-ac_cv_target=`$ac_config_sub $ac_cv_target_alias` ||
+- { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_target_alias failed" >&5
+-echo "$as_me: error: $ac_config_sub $ac_cv_target_alias failed" >&2;}
+- { (exit 1); exit 1; }; }
++target_alias=$target
++case "$target_alias" in
++NONE)
++ case $nonopt in
++ NONE) target_alias=$host_alias ;;
++ *) target_alias=$nonopt ;;
++ esac ;;
++esac
+
+-fi
+-echo "$as_me:$LINENO: result: $ac_cv_target" >&5
+-echo "${ECHO_T}$ac_cv_target" >&6
+-target=$ac_cv_target
+-target_cpu=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+-target_vendor=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+-target_os=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
++target=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $target_alias`
++target_cpu=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
++target_vendor=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
++target_os=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
++echo "$ac_t""$target" 1>&6
+
++echo $ac_n "checking build system type""... $ac_c" 1>&6
++echo "configure:624: checking build system type" >&5
+
+-# The aliases save the names the user supplied, while $host etc.
+-# will get canonicalized.
+-test -n "$target_alias" &&
++build_alias=$build
++case "$build_alias" in
++NONE)
++ case $nonopt in
++ NONE) build_alias=$host_alias ;;
++ *) build_alias=$nonopt ;;
++ esac ;;
++esac
++
++build=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $build_alias`
++build_cpu=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
++build_vendor=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
++build_os=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
++echo "$ac_t""$build" 1>&6
++
++test "$host_alias" != "$target_alias" &&
+ test "$program_prefix$program_suffix$program_transform_name" = \
+ NONENONEs,x,x, &&
+ program_prefix=${target_alias}-
+-ac_ext=c
+-ac_cpp='$CPP $CPPFLAGS'
+-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+-ac_compiler_gnu=$ac_cv_c_compiler_gnu
+-if test -n "$ac_tool_prefix"; then
+- # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+-set dummy ${ac_tool_prefix}gcc; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+-if test "${ac_cv_prog_CC+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- if test -n "$CC"; then
+- ac_cv_prog_CC="$CC" # Let the user override the test.
+-else
+-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+-for as_dir in $PATH
+-do
+- IFS=$as_save_IFS
+- test -z "$as_dir" && as_dir=.
+- for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+- ac_cv_prog_CC="${ac_tool_prefix}gcc"
+- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+- break 2
+- fi
+-done
+-done
+
+-fi
+-fi
+-CC=$ac_cv_prog_CC
+-if test -n "$CC"; then
+- echo "$as_me:$LINENO: result: $CC" >&5
+-echo "${ECHO_T}$CC" >&6
+-else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
+-fi
+-
+-fi
+-if test -z "$ac_cv_prog_CC"; then
+- ac_ct_CC=$CC
+- # Extract the first word of "gcc", so it can be a program name with args.
++# Extract the first word of "gcc", so it can be a program name with args.
+ set dummy gcc; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
++echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
++echo "configure:649: checking for $ac_word" >&5
++if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
++ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+- if test -n "$ac_ct_CC"; then
+- ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+-else
+-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+-for as_dir in $PATH
+-do
+- IFS=$as_save_IFS
+- test -z "$as_dir" && as_dir=.
+- for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+- ac_cv_prog_ac_ct_CC="gcc"
+- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+- break 2
+- fi
+-done
+-done
+-
+-fi
+-fi
+-ac_ct_CC=$ac_cv_prog_ac_ct_CC
+-if test -n "$ac_ct_CC"; then
+- echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+-echo "${ECHO_T}$ac_ct_CC" >&6
+-else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
+-fi
+-
+- CC=$ac_ct_CC
+-else
+- CC="$ac_cv_prog_CC"
+-fi
+-
+-if test -z "$CC"; then
+- if test -n "$ac_tool_prefix"; then
+- # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+-set dummy ${ac_tool_prefix}cc; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+-if test "${ac_cv_prog_CC+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+ else
+-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+-for as_dir in $PATH
+-do
+- IFS=$as_save_IFS
+- test -z "$as_dir" && as_dir=.
+- for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+- ac_cv_prog_CC="${ac_tool_prefix}cc"
+- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+- break 2
+- fi
+-done
+-done
+-
++ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
++ ac_dummy="$PATH"
++ for ac_dir in $ac_dummy; do
++ test -z "$ac_dir" && ac_dir=.
++ if test -f $ac_dir/$ac_word; then
++ ac_cv_prog_CC="gcc"
++ break
++ fi
++ done
++ IFS="$ac_save_ifs"
+ fi
+ fi
+-CC=$ac_cv_prog_CC
++CC="$ac_cv_prog_CC"
+ if test -n "$CC"; then
+- echo "$as_me:$LINENO: result: $CC" >&5
+-echo "${ECHO_T}$CC" >&6
++ echo "$ac_t""$CC" 1>&6
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ echo "$ac_t""no" 1>&6
+ fi
+
+-fi
+-if test -z "$ac_cv_prog_CC"; then
+- ac_ct_CC=$CC
+- # Extract the first word of "cc", so it can be a program name with args.
+-set dummy cc; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- if test -n "$ac_ct_CC"; then
+- ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+-else
+-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+-for as_dir in $PATH
+-do
+- IFS=$as_save_IFS
+- test -z "$as_dir" && as_dir=.
+- for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+- ac_cv_prog_ac_ct_CC="cc"
+- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+- break 2
+- fi
+-done
+-done
+-
+-fi
+-fi
+-ac_ct_CC=$ac_cv_prog_ac_ct_CC
+-if test -n "$ac_ct_CC"; then
+- echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+-echo "${ECHO_T}$ac_ct_CC" >&6
+-else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
+-fi
+-
+- CC=$ac_ct_CC
+-else
+- CC="$ac_cv_prog_CC"
+-fi
+-
+-fi
+ if test -z "$CC"; then
+ # Extract the first word of "cc", so it can be a program name with args.
+ set dummy cc; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+-if test "${ac_cv_prog_CC+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
++echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
++echo "configure:679: checking for $ac_word" >&5
++if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
++ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+ else
++ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
+ ac_prog_rejected=no
+-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+-for as_dir in $PATH
+-do
+- IFS=$as_save_IFS
+- test -z "$as_dir" && as_dir=.
+- for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+- if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+- ac_prog_rejected=yes
+- continue
+- fi
+- ac_cv_prog_CC="cc"
+- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+- break 2
+- fi
+-done
+-done
+-
++ ac_dummy="$PATH"
++ for ac_dir in $ac_dummy; do
++ test -z "$ac_dir" && ac_dir=.
++ if test -f $ac_dir/$ac_word; then
++ if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then
++ ac_prog_rejected=yes
++ continue
++ fi
++ ac_cv_prog_CC="cc"
++ break
++ fi
++ done
++ IFS="$ac_save_ifs"
+ if test $ac_prog_rejected = yes; then
+ # We found a bogon in the path, so make sure we never use it.
+ set dummy $ac_cv_prog_CC
+ shift
+- if test $# != 0; then
++ if test $# -gt 0; then
+ # We chose a different compiler from the bogus one.
+ # However, it has the same basename, so the bogon will be chosen
+ # first if we set CC to just the basename; use the full file name.
+ shift
+- ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
++ set dummy "$ac_dir/$ac_word" "$@"
++ shift
++ ac_cv_prog_CC="$@"
+ fi
+ fi
+ fi
+ fi
+-CC=$ac_cv_prog_CC
++CC="$ac_cv_prog_CC"
+ if test -n "$CC"; then
+- echo "$as_me:$LINENO: result: $CC" >&5
+-echo "${ECHO_T}$CC" >&6
++ echo "$ac_t""$CC" 1>&6
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ echo "$ac_t""no" 1>&6
+ fi
+
+-fi
+-if test -z "$CC"; then
+- if test -n "$ac_tool_prefix"; then
+- for ac_prog in cl
+- do
+- # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+-if test "${ac_cv_prog_CC+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
++ if test -z "$CC"; then
++ case "`uname -s`" in
++ *win32* | *WIN32*)
++ # Extract the first word of "cl", so it can be a program name with args.
++set dummy cl; ac_word=$2
++echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
++echo "configure:730: checking for $ac_word" >&5
++if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
++ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+ else
+-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+-for as_dir in $PATH
+-do
+- IFS=$as_save_IFS
+- test -z "$as_dir" && as_dir=.
+- for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+- ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+- break 2
+- fi
+-done
+-done
+-
++ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
++ ac_dummy="$PATH"
++ for ac_dir in $ac_dummy; do
++ test -z "$ac_dir" && ac_dir=.
++ if test -f $ac_dir/$ac_word; then
++ ac_cv_prog_CC="cl"
++ break
++ fi
++ done
++ IFS="$ac_save_ifs"
+ fi
+ fi
+-CC=$ac_cv_prog_CC
++CC="$ac_cv_prog_CC"
+ if test -n "$CC"; then
+- echo "$as_me:$LINENO: result: $CC" >&5
+-echo "${ECHO_T}$CC" >&6
++ echo "$ac_t""$CC" 1>&6
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ echo "$ac_t""no" 1>&6
+ fi
+-
+- test -n "$CC" && break
+- done
+-fi
+-if test -z "$CC"; then
+- ac_ct_CC=$CC
+- for ac_prog in cl
+-do
+- # Extract the first word of "$ac_prog", so it can be a program name with args.
+-set dummy $ac_prog; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- if test -n "$ac_ct_CC"; then
+- ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+-else
+-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+-for as_dir in $PATH
+-do
+- IFS=$as_save_IFS
+- test -z "$as_dir" && as_dir=.
+- for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+- ac_cv_prog_ac_ct_CC="$ac_prog"
+- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+- break 2
++ ;;
++ esac
+ fi
+-done
+-done
+-
++ test -z "$CC" && { echo "configure: error: no acceptable cc found in \$PATH" 1>&2; exit 1; }
+ fi
+-fi
+-ac_ct_CC=$ac_cv_prog_ac_ct_CC
+-if test -n "$ac_ct_CC"; then
+- echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+-echo "${ECHO_T}$ac_ct_CC" >&6
+-else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
+-fi
+
+- test -n "$ac_ct_CC" && break
+-done
++echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
++echo "configure:762: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+
+- CC=$ac_ct_CC
+-fi
++ac_ext=c
++# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
++ac_cpp='$CPP $CPPFLAGS'
++ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
++ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
++cross_compiling=$ac_cv_prog_cc_cross
+
+-fi
++cat > conftest.$ac_ext << EOF
+
++#line 773 "configure"
++#include "confdefs.h"
+
+-test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH
+-See \`config.log' for more details." >&5
+-echo "$as_me: error: no acceptable C compiler found in \$PATH
+-See \`config.log' for more details." >&2;}
+- { (exit 1); exit 1; }; }
+-
+-# Provide some information about the compiler.
+-echo "$as_me:$LINENO:" \
+- "checking for C compiler version" >&5
+-ac_compiler=`set X $ac_compile; echo $2`
+-{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
+- (eval $ac_compiler --version </dev/null >&5) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }
+-{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5
+- (eval $ac_compiler -v </dev/null >&5) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }
+-{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5
+- (eval $ac_compiler -V </dev/null >&5) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }
+-
+-cat >conftest.$ac_ext <<_ACEOF
+-#line $LINENO "configure"
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
+-
+-int
+-main ()
+-{
+-
+- ;
+- return 0;
+-}
+-_ACEOF
+-ac_clean_files_save=$ac_clean_files
+-ac_clean_files="$ac_clean_files a.out a.exe b.out"
+-# Try to create an executable without -o first, disregard a.out.
+-# It will help us diagnose broken compilers, and finding out an intuition
+-# of exeext.
+-echo "$as_me:$LINENO: checking for C compiler default output" >&5
+-echo $ECHO_N "checking for C compiler default output... $ECHO_C" >&6
+-ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+-if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5
+- (eval $ac_link_default) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; then
+- # Find the output, starting from the most likely. This scheme is
+-# not robust to junk in `.', hence go to wildcards (a.*) only as a last
+-# resort.
+-
+-# Be careful to initialize this variable, since it used to be cached.
+-# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile.
+-ac_cv_exeext=
+-# b.out is created by i960 compilers.
+-for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out
+-do
+- test -f "$ac_file" || continue
+- case $ac_file in
+- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj )
+- ;;
+- conftest.$ac_ext )
+- # This is the source file.
+- ;;
+- [ab].out )
+- # We found the default executable, but exeext='' is most
+- # certainly right.
+- break;;
+- *.* )
+- ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+- # FIXME: I believe we export ac_cv_exeext for Libtool,
+- # but it would be cool to find out if it's true. Does anybody
+- # maintain Libtool? --akim.
+- export ac_cv_exeext
+- break;;
+- * )
+- break;;
+- esac
+-done
+-else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+-{ { echo "$as_me:$LINENO: error: C compiler cannot create executables
+-See \`config.log' for more details." >&5
+-echo "$as_me: error: C compiler cannot create executables
+-See \`config.log' for more details." >&2;}
+- { (exit 77); exit 77; }; }
+-fi
+-
+-ac_exeext=$ac_cv_exeext
+-echo "$as_me:$LINENO: result: $ac_file" >&5
+-echo "${ECHO_T}$ac_file" >&6
+-
+-# Check the compiler produces executables we can run. If not, either
+-# the compiler is broken, or we cross compile.
+-echo "$as_me:$LINENO: checking whether the C compiler works" >&5
+-echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6
+-# FIXME: These cross compiler hacks should be removed for Autoconf 3.0
+-# If not cross compiling, check that we can run a simple program.
+-if test "$cross_compiling" != yes; then
+- if { ac_try='./$ac_file'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- cross_compiling=no
++main(){return(0);}
++EOF
++if { (eval echo configure:778: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
++ ac_cv_prog_cc_works=yes
++ # If we can't run a trivial program, we are probably using a cross compiler.
++ if (./conftest; exit) 2>/dev/null; then
++ ac_cv_prog_cc_cross=no
+ else
+- if test "$cross_compiling" = maybe; then
+- cross_compiling=yes
+- else
+- { { echo "$as_me:$LINENO: error: cannot run C compiled programs.
+-If you meant to cross compile, use \`--host'.
+-See \`config.log' for more details." >&5
+-echo "$as_me: error: cannot run C compiled programs.
+-If you meant to cross compile, use \`--host'.
+-See \`config.log' for more details." >&2;}
+- { (exit 1); exit 1; }; }
+- fi
++ ac_cv_prog_cc_cross=yes
+ fi
++else
++ echo "configure: failed program was:" >&5
++ cat conftest.$ac_ext >&5
++ ac_cv_prog_cc_works=no
+ fi
+-echo "$as_me:$LINENO: result: yes" >&5
+-echo "${ECHO_T}yes" >&6
++rm -fr conftest*
++ac_ext=c
++# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
++ac_cpp='$CPP $CPPFLAGS'
++ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
++ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
++cross_compiling=$ac_cv_prog_cc_cross
+
+-rm -f a.out a.exe conftest$ac_cv_exeext b.out
+-ac_clean_files=$ac_clean_files_save
+-# Check the compiler produces executables we can run. If not, either
+-# the compiler is broken, or we cross compile.
+-echo "$as_me:$LINENO: checking whether we are cross compiling" >&5
+-echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6
+-echo "$as_me:$LINENO: result: $cross_compiling" >&5
+-echo "${ECHO_T}$cross_compiling" >&6
+-
+-echo "$as_me:$LINENO: checking for suffix of executables" >&5
+-echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; then
+- # If both `conftest.exe' and `conftest' are `present' (well, observable)
+-# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will
+-# work properly (i.e., refer to `conftest.exe'), while it won't with
+-# `rm'.
+-for ac_file in conftest.exe conftest conftest.*; do
+- test -f "$ac_file" || continue
+- case $ac_file in
+- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;;
+- *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+- export ac_cv_exeext
+- break;;
+- * ) break;;
+- esac
+-done
+-else
+- { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link
+-See \`config.log' for more details." >&5
+-echo "$as_me: error: cannot compute suffix of executables: cannot compile and link
+-See \`config.log' for more details." >&2;}
+- { (exit 1); exit 1; }; }
++echo "$ac_t""$ac_cv_prog_cc_works" 1>&6
++if test $ac_cv_prog_cc_works = no; then
++ { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
+ fi
++echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
++echo "configure:804: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
++echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
++cross_compiling=$ac_cv_prog_cc_cross
+
+-rm -f conftest$ac_cv_exeext
+-echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5
+-echo "${ECHO_T}$ac_cv_exeext" >&6
+-
+-rm -f conftest.$ac_ext
+-EXEEXT=$ac_cv_exeext
+-ac_exeext=$EXEEXT
+-echo "$as_me:$LINENO: checking for suffix of object files" >&5
+-echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6
+-if test "${ac_cv_objext+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
++echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
++echo "configure:809: checking whether we are using GNU C" >&5
++if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
++ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+- cat >conftest.$ac_ext <<_ACEOF
+-#line $LINENO "configure"
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
+-
+-int
+-main ()
+-{
+-
+- ;
+- return 0;
+-}
+-_ACEOF
+-rm -f conftest.o conftest.obj
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; then
+- for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do
+- case $ac_file in
+- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;;
+- *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+- break;;
+- esac
+-done
++ cat > conftest.c <<EOF
++#ifdef __GNUC__
++ yes;
++#endif
++EOF
++if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:818: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
++ ac_cv_prog_gcc=yes
+ else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+-{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile
+-See \`config.log' for more details." >&5
+-echo "$as_me: error: cannot compute suffix of object files: cannot compile
+-See \`config.log' for more details." >&2;}
+- { (exit 1); exit 1; }; }
++ ac_cv_prog_gcc=no
+ fi
+-
+-rm -f conftest.$ac_cv_objext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_objext" >&5
+-echo "${ECHO_T}$ac_cv_objext" >&6
+-OBJEXT=$ac_cv_objext
+-ac_objext=$OBJEXT
+-echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5
+-echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6
+-if test "${ac_cv_c_compiler_gnu+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- cat >conftest.$ac_ext <<_ACEOF
+-#line $LINENO "configure"
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
+
+-int
+-main ()
+-{
+-#ifndef __GNUC__
+- choke me
+-#endif
++echo "$ac_t""$ac_cv_prog_gcc" 1>&6
+
+- ;
+- return 0;
+-}
+-_ACEOF
+-rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- ac_compiler_gnu=yes
++if test $ac_cv_prog_gcc = yes; then
++ GCC=yes
+ else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+-ac_compiler_gnu=no
++ GCC=
+ fi
+-rm -f conftest.$ac_objext conftest.$ac_ext
+-ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+-fi
+-echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5
+-echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6
+-GCC=`test $ac_compiler_gnu = yes && echo yes`
+-ac_test_CFLAGS=${CFLAGS+set}
+-ac_save_CFLAGS=$CFLAGS
+-CFLAGS="-g"
+-echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
+-echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6
+-if test "${ac_cv_prog_cc_g+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
++ac_test_CFLAGS="${CFLAGS+set}"
++ac_save_CFLAGS="$CFLAGS"
++CFLAGS=
++echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
++echo "configure:837: checking whether ${CC-cc} accepts -g" >&5
++if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
++ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+- cat >conftest.$ac_ext <<_ACEOF
+-#line $LINENO "configure"
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
+-
+-int
+-main ()
+-{
+-
+- ;
+- return 0;
+-}
+-_ACEOF
+-rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ echo 'void f(){}' > conftest.c
++if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then
+ ac_cv_prog_cc_g=yes
+ else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
++ ac_cv_prog_cc_g=no
++fi
++rm -f conftest*
+
+-ac_cv_prog_cc_g=no
+ fi
+-rm -f conftest.$ac_objext conftest.$ac_ext
+-fi
+-echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
+-echo "${ECHO_T}$ac_cv_prog_cc_g" >&6
++
++echo "$ac_t""$ac_cv_prog_cc_g" 1>&6
+ if test "$ac_test_CFLAGS" = set; then
+- CFLAGS=$ac_save_CFLAGS
++ CFLAGS="$ac_save_CFLAGS"
+ elif test $ac_cv_prog_cc_g = yes; then
+ if test "$GCC" = yes; then
+ CFLAGS="-g -O2"
+@@ -2028,304 +863,37 @@
+ CFLAGS=
+ fi
+ fi
+-echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5
+-echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6
+-if test "${ac_cv_prog_cc_stdc+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- ac_cv_prog_cc_stdc=no
+-ac_save_CC=$CC
+-cat >conftest.$ac_ext <<_ACEOF
+-#line $LINENO "configure"
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
+-#include <stdarg.h>
+-#include <stdio.h>
+-#include <sys/types.h>
+-#include <sys/stat.h>
+-/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
+-struct buf { int x; };
+-FILE * (*rcsopen) (struct buf *, struct stat *, int);
+-static char *e (p, i)
+- char **p;
+- int i;
+-{
+- return p[i];
+-}
+-static char *f (char * (*g) (char **, int), char **p, ...)
+-{
+- char *s;
+- va_list v;
+- va_start (v,p);
+- s = g (p, va_arg (v,int));
+- va_end (v);
+- return s;
+-}
+-int test (int i, double x);
+-struct s1 {int (*f) (int a);};
+-struct s2 {int (*f) (double a);};
+-int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+-int argc;
+-char **argv;
+-int
+-main ()
+-{
+-return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1];
+- ;
+- return 0;
+-}
+-_ACEOF
+-# Don't try gcc -ansi; that turns off useful extensions and
+-# breaks some systems' header files.
+-# AIX -qlanglvl=ansi
+-# Ultrix and OSF/1 -std1
+-# HP-UX 10.20 and later -Ae
+-# HP-UX older versions -Aa -D_HPUX_SOURCE
+-# SVR4 -Xc -D__EXTENSIONS__
+-for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+-do
+- CC="$ac_save_CC $ac_arg"
+- rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- ac_cv_prog_cc_stdc=$ac_arg
+-break
+-else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+
+-fi
+-rm -f conftest.$ac_objext
+-done
+-rm -f conftest.$ac_ext conftest.$ac_objext
+-CC=$ac_save_CC
+-
+-fi
+-
+-case "x$ac_cv_prog_cc_stdc" in
+- x|xno)
+- echo "$as_me:$LINENO: result: none needed" >&5
+-echo "${ECHO_T}none needed" >&6 ;;
+- *)
+- echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5
+-echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6
+- CC="$CC $ac_cv_prog_cc_stdc" ;;
+-esac
+-
+-# Some people use a C++ compiler to compile C. Since we use `exit',
+-# in C++ we need to declare it. In case someone uses the same compiler
+-# for both compiling C and C++ we need to have the C++ compiler decide
+-# the declaration of exit, since it's the most demanding environment.
+-cat >conftest.$ac_ext <<_ACEOF
+-#ifndef __cplusplus
+- choke me
+-#endif
+-_ACEOF
+-rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- for ac_declaration in \
+- ''\
+- '#include <stdlib.h>' \
+- 'extern "C" void std::exit (int) throw (); using std::exit;' \
+- 'extern "C" void std::exit (int); using std::exit;' \
+- 'extern "C" void exit (int) throw ();' \
+- 'extern "C" void exit (int);' \
+- 'void exit (int);'
+-do
+- cat >conftest.$ac_ext <<_ACEOF
+-#line $LINENO "configure"
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
+-#include <stdlib.h>
+-$ac_declaration
+-int
+-main ()
+-{
+-exit (42);
+- ;
+- return 0;
+-}
+-_ACEOF
+-rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- :
++# Extract the first word of "ranlib", so it can be a program name with args.
++set dummy ranlib; ac_word=$2
++echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
++echo "configure:871: checking for $ac_word" >&5
++if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
++ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+-continue
+-fi
+-rm -f conftest.$ac_objext conftest.$ac_ext
+- cat >conftest.$ac_ext <<_ACEOF
+-#line $LINENO "configure"
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
+-$ac_declaration
+-int
+-main ()
+-{
+-exit (42);
+- ;
+- return 0;
+-}
+-_ACEOF
+-rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- break
+-else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+-fi
+-rm -f conftest.$ac_objext conftest.$ac_ext
+-done
+-rm -f conftest*
+-if test -n "$ac_declaration"; then
+- echo '#ifdef __cplusplus' >>confdefs.h
+- echo $ac_declaration >>confdefs.h
+- echo '#endif' >>confdefs.h
+-fi
+-
+-else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+-fi
+-rm -f conftest.$ac_objext conftest.$ac_ext
+-ac_ext=c
+-ac_cpp='$CPP $CPPFLAGS'
+-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+-ac_compiler_gnu=$ac_cv_c_compiler_gnu
+-
+-if test -n "$ac_tool_prefix"; then
+- # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
+-set dummy ${ac_tool_prefix}ranlib; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+-if test "${ac_cv_prog_RANLIB+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+ if test -n "$RANLIB"; then
+ ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
+ else
+-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+-for as_dir in $PATH
+-do
+- IFS=$as_save_IFS
+- test -z "$as_dir" && as_dir=.
+- for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+- ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
+- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+- break 2
+- fi
+-done
+-done
+-
++ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
++ ac_dummy="$PATH"
++ for ac_dir in $ac_dummy; do
++ test -z "$ac_dir" && ac_dir=.
++ if test -f $ac_dir/$ac_word; then
++ ac_cv_prog_RANLIB="ranlib"
++ break
++ fi
++ done
++ IFS="$ac_save_ifs"
++ test -z "$ac_cv_prog_RANLIB" && ac_cv_prog_RANLIB=":"
+ fi
+ fi
+-RANLIB=$ac_cv_prog_RANLIB
++RANLIB="$ac_cv_prog_RANLIB"
+ if test -n "$RANLIB"; then
+- echo "$as_me:$LINENO: result: $RANLIB" >&5
+-echo "${ECHO_T}$RANLIB" >&6
++ echo "$ac_t""$RANLIB" 1>&6
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ echo "$ac_t""no" 1>&6
+ fi
+
+-fi
+-if test -z "$ac_cv_prog_RANLIB"; then
+- ac_ct_RANLIB=$RANLIB
+- # Extract the first word of "ranlib", so it can be a program name with args.
+-set dummy ranlib; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+-if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- if test -n "$ac_ct_RANLIB"; then
+- ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
+-else
+-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+-for as_dir in $PATH
+-do
+- IFS=$as_save_IFS
+- test -z "$as_dir" && as_dir=.
+- for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+- ac_cv_prog_ac_ct_RANLIB="ranlib"
+- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+- break 2
+- fi
+-done
+-done
+-
+- test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":"
+-fi
+-fi
+-ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
+-if test -n "$ac_ct_RANLIB"; then
+- echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
+-echo "${ECHO_T}$ac_ct_RANLIB" >&6
+-else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
+-fi
+-
+- RANLIB=$ac_ct_RANLIB
+-else
+- RANLIB="$ac_cv_prog_RANLIB"
+-fi
+-
+ # Find a good install program. We prefer a C program (faster),
+ # so one script is as good as another. But avoid the broken or
+ # incompatible versions:
+@@ -2333,306 +901,158 @@
+ # SunOS /usr/etc/install
+ # IRIX /sbin/install
+ # AIX /bin/install
+-# AmigaOS /C/install, which installs bootblocks on floppy discs
+ # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+ # AFS /usr/afsws/bin/install, which mishandles nonexistent args
+ # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+ # ./install, which can be erroneously created by make from ./install.sh.
+-echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
+-echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6
++echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
++echo "configure:910: checking for a BSD compatible install" >&5
+ if test -z "$INSTALL"; then
+-if test "${ac_cv_path_install+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
++if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
++ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+-for as_dir in $PATH
+-do
+- IFS=$as_save_IFS
+- test -z "$as_dir" && as_dir=.
+- # Account for people who put trailing slashes in PATH elements.
+-case $as_dir/ in
+- ./ | .// | /cC/* | \
+- /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
+- /usr/ucb/* ) ;;
+- *)
+- # OSF1 and SCO ODT 3.0 have their own names for install.
+- # Don't use installbsd from OSF since it installs stuff as root
+- # by default.
+- for ac_prog in ginstall scoinst install; do
+- for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
+- if test $ac_prog = install &&
+- grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+- # AIX install. It has an incompatible calling convention.
+- :
+- elif test $ac_prog = install &&
+- grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+- # program-specific install script used by HP pwplus--don't use.
+- :
+- else
+- ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+- break 3
+- fi
+- fi
++ IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS=":"
++ for ac_dir in $PATH; do
++ # Account for people who put trailing slashes in PATH elements.
++ case "$ac_dir/" in
++ /|./|.//|/etc/*|/usr/sbin/*|/usr/etc/*|/sbin/*|/usr/afsws/bin/*|/usr/ucb/*) ;;
++ *)
++ # OSF1 and SCO ODT 3.0 have their own names for install.
++ # Don't use installbsd from OSF since it installs stuff as root
++ # by default.
++ for ac_prog in ginstall scoinst install; do
++ if test -f $ac_dir/$ac_prog; then
++ if test $ac_prog = install &&
++ grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then
++ # AIX install. It has an incompatible calling convention.
++ :
++ else
++ ac_cv_path_install="$ac_dir/$ac_prog -c"
++ break 2
++ fi
++ fi
+ done
+- done
+- ;;
+-esac
+-done
++ ;;
++ esac
++ done
++ IFS="$ac_save_IFS"
+
+-
+ fi
+ if test "${ac_cv_path_install+set}" = set; then
+- INSTALL=$ac_cv_path_install
++ INSTALL="$ac_cv_path_install"
+ else
+ # As a last resort, use the slow shell script. We don't cache a
+ # path for INSTALL within a source directory, because that will
+ # break other packages using the cache if that directory is
+ # removed, or if the path is relative.
+- INSTALL=$ac_install_sh
++ INSTALL="$ac_install_sh"
+ fi
+ fi
+-echo "$as_me:$LINENO: result: $INSTALL" >&5
+-echo "${ECHO_T}$INSTALL" >&6
++echo "$ac_t""$INSTALL" 1>&6
+
+ # Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+ # It thinks the first close brace ends the variable substitution.
+ test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+-test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
++test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}'
+
+ test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+-if test -n "$ac_tool_prefix"; then
+- # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
++if test $host != $build; then
++ ac_tool_prefix=${host_alias}-
++else
++ ac_tool_prefix=
++fi
++
++# Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
+ set dummy ${ac_tool_prefix}ar; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+-if test "${ac_cv_prog_AR+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
++echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
++echo "configure:971: checking for $ac_word" >&5
++if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then
++ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+ if test -n "$AR"; then
+ ac_cv_prog_AR="$AR" # Let the user override the test.
+ else
+-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+-for as_dir in $PATH
+-do
+- IFS=$as_save_IFS
+- test -z "$as_dir" && as_dir=.
+- for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+- ac_cv_prog_AR="${ac_tool_prefix}ar"
+- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+- break 2
+- fi
+-done
+-done
+-
++ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
++ ac_dummy="$PATH"
++ for ac_dir in $ac_dummy; do
++ test -z "$ac_dir" && ac_dir=.
++ if test -f $ac_dir/$ac_word; then
++ ac_cv_prog_AR="${ac_tool_prefix}ar"
++ break
++ fi
++ done
++ IFS="$ac_save_ifs"
++ test -z "$ac_cv_prog_AR" && ac_cv_prog_AR="ar"
+ fi
+ fi
+-AR=$ac_cv_prog_AR
++AR="$ac_cv_prog_AR"
+ if test -n "$AR"; then
+- echo "$as_me:$LINENO: result: $AR" >&5
+-echo "${ECHO_T}$AR" >&6
++ echo "$ac_t""$AR" 1>&6
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ echo "$ac_t""no" 1>&6
+ fi
+
+-fi
+-if test -z "$ac_cv_prog_AR"; then
+- ac_ct_AR=$AR
+- # Extract the first word of "ar", so it can be a program name with args.
+-set dummy ar; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+-if test "${ac_cv_prog_ac_ct_AR+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- if test -n "$ac_ct_AR"; then
+- ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
+-else
+-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+-for as_dir in $PATH
+-do
+- IFS=$as_save_IFS
+- test -z "$as_dir" && as_dir=.
+- for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+- ac_cv_prog_ac_ct_AR="ar"
+- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+- break 2
+- fi
+-done
+-done
+
+-fi
+-fi
+-ac_ct_AR=$ac_cv_prog_ac_ct_AR
+-if test -n "$ac_ct_AR"; then
+- echo "$as_me:$LINENO: result: $ac_ct_AR" >&5
+-echo "${ECHO_T}$ac_ct_AR" >&6
+-else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
+-fi
+
+- AR=$ac_ct_AR
++echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6
++echo "configure:1001: checking whether byte ordering is bigendian" >&5
++if eval "test \"`echo '$''{'ac_cv_c_bigendian'+set}'`\" = set"; then
++ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+- AR="$ac_cv_prog_AR"
+-fi
+-
+-
+-echo "$as_me:$LINENO: checking whether byte ordering is bigendian" >&5
+-echo $ECHO_N "checking whether byte ordering is bigendian... $ECHO_C" >&6
+-if test "${ac_cv_c_bigendian+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- # See if sys/param.h defines the BYTE_ORDER macro.
+-cat >conftest.$ac_ext <<_ACEOF
+-#line $LINENO "configure"
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
++ ac_cv_c_bigendian=unknown
++# See if sys/param.h defines the BYTE_ORDER macro.
++cat > conftest.$ac_ext <<EOF
++#line 1008 "configure"
++#include "confdefs.h"
+ #include <sys/types.h>
+ #include <sys/param.h>
++int main() {
+
+-int
+-main ()
+-{
+ #if !BYTE_ORDER || !BIG_ENDIAN || !LITTLE_ENDIAN
+ bogus endian macros
+ #endif
+-
+- ;
+- return 0;
+-}
+-_ACEOF
+-rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++; return 0; }
++EOF
++if { (eval echo configure:1019: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
++ rm -rf conftest*
+ # It does; now see whether it defined to BIG_ENDIAN or not.
+-cat >conftest.$ac_ext <<_ACEOF
+-#line $LINENO "configure"
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
++cat > conftest.$ac_ext <<EOF
++#line 1023 "configure"
++#include "confdefs.h"
+ #include <sys/types.h>
+ #include <sys/param.h>
++int main() {
+
+-int
+-main ()
+-{
+ #if BYTE_ORDER != BIG_ENDIAN
+ not big endian
+ #endif
+-
+- ;
+- return 0;
+-}
+-_ACEOF
+-rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++; return 0; }
++EOF
++if { (eval echo configure:1034: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
++ rm -rf conftest*
+ ac_cv_c_bigendian=yes
+ else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+-ac_cv_c_bigendian=no
++ echo "configure: failed program was:" >&5
++ cat conftest.$ac_ext >&5
++ rm -rf conftest*
++ ac_cv_c_bigendian=no
+ fi
+-rm -f conftest.$ac_objext conftest.$ac_ext
++rm -f conftest*
+ else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+-# It does not; compile a test program.
+-if test "$cross_compiling" = yes; then
+- # try to guess the endianness by grepping values into an object file
+- ac_cv_c_bigendian=unknown
+- cat >conftest.$ac_ext <<_ACEOF
+-#line $LINENO "configure"
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
+-short ascii_mm[] = { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 };
+-short ascii_ii[] = { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 };
+-void _ascii () { char *s = (char *) ascii_mm; s = (char *) ascii_ii; }
+-short ebcdic_ii[] = { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 };
+-short ebcdic_mm[] = { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 };
+-void _ebcdic () { char *s = (char *) ebcdic_mm; s = (char *) ebcdic_ii; }
+-int
+-main ()
+-{
+- _ascii (); _ebcdic ();
+- ;
+- return 0;
+-}
+-_ACEOF
+-rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- if grep BIGenDianSyS conftest.$ac_objext >/dev/null ; then
+- ac_cv_c_bigendian=yes
++ echo "configure: failed program was:" >&5
++ cat conftest.$ac_ext >&5
+ fi
+-if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then
+- if test "$ac_cv_c_bigendian" = unknown; then
+- ac_cv_c_bigendian=no
+- else
+- # finding both strings is unlikely to happen, but who knows?
+- ac_cv_c_bigendian=unknown
+- fi
+-fi
++rm -f conftest*
++if test $ac_cv_c_bigendian = unknown; then
++if test "$cross_compiling" = yes; then
++ { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
+ else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+-fi
+-rm -f conftest.$ac_objext conftest.$ac_ext
+-else
+- cat >conftest.$ac_ext <<_ACEOF
+-#line $LINENO "configure"
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
+-int
+-main ()
+-{
++ cat > conftest.$ac_ext <<EOF
++#line 1054 "configure"
++#include "confdefs.h"
++main () {
+ /* Are we little or big endian? From Harbison&Steele. */
+ union
+ {
+@@ -2642,52 +1062,31 @@
+ u.l = 1;
+ exit (u.c[sizeof (long) - 1] == 1);
+ }
+-_ACEOF
+-rm -f conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++EOF
++if { (eval echo configure:1067: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
++then
+ ac_cv_c_bigendian=no
+ else
+- echo "$as_me: program exited with status $ac_status" >&5
+-echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+-( exit $ac_status )
+-ac_cv_c_bigendian=yes
++ echo "configure: failed program was:" >&5
++ cat conftest.$ac_ext >&5
++ rm -fr conftest*
++ ac_cv_c_bigendian=yes
+ fi
+-rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
++rm -fr conftest*
+ fi
++
+ fi
+-rm -f conftest.$ac_objext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_c_bigendian" >&5
+-echo "${ECHO_T}$ac_cv_c_bigendian" >&6
+-case $ac_cv_c_bigendian in
+- yes)
+
+-cat >>confdefs.h <<\_ACEOF
++echo "$ac_t""$ac_cv_c_bigendian" 1>&6
++if test $ac_cv_c_bigendian = yes; then
++ cat >> confdefs.h <<\EOF
+ #define WORDS_BIGENDIAN 1
+-_ACEOF
+- ;;
+- no)
+- ;;
+- *)
+- { { echo "$as_me:$LINENO: error: unknown endianness
+-presetting ac_cv_c_bigendian=no (or yes) will help" >&5
+-echo "$as_me: error: unknown endianness
+-presetting ac_cv_c_bigendian=no (or yes) will help" >&2;}
+- { (exit 1); exit 1; }; } ;;
+-esac
++EOF
+
++fi
+
++
+ if test "x$GCC" = "xyes"; then
+ CFLAGS="$CFLAGS -Wall"
+ fi
+@@ -2697,14 +1096,13 @@
+ case "${enableval}" in
+ yes) shared=true ;;
+ no) shared=false ;;
+- *) { { echo "$as_me:$LINENO: error: bad value ${enableval} for shared options" >&5
+-echo "$as_me: error: bad value ${enableval} for shared options" >&2;}
+- { (exit 1); exit 1; }; } ;;
++ *) { echo "configure: error: bad value ${enableval} for shared options" 1>&2; exit 1; } ;;
+ esac
+ else
+ shared=false
+-fi;
++fi
+
++
+ case "$target_cpu" in
+ i386|i486|i586|i686)
+ TARGET_CPU=i386
+@@ -2712,7 +1110,7 @@
+ *)
+ TARGET_CPU=$target_cpu
+ ;;
+-esac
++esac
+ TARGET_OS=$target_os
+
+ M68KCC=
+@@ -2726,7 +1124,7 @@
+ M68KCC=/usr/m68k-palmos/bin/gcc
+ # Generic build is ARM or M68K (probably ARM though)
+ CC="/usr/$TARGET_CPU-palmos/bin/gcc"
+- if test "$target_cpu" = "arm"
++ if test "$target_cpu" = "arm"
+ then
+ CC="$CC -fPIC -march=armv4t"
+ fi
+@@ -2762,7 +1160,7 @@
+ *)
+ HOST_CPU=$host_cpu
+ ;;
+-esac
++esac
+ HOST_OS=$host_os
+
+
+@@ -2800,138 +1198,91 @@
+ case "${enableval}" in
+ yes) sockets=true ;;
+ no) sockets=false ;;
+- *) { { echo "$as_me:$LINENO: error: bad value ${enableval} for sockets options" >&5
+-echo "$as_me: error: bad value ${enableval} for sockets options" >&2;}
+- { (exit 1); exit 1; }; } ;;
++ *) { echo "configure: error: bad value ${enableval} for sockets options" 1>&2; exit 1; } ;;
+ esac
+ else
+ sockets=true
+-fi;
++fi
++
+ if test "$sockets" = false; then
+- cat >>confdefs.h <<\_ACEOF
++ cat >> confdefs.h <<\EOF
+ #define CST_NO_SOCKETS 1
+-_ACEOF
++EOF
+
+ fi
+
+-cat >conftest.$ac_ext <<_ACEOF
+-#line $LINENO "configure"
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
++cat > conftest.$ac_ext <<EOF
++#line 1216 "configure"
++#include "confdefs.h"
+ #include <stdio.h>
+-int
+-main ()
+-{
++int main() {
+ struct a { union { float b; int c; } d; };
+- const struct a e = { .d={ .b=3.14 } };
+- ;
+- return 0;
+-}
+-_ACEOF
+-rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ const struct a e = { .d={ .b=3.14 } };
++; return 0; }
++EOF
++if { (eval echo configure:1224: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
++ rm -rf conftest*
+ unioninit=yes
+ else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+-unioninit=no
++ echo "configure: failed program was:" >&5
++ cat conftest.$ac_ext >&5
++ rm -rf conftest*
++ unioninit=no
+ fi
+-rm -f conftest.$ac_objext conftest.$ac_ext
++rm -f conftest*
+ if test "$unioninit" = no; then
+- cat >>confdefs.h <<\_ACEOF
++ cat >> confdefs.h <<\EOF
+ #define NO_UNION_INITIALIZATION 1
+-_ACEOF
++EOF
+
+ fi
+
+-echo "$as_me:$LINENO: checking for mmap" >&5
+-echo $ECHO_N "checking for mmap... $ECHO_C" >&6
+-if test "${ac_cv_func_mmap+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
++echo $ac_n "checking for mmap""... $ac_c" 1>&6
++echo "configure:1242: checking for mmap" >&5
++if eval "test \"`echo '$''{'ac_cv_func_mmap'+set}'`\" = set"; then
++ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+- cat >conftest.$ac_ext <<_ACEOF
+-#line $LINENO "configure"
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
++ cat > conftest.$ac_ext <<EOF
++#line 1247 "configure"
++#include "confdefs.h"
+ /* System header to define __stub macros and hopefully few prototypes,
+- which can conflict with char mmap (); below.
+- Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+- <limits.h> exists even on freestanding compilers. */
+-#ifdef __STDC__
+-# include <limits.h>
+-#else
+-# include <assert.h>
+-#endif
++ which can conflict with char mmap(); below. */
++#include <assert.h>
+ /* Override any gcc2 internal prototype to avoid an error. */
+-#ifdef __cplusplus
+-extern "C"
+-{
+-#endif
+ /* We use char because int might match the return type of a gcc2
+- builtin and then its argument prototype would still apply. */
+-char mmap ();
++ builtin and then its argument prototype would still apply. */
++char mmap();
++
++int main() {
++
+ /* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+ #if defined (__stub_mmap) || defined (__stub___mmap)
+ choke me
+ #else
+-char (*f) () = mmap;
++mmap();
+ #endif
+-#ifdef __cplusplus
+-}
+-#endif
+
+-int
+-main ()
+-{
+-return f != mmap;
+- ;
+- return 0;
+-}
+-_ACEOF
+-rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- ac_cv_func_mmap=yes
++; return 0; }
++EOF
++if { (eval echo configure:1270: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
++ rm -rf conftest*
++ eval "ac_cv_func_mmap=yes"
+ else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+-ac_cv_func_mmap=no
++ echo "configure: failed program was:" >&5
++ cat conftest.$ac_ext >&5
++ rm -rf conftest*
++ eval "ac_cv_func_mmap=no"
+ fi
+-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
++rm -f conftest*
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_func_mmap" >&5
+-echo "${ECHO_T}$ac_cv_func_mmap" >&6
+-if test $ac_cv_func_mmap = yes; then
++
++if eval "test \"`echo '$ac_cv_func_'mmap`\" = yes"; then
++ echo "$ac_t""yes" 1>&6
+ MMAPTYPE=posix
++else
++ echo "$ac_t""no" 1>&6
+ fi
+
+
+@@ -2956,1028 +1307,266 @@
+
+
+ AUDIODRIVER=none
+-ac_ext=c
+-ac_cpp='$CPP $CPPFLAGS'
+-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+-ac_compiler_gnu=$ac_cv_c_compiler_gnu
+-echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5
+-echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6
++echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
++echo "configure:1312: checking how to run the C preprocessor" >&5
+ # On Suns, sometimes $CPP names a directory.
+ if test -n "$CPP" && test -d "$CPP"; then
+ CPP=
+ fi
+ if test -z "$CPP"; then
+- if test "${ac_cv_prog_CPP+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
++if eval "test \"`echo '$''{'ac_cv_prog_CPP'+set}'`\" = set"; then
++ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+- # Double quotes because CPP needs to be expanded
+- for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
+- do
+- ac_preproc_ok=false
+-for ac_c_preproc_warn_flag in '' yes
+-do
+- # Use a header file that comes with gcc, so configuring glibc
+- # with a fresh cross-compiler works.
+- # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+- # <limits.h> exists even on freestanding compilers.
++ # This must be in double quotes, not single quotes, because CPP may get
++ # substituted into the Makefile and "${CC-cc}" will confuse make.
++ CPP="${CC-cc} -E"
+ # On the NeXT, cc -E runs the code through the compiler's parser,
+- # not just through cpp. "Syntax error" is here to catch this case.
+- cat >conftest.$ac_ext <<_ACEOF
+-#line $LINENO "configure"
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
+-#ifdef __STDC__
+-# include <limits.h>
+-#else
+-# include <assert.h>
+-#endif
+- Syntax error
+-_ACEOF
+-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+- ac_status=$?
+- grep -v '^ *+' conftest.er1 >conftest.err
+- rm -f conftest.er1
+- cat conftest.err >&5
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } >/dev/null; then
+- if test -s conftest.err; then
+- ac_cpp_err=$ac_c_preproc_warn_flag
+- else
+- ac_cpp_err=
+- fi
+-else
+- ac_cpp_err=yes
+-fi
+-if test -z "$ac_cpp_err"; then
++ # not just through cpp.
++ cat > conftest.$ac_ext <<EOF
++#line 1327 "configure"
++#include "confdefs.h"
++#include <assert.h>
++Syntax Error
++EOF
++ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
++{ (eval echo configure:1333: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
++ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
++if test -z "$ac_err"; then
+ :
+ else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+- # Broken: fails on valid input.
+-continue
+-fi
+-rm -f conftest.err conftest.$ac_ext
+-
+- # OK, works on sane cases. Now check whether non-existent headers
+- # can be detected and how.
+- cat >conftest.$ac_ext <<_ACEOF
+-#line $LINENO "configure"
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
+-#include <ac_nonexistent.h>
+-_ACEOF
+-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+- ac_status=$?
+- grep -v '^ *+' conftest.er1 >conftest.err
+- rm -f conftest.er1
+- cat conftest.err >&5
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } >/dev/null; then
+- if test -s conftest.err; then
+- ac_cpp_err=$ac_c_preproc_warn_flag
+- else
+- ac_cpp_err=
+- fi
+-else
+- ac_cpp_err=yes
+-fi
+-if test -z "$ac_cpp_err"; then
+- # Broken: success on invalid input.
+-continue
+-else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+- # Passes both tests.
+-ac_preproc_ok=:
+-break
+-fi
+-rm -f conftest.err conftest.$ac_ext
+-
+-done
+-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+-rm -f conftest.err conftest.$ac_ext
+-if $ac_preproc_ok; then
+- break
+-fi
+-
+- done
+- ac_cv_prog_CPP=$CPP
+-
+-fi
+- CPP=$ac_cv_prog_CPP
+-else
+- ac_cv_prog_CPP=$CPP
+-fi
+-echo "$as_me:$LINENO: result: $CPP" >&5
+-echo "${ECHO_T}$CPP" >&6
+-ac_preproc_ok=false
+-for ac_c_preproc_warn_flag in '' yes
+-do
+- # Use a header file that comes with gcc, so configuring glibc
+- # with a fresh cross-compiler works.
+- # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+- # <limits.h> exists even on freestanding compilers.
+- # On the NeXT, cc -E runs the code through the compiler's parser,
+- # not just through cpp. "Syntax error" is here to catch this case.
+- cat >conftest.$ac_ext <<_ACEOF
+-#line $LINENO "configure"
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
+-#ifdef __STDC__
+-# include <limits.h>
+-#else
+-# include <assert.h>
+-#endif
+- Syntax error
+-_ACEOF
+-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+- ac_status=$?
+- grep -v '^ *+' conftest.er1 >conftest.err
+- rm -f conftest.er1
+- cat conftest.err >&5
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } >/dev/null; then
+- if test -s conftest.err; then
+- ac_cpp_err=$ac_c_preproc_warn_flag
+- else
+- ac_cpp_err=
+- fi
+-else
+- ac_cpp_err=yes
+-fi
+-if test -z "$ac_cpp_err"; then
++ echo "$ac_err" >&5
++ echo "configure: failed program was:" >&5
++ cat conftest.$ac_ext >&5
++ rm -rf conftest*
++ CPP="${CC-cc} -E -traditional-cpp"
++ cat > conftest.$ac_ext <<EOF
++#line 1344 "configure"
++#include "confdefs.h"
++#include <assert.h>
++Syntax Error
++EOF
++ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
++{ (eval echo configure:1350: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
++ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
++if test -z "$ac_err"; then
+ :
+ else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+- # Broken: fails on valid input.
+-continue
+-fi
+-rm -f conftest.err conftest.$ac_ext
+-
+- # OK, works on sane cases. Now check whether non-existent headers
+- # can be detected and how.
+- cat >conftest.$ac_ext <<_ACEOF
+-#line $LINENO "configure"
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
+-#include <ac_nonexistent.h>
+-_ACEOF
+-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+- ac_status=$?
+- grep -v '^ *+' conftest.er1 >conftest.err
+- rm -f conftest.er1
+- cat conftest.err >&5
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } >/dev/null; then
+- if test -s conftest.err; then
+- ac_cpp_err=$ac_c_preproc_warn_flag
+- else
+- ac_cpp_err=
+- fi
+-else
+- ac_cpp_err=yes
+-fi
+-if test -z "$ac_cpp_err"; then
+- # Broken: success on invalid input.
+-continue
+-else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+- # Passes both tests.
+-ac_preproc_ok=:
+-break
+-fi
+-rm -f conftest.err conftest.$ac_ext
+-
+-done
+-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+-rm -f conftest.err conftest.$ac_ext
+-if $ac_preproc_ok; then
++ echo "$ac_err" >&5
++ echo "configure: failed program was:" >&5
++ cat conftest.$ac_ext >&5
++ rm -rf conftest*
++ CPP="${CC-cc} -nologo -E"
++ cat > conftest.$ac_ext <<EOF
++#line 1361 "configure"
++#include "confdefs.h"
++#include <assert.h>
++Syntax Error
++EOF
++ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
++{ (eval echo configure:1367: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
++ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
++if test -z "$ac_err"; then
+ :
+ else
+- { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check
+-See \`config.log' for more details." >&5
+-echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check
+-See \`config.log' for more details." >&2;}
+- { (exit 1); exit 1; }; }
++ echo "$ac_err" >&5
++ echo "configure: failed program was:" >&5
++ cat conftest.$ac_ext >&5
++ rm -rf conftest*
++ CPP=/lib/cpp
+ fi
+-
+-ac_ext=c
+-ac_cpp='$CPP $CPPFLAGS'
+-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+-ac_compiler_gnu=$ac_cv_c_compiler_gnu
+-
+-
+-echo "$as_me:$LINENO: checking for egrep" >&5
+-echo $ECHO_N "checking for egrep... $ECHO_C" >&6
+-if test "${ac_cv_prog_egrep+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- if echo a | (grep -E '(a|b)') >/dev/null 2>&1
+- then ac_cv_prog_egrep='grep -E'
+- else ac_cv_prog_egrep='egrep'
+- fi
++rm -f conftest*
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5
+-echo "${ECHO_T}$ac_cv_prog_egrep" >&6
+- EGREP=$ac_cv_prog_egrep
+-
+-
+-echo "$as_me:$LINENO: checking for ANSI C header files" >&5
+-echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6
+-if test "${ac_cv_header_stdc+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- cat >conftest.$ac_ext <<_ACEOF
+-#line $LINENO "configure"
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
+-#include <stdlib.h>
+-#include <stdarg.h>
+-#include <string.h>
+-#include <float.h>
+-
+-int
+-main ()
+-{
+-
+- ;
+- return 0;
+-}
+-_ACEOF
+-rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- ac_cv_header_stdc=yes
+-else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+-ac_cv_header_stdc=no
+-fi
+-rm -f conftest.$ac_objext conftest.$ac_ext
+-
+-if test $ac_cv_header_stdc = yes; then
+- # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+- cat >conftest.$ac_ext <<_ACEOF
+-#line $LINENO "configure"
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
+-#include <string.h>
+-
+-_ACEOF
+-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+- $EGREP "memchr" >/dev/null 2>&1; then
+- :
+-else
+- ac_cv_header_stdc=no
+-fi
+ rm -f conftest*
+-
+ fi
+-
+-if test $ac_cv_header_stdc = yes; then
+- # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+- cat >conftest.$ac_ext <<_ACEOF
+-#line $LINENO "configure"
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
+-#include <stdlib.h>
+-
+-_ACEOF
+-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+- $EGREP "free" >/dev/null 2>&1; then
+- :
+-else
+- ac_cv_header_stdc=no
+-fi
+ rm -f conftest*
+-
++ ac_cv_prog_CPP="$CPP"
+ fi
+-
+-if test $ac_cv_header_stdc = yes; then
+- # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+- if test "$cross_compiling" = yes; then
+- :
++ CPP="$ac_cv_prog_CPP"
+ else
+- cat >conftest.$ac_ext <<_ACEOF
+-#line $LINENO "configure"
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
+-#include <ctype.h>
+-#if ((' ' & 0x0FF) == 0x020)
+-# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+-# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+-#else
+-# define ISLOWER(c) \
+- (('a' <= (c) && (c) <= 'i') \
+- || ('j' <= (c) && (c) <= 'r') \
+- || ('s' <= (c) && (c) <= 'z'))
+-# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+-#endif
+-
+-#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+-int
+-main ()
+-{
+- int i;
+- for (i = 0; i < 256; i++)
+- if (XOR (islower (i), ISLOWER (i))
+- || toupper (i) != TOUPPER (i))
+- exit(2);
+- exit (0);
+-}
+-_ACEOF
+-rm -f conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- :
+-else
+- echo "$as_me: program exited with status $ac_status" >&5
+-echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+-( exit $ac_status )
+-ac_cv_header_stdc=no
++ ac_cv_prog_CPP="$CPP"
+ fi
+-rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+-fi
+-fi
+-fi
+-echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
+-echo "${ECHO_T}$ac_cv_header_stdc" >&6
+-if test $ac_cv_header_stdc = yes; then
++echo "$ac_t""$CPP" 1>&6
+
+-cat >>confdefs.h <<\_ACEOF
+-#define STDC_HEADERS 1
+-_ACEOF
+-
+-fi
+-
+-# On IRIX 5.3, sys/types and inttypes.h are conflicting.
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
+- inttypes.h stdint.h unistd.h
+-do
+-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+-echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+-if eval "test \"\${$as_ac_Header+set}\" = set"; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
++ac_safe=`echo "sys/soundcard.h" | sed 'y%./+-%__p_%'`
++echo $ac_n "checking for sys/soundcard.h""... $ac_c" 1>&6
++echo "configure:1393: checking for sys/soundcard.h" >&5
++if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
++ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+- cat >conftest.$ac_ext <<_ACEOF
+-#line $LINENO "configure"
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
+-$ac_includes_default
+-
+-#include <$ac_header>
+-_ACEOF
+-rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- eval "$as_ac_Header=yes"
+-else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+-eval "$as_ac_Header=no"
+-fi
+-rm -f conftest.$ac_objext conftest.$ac_ext
+-fi
+-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+-if test `eval echo '${'$as_ac_Header'}'` = yes; then
+- cat >>confdefs.h <<_ACEOF
+-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+-_ACEOF
+-
+-fi
+-
+-done
+-
+-
+-if test "${ac_cv_header_sys_soundcard_h+set}" = set; then
+- echo "$as_me:$LINENO: checking for sys/soundcard.h" >&5
+-echo $ECHO_N "checking for sys/soundcard.h... $ECHO_C" >&6
+-if test "${ac_cv_header_sys_soundcard_h+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-fi
+-echo "$as_me:$LINENO: result: $ac_cv_header_sys_soundcard_h" >&5
+-echo "${ECHO_T}$ac_cv_header_sys_soundcard_h" >&6
+-else
+- # Is the header compilable?
+-echo "$as_me:$LINENO: checking sys/soundcard.h usability" >&5
+-echo $ECHO_N "checking sys/soundcard.h usability... $ECHO_C" >&6
+-cat >conftest.$ac_ext <<_ACEOF
+-#line $LINENO "configure"
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
+-$ac_includes_default
++ cat > conftest.$ac_ext <<EOF
++#line 1398 "configure"
++#include "confdefs.h"
+ #include <sys/soundcard.h>
+-_ACEOF
+-rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- ac_header_compiler=yes
++EOF
++ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
++{ (eval echo configure:1403: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
++ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
++if test -z "$ac_err"; then
++ rm -rf conftest*
++ eval "ac_cv_header_$ac_safe=yes"
+ else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+-ac_header_compiler=no
++ echo "$ac_err" >&5
++ echo "configure: failed program was:" >&5
++ cat conftest.$ac_ext >&5
++ rm -rf conftest*
++ eval "ac_cv_header_$ac_safe=no"
+ fi
+-rm -f conftest.$ac_objext conftest.$ac_ext
+-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+-echo "${ECHO_T}$ac_header_compiler" >&6
+-
+-# Is the header present?
+-echo "$as_me:$LINENO: checking sys/soundcard.h presence" >&5
+-echo $ECHO_N "checking sys/soundcard.h presence... $ECHO_C" >&6
+-cat >conftest.$ac_ext <<_ACEOF
+-#line $LINENO "configure"
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
+-#include <sys/soundcard.h>
+-_ACEOF
+-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+- ac_status=$?
+- grep -v '^ *+' conftest.er1 >conftest.err
+- rm -f conftest.er1
+- cat conftest.err >&5
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } >/dev/null; then
+- if test -s conftest.err; then
+- ac_cpp_err=$ac_c_preproc_warn_flag
+- else
+- ac_cpp_err=
+- fi
+-else
+- ac_cpp_err=yes
++rm -f conftest*
+ fi
+-if test -z "$ac_cpp_err"; then
+- ac_header_preproc=yes
+-else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+- ac_header_preproc=no
+-fi
+-rm -f conftest.err conftest.$ac_ext
+-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+-echo "${ECHO_T}$ac_header_preproc" >&6
+-
+-# So? What about this header?
+-case $ac_header_compiler:$ac_header_preproc in
+- yes:no )
+- { echo "$as_me:$LINENO: WARNING: sys/soundcard.h: accepted by the compiler, rejected by the preprocessor!" >&5
+-echo "$as_me: WARNING: sys/soundcard.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+- { echo "$as_me:$LINENO: WARNING: sys/soundcard.h: proceeding with the preprocessor's result" >&5
+-echo "$as_me: WARNING: sys/soundcard.h: proceeding with the preprocessor's result" >&2;}
+- (
+- cat <<\_ASBOX
+-## ------------------------------------ ##
+-## Report this to bug-autoconf@gnu.org. ##
+-## ------------------------------------ ##
+-_ASBOX
+- ) |
+- sed "s/^/$as_me: WARNING: /" >&2
+- ;;
+- no:yes )
+- { echo "$as_me:$LINENO: WARNING: sys/soundcard.h: present but cannot be compiled" >&5
+-echo "$as_me: WARNING: sys/soundcard.h: present but cannot be compiled" >&2;}
+- { echo "$as_me:$LINENO: WARNING: sys/soundcard.h: check for missing prerequisite headers?" >&5
+-echo "$as_me: WARNING: sys/soundcard.h: check for missing prerequisite headers?" >&2;}
+- { echo "$as_me:$LINENO: WARNING: sys/soundcard.h: proceeding with the preprocessor's result" >&5
+-echo "$as_me: WARNING: sys/soundcard.h: proceeding with the preprocessor's result" >&2;}
+- (
+- cat <<\_ASBOX
+-## ------------------------------------ ##
+-## Report this to bug-autoconf@gnu.org. ##
+-## ------------------------------------ ##
+-_ASBOX
+- ) |
+- sed "s/^/$as_me: WARNING: /" >&2
+- ;;
+-esac
+-echo "$as_me:$LINENO: checking for sys/soundcard.h" >&5
+-echo $ECHO_N "checking for sys/soundcard.h... $ECHO_C" >&6
+-if test "${ac_cv_header_sys_soundcard_h+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- ac_cv_header_sys_soundcard_h=$ac_header_preproc
+-fi
+-echo "$as_me:$LINENO: result: $ac_cv_header_sys_soundcard_h" >&5
+-echo "${ECHO_T}$ac_cv_header_sys_soundcard_h" >&6
+-
+-fi
+-if test $ac_cv_header_sys_soundcard_h = yes; then
++if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
++ echo "$ac_t""yes" 1>&6
+ AUDIODRIVER="oss"
+ AUDIODEFS=-DCST_AUDIO_LINUX
++else
++ echo "$ac_t""no" 1>&6
+ fi
+
+-
+-if test "${ac_cv_header_machine_soundcard_h+set}" = set; then
+- echo "$as_me:$LINENO: checking for machine/soundcard.h" >&5
+-echo $ECHO_N "checking for machine/soundcard.h... $ECHO_C" >&6
+-if test "${ac_cv_header_machine_soundcard_h+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-fi
+-echo "$as_me:$LINENO: result: $ac_cv_header_machine_soundcard_h" >&5
+-echo "${ECHO_T}$ac_cv_header_machine_soundcard_h" >&6
++ac_safe=`echo "machine/soundcard.h" | sed 'y%./+-%__p_%'`
++echo $ac_n "checking for machine/soundcard.h""... $ac_c" 1>&6
++echo "configure:1427: checking for machine/soundcard.h" >&5
++if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
++ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+- # Is the header compilable?
+-echo "$as_me:$LINENO: checking machine/soundcard.h usability" >&5
+-echo $ECHO_N "checking machine/soundcard.h usability... $ECHO_C" >&6
+-cat >conftest.$ac_ext <<_ACEOF
+-#line $LINENO "configure"
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
+-$ac_includes_default
++ cat > conftest.$ac_ext <<EOF
++#line 1432 "configure"
++#include "confdefs.h"
+ #include <machine/soundcard.h>
+-_ACEOF
+-rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- ac_header_compiler=yes
++EOF
++ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
++{ (eval echo configure:1437: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
++ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
++if test -z "$ac_err"; then
++ rm -rf conftest*
++ eval "ac_cv_header_$ac_safe=yes"
+ else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+-ac_header_compiler=no
++ echo "$ac_err" >&5
++ echo "configure: failed program was:" >&5
++ cat conftest.$ac_ext >&5
++ rm -rf conftest*
++ eval "ac_cv_header_$ac_safe=no"
+ fi
+-rm -f conftest.$ac_objext conftest.$ac_ext
+-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+-echo "${ECHO_T}$ac_header_compiler" >&6
+-
+-# Is the header present?
+-echo "$as_me:$LINENO: checking machine/soundcard.h presence" >&5
+-echo $ECHO_N "checking machine/soundcard.h presence... $ECHO_C" >&6
+-cat >conftest.$ac_ext <<_ACEOF
+-#line $LINENO "configure"
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
+-#include <machine/soundcard.h>
+-_ACEOF
+-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+- ac_status=$?
+- grep -v '^ *+' conftest.er1 >conftest.err
+- rm -f conftest.er1
+- cat conftest.err >&5
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } >/dev/null; then
+- if test -s conftest.err; then
+- ac_cpp_err=$ac_c_preproc_warn_flag
+- else
+- ac_cpp_err=
+- fi
+-else
+- ac_cpp_err=yes
++rm -f conftest*
+ fi
+-if test -z "$ac_cpp_err"; then
+- ac_header_preproc=yes
+-else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+- ac_header_preproc=no
+-fi
+-rm -f conftest.err conftest.$ac_ext
+-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+-echo "${ECHO_T}$ac_header_preproc" >&6
+-
+-# So? What about this header?
+-case $ac_header_compiler:$ac_header_preproc in
+- yes:no )
+- { echo "$as_me:$LINENO: WARNING: machine/soundcard.h: accepted by the compiler, rejected by the preprocessor!" >&5
+-echo "$as_me: WARNING: machine/soundcard.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+- { echo "$as_me:$LINENO: WARNING: machine/soundcard.h: proceeding with the preprocessor's result" >&5
+-echo "$as_me: WARNING: machine/soundcard.h: proceeding with the preprocessor's result" >&2;}
+- (
+- cat <<\_ASBOX
+-## ------------------------------------ ##
+-## Report this to bug-autoconf@gnu.org. ##
+-## ------------------------------------ ##
+-_ASBOX
+- ) |
+- sed "s/^/$as_me: WARNING: /" >&2
+- ;;
+- no:yes )
+- { echo "$as_me:$LINENO: WARNING: machine/soundcard.h: present but cannot be compiled" >&5
+-echo "$as_me: WARNING: machine/soundcard.h: present but cannot be compiled" >&2;}
+- { echo "$as_me:$LINENO: WARNING: machine/soundcard.h: check for missing prerequisite headers?" >&5
+-echo "$as_me: WARNING: machine/soundcard.h: check for missing prerequisite headers?" >&2;}
+- { echo "$as_me:$LINENO: WARNING: machine/soundcard.h: proceeding with the preprocessor's result" >&5
+-echo "$as_me: WARNING: machine/soundcard.h: proceeding with the preprocessor's result" >&2;}
+- (
+- cat <<\_ASBOX
+-## ------------------------------------ ##
+-## Report this to bug-autoconf@gnu.org. ##
+-## ------------------------------------ ##
+-_ASBOX
+- ) |
+- sed "s/^/$as_me: WARNING: /" >&2
+- ;;
+-esac
+-echo "$as_me:$LINENO: checking for machine/soundcard.h" >&5
+-echo $ECHO_N "checking for machine/soundcard.h... $ECHO_C" >&6
+-if test "${ac_cv_header_machine_soundcard_h+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- ac_cv_header_machine_soundcard_h=$ac_header_preproc
+-fi
+-echo "$as_me:$LINENO: result: $ac_cv_header_machine_soundcard_h" >&5
+-echo "${ECHO_T}$ac_cv_header_machine_soundcard_h" >&6
+-
+-fi
+-if test $ac_cv_header_machine_soundcard_h = yes; then
++if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
++ echo "$ac_t""yes" 1>&6
+ AUDIODRIVER="oss"
+ AUDIODEFS=-DCST_AUDIO_FREEBSD
++else
++ echo "$ac_t""no" 1>&6
+ fi
+
+-
+-if test "${ac_cv_header_sys_audioio_h+set}" = set; then
+- echo "$as_me:$LINENO: checking for sys/audioio.h" >&5
+-echo $ECHO_N "checking for sys/audioio.h... $ECHO_C" >&6
+-if test "${ac_cv_header_sys_audioio_h+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-fi
+-echo "$as_me:$LINENO: result: $ac_cv_header_sys_audioio_h" >&5
+-echo "${ECHO_T}$ac_cv_header_sys_audioio_h" >&6
++ac_safe=`echo "sys/audioio.h" | sed 'y%./+-%__p_%'`
++echo $ac_n "checking for sys/audioio.h""... $ac_c" 1>&6
++echo "configure:1461: checking for sys/audioio.h" >&5
++if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
++ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+- # Is the header compilable?
+-echo "$as_me:$LINENO: checking sys/audioio.h usability" >&5
+-echo $ECHO_N "checking sys/audioio.h usability... $ECHO_C" >&6
+-cat >conftest.$ac_ext <<_ACEOF
+-#line $LINENO "configure"
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
+-$ac_includes_default
++ cat > conftest.$ac_ext <<EOF
++#line 1466 "configure"
++#include "confdefs.h"
+ #include <sys/audioio.h>
+-_ACEOF
+-rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- ac_header_compiler=yes
++EOF
++ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
++{ (eval echo configure:1471: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
++ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
++if test -z "$ac_err"; then
++ rm -rf conftest*
++ eval "ac_cv_header_$ac_safe=yes"
+ else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+-ac_header_compiler=no
++ echo "$ac_err" >&5
++ echo "configure: failed program was:" >&5
++ cat conftest.$ac_ext >&5
++ rm -rf conftest*
++ eval "ac_cv_header_$ac_safe=no"
+ fi
+-rm -f conftest.$ac_objext conftest.$ac_ext
+-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+-echo "${ECHO_T}$ac_header_compiler" >&6
+-
+-# Is the header present?
+-echo "$as_me:$LINENO: checking sys/audioio.h presence" >&5
+-echo $ECHO_N "checking sys/audioio.h presence... $ECHO_C" >&6
+-cat >conftest.$ac_ext <<_ACEOF
+-#line $LINENO "configure"
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
+-#include <sys/audioio.h>
+-_ACEOF
+-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+- ac_status=$?
+- grep -v '^ *+' conftest.er1 >conftest.err
+- rm -f conftest.er1
+- cat conftest.err >&5
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } >/dev/null; then
+- if test -s conftest.err; then
+- ac_cpp_err=$ac_c_preproc_warn_flag
+- else
+- ac_cpp_err=
+- fi
+-else
+- ac_cpp_err=yes
++rm -f conftest*
+ fi
+-if test -z "$ac_cpp_err"; then
+- ac_header_preproc=yes
+-else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+- ac_header_preproc=no
+-fi
+-rm -f conftest.err conftest.$ac_ext
+-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+-echo "${ECHO_T}$ac_header_preproc" >&6
+-
+-# So? What about this header?
+-case $ac_header_compiler:$ac_header_preproc in
+- yes:no )
+- { echo "$as_me:$LINENO: WARNING: sys/audioio.h: accepted by the compiler, rejected by the preprocessor!" >&5
+-echo "$as_me: WARNING: sys/audioio.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+- { echo "$as_me:$LINENO: WARNING: sys/audioio.h: proceeding with the preprocessor's result" >&5
+-echo "$as_me: WARNING: sys/audioio.h: proceeding with the preprocessor's result" >&2;}
+- (
+- cat <<\_ASBOX
+-## ------------------------------------ ##
+-## Report this to bug-autoconf@gnu.org. ##
+-## ------------------------------------ ##
+-_ASBOX
+- ) |
+- sed "s/^/$as_me: WARNING: /" >&2
+- ;;
+- no:yes )
+- { echo "$as_me:$LINENO: WARNING: sys/audioio.h: present but cannot be compiled" >&5
+-echo "$as_me: WARNING: sys/audioio.h: present but cannot be compiled" >&2;}
+- { echo "$as_me:$LINENO: WARNING: sys/audioio.h: check for missing prerequisite headers?" >&5
+-echo "$as_me: WARNING: sys/audioio.h: check for missing prerequisite headers?" >&2;}
+- { echo "$as_me:$LINENO: WARNING: sys/audioio.h: proceeding with the preprocessor's result" >&5
+-echo "$as_me: WARNING: sys/audioio.h: proceeding with the preprocessor's result" >&2;}
+- (
+- cat <<\_ASBOX
+-## ------------------------------------ ##
+-## Report this to bug-autoconf@gnu.org. ##
+-## ------------------------------------ ##
+-_ASBOX
+- ) |
+- sed "s/^/$as_me: WARNING: /" >&2
+- ;;
+-esac
+-echo "$as_me:$LINENO: checking for sys/audioio.h" >&5
+-echo $ECHO_N "checking for sys/audioio.h... $ECHO_C" >&6
+-if test "${ac_cv_header_sys_audioio_h+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- ac_cv_header_sys_audioio_h=$ac_header_preproc
+-fi
+-echo "$as_me:$LINENO: result: $ac_cv_header_sys_audioio_h" >&5
+-echo "${ECHO_T}$ac_cv_header_sys_audioio_h" >&6
+-
+-fi
+-if test $ac_cv_header_sys_audioio_h = yes; then
++if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
++ echo "$ac_t""yes" 1>&6
+ AUDIODRIVER="sun"
+ AUDIODEFS=-DCST_AUDIO_SUNOS
++else
++ echo "$ac_t""no" 1>&6
+ fi
+
+-
+-if test "${ac_cv_header_mmsystem_h+set}" = set; then
+- echo "$as_me:$LINENO: checking for mmsystem.h" >&5
+-echo $ECHO_N "checking for mmsystem.h... $ECHO_C" >&6
+-if test "${ac_cv_header_mmsystem_h+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-fi
+-echo "$as_me:$LINENO: result: $ac_cv_header_mmsystem_h" >&5
+-echo "${ECHO_T}$ac_cv_header_mmsystem_h" >&6
++ ac_safe=`echo "alsa/asoundlib.h" | sed 'y%./+-%__p_%'`
++echo $ac_n "checking for alsa/asoundlib.h""... $ac_c" 1>&6
++echo "configure:1495: checking for alsa/asoundlib.h" >&5
++if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
++ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+- # Is the header compilable?
+-echo "$as_me:$LINENO: checking mmsystem.h usability" >&5
+-echo $ECHO_N "checking mmsystem.h usability... $ECHO_C" >&6
+-cat >conftest.$ac_ext <<_ACEOF
+-#line $LINENO "configure"
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
+-$ac_includes_default
+-#include <mmsystem.h>
+-_ACEOF
+-rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- ac_header_compiler=yes
++ cat > conftest.$ac_ext <<EOF
++#line 1500 "configure"
++#include "confdefs.h"
++#include <alsa/asoundlib.h>
++EOF
++ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
++{ (eval echo configure:1505: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
++ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
++if test -z "$ac_err"; then
++ rm -rf conftest*
++ eval "ac_cv_header_$ac_safe=yes"
+ else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+-ac_header_compiler=no
++ echo "$ac_err" >&5
++ echo "configure: failed program was:" >&5
++ cat conftest.$ac_ext >&5
++ rm -rf conftest*
++ eval "ac_cv_header_$ac_safe=no"
+ fi
+-rm -f conftest.$ac_objext conftest.$ac_ext
+-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+-echo "${ECHO_T}$ac_header_compiler" >&6
+-
+-# Is the header present?
+-echo "$as_me:$LINENO: checking mmsystem.h presence" >&5
+-echo $ECHO_N "checking mmsystem.h presence... $ECHO_C" >&6
+-cat >conftest.$ac_ext <<_ACEOF
+-#line $LINENO "configure"
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
+-#include <mmsystem.h>
+-_ACEOF
+-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+- ac_status=$?
+- grep -v '^ *+' conftest.er1 >conftest.err
+- rm -f conftest.er1
+- cat conftest.err >&5
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } >/dev/null; then
+- if test -s conftest.err; then
+- ac_cpp_err=$ac_c_preproc_warn_flag
+- else
+- ac_cpp_err=
+- fi
+-else
+- ac_cpp_err=yes
++rm -f conftest*
+ fi
+-if test -z "$ac_cpp_err"; then
+- ac_header_preproc=yes
++if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
++ echo "$ac_t""yes" 1>&6
++ AUDIODRIVER="alsa"
++ AUDIODEFS=-DCST_AUDIO_ALSA
++ AUDIOLIBS=-lasound
+ else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+- ac_header_preproc=no
++ echo "$ac_t""no" 1>&6
+ fi
+-rm -f conftest.err conftest.$ac_ext
+-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+-echo "${ECHO_T}$ac_header_preproc" >&6
+
+-# So? What about this header?
+-case $ac_header_compiler:$ac_header_preproc in
+- yes:no )
+- { echo "$as_me:$LINENO: WARNING: mmsystem.h: accepted by the compiler, rejected by the preprocessor!" >&5
+-echo "$as_me: WARNING: mmsystem.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+- { echo "$as_me:$LINENO: WARNING: mmsystem.h: proceeding with the preprocessor's result" >&5
+-echo "$as_me: WARNING: mmsystem.h: proceeding with the preprocessor's result" >&2;}
+- (
+- cat <<\_ASBOX
+-## ------------------------------------ ##
+-## Report this to bug-autoconf@gnu.org. ##
+-## ------------------------------------ ##
+-_ASBOX
+- ) |
+- sed "s/^/$as_me: WARNING: /" >&2
+- ;;
+- no:yes )
+- { echo "$as_me:$LINENO: WARNING: mmsystem.h: present but cannot be compiled" >&5
+-echo "$as_me: WARNING: mmsystem.h: present but cannot be compiled" >&2;}
+- { echo "$as_me:$LINENO: WARNING: mmsystem.h: check for missing prerequisite headers?" >&5
+-echo "$as_me: WARNING: mmsystem.h: check for missing prerequisite headers?" >&2;}
+- { echo "$as_me:$LINENO: WARNING: mmsystem.h: proceeding with the preprocessor's result" >&5
+-echo "$as_me: WARNING: mmsystem.h: proceeding with the preprocessor's result" >&2;}
+- (
+- cat <<\_ASBOX
+-## ------------------------------------ ##
+-## Report this to bug-autoconf@gnu.org. ##
+-## ------------------------------------ ##
+-_ASBOX
+- ) |
+- sed "s/^/$as_me: WARNING: /" >&2
+- ;;
+-esac
+-echo "$as_me:$LINENO: checking for mmsystem.h" >&5
+-echo $ECHO_N "checking for mmsystem.h... $ECHO_C" >&6
+-if test "${ac_cv_header_mmsystem_h+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
++ac_safe=`echo "mmsystem.h" | sed 'y%./+-%__p_%'`
++echo $ac_n "checking for mmsystem.h""... $ac_c" 1>&6
++echo "configure:1530: checking for mmsystem.h" >&5
++if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
++ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+- ac_cv_header_mmsystem_h=$ac_header_preproc
++ cat > conftest.$ac_ext <<EOF
++#line 1535 "configure"
++#include "confdefs.h"
++#include <mmsystem.h>
++EOF
++ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
++{ (eval echo configure:1540: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
++ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
++if test -z "$ac_err"; then
++ rm -rf conftest*
++ eval "ac_cv_header_$ac_safe=yes"
++else
++ echo "$ac_err" >&5
++ echo "configure: failed program was:" >&5
++ cat conftest.$ac_ext >&5
++ rm -rf conftest*
++ eval "ac_cv_header_$ac_safe=no"
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_header_mmsystem_h" >&5
+-echo "${ECHO_T}$ac_cv_header_mmsystem_h" >&6
+-
++rm -f conftest*
+ fi
+-if test $ac_cv_header_mmsystem_h = yes; then
++if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
++ echo "$ac_t""yes" 1>&6
+ AUDIODRIVER="wince"
+ AUDIODEFS=-DCST_AUDIO_WINCE
+ AUDIOLIBS=-lwinmm
++else
++ echo "$ac_t""no" 1>&6
+ fi
+
+
+-
+-
+ # Check whether --with-audio or --without-audio was given.
+ if test "${with_audio+set}" = set; then
+ withval="$with_audio"
+- AUDIODRIVER=$with_audio
+-fi;
++ AUDIODRIVER=$with_audio
++fi
+
++
+ if test "x$AUDIODEFS" = x; then
+ case "$AUDIODRIVER" in
+ linux|oss)
+@@ -4006,34 +1595,34 @@
+
+
+
+-
+ # Check whether --with-lang or --without-lang was given.
+ if test "${with_lang+set}" = set; then
+ withval="$with_lang"
+- FL_LANG=$with_lang
+-fi;
++ FL_LANG=$with_lang
++fi
++
+ if test "x$with_lang" = "x"; then
+ FL_LANG="usenglish"
+ fi
+
+
+-
+ # Check whether --with-vox or --without-vox was given.
+ if test "${with_vox+set}" = set; then
+ withval="$with_vox"
+- FL_VOX=$with_vox
+-fi;
++ FL_VOX=$with_vox
++fi
++
+ if test "x$with_vox" = "x"; then
+ FL_VOX="cmu_us_kal"
+ fi
+
+
+-
+ # Check whether --with-lex or --without-lex was given.
+ if test "${with_lex+set}" = set; then
+ withval="$with_lex"
+- FL_LEX=$with_lex
+-fi;
++ FL_LEX=$with_lex
++fi
++
+ if test "x$with_lex" = "x"; then
+ FL_LEX="cmulex"
+ fi
+@@ -4041,921 +1630,300 @@
+
+
+
+- ac_config_files="$ac_config_files config/config config/system.mak"
+-cat >confcache <<\_ACEOF
++trap '' 1 2 15
++cat > confcache <<\EOF
+ # This file is a shell script that caches the results of configure
+ # tests run on this system so they can be shared between configure
+-# scripts and configure runs, see configure's option --config-cache.
+-# It is not useful on other systems. If it contains results you don't
+-# want to keep, you may remove or edit it.
++# scripts and configure runs. It is not useful on other systems.
++# If it contains results you don't want to keep, you may remove or edit it.
+ #
+-# config.status only pays attention to the cache file if you give it
+-# the --recheck option to rerun configure.
++# By default, configure uses ./config.cache as the cache file,
++# creating it if it does not exist already. You can give configure
++# the --cache-file=FILE option to use a different cache file; that is
++# what configure does when it calls configure scripts in
++# subdirectories, so they share the cache.
++# Giving --cache-file=/dev/null disables caching, for debugging configure.
++# config.status only pays attention to the cache file if you give it the
++# --recheck option to rerun configure.
+ #
+-# `ac_cv_env_foo' variables (set or unset) will be overridden when
+-# loading this file, other *unset* `ac_cv_foo' will be assigned the
+-# following values.
+-
+-_ACEOF
+-
++EOF
+ # The following way of writing the cache mishandles newlines in values,
+ # but we know of no workaround that is simple, portable, and efficient.
+ # So, don't put newlines in cache variables' values.
+ # Ultrix sh set writes to stderr and can't be redirected directly,
+ # and sets the high bit in the cache file unless we assign to the vars.
+-{
+- (set) 2>&1 |
+- case `(ac_space=' '; set | grep ac_space) 2>&1` in
+- *ac_space=\ *)
+- # `set' does not quote correctly, so add quotes (double-quote
+- # substitution turns \\\\ into \\, and sed turns \\ into \).
+- sed -n \
+- "s/'/'\\\\''/g;
+- s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+- ;;
+- *)
+- # `set' quotes correctly as required by POSIX, so do not add quotes.
+- sed -n \
+- "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
+- ;;
+- esac;
+-} |
+- sed '
+- t clear
+- : clear
+- s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+- t end
+- /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+- : end' >>confcache
+-if diff $cache_file confcache >/dev/null 2>&1; then :; else
++(set) 2>&1 |
++ case `(ac_space=' '; set | grep ac_space) 2>&1` in
++ *ac_space=\ *)
++ # `set' does not quote correctly, so add quotes (double-quote substitution
++ # turns \\\\ into \\, and sed turns \\ into \).
++ sed -n \
++ -e "s/'/'\\\\''/g" \
++ -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p"
++ ;;
++ *)
++ # `set' quotes correctly as required by POSIX, so do not add quotes.
++ sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p'
++ ;;
++ esac >> confcache
++if cmp -s $cache_file confcache; then
++ :
++else
+ if test -w $cache_file; then
+- test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file"
+- cat confcache >$cache_file
++ echo "updating cache $cache_file"
++ cat confcache > $cache_file
+ else
+ echo "not updating unwritable cache $cache_file"
+ fi
+ fi
+ rm -f confcache
+
++trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
++
+ test "x$prefix" = xNONE && prefix=$ac_default_prefix
+ # Let make expand exec_prefix.
+ test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+
+-# VPATH may cause trouble with some makes, so we remove $(srcdir),
+-# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
+-# trailing colons and then remove the whole line if VPATH becomes empty
+-# (actually we leave an empty line to preserve line numbers).
++# Any assignment to VPATH causes Sun make to only execute
++# the first set of double-colon rules, so remove it if not needed.
++# If there is a colon in the path, we need to keep it.
+ if test "x$srcdir" = x.; then
+- ac_vpsub='/^[ ]*VPATH[ ]*=/{
+-s/:*\$(srcdir):*/:/;
+-s/:*\${srcdir}:*/:/;
+-s/:*@srcdir@:*/:/;
+-s/^\([^=]*=[ ]*\):*/\1/;
+-s/:*$//;
+-s/^[^=]*=[ ]*$//;
+-}'
++ ac_vpsub='/^[ ]*VPATH[ ]*=[^:]*$/d'
+ fi
+
++trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15
++
+ # Transform confdefs.h into DEFS.
+ # Protect against shell expansion while executing Makefile rules.
+ # Protect against Makefile macro expansion.
+-#
+-# If the first sed substitution is executed (which looks for macros that
+-# take arguments), then we branch to the quote section. Otherwise,
+-# look for a macro that doesn't take arguments.
+-cat >confdef2opt.sed <<\_ACEOF
+-t clear
+-: clear
+-s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\),-D\1=\2,g
+-t quote
+-s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\),-D\1=\2,g
+-t quote
+-d
+-: quote
+-s,[ `~#$^&*(){}\\|;'"<>?],\\&,g
+-s,\[,\\&,g
+-s,\],\\&,g
+-s,\$,$$,g
+-p
+-_ACEOF
+-# We use echo to avoid assuming a particular line-breaking character.
+-# The extra dot is to prevent the shell from consuming trailing
+-# line-breaks from the sub-command output. A line-break within
+-# single-quotes doesn't work because, if this script is created in a
+-# platform that uses two characters for line-breaks (e.g., DOS), tr
+-# would break.
+-ac_LF_and_DOT=`echo; echo .`
+-DEFS=`sed -n -f confdef2opt.sed confdefs.h | tr "$ac_LF_and_DOT" ' .'`
+-rm -f confdef2opt.sed
++cat > conftest.defs <<\EOF
++s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%-D\1=\2%g
++s%[ `~#$^&*(){}\\|;'"<>?]%\\&%g
++s%\[%\\&%g
++s%\]%\\&%g
++s%\$%$$%g
++EOF
++DEFS=`sed -f conftest.defs confdefs.h | tr '\012' ' '`
++rm -f conftest.defs
+
+
+-ac_libobjs=
+-ac_ltlibobjs=
+-for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
+- # 1. Remove the extension, and $U if already installed.
+- ac_i=`echo "$ac_i" |
+- sed 's/\$U\././;s/\.o$//;s/\.obj$//'`
+- # 2. Add them.
+- ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext"
+- ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo'
+-done
+-LIBOBJS=$ac_libobjs
+-
+-LTLIBOBJS=$ac_ltlibobjs
+-
+-
+-
++# Without the "./", some shells look in PATH for config.status.
+ : ${CONFIG_STATUS=./config.status}
+-ac_clean_files_save=$ac_clean_files
+-ac_clean_files="$ac_clean_files $CONFIG_STATUS"
+-{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5
+-echo "$as_me: creating $CONFIG_STATUS" >&6;}
+-cat >$CONFIG_STATUS <<_ACEOF
+-#! $SHELL
+-# Generated by $as_me.
++
++echo creating $CONFIG_STATUS
++rm -f $CONFIG_STATUS
++cat > $CONFIG_STATUS <<EOF
++#! /bin/sh
++# Generated automatically by configure.
+ # Run this file to recreate the current configuration.
++# This directory was configured as follows,
++# on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
++#
++# $0 $ac_configure_args
++#
+ # Compiler output produced by configure, useful for debugging
+-# configure, is in config.log if it exists.
++# configure, is in ./config.log if it exists.
+
+-debug=false
+-ac_cs_recheck=false
+-ac_cs_silent=false
+-SHELL=\${CONFIG_SHELL-$SHELL}
+-_ACEOF
+-
+-cat >>$CONFIG_STATUS <<\_ACEOF
+-## --------------------- ##
+-## M4sh Initialization. ##
+-## --------------------- ##
+-
+-# Be Bourne compatible
+-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+- emulate sh
+- NULLCMD=:
+- # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+- # is contrary to our usage. Disable this feature.
+- alias -g '${1+"$@"}'='"$@"'
+-elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
+- set -o posix
+-fi
+-
+-# Support unset when possible.
+-if (FOO=FOO; unset FOO) >/dev/null 2>&1; then
+- as_unset=unset
+-else
+- as_unset=false
+-fi
+-
+-
+-# Work around bugs in pre-3.0 UWIN ksh.
+-$as_unset ENV MAIL MAILPATH
+-PS1='$ '
+-PS2='> '
+-PS4='+ '
+-
+-# NLS nuisances.
+-for as_var in \
+- LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
+- LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
+- LC_TELEPHONE LC_TIME
++ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]"
++for ac_option
+ do
+- if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then
+- eval $as_var=C; export $as_var
+- else
+- $as_unset $as_var
+- fi
++ case "\$ac_option" in
++ -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
++ echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion"
++ exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;;
++ -version | --version | --versio | --versi | --vers | --ver | --ve | --v)
++ echo "$CONFIG_STATUS generated by autoconf version 2.13"
++ exit 0 ;;
++ -help | --help | --hel | --he | --h)
++ echo "\$ac_cs_usage"; exit 0 ;;
++ *) echo "\$ac_cs_usage"; exit 1 ;;
++ esac
+ done
+
+-# Required to use basename.
+-if expr a : '\(a\)' >/dev/null 2>&1; then
+- as_expr=expr
+-else
+- as_expr=false
+-fi
++ac_given_srcdir=$srcdir
++ac_given_INSTALL="$INSTALL"
+
+-if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
+- as_basename=basename
+-else
+- as_basename=false
+-fi
++trap 'rm -fr `echo "config/config config/system.mak" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
++EOF
++cat >> $CONFIG_STATUS <<EOF
+
++# Protect against being on the right side of a sed subst in config.status.
++sed 's/%@/@@/; s/@%/@@/; s/%g\$/@g/; /@g\$/s/[\\\\&%]/\\\\&/g;
++ s/@@/%@/; s/@@/@%/; s/@g\$/%g/' > conftest.subs <<\\CEOF
++$ac_vpsub
++$extrasub
++s%@SHELL@%$SHELL%g
++s%@CFLAGS@%$CFLAGS%g
++s%@CPPFLAGS@%$CPPFLAGS%g
++s%@CXXFLAGS@%$CXXFLAGS%g
++s%@FFLAGS@%$FFLAGS%g
++s%@DEFS@%$DEFS%g
++s%@LDFLAGS@%$LDFLAGS%g
++s%@LIBS@%$LIBS%g
++s%@exec_prefix@%$exec_prefix%g
++s%@prefix@%$prefix%g
++s%@program_transform_name@%$program_transform_name%g
++s%@bindir@%$bindir%g
++s%@sbindir@%$sbindir%g
++s%@libexecdir@%$libexecdir%g
++s%@datadir@%$datadir%g
++s%@sysconfdir@%$sysconfdir%g
++s%@sharedstatedir@%$sharedstatedir%g
++s%@localstatedir@%$localstatedir%g
++s%@libdir@%$libdir%g
++s%@includedir@%$includedir%g
++s%@oldincludedir@%$oldincludedir%g
++s%@infodir@%$infodir%g
++s%@mandir@%$mandir%g
++s%@host@%$host%g
++s%@host_alias@%$host_alias%g
++s%@host_cpu@%$host_cpu%g
++s%@host_vendor@%$host_vendor%g
++s%@host_os@%$host_os%g
++s%@target@%$target%g
++s%@target_alias@%$target_alias%g
++s%@target_cpu@%$target_cpu%g
++s%@target_vendor@%$target_vendor%g
++s%@target_os@%$target_os%g
++s%@build@%$build%g
++s%@build_alias@%$build_alias%g
++s%@build_cpu@%$build_cpu%g
++s%@build_vendor@%$build_vendor%g
++s%@build_os@%$build_os%g
++s%@CC@%$CC%g
++s%@RANLIB@%$RANLIB%g
++s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g
++s%@INSTALL_SCRIPT@%$INSTALL_SCRIPT%g
++s%@INSTALL_DATA@%$INSTALL_DATA%g
++s%@AR@%$AR%g
++s%@TARGET_OS@%$TARGET_OS%g
++s%@TARGET_CPU@%$TARGET_CPU%g
++s%@M68KCC@%$M68KCC%g
++s%@LEXDEFS@%$LEXDEFS%g
++s%@VOXDEFS@%$VOXDEFS%g
++s%@HOST_OS@%$HOST_OS%g
++s%@HOST_CPU@%$HOST_CPU%g
++s%@OTHERLIBS@%$OTHERLIBS%g
++s%@SHFLAGS@%$SHFLAGS%g
++s%@MMAPTYPE@%$MMAPTYPE%g
++s%@STDIOTYPE@%$STDIOTYPE%g
++s%@CPP@%$CPP%g
++s%@AUDIODRIVER@%$AUDIODRIVER%g
++s%@AUDIODEFS@%$AUDIODEFS%g
++s%@AUDIOLIBS@%$AUDIOLIBS%g
++s%@FL_LANG@%$FL_LANG%g
++s%@FL_VOX@%$FL_VOX%g
++s%@FL_LEX@%$FL_LEX%g
++s%@EXEEXT@%$EXEEXT%g
+
+-# Name of the executable.
+-as_me=`$as_basename "$0" ||
+-$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+- X"$0" : 'X\(//\)$' \| \
+- X"$0" : 'X\(/\)$' \| \
+- . : '\(.\)' 2>/dev/null ||
+-echo X/"$0" |
+- sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
+- /^X\/\(\/\/\)$/{ s//\1/; q; }
+- /^X\/\(\/\).*/{ s//\1/; q; }
+- s/.*/./; q'`
++CEOF
++EOF
+
++cat >> $CONFIG_STATUS <<\EOF
+
+-# PATH needs CR, and LINENO needs CR and PATH.
+-# Avoid depending upon Character Ranges.
+-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+-as_cr_digits='0123456789'
+-as_cr_alnum=$as_cr_Letters$as_cr_digits
+-
+-# The user is always right.
+-if test "${PATH_SEPARATOR+set}" != set; then
+- echo "#! /bin/sh" >conf$$.sh
+- echo "exit 0" >>conf$$.sh
+- chmod +x conf$$.sh
+- if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+- PATH_SEPARATOR=';'
++# Split the substitutions into bite-sized pieces for seds with
++# small command number limits, like on Digital OSF/1 and HP-UX.
++ac_max_sed_cmds=90 # Maximum number of lines to put in a sed script.
++ac_file=1 # Number of current file.
++ac_beg=1 # First line for current file.
++ac_end=$ac_max_sed_cmds # Line after last line for current file.
++ac_more_lines=:
++ac_sed_cmds=""
++while $ac_more_lines; do
++ if test $ac_beg -gt 1; then
++ sed "1,${ac_beg}d; ${ac_end}q" conftest.subs > conftest.s$ac_file
+ else
+- PATH_SEPARATOR=:
++ sed "${ac_end}q" conftest.subs > conftest.s$ac_file
+ fi
+- rm -f conf$$.sh
+-fi
+-
+-
+- as_lineno_1=$LINENO
+- as_lineno_2=$LINENO
+- as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+- test "x$as_lineno_1" != "x$as_lineno_2" &&
+- test "x$as_lineno_3" = "x$as_lineno_2" || {
+- # Find who we are. Look in the path if we contain no path at all
+- # relative or not.
+- case $0 in
+- *[\\/]* ) as_myself=$0 ;;
+- *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+-for as_dir in $PATH
+-do
+- IFS=$as_save_IFS
+- test -z "$as_dir" && as_dir=.
+- test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+-done
+-
+- ;;
+- esac
+- # We did not find ourselves, most probably we were run as `sh COMMAND'
+- # in which case we are not to be found in the path.
+- if test "x$as_myself" = x; then
+- as_myself=$0
+- fi
+- if test ! -f "$as_myself"; then
+- { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5
+-echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;}
+- { (exit 1); exit 1; }; }
+- fi
+- case $CONFIG_SHELL in
+- '')
+- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+-for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+-do
+- IFS=$as_save_IFS
+- test -z "$as_dir" && as_dir=.
+- for as_base in sh bash ksh sh5; do
+- case $as_dir in
+- /*)
+- if ("$as_dir/$as_base" -c '
+- as_lineno_1=$LINENO
+- as_lineno_2=$LINENO
+- as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+- test "x$as_lineno_1" != "x$as_lineno_2" &&
+- test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then
+- $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }
+- $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }
+- CONFIG_SHELL=$as_dir/$as_base
+- export CONFIG_SHELL
+- exec "$CONFIG_SHELL" "$0" ${1+"$@"}
+- fi;;
+- esac
+- done
+-done
+-;;
+- esac
+-
+- # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
+- # uniformly replaced by the line number. The first 'sed' inserts a
+- # line-number line before each line; the second 'sed' does the real
+- # work. The second script uses 'N' to pair each line-number line
+- # with the numbered line, and appends trailing '-' during
+- # substitution so that $LINENO is not a special case at line end.
+- # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
+- # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-)
+- sed '=' <$as_myself |
+- sed '
+- N
+- s,$,-,
+- : loop
+- s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
+- t loop
+- s,-$,,
+- s,^['$as_cr_digits']*\n,,
+- ' >$as_me.lineno &&
+- chmod +x $as_me.lineno ||
+- { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5
+-echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;}
+- { (exit 1); exit 1; }; }
+-
+- # Don't try to exec as it changes $[0], causing all sort of problems
+- # (the dirname of $[0] is not the place where we might find the
+- # original and so on. Autoconf is especially sensible to this).
+- . ./$as_me.lineno
+- # Exit status is that of the last command.
+- exit
+-}
+-
+-
+-case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
+- *c*,-n*) ECHO_N= ECHO_C='
+-' ECHO_T=' ' ;;
+- *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;;
+- *) ECHO_N= ECHO_C='\c' ECHO_T= ;;
+-esac
+-
+-if expr a : '\(a\)' >/dev/null 2>&1; then
+- as_expr=expr
+-else
+- as_expr=false
+-fi
+-
+-rm -f conf$$ conf$$.exe conf$$.file
+-echo >conf$$.file
+-if ln -s conf$$.file conf$$ 2>/dev/null; then
+- # We could just check for DJGPP; but this test a) works b) is more generic
+- # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
+- if test -f conf$$.exe; then
+- # Don't use ln at all; we don't have any links
+- as_ln_s='cp -p'
++ if test ! -s conftest.s$ac_file; then
++ ac_more_lines=false
++ rm -f conftest.s$ac_file
+ else
+- as_ln_s='ln -s'
++ if test -z "$ac_sed_cmds"; then
++ ac_sed_cmds="sed -f conftest.s$ac_file"
++ else
++ ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file"
++ fi
++ ac_file=`expr $ac_file + 1`
++ ac_beg=$ac_end
++ ac_end=`expr $ac_end + $ac_max_sed_cmds`
+ fi
+-elif ln conf$$.file conf$$ 2>/dev/null; then
+- as_ln_s=ln
+-else
+- as_ln_s='cp -p'
+-fi
+-rm -f conf$$ conf$$.exe conf$$.file
+-
+-if mkdir -p . 2>/dev/null; then
+- as_mkdir_p=:
+-else
+- as_mkdir_p=false
+-fi
+-
+-as_executable_p="test -f"
+-
+-# Sed expression to map a string onto a valid CPP name.
+-as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g"
+-
+-# Sed expression to map a string onto a valid variable name.
+-as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g"
+-
+-
+-# IFS
+-# We need space, tab and new line, in precisely that order.
+-as_nl='
+-'
+-IFS=" $as_nl"
+-
+-# CDPATH.
+-$as_unset CDPATH
+-
+-exec 6>&1
+-
+-# Open the log real soon, to keep \$[0] and so on meaningful, and to
+-# report actual input values of CONFIG_FILES etc. instead of their
+-# values after options handling. Logging --version etc. is OK.
+-exec 5>>config.log
+-{
+- echo
+- sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+-## Running $as_me. ##
+-_ASBOX
+-} >&5
+-cat >&5 <<_CSEOF
+-
+-This file was extended by $as_me, which was
+-generated by GNU Autoconf 2.57. Invocation command line was
+-
+- CONFIG_FILES = $CONFIG_FILES
+- CONFIG_HEADERS = $CONFIG_HEADERS
+- CONFIG_LINKS = $CONFIG_LINKS
+- CONFIG_COMMANDS = $CONFIG_COMMANDS
+- $ $0 $@
+-
+-_CSEOF
+-echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5
+-echo >&5
+-_ACEOF
+-
+-# Files that config.status was made for.
+-if test -n "$ac_config_files"; then
+- echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS
+-fi
+-
+-if test -n "$ac_config_headers"; then
+- echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS
+-fi
+-
+-if test -n "$ac_config_links"; then
+- echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS
+-fi
+-
+-if test -n "$ac_config_commands"; then
+- echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS
+-fi
+-
+-cat >>$CONFIG_STATUS <<\_ACEOF
+-
+-ac_cs_usage="\
+-\`$as_me' instantiates files from templates according to the
+-current configuration.
+-
+-Usage: $0 [OPTIONS] [FILE]...
+-
+- -h, --help print this help, then exit
+- -V, --version print version number, then exit
+- -q, --quiet do not print progress messages
+- -d, --debug don't remove temporary files
+- --recheck update $as_me by reconfiguring in the same conditions
+- --file=FILE[:TEMPLATE]
+- instantiate the configuration file FILE
+-
+-Configuration files:
+-$config_files
+-
+-Report bugs to <bug-autoconf@gnu.org>."
+-_ACEOF
+-
+-cat >>$CONFIG_STATUS <<_ACEOF
+-ac_cs_version="\\
+-config.status
+-configured by $0, generated by GNU Autoconf 2.57,
+- with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
+-
+-Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001
+-Free Software Foundation, Inc.
+-This config.status script is free software; the Free Software Foundation
+-gives unlimited permission to copy, distribute and modify it."
+-srcdir=$srcdir
+-INSTALL="$INSTALL"
+-_ACEOF
+-
+-cat >>$CONFIG_STATUS <<\_ACEOF
+-# If no file are specified by the user, then we need to provide default
+-# value. By we need to know if files were specified by the user.
+-ac_need_defaults=:
+-while test $# != 0
+-do
+- case $1 in
+- --*=*)
+- ac_option=`expr "x$1" : 'x\([^=]*\)='`
+- ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'`
+- ac_shift=:
+- ;;
+- -*)
+- ac_option=$1
+- ac_optarg=$2
+- ac_shift=shift
+- ;;
+- *) # This is not an option, so the user has probably given explicit
+- # arguments.
+- ac_option=$1
+- ac_need_defaults=false;;
+- esac
+-
+- case $ac_option in
+- # Handling of the options.
+-_ACEOF
+-cat >>$CONFIG_STATUS <<\_ACEOF
+- -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+- ac_cs_recheck=: ;;
+- --version | --vers* | -V )
+- echo "$ac_cs_version"; exit 0 ;;
+- --he | --h)
+- # Conflict between --help and --header
+- { { echo "$as_me:$LINENO: error: ambiguous option: $1
+-Try \`$0 --help' for more information." >&5
+-echo "$as_me: error: ambiguous option: $1
+-Try \`$0 --help' for more information." >&2;}
+- { (exit 1); exit 1; }; };;
+- --help | --hel | -h )
+- echo "$ac_cs_usage"; exit 0 ;;
+- --debug | --d* | -d )
+- debug=: ;;
+- --file | --fil | --fi | --f )
+- $ac_shift
+- CONFIG_FILES="$CONFIG_FILES $ac_optarg"
+- ac_need_defaults=false;;
+- --header | --heade | --head | --hea )
+- $ac_shift
+- CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg"
+- ac_need_defaults=false;;
+- -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+- | -silent | --silent | --silen | --sile | --sil | --si | --s)
+- ac_cs_silent=: ;;
+-
+- # This is an error.
+- -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1
+-Try \`$0 --help' for more information." >&5
+-echo "$as_me: error: unrecognized option: $1
+-Try \`$0 --help' for more information." >&2;}
+- { (exit 1); exit 1; }; } ;;
+-
+- *) ac_config_targets="$ac_config_targets $1" ;;
+-
+- esac
+- shift
+ done
+-
+-ac_configure_extra_args=
+-
+-if $ac_cs_silent; then
+- exec 6>/dev/null
+- ac_configure_extra_args="$ac_configure_extra_args --silent"
++if test -z "$ac_sed_cmds"; then
++ ac_sed_cmds=cat
+ fi
++EOF
+
+-_ACEOF
+-cat >>$CONFIG_STATUS <<_ACEOF
+-if \$ac_cs_recheck; then
+- echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6
+- exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+-fi
++cat >> $CONFIG_STATUS <<EOF
+
+-_ACEOF
+-
+-
+-
+-
+-
+-cat >>$CONFIG_STATUS <<\_ACEOF
+-for ac_config_target in $ac_config_targets
+-do
+- case "$ac_config_target" in
+- # Handling of arguments.
+- "config/config" ) CONFIG_FILES="$CONFIG_FILES config/config" ;;
+- "config/system.mak" ) CONFIG_FILES="$CONFIG_FILES config/system.mak" ;;
+- *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
+-echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
+- { (exit 1); exit 1; }; };;
++CONFIG_FILES=\${CONFIG_FILES-"config/config config/system.mak"}
++EOF
++cat >> $CONFIG_STATUS <<\EOF
++for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then
++ # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
++ case "$ac_file" in
++ *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'`
++ ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
++ *) ac_file_in="${ac_file}.in" ;;
+ esac
+-done
+
+-# If the user did not use the arguments to specify the items to instantiate,
+-# then the envvar interface is used. Set only those that are not.
+-# We use the long form for the default assignment because of an extremely
+-# bizarre bug on SunOS 4.1.3.
+-if $ac_need_defaults; then
+- test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
+-fi
++ # Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories.
+
+-# Have a temporary directory for convenience. Make it in the build tree
+-# simply because there is no reason to put it here, and in addition,
+-# creating and moving files from /tmp can sometimes cause problems.
+-# Create a temporary directory, and hook for its removal unless debugging.
+-$debug ||
+-{
+- trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0
+- trap '{ (exit 1); exit 1; }' 1 2 13 15
+-}
+-
+-# Create a (secure) tmp directory for tmp files.
+-
+-{
+- tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` &&
+- test -n "$tmp" && test -d "$tmp"
+-} ||
+-{
+- tmp=./confstat$$-$RANDOM
+- (umask 077 && mkdir $tmp)
+-} ||
+-{
+- echo "$me: cannot create a temporary directory in ." >&2
+- { (exit 1); exit 1; }
+-}
+-
+-_ACEOF
+-
+-cat >>$CONFIG_STATUS <<_ACEOF
+-
+-#
+-# CONFIG_FILES section.
+-#
+-
+-# No need to generate the scripts if there are no CONFIG_FILES.
+-# This happens for instance when ./config.status config.h
+-if test -n "\$CONFIG_FILES"; then
+- # Protect against being on the right side of a sed subst in config.status.
+- sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g;
+- s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF
+-s,@SHELL@,$SHELL,;t t
+-s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t
+-s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t
+-s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t
+-s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t
+-s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t
+-s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t
+-s,@exec_prefix@,$exec_prefix,;t t
+-s,@prefix@,$prefix,;t t
+-s,@program_transform_name@,$program_transform_name,;t t
+-s,@bindir@,$bindir,;t t
+-s,@sbindir@,$sbindir,;t t
+-s,@libexecdir@,$libexecdir,;t t
+-s,@datadir@,$datadir,;t t
+-s,@sysconfdir@,$sysconfdir,;t t
+-s,@sharedstatedir@,$sharedstatedir,;t t
+-s,@localstatedir@,$localstatedir,;t t
+-s,@libdir@,$libdir,;t t
+-s,@includedir@,$includedir,;t t
+-s,@oldincludedir@,$oldincludedir,;t t
+-s,@infodir@,$infodir,;t t
+-s,@mandir@,$mandir,;t t
+-s,@build_alias@,$build_alias,;t t
+-s,@host_alias@,$host_alias,;t t
+-s,@target_alias@,$target_alias,;t t
+-s,@DEFS@,$DEFS,;t t
+-s,@ECHO_C@,$ECHO_C,;t t
+-s,@ECHO_N@,$ECHO_N,;t t
+-s,@ECHO_T@,$ECHO_T,;t t
+-s,@LIBS@,$LIBS,;t t
+-s,@build@,$build,;t t
+-s,@build_cpu@,$build_cpu,;t t
+-s,@build_vendor@,$build_vendor,;t t
+-s,@build_os@,$build_os,;t t
+-s,@host@,$host,;t t
+-s,@host_cpu@,$host_cpu,;t t
+-s,@host_vendor@,$host_vendor,;t t
+-s,@host_os@,$host_os,;t t
+-s,@target@,$target,;t t
+-s,@target_cpu@,$target_cpu,;t t
+-s,@target_vendor@,$target_vendor,;t t
+-s,@target_os@,$target_os,;t t
+-s,@CC@,$CC,;t t
+-s,@CFLAGS@,$CFLAGS,;t t
+-s,@LDFLAGS@,$LDFLAGS,;t t
+-s,@CPPFLAGS@,$CPPFLAGS,;t t
+-s,@ac_ct_CC@,$ac_ct_CC,;t t
+-s,@EXEEXT@,$EXEEXT,;t t
+-s,@OBJEXT@,$OBJEXT,;t t
+-s,@RANLIB@,$RANLIB,;t t
+-s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t
+-s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t
+-s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t
+-s,@INSTALL_DATA@,$INSTALL_DATA,;t t
+-s,@AR@,$AR,;t t
+-s,@ac_ct_AR@,$ac_ct_AR,;t t
+-s,@TARGET_OS@,$TARGET_OS,;t t
+-s,@TARGET_CPU@,$TARGET_CPU,;t t
+-s,@M68KCC@,$M68KCC,;t t
+-s,@LEXDEFS@,$LEXDEFS,;t t
+-s,@VOXDEFS@,$VOXDEFS,;t t
+-s,@HOST_OS@,$HOST_OS,;t t
+-s,@HOST_CPU@,$HOST_CPU,;t t
+-s,@OTHERLIBS@,$OTHERLIBS,;t t
+-s,@SHFLAGS@,$SHFLAGS,;t t
+-s,@MMAPTYPE@,$MMAPTYPE,;t t
+-s,@STDIOTYPE@,$STDIOTYPE,;t t
+-s,@CPP@,$CPP,;t t
+-s,@EGREP@,$EGREP,;t t
+-s,@AUDIODRIVER@,$AUDIODRIVER,;t t
+-s,@AUDIODEFS@,$AUDIODEFS,;t t
+-s,@AUDIOLIBS@,$AUDIOLIBS,;t t
+-s,@FL_LANG@,$FL_LANG,;t t
+-s,@FL_VOX@,$FL_VOX,;t t
+-s,@FL_LEX@,$FL_LEX,;t t
+-s,@LIBOBJS@,$LIBOBJS,;t t
+-s,@LTLIBOBJS@,$LTLIBOBJS,;t t
+-CEOF
+-
+-_ACEOF
+-
+- cat >>$CONFIG_STATUS <<\_ACEOF
+- # Split the substitutions into bite-sized pieces for seds with
+- # small command number limits, like on Digital OSF/1 and HP-UX.
+- ac_max_sed_lines=48
+- ac_sed_frag=1 # Number of current file.
+- ac_beg=1 # First line for current file.
+- ac_end=$ac_max_sed_lines # Line after last line for current file.
+- ac_more_lines=:
+- ac_sed_cmds=
+- while $ac_more_lines; do
+- if test $ac_beg -gt 1; then
+- sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
+- else
+- sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
+- fi
+- if test ! -s $tmp/subs.frag; then
+- ac_more_lines=false
+- else
+- # The purpose of the label and of the branching condition is to
+- # speed up the sed processing (if there are no `@' at all, there
+- # is no need to browse any of the substitutions).
+- # These are the two extra sed commands mentioned above.
+- (echo ':t
+- /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed
+- if test -z "$ac_sed_cmds"; then
+- ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed"
+- else
+- ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed"
+- fi
+- ac_sed_frag=`expr $ac_sed_frag + 1`
+- ac_beg=$ac_end
+- ac_end=`expr $ac_end + $ac_max_sed_lines`
+- fi
+- done
+- if test -z "$ac_sed_cmds"; then
+- ac_sed_cmds=cat
++ # Remove last slash and all that follows it. Not all systems have dirname.
++ ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'`
++ if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then
++ # The file is in a subdirectory.
++ test ! -d "$ac_dir" && mkdir "$ac_dir"
++ ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`"
++ # A "../" for each directory in $ac_dir_suffix.
++ ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'`
++ else
++ ac_dir_suffix= ac_dots=
+ fi
+-fi # test -n "$CONFIG_FILES"
+
+-_ACEOF
+-cat >>$CONFIG_STATUS <<\_ACEOF
+-for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue
+- # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
+- case $ac_file in
+- - | *:- | *:-:* ) # input from stdin
+- cat >$tmp/stdin
+- ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+- *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+- * ) ac_file_in=$ac_file.in ;;
++ case "$ac_given_srcdir" in
++ .) srcdir=.
++ if test -z "$ac_dots"; then top_srcdir=.
++ else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;;
++ /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;;
++ *) # Relative path.
++ srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix"
++ top_srcdir="$ac_dots$ac_given_srcdir" ;;
+ esac
+
+- # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories.
+- ac_dir=`(dirname "$ac_file") 2>/dev/null ||
+-$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+- X"$ac_file" : 'X\(//\)[^/]' \| \
+- X"$ac_file" : 'X\(//\)$' \| \
+- X"$ac_file" : 'X\(/\)' \| \
+- . : '\(.\)' 2>/dev/null ||
+-echo X"$ac_file" |
+- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+- /^X\(\/\/\)$/{ s//\1/; q; }
+- /^X\(\/\).*/{ s//\1/; q; }
+- s/.*/./; q'`
+- { if $as_mkdir_p; then
+- mkdir -p "$ac_dir"
+- else
+- as_dir="$ac_dir"
+- as_dirs=
+- while test ! -d "$as_dir"; do
+- as_dirs="$as_dir $as_dirs"
+- as_dir=`(dirname "$as_dir") 2>/dev/null ||
+-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+- X"$as_dir" : 'X\(//\)[^/]' \| \
+- X"$as_dir" : 'X\(//\)$' \| \
+- X"$as_dir" : 'X\(/\)' \| \
+- . : '\(.\)' 2>/dev/null ||
+-echo X"$as_dir" |
+- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+- /^X\(\/\/\)$/{ s//\1/; q; }
+- /^X\(\/\).*/{ s//\1/; q; }
+- s/.*/./; q'`
+- done
+- test ! -n "$as_dirs" || mkdir $as_dirs
+- fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
+-echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
+- { (exit 1); exit 1; }; }; }
++ case "$ac_given_INSTALL" in
++ [/$]*) INSTALL="$ac_given_INSTALL" ;;
++ *) INSTALL="$ac_dots$ac_given_INSTALL" ;;
++ esac
+
+- ac_builddir=.
+-
+-if test "$ac_dir" != .; then
+- ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+- # A "../" for each directory in $ac_dir_suffix.
+- ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
+-else
+- ac_dir_suffix= ac_top_builddir=
+-fi
+-
+-case $srcdir in
+- .) # No --srcdir option. We are building in place.
+- ac_srcdir=.
+- if test -z "$ac_top_builddir"; then
+- ac_top_srcdir=.
+- else
+- ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
+- fi ;;
+- [\\/]* | ?:[\\/]* ) # Absolute path.
+- ac_srcdir=$srcdir$ac_dir_suffix;
+- ac_top_srcdir=$srcdir ;;
+- *) # Relative path.
+- ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
+- ac_top_srcdir=$ac_top_builddir$srcdir ;;
+-esac
+-# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be
+-# absolute.
+-ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd`
+-ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd`
+-ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd`
+-ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd`
+-
+-
+- case $INSTALL in
+- [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
+- *) ac_INSTALL=$ac_top_builddir$INSTALL ;;
++ echo creating "$ac_file"
++ rm -f "$ac_file"
++ configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure."
++ case "$ac_file" in
++ *Makefile*) ac_comsub="1i\\
++# $configure_input" ;;
++ *) ac_comsub= ;;
+ esac
+
+- if test x"$ac_file" != x-; then
+- { echo "$as_me:$LINENO: creating $ac_file" >&5
+-echo "$as_me: creating $ac_file" >&6;}
+- rm -f "$ac_file"
+- fi
+- # Let's still pretend it is `configure' which instantiates (i.e., don't
+- # use $as_me), people would be surprised to read:
+- # /* config.h. Generated by config.status. */
+- if test x"$ac_file" = x-; then
+- configure_input=
+- else
+- configure_input="$ac_file. "
+- fi
+- configure_input=$configure_input"Generated from `echo $ac_file_in |
+- sed 's,.*/,,'` by configure."
++ ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"`
++ sed -e "$ac_comsub
++s%@configure_input@%$configure_input%g
++s%@srcdir@%$srcdir%g
++s%@top_srcdir@%$top_srcdir%g
++s%@INSTALL@%$INSTALL%g
++" $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file
++fi; done
++rm -f conftest.s*
+
+- # First look for the input files in the build tree, otherwise in the
+- # src tree.
+- ac_file_inputs=`IFS=:
+- for f in $ac_file_in; do
+- case $f in
+- -) echo $tmp/stdin ;;
+- [\\/$]*)
+- # Absolute (can't be DOS-style, as IFS=:)
+- test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+-echo "$as_me: error: cannot find input file: $f" >&2;}
+- { (exit 1); exit 1; }; }
+- echo $f;;
+- *) # Relative
+- if test -f "$f"; then
+- # Build tree
+- echo $f
+- elif test -f "$srcdir/$f"; then
+- # Source tree
+- echo $srcdir/$f
+- else
+- # /dev/null tree
+- { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+-echo "$as_me: error: cannot find input file: $f" >&2;}
+- { (exit 1); exit 1; }; }
+- fi;;
+- esac
+- done` || { (exit 1); exit 1; }
+-_ACEOF
+-cat >>$CONFIG_STATUS <<_ACEOF
+- sed "$ac_vpsub
+-$extrasub
+-_ACEOF
+-cat >>$CONFIG_STATUS <<\_ACEOF
+-:t
+-/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+-s,@configure_input@,$configure_input,;t t
+-s,@srcdir@,$ac_srcdir,;t t
+-s,@abs_srcdir@,$ac_abs_srcdir,;t t
+-s,@top_srcdir@,$ac_top_srcdir,;t t
+-s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t
+-s,@builddir@,$ac_builddir,;t t
+-s,@abs_builddir@,$ac_abs_builddir,;t t
+-s,@top_builddir@,$ac_top_builddir,;t t
+-s,@abs_top_builddir@,$ac_abs_top_builddir,;t t
+-s,@INSTALL@,$ac_INSTALL,;t t
+-" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out
+- rm -f $tmp/stdin
+- if test x"$ac_file" != x-; then
+- mv $tmp/out $ac_file
+- else
+- cat $tmp/out
+- rm -f $tmp/out
+- fi
++EOF
++cat >> $CONFIG_STATUS <<EOF
+
+-done
+-_ACEOF
++EOF
++cat >> $CONFIG_STATUS <<\EOF
+
+-cat >>$CONFIG_STATUS <<\_ACEOF
+-
+-{ (exit 0); exit 0; }
+-_ACEOF
++exit 0
++EOF
+ chmod +x $CONFIG_STATUS
+-ac_clean_files=$ac_clean_files_save
++rm -fr confdefs* $ac_clean_files
++test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1
+
+-
+-# configure is writing to config.log, and then calls config.status.
+-# config.status does its own redirection, appending to config.log.
+-# Unfortunately, on DOS this fails, as config.log is still kept open
+-# by configure, so config.status won't be able to write to it; its
+-# output is simply discarded. So we exec the FD to /dev/null,
+-# effectively closing config.log, so it can be properly (re)opened and
+-# appended to by config.status. When coming back to configure, we
+-# need to make the FD available again.
+-if test "$no_create" != yes; then
+- ac_cs_success=:
+- ac_config_status_args=
+- test "$silent" = yes &&
+- ac_config_status_args="$ac_config_status_args --quiet"
+- exec 5>/dev/null
+- $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
+- exec 5>>config.log
+- # Use ||, not &&, to avoid exiting from the if with $? = 1, which
+- # would make configure fail if this is the last instruction.
+- $ac_cs_success || { (exit 1); exit 1; }
+-fi
+-
+Index: configure.in
+===================================================================
+--- flite-1.3-release/configure.in (.../flite-1.3-orig) (revision 7)
++++ flite-1.3-release/configure.in (.../release-1.2) (revision 7)
+@@ -206,10 +206,10 @@
+ AC_CHECK_HEADER(sys/audioio.h,
+ [AUDIODRIVER="sun"
+ AUDIODEFS=-DCST_AUDIO_SUNOS])
+-dnl AC_CHECK_HEADER(sys/asoundlib.h,
+-dnl [AUDIODRIVER="alsa"
+-dnl AUDIODEFS=-DCST_AUDIO_ALSA
+-dnl AUDIOLIBS=-lasound])
++ AC_CHECK_HEADER(alsa/asoundlib.h,
++ [AUDIODRIVER="alsa"
++ AUDIODEFS=-DCST_AUDIO_ALSA
++ AUDIOLIBS=-lasound])
+ AC_CHECK_HEADER(mmsystem.h,
+ [AUDIODRIVER="wince"
+ AUDIODEFS=-DCST_AUDIO_WINCE
+Index: src/hrg/Makefile
+===================================================================
+--- flite-1.3-release/src/hrg/Makefile (.../flite-1.3-orig) (revision 7)
++++ flite-1.3-release/src/hrg/Makefile (.../release-1.2) (revision 7)
+@@ -39,9 +39,14 @@
+ BUILD_DIRS =
+ ALL_DIRS=
+ H =
++include $(TOP)/config/config
+ SRCS = cst_utterance.c cst_relation.c cst_item.c cst_ffeature.c \
+ cst_rel_io.c
+-OBJS = $(SRCS:.c=.o)
++ifdef SHFLAGS
++OBJS := $(SRCS:.c=.os)
++else
++OBJS := $(SRCS:.c=.o)
++endif
+ FILES = Makefile $(H) $(SRCS)
+ LIBNAME = flite
+
+Index: src/utils/Makefile
+===================================================================
+--- flite-1.3-release/src/utils/Makefile (.../flite-1.3-orig) (revision 7)
++++ flite-1.3-release/src/utils/Makefile (.../release-1.2) (revision 7)
+@@ -44,8 +44,13 @@
+ cst_tokenstream.c cst_val.c cst_features.c \
+ cst_endian.c cst_socket.c cst_val_const.c \
+ cst_val_user.c cst_args.c
++ifdef SHFLAGS
++OBJS := $(SRCS:.c=.os) $(MMAPTYPE:%=cst_mmap_%.os) \
++ $(STDIOTYPE:%=cst_file_%.os)
++else
+ OBJS := $(SRCS:.c=.o) $(MMAPTYPE:%=cst_mmap_%.o) \
+ $(STDIOTYPE:%=cst_file_%.o)
++endif
+ FILES = Makefile $(H) $(SRCS) \
+ cst_mmap_posix.c cst_mmap_win32.c cst_mmap_none.c \
+ cst_file_stdio.c cst_file_wince.c cst_file_palmos.c
+Index: src/audio/au_alsa.c
+===================================================================
+--- flite-1.3-release/src/audio/au_alsa.c (.../flite-1.3-orig) (revision 0)
++++ flite-1.3-release/src/audio/au_alsa.c (.../release-1.2) (revision 7)
+@@ -0,0 +1,311 @@
++/*************************************************************************/
++/* */
++/* Language Technologies Institute */
++/* Carnegie Mellon University */
++/* Copyright (c) 2000 */
++/* All Rights Reserved. */
++/* */
++/* Permission is hereby granted, free of charge, to use and distribute */
++/* this software and its documentation without restriction, including */
++/* without limitation the rights to use, copy, modify, merge, publish, */
++/* distribute, sublicense, and/or sell copies of this work, and to */
++/* permit persons to whom this work is furnished to do so, subject to */
++/* the following conditions: */
++/* 1. The code must retain the above copyright notice, this list of */
++/* conditions and the following disclaimer. */
++/* 2. Any modifications must be clearly marked as such. */
++/* 3. Original authors' names are not deleted. */
++/* 4. The authors' names are not used to endorse or promote products */
++/* derived from this software without specific prior written */
++/* permission. */
++/* */
++/* CARNEGIE MELLON UNIVERSITY AND THE CONTRIBUTORS TO THIS WORK */
++/* DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING */
++/* ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT */
++/* SHALL CARNEGIE MELLON UNIVERSITY NOR THE CONTRIBUTORS BE LIABLE */
++/* FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES */
++/* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN */
++/* AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, */
++/* ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF */
++/* THIS SOFTWARE. */
++/* */
++/*********************************************************************** */
++/* Author: Lukas Loehrer ( */
++/* Date: January 2005 */
++/*************************************************************************/
++/* */
++/* Native access to alsa audio devices on Linux */
++/* Tested with libasound version 1.0.10 */
++/*************************************************************************/
++
++#include <stdlib.h>
++#include <unistd.h>
++#include <sys/types.h>
++#include <assert.h>
++#include <errno.h>
++
++#include "cst_string.h"
++#include "cst_wave.h"
++#include "cst_audio.h"
++
++#include <alsa/asoundlib.h>
++
++
++/*static char *pcm_dev_name = "hw:0,0"; */
++static char *pcm_dev_name ="default";
++
++static inline void print_pcm_state(snd_pcm_t *handle, char *msg)
++{
++ fprintf(stderr, "PCM state at %s = %s\n", msg,
++ snd_pcm_state_name(snd_pcm_state(handle)));
++}
++
++cst_audiodev *audio_open_alsa(int sps, int channels, cst_audiofmt fmt)
++{
++ cst_audiodev *ad;
++ unsigned int real_rate;
++ int err;
++
++ /* alsa specific stuff */
++ snd_pcm_t *pcm_handle;
++ snd_pcm_stream_t stream = SND_PCM_STREAM_PLAYBACK;
++ snd_pcm_hw_params_t *hwparams;
++ snd_pcm_format_t format;
++ snd_pcm_access_t access = SND_PCM_ACCESS_RW_INTERLEAVED;
++
++ /* Allocate the snd_pcm_hw_params_t structure on the stack. */
++ snd_pcm_hw_params_alloca(&hwparams);
++
++ /* Open pcm device */
++ err = snd_pcm_open(&pcm_handle, pcm_dev_name, stream, 0);
++ if (err < 0)
++ {
++ cst_errmsg("audio_open_alsa: failed to open audio device %s. %s\n",
++ pcm_dev_name, snd_strerror(err));
++ return NULL;
++ }
++
++ /* Init hwparams with full configuration space */
++ err = snd_pcm_hw_params_any(pcm_handle, hwparams);
++ if (err < 0)
++ {
++ snd_pcm_close(pcm_handle);
++ cst_errmsg("audio_open_alsa: failed to get hardware parameters from audio device. %s\n", snd_strerror(err));
++ return NULL;
++ }
++
++ /* Set access mode */
++ err = snd_pcm_hw_params_set_access(pcm_handle, hwparams, access);
++ if (err < 0)
++ {
++ snd_pcm_close(pcm_handle);
++ cst_errmsg("audio_open_alsa: failed to set access mode. %s.\n", snd_strerror(err));
++ return NULL;
++ }
++
++ /* Determine matching alsa sample format */
++ /* This could be implemented in a more */
++ /* flexible way (byte order conversion). */
++ switch (fmt)
++ {
++ case CST_AUDIO_LINEAR16:
++ if (CST_LITTLE_ENDIAN)
++ format = SND_PCM_FORMAT_S16_LE;
++ else
++ format = SND_PCM_FORMAT_S16_BE;
++ break;
++ case CST_AUDIO_LINEAR8:
++ format = SND_PCM_FORMAT_U8;
++ break;
++ case CST_AUDIO_MULAW:
++ format = SND_PCM_FORMAT_MU_LAW;
++ break;
++ default:
++ snd_pcm_close(pcm_handle);
++ cst_errmsg("audio_open_alsa: failed to find suitable format.\n");
++ return NULL;
++ break;
++ }
++
++ /* Set samble format */
++ err = snd_pcm_hw_params_set_format(pcm_handle, hwparams, format);
++ if (err <0)
++ {
++ snd_pcm_close(pcm_handle);
++ cst_errmsg("audio_open_alsa: failed to set format. %s.\n", snd_strerror(err));
++ return NULL;
++ }
++
++ /* Set sample rate near the disired rate */
++ real_rate = sps;
++ err = snd_pcm_hw_params_set_rate_near(pcm_handle, hwparams, &real_rate, 0);
++ if (err < 0)
++ {
++ snd_pcm_close(pcm_handle);
++ cst_errmsg("audio_open_alsa: failed to set sample rate near %d. %s.\n", sps, snd_strerror(err));
++ return NULL;
++ }
++ /*FIXME: This is probably too strict */
++ assert(sps == real_rate);
++
++ /* Set number of channels */
++ assert(channels >0);
++ err = snd_pcm_hw_params_set_channels(pcm_handle, hwparams, channels);
++ if (err < 0)
++ {
++ snd_pcm_close(pcm_handle);
++ cst_errmsg("audio_open_alsa: failed to set number of channels to %d. %s.\n", channels, snd_strerror(err));
++ return NULL;
++ }
++
++ /* Commit hardware parameters */
++ err = snd_pcm_hw_params(pcm_handle, hwparams);
++ if (err < 0)
++ {
++ snd_pcm_close(pcm_handle);
++ cst_errmsg("audio_open_alsa: failed to set hw parameters. %s.\n", snd_strerror(err));
++ return NULL;
++ }
++
++ /* Make sure the device is ready to accept data */
++ assert(snd_pcm_state(pcm_handle) == SND_PCM_STATE_PREPARED);
++
++ /* Write hardware parameters to flite audio device data structure */
++ ad = cst_alloc(cst_audiodev, 1);
++ assert(ad != NULL);
++ ad->real_sps = ad->sps = sps;
++ ad->real_channels = ad->channels = channels;
++ ad->real_fmt = ad->fmt = fmt;
++ ad->platform_data = (void *) pcm_handle;
++
++ return ad;
++}
++
++int audio_close_alsa(cst_audiodev *ad)
++{
++ int result;
++ snd_pcm_t *pcm_handle;
++
++ if (ad == NULL)
++ return 0;
++
++ pcm_handle = (snd_pcm_t *) ad->platform_data;
++ result = snd_pcm_close(pcm_handle);
++ if (result < 0)
++ {
++ cst_errmsg("audio_close_alsa: Error: %s.\n", snd_strerror(result));
++ }
++ cst_free(ad);
++ return result;
++}
++
++/* Returns zero if recovery was successful. */
++static int recover_from_error(snd_pcm_t *pcm_handle, ssize_t res)
++{
++ if (res == -EPIPE) /* xrun */
++ {
++ res = snd_pcm_prepare(pcm_handle);
++ if (res < 0)
++ {
++ /* Failed to recover from xrun */
++ cst_errmsg("recover_from_write_error: failed to recover from xrun. %s\n.", snd_strerror(res));
++ return res;
++ }
++ }
++ else if (res == -ESTRPIPE) /* Suspend */
++ {
++ while ((res = snd_pcm_resume(pcm_handle)) == -EAGAIN)
++ {
++ snd_pcm_wait(pcm_handle, 1000);
++ }
++ if (res < 0)
++ {
++ res = snd_pcm_prepare(pcm_handle);
++ if (res <0)
++ {
++ /* Resume failed */
++ cst_errmsg("audio_recover_from_write_error: failed to resume after suspend. %s\n.", snd_strerror(res));
++ return res;
++ }
++ }
++ }
++ else if (res < 0)
++ {
++ /* Unknown failure */
++ cst_errmsg("audio_recover_from_write_error: %s.\n", snd_strerror(res));
++ return res;
++ }
++ return 0;
++}
++
++int audio_write_alsa(cst_audiodev *ad, void *samples, int num_bytes)
++{
++ size_t frame_size;
++ ssize_t num_frames, res;
++ snd_pcm_t *pcm_handle;
++ char *buf = (char *) samples;
++
++ /* Determine frame size in bytes */
++ frame_size = audio_bps(ad->real_fmt) * ad->real_channels;
++ /* Require that only complete frames are handed in */
++ assert((num_bytes % frame_size) == 0);
++ num_frames = num_bytes / frame_size;
++ pcm_handle = (snd_pcm_t *) ad->platform_data;
++
++ while (num_frames > 0)
++ {
++ res = snd_pcm_writei(pcm_handle, buf, num_frames);
++ if (res != num_frames)
++ {
++ if (res == -EAGAIN || (res > 0 && res < num_frames))
++ {
++ snd_pcm_wait(pcm_handle, 100);
++ }
++ else if (recover_from_error(pcm_handle, res) < 0)
++ {
++ return -1;
++ }
++ }
++
++ if (res >0)
++ {
++ num_frames -= res;
++ buf += res * frame_size;
++ }
++ }
++ return num_bytes;
++}
++
++int audio_flush_alsa(cst_audiodev *ad)
++{
++ int result;
++ result = snd_pcm_drain((snd_pcm_t *) ad->platform_data);
++ if (result < 0)
++ {
++ cst_errmsg("audio_flush_alsa: Error: %s.\n", snd_strerror(result));
++ }
++ /* Prepare device for more data */
++ result = snd_pcm_prepare((snd_pcm_t *) ad->platform_data);
++if (result < 0)
++ {
++ cst_errmsg("audio_flush_alsa: Error: %s.\n", snd_strerror(result));
++ }
++ return result;
++}
++
++int audio_drain_alsa(cst_audiodev *ad)
++{
++ int result;
++ result = snd_pcm_drop((snd_pcm_t *) ad->platform_data);
++ if (result < 0)
++ {
++ cst_errmsg("audio_drain_alsa: Error: %s.\n", snd_strerror(result));
++ }
++/* Prepare device for more data */
++ result = snd_pcm_prepare((snd_pcm_t *) ad->platform_data);
++if (result < 0)
++ {
++ cst_errmsg("audio_drain_alsa: Error: %s.\n", snd_strerror(result));
++ }
++ return result;
++}
+Index: src/audio/Makefile
+===================================================================
+--- flite-1.3-release/src/audio/Makefile (.../flite-1.3-orig) (revision 7)
++++ flite-1.3-release/src/audio/Makefile (.../release-1.2) (revision 7)
+@@ -43,9 +43,13 @@
+
+ BASESRCS = auclient.c auserver.c audio.c
+ SRCS = $(BASESRCS) $(AUDIODRIVER:%=au_%.c)
+-OBJS = $(SRCS:.c=.o)
++ifdef SHFLAGS
++OBJS := $(SRCS:.c=.os)
++else
++OBJS := $(SRCS:.c=.o)
++endif
+ FILES = Makefile $(H) $(BASESRCS) au_command.c au_none.c \
+- au_oss.c au_sun.c au_wince.c au_palmos.c
++ au_oss.c au_sun.c au_wince.c au_palmos.c au_alsa.c
+ LIBNAME = flite
+
+ LOCAL_INCLUDES = -I. $(AUDIODEFS)
+Index: src/lexicon/Makefile
+===================================================================
+--- flite-1.3-release/src/lexicon/Makefile (.../flite-1.3-orig) (revision 7)
++++ flite-1.3-release/src/lexicon/Makefile (.../release-1.2) (revision 7)
+@@ -38,8 +38,13 @@
+ DIRNAME=src/lexicon
+ BUILD_DIRS =
+ ALL_DIRS=
++include $(TOP)/config/config
+ SRCS = cst_lexicon.c cst_lts.c cst_lts_rewrites.c
+-OBJS = $(SRCS:.c=.o)
++ifdef SHFLAGS
++OBJS := $(SRCS:.c=.os)
++else
++OBJS := $(SRCS:.c=.o)
++endif
+ FILES = Makefile $(SRCS)
+ LIBNAME = flite
+
+Index: src/synth/Makefile
+===================================================================
+--- flite-1.3-release/src/synth/Makefile (.../flite-1.3-orig) (revision 7)
++++ flite-1.3-release/src/synth/Makefile (.../release-1.2) (revision 7)
+@@ -38,9 +38,14 @@
+ DIRNAME=src/synth
+ BUILD_DIRS =
+ ALL_DIRS=
++include $(TOP)/config/config
+ SRCS = cst_synth.c cst_utt_utils.c cst_voice.c cst_phoneset.c \
+ flite.c
+-OBJS = $(SRCS:.c=.o)
++ifdef SHFLAGS
++OBJS := $(SRCS:.c=.os)
++else
++OBJS := $(SRCS:.c=.o)
++endif
+ FILES = Makefile $(SRCS)
+ LIBNAME = flite
+
+Index: src/speech/Makefile
+===================================================================
+--- flite-1.3-release/src/speech/Makefile (.../flite-1.3-orig) (revision 7)
++++ flite-1.3-release/src/speech/Makefile (.../release-1.2) (revision 7)
+@@ -39,9 +39,14 @@
+ BUILD_DIRS =
+ ALL_DIRS=
+ H =
++include $(TOP)/config/config
+ SRCS = cst_wave.c cst_wave_io.c cst_track.c cst_track_io.c \
+ cst_wave_utils.c cst_lpcres.c rateconv.c
+-OBJS = $(SRCS:.c=.o)
++ifdef SHFLAGS
++OBJS := $(SRCS:.c=.os)
++else
++OBJS := $(SRCS:.c=.o)
++endif
+ FILES = Makefile $(H) $(SRCS)
+ LIBNAME = flite
+
+Index: src/wavesynth/Makefile
+===================================================================
+--- flite-1.3-release/src/wavesynth/Makefile (.../flite-1.3-orig) (revision 7)
++++ flite-1.3-release/src/wavesynth/Makefile (.../release-1.2) (revision 7)
+@@ -38,9 +38,14 @@
+ DIRNAME=src/wavesynth
+ BUILD_DIRS =
+ ALL_DIRS=
++include $(TOP)/config/config
+ SRCS = cst_units.c cst_sigpr.c cst_clunits.c cst_diphone.c \
+ cst_sigprFP.c cst_sts.c cst_reflpc.c
+-OBJS = $(SRCS:.c=.o)
++ifdef SHFLAGS
++OBJS := $(SRCS:.c=.os)
++else
++OBJS := $(SRCS:.c=.o)
++endif
+ LIBNAME = flite
+ FILES = Makefile $(SRCS)
+
+Index: src/regex/Makefile
+===================================================================
+--- flite-1.3-release/src/regex/Makefile (.../flite-1.3-orig) (revision 7)
++++ flite-1.3-release/src/regex/Makefile (.../release-1.2) (revision 7)
+@@ -42,8 +42,13 @@
+ DIRNAME=src/regex
+ BUILD_DIRS =
+ ALL_DIRS=
++include $(TOP)/config/config
+ SRCS = cst_regex.c regexp.c regsub.c
+-OBJS = $(SRCS:.c=.o)
++ifdef SHFLAGS
++OBJS := $(SRCS:.c=.os)
++else
++OBJS := $(SRCS:.c=.o)
++endif
+ FILES = Makefile $(H) $(SRCS)
+ LIBNAME = flite
+
+Index: src/stats/Makefile
+===================================================================
+--- flite-1.3-release/src/stats/Makefile (.../flite-1.3-orig) (revision 7)
++++ flite-1.3-release/src/stats/Makefile (.../release-1.2) (revision 7)
+@@ -39,8 +39,13 @@
+ BUILD_DIRS =
+ ALL_DIRS=
+ H =
++include $(TOP)/config/config
+ SRCS = cst_cart.c cst_viterbi.c cst_ss.c
+-OBJS = $(SRCS:.c=.o)
++ifdef SHFLAGS
++OBJS := $(SRCS:.c=.os)
++else
++OBJS := $(SRCS:.c=.o)
++endif
+ FILES = Makefile $(H) $(SRCS)
+ LIBNAME = flite
+
+Index: config/common_make_rules
+===================================================================
+--- flite-1.3-release/config/common_make_rules (.../flite-1.3-orig) (revision 7)
++++ flite-1.3-release/config/common_make_rules (.../release-1.2) (revision 7)
+@@ -73,12 +73,13 @@
+ ifdef SHFLAGS
+ SOOBJS = $(OBJS:.o=.os)
+ FULLSHOBJS = $(SOOBJS:%=$(OBJDIR)/%)
+-ifdef LIBNAME
+-ALL += $(OBJDIR)/.build_so
++#ifdef LIBNAME
++#ALL += $(OBJDIR)/.build_so
++#endif
+ endif
+-endif
+ ifdef LIBNAME
+ ALL += $(OBJDIR)/.build_lib
++ALL += $(OBJDIR)/.build_so
+ endif
+ # Only do some directories when you are not cross compiling
+ ifeq ($(HOST_PLATFORM),$(TARGET_PLATFORM))
+@@ -117,14 +118,17 @@
+ @ touch $(OBJDIR)/.build_so
+
+ # Used in the lib/ directory and in building new voices
+-$(OBJDIR)/%.so: %.shared.a
++#$(OBJDIR)/%.so: %.shared.a
++%.so: %.shared.a
+ @ echo making $@
+ @ rm -rf shared_os && mkdir shared_os
+ @ rm -f $@ $(LIBDIR)/$@.${PROJECT_VERSION} $(LIBDIR)/$@.${PROJECT_SHLIB_VERSION}
+ @ (cd shared_os && ar x ../$<)
+ @ (cd shared_os && $(CC) -shared -Wl,-soname,$@.${PROJECT_SHLIB_VERSION} -o ../$@.${PROJECT_VERSION} *.os)
+- @ ln -s $(LIBDIR)/$@.${PROJECT_VERSION} $(LIBDIR)/$@.${PROJECT_SHLIB_VERSION}
+- @ ln -s $(LIBDIR)/$@.${PROJECT_SHLIB_VERSION} $(LIBDIR)/$@
++ #@ ln -s $(LIBDIR)/$@.${PROJECT_VERSION} $(LIBDIR)/$@.${PROJECT_SHLIB_VERSION}
++ #@ ln -s $(LIBDIR)/$@.${PROJECT_SHLIB_VERSION} $(LIBDIR)/$@
++ @ ln -s $@.${PROJECT_VERSION} $@.${PROJECT_SHLIB_VERSION}
++ @ ln -s $@.${PROJECT_SHLIB_VERSION} $@
+ @ rm -rf shared_os
+
+ $(OBJDIR)/.make_build_dirs:
+Index: lib/Makefile
+===================================================================
+--- flite-1.3-release/lib/Makefile (.../flite-1.3-orig) (revision 0)
++++ flite-1.3-release/lib/Makefile (.../release-1.2) (revision 7)
+@@ -0,0 +1,70 @@
++###########################################################################
++## ##
++## Language Technologies Institute ##
++## Carnegie Mellon University ##
++## Copyright (c) 1999 ##
++## All Rights Reserved. ##
++## ##
++## Permission is hereby granted, free of charge, to use and distribute ##
++## this software and its documentation without restriction, including ##
++## without limitation the rights to use, copy, modify, merge, publish, ##
++## distribute, sublicense, and/or sell copies of this work, and to ##
++## permit persons to whom this work is furnished to do so, subject to ##
++## the following conditions: ##
++## 1. The code must retain the above copyright notice, this list of ##
++## conditions and the following disclaimer. ##
++## 2. Any modifications must be clearly marked as such. ##
++## 3. Original authors' names are not deleted. ##
++## 4. The authors' names are not used to endorse or promote products ##
++## derived from this software without specific prior written ##
++## permission. ##
++## ##
++## CARNEGIE MELLON UNIVERSITY AND THE CONTRIBUTORS TO THIS WORK ##
++## DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ##
++## ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT ##
++## SHALL CARNEGIE MELLON UNIVERSITY NOR THE CONTRIBUTORS BE LIABLE ##
++## FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES ##
++## WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN ##
++## AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ##
++## ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF ##
++## THIS SOFTWARE. ##
++## ##
++###########################################################################
++## ##
++## FLITE libraries ##
++## ##
++###########################################################################
++TOP=..
++DIRNAME=lib
++BUILD_DIRS =
++ALL_DIRS=
++FILES = Makefile
++LIBNAMES = flite flite_cmulex flite_usenglish \
++ flite_cmu_us_kal flite_cmu_us_kal16 flite_cmu_time_awb
++
++STATICLIBS= $(LIBNAMES:%=lib%.a)
++SHAREDARLIBS= $(LIBNAMES:%=lib%.shared.a)
++#SHAREDLIBS = $(LIBNAMES:%=lib%.so)
++SHAREDLIBS = $(SHAREDARLIBS:%.shared.a=%.so)
++VERSIONSHAREDLIBS = $(SHAREDLIBS:%=%.${PROJECT_VERSION}) \
++ $(SHAREDLIBS:%=%.${PROJECT_SHLIB_VERSION})
++ALL_LIBS = $(STATICLIBS) $(SHAREDLIBS) $(VERSIONSHAREDLIBS)
++
++ALL = shared_libs
++
++LOCAL_CLEAN=*.a *.so *.so.${PROJECT_VERSION} *.so.${PROJECT_SHLIB_VERSION}
++
++include $(TOP)/config/common_make_rules
++
++ifdef SHFLAGS
++shared_libs: $(SHAREDLIBS)
++else
++shared_libs: nothing
++endif
++
++install:
++ @ cp -vf $(LIBDIR)/* .
++ @ $(MAKE) shared_libs
++ @ echo ARLIBS: $(SHAREDARLIBS)
++ @ echo SHARLIBS: $(SHAREDLIBS)
++ @ tar cvf - $(ALL_LIBS) | ( cd $(INSTALLLIBDIR) && tar xf -)
diff --git a/packages/flite/flite.inc b/packages/flite/flite.inc
new file mode 100644
index 0000000000..59373ba60d
--- /dev/null
+++ b/packages/flite/flite.inc
@@ -0,0 +1,44 @@
+DESCRIPTION = "flite - the festival light speech synthesizer"
+PRIORITY = "optional"
+HOMEPAGE = "http://www.speech.cs.cmu.edu/flite/"
+SECTION = "console/utils"
+LICENSE = "flite"
+DEPENDS = "alsa-oss"
+
+PARALLEL_MAKE = ""
+
+S = "${WORKDIR}/flite-${PV}-release"
+
+inherit autotools
+
+EXTRA_OECONF = "--with-audio=alsa --enable-shared"
+
+PACKAGES += "lib${PN} lib${PN}-vox8 lib${PN}-vox16"
+
+FILES_${PN} = "${bindir}"
+
+FILES_lib${PN} ="${libdir}/libflite.so.* \
+ ${libdir}/libflite_cmu_time_awb.so.* \
+ ${libdir}/libflite_cmulex.so.* \
+ ${libdir}/libflite_usenglish.so.*"
+
+FILES_lib${PN}-vox8 = "${libdir}/libflite_cmu_us_kal.so.*"
+
+FILES_lib${PN}-vox16 = "${libdir}/libflite_cmu_us_kal16.so.*"
+
+LEAD_SONAME = "libflite.so"
+
+do_install() {
+ oe_runmake INSTALLBINDIR="${D}${bindir}" INSTALLLIBDIR="${D}${libdir}" INSTALLINCDIR="${D}${includedir}" install
+}
+
+
+do_stage () {
+ install -m 0644 ${S}/include/*.h ${STAGING_INCDIR}/
+ oe_libinstall -C lib -a -so libflite ${STAGING_LIBDIR}
+ oe_libinstall -C lib -a -so libflite_cmu_time_awb ${STAGING_LIBDIR}
+ oe_libinstall -C lib -a -so libflite_cmulex ${STAGING_LIBDIR}
+ oe_libinstall -C lib -a -so libflite_usenglish ${STAGING_LIBDIR}
+ oe_libinstall -C lib -a -so libflite_cmu_us_kal ${STAGING_LIBDIR}
+ oe_libinstall -C lib -a -so libflite_cmu_us_kal16 ${STAGING_LIBDIR}
+}
diff --git a/packages/flite/flite_1.2.bb b/packages/flite/flite_1.2.bb
index 556cd2b47c..e5a165eb97 100644
--- a/packages/flite/flite_1.2.bb
+++ b/packages/flite/flite_1.2.bb
@@ -1,47 +1,8 @@
-DESCRIPTION = "flite - the festival light speech synthesizer"
-PRIORITY = "optional"
-HOMEPAGE = "http://fife.speech.cs.cmu.edu/flite/"
-SECTION = "console/utils"
-LICENSE = "flite"
-PR = "r2"
+require flite.inc
-PARALLEL_MAKE = ""
+PR = "r3"
SRC_URI = "http://www.speech.cs.cmu.edu/flite/packed/flite-${PV}/flite-${PV}-release.tar.bz2 \
- file://configure-with-audio.patch;patch=1 \
- file://fix-read-only-assignments.patch;patch=1"
-S = "${WORKDIR}/flite-${PV}-release"
-
-inherit autotools
-
-EXTRA_OECONF = "--with-audio=oss --enable-shared"
-
-PACKAGES += "lib${PN} lib${PN}-vox8 lib${PN}-vox16"
-
-FILES_${PN} = "${bindir}"
-
-FILES_lib${PN} ="${libdir}/libflite.so.* \
- ${libdir}/libflite_cmu_time_awb.so.* \
- ${libdir}/libflite_cmulex.so.* \
- ${libdir}/libflite_usenglish.so.*"
-
-FILES_lib${PN}-vox8 = "${libdir}/libflite_cmu_us_kal.so.*"
-
-FILES_lib${PN}-vox16 = "${libdir}/libflite_cmu_us_kal16.so.*"
-
-LEAD_SONAME = "libflite.so"
-
-do_install() {
- oe_runmake INSTALLBINDIR="${D}${bindir}" INSTALLLIBDIR="${D}${libdir}" INSTALLINCDIR="${D}${includedir}" install
-}
-
-
-do_stage () {
- install -m 0644 ${S}/include/*.h ${STAGING_INCDIR}/
- oe_libinstall -C lib -a -so libflite ${STAGING_LIBDIR}
- oe_libinstall -C lib -a -so libflite_cmu_time_awb ${STAGING_LIBDIR}
- oe_libinstall -C lib -a -so libflite_cmulex ${STAGING_LIBDIR}
- oe_libinstall -C lib -a -so libflite_usenglish ${STAGING_LIBDIR}
- oe_libinstall -C lib -a -so libflite_cmu_us_kal ${STAGING_LIBDIR}
- oe_libinstall -C lib -a -so libflite_cmu_us_kal16 ${STAGING_LIBDIR}
-}
+# http://homepage.hispeed.ch/loehrer/downloads/flite-1.2-alsa_support-1.2.diff.bz2 \
+ file://flite-1.2-alsa_support-1.2.diff;patch=1"
+# file://configure-with-audio.patch;patch=1 \
diff --git a/packages/flite/flite_1.3.bb b/packages/flite/flite_1.3.bb
new file mode 100644
index 0000000000..85154b2b36
--- /dev/null
+++ b/packages/flite/flite_1.3.bb
@@ -0,0 +1,8 @@
+require flite.inc
+
+PR = "r0"
+
+SRC_URI = "http://www.speech.cs.cmu.edu/flite/packed/flite-${PV}/flite-${PV}-release.tar.gz \
+# http://homepage.hispeed.ch/loehrer/downloads/flite-1.3-alsa_support-1.2.diff.bz2 \
+ file://flite-1.3-alsa_support-1.2.diff;patch=1"
+# file://fix-read-only-assignments.patch;patch=1 \
diff --git a/packages/fontconfig/fontconfig_2.4.1.bb b/packages/fontconfig/fontconfig_2.4.1.bb
index 38eeb960f7..cc64f9ec4c 100644
--- a/packages/fontconfig/fontconfig_2.4.1.bb
+++ b/packages/fontconfig/fontconfig_2.4.1.bb
@@ -5,7 +5,7 @@ DEPENDS = "expat freetype freetype-native zlib"
SRC_URI = "http://fontconfig.org/release/fontconfig-${PV}.tar.gz \
https://stage.maemo.org/svn/maemo/projects/haf/trunk/fontconfig/device_symbols.h"
-PR = "r1"
+PR = "r2"
PACKAGES =+ "fontconfig-utils-dbg fontconfig-utils "
FILES_fontconfig-utils-dbg = "${bindir}/*.dbg"
@@ -43,6 +43,7 @@ do_stage () {
oe_libinstall -so -a -C src libfontconfig ${STAGING_LIBDIR}
install -d ${STAGING_INCDIR}/fontconfig
for i in ${S}/fontconfig/*.h; do install -m 0644 $i ${STAGING_INCDIR}/fontconfig/; done
+ ln -sf ${STAGING_INCDIR}/fontconfig/device_symbols.h ${STAGING_INCDIR}
}
BUILD_CFLAGS += " -I${STAGING_INCDIR_NATIVE}/freetype2"
diff --git a/packages/keylaunch/files/shepherd/.mtn2git_empty b/packages/fuse/fuse-2.7.1/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/keylaunch/files/shepherd/.mtn2git_empty
+++ b/packages/fuse/fuse-2.7.1/.mtn2git_empty
diff --git a/packages/fuse/fuse-2.7.1/not-run-updaterc.d-on-host.patch b/packages/fuse/fuse-2.7.1/not-run-updaterc.d-on-host.patch
new file mode 100644
index 0000000000..1124d1fa2b
--- /dev/null
+++ b/packages/fuse/fuse-2.7.1/not-run-updaterc.d-on-host.patch
@@ -0,0 +1,23 @@
+Index: fuse-2.7.1/util/Makefile.am
+===================================================================
+--- fuse-2.7.1.orig/util/Makefile.am 2007-04-25 18:06:47.000000000 +0200
++++ fuse-2.7.1/util/Makefile.am 2007-11-16 16:57:29.000000000 +0100
+@@ -33,10 +33,6 @@
+ $(INSTALL_PROGRAM) $(srcdir)/mount.fuse $(DESTDIR)$(MOUNT_FUSE_PATH)/mount.fuse
+ $(mkdir_p) $(DESTDIR)$(INIT_D_PATH)
+ $(INSTALL_PROGRAM) $(srcdir)/init_script $(DESTDIR)$(INIT_D_PATH)/fuse
+- @if test -x /usr/sbin/update-rc.d; then \
+- echo "/usr/sbin/update-rc.d fuse start 34 S . start 41 0 6 . || true"; \
+- /usr/sbin/update-rc.d fuse start 34 S . start 41 0 6 . || true; \
+- fi
+
+ install-data-local:
+ $(mkdir_p) $(DESTDIR)$(UDEV_RULES_PATH)
+@@ -46,7 +43,3 @@
+ rm -f $(DESTDIR)$(MOUNT_FUSE_PATH)/mount.fuse
+ rm -f $(DESTDIR)$(UDEV_RULES_PATH)/99-fuse.rules
+ rm -f $(DESTDIR)$(INIT_D_PATH)/fuse
+- @if test -x /usr/sbin/update-rc.d; then \
+- echo "/usr/sbin/update-rc.d fuse remove || true"; \
+- /usr/sbin/update-rc.d fuse remove || true; \
+- fi
diff --git a/packages/fuse/fuse-module_2.7.1.bb b/packages/fuse/fuse-module_2.7.1.bb
new file mode 100644
index 0000000000..48cc33a338
--- /dev/null
+++ b/packages/fuse/fuse-module_2.7.1.bb
@@ -0,0 +1,29 @@
+require fuse.inc
+
+RRECOMMENDS = "fuse"
+PR = "r0"
+
+S = "${WORKDIR}/fuse-${PV}"
+FILES_${PN} = "/dev ${base_libdir}/modules ${sysconfdir}"
+EXTRA_OECONF = " --enable-kernel-module --with-kernel=${STAGING_KERNEL_DIR}"
+
+inherit module
+
+do_configure() {
+ cd ${S} ; oe_runconf
+}
+
+do_compile(){
+ LDFLAGS=""
+ cd ${S}/kernel
+ oe_runmake
+}
+
+fakeroot do_install() {
+ LDFLAGS=""
+ install -d ${D}${sysconfdir}/udev/rules.d/
+ install -m 644 util/udev.rules ${D}${sysconfdir}/udev/rules.d/
+ cd ${S}/kernel
+ oe_runmake install DESTDIR=${D}
+}
+
diff --git a/packages/fuse/fuse_2.7.1.bb b/packages/fuse/fuse_2.7.1.bb
new file mode 100644
index 0000000000..a1795e7f0c
--- /dev/null
+++ b/packages/fuse/fuse_2.7.1.bb
@@ -0,0 +1,27 @@
+require fuse.inc
+
+PR = "r0"
+
+SRC_URI += "file://not-run-updaterc.d-on-host.patch;patch=1"
+
+EXTRA_OECONF = " --disable-kernel-module"
+
+#package utils in a sperate package and stop debian.bbclass renaming it to libfuse-utils, we want it to be fuse-utils
+PACKAGES =+ "fuse-utils-dbg fuse-utils libulockmgr libulockmgr-dev libulockmgr-dbg"
+FILES_${PN} += "${libdir}/libfuse.so.*"
+FILES_${PN}-dev += "${libdir}/libfuse*.la"
+
+FILES_libulockmgr = "${libdir}/libulockmgr.so.*"
+FILES_libulockmgr-dev += "${libdir}/libulock*.la"
+FILES_libulockmgr-dbg += "${libdir}/.debug/libulock*"
+
+FILES_fuse-utils = "${bindir} ${base_sbindir}"
+FILES_fuse-utils-dbg = "${bindir}/.debug ${base_sbindir}/.debug"
+DEBIAN_NOAUTONAME_fuse-utils = "1"
+DEBIAN_NOAUTONAME_fuse-utils-dbg = "1"
+
+fakeroot do_stage() {
+ autotools_stage_all
+}
+
+
diff --git a/packages/fuse/gmailfs.inc b/packages/fuse/gmailfs.inc
new file mode 100644
index 0000000000..9f1c676c87
--- /dev/null
+++ b/packages/fuse/gmailfs.inc
@@ -0,0 +1,22 @@
+DESCRIPTION = "GmailFS provides a mountable Linux filesystem which uses your Gmail account as its storage medium."
+HOMEPAGE = "http://richard.jones.name/google-hacks/gmail-filesystem/gmail-filesystem.html"
+LICENSE = "GPLv2"
+
+DEPENDS = "fuse python-libgmail python-fuse"
+RDEPENDS = "fuse python-libgmail python-fuse python-unixadmin python-lang python-textutils python-core"
+
+SRC_URI = "http://richard.jones.name/google-hacks/gmail-filesystem/${PN}-${PV}.tar.gz"
+
+
+do_install() {
+
+install -d ${D}${datadir}/gmailfs
+install -d ${D}${bindir}
+install -d ${D}${sysconfdir}
+
+install -m 755 ${S}/gmailfs.py ${D}${datadir}/gmailfs/
+install -m 755 ${S}/mount.gmailfs ${D}${bindir}
+install -m 644 ${S}/*.conf ${D}${sysconfdir}
+
+}
+
diff --git a/packages/fuse/gmailfs_0.7.3.bb b/packages/fuse/gmailfs_0.7.3.bb
index 9f1c676c87..de4ea18089 100644
--- a/packages/fuse/gmailfs_0.7.3.bb
+++ b/packages/fuse/gmailfs_0.7.3.bb
@@ -1,22 +1 @@
-DESCRIPTION = "GmailFS provides a mountable Linux filesystem which uses your Gmail account as its storage medium."
-HOMEPAGE = "http://richard.jones.name/google-hacks/gmail-filesystem/gmail-filesystem.html"
-LICENSE = "GPLv2"
-
-DEPENDS = "fuse python-libgmail python-fuse"
-RDEPENDS = "fuse python-libgmail python-fuse python-unixadmin python-lang python-textutils python-core"
-
-SRC_URI = "http://richard.jones.name/google-hacks/gmail-filesystem/${PN}-${PV}.tar.gz"
-
-
-do_install() {
-
-install -d ${D}${datadir}/gmailfs
-install -d ${D}${bindir}
-install -d ${D}${sysconfdir}
-
-install -m 755 ${S}/gmailfs.py ${D}${datadir}/gmailfs/
-install -m 755 ${S}/mount.gmailfs ${D}${bindir}
-install -m 644 ${S}/*.conf ${D}${sysconfdir}
-
-}
-
+require gmailfs.inc
diff --git a/packages/fuse/gmailfs_0.8.0.bb b/packages/fuse/gmailfs_0.8.0.bb
new file mode 100644
index 0000000000..de4ea18089
--- /dev/null
+++ b/packages/fuse/gmailfs_0.8.0.bb
@@ -0,0 +1 @@
+require gmailfs.inc
diff --git a/packages/gcalctool/gcalctool_5.5.21.bb b/packages/gcalctool/gcalctool_5.5.21.bb
index 31f06e9bfd..ef16f09b46 100644
--- a/packages/gcalctool/gcalctool_5.5.21.bb
+++ b/packages/gcalctool/gcalctool_5.5.21.bb
@@ -14,5 +14,5 @@ EXTRA_OECONF = "--disable-schemas-install"
SRC_URI += "file://noscrollkeeper.patch;patch=1"
do_configure_prepend () {
- cp ${STAGING_DIR}/${HOST_SYS}/share/gnome-common/data/omf.make ${S}
+ cp ${STAGING_DATADIR}/gnome-common/data/omf.make ${S}
}
diff --git a/packages/gcc/gcc-4.1.0/pr34130.patch b/packages/gcc/gcc-4.1.0/pr34130.patch
new file mode 100644
index 0000000000..415335f4b4
--- /dev/null
+++ b/packages/gcc/gcc-4.1.0/pr34130.patch
@@ -0,0 +1,16 @@
+Index: gcc-4.1.2/gcc/fold-const.c
+===================================================================
+--- gcc-4.1.2.orig/gcc/fold-const.c 2007-11-21 18:53:42.000000000 +0100
++++ gcc-4.1.2/gcc/fold-const.c 2007-11-21 18:56:26.000000000 +0100
+@@ -5339,7 +5339,10 @@
+ }
+ break;
+ }
+- /* FALLTHROUGH */
++ /* If the constant is negative, we cannot simplify this. */
++ if (tree_int_cst_sgn (c) == -1)
++ break;
++ /* FALLTHROUGH */
+ case NEGATE_EXPR:
+ if ((t1 = extract_muldiv (op0, c, code, wide_type)) != 0)
+ return fold_build1 (tcode, ctype, fold_convert (ctype, t1));
diff --git a/packages/gcc/gcc-4.1.1/gcc-4.1.1-e300cx.patch b/packages/gcc/gcc-4.1.1/gcc-4.1.1-e300cx.patch
new file mode 100644
index 0000000000..f94f7d5cb4
--- /dev/null
+++ b/packages/gcc/gcc-4.1.1/gcc-4.1.1-e300cx.patch
@@ -0,0 +1,301 @@
+diff -uNr gcc-4.1.1-orig/gcc/config/rs6000/e300c2c3.md gcc-4.1.1/gcc/config/rs6000/e300c2c3.md
+--- gcc-4.1.1-orig/gcc/config/rs6000/e300c2c3.md 1970-01-01 02:00:00.000000000 +0200
++++ gcc-4.1.1/gcc/config/rs6000/e300c2c3.md 2007-10-31 23:56:39.000000000 +0200
+@@ -0,0 +1,189 @@
++;; Pipeline description for Motorola PowerPC e300c3 core.
++;; Copyright (C) 2003 Free Software Foundation, Inc.
++;;
++;; This file is part of GCC.
++
++;; GCC is free software; you can redistribute it and/or modify it
++;; under the terms of the GNU General Public License as published
++;; by the Free Software Foundation; either version 2, or (at your
++;; option) any later version.
++
++;; GCC 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 GCC; see the file COPYING. If not, write to the
++;; Free Software Foundation, 59 Temple Place - Suite 330, Boston,
++;; MA 02111-1307, USA.
++
++(define_automaton "ppce300c3_most,ppce300c3_long,ppce300c3_retire")
++(define_cpu_unit "ppce300c3_decode_0,ppce300c3_decode_1" "ppce300c3_most")
++
++;; We don't simulate general issue queue (GIC). If we have SU insn
++;; and then SU1 insn, they can not be issued on the same cycle
++;; (although SU1 insn and then SU insn can be issued) because the SU
++;; insn will go to SU1 from GIC0 entry. Fortunately, the first cycle
++;; multipass insn scheduling will find the situation and issue the SU1
++;; insn and then the SU insn.
++(define_cpu_unit "ppce300c3_issue_0,ppce300c3_issue_1" "ppce300c3_most")
++
++;; We could describe completion buffers slots in combination with the
++;; retirement units and the order of completion but the result
++;; automaton would behave in the same way because we can not describe
++;; real latency time with taking in order completion into account.
++;; Actually we could define the real latency time by querying reserved
++;; automaton units but the current scheduler uses latency time before
++;; issuing insns and making any reservations.
++;;
++;; So our description is aimed to achieve a insn schedule in which the
++;; insns would not wait in the completion buffer.
++(define_cpu_unit "ppce300c3_retire_0,ppce300c3_retire_1" "ppce300c3_retire")
++
++;; Branch unit:
++(define_cpu_unit "ppce300c3_bu" "ppce300c3_most")
++
++;; IU:
++(define_cpu_unit "ppce300c3_iu0_stage0,ppce300c3_iu1_stage0" "ppce300c3_most")
++
++;; IU: This used to describe non-pipelined division.
++(define_cpu_unit "ppce300c3_mu_div" "ppce300c3_long")
++
++;; SRU:
++(define_cpu_unit "ppce300c3_sru_stage0" "ppce300c3_most")
++
++;; Here we simplified LSU unit description not describing the stages.
++(define_cpu_unit "ppce300c3_lsu" "ppce300c3_most")
++
++;; FPU:
++(define_cpu_unit "ppce300c3_fpu" "ppce300c3_most")
++
++;; The following units are used to make automata deterministic
++(define_cpu_unit "present_ppce300c3_decode_0" "ppce300c3_most")
++(define_cpu_unit "present_ppce300c3_issue_0" "ppce300c3_most")
++(define_cpu_unit "present_ppce300c3_retire_0" "ppce300c3_retire")
++(define_cpu_unit "present_ppce300c3_iu0_stage0" "ppce300c3_most")
++
++;; The following sets to make automata deterministic when option ndfa is used.
++(presence_set "present_ppce300c3_decode_0" "ppce300c3_decode_0")
++(presence_set "present_ppce300c3_issue_0" "ppce300c3_issue_0")
++(presence_set "present_ppce300c3_retire_0" "ppce300c3_retire_0")
++(presence_set "present_ppce300c3_iu0_stage0" "ppce300c3_iu0_stage0")
++
++;; Some useful abbreviations.
++(define_reservation "ppce300c3_decode"
++ "ppce300c3_decode_0|ppce300c3_decode_1+present_ppce300c3_decode_0")
++(define_reservation "ppce300c3_issue"
++ "ppce300c3_issue_0|ppce300c3_issue_1+present_ppce300c3_issue_0")
++(define_reservation "ppce300c3_retire"
++ "ppce300c3_retire_0|ppce300c3_retire_1+present_ppce300c3_retire_0")
++(define_reservation "ppce300c3_iu_stage0"
++ "ppce300c3_iu0_stage0|ppce300c3_iu1_stage0+present_ppce300c3_iu0_stage0")
++
++;; Compares can be executed either one of the IU or SRU
++(define_insn_reservation "ppce300c3_cmp" 1
++ (and (eq_attr "type" "cmp,compare,delayed_compare,fast_compare")
++ (ior (eq_attr "cpu" "ppce300c2") (eq_attr "cpu" "ppce300c3")))
++ "ppce300c3_decode,ppce300c3_issue+(ppce300c3_iu_stage0|ppce300c3_sru_stage0) \
++ +ppce300c3_retire")
++
++;; Other one cycle IU insns
++(define_insn_reservation "ppce300c3_iu" 1
++ (and (eq_attr "type" "integer,insert_word")
++ (ior (eq_attr "cpu" "ppce300c2") (eq_attr "cpu" "ppce300c3")))
++ "ppce300c3_decode,ppce300c3_issue+ppce300c3_iu_stage0+ppce300c3_retire")
++
++;; Branch. Actually this latency time is not used by the scheduler.
++(define_insn_reservation "ppce300c3_branch" 1
++ (and (eq_attr "type" "jmpreg,branch")
++ (ior (eq_attr "cpu" "ppce300c2") (eq_attr "cpu" "ppce300c3")))
++ "ppce300c3_decode,ppce300c3_bu,ppce300c3_retire")
++
++;; Multiply is non-pipelined but can be executed in any IU
++(define_insn_reservation "ppce300c3_multiply" 2
++ (and (eq_attr "type" "imul,imul2,imul3,imul_compare")
++ (ior (eq_attr "cpu" "ppce300c2") (eq_attr "cpu" "ppce300c3")))
++ "ppce300c3_decode,ppce300c3_issue+ppce300c3_iu_stage0, \
++ ppce300c3_iu_stage0+ppce300c3_retire")
++
++;; Divide. We use the average latency time here. We omit reserving a
++;; retire unit because of the result automata will be huge.
++(define_insn_reservation "ppce300c3_divide" 20
++ (and (eq_attr "type" "idiv")
++ (ior (eq_attr "cpu" "ppce300c2") (eq_attr "cpu" "ppce300c3")))
++ "ppce300c3_decode,ppce300c3_issue+ppce300c3_iu_stage0+ppce300c3_mu_div,\
++ ppce300c3_mu_div*19")
++
++;; CR logical
++(define_insn_reservation "ppce300c3_cr_logical" 1
++ (and (eq_attr "type" "cr_logical,delayed_cr")
++ (ior (eq_attr "cpu" "ppce300c2") (eq_attr "cpu" "ppce300c3")))
++ "ppce300c3_decode,ppce300c3_issue+ppce300c3_sru_stage0+ppce300c3_retire")
++
++;; Mfcr
++(define_insn_reservation "ppce300c3_mfcr" 1
++ (and (eq_attr "type" "mfcr")
++ (ior (eq_attr "cpu" "ppce300c2") (eq_attr "cpu" "ppce300c3")))
++ "ppce300c3_decode,ppce300c3_issue+ppce300c3_sru_stage0+ppce300c3_retire")
++
++;; Mtcrf
++(define_insn_reservation "ppce300c3_mtcrf" 1
++ (and (eq_attr "type" "mtcr")
++ (ior (eq_attr "cpu" "ppce300c2") (eq_attr "cpu" "ppce300c3")))
++ "ppce300c3_decode,ppce300c3_issue+ppce300c3_sru_stage0+ppce300c3_retire")
++
++;; Mtjmpr
++(define_insn_reservation "ppce300c3_mtjmpr" 1
++ (and (eq_attr "type" "mtjmpr,mfjmpr")
++ (ior (eq_attr "cpu" "ppce300c2") (eq_attr "cpu" "ppce300c3")))
++ "ppce300c3_decode,ppce300c3_issue+ppce300c3_sru_stage0+ppce300c3_retire")
++
++;; Float point instructions
++(define_insn_reservation "ppce300c3_fpcompare" 3
++ (and (eq_attr "type" "fpcompare")
++ (eq_attr "cpu" "ppce300c3"))
++ "ppce300c3_decode,ppce300c3_issue+ppce300c3_fpu,nothing,ppce300c3_retire")
++
++(define_insn_reservation "ppce300c3_fp" 3
++ (and (eq_attr "type" "fp")
++ (eq_attr "cpu" "ppce300c3"))
++ "ppce300c3_decode,ppce300c3_issue+ppce300c3_fpu,nothing,ppce300c3_retire")
++
++(define_insn_reservation "ppce300c3_dmul" 4
++ (and (eq_attr "type" "dmul")
++ (eq_attr "cpu" "ppce300c3"))
++ "ppce300c3_decode,ppce300c3_issue+ppce300c3_fpu,ppce300c3_fpu,nothing,ppce300c3_retire")
++
++; Divides are not pipelined
++(define_insn_reservation "ppce300c3_sdiv" 18
++ (and (eq_attr "type" "sdiv")
++ (eq_attr "cpu" "ppce300c3"))
++ "ppce300c3_decode,ppce300c3_issue+ppce300c3_fpu,ppce300c3_fpu*17")
++
++(define_insn_reservation "ppce300c3_ddiv" 33
++ (and (eq_attr "type" "ddiv")
++ (eq_attr "cpu" "ppce300c3"))
++ "ppce300c3_decode,ppce300c3_issue+ppce300c3_fpu,ppce300c3_fpu*32")
++
++;; Loads
++(define_insn_reservation "ppce300c3_load" 2
++ (and (eq_attr "type" "load,load_ext,load_ext_u,load_ext_ux,load_ux,load_u")
++ (ior (eq_attr "cpu" "ppce300c2") (eq_attr "cpu" "ppce300c3")))
++ "ppce300c3_decode,ppce300c3_issue+ppce300c3_lsu,ppce300c3_retire")
++
++(define_insn_reservation "ppce300c3_fpload" 2
++ (and (eq_attr "type" "fpload,fpload_ux,fpload_u")
++ (eq_attr "cpu" "ppce300c3"))
++ "ppce300c3_decode,ppce300c3_issue+ppce300c3_lsu,ppce300c3_retire")
++
++;; Stores.
++(define_insn_reservation "ppce300c3_store" 2
++ (and (eq_attr "type" "store,store_ux,store_u")
++ (ior (eq_attr "cpu" "ppce300c2") (eq_attr "cpu" "ppce300c3")))
++ "ppce300c3_decode,ppce300c3_issue+ppce300c3_lsu,ppce300c3_retire")
++
++(define_insn_reservation "ppce300c3_fpstore" 2
++ (and (eq_attr "type" "fpstore,fpstore_ux,fpstore_u")
++ (eq_attr "cpu" "ppce300c3"))
++ "ppce300c3_decode,ppce300c3_issue+ppce300c3_lsu,ppce300c3_retire")
+diff -uNr gcc-4.1.1-orig/gcc/config/rs6000/rs6000.c gcc-4.1.1/gcc/config/rs6000/rs6000.c
+--- gcc-4.1.1-orig/gcc/config/rs6000/rs6000.c 2006-04-13 08:46:01.000000000 +0300
++++ gcc-4.1.1/gcc/config/rs6000/rs6000.c 2007-10-31 23:58:24.000000000 +0200
+@@ -557,6 +557,21 @@
+ COSTS_N_INSNS (29), /* ddiv */
+ };
+
++/* Instruction costs on E300C2 and E300C3 cores. */
++static const
++struct processor_costs ppce300c2c3_cost = {
++ COSTS_N_INSNS (4), /* mulsi */
++ COSTS_N_INSNS (4), /* mulsi_const */
++ COSTS_N_INSNS (4), /* mulsi_const9 */
++ COSTS_N_INSNS (4), /* muldi */
++ COSTS_N_INSNS (19), /* divsi */
++ COSTS_N_INSNS (19), /* divdi */
++ COSTS_N_INSNS (3), /* fp */
++ COSTS_N_INSNS (4), /* dmul */
++ COSTS_N_INSNS (18), /* sdiv */
++ COSTS_N_INSNS (33), /* ddiv */
++};
++
+ /* Instruction costs on POWER4 and POWER5 processors. */
+ static const
+ struct processor_costs power4_cost = {
+@@ -1138,6 +1153,8 @@
+ {"8540", PROCESSOR_PPC8540, POWERPC_BASE_MASK | MASK_PPC_GFXOPT},
+ /* 8548 has a dummy entry for now. */
+ {"8548", PROCESSOR_PPC8540, POWERPC_BASE_MASK | MASK_PPC_GFXOPT},
++ {"e300c2", PROCESSOR_PPCE300C2, POWERPC_BASE_MASK | MASK_SOFT_FLOAT},
++ {"e300c3", PROCESSOR_PPCE300C3, POWERPC_BASE_MASK},
+ {"860", PROCESSOR_MPCCORE, POWERPC_BASE_MASK | MASK_SOFT_FLOAT},
+ {"970", PROCESSOR_POWER4,
+ POWERPC_7400_MASK | MASK_PPC_GPOPT | MASK_MFCRF | MASK_POWERPC64},
+@@ -1524,6 +1541,11 @@
+ rs6000_cost = &ppc8540_cost;
+ break;
+
++ case PROCESSOR_PPCE300C2:
++ case PROCESSOR_PPCE300C3:
++ rs6000_cost = &ppce300c2c3_cost;
++ break;
++
+ case PROCESSOR_POWER4:
+ case PROCESSOR_POWER5:
+ rs6000_cost = &power4_cost;
+@@ -16578,6 +16600,8 @@
+ case CPU_PPC750:
+ case CPU_PPC7400:
+ case CPU_PPC8540:
++ case CPU_PPCE300C2:
++ case CPU_PPCE300C3:
+ return 2;
+ case CPU_RIOS2:
+ case CPU_PPC604:
+diff -uNr gcc-4.1.1-orig/gcc/config/rs6000/rs6000.h gcc-4.1.1/gcc/config/rs6000/rs6000.h
+--- gcc-4.1.1-orig/gcc/config/rs6000/rs6000.h 2006-04-13 23:33:51.000000000 +0300
++++ gcc-4.1.1/gcc/config/rs6000/rs6000.h 2007-10-31 23:56:39.000000000 +0200
+@@ -110,6 +110,8 @@
+ %{mcpu=970: -mpower4 -maltivec} \
+ %{mcpu=G5: -mpower4 -maltivec} \
+ %{mcpu=8540: -me500} \
++%{mcpu=e300c2: -mppc} \
++%{mcpu=e300c3: -mppc -mpmr} \
+ %{maltivec: -maltivec} \
+ -many"
+
+@@ -210,6 +212,8 @@
+ PROCESSOR_PPC7400,
+ PROCESSOR_PPC7450,
+ PROCESSOR_PPC8540,
++ PROCESSOR_PPCE300C2,
++ PROCESSOR_PPCE300C3,
+ PROCESSOR_POWER4,
+ PROCESSOR_POWER5
+ };
+diff -uNr gcc-4.1.1-orig/gcc/config/rs6000/rs6000.md gcc-4.1.1/gcc/config/rs6000/rs6000.md
+--- gcc-4.1.1-orig/gcc/config/rs6000/rs6000.md 2006-05-04 23:43:57.000000000 +0300
++++ gcc-4.1.1/gcc/config/rs6000/rs6000.md 2007-10-31 23:56:39.000000000 +0200
+@@ -103,7 +103,7 @@
+ ;; Processor type -- this attribute must exactly match the processor_type
+ ;; enumeration in rs6000.h.
+
+-(define_attr "cpu" "rios1,rios2,rs64a,mpccore,ppc403,ppc405,ppc440,ppc601,ppc603,ppc604,ppc604e,ppc620,ppc630,ppc750,ppc7400,ppc7450,ppc8540,power4,power5"
++(define_attr "cpu" "rios1,rios2,rs64a,mpccore,ppc403,ppc405,ppc440,ppc601,ppc603,ppc604,ppc604e,ppc620,ppc630,ppc750,ppc7400,ppc7450,ppc8540,ppce300c2,ppce300c3,power4,power5"
+ (const (symbol_ref "rs6000_cpu_attr")))
+
+ (automata_option "ndfa")
+@@ -119,6 +119,7 @@
+ (include "7xx.md")
+ (include "7450.md")
+ (include "8540.md")
++(include "e300c2c3.md")
+ (include "power4.md")
+ (include "power5.md")
+
+diff -uNr gcc-4.1.1-orig/gcc/config.gcc gcc-4.1.1/gcc/config.gcc
+--- gcc-4.1.1-orig/gcc/config.gcc 2006-05-09 23:02:29.000000000 +0300
++++ gcc-4.1.1/gcc/config.gcc 2007-10-31 23:56:39.000000000 +0200
+@@ -2699,7 +2699,7 @@
+ | rios | rios1 | rios2 | rsc | rsc1 | rs64a \
+ | 401 | 403 | 405 | 405fp | 440 | 440fp | 505 \
+ | 601 | 602 | 603 | 603e | ec603e | 604 \
+- | 604e | 620 | 630 | 740 | 750 | 7400 | 7450 \
++ | 604e | 620 | 630 | 740 | 750 | 7400 | 7450 | e300c[23] \
+ | 854[08] | 801 | 821 | 823 | 860 | 970 | G3 | G4 | G5)
+ # OK
+ ;;
diff --git a/packages/gcc/gcc-4.1.1/pr34130.patch b/packages/gcc/gcc-4.1.1/pr34130.patch
new file mode 100644
index 0000000000..415335f4b4
--- /dev/null
+++ b/packages/gcc/gcc-4.1.1/pr34130.patch
@@ -0,0 +1,16 @@
+Index: gcc-4.1.2/gcc/fold-const.c
+===================================================================
+--- gcc-4.1.2.orig/gcc/fold-const.c 2007-11-21 18:53:42.000000000 +0100
++++ gcc-4.1.2/gcc/fold-const.c 2007-11-21 18:56:26.000000000 +0100
+@@ -5339,7 +5339,10 @@
+ }
+ break;
+ }
+- /* FALLTHROUGH */
++ /* If the constant is negative, we cannot simplify this. */
++ if (tree_int_cst_sgn (c) == -1)
++ break;
++ /* FALLTHROUGH */
+ case NEGATE_EXPR:
+ if ((t1 = extract_muldiv (op0, c, code, wide_type)) != 0)
+ return fold_build1 (tcode, ctype, fold_convert (ctype, t1));
diff --git a/packages/gcc/gcc-4.1.2/pr34130.patch b/packages/gcc/gcc-4.1.2/pr34130.patch
new file mode 100644
index 0000000000..415335f4b4
--- /dev/null
+++ b/packages/gcc/gcc-4.1.2/pr34130.patch
@@ -0,0 +1,16 @@
+Index: gcc-4.1.2/gcc/fold-const.c
+===================================================================
+--- gcc-4.1.2.orig/gcc/fold-const.c 2007-11-21 18:53:42.000000000 +0100
++++ gcc-4.1.2/gcc/fold-const.c 2007-11-21 18:56:26.000000000 +0100
+@@ -5339,7 +5339,10 @@
+ }
+ break;
+ }
+- /* FALLTHROUGH */
++ /* If the constant is negative, we cannot simplify this. */
++ if (tree_int_cst_sgn (c) == -1)
++ break;
++ /* FALLTHROUGH */
+ case NEGATE_EXPR:
+ if ((t1 = extract_muldiv (op0, c, code, wide_type)) != 0)
+ return fold_build1 (tcode, ctype, fold_convert (ctype, t1));
diff --git a/packages/gcc/gcc-4.2.1/pr34130.patch b/packages/gcc/gcc-4.2.1/pr34130.patch
new file mode 100644
index 0000000000..415335f4b4
--- /dev/null
+++ b/packages/gcc/gcc-4.2.1/pr34130.patch
@@ -0,0 +1,16 @@
+Index: gcc-4.1.2/gcc/fold-const.c
+===================================================================
+--- gcc-4.1.2.orig/gcc/fold-const.c 2007-11-21 18:53:42.000000000 +0100
++++ gcc-4.1.2/gcc/fold-const.c 2007-11-21 18:56:26.000000000 +0100
+@@ -5339,7 +5339,10 @@
+ }
+ break;
+ }
+- /* FALLTHROUGH */
++ /* If the constant is negative, we cannot simplify this. */
++ if (tree_int_cst_sgn (c) == -1)
++ break;
++ /* FALLTHROUGH */
+ case NEGATE_EXPR:
+ if ((t1 = extract_muldiv (op0, c, code, wide_type)) != 0)
+ return fold_build1 (tcode, ctype, fold_convert (ctype, t1));
diff --git a/packages/gcc/gcc-4.2.2/pr34130.patch b/packages/gcc/gcc-4.2.2/pr34130.patch
new file mode 100644
index 0000000000..415335f4b4
--- /dev/null
+++ b/packages/gcc/gcc-4.2.2/pr34130.patch
@@ -0,0 +1,16 @@
+Index: gcc-4.1.2/gcc/fold-const.c
+===================================================================
+--- gcc-4.1.2.orig/gcc/fold-const.c 2007-11-21 18:53:42.000000000 +0100
++++ gcc-4.1.2/gcc/fold-const.c 2007-11-21 18:56:26.000000000 +0100
+@@ -5339,7 +5339,10 @@
+ }
+ break;
+ }
+- /* FALLTHROUGH */
++ /* If the constant is negative, we cannot simplify this. */
++ if (tree_int_cst_sgn (c) == -1)
++ break;
++ /* FALLTHROUGH */
+ case NEGATE_EXPR:
+ if ((t1 = extract_muldiv (op0, c, code, wide_type)) != 0)
+ return fold_build1 (tcode, ctype, fold_convert (ctype, t1));
diff --git a/packages/gcc/gcc-cross-initial_4.2.1.bb b/packages/gcc/gcc-cross-initial_4.2.1.bb
index 1c1d094382..fe326d304b 100644
--- a/packages/gcc/gcc-cross-initial_4.2.1.bb
+++ b/packages/gcc/gcc-cross-initial_4.2.1.bb
@@ -1,5 +1,5 @@
require gcc-cross_${PV}.bb
require gcc-cross-initial.inc
-EXTRA_OECONF += "--disable-libmudflap \
+EXTRA_OECONF += "--disable-libmudflap --disable-libgomp \
--disable-libssp"
diff --git a/packages/gcc/gcc-cross-initial_4.2.2.bb b/packages/gcc/gcc-cross-initial_4.2.2.bb
index 1c1d094382..fe326d304b 100644
--- a/packages/gcc/gcc-cross-initial_4.2.2.bb
+++ b/packages/gcc/gcc-cross-initial_4.2.2.bb
@@ -1,5 +1,5 @@
require gcc-cross_${PV}.bb
require gcc-cross-initial.inc
-EXTRA_OECONF += "--disable-libmudflap \
+EXTRA_OECONF += "--disable-libmudflap --disable-libgomp \
--disable-libssp"
diff --git a/packages/gcc/gcc-cross-sdk_4.1.1.bb b/packages/gcc/gcc-cross-sdk_4.1.1.bb
index 51470c7214..e2efde139f 100644
--- a/packages/gcc/gcc-cross-sdk_4.1.1.bb
+++ b/packages/gcc/gcc-cross-sdk_4.1.1.bb
@@ -2,7 +2,7 @@ DESCRIPTION = "The GNU cc and gcc C compilers."
HOMEPAGE = "http://www.gnu.org/software/gcc/"
SECTION = "devel"
LICENSE = "GPL"
-PR = "r1"
+PR = "r2"
inherit sdk
diff --git a/packages/gcc/gcc-cross_3.3.3.bb b/packages/gcc/gcc-cross_3.3.3.bb
index a24752fe89..509fe59469 100644
--- a/packages/gcc/gcc-cross_3.3.3.bb
+++ b/packages/gcc/gcc-cross_3.3.3.bb
@@ -1,6 +1,7 @@
SECTION = "devel"
require gcc_${PV}.bb
inherit cross
+
FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/gcc-${PV}"
DEPENDS = "virtual/${TARGET_PREFIX}binutils virtual/${TARGET_PREFIX}libc-for-gcc"
diff --git a/packages/gcc/gcc-cross_3.3.4.bb b/packages/gcc/gcc-cross_3.3.4.bb
index 34e111ee45..7cee36d66c 100644
--- a/packages/gcc/gcc-cross_3.3.4.bb
+++ b/packages/gcc/gcc-cross_3.3.4.bb
@@ -4,7 +4,7 @@ require gcc-paths-cross.inc
inherit cross
FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/gcc-${PV}"
-PR="r5"
+PR="r6"
DEPENDS = "virtual/${TARGET_PREFIX}binutils virtual/${TARGET_PREFIX}libc-for-gcc"
PROVIDES = "virtual/${TARGET_PREFIX}gcc virtual/${TARGET_PREFIX}g++"
diff --git a/packages/gcc/gcc-cross_3.4.3.bb b/packages/gcc/gcc-cross_3.4.3.bb
index 21ca6656ec..cec0505eda 100644
--- a/packages/gcc/gcc-cross_3.4.3.bb
+++ b/packages/gcc/gcc-cross_3.4.3.bb
@@ -5,7 +5,7 @@ inherit cross
FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/gcc-${PV}"
# NOTE: split PR. If the main .oe changes something that affects its *build*
# remember to increment this one too.
-PR = "r11"
+PR = "r12"
DEPENDS = "virtual/${TARGET_PREFIX}binutils virtual/${TARGET_PREFIX}libc-for-gcc"
PROVIDES = "virtual/${TARGET_PREFIX}gcc virtual/${TARGET_PREFIX}g++"
diff --git a/packages/gcc/gcc-cross_3.4.4.bb b/packages/gcc/gcc-cross_3.4.4.bb
index 0f0ad3b98f..7021b0fdd3 100644
--- a/packages/gcc/gcc-cross_3.4.4.bb
+++ b/packages/gcc/gcc-cross_3.4.4.bb
@@ -5,7 +5,7 @@ inherit cross
FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/gcc-${PV}"
# NOTE: split PR. If the main .oe changes something that affects its *build*
# remember to increment this one too.
-PR = "r5"
+PR = "r6"
DEPENDS = "virtual/${TARGET_PREFIX}binutils virtual/${TARGET_PREFIX}libc-for-gcc"
PROVIDES = "virtual/${TARGET_PREFIX}gcc virtual/${TARGET_PREFIX}g++"
diff --git a/packages/gcc/gcc-cross_4.0.0.bb b/packages/gcc/gcc-cross_4.0.0.bb
index 73fd86a720..63d0f70c74 100644
--- a/packages/gcc/gcc-cross_4.0.0.bb
+++ b/packages/gcc/gcc-cross_4.0.0.bb
@@ -5,7 +5,7 @@ inherit cross
FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/gcc-${PV}"
# NOTE: split PR. If the main .oe changes something that affects its *build*
# remember to increment this one too.
-PR = "r2"
+PR = "r3"
DEPENDS = "virtual/${TARGET_PREFIX}binutils virtual/${TARGET_PREFIX}libc-for-gcc gmp-native mpfr-native"
PROVIDES = "virtual/${TARGET_PREFIX}gcc virtual/${TARGET_PREFIX}g++"
diff --git a/packages/gcc/gcc-cross_4.0.2.bb b/packages/gcc/gcc-cross_4.0.2.bb
index 33544af026..44ceb4f4ca 100644
--- a/packages/gcc/gcc-cross_4.0.2.bb
+++ b/packages/gcc/gcc-cross_4.0.2.bb
@@ -5,7 +5,7 @@ inherit cross
FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/gcc-${PV}"
# NOTE: split PR. If the main .oe changes something that affects its *build*
# remember to increment this one too.
-PR = "r8"
+PR = "r9"
DEPENDS = "virtual/${TARGET_PREFIX}binutils virtual/${TARGET_PREFIX}libc-for-gcc gmp-native mpfr-native"
PROVIDES = "virtual/${TARGET_PREFIX}gcc virtual/${TARGET_PREFIX}g++"
diff --git a/packages/gcc/gcc-cross_4.1.0.bb b/packages/gcc/gcc-cross_4.1.0.bb
index bfcfac2033..5719afb740 100644
--- a/packages/gcc/gcc-cross_4.1.0.bb
+++ b/packages/gcc/gcc-cross_4.1.0.bb
@@ -5,7 +5,7 @@ inherit cross
FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/gcc-${PV}"
# NOTE: split PR. If the main .oe changes something that affects its *build*
# remember to increment this one too.
-PR = "r3"
+PR = "r4"
DEPENDS = "virtual/${TARGET_PREFIX}binutils virtual/${TARGET_PREFIX}libc-for-gcc gmp-native mpfr-native"
PROVIDES = "virtual/${TARGET_PREFIX}gcc virtual/${TARGET_PREFIX}g++"
diff --git a/packages/gcc/gcc-cross_4.1.1.bb b/packages/gcc/gcc-cross_4.1.1.bb
index 8a66ce250e..02912f2054 100644
--- a/packages/gcc/gcc-cross_4.1.1.bb
+++ b/packages/gcc/gcc-cross_4.1.1.bb
@@ -5,7 +5,7 @@ inherit cross
FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/gcc-${PV}"
# NOTE: split PR. If the main .oe changes something that affects its *build*
# remember to increment this one too.
-PR = "r15"
+PR = "r17"
DEPENDS = "virtual/${TARGET_PREFIX}binutils virtual/${TARGET_PREFIX}libc-for-gcc gmp-native mpfr-native"
PROVIDES = "virtual/${TARGET_PREFIX}gcc virtual/${TARGET_PREFIX}g++"
diff --git a/packages/gcc/gcc-cross_4.1.2.bb b/packages/gcc/gcc-cross_4.1.2.bb
index 518a6a76d9..306cf9539c 100644
--- a/packages/gcc/gcc-cross_4.1.2.bb
+++ b/packages/gcc/gcc-cross_4.1.2.bb
@@ -3,9 +3,9 @@ require gcc_${PV}.bb
require gcc-paths-cross.inc
inherit cross
FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/gcc-${PV}"
-# NOTE: split PR. If the main .oe changes something that affects its *build*
+# NOTE: split PR. If the main .bb changes something that affects its *build*
# remember to increment this one too.
-PR = "r10"
+PR = "r13"
DEPENDS = "virtual/${TARGET_PREFIX}binutils virtual/${TARGET_PREFIX}libc-for-gcc gmp-native mpfr-native"
PROVIDES = "virtual/${TARGET_PREFIX}gcc virtual/${TARGET_PREFIX}g++"
diff --git a/packages/gcc/gcc-cross_4.2.1.bb b/packages/gcc/gcc-cross_4.2.1.bb
index da27c68d9a..27816e7146 100644
--- a/packages/gcc/gcc-cross_4.2.1.bb
+++ b/packages/gcc/gcc-cross_4.2.1.bb
@@ -5,7 +5,7 @@ inherit cross
FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/gcc-${PV}"
# NOTE: split PR. If the main .oe changes something that affects its *build*
# remember to increment this one too.
-PR = "r9"
+PR = "r10"
DEPENDS = "virtual/${TARGET_PREFIX}binutils virtual/${TARGET_PREFIX}libc-for-gcc gmp-native mpfr-native"
PROVIDES = "virtual/${TARGET_PREFIX}gcc virtual/${TARGET_PREFIX}g++"
@@ -16,5 +16,8 @@ require gcc3-build-cross.inc
require gcc-package-cross.inc
SRC_URI_append_fail-fast = " file://zecke-no-host-includes.patch;patch=1 "
-
-EXTRA_OECONF += "--disable-libunwind-exceptions --with-mpfr=${STAGING_DIR_NATIVE}${layout_exec_prefix}"
+# Do not build libssp libmudflap and libgomp
+# We might need them for some beefy targets
+EXTRA_OECONF += "--disable-libunwind-exceptions --disable-libssp \
+ --disable-libgomp --disable-libmudflap \
+ --with-mpfr=${STAGING_DIR_NATIVE}${layout_exec_prefix}"
diff --git a/packages/gcc/gcc-cross_4.2.2.bb b/packages/gcc/gcc-cross_4.2.2.bb
index 1d5ebdcc61..ec169072af 100644
--- a/packages/gcc/gcc-cross_4.2.2.bb
+++ b/packages/gcc/gcc-cross_4.2.2.bb
@@ -5,7 +5,7 @@ inherit cross
FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/gcc-${PV}"
# NOTE: split PR. If the main .oe changes something that affects its *build*
# remember to increment this one too.
-PR = "r1"
+PR = "r2"
DEPENDS = "virtual/${TARGET_PREFIX}binutils virtual/${TARGET_PREFIX}libc-for-gcc gmp-native mpfr-native"
PROVIDES = "virtual/${TARGET_PREFIX}gcc virtual/${TARGET_PREFIX}g++"
@@ -14,7 +14,9 @@ PROVIDES = "virtual/${TARGET_PREFIX}gcc virtual/${TARGET_PREFIX}g++"
require gcc3-build-cross.inc
# cross packaging
require gcc-package-cross.inc
-
SRC_URI_append_fail-fast = " file://zecke-no-host-includes.patch;patch=1 "
-
-EXTRA_OECONF += "--disable-libunwind-exceptions --with-mpfr=${STAGING_DIR_NATIVE}${layout_exec_prefix}"
+# Do not build libssp libmudflap and libgomp
+# We might need them for some beefy targets
+EXTRA_OECONF += "--disable-libunwind-exceptions --disable-libssp \
+ --disable-libgomp --disable-libmudflap \
+ --with-mpfr=${STAGING_DIR_NATIVE}${layout_exec_prefix}"
diff --git a/packages/gcc/gcc-cross_csl-arm-2005q3.bb b/packages/gcc/gcc-cross_csl-arm-2005q3.bb
index 7ea8a0d166..b779e99435 100644
--- a/packages/gcc/gcc-cross_csl-arm-2005q3.bb
+++ b/packages/gcc/gcc-cross_csl-arm-2005q3.bb
@@ -4,7 +4,7 @@ require gcc-paths-cross.inc
inherit cross
# NOTE: split PR. If the main .oe changes something that affects its *build*
# remember to increment this one too.
-PR = "r1"
+PR = "r2"
DEPENDS = "virtual/${TARGET_PREFIX}binutils virtual/${TARGET_PREFIX}libc-for-gcc"
PROVIDES = "virtual/${TARGET_PREFIX}gcc virtual/${TARGET_PREFIX}g++"
diff --git a/packages/gcc/gcc-cross_csl-arm-cvs.bb b/packages/gcc/gcc-cross_csl-arm-cvs.bb
index b894c2a86e..a9cb478701 100644
--- a/packages/gcc/gcc-cross_csl-arm-cvs.bb
+++ b/packages/gcc/gcc-cross_csl-arm-cvs.bb
@@ -4,7 +4,7 @@ require gcc-paths-cross.inc
inherit cross
# NOTE: split PR. If the main .oe changes something that affects its *build*
# remember to increment this one too.
-PR = "r0"
+PR = "r1"
DEPENDS = "virtual/${TARGET_PREFIX}binutils virtual/${TARGET_PREFIX}libc-for-gcc"
PROVIDES = "virtual/${TARGET_PREFIX}gcc virtual/${TARGET_PREFIX}g++"
diff --git a/packages/gcc/gcc-cross_csl-arm.bb b/packages/gcc/gcc-cross_csl-arm.bb
index 95bda6c95e..5ca4b949e0 100644
--- a/packages/gcc/gcc-cross_csl-arm.bb
+++ b/packages/gcc/gcc-cross_csl-arm.bb
@@ -4,7 +4,7 @@ require gcc-paths-cross.inc
inherit cross
# NOTE: split PR. If the main .oe changes something that affects its *build*
# remember to increment this one too.
-PR = "r0"
+PR = "r1"
DEPENDS = "virtual/${TARGET_PREFIX}binutils virtual/${TARGET_PREFIX}libc-for-gcc"
PROVIDES = "virtual/${TARGET_PREFIX}gcc virtual/${TARGET_PREFIX}g++"
diff --git a/packages/gcc/gcc-package-cross.inc b/packages/gcc/gcc-package-cross.inc
index cbd01c3e39..51a45cd633 100644
--- a/packages/gcc/gcc-package-cross.inc
+++ b/packages/gcc/gcc-package-cross.inc
@@ -78,4 +78,9 @@ do_install () {
${TARGET_PREFIX}strip ${D}${target_base_libdir}/libgcc_s.so.* || true
${TARGET_PREFIX}strip ${D}${target_libdir}/libgfortran*.so* || true
fi
+
+ # Link gfortran to g77 to satisfy not-so-smart configure or hard coded g77
+ # gfortran is fully backwards compatible. This is a safe and practical solution.
+ ln -sf ${CROSS_DIR}/bin/${TARGET_PREFIX}gfortran ${CROSS_DIR}/bin/${TARGET_PREFIX}g77 || true
+ ln -sf ${CROSS_DIR}/${TARGET_SYS}/bin/gfortran ${CROSS_DIR}/${TARGET_SYS}/bin/g77 || true
}
diff --git a/packages/gcc/gcc-package.inc b/packages/gcc/gcc-package.inc
index 82bf78db80..96f1604997 100644
--- a/packages/gcc/gcc-package.inc
+++ b/packages/gcc/gcc-package.inc
@@ -5,6 +5,7 @@ PACKAGES = "libgcc ${PN} ${PN}-symlinks \
g++ g++-symlinks \
cpp cpp-symlinks \
g77 g77-symlinks \
+ gfortran gfortran-symlinks \
gcov gcov-symlinks \
libmudflap libmudflap-dev \
libstdc++ libg2c \
@@ -28,6 +29,11 @@ FILES_g77 = "${bindir}/${TARGET_PREFIX}g77 \
FILES_g77-symlinks = "${bindir}/g77 \
${bindir}/f77"
+FILES_gfortran = "${bindir}/${TARGET_PREFIX}gfortran \
+ ${libexecdir}/gcc/${TARGET_SYS}/${BINV}/f951"
+FILES_gfortran-symlinks = "${bindir}/gfortran \
+ ${bindir}/f95"
+
FILES_cpp = "${bindir}/${TARGET_PREFIX}cpp \
${base_libdir}/cpp"
FILES_cpp-symlinks = "${bindir}/cpp"
@@ -114,10 +120,12 @@ do_install () {
rm -f ${TARGET_ARCH}-*${TARGET_ARCH}-*
# Symlinks so we can use these trivially on the target
- ln -sf ${TARGET_SYS}-g77 g77
+ ln -sf ${TARGET_SYS}-g77 g77 || true
+ ln -sf ${TARGET_SYS}-gfortran gfortran || true
ln -sf ${TARGET_SYS}-g++ g++
ln -sf ${TARGET_SYS}-gcc gcc
- ln -sf g77 f77
+ ln -sf g77 f77 || true
+ ln -sf gfortran f95 || true
ln -sf g++ c++
ln -sf gcc cc
ln -sf ${bindir}/${TARGET_SYS}-cpp ${D}${base_libdir}/cpp
diff --git a/packages/gcc/gcc3-build.inc b/packages/gcc/gcc3-build.inc
index 2924f0f9dd..e56dcdcc4d 100644
--- a/packages/gcc/gcc3-build.inc
+++ b/packages/gcc/gcc3-build.inc
@@ -16,7 +16,7 @@ JAVA_arm ?= ""
JAVA_armeb ?= ""
JAVA_mipsel ?= ""
JAVA_sh3 ?= ""
-# gcc4-build sets this to f95
+# gcc4-build sets this to fortran
FORTRAN ?= ",f77"
LANGUAGES ?= "c,c++${FORTRAN}${JAVA}"
@@ -39,9 +39,11 @@ EXTRA_OECONF_PATHS = " \
--with-local-prefix=${prefix}/local \
--with-gxx-include-dir=${includedir}/c++/${BINV}"
-EXTRA_OECONF_DEP = ""
-EXTRA_OECONF_uclibc = "--disable-__cxa_atexit"
-EXTRA_OECONF_glibc = "--enable-__cxa_atexit"
+# Build uclibc compilers without cxa_atexit support
+EXTRA_OECONF_append_linux = " --enable-__cxa_atexit"
+EXTRA_OECONF_append_linux-gnueabi = " --enable-__cxa_atexit"
+EXTRA_OECONF_append_linux-uclibc = " --disable-__cxa_atexit"
+EXTRA_OECONF_append_linux-uclibcgnueabi = " --disable-__cxa_atexit"
EXTRA_OECONF += "${@get_gcc_fpu_setting(bb, d)}"
CPPFLAGS = ""
@@ -56,19 +58,6 @@ EXTRA_OEMAKE += "ARCH_FLAGS_FOR_TARGET='${ARCH_FLAGS_FOR_TARGET}'"
require gcc-fpu.inc
-python __anonymous () {
- import bb, re
- if (re.match('linux-uclibc$', bb.data.getVar('TARGET_OS', d, 1)) != None):
- bb.data.setVar('EXTRA_OECONF_DEP', '${EXTRA_OECONF_uclibc}', d)
- elif (re.match('linux-uclibcgnueabi$', bb.data.getVar('TARGET_OS', d, 1)) != None):
- bb.data.setVar('EXTRA_OECONF_DEP', '${EXTRA_OECONF_uclibc}', d)
- elif (re.match('linux-gnueabi$', bb.data.getVar('TARGET_OS', d, 1)) != None):
- bb.data.setVar('EXTRA_OECONF_DEP', '${EXTRA_OECONF_glibc}', d)
- elif (re.match('linux$', bb.data.getVar('TARGET_OS', d, 1)) != None):
- bb.data.setVar('EXTRA_OECONF_DEP', '${EXTRA_OECONF_glibc}', d)
-
-}
-
do_configure () {
# Setup these vars for cross building only
# ... because foo_FOR_TARGET apparently gets misinterpreted inside the
diff --git a/packages/gcc/gcc_3.3.3.bb b/packages/gcc/gcc_3.3.3.bb
index 07387cb1bc..ea34debc64 100644
--- a/packages/gcc/gcc_3.3.3.bb
+++ b/packages/gcc/gcc_3.3.3.bb
@@ -1,5 +1,5 @@
SECTION = "devel"
-PR = "r2"
+PR = "r3"
inherit autotools gettext
DESCRIPTION = "The GNU cc and gcc C compilers."
diff --git a/packages/gcc/gcc_3.3.4.bb b/packages/gcc/gcc_3.3.4.bb
index f11fc36646..294e57d7df 100644
--- a/packages/gcc/gcc_3.3.4.bb
+++ b/packages/gcc/gcc_3.3.4.bb
@@ -1,5 +1,5 @@
SECTION = "devel"
-PR = "r2"
+PR = "r3"
inherit autotools gettext
DESCRIPTION = "The GNU cc and gcc C compilers."
diff --git a/packages/gcc/gcc_3.4.3.bb b/packages/gcc/gcc_3.4.3.bb
index e1f73eaea5..c4d6df955d 100644
--- a/packages/gcc/gcc_3.4.3.bb
+++ b/packages/gcc/gcc_3.4.3.bb
@@ -1,4 +1,4 @@
-PR = "r11"
+PR = "r12"
DESCRIPTION = "The GNU cc and gcc C compilers."
HOMEPAGE = "http://www.gnu.org/software/gcc/"
SECTION = "devel"
diff --git a/packages/gcc/gcc_3.4.4.bb b/packages/gcc/gcc_3.4.4.bb
index adc1545b99..e9e073b1ae 100644
--- a/packages/gcc/gcc_3.4.4.bb
+++ b/packages/gcc/gcc_3.4.4.bb
@@ -1,4 +1,4 @@
-PR = "r5"
+PR = "r6"
DESCRIPTION = "The GNU cc and gcc C compilers."
HOMEPAGE = "http://www.gnu.org/software/gcc/"
SECTION = "devel"
diff --git a/packages/gcc/gcc_4.0.0.bb b/packages/gcc/gcc_4.0.0.bb
index 430bbef0d4..28561e1e07 100644
--- a/packages/gcc/gcc_4.0.0.bb
+++ b/packages/gcc/gcc_4.0.0.bb
@@ -1,4 +1,4 @@
-PR = "r1"
+PR = "r2"
DESCRIPTION = "The GNU cc and gcc C compilers."
HOMEPAGE = "http://www.gnu.org/software/gcc/"
SECTION = "devel"
diff --git a/packages/gcc/gcc_4.0.2.bb b/packages/gcc/gcc_4.0.2.bb
index 1d7d8242fe..19d67ab1b4 100644
--- a/packages/gcc/gcc_4.0.2.bb
+++ b/packages/gcc/gcc_4.0.2.bb
@@ -3,7 +3,7 @@ HOMEPAGE = "http://www.gnu.org/software/gcc/"
SECTION = "devel"
LICENSE = "GPL"
DEPENDS = "mpfr gmp"
-PR = "r5"
+PR = "r6"
inherit autotools gettext
diff --git a/packages/gcc/gcc_4.1.0.bb b/packages/gcc/gcc_4.1.0.bb
index 3a4eaf9d3b..a9dbad579f 100644
--- a/packages/gcc/gcc_4.1.0.bb
+++ b/packages/gcc/gcc_4.1.0.bb
@@ -1,4 +1,4 @@
-PR = "r0"
+PR = "r2"
DESCRIPTION = "The GNU cc and gcc C compilers."
HOMEPAGE = "http://www.gnu.org/software/gcc/"
SECTION = "devel"
@@ -13,7 +13,8 @@ SRC_URI = "http://ftp.gnu.org/pub/gnu/gcc/gcc-4.1.0/gcc-4.1.0.tar.bz2 \
file://arm-nolibfloat.patch;patch=1 \
file://arm-softfloat.patch;patch=1 \
file://zecke-xgcc-cpp.patch;patch=1 \
- file://ldflags.patch;patch=1"
+ file://ldflags.patch;patch=1 \
+ file://pr34130.patch;patch=1"
SRC_URI_append_fail-fast = " file://zecke-no-host-includes.patch;patch=1 "
diff --git a/packages/gcc/gcc_4.1.1.bb b/packages/gcc/gcc_4.1.1.bb
index 1a03ce617e..8d08df6b8c 100644
--- a/packages/gcc/gcc_4.1.1.bb
+++ b/packages/gcc/gcc_4.1.1.bb
@@ -1,4 +1,4 @@
-PR = "r14"
+PR = "r17"
DESCRIPTION = "The GNU cc and gcc C compilers."
HOMEPAGE = "http://www.gnu.org/software/gcc/"
SECTION = "devel"
@@ -33,6 +33,8 @@ SRC_URI = "http://ftp.gnu.org/pub/gnu/gcc/gcc-4.1.1/gcc-4.1.1.tar.bz2 \
file://fix-ICE-in-arm_unwind_emit_set.diff;patch=1 \
file://gcc-4.1.1-pr13685-1.patch;patch=1 \
file://gcc-ignore-cache.patch;patch=1 \
+ file://gcc-4.1.1-e300cx.patch;patch=1 \
+ file://pr34130.patch;patch=1 \
"
SRC_URI_append_sh3 = " file://sh3-installfix-fixheaders.patch;patch=1 "
diff --git a/packages/gcc/gcc_4.1.2.bb b/packages/gcc/gcc_4.1.2.bb
index 9d3d3e3cf6..b3eb0100e8 100644
--- a/packages/gcc/gcc_4.1.2.bb
+++ b/packages/gcc/gcc_4.1.2.bb
@@ -1,8 +1,10 @@
-PR = "r7"
DESCRIPTION = "The GNU cc and gcc C compilers."
HOMEPAGE = "http://www.gnu.org/software/gcc/"
SECTION = "devel"
LICENSE = "GPL"
+# NOTE: split PR. If the main .bb changes something that affects its *build*
+# remember to increment the -cross .bb PR too.
+PR = "r10"
inherit autotools gettext
@@ -32,6 +34,7 @@ SRC_URI = "ftp://ftp.gnu.org/pub/gnu/gcc/gcc-4.1.2/gcc-4.1.2.tar.bz2 \
file://cache-amnesia.patch;patch=1 \
file://gfortran.patch;patch=1 \
file://gcc-4.0.2-e300c2c3.patch;patch=1 \
+ file://pr34130.patch;patch=1 \
"
SRC_URI_append_sh3 = " file://sh3-installfix-fixheaders.patch;patch=1 "
diff --git a/packages/gcc/gcc_4.2.1.bb b/packages/gcc/gcc_4.2.1.bb
index 7bf074de57..5d049398e4 100644
--- a/packages/gcc/gcc_4.2.1.bb
+++ b/packages/gcc/gcc_4.2.1.bb
@@ -1,4 +1,4 @@
-PR = "r5"
+PR = "r7"
DESCRIPTION = "The GNU cc and gcc C compilers."
HOMEPAGE = "http://www.gnu.org/software/gcc/"
SECTION = "devel"
@@ -39,6 +39,7 @@ SRC_URI = "ftp://ftp.gnu.org/pub/gnu/gcc/gcc-${PV}/gcc-${PV}.tar.bz2 \
file://fix-ICE-in-arm_unwind_emit_set.diff;patch=1 \
file://cache-amnesia.patch;patch=1 \
file://gfortran.patch;patch=1 \
+ file://pr34130.patch;patch=1 \
"
SRC_URI_append_ep93xx = " \
diff --git a/packages/gcc/gcc_4.2.2.bb b/packages/gcc/gcc_4.2.2.bb
index f13f218ab5..de3b65ce7f 100644
--- a/packages/gcc/gcc_4.2.2.bb
+++ b/packages/gcc/gcc_4.2.2.bb
@@ -1,4 +1,4 @@
-PR = "r0"
+PR = "r2"
DESCRIPTION = "The GNU cc and gcc C compilers."
HOMEPAGE = "http://www.gnu.org/software/gcc/"
SECTION = "devel"
@@ -39,6 +39,7 @@ SRC_URI = "ftp://ftp.gnu.org/pub/gnu/gcc/gcc-${PV}/gcc-${PV}.tar.bz2 \
file://fix-ICE-in-arm_unwind_emit_set.diff;patch=1 \
file://cache-amnesia.patch;patch=1 \
file://gfortran.patch;patch=1 \
+ file://pr34130.patch;patch=1 \
"
SRC_URI_append_ep93xx = " \
diff --git a/packages/gcc/gcc_csl-arm-2005q3.bb b/packages/gcc/gcc_csl-arm-2005q3.bb
index fe9b364c88..4c8f8227a9 100644
--- a/packages/gcc/gcc_csl-arm-2005q3.bb
+++ b/packages/gcc/gcc_csl-arm-2005q3.bb
@@ -4,7 +4,7 @@ SECTION = "devel"
LICENSE = "GPL"
BINV = "3.4.4"
PV = "3.4.4+csl-arm-2005q3"
-PR = "r2"
+PR = "r3"
FILESDIR = "${FILE_DIRNAME}/gcc-csl-arm"
diff --git a/packages/gcc/gcc_csl-arm-cvs.bb b/packages/gcc/gcc_csl-arm-cvs.bb
index 20b18b1085..d8e5fee2bb 100644
--- a/packages/gcc/gcc_csl-arm-cvs.bb
+++ b/packages/gcc/gcc_csl-arm-cvs.bb
@@ -5,6 +5,6 @@ BINV = "3.4.4"
SRC_URI += "file://15342.patch;patch=1 file://gcc-3.4.0-arm-lib1asm.patch;patch=1 file://no-libfloat.patch;patch=1"
-PR = "r0"
+PR = "r1"
DEFAULT_PREFERENCE = "-1"
diff --git a/packages/gcc/gcc_csl-arm.bb b/packages/gcc/gcc_csl-arm.bb
index c332feb463..2599498fda 100644
--- a/packages/gcc/gcc_csl-arm.bb
+++ b/packages/gcc/gcc_csl-arm.bb
@@ -4,7 +4,7 @@ SECTION = "devel"
LICENSE = "GPL"
BINV = "3.4.4"
PV = "3.4.4+csl-arm-${SRCDATE}"
-PR = "r0"
+PR = "r1"
FILESDIR = "${FILE_DIRNAME}/gcc-csl-arm"
DEFAULT_PREFERENCE = "-1"
diff --git a/packages/gettext/gettext-0.14.1/disable_java.patch b/packages/gettext/gettext-0.14.1/disable_java.patch
new file mode 100644
index 0000000000..0c641eb91b
--- /dev/null
+++ b/packages/gettext/gettext-0.14.1/disable_java.patch
@@ -0,0 +1,33 @@
+Index: gettext-0.14.1/gettext-tools/configure.ac
+===================================================================
+--- gettext-0.14.1.orig/gettext-tools/configure.ac 2004-01-16 10:49:06.000000000 +0000
++++ gettext-0.14.1/gettext-tools/configure.ac 2007-11-14 21:43:39.000000000 +0000
+@@ -37,28 +37,16 @@
+ AC_PROG_YACC
+
+ gt_GCJ
+-if test -n "$HAVE_GCJ"; then
+- BUILDJAVAEXE=yes
+-else
+ BUILDJAVAEXE=no
+-fi
+ AC_SUBST(BUILDJAVAEXE)
+
+ gt_JAVACOMP
+ AC_CHECK_PROG(JAR, jar, jar)
+-if test -n "$HAVE_JAVACOMP" && test -n "$JAR"; then
+- BUILDJAVA=yes
+-else
+ BUILDJAVA=no
+-fi
+ AC_SUBST(BUILDJAVA)
+
+ gt_JAVAEXEC
+-if test -n "$HAVE_JAVAEXEC" && test $BUILDJAVA = yes; then
+- TESTJAVA=yes
+-else
+ TESTJAVA=no
+-fi
+ AC_SUBST(TESTJAVA)
+
+ gt_CSHARPCOMP
diff --git a/packages/gettext/gettext_0.14.1.bb b/packages/gettext/gettext_0.14.1.bb
index 4e25c0e829..960db30b56 100644
--- a/packages/gettext/gettext_0.14.1.bb
+++ b/packages/gettext/gettext_0.14.1.bb
@@ -2,13 +2,14 @@ DESCRIPTION = "The GNU internationalization library."
HOMEPAGE = "http://www.gnu.org/software/gettext/gettext.html"
SECTION = "libs"
LICENSE = "GPL"
-PR = "r5"
+PR = "r6"
PROVIDES = "virtual/libintl"
SRC_URI = "${GNU_MIRROR}/gettext/gettext-${PV}.tar.gz \
file://gettext-vpath.patch;patch=1;pnum=1 \
file://fixchicken.patch;patch=1;pnum=1 \
- file://getline.m4.patch;patch=1"
+ file://getline.m4.patch;patch=1 \
+ file://disable_java.patch;patch=1"
SRC_URI_append_linux-uclibc = " file://gettext-error_print_progname.patch;patch=1"
SRC_URI_append_linux-uclibcgnueabi = " file://gettext-error_print_progname.patch;patch=1"
diff --git a/packages/git/git-native_1.5.3.bb b/packages/git/git-native_1.5.3.bb
new file mode 100644
index 0000000000..935c773c1c
--- /dev/null
+++ b/packages/git/git-native_1.5.3.bb
@@ -0,0 +1,4 @@
+require git.inc
+inherit native
+DEPENDS = "openssl-native curl-native zlib-native expat-native"
+PR = "r1"
diff --git a/packages/git/git.inc b/packages/git/git.inc
new file mode 100644
index 0000000000..7115d44b35
--- /dev/null
+++ b/packages/git/git.inc
@@ -0,0 +1,19 @@
+DESCRIPTION = "The git revision control system used by the Linux kernel developers"
+SECTION = "console/utils"
+LICENSE = "GPL"
+
+SRC_URI = "http://www.kernel.org/pub/software/scm/git/git-${PV}.tar.bz2 \
+ file://autotools.patch;patch=1"
+S = "${WORKDIR}/git-${PV}"
+
+EXTRA_OEMAKE = "NO_TCLTL=1"
+
+inherit autotools
+
+do_install () {
+ oe_runmake install prefix=${D} bindir=${D}${bindir} \
+ template_dir=${D}${datadir}/git-core/templates \
+ GIT_PYTHON_DIR=${D}${datadir}/git-core/python
+}
+
+FILES_${PN} += "${datadir}/git-core"
diff --git a/packages/glibc/files/glibc-2.5-soft-fp-separate-strong-alias.patch b/packages/glibc/files/glibc-2.5-soft-fp-separate-strong-alias.patch
new file mode 100755
index 0000000000..e41c1b7d96
--- /dev/null
+++ b/packages/glibc/files/glibc-2.5-soft-fp-separate-strong-alias.patch
@@ -0,0 +1,205 @@
+Index: glibc-2.5-tls-ppc-04/soft-fp/eqdf2.c
+===================================================================
+--- glibc-2.5-tls-ppc-04.orig/soft-fp/eqdf2.c
++++ glibc-2.5-tls-ppc-04/soft-fp/eqdf2.c
+@@ -48,4 +48,3 @@ int __eqdf2(DFtype a, DFtype b)
+ return r;
+ }
+
+-strong_alias(__eqdf2, __nedf2);
+Index: glibc-2.5-tls-ppc-04/soft-fp/gedf2.c
+===================================================================
+--- glibc-2.5-tls-ppc-04.orig/soft-fp/gedf2.c
++++ glibc-2.5-tls-ppc-04/soft-fp/gedf2.c
+@@ -47,5 +47,3 @@ int __gedf2(DFtype a, DFtype b)
+
+ return r;
+ }
+-
+-strong_alias(__gedf2, __gtdf2);
+Index: glibc-2.5-tls-ppc-04/soft-fp/gtdf2.c
+===================================================================
+--- /dev/null
++++ glibc-2.5-tls-ppc-04/soft-fp/gtdf2.c
+@@ -0,0 +1,49 @@
++/* Software floating-point emulation.
++ Return 0 iff a == b, 1 iff a > b, -2 iff a ? b, -1 iff a < b
++ Copyright (C) 1997,1999,2006 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++ Contributed by Richard Henderson (rth@cygnus.com) and
++ Jakub Jelinek (jj@ultra.linux.cz).
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ In addition to the permissions in the GNU Lesser General Public
++ License, the Free Software Foundation gives you unlimited
++ permission to link the compiled version of this file into
++ combinations with other programs, and to distribute those
++ combinations without any restriction coming from the use of this
++ file. (The Lesser General Public License restrictions do apply in
++ other respects; for example, they cover modification of the file,
++ and distribution when not linked into a combine executable.)
++
++ The GNU C Library 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
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
++ MA 02110-1301, USA. */
++
++#include "soft-fp.h"
++#include "double.h"
++
++int __gtdf2(DFtype a, DFtype b)
++{
++ FP_DECL_EX;
++ FP_DECL_D(A); FP_DECL_D(B);
++ int r;
++
++ FP_UNPACK_RAW_D(A, a);
++ FP_UNPACK_RAW_D(B, b);
++ FP_CMP_D(r, A, B, -2);
++ if (r == -2 && (FP_ISSIGNAN_D(A) || FP_ISSIGNAN_D(B)))
++ FP_SET_EXCEPTION(FP_EX_INVALID);
++ FP_HANDLE_EXCEPTIONS;
++
++ return r;
++}
+Index: glibc-2.5-tls-ppc-04/soft-fp/ledf2.c
+===================================================================
+--- glibc-2.5-tls-ppc-04.orig/soft-fp/ledf2.c
++++ glibc-2.5-tls-ppc-04/soft-fp/ledf2.c
+@@ -48,4 +48,3 @@ int __ledf2(DFtype a, DFtype b)
+ return r;
+ }
+
+-strong_alias(__ledf2, __ltdf2);
+Index: glibc-2.5-tls-ppc-04/soft-fp/ltdf2.c
+===================================================================
+--- /dev/null
++++ glibc-2.5-tls-ppc-04/soft-fp/ltdf2.c
+@@ -0,0 +1,49 @@
++/* Software floating-point emulation.
++ Return 0 iff a == b, 1 iff a > b, 2 iff a ? b, -1 iff a < b
++ Copyright (C) 1997,1999,2006 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++ Contributed by Richard Henderson (rth@cygnus.com) and
++ Jakub Jelinek (jj@ultra.linux.cz).
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ In addition to the permissions in the GNU Lesser General Public
++ License, the Free Software Foundation gives you unlimited
++ permission to link the compiled version of this file into
++ combinations with other programs, and to distribute those
++ combinations without any restriction coming from the use of this
++ file. (The Lesser General Public License restrictions do apply in
++ other respects; for example, they cover modification of the file,
++ and distribution when not linked into a combine executable.)
++
++ The GNU C Library 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
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
++ MA 02110-1301, USA. */
++
++#include "soft-fp.h"
++#include "double.h"
++
++int __ltdf2(DFtype a, DFtype b)
++{
++ FP_DECL_EX;
++ FP_DECL_D(A); FP_DECL_D(B);
++ int r;
++
++ FP_UNPACK_RAW_D(A, a);
++ FP_UNPACK_RAW_D(B, b);
++ FP_CMP_D(r, A, B, 2);
++ if (r == 2 && (FP_ISSIGNAN_D(A) || FP_ISSIGNAN_D(B)))
++ FP_SET_EXCEPTION(FP_EX_INVALID);
++ FP_HANDLE_EXCEPTIONS;
++
++ return r;
++}
+Index: glibc-2.5-tls-ppc-04/soft-fp/nedf2.c
+===================================================================
+--- /dev/null
++++ glibc-2.5-tls-ppc-04/soft-fp/nedf2.c
+@@ -0,0 +1,49 @@
++/* Software floating-point emulation.
++ Return 0 iff a == b, 1 otherwise
++ Copyright (C) 1997,1999,2006 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++ Contributed by Richard Henderson (rth@cygnus.com) and
++ Jakub Jelinek (jj@ultra.linux.cz).
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ In addition to the permissions in the GNU Lesser General Public
++ License, the Free Software Foundation gives you unlimited
++ permission to link the compiled version of this file into
++ combinations with other programs, and to distribute those
++ combinations without any restriction coming from the use of this
++ file. (The Lesser General Public License restrictions do apply in
++ other respects; for example, they cover modification of the file,
++ and distribution when not linked into a combine executable.)
++
++ The GNU C Library 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
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
++ MA 02110-1301, USA. */
++
++#include "soft-fp.h"
++#include "double.h"
++
++int __nedf2(DFtype a, DFtype b)
++{
++ FP_DECL_EX;
++ FP_DECL_D(A); FP_DECL_D(B);
++ int r;
++
++ FP_UNPACK_RAW_D(A, a);
++ FP_UNPACK_RAW_D(B, b);
++ FP_CMP_EQ_D(r, A, B);
++ if (r && (FP_ISSIGNAN_D(A) || FP_ISSIGNAN_D(B)))
++ FP_SET_EXCEPTION(FP_EX_INVALID);
++ FP_HANDLE_EXCEPTIONS;
++
++ return r;
++}
+Index: glibc-2.5-tls-ppc-04/soft-fp/Makefile
+===================================================================
+--- glibc-2.5-tls-ppc-04.orig/soft-fp/Makefile
++++ glibc-2.5-tls-ppc-04/soft-fp/Makefile
+@@ -27,8 +27,8 @@ gcc-single-routines := negsf2 addsf3 sub
+ fixunssfdi floatdisf sqrtsf2 floatunsisf floatundisf \
+ fmasf4
+
+-gcc-double-routines := negdf2 adddf3 subdf3 muldf3 divdf3 eqdf2 \
+- ledf2 gedf2 unorddf2 fixdfsi fixunsdfsi floatsidf fixdfdi \
++gcc-double-routines := negdf2 adddf3 subdf3 muldf3 divdf3 eqdf2 nedf2 \
++ ledf2 ltdf2 gedf2 gtdf2 unorddf2 fixdfsi fixunsdfsi floatsidf fixdfdi \
+ fixunsdfdi floatdidf extendsfdf2 truncdfsf2 sqrtdf2 floatunsidf \
+ floatundidf fmadf4
+
diff --git a/packages/glibc/glibc-initial.inc b/packages/glibc/glibc-initial.inc
index 288cb082a5..e30e86b5e8 100644
--- a/packages/glibc/glibc-initial.inc
+++ b/packages/glibc/glibc-initial.inc
@@ -11,7 +11,7 @@ do_configure () {
chmod +x ${S}/configure
CC="${BUILD_CC}" CPP="${BUILD_CPP}" LD="${BUILD_LD}" ${S}/configure --host=${TARGET_SYS} --build=${BUILD_SYS} \
--without-cvs --disable-sanity-checks \
- --with-headers=${CROSS_DIR}/${TARGET_SYS}/include \
+ --with-headers=${STAGING_DIR_TARGET}${layout_includedir} \
--enable-hacker-mode
if grep -q GLIBC_2.3 ${S}/ChangeLog; then
# glibc-2.3.x passes cross options to $(CC) when generating errlist-compat.c, which fails without a real cross-compiler.
diff --git a/packages/glibc/glibc-intermediate_2.7.bb b/packages/glibc/glibc-intermediate_2.7.bb
new file mode 100644
index 0000000000..05d6250783
--- /dev/null
+++ b/packages/glibc/glibc-intermediate_2.7.bb
@@ -0,0 +1,8 @@
+require glibc_${PV}.bb
+require glibc-intermediate.inc
+
+# gcc uses -Werror which break on a "you have no thumb interwork" _warning_
+do_configure_prepend() {
+ sed -i s:-Werror:: ${S}/configure
+}
+
diff --git a/packages/glibc/glibc-package.bbclass b/packages/glibc/glibc-package.bbclass
index ba105d02c3..b96aae37b9 100644
--- a/packages/glibc/glibc-package.bbclass
+++ b/packages/glibc/glibc-package.bbclass
@@ -27,7 +27,7 @@ ENABLE_BINARY_LOCALE_GENERATION ?= "0"
BINARY_LOCALE_ARCHES ?= "arm.*"
PACKAGES = "glibc-dbg glibc catchsegv sln nscd ldd localedef glibc-utils glibc-dev glibc-doc glibc-locale libsegfault glibc-extra-nss glibc-thread-db glibc-pcprofile"
-PACKAGES_DYNAMIC = "glibc-gconv-* glibc-charmap-* glibc-localedata-* locale-base-*"
+PACKAGES_DYNAMIC = "glibc-gconv-* glibc-charmap-* glibc-localedata-* locale-base-* glibc-binary-localedata-*"
libc_baselibs = "/lib/libc* /lib/libm* /lib/ld* /lib/libpthread* /lib/libresolv* /lib/librt* /lib/libutil* /lib/libnsl* /lib/libnss_files* /lib/libnss_compat* /lib/libnss_dns* /lib/libdl* /lib/libanl* /lib/libBrokenLocale*"
@@ -40,7 +40,7 @@ FILES_glibc-dev_append = " ${libdir}/*.o ${bindir}/rpcgen"
FILES_nscd = "${sbindir}/nscd*"
FILES_glibc-utils = "${bindir}/* ${sbindir}/*"
FILES_glibc-gconv = "${libdir}/gconv/*"
-FILES_${PN}-dbg += "${libexecdir}/getconf/.debug ${libdir}/gconv/.debug"
+FILES_${PN}-dbg += " ${libdir}/gconv/.debug ${libexecdir}/*/.debug"
FILES_catchsegv = "${bindir}/catchsegv"
RDEPENDS_catchsegv = "libsegfault"
FILES_glibc-pcprofile = "/lib/libpcprofile.so"
@@ -220,10 +220,13 @@ python package_do_split_gconvs () {
dot_re = re.compile("(.*)\.(.*)")
# Collate the locales by base and encoding
+ utf8_only = int(bb.data.getVar('LOCALE_UTF8_ONLY', d, 1) or 0)
encodings = {}
for l in supported:
l = l[:-1]
(locale, charset) = l.split(" ")
+ if utf8_only and charset != 'UTF-8':
+ continue
m = dot_re.match(locale)
if m:
locale = m.group(1)
diff --git a/packages/glibc/glibc_2.5.bb b/packages/glibc/glibc_2.5.bb
index 2ffa6f6367..e30d357121 100644
--- a/packages/glibc/glibc_2.5.bb
+++ b/packages/glibc/glibc_2.5.bb
@@ -5,7 +5,7 @@ ARM_INSTRUCTION_SET = "arm"
PACKAGES_DYNAMIC = "libc6*"
RPROVIDES_${PN}-dev = "libc6-dev"
-PR = "r7"
+PR = "r8"
# the -isystem in bitbake.conf screws up glibc do_stage
BUILD_CPPFLAGS = "-I${STAGING_INCDIR_NATIVE}"
@@ -74,7 +74,8 @@ SRC_URI_append_powerpc= " file://ppc-sfp-machine.patch;patch=1 \
file://ppc-soft-fp-20070115.patch;patch=1 \
file://ppc-ld-nofpu-20070104.patch;patch=1 \
file://ppc-ports-ld-nofpu-20070114.patch;patch=1 \
- file://powerpc-sqrt-hack.diff;patch=1""
+ file://powerpc-sqrt-hack.diff;patch=1 \
+ file://glibc-2.5-soft-fp-separate-strong-alias.patch;patch=1"
S = "${WORKDIR}/glibc-${PV}"
B = "${WORKDIR}/build-${TARGET_SYS}"
diff --git a/packages/glibc/glibc_2.7.bb b/packages/glibc/glibc_2.7.bb
new file mode 100644
index 0000000000..357196e5a7
--- /dev/null
+++ b/packages/glibc/glibc_2.7.bb
@@ -0,0 +1,156 @@
+require glibc.inc
+
+ARM_INSTRUCTION_SET = "arm"
+
+PACKAGES_DYNAMIC = "libc6*"
+RPROVIDES_${PN}-dev = "libc6-dev"
+
+PR = "r0"
+
+# the -isystem in bitbake.conf screws up glibc do_stage
+BUILD_CPPFLAGS = "-I${STAGING_INCDIR_NATIVE}"
+TARGET_CPPFLAGS = "-I${STAGING_DIR_TARGET}${layout_includedir}"
+
+
+FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/glibc-2.4"
+
+GLIBC_ADDONS ?= "ports,nptl,libidn"
+
+GLIBC_BROKEN_LOCALES = " _ER _ET so_ET yn_ER sid_ET tr_TR mn_MN gez_ET gez_ER bn_BD te_IN"
+
+#
+# For now, we will skip building of a gcc package if it is a uclibc one
+# and our build is not a uclibc one, and we skip a glibc one if our build
+# is a uclibc build.
+#
+# See the note in gcc/gcc_3.4.0.oe
+#
+
+python __anonymous () {
+ import bb, re
+ uc_os = (re.match('.*uclibc$', bb.data.getVar('TARGET_OS', d, 1)) != None)
+ if uc_os:
+ raise bb.parse.SkipPackage("incompatible with target %s" %
+ bb.data.getVar('TARGET_OS', d, 1))
+}
+
+RDEPENDS_${PN}-dev = "linux-libc-headers-dev"
+
+# file://noinfo.patch;patch=1
+# file://ldconfig.patch;patch=1;pnum=0
+# file://arm-machine-gmon.patch;patch=1;pnum=0 \
+# \
+# file://arm-ioperm.patch;patch=1;pnum=0 \
+# file://ldd.patch;patch=1;pnum=0 \
+SRC_URI = "ftp://ftp.gnu.org/pub/gnu/glibc/glibc-${PV}.tar.bz2 \
+ ftp://ftp.gnu.org/pub/gnu/glibc/glibc-ports-${PV}.tar.bz2 \
+ ftp://ftp.gnu.org/pub/gnu/glibc/glibc-libidn-${PV}.tar.bz2 \
+ file://arm-memcpy.patch;patch=1 \
+ file://arm-longlong.patch;patch=1 \
+ file://fhs-linux-paths.patch;patch=1 \
+ file://dl-cache-libcmp.patch;patch=1 \
+ file://ldsocache-varrun.patch;patch=1 \
+ file://nptl-crosscompile.patch;patch=1 \
+ file://glibc-check_pf.patch;patch=1;pnum=0 \
+# file://glibc-2.4-compile.patch;patch=1 \
+# file://glibc-2.4-openat-3.patch;patch=1 \
+# file://fixup-aeabi-syscalls.patch;patch=1 \
+# file://zecke-sane-readelf.patch;patch=1 \
+ file://ldd-unbash.patch;patch=1 \
+ file://generic-bits_select.h \
+ file://generic-bits_types.h \
+ file://generic-bits_typesizes.h \
+ file://generic-bits_time.h \
+ file://etc/ld.so.conf \
+ file://generate-supported.mk"
+
+
+# Build fails on sh3 and sh4 without additional patches
+SRC_URI_append_sh3 = " file://no-z-defs.patch;patch=1"
+SRC_URI_append_sh4 = " file://no-z-defs.patch;patch=1"
+
+#powerpc patches to add support for soft-float
+SRC_URI_append_powerpc= " \
+ file://powerpc-sqrt-hack.diff;patch=1""
+
+S = "${WORKDIR}/glibc-${PV}"
+B = "${WORKDIR}/build-${TARGET_SYS}"
+
+EXTRA_OECONF = "--enable-kernel=${OLDEST_KERNEL} \
+ --without-cvs --disable-profile --disable-debug --without-gd \
+ --enable-clocale=gnu \
+ --enable-add-ons=${GLIBC_ADDONS} \
+ --with-headers=${STAGING_INCDIR} \
+ --without-selinux \
+ ${GLIBC_EXTRA_OECONF}"
+
+EXTRA_OECONF += "${@get_glibc_fpu_setting(bb, d)}"
+
+do_munge() {
+ # Integrate ports and libidn into tree
+ mv ${WORKDIR}/glibc-ports-${PV} ${S}/ports
+ mv ${WORKDIR}/glibc-libidn-${PV} ${S}/libidn
+
+ # Ports isn't really working... Fix it
+ # Some of this is rather dirty, but it seems to be the only
+ # quick way to get this cruft to compile
+ rm -rf ${S}/ports/sysdeps/unix/sysv/linux/arm/linuxthreads
+ ln -s nptl ${S}/ports/sysdeps/unix/sysv/linux/arm/linuxthreads
+ cp ${S}/nptl/sysdeps/pthread/bits/sigthread.h ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/
+ cp ${S}/sysdeps/unix/sysv/linux/i386/bits/wchar.h ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/
+ cp ${S}/sysdeps/wordsize-32/bits/wordsize.h ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/
+ cp ${WORKDIR}/generic-bits_select.h ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/select.h
+ cp ${WORKDIR}/generic-bits_types.h ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/types.h
+ cp ${WORKDIR}/generic-bits_typesizes.h ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/typesizes.h
+ cp ${WORKDIR}/generic-bits_time.h ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/time.h
+ # Copy in generic stuff for not yet implemented headers
+ for i in ${S}/bits/*.h; do
+ F=`basename $i`
+ [ "$F" = "local_lim.h" ] && continue
+ [ "$F" = "errno.h" ] && continue
+ test -e ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/$F || test -e ${S}/ports/sysdeps/arm/bits/$F || test -e ${S}/sysdeps/unix/sysv/linux/bits/$F || test -e ${S}/sysdeps/ieee754/bits/$F || cp $i ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/
+ done
+ # This is harmful; we need to get the one from nptl/sysdeps/pthreads
+ rm -f ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/libc-lock.h
+ # Obsoleted by sysdeps/arm/{fpu,eabi}/bits/fenv.h
+ rm -f ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/fenv.h
+ # Obsoleted by sysdeps/gnu/bits/utmp.h
+ rm -f ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/utmp.h
+}
+
+addtask munge before do_patch after do_unpack
+
+
+do_configure () {
+# override this function to avoid the autoconf/automake/aclocal/autoheader
+# calls for now
+# don't pass CPPFLAGS into configure, since it upsets the kernel-headers
+# version check and doesn't really help with anything
+ if [ -z "`which rpcgen`" ]; then
+ echo "rpcgen not found. Install glibc-devel."
+ exit 1
+ fi
+ (cd ${S} && gnu-configize) || die "failure in running gnu-configize"
+ CPPFLAGS="" oe_runconf
+}
+
+rpcsvc = "bootparam_prot.x nlm_prot.x rstat.x \
+ yppasswd.x klm_prot.x rex.x sm_inter.x mount.x \
+ rusers.x spray.x nfs_prot.x rquota.x key_prot.x"
+
+do_compile () {
+ # -Wl,-rpath-link <staging>/lib in LDFLAGS can cause breakage if another glibc is in staging
+ unset LDFLAGS
+ base_do_compile
+ (
+ cd ${S}/sunrpc/rpcsvc
+ for r in ${rpcsvc}; do
+ h=`echo $r|sed -e's,\.x$,.h,'`
+ rpcgen -h $r -o $h || oewarn "unable to generate header for $r"
+ done
+ )
+}
+
+require glibc-stage.inc
+
+require glibc-package.bbclass
diff --git a/packages/gnome/epiphany_2.19.6.bb b/packages/gnome/epiphany_2.19.6.bb
deleted file mode 100644
index 570f8ba4f5..0000000000
--- a/packages/gnome/epiphany_2.19.6.bb
+++ /dev/null
@@ -1,14 +0,0 @@
-DESCRIPTION = "GNOME default webbrowser"
-DEPENDS = "gnome-desktop gnome-vfs libgnomeui webkit-gtk iso-codes libstartup-notification"
-RDEPENDS = "gnome-vfs-plugin-http"
-
-PR = "r1"
-
-inherit gnome
-
-EXTRA_OECONF = "--with-engine=webkit"
-
-
-FILES_${PN} += "${datadir}/icons ${datadir}/dbus-1"
-
-
diff --git a/packages/gnome/epiphany_svn.bb b/packages/gnome/epiphany_svn.bb
new file mode 100644
index 0000000000..97fd82b653
--- /dev/null
+++ b/packages/gnome/epiphany_svn.bb
@@ -0,0 +1,21 @@
+DESCRIPTION = "GNOME default webbrowser"
+DEPENDS = "gnome-desktop gnome-vfs libgnomeui webkit-gtk iso-codes startup-notification"
+RDEPENDS = "gnome-vfs-plugin-http"
+
+PV = "2.20.1+svnr${SRCREV}"
+PR = "r0"
+
+inherit gnome
+
+SRC_URI = "svn://svn.gnome.org/svn/epiphany;module=trunk;proto=http"
+S = "${WORKDIR}/trunk"
+
+EXTRA_OECONF = "--with-engine=webkit --with-distributor-name=${DISTRO}"
+
+do_configure_prepend() {
+ touch ${S}/gnome-doc-utils.make
+}
+
+FILES_${PN} += "${datadir}/icons ${datadir}/dbus-1"
+
+
diff --git a/packages/gnome/gio-standalone_0.1.2.bb b/packages/gnome/gio-standalone_0.1.2.bb
new file mode 100644
index 0000000000..6e360b8237
--- /dev/null
+++ b/packages/gnome/gio-standalone_0.1.2.bb
@@ -0,0 +1,14 @@
+DESCRIPTION = "gio is a platform independent file and I/O abstraction library"
+LICENSE = "LGPL"
+DEPENDS = "glib-2.0"
+PR = "r0"
+
+inherit gnome
+
+PACKAGES =+ "libgio"
+FILES_libgio = "${libdir}/libgio.so.*"
+
+do_stage() {
+ autotools_stage_all
+}
+
diff --git a/packages/gnome/gnome-desktop_2.10.2.bb b/packages/gnome/gnome-desktop_2.10.2.bb
index 9957921327..b8e098f40c 100644
--- a/packages/gnome/gnome-desktop_2.10.2.bb
+++ b/packages/gnome/gnome-desktop_2.10.2.bb
@@ -6,10 +6,10 @@ inherit gnome pkgconfig
DEPENDS = "gnome-common libgnomeui"
-EXTRA_AUTORECONF = "-I ${STAGING_DIR}/${HOST_SYS}/share/aclocal/gnome2-macros"
+EXTRA_AUTORECONF = "-I ${STAGING_DATADIR}/aclocal/gnome2-macros"
do_configure_prepend () {
- cp ${STAGING_DIR}/${HOST_SYS}/share/gnome-common/data/omf.make ${S}
+ cp ${STAGING_DATADIR}/gnome-common/data/omf.make ${S}
}
do_stage () {
diff --git a/packages/gnome/gnome-desktop_2.16.1.bb b/packages/gnome/gnome-desktop_2.16.1.bb
index 4d4b80efbc..69de709350 100644
--- a/packages/gnome/gnome-desktop_2.16.1.bb
+++ b/packages/gnome/gnome-desktop_2.16.1.bb
@@ -11,10 +11,10 @@ SRC_URI += "file://scrollkeeper.patch;patch=1 \
EXTRA_OECONF = "--disable-scrollkeeper"
-EXTRA_AUTORECONF = "-I ${STAGING_DIR}/${HOST_SYS}/share/aclocal/gnome2-macros"
+EXTRA_AUTORECONF = "-I ${STAGING_DATADIR}/aclocal/gnome2-macros"
do_configure_prepend () {
- cp ${STAGING_DIR}/${HOST_SYS}/share/gnome-common/data/omf.make ${S}
+ cp ${STAGING_DATADIR}/gnome-common/data/omf.make ${S}
}
FILES_${PN} += "${datadir}/gnome-about"
diff --git a/packages/gnome/gnome-desktop_2.18.3.bb b/packages/gnome/gnome-desktop_2.18.3.bb
index e341fd31ab..c2888bf2a4 100644
--- a/packages/gnome/gnome-desktop_2.18.3.bb
+++ b/packages/gnome/gnome-desktop_2.18.3.bb
@@ -12,7 +12,7 @@ SRC_URI += "file://scrollkeeper.patch;patch=1 \
EXTRA_OECONF = "--disable-scrollkeeper"
do_configure_prepend () {
- cp ${STAGING_DIR}/${HOST_SYS}/share/gnome-common/data/omf.make ${S}
+ cp ${STAGING_DATADIR}/gnome-common/data/omf.make ${S}
}
FILES_${PN} += "${datadir}/gnome-about"
diff --git a/packages/gnome/gnome-desktop_2.7.90.bb b/packages/gnome/gnome-desktop_2.7.90.bb
index 54a6559d05..c7fd61470d 100644
--- a/packages/gnome/gnome-desktop_2.7.90.bb
+++ b/packages/gnome/gnome-desktop_2.7.90.bb
@@ -6,10 +6,10 @@ inherit gnome
DEPENDS = "gnome-common libgnomeui"
-EXTRA_AUTORECONF = "-I ${STAGING_DIR}/${HOST_SYS}/share/aclocal/gnome2-macros"
+EXTRA_AUTORECONF = "-I ${STAGING_DATADIR}/aclocal/gnome2-macros"
do_configure_prepend () {
- cp ${STAGING_DIR}/${HOST_SYS}/share/gnome-common/data/omf.make ${S}
+ cp ${STAGING_DATADIR}/gnome-common/data/omf.make ${S}
}
do_stage () {
diff --git a/packages/gnome/gvfs_0.0.2.bb b/packages/gnome/gvfs_0.0.2.bb
new file mode 100644
index 0000000000..8c791ad680
--- /dev/null
+++ b/packages/gnome/gvfs_0.0.2.bb
@@ -0,0 +1,22 @@
+DESCRIPTION = "gvfs is a userspace virtual filesystem"
+LICENSE = "LGPL"
+DEPENDS = "glib-2.0 gio-standalone fuse"
+PR = "r0"
+
+inherit gnome
+
+EXTRA_OECONF = "--disable-samba"
+
+PACKAGES =+ "gvfsd-ftp gvfsd-sftp gvfsd-trash"
+
+FILES_${PN} += "${datadir}/dbus-1/services/* ${libdir}/gio/modules/*.so"
+FILES_${PN}-dbg += "${libdir}/gio/modules/.debug/*"
+FILES_${PN}-dev += "${libdir}/gio/modules/*.la"
+
+FILES_gvfsd-ftp = "${libexecdir}/gvfsd-ftp ${sysconfdir}/gvfs/mounts/ftp.mount"
+FILES_gvfsd-sftp = "${libexecdir}/gvfsd-sftp ${sysconfdir}/gvfs/mounts/sftp.mount"
+FILES_gvfsd-trash = "${libexecdir}/gvfsd-trash ${sysconfdir}/gvfs/mounts/trash.mount"
+
+do_stage() {
+ autotools_stage_all
+}
diff --git a/packages/gnuplot/files/gnuplot.desktop b/packages/gnuplot/files/gnuplot.desktop
index f108e3f46f..f67df9e193 100644
--- a/packages/gnuplot/files/gnuplot.desktop
+++ b/packages/gnuplot/files/gnuplot.desktop
@@ -2,7 +2,7 @@
Name=Gnuplot
Comment=Plot data and function graphs
Exec=x-terminal-emulator -e gnuplot
-Terminal=0
+Terminal=false
Type=Application
-Icon=gnuplot.png
-Categories=Scientific
+Icon=gnuplot
+Categories=Science;
diff --git a/packages/gnuplot/gnuplot-4.2.0/term.patch b/packages/gnuplot/gnuplot-4.2.0/term.patch
new file mode 100644
index 0000000000..41aa8e7a97
--- /dev/null
+++ b/packages/gnuplot/gnuplot-4.2.0/term.patch
@@ -0,0 +1,20 @@
+--- gnuplot-4.2.0/src/term.h.old 2007-11-16 01:21:09.000000000 -0600
++++ gnuplot-4.2.0/src/term.h 2007-11-16 01:22:45.000000000 -0600
+@@ -70,6 +70,7 @@
+ */
+ #ifdef SHORT_TERMLIST
+ # include "dumb.trm" /* dumb terminal */
++# include "qtopia.trm" /* QTopia terminal */
+
+ # ifdef GP_ENH_EST
+ # include "estimate.trm" /* used for enhanced text processing */
+@@ -436,6 +437,9 @@
+ /* TeXDraw drawing package for LaTeX */
+ #include "texdraw.trm"
+
++/* Qtopia */
++#include "qtopia.trm"
++
+ /* METAFONT */
+ #include "metafont.trm"
+
diff --git a/packages/gnuplot/gnuplot.inc b/packages/gnuplot/gnuplot.inc
new file mode 100644
index 0000000000..9f1eebf003
--- /dev/null
+++ b/packages/gnuplot/gnuplot.inc
@@ -0,0 +1,37 @@
+DESCRIPTION = "Gnuplot is a portable command-line driven interactive datafile \
+(text or binary) and function plotting utility."
+HOMEPAGE = "http://www.gnuplot.info/"
+SECTION = "console/scientific"
+LICENSE = "BSD-4"
+PRIORITY = "optional"
+DEPENDS = "pango cairo virtual/libx11 libpng gd readline"
+
+inherit autotools
+
+acpaths = ""
+
+EXTRA_OECONF = "--with-readline=${STAGING_LIBDIR}/.. \
+ --without-plot \
+ --with-png=${STAGING_LIBDIR}/.. \
+ --with-gd=${STAGING_LIBDIR}/.. \
+ --without-lisp-files \
+ --without-tutorial"
+
+do_compile_prepend() {
+ install -m 0644 ${WORKDIR}/qtplot-0.2/qtopia.trm ${S}/term/
+}
+
+do_install_append() {
+ install -d ${D}${datadir}/applications/
+ install -m 0644 ${WORKDIR}/gnuplot.desktop ${D}${datadir}/applications/
+ install -d ${D}${datadir}/pixmaps/
+ install -m 0644 ${WORKDIR}/gnuplot.png ${D}${datadir}/pixmaps/
+}
+
+PACKAGES =+ "${PN}-x11-dbg ${PN}-x11"
+DESCRIPTION_${PN}-x11 = "X11 display terminal for Gnuplot."
+SECTION_${PN}-x11 = "x11/scientific"
+FILES_${PN}-x11 = "${libexecdir} ${datadir}/applications ${datadir}/pixmaps ${libdir}/X11 "
+
+FILES_${PN} += "${datadir}/texmf"
+FILES_${PN}-x11-dbg += "${libexecdir}/gnuplot/*/.debug"
diff --git a/packages/gnuplot/gnuplot_4.0.0.bb b/packages/gnuplot/gnuplot_4.0.0.bb
index 150fc8d6e5..6e1be52173 100644
--- a/packages/gnuplot/gnuplot_4.0.0.bb
+++ b/packages/gnuplot/gnuplot_4.0.0.bb
@@ -1,10 +1,6 @@
-DESCRIPTION = "Gnuplot is a portable command-line driven interactive datafile \
-(text or binary) and function plotting utility."
-SECTION = "console/scientific"
-LICENSE = "BSD-4"
-PRIORITY = "optional"
-DEPENDS = "virtual/libx11 libpng gd readline"
-PR = "r3"
+require gnuplot.inc
+
+PR = "r4"
SRC_URI = "ftp://ftp.gnuplot.info/pub/gnuplot/gnuplot-${PV}.tar.gz \
file://subdirs.patch;patch=1 \
@@ -14,29 +10,3 @@ SRC_URI = "ftp://ftp.gnuplot.info/pub/gnuplot/gnuplot-${PV}.tar.gz \
file://term.patch;patch=1 \
file://gnuplot.desktop \
file://gnuplot.png"
-
-inherit autotools
-
-PACKAGES =+ "${PN}-x11"
-DESCRIPTION_${PN}-x11 = "X11 display terminal for Gnuplot."
-SECTION_${PN}-x11 = "x11/scientific"
-FILES_${PN}-x11 = "${libexecdir} ${datadir}/applications ${datadir}/pixmaps"
-
-acpaths = ""
-EXTRA_OECONF = "--with-readline=${STAGING_LIBDIR}/.. \
- --without-plot \
- --with-png=${STAGING_LIBDIR}/.. \
- --with-gd=${STAGING_LIBDIR}/.. \
- --without-lisp-files \
- --without-tutorial"
-
-do_compile_prepend() {
- install -m 0644 ${WORKDIR}/qtplot-0.2/qtopia.trm ${S}/term/
-}
-
-do_install_append() {
- install -d ${D}${datadir}/applications/
- install -m 0644 ${WORKDIR}/gnuplot.desktop ${D}${datadir}/applications/
- install -d ${D}${datadir}/pixmaps/
- install -m 0644 ${WORKDIR}/gnuplot.png ${D}${datadir}/pixmaps/
-}
diff --git a/packages/gnuplot/gnuplot_4.2.0.bb b/packages/gnuplot/gnuplot_4.2.0.bb
index d750aac66a..1df0c9fa21 100644
--- a/packages/gnuplot/gnuplot_4.2.0.bb
+++ b/packages/gnuplot/gnuplot_4.2.0.bb
@@ -1,40 +1,10 @@
-DESCRIPTION = "Gnuplot is a portable command-line driven interactive datafile \
-(text or binary) and function plotting utility."
-SECTION = "console/scientific"
-LICENSE = "BSD-4"
-PRIORITY = "optional"
-DEPENDS = "pango cairo virtual/libx11 libpng gd readline"
-PR = "r0"
+require gnuplot.inc
+
+PR = "r1"
SRC_URI = "${SOURCEFORGE_MIRROR}/gnuplot/${PN}-${PV}.tar.gz \
+ http://www.mneuroth.de/privat/zaurus/qtplot-0.2.tar.gz \
file://subdirs.patch;patch=1 \
+ file://term.patch;patch=1 \
file://gnuplot.desktop \
file://gnuplot.png"
-
-inherit autotools
-
-acpaths = ""
-EXTRA_OECONF = "--with-readline=${STAGING_LIBDIR}/.. \
- --without-plot \
- --with-png=${STAGING_LIBDIR}/.. \
- --with-gd=${STAGING_LIBDIR}/.. \
- --without-lisp-files \
- --without-tutorial"
-
-do_install_append() {
- install -d ${D}${datadir}/applications/
- install -m 0644 ${WORKDIR}/gnuplot.desktop ${D}${datadir}/applications/
- install -d ${D}${datadir}/pixmaps/
- install -m 0644 ${WORKDIR}/gnuplot.png ${D}${datadir}/pixmaps/
-}
-
-
-PACKAGES =+ "${PN}-x11-dbg ${PN}-x11"
-DESCRIPTION_${PN}-x11 = "X11 display terminal for Gnuplot."
-SECTION_${PN}-x11 = "x11/scientific"
-FILES_${PN}-x11 = "${libexecdir} ${datadir}/applications ${datadir}/pixmaps ${libdir}/X11 "
-
-FILES_${PN} += "${datadir}/texmf"
-FILES_${PN}-x11-dbg += "${libexecdir}/gnuplot/*/.debug"
-
-
diff --git a/packages/gnutls/gnutls.inc b/packages/gnutls/gnutls.inc
index ab5ba1d1d0..2211d5f798 100644
--- a/packages/gnutls/gnutls.inc
+++ b/packages/gnutls/gnutls.inc
@@ -6,7 +6,8 @@ LICENSE = "LGPL"
SRC_URI = "ftp://ftp.gnutls.org/pub/gnutls/gnutls-${PV}.tar.bz2 \
file://gnutls-openssl.patch;patch=1 \
- file://gnutls-texinfo-euro.patch;patch=1"
+ file://gnutls-texinfo-euro.patch;patch=1 \
+ file://configure_madness.patch;patch=1 "
inherit autotools binconfig pkgconfig
diff --git a/packages/gnutls/gnutls/configure_madness.patch b/packages/gnutls/gnutls/configure_madness.patch
new file mode 100644
index 0000000000..26111dfe96
--- /dev/null
+++ b/packages/gnutls/gnutls/configure_madness.patch
@@ -0,0 +1,22 @@
+Index: gnutls-1.6.3/configure.in
+===================================================================
+--- gnutls-1.6.3.orig/configure.in 2007-05-25 12:28:59.000000000 +0000
++++ gnutls-1.6.3/configure.in 2007-11-13 17:53:23.000000000 +0000
+@@ -574,13 +574,13 @@
+ AC_LIBTOOL_WIN32_DLL
+ AC_PROG_LIBTOOL
+
+-LIBGNUTLS_LIBS="-L${libdir} -lgnutls $LIBTASN1_LIBS $LIBGCRYPT_LIBS $LIBS"
+-LIBGNUTLS_CFLAGS="$LIBGCRYPT_CFLAGS $LIBTASN1_CFLAGS -I${includedir}"
++LIBGNUTLS_LIBS="-lgnutls $LIBTASN1_LIBS $LIBGCRYPT_LIBS $LIBS"
++LIBGNUTLS_CFLAGS="$LIBGCRYPT_CFLAGS $LIBTASN1_CFLAGS"
+ AC_SUBST(LIBGNUTLS_LIBS)
+ AC_SUBST(LIBGNUTLS_CFLAGS)
+
+-LIBGNUTLS_EXTRA_LIBS="-L${libdir} -lgnutls-extra $LIBOPENCDK_LIBS $LZO_LIBS $LIBGNUTLS_LIBS"
+-LIBGNUTLS_EXTRA_CFLAGS="$LIBOPENCDK_CFLAGS -I${includedir}"
++LIBGNUTLS_EXTRA_LIBS="-lgnutls-extra $LIBOPENCDK_LIBS $LZO_LIBS $LIBGNUTLS_LIBS"
++LIBGNUTLS_EXTRA_CFLAGS="$LIBOPENCDK_CFLAGS"
+ AC_SUBST(LIBGNUTLS_EXTRA_LIBS)
+ AC_SUBST(LIBGNUTLS_EXTRA_CFLAGS)
+ export ac_full
diff --git a/packages/gnutls/gnutls_1.6.3.bb b/packages/gnutls/gnutls_1.6.3.bb
index 6e0f6000d3..a5b5341156 100644
--- a/packages/gnutls/gnutls_1.6.3.bb
+++ b/packages/gnutls/gnutls_1.6.3.bb
@@ -1,2 +1,2 @@
require gnutls.inc
-PR = "r2"
+PR = "r3"
diff --git a/packages/gpdf/gpdf_2.10.0.bb b/packages/gpdf/gpdf_2.10.0.bb
index ee7d27080a..30c42dcb0c 100644
--- a/packages/gpdf/gpdf_2.10.0.bb
+++ b/packages/gpdf/gpdf_2.10.0.bb
@@ -12,5 +12,5 @@ DEPENDS = "gtk+ libgnomeui libbonoboui gnome-vfs gconf gettext libglade \
EXTRA_OECONF = "--disable-schemas-install"
do_configure_prepend () {
- cp ${STAGING_DIR}/${HOST_SYS}/share/gnome-common/data/omf.make ${S}/help
+ cp ${STAGING_DATADIR}/gnome-common/data/omf.make ${S}/help
}
diff --git a/packages/gpdf/gpdf_2.8.0.bb b/packages/gpdf/gpdf_2.8.0.bb
index 60fc1d3007..b4afdb02b8 100644
--- a/packages/gpdf/gpdf_2.8.0.bb
+++ b/packages/gpdf/gpdf_2.8.0.bb
@@ -13,5 +13,5 @@ SRC_URI += "file://aclocal-lossage.patch;patch=1 \
file://desktop.patch;patch=1"
do_configure_prepend () {
- cp ${STAGING_DIR}/${HOST_SYS}/share/gnome-common/data/omf.make ${S}/help
+ cp ${STAGING_DATADIR}/gnome-common/data/omf.make ${S}/help
}
diff --git a/packages/gpdf/gpdf_2.8.2.bb b/packages/gpdf/gpdf_2.8.2.bb
index 23e294bda7..3943ff93e1 100644
--- a/packages/gpdf/gpdf_2.8.2.bb
+++ b/packages/gpdf/gpdf_2.8.2.bb
@@ -12,5 +12,5 @@ EXTRA_OECONF = "--disable-schemas-install"
SRC_URI += "file://aclocal-lossage.patch;patch=1"
do_configure_prepend () {
- cp ${STAGING_DIR}/${HOST_SYS}/share/gnome-common/data/omf.make ${S}/help
+ cp ${STAGING_DATADIR}/gnome-common/data/omf.make ${S}/help
}
diff --git a/packages/gpe-login/files/gpe-xcalibrate-rises-from-dead.patch b/packages/gpe-login/files/gpe-xcalibrate-rises-from-dead.patch
new file mode 100644
index 0000000000..afad073acf
--- /dev/null
+++ b/packages/gpe-login/files/gpe-xcalibrate-rises-from-dead.patch
@@ -0,0 +1,8 @@
+diff -r 976c01632fea gpe-login.keylaunchrc
+--- a/gpe-login.keylaunchrc Sun Nov 25 22:39:23 2007 +0200
++++ b/gpe-login.keylaunchrc Mon Nov 26 01:12:14 2007 +0200
+@@ -1,3 +1,3 @@ key=????XF86AudioRecord:xcalibrate:/usr/
+-key=????XF86AudioRecord:xcalibrate:/usr/bin/gpe-xcalibrate.sh
++key=????XF86AudioRecord:xcalibrate:/usr/bin/xtscal
+ key=????XF86PowerDown:-:/usr/bin/apm --suspend
+ key=????Held XF86PowerDown:-:bl toggle
diff --git a/packages/gpe-login/files/lock-on-supend.patch b/packages/gpe-login/files/lock-on-supend.patch
new file mode 100644
index 0000000000..2aeb20f1ea
--- /dev/null
+++ b/packages/gpe-login/files/lock-on-supend.patch
@@ -0,0 +1,14 @@
+Lock screen when device goes to suspend, not after some time has passed
+since resume and they stole your data from the unprotected screen.
+
+--- gpe-login-0.90/Makefile.am.org 2007-04-02 15:46:52.000000000 +0300
++++ gpe-login-0.90/Makefile.am 2007-11-24 22:41:24.000000000 +0200
+@@ -17,7 +17,7 @@
+ x11_SCRIPTS = gpe-login.setup X11/gpe-login.pre-session
+ x11_DATA = gpe-login.keylaunchrc X11/gpe-login.gtkrc
+
+-apmdir = $(sysconfdir)/apm/resume.d
++apmdir = $(sysconfdir)/apm/suspend.d
+ apm_SCRIPTS = gpe-login.suspend
+
+ xsessiondir = $(sysconfdir)/X11/Xsession.d
diff --git a/packages/gpe-login/files/size-autolock-properly.patch b/packages/gpe-login/files/size-autolock-properly.patch
new file mode 100644
index 0000000000..b8e2cd6f4f
--- /dev/null
+++ b/packages/gpe-login/files/size-autolock-properly.patch
@@ -0,0 +1,26 @@
+# HG changeset patch
+# User "Paul Sokolovsky <pfalcon@users.sourceforge.net>"
+# Date 1196345352 -7200
+# Node ID ebe625e21708cb9257201a4dd6e536b99f1f0220
+# Parent 976c01632feacbcce2058a061a0b1f6faed2275a
+When configuring autolock window, make sure to set not only the minimal
+("requested") size, but also the actual one. This fixes issue that after
+autolock screen have been shown in landscape mode, it no longer fits the
+screen in portrait mode.
+
+Also, gtk_widget_set_usize() marked as deprecated, replace with
+gtk_widget_set_size_request().
+
+diff -r 976c01632fea -r ebe625e21708 gpe-login.c
+--- a/gpe-login.c Sun Nov 25 22:39:23 2007 +0200
++++ b/gpe-login.c Thu Nov 29 16:09:12 2007 +0200
+@@ -558,7 +558,8 @@ filter (GdkXEvent *xevp, GdkEvent *ev, g
+ {
+ spawn_xkbd ();
+ gtk_label_set_markup (GTK_LABEL (label_result), "");
+- gtk_widget_set_usize (window, gdk_screen_width (), gdk_screen_height ());
++ gtk_widget_set_size_request (window, gdk_screen_width (), gdk_screen_height ());
++ gtk_window_resize (window, gdk_screen_width (), gdk_screen_height ());
+ gtk_widget_show_all (window);
+ if (ownerinfo)
+ {
diff --git a/packages/gpe-login/gpe-login_0.90.bb b/packages/gpe-login/gpe-login_0.90.bb
index 08cfa2a0e0..253d581953 100644
--- a/packages/gpe-login/gpe-login_0.90.bb
+++ b/packages/gpe-login/gpe-login_0.90.bb
@@ -5,7 +5,7 @@ LICENSE = "GPL"
DEPENDS = "gtk+ libgpewidget gpe-ownerinfo xkbd"
RDEPENDS = "xkbd gpe-theme-clearlooks"
RPROVIDES_${PN} = "gpe-session-starter"
-PR = "r2"
+PR = "r5"
SRC_URI_OVERRIDES_PACKAGE_ARCH = "1"
@@ -16,6 +16,9 @@ inherit gpe autotools pkgconfig
SRC_URI += "file://removeblue-fontsize8.patch;patch=1"
SRC_URI += " file://chvt-keylaunch.patch;patch=1 "
+SRC_URI += " file://lock-on-supend.patch;patch=1 "
+SRC_URI += " file://gpe-xcalibrate-rises-from-dead.patch;patch=1 "
+SRC_URI += " file://size-autolock-properly.patch;patch=1 "
SRC_URI_append_spitz = "file://brightness-adjust-keyluanchrc.patch;patch=1"
SRC_URI_append_akita = "file://brightness-adjust-keyluanchrc.patch;patch=1"
diff --git a/packages/gpe-themes/gpe-theme-clearlooks_0.2.bb b/packages/gpe-themes/gpe-theme-clearlooks_0.2.bb
index 77f8289025..da61845f4d 100644
--- a/packages/gpe-themes/gpe-theme-clearlooks_0.2.bb
+++ b/packages/gpe-themes/gpe-theme-clearlooks_0.2.bb
@@ -7,7 +7,7 @@ DEPENDS = "gtk-engines"
RDEPENDS = "gtk-engine-clearlooks"
FILES_${PN} = "${datadir}/themes/"
-SRC_URI = "http://dominion.kabel.utwente.nl/koen/pda/files/${P}.tar.gz"
+SRC_URI = "http://dominion.thruhere.net/koen/pda/files/${P}.tar.gz"
do_install() {
install -d ${D}${datadir}/themes/
diff --git a/packages/gpe-themes/gpe-theme-clearlooks_0.3.bb b/packages/gpe-themes/gpe-theme-clearlooks_0.3.bb
index 0ec4e10338..33712c70ee 100644
--- a/packages/gpe-themes/gpe-theme-clearlooks_0.3.bb
+++ b/packages/gpe-themes/gpe-theme-clearlooks_0.3.bb
@@ -6,7 +6,7 @@ DEPENDS = "gtk-engines"
RDEPENDS = "gtk-engine-clearlooks"
FILES_${PN} = "${datadir}/themes/"
-SRC_URI = "http://dominion.kabel.utwente.nl/koen/pda/files/${P}.tar.gz"
+SRC_URI = "http://dominion.thruhere.net/koen/pda/files/${P}.tar.gz"
do_install() {
install -d ${D}${datadir}/themes/
diff --git a/packages/gpe-themes/gpe-theme-industrial_0.1.bb b/packages/gpe-themes/gpe-theme-industrial_0.1.bb
index 1a57e03d03..8a455de250 100644
--- a/packages/gpe-themes/gpe-theme-industrial_0.1.bb
+++ b/packages/gpe-themes/gpe-theme-industrial_0.1.bb
@@ -7,7 +7,7 @@ DEPENDS = "gtk-engines"
RDEPENDS = "gtk-engine-industrial"
FILES_${PN} = "${datadir}/themes/"
-SRC_URI = "http://dominion.kabel.utwente.nl/koen/pda/files/${P}.tar.gz"
+SRC_URI = "http://dominion.thruhere.net/koen/pda/files/${P}.tar.gz"
do_install() {
install -d ${D}${datadir}/themes/
diff --git a/packages/gpe-themes/gpe-theme-industrial_0.2.bb b/packages/gpe-themes/gpe-theme-industrial_0.2.bb
index 02b7a62c0d..c1cd5ca41d 100644
--- a/packages/gpe-themes/gpe-theme-industrial_0.2.bb
+++ b/packages/gpe-themes/gpe-theme-industrial_0.2.bb
@@ -6,7 +6,7 @@ DEPENDS = "gtk-engines"
RDEPENDS = "gtk-engine-industrial"
FILES_${PN} = "${datadir}/themes/"
-SRC_URI = "http://dominion.kabel.utwente.nl/koen/pda/files/${P}.tar.gz"
+SRC_URI = "http://dominion.thruhere.net/koen/pda/files/${P}.tar.gz"
do_install() {
install -d ${D}${datadir}/themes/
diff --git a/packages/gpephone/contact_svn.bb b/packages/gpephone/contact_svn.bb
new file mode 100644
index 0000000000..0b785ac9f0
--- /dev/null
+++ b/packages/gpephone/contact_svn.bb
@@ -0,0 +1,18 @@
+DESCRIPTION = "G(PE)^2 address book v2"
+SECTION = "gpe"
+PRIORITY = "optional"
+LICENSE = "LiPS"
+DEPENDS = "gtk+ libgpephone dbus-glib libabenabler2 librecord2 libgemwidget"
+PV = "0.0+svn-${SRCREV}"
+PR = "r0"
+
+inherit gpephone autotools
+
+SRC_URI = ${GPEPHONE_SVN}
+
+S = "${WORKDIR}/contact/trunk"
+
+
+FILES_${PN} += "${datadir}"
+
+DEFAULT_PREFERENCE = "-1"
diff --git a/packages/gpephone/firewall_svn.bb b/packages/gpephone/firewall_svn.bb
new file mode 100644
index 0000000000..77b2122449
--- /dev/null
+++ b/packages/gpephone/firewall_svn.bb
@@ -0,0 +1,18 @@
+LICENSE = "LiPS"
+DESCRIPTION = "Cellphone firewall tool"
+SECTION = "gpe"
+PRIORITY = "optional"
+PR = "r0"
+PV = "0.0+svnr-${SRCREV}"
+
+SRCREV_pn-${PN} ?= "1400"
+
+DEFAULT_PREFERENCE = "-1"
+
+DEPENDS = "gtk+ libmsgenabler libabenabler libiac libgpewidget libgpephone gconf-dbus"
+
+inherit gpephone autotools pkgconfig
+
+SRC_URI = "${GPEPHONE_SVN}"
+
+S = "${WORKDIR}/${PN}"
diff --git a/packages/keylaunch/files/spitz/.mtn2git_empty b/packages/gpephone/libabenabler2/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/keylaunch/files/spitz/.mtn2git_empty
+++ b/packages/gpephone/libabenabler2/.mtn2git_empty
diff --git a/packages/gpephone/libabenabler2/i18n.patch b/packages/gpephone/libabenabler2/i18n.patch
new file mode 100644
index 0000000000..3b5354380f
--- /dev/null
+++ b/packages/gpephone/libabenabler2/i18n.patch
@@ -0,0 +1,18 @@
+--- libabenabler2-1.0/Makefile.am~ 2007-11-27 16:51:42.000000000 +0100
++++ libabenabler2-1.0/Makefile.am 2007-11-27 16:51:42.000000000 +0100
+@@ -1,4 +1,4 @@
+-SUBDIRS = src include plugins test
++SUBDIRS = src include plugins test po
+
+ EXTRA_DIST = libabenabler2.pc.in
+
+--- libabenabler2-1.0/configure.ac~ 2007-11-27 16:51:18.000000000 +0100
++++ libabenabler2-1.0/configure.ac 2007-11-27 16:51:18.000000000 +0100
+@@ -31,6 +31,7 @@
+ plugins/Makefile
+ test/Makefile
+ libabenabler2.pc
++po/Makefile.in
+ ])
+ AC_OUTPUT
+
diff --git a/packages/gpephone/libabenabler2_1.0.bb b/packages/gpephone/libabenabler2_1.0.bb
index 9277d9359a..ce8470274d 100644
--- a/packages/gpephone/libabenabler2_1.0.bb
+++ b/packages/gpephone/libabenabler2_1.0.bb
@@ -3,12 +3,20 @@ DESCRIPTION = "LiPS address book library."
SECTION = "gpe/libs"
PRIORITY = "optional"
DEPENDS = "glib-2.0 librecord2 gconf sqlite3"
-PR = "r0"
+PR = "r1"
GPE_TARBALL_SUFFIX = "bz2"
inherit gpephone pkgconfig autotools
-LDFLAGS += " -L${STAGING_LIBDIR}"
+SRC_URI += "file://i18n.patch;patch=1"
+
+FILES_${PN} += "${datadir}/contact ${libdir}/lips/*.so"
+FILES_${PN}-dbg += "${libdir}/lips/.debug/*.so"
+
+do_configure_prepend () {
+ mkdir "${S}/po"
+ touch "${S}/po/POTFILES.in"
+}
do_stage () {
autotools_stage_all
diff --git a/packages/gpephone/libabenabler2_svn.bb b/packages/gpephone/libabenabler2_svn.bb
new file mode 100644
index 0000000000..ea070092a2
--- /dev/null
+++ b/packages/gpephone/libabenabler2_svn.bb
@@ -0,0 +1,21 @@
+DESCRIPTION = "LiPS address book library."
+SECTION = "gpe/libs"
+PRIORITY = "optional"
+LICENSE = "LGPL"
+DEPENDS = "glib-2.0 librecord2 gconf sqlite3"
+PV = "0.0+svn-${SRCDATE}"
+PR = "r0"
+
+SRC_URI = "${GPEPHONE_SVN}"
+
+S = "${WORKDIR}/${PN}"
+
+inherit gpephone pkgconfig autotools
+
+do_stage () {
+ autotools_stage_all
+}
+
+DEFAULT_PREFERENCE = "-1"
+
+LDFLAGS += " -L${STAGING_LIBDIR}"
diff --git a/packages/gpephone/libcalenabler2_svn.bb b/packages/gpephone/libcalenabler2_svn.bb
new file mode 100644
index 0000000000..6144e055de
--- /dev/null
+++ b/packages/gpephone/libcalenabler2_svn.bb
@@ -0,0 +1,25 @@
+DESCRIPTION = "LiPS calendar API."
+SECTION = "gpe/libs"
+PRIORITY = "optional"
+LICENSE = "LiPS"
+DEPENDS = "glib-2.0 sqlite3 libical"
+PV = "0.0+svn-${SRCREV}"
+PR = "r0"
+
+SRC_URI = "${GPEPHONE_SVN}"
+
+S = "${WORKDIR}/${PN}"
+
+GPE_TARBALL_SUFFIX = "bz2"
+
+inherit gpephone pkgconfig autotools
+
+do_stage () {
+ autotools_stage_all
+}
+
+FILES_${PN} += " ${libdir}/*.so.*"
+FILES_${PN}-dbg += "${libdir}/.debug/*.so.*"
+FILES_${PN}-dev += "${includedir} ${libdir}/*.la ${libdir}/*.so"
+
+DEFAULT_PREFERENCE = "-1"
diff --git a/packages/maemo3/.mtn2git_empty b/packages/gpephone/libchenabler/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/maemo3/.mtn2git_empty
+++ b/packages/gpephone/libchenabler/.mtn2git_empty
diff --git a/packages/gpephone/libchenabler/po.patch b/packages/gpephone/libchenabler/po.patch
new file mode 100644
index 0000000000..0f880f5f49
--- /dev/null
+++ b/packages/gpephone/libchenabler/po.patch
@@ -0,0 +1,9 @@
+--- libchenabler-0.1/configure.ac~ 2007-11-08 12:01:26.000000000 +0100
++++ libchenabler-0.1/configure.ac 2007-11-08 12:01:26.000000000 +0100
+@@ -31,5 +31,6 @@
+ src/Makefile
+ database/Makefile
+ libvochenabler.pc
++po/Makefile.in
+ ])
+ AC_OUTPUT
diff --git a/packages/gpephone/libchenabler_0.1.bb b/packages/gpephone/libchenabler_0.1.bb
index 740ed21c65..4c06e2fbd3 100644
--- a/packages/gpephone/libchenabler_0.1.bb
+++ b/packages/gpephone/libchenabler_0.1.bb
@@ -3,14 +3,20 @@ DESCRIPTION = "LiPS voice call library."
SECTION = "gpe/libs"
PRIORITY = "optional"
DEPENDS = "glib-2.0 sqlite3 librecord"
-PR = "r0"
+PR = "r1"
GPE_TARBALL_SUFFIX = "gz"
inherit gpephone pkgconfig autotools
+SRC_URI += "file://po.patch;patch=1"
FILES_${PN} += " ${datadir}/vochistory"
+do_configure_prepend () {
+ mkdir "${S}/po"
+ touch "${S}/po/POTFILES.in"
+}
+
do_stage () {
autotools_stage_all
}
diff --git a/packages/gpephone/libgemwidget/disable-tests.patch b/packages/gpephone/libgemwidget/disable-tests.patch
new file mode 100644
index 0000000000..a0665979a7
--- /dev/null
+++ b/packages/gpephone/libgemwidget/disable-tests.patch
@@ -0,0 +1,8 @@
+--- libgemwidget-1.0/Makefile.am~ 2007-11-08 00:12:10.000000000 +0100
++++ libgemwidget-1.0/Makefile.am 2007-11-08 00:12:10.000000000 +0100
+@@ -1,4 +1,4 @@
+-SUBDIRS = src include pixmaps test po
++SUBDIRS = src include pixmaps po
+
+ pkgconfigdir = $(libdir)/pkgconfig
+ pkgconfig_DATA = libgemwidget.pc
diff --git a/packages/gpephone/libgemwidget_1.0.bb b/packages/gpephone/libgemwidget_1.0.bb
new file mode 100644
index 0000000000..80e4e4fecb
--- /dev/null
+++ b/packages/gpephone/libgemwidget_1.0.bb
@@ -0,0 +1,17 @@
+LICENSE = "LiPS"
+DESCRIPTION = "Extended widget library for GPE phone environment."
+SECTION = "gpe/libs"
+PRIORITY = "optional"
+DEPENDS = "gtk+ libiac libgpephone gnome-vfs libxdamage libxcomposite libgpewidget"
+PR = "r0"
+
+GPE_TARBALL_SUFFIX = "bz2"
+inherit gpephone pkgconfig autotools
+
+SRC_URI += " file://disable-tests.patch;patch=1"
+
+FILES_${PN} += "${datadir}/gem"
+
+do_stage () {
+ autotools_stage_all
+}
diff --git a/packages/maemo3/hildon-1/.mtn2git_empty b/packages/gpephone/libiac-0.1/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/maemo3/hildon-1/.mtn2git_empty
+++ b/packages/gpephone/libiac-0.1/.mtn2git_empty
diff --git a/packages/gpephone/libiac-0.1/po.patch b/packages/gpephone/libiac-0.1/po.patch
new file mode 100644
index 0000000000..efc981ce16
--- /dev/null
+++ b/packages/gpephone/libiac-0.1/po.patch
@@ -0,0 +1,17 @@
+--- libiac-0.1/Makefile.am~ 2007-11-07 22:33:46.000000000 +0100
++++ libiac-0.1/Makefile.am 2007-11-07 22:33:46.000000000 +0100
+@@ -1,4 +1,4 @@
+-SUBDIRS=src
++SUBDIRS = src po
+
+ EXTRA_DIST = libiac.pc.in
+
+--- libiac-0.1/configure.ac~ 2007-11-07 22:34:12.000000000 +0100
++++ libiac-0.1/configure.ac 2007-11-07 22:34:12.000000000 +0100
+@@ -22,5 +22,5 @@
+
+ PKG_CHECK_MODULES(IAC, glib-2.0 dbus-1 dbus-glib-1)
+
+-AC_CONFIG_FILES([Makefile src/Makefile libiac.pc ])
++AC_CONFIG_FILES([Makefile src/Makefile libiac.pc po/Makefile.in])
+ AC_OUTPUT
diff --git a/packages/gpephone/libiac_0.1.bb b/packages/gpephone/libiac_0.1.bb
index 940b1ecc31..5d522b7f54 100644
--- a/packages/gpephone/libiac_0.1.bb
+++ b/packages/gpephone/libiac_0.1.bb
@@ -3,11 +3,13 @@ DESCRIPTION = "LiPS IPC library."
SECTION = "gpe/libs"
PRIORITY = "optional"
DEPENDS = "gtk+ gtk-doc"
-PR = "r1"
+PR = "r2"
GPE_TARBALL_SUFFIX = "bz2"
inherit gpephone pkgconfig autotools
+SRC_URI += "file://po.patch;patch=1"
+
do_stage () {
autotools_stage_all
}
diff --git a/packages/gpephone/ptim-engine_1.0.bb b/packages/gpephone/ptim-engine_1.0.bb
new file mode 100644
index 0000000000..e1cd76ae30
--- /dev/null
+++ b/packages/gpephone/ptim-engine_1.0.bb
@@ -0,0 +1,20 @@
+DESCRIPTION = "Phone input method engine"
+SECTION = "gpephone"
+PRIORITY = "optional"
+LICENSE = "LiPS"
+DEPENDS = "gtk+ ptim-headers"
+PR = "r0"
+
+inherit gpephone pkgconfig autotools
+
+SRC_URI = "${GPEPHONE_MIRROR}/${P}/imengine-${PV}.tar.bz2"
+
+S = "${WORKDIR}/imengine-${PV}"
+
+FILES_${PN} += " ${libdir}/gtk-2.0/*/immodules/ptim/engine/*.so ${libdir}/gtk-2.0/*/immodules/ptim/pydatabase/*"
+FILES_${PN}-dbg += "${libdir}/gtk-2.0/*/immodules/ptim/engine/.debug/*.so"
+FILES_${PN}-dev += "${libdir}/gtk-2.0/*/immodules/ptim/engine/*.la"
+
+do_stage () {
+ autotools_stage_all
+} \ No newline at end of file
diff --git a/packages/gpephone/ptim-headers_1.0.bb b/packages/gpephone/ptim-headers_1.0.bb
new file mode 100644
index 0000000000..2ed36458e4
--- /dev/null
+++ b/packages/gpephone/ptim-headers_1.0.bb
@@ -0,0 +1,15 @@
+DESCRIPTION = "Phone input method - shared headers"
+SECTION = "gpephone"
+PRIORITY = "optional"
+LICENSE = "LiPS"
+DEPENDS = "gtk+"
+
+inherit gpephone pkgconfig autotools
+
+SRC_URI = "${GPEPHONE_MIRROR}/ptim-headers-${PV}/imheaders-${PV}.tar.bz2"
+
+S = "${WORKDIR}/imheaders-${PV}"
+
+do_stage () {
+ autotools_stage_all
+} \ No newline at end of file
diff --git a/packages/gpephone/ptim-helper_1.0.bb b/packages/gpephone/ptim-helper_1.0.bb
new file mode 100644
index 0000000000..4d5609e6a2
--- /dev/null
+++ b/packages/gpephone/ptim-helper_1.0.bb
@@ -0,0 +1,28 @@
+DESCRIPTION = "Phone input method helper module"
+SECTION = "gpephone"
+PRIORITY = "optional"
+LICENSE = "LiPS"
+DEPENDS = "gtk+ ptim-headers"
+PR = "r1"
+
+inherit gpephone pkgconfig autotools
+
+SRC_URI = "${GPEPHONE_MIRROR}/${P}/imhelper-${PV}.tar.bz2"
+
+S = "${WORKDIR}/imhelper-${PV}"
+
+FILES_${PN} += " ${libdir}/gtk-2.0/*/immodules/ptim/helper/*.so ${libdir}/gtk-2.0/*/immodules/ptim/pixmaps/*"
+FILES_${PN}-dbg += "${libdir}/gtk-2.0/*/immodules/ptim/helper/.debug/*.so"
+FILES_${PN}-dev += "${libdir}/gtk-2.0/*/immodules/ptim/helper/*.la"
+
+do_stage () {
+ autotools_stage_all
+}
+
+pkg_postinst_${PN}() {
+ gtk-query-immodules-2.0 > /etc/gtk-2.0/gtk.immodules
+}
+
+pkg_postrm_${PN}() {
+ gtk-query-immodules-2.0 > /etc/gtk-2.0/gtk.immodules
+}
diff --git a/packages/gpephone/ptim-manager_1.0.bb b/packages/gpephone/ptim-manager_1.0.bb
new file mode 100644
index 0000000000..c0955a2176
--- /dev/null
+++ b/packages/gpephone/ptim-manager_1.0.bb
@@ -0,0 +1,27 @@
+DESCRIPTION = "Phone input method manager module"
+SECTION = "gpephone"
+PRIORITY = "optional"
+LICENSE = "LiPS"
+DEPENDS = "gtk+ ptim-headers libiac"
+PR = "r0"
+
+inherit gpephone pkgconfig autotools
+
+SRC_URI = "${GPEPHONE_MIRROR}/ptim-manager-${PV}/immanager-${PV}.tar.bz2"
+
+S = "${WORKDIR}/immanager-${PV}"
+
+FILES_${PN} += "${libdir}/gtk-2.0/*/immodules/*.so ${libdir}/gtk-2.0/*/immodules/ptim"
+FILES_${PN}-dbg += "${libdir}/gtk-2.0/*/immodules/.debug/*.so"
+FILES_${PN}-dev += "${libdir}/gtk-2.0/*/immodules/*.la"
+
+
+do_install_append () {
+ # That's evil...
+ install -m 644 ${S}/conf/imconfig ${D}/${libdir}/gtk-2.0/*/immodules/ptim
+}
+
+
+do_stage () {
+ autotools_stage_all
+} \ No newline at end of file
diff --git a/packages/gpephone/quickdial_svn.bb b/packages/gpephone/quickdial_svn.bb
new file mode 100644
index 0000000000..4533bf4ee8
--- /dev/null
+++ b/packages/gpephone/quickdial_svn.bb
@@ -0,0 +1,21 @@
+LICENSE = "LiPS"
+DESCRIPTION = "Quickdial application and backend"
+SECTION = "gpe"
+PRIORITY = "optional"
+PR = "r0"
+PV = "0.0+svnr-${SRCREV}"
+
+SRCREV_pn-${PN} ?= "1393"
+
+DEFAULT_PREFERENCE = "-1"
+
+DEPENDS = "gtk+ librecord2 libgpephone hiker"
+
+inherit gpephone autotools pkgconfig
+
+SRC_URI = "${GPEPHONE_SVN}"
+
+S = "${WORKDIR}/${PN}"
+
+
+FILES_${PN} += "${datadir}/qdial/database"
diff --git a/packages/gpephone/useen_svn.bb b/packages/gpephone/useen_svn.bb
new file mode 100644
index 0000000000..93d180ba52
--- /dev/null
+++ b/packages/gpephone/useen_svn.bb
@@ -0,0 +1,18 @@
+LICENSE = "LiPS"
+DESCRIPTION = "Useen tool"
+SECTION = "gpe"
+PRIORITY = "optional"
+PR = "r0"
+PV = "0.0+svnr-${SRCREV}"
+
+SRCREV_pn-${PN} ?= "1400"
+
+DEFAULT_PREFERENCE = "-1"
+
+DEPENDS = "glib-2.0"
+
+inherit gpephone autotools pkgconfig
+
+SRC_URI = "${GPEPHONE_SVN}"
+
+S = "${WORKDIR}/${PN}"
diff --git a/packages/gpsdrive/gpsdrive_2.10pre2.bb b/packages/gpsdrive/gpsdrive_2.10pre2.bb
index d0aa30477a..675c556b6f 100644
--- a/packages/gpsdrive/gpsdrive_2.10pre2.bb
+++ b/packages/gpsdrive/gpsdrive_2.10pre2.bb
@@ -9,7 +9,7 @@ SECTION = "x11"
PRIORITY = "optional"
LICENSE = "GPL"
-SRC_URI = "http://www.gpsdrive.cc/${PN}-${PV}.tar.gz \
+SRC_URI = "http://www.gpsdrive.de/${PN}-${PV}.tar.gz \
file://gpsdrive.desktop"
CFLAGS += "-D_GNU_SOURCE"
diff --git a/packages/gsl/gsl_1.4.bb b/packages/gsl/gsl_1.10.bb
index 5e6ea090e4..bd941bc7ae 100644
--- a/packages/gsl/gsl_1.4.bb
+++ b/packages/gsl/gsl_1.10.bb
@@ -1,7 +1,9 @@
DESCRIPTION = "GNU Scientific Library"
+HOMEPAGE = "http://www.gnu.org/software/gsl/"
SECTION = "libs"
PRIORITY = "optional"
LICENSE = "GPL"
+PR = "r0"
SRC_URI = "${GNU_MIRROR}/gsl/gsl-${PV}.tar.gz"
diff --git a/packages/gsm/gsmd.inc b/packages/gsm/gsmd.inc
index 8b3fe8fb82..c8167d648e 100644
--- a/packages/gsm/gsmd.inc
+++ b/packages/gsm/gsmd.inc
@@ -3,9 +3,9 @@ HOMEPAGE = "http://www.openmoko.org"
LICENSE = "GPL LGPL"
SECTION = "libs/gsm"
PROVIDES += "gsmd"
-RPROVIDES_${PN} = "libgsmd0 gsmd"
+RPROVIDES_${PN} = "libgsmd0 libgsmd gsmd gsmd-devel"
PV = "0.1+svnr${SRCREV}"
-PR = "r34"
+PR = "r39"
SRC_URI = "svn://svn.openmoko.org/trunk/src/target;module=gsm;proto=http \
file://gsmd \
@@ -31,32 +31,39 @@ do_install_append() {
install ${WORKDIR}/default ${D}/${sysconfdir}/default/gsmd
}
-PACKAGES =+ "${PN}-tools \
- ${BASEPN}-plugins \
- ${BASEPN}-plugin-machine-generic \
- ${BASEPN}-plugin-machine-tihtc \
- ${BASEPN}-plugin-vendor-bcm \
- ${BASEPN}-plugin-vendor-qc \
- ${BASEPN}-plugin-vendor-ti \
- ${BASEPN}-plugin-vendor-tihtc \
- "
+PACKAGES =+ "\
+ ${PN}-tools \
+ ${BASEPN}-plugins \
+ ${BASEPN}-plugin-machine-generic \
+ ${BASEPN}-plugin-machine-tihtc \
+ ${BASEPN}-plugin-machine-gta01 \
+ ${BASEPN}-plugin-vendor-bcm \
+ ${BASEPN}-plugin-vendor-qc \
+ ${BASEPN}-plugin-vendor-ti \
+ ${BASEPN}-plugin-vendor-tihtc \
+"
-RDEPENDS_${BASEPN}-plugins = "${BASEPN}-plugin-machine-generic \
- ${BASEPN}-plugin-machine-tihtc \
- ${BASEPN}-plugin-vendor-bcm \
- ${BASEPN}-plugin-vendor-qc \
- ${BASEPN}-plugin-vendor-ti \
- ${BASEPN}-plugin-vendor-tihtc \
- "
+ALLOW_EMPTY_${BASEPN}-plugin-machine-gta01 = "1"
-RDEPENDS_${BASEPN} = "update-rc.d initscripts"
-RRECOMMENDS_${BASEPN} = "${BASEPN}-plugins"
+RDEPENDS_${BASEPN}-plugins = "\
+ ${BASEPN}-plugin-machine-generic \
+ ${BASEPN}-plugin-machine-tihtc \
+ ${BASEPN}-plugin-machine-gta01 \
+ ${BASEPN}-plugin-vendor-bcm \
+ ${BASEPN}-plugin-vendor-qc \
+ ${BASEPN}-plugin-vendor-ti \
+ ${BASEPN}-plugin-vendor-tihtc \
+"
+
+RDEPENDS_${PN} += "update-rc.d initscripts"
+RRECOMMENDS_${PN} += "${BASEPN}-plugins"
FILES_${PN}-dbg += "${libdir}/gsmd/.debug/*"
FILES_${PN}-tools = "${bindir}/*"
FILES_${BASEPN}-plugins = ""
FILES_${BASEPN}-plugin-machine-generic = "${libdir}/gsmd/libgsmd-machine_generic.so*"
FILES_${BASEPN}-plugin-machine-tihtc = "${libdir}/gsmd/libgsmd-machine_tihtc.so*"
+FILES_${BASEPN}-plugin-machine-gta01 = "${libdir}/gsmd/libgsmd-machine_gta01.so*"
FILES_${BASEPN}-plugin-vendor-qc = "${libdir}/gsmd/libgsmd-vendor_qc.so*"
FILES_${BASEPN}-plugin-vendor-bcm = "${libdir}/gsmd/libgsmd-vendor_bcm.so*"
FILES_${BASEPN}-plugin-vendor-ti = "${libdir}/gsmd/libgsmd-vendor_ti.so*"
@@ -71,6 +78,7 @@ RCONFLICTS_${BASEPN} = "${CONFLICTNAME}"
RCONFLICTS_${BASEPN}-plugins = "${CONFLICTNAME}-plugins"
RCONFLICTS_${BASEPN}-plugin-machine-generic = "${CONFLICTNAME}-plugin-machine-generic"
RCONFLICTS_${BASEPN}-plugin-machine-tihtc = "${CONFLICTNAME}-plugin-machine-tihtc"
+RCONFLICTS_${BASEPN}-plugin-machine-gta01 = "${CONFLICTNAME}-plugin-machine-gta01"
RCONFLICTS_${BASEPN}-plugin-vendor-qc = "${CONFLICTNAME}-plugin-vendor-qc"
RCONFLICTS_${BASEPN}-plugin-vendor-bcm = "${CONFLICTNAME}-plugin-vendor-bcm"
RCONFLICTS_${BASEPN}-plugin-vendor-ti = "${CONFLICTNAME}-plugin-vendor-ti"
@@ -81,6 +89,7 @@ RPROVIDES_${BASEPN} = "${CONFLICTNAME}"
RPROVIDES_${BASEPN}-plugins = "${CONFLICTNAME}-plugins"
RPROVIDES_${BASEPN}-plugin-machine-generic = "${CONFLICTNAME}-plugin-machine-generic"
RPROVIDES_${BASEPN}-plugin-machine-tihtc = "${CONFLICTNAME}-plugin-machine-tihtc"
+RPROVIDES_${BASEPN}-plugin-machine-gta01 = "${CONFLICTNAME}-plugin-machine-gta01"
RPROVIDES_${BASEPN}-plugin-vendor-qc = "${CONFLICTNAME}-plugin-vendor-qc"
RPROVIDES_${BASEPN}-plugin-vendor-bcm = "${CONFLICTNAME}-plugin-vendor-bcm"
RPROVIDES_${BASEPN}-plugin-vendor-ti = "${CONFLICTNAME}-plugin-vendor-ti"
diff --git a/packages/gsm/libgsmd-devel_svn.bb b/packages/gsm/libgsmd-devel_svn.bb
index 0d5b90a990..d584e88d38 100644
--- a/packages/gsm/libgsmd-devel_svn.bb
+++ b/packages/gsm/libgsmd-devel_svn.bb
@@ -4,6 +4,7 @@ CONFLICTNAME = "gsmd"
require gsmd.inc
PROVIDES += "libgsmd"
+RPROVIDES_${PN}-tools = "lib${CONFLICTNAME}-tools"
SRC_URI += " file://024_sms-text-in-bracket.patch;patch=1;minrev=2957;maxrev=3199 \
file://025_sms-status-report.patch;patch=1;minrev=2957;maxrev=3200 \
diff --git a/packages/maemo3/libhildonfm/.mtn2git_empty b/packages/gsm/pty/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/maemo3/libhildonfm/.mtn2git_empty
+++ b/packages/gsm/pty/.mtn2git_empty
diff --git a/packages/gsm/pty/pty.c b/packages/gsm/pty/pty.c
new file mode 100644
index 0000000000..4a33d0efd3
--- /dev/null
+++ b/packages/gsm/pty/pty.c
@@ -0,0 +1,163 @@
+/*
+ * Copyright (C) 2007 OpenedHand, Ltd.
+ * Contact: <andrew@o-hand.com>
+ *
+ * This file is licensed under the terms of GNU GPL v2.
+ *
+ * $ pty [<hostname|ip> <port>]
+ * Opens a new pseudo terminal and forwards data between standard input
+ * and the pty and between the pty and standard output. If a hostname and
+ * port number are given, reads and writes to the socket instead of
+ * standard input or output. Path to the slave pty is printed on standard
+ * error.
+ */
+#include <unistd.h>
+#include <stdlib.h>
+#include <fcntl.h>
+#include <errno.h>
+#include <stdio.h>
+#include <string.h>
+#include <sys/ioctl.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+#include <netdb.h>
+#include <poll.h>
+
+#define CHECK(val, name) \
+ if (val == -1) { \
+ fprintf(stderr, #name ": %s (%i)\n", strerror(errno), errno);\
+ return -errno; \
+ }
+
+#define min(a, b) ((a) < (b) ? (a) : (b))
+#define max(a, b) ((a) > (b) ? (a) : (b))
+
+static int forward2(int in0, int out0, int in1, int out1,
+ int (*closed)(int fd)) {
+ int inpos = 0, inlen = 0, outpos = 0, outlen = 0, ret, n;
+ fd_set rfds, wfds;
+ char in[0x100], out[0x100];
+
+ n = max(max(in0, in1), max(out0, out1)) + 1;
+ while (1) {
+ FD_ZERO(&rfds);
+ FD_ZERO(&wfds);
+ if (inlen < sizeof(in))
+ FD_SET(in0, &rfds);
+ if (outlen < sizeof(out))
+ FD_SET(in1, &rfds);
+ if (inlen)
+ FD_SET(out0, &wfds);
+ if (outlen)
+ FD_SET(out1, &wfds);
+ CHECK(select(n, &rfds, &wfds, 0, 0), select);
+
+ if (FD_ISSET(in0, &rfds)) {
+ ret = (inpos + inlen) & (sizeof(in) - 1);
+ ret = read(in0, in + ret,
+ sizeof(in) - max(ret, inlen));
+ CHECK(ret, read(0));
+ if (!ret)
+ return 0;
+ inlen += ret;
+ }
+ if (FD_ISSET(in1, &rfds)) {
+ ret = (outpos + outlen) & (sizeof(out) - 1);
+ ret = read(in1, out + ret,
+ sizeof(out) - max(ret, outlen));
+ if (ret > 0)
+ outlen += ret;
+ if (ret < 0 && errno == EIO && closed) {
+ in1 = out0 = closed(in1);
+ if (in1 < 0)
+ return in1;
+ n = max(max(in0, in1), max(out0, out1)) + 1;
+ continue;
+ }
+ }
+ if (FD_ISSET(out0, &wfds)) {
+ ret = write(out0, in + inpos,
+ min(sizeof(in) - inpos, inlen));
+ CHECK(ret, write(pty));
+ inlen -= ret;
+ inpos += ret;
+ inpos &= sizeof(in) - 1;
+ }
+ if (FD_ISSET(out1, &wfds)) {
+ ret = write(out1, out + outpos,
+ min(sizeof(out) - outpos, outlen));
+ CHECK(ret, write(1));
+ outlen -= ret;
+ outpos += ret;
+ outpos &= sizeof(out) - 1;
+ }
+ }
+
+ return pause();
+}
+
+static int reopen(int fd) {
+ const char *name = ttyname(fd);
+
+ CHECK(close(fd), close(pty));
+ fd = open(name, O_RDWR | O_NOCTTY);
+ CHECK(fd, open);
+ CHECK(grantpt(fd), grantpt);
+ CHECK(unlockpt(fd), unlockpt);
+
+ fprintf(stderr, "%s\n", ptsname(fd));
+ return fd;
+}
+
+int main(int argc, char *argv[], char **envp) {
+ int sock, fd;
+ struct sockaddr_in sa;
+ struct hostent *hi;
+
+ fd = posix_openpt(O_RDWR | O_NOCTTY);
+ CHECK(fd, open);
+ CHECK(grantpt(fd), grantpt);
+ CHECK(unlockpt(fd), unlockpt);
+
+ fprintf(stderr, "%s\n", ptsname(fd));
+#if 0
+ /* Connect stdin & stdout with a pty */
+ CHECK(close(0), close(0));
+ CHECK(close(1), close(1));
+ CHECK(dup(fd), dup(0));
+ CHECK(dup(fd), dup(1));
+ return pause();
+#endif
+ if (argc != 3)
+ return forward2(0, fd, fd, 1, reopen);
+
+#if 0
+ /* Connect a sub-process with a pty */
+ for (len = 0, i = 1; i < argc; i ++)
+ len += strlen(argv[i]) + 4;
+ param = malloc(len);
+ strcpy(param, argv[1]);
+ for (i = 2; i < argc; i ++)
+ sprintf(param + strlen(param), " \"%s\"", argv[i]);
+ i = fileno(popen(param, O_RDWR));
+ CHECK(i, popen);
+ free(param);
+ return forward2(i, fd, fd, i, reopen);
+#endif
+
+ /* Connect a TCP socket with a pty */
+ hi = gethostbyname(argv[1]);
+ if (!hi) {
+ errno = h_errno;
+ CHECK(-1, gethostbyname);
+ }
+ sa.sin_family = hi->h_addrtype;
+ memcpy(&sa.sin_addr.s_addr, hi->h_addr_list[0], hi->h_length);
+ sa.sin_port = htons(strtol(argv[2], 0, 0));
+ sock = socket(AF_INET, SOCK_STREAM, 0);
+
+ CHECK(sock, socket);
+ CHECK(connect(sock, (struct sockaddr *) &sa, sizeof(sa)), connect);
+ return forward2(sock, fd, fd, sock, reopen);
+}
diff --git a/packages/gsm/pty_0.0.bb b/packages/gsm/pty_0.0.bb
new file mode 100644
index 0000000000..ab767f7979
--- /dev/null
+++ b/packages/gsm/pty_0.0.bb
@@ -0,0 +1,15 @@
+DESCRIPTION = "Forwards a socket to a tty"
+LICENSE = "GPLv2"
+PR = "r1"
+
+SRC_URI = "file://pty.c"
+
+do_compile() {
+ cp ${WORKDIR}/*.c ${S}/
+ ${CC} pty.c -o pty -I${STAGING_INCDIR} -L${STAGING_LIBDIR}
+}
+
+do_install() {
+ install -d ${D}${bindir}
+ install -m 0755 pty ${D}${bindir}/
+}
diff --git a/packages/gtk+/gdk-pixbuf_2.10.14.bb b/packages/gtk+/gdk-pixbuf_2.10.14.bb
new file mode 100644
index 0000000000..ecd2d51d49
--- /dev/null
+++ b/packages/gtk+/gdk-pixbuf_2.10.14.bb
@@ -0,0 +1,86 @@
+DESCRIPTION = "Stand-alone libpixbuf, a pixelmap image i/o library from the \
+GTK+ multi-platform toolkit for creating graphical user interfaces."
+HOMEPAGE = "http://www.gtk.org/"
+SECTION = "libs"
+LICENSE = "LGPL"
+PRIORITY = "optional"
+DEPENDS = "libpng gettext glib-2.0"
+PR = "r1"
+
+S = "${WORKDIR}/gtk+-${PV}"
+FILESPATH = "${FILE_DIRNAME}/gdk-pixbuf-csource:${FILE_DIRNAME}/gtk+-${PV}:${FILE_DIRNAME}/files"
+
+SRC_URI = "ftp://ftp.gtk.org/pub/gtk/v2.10/gtk+-${PV}.tar.bz2 \
+ file://automake-lossage.patch;patch=1 \
+ file://reduce-dependencies.patch;patch=1"
+
+# file://no-xwc.patch;patch=1 \
+# file://disable-tooltips.patch;patch=1 \
+# file://gtklabel-resize-patch;patch=1 \
+# file://menu-deactivate.patch;patch=1 \
+# file://xsettings.patch;patch=1 \
+# file://scroll-timings.patch;patch=1 \
+# file://small-gtkfilesel.patch;patch=1 \
+# file://migration.patch;patch=1;pnum=0 \
+# file://run-iconcache.patch;patch=1 \
+# file://hardcoded_libtool.patch;patch=1 \
+# file://no-demos.patch;patch=1 \
+# file://single-click.patch;patch=1 \
+# file://spinbutton.patch;patch=1 \
+# file://gtk+-handhelds.patch;patch=1 \
+# file://filesel-fix-segfault.patch;patch=1 \
+# file://combo-arrow-size.patch;patch=1;pnum=0 \
+# file://range-no-redraw.patch;patch=1;pnum=0 \
+# file://scrolled-placement.patch;patch=1;pnum=0 \
+# file://treeview-checkbox-size.patch;patch=1;pnum=0 \
+# file://cell-renderer-edit-focus.patch;patch=1;pnum=0 \
+
+inherit autotools pkgconfig
+
+LIBV = "2.10.0"
+
+FILES_${PN} = "${bindir}/gdk-pixbuf-query-loaders \
+ ${bindir}/gtk-update-icon-cache \
+ ${libdir}/lib*.so.*"
+
+FILES_${PN}-dev += " \
+ ${datadir}/gtk-2.0/include \
+ ${libdir}/gtk-2.0/include \
+ ${libdir}/gtk-2.0/${LIBV}/loaders/*.la \
+ ${bindir}/gdk-pixbuf-csource \
+ ${bindir}/gtk-builder-convert"
+
+FILES_${PN}-dbg += " \
+ ${libdir}/gtk-2.0/${LIBV}/loaders/.debug/*"
+
+EXTRA_OECONF = "\
+ --without-x \
+ --with-gdktarget=linux-fb \
+ --without-libtiff \
+ --without-libjpeg \
+ --with-libpng \
+"
+
+EXTRA_OECONF += "--disable-modules --with-included-loaders=png,tga"
+
+# check for TARGET_FPU=soft and inform configure of the result so it can disable some floating points
+require gtk-fpu.inc
+EXTRA_OECONF += "${@get_gtk_fpu_setting(bb, d)}"
+
+do_compile() {
+ cd gdk-pixbuf && oe_runmake
+}
+
+do_stage() {
+ oe_libinstall -C gdk-pixbuf -so libgdk_pixbuf-2.0 ${STAGING_LIBDIR}
+ cd gdk-pixbuf && oe_runmake install DESTDIR=${STAGING_DIR}/usr
+ autotools_stage_includes
+# install -d -m 0755 ${STAGING_LIBDIR}/gtk-2.0/include
+# install -m 0644 gdk/gdkconfig.h ${STAGING_LIBDIR}/gtk-2.0/include/gdkconfig.h
+}
+
+do_install() {
+ oe_libinstall -C gdk-pixbuf -so libgdk_pixbuf-2.0 ${D}/${libdir}
+ cd gdk-pixbuf && oe_runmake install DESTDIR=${D}
+}
+
diff --git a/packages/gtk+/gtk+-fastscaling_2.10.14.bb b/packages/gtk+/gtk+-fastscaling_2.10.14.bb
index 09c78662d9..e37a93df74 100644
--- a/packages/gtk+/gtk+-fastscaling_2.10.14.bb
+++ b/packages/gtk+/gtk+-fastscaling_2.10.14.bb
@@ -6,7 +6,7 @@ DEFAULT_PREFERENCE = "-1"
PROVIDES = "gtk+"
RPROVIDES_${PN} = "gtk+"
-PR = "r0"
+PR = "r1"
SRC_URI += "file://lower-quality-scaling-in-pixbuf-engine.patch;patch=1"
diff --git a/packages/gtk-webcore/midori_0.0.11.bb b/packages/gtk-webcore/midori_0.0.11.bb
new file mode 100644
index 0000000000..23d0179375
--- /dev/null
+++ b/packages/gtk-webcore/midori_0.0.11.bb
@@ -0,0 +1,11 @@
+DESCRIPTION = "Midori is a lightweight web browser."
+LICENSE = "GPLv2"
+
+DEPENDS = "webkit-gtk libsexy"
+
+inherit autotools pkgconfig
+
+SRC_URI = "http://software.twotoasts.de/media/midori/midori-${PV}.tar.gz \
+ "
+
+
diff --git a/packages/gtk-webcore/midori_0.0.12.bb b/packages/gtk-webcore/midori_0.0.12.bb
new file mode 100644
index 0000000000..23d0179375
--- /dev/null
+++ b/packages/gtk-webcore/midori_0.0.12.bb
@@ -0,0 +1,11 @@
+DESCRIPTION = "Midori is a lightweight web browser."
+LICENSE = "GPLv2"
+
+DEPENDS = "webkit-gtk libsexy"
+
+inherit autotools pkgconfig
+
+SRC_URI = "http://software.twotoasts.de/media/midori/midori-${PV}.tar.gz \
+ "
+
+
diff --git a/packages/hostap/files/hostap-fw-load.patch b/packages/hostap/files/hostap-fw-load.patch
index 88adee2bc9..c9fe9360b0 100644
--- a/packages/hostap/files/hostap-fw-load.patch
+++ b/packages/hostap/files/hostap-fw-load.patch
@@ -12,8 +12,8 @@
-PRI=/etc/pcmcia/PM010102.HEX
-STA=/etc/pcmcia/RF010802.HEX
-PRISM2_SREC=/usr/local/bin/prism2_srec
-+PRI=/etc/pcmcia/pm010102.hex
-+STA=/etc/pcmcia/rf010804.hex
++PRI=/lib/firmware/pm010102.hex
++STA=/lib/firmware/rf010704.hex
+PRISM2_SREC=/usr/sbin/prism2_srec
set -e
diff --git a/packages/maemo3/osso-ic-oss/.mtn2git_empty b/packages/hostap/hostap-daemon-0.6.0/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/maemo3/osso-ic-oss/.mtn2git_empty
+++ b/packages/hostap/hostap-daemon-0.6.0/.mtn2git_empty
diff --git a/packages/hostap/hostap-daemon-0.6.0/init b/packages/hostap/hostap-daemon-0.6.0/init
new file mode 100644
index 0000000000..79f74b681e
--- /dev/null
+++ b/packages/hostap/hostap-daemon-0.6.0/init
@@ -0,0 +1,37 @@
+#!/bin/sh
+DAEMON=/usr/sbin/hostapd
+NAME=hostapd
+DESC="HOSTAP Daemon"
+ARGS="/etc/hostapd.conf -B"
+
+test -f $DAEMON || exit 0
+
+set -e
+
+case "$1" in
+ start)
+ echo -n "Starting $DESC: "
+ start-stop-daemon -S -x $DAEMON -- $ARGS
+ echo "$NAME."
+ ;;
+ stop)
+ echo -n "Stopping $DESC: "
+ start-stop-daemon -K -x $DAEMON
+ echo "$NAME."
+ ;;
+ restart)
+ $0 stop
+ $0 start
+ ;;
+ reload)
+ echo -n "Reloading $DESC: "
+ killall -HUP $(basename ${DAEMON})
+ echo "$NAME."
+ ;;
+ *)
+ echo "Usage: $0 {start|stop|restart|reload}"
+ exit 1
+ ;;
+esac
+
+exit 0
diff --git a/packages/hostap/hostap-daemon-0.6.0/makefile-cross.diff b/packages/hostap/hostap-daemon-0.6.0/makefile-cross.diff
new file mode 100644
index 0000000000..9534199e78
--- /dev/null
+++ b/packages/hostap/hostap-daemon-0.6.0/makefile-cross.diff
@@ -0,0 +1,25 @@
+diff -urN hostapd.orig/Makefile hostapd/Makefile
+--- hostapd.orig/Makefile 2007-05-28 19:26:55.000000000 +0200
++++ hostapd/Makefile 2007-11-22 16:28:44.000000000 +0100
+@@ -6,6 +6,8 @@
+ CFLAGS = -MMD -O2 -Wall -g
+ endif
+
++TARGET_PREFIX ?= /usr/local/bin/
++
+ # define HOSTAPD_DUMP_STATE to include SIGUSR1 handler for dumping state to
+ # a file (undefine it, if you want to save in binary size)
+ CFLAGS += -DHOSTAPD_DUMP_STATE
+@@ -361,10 +363,10 @@
+ fi
+
+ install: all
+- for i in $(ALL); do cp $$i /usr/local/bin/$$i; done
++ for i in $(ALL); do cp $$i $(TARGET_PREFIX)/$$i; done
+
+ hostapd: $(OBJS)
+- $(CC) -o hostapd $(OBJS) $(LIBS)
++ $(CC) $(LDFLAGS) -o hostapd $(OBJS) $(LIBS)
+
+ OBJS_c = hostapd_cli.o ../src/common/wpa_ctrl.o ../src/utils/os_$(CONFIG_OS).o
+ hostapd_cli: $(OBJS_c)
diff --git a/packages/hostap/hostap-daemon_0.6.0.bb b/packages/hostap/hostap-daemon_0.6.0.bb
new file mode 100644
index 0000000000..37b710db19
--- /dev/null
+++ b/packages/hostap/hostap-daemon_0.6.0.bb
@@ -0,0 +1,40 @@
+DESCRIPTION = "User space daemon for extended IEEE 802.11 management"
+HOMEPAGE = "http://hostap.epitest.fi"
+SECTION = "kernel/userland"
+PRIORITY = "optional"
+LICENSE = "GPL"
+DEPENDS = "openssl ${@base_contains("COMBINED_FEATURES", "pci", "madwifi-ng", "",d)}"
+
+DEFAULT_PREFERENCE = "-1"
+
+SRC_URI = "http://hostap.epitest.fi/releases/hostapd-${PV}.tar.gz \
+ file://makefile-cross.diff;patch=1 \
+ file://defconfig \
+ file://init"
+
+S = "${WORKDIR}/hostapd-${PV}/hostapd"
+
+export HAS_PCI = "${@base_contains('COMBINED_FEATURES', 'pci', 1, 0,d)}"
+
+inherit update-rc.d
+INITSCRIPT_NAME=hostapd
+
+do_configure() {
+ install -m 0644 ${WORKDIR}/defconfig ${S}/.config
+ if [ "x$HAS_PCI" == "x1" ] ; then
+ echo "CONFIG_DRIVER_MADWIFI=y" >> .config
+ echo "CFLAGS += -I${STAGING_INCDIR}/madwifi-ng" >> .config
+ fi
+}
+
+do_compile() {
+ CFLAGS='${CFLAGS}' CC='${CC}' make
+}
+
+do_install() {
+ install -d ${D}${sbindir} ${D}${sysconfdir}/init.d
+ make TARGET_PREFIX=${D}${sbindir} install
+ install -m 0644 hostapd.conf ${D}${sysconfdir}
+ install -m 755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/hostapd
+}
+
diff --git a/packages/hostap/hostap-utils.inc b/packages/hostap/hostap-utils.inc
index 2e1897c9ba..94cb42010d 100644
--- a/packages/hostap/hostap-utils.inc
+++ b/packages/hostap/hostap-utils.inc
@@ -3,7 +3,7 @@ HOMEPAGE = "http://hostap.epitest.fi"
SECTION = "kernel/userland"
PRIORITY = "optional"
LICENSE = "GPL"
-PR = "r4"
+PR = "r5"
SRC_URI = "http://hostap.epitest.fi/releases/hostap-utils-${PV}.tar.gz \
file://hostap-fw-load.patch;patch=1"
diff --git a/packages/icu/icu_3.6.bb b/packages/icu/icu_3.6.bb
index 39162d2179..2e8dca925e 100644
--- a/packages/icu/icu_3.6.bb
+++ b/packages/icu/icu_3.6.bb
@@ -2,7 +2,7 @@ require icu-3.6.inc
DEPENDS += "icu-native"
-PR = "r1"
+PR = "r2"
do_configure_append() {
for i in */Makefile */*.inc */*/Makefile */*/*.inc ; do
@@ -13,6 +13,9 @@ do_configure_append() {
sed -i -e 's:$(BINDIR)/::g' extra/uconv/pkgdata.inc.in || true
}
+do_install_append() {
+ chmod +x ${D}${libdir}/lib*
+}
PACKAGES =+ "libicudata libicuuc libicui18n libicule libiculx libicutu libicuio"
diff --git a/packages/images/console-mipv6-image.bb b/packages/images/console-mipv6-image.bb
new file mode 100644
index 0000000000..3c9995cf2e
--- /dev/null
+++ b/packages/images/console-mipv6-image.bb
@@ -0,0 +1,7 @@
+# This image is for testing the ipv6 mobility extensions
+
+require console-image.bb
+IMAGE_INSTALL += " task-mipl "
+
+export IMAGE_BASENAME = "console-mobile-ipv6-image"
+
diff --git a/packages/images/devimage-image.bb b/packages/images/devimage-image.bb
index 6a3e60c5e3..cecd98d644 100644
--- a/packages/images/devimage-image.bb
+++ b/packages/images/devimage-image.bb
@@ -3,12 +3,8 @@
# only shell and dropbear are loaded by default.
# Allows to login via serial and real console or SSH
-DEVIMAGE_EXTRA_RDEPENDS ?= ""
-IMAGE_INSTALL = "devimage busybox dropbear udev \
- module-init-tools pcmciautils \
- wireless-tools wpa-supplicant \
- irda-utils acx-firmware \
- ${DEVIMAGE_EXTRA_RDEPENDS}"
+DEPENDS = "task-devimage"
+IMAGE_INSTALL = "task-devimage"
export IMAGE_BASENAME = "devimage"
IMAGE_LINGUAS = ""
diff --git a/packages/images/essential-image.bb b/packages/images/essential-image.bb
deleted file mode 100644
index 8b566af6ec..0000000000
--- a/packages/images/essential-image.bb
+++ /dev/null
@@ -1,15 +0,0 @@
-#
-# Copyright Matthias Hentges <devel@hentges.net> (c) 2006
-# License: MIT (see COPYING.MIT)
-#
-# Filename: essential-image.bb
-# Date: 23-Apr-06
-
-HOMEPAGE = "http://www.hentges.net/misc/openzaurus/index.shtml"
-
-DEPENDS = "task-essential-to-boot"
-IMAGE_LINGUAS = ""
-IMAGE_INSTALL = "task-essential-to-boot"
-
-inherit image
-
diff --git a/packages/images/essential-machine-image.bb b/packages/images/essential-machine-image.bb
deleted file mode 100644
index b74dec5e35..0000000000
--- a/packages/images/essential-machine-image.bb
+++ /dev/null
@@ -1,23 +0,0 @@
-#
-# Copyright Matthias Hentges <devel@hentges.net> (c) 2006
-# License: MIT (see COPYING.MIT)
-#
-# Filename: essential-machine-image.bb
-# Date: 24-Apr-06
-
-DESCRIPTION = "<description>"
-HOMEPAGE = "http://www.hentges.net/misc/openzaurus/index.shtml"
-
-DEPENDS = "task-essential-to-boot task-essential-parts"
-
-MACHINE_TASKS_akita = "task-essential-to-boot \
- task-essential-pcmcia task-essential-userspace \
- task-essential-usbhost task-essential-usbclient \
- task-essential-sound task-essential-irda \
- task-essential-sd"
-
-IMAGE_LINGUAS = ""
-IMAGE_INSTALL = "${MACHINE_TASKS}"
-export IMAGE_BASENAME = "essential-image"
-
-inherit image \ No newline at end of file
diff --git a/packages/images/initramfs-bootmenu-image.bb b/packages/images/initramfs-bootmenu-image.bb
new file mode 100644
index 0000000000..a495363661
--- /dev/null
+++ b/packages/images/initramfs-bootmenu-image.bb
@@ -0,0 +1,11 @@
+# Sample initramfs image
+
+IMAGE_INSTALL = "busybox-static initramfs-module-bootmenu"
+IMAGE_LINGUAS = ""
+
+# Remove any kernel-image that the kernel-module-* packages may have pulled in.
+PACKAGE_REMOVE = "kernel-image-* update-modules module-init-tools-depmod uclibc update-rc.d"
+ROOTFS_POSTPROCESS_COMMAND += "ipkg-cl ${IPKG_ARGS} -force-depends \
+ remove ${PACKAGE_REMOVE};"
+
+inherit image
diff --git a/packages/images/nslu2-minimal-image.bb b/packages/images/nslu2-minimal-image.bb
new file mode 100644
index 0000000000..5a601b2995
--- /dev/null
+++ b/packages/images/nslu2-minimal-image.bb
@@ -0,0 +1,14 @@
+# Note that this package is intended to create an *identical*
+# kernel and rootfs as the normal minimal-image.bb
+
+# The only reason for the existence of this .bb file is to
+# create the 8MB and 16MB flashable NSLU2 firmware images.
+
+# Please do not add anything other than the following two
+# lines to this file, and please do not do anything in
+# the nslu2-image.bb class which might affect the kernel
+# or rootfs.
+
+require minimal-image.bb
+
+inherit nslu2-image
diff --git a/packages/images/slugos-image.bb b/packages/images/slugos-image.bb
index 9f6a2aaa4f..fb1b372735 100644
--- a/packages/images/slugos-image.bb
+++ b/packages/images/slugos-image.bb
@@ -32,4 +32,4 @@ SLUGOS_DEVICE_TABLE = "${@bb.which(bb.data.getVar('BBPATH', d, 1), 'files/device
IMAGE_PREPROCESS_COMMAND += "rm ${IMAGE_ROOTFS}/boot/zImage*;"
IMAGE_PREPROCESS_COMMAND += "install -c -m 644 ${SLUGOS_DEVICE_TABLE} ${IMAGE_ROOTFS}/etc/device_table;"
-inherit image nslu2-image dsmg600-image nas100d-image
+inherit image nslu2-image
diff --git a/packages/initrdscripts/files/10-initfs.sh b/packages/initrdscripts/files/10-initfs.sh
new file mode 100644
index 0000000000..bad649e5c2
--- /dev/null
+++ b/packages/initrdscripts/files/10-initfs.sh
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+modprobe -q vfat >/dev/null 2>&1
+modprobe -q ext2 >/dev/null 2>&1
+modprobe -q ext3 >/dev/null 2>&1
diff --git a/packages/initrdscripts/files/30-bootmenu.sh b/packages/initrdscripts/files/30-bootmenu.sh
new file mode 100644
index 0000000000..1bb53d20a3
--- /dev/null
+++ b/packages/initrdscripts/files/30-bootmenu.sh
@@ -0,0 +1,160 @@
+#
+# (c) 2007 Paul Sokolovsky
+#
+
+# If root is explicitly specified, skip interactive selection
+if [ -z "$ROOT_DEVICE" ]; then
+##############################
+
+E="\033["
+MOUNTLOC="tmp"
+LOOP_IMG_MASK='*.img'
+
+if ! (echo " " | read -n1 foo) >/dev/null 2>&1; then
+ echo "'read' command lacks -n switch support, aborting"
+ exit 1
+fi
+
+mkdir -p $MOUNTLOC
+
+list=""
+
+add_menu_item()
+{
+ if [ -n "$list" ]; then
+ list="$list\n"
+ fi
+
+ list="$list$1"
+}
+
+show_menu() {
+ echo -e -n "${E}3;0H"
+ cnt=0
+ echo -e $list | \
+ while read l; do
+ if [ $cnt == $num ]; then
+ echo -e -n "${E}1m"
+ fi
+ echo -e "$cnt: $l${E}0m"
+ cnt=$((cnt + 1))
+ done
+}
+
+get_menu_selection()
+{
+ cnt=0
+ sel=`echo -e $list | \
+ while read l; do
+ if [ $cnt == $num ]; then
+ echo $l
+ break
+ fi
+ cnt=$((cnt + 1))
+ done`
+}
+
+get_partition_type()
+{
+# fstype=`mount -f --guess-fstype /dev/$dev $MOUNTLOC`
+ fstype=`fstype </dev/$dev`
+ fstype=`expr "$fstype" : 'FSTYPE=\([A-Za-z0-9]*\).*'`
+}
+
+scan_for_loopimgs()
+{
+# Scan a device for loopback images, add to the list if found
+ mount /dev/$dev $MOUNTLOC
+ p=$PWD
+ cd $MOUNTLOC
+ for img in `ls -1 $LOOP_IMG_MASK 2>/dev/null`; do
+ add_menu_item "$dev/$img (loop img on vfat)"
+ done
+ cd $p
+ umount $MOUNTLOC
+}
+
+# Scan all available device/partitions
+while read maj min nblk dev; do
+ if [ -z "$maj" -o "$maj" == "major" ]; then
+ continue;
+ fi
+
+ get_partition_type
+ if [ "$fstype" != "ext2" -a "$fstype" != "ext3" -a "$fstype" != "vfat" ]; then
+# continue
+ true
+ fi
+
+ if [ "$fstype" == "vfat" ]; then
+ scan_for_loopimgs
+ continue
+ fi
+
+ add_menu_item "$dev ($fstype)"
+done < /proc/partitions
+
+add_menu_item "NFS (nfsroot=192.168.2.200:/nfs/image)"
+
+total=`echo -e $list | wc -l`
+num=0
+
+# Draw UI
+stty -echo
+echo -e -n "${E}2J"
+echo -e -n "${E}0;0H"
+echo "Select boot image:"
+
+# Main loop
+show_menu
+while read -n1 i; do
+ case "$i" in
+ "A")
+ num=$((num - 1))
+ if [ $num -lt 0 ]; then
+ num=$(($total - 1))
+ fi
+ ;;
+ ["B"-"Z"])
+ num=$((num + 1))
+ if [ $num -ge $total ]; then
+ num=0
+ fi
+ ;;
+ "q")
+ exec sh
+ ;;
+ "")
+ break
+ ;;
+ esac
+ show_menu
+# echo "*$esc$i"
+done
+
+stty echo
+
+# Process results of user selection, prepare input arguments
+# for boot modules
+
+get_menu_selection
+echo Selected: $sel
+
+dev=`expr "$sel" : '\([^ /]*\)'`
+path=`expr "$sel" : '[^/]*\([^ ]*\).*'`
+
+if [ "$dev" == "NFS" ]; then
+ ROOT_DEVICE="/dev/nfs"
+ CMDLINE="$CMDLINE nfsroot=192.168.2.200:/nfs/image"
+elif [ -n "$path" ]; then
+ ROOT_DEVICE="/dev/loop"
+ CMDLINE="looproot=/dev/$dev:$path"
+else
+ ROOT_DEVICE="/dev/$dev"
+fi
+
+echo ROOT_DEVICE=$ROOT_DEVICE
+echo CMDLINE=$CMDLINE
+
+##############################
+fi
diff --git a/packages/initrdscripts/files/loopboot.sh b/packages/initrdscripts/files/80-loopboot.sh
index 55a1948db8..d84244428e 100644
--- a/packages/initrdscripts/files/loopboot.sh
+++ b/packages/initrdscripts/files/80-loopboot.sh
@@ -21,11 +21,10 @@ if [ "$ROOT_DEVICE" = "/dev/loop" ]; then
echo "Mounting $dev on $hostpt"
mkdir $hostpt
mount $dev $hostpt
- cd $hostpt
fi
echo "Loopback setup of $path (offset $offset)"
- losetup -o "$offset" "$loopdev" "$path"
+ losetup -o "$offset" "$loopdev" "$hostpt/$path"
echo "Mounting $loopdev on $mountpt"
mkdir "$mountpt"
@@ -35,7 +34,6 @@ if [ "$ROOT_DEVICE" = "/dev/loop" ]; then
loop_num=`expr "$loop_num" + 1`
}
- modprobe vfat
modprobe loop
loop_num=0
diff --git a/packages/initrdscripts/files/nfsboot.sh b/packages/initrdscripts/files/80-nfsboot.sh
index 5129a53ebb..5129a53ebb 100644
--- a/packages/initrdscripts/files/nfsboot.sh
+++ b/packages/initrdscripts/files/80-nfsboot.sh
diff --git a/packages/initrdscripts/files/blockboot.sh b/packages/initrdscripts/files/85-blockboot.sh
index 567f7e29b3..567f7e29b3 100644
--- a/packages/initrdscripts/files/blockboot.sh
+++ b/packages/initrdscripts/files/85-blockboot.sh
diff --git a/packages/initrdscripts/files/init.sh b/packages/initrdscripts/files/init.sh
index 8c9803f21b..f8d5de9173 100644
--- a/packages/initrdscripts/files/init.sh
+++ b/packages/initrdscripts/files/init.sh
@@ -2,14 +2,17 @@
MODULE_DIR=/initrd.d
BOOT_ROOT=
-ROOT_DEVICE=/dev/null
+ROOT_DEVICE=
early_setup() {
mkdir /proc
mount -t proc proc /proc
mkdir /mnt
+}
- echo -n "creating device nodes: "
+dev_setup()
+{
+ echo -n "initramfs: Creating device nodes: "
grep '^ *[0-9]' /proc/partitions | while read major minor blocks dev
do
if [ ! -e /dev/$dev ]; then
@@ -35,6 +38,7 @@ read_args() {
load_modules() {
for module in $MODULE_DIR/*; do
+ echo "initramfs: Loading $module module"
source $module
done
}
@@ -60,6 +64,8 @@ if [ -n "$rootdelay" ]; then
sleep $rootdelay
fi
+dev_setup
+
load_modules
[ -n "$BOOT_ROOT" ] && boot_root
boot_failed
diff --git a/packages/initrdscripts/initramfs-jffs2_0.1.bb b/packages/initrdscripts/initramfs-jffs2_0.1.bb
index 3e11465536..f938b9d3b1 100644
--- a/packages/initrdscripts/initramfs-jffs2_0.1.bb
+++ b/packages/initrdscripts/initramfs-jffs2_0.1.bb
@@ -1,8 +1,9 @@
SRC_URI = "file://jffs2boot.sh"
-PR = "r1"
+PR = "r2"
do_install() {
install -m 0755 ${WORKDIR}/jffs2boot.sh ${D}/init
}
+PACKAGE_ARCH = "all"
FILES_${PN} += " /init "
diff --git a/packages/initrdscripts/initramfs-module-block_0.1.bb b/packages/initrdscripts/initramfs-module-block_0.1.bb
deleted file mode 100644
index a0cb2fd7fa..0000000000
--- a/packages/initrdscripts/initramfs-module-block_0.1.bb
+++ /dev/null
@@ -1,11 +0,0 @@
-SRC_URI = "file://blockboot.sh"
-PR = "r2"
-RDEPENDS = "initramfs-uniboot"
-DESCRIPTION = "An initramfs module for booting off normal block devices."
-
-do_install() {
- install -d ${D}/initrd.d
- install -m 0755 ${WORKDIR}/blockboot.sh ${D}/initrd.d/block
-}
-
-FILES_${PN} += " /initrd.d/block "
diff --git a/packages/initrdscripts/initramfs-module-block_1.0.bb b/packages/initrdscripts/initramfs-module-block_1.0.bb
new file mode 100644
index 0000000000..72812a2490
--- /dev/null
+++ b/packages/initrdscripts/initramfs-module-block_1.0.bb
@@ -0,0 +1,12 @@
+SRC_URI = "file://85-blockboot.sh"
+PR = "r1"
+RDEPENDS = "initramfs-uniboot"
+DESCRIPTION = "An initramfs module for booting off normal block devices."
+
+do_install() {
+ install -d ${D}/initrd.d
+ install -m 0755 ${WORKDIR}/85-blockboot.sh ${D}/initrd.d/
+}
+
+PACKAGE_ARCH = "all"
+FILES_${PN} += " /initrd.d/* "
diff --git a/packages/initrdscripts/initramfs-module-bootmenu_1.0.bb b/packages/initrdscripts/initramfs-module-bootmenu_1.0.bb
new file mode 100644
index 0000000000..002acff0a9
--- /dev/null
+++ b/packages/initrdscripts/initramfs-module-bootmenu_1.0.bb
@@ -0,0 +1,12 @@
+SRC_URI = "file://30-bootmenu.sh"
+PR = "r3"
+RDEPENDS = "klibc-utils-fstype initramfs-uniboot initramfs-module-block initramfs-module-loop"
+DESCRIPTION = "An initramfs module with UI for selection of boot device."
+
+do_install() {
+ install -d ${D}/initrd.d
+ install -m 0755 ${WORKDIR}/30-bootmenu.sh ${D}/initrd.d/
+}
+
+PACKAGE_ARCH = "all"
+FILES_${PN} += " /initrd.d/* "
diff --git a/packages/initrdscripts/initramfs-module-initfs_1.0.bb b/packages/initrdscripts/initramfs-module-initfs_1.0.bb
new file mode 100644
index 0000000000..64bba4a304
--- /dev/null
+++ b/packages/initrdscripts/initramfs-module-initfs_1.0.bb
@@ -0,0 +1,13 @@
+SRC_URI = "file://10-initfs.sh"
+PR = "r2"
+DESCRIPTION = "An initramfs module for initializing filesystems."
+RDEPENDS = "initramfs-uniboot"
+RRECOMMENDS = "kernel-module-vfat kernel-module-ext2"
+
+do_install() {
+ install -d ${D}/initrd.d
+ install -m 0755 ${WORKDIR}/10-initfs.sh ${D}/initrd.d/
+}
+
+PACKAGE_ARCH = "all"
+FILES_${PN} += " /initrd.d/* "
diff --git a/packages/initrdscripts/initramfs-module-loop_0.1.bb b/packages/initrdscripts/initramfs-module-loop_0.1.bb
deleted file mode 100644
index d4e5aa038f..0000000000
--- a/packages/initrdscripts/initramfs-module-loop_0.1.bb
+++ /dev/null
@@ -1,13 +0,0 @@
-SRC_URI = "file://loopboot.sh"
-PR = "r3"
-DESCRIPTION = "An initramfs module for booting a filesystem image by loopback \
- mounting it."
-RDEPENDS = "initramfs-uniboot"
-RRECOMMENDS = "kernel-module-loop kernel-module-vfat"
-
-do_install() {
- install -d ${D}/initrd.d
- install -m 0755 ${WORKDIR}/loopboot.sh ${D}/initrd.d/loop
-}
-
-FILES_${PN} += " /initrd.d/loop "
diff --git a/packages/initrdscripts/initramfs-module-loop_1.0.bb b/packages/initrdscripts/initramfs-module-loop_1.0.bb
new file mode 100644
index 0000000000..1a2d0a9754
--- /dev/null
+++ b/packages/initrdscripts/initramfs-module-loop_1.0.bb
@@ -0,0 +1,14 @@
+SRC_URI = "file://80-loopboot.sh"
+PR = "r2"
+DESCRIPTION = "An initramfs module for booting a filesystem image by loopback \
+ mounting it."
+RDEPENDS = "initramfs-uniboot initramfs-module-initfs"
+RRECOMMENDS = "kernel-module-loop kernel-module-vfat"
+
+do_install() {
+ install -d ${D}/initrd.d
+ install -m 0755 ${WORKDIR}/80-loopboot.sh ${D}/initrd.d/
+}
+
+PACKAGE_ARCH = "all"
+FILES_${PN} += " /initrd.d/* "
diff --git a/packages/initrdscripts/initramfs-module-nfs_0.1.bb b/packages/initrdscripts/initramfs-module-nfs_1.0.bb
index 24284d6c5f..acf71adb92 100644
--- a/packages/initrdscripts/initramfs-module-nfs_0.1.bb
+++ b/packages/initrdscripts/initramfs-module-nfs_1.0.bb
@@ -1,12 +1,13 @@
-SRC_URI = "file://nfsboot.sh"
-PR = "r4"
+SRC_URI = "file://80-nfsboot.sh"
+PR = "r1"
DESCRIPTION = "An initramfs module for booting via NFS."
RDEPENDS = "initramfs-uniboot"
RRECOMMENDS = "kernel-module-g-ether kernel-module-nfs"
do_install() {
install -d ${D}/initrd.d
- install -m 0755 ${WORKDIR}/nfsboot.sh ${D}/initrd.d/nfs
+ install -m 0755 ${WORKDIR}/80-nfsboot.sh ${D}/initrd.d/
}
+PACKAGE_ARCH = "all"
FILES_${PN} += " /initrd.d/nfs "
diff --git a/packages/initrdscripts/initramfs-uniboot_0.2.bb b/packages/initrdscripts/initramfs-uniboot_1.0.bb
index 46ba06ff9a..167ce71ffe 100644
--- a/packages/initrdscripts/initramfs-uniboot_0.2.bb
+++ b/packages/initrdscripts/initramfs-uniboot_1.0.bb
@@ -1,11 +1,10 @@
SRC_URI = "file://init.sh"
-PR = "r1"
+PR = "r2"
DESCRIPTON = "A modular initramfs init script system."
-RDEPENDS = "busybox-static"
-RRECOMMENDS = "kernel-module-uinput"
do_install() {
install -m 0755 ${WORKDIR}/init.sh ${D}/init
}
+PACKAGE_ARCH = "all"
FILES_${PN} += " /init "
diff --git a/packages/initscripts/initscripts-1.0/slugos/bootclean.sh b/packages/initscripts/initscripts-1.0/slugos/bootclean.sh
new file mode 100644
index 0000000000..1304cb3794
--- /dev/null
+++ b/packages/initscripts/initscripts-1.0/slugos/bootclean.sh
@@ -0,0 +1,47 @@
+#!/bin/sh
+#
+# bootclean.sh - Cleans out /tmp, /var/run, and /var/lock
+# This script should run after mountall.sh in runlevel S.
+#
+# This script relies upon find and xargs, and is largely
+# based on the equivalent script in the Debian releases.
+
+. /etc/default/rcS
+
+# Completely clean out everything in /tmp, but do not walk into
+# anything that might be mounted beneath /tmp. If /tmp is not
+# a directory, ignore this (it's probably a symlink to
+# /var/volatiles/tmp, and we best leave it alone).
+
+if [ -d /tmp -a ! -L /tmp ] ; then
+ echo "bootclean.sh: Cleaning /tmp..."
+ cd /tmp || { echo "bootclean.sh: unable to cd to /tmp." ; return 1 ; }
+ find . -depth -xdev ! -type d -print0 | xargs -0r rm -f --
+ find . -depth -xdev -type d ! -name . -empty -exec rmdir \{\} \;
+else
+ echo "bootclean.sh: Skipping /tmp (not a directory)..."
+fi
+
+# Now clean out /var/lock.
+
+if [ -d /var/lock -a ! -L /var/lock ] ; then
+ echo "bootclean.sh: Cleaning /var/lock..."
+ cd /var/lock || { echo "bootclean.sh: unable to cd to /var/lock." ; return 1 ; }
+ find . -xdev ! -type d -print0 | xargs -0r rm -f --
+else
+ echo "bootclean.sh: Skipping /var/lock (not a directory)..."
+fi
+
+# Now clean out /var/run.
+
+if [ -d /var/run -a ! -L /var/run ] ; then
+ echo "bootclean.sh: Cleaning /var/run..."
+ cd /var/run || { echo "bootclean.sh: unable to cd to /var/run." ; return 1 ; }
+ find . -xdev ! -type d ! -name utmp -print0 | xargs -0r rm -f --
+else
+ echo "bootclean.sh: Skipping /var/run (not a directory)..."
+fi
+
+# done.
+
+exit 0
diff --git a/packages/initscripts/initscripts-1.0/slugos/volatiles b/packages/initscripts/initscripts-1.0/slugos/volatiles
new file mode 100644
index 0000000000..3c680b2643
--- /dev/null
+++ b/packages/initscripts/initscripts-1.0/slugos/volatiles
@@ -0,0 +1,36 @@
+# This configuration file lists filesystem objects that should get verified
+# during startup and be created if missing.
+#
+# Every line must either be a comment starting with #
+# or a definition of format:
+# <type> <owner> <group> <mode> <path> <linksource>
+# where the items are separated by whitespace !
+#
+# <type> : d|f|l : (d)irectory|(f)ile|(l)ink
+#
+# A linking example:
+# l root root 0777 /var/test /tmp/testfile
+# f root root 0644 /var/test none
+#
+# Understanding links:
+# When populate-volatile is to verify/create a directory or file, it will first
+# check it's existence. If a link is found to exist in the place of the target,
+# the path of the target is replaced with the target the link points to.
+# Thus, if a link is in the place to be verified, the object will be created
+# in the place the link points to instead.
+# This explains the order of "link before object" as in the example above, where
+# a link will be created at /var/test pointing to /tmp/testfile and due to this
+# link the file defined as /var/test will actually be created as /tmp/testfile.
+d root root 0755 /var/volatile/cache none
+d root root 1777 /var/volatile/lock none
+d root root 0755 /var/volatile/log none
+d root root 0755 /var/volatile/run none
+d root root 1777 /var/volatile/tmp none
+l root root 0755 /var/cache /var/volatile/cache
+l root root 1777 /var/lock /var/volatile/lock
+l root root 0755 /var/log /var/volatile/log
+l root root 0755 /var/run /var/volatile/run
+l root root 1777 /var/tmp /var/volatile/tmp
+d root root 0755 /var/lock/subsys none
+f root root 0664 /var/log/wtmp none
+f root root 0664 /var/run/utmp none
diff --git a/packages/initscripts/initscripts-1.0/volatiles b/packages/initscripts/initscripts-1.0/volatiles
index 3c680b2643..b2ae2794dc 100644
--- a/packages/initscripts/initscripts-1.0/volatiles
+++ b/packages/initscripts/initscripts-1.0/volatiles
@@ -34,3 +34,6 @@ l root root 1777 /var/tmp /var/volatile/tmp
d root root 0755 /var/lock/subsys none
f root root 0664 /var/log/wtmp none
f root root 0664 /var/run/utmp none
+l root root 0644 /etc/resolv.conf /var/run/resolv.conf
+f root root 0644 /var/run/resolv.conf none
+
diff --git a/packages/initscripts/initscripts-slugos_1.0.bb b/packages/initscripts/initscripts-slugos_1.0.bb
index ed5f37f348..76d88f4627 100644
--- a/packages/initscripts/initscripts-slugos_1.0.bb
+++ b/packages/initscripts/initscripts-slugos_1.0.bb
@@ -10,7 +10,7 @@ RCONFLICTS = "initscripts"
# All other standard definitions inherited from initscripts
# Except the PR which is hacked here. The format used is
# a suffix
-PR := "${PR}.11"
+PR := "${PR}.12"
FILESPATH = "${@base_set_filespath([ '${FILE_DIRNAME}/${P}', '${FILE_DIRNAME}/initscripts-${PV}', '${FILE_DIRNAME}/files', '${FILE_DIRNAME}' ], d)}"
@@ -19,6 +19,7 @@ PACKAGES = "${PN}"
SRC_URI += "file://alignment.sh"
SRC_URI += "file://domainname.sh"
SRC_URI += "file://devices.patch;patch=1"
+SRC_URI += "file://bootclean.sh"
# Without this it is not possible to patch checkroot.sh
S = "${WORKDIR}"
@@ -30,6 +31,7 @@ do_install_append() {
# slugos specific scripts
install -m 0755 ${WORKDIR}/alignment.sh ${D}${sysconfdir}/init.d
install -m 0755 ${WORKDIR}/domainname.sh ${D}${sysconfdir}/init.d
+ install -m 0755 ${WORKDIR}/bootclean.sh ${D}${sysconfdir}/init.d
# Remove the do install links (this detects a change to the
# initscripts .bb file - it will cause a build failure here.)
@@ -103,6 +105,8 @@ do_install_append() {
# checkfs.sh is currently disabled from S 30 (and won't work on SlugOS)
# ramdisk is not used on SlugOS, would run at S 30
update-rc.d -r ${D} mountall.sh start 35 S .
+ # bootclean must run after mountall but before populate-volatile
+ update-rc.d -r ${D} bootclean.sh start 36 S .
# base-files populate-volatile.sh runs at S37
update-rc.d -r ${D} devpts.sh start 38 S .
# slugos file syslog starts here (39)
diff --git a/packages/initscripts/initscripts_1.0.bb b/packages/initscripts/initscripts_1.0.bb
index bcc3aa2c35..7fab41858b 100644
--- a/packages/initscripts/initscripts_1.0.bb
+++ b/packages/initscripts/initscripts_1.0.bb
@@ -4,7 +4,7 @@ PRIORITY = "required"
DEPENDS = "makedevs"
RDEPENDS = "makedevs"
LICENSE = "GPL"
-PR = "r102"
+PR = "r103"
SRC_URI = "file://functions \
file://halt \
diff --git a/packages/tinymail/libtinymail-0.0.3/.mtn2git_empty b/packages/inotify-tools/files/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/tinymail/libtinymail-0.0.3/.mtn2git_empty
+++ b/packages/inotify-tools/files/.mtn2git_empty
diff --git a/packages/inotify-tools/files/no-tests.patch b/packages/inotify-tools/files/no-tests.patch
new file mode 100644
index 0000000000..0df45c0e72
--- /dev/null
+++ b/packages/inotify-tools/files/no-tests.patch
@@ -0,0 +1,31 @@
+Index: inotify-tools-3.12/configure.ac
+===================================================================
+--- inotify-tools-3.12.orig/configure.ac 2007-11-26 22:23:15.000000000 +0100
++++ inotify-tools-3.12/configure.ac 2007-11-26 22:23:29.000000000 +0100
+@@ -42,16 +42,16 @@
+
+
+ # Checks for header files.
+-AC_CHECK_HEADERS([sys/inotify.h mcheck.h])
+-AC_LANG(C)
+-AC_MSG_CHECKING([whether sys/inotify.h actually works])
+-AC_RUN_IFELSE(
+- AC_LANG_PROGRAM([[#include <sys/inotify.h>]],
+- [[return (-1 == inotify_init());]]
+- ),
+- [AC_MSG_RESULT([yup]); AC_DEFINE([SYS_INOTIFY_H_EXISTS_AND_WORKS],[1],[sys/inotify.h exists and works correctly])],
+- [AC_MSG_RESULT([nope, using own inotify headers])]
+-)
++#AC_CHECK_HEADERS([sys/inotify.h mcheck.h])
++#AC_LANG(C)
++#AC_MSG_CHECKING([whether sys/inotify.h actually works])
++#AC_RUN_IFELSE(
++# AC_LANG_PROGRAM([[#include <sys/inotify.h>]],
++# [[return (-1 == inotify_init());]]
++# ),
++# [AC_MSG_RESULT([yup]); AC_DEFINE([SYS_INOTIFY_H_EXISTS_AND_WORKS],[1],[sys/inotify.h exists and works correctly])],
++# [AC_MSG_RESULT([nope, using own inotify headers])]
++#)
+
+
+
diff --git a/packages/inotify-tools/inotify-tools_3.12.bb b/packages/inotify-tools/inotify-tools_3.12.bb
new file mode 100644
index 0000000000..2ec511409e
--- /dev/null
+++ b/packages/inotify-tools/inotify-tools_3.12.bb
@@ -0,0 +1,14 @@
+DESCRIPTION = "inotify-tools is a set of command line utilities for the \
+Linux inotify filesystem change notification system."
+LICENSE = "GPL"
+AUTHOR = "Rohan McGovern"
+HOMEPAGE = "http://inotify-tools.sourceforge.net/"
+PR = "r0"
+
+EXTRA_OECONF = "--disable-doxygen"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/inotify-tools/inotify-tools-3.12.tar.gz \
+file://no-tests.patch;patch=1"
+
+inherit autotools
+
diff --git a/packages/ipkg-utils/ipkg-utils-native_1.6+cvs20050404.bb b/packages/ipkg-utils/ipkg-utils-native_1.6+cvs20050404.bb
index b63bc67af7..23d73ebae6 100644
--- a/packages/ipkg-utils/ipkg-utils-native_1.6+cvs20050404.bb
+++ b/packages/ipkg-utils/ipkg-utils-native_1.6+cvs20050404.bb
@@ -1,14 +1,14 @@
require ipkg-utils_${PV}.bb
RDEPENDS = ""
-PR = "r14"
+PR = "r15"
inherit native
# Avoid circular dependencies from package_ipk.bbclass
PACKAGES = ""
FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/ipkg-utils"
-INSTALL += "arfile.py"
+INSTALL += "ipkg-list-fields arfile.py"
do_stage() {
for i in ${INSTALL}; do
diff --git a/packages/ipkg-utils/ipkg-utils_1.6+cvs20050404.bb b/packages/ipkg-utils/ipkg-utils_1.6+cvs20050404.bb
index 51f5d7f835..c089796ccb 100644
--- a/packages/ipkg-utils/ipkg-utils_1.6+cvs20050404.bb
+++ b/packages/ipkg-utils/ipkg-utils_1.6+cvs20050404.bb
@@ -5,19 +5,18 @@ LICENSE = "GPL"
CONFLICTS = "ipkg-link"
RDEPENDS = "python"
SRCDATE = "20050404"
-PR = "r16"
+PR = "r17"
SRC_URI = "${HANDHELDS_CVS};module=ipkg-utils \
file://ipkg-utils-fix.patch;patch=1 \
file://ipkg-py-sane-vercompare.patch;patch=1 \
file://ipkg-py-tarfile.patch;patch=1 \
file://ipkg-make-index-track-stamps.patch;patch=1 \
- file://fields_tweaks.patch;patch=1 \
- "
+ file://fields_tweaks.patch;patch=1 "
S = "${WORKDIR}/ipkg-utils"
-INSTALL = "ipkg-build ipkg-deb-unbuild ipkg-unbuild ipkg-compare-versions ipkg-upload ipkg-make-index ipkg-link ipkg.py"
+INSTALL = "ipkg-build ipkg-deb-unbuild ipkg-unbuild ipkg-compare-versions ipkg-upload ipkg-make-index ipkg-link ipkg.py ipkg-list-fields"
do_compile() {
oe_runmake ipkg-compare-versions
diff --git a/packages/ipkg/files/ipkg-configure b/packages/ipkg/files/ipkg-configure
new file mode 100644
index 0000000000..e0c65ad4e2
--- /dev/null
+++ b/packages/ipkg/files/ipkg-configure
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+echo "Starting to configure packages..."
+ipkg-cl configure
+echo "Finished to configure packages."
diff --git a/packages/ipkg/files/ipkg_bugfix.patch b/packages/ipkg/files/ipkg_bugfix.patch
new file mode 100644
index 0000000000..51eccbb2bd
--- /dev/null
+++ b/packages/ipkg/files/ipkg_bugfix.patch
@@ -0,0 +1,44 @@
+Index: C/ipkg_conf.c
+===================================================================
+--- C.orig/ipkg_conf.c 2005-06-21 13:59:32.000000000 +0000
++++ C/ipkg_conf.c 2007-11-27 01:11:17.000000000 +0000
+@@ -423,6 +423,7 @@
+ nv_pair_t *nv_pair;
+ pkg_dest_t *dest;
+ char *root_dir;
++ char *list_dir2;
+
+ for (iter = nv_pair_list->head; iter; iter = iter->next) {
+ nv_pair = iter->data;
+@@ -432,8 +433,14 @@
+ } else {
+ root_dir = strdup(nv_pair->value);
+ }
+- dest = pkg_dest_list_append(&conf->pkg_dest_list, nv_pair->name, root_dir, lists_dir);
++ if (conf->offline_root) {
++ sprintf_alloc(&list_dir2, "%s%s", conf->offline_root, lists_dir);
++ } else {
++ list_dir2 = strdup(lists_dir);
++ }
++ dest = pkg_dest_list_append(&conf->pkg_dest_list, nv_pair->name, root_dir, list_dir2);
+ free(root_dir);
++ free(list_dir2);
+ if (dest == NULL) {
+ continue;
+ }
+@@ -562,13 +569,13 @@
+ } else if (strcmp(type, "dest") == 0) {
+ nv_pair_list_append(tmp_dest_nv_pair_list, name, value);
+ } else if (strcmp(type, "lists_dir") == 0) {
+- *lists_dir = realloc(*lists_dir,strlen(value)+1);
++ *lists_dir = realloc(*lists_dir,strlen(name)+1);
+ if (*lists_dir == NULL) {
+ ipkg_message(conf, IPKG_ERROR, "ERROR: Not enough memory\n");
+ free(options);
+ return EINVAL;
+ }
+- sprintf (*lists_dir,"%s",value);
++ sprintf (*lists_dir,"%s", name);
+ } else if (strcmp(type, "arch") == 0) {
+ ipkg_message(conf, IPKG_INFO, "supported arch %s priority (%s)\n", name, value);
+ if (!value) {
diff --git a/packages/ipkg/ipkg-native_0.99.163.bb b/packages/ipkg/ipkg-native_0.99.163.bb
index 13609c9037..c8e7d08588 100644
--- a/packages/ipkg/ipkg-native_0.99.163.bb
+++ b/packages/ipkg/ipkg-native_0.99.163.bb
@@ -2,7 +2,7 @@ S = "${WORKDIR}/ipkg-${PV}"
#require ipkg_${PV}.bb
require ipkg-native.inc
-PR = "r2"
+PR = "r3"
inherit autotools pkgconfig native
@@ -10,5 +10,6 @@ SRC_URI = "http://www.handhelds.org/pub/packages/ipkg/ipkg-${PV}.tar.gz \
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 \
+ file://ipkg_bugfix.patch;patch=1 \
"
diff --git a/packages/ipkg/ipkg.inc b/packages/ipkg/ipkg.inc
index b1e2f19267..9154572f08 100644
--- a/packages/ipkg/ipkg.inc
+++ b/packages/ipkg/ipkg.inc
@@ -10,28 +10,24 @@ 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://ipkg-configure \
file://terse.patch;patch=1"
S = "${WORKDIR}/ipkg/C"
-inherit autotools pkgconfig
+inherit autotools pkgconfig update-rc.d
# Define a variable to allow distros to run configure earlier.
# (for example, to enable loading of ethernet kernel modules before networking starts)
IPKG_INIT_POSITION = "98"
IPKG_INIT_POSITION_slugos = "41"
+INITSCRIPT_NAME = "ipkg-configure"
+INITSCRIPT_PARAMS = "start ${IPKG_INIT_POSITION} S ."
+
+
pkg_postinst_ipkg () {
#!/bin/sh
-if [ "x$D" != "x" ]; then
- install -d ${IMAGE_ROOTFS}/${sysconfdir}/rcS.d
- # this happens at S98 where our good 'ole packages script used to run
- echo "#!/bin/sh
-ipkg-cl configure
-" > ${IMAGE_ROOTFS}/${sysconfdir}/rcS.d/S${IPKG_INIT_POSITION}configure
- chmod 0755 ${IMAGE_ROOTFS}/${sysconfdir}/rcS.d/S${IPKG_INIT_POSITION}configure
-fi
-
update-alternatives --install ${bindir}/ipkg ipkg ${bindir}/ipkg-cl 100
}
@@ -40,6 +36,11 @@ pkg_postrm_ipkg () {
update-alternatives --remove ipkg ${bindir}/ipkg-cl
}
+do_install_append() {
+ install -d ${D}${sysconfdir}/init.d
+ install -m 0755 ${WORKDIR}/${INITSCRIPT_NAME} ${D}${sysconfdir}/init.d/
+}
+
do_stage() {
oe_libinstall -so libipkg ${STAGING_LIBDIR}
install -d ${STAGING_INCDIR}/replace/
diff --git a/packages/ipkg/ipkg_0.99.163.bb b/packages/ipkg/ipkg_0.99.163.bb
index 56e25900c1..fccfe8d53f 100644
--- a/packages/ipkg/ipkg_0.99.163.bb
+++ b/packages/ipkg/ipkg_0.99.163.bb
@@ -1,9 +1,10 @@
include ipkg.inc
-PR = "r5"
+PR = "r6"
S = "${WORKDIR}/ipkg-${PV}"
SRC_URI = "http://www.handhelds.org/pub/packages/ipkg/ipkg-${PV}.tar.gz \
+ file://ipkg-configure \
file://terse.patch;patch=1 \
file://is-processing.patch;patch=1 \
file://1-pkg-parse--Optimize-inefficient-parsing.patch;patch=1 \
diff --git a/packages/ipkg/ipkgorphan_0.0.1.bb b/packages/ipkg/ipkgorphan_0.0.1.bb
new file mode 100644
index 0000000000..686f0eb5ee
--- /dev/null
+++ b/packages/ipkg/ipkgorphan_0.0.1.bb
@@ -0,0 +1,18 @@
+DESCRIPTION = "ipkg orphan package list"
+AUTHOR = "Alessandro Iurlano <alessandro.iurlano@gmail.com>"
+HOMEPAGE = "aiurlano.netsons.org"
+SECTION = "console/applications"
+PRIORITY = "optional"
+LICENSE = "GPL"
+DEPENDS = "ipkg"
+PR = "r1"
+
+SRC_URI = "svn://svn.projects.openmoko.org/svnroot/ipkgorphan/ipkgorphan/tags;module=${PV};rev=HEAD;proto=svn"
+S = "${WORKDIR}/${PV}"
+
+LDFLAGS += "-lipkg"
+
+do_install() {
+ install -m 0755 -d ${D}${bindir}
+ install -m 0755 ${S}/ipkgorphan ${D}${bindir}
+}
diff --git a/packages/iptables/files/getsockopt-failed.patch b/packages/iptables/files/getsockopt-failed.patch
new file mode 100644
index 0000000000..bba9bdaafb
--- /dev/null
+++ b/packages/iptables/files/getsockopt-failed.patch
@@ -0,0 +1,28 @@
+This patch fixes an issue where iptables throws the following error:
+"getsockopt failed strangely". This patch is taken from the netfilter
+svn (and it's included in iptable 1.4.0rc1):
+
+http://svn.netfilter.org/cgi-bin/viewcvs.cgi?rev=6890&view=rev
+
+--- iptables/iptables.c 2007/04/30 00:01:39 6815
++++ iptables/iptables.c 2007/06/26 15:29:45 6890
+@@ -1158,7 +1158,7 @@
+ max_rev = getsockopt(sockfd, IPPROTO_IP, opt, &rev, &s);
+ if (max_rev < 0) {
+ /* Definitely don't support this? */
+- if (errno == EPROTONOSUPPORT) {
++ if (errno == ENOENT || errno == EPROTONOSUPPORT) {
+ close(sockfd);
+ return 0;
+ } else if (errno == ENOPROTOOPT) {
+--- iptables/ip6tables.c 2007/06/25 14:55:18 6889
++++ iptables/ip6tables.c 2007/06/26 15:29:45 6890
+@@ -1130,7 +1130,7 @@
+ max_rev = getsockopt(sockfd, IPPROTO_IPV6, opt, &rev, &s);
+ if (max_rev < 0) {
+ /* Definitely don't support this? */
+- if (errno == EPROTONOSUPPORT) {
++ if (errno == ENOENT || errno == EPROTONOSUPPORT) {
+ close(sockfd);
+ return 0;
+ } else if (errno == ENOPROTOOPT) {
diff --git a/packages/iptables/iptables_1.3.8.bb b/packages/iptables/iptables_1.3.8.bb
index eccc1c077a..3b63c478ba 100644
--- a/packages/iptables/iptables_1.3.8.bb
+++ b/packages/iptables/iptables_1.3.8.bb
@@ -3,8 +3,9 @@ HOMEPAGE = "http://www.netfilter.org/"
SECTION = "console/utils"
LICENSE = "GPL"
RRECOMMENDS = "kernel-module-ip-tables kernel-module-iptable-filter"
-PR = "r0"
+PR = "r1"
SRC_URI = "http://netfilter.org/projects/iptables/files/iptables-${PV}.tar.bz2 \
+ file://getsockopt-failed.patch;patch=1 \
"
S = "${WORKDIR}/iptables-${PV}"
diff --git a/packages/keylaunch/files/keylaunchrc b/packages/keylaunch/files/keylaunchrc
deleted file mode 100644
index 0296db9dad..0000000000
--- a/packages/keylaunch/files/keylaunchrc
+++ /dev/null
@@ -1,8 +0,0 @@
-key=????Pressed XF86AudioRecord:gpe-soundbite record --autogenerate-filename $HOME_VOLATILE
-key=????Pressed XF86Calendar:gpe-calendar
-key=????Pressed telephone:gpe-contacts
-key=????Pressed XF86Mail:gpe-taskmanager
-key=????Pressed XF86Start:~matchbox-remote -desktop
-key=????Pressed XF86PowerDown:~apm --suspend
-key=????Held XF86PowerDown:~bl toggle
-key=????Combine XF86Calendar XF86Start:gpe-keylock
diff --git a/packages/keylaunch/files/unbreak-keyevents.patch b/packages/keylaunch/files/unbreak-keyevents.patch
new file mode 100644
index 0000000000..0a2d58b16a
--- /dev/null
+++ b/packages/keylaunch/files/unbreak-keyevents.patch
@@ -0,0 +1,22 @@
+# HG changeset patch
+# User "Paul Sokolovsky <pfalcon@users.sourceforge.net>"
+# Date 1196027570 -7200
+# Node ID 282176e5c55dba673756b4707716f06a5c8b37e2
+# Parent 833c989472a7987681ea3b8cbd6f9eb77293177a
+We of course still want to receive key events even after subscribing to
+property events. This fixes when keylaunch doesn't receive forwarded
+power buttons events from gpe-login --autolock in its locked state.
+In plain words: now power button works with autolock screen.
+
+diff -r 833c989472a7 -r 282176e5c55d keylaunch.c
+--- a/keylaunch.c Sun Nov 25 22:04:29 2007 +0200
++++ b/keylaunch.c Sun Nov 25 23:52:50 2007 +0200
+@@ -682,7 +682,7 @@ main (int argc, char *argv[])
+ {
+ initialize (argc, argv);
+
+- XSelectInput (dpy, DefaultRootWindow (dpy), PropertyChangeMask);
++ XSelectInput (dpy, DefaultRootWindow (dpy), PropertyChangeMask | KeyPressMask | KeyReleaseMask);
+ gpe_launch_monitor_display (dpy);
+
+ signal (SIGCHLD, SIG_IGN);
diff --git a/packages/zaurus-updater/c7x0/.mtn2git_empty b/packages/keylaunch/keylaunch-conf/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/zaurus-updater/c7x0/.mtn2git_empty
+++ b/packages/keylaunch/keylaunch-conf/.mtn2git_empty
diff --git a/packages/keylaunch/files/80chvt-SUID b/packages/keylaunch/keylaunch-conf/80chvt-SUID
index e3b4efef5d..e3b4efef5d 100644
--- a/packages/keylaunch/files/80chvt-SUID
+++ b/packages/keylaunch/keylaunch-conf/80chvt-SUID
diff --git a/packages/zaurus-updater/spitz/.mtn2git_empty b/packages/keylaunch/keylaunch-conf/akita/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/zaurus-updater/spitz/.mtn2git_empty
+++ b/packages/keylaunch/keylaunch-conf/akita/.mtn2git_empty
diff --git a/packages/keylaunch/files/akita/keylaunchrc b/packages/keylaunch/keylaunch-conf/akita/keylaunchrc
index 9bb64db066..9bb64db066 100644
--- a/packages/keylaunch/files/akita/keylaunchrc
+++ b/packages/keylaunch/keylaunch-conf/akita/keylaunchrc
diff --git a/packages/zaurus-updater/tosa/.mtn2git_empty b/packages/keylaunch/keylaunch-conf/c7x0/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/zaurus-updater/tosa/.mtn2git_empty
+++ b/packages/keylaunch/keylaunch-conf/c7x0/.mtn2git_empty
diff --git a/packages/keylaunch/files/c7x0/keylaunchrc b/packages/keylaunch/keylaunch-conf/c7x0/keylaunchrc
index e0b729a508..e0b729a508 100644
--- a/packages/keylaunch/files/c7x0/keylaunchrc
+++ b/packages/keylaunch/keylaunch-conf/c7x0/keylaunchrc
diff --git a/packages/keylaunch/files/collie/keylaunchrc b/packages/keylaunch/keylaunch-conf/collie/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/keylaunch/files/collie/keylaunchrc
+++ b/packages/keylaunch/keylaunch-conf/collie/.mtn2git_empty
diff --git a/packages/keylaunch/keylaunch-conf/collie/keylaunchrc b/packages/keylaunch/keylaunch-conf/collie/keylaunchrc
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/keylaunch/keylaunch-conf/collie/keylaunchrc
diff --git a/packages/keylaunch/keylaunch-conf/corgie/.mtn2git_empty b/packages/keylaunch/keylaunch-conf/corgie/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/keylaunch/keylaunch-conf/corgie/.mtn2git_empty
diff --git a/packages/keylaunch/files/corgie/keylaunchrc b/packages/keylaunch/keylaunch-conf/corgie/keylaunchrc
index e0b729a508..e0b729a508 100644
--- a/packages/keylaunch/files/corgie/keylaunchrc
+++ b/packages/keylaunch/keylaunch-conf/corgie/keylaunchrc
diff --git a/packages/keylaunch/keylaunch-conf/husky/.mtn2git_empty b/packages/keylaunch/keylaunch-conf/husky/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/keylaunch/keylaunch-conf/husky/.mtn2git_empty
diff --git a/packages/keylaunch/files/husky/keylaunchrc b/packages/keylaunch/keylaunch-conf/husky/keylaunchrc
index e0b729a508..e0b729a508 100644
--- a/packages/keylaunch/files/husky/keylaunchrc
+++ b/packages/keylaunch/keylaunch-conf/husky/keylaunchrc
diff --git a/packages/keylaunch/keylaunch-conf/keylaunchrc b/packages/keylaunch/keylaunch-conf/keylaunchrc
new file mode 100644
index 0000000000..c84fa25137
--- /dev/null
+++ b/packages/keylaunch/keylaunch-conf/keylaunchrc
@@ -0,0 +1,31 @@
+# Format:
+# "key=" <ModState> [<Event>] <Keysym>+ ":" [ <Window> ":" ] <Command>
+# ModState:
+# "????" - any modifier (don't care)
+# "...." - no modifer
+# "*..." - Shift
+# ".*.." - Control
+# "..*." - Alt
+# "...*" - AltGr
+# Shift/Control/Alt/AltGr can be combined (e.g. ".**." == Control+Alt)
+# Event:
+# <empty> - Normal keytouch (short keypress followed by release)
+# Held - Long keytouch (pressed and held for some time)
+# Special Events (use with care):
+# Pressed - Key was just pressed (note: other events may match too, e.g.
+# normal/Held)
+# Released - Key was just released (note: other events may match too)
+# Combine - Several keys pressed together (note: other events may match too)
+# Keysym: One or more (for Combine only) X keysyms
+# Window: Ignored, do not use
+# Command: Command line to execute, if starts with ~, suppress X startup notification
+# (use for non-X apps).
+#
+key=????XF86AudioRecord:gpe-soundbite record --autogenerate-filename $HOME_VOLATILE
+key=????XF86Calendar:gpe-calendar
+key=????telephone:gpe-contacts
+key=????XF86Mail:gpe-taskmanager
+key=????XF86Start:~matchbox-remote -desktop
+key=????XF86PowerDown:~apm --suspend
+key=????Held XF86PowerDown:~bl toggle
+key=????Combine XF86Calendar XF86Start:gpe-keylock
diff --git a/packages/keylaunch/keylaunch-conf/shepherd/.mtn2git_empty b/packages/keylaunch/keylaunch-conf/shepherd/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/keylaunch/keylaunch-conf/shepherd/.mtn2git_empty
diff --git a/packages/keylaunch/files/shepherd/keylaunchrc b/packages/keylaunch/keylaunch-conf/shepherd/keylaunchrc
index e0b729a508..e0b729a508 100644
--- a/packages/keylaunch/files/shepherd/keylaunchrc
+++ b/packages/keylaunch/keylaunch-conf/shepherd/keylaunchrc
diff --git a/packages/keylaunch/keylaunch-conf/spitz/.mtn2git_empty b/packages/keylaunch/keylaunch-conf/spitz/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/keylaunch/keylaunch-conf/spitz/.mtn2git_empty
diff --git a/packages/keylaunch/files/spitz/keylaunchrc b/packages/keylaunch/keylaunch-conf/spitz/keylaunchrc
index 9bb64db066..9bb64db066 100644
--- a/packages/keylaunch/files/spitz/keylaunchrc
+++ b/packages/keylaunch/keylaunch-conf/spitz/keylaunchrc
diff --git a/packages/keylaunch/keylaunch-conf_2.0.10.bb b/packages/keylaunch/keylaunch-conf_2.0.10.bb
new file mode 100644
index 0000000000..aeb9c862ca
--- /dev/null
+++ b/packages/keylaunch/keylaunch-conf_2.0.10.bb
@@ -0,0 +1,27 @@
+RDEPENDS_append_spitz = " display-brightness"
+RDEPENDS_append_akita = " display-brightness"
+RDEPENDS_append_c7x0 = " display-brightness"
+
+SECTION = "gpe"
+LICENSE = "GPL"
+DESCRIPTION = "Device-specific keylaunch configuration"
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+PR = "r2"
+
+SRC_URI = " file://keylaunchrc"
+SRC_URI += " file://80chvt-SUID"
+
+do_install () {
+ install -d ${D}${sysconfdir}
+ install -d ${D}${sysconfdir}/X11/Xinit.d
+ install -m 0644 ${WORKDIR}/keylaunchrc ${D}${sysconfdir}/keylaunchrc.matchbox
+ install ${WORKDIR}/80chvt-SUID ${D}${sysconfdir}/X11/Xinit.d
+}
+
+pkg_postinst_${PN}() {
+ update-alternatives --install /etc/keylaunchrc keylaunchrc /etc/keylaunchrc.matchbox 10
+}
+
+pkg_postrm_${PN}() {
+ update-alternatives --remove keylaunchrc /etc/keylaunchrc.matchbox
+}
diff --git a/packages/keylaunch/keylaunch_2.0.10.bb b/packages/keylaunch/keylaunch_2.0.10.bb
index f7d63968ac..2afba67f16 100644
--- a/packages/keylaunch/keylaunch_2.0.10.bb
+++ b/packages/keylaunch/keylaunch_2.0.10.bb
@@ -1,10 +1,7 @@
inherit gpe
-DEPENDS = "virtual/xserver libxtst libxau libxpm libgpelaunch display-brightness"
-
-RDEPENDS_append_spitz = " display-brightness"
-RDEPENDS_append_akita = " display-brightness"
-RDEPENDS_append_c7x0 = " display-brightness"
+DEPENDS = "virtual/xserver libxtst libxau libxpm libgpelaunch keylaunch-conf"
+RDEPENDS = "keylaunch-conf"
SECTION = "gpe"
LICENSE = "GPL"
@@ -14,31 +11,14 @@ DESCRIPTION = "A small utility for binding commands to a hot key.\
computers. You can connect each key to a program of your choice; if the\
program is already running, keylaunch can bring its window to the front\
rather than just running another copy."
-PACKAGE_ARCH = "${MACHINE_ARCH}"
-PR = "r12"
-
-SRC_URI += " file://keylaunchrc"
-SRC_URI += " file://makefile-fix.patch;patch=1"
-SRC_URI += " file://80chvt-SUID"
+PR = "r14"
-do_install_prepend () {
- install ${WORKDIR}/keylaunchrc ${S}/keylaunchrc
-
- install -d ${D}/etc/X11/Xinit.d
- install ${WORKDIR}/80chvt-SUID ${D}/etc/X11/Xinit.d
-}
-
-do_install_append() {
- # yeah I know...this is less than ideal
- mv ${D}/etc/keylaunchrc ${D}/etc/keylaunchrc.matchbox
-}
+SRC_URI += " file://makefile-fix.patch;patch=1 file://unbreak-keyevents.patch;patch=1"
export CVSBUILD="no"
-pkg_postinst_${PN}() {
- update-alternatives --install /etc/keylaunchrc keylaunchrc /etc/keylaunchrc.matchbox 10
-}
-
-pkg_postrm_${PN}() {
- update-alternatives --remove keylaunchrc /etc/keylaunchrc.matchbox
+do_install_append() {
+ # Remove random crap
+ rm ${D}/etc/keylaunchrc
+ rm -rf ${D}/etc/X11/Xinit.d/
}
diff --git a/packages/keymap-locales/files/qemux86/.mtn2git_empty b/packages/keymap-locales/files/qemux86/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/keymap-locales/files/qemux86/.mtn2git_empty
diff --git a/packages/keymap-locales/files/qemux86/keymap-extension-2.6-fr.map b/packages/keymap-locales/files/qemux86/keymap-extension-2.6-fr.map
new file mode 100644
index 0000000000..58ade428b0
--- /dev/null
+++ b/packages/keymap-locales/files/qemux86/keymap-extension-2.6-fr.map
@@ -0,0 +1,109 @@
+# French keymapping
+
+# azerty-layout
+keycode 16 = a
+keycode 17 = z
+keycode 18 = e
+keycode 19 = r
+keycode 20 = t
+keycode 21 = y
+keycode 22 = u
+keycode 23 = i
+keycode 24 = o
+keycode 25 = p
+#
+keycode 30 = q
+keycode 31 = s
+keycode 32 = d
+keycode 33 = f
+keycode 34 = g
+keycode 35 = h
+keycode 36 = j
+keycode 37 = k
+keycode 38 = l
+keycode 39 = m
+#
+keycode 44 = w
+keycode 45 = x
+keycode 46 = c
+keycode 47 = v
+keycode 48 = b
+keycode 49 = n
+#
+
+strings as usual
+
+keycode 1 = Escape Escape
+ alt keycode 1 = Meta_Escape
+keycode 2 = ampersand one
+ alt keycode 2 = Meta_one
+keycode 3 = braceleft two asciitilde
+ control keycode 3 = nul
+ alt keycode 3 = Meta_two
+keycode 4 = quotedbl three numbersign
+ control keycode 4 = Escape
+ alt keycode 4 = Meta_three
+keycode 5 = apostrophe four braceleft
+ control keycode 5 = Control_backslash
+ alt keycode 5 = Meta_four
+keycode 6 = parenleft five bracketleft
+ control keycode 6 = Control_bracketright
+ alt keycode 6 = Meta_five
+keycode 7 = minus six bar
+ control keycode 7 = Control_asciicircum
+ alt keycode 7 = Meta_six
+keycode 8 = braceright seven grave
+ control keycode 8 = Control_underscore
+ alt keycode 8 = Meta_seven
+keycode 9 = underscore eight backslash
+ control keycode 9 = Delete
+ alt keycode 9 = Meta_eight
+keycode 10 = slash nine asciicircum
+ alt keycode 10 = Meta_nine
+keycode 11 = at zero at
+ alt keycode 11 = Meta_zero
+keycode 12 = parenright bracketright bracketright
+ control keycode 12 = Control_underscore
+ alt keycode 12 = Meta_minus
+keycode 13 = equal plus braceright
+ alt keycode 13 = Meta_equal
+keycode 14 = Delete Delete
+ alt keycode 14 = Meta_Delete
+keycode 15 = Tab Tab
+ alt keycode 15 = Meta_Tab
+keycode 26 = asciicircum less
+ control keycode 26 = Escape
+ alt keycode 26 = Meta_bracketleft
+keycode 27 = dollar greater asciitilde
+ control keycode 27 = Control_bracketright
+ alt keycode 27 = Meta_bracketright
+keycode 28 = Return
+ alt keycode 28 = Meta_Control_m
+keycode 29 = Control
+keycode 40 = bar percent
+ control keycode 40 = Control_g
+ alt keycode 40 = Meta_apostrophe
+keycode 41 = asterisk asciitilde
+ control keycode 41 = nul
+ alt keycode 41 = Meta_grave
+keycode 42 = Shift
+keycode 43 = asterisk numbersign
+ control keycode 43 = Control_backslash
+ alt keycode 43 = Meta_backslash
+keycode 50 = comma question
+keycode 51 = semicolon period
+ alt keycode 51 = Meta_comma
+keycode 52 = colon slash
+ alt keycode 52 = Meta_period
+keycode 53 = exclam backslash
+ control keycode 53 = Delete
+ alt keycode 53 = Meta_slash
+keycode 54 = Shift
+keycode 56 = Alt
+keycode 57 = space space
+ control keycode 57 = nul
+ alt keycode 57 = Meta_space
+keycode 58 = Caps_Lock
+keycode 86 = less greater bar
+ alt keycode 86 = Meta_less
+keycode 97 = Control
diff --git a/packages/keymap-locales/keymap-locales.bb b/packages/keymap-locales/keymap-locales.bb
index 8303672240..877b801f4c 100644
--- a/packages/keymap-locales/keymap-locales.bb
+++ b/packages/keymap-locales/keymap-locales.bb
@@ -3,7 +3,7 @@ SECTION = "base"
PRIORITY = "optional"
LICENSE = "GPL"
-PR = "r6"
+PR = "r7"
SRC_URI = "file://*.map"
@@ -13,6 +13,7 @@ PACKAGES_akita = "keymap-extension-de keymap-extension-fi"
PACKAGES_spitz = "keymap-extension-de keymap-extension-fi"
PACKAGES_c7x0 = "keymap-extension-de keymap-extension-fi"
PACKAGES_collie = "keymap-extension-de keymap-extension-fi"
+PACKAGES_qemux86 = "keymap-extension-fr"
FILES_keymap-extension-de = "/etc/*-de.map"
FILES_keymap-extension-fr = "/etc/*-fr.map"
diff --git a/packages/keymaps/files/qemux86/.mtn2git_empty b/packages/keymaps/files/qemux86/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/keymaps/files/qemux86/.mtn2git_empty
diff --git a/packages/keymaps/files/qemux86/keymap-2.6.map b/packages/keymaps/files/qemux86/keymap-2.6.map
new file mode 100644
index 0000000000..2389607160
--- /dev/null
+++ b/packages/keymaps/files/qemux86/keymap-2.6.map
@@ -0,0 +1,186 @@
+# Linux-specific (and language-independent) keys
+#
+# This file describes function keys, console switching keys,
+# keypad, cursor keys, and SysRq, ScrollLock, Pause
+#
+# It does not use the AltGr modifier, so that the user can opt
+# to have both Alt keys produce the same effect.
+# As a consequence, the Hex_* keys are missing, as are
+# control altgr keycode 83 = Boot
+# control altgr keycode 111 = Boot
+#
+# One culture-specific item that will be overridden in many keymaps
+# is the KP_Period: many countries have a KP_Comma instead.
+#
+# One user-preference item will be the function of the Delete key.
+#
+# Old keyboards have 10 function keys, and keymaps have
+# sometimes used shift+F1 = F11, and sometimes shift+F1 = F13.
+# Here we assume an enhanced keyboard (with 12 function keys).
+#
+plain keycode 59 = F1
+plain keycode 60 = F2
+plain keycode 61 = F3
+plain keycode 62 = F4
+plain keycode 63 = F5
+plain keycode 64 = F6
+plain keycode 65 = F7
+plain keycode 66 = F8
+plain keycode 67 = F9
+plain keycode 68 = F10
+plain keycode 87 = F11
+plain keycode 88 = F12
+shift keycode 59 = F13
+shift keycode 60 = F14
+shift keycode 61 = F15
+shift keycode 62 = F16
+shift keycode 63 = F17
+shift keycode 64 = F18
+shift keycode 65 = F19
+shift keycode 66 = F20
+shift keycode 67 = F21
+shift keycode 68 = F22
+shift keycode 87 = F23
+shift keycode 88 = F24
+control keycode 59 = F25
+control keycode 60 = F26
+control keycode 61 = F27
+control keycode 62 = F28
+control keycode 63 = F29
+control keycode 64 = F30
+control keycode 65 = F31
+control keycode 66 = F32
+control keycode 67 = F33
+control keycode 68 = F34
+control keycode 87 = F35
+control keycode 88 = F36
+#
+# The canonical assignment for F37-F48 uses
+# control shift keycode 59 = F37
+# etc. If you want that, load linux-keys-extd.inc
+#
+# Both Alt+Fn and Control+Alt+Fn switch to Console n
+# (in order to please Linux / dosemu / X).
+# Here Consoles 1..12. For 13..24 load linux-keys-extd.inc
+#
+alt keycode 59 = Console_1
+alt keycode 60 = Console_2
+alt keycode 61 = Console_3
+alt keycode 62 = Console_4
+alt keycode 63 = Console_5
+alt keycode 64 = Console_6
+alt keycode 65 = Console_7
+alt keycode 66 = Console_8
+alt keycode 67 = Console_9
+alt keycode 68 = Console_10
+alt keycode 87 = Console_11
+alt keycode 88 = Console_12
+control alt keycode 59 = Console_1
+control alt keycode 60 = Console_2
+control alt keycode 61 = Console_3
+control alt keycode 62 = Console_4
+control alt keycode 63 = Console_5
+control alt keycode 64 = Console_6
+control alt keycode 65 = Console_7
+control alt keycode 66 = Console_8
+control alt keycode 67 = Console_9
+control alt keycode 68 = Console_10
+control alt keycode 87 = Console_11
+control alt keycode 88 = Console_12
+
+#
+# Keypad keys
+#
+keycode 69 = Num_Lock
+keycode 98 = KP_Divide
+keycode 55 = KP_Multiply
+keycode 74 = KP_Subtract
+keycode 78 = KP_Add
+keycode 96 = KP_Enter
+#
+keycode 71 = KP_7
+keycode 72 = KP_8
+keycode 73 = KP_9
+keycode 75 = KP_4
+keycode 76 = KP_5
+keycode 77 = KP_6
+keycode 79 = KP_1
+keycode 80 = KP_2
+keycode 81 = KP_3
+keycode 82 = KP_0
+#
+keycode 83 = KP_Period # or KP_Comma
+control alt keycode 83 = Boot
+#
+alt keycode 71 = Ascii_7
+alt keycode 72 = Ascii_8
+alt keycode 73 = Ascii_9
+alt keycode 75 = Ascii_4
+alt keycode 76 = Ascii_5
+alt keycode 77 = Ascii_6
+alt keycode 79 = Ascii_1
+alt keycode 80 = Ascii_2
+alt keycode 81 = Ascii_3
+alt keycode 82 = Ascii_0
+#
+# The four cursor keys
+#
+keycode 103 = Up
+keycode 105 = Left
+keycode 106 = Right
+keycode 108 = Down
+alt keycode 103 = KeyboardSignal
+alt keycode 105 = Decr_Console
+alt keycode 106 = Incr_Console
+#
+# The six edit keys
+#
+keycode 110 = Insert
+keycode 102 = Home # Find
+keycode 104 = PageUp # Prior
+keycode 111 = Remove
+keycode 107 = End # Select
+keycode 109 = PageDown # Next
+shift keycode 104 = Scroll_Backward
+shift keycode 109 = Scroll_Forward
+control alt keycode 111 = Boot
+#
+# The three system keys
+#
+keycode 84 = Last_Console # Alt+SysRq/PrintScrn
+keycode 99 = Control_backslash # SysRq/PrintScrn
+
+plain keycode 70 = Scroll_Lock
+shift keycode 70 = Show_Memory
+control keycode 70 = Show_State
+alt keycode 70 = Show_Registers
+
+keycode 101 = Break # Ctrl+Break/Pause
+keycode 119 = Pause # Break/Pause
+
+keycode 100 = AltGr
+
+altgr keycode 70 = Show_Registers
+alt keycode 70 = Scroll_Lock
+
+control altgr keycode 83 = Boot
+control altgr keycode 111 = Boot
+
+# Hex keypad keys (for giving a Unicode value in 4 hex digits)
+# Follow lt.map and assign Hex_A .. Hex_F to keypad border.
+altgr keycode 55 = Hex_C
+altgr keycode 69 = Hex_A
+altgr keycode 71 = Hex_7
+altgr keycode 72 = Hex_8
+altgr keycode 73 = Hex_9
+altgr keycode 74 = Hex_D
+altgr keycode 75 = Hex_4
+altgr keycode 76 = Hex_5
+altgr keycode 77 = Hex_6
+altgr keycode 78 = Hex_E
+altgr keycode 79 = Hex_1
+altgr keycode 80 = Hex_2
+altgr keycode 81 = Hex_3
+altgr keycode 82 = Hex_0
+altgr keycode 96 = Hex_F
+altgr keycode 98 = Hex_B
diff --git a/packages/keymaps/keymaps_1.0.bb b/packages/keymaps/keymaps_1.0.bb
index 813ba41011..00a215f948 100644
--- a/packages/keymaps/keymaps_1.0.bb
+++ b/packages/keymaps/keymaps_1.0.bb
@@ -3,7 +3,7 @@ SECTION = "base"
RDEPENDS = "initscripts console-tools"
LICENSE = "GPL"
PACKAGE_ARCH = "${MACHINE}"
-PR = "r15"
+PR = "r16"
inherit update-rc.d
@@ -18,6 +18,7 @@ SRC_URI_append_poodle = " file://keymap-*.map"
SRC_URI_append_jornada6xx = " file://keymap-*.map"
SRC_URI_append_h2200 = " file://keymap-*.map"
SRC_URI_append_htcuniversal = " file://keymap-*.map"
+SRC_URI_append_qemux86 = " file://keymap-*.map"
INITSCRIPT_NAME = "keymap"
INITSCRIPT_PARAMS = "start 01 S ."
@@ -27,7 +28,7 @@ do_install () {
install -m 0755 ${WORKDIR}/keymap ${D}${sysconfdir}/init.d/
case ${MACHINE} in
- c7x0 | tosa | spitz | akita | borzoi | collie | poodle | jornada6xx | h2200 | htcuniversal )
+ c7x0 | tosa | spitz | akita | borzoi | collie | poodle | jornada6xx | h2200 | htcuniversal | qemux86 )
install -m 0644 ${WORKDIR}/keymap-*.map ${D}${sysconfdir}
;;
*)
diff --git a/packages/klibc/files/fstype-sane-and-vfat.patch b/packages/klibc/files/fstype-sane-and-vfat.patch
new file mode 100644
index 0000000000..7b7674637a
--- /dev/null
+++ b/packages/klibc/files/fstype-sane-and-vfat.patch
@@ -0,0 +1,60 @@
+Patch to compile fstype util against "normal" libc (glibc/uclicb), and to
+add vfat detection.
+
+--- klibc-1.1.1/utils/fstype.c.org 2005-09-06 23:49:34.000000000 +0300
++++ klibc-1.1.1/utils/fstype.c 2007-11-24 01:07:26.000000000 +0200
+@@ -13,11 +13,18 @@
+ */
+
+ #include <sys/types.h>
++#include <linux/types.h>
+ #include <stdio.h>
+ #include <string.h>
+ #include <unistd.h>
+ #include <endian.h>
+ #include <netinet/in.h>
++#if __BYTE_ORDER == __BIG_ENDIAN
++#include <linux/byteorder/big_endian.h>
++#else
++#include <linux/byteorder/little_endian.h>
++#endif
++
+
+ #define cpu_to_be32(x) __cpu_to_be32(x) /* Needed by romfs_fs.h */
+
+@@ -105,6 +112,18 @@
+ return 0;
+ }
+
++static int vfat_image(const unsigned char *buf, unsigned long *blocks)
++{
++ const struct romfs_super_block *sb =
++ (const struct romfs_super_block *)buf;
++ if (!strncmp(buf + 54, "FAT12 ", 8)
++ || !strncmp(buf + 54, "FAT16 ", 8)
++ || !strncmp(buf + 82, "FAT32 ", 8))
++ return 1;
++
++ return 0;
++}
++
+ static int minix_image(const unsigned char *buf, unsigned long *blocks)
+ {
+ const struct minix_super_block *sb =
+@@ -167,8 +186,6 @@
+ (const struct xfs_sb *)buf;
+
+ if (__be32_to_cpu(sb->sb_magicnum) == XFS_SB_MAGIC) {
+- *blocks = __be64_to_cpu(sb->sb_dblocks) *
+- (__be32_to_cpu(sb->sb_blocksize) / BLOCK_SIZE);
+ return 1;
+ }
+ return 0;
+@@ -184,6 +201,7 @@
+ { 0, "gzip", gzip_image },
+ { 0, "cramfs", cramfs_image },
+ { 0, "romfs", romfs_image },
++ { 0, "vfat", vfat_image },
+ { 0, "xfs", xfs_image },
+ { 1, "minix", minix_image },
+ { 1, "ext3", ext3_image },
diff --git a/packages/klibc/klibc-utils-fstype_1.1.1.bb b/packages/klibc/klibc-utils-fstype_1.1.1.bb
new file mode 100644
index 0000000000..29ce38285c
--- /dev/null
+++ b/packages/klibc/klibc-utils-fstype_1.1.1.bb
@@ -0,0 +1,14 @@
+SRC_URI = "${KERNELORG_MIRROR}/pub/linux/libs/klibc/Stable/klibc-${PV}.tar.bz2"
+SRC_URI += "file://fstype-sane-and-vfat.patch;patch=1"
+PR = "r0"
+
+S = "${WORKDIR}/klibc-${PV}"
+
+do_compile() {
+ ${CC} -o fstype utils/fstype.c -static
+}
+
+do_install () {
+ install -d ${D}${bindir}
+ install -m 0755 fstype ${D}${bindir}/
+}
diff --git a/packages/klibc/klibc.inc b/packages/klibc/klibc.inc
index 0ddcef82d9..a7f0094264 100644
--- a/packages/klibc/klibc.inc
+++ b/packages/klibc/klibc.inc
@@ -7,6 +7,7 @@ LICENSE = "BSD-ADV"
SRC_URI = "${KERNELORG_MIRROR}/pub/linux/libs/klibc/Stable/klibc-${PV}.tar.bz2"
SRC_URI += "file://install.patch;patch=1"
S = "${WORKDIR}/klibc-${PV}"
+PACKAGE_ARCH = "${MACHINE_ARCH}"
# for the correct kernel staging path
# inherit module-base
diff --git a/packages/klibc/klibc_1.1.1.bb b/packages/klibc/klibc_1.1.1.bb
index cd1ba9d56e..ff715765d5 100644
--- a/packages/klibc/klibc_1.1.1.bb
+++ b/packages/klibc/klibc_1.1.1.bb
@@ -1 +1,3 @@
require klibc.inc
+
+PR = "r1"
diff --git a/packages/libdaemon/libdaemon_0.12.bb b/packages/libdaemon/libdaemon_0.12.bb
new file mode 100644
index 0000000000..c91f6351ff
--- /dev/null
+++ b/packages/libdaemon/libdaemon_0.12.bb
@@ -0,0 +1,20 @@
+DESCRIPTION = "libdaemon is a lightweight C library which eases the writing of UNIX daemons."
+SECTION = "libs"
+AUTHOR = "Lennart Poettering <lennart@poettering.net>"
+HOMEPAGE = "http://0pointer.de/lennart/projects/libdaemon/"
+LICENSE = "LGPL"
+PR = "r0"
+
+SRC_URI = "http://0pointer.de/lennart/projects/libdaemon/libdaemon-${PV}.tar.gz"
+
+inherit autotools pkgconfig
+
+EXTRA_OECONF = "--disable-lynx --disable-doxygen"
+
+do_stage () {
+ oe_libinstall -a -so -C libdaemon libdaemon ${STAGING_LIBDIR}
+ install -d ${STAGING_INCDIR}/libdaemon
+ for i in daemon.h dlog.h dexec.h dfork.h dsignal.h dnonblock.h dpid.h; do
+ install -m 0644 ${S}/libdaemon/$i ${STAGING_INCDIR}/libdaemon/
+ done
+}
diff --git a/packages/libical/.mtn2git_empty b/packages/libical/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/libical/.mtn2git_empty
diff --git a/packages/libical/libical/.mtn2git_empty b/packages/libical/libical/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/libical/libical/.mtn2git_empty
diff --git a/packages/libical/libical/pthread-link.patch b/packages/libical/libical/pthread-link.patch
new file mode 100644
index 0000000000..4fb1f190c1
--- /dev/null
+++ b/packages/libical/libical/pthread-link.patch
@@ -0,0 +1,11 @@
+--- libical-0.27.orig/src/libical/Makefile.am 2007-02-27 23:27:56.000000000 +0100
++++ libical-0.27/src/libical/Makefile.am 2007-11-27 15:08:38.000000000 +0100
+@@ -47,7 +47,7 @@
+ -I$(top_builddir)/src \
+ -I$(srcdir)
+
+-libical_la_LDFLAGS = -version-info 27:6:27
++libical_la_LDFLAGS = -version-info 27:6:27 $(PTHREAD_LIBS)
+
+
+ libical_la_SOURCES = \
diff --git a/packages/libical/libical_0.27.bb b/packages/libical/libical_0.27.bb
new file mode 100644
index 0000000000..b41b2e688a
--- /dev/null
+++ b/packages/libical/libical_0.27.bb
@@ -0,0 +1,15 @@
+DESCRIPTION = "iCal and scheduling (RFC 2445, 2446, 2447) library"
+HOMEPAGE = "http://www.softwarestudio.org/softwarestudio/app.php/libical"
+SECTION = "libs"
+LICENSE = "LGPL / MPL"
+PR = "r1"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/freeassociation/${P}.tar.gz \
+ file://pthread-link.patch;patch=1"
+
+
+inherit autotools
+
+do_stage () {
+ autotools_stage_all
+}
diff --git a/packages/libogg/libtheora_0.9+1.0alpha7.bb b/packages/libogg/libtheora_0.9+1.0alpha7.bb
index 4f2cb4ab35..67ec27b560 100644
--- a/packages/libogg/libtheora_0.9+1.0alpha7.bb
+++ b/packages/libogg/libtheora_0.9+1.0alpha7.bb
@@ -1,5 +1,5 @@
-DEPENDS = "libogg libtheora libsdl-x11"
+DEPENDS = "libogg libsdl-x11"
SRC_URI = "http://downloads.xiph.org/releases/theora/libtheora-1.0alpha7.tar.gz"
diff --git a/packages/liboil/liboil-0.3.11/.mtn2git_empty b/packages/liboil/liboil-0.3.11/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/liboil/liboil-0.3.11/.mtn2git_empty
diff --git a/packages/liboil/liboil-0.3.11/ppc-detect-fpu.patch b/packages/liboil/liboil-0.3.11/ppc-detect-fpu.patch
new file mode 100644
index 0000000000..49485e3648
--- /dev/null
+++ b/packages/liboil/liboil-0.3.11/ppc-detect-fpu.patch
@@ -0,0 +1,11 @@
+--- /m4/orig-as-gcc-inline-assembly.m4 2007-03-17 04:03:30.000000000 +0200
++++ /m4/as-gcc-inline-assembly.m4 2007-11-20 12:20:24.000000000 +0200
+@@ -38,7 +38,7 @@
+ [
+ AC_MSG_CHECKING([if compiler supports FPU instructions on PowerPC])
+
+- AC_TRY_COMPILE([], [__asm__ ("fadd 0,0,0"::) ], [flag_ok=yes], [flag_ok=no])
++ AC_TRY_COMPILE([], [double x = 0; __asm__ ("fadd 0,0,0"::"f" (x):"32") ], [flag_ok=yes], [flag_ok=no])
+
+ if test "X$flag_ok" = Xyes ; then
+ $1
diff --git a/packages/liboil/liboil_0.3.11.bb b/packages/liboil/liboil_0.3.11.bb
index 94471a26fc..4ff86f44b5 100644
--- a/packages/liboil/liboil_0.3.11.bb
+++ b/packages/liboil/liboil_0.3.11.bb
@@ -1,8 +1,12 @@
DESCRIPTION = "Liboil is a library of simple functions that are optimized for various CPUs."
HOMEPAGE = "http://liboil.freedesktop.org/"
LICENSE = "various"
+PR="r2"
-SRC_URI = "http://liboil.freedesktop.org/download/${P}.tar.gz"
+DEPENDS = "glib-2.0"
+
+SRC_URI = "http://liboil.freedesktop.org/download/${P}.tar.gz \
+ file://ppc-detect-fpu.patch;patch=1"
inherit autotools pkgconfig
diff --git a/packages/libopie/libopie2/h4000_and_default_rot.patch b/packages/libopie/libopie2/h4000_and_default_rot.patch
new file mode 100644
index 0000000000..c10160d0b8
--- /dev/null
+++ b/packages/libopie/libopie2/h4000_and_default_rot.patch
@@ -0,0 +1,25 @@
+--- libopie2/opiecore/device/odevice_ipaq.cpp.org 2007-09-09 02:44:41.000000000 +0300
++++ libopie2/opiecore/device/odevice_ipaq.cpp 2007-11-09 12:01:56.000000000 +0200
+@@ -178,6 +178,10 @@
+ d->m_model = Model_iPAQ_HX4700;
+ else if ( d->m_modelstr == "H4000" )
+ d->m_model = Model_iPAQ_H4xxx;
++ else if ( d->m_modelstr == "H4100" )
++ d->m_model = Model_iPAQ_H4xxx;
++ else if ( d->m_modelstr == "H4300" )
++ d->m_model = Model_iPAQ_H4xxx;
+
+ else
+ d->m_model = Model_Unknown;
+@@ -198,8 +202,10 @@
+ case Model_iPAQ_H36xx:
+ case Model_iPAQ_H37xx:
+ case Model_iPAQ_H39xx:
+- default:
+ d->m_rotation = Rot270;
++ break;
++ default:
++ d->m_rotation = Rot0;
+ break;
+
+ }
diff --git a/packages/libopie/libopie2_1.2.3.bb b/packages/libopie/libopie2_1.2.3.bb
index cf350d2569..1ecc983b14 100644
--- a/packages/libopie/libopie2_1.2.3.bb
+++ b/packages/libopie/libopie2_1.2.3.bb
@@ -1,9 +1,10 @@
require ${PN}.inc
-PR = "r0"
+PR = "r2"
-SRC_URI = "${HANDHELDS_CVS};module=opie/libopie2 \
+SRC_URI = "${HANDHELDS_CVS};tag=${TAG};module=opie/libopie2 \
file://include.pro \
- file://gcc-syntax-fix.patch;patch=1"
+ file://gcc-syntax-fix.patch;patch=1 \
+ file://h4000_and_default_rot.patch;patch=1"
SRC_URI_append_poodle = " file://poodle-2.6-hotkeys.patch;patch=1"
diff --git a/packages/libpixman/libpixman_0.9.6.bb b/packages/libpixman/libpixman_0.9.6.bb
new file mode 100644
index 0000000000..fba7dc9152
--- /dev/null
+++ b/packages/libpixman/libpixman_0.9.6.bb
@@ -0,0 +1,13 @@
+SECTION = "libs"
+PRIORITY = "optional"
+DESCRIPTION = "Low-level pixel manipulation library."
+LICENSE = "X11"
+SRC_URI = "http://cairographics.org/releases/pixman-${PV}.tar.gz"
+S = "${WORKDIR}/pixman-${PV}"
+
+inherit autotools pkgconfig
+
+do_stage () {
+ autotools_stage_all
+}
+
diff --git a/packages/librcf/librcf_0.4.bb b/packages/librcf/librcf_0.4.bb
index aad6f7c338..d18d2d8241 100644
--- a/packages/librcf/librcf_0.4.bb
+++ b/packages/librcf/librcf_0.4.bb
@@ -3,7 +3,6 @@ SECTION = "base"
PRIORITY = "optional"
LICENSE = "unknown"
DEPENDS="zlib openssl boost-asio"
-RDEPENDS = "libstdc++5 libgcc1"
# the SOURCE_URI requires authentication via web browser and cookie (gasp)
# all we can do right now is download the file and save it under sources/
diff --git a/packages/libsndfile/libsndfile1_1.0.17.bb b/packages/libsndfile/libsndfile1_1.0.17.bb
index cf3b6d8e48..b15f84f94f 100644
--- a/packages/libsndfile/libsndfile1_1.0.17.bb
+++ b/packages/libsndfile/libsndfile1_1.0.17.bb
@@ -3,13 +3,19 @@ HOMEPAGE = "http://www.mega-nerd.com/libsndfile"
AUTHOR = "Erik de Castro Lopo"
SECTION = "libs/multimedia"
LICENSE = "LGPL"
-PR = "r0"
+PR = "r1"
SRC_URI = "http://www.mega-nerd.com/libsndfile/libsndfile-${PV}.tar.gz"
S = "${WORKDIR}/libsndfile-${PV}"
inherit autotools lib_package pkgconfig
+do_configure_prepend_arm() {
+ export ac_cv_sys_largefile_source=1
+ export ac_cv_sys_file_offset_bits=64
+ ac_cv_sizeof_off_t=8
+}
+
do_stage() {
oe_libinstall -a -so -C src libsndfile ${STAGING_LIBDIR}
install -m 0644 ${S}/src/sndfile.h ${STAGING_INCDIR}/
diff --git a/packages/libtool/libtool-1.5.10/libdir-la2.patch b/packages/libtool/libtool-1.5.10/libdir-la2.patch
new file mode 100644
index 0000000000..0d5d261203
--- /dev/null
+++ b/packages/libtool/libtool-1.5.10/libdir-la2.patch
@@ -0,0 +1,64 @@
+OE changes to installed=no which means we can't run the original test
+and just look in $objdir. We therefore look in both, preferring
+$objdir if it exists - RP 29/11/2007
+
+--- libtool-1.5.10/ltmain.in.orig
++++ libtool-1.5.10/ltmain.in
+@@ -3105,8 +3105,11 @@
+ fi
+ ;;
+ esac
+- if grep "^installed=no" $deplib > /dev/null; then
+- path="$absdir/$objdir"
++# OE changes to installed=no which means we can't run the original test
++# and just look in $objdir. We therefore look in both, preferring
++# $objdir if it exists, see below. - RP 29/11/2007
++# if grep "^installed=no" $deplib > /dev/null; then
++# path="$absdir/$objdir"
+ # This interferes with crosscompilation. -CL
+ # else
+ # eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+@@ -3117,7 +3120,7 @@
+ # if test "$absdir" != "$libdir"; then
+ # $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2
+ # fi
+- else
++ if ! grep "^installed=no" $deplib > /dev/null; then
+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+ if test -z "$libdir"; then
+ $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
+@@ -3138,9 +3141,17 @@
+ for tmp in $deplibrary_names ; do
+ depdepl=$tmp
+ done
+- if test -f "$path/$depdepl" ; then
+- depdepl="$path/$depdepl"
++
++ if test -f "$absdir/$objdir/$depdepl" ; then
++ depdepl="$absdir/$objdir/$depdepl"
++ path="$absdir/$objdir"
++ elif test -f "$absdir/$depdepl" ; then
++ depdepl="$absdir/$depdepl"
++ path="$absdir"
++ else
++ path="$absdir/$objdir"
+ fi
++
+ # do not add paths which are already there
+ case " $newlib_search_path " in
+ *" $path "*) ;;
+@@ -3150,7 +3161,13 @@
+ path=""
+ ;;
+ *)
+- path="-L$path"
++ if test -d "$absdir/$objdir" ; then
++ path="-L$absdir/$objdir"
++ elif test -d "$absdir" ; then
++ path="-L$absdir"
++ else
++ path="-L$absdir/$objdir"
++ fi
+ ;;
+ esac
+ ;;
diff --git a/packages/libtool/libtool-1.5.10/nmedit_fix.patch b/packages/libtool/libtool-1.5.10/nmedit_fix.patch
new file mode 100644
index 0000000000..673f3a9a28
--- /dev/null
+++ b/packages/libtool/libtool-1.5.10/nmedit_fix.patch
@@ -0,0 +1,56 @@
+Fix so instead of calling "nmedit" it gets prefixed with the host triplet.
+
+RP - 30/11/2007
+
+Index: libtool-1.5.10/libtool.m4
+===================================================================
+--- libtool-1.5.10.orig/libtool.m4 2007-11-29 19:27:31.000000000 +0000
++++ libtool-1.5.10/libtool.m4 2007-11-29 19:29:09.000000000 +0000
+@@ -2927,11 +2927,11 @@
+ _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+ if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~$host-nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ else
+- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~$host-nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ fi
+- _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
++ _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~$host-nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ else
+ case "$cc_basename" in
+ xlc*)
+@@ -2939,8 +2939,8 @@
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
+ _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+- _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~$host-nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
++ _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~$host-nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ ;;
+ *)
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+@@ -5474,8 +5474,8 @@
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+ _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+- _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~$host-nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
++ _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~$host-nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ else
+ case "$cc_basename" in
+ xlc*)
+@@ -5483,8 +5483,8 @@
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
+ _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+- _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~$host-nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
++ _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~$host-nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ ;;
+ *)
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
diff --git a/packages/libtool/libtool-1.5.10/nousrlib.patch b/packages/libtool/libtool-1.5.10/nousrlib.patch
new file mode 100644
index 0000000000..e97b45578d
--- /dev/null
+++ b/packages/libtool/libtool-1.5.10/nousrlib.patch
@@ -0,0 +1,11 @@
+--- libtool-1.5.10.orig/ltmain.in
++++ libtool-1.5.10/ltmain.in
+@@ -2637,8 +2637,6 @@
+ add="$libdir/$linklib"
+ fi
+ else
+- # We cannot seem to hardcode it, guess we'll fake it.
+- add_dir="-L$libdir"
+ # Try looking first in the location we're being installed to.
+ if test -n "$inst_prefix_dir"; then
+ case "$libdir" in
diff --git a/packages/libtool/libtool-1.5.10/tag1.patch b/packages/libtool/libtool-1.5.10/tag1.patch
deleted file mode 100644
index 6fefd6266d..0000000000
--- a/packages/libtool/libtool-1.5.10/tag1.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-Index: libtool-1.5.10/libltdl/ltmain.sh
-===================================================================
---- libtool-1.5.10.orig/libltdl/ltmain.sh 2004-09-19 13:34:44.000000000 +0100
-+++ libtool-1.5.10/libltdl/ltmain.sh 2006-05-25 15:28:39.000000000 +0100
-@@ -232,7 +232,7 @@
- if test -z "$tagname"; then
- $echo "$modename: unable to infer tagged configuration"
- $echo "$modename: specify a tag with \`--tag'" 1>&2
-- exit $EXIT_FAILURE
-+# exit $EXIT_FAILURE
- # else
- # $echo "$modename: using $tagname tagged configuration"
- fi
diff --git a/packages/libtool/libtool-cross_1.5.10.bb b/packages/libtool/libtool-cross_1.5.10.bb
index 4c1b7c2e1f..5f15c56a97 100644
--- a/packages/libtool/libtool-cross_1.5.10.bb
+++ b/packages/libtool/libtool-cross_1.5.10.bb
@@ -1,14 +1,17 @@
SECTION = "devel"
require libtool_${PV}.bb
-PR = "r6"
+PR = "r9"
PACKAGES = ""
FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/libtool-${PV}"
SRC_URI_append = " file://libdir-la.patch;patch=1 \
+ file://libdir-la2.patch;patch=1 \
file://prefix.patch;patch=1 \
file://tag.patch;patch=1 \
- file://tag1.patch;patch=1 \
- file://install-path-check.patch;patch=1"
+ file://install-path-check.patch;patch=1 \
+ file://nmedit_fix.patch;patch=1 \
+ file://nousrlib.patch;patch=1"
+
S = "${WORKDIR}/libtool-${PV}"
prefix = "${STAGING_DIR_NATIVE}${layout_prefix}"
@@ -16,7 +19,13 @@ exec_prefix = "${STAGING_DIR_NATIVE}${layout_exec_prefix}"
bindir = "${STAGING_BINDIR_NATIVE}"
do_compile () {
- :
+ rm -f ltmain.shT
+ date=`/bin/sh ./mkstamp < ./ChangeLog` && \
+ sed -e 's/@''PACKAGE@/libtool/' -e 's/@''VERSION@/1.5.10/' \
+ -e "s%@""TIMESTAMP@%$date%" ./ltmain.in > ltmain.shT
+ mv -f ltmain.shT ltmain.sh || \
+ (rm -f ltmain.sh && cp ltmain.shT ltmain.sh && rm -f ltmain.shT)
+ cp ltmain.sh ./libltdl/
}
do_stage () {
diff --git a/packages/libtool/libtool-native_1.5.10.bb b/packages/libtool/libtool-native_1.5.10.bb
index 2780ef64ff..e21a20b85d 100644
--- a/packages/libtool/libtool-native_1.5.10.bb
+++ b/packages/libtool/libtool-native_1.5.10.bb
@@ -1,14 +1,16 @@
SECTION = "devel"
require libtool_${PV}.bb
-PR = "r6"
+PR = "r9"
FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/libtool-${PV}"
SRC_URI_append = " file://libdir-la.patch;patch=1 \
+ file://libdir-la2.patch;patch=1 \
file://prefix.patch;patch=1 \
file://tag.patch;patch=1 \
- file://tag1.patch;patch=1 \
file://install-path-check.patch;patch=1 \
+ file://nousrlib.patch;patch=1 \
file://rpath-control.patch;patch=1"
+
S = "${WORKDIR}/libtool-${PV}"
inherit native
diff --git a/packages/libtool/libtool_1.5.10.bb b/packages/libtool/libtool_1.5.10.bb
index 20929a7fa2..35cebfa5c2 100644
--- a/packages/libtool/libtool_1.5.10.bb
+++ b/packages/libtool/libtool_1.5.10.bb
@@ -5,7 +5,7 @@ libraries) behind a consistent interface."
HOMEPAGE = "http://www.gnu.org/software/libtool/libtool.html"
LICENSE = "GPL"
SECTION = "devel"
-PR = "r3"
+PR = "r5"
SRC_URI = "${GNU_MIRROR}/libtool/libtool-${PV}.tar.gz \
file://autotools.patch;patch=1 \
@@ -13,10 +13,11 @@ SRC_URI = "${GNU_MIRROR}/libtool/libtool-${PV}.tar.gz \
file://3figures.patch;patch=1"
S = "${WORKDIR}/libtool-${PV}"
-PACKAGES = "libltdl libltdl-dev ${PN}"
+PACKAGES =+ "libltdl libltdl-dev libltdl-dbg"
FILES_${PN} += "${datadir}/aclocal*"
FILES_libltdl = "${libdir}/libltdl.so.*"
FILES_libltdl-dev = "${libdir}/libltdl.* ${includedir}/ltdl.h"
+FILES_libltdl-dbg = "${libdir}/.debug/"
inherit autotools
diff --git a/packages/libungif/libungif_4.1.3.bb b/packages/libungif/libungif_4.1.3.bb
index bd7a2fd8cb..caf0427551 100644
--- a/packages/libungif/libungif_4.1.3.bb
+++ b/packages/libungif/libungif_4.1.3.bb
@@ -1,6 +1,6 @@
SECTION = "libs"
DESCRIPTION = "shared library for GIF images"
-SRC_URI = "${SOURCEFORGE_MIRROR}/libungif/libungif-${PV}.tar.bz2"
+SRC_URI = "${SOURCEFORGE_MIRROR}/giflib/libungif-${PV}.tar.bz2"
LICENSE = "MIT"
PR = "r1"
diff --git a/packages/linux/ixp4xx-kernel/2.6.21/defconfig b/packages/linux/ixp4xx-kernel/2.6.21/defconfig
index cdaa9f58ef..42527b3dfc 100644
--- a/packages/linux/ixp4xx-kernel/2.6.21/defconfig
+++ b/packages/linux/ixp4xx-kernel/2.6.21/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.21-rc4
-# Tue Mar 20 01:42:04 2007
+# Linux kernel version: 2.6.21
+# Thu Nov 22 23:05:47 2007
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -243,6 +243,7 @@ CONFIG_FPE_NWFPE=y
CONFIG_BINFMT_ELF=y
# CONFIG_BINFMT_AOUT is not set
# CONFIG_BINFMT_MISC is not set
+# CONFIG_ARTHUR is not set
#
# Power management options
@@ -502,6 +503,9 @@ CONFIG_IPDDP_DECAP=y
# QoS and/or fair queueing
#
# CONFIG_NET_SCHED is not set
+# CONFIG_NET_SCH_CLK_JIFFIES is not set
+# CONFIG_NET_SCH_CLK_GETTIMEOFDAY is not set
+# CONFIG_NET_SCH_CLK_CPU is not set
CONFIG_NET_CLS_ROUTE=y
#
@@ -529,8 +533,8 @@ CONFIG_BT_HCIUART=m
CONFIG_BT_HCIUART_H4=y
CONFIG_BT_HCIUART_BCSP=y
CONFIG_BT_HCIBCM203X=m
-# CONFIG_BT_HCIBPA10X is not set
-# CONFIG_BT_HCIBFUSB is not set
+CONFIG_BT_HCIBPA10X=m
+CONFIG_BT_HCIBFUSB=m
CONFIG_BT_HCIVHCI=m
CONFIG_IEEE80211=m
# CONFIG_IEEE80211_DEBUG is not set
@@ -671,7 +675,7 @@ CONFIG_MTD_IXP4XX=y
# CONFIG_BLK_DEV_UMEM is not set
# CONFIG_BLK_DEV_COW_COMMON is not set
CONFIG_BLK_DEV_LOOP=m
-# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+CONFIG_BLK_DEV_CRYPTOLOOP=m
CONFIG_BLK_DEV_NBD=m
# CONFIG_BLK_DEV_SX8 is not set
# CONFIG_BLK_DEV_UB is not set
@@ -836,11 +840,12 @@ CONFIG_MD_MULTIPATH=m
CONFIG_MD_FAULTY=m
CONFIG_BLK_DEV_DM=m
# CONFIG_DM_DEBUG is not set
-# CONFIG_DM_CRYPT is not set
-# CONFIG_DM_SNAPSHOT is not set
-# CONFIG_DM_MIRROR is not set
-# CONFIG_DM_ZERO is not set
-# CONFIG_DM_MULTIPATH is not set
+CONFIG_DM_CRYPT=m
+CONFIG_DM_SNAPSHOT=m
+CONFIG_DM_MIRROR=m
+CONFIG_DM_ZERO=m
+CONFIG_DM_MULTIPATH=m
+# CONFIG_DM_MULTIPATH_EMC is not set
#
# Fusion MPT device support
@@ -1011,7 +1016,6 @@ CONFIG_SLHC=m
# CONFIG_SHAPER is not set
CONFIG_NETCONSOLE=m
CONFIG_NETPOLL=y
-# CONFIG_NETPOLL_RX is not set
# CONFIG_NETPOLL_TRAP is not set
CONFIG_NET_POLL_CONTROLLER=y
@@ -1317,12 +1321,20 @@ CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
CONFIG_VIDEO_TDA9840=m
CONFIG_VIDEO_TEA6415C=m
CONFIG_VIDEO_TEA6420=m
+CONFIG_VIDEO_MSP3400=m
+CONFIG_VIDEO_WM8775=m
CONFIG_VIDEO_BT819=m
CONFIG_VIDEO_BT856=m
+CONFIG_VIDEO_KS0127=m
+CONFIG_VIDEO_OV7670=m
CONFIG_VIDEO_SAA7110=m
CONFIG_VIDEO_SAA7111=m
CONFIG_VIDEO_SAA7114=m
+CONFIG_VIDEO_SAA711X=m
+CONFIG_VIDEO_TVP5150=m
CONFIG_VIDEO_VPX3220=m
+CONFIG_VIDEO_CX25840=m
+CONFIG_VIDEO_CX2341X=m
CONFIG_VIDEO_SAA7185=m
CONFIG_VIDEO_ADV7170=m
CONFIG_VIDEO_ADV7175=m
@@ -1342,36 +1354,41 @@ CONFIG_VIDEO_ZORAN_DC10=m
CONFIG_VIDEO_ZORAN_DC30=m
CONFIG_VIDEO_ZORAN_LML33=m
CONFIG_VIDEO_ZORAN_LML33R10=m
-# CONFIG_VIDEO_ZORAN_AVS6EYES is not set
+CONFIG_VIDEO_ZORAN_AVS6EYES=m
CONFIG_VIDEO_SAA7134=m
-# CONFIG_VIDEO_SAA7134_ALSA is not set
+CONFIG_VIDEO_SAA7134_ALSA=m
CONFIG_VIDEO_MXB=m
CONFIG_VIDEO_DPC=m
CONFIG_VIDEO_HEXIUM_ORION=m
CONFIG_VIDEO_HEXIUM_GEMINI=m
CONFIG_VIDEO_CX88=m
CONFIG_VIDEO_CX88_ALSA=m
-# CONFIG_VIDEO_CX88_BLACKBIRD is not set
-# CONFIG_VIDEO_CAFE_CCIC is not set
+CONFIG_VIDEO_CX88_BLACKBIRD=m
+CONFIG_VIDEO_CAFE_CCIC=m
#
# V4L USB devices
#
-# CONFIG_VIDEO_PVRUSB2 is not set
-# CONFIG_VIDEO_EM28XX is not set
-# CONFIG_VIDEO_USBVISION is not set
-# CONFIG_USB_VICAM is not set
-# CONFIG_USB_IBMCAM is not set
-# CONFIG_USB_KONICAWC is not set
-# CONFIG_USB_QUICKCAM_MESSENGER is not set
-# CONFIG_USB_ET61X251 is not set
+CONFIG_VIDEO_PVRUSB2=m
+CONFIG_VIDEO_PVRUSB2_29XXX=y
+CONFIG_VIDEO_PVRUSB2_24XXX=y
+CONFIG_VIDEO_PVRUSB2_SYSFS=y
+# CONFIG_VIDEO_PVRUSB2_DEBUGIFC is not set
+CONFIG_VIDEO_EM28XX=m
+CONFIG_VIDEO_USBVISION=m
+CONFIG_VIDEO_USBVIDEO=m
+CONFIG_USB_VICAM=m
+CONFIG_USB_IBMCAM=m
+CONFIG_USB_KONICAWC=m
+CONFIG_USB_QUICKCAM_MESSENGER=m
+CONFIG_USB_ET61X251=m
CONFIG_VIDEO_OVCAMCHIP=m
-# CONFIG_USB_W9968CF is not set
-# CONFIG_USB_OV511 is not set
-# CONFIG_USB_SE401 is not set
-# CONFIG_USB_SN9C102 is not set
-# CONFIG_USB_STV680 is not set
-# CONFIG_USB_ZC0301 is not set
+CONFIG_USB_W9968CF=m
+CONFIG_USB_OV511=m
+CONFIG_USB_SE401=m
+CONFIG_USB_SN9C102=m
+CONFIG_USB_STV680=m
+CONFIG_USB_ZC0301=m
CONFIG_USB_PWC=m
# CONFIG_USB_PWC_DEBUG is not set
@@ -1381,7 +1398,7 @@ CONFIG_USB_PWC=m
# CONFIG_RADIO_GEMTEK_PCI is not set
# CONFIG_RADIO_MAXIRADIO is not set
# CONFIG_RADIO_MAESTRO is not set
-# CONFIG_USB_DSBR is not set
+CONFIG_USB_DSBR=m
#
# Digital Video Broadcasting Devices
@@ -1415,11 +1432,13 @@ CONFIG_SND_TIMER=m
CONFIG_SND_PCM=m
CONFIG_SND_HWDEP=m
CONFIG_SND_RAWMIDI=m
-# CONFIG_SND_SEQUENCER is not set
+CONFIG_SND_SEQUENCER=m
+CONFIG_SND_SEQ_DUMMY=m
CONFIG_SND_OSSEMUL=y
CONFIG_SND_MIXER_OSS=m
CONFIG_SND_PCM_OSS=m
CONFIG_SND_PCM_OSS_PLUGINS=y
+# CONFIG_SND_SEQUENCER_OSS is not set
# CONFIG_SND_DYNAMIC_MINORS is not set
CONFIG_SND_SUPPORT_OLD_API=y
CONFIG_SND_VERBOSE_PROCFS=y
@@ -1430,6 +1449,7 @@ CONFIG_SND_VERBOSE_PROCFS=y
# Generic devices
#
# CONFIG_SND_DUMMY is not set
+# CONFIG_SND_VIRMIDI is not set
# CONFIG_SND_MTPAV is not set
# CONFIG_SND_SERIAL_U16550 is not set
# CONFIG_SND_MPU401 is not set
@@ -1567,7 +1587,7 @@ CONFIG_USB_PRINTER=m
CONFIG_USB_STORAGE=y
# CONFIG_USB_STORAGE_DEBUG is not set
# CONFIG_USB_STORAGE_DATAFAB is not set
-# CONFIG_USB_STORAGE_FREECOM is not set
+CONFIG_USB_STORAGE_FREECOM=y
# CONFIG_USB_STORAGE_DPCM is not set
# CONFIG_USB_STORAGE_USBAT is not set
# CONFIG_USB_STORAGE_SDDR09 is not set
@@ -1599,9 +1619,9 @@ CONFIG_USB_KBD=m
# CONFIG_USB_TOUCHSCREEN is not set
CONFIG_USB_YEALINK=m
# CONFIG_USB_XPAD is not set
-# CONFIG_USB_ATI_REMOTE is not set
-# CONFIG_USB_ATI_REMOTE2 is not set
-# CONFIG_USB_KEYSPAN_REMOTE is not set
+CONFIG_USB_ATI_REMOTE=m
+CONFIG_USB_ATI_REMOTE2=m
+CONFIG_USB_KEYSPAN_REMOTE=m
# CONFIG_USB_APPLETOUCH is not set
# CONFIG_USB_GTCO is not set
@@ -1622,13 +1642,19 @@ CONFIG_USB_USBNET_MII=m
CONFIG_USB_USBNET=m
CONFIG_USB_NET_AX8817X=m
CONFIG_USB_NET_CDCETHER=m
-# CONFIG_USB_NET_DM9601 is not set
-# CONFIG_USB_NET_GL620A is not set
+CONFIG_USB_NET_DM9601=m
+CONFIG_USB_NET_GL620A=m
CONFIG_USB_NET_NET1080=m
-# CONFIG_USB_NET_PLUSB is not set
+CONFIG_USB_NET_PLUSB=m
CONFIG_USB_NET_MCS7830=m
-# CONFIG_USB_NET_RNDIS_HOST is not set
-# CONFIG_USB_NET_CDC_SUBSET is not set
+CONFIG_USB_NET_RNDIS_HOST=m
+CONFIG_USB_NET_CDC_SUBSET=m
+CONFIG_USB_ALI_M5632=y
+CONFIG_USB_AN2720=y
+CONFIG_USB_BELKIN=y
+CONFIG_USB_ARMLINUX=y
+CONFIG_USB_EPSON2888=y
+CONFIG_USB_KC2190=y
CONFIG_USB_NET_ZAURUS=m
# CONFIG_USB_MON is not set
@@ -1699,11 +1725,11 @@ CONFIG_USB_EZUSB=y
# CONFIG_USB_EMI26 is not set
CONFIG_USB_ADUTUX=m
# CONFIG_USB_AUERSWALD is not set
-# CONFIG_USB_RIO500 is not set
-# CONFIG_USB_LEGOTOWER is not set
-# CONFIG_USB_LCD is not set
-# CONFIG_USB_BERRY_CHARGE is not set
-# CONFIG_USB_LED is not set
+CONFIG_USB_RIO500=m
+CONFIG_USB_LEGOTOWER=m
+CONFIG_USB_LCD=m
+CONFIG_USB_BERRY_CHARGE=m
+CONFIG_USB_LED=m
# CONFIG_USB_CYPRESS_CY7C63 is not set
# CONFIG_USB_CYTHERM is not set
CONFIG_USB_PHIDGET=m
@@ -1879,14 +1905,13 @@ CONFIG_NFSD_V3=y
# CONFIG_NFSD_V3_ACL is not set
CONFIG_NFSD_V4=y
CONFIG_NFSD_TCP=y
-CONFIG_ROOT_NFS=y
CONFIG_LOCKD=m
CONFIG_LOCKD_V4=y
CONFIG_EXPORTFS=m
CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=y
-CONFIG_SUNRPC_GSS=y
-CONFIG_RPCSEC_GSS_KRB5=y
+CONFIG_SUNRPC=m
+CONFIG_SUNRPC_GSS=m
+CONFIG_RPCSEC_GSS_KRB5=m
# CONFIG_RPCSEC_GSS_SPKM3 is not set
CONFIG_SMB_FS=m
# CONFIG_SMB_NLS_DEFAULT is not set
@@ -2007,8 +2032,8 @@ CONFIG_CRYPTO_BLKCIPHER=y
CONFIG_CRYPTO_HASH=y
CONFIG_CRYPTO_MANAGER=y
CONFIG_CRYPTO_HMAC=y
-# CONFIG_CRYPTO_XCBC is not set
-# CONFIG_CRYPTO_NULL is not set
+CONFIG_CRYPTO_XCBC=m
+CONFIG_CRYPTO_NULL=m
CONFIG_CRYPTO_MD4=m
CONFIG_CRYPTO_MD5=y
CONFIG_CRYPTO_SHA1=m
@@ -2016,13 +2041,13 @@ CONFIG_CRYPTO_SHA256=m
CONFIG_CRYPTO_SHA512=m
CONFIG_CRYPTO_WP512=m
CONFIG_CRYPTO_TGR192=m
-# CONFIG_CRYPTO_GF128MUL is not set
+CONFIG_CRYPTO_GF128MUL=m
CONFIG_CRYPTO_ECB=m
CONFIG_CRYPTO_CBC=y
CONFIG_CRYPTO_PCBC=m
-# CONFIG_CRYPTO_LRW is not set
+CONFIG_CRYPTO_LRW=m
CONFIG_CRYPTO_DES=y
-# CONFIG_CRYPTO_FCRYPT is not set
+CONFIG_CRYPTO_FCRYPT=m
CONFIG_CRYPTO_BLOWFISH=m
CONFIG_CRYPTO_TWOFISH=m
CONFIG_CRYPTO_TWOFISH_COMMON=m
diff --git a/packages/linux/ixp4xx-kernel/2.6.23/.mtn2git_empty b/packages/linux/ixp4xx-kernel/2.6.23/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/ixp4xx-kernel/2.6.23/.mtn2git_empty
diff --git a/packages/linux/ixp4xx-kernel/2.6.23/defconfig b/packages/linux/ixp4xx-kernel/2.6.23/defconfig
new file mode 100644
index 0000000000..efbd55195d
--- /dev/null
+++ b/packages/linux/ixp4xx-kernel/2.6.23/defconfig
@@ -0,0 +1,1940 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.23.8
+# Wed Nov 21 22:15:10 2007
+#
+CONFIG_ARM=y
+CONFIG_SYS_SUPPORTS_APM_EMULATION=y
+CONFIG_GENERIC_GPIO=y
+CONFIG_GENERIC_TIME=y
+CONFIG_GENERIC_CLOCKEVENTS=y
+CONFIG_MMU=y
+# CONFIG_NO_IOPORT is not set
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_STACKTRACE_SUPPORT=y
+CONFIG_LOCKDEP_SUPPORT=y
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+CONFIG_HARDIRQS_SW_RESEND=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+# CONFIG_ARCH_HAS_ILOG2_U32 is not set
+# CONFIG_ARCH_HAS_ILOG2_U64 is not set
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_ZONE_DMA=y
+CONFIG_VECTORS_BASE=0xffff0000
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+
+#
+# General setup
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_LOCK_KERNEL=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+CONFIG_LOCALVERSION=""
+# CONFIG_LOCALVERSION_AUTO is not set
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=y
+CONFIG_SYSVIPC_SYSCTL=y
+# CONFIG_POSIX_MQUEUE is not set
+# CONFIG_BSD_PROCESS_ACCT is not set
+# CONFIG_TASKSTATS is not set
+# CONFIG_USER_NS is not set
+# CONFIG_AUDIT is not set
+CONFIG_IKCONFIG=m
+CONFIG_IKCONFIG_PROC=y
+CONFIG_LOG_BUF_SHIFT=14
+CONFIG_SYSFS_DEPRECATED=y
+# CONFIG_RELAY is not set
+# CONFIG_BLK_DEV_INITRD is not set
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_SYSCTL=y
+CONFIG_EMBEDDED=y
+CONFIG_UID16=y
+# CONFIG_SYSCTL_SYSCALL is not set
+# CONFIG_KALLSYMS is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_ANON_INODES=y
+CONFIG_EPOLL=y
+CONFIG_SIGNALFD=y
+CONFIG_EVENTFD=y
+CONFIG_SHMEM=y
+# CONFIG_VM_EVENT_COUNTERS is not set
+CONFIG_SLAB=y
+# CONFIG_SLUB is not set
+# CONFIG_SLOB is not set
+CONFIG_RT_MUTEXES=y
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=0
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+# CONFIG_MODULE_FORCE_UNLOAD is not set
+CONFIG_MODVERSIONS=y
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_KMOD=y
+CONFIG_BLOCK=y
+# CONFIG_LBD is not set
+# CONFIG_BLK_DEV_IO_TRACE is not set
+# CONFIG_LSF is not set
+# CONFIG_BLK_DEV_BSG is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+# CONFIG_IOSCHED_AS is not set
+CONFIG_IOSCHED_DEADLINE=y
+# CONFIG_IOSCHED_CFQ is not set
+# CONFIG_DEFAULT_AS is not set
+CONFIG_DEFAULT_DEADLINE=y
+# CONFIG_DEFAULT_CFQ is not set
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="deadline"
+
+#
+# System Type
+#
+# CONFIG_ARCH_AAEC2000 is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_VERSATILE is not set
+# CONFIG_ARCH_AT91 is not set
+# CONFIG_ARCH_CLPS7500 is not set
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_CO285 is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_EP93XX is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_NETX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_IOP13XX is not set
+# CONFIG_ARCH_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IXP23XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+CONFIG_ARCH_IXP4XX=y
+# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_KS8695 is not set
+# CONFIG_ARCH_NS9XXX is not set
+# CONFIG_ARCH_MXC is not set
+# CONFIG_ARCH_PNX4008 is not set
+# CONFIG_ARCH_PXA is not set
+# CONFIG_ARCH_RPC is not set
+# CONFIG_ARCH_SA1100 is not set
+# CONFIG_ARCH_S3C2410 is not set
+# CONFIG_ARCH_SHARK is not set
+# CONFIG_ARCH_LH7A40X is not set
+# CONFIG_ARCH_DAVINCI is not set
+# CONFIG_ARCH_OMAP is not set
+CONFIG_ARCH_SUPPORTS_BIG_ENDIAN=y
+
+#
+# Intel IXP4xx Implementation Options
+#
+
+#
+# IXP4xx Platforms
+#
+CONFIG_MACH_NSLU2=y
+CONFIG_MACH_AVILA=y
+CONFIG_MACH_LOFT=y
+# CONFIG_ARCH_ADI_COYOTE is not set
+# CONFIG_MACH_GATEWAY7001 is not set
+# CONFIG_MACH_WG302V2 is not set
+CONFIG_ARCH_IXDP425=y
+CONFIG_MACH_IXDPG425=y
+# CONFIG_MACH_IXDP465 is not set
+# CONFIG_MACH_KIXRP435 is not set
+CONFIG_ARCH_IXCDP1100=y
+# CONFIG_ARCH_PRPMC1100 is not set
+CONFIG_MACH_NAS100D=y
+CONFIG_MACH_DSMG600=y
+CONFIG_ARCH_IXDP4XX=y
+CONFIG_MACH_FSG=y
+# CONFIG_MACH_GTWX5715 is not set
+
+#
+# IXP4xx Options
+#
+CONFIG_DMABOUNCE=y
+# CONFIG_IXP4XX_INDIRECT_PCI is not set
+CONFIG_IXP4XX_QMGR=y
+CONFIG_IXP4XX_NPE=y
+
+#
+# Boot options
+#
+
+#
+# Power management
+#
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+CONFIG_CPU_XSCALE=y
+CONFIG_CPU_32v5=y
+CONFIG_CPU_ABRT_EV5T=y
+CONFIG_CPU_CACHE_VIVT=y
+CONFIG_CPU_TLB_V4WBI=y
+CONFIG_CPU_CP15=y
+CONFIG_CPU_CP15_MMU=y
+
+#
+# Processor Features
+#
+CONFIG_ARM_THUMB=y
+CONFIG_CPU_BIG_ENDIAN=y
+# CONFIG_CPU_DCACHE_DISABLE is not set
+# CONFIG_OUTER_CACHE is not set
+# CONFIG_IWMMXT is not set
+CONFIG_XSCALE_PMU=y
+
+#
+# Bus support
+#
+CONFIG_PCI=y
+CONFIG_PCI_SYSCALL=y
+# CONFIG_ARCH_SUPPORTS_MSI is not set
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+# CONFIG_PCCARD is not set
+
+#
+# Kernel Features
+#
+CONFIG_TICK_ONESHOT=y
+CONFIG_NO_HZ=y
+CONFIG_HIGH_RES_TIMERS=y
+CONFIG_PREEMPT=y
+CONFIG_HZ=100
+CONFIG_AEABI=y
+CONFIG_OABI_COMPAT=y
+# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
+CONFIG_SELECT_MEMORY_MODEL=y
+CONFIG_FLATMEM_MANUAL=y
+# CONFIG_DISCONTIGMEM_MANUAL is not set
+# CONFIG_SPARSEMEM_MANUAL is not set
+CONFIG_FLATMEM=y
+CONFIG_FLAT_NODE_MEM_MAP=y
+# CONFIG_SPARSEMEM_STATIC is not set
+CONFIG_SPLIT_PTLOCK_CPUS=4096
+# CONFIG_RESOURCES_64BIT is not set
+CONFIG_ZONE_DMA_FLAG=1
+CONFIG_BOUNCE=y
+CONFIG_VIRT_TO_BUS=y
+CONFIG_ALIGNMENT_TRAP=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE=" noirqdebug console=ttyS0,115200n8"
+# CONFIG_XIP_KERNEL is not set
+CONFIG_KEXEC=y
+
+#
+# Floating point emulation
+#
+
+#
+# At least one emulation must be selected
+#
+CONFIG_FPE_NWFPE=y
+# CONFIG_FPE_NWFPE_XP is not set
+# CONFIG_FPE_FASTFPE is not set
+
+#
+# Userspace binary formats
+#
+CONFIG_BINFMT_ELF=y
+# CONFIG_BINFMT_AOUT is not set
+# CONFIG_BINFMT_MISC is not set
+
+#
+# Power management options
+#
+# CONFIG_PM is not set
+CONFIG_SUSPEND_UP_POSSIBLE=y
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+CONFIG_PACKET=y
+CONFIG_PACKET_MMAP=y
+CONFIG_UNIX=y
+CONFIG_XFRM=y
+# CONFIG_XFRM_USER is not set
+# CONFIG_XFRM_SUB_POLICY is not set
+# CONFIG_XFRM_MIGRATE is not set
+# CONFIG_NET_KEY is not set
+CONFIG_INET=y
+# CONFIG_IP_MULTICAST is not set
+# CONFIG_IP_ADVANCED_ROUTER is not set
+CONFIG_IP_FIB_HASH=y
+# CONFIG_IP_PNP is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_ARPD is not set
+# CONFIG_SYN_COOKIES is not set
+CONFIG_INET_AH=m
+CONFIG_INET_ESP=m
+CONFIG_INET_IPCOMP=m
+CONFIG_INET_XFRM_TUNNEL=m
+CONFIG_INET_TUNNEL=m
+CONFIG_INET_XFRM_MODE_TRANSPORT=y
+CONFIG_INET_XFRM_MODE_TUNNEL=y
+CONFIG_INET_XFRM_MODE_BEET=m
+CONFIG_INET_DIAG=y
+CONFIG_INET_TCP_DIAG=y
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_CUBIC=y
+CONFIG_DEFAULT_TCP_CONG="cubic"
+# CONFIG_TCP_MD5SIG is not set
+# CONFIG_IP_VS is not set
+CONFIG_IPV6=m
+# CONFIG_IPV6_PRIVACY is not set
+# CONFIG_IPV6_ROUTER_PREF is not set
+# CONFIG_IPV6_OPTIMISTIC_DAD is not set
+CONFIG_INET6_AH=m
+CONFIG_INET6_ESP=m
+CONFIG_INET6_IPCOMP=m
+# CONFIG_IPV6_MIP6 is not set
+CONFIG_INET6_XFRM_TUNNEL=m
+CONFIG_INET6_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_TRANSPORT=m
+CONFIG_INET6_XFRM_MODE_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_BEET=m
+# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
+CONFIG_IPV6_SIT=m
+CONFIG_IPV6_TUNNEL=m
+# CONFIG_IPV6_MULTIPLE_TABLES is not set
+# CONFIG_NETWORK_SECMARK is not set
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+CONFIG_BRIDGE_NETFILTER=y
+
+#
+# Core Netfilter Configuration
+#
+CONFIG_NETFILTER_NETLINK=m
+CONFIG_NETFILTER_NETLINK_QUEUE=m
+CONFIG_NETFILTER_NETLINK_LOG=m
+CONFIG_NF_CONNTRACK_ENABLED=m
+CONFIG_NF_CONNTRACK=m
+CONFIG_NF_CT_ACCT=y
+CONFIG_NF_CONNTRACK_MARK=y
+CONFIG_NF_CONNTRACK_EVENTS=y
+CONFIG_NF_CT_PROTO_GRE=m
+CONFIG_NF_CT_PROTO_SCTP=m
+# CONFIG_NF_CT_PROTO_UDPLITE is not set
+CONFIG_NF_CONNTRACK_AMANDA=m
+CONFIG_NF_CONNTRACK_FTP=m
+CONFIG_NF_CONNTRACK_H323=m
+CONFIG_NF_CONNTRACK_IRC=m
+CONFIG_NF_CONNTRACK_NETBIOS_NS=m
+CONFIG_NF_CONNTRACK_PPTP=m
+CONFIG_NF_CONNTRACK_SANE=m
+CONFIG_NF_CONNTRACK_SIP=m
+CONFIG_NF_CONNTRACK_TFTP=m
+CONFIG_NF_CT_NETLINK=m
+CONFIG_NETFILTER_XTABLES=m
+CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
+CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
+CONFIG_NETFILTER_XT_TARGET_DSCP=m
+CONFIG_NETFILTER_XT_TARGET_MARK=m
+CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
+CONFIG_NETFILTER_XT_TARGET_NFLOG=m
+CONFIG_NETFILTER_XT_TARGET_NOTRACK=m
+# CONFIG_NETFILTER_XT_TARGET_TRACE is not set
+CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
+CONFIG_NETFILTER_XT_MATCH_COMMENT=m
+CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
+# CONFIG_NETFILTER_XT_MATCH_CONNLIMIT is not set
+CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
+CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
+CONFIG_NETFILTER_XT_MATCH_DCCP=m
+CONFIG_NETFILTER_XT_MATCH_DSCP=m
+CONFIG_NETFILTER_XT_MATCH_ESP=m
+CONFIG_NETFILTER_XT_MATCH_HELPER=m
+CONFIG_NETFILTER_XT_MATCH_LENGTH=m
+CONFIG_NETFILTER_XT_MATCH_LIMIT=m
+CONFIG_NETFILTER_XT_MATCH_MAC=m
+CONFIG_NETFILTER_XT_MATCH_MARK=m
+CONFIG_NETFILTER_XT_MATCH_POLICY=m
+CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
+CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m
+CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
+CONFIG_NETFILTER_XT_MATCH_QUOTA=m
+CONFIG_NETFILTER_XT_MATCH_REALM=m
+CONFIG_NETFILTER_XT_MATCH_SCTP=m
+CONFIG_NETFILTER_XT_MATCH_STATE=m
+CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
+CONFIG_NETFILTER_XT_MATCH_STRING=m
+CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
+# CONFIG_NETFILTER_XT_MATCH_U32 is not set
+CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
+
+#
+# IP: Netfilter Configuration
+#
+CONFIG_NF_CONNTRACK_IPV4=m
+CONFIG_NF_CONNTRACK_PROC_COMPAT=y
+# CONFIG_IP_NF_QUEUE is not set
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_MATCH_IPRANGE=m
+CONFIG_IP_NF_MATCH_TOS=m
+CONFIG_IP_NF_MATCH_RECENT=m
+CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_AH=m
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_MATCH_OWNER=m
+CONFIG_IP_NF_MATCH_ADDRTYPE=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_LOG=m
+CONFIG_IP_NF_TARGET_ULOG=m
+CONFIG_NF_NAT=m
+CONFIG_NF_NAT_NEEDED=y
+CONFIG_IP_NF_TARGET_MASQUERADE=m
+CONFIG_IP_NF_TARGET_REDIRECT=m
+CONFIG_IP_NF_TARGET_NETMAP=m
+CONFIG_IP_NF_TARGET_SAME=m
+CONFIG_NF_NAT_SNMP_BASIC=m
+CONFIG_NF_NAT_PROTO_GRE=m
+CONFIG_NF_NAT_FTP=m
+CONFIG_NF_NAT_IRC=m
+CONFIG_NF_NAT_TFTP=m
+CONFIG_NF_NAT_AMANDA=m
+CONFIG_NF_NAT_PPTP=m
+CONFIG_NF_NAT_H323=m
+CONFIG_NF_NAT_SIP=m
+CONFIG_IP_NF_MANGLE=m
+CONFIG_IP_NF_TARGET_TOS=m
+CONFIG_IP_NF_TARGET_ECN=m
+CONFIG_IP_NF_TARGET_TTL=m
+CONFIG_IP_NF_TARGET_CLUSTERIP=m
+CONFIG_IP_NF_RAW=m
+CONFIG_IP_NF_ARPTABLES=m
+CONFIG_IP_NF_ARPFILTER=m
+CONFIG_IP_NF_ARP_MANGLE=m
+
+#
+# IPv6: Netfilter Configuration (EXPERIMENTAL)
+#
+CONFIG_NF_CONNTRACK_IPV6=m
+# CONFIG_IP6_NF_QUEUE is not set
+CONFIG_IP6_NF_IPTABLES=m
+CONFIG_IP6_NF_MATCH_RT=m
+CONFIG_IP6_NF_MATCH_OPTS=m
+CONFIG_IP6_NF_MATCH_FRAG=m
+CONFIG_IP6_NF_MATCH_HL=m
+CONFIG_IP6_NF_MATCH_OWNER=m
+CONFIG_IP6_NF_MATCH_IPV6HEADER=m
+CONFIG_IP6_NF_MATCH_AH=m
+CONFIG_IP6_NF_MATCH_MH=m
+CONFIG_IP6_NF_MATCH_EUI64=m
+CONFIG_IP6_NF_FILTER=m
+CONFIG_IP6_NF_TARGET_LOG=m
+CONFIG_IP6_NF_TARGET_REJECT=m
+CONFIG_IP6_NF_MANGLE=m
+CONFIG_IP6_NF_TARGET_HL=m
+CONFIG_IP6_NF_RAW=m
+
+#
+# Bridge: Netfilter Configuration
+#
+CONFIG_BRIDGE_NF_EBTABLES=m
+CONFIG_BRIDGE_EBT_BROUTE=m
+CONFIG_BRIDGE_EBT_T_FILTER=m
+CONFIG_BRIDGE_EBT_T_NAT=m
+CONFIG_BRIDGE_EBT_802_3=m
+CONFIG_BRIDGE_EBT_AMONG=m
+CONFIG_BRIDGE_EBT_ARP=m
+CONFIG_BRIDGE_EBT_IP=m
+CONFIG_BRIDGE_EBT_LIMIT=m
+CONFIG_BRIDGE_EBT_MARK=m
+CONFIG_BRIDGE_EBT_PKTTYPE=m
+CONFIG_BRIDGE_EBT_STP=m
+CONFIG_BRIDGE_EBT_VLAN=m
+CONFIG_BRIDGE_EBT_ARPREPLY=m
+CONFIG_BRIDGE_EBT_DNAT=m
+CONFIG_BRIDGE_EBT_MARK_T=m
+CONFIG_BRIDGE_EBT_REDIRECT=m
+CONFIG_BRIDGE_EBT_SNAT=m
+CONFIG_BRIDGE_EBT_LOG=m
+CONFIG_BRIDGE_EBT_ULOG=m
+# CONFIG_IP_DCCP is not set
+# CONFIG_IP_SCTP is not set
+CONFIG_TIPC=m
+# CONFIG_TIPC_ADVANCED is not set
+# CONFIG_TIPC_DEBUG is not set
+# CONFIG_ATM is not set
+CONFIG_BRIDGE=m
+CONFIG_VLAN_8021Q=m
+# CONFIG_DECNET is not set
+CONFIG_LLC=m
+# CONFIG_LLC2 is not set
+CONFIG_IPX=m
+# CONFIG_IPX_INTERN is not set
+CONFIG_ATALK=m
+CONFIG_DEV_APPLETALK=m
+CONFIG_IPDDP=m
+CONFIG_IPDDP_ENCAP=y
+CONFIG_IPDDP_DECAP=y
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_ECONET is not set
+# CONFIG_WAN_ROUTER is not set
+
+#
+# QoS and/or fair queueing
+#
+# CONFIG_NET_SCHED is not set
+CONFIG_NET_CLS_ROUTE=y
+
+#
+# Network testing
+#
+CONFIG_NET_PKTGEN=m
+# CONFIG_HAMRADIO is not set
+# CONFIG_IRDA is not set
+CONFIG_BT=m
+CONFIG_BT_L2CAP=m
+CONFIG_BT_SCO=m
+CONFIG_BT_RFCOMM=m
+CONFIG_BT_RFCOMM_TTY=y
+CONFIG_BT_BNEP=m
+CONFIG_BT_BNEP_MC_FILTER=y
+CONFIG_BT_BNEP_PROTO_FILTER=y
+CONFIG_BT_CMTP=m
+CONFIG_BT_HIDP=m
+
+#
+# Bluetooth device drivers
+#
+CONFIG_BT_HCIUSB=m
+CONFIG_BT_HCIUSB_SCO=y
+CONFIG_BT_HCIUART=m
+CONFIG_BT_HCIUART_H4=y
+CONFIG_BT_HCIUART_BCSP=y
+CONFIG_BT_HCIBCM203X=m
+CONFIG_BT_HCIBPA10X=m
+CONFIG_BT_HCIBFUSB=m
+CONFIG_BT_HCIVHCI=m
+# CONFIG_AF_RXRPC is not set
+
+#
+# Wireless
+#
+# CONFIG_CFG80211 is not set
+CONFIG_WIRELESS_EXT=y
+# CONFIG_MAC80211 is not set
+CONFIG_IEEE80211=m
+# CONFIG_IEEE80211_DEBUG is not set
+CONFIG_IEEE80211_CRYPT_WEP=m
+CONFIG_IEEE80211_CRYPT_CCMP=m
+CONFIG_IEEE80211_CRYPT_TKIP=m
+CONFIG_IEEE80211_SOFTMAC=m
+# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
+CONFIG_RFKILL=m
+# CONFIG_RFKILL_INPUT is not set
+# CONFIG_NET_9P is not set
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=y
+# CONFIG_SYS_HYPERVISOR is not set
+# CONFIG_CONNECTOR is not set
+CONFIG_MTD=y
+# CONFIG_MTD_DEBUG is not set
+CONFIG_MTD_CONCAT=y
+CONFIG_MTD_PARTITIONS=y
+CONFIG_MTD_REDBOOT_PARTS=y
+CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1
+CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED=y
+# CONFIG_MTD_REDBOOT_PARTS_READONLY is not set
+# CONFIG_MTD_CMDLINE_PARTS is not set
+# CONFIG_MTD_AFS_PARTS is not set
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=y
+CONFIG_MTD_BLKDEVS=y
+CONFIG_MTD_BLOCK=y
+# CONFIG_FTL is not set
+CONFIG_NFTL=y
+CONFIG_NFTL_RW=y
+# CONFIG_INFTL is not set
+# CONFIG_RFD_FTL is not set
+# CONFIG_SSFDC is not set
+
+#
+# RAM/ROM/Flash chip drivers
+#
+CONFIG_MTD_CFI=y
+# CONFIG_MTD_JEDECPROBE is not set
+CONFIG_MTD_GEN_PROBE=y
+CONFIG_MTD_CFI_ADV_OPTIONS=y
+# CONFIG_MTD_CFI_NOSWAP is not set
+CONFIG_MTD_CFI_BE_BYTE_SWAP=y
+# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
+CONFIG_MTD_CFI_GEOMETRY=y
+# CONFIG_MTD_MAP_BANK_WIDTH_1 is not set
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+# CONFIG_MTD_MAP_BANK_WIDTH_4 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
+CONFIG_MTD_CFI_I1=y
+CONFIG_MTD_CFI_I2=y
+# CONFIG_MTD_CFI_I4 is not set
+# CONFIG_MTD_CFI_I8 is not set
+# CONFIG_MTD_OTP is not set
+CONFIG_MTD_CFI_INTELEXT=y
+# CONFIG_MTD_CFI_AMDSTD is not set
+# CONFIG_MTD_CFI_STAA is not set
+CONFIG_MTD_CFI_UTIL=y
+# CONFIG_MTD_RAM is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+
+#
+# Mapping drivers for chip access
+#
+CONFIG_MTD_COMPLEX_MAPPINGS=y
+# CONFIG_MTD_PHYSMAP is not set
+# CONFIG_MTD_ARM_INTEGRATOR is not set
+CONFIG_MTD_IXP4XX=y
+# CONFIG_MTD_PCI is not set
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_PMC551 is not set
+# CONFIG_MTD_SLRAM is not set
+# CONFIG_MTD_PHRAM is not set
+# CONFIG_MTD_MTDRAM is not set
+# CONFIG_MTD_BLOCK2MTD is not set
+
+#
+# Disk-On-Chip Device Drivers
+#
+# CONFIG_MTD_DOC2000 is not set
+# CONFIG_MTD_DOC2001 is not set
+# CONFIG_MTD_DOC2001PLUS is not set
+# CONFIG_MTD_NAND is not set
+# CONFIG_MTD_ONENAND is not set
+
+#
+# UBI - Unsorted block images
+#
+# CONFIG_MTD_UBI is not set
+# CONFIG_PARPORT is not set
+CONFIG_BLK_DEV=y
+# CONFIG_BLK_CPQ_DA is not set
+# CONFIG_BLK_CPQ_CISS_DA is not set
+# CONFIG_BLK_DEV_DAC960 is not set
+# CONFIG_BLK_DEV_UMEM is not set
+# CONFIG_BLK_DEV_COW_COMMON is not set
+CONFIG_BLK_DEV_LOOP=m
+# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+CONFIG_BLK_DEV_NBD=m
+# CONFIG_BLK_DEV_SX8 is not set
+# CONFIG_BLK_DEV_UB is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=4
+CONFIG_BLK_DEV_RAM_SIZE=10240
+CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
+CONFIG_CDROM_PKTCDVD=m
+CONFIG_CDROM_PKTCDVD_BUFFERS=8
+# CONFIG_CDROM_PKTCDVD_WCACHE is not set
+CONFIG_ATA_OVER_ETH=m
+# CONFIG_IDE is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+CONFIG_SCSI=y
+CONFIG_SCSI_DMA=y
+# CONFIG_SCSI_TGT is not set
+# CONFIG_SCSI_NETLINK is not set
+CONFIG_SCSI_PROC_FS=y
+
+#
+# SCSI support type (disk, tape, CD-ROM)
+#
+CONFIG_BLK_DEV_SD=y
+CONFIG_CHR_DEV_ST=m
+# CONFIG_CHR_DEV_OSST is not set
+CONFIG_BLK_DEV_SR=m
+# CONFIG_BLK_DEV_SR_VENDOR is not set
+CONFIG_CHR_DEV_SG=m
+# CONFIG_CHR_DEV_SCH is not set
+
+#
+# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
+#
+CONFIG_SCSI_MULTI_LUN=y
+# CONFIG_SCSI_CONSTANTS is not set
+# CONFIG_SCSI_LOGGING is not set
+# CONFIG_SCSI_SCAN_ASYNC is not set
+CONFIG_SCSI_WAIT_SCAN=m
+
+#
+# SCSI Transports
+#
+# CONFIG_SCSI_SPI_ATTRS is not set
+# CONFIG_SCSI_FC_ATTRS is not set
+CONFIG_SCSI_ISCSI_ATTRS=m
+# CONFIG_SCSI_SAS_LIBSAS is not set
+CONFIG_SCSI_LOWLEVEL=y
+CONFIG_ISCSI_TCP=m
+# 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_DMX3191D is not set
+# CONFIG_SCSI_FUTURE_DOMAIN 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_IPR 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=m
+# CONFIG_ATA_NONSTANDARD is not set
+# CONFIG_SATA_AHCI is not set
+# CONFIG_SATA_SVW is not set
+# CONFIG_ATA_PIIX is not set
+# CONFIG_SATA_MV is not set
+# CONFIG_SATA_NV is not set
+# CONFIG_PDC_ADMA is not set
+# CONFIG_SATA_QSTOR is not set
+# CONFIG_SATA_PROMISE is not set
+# CONFIG_SATA_SX4 is not set
+# CONFIG_SATA_SIL is not set
+# CONFIG_SATA_SIL24 is not set
+# CONFIG_SATA_SIS is not set
+# CONFIG_SATA_ULI is not set
+CONFIG_SATA_VIA=m
+# CONFIG_SATA_VITESSE is not set
+# CONFIG_SATA_INIC162X is not set
+# CONFIG_PATA_ALI is not set
+# CONFIG_PATA_AMD is not set
+CONFIG_PATA_ARTOP=m
+# CONFIG_PATA_ATIIXP is not set
+# CONFIG_PATA_CMD640_PCI is not set
+# CONFIG_PATA_CMD64X is not set
+# CONFIG_PATA_CS5520 is not set
+# CONFIG_PATA_CS5530 is not set
+# CONFIG_PATA_CYPRESS is not set
+# CONFIG_PATA_EFAR is not set
+# CONFIG_ATA_GENERIC is not set
+# CONFIG_PATA_HPT366 is not set
+# CONFIG_PATA_HPT37X is not set
+# CONFIG_PATA_HPT3X2N is not set
+# CONFIG_PATA_HPT3X3 is not set
+# CONFIG_PATA_IT821X is not set
+# CONFIG_PATA_IT8213 is not set
+# CONFIG_PATA_JMICRON is not set
+# CONFIG_PATA_TRIFLEX is not set
+# CONFIG_PATA_MARVELL is not set
+# CONFIG_PATA_MPIIX is not set
+# CONFIG_PATA_OLDPIIX is not set
+# CONFIG_PATA_NETCELL is not set
+# CONFIG_PATA_NS87410 is not set
+# CONFIG_PATA_OPTI is not set
+# CONFIG_PATA_OPTIDMA is not set
+# CONFIG_PATA_PDC_OLD is not set
+# CONFIG_PATA_RADISYS is not set
+# CONFIG_PATA_RZ1000 is not set
+# CONFIG_PATA_SC1200 is not set
+# CONFIG_PATA_SERVERWORKS is not set
+# CONFIG_PATA_PDC2027X is not set
+# CONFIG_PATA_SIL680 is not set
+# CONFIG_PATA_SIS is not set
+# CONFIG_PATA_VIA is not set
+# CONFIG_PATA_WINBOND is not set
+# CONFIG_PATA_PLATFORM is not set
+CONFIG_PATA_IXP4XX_CF=m
+CONFIG_MD=y
+CONFIG_BLK_DEV_MD=m
+CONFIG_MD_LINEAR=m
+CONFIG_MD_RAID0=m
+CONFIG_MD_RAID1=m
+CONFIG_MD_RAID10=m
+CONFIG_MD_RAID456=m
+CONFIG_MD_RAID5_RESHAPE=y
+CONFIG_MD_MULTIPATH=m
+CONFIG_MD_FAULTY=m
+CONFIG_BLK_DEV_DM=m
+# CONFIG_DM_DEBUG is not set
+CONFIG_DM_CRYPT=m
+# CONFIG_DM_SNAPSHOT is not set
+# CONFIG_DM_MIRROR is not set
+# CONFIG_DM_ZERO is not set
+# CONFIG_DM_MULTIPATH is not set
+# CONFIG_DM_DELAY is not set
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+# CONFIG_FUSION_SPI is not set
+# CONFIG_FUSION_FC is not set
+# CONFIG_FUSION_SAS is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+# CONFIG_FIREWIRE is not set
+# CONFIG_IEEE1394 is not set
+# CONFIG_I2O is not set
+CONFIG_NETDEVICES=y
+# CONFIG_NETDEVICES_MULTIQUEUE is not set
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_MACVLAN is not set
+# CONFIG_EQUALIZER is not set
+CONFIG_TUN=m
+# CONFIG_ARCNET is not set
+# CONFIG_PHYLIB is not set
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=y
+CONFIG_IXP4XX_ETH=y
+# CONFIG_AX88796 is not set
+# CONFIG_HAPPYMEAL is not set
+# CONFIG_SUNGEM is not set
+# CONFIG_CASSINI is not set
+# CONFIG_NET_VENDOR_3COM is not set
+# CONFIG_SMC91X is not set
+# CONFIG_DM9000 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 is not set
+# 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_NETDEV_1000=y
+# CONFIG_ACENIC is not set
+# CONFIG_DL2K is not set
+# CONFIG_E1000 is not set
+# CONFIG_NS83820 is not set
+# CONFIG_HAMACHI is not set
+# CONFIG_YELLOWFIN is not set
+# CONFIG_R8169 is not set
+# CONFIG_SIS190 is not set
+# CONFIG_SKGE is not set
+# CONFIG_SKY2 is not set
+# CONFIG_SK98LIN is not set
+CONFIG_VIA_VELOCITY=m
+# CONFIG_TIGON3 is not set
+# CONFIG_BNX2 is not set
+# CONFIG_QLA3XXX is not set
+# CONFIG_ATL1 is not set
+# CONFIG_NETDEV_10000 is not set
+# CONFIG_TR is not set
+
+#
+# Wireless LAN
+#
+# CONFIG_WLAN_PRE80211 is not set
+CONFIG_WLAN_80211=y
+# CONFIG_IPW2100 is not set
+# CONFIG_IPW2200 is not set
+CONFIG_LIBERTAS=m
+CONFIG_LIBERTAS_USB=m
+# CONFIG_LIBERTAS_DEBUG is not set
+# CONFIG_HERMES is not set
+# CONFIG_ATMEL is not set
+# CONFIG_PRISM54 is not set
+CONFIG_USB_ZD1201=m
+# CONFIG_HOSTAP is not set
+# CONFIG_BCM43XX is not set
+CONFIG_ZD1211RW=m
+# CONFIG_ZD1211RW_DEBUG is not set
+
+#
+# USB Network Adapters
+#
+CONFIG_USB_CATC=m
+CONFIG_USB_KAWETH=m
+CONFIG_USB_PEGASUS=m
+CONFIG_USB_RTL8150=m
+CONFIG_USB_USBNET_MII=m
+CONFIG_USB_USBNET=m
+CONFIG_USB_NET_AX8817X=m
+CONFIG_USB_NET_CDCETHER=m
+CONFIG_USB_NET_DM9601=m
+CONFIG_USB_NET_GL620A=m
+CONFIG_USB_NET_NET1080=m
+CONFIG_USB_NET_PLUSB=m
+CONFIG_USB_NET_MCS7830=m
+# CONFIG_USB_NET_RNDIS_HOST is not set
+# CONFIG_USB_NET_CDC_SUBSET is not set
+CONFIG_USB_NET_ZAURUS=m
+# CONFIG_WAN is not set
+# CONFIG_FDDI is not set
+# CONFIG_HIPPI is not set
+CONFIG_PPP=m
+# CONFIG_PPP_MULTILINK is not set
+CONFIG_PPP_FILTER=y
+CONFIG_PPP_ASYNC=m
+CONFIG_PPP_SYNC_TTY=m
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+CONFIG_PPP_MPPE=m
+CONFIG_PPPOE=m
+# CONFIG_PPPOL2TP is not set
+# CONFIG_SLIP is not set
+CONFIG_SLHC=m
+# CONFIG_NET_FC is not set
+# CONFIG_SHAPER is not set
+CONFIG_NETCONSOLE=m
+CONFIG_NETPOLL=y
+# CONFIG_NETPOLL_TRAP is not set
+CONFIG_NET_POLL_CONTROLLER=y
+CONFIG_ISDN=m
+# CONFIG_ISDN_I4L is not set
+CONFIG_ISDN_CAPI=m
+CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON=y
+CONFIG_CAPI_TRACE=y
+# CONFIG_ISDN_CAPI_MIDDLEWARE is not set
+CONFIG_ISDN_CAPI_CAPI20=m
+
+#
+# CAPI hardware drivers
+#
+# CONFIG_CAPI_AVM is not set
+# CONFIG_CAPI_EICON is not set
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS is not set
+# CONFIG_INPUT_POLLDEV is not set
+
+#
+# Userland interfaces
+#
+# CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_TSDEV is not set
+CONFIG_INPUT_EVDEV=y
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# Input Device Drivers
+#
+# CONFIG_INPUT_KEYBOARD is not set
+# CONFIG_INPUT_MOUSE is not set
+# CONFIG_INPUT_JOYSTICK is not set
+# CONFIG_INPUT_TABLET is not set
+# CONFIG_INPUT_TOUCHSCREEN is not set
+CONFIG_INPUT_MISC=y
+CONFIG_INPUT_IXP4XX_BEEPER=y
+CONFIG_INPUT_ATI_REMOTE=m
+CONFIG_INPUT_ATI_REMOTE2=m
+CONFIG_INPUT_KEYSPAN_REMOTE=m
+# CONFIG_INPUT_POWERMATE is not set
+CONFIG_INPUT_YEALINK=m
+CONFIG_INPUT_UINPUT=m
+
+#
+# Hardware I/O ports
+#
+# CONFIG_SERIO is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+# CONFIG_VT is not set
+CONFIG_SERIAL_NONSTANDARD=y
+# CONFIG_COMPUTONE is not set
+# CONFIG_ROCKETPORT is not set
+# CONFIG_CYCLADES is not set
+# CONFIG_DIGIEPCA is not set
+# CONFIG_MOXA_INTELLIO is not set
+# CONFIG_MOXA_SMARTIO is not set
+# CONFIG_MOXA_SMARTIO_NEW is not set
+# CONFIG_ISI is not set
+# CONFIG_SYNCLINKMP is not set
+# CONFIG_SYNCLINK_GT is not set
+CONFIG_N_HDLC=m
+# CONFIG_RISCOM8 is not set
+# CONFIG_SPECIALIX is not set
+# CONFIG_SX is not set
+# CONFIG_RIO is not set
+# CONFIG_STALDRV is not set
+
+#
+# Serial drivers
+#
+CONFIG_SERIAL_8250=y
+CONFIG_SERIAL_8250_CONSOLE=y
+CONFIG_SERIAL_8250_PCI=m
+CONFIG_SERIAL_8250_NR_UARTS=2
+CONFIG_SERIAL_8250_RUNTIME_UARTS=2
+# CONFIG_SERIAL_8250_EXTENDED is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+# CONFIG_SERIAL_JSM is not set
+CONFIG_UNIX98_PTYS=y
+# CONFIG_LEGACY_PTYS is not set
+# CONFIG_IPMI_HANDLER is not set
+CONFIG_WATCHDOG=y
+# CONFIG_WATCHDOG_NOWAYOUT is not set
+
+#
+# Watchdog Device Drivers
+#
+# CONFIG_SOFT_WATCHDOG is not set
+CONFIG_IXP4XX_WATCHDOG=m
+
+#
+# PCI-based Watchdog Cards
+#
+# CONFIG_PCIPCWATCHDOG is not set
+# CONFIG_WDTPCI is not set
+
+#
+# USB-based Watchdog Cards
+#
+# CONFIG_USBPCWATCHDOG is not set
+CONFIG_HW_RANDOM=y
+CONFIG_HW_RANDOM_IXP4XX=y
+# CONFIG_NVRAM is not set
+# CONFIG_R3964 is not set
+# CONFIG_APPLICOM is not set
+# CONFIG_DRM is not set
+# CONFIG_RAW_DRIVER is not set
+# CONFIG_TCG_TPM is not set
+CONFIG_DEVPORT=y
+CONFIG_I2C=y
+CONFIG_I2C_BOARDINFO=y
+CONFIG_I2C_CHARDEV=y
+
+#
+# I2C Algorithms
+#
+CONFIG_I2C_ALGOBIT=y
+# CONFIG_I2C_ALGOPCF is not set
+# CONFIG_I2C_ALGOPCA is not set
+
+#
+# I2C Hardware Bus support
+#
+# CONFIG_I2C_ALI1535 is not set
+# CONFIG_I2C_ALI1563 is not set
+# CONFIG_I2C_ALI15X3 is not set
+# CONFIG_I2C_AMD756 is not set
+# CONFIG_I2C_AMD8111 is not set
+CONFIG_I2C_GPIO=y
+# CONFIG_I2C_I801 is not set
+# CONFIG_I2C_I810 is not set
+# CONFIG_I2C_PIIX4 is not set
+# CONFIG_I2C_IOP3XX is not set
+# CONFIG_I2C_IXP4XX is not set
+# CONFIG_I2C_NFORCE2 is not set
+# CONFIG_I2C_OCORES is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_PROSAVAGE is not set
+# CONFIG_I2C_SAVAGE4 is not set
+# CONFIG_I2C_SIMTEC is not set
+# CONFIG_I2C_SIS5595 is not set
+# CONFIG_I2C_SIS630 is not set
+# CONFIG_I2C_SIS96X is not set
+# CONFIG_I2C_TAOS_EVM is not set
+# CONFIG_I2C_STUB is not set
+CONFIG_I2C_TINY_USB=m
+# CONFIG_I2C_VIA is not set
+# CONFIG_I2C_VIAPRO is not set
+# CONFIG_I2C_VOODOO3 is not set
+
+#
+# Miscellaneous I2C Chip support
+#
+# CONFIG_SENSORS_DS1337 is not set
+# CONFIG_SENSORS_DS1374 is not set
+# CONFIG_DS1682 is not set
+CONFIG_SENSORS_EEPROM=y
+CONFIG_SENSORS_PCF8574=m
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_SENSORS_MAX6875 is not set
+# CONFIG_SENSORS_TSL2550 is not set
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CHIP is not set
+
+#
+# SPI support
+#
+# CONFIG_SPI is not set
+# CONFIG_SPI_MASTER is not set
+CONFIG_W1=m
+
+#
+# 1-wire Bus Masters
+#
+# CONFIG_W1_MASTER_MATROX is not set
+CONFIG_W1_MASTER_DS2490=m
+CONFIG_W1_MASTER_DS2482=m
+# CONFIG_W1_MASTER_DS1WM is not set
+
+#
+# 1-wire Slaves
+#
+CONFIG_W1_SLAVE_THERM=m
+CONFIG_W1_SLAVE_SMEM=m
+CONFIG_W1_SLAVE_DS2433=m
+CONFIG_W1_SLAVE_DS2433_CRC=y
+# CONFIG_W1_SLAVE_DS2760 is not set
+CONFIG_HWMON=m
+CONFIG_HWMON_VID=m
+# CONFIG_SENSORS_ABITUGURU is not set
+# CONFIG_SENSORS_ABITUGURU3 is not set
+CONFIG_SENSORS_AD7418=m
+# CONFIG_SENSORS_ADM1021 is not set
+# CONFIG_SENSORS_ADM1025 is not set
+# CONFIG_SENSORS_ADM1026 is not set
+# CONFIG_SENSORS_ADM1029 is not set
+# CONFIG_SENSORS_ADM1031 is not set
+# CONFIG_SENSORS_ADM9240 is not set
+# CONFIG_SENSORS_ASB100 is not set
+# CONFIG_SENSORS_ATXP1 is not set
+# CONFIG_SENSORS_DS1621 is not set
+# CONFIG_SENSORS_F71805F is not set
+# CONFIG_SENSORS_FSCHER is not set
+# CONFIG_SENSORS_FSCPOS is not set
+# CONFIG_SENSORS_GL518SM is not set
+# CONFIG_SENSORS_GL520SM is not set
+# CONFIG_SENSORS_IT87 is not set
+# CONFIG_SENSORS_LM63 is not set
+# CONFIG_SENSORS_LM75 is not set
+# CONFIG_SENSORS_LM77 is not set
+# CONFIG_SENSORS_LM78 is not set
+# CONFIG_SENSORS_LM80 is not set
+# CONFIG_SENSORS_LM83 is not set
+# CONFIG_SENSORS_LM85 is not set
+# CONFIG_SENSORS_LM87 is not set
+# CONFIG_SENSORS_LM90 is not set
+# CONFIG_SENSORS_LM92 is not set
+# CONFIG_SENSORS_LM93 is not set
+# CONFIG_SENSORS_MAX1619 is not set
+# CONFIG_SENSORS_MAX6650 is not set
+# CONFIG_SENSORS_PC87360 is not set
+# CONFIG_SENSORS_PC87427 is not set
+# CONFIG_SENSORS_SIS5595 is not set
+# CONFIG_SENSORS_DME1737 is not set
+# CONFIG_SENSORS_SMSC47M1 is not set
+# CONFIG_SENSORS_SMSC47M192 is not set
+# CONFIG_SENSORS_SMSC47B397 is not set
+# CONFIG_SENSORS_THMC50 is not set
+# CONFIG_SENSORS_VIA686A is not set
+# CONFIG_SENSORS_VT1211 is not set
+# CONFIG_SENSORS_VT8231 is not set
+CONFIG_SENSORS_W83781D=m
+# CONFIG_SENSORS_W83791D is not set
+# CONFIG_SENSORS_W83792D is not set
+# CONFIG_SENSORS_W83793 is not set
+# CONFIG_SENSORS_W83L785TS is not set
+# CONFIG_SENSORS_W83627HF is not set
+# CONFIG_SENSORS_W83627EHF is not set
+# CONFIG_HWMON_DEBUG_CHIP is not set
+CONFIG_MISC_DEVICES=y
+# CONFIG_PHANTOM is not set
+# CONFIG_EEPROM_93CX6 is not set
+# CONFIG_SGI_IOC4 is not set
+# CONFIG_TIFM_CORE is not set
+
+#
+# Multifunction device drivers
+#
+# CONFIG_MFD_SM501 is not set
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+
+#
+# LED drivers
+#
+CONFIG_LEDS_IXP4XX=y
+# CONFIG_LEDS_GPIO is not set
+
+#
+# LED Triggers
+#
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=y
+CONFIG_LEDS_TRIGGER_HEARTBEAT=y
+CONFIG_LEDS_TRIGGER_CPU_ACTIVITY=y
+
+#
+# Multimedia devices
+#
+CONFIG_VIDEO_DEV=m
+# CONFIG_VIDEO_V4L1 is not set
+# CONFIG_VIDEO_V4L1_COMPAT is not set
+CONFIG_VIDEO_V4L2=y
+CONFIG_VIDEO_CAPTURE_DRIVERS=y
+# CONFIG_VIDEO_ADV_DEBUG is not set
+CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
+CONFIG_VIDEO_VIVI=m
+CONFIG_VIDEO_SAA5246A=m
+CONFIG_VIDEO_SAA5249=m
+# CONFIG_TUNER_TEA5761 is not set
+CONFIG_VIDEO_SAA7134=m
+# CONFIG_VIDEO_SAA7134_ALSA is not set
+CONFIG_VIDEO_HEXIUM_ORION=m
+CONFIG_VIDEO_HEXIUM_GEMINI=m
+CONFIG_VIDEO_CX88=m
+CONFIG_VIDEO_CX88_ALSA=m
+# CONFIG_VIDEO_CX88_BLACKBIRD is not set
+# CONFIG_VIDEO_CAFE_CCIC is not set
+CONFIG_V4L_USB_DRIVERS=y
+# CONFIG_VIDEO_PVRUSB2 is not set
+# CONFIG_VIDEO_USBVISION is not set
+# CONFIG_USB_ET61X251 is not set
+# CONFIG_USB_SN9C102 is not set
+# CONFIG_USB_ZC0301 is not set
+CONFIG_USB_ZR364XX=m
+# CONFIG_RADIO_ADAPTERS is not set
+# CONFIG_DVB_CORE is not set
+CONFIG_VIDEO_SAA7146=m
+CONFIG_VIDEO_SAA7146_VV=m
+CONFIG_VIDEO_TUNER=m
+CONFIG_VIDEO_BUF=m
+CONFIG_VIDEO_BTCX=m
+CONFIG_VIDEO_IR_I2C=m
+CONFIG_VIDEO_IR=m
+CONFIG_VIDEO_TVEEPROM=m
+# CONFIG_DAB is not set
+
+#
+# Graphics support
+#
+# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
+
+#
+# Display device support
+#
+# CONFIG_DISPLAY_SUPPORT is not set
+# CONFIG_VGASTATE is not set
+CONFIG_VIDEO_OUTPUT_CONTROL=m
+# CONFIG_FB is not set
+
+#
+# Sound
+#
+CONFIG_SOUND=m
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=m
+CONFIG_SND_TIMER=m
+CONFIG_SND_PCM=m
+CONFIG_SND_HWDEP=m
+CONFIG_SND_RAWMIDI=m
+# CONFIG_SND_SEQUENCER is not set
+CONFIG_SND_OSSEMUL=y
+CONFIG_SND_MIXER_OSS=m
+CONFIG_SND_PCM_OSS=m
+CONFIG_SND_PCM_OSS_PLUGINS=y
+# CONFIG_SND_DYNAMIC_MINORS is not set
+CONFIG_SND_SUPPORT_OLD_API=y
+CONFIG_SND_VERBOSE_PROCFS=y
+# CONFIG_SND_VERBOSE_PRINTK is not set
+# CONFIG_SND_DEBUG is not set
+
+#
+# Generic devices
+#
+# CONFIG_SND_DUMMY is not set
+# CONFIG_SND_MTPAV is not set
+# CONFIG_SND_SERIAL_U16550 is not set
+# CONFIG_SND_MPU401 is not set
+
+#
+# PCI devices
+#
+# CONFIG_SND_AD1889 is not set
+# CONFIG_SND_ALS300 is not set
+# CONFIG_SND_ALI5451 is not set
+# CONFIG_SND_ATIIXP is not set
+# CONFIG_SND_ATIIXP_MODEM is not set
+# CONFIG_SND_AU8810 is not set
+# CONFIG_SND_AU8820 is not set
+# CONFIG_SND_AU8830 is not set
+# CONFIG_SND_AZT3328 is not set
+# CONFIG_SND_BT87X is not set
+# CONFIG_SND_CA0106 is not set
+# CONFIG_SND_CMIPCI is not set
+# CONFIG_SND_CS4281 is not set
+# CONFIG_SND_CS46XX is not set
+# CONFIG_SND_DARLA20 is not set
+# CONFIG_SND_GINA20 is not set
+# CONFIG_SND_LAYLA20 is not set
+# CONFIG_SND_DARLA24 is not set
+# CONFIG_SND_GINA24 is not set
+# CONFIG_SND_LAYLA24 is not set
+# CONFIG_SND_MONA is not set
+# CONFIG_SND_MIA is not set
+# CONFIG_SND_ECHO3G is not set
+# CONFIG_SND_INDIGO is not set
+# CONFIG_SND_INDIGOIO is not set
+# CONFIG_SND_INDIGODJ is not set
+# CONFIG_SND_EMU10K1 is not set
+# CONFIG_SND_EMU10K1X is not set
+# CONFIG_SND_ENS1370 is not set
+# CONFIG_SND_ENS1371 is not set
+# CONFIG_SND_ES1938 is not set
+# CONFIG_SND_ES1968 is not set
+# CONFIG_SND_FM801 is not set
+# CONFIG_SND_HDA_INTEL is not set
+# CONFIG_SND_HDSP is not set
+# CONFIG_SND_HDSPM is not set
+# CONFIG_SND_ICE1712 is not set
+# CONFIG_SND_ICE1724 is not set
+# CONFIG_SND_INTEL8X0 is not set
+# CONFIG_SND_INTEL8X0M is not set
+# CONFIG_SND_KORG1212 is not set
+# CONFIG_SND_MAESTRO3 is not set
+# CONFIG_SND_MIXART is not set
+# CONFIG_SND_NM256 is not set
+# CONFIG_SND_PCXHR is not set
+# CONFIG_SND_RIPTIDE is not set
+# CONFIG_SND_RME32 is not set
+# CONFIG_SND_RME96 is not set
+# CONFIG_SND_RME9652 is not set
+# CONFIG_SND_SONICVIBES is not set
+# CONFIG_SND_TRIDENT is not set
+# CONFIG_SND_VIA82XX is not set
+# CONFIG_SND_VIA82XX_MODEM is not set
+# CONFIG_SND_VX222 is not set
+# CONFIG_SND_YMFPCI is not set
+
+#
+# ALSA ARM devices
+#
+
+#
+# USB devices
+#
+CONFIG_SND_USB_AUDIO=m
+CONFIG_SND_USB_CAIAQ=m
+CONFIG_SND_USB_CAIAQ_INPUT=y
+
+#
+# System on Chip audio support
+#
+# CONFIG_SND_SOC is not set
+
+#
+# SoC Audio support for SuperH
+#
+
+#
+# Open Sound System
+#
+# CONFIG_SOUND_PRIME is not set
+CONFIG_HID_SUPPORT=y
+CONFIG_HID=m
+# CONFIG_HID_DEBUG is not set
+
+#
+# USB Input Devices
+#
+CONFIG_USB_HID=m
+# CONFIG_USB_HIDINPUT_POWERBOOK is not set
+# CONFIG_HID_FF is not set
+CONFIG_USB_HIDDEV=y
+
+#
+# USB HID Boot Protocol drivers
+#
+CONFIG_USB_KBD=m
+CONFIG_USB_MOUSE=m
+CONFIG_USB_SUPPORT=y
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB_ARCH_HAS_OHCI=y
+CONFIG_USB_ARCH_HAS_EHCI=y
+CONFIG_USB=y
+# CONFIG_USB_DEBUG is not set
+
+#
+# Miscellaneous USB options
+#
+CONFIG_USB_DEVICEFS=y
+# CONFIG_USB_DEVICE_CLASS is not set
+# CONFIG_USB_DYNAMIC_MINORS is not set
+# CONFIG_USB_OTG is not set
+
+#
+# USB Host Controller Drivers
+#
+CONFIG_USB_EHCI_HCD=y
+CONFIG_USB_EHCI_SPLIT_ISO=y
+CONFIG_USB_EHCI_ROOT_HUB_TT=y
+CONFIG_USB_EHCI_TT_NEWSCHED=y
+# CONFIG_USB_ISP116X_HCD is not set
+CONFIG_USB_OHCI_HCD=m
+# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
+# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+CONFIG_USB_UHCI_HCD=m
+# CONFIG_USB_U132_HCD is not set
+# CONFIG_USB_SL811_HCD is not set
+# CONFIG_USB_R8A66597_HCD is not set
+
+#
+# USB Device Class drivers
+#
+CONFIG_USB_ACM=m
+CONFIG_USB_PRINTER=m
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# may also be needed; see USB_STORAGE Help for more information
+#
+CONFIG_USB_STORAGE=y
+# CONFIG_USB_STORAGE_DEBUG is not set
+# CONFIG_USB_STORAGE_DATAFAB is not set
+CONFIG_USB_STORAGE_FREECOM=y
+# CONFIG_USB_STORAGE_DPCM is not set
+CONFIG_USB_STORAGE_USBAT=y
+CONFIG_USB_STORAGE_SDDR09=y
+CONFIG_USB_STORAGE_SDDR55=y
+CONFIG_USB_STORAGE_JUMPSHOT=y
+CONFIG_USB_STORAGE_ALAUDA=y
+CONFIG_USB_STORAGE_ONETOUCH=y
+CONFIG_USB_STORAGE_KARMA=y
+# CONFIG_USB_LIBUSUAL is not set
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_MICROTEK is not set
+# CONFIG_USB_MON is not set
+
+#
+# USB port drivers
+#
+
+#
+# USB Serial Converter support
+#
+CONFIG_USB_SERIAL=m
+CONFIG_USB_SERIAL_GENERIC=y
+CONFIG_USB_SERIAL_AIRCABLE=m
+# CONFIG_USB_SERIAL_AIRPRIME is not set
+CONFIG_USB_SERIAL_ARK3116=m
+CONFIG_USB_SERIAL_BELKIN=m
+CONFIG_USB_SERIAL_WHITEHEAT=m
+CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
+CONFIG_USB_SERIAL_CP2101=m
+CONFIG_USB_SERIAL_CYPRESS_M8=m
+CONFIG_USB_SERIAL_EMPEG=m
+CONFIG_USB_SERIAL_FTDI_SIO=m
+CONFIG_USB_SERIAL_FUNSOFT=m
+CONFIG_USB_SERIAL_VISOR=m
+CONFIG_USB_SERIAL_IPAQ=m
+CONFIG_USB_SERIAL_IR=m
+CONFIG_USB_SERIAL_EDGEPORT=m
+CONFIG_USB_SERIAL_EDGEPORT_TI=m
+CONFIG_USB_SERIAL_GARMIN=m
+CONFIG_USB_SERIAL_IPW=m
+CONFIG_USB_SERIAL_KEYSPAN_PDA=m
+CONFIG_USB_SERIAL_KEYSPAN=m
+CONFIG_USB_SERIAL_KEYSPAN_MPR=y
+CONFIG_USB_SERIAL_KEYSPAN_USA28=y
+CONFIG_USB_SERIAL_KEYSPAN_USA28X=y
+CONFIG_USB_SERIAL_KEYSPAN_USA28XA=y
+CONFIG_USB_SERIAL_KEYSPAN_USA28XB=y
+CONFIG_USB_SERIAL_KEYSPAN_USA19=y
+CONFIG_USB_SERIAL_KEYSPAN_USA18X=y
+CONFIG_USB_SERIAL_KEYSPAN_USA19W=y
+CONFIG_USB_SERIAL_KEYSPAN_USA19QW=y
+CONFIG_USB_SERIAL_KEYSPAN_USA19QI=y
+CONFIG_USB_SERIAL_KEYSPAN_USA49W=y
+CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y
+CONFIG_USB_SERIAL_KLSI=m
+CONFIG_USB_SERIAL_KOBIL_SCT=m
+CONFIG_USB_SERIAL_MCT_U232=m
+CONFIG_USB_SERIAL_MOS7720=m
+CONFIG_USB_SERIAL_MOS7840=m
+CONFIG_USB_SERIAL_NAVMAN=m
+CONFIG_USB_SERIAL_PL2303=m
+# CONFIG_USB_SERIAL_OTI6858 is not set
+CONFIG_USB_SERIAL_HP4X=m
+CONFIG_USB_SERIAL_SAFE=m
+# CONFIG_USB_SERIAL_SAFE_PADDED is not set
+# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set
+CONFIG_USB_SERIAL_TI=m
+CONFIG_USB_SERIAL_CYBERJACK=m
+CONFIG_USB_SERIAL_XIRCOM=m
+CONFIG_USB_SERIAL_OPTION=m
+CONFIG_USB_SERIAL_OMNINET=m
+# CONFIG_USB_SERIAL_DEBUG is not set
+CONFIG_USB_EZUSB=y
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_EMI62 is not set
+# CONFIG_USB_EMI26 is not set
+CONFIG_USB_ADUTUX=m
+# CONFIG_USB_AUERSWALD is not set
+CONFIG_USB_RIO500=m
+CONFIG_USB_LEGOTOWER=m
+CONFIG_USB_LCD=m
+CONFIG_USB_BERRY_CHARGE=m
+CONFIG_USB_LED=m
+# CONFIG_USB_CYPRESS_CY7C63 is not set
+CONFIG_USB_CYTHERM=m
+CONFIG_USB_PHIDGET=m
+CONFIG_USB_PHIDGETKIT=m
+CONFIG_USB_PHIDGETMOTORCONTROL=m
+CONFIG_USB_PHIDGETSERVO=m
+CONFIG_USB_IDMOUSE=m
+CONFIG_USB_FTDI_ELAN=m
+# CONFIG_USB_APPLEDISPLAY is not set
+CONFIG_USB_SISUSBVGA=m
+# CONFIG_USB_LD is not set
+# CONFIG_USB_TRANCEVIBRATOR is not set
+# CONFIG_USB_IOWARRIOR is not set
+# CONFIG_USB_TEST is not set
+
+#
+# USB DSL modem support
+#
+
+#
+# USB Gadget Support
+#
+# CONFIG_USB_GADGET is not set
+# CONFIG_MMC is not set
+CONFIG_RTC_LIB=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_HCTOSYS=y
+CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
+# CONFIG_RTC_DEBUG is not set
+
+#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=y
+CONFIG_RTC_INTF_PROC=y
+CONFIG_RTC_INTF_DEV=y
+# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
+# CONFIG_RTC_DRV_TEST is not set
+
+#
+# I2C RTC drivers
+#
+CONFIG_RTC_DRV_DS1307=y
+CONFIG_RTC_DRV_DS1672=y
+# CONFIG_RTC_DRV_MAX6900 is not set
+# CONFIG_RTC_DRV_RS5C372 is not set
+CONFIG_RTC_DRV_ISL1208=y
+CONFIG_RTC_DRV_X1205=y
+CONFIG_RTC_DRV_PCF8563=y
+# CONFIG_RTC_DRV_PCF8583 is not set
+# CONFIG_RTC_DRV_M41T80 is not set
+
+#
+# SPI RTC drivers
+#
+
+#
+# Platform RTC drivers
+#
+# CONFIG_RTC_DRV_CMOS is not set
+# CONFIG_RTC_DRV_DS1553 is not set
+# CONFIG_RTC_DRV_STK17TA8 is not set
+# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
+# CONFIG_RTC_DRV_M48T59 is not set
+# CONFIG_RTC_DRV_V3020 is not set
+
+#
+# on-CPU RTC drivers
+#
+
+#
+# DMA Engine support
+#
+# CONFIG_DMA_ENGINE is not set
+
+#
+# DMA Clients
+#
+
+#
+# DMA Devices
+#
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=m
+CONFIG_EXT2_FS_XATTR=y
+CONFIG_EXT2_FS_POSIX_ACL=y
+CONFIG_EXT2_FS_SECURITY=y
+# CONFIG_EXT2_FS_XIP is not set
+CONFIG_EXT3_FS=m
+CONFIG_EXT3_FS_XATTR=y
+CONFIG_EXT3_FS_POSIX_ACL=y
+CONFIG_EXT3_FS_SECURITY=y
+# CONFIG_EXT4DEV_FS is not set
+CONFIG_JBD=m
+# CONFIG_JBD_DEBUG is not set
+CONFIG_FS_MBCACHE=m
+CONFIG_REISERFS_FS=m
+# CONFIG_REISERFS_CHECK is not set
+# CONFIG_REISERFS_PROC_INFO is not set
+CONFIG_REISERFS_FS_XATTR=y
+CONFIG_REISERFS_FS_POSIX_ACL=y
+CONFIG_REISERFS_FS_SECURITY=y
+# CONFIG_JFS_FS is not set
+CONFIG_FS_POSIX_ACL=y
+# CONFIG_XFS_FS is not set
+# CONFIG_GFS2_FS is not set
+# CONFIG_OCFS2_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+# CONFIG_QUOTA is not set
+CONFIG_DNOTIFY=y
+# CONFIG_AUTOFS_FS is not set
+CONFIG_AUTOFS4_FS=m
+CONFIG_FUSE_FS=m
+
+#
+# CD-ROM/DVD Filesystems
+#
+CONFIG_ISO9660_FS=m
+CONFIG_JOLIET=y
+CONFIG_ZISOFS=y
+CONFIG_UDF_FS=m
+CONFIG_UDF_NLS=y
+
+#
+# DOS/FAT/NT Filesystems
+#
+CONFIG_FAT_FS=m
+CONFIG_MSDOS_FS=m
+CONFIG_VFAT_FS=m
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="utf8"
+CONFIG_NTFS_FS=m
+# CONFIG_NTFS_DEBUG is not set
+CONFIG_NTFS_RW=y
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_TMPFS_POSIX_ACL is not set
+# CONFIG_HUGETLB_PAGE is not set
+CONFIG_RAMFS=y
+# CONFIG_CONFIGFS_FS is not set
+
+#
+# Miscellaneous filesystems
+#
+# CONFIG_ADFS_FS is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_HFS_FS is not set
+# CONFIG_HFSPLUS_FS is not set
+# CONFIG_BEFS_FS is not set
+# CONFIG_BFS_FS is not set
+# CONFIG_EFS_FS is not set
+CONFIG_JFFS2_FS=y
+CONFIG_JFFS2_FS_DEBUG=0
+CONFIG_JFFS2_FS_WRITEBUFFER=y
+# CONFIG_JFFS2_SUMMARY is not set
+# CONFIG_JFFS2_FS_XATTR is not set
+# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
+CONFIG_JFFS2_ZLIB=y
+CONFIG_JFFS2_RTIME=y
+# CONFIG_JFFS2_RUBIN is not set
+# CONFIG_CRAMFS is not set
+# CONFIG_VXFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+
+#
+# Network File Systems
+#
+CONFIG_NFS_FS=m
+CONFIG_NFS_V3=y
+# CONFIG_NFS_V3_ACL is not set
+CONFIG_NFS_V4=y
+# CONFIG_NFS_DIRECTIO is not set
+CONFIG_NFSD=m
+CONFIG_NFSD_V3=y
+# CONFIG_NFSD_V3_ACL is not set
+CONFIG_NFSD_V4=y
+CONFIG_NFSD_TCP=y
+CONFIG_LOCKD=m
+CONFIG_LOCKD_V4=y
+CONFIG_EXPORTFS=m
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=m
+CONFIG_SUNRPC_GSS=m
+CONFIG_SUNRPC_BIND34=y
+CONFIG_RPCSEC_GSS_KRB5=m
+# CONFIG_RPCSEC_GSS_SPKM3 is not set
+CONFIG_SMB_FS=m
+# CONFIG_SMB_NLS_DEFAULT is not set
+CONFIG_CIFS=m
+# CONFIG_CIFS_STATS is not set
+# CONFIG_CIFS_WEAK_PW_HASH is not set
+CONFIG_CIFS_XATTR=y
+CONFIG_CIFS_POSIX=y
+# CONFIG_CIFS_DEBUG2 is not set
+# CONFIG_CIFS_EXPERIMENTAL is not set
+# CONFIG_NCP_FS is not set
+# CONFIG_CODA_FS is not set
+# CONFIG_AFS_FS is not set
+
+#
+# Partition Types
+#
+CONFIG_PARTITION_ADVANCED=y
+# CONFIG_ACORN_PARTITION is not set
+# CONFIG_OSF_PARTITION is not set
+# CONFIG_AMIGA_PARTITION is not set
+# CONFIG_ATARI_PARTITION is not set
+# CONFIG_MAC_PARTITION is not set
+CONFIG_MSDOS_PARTITION=y
+# CONFIG_BSD_DISKLABEL is not set
+# CONFIG_MINIX_SUBPARTITION is not set
+# CONFIG_SOLARIS_X86_PARTITION is not set
+# CONFIG_UNIXWARE_DISKLABEL is not set
+# CONFIG_LDM_PARTITION is not set
+# CONFIG_SGI_PARTITION is not set
+# CONFIG_ULTRIX_PARTITION is not set
+# CONFIG_SUN_PARTITION is not set
+# CONFIG_KARMA_PARTITION is not set
+# CONFIG_EFI_PARTITION is not set
+# CONFIG_SYSV68_PARTITION is not set
+
+#
+# Native Language Support
+#
+CONFIG_NLS=m
+CONFIG_NLS_DEFAULT="utf8"
+CONFIG_NLS_CODEPAGE_437=m
+CONFIG_NLS_CODEPAGE_737=m
+CONFIG_NLS_CODEPAGE_775=m
+CONFIG_NLS_CODEPAGE_850=m
+CONFIG_NLS_CODEPAGE_852=m
+CONFIG_NLS_CODEPAGE_855=m
+CONFIG_NLS_CODEPAGE_857=m
+CONFIG_NLS_CODEPAGE_860=m
+CONFIG_NLS_CODEPAGE_861=m
+CONFIG_NLS_CODEPAGE_862=m
+CONFIG_NLS_CODEPAGE_863=m
+CONFIG_NLS_CODEPAGE_864=m
+CONFIG_NLS_CODEPAGE_865=m
+CONFIG_NLS_CODEPAGE_866=m
+CONFIG_NLS_CODEPAGE_869=m
+CONFIG_NLS_CODEPAGE_936=m
+CONFIG_NLS_CODEPAGE_950=m
+CONFIG_NLS_CODEPAGE_932=m
+CONFIG_NLS_CODEPAGE_949=m
+CONFIG_NLS_CODEPAGE_874=m
+CONFIG_NLS_ISO8859_8=m
+CONFIG_NLS_CODEPAGE_1250=m
+CONFIG_NLS_CODEPAGE_1251=m
+CONFIG_NLS_ASCII=m
+CONFIG_NLS_ISO8859_1=m
+CONFIG_NLS_ISO8859_2=m
+CONFIG_NLS_ISO8859_3=m
+CONFIG_NLS_ISO8859_4=m
+CONFIG_NLS_ISO8859_5=m
+CONFIG_NLS_ISO8859_6=m
+CONFIG_NLS_ISO8859_7=m
+CONFIG_NLS_ISO8859_9=m
+CONFIG_NLS_ISO8859_13=m
+CONFIG_NLS_ISO8859_14=m
+CONFIG_NLS_ISO8859_15=m
+CONFIG_NLS_KOI8_R=m
+CONFIG_NLS_KOI8_U=m
+CONFIG_NLS_UTF8=m
+
+#
+# Distributed Lock Manager
+#
+# CONFIG_DLM is not set
+
+#
+# Profiling support
+#
+# CONFIG_PROFILING is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+CONFIG_ENABLE_MUST_CHECK=y
+# CONFIG_MAGIC_SYSRQ is not set
+# CONFIG_UNUSED_SYMBOLS is not set
+# CONFIG_DEBUG_FS is not set
+# CONFIG_HEADERS_CHECK is not set
+# CONFIG_DEBUG_KERNEL is not set
+# CONFIG_DEBUG_BUGVERBOSE is not set
+CONFIG_FRAME_POINTER=y
+# CONFIG_DEBUG_USER is not set
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+CONFIG_XOR_BLOCKS=m
+CONFIG_ASYNC_CORE=m
+CONFIG_ASYNC_MEMCPY=m
+CONFIG_ASYNC_XOR=m
+CONFIG_CRYPTO=y
+CONFIG_CRYPTO_ALGAPI=y
+CONFIG_CRYPTO_BLKCIPHER=y
+CONFIG_CRYPTO_HASH=y
+CONFIG_CRYPTO_MANAGER=y
+CONFIG_CRYPTO_HMAC=y
+CONFIG_CRYPTO_XCBC=m
+CONFIG_CRYPTO_NULL=m
+CONFIG_CRYPTO_MD4=m
+CONFIG_CRYPTO_MD5=y
+CONFIG_CRYPTO_SHA1=m
+CONFIG_CRYPTO_SHA256=m
+CONFIG_CRYPTO_SHA512=m
+CONFIG_CRYPTO_WP512=m
+CONFIG_CRYPTO_TGR192=m
+CONFIG_CRYPTO_GF128MUL=m
+CONFIG_CRYPTO_ECB=m
+CONFIG_CRYPTO_CBC=y
+CONFIG_CRYPTO_PCBC=m
+CONFIG_CRYPTO_LRW=m
+# CONFIG_CRYPTO_CRYPTD is not set
+CONFIG_CRYPTO_DES=y
+CONFIG_CRYPTO_FCRYPT=m
+CONFIG_CRYPTO_BLOWFISH=m
+CONFIG_CRYPTO_TWOFISH=m
+CONFIG_CRYPTO_TWOFISH_COMMON=m
+CONFIG_CRYPTO_SERPENT=m
+CONFIG_CRYPTO_AES=m
+CONFIG_CRYPTO_CAST5=m
+CONFIG_CRYPTO_CAST6=m
+CONFIG_CRYPTO_TEA=m
+CONFIG_CRYPTO_ARC4=m
+CONFIG_CRYPTO_KHAZAD=m
+CONFIG_CRYPTO_ANUBIS=m
+CONFIG_CRYPTO_DEFLATE=m
+CONFIG_CRYPTO_MICHAEL_MIC=m
+CONFIG_CRYPTO_CRC32C=m
+CONFIG_CRYPTO_CAMELLIA=m
+# CONFIG_CRYPTO_TEST is not set
+CONFIG_CRYPTO_HW=y
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+CONFIG_CRC_CCITT=m
+CONFIG_CRC16=y
+# CONFIG_CRC_ITU_T is not set
+CONFIG_CRC32=y
+# CONFIG_CRC7 is not set
+CONFIG_LIBCRC32C=m
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_TEXTSEARCH=y
+CONFIG_TEXTSEARCH_KMP=m
+CONFIG_TEXTSEARCH_BM=m
+CONFIG_TEXTSEARCH_FSM=m
+CONFIG_PLIST=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
+CONFIG_HAS_DMA=y
diff --git a/packages/linux/ixp4xx-kernel_2.6.21.6.bb b/packages/linux/ixp4xx-kernel_2.6.21.6.bb
index b0ba8ba787..e943cb47be 100644
--- a/packages/linux/ixp4xx-kernel_2.6.21.6.bb
+++ b/packages/linux/ixp4xx-kernel_2.6.21.6.bb
@@ -16,7 +16,7 @@ IXP4XX_KERNEL_PATCH_DIR = "2.6.21"
# the changes in SVN between revisions include changes in the
# patches applied to the kernel, rather than simply defconfig
# changes
-PR = "r0.${IXP4XX_KERNEL_SVN_REV}"
+PR = "r2.${IXP4XX_KERNEL_SVN_REV}"
require ixp4xx-kernel.inc
require ixp4xx-kernel-svnpatch.inc
diff --git a/packages/linux/ixp4xx-kernel_2.6.23.8.bb b/packages/linux/ixp4xx-kernel_2.6.23.8.bb
new file mode 100644
index 0000000000..081195855d
--- /dev/null
+++ b/packages/linux/ixp4xx-kernel_2.6.23.8.bb
@@ -0,0 +1,24 @@
+# Kernel for IXP4xx
+#
+# This bitbake file pulls patches and the defconfig straight
+# from the NSLU2-Linux SVN repository. Information about this
+# repository can be found at:
+# http://trac.nslu2-linux.org/kernel/
+#
+# The revision that is pulled from SVN is specified below
+IXP4XX_KERNEL_SVN_REV = "925"
+#
+# The directory containing the patches to be applied is
+# specified below
+IXP4XX_KERNEL_PATCH_DIR = "2.6.23"
+#
+# Increment the number below (i.e. the digits after PR) when
+# the changes in SVN between revisions include changes in the
+# patches applied to the kernel, rather than simply defconfig
+# changes
+PR = "r0.${IXP4XX_KERNEL_SVN_REV}"
+
+require ixp4xx-kernel.inc
+require ixp4xx-kernel-svnpatch.inc
+
+SRC_URI += "file://defconfig"
diff --git a/packages/linux/linux-2.6.23/leds-cpu-activity-powerpc.patch b/packages/linux/linux-2.6.23/leds-cpu-activity-powerpc.patch
new file mode 100644
index 0000000000..b377355815
--- /dev/null
+++ b/packages/linux/linux-2.6.23/leds-cpu-activity-powerpc.patch
@@ -0,0 +1,46 @@
+Index: linux-2.6.23/arch/powerpc/kernel/idle.c
+===================================================================
+--- linux-2.6.23.orig/arch/powerpc/kernel/idle.c 2007-10-09 22:31:38.000000000 +0200
++++ linux-2.6.23/arch/powerpc/kernel/idle.c 2007-12-05 11:34:39.000000000 +0100
+@@ -19,6 +19,7 @@
+ * 2 of the License, or (at your option) any later version.
+ */
+
++#include <linux/leds.h>
+ #include <linux/sched.h>
+ #include <linux/kernel.h>
+ #include <linux/smp.h>
+@@ -50,6 +51,12 @@
+ __setup("powersave=off", powersave_off);
+
+ /*
++ * CPU activity indicator.
++ */
++void (*leds_idle)(int is_idle);
++EXPORT_SYMBOL(leds_idle);
++
++/*
+ * The body of the idle task.
+ */
+ void cpu_idle(void)
+@@ -59,6 +66,8 @@
+
+ set_thread_flag(TIF_POLLING_NRFLAG);
+ while (1) {
++ if (leds_idle)
++ leds_idle(1);
+ while (!need_resched() && !cpu_should_die()) {
+ ppc64_runlatch_off();
+
+@@ -92,8 +101,11 @@
+ ppc64_runlatch_on();
+ if (cpu_should_die())
+ cpu_die();
++ if (leds_idle)
++ leds_idle(0);
+ preempt_enable_no_resched();
+ schedule();
++
+ preempt_disable();
+ }
+ }
diff --git a/packages/linux/linux-2.6.23/leds-cpu-activity.patch b/packages/linux/linux-2.6.23/leds-cpu-activity.patch
new file mode 100644
index 0000000000..ebdf1abd81
--- /dev/null
+++ b/packages/linux/linux-2.6.23/leds-cpu-activity.patch
@@ -0,0 +1,554 @@
+Index: linux-2.6.23/drivers/leds/Kconfig
+===================================================================
+--- linux-2.6.23.orig/drivers/leds/Kconfig 2007-12-05 12:00:28.000000000 +0100
++++ linux-2.6.23/drivers/leds/Kconfig 2007-12-05 13:46:39.000000000 +0100
+@@ -123,6 +123,15 @@
+ This allows LEDs to be controlled by a programmable timer
+ via sysfs. If unsure, say Y.
+
++config LEDS_TRIGGER_CPU_ACTIVITY
++ tristate "LED CPU Activity Trigger"
++ depends on LEDS_TRIGGERS
++ help
++ This allows LEDs to be set to show cpu activity via sysfs.
++ The LED will blink when the cpu is active and stay steady
++ (on or off according to the trigger selected) when idle.
++ Platform support is needed for this to work. If unsure, say Y.
++
+ config LEDS_TRIGGER_IDE_DISK
+ bool "LED IDE Disk Trigger"
+ depends on LEDS_TRIGGERS && BLK_DEV_IDEDISK
+Index: linux-2.6.23/drivers/leds/ledtrig-cpu.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.23/drivers/leds/ledtrig-cpu.c 2007-12-05 12:00:28.000000000 +0100
+@@ -0,0 +1,502 @@
++/*
++ * LEDs CPU activity trigger
++ *
++ * Author: John Bowler <jbowler@acm.org>
++ *
++ * Copyright (c) 2006 John Bowler
++ *
++ * Permission is hereby granted, free of charge, to any
++ * person obtaining a copy of this software and associated
++ * documentation files (the "Software"), to deal in the
++ * Software without restriction, including without
++ * limitation the rights to use, copy, modify, merge,
++ * publish, distribute, sublicense, and/or sell copies of
++ * the Software, and to permit persons to whom the
++ * Software is furnished to do so, subject to the
++ * following conditions:
++ *
++ * The above copyright notice and this permission notice
++ * shall be included in all copies or substantial portions
++ * of the Software.
++ *
++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
++ * ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
++ * TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
++ * PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
++ * SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
++ * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
++ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
++ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
++ * OTHER DEALINGS IN THE SOFTWARE.
++ *
++ */
++
++#include <linux/ctype.h>
++#include <linux/kernel.h>
++#include <linux/module.h>
++#include <linux/init.h>
++#include <linux/spinlock.h>
++#include <linux/timer.h>
++#include <linux/device.h>
++
++#include <linux/leds.h>
++#include "leds.h"
++
++//#include <linux/list.h>
++//#include <linux/sysdev.h>
++
++
++/*
++ * To simplify this the LED state is given for each case of
++ * CPU state - idle or active. The LED can be:
++ *
++ * off
++ * flash - slow for idle, fast (flicker) for active
++ * on
++ *
++ * This gives two useless states - off/off and on/on
++ */
++typedef enum cpu_trigger_led_state {
++ cpu_led_off,
++ cpu_led_flash,
++ cpu_led_on,
++ cpu_led_invalid
++} cpu_trigger_led_state;
++
++static const char *const cpu_trigger_names[] = {
++ "off",
++ "flash",
++ "on",
++ "invalid"
++};
++
++/* Forward declaration - this is called back when an LED property
++ * is changed.
++ */
++static void leds_cpu_trigger_state_change(void);
++
++/*
++ * These constants define the actual mark/space of the flashing
++ * in jiffies. msecs_to_jiffies rounds up and is compile time
++ * evaluable for constant arguments. Writing the ?: stuff below
++ * this way ensures the compiler doesn't think it needs to
++ * compile in the math of msecs_to_jiffies.
++ *
++ * These values have been determined by experiment to work well
++ * for the ready/status LED on a LinkSys NSLU2 (light piped) and
++ * for the user LED on a Loft (Gateway Avila variant) board where
++ * the LED was directly visible. Light Output Varies Everywhere.
++ */
++#define LEDS_CPU_ACTIVE_MARK msecs_to_jiffies(40)
++#define LEDS_CPU_IDLE_MARK msecs_to_jiffies(800)
++#define LEDS_CPU_ACTIVE_SPACE msecs_to_jiffies(60)
++#define LEDS_CPU_IDLE_SPACE msecs_to_jiffies(800)
++
++
++/*
++ * Individual LEDs ------------------------------------------------------------
++ */
++struct cpu_trigger_data {
++ cpu_trigger_led_state active; /* Behaviour when the CPU is active. */
++ cpu_trigger_led_state idle; /* Behaviour when the CPU is idle. */
++};
++
++/*
++ * LED state change - called when the state of a single LED might
++ * have changed. Returns true if the LED is blinking. The argument
++ * is the blink state - the brightness of the blinking LED.
++ */
++static int leds_cpu_trigger_led_state_change(struct led_classdev *led,
++ int is_active, enum led_brightness brightness)
++{
++ int is_blinking = 0;
++
++ struct cpu_trigger_data *data = led->trigger_data;
++
++ /* Find the new brightness for the LED, if the LED is
++ * set to flash then the brightness passed in is the
++ * required value.
++ */
++ if (likely(data != 0))
++ switch (is_active ? data->active : data->idle) {
++ case cpu_led_off: brightness = LED_OFF; break;
++ case cpu_led_flash: is_blinking = 1; break;
++ case cpu_led_on: brightness = LED_FULL; break;
++ }
++ else
++ brightness = is_active ? LED_FULL : LED_OFF;
++
++ led_set_brightness(led, brightness);
++
++ return is_blinking;
++}
++
++/*
++ * sysfs properties, the property is output at an list of the
++ * values with the current setting enclosed in []
++ */
++static ssize_t leds_cpu_trigger_show_prop(struct device *dev,
++ struct device_attribute *attr, char *buf, size_t where)
++{
++ struct led_classdev *led = dev_get_drvdata(dev);
++ cpu_trigger_led_state item = cpu_led_invalid, i;
++ char *next;
++
++ if (likely(led->trigger_data != 0))
++ item = *(const cpu_trigger_led_state*)(
++ led->trigger_data + where);
++
++ for (i=0, next=buf; i<cpu_led_invalid; ++i) {
++ const char *name = cpu_trigger_names[i];
++ size_t len = strlen(name);
++
++ if (i == item)
++ *next++ = '[';
++ memcpy(next, name, len);
++ next += len;
++ if (i == item)
++ *next++ = ']';
++ *next++ = ' ';
++ }
++
++ next[-1] = '\n';
++ *next++ = 0;
++
++ return next - buf;
++}
++
++static ssize_t leds_cpu_trigger_show_active(struct device *dev,
++ struct device_attribute *attr, char *buf)
++{
++ return leds_cpu_trigger_show_prop(dev, attr, buf,
++ offsetof(struct cpu_trigger_data, active));
++}
++
++static ssize_t leds_cpu_trigger_show_idle(struct device *dev,
++ struct device_attribute *attr, char *buf)
++{
++ return leds_cpu_trigger_show_prop(dev, attr, buf,
++ offsetof(struct cpu_trigger_data, idle));
++}
++
++/*
++ * Any matching leading substring selects a property - so "onoffonoff"
++ * sets the property to off.
++ */
++static ssize_t leds_cpu_trigger_store_prop(struct device *dev,
++ struct device_attribute *attr, const char *buf,
++ size_t size, size_t where)
++{
++ size_t rc = 0;
++ cpu_trigger_led_state value = 0/*sic*/;
++ struct led_classdev *led;
++
++ /* ignore space characters before the value. */
++ while (rc < size && isspace(buf[rc]))
++ ++rc;
++ if (rc >= size)
++ return rc;
++
++ /* look for a simple match against the trigger name, case
++ * sensitive.
++ */
++ do {
++ const char *name = cpu_trigger_names[value];
++ size_t len = strlen(name);
++ if (len <= size && memcmp(buf+rc, name, len) == 0) {
++ rc = len;
++ break;
++ }
++ if (++value >= cpu_led_invalid)
++ return -EINVAL;
++ } while (1);
++
++ led = dev_get_drvdata(dev);
++ if (likely(led->trigger_data != 0))
++ *(cpu_trigger_led_state*)(
++ led->trigger_data + where) = value;
++
++ return rc;
++}
++
++static ssize_t leds_cpu_trigger_store_active(struct device *dev,
++ struct device_attribute *attr, const char *buf, size_t size)
++{
++ ssize_t rc = leds_cpu_trigger_store_prop(dev, attr, buf, size,
++ offsetof(struct cpu_trigger_data, active));
++ /*
++ * At least one CPU must be active (otherwise who is doing this?)
++ * Call down into the global state below to cause an update
++ * to happen now.
++ */
++ leds_cpu_trigger_state_change();
++ return rc;
++}
++
++static ssize_t leds_cpu_trigger_store_idle(struct device *dev,
++ struct device_attribute *attr, const char *buf, size_t size)
++{
++ return leds_cpu_trigger_store_prop(dev, attr, buf, size,
++ offsetof(struct cpu_trigger_data, idle));
++}
++
++static DEVICE_ATTR(active, 0644, leds_cpu_trigger_show_active,
++ leds_cpu_trigger_store_active);
++
++static DEVICE_ATTR(idle, 0644, leds_cpu_trigger_show_idle,
++ leds_cpu_trigger_store_idle);
++
++/*
++ * Activate and deactivate are called on individual LEDs when the
++ * LED trigger property is changed.
++ */
++static void leds_cpu_trigger_activate(struct led_classdev *led)
++{
++ /*
++ * The initial setting of the trigger is simple CPU activity
++ * with the LED off for idle and on for active. Consequently
++ * there is no need to mess with the global state initially,
++ * we know the CPU is active at this moment!
++ */
++ int rc;
++ struct cpu_trigger_data *data = kmalloc(sizeof *data, GFP_KERNEL);
++ if (unlikely(data == 0))
++ return;
++
++ data->active = cpu_led_on;
++ data->idle = cpu_led_off;
++ led->trigger_data = data;
++
++ rc = device_create_file(led->dev, &dev_attr_active);
++ if (rc)
++ goto err_out;
++ rc = device_create_file(led->dev, &dev_attr_idle);
++ if (rc)
++ goto err_out_active;
++
++ led_set_brightness(led, LED_FULL);
++ return;
++
++err_out_active:
++ device_remove_file(led->dev, &dev_attr_active);
++err_out:
++ led->trigger_data = NULL;
++ kfree(data);
++}
++
++static void leds_cpu_trigger_deactivate(struct led_classdev *led)
++{
++ struct cpu_trigger_data *data = led->trigger_data;
++ if (likely(data != 0)) {
++ led_set_brightness(led, LED_OFF);
++
++ device_remove_file(led->dev, &dev_attr_idle);
++ device_remove_file(led->dev, &dev_attr_active);
++
++ led->trigger_data = 0;
++ kfree(data);
++ }
++}
++
++
++/*
++ * Global state --------------------------------------------------------------
++ *
++ * This is global because the CPU state is global and we only need one timer to
++ * do this stuff.
++ */
++typedef struct leds_cpu_trigger_data {
++ struct led_trigger trigger; /* the lock in here protects everything */
++ struct timer_list timer;
++ unsigned long last_active_time; /* record of last jiffies */
++ unsigned long last_idle_time; /* record of last jiffies */
++ int count_active; /* number of active CPUs */
++} leds_cpu_trigger_data;
++
++/*
++ * Mark state - uses the current time (jiffies) to work out
++ * whether this is a mark or space.
++ */
++static int leds_cpu_trigger_mark(struct leds_cpu_trigger_data *data,
++ unsigned long now) {
++ if (data->count_active > 0) {
++ unsigned long elapsed = now - data->last_active_time;
++ elapsed %= LEDS_CPU_ACTIVE_SPACE + LEDS_CPU_ACTIVE_MARK;
++ data->last_active_time = now - elapsed;
++ return elapsed > LEDS_CPU_ACTIVE_SPACE;
++ } else {
++ unsigned long elapsed = now - data->last_idle_time;
++ elapsed %= LEDS_CPU_IDLE_SPACE + LEDS_CPU_IDLE_MARK;
++ data->last_idle_time = now - elapsed;
++ return elapsed > LEDS_CPU_IDLE_SPACE;
++ }
++}
++
++
++/*
++ * State change - given information about the nature of the
++ * (possible) state change call up to each LED to adjust its
++ * state. Returns true if any LED is blinking. The lock
++ * must be held (a read lock is adequate).
++ */
++static int leds_cpu_trigger_scan_leds(struct leds_cpu_trigger_data *data,
++ unsigned long now)
++{
++ int blinking = 0;
++ const int active = data->count_active > 0;
++ const enum led_brightness brightness =
++ leds_cpu_trigger_mark(data, now) ? LED_FULL : LED_OFF;
++ struct list_head *entry;
++
++ list_for_each(entry, &data->trigger.led_cdevs) {
++ struct led_classdev *led =
++ list_entry(entry, struct led_classdev, trig_list);
++
++ blinking |= leds_cpu_trigger_led_state_change(led,
++ active, brightness);
++ }
++
++ return blinking;
++}
++
++/*
++ * Set the timer correctly according to the current state, the lock
++ * must be held for write.
++ */
++static void leds_cpu_trigger_set_timer(struct leds_cpu_trigger_data *state,
++ unsigned long now)
++{
++ unsigned long next;
++ if (state->count_active > 0) {
++ next = state->last_active_time;
++ if (now - next > LEDS_CPU_ACTIVE_SPACE)
++ next += LEDS_CPU_ACTIVE_MARK;
++ next += LEDS_CPU_ACTIVE_SPACE;
++ } else {
++ next = state->last_idle_time;
++ if (now - next > LEDS_CPU_IDLE_SPACE)
++ next += LEDS_CPU_IDLE_MARK;
++ next += LEDS_CPU_IDLE_SPACE;
++ }
++ mod_timer(&state->timer, next);
++}
++
++/*
++ * The timer callback if the LED is currently flashing, the callback
++ * calls the state change function and, if that returns true, meaning
++ * that at least one LED is still blinking, the timer is restarted
++ * with the correct timeout.
++ */
++static void leds_cpu_trigger_timer_callback(unsigned long data)
++{
++ struct leds_cpu_trigger_data *state =
++ (struct leds_cpu_trigger_data *)data;
++
++ write_lock(&state->trigger.leddev_list_lock);
++ {
++ unsigned long now = jiffies;
++
++ /* If at least one LED is set to flash; set the timer
++ * again (this won't reset the timer set within the
++ * idle loop).
++ */
++ if (leds_cpu_trigger_scan_leds(state, now))
++ leds_cpu_trigger_set_timer(state, now);
++ }
++ write_unlock(&state->trigger.leddev_list_lock);
++}
++
++
++/*
++ * There is one global control structure, one timer and one set
++ * of state for active CPUs shared across all the LEDs. Individual
++ * LEDs say how this state to be handled. It is currently *not*
++ * possible to show per-cpu activity on individual LEDs, the code
++ * maintains a count of active CPUs and the state is only 'idle'
++ * if all CPUs are idle.
++ */
++static struct leds_cpu_trigger_data leds_cpu_trigger = {
++ .trigger = {
++ .name = "cpu",
++ .activate = leds_cpu_trigger_activate,
++ .deactivate = leds_cpu_trigger_deactivate,
++ } ,
++ .timer = TIMER_INITIALIZER(leds_cpu_trigger_timer_callback, 0,
++ (unsigned long)&leds_cpu_trigger),
++ .last_active_time = 0,
++ .last_idle_time = 0,
++ .count_active = 0,
++};
++
++/*
++ * State change - callback from an individual LED on a property change which
++ * might require a redisplay.
++ */
++static void leds_cpu_trigger_state_change() {
++ write_lock(&leds_cpu_trigger.trigger.leddev_list_lock);
++ {
++ unsigned long now = jiffies;
++
++ if (leds_cpu_trigger_scan_leds(&leds_cpu_trigger, now) &&
++ !timer_pending(&leds_cpu_trigger.timer))
++ leds_cpu_trigger_set_timer(&leds_cpu_trigger, now);
++ }
++ write_unlock(&leds_cpu_trigger.trigger.leddev_list_lock);
++}
++
++/*
++ * Called from every CPU at the start and end of the idle loop.
++ * The active count is initially 0, even though CPUs are running,
++ * so the code below must check for the resultant underflow.
++ *
++ * If the idle behaviour is 'flash' then when the timer times out
++ * it will take the CPU out of idle, set the active state (which
++ * may also be flash), drop back into idle and reset the timer to
++ * the idle timeout...
++ */
++static void leds_cpu_trigger_idle(int is_idle)
++{
++ write_lock(&leds_cpu_trigger.trigger.leddev_list_lock);
++ if ((is_idle && leds_cpu_trigger.count_active > 0 &&
++ --leds_cpu_trigger.count_active == 0) ||
++ (!is_idle && leds_cpu_trigger.count_active < num_online_cpus() &&
++ ++leds_cpu_trigger.count_active == 1)) {
++ unsigned long now = jiffies;
++
++ /* State change - the system just became idle or active,
++ * call the del_timer first in an attempt to minimise
++ * getting a timer interrupt which will take us unnecessarily
++ * out of idle (this doesn't matter).
++ */
++ del_timer(&leds_cpu_trigger.timer);
++ if (leds_cpu_trigger_scan_leds(&leds_cpu_trigger, now))
++ leds_cpu_trigger_set_timer(&leds_cpu_trigger, now);
++ }
++ write_unlock(&leds_cpu_trigger.trigger.leddev_list_lock);
++}
++
++/*
++ * Module init and exit - register the trigger, then store
++ * the idle callback in the arch-specific global. For this
++ * module to link (into the kernel) or load (into a running
++ * kernel) the architecture must define the leds_idle global.
++ */
++static int __init leds_cpu_trigger_init(void)
++{
++ int rc = led_trigger_register(&leds_cpu_trigger.trigger);
++ leds_idle = leds_cpu_trigger_idle;
++ return rc;
++}
++module_init(leds_cpu_trigger_init);
++
++static void __exit leds_cpu_trigger_exit(void)
++{
++ leds_idle = 0;
++ del_timer_sync(&leds_cpu_trigger.timer);
++ led_trigger_unregister(&leds_cpu_trigger.trigger);
++}
++module_exit(leds_cpu_trigger_exit);
++
++MODULE_AUTHOR("John Bowler <jbowler@acm.org>");
++MODULE_DESCRIPTION("CPU activity LED trigger");
++MODULE_LICENSE("Dual MIT/GPL");
+Index: linux-2.6.23/drivers/leds/Makefile
+===================================================================
+--- linux-2.6.23.orig/drivers/leds/Makefile 2007-12-05 12:00:28.000000000 +0100
++++ linux-2.6.23/drivers/leds/Makefile 2007-12-05 12:00:28.000000000 +0100
+@@ -23,3 +23,4 @@
+ obj-$(CONFIG_LEDS_TRIGGER_TIMER) += ledtrig-timer.o
+ obj-$(CONFIG_LEDS_TRIGGER_IDE_DISK) += ledtrig-ide-disk.o
+ obj-$(CONFIG_LEDS_TRIGGER_HEARTBEAT) += ledtrig-heartbeat.o
++obj-$(CONFIG_LEDS_TRIGGER_CPU_ACTIVITY) += ledtrig-cpu.o
+Index: linux-2.6.23/include/linux/leds.h
+===================================================================
+--- linux-2.6.23.orig/include/linux/leds.h 2007-10-09 22:31:38.000000000 +0200
++++ linux-2.6.23/include/linux/leds.h 2007-12-05 12:00:28.000000000 +0100
+@@ -123,4 +123,13 @@
+ };
+
+
++/*
++ * CPU activity indication.
++ */
++/* Idle callback - call with is_idle==1 at the start of the idle loop
++ * and with is_idle==0 at the end. This symbol must be defined by
++ * the arch core to be able to use LEDS_TRIGGER_CPU_ACTIVITY
++ */
++extern void (*leds_idle)(int is_idle);
++
+ #endif /* __LINUX_LEDS_H_INCLUDED */
diff --git a/packages/linux/linux-2.6.23/mpc8313e-rdb/defconfig b/packages/linux/linux-2.6.23/mpc8313e-rdb/defconfig
index 1ae0049626..2cd1cb3b1a 100644
--- a/packages/linux/linux-2.6.23/mpc8313e-rdb/defconfig
+++ b/packages/linux/linux-2.6.23/mpc8313e-rdb/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.23
-# Thu Oct 18 22:55:23 2007
+# Wed Dec 5 10:34:37 2007
#
# CONFIG_PPC64 is not set
@@ -97,7 +97,7 @@ CONFIG_MODULE_UNLOAD=y
# CONFIG_MODULE_FORCE_UNLOAD is not set
# CONFIG_MODVERSIONS is not set
# CONFIG_MODULE_SRCVERSION_ALL is not set
-# CONFIG_KMOD is not set
+CONFIG_KMOD=y
CONFIG_BLOCK=y
# CONFIG_LBD is not set
# CONFIG_BLK_DEV_IO_TRACE is not set
@@ -180,8 +180,7 @@ CONFIG_ZONE_DMA_FLAG=1
CONFIG_BOUNCE=y
CONFIG_VIRT_TO_BUS=y
CONFIG_PROC_DEVICETREE=y
-CONFIG_CMDLINE_BOOL=y
-CONFIG_CMDLINE=""
+# CONFIG_CMDLINE_BOOL is not set
# CONFIG_PM is not set
CONFIG_SUSPEND_UP_POSSIBLE=y
CONFIG_HIBERNATION_UP_POSSIBLE=y
@@ -203,7 +202,6 @@ CONFIG_PCI_SYSCALL=y
# CONFIG_PCIEPORTBUS is not set
CONFIG_ARCH_SUPPORTS_MSI=y
# CONFIG_PCI_MSI is not set
-# CONFIG_PCI_DEBUG is not set
#
# PCCARD (PCMCIA/CardBus) support
@@ -243,55 +241,269 @@ CONFIG_XFRM=y
# CONFIG_NET_KEY is not set
CONFIG_INET=y
CONFIG_IP_MULTICAST=y
-# CONFIG_IP_ADVANCED_ROUTER is not set
+CONFIG_IP_ADVANCED_ROUTER=y
+CONFIG_ASK_IP_FIB_HASH=y
+# CONFIG_IP_FIB_TRIE is not set
CONFIG_IP_FIB_HASH=y
+CONFIG_IP_MULTIPLE_TABLES=y
+CONFIG_IP_ROUTE_MULTIPATH=y
+CONFIG_IP_ROUTE_VERBOSE=y
CONFIG_IP_PNP=y
CONFIG_IP_PNP_DHCP=y
CONFIG_IP_PNP_BOOTP=y
-# CONFIG_IP_PNP_RARP is not set
-# CONFIG_NET_IPIP is not set
-# CONFIG_NET_IPGRE is not set
+CONFIG_IP_PNP_RARP=y
+CONFIG_NET_IPIP=m
+CONFIG_NET_IPGRE=m
+# CONFIG_NET_IPGRE_BROADCAST is not set
# CONFIG_IP_MROUTE is not set
# CONFIG_ARPD is not set
CONFIG_SYN_COOKIES=y
-# CONFIG_INET_AH is not set
-# CONFIG_INET_ESP is not set
-# CONFIG_INET_IPCOMP is not set
-# CONFIG_INET_XFRM_TUNNEL is not set
-# CONFIG_INET_TUNNEL is not set
-CONFIG_INET_XFRM_MODE_TRANSPORT=y
-CONFIG_INET_XFRM_MODE_TUNNEL=y
-CONFIG_INET_XFRM_MODE_BEET=y
+CONFIG_INET_AH=m
+CONFIG_INET_ESP=m
+CONFIG_INET_IPCOMP=m
+CONFIG_INET_XFRM_TUNNEL=m
+CONFIG_INET_TUNNEL=m
+CONFIG_INET_XFRM_MODE_TRANSPORT=m
+CONFIG_INET_XFRM_MODE_TUNNEL=m
+CONFIG_INET_XFRM_MODE_BEET=m
CONFIG_INET_DIAG=y
CONFIG_INET_TCP_DIAG=y
# CONFIG_TCP_CONG_ADVANCED is not set
CONFIG_TCP_CONG_CUBIC=y
CONFIG_DEFAULT_TCP_CONG="cubic"
# CONFIG_TCP_MD5SIG is not set
-# CONFIG_IPV6 is not set
-# CONFIG_INET6_XFRM_TUNNEL is not set
-# CONFIG_INET6_TUNNEL is not set
+# CONFIG_IP_VS is not set
+CONFIG_IPV6=m
+# CONFIG_IPV6_PRIVACY is not set
+# CONFIG_IPV6_ROUTER_PREF is not set
+# CONFIG_IPV6_OPTIMISTIC_DAD is not set
+CONFIG_INET6_AH=m
+CONFIG_INET6_ESP=m
+CONFIG_INET6_IPCOMP=m
+CONFIG_IPV6_MIP6=m
+CONFIG_INET6_XFRM_TUNNEL=m
+CONFIG_INET6_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_TRANSPORT=m
+CONFIG_INET6_XFRM_MODE_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_BEET=m
+CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m
+CONFIG_IPV6_SIT=m
+CONFIG_IPV6_TUNNEL=m
+# CONFIG_IPV6_MULTIPLE_TABLES is not set
# CONFIG_NETWORK_SECMARK is not set
-# CONFIG_NETFILTER is not set
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+CONFIG_BRIDGE_NETFILTER=y
+
+#
+# Core Netfilter Configuration
+#
+CONFIG_NETFILTER_NETLINK=m
+CONFIG_NETFILTER_NETLINK_QUEUE=m
+CONFIG_NETFILTER_NETLINK_LOG=m
+CONFIG_NF_CONNTRACK_ENABLED=m
+CONFIG_NF_CONNTRACK=m
+CONFIG_NF_CT_ACCT=y
+CONFIG_NF_CONNTRACK_MARK=y
+# CONFIG_NF_CONNTRACK_EVENTS is not set
+CONFIG_NF_CT_PROTO_GRE=m
+CONFIG_NF_CT_PROTO_SCTP=m
+CONFIG_NF_CT_PROTO_UDPLITE=m
+CONFIG_NF_CONNTRACK_AMANDA=m
+CONFIG_NF_CONNTRACK_FTP=m
+CONFIG_NF_CONNTRACK_H323=m
+CONFIG_NF_CONNTRACK_IRC=m
+CONFIG_NF_CONNTRACK_NETBIOS_NS=m
+CONFIG_NF_CONNTRACK_PPTP=m
+CONFIG_NF_CONNTRACK_SANE=m
+CONFIG_NF_CONNTRACK_SIP=m
+CONFIG_NF_CONNTRACK_TFTP=m
+CONFIG_NF_CT_NETLINK=m
+CONFIG_NETFILTER_XTABLES=m
+CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
+# CONFIG_NETFILTER_XT_TARGET_CONNMARK is not set
+# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
+CONFIG_NETFILTER_XT_TARGET_MARK=m
+CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
+CONFIG_NETFILTER_XT_TARGET_NFLOG=m
+# CONFIG_NETFILTER_XT_TARGET_NOTRACK is not set
+# CONFIG_NETFILTER_XT_TARGET_TRACE is not set
+CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
+CONFIG_NETFILTER_XT_MATCH_COMMENT=m
+CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
+CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m
+CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
+CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
+CONFIG_NETFILTER_XT_MATCH_DCCP=m
+CONFIG_NETFILTER_XT_MATCH_DSCP=m
+CONFIG_NETFILTER_XT_MATCH_ESP=m
+CONFIG_NETFILTER_XT_MATCH_HELPER=m
+CONFIG_NETFILTER_XT_MATCH_LENGTH=m
+CONFIG_NETFILTER_XT_MATCH_LIMIT=m
+CONFIG_NETFILTER_XT_MATCH_MAC=m
+CONFIG_NETFILTER_XT_MATCH_MARK=m
+CONFIG_NETFILTER_XT_MATCH_POLICY=m
+CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
+# CONFIG_NETFILTER_XT_MATCH_PHYSDEV is not set
+CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
+CONFIG_NETFILTER_XT_MATCH_QUOTA=m
+CONFIG_NETFILTER_XT_MATCH_REALM=m
+CONFIG_NETFILTER_XT_MATCH_SCTP=m
+CONFIG_NETFILTER_XT_MATCH_STATE=m
+CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
+CONFIG_NETFILTER_XT_MATCH_STRING=m
+CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
+CONFIG_NETFILTER_XT_MATCH_U32=m
+CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
+
+#
+# IP: Netfilter Configuration
+#
+CONFIG_NF_CONNTRACK_IPV4=m
+CONFIG_NF_CONNTRACK_PROC_COMPAT=y
+CONFIG_IP_NF_QUEUE=m
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_MATCH_IPRANGE=m
+CONFIG_IP_NF_MATCH_TOS=m
+CONFIG_IP_NF_MATCH_RECENT=m
+CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_AH=m
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_MATCH_OWNER=m
+CONFIG_IP_NF_MATCH_ADDRTYPE=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_LOG=m
+CONFIG_IP_NF_TARGET_ULOG=m
+CONFIG_NF_NAT=m
+CONFIG_NF_NAT_NEEDED=y
+CONFIG_IP_NF_TARGET_MASQUERADE=m
+CONFIG_IP_NF_TARGET_REDIRECT=m
+CONFIG_IP_NF_TARGET_NETMAP=m
+CONFIG_IP_NF_TARGET_SAME=m
+CONFIG_NF_NAT_SNMP_BASIC=m
+CONFIG_NF_NAT_PROTO_GRE=m
+CONFIG_NF_NAT_FTP=m
+CONFIG_NF_NAT_IRC=m
+CONFIG_NF_NAT_TFTP=m
+CONFIG_NF_NAT_AMANDA=m
+CONFIG_NF_NAT_PPTP=m
+CONFIG_NF_NAT_H323=m
+CONFIG_NF_NAT_SIP=m
+CONFIG_IP_NF_MANGLE=m
+CONFIG_IP_NF_TARGET_TOS=m
+CONFIG_IP_NF_TARGET_ECN=m
+CONFIG_IP_NF_TARGET_TTL=m
+CONFIG_IP_NF_TARGET_CLUSTERIP=m
+CONFIG_IP_NF_RAW=m
+CONFIG_IP_NF_ARPTABLES=m
+CONFIG_IP_NF_ARPFILTER=m
+CONFIG_IP_NF_ARP_MANGLE=m
+
+#
+# IPv6: Netfilter Configuration (EXPERIMENTAL)
+#
+CONFIG_NF_CONNTRACK_IPV6=m
+CONFIG_IP6_NF_QUEUE=m
+CONFIG_IP6_NF_IPTABLES=m
+CONFIG_IP6_NF_MATCH_RT=m
+CONFIG_IP6_NF_MATCH_OPTS=m
+CONFIG_IP6_NF_MATCH_FRAG=m
+CONFIG_IP6_NF_MATCH_HL=m
+CONFIG_IP6_NF_MATCH_OWNER=m
+CONFIG_IP6_NF_MATCH_IPV6HEADER=m
+CONFIG_IP6_NF_MATCH_AH=m
+CONFIG_IP6_NF_MATCH_MH=m
+CONFIG_IP6_NF_MATCH_EUI64=m
+CONFIG_IP6_NF_FILTER=m
+CONFIG_IP6_NF_TARGET_LOG=m
+CONFIG_IP6_NF_TARGET_REJECT=m
+CONFIG_IP6_NF_MANGLE=m
+CONFIG_IP6_NF_TARGET_HL=m
+CONFIG_IP6_NF_RAW=m
+
+#
+# Bridge: Netfilter Configuration
+#
+# CONFIG_BRIDGE_NF_EBTABLES is not set
# CONFIG_IP_DCCP is not set
# CONFIG_IP_SCTP is not set
# CONFIG_TIPC is not set
-# CONFIG_ATM is not set
-# CONFIG_BRIDGE is not set
-# CONFIG_VLAN_8021Q is not set
+CONFIG_ATM=m
+CONFIG_ATM_CLIP=m
+# CONFIG_ATM_CLIP_NO_ICMP is not set
+CONFIG_ATM_LANE=m
+CONFIG_ATM_MPOA=m
+CONFIG_ATM_BR2684=m
+# CONFIG_ATM_BR2684_IPFILTER is not set
+CONFIG_BRIDGE=m
+CONFIG_VLAN_8021Q=m
# CONFIG_DECNET is not set
-# CONFIG_LLC2 is not set
-# CONFIG_IPX is not set
+CONFIG_LLC=m
+CONFIG_LLC2=m
+CONFIG_IPX=m
+# CONFIG_IPX_INTERN is not set
# CONFIG_ATALK is not set
# CONFIG_X25 is not set
# CONFIG_LAPB is not set
# CONFIG_ECONET is not set
-# CONFIG_WAN_ROUTER is not set
+CONFIG_WAN_ROUTER=m
#
# QoS and/or fair queueing
#
-# CONFIG_NET_SCHED is not set
+CONFIG_NET_SCHED=y
+CONFIG_NET_SCH_FIFO=y
+
+#
+# Queueing/Scheduling
+#
+CONFIG_NET_SCH_CBQ=m
+CONFIG_NET_SCH_HTB=m
+CONFIG_NET_SCH_HFSC=m
+CONFIG_NET_SCH_ATM=m
+CONFIG_NET_SCH_PRIO=m
+CONFIG_NET_SCH_RR=m
+CONFIG_NET_SCH_RED=m
+CONFIG_NET_SCH_SFQ=m
+CONFIG_NET_SCH_TEQL=m
+CONFIG_NET_SCH_TBF=m
+CONFIG_NET_SCH_GRED=m
+CONFIG_NET_SCH_DSMARK=m
+CONFIG_NET_SCH_NETEM=m
+CONFIG_NET_SCH_INGRESS=m
+
+#
+# Classification
+#
+CONFIG_NET_CLS=y
+CONFIG_NET_CLS_BASIC=m
+CONFIG_NET_CLS_TCINDEX=m
+CONFIG_NET_CLS_ROUTE4=m
+CONFIG_NET_CLS_ROUTE=y
+CONFIG_NET_CLS_FW=m
+CONFIG_NET_CLS_U32=m
+CONFIG_CLS_U32_PERF=y
+CONFIG_CLS_U32_MARK=y
+CONFIG_NET_CLS_RSVP=m
+CONFIG_NET_CLS_RSVP6=m
+CONFIG_NET_EMATCH=y
+CONFIG_NET_EMATCH_STACK=32
+CONFIG_NET_EMATCH_CMP=m
+CONFIG_NET_EMATCH_NBYTE=m
+CONFIG_NET_EMATCH_U32=m
+CONFIG_NET_EMATCH_META=m
+CONFIG_NET_EMATCH_TEXT=m
+CONFIG_NET_CLS_ACT=y
+CONFIG_NET_ACT_POLICE=m
+CONFIG_NET_ACT_GACT=m
+CONFIG_GACT_PROB=y
+CONFIG_NET_ACT_MIRRED=m
+CONFIG_NET_ACT_IPT=m
+CONFIG_NET_ACT_PEDIT=m
+CONFIG_NET_ACT_SIMP=m
+# CONFIG_NET_CLS_POLICE is not set
+CONFIG_NET_CLS_IND=y
#
# Network testing
@@ -299,17 +511,49 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
# CONFIG_NET_PKTGEN is not set
# CONFIG_HAMRADIO is not set
# CONFIG_IRDA is not set
-# CONFIG_BT is not set
+CONFIG_BT=m
+CONFIG_BT_L2CAP=m
+CONFIG_BT_SCO=m
+CONFIG_BT_RFCOMM=m
+CONFIG_BT_RFCOMM_TTY=y
+CONFIG_BT_BNEP=m
+CONFIG_BT_BNEP_MC_FILTER=y
+CONFIG_BT_BNEP_PROTO_FILTER=y
+# CONFIG_BT_CMTP is not set
+CONFIG_BT_HIDP=m
+
+#
+# Bluetooth device drivers
+#
+CONFIG_BT_HCIUSB=m
+CONFIG_BT_HCIUSB_SCO=y
+CONFIG_BT_HCIUART=m
+CONFIG_BT_HCIUART_H4=y
+CONFIG_BT_HCIUART_BCSP=y
+CONFIG_BT_HCIBCM203X=m
+CONFIG_BT_HCIBPA10X=m
+CONFIG_BT_HCIBFUSB=m
+CONFIG_BT_HCIVHCI=m
# CONFIG_AF_RXRPC is not set
+CONFIG_FIB_RULES=y
#
# Wireless
#
-# CONFIG_CFG80211 is not set
-# CONFIG_WIRELESS_EXT is not set
-# CONFIG_MAC80211 is not set
-# CONFIG_IEEE80211 is not set
-# CONFIG_RFKILL is not set
+CONFIG_CFG80211=y
+CONFIG_WIRELESS_EXT=y
+CONFIG_MAC80211=m
+# CONFIG_MAC80211_LEDS is not set
+# CONFIG_MAC80211_DEBUG is not set
+CONFIG_IEEE80211=m
+# CONFIG_IEEE80211_DEBUG is not set
+CONFIG_IEEE80211_CRYPT_WEP=m
+CONFIG_IEEE80211_CRYPT_CCMP=m
+CONFIG_IEEE80211_CRYPT_TKIP=m
+CONFIG_IEEE80211_SOFTMAC=m
+# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
+CONFIG_RFKILL=m
+CONFIG_RFKILL_INPUT=m
# CONFIG_NET_9P is not set
#
@@ -321,23 +565,22 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
#
CONFIG_STANDALONE=y
CONFIG_PREVENT_FIRMWARE_BUILD=y
-# CONFIG_FW_LOADER is not set
-# CONFIG_DEBUG_DRIVER is not set
-# CONFIG_DEBUG_DEVRES is not set
+CONFIG_FW_LOADER=m
# CONFIG_SYS_HYPERVISOR is not set
# CONFIG_CONNECTOR is not set
CONFIG_MTD=y
# CONFIG_MTD_DEBUG is not set
# CONFIG_MTD_CONCAT is not set
-# CONFIG_MTD_PARTITIONS is not set
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+CONFIG_MTD_CMDLINE_PARTS=y
#
# User Modules And Translation Layers
#
CONFIG_MTD_CHAR=y
-# CONFIG_MTD_BLKDEVS is not set
-# CONFIG_MTD_BLOCK is not set
-# CONFIG_MTD_BLOCK_RO is not set
+CONFIG_MTD_BLKDEVS=y
+CONFIG_MTD_BLOCK=y
# CONFIG_FTL is not set
# CONFIG_NFTL is not set
# CONFIG_INFTL is not set
@@ -375,7 +618,7 @@ CONFIG_MTD_CFI_UTIL=y
# CONFIG_MTD_COMPLEX_MAPPINGS is not set
CONFIG_MTD_PHYSMAP=y
CONFIG_MTD_PHYSMAP_START=0xfe000000
-CONFIG_MTD_PHYSMAP_LEN=0x1000000
+CONFIG_MTD_PHYSMAP_LEN=0x0800000
CONFIG_MTD_PHYSMAP_BANKWIDTH=2
# CONFIG_MTD_PHYSMAP_OF is not set
# CONFIG_MTD_PLATRAM is not set
@@ -397,7 +640,16 @@ CONFIG_MTD_PHYSMAP_BANKWIDTH=2
# CONFIG_MTD_DOC2000 is not set
# CONFIG_MTD_DOC2001 is not set
# CONFIG_MTD_DOC2001PLUS is not set
-# CONFIG_MTD_NAND is not set
+CONFIG_MTD_NAND=y
+# CONFIG_MTD_NAND_VERIFY_WRITE is not set
+# CONFIG_MTD_NAND_ECC_SMC is not set
+# CONFIG_MTD_NAND_MUSEUM_IDS is not set
+CONFIG_MTD_NAND_IDS=y
+# CONFIG_MTD_NAND_DISKONCHIP is not set
+# CONFIG_MTD_NAND_CAFE is not set
+CONFIG_MTD_NAND_FSL_ELBC=y
+# CONFIG_MTD_NAND_NANDSIM is not set
+# CONFIG_MTD_NAND_PLATFORM is not set
# CONFIG_MTD_ONENAND is not set
#
@@ -414,7 +666,7 @@ CONFIG_BLK_DEV=y
# CONFIG_BLK_DEV_UMEM is not set
# CONFIG_BLK_DEV_COW_COMMON is not set
CONFIG_BLK_DEV_LOOP=y
-# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+CONFIG_BLK_DEV_CRYPTOLOOP=m
# CONFIG_BLK_DEV_NBD is not set
# CONFIG_BLK_DEV_SX8 is not set
# CONFIG_BLK_DEV_UB is not set
@@ -423,10 +675,10 @@ CONFIG_BLK_DEV_RAM_COUNT=16
CONFIG_BLK_DEV_RAM_SIZE=32768
CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
# CONFIG_CDROM_PKTCDVD is not set
-# CONFIG_ATA_OVER_ETH is not set
+CONFIG_ATA_OVER_ETH=m
CONFIG_MISC_DEVICES=y
# CONFIG_PHANTOM is not set
-# CONFIG_EEPROM_93CX6 is not set
+CONFIG_EEPROM_93CX6=m
# CONFIG_SGI_IOC4 is not set
# CONFIG_TIFM_CORE is not set
# CONFIG_IDE is not set
@@ -444,7 +696,7 @@ CONFIG_SCSI_PROC_FS=y
#
# SCSI support type (disk, tape, CD-ROM)
#
-# CONFIG_BLK_DEV_SD is not set
+CONFIG_BLK_DEV_SD=y
# CONFIG_CHR_DEV_ST is not set
# CONFIG_CHR_DEV_OSST is not set
# CONFIG_BLK_DEV_SR is not set
@@ -503,16 +755,7 @@ CONFIG_SCSI_LOWLEVEL=y
# CONFIG_SCSI_DEBUG is not set
# CONFIG_SCSI_SRP is not set
# CONFIG_ATA is not set
-CONFIG_MD=y
-CONFIG_BLK_DEV_MD=y
-CONFIG_MD_LINEAR=y
-CONFIG_MD_RAID0=y
-CONFIG_MD_RAID1=y
-# CONFIG_MD_RAID10 is not set
-# CONFIG_MD_RAID456 is not set
-# CONFIG_MD_MULTIPATH is not set
-# CONFIG_MD_FAULTY is not set
-# CONFIG_BLK_DEV_DM is not set
+# CONFIG_MD is not set
#
# Fusion MPT device support
@@ -531,6 +774,7 @@ CONFIG_MD_RAID1=y
# CONFIG_MACINTOSH_DRIVERS is not set
CONFIG_NETDEVICES=y
# CONFIG_NETDEVICES_MULTIQUEUE is not set
+# CONFIG_IFB is not set
# CONFIG_DUMMY is not set
# CONFIG_BONDING is not set
# CONFIG_MACVLAN is not set
@@ -613,7 +857,44 @@ CONFIG_NETDEV_10000=y
# Wireless LAN
#
# CONFIG_WLAN_PRE80211 is not set
-# CONFIG_WLAN_80211 is not set
+CONFIG_WLAN_80211=y
+CONFIG_IPW2100=m
+CONFIG_IPW2100_MONITOR=y
+# CONFIG_IPW2100_DEBUG is not set
+CONFIG_IPW2200=m
+CONFIG_IPW2200_MONITOR=y
+CONFIG_IPW2200_RADIOTAP=y
+CONFIG_IPW2200_PROMISCUOUS=y
+CONFIG_IPW2200_QOS=y
+# CONFIG_IPW2200_DEBUG is not set
+CONFIG_LIBERTAS=m
+CONFIG_LIBERTAS_USB=m
+# CONFIG_LIBERTAS_DEBUG is not set
+CONFIG_AIRO=m
+CONFIG_HERMES=m
+CONFIG_PLX_HERMES=m
+CONFIG_TMD_HERMES=m
+CONFIG_NORTEL_HERMES=m
+CONFIG_PCI_HERMES=m
+CONFIG_ATMEL=m
+CONFIG_PCI_ATMEL=m
+CONFIG_PRISM54=m
+CONFIG_USB_ZD1201=m
+CONFIG_RTL8187=m
+CONFIG_HOSTAP=m
+CONFIG_HOSTAP_FIRMWARE=y
+CONFIG_HOSTAP_FIRMWARE_NVRAM=y
+CONFIG_HOSTAP_PLX=m
+CONFIG_HOSTAP_PCI=m
+CONFIG_BCM43XX=m
+CONFIG_BCM43XX_DEBUG=y
+CONFIG_BCM43XX_DMA=y
+CONFIG_BCM43XX_PIO=y
+CONFIG_BCM43XX_DMA_AND_PIO_MODE=y
+# CONFIG_BCM43XX_DMA_MODE is not set
+# CONFIG_BCM43XX_PIO_MODE is not set
+CONFIG_ZD1211RW=m
+# CONFIG_ZD1211RW_DEBUG is not set
#
# USB Network Adapters
@@ -625,16 +906,137 @@ CONFIG_NETDEV_10000=y
# CONFIG_USB_USBNET_MII is not set
# CONFIG_USB_USBNET is not set
# CONFIG_WAN is not set
+CONFIG_ATM_DRIVERS=y
+# CONFIG_ATM_DUMMY is not set
+# CONFIG_ATM_TCP is not set
+# CONFIG_ATM_LANAI is not set
+# CONFIG_ATM_ENI is not set
+# CONFIG_ATM_FIRESTREAM is not set
+# CONFIG_ATM_ZATM is not set
+# CONFIG_ATM_NICSTAR is not set
+# CONFIG_ATM_IDT77252 is not set
+# CONFIG_ATM_AMBASSADOR is not set
+# CONFIG_ATM_HORIZON is not set
+# CONFIG_ATM_IA is not set
+# CONFIG_ATM_FORE200E_MAYBE is not set
+# CONFIG_ATM_HE is not set
# CONFIG_FDDI is not set
# CONFIG_HIPPI is not set
-# CONFIG_PPP is not set
+CONFIG_PPP=m
+CONFIG_PPP_MULTILINK=y
+CONFIG_PPP_FILTER=y
+CONFIG_PPP_ASYNC=m
+CONFIG_PPP_SYNC_TTY=m
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+CONFIG_PPP_MPPE=m
+CONFIG_PPPOE=m
+CONFIG_PPPOATM=m
+CONFIG_PPPOL2TP=m
# CONFIG_SLIP is not set
+CONFIG_SLHC=m
# CONFIG_NET_FC is not set
# CONFIG_SHAPER is not set
# CONFIG_NETCONSOLE is not set
# CONFIG_NETPOLL is not set
# CONFIG_NET_POLL_CONTROLLER is not set
-# CONFIG_ISDN is not set
+CONFIG_ISDN=m
+CONFIG_ISDN_I4L=m
+# CONFIG_ISDN_PPP is not set
+# CONFIG_ISDN_AUDIO is not set
+
+#
+# ISDN feature submodules
+#
+CONFIG_ISDN_DRV_LOOP=m
+CONFIG_ISDN_DIVERSION=m
+
+#
+# ISDN4Linux hardware drivers
+#
+
+#
+# Passive cards
+#
+CONFIG_ISDN_DRV_HISAX=m
+
+#
+# D-channel protocol features
+#
+CONFIG_HISAX_EURO=y
+CONFIG_DE_AOC=y
+# CONFIG_HISAX_NO_SENDCOMPLETE is not set
+# CONFIG_HISAX_NO_LLC is not set
+# CONFIG_HISAX_NO_KEYPAD is not set
+CONFIG_HISAX_1TR6=y
+CONFIG_HISAX_NI1=y
+CONFIG_HISAX_MAX_CARDS=8
+
+#
+# HiSax supported cards
+#
+CONFIG_HISAX_16_3=y
+CONFIG_HISAX_S0BOX=y
+CONFIG_HISAX_FRITZPCI=y
+CONFIG_HISAX_AVM_A1_PCMCIA=y
+CONFIG_HISAX_ELSA=y
+CONFIG_HISAX_DIEHLDIVA=y
+CONFIG_HISAX_SEDLBAUER=y
+CONFIG_HISAX_NICCY=y
+CONFIG_HISAX_BKM_A4T=y
+CONFIG_HISAX_SCT_QUADRO=y
+CONFIG_HISAX_GAZEL=y
+CONFIG_HISAX_W6692=y
+CONFIG_HISAX_HFC_SX=y
+# CONFIG_HISAX_DEBUG is not set
+
+#
+# HiSax PCMCIA card service modules
+#
+
+#
+# HiSax sub driver modules
+#
+CONFIG_HISAX_ST5481=m
+CONFIG_HISAX_HFCUSB=m
+CONFIG_HISAX_HFC4S8S=m
+CONFIG_HISAX_FRITZ_PCIPNP=m
+CONFIG_HISAX_HDLC=y
+
+#
+# Active cards
+#
+CONFIG_HYSDN=m
+CONFIG_HYSDN_CAPI=y
+CONFIG_ISDN_DRV_GIGASET=m
+CONFIG_GIGASET_BASE=m
+CONFIG_GIGASET_M105=m
+CONFIG_GIGASET_M101=m
+# CONFIG_GIGASET_DEBUG is not set
+CONFIG_GIGASET_UNDOCREQ=y
+CONFIG_ISDN_CAPI=m
+CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON=y
+CONFIG_CAPI_TRACE=y
+# CONFIG_ISDN_CAPI_MIDDLEWARE is not set
+CONFIG_ISDN_CAPI_CAPI20=m
+# CONFIG_ISDN_CAPI_CAPIDRV is not set
+
+#
+# CAPI hardware drivers
+#
+CONFIG_CAPI_AVM=y
+CONFIG_ISDN_DRV_AVMB1_B1PCI=m
+# CONFIG_ISDN_DRV_AVMB1_B1PCIV4 is not set
+CONFIG_ISDN_DRV_AVMB1_B1PCMCIA=m
+CONFIG_ISDN_DRV_AVMB1_T1PCI=m
+CONFIG_ISDN_DRV_AVMB1_C4=m
+CONFIG_CAPI_EICON=y
+CONFIG_ISDN_DIVAS=m
+CONFIG_ISDN_DIVAS_BRIPCI=y
+CONFIG_ISDN_DIVAS_PRIPCI=y
+CONFIG_ISDN_DIVAS_DIVACAPI=m
+CONFIG_ISDN_DIVAS_USERIDI=m
+CONFIG_ISDN_DIVAS_MAINT=m
# CONFIG_PHONE is not set
#
@@ -787,7 +1189,6 @@ CONFIG_I2C_MPC=y
# SPI support
#
CONFIG_SPI=y
-# CONFIG_SPI_DEBUG is not set
CONFIG_SPI_MASTER=y
#
@@ -799,9 +1200,9 @@ CONFIG_SPI_MPC83xx=y
#
# SPI Protocol Masters
#
-# CONFIG_SPI_AT25 is not set
-# CONFIG_SPI_SPIDEV is not set
-# CONFIG_SPI_TLE62X0 is not set
+CONFIG_SPI_AT25=m
+CONFIG_SPI_SPIDEV=m
+CONFIG_SPI_TLE62X0=m
# CONFIG_W1 is not set
# CONFIG_POWER_SUPPLY is not set
CONFIG_HWMON=y
@@ -1008,12 +1409,12 @@ CONFIG_USB_MON=y
#
# USB DSL modem support
#
+# CONFIG_USB_ATM is not set
#
# USB Gadget Support
#
CONFIG_USB_GADGET=y
-# CONFIG_USB_GADGET_DEBUG is not set
# CONFIG_USB_GADGET_DEBUG_FILES is not set
CONFIG_USB_GADGET_SELECTED=y
# CONFIG_USB_GADGET_AMD5536UDC is not set
@@ -1036,8 +1437,37 @@ CONFIG_USB_ETH_RNDIS=y
# CONFIG_USB_FILE_STORAGE is not set
# CONFIG_USB_G_SERIAL is not set
# CONFIG_USB_MIDI_GADGET is not set
-# CONFIG_MMC is not set
-# CONFIG_NEW_LEDS is not set
+CONFIG_MMC=m
+# CONFIG_MMC_DEBUG is not set
+# CONFIG_MMC_UNSAFE_RESUME is not set
+
+#
+# MMC/SD Card Drivers
+#
+CONFIG_MMC_BLOCK=m
+CONFIG_MMC_BLOCK_BOUNCE=y
+
+#
+# MMC/SD Host Controller Drivers
+#
+# CONFIG_MMC_SDHCI is not set
+# CONFIG_MMC_WBSD is not set
+# CONFIG_MMC_TIFM_SD is not set
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=m
+
+#
+# LED drivers
+#
+CONFIG_LEDS_MPC8313E_RDB=m
+
+#
+# LED Triggers
+#
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=m
+CONFIG_LEDS_TRIGGER_HEARTBEAT=m
+CONFIG_LEDS_TRIGGER_CPU_ACTIVITY=m
# CONFIG_INFINIBAND is not set
# CONFIG_EDAC is not set
CONFIG_RTC_LIB=y
@@ -1107,7 +1537,8 @@ CONFIG_INTEL_IOATDMA=y
#
# Userspace I/O
#
-# CONFIG_UIO is not set
+CONFIG_UIO=m
+CONFIG_UIO_CIF=m
#
# File systems
@@ -1136,7 +1567,7 @@ CONFIG_INOTIFY_USER=y
# CONFIG_QUOTA is not set
CONFIG_DNOTIFY=y
# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
+CONFIG_AUTOFS4_FS=y
# CONFIG_FUSE_FS is not set
#
@@ -1148,9 +1579,14 @@ CONFIG_DNOTIFY=y
#
# DOS/FAT/NT Filesystems
#
-# CONFIG_MSDOS_FS is not set
-# CONFIG_VFAT_FS is not set
-# CONFIG_NTFS_FS is not set
+CONFIG_FAT_FS=y
+CONFIG_MSDOS_FS=y
+CONFIG_VFAT_FS=y
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+CONFIG_NTFS_FS=m
+# CONFIG_NTFS_DEBUG is not set
+CONFIG_NTFS_RW=y
#
# Pseudo filesystems
@@ -1175,8 +1611,16 @@ CONFIG_RAMFS=y
# CONFIG_BEFS_FS is not set
# CONFIG_BFS_FS is not set
# CONFIG_EFS_FS is not set
-# CONFIG_JFFS2_FS is not set
-# CONFIG_CRAMFS is not set
+CONFIG_JFFS2_FS=y
+CONFIG_JFFS2_FS_DEBUG=0
+CONFIG_JFFS2_FS_WRITEBUFFER=y
+# CONFIG_JFFS2_SUMMARY is not set
+# CONFIG_JFFS2_FS_XATTR is not set
+# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
+CONFIG_JFFS2_ZLIB=y
+CONFIG_JFFS2_RTIME=y
+# CONFIG_JFFS2_RUBIN is not set
+CONFIG_CRAMFS=y
# CONFIG_VXFS_FS is not set
# CONFIG_HPFS_FS is not set
# CONFIG_QNX4FS_FS is not set
@@ -1191,18 +1635,27 @@ CONFIG_NFS_V3=y
# CONFIG_NFS_V3_ACL is not set
CONFIG_NFS_V4=y
# CONFIG_NFS_DIRECTIO is not set
-# CONFIG_NFSD is not set
+CONFIG_NFSD=m
+# CONFIG_NFSD_V3 is not set
+CONFIG_NFSD_TCP=y
CONFIG_ROOT_NFS=y
CONFIG_LOCKD=y
CONFIG_LOCKD_V4=y
+CONFIG_EXPORTFS=m
CONFIG_NFS_COMMON=y
CONFIG_SUNRPC=y
CONFIG_SUNRPC_GSS=y
# CONFIG_SUNRPC_BIND34 is not set
CONFIG_RPCSEC_GSS_KRB5=y
# CONFIG_RPCSEC_GSS_SPKM3 is not set
-# CONFIG_SMB_FS is not set
-# CONFIG_CIFS is not set
+CONFIG_SMB_FS=m
+# CONFIG_SMB_NLS_DEFAULT is not set
+CONFIG_CIFS=m
+# CONFIG_CIFS_STATS is not set
+# CONFIG_CIFS_WEAK_PW_HASH is not set
+# CONFIG_CIFS_XATTR is not set
+# CONFIG_CIFS_DEBUG2 is not set
+# CONFIG_CIFS_EXPERIMENTAL is not set
# CONFIG_NCP_FS is not set
# CONFIG_CODA_FS is not set
# CONFIG_AFS_FS is not set
@@ -1221,7 +1674,8 @@ CONFIG_MSDOS_PARTITION=y
# CONFIG_MINIX_SUBPARTITION is not set
# CONFIG_SOLARIS_X86_PARTITION is not set
# CONFIG_UNIXWARE_DISKLABEL is not set
-# CONFIG_LDM_PARTITION is not set
+CONFIG_LDM_PARTITION=y
+# CONFIG_LDM_DEBUG is not set
# CONFIG_SGI_PARTITION is not set
# CONFIG_ULTRIX_PARTITION is not set
# CONFIG_SUN_PARTITION is not set
@@ -1232,7 +1686,46 @@ CONFIG_MSDOS_PARTITION=y
#
# Native Language Support
#
-# CONFIG_NLS is not set
+CONFIG_NLS=y
+CONFIG_NLS_DEFAULT="iso8859-1"
+CONFIG_NLS_CODEPAGE_437=y
+# CONFIG_NLS_CODEPAGE_737 is not set
+# CONFIG_NLS_CODEPAGE_775 is not set
+# CONFIG_NLS_CODEPAGE_850 is not set
+# CONFIG_NLS_CODEPAGE_852 is not set
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+# CONFIG_NLS_CODEPAGE_936 is not set
+# CONFIG_NLS_CODEPAGE_950 is not set
+CONFIG_NLS_CODEPAGE_932=y
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+CONFIG_NLS_ISO8859_8=y
+# CONFIG_NLS_CODEPAGE_1250 is not set
+# CONFIG_NLS_CODEPAGE_1251 is not set
+# CONFIG_NLS_ASCII is not set
+CONFIG_NLS_ISO8859_1=y
+# CONFIG_NLS_ISO8859_2 is not set
+# CONFIG_NLS_ISO8859_3 is not set
+# CONFIG_NLS_ISO8859_4 is not set
+# CONFIG_NLS_ISO8859_5 is not set
+# CONFIG_NLS_ISO8859_6 is not set
+# CONFIG_NLS_ISO8859_7 is not set
+# CONFIG_NLS_ISO8859_9 is not set
+# CONFIG_NLS_ISO8859_13 is not set
+# CONFIG_NLS_ISO8859_14 is not set
+# CONFIG_NLS_ISO8859_15 is not set
+# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_KOI8_U is not set
+# CONFIG_NLS_UTF8 is not set
#
# Distributed Lock Manager
@@ -1244,12 +1737,18 @@ CONFIG_MSDOS_PARTITION=y
# Library routines
#
CONFIG_BITREVERSE=y
-# CONFIG_CRC_CCITT is not set
-# CONFIG_CRC16 is not set
-# CONFIG_CRC_ITU_T is not set
+CONFIG_CRC_CCITT=m
+CONFIG_CRC16=m
+CONFIG_CRC_ITU_T=m
CONFIG_CRC32=y
-# CONFIG_CRC7 is not set
-# CONFIG_LIBCRC32C is not set
+CONFIG_CRC7=m
+CONFIG_LIBCRC32C=m
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_TEXTSEARCH=y
+CONFIG_TEXTSEARCH_KMP=m
+CONFIG_TEXTSEARCH_BM=m
+CONFIG_TEXTSEARCH_FSM=m
CONFIG_PLIST=y
CONFIG_HAS_IOMEM=y
CONFIG_HAS_IOPORT=y
@@ -1258,43 +1757,20 @@ CONFIG_HAS_DMA=y
#
# Instrumentation Support
#
-# CONFIG_PROFILING is not set
+CONFIG_PROFILING=y
+CONFIG_OPROFILE=m
#
# Kernel hacking
#
-CONFIG_PRINTK_TIME=y
+# CONFIG_PRINTK_TIME is not set
CONFIG_ENABLE_MUST_CHECK=y
# CONFIG_MAGIC_SYSRQ is not set
# CONFIG_UNUSED_SYMBOLS is not set
# CONFIG_DEBUG_FS is not set
# CONFIG_HEADERS_CHECK is not set
-CONFIG_DEBUG_KERNEL=y
-# CONFIG_DEBUG_SHIRQ is not set
-CONFIG_DETECT_SOFTLOCKUP=y
-CONFIG_SCHED_DEBUG=y
-# CONFIG_SCHEDSTATS is not set
-# CONFIG_TIMER_STATS is not set
-# CONFIG_DEBUG_SLAB is not set
-# CONFIG_DEBUG_RT_MUTEXES is not set
-# CONFIG_RT_MUTEX_TESTER is not set
-# CONFIG_DEBUG_SPINLOCK is not set
-# CONFIG_DEBUG_MUTEXES is not set
-# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
-# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
-# CONFIG_DEBUG_KOBJECT is not set
+# CONFIG_DEBUG_KERNEL is not set
# CONFIG_DEBUG_BUGVERBOSE is not set
-# CONFIG_DEBUG_INFO is not set
-# CONFIG_DEBUG_VM is not set
-# CONFIG_DEBUG_LIST is not set
-CONFIG_FORCED_INLINING=y
-# CONFIG_RCU_TORTURE_TEST is not set
-# CONFIG_FAULT_INJECTION is not set
-# CONFIG_DEBUG_STACKOVERFLOW is not set
-# CONFIG_DEBUG_STACK_USAGE is not set
-# CONFIG_DEBUG_PAGEALLOC is not set
-# CONFIG_DEBUGGER is not set
-# CONFIG_BDI_SWITCH is not set
# CONFIG_PPC_EARLY_DEBUG is not set
#
@@ -1304,39 +1780,42 @@ CONFIG_FORCED_INLINING=y
# CONFIG_SECURITY is not set
CONFIG_CRYPTO=y
CONFIG_CRYPTO_ALGAPI=y
+CONFIG_CRYPTO_ABLKCIPHER=m
CONFIG_CRYPTO_BLKCIPHER=y
+CONFIG_CRYPTO_HASH=m
CONFIG_CRYPTO_MANAGER=y
-# CONFIG_CRYPTO_HMAC is not set
-# CONFIG_CRYPTO_XCBC is not set
-# CONFIG_CRYPTO_NULL is not set
-# CONFIG_CRYPTO_MD4 is not set
+CONFIG_CRYPTO_HMAC=m
+CONFIG_CRYPTO_XCBC=m
+CONFIG_CRYPTO_NULL=m
+CONFIG_CRYPTO_MD4=m
CONFIG_CRYPTO_MD5=y
-# CONFIG_CRYPTO_SHA1 is not set
-# CONFIG_CRYPTO_SHA256 is not set
-# CONFIG_CRYPTO_SHA512 is not set
-# CONFIG_CRYPTO_WP512 is not set
-# CONFIG_CRYPTO_TGR192 is not set
-# CONFIG_CRYPTO_GF128MUL is not set
-# CONFIG_CRYPTO_ECB is not set
+CONFIG_CRYPTO_SHA1=m
+CONFIG_CRYPTO_SHA256=m
+CONFIG_CRYPTO_SHA512=m
+CONFIG_CRYPTO_WP512=m
+CONFIG_CRYPTO_TGR192=m
+CONFIG_CRYPTO_GF128MUL=m
+CONFIG_CRYPTO_ECB=m
CONFIG_CRYPTO_CBC=y
CONFIG_CRYPTO_PCBC=m
-# CONFIG_CRYPTO_LRW is not set
-# CONFIG_CRYPTO_CRYPTD is not set
+CONFIG_CRYPTO_LRW=m
+CONFIG_CRYPTO_CRYPTD=m
CONFIG_CRYPTO_DES=y
-# CONFIG_CRYPTO_FCRYPT is not set
-# CONFIG_CRYPTO_BLOWFISH is not set
-# CONFIG_CRYPTO_TWOFISH is not set
-# CONFIG_CRYPTO_SERPENT is not set
-# CONFIG_CRYPTO_AES is not set
-# CONFIG_CRYPTO_CAST5 is not set
-# CONFIG_CRYPTO_CAST6 is not set
-# CONFIG_CRYPTO_TEA is not set
-# CONFIG_CRYPTO_ARC4 is not set
-# CONFIG_CRYPTO_KHAZAD is not set
-# CONFIG_CRYPTO_ANUBIS is not set
-# CONFIG_CRYPTO_DEFLATE is not set
-# CONFIG_CRYPTO_MICHAEL_MIC is not set
-# CONFIG_CRYPTO_CRC32C is not set
-# CONFIG_CRYPTO_CAMELLIA is not set
-# CONFIG_CRYPTO_TEST is not set
+CONFIG_CRYPTO_FCRYPT=m
+CONFIG_CRYPTO_BLOWFISH=m
+CONFIG_CRYPTO_TWOFISH=m
+CONFIG_CRYPTO_TWOFISH_COMMON=m
+CONFIG_CRYPTO_SERPENT=m
+CONFIG_CRYPTO_AES=m
+CONFIG_CRYPTO_CAST5=m
+CONFIG_CRYPTO_CAST6=m
+CONFIG_CRYPTO_TEA=m
+CONFIG_CRYPTO_ARC4=m
+CONFIG_CRYPTO_KHAZAD=m
+CONFIG_CRYPTO_ANUBIS=m
+CONFIG_CRYPTO_DEFLATE=m
+CONFIG_CRYPTO_MICHAEL_MIC=m
+CONFIG_CRYPTO_CRC32C=m
+CONFIG_CRYPTO_CAMELLIA=m
+CONFIG_CRYPTO_TEST=m
CONFIG_CRYPTO_HW=y
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
new file mode 100644
index 0000000000..56176c1095
--- /dev/null
+++ b/packages/linux/linux-2.6.23/mpc8313e-rdb/mpc8313e-rdb-leds.patch
@@ -0,0 +1,158 @@
+diff -urN linux-2.6.23.orig/drivers/leds/Kconfig linux-2.6.23/drivers/leds/Kconfig
+--- linux-2.6.23.orig/drivers/leds/Kconfig 2007-10-09 22:31:38.000000000 +0200
++++ linux-2.6.23/drivers/leds/Kconfig 2007-12-03 11:08:06.000000000 +0100
+@@ -101,6 +101,12 @@
+ outputs. To be useful the particular board must have LEDs
+ and they must be connected to the GPIO lines.
+
++config LEDS_MPC8313E_RDB
++ tristate "LED Support for MPC8313E-RDB LEDs"
++ depends on LEDS_CLASS && PPC_83xx
++ help
++ This option enables support for the LEDs on MPC8313E-RDB board.
++
+ comment "LED Triggers"
+
+ config LEDS_TRIGGERS
+diff -urN linux-2.6.23.orig/drivers/leds/leds-mpc8313e-rdb.c linux-2.6.23/drivers/leds/leds-mpc8313e-rdb.c
+--- linux-2.6.23.orig/drivers/leds/leds-mpc8313e-rdb.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.23/drivers/leds/leds-mpc8313e-rdb.c 2007-12-03 11:08:36.000000000 +0100
+@@ -0,0 +1,127 @@
++/*
++ * drivers/leds/leds-mpc8313e-rdb.c
++ * Copyright (C) 2007 Leon Woestenberg <leon@sidebranch.com>
++ * Copyright (C) 2007 Jeremy Laine <jeremy.laine@bolloretelecom.eu>
++ *
++ * 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
++ * more details.
++ *
++ * MPC8313E-RDB LEDs driver
++ *
++ */
++
++#include <linux/module.h>
++#include <linux/platform_device.h>
++#include <linux/ioport.h>
++#include <linux/leds.h>
++#include <linux/err.h>
++#include <asm/io.h>
++
++#define LEDS_BASE 0xfa000000
++#define LEDS_SIZE 0x2
++
++static struct platform_dev *leds_pdev = NULL;
++static struct resource *led_mem = NULL;
++static void *led_io = NULL;
++static u8 led_state = 0;
++
++static void mpc8313leds_green_set(struct led_classdev *led_cdev, enum led_brightness value)
++{
++ led_state = value ? led_state&~32 : led_state|32;
++ iowrite8(led_state, led_io);
++}
++
++static struct led_classdev mpc8313_green_led = {
++ .name = "mpc8313:green",
++ .brightness_set = mpc8313leds_green_set,
++};
++
++static void mpc8313leds_yellow_set(struct led_classdev *led_cdev, enum led_brightness value)
++{
++ led_state = value ? led_state&~64 : led_state|64;
++ iowrite8(led_state, led_io);
++}
++
++static struct led_classdev mpc8313_yellow_led = {
++ .name = "mpc8313:yellow",
++ .brightness_set = mpc8313leds_yellow_set,
++};
++
++static void mpc8313leds_red_set(struct led_classdev *led_cdev, enum led_brightness value)
++{
++ led_state = value ? led_state&~128 : led_state|128;
++ iowrite8(led_state, led_io);
++}
++
++static struct led_classdev mpc8313_red_led = {
++ .name = "mpc8313:red",
++ .brightness_set = mpc8313leds_red_set,
++};
++
++static int mpc8313leds_probe(struct platform_device *pdev)
++{
++ int ret;
++
++ ret = led_classdev_register(&pdev->dev, &mpc8313_green_led);
++ if (ret < 0)
++ return ret;
++
++ ret = led_classdev_register(&pdev->dev, &mpc8313_yellow_led);
++ if (ret < 0)
++ return ret;
++
++ ret = led_classdev_register(&pdev->dev, &mpc8313_red_led);
++ if (ret < 0)
++ return ret;
++
++ return ret;
++}
++
++static int mpc8313leds_remove(struct platform_device *pdev)
++{
++ led_classdev_unregister(&mpc8313_green_led);
++ led_classdev_unregister(&mpc8313_yellow_led);
++ led_classdev_unregister(&mpc8313_red_led);
++ return 0;
++}
++
++static struct platform_driver mpc8313leds_driver = {
++ .driver = {
++ .name = "mpc8313-leds",
++ .owner = THIS_MODULE,
++ },
++ .probe = mpc8313leds_probe,
++ .remove = mpc8313leds_remove,
++};
++
++static int __init mpc8313leds_init(void)
++{
++ if (!(led_mem = request_mem_region(LEDS_BASE, LEDS_SIZE, "mpc8313-leds")))
++ return -ENOMEM;
++ if (!(led_io = ioremap(LEDS_BASE, LEDS_SIZE)))
++ {
++ release_mem_region(LEDS_BASE, LEDS_SIZE);
++ led_mem = NULL;
++ return -ENOMEM;
++ }
++ leds_pdev = platform_device_register_simple("mpc8313-leds", -1, NULL, 0);
++
++ return platform_driver_register(&mpc8313leds_driver);
++}
++
++static void __exit mpc8313leds_exit(void)
++{
++ if (led_mem) release_mem_region(LEDS_BASE, LEDS_SIZE);
++ led_mem = NULL;
++ platform_driver_unregister(&mpc8313leds_driver);
++
++ platform_device_unregister(leds_pdev);
++}
++
++module_init(mpc8313leds_init);
++module_exit(mpc8313leds_exit);
++
++MODULE_AUTHOR("Leon Woestenberg <leon@sidebranch.com>");
++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
+--- linux-2.6.23.orig/drivers/leds/Makefile 2007-10-09 22:31:38.000000000 +0200
++++ linux-2.6.23/drivers/leds/Makefile 2007-12-03 11:08:06.000000000 +0100
+@@ -17,6 +17,7 @@
+ obj-$(CONFIG_LEDS_H1940) += leds-h1940.o
+ obj-$(CONFIG_LEDS_COBALT) += leds-cobalt.o
+ obj-$(CONFIG_LEDS_GPIO) += leds-gpio.o
++obj-$(CONFIG_LEDS_MPC8313E_RDB) += leds-mpc8313e-rdb.o
+
+ # LED Triggers
+ obj-$(CONFIG_LEDS_TRIGGER_TIMER) += ledtrig-timer.o
diff --git a/packages/linux/linux-2.6.23/mpc8313e-rdb/mpc8313e-rdb-rtc.patch b/packages/linux/linux-2.6.23/mpc8313e-rdb/mpc8313e-rdb-rtc.patch
new file mode 100644
index 0000000000..4177a3d4a9
--- /dev/null
+++ b/packages/linux/linux-2.6.23/mpc8313e-rdb/mpc8313e-rdb-rtc.patch
@@ -0,0 +1,40 @@
+diff -urN linux-2.6.23.orig/arch/powerpc/boot/dts/mpc8313erdb.dts linux-2.6.23/arch/powerpc/boot/dts/mpc8313erdb.dts
+--- linux-2.6.23.orig/arch/powerpc/boot/dts/mpc8313erdb.dts 2007-10-09 22:31:38.000000000 +0200
++++ linux-2.6.23/arch/powerpc/boot/dts/mpc8313erdb.dts 2007-12-01 13:16:55.000000000 +0100
+@@ -54,12 +54,20 @@
+ };
+
+ i2c@3000 {
++ #address-cells = <1>;
++ #size-cells = <0>;
+ device_type = "i2c";
+ compatible = "fsl-i2c";
+ reg = <3000 100>;
+ interrupts = <e 8>;
+ interrupt-parent = < &ipic >;
+ dfsrr;
++
++ rtc@68 {
++ device_type = "rtc";
++ compatible = "dallas,ds1339";
++ reg = <68>;
++ };
+ };
+
+ i2c@3100 {
+diff -urN linux-2.6.23.orig/arch/powerpc/sysdev/fsl_soc.c linux-2.6.23/arch/powerpc/sysdev/fsl_soc.c
+--- linux-2.6.23.orig/arch/powerpc/sysdev/fsl_soc.c 2007-10-09 22:31:38.000000000 +0200
++++ linux-2.6.23/arch/powerpc/sysdev/fsl_soc.c 2007-12-01 13:08:30.000000000 +0100
+@@ -319,6 +319,12 @@
+ {"ricoh,rs5c372b", "rtc-rs5c372", "rs5c372b",},
+ {"ricoh,rv5c386", "rtc-rs5c372", "rv5c386",},
+ {"ricoh,rv5c387a", "rtc-rs5c372", "rv5c387a",},
++ {"dallas,ds1307", "rtc-ds1307", "ds1307",},
++ {"dallas,ds1337", "rtc-ds1307", "ds1337",},
++ {"dallas,ds1338", "rtc-ds1307", "ds1338",},
++ {"dallas,ds1339", "rtc-ds1307", "ds1339",},
++ {"dallas,ds1340", "rtc-ds1307", "ds1340",},
++ {"stm,m41t00", "rtc-ds1307", "m41t00"},
+ };
+
+ static int __init of_find_i2c_driver(struct device_node *node, struct i2c_board_info *info)
diff --git a/packages/linux/linux-2.6.23/mpc8313e-rdb/mpc831x-nand.patch b/packages/linux/linux-2.6.23/mpc8313e-rdb/mpc831x-nand.patch
new file mode 100644
index 0000000000..efff29bca1
--- /dev/null
+++ b/packages/linux/linux-2.6.23/mpc8313e-rdb/mpc831x-nand.patch
@@ -0,0 +1,1807 @@
+diff -urN linux-2.6.23.orig/arch/powerpc/boot/dts/mpc8313erdb.dts linux-2.6.23/arch/powerpc/boot/dts/mpc8313erdb.dts
+--- linux-2.6.23.orig/arch/powerpc/boot/dts/mpc8313erdb.dts 2007-10-09 22:31:38.000000000 +0200
++++ linux-2.6.23/arch/powerpc/boot/dts/mpc8313erdb.dts 2007-11-28 20:36:57.000000000 +0100
+@@ -37,6 +37,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>;
+@@ -210,5 +216,15 @@
+ built-in;
+ device_type = "ipic";
+ };
++
++ elbc@5000 {
++ device_type = "elbc";
++ compatible = "fsl-elbc";
++ reg = <5000 1000>;
++ interrupts = <4d 8>;
++ interrupt-parent = < &ipic >;
++ allow-direct-device-sleep;
++ };
++
+ };
+ };
+diff -urN linux-2.6.23.orig/arch/powerpc/sysdev/fsl_soc.c linux-2.6.23/arch/powerpc/sysdev/fsl_soc.c
+--- linux-2.6.23.orig/arch/powerpc/sysdev/fsl_soc.c 2007-10-09 22:31:38.000000000 +0200
++++ linux-2.6.23/arch/powerpc/sysdev/fsl_soc.c 2007-11-28 20:36:39.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
+@@ -27,6 +33,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>
+@@ -648,6 +656,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 = get_property(np, "name", NULL);
++ chip_data.partitions_str = 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);
++
+ #ifdef CONFIG_CPM2
+
+ extern void init_scc_ioports(struct fs_uart_platform_info*);
+diff -urN linux-2.6.23.orig/drivers/mtd/nand/fsl_elbc.c linux-2.6.23/drivers/mtd/nand/fsl_elbc.c
+--- linux-2.6.23.orig/drivers/mtd/nand/fsl_elbc.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.23/drivers/mtd/nand/fsl_elbc.c 2007-11-28 20:36:39.000000000 +0100
+@@ -0,0 +1,1325 @@
++/* 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 <asm/mpc83xx.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.23.orig/drivers/mtd/nand/Kconfig linux-2.6.23/drivers/mtd/nand/Kconfig
+--- linux-2.6.23.orig/drivers/mtd/nand/Kconfig 2007-10-09 22:31:38.000000000 +0200
++++ linux-2.6.23/drivers/mtd/nand/Kconfig 2007-11-28 20:36:39.000000000 +0100
+@@ -265,6 +265,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.23.orig/drivers/mtd/nand/Makefile linux-2.6.23/drivers/mtd/nand/Makefile
+--- linux-2.6.23.orig/drivers/mtd/nand/Makefile 2007-10-09 22:31:38.000000000 +0200
++++ linux-2.6.23/drivers/mtd/nand/Makefile 2007-11-28 20:36:39.000000000 +0100
+@@ -27,5 +27,6 @@
+ obj-$(CONFIG_MTD_NAND_CM_X270) += cmx270_nand.o
+ obj-$(CONFIG_MTD_NAND_BASLER_EXCITE) += excite_nandflash.o
+ obj-$(CONFIG_MTD_NAND_PLATFORM) += plat_nand.o
++obj-$(CONFIG_MTD_NAND_FSL_ELBC) += fsl_elbc.o
+
+ nand-objs := nand_base.o nand_bbt.o
+diff -urN linux-2.6.23.orig/include/linux/mtd/fsl_elbc.h linux-2.6.23/include/linux/mtd/fsl_elbc.h
+--- linux-2.6.23.orig/include/linux/mtd/fsl_elbc.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.23/include/linux/mtd/fsl_elbc.h 2007-11-28 20:36:39.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/mpc8323e-rdb/defconfig b/packages/linux/linux-2.6.23/mpc8323e-rdb/defconfig
index 0acf0ada2d..f1990e62cc 100644
--- a/packages/linux/linux-2.6.23/mpc8323e-rdb/defconfig
+++ b/packages/linux/linux-2.6.23/mpc8323e-rdb/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.23
-# Tue Oct 30 11:07:43 2007
+# Sat Nov 3 08:17:08 2007
#
# CONFIG_PPC64 is not set
@@ -97,7 +97,7 @@ CONFIG_MODULE_UNLOAD=y
# CONFIG_MODULE_FORCE_UNLOAD is not set
# CONFIG_MODVERSIONS is not set
# CONFIG_MODULE_SRCVERSION_ALL is not set
-# CONFIG_KMOD is not set
+CONFIG_KMOD=y
CONFIG_BLOCK=y
# CONFIG_LBD is not set
# CONFIG_BLK_DEV_IO_TRACE is not set
@@ -243,55 +243,269 @@ CONFIG_XFRM=y
# CONFIG_NET_KEY is not set
CONFIG_INET=y
CONFIG_IP_MULTICAST=y
-# CONFIG_IP_ADVANCED_ROUTER is not set
+CONFIG_IP_ADVANCED_ROUTER=y
+CONFIG_ASK_IP_FIB_HASH=y
+# CONFIG_IP_FIB_TRIE is not set
CONFIG_IP_FIB_HASH=y
+CONFIG_IP_MULTIPLE_TABLES=y
+CONFIG_IP_ROUTE_MULTIPATH=y
+CONFIG_IP_ROUTE_VERBOSE=y
CONFIG_IP_PNP=y
CONFIG_IP_PNP_DHCP=y
CONFIG_IP_PNP_BOOTP=y
-# CONFIG_IP_PNP_RARP is not set
-# CONFIG_NET_IPIP is not set
-# CONFIG_NET_IPGRE is not set
+CONFIG_IP_PNP_RARP=y
+CONFIG_NET_IPIP=m
+CONFIG_NET_IPGRE=m
+# CONFIG_NET_IPGRE_BROADCAST is not set
# CONFIG_IP_MROUTE is not set
# CONFIG_ARPD is not set
CONFIG_SYN_COOKIES=y
-# CONFIG_INET_AH is not set
-# CONFIG_INET_ESP is not set
-# CONFIG_INET_IPCOMP is not set
-# CONFIG_INET_XFRM_TUNNEL is not set
-# CONFIG_INET_TUNNEL is not set
-CONFIG_INET_XFRM_MODE_TRANSPORT=y
-CONFIG_INET_XFRM_MODE_TUNNEL=y
-CONFIG_INET_XFRM_MODE_BEET=y
+CONFIG_INET_AH=m
+CONFIG_INET_ESP=m
+CONFIG_INET_IPCOMP=m
+CONFIG_INET_XFRM_TUNNEL=m
+CONFIG_INET_TUNNEL=m
+CONFIG_INET_XFRM_MODE_TRANSPORT=m
+CONFIG_INET_XFRM_MODE_TUNNEL=m
+CONFIG_INET_XFRM_MODE_BEET=m
CONFIG_INET_DIAG=y
CONFIG_INET_TCP_DIAG=y
# CONFIG_TCP_CONG_ADVANCED is not set
CONFIG_TCP_CONG_CUBIC=y
CONFIG_DEFAULT_TCP_CONG="cubic"
# CONFIG_TCP_MD5SIG is not set
-# CONFIG_IPV6 is not set
-# CONFIG_INET6_XFRM_TUNNEL is not set
-# CONFIG_INET6_TUNNEL is not set
+# CONFIG_IP_VS is not set
+CONFIG_IPV6=m
+# CONFIG_IPV6_PRIVACY is not set
+# CONFIG_IPV6_ROUTER_PREF is not set
+# CONFIG_IPV6_OPTIMISTIC_DAD is not set
+CONFIG_INET6_AH=m
+CONFIG_INET6_ESP=m
+CONFIG_INET6_IPCOMP=m
+CONFIG_IPV6_MIP6=m
+CONFIG_INET6_XFRM_TUNNEL=m
+CONFIG_INET6_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_TRANSPORT=m
+CONFIG_INET6_XFRM_MODE_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_BEET=m
+CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m
+CONFIG_IPV6_SIT=m
+CONFIG_IPV6_TUNNEL=m
+# CONFIG_IPV6_MULTIPLE_TABLES is not set
# CONFIG_NETWORK_SECMARK is not set
-# CONFIG_NETFILTER is not set
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+CONFIG_BRIDGE_NETFILTER=y
+
+#
+# Core Netfilter Configuration
+#
+CONFIG_NETFILTER_NETLINK=m
+CONFIG_NETFILTER_NETLINK_QUEUE=m
+CONFIG_NETFILTER_NETLINK_LOG=m
+CONFIG_NF_CONNTRACK_ENABLED=m
+CONFIG_NF_CONNTRACK=m
+CONFIG_NF_CT_ACCT=y
+CONFIG_NF_CONNTRACK_MARK=y
+# CONFIG_NF_CONNTRACK_EVENTS is not set
+CONFIG_NF_CT_PROTO_GRE=m
+CONFIG_NF_CT_PROTO_SCTP=m
+CONFIG_NF_CT_PROTO_UDPLITE=m
+CONFIG_NF_CONNTRACK_AMANDA=m
+CONFIG_NF_CONNTRACK_FTP=m
+CONFIG_NF_CONNTRACK_H323=m
+CONFIG_NF_CONNTRACK_IRC=m
+CONFIG_NF_CONNTRACK_NETBIOS_NS=m
+CONFIG_NF_CONNTRACK_PPTP=m
+CONFIG_NF_CONNTRACK_SANE=m
+CONFIG_NF_CONNTRACK_SIP=m
+CONFIG_NF_CONNTRACK_TFTP=m
+CONFIG_NF_CT_NETLINK=m
+CONFIG_NETFILTER_XTABLES=m
+CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
+# CONFIG_NETFILTER_XT_TARGET_CONNMARK is not set
+# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
+CONFIG_NETFILTER_XT_TARGET_MARK=m
+CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
+CONFIG_NETFILTER_XT_TARGET_NFLOG=m
+# CONFIG_NETFILTER_XT_TARGET_NOTRACK is not set
+# CONFIG_NETFILTER_XT_TARGET_TRACE is not set
+CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
+CONFIG_NETFILTER_XT_MATCH_COMMENT=m
+CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
+CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m
+CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
+CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
+CONFIG_NETFILTER_XT_MATCH_DCCP=m
+CONFIG_NETFILTER_XT_MATCH_DSCP=m
+CONFIG_NETFILTER_XT_MATCH_ESP=m
+CONFIG_NETFILTER_XT_MATCH_HELPER=m
+CONFIG_NETFILTER_XT_MATCH_LENGTH=m
+CONFIG_NETFILTER_XT_MATCH_LIMIT=m
+CONFIG_NETFILTER_XT_MATCH_MAC=m
+CONFIG_NETFILTER_XT_MATCH_MARK=m
+CONFIG_NETFILTER_XT_MATCH_POLICY=m
+CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
+# CONFIG_NETFILTER_XT_MATCH_PHYSDEV is not set
+CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
+CONFIG_NETFILTER_XT_MATCH_QUOTA=m
+CONFIG_NETFILTER_XT_MATCH_REALM=m
+CONFIG_NETFILTER_XT_MATCH_SCTP=m
+CONFIG_NETFILTER_XT_MATCH_STATE=m
+CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
+CONFIG_NETFILTER_XT_MATCH_STRING=m
+CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
+CONFIG_NETFILTER_XT_MATCH_U32=m
+CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
+
+#
+# IP: Netfilter Configuration
+#
+CONFIG_NF_CONNTRACK_IPV4=m
+CONFIG_NF_CONNTRACK_PROC_COMPAT=y
+CONFIG_IP_NF_QUEUE=m
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_MATCH_IPRANGE=m
+CONFIG_IP_NF_MATCH_TOS=m
+CONFIG_IP_NF_MATCH_RECENT=m
+CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_AH=m
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_MATCH_OWNER=m
+CONFIG_IP_NF_MATCH_ADDRTYPE=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_LOG=m
+CONFIG_IP_NF_TARGET_ULOG=m
+CONFIG_NF_NAT=m
+CONFIG_NF_NAT_NEEDED=y
+CONFIG_IP_NF_TARGET_MASQUERADE=m
+CONFIG_IP_NF_TARGET_REDIRECT=m
+CONFIG_IP_NF_TARGET_NETMAP=m
+CONFIG_IP_NF_TARGET_SAME=m
+CONFIG_NF_NAT_SNMP_BASIC=m
+CONFIG_NF_NAT_PROTO_GRE=m
+CONFIG_NF_NAT_FTP=m
+CONFIG_NF_NAT_IRC=m
+CONFIG_NF_NAT_TFTP=m
+CONFIG_NF_NAT_AMANDA=m
+CONFIG_NF_NAT_PPTP=m
+CONFIG_NF_NAT_H323=m
+CONFIG_NF_NAT_SIP=m
+CONFIG_IP_NF_MANGLE=m
+CONFIG_IP_NF_TARGET_TOS=m
+CONFIG_IP_NF_TARGET_ECN=m
+CONFIG_IP_NF_TARGET_TTL=m
+CONFIG_IP_NF_TARGET_CLUSTERIP=m
+CONFIG_IP_NF_RAW=m
+CONFIG_IP_NF_ARPTABLES=m
+CONFIG_IP_NF_ARPFILTER=m
+CONFIG_IP_NF_ARP_MANGLE=m
+
+#
+# IPv6: Netfilter Configuration (EXPERIMENTAL)
+#
+CONFIG_NF_CONNTRACK_IPV6=m
+CONFIG_IP6_NF_QUEUE=m
+CONFIG_IP6_NF_IPTABLES=m
+CONFIG_IP6_NF_MATCH_RT=m
+CONFIG_IP6_NF_MATCH_OPTS=m
+CONFIG_IP6_NF_MATCH_FRAG=m
+CONFIG_IP6_NF_MATCH_HL=m
+CONFIG_IP6_NF_MATCH_OWNER=m
+CONFIG_IP6_NF_MATCH_IPV6HEADER=m
+CONFIG_IP6_NF_MATCH_AH=m
+CONFIG_IP6_NF_MATCH_MH=m
+CONFIG_IP6_NF_MATCH_EUI64=m
+CONFIG_IP6_NF_FILTER=m
+CONFIG_IP6_NF_TARGET_LOG=m
+CONFIG_IP6_NF_TARGET_REJECT=m
+CONFIG_IP6_NF_MANGLE=m
+CONFIG_IP6_NF_TARGET_HL=m
+CONFIG_IP6_NF_RAW=m
+
+#
+# Bridge: Netfilter Configuration
+#
+# CONFIG_BRIDGE_NF_EBTABLES is not set
# CONFIG_IP_DCCP is not set
# CONFIG_IP_SCTP is not set
# CONFIG_TIPC is not set
-# CONFIG_ATM is not set
-# CONFIG_BRIDGE is not set
-# CONFIG_VLAN_8021Q is not set
+CONFIG_ATM=m
+CONFIG_ATM_CLIP=m
+# CONFIG_ATM_CLIP_NO_ICMP is not set
+CONFIG_ATM_LANE=m
+CONFIG_ATM_MPOA=m
+CONFIG_ATM_BR2684=m
+# CONFIG_ATM_BR2684_IPFILTER is not set
+CONFIG_BRIDGE=m
+CONFIG_VLAN_8021Q=m
# CONFIG_DECNET is not set
-# CONFIG_LLC2 is not set
-# CONFIG_IPX is not set
+CONFIG_LLC=m
+CONFIG_LLC2=m
+CONFIG_IPX=m
+# CONFIG_IPX_INTERN is not set
# CONFIG_ATALK is not set
# CONFIG_X25 is not set
# CONFIG_LAPB is not set
# CONFIG_ECONET is not set
-# CONFIG_WAN_ROUTER is not set
+CONFIG_WAN_ROUTER=m
#
# QoS and/or fair queueing
#
-# CONFIG_NET_SCHED is not set
+CONFIG_NET_SCHED=y
+CONFIG_NET_SCH_FIFO=y
+
+#
+# Queueing/Scheduling
+#
+CONFIG_NET_SCH_CBQ=m
+CONFIG_NET_SCH_HTB=m
+CONFIG_NET_SCH_HFSC=m
+CONFIG_NET_SCH_ATM=m
+CONFIG_NET_SCH_PRIO=m
+CONFIG_NET_SCH_RR=m
+CONFIG_NET_SCH_RED=m
+CONFIG_NET_SCH_SFQ=m
+CONFIG_NET_SCH_TEQL=m
+CONFIG_NET_SCH_TBF=m
+CONFIG_NET_SCH_GRED=m
+CONFIG_NET_SCH_DSMARK=m
+CONFIG_NET_SCH_NETEM=m
+CONFIG_NET_SCH_INGRESS=m
+
+#
+# Classification
+#
+CONFIG_NET_CLS=y
+CONFIG_NET_CLS_BASIC=m
+CONFIG_NET_CLS_TCINDEX=m
+CONFIG_NET_CLS_ROUTE4=m
+CONFIG_NET_CLS_ROUTE=y
+CONFIG_NET_CLS_FW=m
+CONFIG_NET_CLS_U32=m
+CONFIG_CLS_U32_PERF=y
+CONFIG_CLS_U32_MARK=y
+CONFIG_NET_CLS_RSVP=m
+CONFIG_NET_CLS_RSVP6=m
+CONFIG_NET_EMATCH=y
+CONFIG_NET_EMATCH_STACK=32
+CONFIG_NET_EMATCH_CMP=m
+CONFIG_NET_EMATCH_NBYTE=m
+CONFIG_NET_EMATCH_U32=m
+CONFIG_NET_EMATCH_META=m
+CONFIG_NET_EMATCH_TEXT=m
+CONFIG_NET_CLS_ACT=y
+CONFIG_NET_ACT_POLICE=m
+CONFIG_NET_ACT_GACT=m
+CONFIG_GACT_PROB=y
+CONFIG_NET_ACT_MIRRED=m
+CONFIG_NET_ACT_IPT=m
+CONFIG_NET_ACT_PEDIT=m
+CONFIG_NET_ACT_SIMP=m
+# CONFIG_NET_CLS_POLICE is not set
+CONFIG_NET_CLS_IND=y
#
# Network testing
@@ -299,17 +513,49 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
# CONFIG_NET_PKTGEN is not set
# CONFIG_HAMRADIO is not set
# CONFIG_IRDA is not set
-# CONFIG_BT is not set
+CONFIG_BT=m
+CONFIG_BT_L2CAP=m
+CONFIG_BT_SCO=m
+CONFIG_BT_RFCOMM=m
+CONFIG_BT_RFCOMM_TTY=y
+CONFIG_BT_BNEP=m
+CONFIG_BT_BNEP_MC_FILTER=y
+CONFIG_BT_BNEP_PROTO_FILTER=y
+# CONFIG_BT_CMTP is not set
+CONFIG_BT_HIDP=m
+
+#
+# Bluetooth device drivers
+#
+CONFIG_BT_HCIUSB=m
+CONFIG_BT_HCIUSB_SCO=y
+CONFIG_BT_HCIUART=m
+CONFIG_BT_HCIUART_H4=y
+CONFIG_BT_HCIUART_BCSP=y
+CONFIG_BT_HCIBCM203X=m
+CONFIG_BT_HCIBPA10X=m
+CONFIG_BT_HCIBFUSB=m
+CONFIG_BT_HCIVHCI=m
# CONFIG_AF_RXRPC is not set
+CONFIG_FIB_RULES=y
#
# Wireless
#
-# CONFIG_CFG80211 is not set
-# CONFIG_WIRELESS_EXT is not set
-# CONFIG_MAC80211 is not set
-# CONFIG_IEEE80211 is not set
-# CONFIG_RFKILL is not set
+CONFIG_CFG80211=y
+CONFIG_WIRELESS_EXT=y
+CONFIG_MAC80211=m
+# CONFIG_MAC80211_LEDS is not set
+# CONFIG_MAC80211_DEBUG is not set
+CONFIG_IEEE80211=m
+# CONFIG_IEEE80211_DEBUG is not set
+CONFIG_IEEE80211_CRYPT_WEP=m
+CONFIG_IEEE80211_CRYPT_CCMP=m
+CONFIG_IEEE80211_CRYPT_TKIP=m
+CONFIG_IEEE80211_SOFTMAC=m
+# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
+CONFIG_RFKILL=m
+CONFIG_RFKILL_INPUT=m
# CONFIG_NET_9P is not set
#
@@ -321,7 +567,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
#
CONFIG_STANDALONE=y
CONFIG_PREVENT_FIRMWARE_BUILD=y
-# CONFIG_FW_LOADER is not set
+CONFIG_FW_LOADER=m
# CONFIG_SYS_HYPERVISOR is not set
# CONFIG_CONNECTOR is not set
CONFIG_MTD=y
@@ -383,6 +629,8 @@ CONFIG_MTD_PHYSMAP_BANKWIDTH=2
# Self-contained MTD device drivers
#
# CONFIG_MTD_PMC551 is not set
+# CONFIG_MTD_DATAFLASH is not set
+# CONFIG_MTD_M25P80 is not set
# CONFIG_MTD_SLRAM is not set
# CONFIG_MTD_PHRAM is not set
# CONFIG_MTD_MTDRAM is not set
@@ -411,7 +659,7 @@ CONFIG_BLK_DEV=y
# CONFIG_BLK_DEV_UMEM is not set
# CONFIG_BLK_DEV_COW_COMMON is not set
CONFIG_BLK_DEV_LOOP=y
-# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+CONFIG_BLK_DEV_CRYPTOLOOP=m
# CONFIG_BLK_DEV_NBD is not set
# CONFIG_BLK_DEV_SX8 is not set
# CONFIG_BLK_DEV_UB is not set
@@ -420,10 +668,10 @@ CONFIG_BLK_DEV_RAM_COUNT=16
CONFIG_BLK_DEV_RAM_SIZE=32768
CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
# CONFIG_CDROM_PKTCDVD is not set
-# CONFIG_ATA_OVER_ETH is not set
+CONFIG_ATA_OVER_ETH=m
CONFIG_MISC_DEVICES=y
# CONFIG_PHANTOM is not set
-# CONFIG_EEPROM_93CX6 is not set
+CONFIG_EEPROM_93CX6=m
# CONFIG_SGI_IOC4 is not set
# CONFIG_TIFM_CORE is not set
# CONFIG_IDE is not set
@@ -519,6 +767,7 @@ CONFIG_SCSI_LOWLEVEL=y
# CONFIG_MACINTOSH_DRIVERS is not set
CONFIG_NETDEVICES=y
# CONFIG_NETDEVICES_MULTIQUEUE is not set
+# CONFIG_IFB is not set
# CONFIG_DUMMY is not set
# CONFIG_BONDING is not set
# CONFIG_MACVLAN is not set
@@ -588,7 +837,44 @@ CONFIG_NETDEV_10000=y
# Wireless LAN
#
# CONFIG_WLAN_PRE80211 is not set
-# CONFIG_WLAN_80211 is not set
+CONFIG_WLAN_80211=y
+CONFIG_IPW2100=m
+CONFIG_IPW2100_MONITOR=y
+# CONFIG_IPW2100_DEBUG is not set
+CONFIG_IPW2200=m
+CONFIG_IPW2200_MONITOR=y
+CONFIG_IPW2200_RADIOTAP=y
+CONFIG_IPW2200_PROMISCUOUS=y
+CONFIG_IPW2200_QOS=y
+# CONFIG_IPW2200_DEBUG is not set
+CONFIG_LIBERTAS=m
+CONFIG_LIBERTAS_USB=m
+# CONFIG_LIBERTAS_DEBUG is not set
+CONFIG_AIRO=m
+CONFIG_HERMES=m
+CONFIG_PLX_HERMES=m
+CONFIG_TMD_HERMES=m
+CONFIG_NORTEL_HERMES=m
+CONFIG_PCI_HERMES=m
+CONFIG_ATMEL=m
+CONFIG_PCI_ATMEL=m
+CONFIG_PRISM54=m
+CONFIG_USB_ZD1201=m
+CONFIG_RTL8187=m
+CONFIG_HOSTAP=m
+CONFIG_HOSTAP_FIRMWARE=y
+CONFIG_HOSTAP_FIRMWARE_NVRAM=y
+CONFIG_HOSTAP_PLX=m
+CONFIG_HOSTAP_PCI=m
+CONFIG_BCM43XX=m
+CONFIG_BCM43XX_DEBUG=y
+CONFIG_BCM43XX_DMA=y
+CONFIG_BCM43XX_PIO=y
+CONFIG_BCM43XX_DMA_AND_PIO_MODE=y
+# CONFIG_BCM43XX_DMA_MODE is not set
+# CONFIG_BCM43XX_PIO_MODE is not set
+CONFIG_ZD1211RW=m
+# CONFIG_ZD1211RW_DEBUG is not set
#
# USB Network Adapters
@@ -600,16 +886,137 @@ CONFIG_NETDEV_10000=y
# CONFIG_USB_USBNET_MII is not set
# CONFIG_USB_USBNET is not set
# CONFIG_WAN is not set
+CONFIG_ATM_DRIVERS=y
+# CONFIG_ATM_DUMMY is not set
+# CONFIG_ATM_TCP is not set
+# CONFIG_ATM_LANAI is not set
+# CONFIG_ATM_ENI is not set
+# CONFIG_ATM_FIRESTREAM is not set
+# CONFIG_ATM_ZATM is not set
+# CONFIG_ATM_NICSTAR is not set
+# CONFIG_ATM_IDT77252 is not set
+# CONFIG_ATM_AMBASSADOR is not set
+# CONFIG_ATM_HORIZON is not set
+# CONFIG_ATM_IA is not set
+# CONFIG_ATM_FORE200E_MAYBE is not set
+# CONFIG_ATM_HE is not set
# CONFIG_FDDI is not set
# CONFIG_HIPPI is not set
-# CONFIG_PPP is not set
+CONFIG_PPP=m
+CONFIG_PPP_MULTILINK=y
+CONFIG_PPP_FILTER=y
+CONFIG_PPP_ASYNC=m
+CONFIG_PPP_SYNC_TTY=m
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+CONFIG_PPP_MPPE=m
+CONFIG_PPPOE=m
+CONFIG_PPPOATM=m
+CONFIG_PPPOL2TP=m
# CONFIG_SLIP is not set
+CONFIG_SLHC=m
# CONFIG_NET_FC is not set
# CONFIG_SHAPER is not set
# CONFIG_NETCONSOLE is not set
# CONFIG_NETPOLL is not set
# CONFIG_NET_POLL_CONTROLLER is not set
-# CONFIG_ISDN is not set
+CONFIG_ISDN=m
+CONFIG_ISDN_I4L=m
+# CONFIG_ISDN_PPP is not set
+# CONFIG_ISDN_AUDIO is not set
+
+#
+# ISDN feature submodules
+#
+CONFIG_ISDN_DRV_LOOP=m
+CONFIG_ISDN_DIVERSION=m
+
+#
+# ISDN4Linux hardware drivers
+#
+
+#
+# Passive cards
+#
+CONFIG_ISDN_DRV_HISAX=m
+
+#
+# D-channel protocol features
+#
+CONFIG_HISAX_EURO=y
+CONFIG_DE_AOC=y
+# CONFIG_HISAX_NO_SENDCOMPLETE is not set
+# CONFIG_HISAX_NO_LLC is not set
+# CONFIG_HISAX_NO_KEYPAD is not set
+CONFIG_HISAX_1TR6=y
+CONFIG_HISAX_NI1=y
+CONFIG_HISAX_MAX_CARDS=8
+
+#
+# HiSax supported cards
+#
+CONFIG_HISAX_16_3=y
+CONFIG_HISAX_S0BOX=y
+CONFIG_HISAX_FRITZPCI=y
+CONFIG_HISAX_AVM_A1_PCMCIA=y
+CONFIG_HISAX_ELSA=y
+CONFIG_HISAX_DIEHLDIVA=y
+CONFIG_HISAX_SEDLBAUER=y
+CONFIG_HISAX_NICCY=y
+CONFIG_HISAX_BKM_A4T=y
+CONFIG_HISAX_SCT_QUADRO=y
+CONFIG_HISAX_GAZEL=y
+CONFIG_HISAX_W6692=y
+CONFIG_HISAX_HFC_SX=y
+# CONFIG_HISAX_DEBUG is not set
+
+#
+# HiSax PCMCIA card service modules
+#
+
+#
+# HiSax sub driver modules
+#
+CONFIG_HISAX_ST5481=m
+CONFIG_HISAX_HFCUSB=m
+CONFIG_HISAX_HFC4S8S=m
+CONFIG_HISAX_FRITZ_PCIPNP=m
+CONFIG_HISAX_HDLC=y
+
+#
+# Active cards
+#
+CONFIG_HYSDN=m
+CONFIG_HYSDN_CAPI=y
+CONFIG_ISDN_DRV_GIGASET=m
+CONFIG_GIGASET_BASE=m
+CONFIG_GIGASET_M105=m
+CONFIG_GIGASET_M101=m
+# CONFIG_GIGASET_DEBUG is not set
+CONFIG_GIGASET_UNDOCREQ=y
+CONFIG_ISDN_CAPI=m
+CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON=y
+CONFIG_CAPI_TRACE=y
+# CONFIG_ISDN_CAPI_MIDDLEWARE is not set
+CONFIG_ISDN_CAPI_CAPI20=m
+# CONFIG_ISDN_CAPI_CAPIDRV is not set
+
+#
+# CAPI hardware drivers
+#
+CONFIG_CAPI_AVM=y
+CONFIG_ISDN_DRV_AVMB1_B1PCI=m
+# CONFIG_ISDN_DRV_AVMB1_B1PCIV4 is not set
+CONFIG_ISDN_DRV_AVMB1_B1PCMCIA=m
+CONFIG_ISDN_DRV_AVMB1_T1PCI=m
+CONFIG_ISDN_DRV_AVMB1_C4=m
+CONFIG_CAPI_EICON=y
+CONFIG_ISDN_DIVAS=m
+CONFIG_ISDN_DIVAS_BRIPCI=y
+CONFIG_ISDN_DIVAS_PRIPCI=y
+CONFIG_ISDN_DIVAS_DIVACAPI=m
+CONFIG_ISDN_DIVAS_USERIDI=m
+CONFIG_ISDN_DIVAS_MAINT=m
# CONFIG_PHONE is not set
#
@@ -700,7 +1107,8 @@ CONFIG_GEN_RTC=y
# CONFIG_AGP is not set
# CONFIG_DRM is not set
# CONFIG_RAW_DRIVER is not set
-# CONFIG_TCG_TPM is not set
+CONFIG_TCG_TPM=y
+# CONFIG_TCG_ATMEL is not set
CONFIG_DEVPORT=y
CONFIG_I2C=y
CONFIG_I2C_BOARDINFO=y
@@ -762,8 +1170,21 @@ CONFIG_I2C_MPC=y
#
# SPI support
#
-# CONFIG_SPI is not set
-# CONFIG_SPI_MASTER is not set
+CONFIG_SPI=y
+CONFIG_SPI_MASTER=y
+
+#
+# SPI Master Controller Drivers
+#
+CONFIG_SPI_BITBANG=y
+CONFIG_SPI_MPC83xx=y
+
+#
+# SPI Protocol Masters
+#
+CONFIG_SPI_AT25=m
+CONFIG_SPI_SPIDEV=m
+CONFIG_SPI_TLE62X0=m
# CONFIG_W1 is not set
# CONFIG_POWER_SUPPLY is not set
CONFIG_HWMON=y
@@ -787,6 +1208,7 @@ CONFIG_HWMON=y
# CONFIG_SENSORS_GL520SM is not set
# CONFIG_SENSORS_IT87 is not set
# CONFIG_SENSORS_LM63 is not set
+# CONFIG_SENSORS_LM70 is not set
# CONFIG_SENSORS_LM75 is not set
# CONFIG_SENSORS_LM77 is not set
# CONFIG_SENSORS_LM78 is not set
@@ -968,13 +1390,42 @@ CONFIG_USB_MON=y
#
# USB DSL modem support
#
+# CONFIG_USB_ATM is not set
#
# USB Gadget Support
#
# CONFIG_USB_GADGET is not set
-# CONFIG_MMC is not set
-# CONFIG_NEW_LEDS is not set
+CONFIG_MMC=m
+# CONFIG_MMC_DEBUG is not set
+# CONFIG_MMC_UNSAFE_RESUME is not set
+
+#
+# MMC/SD Card Drivers
+#
+CONFIG_MMC_BLOCK=m
+CONFIG_MMC_BLOCK_BOUNCE=y
+
+#
+# MMC/SD Host Controller Drivers
+#
+# CONFIG_MMC_SDHCI is not set
+# CONFIG_MMC_WBSD is not set
+# CONFIG_MMC_TIFM_SD is not set
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=m
+
+#
+# LED drivers
+#
+CONFIG_LEDS_MPC832X=m
+
+#
+# LED Triggers
+#
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=m
+CONFIG_LEDS_TRIGGER_HEARTBEAT=m
# CONFIG_INFINIBAND is not set
# CONFIG_EDAC is not set
# CONFIG_RTC_CLASS is not set
@@ -982,15 +1433,17 @@ CONFIG_USB_MON=y
#
# DMA Engine support
#
-# CONFIG_DMA_ENGINE is not set
+CONFIG_DMA_ENGINE=y
#
# DMA Clients
#
+CONFIG_NET_DMA=y
#
# DMA Devices
#
+# CONFIG_INTEL_IOATDMA is not set
#
# Userspace I/O
@@ -1024,7 +1477,7 @@ CONFIG_INOTIFY_USER=y
# CONFIG_QUOTA is not set
CONFIG_DNOTIFY=y
# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
+CONFIG_AUTOFS4_FS=y
# CONFIG_FUSE_FS is not set
#
@@ -1041,7 +1494,9 @@ CONFIG_MSDOS_FS=y
CONFIG_VFAT_FS=y
CONFIG_FAT_DEFAULT_CODEPAGE=437
CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
-# CONFIG_NTFS_FS is not set
+CONFIG_NTFS_FS=m
+# CONFIG_NTFS_DEBUG is not set
+CONFIG_NTFS_RW=y
#
# Pseudo filesystems
@@ -1075,7 +1530,7 @@ CONFIG_JFFS2_FS_WRITEBUFFER=y
CONFIG_JFFS2_ZLIB=y
CONFIG_JFFS2_RTIME=y
# CONFIG_JFFS2_RUBIN is not set
-# CONFIG_CRAMFS is not set
+CONFIG_CRAMFS=y
# CONFIG_VXFS_FS is not set
# CONFIG_HPFS_FS is not set
# CONFIG_QNX4FS_FS is not set
@@ -1090,18 +1545,27 @@ CONFIG_NFS_V3=y
# CONFIG_NFS_V3_ACL is not set
CONFIG_NFS_V4=y
# CONFIG_NFS_DIRECTIO is not set
-# CONFIG_NFSD is not set
+CONFIG_NFSD=m
+# CONFIG_NFSD_V3 is not set
+CONFIG_NFSD_TCP=y
CONFIG_ROOT_NFS=y
CONFIG_LOCKD=y
CONFIG_LOCKD_V4=y
+CONFIG_EXPORTFS=m
CONFIG_NFS_COMMON=y
CONFIG_SUNRPC=y
CONFIG_SUNRPC_GSS=y
# CONFIG_SUNRPC_BIND34 is not set
CONFIG_RPCSEC_GSS_KRB5=y
# CONFIG_RPCSEC_GSS_SPKM3 is not set
-# CONFIG_SMB_FS is not set
-# CONFIG_CIFS is not set
+CONFIG_SMB_FS=m
+# CONFIG_SMB_NLS_DEFAULT is not set
+CONFIG_CIFS=m
+# CONFIG_CIFS_STATS is not set
+# CONFIG_CIFS_WEAK_PW_HASH is not set
+# CONFIG_CIFS_XATTR is not set
+# CONFIG_CIFS_DEBUG2 is not set
+# CONFIG_CIFS_EXPERIMENTAL is not set
# CONFIG_NCP_FS is not set
# CONFIG_CODA_FS is not set
# CONFIG_AFS_FS is not set
@@ -1185,14 +1649,18 @@ CONFIG_UCC=y
# Library routines
#
CONFIG_BITREVERSE=y
-# CONFIG_CRC_CCITT is not set
-# CONFIG_CRC16 is not set
-# CONFIG_CRC_ITU_T is not set
+CONFIG_CRC_CCITT=m
+CONFIG_CRC16=m
+CONFIG_CRC_ITU_T=m
CONFIG_CRC32=y
-# CONFIG_CRC7 is not set
-# CONFIG_LIBCRC32C is not set
+CONFIG_CRC7=m
+CONFIG_LIBCRC32C=m
CONFIG_ZLIB_INFLATE=y
CONFIG_ZLIB_DEFLATE=y
+CONFIG_TEXTSEARCH=y
+CONFIG_TEXTSEARCH_KMP=m
+CONFIG_TEXTSEARCH_BM=m
+CONFIG_TEXTSEARCH_FSM=m
CONFIG_PLIST=y
CONFIG_HAS_IOMEM=y
CONFIG_HAS_IOPORT=y
@@ -1201,7 +1669,8 @@ CONFIG_HAS_DMA=y
#
# Instrumentation Support
#
-# CONFIG_PROFILING is not set
+CONFIG_PROFILING=y
+CONFIG_OPROFILE=m
#
# Kernel hacking
@@ -1223,39 +1692,42 @@ CONFIG_ENABLE_MUST_CHECK=y
# CONFIG_SECURITY is not set
CONFIG_CRYPTO=y
CONFIG_CRYPTO_ALGAPI=y
+CONFIG_CRYPTO_ABLKCIPHER=m
CONFIG_CRYPTO_BLKCIPHER=y
+CONFIG_CRYPTO_HASH=m
CONFIG_CRYPTO_MANAGER=y
-# CONFIG_CRYPTO_HMAC is not set
-# CONFIG_CRYPTO_XCBC is not set
-# CONFIG_CRYPTO_NULL is not set
-# CONFIG_CRYPTO_MD4 is not set
+CONFIG_CRYPTO_HMAC=m
+CONFIG_CRYPTO_XCBC=m
+CONFIG_CRYPTO_NULL=m
+CONFIG_CRYPTO_MD4=m
CONFIG_CRYPTO_MD5=y
-# CONFIG_CRYPTO_SHA1 is not set
-# CONFIG_CRYPTO_SHA256 is not set
-# CONFIG_CRYPTO_SHA512 is not set
-# CONFIG_CRYPTO_WP512 is not set
-# CONFIG_CRYPTO_TGR192 is not set
-# CONFIG_CRYPTO_GF128MUL is not set
+CONFIG_CRYPTO_SHA1=m
+CONFIG_CRYPTO_SHA256=m
+CONFIG_CRYPTO_SHA512=m
+CONFIG_CRYPTO_WP512=m
+CONFIG_CRYPTO_TGR192=m
+CONFIG_CRYPTO_GF128MUL=m
CONFIG_CRYPTO_ECB=m
CONFIG_CRYPTO_CBC=y
CONFIG_CRYPTO_PCBC=m
-# CONFIG_CRYPTO_LRW is not set
-# CONFIG_CRYPTO_CRYPTD is not set
+CONFIG_CRYPTO_LRW=m
+CONFIG_CRYPTO_CRYPTD=m
CONFIG_CRYPTO_DES=y
-# CONFIG_CRYPTO_FCRYPT is not set
-# CONFIG_CRYPTO_BLOWFISH is not set
-# CONFIG_CRYPTO_TWOFISH is not set
-# CONFIG_CRYPTO_SERPENT is not set
-# CONFIG_CRYPTO_AES is not set
-# CONFIG_CRYPTO_CAST5 is not set
-# CONFIG_CRYPTO_CAST6 is not set
-# CONFIG_CRYPTO_TEA is not set
-# CONFIG_CRYPTO_ARC4 is not set
-# CONFIG_CRYPTO_KHAZAD is not set
-# CONFIG_CRYPTO_ANUBIS is not set
-# CONFIG_CRYPTO_DEFLATE is not set
-# CONFIG_CRYPTO_MICHAEL_MIC is not set
-# CONFIG_CRYPTO_CRC32C is not set
-# CONFIG_CRYPTO_CAMELLIA is not set
-# CONFIG_CRYPTO_TEST is not set
+CONFIG_CRYPTO_FCRYPT=m
+CONFIG_CRYPTO_BLOWFISH=m
+CONFIG_CRYPTO_TWOFISH=m
+CONFIG_CRYPTO_TWOFISH_COMMON=m
+CONFIG_CRYPTO_SERPENT=m
+CONFIG_CRYPTO_AES=m
+CONFIG_CRYPTO_CAST5=m
+CONFIG_CRYPTO_CAST6=m
+CONFIG_CRYPTO_TEA=m
+CONFIG_CRYPTO_ARC4=m
+CONFIG_CRYPTO_KHAZAD=m
+CONFIG_CRYPTO_ANUBIS=m
+CONFIG_CRYPTO_DEFLATE=m
+CONFIG_CRYPTO_MICHAEL_MIC=m
+CONFIG_CRYPTO_CRC32C=m
+CONFIG_CRYPTO_CAMELLIA=m
+CONFIG_CRYPTO_TEST=m
CONFIG_CRYPTO_HW=y
diff --git a/packages/linux/linux-2.6.23/mpc8323e-rdb/mpc832x-leds.patch b/packages/linux/linux-2.6.23/mpc8323e-rdb/mpc832x-leds.patch
new file mode 100644
index 0000000000..a4863b8daf
--- /dev/null
+++ b/packages/linux/linux-2.6.23/mpc8323e-rdb/mpc832x-leds.patch
@@ -0,0 +1,150 @@
+diff -urN linux-2.6.23.orig/drivers/leds/Kconfig linux-2.6.23/drivers/leds/Kconfig
+--- linux-2.6.23.orig/drivers/leds/Kconfig 2007-10-09 22:31:38.000000000 +0200
++++ linux-2.6.23/drivers/leds/Kconfig 2007-11-09 18:15:03.000000000 +0100
+@@ -101,6 +101,12 @@
+ outputs. To be useful the particular board must have LEDs
+ and they must be connected to the GPIO lines.
+
++config LEDS_MPC832X
++ tristate "LED Support for MPC832x LEDs"
++ depends on LEDS_CLASS && PPC_83xx
++ help
++ This option enables support for the LEDs on MPC832x boards.
++
+ comment "LED Triggers"
+
+ config LEDS_TRIGGERS
+diff -urN linux-2.6.23.orig/drivers/leds/leds-mpc832x.c linux-2.6.23/drivers/leds/leds-mpc832x.c
+--- linux-2.6.23.orig/drivers/leds/leds-mpc832x.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.23/drivers/leds/leds-mpc832x.c 2007-11-09 18:15:19.000000000 +0100
+@@ -0,0 +1,119 @@
++/*
++ * drivers/leds/leds-mpc832x.c
++ * Copyright (c) Jeremy Laine <jeremy.laine@bolloretelecom.eu>
++ *
++ * 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
++ * more details.
++ *
++ * MPC832x leds driver
++ *
++ */
++
++#include <linux/module.h>
++#include <linux/platform_device.h>
++#include <linux/leds.h>
++#include <linux/err.h>
++#include <asm/io.h>
++#include <asm/qe.h>
++
++int par_io_config_pin(u8 port, u8 pin, int dir, int open_drain,
++ int assignment, int has_irq);
++int par_io_data_set(u8 port, u8 pin, u8 val);
++
++static struct platform_dev *leds_pdev = NULL;
++
++#define LED_PORT 3
++#define GREEN_PIN 18
++#define YELLOW_PIN 17
++#define RED_PIN 16
++
++static void mpc832xleds_green_set(struct led_classdev *led_cdev, enum led_brightness value)
++{
++ par_io_data_set(LED_PORT, GREEN_PIN, !value);
++}
++
++static struct led_classdev mpc832x_green_led = {
++ .name = "mpc832x:green",
++ .brightness_set = mpc832xleds_green_set,
++};
++
++static void mpc832xleds_yellow_set(struct led_classdev *led_cdev, enum led_brightness value)
++{
++ par_io_data_set(LED_PORT, YELLOW_PIN, !value);
++}
++
++static struct led_classdev mpc832x_yellow_led = {
++ .name = "mpc832x:yellow",
++ .brightness_set = mpc832xleds_yellow_set,
++};
++
++static void mpc832xleds_red_set(struct led_classdev *led_cdev, enum led_brightness value)
++{
++ par_io_data_set(LED_PORT, RED_PIN, !value);
++}
++
++static struct led_classdev mpc832x_red_led = {
++ .name = "mpc832x:red",
++ .brightness_set = mpc832xleds_red_set,
++};
++
++static int mpc832xleds_probe(struct platform_device *pdev)
++{
++ int ret;
++
++ ret = led_classdev_register(&pdev->dev, &mpc832x_green_led);
++ if (ret < 0)
++ return ret;
++ par_io_config_pin(LED_PORT, GREEN_PIN, 1, 0, 0, 0);
++
++ ret = led_classdev_register(&pdev->dev, &mpc832x_yellow_led);
++ if (ret < 0)
++ return ret;
++ par_io_config_pin(LED_PORT, YELLOW_PIN, 1, 0, 0, 0);
++
++ ret = led_classdev_register(&pdev->dev, &mpc832x_red_led);
++ if (ret < 0)
++ return ret;
++ par_io_config_pin(LED_PORT, RED_PIN, 1, 0, 0, 0);
++
++ return ret;
++}
++
++static int mpc832xleds_remove(struct platform_device *pdev)
++{
++ led_classdev_unregister(&mpc832x_green_led);
++ led_classdev_unregister(&mpc832x_yellow_led);
++ led_classdev_unregister(&mpc832x_red_led);
++ return 0;
++}
++
++static struct platform_driver mpc832xleds_driver = {
++ .driver = {
++ .name = "mpc832x-leds",
++ .owner = THIS_MODULE,
++ },
++ .probe = mpc832xleds_probe,
++ .remove = mpc832xleds_remove,
++};
++
++static int __init mpc832xleds_init(void)
++{
++ leds_pdev = platform_device_register_simple("mpc832x-leds", -1, NULL, 0);
++
++ return platform_driver_register(&mpc832xleds_driver);
++}
++
++static void __exit mpc832xleds_exit(void)
++{
++ platform_driver_unregister(&mpc832xleds_driver);
++
++ platform_device_unregister(leds_pdev);
++}
++
++module_init(mpc832xleds_init);
++module_exit(mpc832xleds_exit);
++
++MODULE_AUTHOR("Jeremy Laine <jeremy.laine@bolloretelecom.eu>");
++MODULE_DESCRIPTION("MPC832X GPIO LED driver");
++MODULE_LICENSE("GPL");
+diff -urN linux-2.6.23.orig/drivers/leds/Makefile linux-2.6.23/drivers/leds/Makefile
+--- linux-2.6.23.orig/drivers/leds/Makefile 2007-10-09 22:31:38.000000000 +0200
++++ linux-2.6.23/drivers/leds/Makefile 2007-11-09 18:15:03.000000000 +0100
+@@ -17,6 +17,7 @@
+ obj-$(CONFIG_LEDS_H1940) += leds-h1940.o
+ obj-$(CONFIG_LEDS_COBALT) += leds-cobalt.o
+ obj-$(CONFIG_LEDS_GPIO) += leds-gpio.o
++obj-$(CONFIG_LEDS_MPC832X) += leds-mpc832x.o
+
+ # LED Triggers
+ obj-$(CONFIG_LEDS_TRIGGER_TIMER) += ledtrig-timer.o
diff --git a/packages/linux/linux-bfin_svn.bb b/packages/linux/linux-bfin_svn.bb
index ee5b04910f..d7402e606a 100644
--- a/packages/linux/linux-bfin_svn.bb
+++ b/packages/linux/linux-bfin_svn.bb
@@ -1,5 +1,7 @@
require linux.inc
+COMPATIBLE_HOST = 'bfin.*-uclinux'
+
PV = "2.6.22.10+svnr${SRCREV}"
SRC_URI = "svn://sources.blackfin.uclinux.org/linux-kernel/;module=trunk \
diff --git a/packages/linux/linux-davinci/davinci-sffsdr/.mtn2git_empty b/packages/linux/linux-davinci/davinci-sffsdr/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-davinci/davinci-sffsdr/.mtn2git_empty
diff --git a/packages/linux/linux-davinci/davinci-sffsdr/defconfig b/packages/linux/linux-davinci/davinci-sffsdr/defconfig
new file mode 100644
index 0000000000..ac53caffc9
--- /dev/null
+++ b/packages/linux/linux-davinci/davinci-sffsdr/defconfig
@@ -0,0 +1,1289 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.23-davinci1
+# Sat Oct 20 12:59:22 2007
+#
+CONFIG_ARM=y
+CONFIG_SYS_SUPPORTS_APM_EMULATION=y
+CONFIG_GENERIC_GPIO=y
+CONFIG_GENERIC_TIME=y
+CONFIG_GENERIC_CLOCKEVENTS=y
+CONFIG_MMU=y
+# CONFIG_NO_IOPORT is not set
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_STACKTRACE_SUPPORT=y
+CONFIG_LOCKDEP_SUPPORT=y
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+CONFIG_HARDIRQS_SW_RESEND=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+# CONFIG_ARCH_HAS_ILOG2_U32 is not set
+# CONFIG_ARCH_HAS_ILOG2_U64 is not set
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_ZONE_DMA=y
+CONFIG_VECTORS_BASE=0xffff0000
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+
+#
+# General setup
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+CONFIG_LOCALVERSION=""
+CONFIG_LOCALVERSION_AUTO=y
+# CONFIG_SWAP is not set
+CONFIG_SYSVIPC=y
+CONFIG_SYSVIPC_SYSCTL=y
+CONFIG_POSIX_MQUEUE=y
+# CONFIG_BSD_PROCESS_ACCT is not set
+# CONFIG_TASKSTATS is not set
+# CONFIG_USER_NS is not set
+# CONFIG_AUDIT is not set
+CONFIG_IKCONFIG=y
+CONFIG_IKCONFIG_PROC=y
+CONFIG_LOG_BUF_SHIFT=14
+CONFIG_SYSFS_DEPRECATED=y
+# CONFIG_RELAY is not set
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_INITRAMFS_SOURCE=""
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_SYSCTL=y
+CONFIG_EMBEDDED=y
+CONFIG_UID16=y
+CONFIG_SYSCTL_SYSCALL=y
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_EXTRA_PASS is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_ANON_INODES=y
+CONFIG_EPOLL=y
+CONFIG_SIGNALFD=y
+CONFIG_EVENTFD=y
+CONFIG_SHMEM=y
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_SLAB=y
+# CONFIG_SLUB is not set
+# CONFIG_SLOB is not set
+CONFIG_RT_MUTEXES=y
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=0
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+CONFIG_MODULE_FORCE_UNLOAD=y
+CONFIG_MODVERSIONS=y
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_KMOD=y
+CONFIG_BLOCK=y
+# CONFIG_LBD is not set
+# CONFIG_BLK_DEV_IO_TRACE is not set
+# CONFIG_LSF is not set
+# CONFIG_BLK_DEV_BSG is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+CONFIG_IOSCHED_AS=y
+# CONFIG_IOSCHED_DEADLINE is not set
+# CONFIG_IOSCHED_CFQ is not set
+CONFIG_DEFAULT_AS=y
+# CONFIG_DEFAULT_DEADLINE is not set
+# CONFIG_DEFAULT_CFQ is not set
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="anticipatory"
+
+#
+# System Type
+#
+# CONFIG_ARCH_AAEC2000 is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_VERSATILE is not set
+# CONFIG_ARCH_AT91 is not set
+# CONFIG_ARCH_CLPS7500 is not set
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_CO285 is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_EP93XX is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_NETX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_IOP13XX is not set
+# CONFIG_ARCH_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IXP23XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_KS8695 is not set
+# CONFIG_ARCH_NS9XXX is not set
+# CONFIG_ARCH_MXC is not set
+# CONFIG_ARCH_PNX4008 is not set
+# CONFIG_ARCH_PXA is not set
+# CONFIG_ARCH_RPC is not set
+# CONFIG_ARCH_SA1100 is not set
+# CONFIG_ARCH_S3C2410 is not set
+# CONFIG_ARCH_SHARK is not set
+# CONFIG_ARCH_LH7A40X is not set
+CONFIG_ARCH_DAVINCI=y
+# CONFIG_ARCH_OMAP is not set
+
+#
+# Boot options
+#
+
+#
+# Power management
+#
+
+#
+# TI DaVinci Implementations
+#
+
+#
+# DaVinci Core Type
+#
+CONFIG_ARCH_DAVINCI644x=y
+
+#
+# DaVinci Board Type
+#
+CONFIG_MACH_DAVINCI_EVM=y
+CONFIG_DAVINCI_I2C_EXPANDER=y
+# CONFIG_DAVINCI_MCBSP is not set
+
+#
+# DaVinci Options
+#
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+CONFIG_CPU_ARM926T=y
+CONFIG_CPU_32v5=y
+CONFIG_CPU_ABRT_EV5TJ=y
+CONFIG_CPU_PABRT_NOIFAR=y
+CONFIG_CPU_CACHE_VIVT=y
+CONFIG_CPU_COPY_V4WB=y
+CONFIG_CPU_TLB_V4WBI=y
+CONFIG_CPU_CP15=y
+CONFIG_CPU_CP15_MMU=y
+
+#
+# Processor Features
+#
+CONFIG_ARM_THUMB=y
+# CONFIG_CPU_ICACHE_DISABLE is not set
+# CONFIG_CPU_DCACHE_DISABLE is not set
+# CONFIG_CPU_DCACHE_WRITETHROUGH is not set
+# CONFIG_CPU_CACHE_ROUND_ROBIN is not set
+# CONFIG_OUTER_CACHE is not set
+
+#
+# Bus support
+#
+# CONFIG_PCI_SYSCALL is not set
+# CONFIG_ARCH_SUPPORTS_MSI is not set
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+# CONFIG_PCCARD is not set
+
+#
+# Kernel Features
+#
+# CONFIG_TICK_ONESHOT is not set
+# CONFIG_NO_HZ is not set
+# CONFIG_HIGH_RES_TIMERS is not set
+# CONFIG_PREEMPT is not set
+CONFIG_HZ=100
+CONFIG_AEABI=y
+CONFIG_OABI_COMPAT=y
+# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
+CONFIG_SELECT_MEMORY_MODEL=y
+CONFIG_FLATMEM_MANUAL=y
+# CONFIG_DISCONTIGMEM_MANUAL is not set
+# CONFIG_SPARSEMEM_MANUAL is not set
+CONFIG_FLATMEM=y
+CONFIG_FLAT_NODE_MEM_MAP=y
+# CONFIG_SPARSEMEM_STATIC is not set
+CONFIG_SPLIT_PTLOCK_CPUS=4096
+# CONFIG_RESOURCES_64BIT is not set
+CONFIG_ZONE_DMA_FLAG=1
+CONFIG_BOUNCE=y
+CONFIG_VIRT_TO_BUS=y
+CONFIG_LEDS=y
+# CONFIG_LEDS_CPU is not set
+CONFIG_ALIGNMENT_TRAP=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE=""
+# CONFIG_XIP_KERNEL is not set
+# CONFIG_KEXEC is not set
+
+#
+# Floating point emulation
+#
+
+#
+# At least one emulation must be selected
+#
+# CONFIG_FPE_NWFPE is not set
+# CONFIG_FPE_FASTFPE is not set
+# CONFIG_VFP is not set
+
+#
+# Userspace binary formats
+#
+CONFIG_BINFMT_ELF=y
+# CONFIG_BINFMT_AOUT is not set
+# CONFIG_BINFMT_MISC is not set
+
+#
+# Power management options
+#
+# CONFIG_PM is not set
+CONFIG_SUSPEND_UP_POSSIBLE=y
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+CONFIG_PACKET=y
+# CONFIG_PACKET_MMAP is not set
+CONFIG_UNIX=y
+CONFIG_XFRM=y
+# CONFIG_XFRM_USER is not set
+# CONFIG_XFRM_SUB_POLICY is not set
+# CONFIG_XFRM_MIGRATE is not set
+# CONFIG_NET_KEY is not set
+CONFIG_INET=y
+# CONFIG_IP_MULTICAST is not set
+# CONFIG_IP_ADVANCED_ROUTER is not set
+CONFIG_IP_FIB_HASH=y
+CONFIG_IP_PNP=y
+CONFIG_IP_PNP_DHCP=y
+# CONFIG_IP_PNP_BOOTP is not set
+# CONFIG_IP_PNP_RARP is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_ARPD is not set
+# CONFIG_SYN_COOKIES is not set
+# CONFIG_INET_AH is not set
+# CONFIG_INET_ESP is not set
+# CONFIG_INET_IPCOMP is not set
+# CONFIG_INET_XFRM_TUNNEL is not set
+CONFIG_INET_TUNNEL=m
+CONFIG_INET_XFRM_MODE_TRANSPORT=y
+CONFIG_INET_XFRM_MODE_TUNNEL=y
+CONFIG_INET_XFRM_MODE_BEET=y
+CONFIG_INET_DIAG=y
+CONFIG_INET_TCP_DIAG=y
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_CUBIC=y
+CONFIG_DEFAULT_TCP_CONG="cubic"
+# CONFIG_TCP_MD5SIG is not set
+# CONFIG_IP_VS is not set
+CONFIG_IPV6=m
+# CONFIG_IPV6_PRIVACY is not set
+# CONFIG_IPV6_ROUTER_PREF is not set
+# CONFIG_IPV6_OPTIMISTIC_DAD is not set
+# CONFIG_INET6_AH is not set
+# CONFIG_INET6_ESP is not set
+# CONFIG_INET6_IPCOMP is not set
+# CONFIG_IPV6_MIP6 is not set
+# CONFIG_INET6_XFRM_TUNNEL is not set
+# CONFIG_INET6_TUNNEL is not set
+CONFIG_INET6_XFRM_MODE_TRANSPORT=m
+CONFIG_INET6_XFRM_MODE_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_BEET=m
+# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
+CONFIG_IPV6_SIT=m
+# CONFIG_IPV6_TUNNEL is not set
+# CONFIG_IPV6_MULTIPLE_TABLES is not set
+# CONFIG_NETWORK_SECMARK is not set
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+
+#
+# Core Netfilter Configuration
+#
+# CONFIG_NETFILTER_NETLINK is not set
+# CONFIG_NF_CONNTRACK_ENABLED is not set
+# CONFIG_NF_CONNTRACK is not set
+# CONFIG_NETFILTER_XTABLES is not set
+
+#
+# IP: Netfilter Configuration
+#
+# CONFIG_IP_NF_QUEUE is not set
+# CONFIG_IP_NF_IPTABLES is not set
+# CONFIG_IP_NF_ARPTABLES is not set
+
+#
+# IPv6: Netfilter Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP6_NF_QUEUE is not set
+# CONFIG_IP6_NF_IPTABLES is not set
+# CONFIG_IP_DCCP is not set
+# CONFIG_IP_SCTP is not set
+# CONFIG_TIPC is not set
+# CONFIG_ATM is not set
+# CONFIG_BRIDGE is not set
+# CONFIG_VLAN_8021Q is not set
+# CONFIG_DECNET is not set
+# CONFIG_LLC2 is not set
+# CONFIG_IPX is not set
+# CONFIG_ATALK is not set
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_ECONET is not set
+# CONFIG_WAN_ROUTER is not set
+
+#
+# QoS and/or fair queueing
+#
+# CONFIG_NET_SCHED is not set
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_HAMRADIO is not set
+# CONFIG_IRDA is not set
+# CONFIG_BT is not set
+# CONFIG_AF_RXRPC is not set
+
+#
+# Wireless
+#
+# CONFIG_CFG80211 is not set
+# CONFIG_WIRELESS_EXT is not set
+# CONFIG_MAC80211 is not set
+# CONFIG_IEEE80211 is not set
+# CONFIG_RFKILL is not set
+# CONFIG_NET_9P is not set
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+# CONFIG_FW_LOADER is not set
+# CONFIG_SYS_HYPERVISOR is not set
+# CONFIG_CONNECTOR is not set
+CONFIG_MTD=y
+# CONFIG_MTD_DEBUG is not set
+# CONFIG_MTD_CONCAT is not set
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+CONFIG_MTD_CMDLINE_PARTS=y
+# CONFIG_MTD_AFS_PARTS is not set
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=y
+CONFIG_MTD_BLKDEVS=y
+CONFIG_MTD_BLOCK=y
+# CONFIG_FTL is not set
+# CONFIG_NFTL is not set
+# CONFIG_INFTL is not set
+# CONFIG_RFD_FTL is not set
+# CONFIG_SSFDC is not set
+
+#
+# RAM/ROM/Flash chip drivers
+#
+CONFIG_MTD_CFI=y
+# CONFIG_MTD_JEDECPROBE is not set
+CONFIG_MTD_GEN_PROBE=y
+# CONFIG_MTD_CFI_ADV_OPTIONS is not set
+CONFIG_MTD_MAP_BANK_WIDTH_1=y
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+CONFIG_MTD_MAP_BANK_WIDTH_4=y
+# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
+CONFIG_MTD_CFI_I1=y
+CONFIG_MTD_CFI_I2=y
+# CONFIG_MTD_CFI_I4 is not set
+# CONFIG_MTD_CFI_I8 is not set
+# CONFIG_MTD_CFI_INTELEXT is not set
+CONFIG_MTD_CFI_AMDSTD=y
+# CONFIG_MTD_CFI_STAA is not set
+CONFIG_MTD_CFI_UTIL=y
+# CONFIG_MTD_RAM is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+# CONFIG_MTD_PHYSMAP is not set
+# CONFIG_MTD_ARM_INTEGRATOR is not set
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_SLRAM is not set
+# CONFIG_MTD_PHRAM is not set
+# CONFIG_MTD_MTDRAM is not set
+# CONFIG_MTD_BLOCK2MTD is not set
+
+#
+# Disk-On-Chip Device Drivers
+#
+# CONFIG_MTD_DOC2000 is not set
+# CONFIG_MTD_DOC2001 is not set
+# CONFIG_MTD_DOC2001PLUS is not set
+CONFIG_MTD_NAND=y
+# CONFIG_MTD_NAND_VERIFY_WRITE is not set
+# CONFIG_MTD_NAND_ECC_SMC is not set
+# CONFIG_MTD_NAND_MUSEUM_IDS is not set
+CONFIG_MTD_NAND_IDS=y
+# CONFIG_MTD_NAND_DISKONCHIP is not set
+# CONFIG_MTD_NAND_NANDSIM is not set
+CONFIG_MTD_NAND_PLATFORM=y
+# CONFIG_MTD_ONENAND is not set
+
+#
+# UBI - Unsorted block images
+#
+# CONFIG_MTD_UBI is not set
+# CONFIG_PARPORT is not set
+CONFIG_BLK_DEV=y
+# CONFIG_BLK_DEV_COW_COMMON is not set
+CONFIG_BLK_DEV_LOOP=m
+# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+# CONFIG_BLK_DEV_NBD is not set
+# CONFIG_BLK_DEV_UB is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=1
+CONFIG_BLK_DEV_RAM_SIZE=32768
+CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+# CONFIG_IDE is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+CONFIG_SCSI=m
+CONFIG_SCSI_DMA=y
+# CONFIG_SCSI_TGT is not set
+# CONFIG_SCSI_NETLINK is not set
+CONFIG_SCSI_PROC_FS=y
+
+#
+# SCSI support type (disk, tape, CD-ROM)
+#
+CONFIG_BLK_DEV_SD=m
+# CONFIG_CHR_DEV_ST is not set
+# CONFIG_CHR_DEV_OSST is not set
+# CONFIG_BLK_DEV_SR is not set
+# CONFIG_CHR_DEV_SG is not set
+# CONFIG_CHR_DEV_SCH is not set
+
+#
+# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
+#
+# CONFIG_SCSI_MULTI_LUN is not set
+# CONFIG_SCSI_CONSTANTS is not set
+# CONFIG_SCSI_LOGGING is not set
+# CONFIG_SCSI_SCAN_ASYNC is not set
+CONFIG_SCSI_WAIT_SCAN=m
+
+#
+# SCSI Transports
+#
+# CONFIG_SCSI_SPI_ATTRS is not set
+# CONFIG_SCSI_FC_ATTRS is not set
+# CONFIG_SCSI_ISCSI_ATTRS is not set
+# CONFIG_SCSI_SAS_LIBSAS is not set
+CONFIG_SCSI_LOWLEVEL=y
+# CONFIG_ISCSI_TCP is not set
+# CONFIG_SCSI_DEBUG is not set
+# CONFIG_ATA is not set
+# CONFIG_MD is not set
+CONFIG_NETDEVICES=y
+# CONFIG_NETDEVICES_MULTIQUEUE is not set
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_MACVLAN is not set
+# CONFIG_EQUALIZER is not set
+CONFIG_TUN=m
+# CONFIG_PHYLIB is not set
+CONFIG_NET_ETHERNET=y
+# CONFIG_MII is not set
+# CONFIG_AX88796 is not set
+# CONFIG_SMC91X is not set
+CONFIG_TI_DAVINCI_EMAC=y
+# CONFIG_DM9000 is not set
+CONFIG_NETDEV_1000=y
+CONFIG_NETDEV_10000=y
+
+#
+# Wireless LAN
+#
+# CONFIG_WLAN_PRE80211 is not set
+# CONFIG_WLAN_80211 is not set
+
+#
+# USB Network Adapters
+#
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_RTL8150 is not set
+# CONFIG_USB_USBNET_MII is not set
+# CONFIG_USB_USBNET is not set
+# CONFIG_WAN is not set
+CONFIG_PPP=m
+# CONFIG_PPP_MULTILINK is not set
+# CONFIG_PPP_FILTER is not set
+CONFIG_PPP_ASYNC=m
+CONFIG_PPP_SYNC_TTY=m
+CONFIG_PPP_DEFLATE=m
+# CONFIG_PPP_BSDCOMP is not set
+# CONFIG_PPP_MPPE is not set
+# CONFIG_PPPOE is not set
+# CONFIG_PPPOL2TP is not set
+# CONFIG_SLIP is not set
+CONFIG_SLHC=m
+# CONFIG_SHAPER is not set
+CONFIG_NETCONSOLE=y
+CONFIG_NETPOLL=y
+CONFIG_NETPOLL_TRAP=y
+CONFIG_NET_POLL_CONTROLLER=y
+# CONFIG_ISDN is not set
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS is not set
+# CONFIG_INPUT_POLLDEV is not set
+
+#
+# Userland interfaces
+#
+CONFIG_INPUT_MOUSEDEV=y
+CONFIG_INPUT_MOUSEDEV_PSAUX=y
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_TSDEV is not set
+CONFIG_INPUT_EVDEV=m
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# Input Device Drivers
+#
+CONFIG_INPUT_KEYBOARD=y
+CONFIG_KEYBOARD_ATKBD=y
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_LKKBD is not set
+CONFIG_KEYBOARD_XTKBD=y
+# CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_KEYBOARD_STOWAWAY is not set
+# CONFIG_KEYBOARD_GPIO is not set
+# CONFIG_INPUT_MOUSE is not set
+# CONFIG_INPUT_JOYSTICK is not set
+# CONFIG_INPUT_TABLET is not set
+# CONFIG_INPUT_TOUCHSCREEN is not set
+# CONFIG_INPUT_MISC is not set
+
+#
+# Hardware I/O ports
+#
+CONFIG_SERIO=y
+CONFIG_SERIO_SERPORT=y
+CONFIG_SERIO_LIBPS2=y
+# CONFIG_SERIO_RAW is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+# CONFIG_VT_CONSOLE is not set
+CONFIG_HW_CONSOLE=y
+# CONFIG_VT_HW_CONSOLE_BINDING is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+CONFIG_SERIAL_8250=y
+CONFIG_SERIAL_8250_CONSOLE=y
+CONFIG_SERIAL_8250_NR_UARTS=2
+CONFIG_SERIAL_8250_RUNTIME_UARTS=2
+# CONFIG_SERIAL_8250_EXTENDED is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+CONFIG_LEGACY_PTYS=y
+CONFIG_LEGACY_PTY_COUNT=256
+# CONFIG_IPMI_HANDLER is not set
+# CONFIG_WATCHDOG is not set
+CONFIG_HW_RANDOM=y
+# CONFIG_NVRAM is not set
+CONFIG_DAVINCI_RTC=y
+# CONFIG_R3964 is not set
+# CONFIG_RAW_DRIVER is not set
+# CONFIG_TCG_TPM is not set
+CONFIG_I2C=y
+CONFIG_I2C_BOARDINFO=y
+CONFIG_I2C_CHARDEV=y
+
+#
+# I2C Algorithms
+#
+# CONFIG_I2C_ALGOBIT is not set
+# CONFIG_I2C_ALGOPCF is not set
+# CONFIG_I2C_ALGOPCA is not set
+
+#
+# I2C Hardware Bus support
+#
+# CONFIG_I2C_GPIO is not set
+# CONFIG_I2C_OCORES is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_SIMTEC is not set
+# CONFIG_I2C_TAOS_EVM is not set
+# CONFIG_I2C_STUB is not set
+# CONFIG_I2C_TINY_USB is not set
+CONFIG_I2C_DAVINCI=y
+
+#
+# Miscellaneous I2C Chip support
+#
+# CONFIG_SENSORS_DS1337 is not set
+# CONFIG_SENSORS_DS1374 is not set
+# CONFIG_DS1682 is not set
+# CONFIG_SENSORS_EEPROM is not set
+# CONFIG_SENSORS_PCF8574 is not set
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+CONFIG_SENSORS_TLV320AIC23=y
+CONFIG_SENSORS_TLV320AIC33=y
+# CONFIG_SENSORS_MAX6875 is not set
+# CONFIG_SENSORS_TSL2550 is not set
+CONFIG_GPIOEXPANDER_DAVINCI=y
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CHIP is not set
+
+#
+# SPI support
+#
+# CONFIG_SPI is not set
+# CONFIG_SPI_MASTER is not set
+# CONFIG_W1 is not set
+CONFIG_HWMON=y
+# CONFIG_HWMON_VID is not set
+# CONFIG_SENSORS_ABITUGURU is not set
+# CONFIG_SENSORS_ABITUGURU3 is not set
+# CONFIG_SENSORS_AD7418 is not set
+# CONFIG_SENSORS_ADM1021 is not set
+# CONFIG_SENSORS_ADM1025 is not set
+# CONFIG_SENSORS_ADM1026 is not set
+# CONFIG_SENSORS_ADM1029 is not set
+# CONFIG_SENSORS_ADM1031 is not set
+# CONFIG_SENSORS_ADM9240 is not set
+# CONFIG_SENSORS_ASB100 is not set
+# CONFIG_SENSORS_ATXP1 is not set
+# CONFIG_SENSORS_DS1621 is not set
+# CONFIG_SENSORS_F71805F is not set
+# CONFIG_SENSORS_FSCHER is not set
+# CONFIG_SENSORS_FSCPOS is not set
+# CONFIG_SENSORS_GL518SM is not set
+# CONFIG_SENSORS_GL520SM is not set
+# CONFIG_SENSORS_IT87 is not set
+# CONFIG_SENSORS_LM63 is not set
+# CONFIG_SENSORS_LM75 is not set
+# CONFIG_SENSORS_LM77 is not set
+# CONFIG_SENSORS_LM78 is not set
+# CONFIG_SENSORS_LM80 is not set
+# CONFIG_SENSORS_LM83 is not set
+# CONFIG_SENSORS_LM85 is not set
+# CONFIG_SENSORS_LM87 is not set
+# CONFIG_SENSORS_LM90 is not set
+# CONFIG_SENSORS_LM92 is not set
+# CONFIG_SENSORS_LM93 is not set
+# CONFIG_SENSORS_MAX1619 is not set
+# CONFIG_SENSORS_MAX6650 is not set
+# CONFIG_SENSORS_PC87360 is not set
+# CONFIG_SENSORS_PC87427 is not set
+# CONFIG_SENSORS_DME1737 is not set
+# CONFIG_SENSORS_SMSC47M1 is not set
+# CONFIG_SENSORS_SMSC47M192 is not set
+# CONFIG_SENSORS_SMSC47B397 is not set
+# CONFIG_SENSORS_THMC50 is not set
+# CONFIG_SENSORS_VT1211 is not set
+# CONFIG_SENSORS_W83781D is not set
+# CONFIG_SENSORS_W83791D is not set
+# CONFIG_SENSORS_W83792D is not set
+# CONFIG_SENSORS_W83793 is not set
+# CONFIG_SENSORS_W83L785TS is not set
+# CONFIG_SENSORS_W83627HF is not set
+# CONFIG_SENSORS_W83627EHF is not set
+# CONFIG_HWMON_DEBUG_CHIP is not set
+CONFIG_MISC_DEVICES=y
+# CONFIG_EEPROM_93CX6 is not set
+
+#
+# Multifunction device drivers
+#
+# CONFIG_MFD_SM501 is not set
+# CONFIG_NEW_LEDS is not set
+
+#
+# Multimedia devices
+#
+CONFIG_VIDEO_DEV=y
+CONFIG_VIDEO_V4L1=y
+CONFIG_VIDEO_V4L1_COMPAT=y
+CONFIG_VIDEO_V4L2=y
+CONFIG_VIDEO_CAPTURE_DRIVERS=y
+# CONFIG_VIDEO_ADV_DEBUG is not set
+CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
+# CONFIG_VIDEO_TVP5146 is not set
+# CONFIG_VIDEO_CPIA is not set
+# CONFIG_VIDEO_CPIA2 is not set
+# CONFIG_VIDEO_SAA5246A is not set
+# CONFIG_VIDEO_SAA5249 is not set
+# CONFIG_TUNER_3036 is not set
+# CONFIG_TUNER_TEA5761 is not set
+CONFIG_V4L_USB_DRIVERS=y
+# CONFIG_VIDEO_PVRUSB2 is not set
+# CONFIG_VIDEO_EM28XX is not set
+# CONFIG_VIDEO_USBVISION is not set
+# CONFIG_USB_VICAM is not set
+# CONFIG_USB_IBMCAM is not set
+# CONFIG_USB_KONICAWC is not set
+# CONFIG_USB_QUICKCAM_MESSENGER is not set
+# CONFIG_USB_ET61X251 is not set
+# CONFIG_VIDEO_OVCAMCHIP is not set
+# CONFIG_USB_W9968CF is not set
+# CONFIG_USB_OV511 is not set
+# CONFIG_USB_SE401 is not set
+# CONFIG_USB_SN9C102 is not set
+# CONFIG_USB_STV680 is not set
+# CONFIG_USB_ZC0301 is not set
+# CONFIG_USB_PWC is not set
+# CONFIG_USB_ZR364XX is not set
+CONFIG_RADIO_ADAPTERS=y
+# CONFIG_RADIO_TEA5761 is not set
+# CONFIG_USB_DSBR is not set
+# CONFIG_DVB_CORE is not set
+CONFIG_DAB=y
+# CONFIG_USB_DABUSB is not set
+
+#
+# Graphics support
+#
+# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
+
+#
+# Display device support
+#
+# CONFIG_DISPLAY_SUPPORT is not set
+# CONFIG_VGASTATE is not set
+CONFIG_VIDEO_OUTPUT_CONTROL=m
+CONFIG_FB=y
+CONFIG_FIRMWARE_EDID=y
+# CONFIG_FB_DDC is not set
+# CONFIG_FB_CFB_FILLRECT is not set
+# CONFIG_FB_CFB_COPYAREA is not set
+# CONFIG_FB_CFB_IMAGEBLIT is not set
+# CONFIG_FB_SYS_FILLRECT is not set
+# CONFIG_FB_SYS_COPYAREA is not set
+# CONFIG_FB_SYS_IMAGEBLIT is not set
+# CONFIG_FB_SYS_FOPS is not set
+CONFIG_FB_DEFERRED_IO=y
+# CONFIG_FB_SVGALIB is not set
+# CONFIG_FB_MACMODES is not set
+# CONFIG_FB_BACKLIGHT is not set
+# CONFIG_FB_MODE_HELPERS is not set
+# CONFIG_FB_TILEBLITTING is not set
+
+#
+# Frame buffer hardware drivers
+#
+# CONFIG_FB_S1D13XXX is not set
+CONFIG_FB_DAVINCI=y
+# CONFIG_FB_VIRTUAL is not set
+
+#
+# Console display driver support
+#
+# CONFIG_VGA_CONSOLE is not set
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
+# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
+# CONFIG_FONTS is not set
+CONFIG_FONT_8x8=y
+CONFIG_FONT_8x16=y
+CONFIG_LOGO=y
+CONFIG_LOGO_LINUX_MONO=y
+CONFIG_LOGO_LINUX_VGA16=y
+CONFIG_LOGO_LINUX_CLUT224=y
+
+#
+# Sound
+#
+CONFIG_SOUND=y
+
+#
+# Advanced Linux Sound Architecture
+#
+# CONFIG_SND is not set
+
+#
+# Open Sound System
+#
+CONFIG_SOUND_PRIME=y
+# CONFIG_SOUND_MSNDCLAS is not set
+# CONFIG_SOUND_MSNDPIN is not set
+# CONFIG_SOUND_DAVINCI is not set
+CONFIG_HID_SUPPORT=y
+CONFIG_HID=y
+# CONFIG_HID_DEBUG is not set
+
+#
+# USB Input Devices
+#
+CONFIG_USB_HID=m
+# CONFIG_USB_HIDINPUT_POWERBOOK is not set
+# CONFIG_HID_FF is not set
+# CONFIG_USB_HIDDEV is not set
+
+#
+# USB HID Boot Protocol drivers
+#
+# CONFIG_USB_KBD is not set
+# CONFIG_USB_MOUSE is not set
+CONFIG_USB_SUPPORT=y
+CONFIG_USB_ARCH_HAS_HCD=y
+# CONFIG_USB_ARCH_HAS_OHCI is not set
+# CONFIG_USB_ARCH_HAS_EHCI is not set
+CONFIG_USB=m
+# CONFIG_USB_DEBUG is not set
+
+#
+# Miscellaneous USB options
+#
+CONFIG_USB_DEVICEFS=y
+CONFIG_USB_DEVICE_CLASS=y
+# CONFIG_USB_DYNAMIC_MINORS is not set
+# CONFIG_USB_OTG is not set
+
+#
+# USB Host Controller Drivers
+#
+# CONFIG_USB_ISP116X_HCD is not set
+# CONFIG_USB_SL811_HCD is not set
+# CONFIG_USB_R8A66597_HCD is not set
+CONFIG_USB_MUSB_HDRC=m
+CONFIG_USB_MUSB_SOC=y
+
+#
+# DaVinci 644x USB support
+#
+# CONFIG_USB_MUSB_HOST is not set
+CONFIG_USB_MUSB_PERIPHERAL=y
+# CONFIG_USB_MUSB_OTG is not set
+CONFIG_USB_GADGET_MUSB_HDRC=y
+# CONFIG_MUSB_PIO_ONLY is not set
+# CONFIG_USB_INVENTRA_DMA is not set
+CONFIG_USB_TI_CPPI_DMA=y
+CONFIG_USB_MUSB_LOGLEVEL=0
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_ACM is not set
+# CONFIG_USB_PRINTER is not set
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# may also be needed; see USB_STORAGE Help for more information
+#
+CONFIG_USB_STORAGE=m
+# CONFIG_USB_STORAGE_DEBUG is not set
+# CONFIG_USB_STORAGE_DATAFAB is not set
+# CONFIG_USB_STORAGE_FREECOM is not set
+# CONFIG_USB_STORAGE_DPCM is not set
+# CONFIG_USB_STORAGE_USBAT is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_SDDR55 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+# CONFIG_USB_STORAGE_ALAUDA is not set
+# CONFIG_USB_STORAGE_ONETOUCH is not set
+# CONFIG_USB_STORAGE_KARMA is not set
+# CONFIG_USB_LIBUSUAL is not set
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_MICROTEK is not set
+CONFIG_USB_MON=y
+
+#
+# USB port drivers
+#
+
+#
+# USB Serial Converter support
+#
+# CONFIG_USB_SERIAL is not set
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_EMI62 is not set
+# CONFIG_USB_EMI26 is not set
+# CONFIG_USB_ADUTUX is not set
+# CONFIG_USB_AUERSWALD is not set
+# CONFIG_USB_RIO500 is not set
+# CONFIG_USB_LEGOTOWER is not set
+# CONFIG_USB_LCD is not set
+# CONFIG_USB_BERRY_CHARGE is not set
+# CONFIG_USB_LED is not set
+# CONFIG_USB_CYPRESS_CY7C63 is not set
+# CONFIG_USB_CYTHERM is not set
+# CONFIG_USB_PHIDGET is not set
+# CONFIG_USB_IDMOUSE is not set
+# CONFIG_USB_FTDI_ELAN is not set
+# CONFIG_USB_APPLEDISPLAY is not set
+# CONFIG_USB_LD is not set
+# CONFIG_USB_TRANCEVIBRATOR is not set
+# CONFIG_USB_IOWARRIOR is not set
+# CONFIG_USB_TEST is not set
+
+#
+# USB DSL modem support
+#
+
+#
+# USB Gadget Support
+#
+CONFIG_USB_GADGET=m
+# CONFIG_USB_GADGET_DEBUG_FILES is not set
+CONFIG_USB_GADGET_SELECTED=y
+# CONFIG_USB_GADGET_AMD5536UDC is not set
+# CONFIG_USB_GADGET_FSL_USB2 is not set
+# CONFIG_USB_GADGET_NET2280 is not set
+# CONFIG_USB_GADGET_PXA2XX is not set
+# CONFIG_USB_GADGET_M66592 is not set
+# CONFIG_USB_GADGET_GOKU is not set
+# CONFIG_USB_GADGET_LH7A40X is not set
+# CONFIG_USB_GADGET_OMAP is not set
+# CONFIG_USB_GADGET_S3C2410 is not set
+# CONFIG_USB_GADGET_AT91 is not set
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
+CONFIG_USB_GADGET_DUALSPEED=y
+CONFIG_USB_ZERO=m
+CONFIG_USB_ETH=m
+CONFIG_USB_ETH_RNDIS=y
+CONFIG_USB_GADGETFS=m
+CONFIG_USB_FILE_STORAGE=m
+# CONFIG_USB_FILE_STORAGE_TEST is not set
+CONFIG_USB_G_SERIAL=m
+# CONFIG_USB_MIDI_GADGET is not set
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+# CONFIG_MMC_UNSAFE_RESUME is not set
+
+#
+# MMC/SD Card Drivers
+#
+CONFIG_MMC_BLOCK=y
+CONFIG_MMC_BLOCK_BOUNCE=y
+
+#
+# MMC/SD Host Controller Drivers
+#
+# CONFIG_MMC_DAVINCI is not set
+CONFIG_RTC_LIB=y
+# CONFIG_RTC_CLASS is not set
+
+#
+# DMA Engine support
+#
+# CONFIG_DMA_ENGINE is not set
+
+#
+# DMA Clients
+#
+
+#
+# DMA Devices
+#
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=y
+# CONFIG_EXT2_FS_XATTR is not set
+# CONFIG_EXT2_FS_XIP is not set
+CONFIG_EXT3_FS=y
+CONFIG_EXT3_FS_XATTR=y
+# CONFIG_EXT3_FS_POSIX_ACL is not set
+# CONFIG_EXT3_FS_SECURITY is not set
+# CONFIG_EXT4DEV_FS is not set
+CONFIG_JBD=y
+# CONFIG_JBD_DEBUG is not set
+CONFIG_FS_MBCACHE=y
+# CONFIG_REISERFS_FS is not set
+# CONFIG_JFS_FS is not set
+# CONFIG_FS_POSIX_ACL is not set
+CONFIG_XFS_FS=m
+# CONFIG_XFS_QUOTA is not set
+# CONFIG_XFS_SECURITY is not set
+# CONFIG_XFS_POSIX_ACL is not set
+# CONFIG_XFS_RT is not set
+# CONFIG_GFS2_FS is not set
+# CONFIG_OCFS2_FS is not set
+CONFIG_MINIX_FS=m
+# CONFIG_ROMFS_FS is not set
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+# CONFIG_QUOTA is not set
+CONFIG_DNOTIFY=y
+# CONFIG_AUTOFS_FS is not set
+CONFIG_AUTOFS4_FS=m
+# CONFIG_FUSE_FS is not set
+
+#
+# CD-ROM/DVD Filesystems
+#
+# CONFIG_ISO9660_FS is not set
+# CONFIG_UDF_FS is not set
+
+#
+# DOS/FAT/NT Filesystems
+#
+CONFIG_FAT_FS=y
+CONFIG_MSDOS_FS=y
+CONFIG_VFAT_FS=y
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+# CONFIG_NTFS_FS is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_TMPFS_POSIX_ACL is not set
+# CONFIG_HUGETLB_PAGE is not set
+CONFIG_RAMFS=y
+# CONFIG_CONFIGFS_FS is not set
+
+#
+# Miscellaneous filesystems
+#
+# CONFIG_ADFS_FS is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_HFS_FS is not set
+# CONFIG_HFSPLUS_FS is not set
+# CONFIG_BEFS_FS is not set
+# CONFIG_BFS_FS is not set
+# CONFIG_EFS_FS is not set
+CONFIG_JFFS2_FS=y
+CONFIG_JFFS2_FS_DEBUG=0
+CONFIG_JFFS2_FS_WRITEBUFFER=y
+# CONFIG_JFFS2_SUMMARY is not set
+# CONFIG_JFFS2_FS_XATTR is not set
+# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
+CONFIG_JFFS2_ZLIB=y
+CONFIG_JFFS2_RTIME=y
+# CONFIG_JFFS2_RUBIN is not set
+CONFIG_CRAMFS=y
+# CONFIG_VXFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+
+#
+# Network File Systems
+#
+CONFIG_NFS_FS=y
+CONFIG_NFS_V3=y
+# CONFIG_NFS_V3_ACL is not set
+# CONFIG_NFS_V4 is not set
+# CONFIG_NFS_DIRECTIO is not set
+CONFIG_NFSD=m
+CONFIG_NFSD_V3=y
+# CONFIG_NFSD_V3_ACL is not set
+# CONFIG_NFSD_V4 is not set
+CONFIG_NFSD_TCP=y
+CONFIG_ROOT_NFS=y
+CONFIG_LOCKD=y
+CONFIG_LOCKD_V4=y
+CONFIG_EXPORTFS=m
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=y
+# CONFIG_SUNRPC_BIND34 is not set
+# CONFIG_RPCSEC_GSS_KRB5 is not set
+# CONFIG_RPCSEC_GSS_SPKM3 is not set
+CONFIG_SMB_FS=m
+# CONFIG_SMB_NLS_DEFAULT is not set
+# CONFIG_CIFS is not set
+# CONFIG_NCP_FS is not set
+# CONFIG_CODA_FS is not set
+# CONFIG_AFS_FS is not set
+
+#
+# Partition Types
+#
+CONFIG_PARTITION_ADVANCED=y
+# CONFIG_ACORN_PARTITION is not set
+# CONFIG_OSF_PARTITION is not set
+# CONFIG_AMIGA_PARTITION is not set
+# CONFIG_ATARI_PARTITION is not set
+# CONFIG_MAC_PARTITION is not set
+CONFIG_MSDOS_PARTITION=y
+# CONFIG_BSD_DISKLABEL is not set
+# CONFIG_MINIX_SUBPARTITION is not set
+# CONFIG_SOLARIS_X86_PARTITION is not set
+# CONFIG_UNIXWARE_DISKLABEL is not set
+# CONFIG_LDM_PARTITION is not set
+# CONFIG_SGI_PARTITION is not set
+# CONFIG_ULTRIX_PARTITION is not set
+# CONFIG_SUN_PARTITION is not set
+# CONFIG_KARMA_PARTITION is not set
+# CONFIG_EFI_PARTITION is not set
+# CONFIG_SYSV68_PARTITION is not set
+
+#
+# Native Language Support
+#
+CONFIG_NLS=y
+CONFIG_NLS_DEFAULT="iso8859-1"
+CONFIG_NLS_CODEPAGE_437=y
+# CONFIG_NLS_CODEPAGE_737 is not set
+# CONFIG_NLS_CODEPAGE_775 is not set
+# CONFIG_NLS_CODEPAGE_850 is not set
+# CONFIG_NLS_CODEPAGE_852 is not set
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+# CONFIG_NLS_CODEPAGE_936 is not set
+# CONFIG_NLS_CODEPAGE_950 is not set
+# CONFIG_NLS_CODEPAGE_932 is not set
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_ISO8859_8 is not set
+# CONFIG_NLS_CODEPAGE_1250 is not set
+# CONFIG_NLS_CODEPAGE_1251 is not set
+CONFIG_NLS_ASCII=m
+CONFIG_NLS_ISO8859_1=y
+# CONFIG_NLS_ISO8859_2 is not set
+# CONFIG_NLS_ISO8859_3 is not set
+# CONFIG_NLS_ISO8859_4 is not set
+# CONFIG_NLS_ISO8859_5 is not set
+# CONFIG_NLS_ISO8859_6 is not set
+# CONFIG_NLS_ISO8859_7 is not set
+# CONFIG_NLS_ISO8859_9 is not set
+# CONFIG_NLS_ISO8859_13 is not set
+# CONFIG_NLS_ISO8859_14 is not set
+# CONFIG_NLS_ISO8859_15 is not set
+# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_KOI8_U is not set
+CONFIG_NLS_UTF8=m
+
+#
+# Distributed Lock Manager
+#
+# CONFIG_DLM is not set
+
+#
+# Profiling support
+#
+# CONFIG_PROFILING is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+CONFIG_ENABLE_MUST_CHECK=y
+# CONFIG_MAGIC_SYSRQ is not set
+# CONFIG_UNUSED_SYMBOLS is not set
+# CONFIG_DEBUG_FS is not set
+# CONFIG_HEADERS_CHECK is not set
+# CONFIG_DEBUG_KERNEL is not set
+# CONFIG_DEBUG_BUGVERBOSE is not set
+CONFIG_FRAME_POINTER=y
+# CONFIG_DEBUG_USER is not set
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+# CONFIG_CRYPTO is not set
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+CONFIG_CRC_CCITT=m
+# CONFIG_CRC16 is not set
+# CONFIG_CRC_ITU_T is not set
+CONFIG_CRC32=y
+# CONFIG_CRC7 is not set
+# CONFIG_LIBCRC32C is not set
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_PLIST=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
+CONFIG_HAS_DMA=y
diff --git a/packages/linux/linux-davinci_2.6.x+git-davinci.bb b/packages/linux/linux-davinci_2.6.x+git-davinci.bb
index 0381716253..9228d1ffda 100644
--- a/packages/linux/linux-davinci_2.6.x+git-davinci.bb
+++ b/packages/linux/linux-davinci_2.6.x+git-davinci.bb
@@ -3,7 +3,7 @@ require linux-omap.inc
PV = "2.6.x+git${SRCDATE}"
PR = "r1"
-COMPATIBLE_MACHINE = "davinci-dvevm"
+COMPATIBLE_MACHINE = "(davinci-dvevm|davinci-sffsdr)"
SRC_URI = "git://source.mvista.com/git/linux-davinci-2.6.git;protocol=git \
file://binutils-buildid-arm.patch;patch=1 \
diff --git a/packages/linux/linux-efika-2.6.20/defconfig b/packages/linux/linux-efika-2.6.20/defconfig
index c68d7f1d1c..2f532c122f 100644
--- a/packages/linux/linux-efika-2.6.20/defconfig
+++ b/packages/linux/linux-efika-2.6.20/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.20.20-cfs-v22
-# Sun Oct 7 15:39:14 2007
+# Fri Dec 7 20:14:16 2007
#
# CONFIG_PPC64 is not set
CONFIG_PPC32=y
@@ -69,7 +69,8 @@ CONFIG_POSIX_MQUEUE=y
# CONFIG_TASKSTATS is not set
# CONFIG_UTS_NS is not set
# CONFIG_AUDIT is not set
-# CONFIG_IKCONFIG is not set
+CONFIG_IKCONFIG=y
+CONFIG_IKCONFIG_PROC=y
CONFIG_FAIR_GROUP_SCHED=y
CONFIG_FAIR_USER_SCHED=y
# CONFIG_SYSFS_DEPRECATED is not set
@@ -101,7 +102,7 @@ CONFIG_BASE_SMALL=0
#
CONFIG_MODULES=y
CONFIG_MODULE_UNLOAD=y
-# CONFIG_MODULE_FORCE_UNLOAD is not set
+CONFIG_MODULE_FORCE_UNLOAD=y
CONFIG_MODVERSIONS=y
# CONFIG_MODULE_SRCVERSION_ALL is not set
CONFIG_KMOD=y
@@ -112,7 +113,7 @@ CONFIG_KMOD=y
CONFIG_BLOCK=y
# CONFIG_LBD is not set
# CONFIG_BLK_DEV_IO_TRACE is not set
-# CONFIG_LSF is not set
+CONFIG_LSF=y
#
# IO Schedulers
@@ -245,7 +246,7 @@ CONFIG_NET=y
#
# CONFIG_NETDEBUG is not set
CONFIG_PACKET=y
-# CONFIG_PACKET_MMAP is not set
+CONFIG_PACKET_MMAP=y
CONFIG_UNIX=y
# CONFIG_NET_KEY is not set
CONFIG_INET=y
@@ -275,6 +276,11 @@ CONFIG_INET_TCP_DIAG=m
CONFIG_TCP_CONG_CUBIC=y
CONFIG_DEFAULT_TCP_CONG="cubic"
# CONFIG_TCP_MD5SIG is not set
+
+#
+# IP: Virtual Server Configuration
+#
+# CONFIG_IP_VS is not set
CONFIG_IPV6=y
# CONFIG_IPV6_PRIVACY is not set
# CONFIG_IPV6_ROUTER_PREF is not set
@@ -283,16 +289,34 @@ CONFIG_IPV6=y
# CONFIG_INET6_IPCOMP is not set
# CONFIG_IPV6_MIP6 is not set
# CONFIG_INET6_XFRM_TUNNEL is not set
-# CONFIG_INET6_TUNNEL is not set
+CONFIG_INET6_TUNNEL=m
# CONFIG_INET6_XFRM_MODE_TRANSPORT is not set
# CONFIG_INET6_XFRM_MODE_TUNNEL is not set
# CONFIG_INET6_XFRM_MODE_BEET is not set
# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
-# CONFIG_IPV6_SIT is not set
-# CONFIG_IPV6_TUNNEL is not set
+CONFIG_IPV6_SIT=m
+CONFIG_IPV6_TUNNEL=m
# CONFIG_IPV6_MULTIPLE_TABLES is not set
# CONFIG_NETWORK_SECMARK is not set
-# CONFIG_NETFILTER is not set
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+
+#
+# Core Netfilter Configuration
+#
+# CONFIG_NETFILTER_NETLINK is not set
+# CONFIG_NF_CONNTRACK_ENABLED is not set
+# CONFIG_NETFILTER_XTABLES is not set
+
+#
+# IP: Netfilter Configuration
+#
+# CONFIG_IP_NF_QUEUE is not set
+
+#
+# IPv6: Netfilter Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP6_NF_QUEUE is not set
#
# DCCP Configuration (EXPERIMENTAL)
@@ -394,7 +418,26 @@ CONFIG_ALI_FIR=m
CONFIG_VLSI_FIR=m
CONFIG_VIA_FIR=m
CONFIG_MCS_FIR=m
-# CONFIG_BT is not set
+CONFIG_BT=m
+CONFIG_BT_L2CAP=m
+CONFIG_BT_SCO=m
+CONFIG_BT_RFCOMM=m
+CONFIG_BT_RFCOMM_TTY=y
+CONFIG_BT_BNEP=m
+CONFIG_BT_BNEP_MC_FILTER=y
+CONFIG_BT_BNEP_PROTO_FILTER=y
+CONFIG_BT_HIDP=m
+
+#
+# Bluetooth device drivers
+#
+CONFIG_BT_HCIUSB=m
+CONFIG_BT_HCIUSB_SCO=y
+# CONFIG_BT_HCIUART is not set
+# CONFIG_BT_HCIBCM203X is not set
+# CONFIG_BT_HCIBPA10X is not set
+# CONFIG_BT_HCIBFUSB is not set
+# CONFIG_BT_HCIVHCI is not set
CONFIG_IEEE80211=m
# CONFIG_IEEE80211_DEBUG is not set
CONFIG_IEEE80211_CRYPT_WEP=m
@@ -965,7 +1008,14 @@ CONFIG_GEN_RTC=y
# CONFIG_R3964 is not set
# CONFIG_APPLICOM is not set
CONFIG_AGP=m
-# CONFIG_DRM is not set
+CONFIG_DRM=m
+CONFIG_DRM_TDFX=m
+CONFIG_DRM_R128=m
+CONFIG_DRM_RADEON=m
+CONFIG_DRM_MGA=m
+CONFIG_DRM_SIS=m
+CONFIG_DRM_VIA=m
+CONFIG_DRM_SAVAGE=m
# CONFIG_RAW_DRIVER is not set
#
@@ -1263,7 +1313,10 @@ CONFIG_USB_DYNAMIC_MINORS=y
#
# USB Host Controller Drivers
#
-# CONFIG_USB_EHCI_HCD is not set
+CONFIG_USB_EHCI_HCD=m
+CONFIG_USB_EHCI_SPLIT_ISO=y
+CONFIG_USB_EHCI_ROOT_HUB_TT=y
+CONFIG_USB_EHCI_TT_NEWSCHED=y
# CONFIG_USB_ISP116X_HCD is not set
CONFIG_USB_OHCI_HCD=y
CONFIG_USB_OHCI_HCD_PPC_SOC=y
@@ -1280,8 +1333,8 @@ CONFIG_USB_UHCI_HCD=m
#
# USB Device Class drivers
#
-# CONFIG_USB_ACM is not set
-# CONFIG_USB_PRINTER is not set
+CONFIG_USB_ACM=m
+CONFIG_USB_PRINTER=m
#
# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
@@ -1333,12 +1386,26 @@ CONFIG_USB_HID=y
#
# USB Network Adapters
#
-# CONFIG_USB_CATC is not set
-# CONFIG_USB_KAWETH is not set
-# CONFIG_USB_PEGASUS is not set
-# CONFIG_USB_RTL8150 is not set
-# CONFIG_USB_USBNET_MII is not set
-# CONFIG_USB_USBNET is not set
+CONFIG_USB_CATC=m
+CONFIG_USB_KAWETH=m
+CONFIG_USB_PEGASUS=m
+CONFIG_USB_RTL8150=m
+CONFIG_USB_USBNET_MII=m
+CONFIG_USB_USBNET=m
+CONFIG_USB_NET_AX8817X=m
+CONFIG_USB_NET_CDCETHER=m
+CONFIG_USB_NET_GL620A=m
+CONFIG_USB_NET_NET1080=m
+CONFIG_USB_NET_PLUSB=m
+CONFIG_USB_NET_MCS7830=m
+CONFIG_USB_NET_RNDIS_HOST=m
+CONFIG_USB_NET_CDC_SUBSET=m
+# CONFIG_USB_ALI_M5632 is not set
+# CONFIG_USB_AN2720 is not set
+CONFIG_USB_BELKIN=y
+CONFIG_USB_ARMLINUX=y
+# CONFIG_USB_EPSON2888 is not set
+CONFIG_USB_NET_ZAURUS=m
# CONFIG_USB_MON is not set
#
@@ -1348,7 +1415,58 @@ CONFIG_USB_HID=y
#
# USB Serial Converter support
#
-# CONFIG_USB_SERIAL is not set
+CONFIG_USB_SERIAL=m
+CONFIG_USB_SERIAL_GENERIC=y
+CONFIG_USB_SERIAL_AIRCABLE=m
+CONFIG_USB_SERIAL_AIRPRIME=m
+CONFIG_USB_SERIAL_ARK3116=m
+CONFIG_USB_SERIAL_BELKIN=m
+CONFIG_USB_SERIAL_WHITEHEAT=m
+CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
+CONFIG_USB_SERIAL_CP2101=m
+CONFIG_USB_SERIAL_CYPRESS_M8=m
+CONFIG_USB_SERIAL_EMPEG=m
+CONFIG_USB_SERIAL_FTDI_SIO=m
+CONFIG_USB_SERIAL_FUNSOFT=m
+CONFIG_USB_SERIAL_VISOR=m
+CONFIG_USB_SERIAL_IPAQ=m
+CONFIG_USB_SERIAL_IR=m
+CONFIG_USB_SERIAL_EDGEPORT=m
+CONFIG_USB_SERIAL_EDGEPORT_TI=m
+CONFIG_USB_SERIAL_GARMIN=m
+CONFIG_USB_SERIAL_IPW=m
+CONFIG_USB_SERIAL_KEYSPAN_PDA=m
+CONFIG_USB_SERIAL_KEYSPAN=m
+CONFIG_USB_SERIAL_KEYSPAN_MPR=y
+CONFIG_USB_SERIAL_KEYSPAN_USA28=y
+CONFIG_USB_SERIAL_KEYSPAN_USA28X=y
+CONFIG_USB_SERIAL_KEYSPAN_USA28XA=y
+CONFIG_USB_SERIAL_KEYSPAN_USA28XB=y
+CONFIG_USB_SERIAL_KEYSPAN_USA19=y
+CONFIG_USB_SERIAL_KEYSPAN_USA18X=y
+CONFIG_USB_SERIAL_KEYSPAN_USA19W=y
+CONFIG_USB_SERIAL_KEYSPAN_USA19QW=y
+CONFIG_USB_SERIAL_KEYSPAN_USA19QI=y
+CONFIG_USB_SERIAL_KEYSPAN_USA49W=y
+CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y
+CONFIG_USB_SERIAL_KLSI=m
+CONFIG_USB_SERIAL_KOBIL_SCT=m
+CONFIG_USB_SERIAL_MCT_U232=m
+CONFIG_USB_SERIAL_MOS7720=m
+CONFIG_USB_SERIAL_MOS7840=m
+CONFIG_USB_SERIAL_NAVMAN=m
+CONFIG_USB_SERIAL_PL2303=m
+CONFIG_USB_SERIAL_HP4X=m
+CONFIG_USB_SERIAL_SAFE=m
+# CONFIG_USB_SERIAL_SAFE_PADDED is not set
+CONFIG_USB_SERIAL_SIERRAWIRELESS=m
+CONFIG_USB_SERIAL_TI=m
+CONFIG_USB_SERIAL_CYBERJACK=m
+CONFIG_USB_SERIAL_XIRCOM=m
+CONFIG_USB_SERIAL_OPTION=m
+CONFIG_USB_SERIAL_OMNINET=m
+# CONFIG_USB_SERIAL_DEBUG is not set
+CONFIG_USB_EZUSB=y
#
# USB Miscellaneous drivers
@@ -1367,6 +1485,7 @@ CONFIG_USB_HID=y
# CONFIG_USB_IDMOUSE is not set
# CONFIG_USB_FTDI_ELAN is not set
# CONFIG_USB_APPLEDISPLAY is not set
+# CONFIG_USB_SISUSBVGA is not set
# CONFIG_USB_LD is not set
# CONFIG_USB_TRANCEVIBRATOR is not set
# CONFIG_USB_TEST is not set
diff --git a/packages/linux/linux-efika_2.6.20.20.bb b/packages/linux/linux-efika_2.6.20.20.bb
index b8877fa5c3..630e5a6274 100644
--- a/packages/linux/linux-efika_2.6.20.20.bb
+++ b/packages/linux/linux-efika_2.6.20.20.bb
@@ -1,7 +1,7 @@
DESCRIPTION = "Linux Kernel for the EFIKA dev platform"
SECTION = "kernel"
LICENSE = "GPL"
-PR = "r0"
+PR = "r2"
COMPATIBLE_MACHINE = "efika"
diff --git a/packages/linux/linux-ezx_2.6.23.bb b/packages/linux/linux-ezx_2.6.23.bb
index d97855a451..42624dd5a8 100644
--- a/packages/linux/linux-ezx_2.6.23.bb
+++ b/packages/linux/linux-ezx_2.6.23.bb
@@ -90,7 +90,7 @@ COMPATIBLE_MACHINE = '(a780|e680|a1200|rorkre2|rokre6)'
#CMDLINE_CON = "console=ttyS2,115200n8 console=tty1 "
CMDLINE_CON = "console=tty1 "
-CMDLINE_ROOT = "root=/dev/mmcblk0p2 rootfstype=ext2 rootdelay=1"
+CMDLINE_ROOT = "root=/dev/mmcblk0p2 rootfstype=ext2 rootwait=1"
CMDLINE_NFSROOT = "root=/dev/nfs rootfstype=nfs nfsroot=192.168.0.200:/export/ezx-image rootdelay=1 "
# Uncomment to enable dyntick
#CMDLINE_OTHER = "dyntick=enable"
diff --git a/packages/linux/linux-hackndev-2.6_svn.bb b/packages/linux/linux-hackndev-2.6_git.bb
index b76fbbb317..750be1a648 100644
--- a/packages/linux/linux-hackndev-2.6_svn.bb
+++ b/packages/linux/linux-hackndev-2.6_git.bb
@@ -2,11 +2,11 @@ DESCRIPTION = "Hack&Dev's Linux kernel for Palm devices."
HOMEPAGE = "http://www.hackndev.com/"
SECTION = "kernel"
LICENSE = "GPL"
-PR = "r11"
+PR = "r12"
COMPATIBLE_MACHINE = "(palmld|palmtc|palmtt3|palmtt5|palmtx|palmz31|palmz72|palmt650)"
-SRC_URI = "svn://hackndev.svn.sourceforge.net/svnroot/hackndev/linux4palm/linux;module=trunk;proto=https \
+SRC_URI = "git://git.hackndev.com/git/linux-hnd;protocol=http \
file://defconfig"
SRC_URI_append_palmtx += "http://www.busybox.net/downloads/busybox-1.1.0.tar.bz2 \
@@ -19,7 +19,7 @@ S = "${WORKDIR}/trunk"
K_MAJOR = "2"
K_MINOR = "6"
K_MICRO = "21"
-HHV="hnd2"
+HHV="hnd3"
PV = "${K_MAJOR}.${K_MINOR}.${K_MICRO}-${HHV}"
inherit kernel
@@ -82,3 +82,4 @@ do_deploy() {
do_deploy[dirs] = "${S}"
addtask deploy before do_build after do_compile
+
diff --git a/packages/linux/linux-handhelds-2.6.inc b/packages/linux/linux-handhelds-2.6.inc
index d2256b5f27..f58ef672aa 100644
--- a/packages/linux/linux-handhelds-2.6.inc
+++ b/packages/linux/linux-handhelds-2.6.inc
@@ -23,6 +23,8 @@ HHV ?= "${@bb.data.getVar('PV',d,1).split('-')[1].split('hh')[-1]}"
KERNEL_PRIORITY = "${@'%d' % (int(bb.data.getVar('K_MAJOR',d,1)) * 100000000 + int(bb.data.getVar('K_MINOR',d,1)) * 1000000 + int(bb.data.getVar('K_MICRO',d,1)) * 10000 + float(bb.data.getVar('HHV',d,1)))}"
+KERNEL_FILENAME = "${KERNEL_IMAGETYPE}-${PV}-${MACHINE}-${DATETIME}"
+
do_configure() {
if [ `grep EXTRAVERSION Makefile | grep hh | awk '{print $3}' | sed s/-hh//` != ${HHV} ]; then
@@ -54,12 +56,12 @@ do_configure() {
do_deploy() {
install -d ${DEPLOY_DIR_IMAGE}
- install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${PV}-${MACHINE}-${DATETIME}
+ install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR_IMAGE}/${KERNEL_FILENAME}
#reflash.ctl is required to reflash using bootldr
# format:
# name file md5sumfile destination
- echo "${MACHINE}-kernel-${DATETIME} ${KERNEL_IMAGETYPE}-${PV}-${MACHINE}-${DATETIME} - kernel" >> ${DEPLOY_DIR_IMAGE}/reflash.ctl
+ echo "${MACHINE}-kernel-${DATETIME} ${KERNEL_FILENAME} - kernel" >> ${DEPLOY_DIR_IMAGE}/reflash.ctl
gen_haret_startup
}
@@ -73,7 +75,7 @@ gen_haret_startup() {
# This is startup file for HaRET, Linux bootloader for WinCE
# http://handhelds.org/wiki/HaRET
-set kernel "${KERNEL_IMAGETYPE}-${PV}-${MACHINE}-${DATETIME}"
+set kernel "${KERNEL_FILENAME}"
# Boot choices. Uncomment 'set' statements in exactly one section
@@ -83,7 +85,7 @@ set kernel "${KERNEL_IMAGETYPE}-${PV}-${MACHINE}-${DATETIME}"
# 2nd - EXT2 with rootfs tarball extracted
set cmdline "root=/dev/mmcblk0p2 rootdelay=10 console=ttyS0,115200n8 console=tty0"
-## Choice 2 - Boot from CD card, setup like above
+## Choice 2 - Boot from CF card, setup like above
#set cmdline "root=/dev/hda2 rootdelay=10 console=ttyS0,115200n8 console=tty0"
## Choice 3 - Boot rootfs image as initramfs (works only for smaller images)
@@ -93,7 +95,7 @@ set cmdline "root=/dev/mmcblk0p2 rootdelay=10 console=ttyS0,115200n8 console=tty
## Choice 4 - Boot via NFS over USB networking (must be kernel-builtin)
# 192.168.x.x - Server address (the other side)
-# 192.168.x.x - Handheld's address
+# 192.168.y.y - Handheld's address
#set cmdline "root=/dev/nfs nfsroot=192.168.x.x:<nfs_path> ip=192.168.y.y:192.168.x.x:192.168.x.x:255.255.255.0:pda:usb0 console=ttyS0,115200n8 console=tty0"
bootlinux
diff --git a/packages/linux/linux-handhelds-2.6/asus620/defconfig b/packages/linux/linux-handhelds-2.6/asus620/defconfig
index f43f75cf56..6d2f23c72d 100644
--- a/packages/linux/linux-handhelds-2.6/asus620/defconfig
+++ b/packages/linux/linux-handhelds-2.6/asus620/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.21-hh16
-# Sun Sep 16 02:15:06 2007
+# Linux kernel version: 2.6.21-hh17
+# Sun Nov 11 00:39:25 2007
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -267,13 +267,13 @@ CONFIG_CPU_FREQ_TABLE=y
CONFIG_CPU_FREQ_DEBUG=y
CONFIG_CPU_FREQ_STAT=y
CONFIG_CPU_FREQ_STAT_DETAILS=y
-# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
-CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y
+CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
+# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
-# CONFIG_CPU_FREQ_GOV_POWERSAVE is not set
-CONFIG_CPU_FREQ_GOV_USERSPACE=y
-# CONFIG_CPU_FREQ_GOV_ONDEMAND is not set
-CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
+CONFIG_CPU_FREQ_GOV_POWERSAVE=y
+CONFIG_CPU_FREQ_GOV_USERSPACE=m
+CONFIG_CPU_FREQ_GOV_ONDEMAND=m
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
CONFIG_CPU_FREQ_PXA=y
CONFIG_PXA25x_ALTERNATE_FREQS=y
diff --git a/packages/linux/linux-handhelds-2.6/asus730/defconfig b/packages/linux/linux-handhelds-2.6/asus730/defconfig
index 26fb015cad..21d18f02ba 100644
--- a/packages/linux/linux-handhelds-2.6/asus730/defconfig
+++ b/packages/linux/linux-handhelds-2.6/asus730/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.21-hh16
-# Sun Sep 16 02:15:06 2007
+# Linux kernel version: 2.6.21-hh17
+# Sun Nov 11 00:39:26 2007
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -273,13 +273,13 @@ CONFIG_CPU_FREQ_TABLE=y
CONFIG_CPU_FREQ_DEBUG=y
CONFIG_CPU_FREQ_STAT=y
CONFIG_CPU_FREQ_STAT_DETAILS=y
-# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
-CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y
+CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
+# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
-# CONFIG_CPU_FREQ_GOV_POWERSAVE is not set
-CONFIG_CPU_FREQ_GOV_USERSPACE=y
-# CONFIG_CPU_FREQ_GOV_ONDEMAND is not set
-CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
+CONFIG_CPU_FREQ_GOV_POWERSAVE=y
+CONFIG_CPU_FREQ_GOV_USERSPACE=m
+CONFIG_CPU_FREQ_GOV_ONDEMAND=m
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
CONFIG_CPU_FREQ_PXA=y
CONFIG_PXA25x_ALTERNATE_FREQS=y
diff --git a/packages/linux/linux-handhelds-2.6/aximx50/defconfig b/packages/linux/linux-handhelds-2.6/aximx50/defconfig
index f24deee392..e3a31bd3a1 100644
--- a/packages/linux/linux-handhelds-2.6/aximx50/defconfig
+++ b/packages/linux/linux-handhelds-2.6/aximx50/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.21-hh16
-# Sun Sep 16 02:15:07 2007
+# Linux kernel version: 2.6.21-hh17
+# Sun Nov 11 00:39:26 2007
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -267,13 +267,13 @@ CONFIG_CPU_FREQ_TABLE=y
CONFIG_CPU_FREQ_DEBUG=y
CONFIG_CPU_FREQ_STAT=y
CONFIG_CPU_FREQ_STAT_DETAILS=y
-# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
-CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y
+CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
+# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
-# CONFIG_CPU_FREQ_GOV_POWERSAVE is not set
-CONFIG_CPU_FREQ_GOV_USERSPACE=y
-# CONFIG_CPU_FREQ_GOV_ONDEMAND is not set
-CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
+CONFIG_CPU_FREQ_GOV_POWERSAVE=y
+CONFIG_CPU_FREQ_GOV_USERSPACE=m
+CONFIG_CPU_FREQ_GOV_ONDEMAND=m
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
CONFIG_CPU_FREQ_PXA=y
CONFIG_PXA25x_ALTERNATE_FREQS=y
diff --git a/packages/linux/linux-handhelds-2.6/eteng500/defconfig b/packages/linux/linux-handhelds-2.6/eteng500/defconfig
index 215a5f6424..a21a83339e 100644
--- a/packages/linux/linux-handhelds-2.6/eteng500/defconfig
+++ b/packages/linux/linux-handhelds-2.6/eteng500/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.21-hh16
-# Sun Sep 16 02:15:07 2007
+# Linux kernel version: 2.6.21-hh17
+# Sun Nov 11 00:39:27 2007
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
diff --git a/packages/linux/linux-handhelds-2.6/h1910/defconfig b/packages/linux/linux-handhelds-2.6/h1910/defconfig
index 27d703adad..3c7ebb457d 100644
--- a/packages/linux/linux-handhelds-2.6/h1910/defconfig
+++ b/packages/linux/linux-handhelds-2.6/h1910/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.21-hh16
-# Sun Sep 16 02:15:08 2007
+# Linux kernel version: 2.6.21-hh17
+# Sun Nov 11 00:39:27 2007
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -265,13 +265,13 @@ CONFIG_CPU_FREQ_TABLE=y
CONFIG_CPU_FREQ_DEBUG=y
CONFIG_CPU_FREQ_STAT=y
CONFIG_CPU_FREQ_STAT_DETAILS=y
-# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
-CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y
+CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
+# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
-# CONFIG_CPU_FREQ_GOV_POWERSAVE is not set
-CONFIG_CPU_FREQ_GOV_USERSPACE=y
-# CONFIG_CPU_FREQ_GOV_ONDEMAND is not set
-CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
+CONFIG_CPU_FREQ_GOV_POWERSAVE=y
+CONFIG_CPU_FREQ_GOV_USERSPACE=m
+CONFIG_CPU_FREQ_GOV_ONDEMAND=m
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
CONFIG_CPU_FREQ_PXA=y
CONFIG_PXA25x_ALTERNATE_FREQS=y
diff --git a/packages/linux/linux-handhelds-2.6/h2200/defconfig b/packages/linux/linux-handhelds-2.6/h2200/defconfig
index 22d7faa5b3..c46793dbe6 100644
--- a/packages/linux/linux-handhelds-2.6/h2200/defconfig
+++ b/packages/linux/linux-handhelds-2.6/h2200/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.21-hh16
-# Sun Sep 16 02:28:20 2007
+# Linux kernel version: 2.6.21-hh17
+# Sun Nov 11 00:39:28 2007
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -273,13 +273,13 @@ CONFIG_CPU_FREQ_TABLE=y
CONFIG_CPU_FREQ_DEBUG=y
CONFIG_CPU_FREQ_STAT=y
CONFIG_CPU_FREQ_STAT_DETAILS=y
-# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
-CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y
+CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
+# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
-# CONFIG_CPU_FREQ_GOV_POWERSAVE is not set
-CONFIG_CPU_FREQ_GOV_USERSPACE=y
-# CONFIG_CPU_FREQ_GOV_ONDEMAND is not set
-CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
+CONFIG_CPU_FREQ_GOV_POWERSAVE=y
+CONFIG_CPU_FREQ_GOV_USERSPACE=m
+CONFIG_CPU_FREQ_GOV_ONDEMAND=m
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
CONFIG_CPU_FREQ_PXA=y
CONFIG_PXA25x_ALTERNATE_FREQS=y
diff --git a/packages/linux/linux-handhelds-2.6/h3600/defconfig b/packages/linux/linux-handhelds-2.6/h3600/defconfig
index fcec1bb198..b20e9624da 100644
--- a/packages/linux/linux-handhelds-2.6/h3600/defconfig
+++ b/packages/linux/linux-handhelds-2.6/h3600/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.21-hh16
-# Sun Sep 16 02:15:09 2007
+# Linux kernel version: 2.6.21-hh17
+# Sun Nov 11 00:39:28 2007
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -245,13 +245,13 @@ CONFIG_CPU_FREQ_TABLE=y
CONFIG_CPU_FREQ_DEBUG=y
CONFIG_CPU_FREQ_STAT=y
CONFIG_CPU_FREQ_STAT_DETAILS=y
-# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
-CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y
+CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
+# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
-# CONFIG_CPU_FREQ_GOV_POWERSAVE is not set
-CONFIG_CPU_FREQ_GOV_USERSPACE=y
-# CONFIG_CPU_FREQ_GOV_ONDEMAND is not set
-CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
+CONFIG_CPU_FREQ_GOV_POWERSAVE=y
+CONFIG_CPU_FREQ_GOV_USERSPACE=m
+CONFIG_CPU_FREQ_GOV_ONDEMAND=m
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
CONFIG_CPU_FREQ_SA1110=y
#
diff --git a/packages/linux/linux-handhelds-2.6/h3800/defconfig b/packages/linux/linux-handhelds-2.6/h3800/defconfig
index e966a96204..e23511467a 100644
--- a/packages/linux/linux-handhelds-2.6/h3800/defconfig
+++ b/packages/linux/linux-handhelds-2.6/h3800/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.21-hh16
-# Sun Sep 16 02:15:09 2007
+# Linux kernel version: 2.6.21-hh17
+# Sun Nov 11 00:39:29 2007
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -243,13 +243,13 @@ CONFIG_CPU_FREQ_TABLE=y
CONFIG_CPU_FREQ_DEBUG=y
CONFIG_CPU_FREQ_STAT=y
CONFIG_CPU_FREQ_STAT_DETAILS=y
-# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
-CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y
+CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
+# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
-# CONFIG_CPU_FREQ_GOV_POWERSAVE is not set
-CONFIG_CPU_FREQ_GOV_USERSPACE=y
-# CONFIG_CPU_FREQ_GOV_ONDEMAND is not set
-CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
+CONFIG_CPU_FREQ_GOV_POWERSAVE=y
+CONFIG_CPU_FREQ_GOV_USERSPACE=m
+CONFIG_CPU_FREQ_GOV_ONDEMAND=m
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
CONFIG_CPU_FREQ_SA1110=y
#
diff --git a/packages/linux/linux-handhelds-2.6/h3900/defconfig b/packages/linux/linux-handhelds-2.6/h3900/defconfig
index 53892c08e4..d52b267246 100644
--- a/packages/linux/linux-handhelds-2.6/h3900/defconfig
+++ b/packages/linux/linux-handhelds-2.6/h3900/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.21-hh16
-# Sun Sep 16 02:15:10 2007
+# Linux kernel version: 2.6.21-hh17
+# Sun Nov 11 00:39:29 2007
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -266,13 +266,13 @@ CONFIG_CPU_FREQ_TABLE=y
CONFIG_CPU_FREQ_DEBUG=y
CONFIG_CPU_FREQ_STAT=y
CONFIG_CPU_FREQ_STAT_DETAILS=y
-# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
-CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y
+CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
+# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
-# CONFIG_CPU_FREQ_GOV_POWERSAVE is not set
-CONFIG_CPU_FREQ_GOV_USERSPACE=y
-# CONFIG_CPU_FREQ_GOV_ONDEMAND is not set
-CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
+CONFIG_CPU_FREQ_GOV_POWERSAVE=y
+CONFIG_CPU_FREQ_GOV_USERSPACE=m
+CONFIG_CPU_FREQ_GOV_ONDEMAND=m
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
CONFIG_CPU_FREQ_PXA=y
CONFIG_PXA25x_ALTERNATE_FREQS=y
diff --git a/packages/linux/linux-handhelds-2.6/h4000/defconfig b/packages/linux/linux-handhelds-2.6/h4000/defconfig
index d66a5d497a..1f47995434 100644
--- a/packages/linux/linux-handhelds-2.6/h4000/defconfig
+++ b/packages/linux/linux-handhelds-2.6/h4000/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.21-hh16
-# Sun Sep 16 02:15:11 2007
+# Linux kernel version: 2.6.21-hh17
+# Sun Nov 11 00:39:30 2007
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -282,13 +282,13 @@ CONFIG_CPU_FREQ_TABLE=y
CONFIG_CPU_FREQ_DEBUG=y
CONFIG_CPU_FREQ_STAT=y
CONFIG_CPU_FREQ_STAT_DETAILS=y
-# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
-CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y
+CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
+# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
-# CONFIG_CPU_FREQ_GOV_POWERSAVE is not set
-CONFIG_CPU_FREQ_GOV_USERSPACE=y
-# CONFIG_CPU_FREQ_GOV_ONDEMAND is not set
-CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
+CONFIG_CPU_FREQ_GOV_POWERSAVE=y
+CONFIG_CPU_FREQ_GOV_USERSPACE=m
+CONFIG_CPU_FREQ_GOV_ONDEMAND=m
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
CONFIG_CPU_FREQ_PXA=y
CONFIG_PXA25x_ALTERNATE_FREQS=y
diff --git a/packages/linux/linux-handhelds-2.6/h5000/defconfig b/packages/linux/linux-handhelds-2.6/h5000/defconfig
index 78c2343893..8beab42a17 100644
--- a/packages/linux/linux-handhelds-2.6/h5000/defconfig
+++ b/packages/linux/linux-handhelds-2.6/h5000/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.21-hh16
-# Sun Sep 16 02:15:11 2007
+# Linux kernel version: 2.6.21-hh17
+# Sun Nov 11 00:39:30 2007
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -266,13 +266,13 @@ CONFIG_CPU_FREQ_TABLE=y
CONFIG_CPU_FREQ_DEBUG=y
CONFIG_CPU_FREQ_STAT=y
CONFIG_CPU_FREQ_STAT_DETAILS=y
-# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
-CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y
+CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
+# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
-# CONFIG_CPU_FREQ_GOV_POWERSAVE is not set
-CONFIG_CPU_FREQ_GOV_USERSPACE=y
-# CONFIG_CPU_FREQ_GOV_ONDEMAND is not set
-CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
+CONFIG_CPU_FREQ_GOV_POWERSAVE=y
+CONFIG_CPU_FREQ_GOV_USERSPACE=m
+CONFIG_CPU_FREQ_GOV_ONDEMAND=m
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
CONFIG_CPU_FREQ_PXA=y
CONFIG_PXA25x_ALTERNATE_FREQS=y
diff --git a/packages/linux/linux-handhelds-2.6/htcalpine/defconfig b/packages/linux/linux-handhelds-2.6/htcalpine/defconfig
index e854e442c7..cc6ea81fbc 100644
--- a/packages/linux/linux-handhelds-2.6/htcalpine/defconfig
+++ b/packages/linux/linux-handhelds-2.6/htcalpine/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.21-hh16
-# Sun Sep 16 02:15:13 2007
+# Linux kernel version: 2.6.21-hh17
+# Sun Nov 11 00:39:31 2007
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -265,13 +265,13 @@ CONFIG_CPU_FREQ_TABLE=y
CONFIG_CPU_FREQ_DEBUG=y
CONFIG_CPU_FREQ_STAT=y
CONFIG_CPU_FREQ_STAT_DETAILS=y
-# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
-CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y
+CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
+# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
-# CONFIG_CPU_FREQ_GOV_POWERSAVE is not set
-CONFIG_CPU_FREQ_GOV_USERSPACE=y
-# CONFIG_CPU_FREQ_GOV_ONDEMAND is not set
-CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
+CONFIG_CPU_FREQ_GOV_POWERSAVE=y
+CONFIG_CPU_FREQ_GOV_USERSPACE=m
+CONFIG_CPU_FREQ_GOV_ONDEMAND=m
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
CONFIG_CPU_FREQ_PXA=y
CONFIG_PXA25x_ALTERNATE_FREQS=y
diff --git a/packages/linux/linux-handhelds-2.6/htcapache/defconfig b/packages/linux/linux-handhelds-2.6/htcapache/defconfig
index e6a13d412d..85ff1a53d7 100644
--- a/packages/linux/linux-handhelds-2.6/htcapache/defconfig
+++ b/packages/linux/linux-handhelds-2.6/htcapache/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.21-hh16
-# Sun Sep 16 02:15:13 2007
+# Linux kernel version: 2.6.21-hh17
+# Sun Nov 11 00:39:32 2007
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -265,13 +265,13 @@ CONFIG_CPU_FREQ_TABLE=y
CONFIG_CPU_FREQ_DEBUG=y
CONFIG_CPU_FREQ_STAT=y
CONFIG_CPU_FREQ_STAT_DETAILS=y
-# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
-CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y
+CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
+# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
-# CONFIG_CPU_FREQ_GOV_POWERSAVE is not set
-CONFIG_CPU_FREQ_GOV_USERSPACE=y
-# CONFIG_CPU_FREQ_GOV_ONDEMAND is not set
-CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
+CONFIG_CPU_FREQ_GOV_POWERSAVE=y
+CONFIG_CPU_FREQ_GOV_USERSPACE=m
+CONFIG_CPU_FREQ_GOV_ONDEMAND=m
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
CONFIG_CPU_FREQ_PXA=y
CONFIG_PXA25x_ALTERNATE_FREQS=y
diff --git a/packages/linux/linux-handhelds-2.6/htcbeetles/defconfig b/packages/linux/linux-handhelds-2.6/htcbeetles/defconfig
index ed83ba71dc..df6c1c827d 100644
--- a/packages/linux/linux-handhelds-2.6/htcbeetles/defconfig
+++ b/packages/linux/linux-handhelds-2.6/htcbeetles/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.21-hh16
-# Sun Sep 16 02:15:14 2007
+# Linux kernel version: 2.6.21-hh17
+# Sun Nov 11 00:39:32 2007
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -269,13 +269,13 @@ CONFIG_CPU_FREQ_TABLE=y
CONFIG_CPU_FREQ_DEBUG=y
CONFIG_CPU_FREQ_STAT=y
CONFIG_CPU_FREQ_STAT_DETAILS=y
-# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
-CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y
+CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
+# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
-# CONFIG_CPU_FREQ_GOV_POWERSAVE is not set
-CONFIG_CPU_FREQ_GOV_USERSPACE=y
-# CONFIG_CPU_FREQ_GOV_ONDEMAND is not set
-CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
+CONFIG_CPU_FREQ_GOV_POWERSAVE=y
+CONFIG_CPU_FREQ_GOV_USERSPACE=m
+CONFIG_CPU_FREQ_GOV_ONDEMAND=m
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
CONFIG_CPU_FREQ_PXA=y
CONFIG_PXA25x_ALTERNATE_FREQS=y
diff --git a/packages/linux/linux-handhelds-2.6/htcblueangel/defconfig b/packages/linux/linux-handhelds-2.6/htcblueangel/defconfig
index cf67a068c6..690c3d5993 100644
--- a/packages/linux/linux-handhelds-2.6/htcblueangel/defconfig
+++ b/packages/linux/linux-handhelds-2.6/htcblueangel/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.21-hh16
-# Sun Sep 16 02:15:14 2007
+# Linux kernel version: 2.6.21-hh17
+# Sun Nov 11 00:39:33 2007
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -286,13 +286,13 @@ CONFIG_CPU_FREQ_TABLE=y
CONFIG_CPU_FREQ_DEBUG=y
CONFIG_CPU_FREQ_STAT=y
CONFIG_CPU_FREQ_STAT_DETAILS=y
-# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
-CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y
+CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
+# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
-# CONFIG_CPU_FREQ_GOV_POWERSAVE is not set
-CONFIG_CPU_FREQ_GOV_USERSPACE=y
-# CONFIG_CPU_FREQ_GOV_ONDEMAND is not set
-CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
+CONFIG_CPU_FREQ_GOV_POWERSAVE=y
+CONFIG_CPU_FREQ_GOV_USERSPACE=m
+CONFIG_CPU_FREQ_GOV_ONDEMAND=m
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
CONFIG_CPU_FREQ_PXA=y
CONFIG_PXA25x_ALTERNATE_FREQS=y
diff --git a/packages/linux/linux-handhelds-2.6/htchimalaya/defconfig b/packages/linux/linux-handhelds-2.6/htchimalaya/defconfig
index 665b9cbf95..5389f69e7a 100644
--- a/packages/linux/linux-handhelds-2.6/htchimalaya/defconfig
+++ b/packages/linux/linux-handhelds-2.6/htchimalaya/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.21-hh16
-# Sun Sep 16 02:15:15 2007
+# Linux kernel version: 2.6.21-hh17
+# Sun Nov 11 00:39:33 2007
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -267,13 +267,13 @@ CONFIG_CPU_FREQ_TABLE=y
CONFIG_CPU_FREQ_DEBUG=y
CONFIG_CPU_FREQ_STAT=y
CONFIG_CPU_FREQ_STAT_DETAILS=y
-# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
-CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y
+CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
+# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
-# CONFIG_CPU_FREQ_GOV_POWERSAVE is not set
-CONFIG_CPU_FREQ_GOV_USERSPACE=y
-# CONFIG_CPU_FREQ_GOV_ONDEMAND is not set
-CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
+CONFIG_CPU_FREQ_GOV_POWERSAVE=y
+CONFIG_CPU_FREQ_GOV_USERSPACE=m
+CONFIG_CPU_FREQ_GOV_ONDEMAND=m
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
CONFIG_CPU_FREQ_PXA=y
CONFIG_PXA25x_ALTERNATE_FREQS=y
diff --git a/packages/linux/linux-handhelds-2.6/htcsable/defconfig b/packages/linux/linux-handhelds-2.6/htcsable/defconfig
index 1a947f41d0..ebdd7b8e9f 100644
--- a/packages/linux/linux-handhelds-2.6/htcsable/defconfig
+++ b/packages/linux/linux-handhelds-2.6/htcsable/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.21-hh16
-# Sun Sep 16 02:15:16 2007
+# Linux kernel version: 2.6.21-hh17
+# Sun Nov 11 00:39:34 2007
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -269,13 +269,13 @@ CONFIG_CPU_FREQ_TABLE=y
CONFIG_CPU_FREQ_DEBUG=y
CONFIG_CPU_FREQ_STAT=y
CONFIG_CPU_FREQ_STAT_DETAILS=y
-# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
-CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y
+CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
+# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
-# CONFIG_CPU_FREQ_GOV_POWERSAVE is not set
-CONFIG_CPU_FREQ_GOV_USERSPACE=y
-# CONFIG_CPU_FREQ_GOV_ONDEMAND is not set
-CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
+CONFIG_CPU_FREQ_GOV_POWERSAVE=y
+CONFIG_CPU_FREQ_GOV_USERSPACE=m
+CONFIG_CPU_FREQ_GOV_ONDEMAND=m
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
CONFIG_CPU_FREQ_PXA=y
CONFIG_PXA25x_ALTERNATE_FREQS=y
diff --git a/packages/linux/linux-handhelds-2.6/htcuniversal/defconfig b/packages/linux/linux-handhelds-2.6/htcuniversal/defconfig
index a7674f1132..9a9c2451a1 100644
--- a/packages/linux/linux-handhelds-2.6/htcuniversal/defconfig
+++ b/packages/linux/linux-handhelds-2.6/htcuniversal/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.21-hh16
-# Sun Sep 16 02:15:16 2007
+# Linux kernel version: 2.6.21-hh17
+# Sun Nov 11 00:39:34 2007
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -275,13 +275,13 @@ CONFIG_CPU_FREQ_TABLE=y
CONFIG_CPU_FREQ_DEBUG=y
CONFIG_CPU_FREQ_STAT=y
CONFIG_CPU_FREQ_STAT_DETAILS=y
-# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
-CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y
+CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
+# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
-# CONFIG_CPU_FREQ_GOV_POWERSAVE is not set
-CONFIG_CPU_FREQ_GOV_USERSPACE=y
-# CONFIG_CPU_FREQ_GOV_ONDEMAND is not set
-CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
+CONFIG_CPU_FREQ_GOV_POWERSAVE=y
+CONFIG_CPU_FREQ_GOV_USERSPACE=m
+CONFIG_CPU_FREQ_GOV_ONDEMAND=m
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
CONFIG_CPU_FREQ_PXA=y
CONFIG_PXA25x_ALTERNATE_FREQS=y
diff --git a/packages/linux/linux-handhelds-2.6/htcwallaby/defconfig b/packages/linux/linux-handhelds-2.6/htcwallaby/defconfig
index e0e1ab2825..6b7f91d4d4 100644
--- a/packages/linux/linux-handhelds-2.6/htcwallaby/defconfig
+++ b/packages/linux/linux-handhelds-2.6/htcwallaby/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.21-hh16
-# Sun Sep 16 02:15:17 2007
+# Linux kernel version: 2.6.21-hh17
+# Sun Nov 11 00:39:35 2007
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -242,13 +242,13 @@ CONFIG_CPU_FREQ_TABLE=y
CONFIG_CPU_FREQ_DEBUG=y
CONFIG_CPU_FREQ_STAT=y
CONFIG_CPU_FREQ_STAT_DETAILS=y
-# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
-CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y
+CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
+# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
-# CONFIG_CPU_FREQ_GOV_POWERSAVE is not set
-CONFIG_CPU_FREQ_GOV_USERSPACE=y
-# CONFIG_CPU_FREQ_GOV_ONDEMAND is not set
-CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
+CONFIG_CPU_FREQ_GOV_POWERSAVE=y
+CONFIG_CPU_FREQ_GOV_USERSPACE=m
+CONFIG_CPU_FREQ_GOV_ONDEMAND=m
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
CONFIG_CPU_FREQ_SA1110=y
#
diff --git a/packages/linux/linux-handhelds-2.6/hx4700/defconfig b/packages/linux/linux-handhelds-2.6/hx4700/defconfig
index cda9cd187c..90ecb03be0 100644
--- a/packages/linux/linux-handhelds-2.6/hx4700/defconfig
+++ b/packages/linux/linux-handhelds-2.6/hx4700/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.21-hh16
-# Sun Sep 16 02:28:23 2007
+# Linux kernel version: 2.6.21-hh17
+# Sun Nov 11 00:39:31 2007
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -281,13 +281,13 @@ CONFIG_CPU_FREQ_TABLE=y
CONFIG_CPU_FREQ_DEBUG=y
CONFIG_CPU_FREQ_STAT=y
CONFIG_CPU_FREQ_STAT_DETAILS=y
-# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
-CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y
+CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
+# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
-# CONFIG_CPU_FREQ_GOV_POWERSAVE is not set
-CONFIG_CPU_FREQ_GOV_USERSPACE=y
-# CONFIG_CPU_FREQ_GOV_ONDEMAND is not set
-CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
+CONFIG_CPU_FREQ_GOV_POWERSAVE=y
+CONFIG_CPU_FREQ_GOV_USERSPACE=m
+CONFIG_CPU_FREQ_GOV_ONDEMAND=m
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
CONFIG_CPU_FREQ_PXA=y
CONFIG_PXA25x_ALTERNATE_FREQS=y
diff --git a/packages/linux/linux-handhelds-2.6/looxc550/defconfig b/packages/linux/linux-handhelds-2.6/looxc550/defconfig
index dcb8f0a39f..57d2552651 100644
--- a/packages/linux/linux-handhelds-2.6/looxc550/defconfig
+++ b/packages/linux/linux-handhelds-2.6/looxc550/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.21-hh16
-# Sun Sep 16 02:15:17 2007
+# Linux kernel version: 2.6.21-hh17
+# Sun Nov 11 00:39:35 2007
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -263,13 +263,13 @@ CONFIG_CPU_FREQ_TABLE=y
CONFIG_CPU_FREQ_DEBUG=y
CONFIG_CPU_FREQ_STAT=y
CONFIG_CPU_FREQ_STAT_DETAILS=y
-# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
-CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y
+CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
+# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
-# CONFIG_CPU_FREQ_GOV_POWERSAVE is not set
-CONFIG_CPU_FREQ_GOV_USERSPACE=y
-# CONFIG_CPU_FREQ_GOV_ONDEMAND is not set
-CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
+CONFIG_CPU_FREQ_GOV_POWERSAVE=y
+CONFIG_CPU_FREQ_GOV_USERSPACE=m
+CONFIG_CPU_FREQ_GOV_ONDEMAND=m
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
CONFIG_CPU_FREQ_PXA=y
CONFIG_PXA25x_ALTERNATE_FREQS=y
diff --git a/packages/linux/linux-handhelds-2.6/magician/defconfig b/packages/linux/linux-handhelds-2.6/magician/defconfig
index 6163b8d0cf..6817d85f2d 100644
--- a/packages/linux/linux-handhelds-2.6/magician/defconfig
+++ b/packages/linux/linux-handhelds-2.6/magician/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.21-hh16
-# Sun Sep 16 02:15:12 2007
+# Linux kernel version: 2.6.21-hh17
+# Sun Nov 11 00:39:31 2007
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -270,13 +270,13 @@ CONFIG_CPU_FREQ_TABLE=y
CONFIG_CPU_FREQ_DEBUG=y
CONFIG_CPU_FREQ_STAT=y
CONFIG_CPU_FREQ_STAT_DETAILS=y
-# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
-CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y
+CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
+# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
-# CONFIG_CPU_FREQ_GOV_POWERSAVE is not set
-CONFIG_CPU_FREQ_GOV_USERSPACE=y
-# CONFIG_CPU_FREQ_GOV_ONDEMAND is not set
-CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
+CONFIG_CPU_FREQ_GOV_POWERSAVE=y
+CONFIG_CPU_FREQ_GOV_USERSPACE=m
+CONFIG_CPU_FREQ_GOV_ONDEMAND=m
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
CONFIG_CPU_FREQ_PXA=m
CONFIG_PXA25x_ALTERNATE_FREQS=y
@@ -967,7 +967,6 @@ CONFIG_LEDS_CLASS=y
#
# LED drivers
#
-# CONFIG_LEDS_MAGICIAN is not set
CONFIG_LEDS_PASIC3=y
CONFIG_LEDS_GPIO=y
diff --git a/packages/linux/linux-handhelds-2.6/rx1950/defconfig b/packages/linux/linux-handhelds-2.6/rx1950/defconfig
index 0912d561c2..01317611b0 100644
--- a/packages/linux/linux-handhelds-2.6/rx1950/defconfig
+++ b/packages/linux/linux-handhelds-2.6/rx1950/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.21-hh16
-# Sun Sep 16 02:15:18 2007
+# Linux kernel version: 2.6.21-hh17
+# Sun Nov 11 00:39:36 2007
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
diff --git a/packages/linux/linux-handhelds-2.6/rx3000/defconfig b/packages/linux/linux-handhelds-2.6/rx3000/defconfig
index c42ab61b3c..3096d39118 100644
--- a/packages/linux/linux-handhelds-2.6/rx3000/defconfig
+++ b/packages/linux/linux-handhelds-2.6/rx3000/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.21-hh16
-# Sun Sep 16 02:15:19 2007
+# Linux kernel version: 2.6.21-hh17
+# Sun Nov 11 00:39:36 2007
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
diff --git a/packages/linux/linux-handhelds-2.6_2.6.21-hh11.bb b/packages/linux/linux-handhelds-2.6_2.6.21-hh11.bb
deleted file mode 100644
index 7e3f93c92e..0000000000
--- a/packages/linux/linux-handhelds-2.6_2.6.21-hh11.bb
+++ /dev/null
@@ -1,13 +0,0 @@
-SECTION = "kernel"
-DESCRIPTION = "handhelds.org Linux kernel 2.6 for PocketPCs and other consumer handheld devices."
-LICENSE = "GPL"
-PR = "r1"
-
-DEFAULT_PREFERENCE = "-1"
-
-SRC_URI = "${HANDHELDS_CVS};module=linux/kernel26;tag=${@'K' + bb.data.getVar('PV',d,1).replace('.', '-')} \
- file://defconfig"
-
-SRC_URI_append_ghi270 = " file://ghi270-hh11.patch;patch=1"
-
-require linux-handhelds-2.6.inc
diff --git a/packages/linux/linux-handhelds-2.6_2.6.21-hh14.bb b/packages/linux/linux-handhelds-2.6_2.6.21-hh14.bb
deleted file mode 100644
index b34d4630a0..0000000000
--- a/packages/linux/linux-handhelds-2.6_2.6.21-hh14.bb
+++ /dev/null
@@ -1,11 +0,0 @@
-SECTION = "kernel"
-DESCRIPTION = "handhelds.org Linux kernel 2.6 for PocketPCs and other consumer handheld devices."
-LICENSE = "GPL"
-PR = "r0"
-
-DEFAULT_PREFERENCE = "-1"
-
-SRC_URI = "${HANDHELDS_CVS};module=linux/kernel26;tag=${@'K' + bb.data.getVar('PV',d,1).replace('.', '-')} \
- file://defconfig"
-
-require linux-handhelds-2.6.inc
diff --git a/packages/linux/linux-handhelds-2.6_2.6.21-hh15.bb b/packages/linux/linux-handhelds-2.6_2.6.21-hh15.bb
deleted file mode 100644
index b34d4630a0..0000000000
--- a/packages/linux/linux-handhelds-2.6_2.6.21-hh15.bb
+++ /dev/null
@@ -1,11 +0,0 @@
-SECTION = "kernel"
-DESCRIPTION = "handhelds.org Linux kernel 2.6 for PocketPCs and other consumer handheld devices."
-LICENSE = "GPL"
-PR = "r0"
-
-DEFAULT_PREFERENCE = "-1"
-
-SRC_URI = "${HANDHELDS_CVS};module=linux/kernel26;tag=${@'K' + bb.data.getVar('PV',d,1).replace('.', '-')} \
- file://defconfig"
-
-require linux-handhelds-2.6.inc
diff --git a/packages/linux/linux-handhelds-2.6_2.6.21-hh17.bb b/packages/linux/linux-handhelds-2.6_2.6.21-hh17.bb
index 275602762d..ae3741e872 100644
--- a/packages/linux/linux-handhelds-2.6_2.6.21-hh17.bb
+++ b/packages/linux/linux-handhelds-2.6_2.6.21-hh17.bb
@@ -1,7 +1,7 @@
SECTION = "kernel"
DESCRIPTION = "handhelds.org Linux kernel 2.6 for PocketPCs and other consumer handheld devices."
LICENSE = "GPL"
-PR = "r2"
+PR = "r3"
DEFAULT_PREFERENCE = "-1"
diff --git a/packages/linux/linux-handhelds-2.6_2.6.21-hh13.bb b/packages/linux/linux-handhelds-2.6_2.6.21-hh18.bb
index b34d4630a0..b34d4630a0 100644
--- a/packages/linux/linux-handhelds-2.6_2.6.21-hh13.bb
+++ b/packages/linux/linux-handhelds-2.6_2.6.21-hh18.bb
diff --git a/packages/linux/linux-handhelds-2.6_2.6.21-hh12.bb b/packages/linux/linux-handhelds-2.6_2.6.21-hh19.bb
index ec5844bfb5..ec5844bfb5 100644
--- a/packages/linux/linux-handhelds-2.6_2.6.21-hh12.bb
+++ b/packages/linux/linux-handhelds-2.6_2.6.21-hh19.bb
diff --git a/packages/linux/linux-ixp4xx.inc b/packages/linux/linux-ixp4xx.inc
new file mode 100644
index 0000000000..02f80b06a1
--- /dev/null
+++ b/packages/linux/linux-ixp4xx.inc
@@ -0,0 +1,26 @@
+# linux-ixp4xx.inc
+#
+DESCRIPTION = "Linux 2.6.x kernel for IXP4xx devices"
+
+COMPATIBLE_HOST = 'arm.*-linux.*'
+COMPATIBLE_MACHINE = '(ixp4xx|nslu2)'
+
+# To specify the console set KERNEL_CONSOLE in the .bb file.
+
+# CMDLINE_ROOT: machine specific boot options - should not be set on a
+# generic kernel!
+CMDLINE_ROOT ?= ""
+
+# CMDLINE_DEBUG: debug options such as noirqdebug, defaults to empty
+# override in local.conf etc
+CMDLINE_DEBUG ?= ""
+
+CMDLINE = "${CMDLINE_ROOT}"
+CMDLINE += "${CMDLINE_DEBUG}"
+CMDLINE += "${CMDLINE_CONSOLE}"
+
+# Kernel module dependencies
+# (according to hrw, these should go in kernel.bbclass)
+
+DEPENDS_kernel-module-zd1211rw += "zd1211-firmware"
+RDEPENDS_kernel-module-zd1211rw += "zd1211-firmware"
diff --git a/packages/linux/linux-ixp4xx/.mtn2git_empty b/packages/linux/linux-ixp4xx/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-ixp4xx/.mtn2git_empty
diff --git a/packages/linux/linux-ixp4xx/defconfig-2.6.18 b/packages/linux/linux-ixp4xx/defconfig-2.6.18
new file mode 100644
index 0000000000..7189609472
--- /dev/null
+++ b/packages/linux/linux-ixp4xx/defconfig-2.6.18
@@ -0,0 +1,1840 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.18
+# Tue Oct 31 07:57:52 2006
+#
+CONFIG_ARM=y
+CONFIG_GENERIC_TIME=y
+CONFIG_MMU=y
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_HARDIRQS_SW_RESEND=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_VECTORS_BASE=0xffff0000
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+
+#
+# Code maturity level options
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_LOCK_KERNEL=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+
+#
+# General setup
+#
+CONFIG_LOCALVERSION=""
+CONFIG_LOCALVERSION_AUTO=y
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=y
+# CONFIG_POSIX_MQUEUE is not set
+# CONFIG_BSD_PROCESS_ACCT is not set
+# CONFIG_TASKSTATS is not set
+# CONFIG_AUDIT is not set
+CONFIG_IKCONFIG=y
+CONFIG_IKCONFIG_PROC=y
+# CONFIG_RELAY is not set
+CONFIG_INITRAMFS_SOURCE=""
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_EMBEDDED=y
+CONFIG_UID16=y
+CONFIG_SYSCTL=y
+CONFIG_KALLSYMS=y
+CONFIG_KALLSYMS_EXTRA_PASS=y
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_EPOLL=y
+CONFIG_SHMEM=y
+CONFIG_SLAB=y
+# CONFIG_VM_EVENT_COUNTERS is not set
+CONFIG_RT_MUTEXES=y
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=0
+# CONFIG_SLOB is not set
+
+#
+# Loadable module support
+#
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+# CONFIG_MODULE_FORCE_UNLOAD is not set
+CONFIG_MODVERSIONS=y
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_KMOD=y
+
+#
+# Block layer
+#
+# CONFIG_BLK_DEV_IO_TRACE is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+# CONFIG_IOSCHED_AS is not set
+CONFIG_IOSCHED_DEADLINE=y
+# CONFIG_IOSCHED_CFQ is not set
+# CONFIG_DEFAULT_AS is not set
+CONFIG_DEFAULT_DEADLINE=y
+# CONFIG_DEFAULT_CFQ is not set
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="deadline"
+
+#
+# System Type
+#
+# CONFIG_ARCH_AAEC2000 is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_VERSATILE is not set
+# CONFIG_ARCH_AT91 is not set
+# CONFIG_ARCH_CLPS7500 is not set
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_CO285 is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_EP93XX is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_NETX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_IOP3XX is not set
+CONFIG_ARCH_IXP4XX=y
+# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_IXP23XX is not set
+# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_PNX4008 is not set
+# CONFIG_ARCH_PXA is not set
+# CONFIG_ARCH_RPC is not set
+# CONFIG_ARCH_SA1100 is not set
+# CONFIG_ARCH_S3C2410 is not set
+# CONFIG_ARCH_SHARK is not set
+# CONFIG_ARCH_LH7A40X is not set
+# CONFIG_ARCH_OMAP is not set
+CONFIG_ARCH_SUPPORTS_BIG_ENDIAN=y
+
+#
+# Intel IXP4xx Implementation Options
+#
+
+#
+# IXP4xx Platforms
+#
+CONFIG_MACH_NSLU2=y
+CONFIG_ARCH_AVILA=y
+CONFIG_MACH_LOFT=y
+# CONFIG_ARCH_ADI_COYOTE is not set
+CONFIG_ARCH_IXDP425=y
+# CONFIG_MACH_IXDPG425 is not set
+# CONFIG_MACH_IXDP465 is not set
+CONFIG_ARCH_IXCDP1100=y
+# CONFIG_ARCH_PRPMC1100 is not set
+CONFIG_MACH_NAS100D=y
+CONFIG_ARCH_IXDP4XX=y
+CONFIG_MACH_FSG=y
+# CONFIG_MACH_GTWX5715 is not set
+
+#
+# IXP4xx Options
+#
+CONFIG_DMABOUNCE=y
+# CONFIG_IXP4XX_INDIRECT_PCI is not set
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+CONFIG_CPU_XSCALE=y
+CONFIG_CPU_32v5=y
+CONFIG_CPU_ABRT_EV5T=y
+CONFIG_CPU_CACHE_VIVT=y
+CONFIG_CPU_TLB_V4WBI=y
+
+#
+# Processor Features
+#
+CONFIG_ARM_THUMB=y
+# CONFIG_CPU_BIG_ENDIAN is not set
+CONFIG_XSCALE_PMU=y
+
+#
+# Bus support
+#
+CONFIG_PCI=y
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+# CONFIG_PCCARD is not set
+
+#
+# Kernel Features
+#
+CONFIG_PREEMPT=y
+# CONFIG_NO_IDLE_HZ is not set
+CONFIG_HZ=100
+# CONFIG_AEABI is not set
+# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
+CONFIG_SELECT_MEMORY_MODEL=y
+CONFIG_FLATMEM_MANUAL=y
+# CONFIG_DISCONTIGMEM_MANUAL is not set
+# CONFIG_SPARSEMEM_MANUAL is not set
+CONFIG_FLATMEM=y
+CONFIG_FLAT_NODE_MEM_MAP=y
+# CONFIG_SPARSEMEM_STATIC is not set
+CONFIG_SPLIT_PTLOCK_CPUS=4096
+# CONFIG_RESOURCES_64BIT is not set
+CONFIG_ALIGNMENT_TRAP=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE=" noirqdebug console=ttyS0,115200n8"
+# CONFIG_XIP_KERNEL is not set
+
+#
+# Floating point emulation
+#
+
+#
+# At least one emulation must be selected
+#
+CONFIG_FPE_NWFPE=y
+# CONFIG_FPE_NWFPE_XP is not set
+# CONFIG_FPE_FASTFPE is not set
+
+#
+# Userspace binary formats
+#
+CONFIG_BINFMT_ELF=y
+# CONFIG_BINFMT_AOUT is not set
+# CONFIG_BINFMT_MISC is not set
+# CONFIG_ARTHUR is not set
+
+#
+# Power management options
+#
+# CONFIG_PM is not set
+# CONFIG_APM is not set
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+# CONFIG_NETDEBUG is not set
+CONFIG_PACKET=m
+CONFIG_PACKET_MMAP=y
+CONFIG_UNIX=y
+CONFIG_XFRM=y
+# CONFIG_XFRM_USER is not set
+# CONFIG_NET_KEY is not set
+CONFIG_INET=y
+# CONFIG_IP_MULTICAST is not set
+# CONFIG_IP_ADVANCED_ROUTER is not set
+CONFIG_IP_FIB_HASH=y
+# CONFIG_IP_PNP is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_ARPD is not set
+# CONFIG_SYN_COOKIES is not set
+CONFIG_INET_AH=m
+CONFIG_INET_ESP=m
+CONFIG_INET_IPCOMP=m
+CONFIG_INET_XFRM_TUNNEL=m
+CONFIG_INET_TUNNEL=m
+CONFIG_INET_XFRM_MODE_TRANSPORT=y
+CONFIG_INET_XFRM_MODE_TUNNEL=y
+CONFIG_INET_DIAG=y
+CONFIG_INET_TCP_DIAG=y
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_BIC=y
+
+#
+# IP: Virtual Server Configuration
+#
+# CONFIG_IP_VS is not set
+CONFIG_IPV6=m
+# CONFIG_IPV6_PRIVACY is not set
+# CONFIG_IPV6_ROUTER_PREF is not set
+CONFIG_INET6_AH=m
+CONFIG_INET6_ESP=m
+CONFIG_INET6_IPCOMP=m
+CONFIG_INET6_XFRM_TUNNEL=m
+CONFIG_INET6_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_TRANSPORT=m
+CONFIG_INET6_XFRM_MODE_TUNNEL=m
+CONFIG_IPV6_TUNNEL=m
+# CONFIG_NETWORK_SECMARK is not set
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+CONFIG_BRIDGE_NETFILTER=y
+
+#
+# Core Netfilter Configuration
+#
+# CONFIG_NETFILTER_NETLINK is not set
+CONFIG_NETFILTER_XTABLES=m
+CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
+CONFIG_NETFILTER_XT_TARGET_MARK=m
+CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
+CONFIG_NETFILTER_XT_TARGET_NOTRACK=m
+CONFIG_NETFILTER_XT_MATCH_COMMENT=m
+CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
+CONFIG_NETFILTER_XT_MATCH_DCCP=m
+CONFIG_NETFILTER_XT_MATCH_ESP=m
+CONFIG_NETFILTER_XT_MATCH_HELPER=m
+CONFIG_NETFILTER_XT_MATCH_LENGTH=m
+CONFIG_NETFILTER_XT_MATCH_LIMIT=m
+CONFIG_NETFILTER_XT_MATCH_MAC=m
+CONFIG_NETFILTER_XT_MATCH_MARK=m
+CONFIG_NETFILTER_XT_MATCH_POLICY=m
+CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
+CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m
+CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
+# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
+CONFIG_NETFILTER_XT_MATCH_REALM=m
+CONFIG_NETFILTER_XT_MATCH_SCTP=m
+CONFIG_NETFILTER_XT_MATCH_STATE=m
+# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
+CONFIG_NETFILTER_XT_MATCH_STRING=m
+CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
+
+#
+# IP: Netfilter Configuration
+#
+CONFIG_IP_NF_CONNTRACK=m
+# CONFIG_IP_NF_CT_ACCT is not set
+# CONFIG_IP_NF_CONNTRACK_MARK is not set
+# CONFIG_IP_NF_CONNTRACK_EVENTS is not set
+CONFIG_IP_NF_CT_PROTO_SCTP=m
+CONFIG_IP_NF_FTP=m
+CONFIG_IP_NF_IRC=m
+# CONFIG_IP_NF_NETBIOS_NS is not set
+CONFIG_IP_NF_TFTP=m
+CONFIG_IP_NF_AMANDA=m
+# CONFIG_IP_NF_PPTP is not set
+CONFIG_IP_NF_H323=m
+CONFIG_IP_NF_SIP=m
+CONFIG_IP_NF_QUEUE=m
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_MATCH_IPRANGE=m
+CONFIG_IP_NF_MATCH_TOS=m
+CONFIG_IP_NF_MATCH_RECENT=m
+CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_DSCP=m
+CONFIG_IP_NF_MATCH_AH=m
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_MATCH_OWNER=m
+CONFIG_IP_NF_MATCH_ADDRTYPE=m
+CONFIG_IP_NF_MATCH_HASHLIMIT=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_LOG=m
+CONFIG_IP_NF_TARGET_ULOG=m
+CONFIG_IP_NF_TARGET_TCPMSS=m
+CONFIG_IP_NF_NAT=m
+CONFIG_IP_NF_NAT_NEEDED=y
+CONFIG_IP_NF_TARGET_MASQUERADE=m
+CONFIG_IP_NF_TARGET_REDIRECT=m
+CONFIG_IP_NF_TARGET_NETMAP=m
+CONFIG_IP_NF_TARGET_SAME=m
+CONFIG_IP_NF_NAT_SNMP_BASIC=m
+CONFIG_IP_NF_NAT_IRC=m
+CONFIG_IP_NF_NAT_FTP=m
+CONFIG_IP_NF_NAT_TFTP=m
+CONFIG_IP_NF_NAT_AMANDA=m
+CONFIG_IP_NF_NAT_H323=m
+CONFIG_IP_NF_NAT_SIP=m
+CONFIG_IP_NF_MANGLE=m
+CONFIG_IP_NF_TARGET_TOS=m
+CONFIG_IP_NF_TARGET_ECN=m
+CONFIG_IP_NF_TARGET_DSCP=m
+CONFIG_IP_NF_TARGET_TTL=m
+CONFIG_IP_NF_RAW=m
+CONFIG_IP_NF_ARPTABLES=m
+CONFIG_IP_NF_ARPFILTER=m
+CONFIG_IP_NF_ARP_MANGLE=m
+
+#
+# IPv6: Netfilter Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP6_NF_QUEUE is not set
+CONFIG_IP6_NF_IPTABLES=m
+CONFIG_IP6_NF_MATCH_RT=m
+CONFIG_IP6_NF_MATCH_OPTS=m
+CONFIG_IP6_NF_MATCH_FRAG=m
+CONFIG_IP6_NF_MATCH_HL=m
+CONFIG_IP6_NF_MATCH_OWNER=m
+CONFIG_IP6_NF_MATCH_IPV6HEADER=m
+CONFIG_IP6_NF_MATCH_AH=m
+CONFIG_IP6_NF_MATCH_EUI64=m
+CONFIG_IP6_NF_FILTER=m
+CONFIG_IP6_NF_TARGET_LOG=m
+CONFIG_IP6_NF_TARGET_REJECT=m
+CONFIG_IP6_NF_MANGLE=m
+CONFIG_IP6_NF_TARGET_HL=m
+CONFIG_IP6_NF_RAW=m
+
+#
+# Bridge: Netfilter Configuration
+#
+# CONFIG_BRIDGE_NF_EBTABLES is not set
+
+#
+# DCCP Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_DCCP is not set
+
+#
+# SCTP Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_SCTP is not set
+
+#
+# TIPC Configuration (EXPERIMENTAL)
+#
+CONFIG_TIPC=m
+# CONFIG_TIPC_ADVANCED is not set
+# CONFIG_TIPC_DEBUG is not set
+# CONFIG_ATM is not set
+CONFIG_BRIDGE=m
+CONFIG_VLAN_8021Q=m
+# CONFIG_DECNET is not set
+CONFIG_LLC=m
+# CONFIG_LLC2 is not set
+CONFIG_IPX=m
+# CONFIG_IPX_INTERN is not set
+CONFIG_ATALK=m
+CONFIG_DEV_APPLETALK=m
+CONFIG_IPDDP=m
+CONFIG_IPDDP_ENCAP=y
+CONFIG_IPDDP_DECAP=y
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_ECONET is not set
+# CONFIG_WAN_ROUTER is not set
+
+#
+# QoS and/or fair queueing
+#
+# CONFIG_NET_SCHED is not set
+CONFIG_NET_CLS_ROUTE=y
+
+#
+# Network testing
+#
+CONFIG_NET_PKTGEN=m
+# CONFIG_HAMRADIO is not set
+# CONFIG_IRDA is not set
+CONFIG_BT=m
+CONFIG_BT_L2CAP=m
+CONFIG_BT_SCO=m
+CONFIG_BT_RFCOMM=m
+CONFIG_BT_RFCOMM_TTY=y
+CONFIG_BT_BNEP=m
+CONFIG_BT_BNEP_MC_FILTER=y
+CONFIG_BT_BNEP_PROTO_FILTER=y
+# CONFIG_BT_HIDP is not set
+
+#
+# Bluetooth device drivers
+#
+CONFIG_BT_HCIUSB=m
+CONFIG_BT_HCIUSB_SCO=y
+# CONFIG_BT_HCIUART is not set
+CONFIG_BT_HCIBCM203X=m
+# CONFIG_BT_HCIBPA10X is not set
+# CONFIG_BT_HCIBFUSB is not set
+# CONFIG_BT_HCIVHCI is not set
+CONFIG_IEEE80211=m
+# CONFIG_IEEE80211_DEBUG is not set
+CONFIG_IEEE80211_CRYPT_WEP=m
+CONFIG_IEEE80211_CRYPT_CCMP=m
+CONFIG_IEEE80211_CRYPT_TKIP=m
+CONFIG_IEEE80211_SOFTMAC=m
+# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
+CONFIG_WIRELESS_EXT=y
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=m
+# CONFIG_SYS_HYPERVISOR is not set
+
+#
+# Connector - unified userspace <-> kernelspace linker
+#
+# CONFIG_CONNECTOR is not set
+
+#
+# Memory Technology Devices (MTD)
+#
+CONFIG_MTD=y
+# CONFIG_MTD_DEBUG is not set
+CONFIG_MTD_CONCAT=y
+CONFIG_MTD_PARTITIONS=y
+CONFIG_MTD_REDBOOT_PARTS=y
+CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1
+# CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED is not set
+# CONFIG_MTD_REDBOOT_PARTS_READONLY is not set
+# CONFIG_MTD_CMDLINE_PARTS is not set
+# CONFIG_MTD_AFS_PARTS is not set
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=y
+CONFIG_MTD_BLOCK=y
+# CONFIG_FTL is not set
+CONFIG_NFTL=y
+CONFIG_NFTL_RW=y
+# CONFIG_INFTL is not set
+# CONFIG_RFD_FTL is not set
+
+#
+# RAM/ROM/Flash chip drivers
+#
+CONFIG_MTD_CFI=y
+# CONFIG_MTD_JEDECPROBE is not set
+CONFIG_MTD_GEN_PROBE=y
+CONFIG_MTD_CFI_ADV_OPTIONS=y
+# CONFIG_MTD_CFI_NOSWAP is not set
+CONFIG_MTD_CFI_BE_BYTE_SWAP=y
+# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
+CONFIG_MTD_CFI_GEOMETRY=y
+# CONFIG_MTD_MAP_BANK_WIDTH_1 is not set
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+# CONFIG_MTD_MAP_BANK_WIDTH_4 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
+CONFIG_MTD_CFI_I1=y
+CONFIG_MTD_CFI_I2=y
+# CONFIG_MTD_CFI_I4 is not set
+# CONFIG_MTD_CFI_I8 is not set
+# CONFIG_MTD_OTP is not set
+CONFIG_MTD_CFI_INTELEXT=y
+# CONFIG_MTD_CFI_AMDSTD is not set
+# CONFIG_MTD_CFI_STAA is not set
+CONFIG_MTD_CFI_UTIL=y
+# CONFIG_MTD_RAM is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+# CONFIG_MTD_OBSOLETE_CHIPS is not set
+
+#
+# Mapping drivers for chip access
+#
+CONFIG_MTD_COMPLEX_MAPPINGS=y
+# CONFIG_MTD_PHYSMAP is not set
+# CONFIG_MTD_ARM_INTEGRATOR is not set
+CONFIG_MTD_IXP4XX=y
+# CONFIG_MTD_PCI is not set
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_PMC551 is not set
+# CONFIG_MTD_SLRAM is not set
+# CONFIG_MTD_PHRAM is not set
+# CONFIG_MTD_MTDRAM is not set
+# CONFIG_MTD_BLOCK2MTD is not set
+
+#
+# Disk-On-Chip Device Drivers
+#
+# CONFIG_MTD_DOC2000 is not set
+# CONFIG_MTD_DOC2001 is not set
+# CONFIG_MTD_DOC2001PLUS is not set
+
+#
+# NAND Flash Device Drivers
+#
+# CONFIG_MTD_NAND is not set
+
+#
+# OneNAND Flash Device Drivers
+#
+# CONFIG_MTD_ONENAND is not set
+
+#
+# Parallel port support
+#
+# CONFIG_PARPORT is not set
+
+#
+# Plug and Play support
+#
+
+#
+# Block devices
+#
+# CONFIG_BLK_CPQ_DA is not set
+# CONFIG_BLK_CPQ_CISS_DA is not set
+# CONFIG_BLK_DEV_DAC960 is not set
+# CONFIG_BLK_DEV_UMEM is not set
+# CONFIG_BLK_DEV_COW_COMMON is not set
+CONFIG_BLK_DEV_LOOP=m
+# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+CONFIG_BLK_DEV_NBD=m
+# CONFIG_BLK_DEV_SX8 is not set
+# CONFIG_BLK_DEV_UB is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=4
+CONFIG_BLK_DEV_RAM_SIZE=10240
+CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
+# CONFIG_BLK_DEV_INITRD is not set
+CONFIG_CDROM_PKTCDVD=m
+CONFIG_CDROM_PKTCDVD_BUFFERS=8
+# CONFIG_CDROM_PKTCDVD_WCACHE is not set
+CONFIG_ATA_OVER_ETH=m
+
+#
+# ATA/ATAPI/MFM/RLL support
+#
+# CONFIG_IDE is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+CONFIG_SCSI=m
+CONFIG_SCSI_PROC_FS=y
+
+#
+# SCSI support type (disk, tape, CD-ROM)
+#
+CONFIG_BLK_DEV_SD=m
+CONFIG_CHR_DEV_ST=m
+# CONFIG_CHR_DEV_OSST is not set
+CONFIG_BLK_DEV_SR=m
+# CONFIG_BLK_DEV_SR_VENDOR is not set
+CONFIG_CHR_DEV_SG=m
+# CONFIG_CHR_DEV_SCH is not set
+
+#
+# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
+#
+CONFIG_SCSI_MULTI_LUN=y
+# CONFIG_SCSI_CONSTANTS is not set
+# CONFIG_SCSI_LOGGING is not set
+
+#
+# SCSI Transport Attributes
+#
+# CONFIG_SCSI_SPI_ATTRS is not set
+# CONFIG_SCSI_FC_ATTRS is not set
+CONFIG_SCSI_ISCSI_ATTRS=m
+# CONFIG_SCSI_SAS_ATTRS is not set
+
+#
+# SCSI low-level drivers
+#
+CONFIG_ISCSI_TCP=m
+# 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_DPT_I2O is not set
+# CONFIG_MEGARAID_NEWGEN is not set
+# CONFIG_MEGARAID_LEGACY is not set
+# CONFIG_MEGARAID_SAS is not set
+CONFIG_SCSI_SATA=m
+# CONFIG_SCSI_SATA_AHCI is not set
+# CONFIG_SCSI_SATA_SVW is not set
+# CONFIG_SCSI_ATA_PIIX is not set
+# CONFIG_SCSI_SATA_MV is not set
+# CONFIG_SCSI_SATA_NV is not set
+# CONFIG_SCSI_PDC_ADMA is not set
+# CONFIG_SCSI_HPTIOP is not set
+# CONFIG_SCSI_SATA_QSTOR is not set
+# CONFIG_SCSI_SATA_PROMISE is not set
+# CONFIG_SCSI_SATA_SX4 is not set
+# CONFIG_SCSI_SATA_SIL is not set
+# CONFIG_SCSI_SATA_SIL24 is not set
+# CONFIG_SCSI_SATA_SIS is not set
+# CONFIG_SCSI_SATA_ULI is not set
+CONFIG_SCSI_SATA_VIA=m
+# CONFIG_SCSI_SATA_VITESSE is not set
+# CONFIG_SCSI_DMX3191D is not set
+# CONFIG_SCSI_FUTURE_DOMAIN is not set
+# CONFIG_SCSI_IPS is not set
+# CONFIG_SCSI_INITIO is not set
+# CONFIG_SCSI_INIA100 is not set
+# CONFIG_SCSI_SYM53C8XX_2 is not set
+# CONFIG_SCSI_IPR is not set
+# CONFIG_SCSI_QLOGIC_1280 is not set
+# CONFIG_SCSI_QLA_FC 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
+
+#
+# Multi-device support (RAID and LVM)
+#
+CONFIG_MD=y
+CONFIG_BLK_DEV_MD=m
+CONFIG_MD_LINEAR=m
+CONFIG_MD_RAID0=m
+CONFIG_MD_RAID1=m
+CONFIG_MD_RAID10=m
+# CONFIG_MD_RAID456 is not set
+CONFIG_MD_MULTIPATH=m
+CONFIG_MD_FAULTY=m
+CONFIG_BLK_DEV_DM=m
+# CONFIG_DM_CRYPT is not set
+# CONFIG_DM_SNAPSHOT is not set
+# CONFIG_DM_MIRROR is not set
+# CONFIG_DM_ZERO is not set
+# CONFIG_DM_MULTIPATH is not set
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+# CONFIG_FUSION_SPI is not set
+# CONFIG_FUSION_FC is not set
+# CONFIG_FUSION_SAS is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+# CONFIG_IEEE1394 is not set
+
+#
+# I2O device support
+#
+# CONFIG_I2O is not set
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+CONFIG_TUN=m
+
+#
+# ARCnet devices
+#
+# CONFIG_ARCNET is not set
+
+#
+# PHY device support
+#
+# CONFIG_PHYLIB is not set
+
+#
+# Ethernet (10 or 100Mbit)
+#
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=m
+CONFIG_IXP4XX_QMGR=m
+CONFIG_IXP4XX_NPE=m
+CONFIG_IXP4XX_FW_LOAD=y
+CONFIG_IXP4XX_MAC=m
+CONFIG_IXP4XX_CRYPTO=m
+# CONFIG_HAPPYMEAL is not set
+# CONFIG_SUNGEM is not set
+# CONFIG_CASSINI is not set
+# CONFIG_NET_VENDOR_3COM is not set
+# CONFIG_SMC91X is not set
+# CONFIG_DM9000 is not set
+
+#
+# Tulip family network device support
+#
+# 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 is not set
+# 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
+
+#
+# Ethernet (1000 Mbit)
+#
+# CONFIG_ACENIC is not set
+# CONFIG_DL2K is not set
+# CONFIG_E1000 is not set
+# CONFIG_NS83820 is not set
+# CONFIG_HAMACHI is not set
+# CONFIG_YELLOWFIN is not set
+CONFIG_R8169=m
+# CONFIG_R8169_NAPI is not set
+CONFIG_R8169_VLAN=y
+# CONFIG_SIS190 is not set
+# CONFIG_SKGE is not set
+# CONFIG_SKY2 is not set
+# CONFIG_SK98LIN is not set
+# CONFIG_VIA_VELOCITY is not set
+# CONFIG_TIGON3 is not set
+# CONFIG_BNX2 is not set
+
+#
+# Ethernet (10000 Mbit)
+#
+# CONFIG_CHELSIO_T1 is not set
+# CONFIG_IXGB is not set
+# CONFIG_S2IO is not set
+# CONFIG_MYRI10GE is not set
+
+#
+# Token Ring devices
+#
+# CONFIG_TR is not set
+
+#
+# Wireless LAN (non-hamradio)
+#
+CONFIG_NET_RADIO=y
+# CONFIG_NET_WIRELESS_RTNETLINK is not set
+
+#
+# Obsolete Wireless cards support (pre-802.11)
+#
+# CONFIG_STRIP is not set
+
+#
+# Wireless 802.11b ISA/PCI cards support
+#
+# CONFIG_IPW2100 is not set
+# CONFIG_IPW2200 is not set
+# CONFIG_HERMES is not set
+# CONFIG_ATMEL is not set
+
+#
+# Prism GT/Duette 802.11(a/b/g) PCI/Cardbus support
+#
+# CONFIG_PRISM54 is not set
+# CONFIG_USB_ZD1201 is not set
+# CONFIG_HOSTAP is not set
+# CONFIG_BCM43XX is not set
+CONFIG_ZD1211RW=m
+# CONFIG_ZD1211RW_DEBUG is not set
+CONFIG_NET_WIRELESS=y
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+# CONFIG_FDDI is not set
+# CONFIG_HIPPI is not set
+CONFIG_PPP=m
+# CONFIG_PPP_MULTILINK is not set
+CONFIG_PPP_FILTER=y
+CONFIG_PPP_ASYNC=m
+CONFIG_PPP_SYNC_TTY=m
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+CONFIG_PPP_MPPE=m
+CONFIG_PPPOE=m
+# CONFIG_SLIP is not set
+# CONFIG_NET_FC is not set
+# CONFIG_SHAPER is not set
+CONFIG_NETCONSOLE=m
+CONFIG_NETPOLL=y
+# CONFIG_NETPOLL_RX is not set
+# CONFIG_NETPOLL_TRAP is not set
+CONFIG_NET_POLL_CONTROLLER=y
+
+#
+# ISDN subsystem
+#
+# CONFIG_ISDN is not set
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+
+#
+# Userland interfaces
+#
+# CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_TSDEV is not set
+CONFIG_INPUT_EVDEV=y
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# Input Device Drivers
+#
+# CONFIG_INPUT_KEYBOARD is not set
+# CONFIG_INPUT_MOUSE is not set
+# CONFIG_INPUT_JOYSTICK is not set
+# CONFIG_INPUT_TOUCHSCREEN is not set
+CONFIG_INPUT_MISC=y
+CONFIG_INPUT_IXP4XX_BEEPER=y
+# CONFIG_INPUT_UINPUT is not set
+
+#
+# Hardware I/O ports
+#
+# CONFIG_SERIO is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+# CONFIG_VT is not set
+CONFIG_SERIAL_NONSTANDARD=y
+# CONFIG_COMPUTONE is not set
+# CONFIG_ROCKETPORT is not set
+# CONFIG_CYCLADES is not set
+# CONFIG_DIGIEPCA is not set
+# CONFIG_MOXA_INTELLIO is not set
+# CONFIG_MOXA_SMARTIO is not set
+# CONFIG_ISI is not set
+# CONFIG_SYNCLINKMP is not set
+# CONFIG_SYNCLINK_GT is not set
+CONFIG_N_HDLC=m
+# CONFIG_RISCOM8 is not set
+# CONFIG_SPECIALIX is not set
+# CONFIG_SX is not set
+# CONFIG_RIO is not set
+# CONFIG_STALDRV is not set
+
+#
+# Serial drivers
+#
+CONFIG_SERIAL_8250=y
+CONFIG_SERIAL_8250_CONSOLE=y
+CONFIG_SERIAL_8250_PCI=m
+CONFIG_SERIAL_8250_NR_UARTS=2
+CONFIG_SERIAL_8250_RUNTIME_UARTS=2
+# CONFIG_SERIAL_8250_EXTENDED is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+# CONFIG_SERIAL_JSM is not set
+CONFIG_UNIX98_PTYS=y
+# CONFIG_LEGACY_PTYS is not set
+
+#
+# IPMI
+#
+# CONFIG_IPMI_HANDLER is not set
+
+#
+# Watchdog Cards
+#
+CONFIG_WATCHDOG=y
+# CONFIG_WATCHDOG_NOWAYOUT is not set
+
+#
+# Watchdog Device Drivers
+#
+# CONFIG_SOFT_WATCHDOG is not set
+CONFIG_IXP4XX_WATCHDOG=m
+
+#
+# PCI-based Watchdog Cards
+#
+# CONFIG_PCIPCWATCHDOG is not set
+# CONFIG_WDTPCI is not set
+
+#
+# USB-based Watchdog Cards
+#
+# CONFIG_USBPCWATCHDOG is not set
+CONFIG_HW_RANDOM=y
+CONFIG_HW_RANDOM_IXP4XX=m
+# CONFIG_NVRAM is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+# CONFIG_APPLICOM is not set
+
+#
+# Ftape, the floppy tape device driver
+#
+# CONFIG_DRM is not set
+# CONFIG_RAW_DRIVER is not set
+
+#
+# TPM devices
+#
+# CONFIG_TCG_TPM is not set
+# CONFIG_TELCLOCK is not set
+
+#
+# I2C support
+#
+CONFIG_I2C=y
+CONFIG_I2C_CHARDEV=m
+
+#
+# I2C Algorithms
+#
+CONFIG_I2C_ALGOBIT=y
+# CONFIG_I2C_ALGOPCF is not set
+# CONFIG_I2C_ALGOPCA is not set
+
+#
+# I2C Hardware Bus support
+#
+# CONFIG_I2C_ALI1535 is not set
+# CONFIG_I2C_ALI1563 is not set
+# CONFIG_I2C_ALI15X3 is not set
+# CONFIG_I2C_AMD756 is not set
+# CONFIG_I2C_AMD8111 is not set
+# CONFIG_I2C_I801 is not set
+# CONFIG_I2C_I810 is not set
+# CONFIG_I2C_PIIX4 is not set
+# CONFIG_I2C_IOP3XX is not set
+CONFIG_I2C_ISA=m
+CONFIG_I2C_IXP4XX=y
+# CONFIG_I2C_NFORCE2 is not set
+# CONFIG_I2C_OCORES is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_PROSAVAGE is not set
+# CONFIG_I2C_SAVAGE4 is not set
+# CONFIG_I2C_SIS5595 is not set
+# CONFIG_I2C_SIS630 is not set
+# CONFIG_I2C_SIS96X is not set
+# CONFIG_I2C_STUB is not set
+# CONFIG_I2C_VIA is not set
+# CONFIG_I2C_VIAPRO is not set
+# CONFIG_I2C_VOODOO3 is not set
+# CONFIG_I2C_PCA_ISA is not set
+
+#
+# Miscellaneous I2C Chip support
+#
+# CONFIG_SENSORS_DS1337 is not set
+# CONFIG_SENSORS_DS1374 is not set
+CONFIG_SENSORS_EEPROM=y
+CONFIG_SENSORS_PCF8574=m
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_SENSORS_MAX6875 is not set
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CHIP is not set
+
+#
+# SPI support
+#
+# CONFIG_SPI is not set
+# CONFIG_SPI_MASTER is not set
+
+#
+# Dallas's 1-wire bus
+#
+
+#
+# Hardware Monitoring support
+#
+CONFIG_HWMON=m
+CONFIG_HWMON_VID=m
+# CONFIG_SENSORS_ABITUGURU is not set
+# CONFIG_SENSORS_ADM1021 is not set
+# CONFIG_SENSORS_ADM1025 is not set
+# CONFIG_SENSORS_ADM1026 is not set
+# CONFIG_SENSORS_ADM1031 is not set
+# CONFIG_SENSORS_ADM9240 is not set
+# CONFIG_SENSORS_ASB100 is not set
+# CONFIG_SENSORS_ATXP1 is not set
+# CONFIG_SENSORS_DS1621 is not set
+# CONFIG_SENSORS_F71805F is not set
+# CONFIG_SENSORS_FSCHER is not set
+# CONFIG_SENSORS_FSCPOS is not set
+# CONFIG_SENSORS_GL518SM is not set
+# CONFIG_SENSORS_GL520SM is not set
+# CONFIG_SENSORS_IT87 is not set
+# CONFIG_SENSORS_LM63 is not set
+# CONFIG_SENSORS_LM75 is not set
+# CONFIG_SENSORS_LM77 is not set
+# CONFIG_SENSORS_LM78 is not set
+# CONFIG_SENSORS_LM80 is not set
+# CONFIG_SENSORS_LM83 is not set
+# CONFIG_SENSORS_LM85 is not set
+# CONFIG_SENSORS_LM87 is not set
+# CONFIG_SENSORS_LM90 is not set
+# CONFIG_SENSORS_LM92 is not set
+# CONFIG_SENSORS_MAX1619 is not set
+# CONFIG_SENSORS_PC87360 is not set
+# CONFIG_SENSORS_SIS5595 is not set
+# CONFIG_SENSORS_SMSC47M1 is not set
+# CONFIG_SENSORS_SMSC47M192 is not set
+# CONFIG_SENSORS_SMSC47B397 is not set
+# CONFIG_SENSORS_VIA686A is not set
+# CONFIG_SENSORS_VT8231 is not set
+CONFIG_SENSORS_W83781D=m
+# CONFIG_SENSORS_W83791D is not set
+# CONFIG_SENSORS_W83792D is not set
+# CONFIG_SENSORS_W83L785TS is not set
+# CONFIG_SENSORS_W83627HF is not set
+# CONFIG_SENSORS_W83627EHF is not set
+CONFIG_SENSORS_AD7418=m
+# CONFIG_HWMON_DEBUG_CHIP is not set
+
+#
+# Misc devices
+#
+
+#
+# LED devices
+#
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+
+#
+# LED drivers
+#
+CONFIG_LEDS_IXP4XX=y
+
+#
+# LED Triggers
+#
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=y
+CONFIG_LEDS_TRIGGER_HEARTBEAT=y
+CONFIG_LEDS_TRIGGER_CPU_ACTIVITY=y
+
+#
+# Multimedia devices
+#
+CONFIG_VIDEO_DEV=m
+CONFIG_VIDEO_V4L1=y
+CONFIG_VIDEO_V4L1_COMPAT=y
+CONFIG_VIDEO_V4L2=y
+
+#
+# Video Capture Adapters
+#
+
+#
+# Video Capture Adapters
+#
+# CONFIG_VIDEO_ADV_DEBUG is not set
+CONFIG_VIDEO_VIVI=m
+# CONFIG_VIDEO_BT848 is not set
+CONFIG_VIDEO_CPIA=m
+CONFIG_VIDEO_CPIA_USB=m
+CONFIG_VIDEO_CPIA2=m
+CONFIG_VIDEO_SAA5246A=m
+CONFIG_VIDEO_SAA5249=m
+CONFIG_TUNER_3036=m
+CONFIG_VIDEO_STRADIS=m
+CONFIG_VIDEO_ZORAN=m
+CONFIG_VIDEO_ZORAN_BUZ=m
+CONFIG_VIDEO_ZORAN_DC10=m
+CONFIG_VIDEO_ZORAN_DC30=m
+CONFIG_VIDEO_ZORAN_LML33=m
+CONFIG_VIDEO_ZORAN_LML33R10=m
+# CONFIG_VIDEO_ZORAN_AVS6EYES is not set
+CONFIG_VIDEO_SAA7134=m
+# CONFIG_VIDEO_SAA7134_ALSA is not set
+CONFIG_VIDEO_MXB=m
+CONFIG_VIDEO_DPC=m
+CONFIG_VIDEO_HEXIUM_ORION=m
+CONFIG_VIDEO_HEXIUM_GEMINI=m
+CONFIG_VIDEO_CX88=m
+CONFIG_VIDEO_CX88_ALSA=m
+# CONFIG_VIDEO_CX88_BLACKBIRD is not set
+
+#
+# Encoders and Decoders
+#
+CONFIG_VIDEO_MSP3400=m
+CONFIG_VIDEO_CS53L32A=m
+# CONFIG_VIDEO_TLV320AIC23B is not set
+CONFIG_VIDEO_WM8775=m
+CONFIG_VIDEO_WM8739=m
+# CONFIG_VIDEO_CX2341X is not set
+CONFIG_VIDEO_CX25840=m
+CONFIG_VIDEO_SAA711X=m
+CONFIG_VIDEO_SAA7127=m
+CONFIG_VIDEO_UPD64031A=m
+CONFIG_VIDEO_UPD64083=m
+
+#
+# V4L USB devices
+#
+# CONFIG_VIDEO_PVRUSB2 is not set
+# CONFIG_VIDEO_EM28XX is not set
+# CONFIG_USB_VICAM is not set
+# CONFIG_USB_IBMCAM is not set
+# CONFIG_USB_KONICAWC is not set
+# CONFIG_USB_QUICKCAM_MESSENGER is not set
+# CONFIG_USB_ET61X251 is not set
+CONFIG_VIDEO_OVCAMCHIP=m
+# CONFIG_USB_W9968CF is not set
+# CONFIG_USB_OV511 is not set
+# CONFIG_USB_SE401 is not set
+# CONFIG_USB_SN9C102 is not set
+# CONFIG_USB_STV680 is not set
+# CONFIG_USB_ZC0301 is not set
+CONFIG_USB_PWC=m
+# CONFIG_USB_PWC_DEBUG is not set
+
+#
+# Radio Adapters
+#
+# CONFIG_RADIO_GEMTEK_PCI is not set
+# CONFIG_RADIO_MAXIRADIO is not set
+# CONFIG_RADIO_MAESTRO is not set
+# CONFIG_USB_DSBR is not set
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB is not set
+CONFIG_VIDEO_SAA7146=m
+CONFIG_VIDEO_SAA7146_VV=m
+CONFIG_VIDEO_VIDEOBUF=m
+CONFIG_VIDEO_TUNER=m
+CONFIG_VIDEO_BUF=m
+CONFIG_VIDEO_BTCX=m
+CONFIG_VIDEO_IR=m
+CONFIG_VIDEO_TVEEPROM=m
+# CONFIG_USB_DABUSB is not set
+
+#
+# Graphics support
+#
+# CONFIG_FIRMWARE_EDID is not set
+# CONFIG_FB is not set
+# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
+
+#
+# Sound
+#
+CONFIG_SOUND=m
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=m
+CONFIG_SND_TIMER=m
+CONFIG_SND_PCM=m
+CONFIG_SND_HWDEP=m
+CONFIG_SND_RAWMIDI=m
+# CONFIG_SND_SEQUENCER is not set
+CONFIG_SND_OSSEMUL=y
+CONFIG_SND_MIXER_OSS=m
+CONFIG_SND_PCM_OSS=m
+CONFIG_SND_PCM_OSS_PLUGINS=y
+# CONFIG_SND_DYNAMIC_MINORS is not set
+CONFIG_SND_SUPPORT_OLD_API=y
+CONFIG_SND_VERBOSE_PROCFS=y
+# CONFIG_SND_VERBOSE_PRINTK is not set
+# CONFIG_SND_DEBUG is not set
+
+#
+# Generic devices
+#
+# CONFIG_SND_DUMMY is not set
+# CONFIG_SND_MTPAV is not set
+# CONFIG_SND_SERIAL_U16550 is not set
+# CONFIG_SND_MPU401 is not set
+
+#
+# PCI devices
+#
+# CONFIG_SND_AD1889 is not set
+# CONFIG_SND_ALS300 is not set
+# CONFIG_SND_ALI5451 is not set
+# CONFIG_SND_ATIIXP is not set
+# CONFIG_SND_ATIIXP_MODEM is not set
+# CONFIG_SND_AU8810 is not set
+# CONFIG_SND_AU8820 is not set
+# CONFIG_SND_AU8830 is not set
+# CONFIG_SND_AZT3328 is not set
+# CONFIG_SND_BT87X is not set
+# CONFIG_SND_CA0106 is not set
+# CONFIG_SND_CMIPCI is not set
+# CONFIG_SND_CS4281 is not set
+# CONFIG_SND_CS46XX is not set
+# CONFIG_SND_DARLA20 is not set
+# CONFIG_SND_GINA20 is not set
+# CONFIG_SND_LAYLA20 is not set
+# CONFIG_SND_DARLA24 is not set
+# CONFIG_SND_GINA24 is not set
+# CONFIG_SND_LAYLA24 is not set
+# CONFIG_SND_MONA is not set
+# CONFIG_SND_MIA is not set
+# CONFIG_SND_ECHO3G is not set
+# CONFIG_SND_INDIGO is not set
+# CONFIG_SND_INDIGOIO is not set
+# CONFIG_SND_INDIGODJ is not set
+# CONFIG_SND_EMU10K1 is not set
+# CONFIG_SND_EMU10K1X is not set
+# CONFIG_SND_ENS1370 is not set
+# CONFIG_SND_ENS1371 is not set
+# CONFIG_SND_ES1938 is not set
+# CONFIG_SND_ES1968 is not set
+# CONFIG_SND_FM801 is not set
+# CONFIG_SND_HDA_INTEL is not set
+# CONFIG_SND_HDSP is not set
+# CONFIG_SND_HDSPM is not set
+# CONFIG_SND_ICE1712 is not set
+# CONFIG_SND_ICE1724 is not set
+# CONFIG_SND_INTEL8X0 is not set
+# CONFIG_SND_INTEL8X0M is not set
+# CONFIG_SND_KORG1212 is not set
+# CONFIG_SND_MAESTRO3 is not set
+# CONFIG_SND_MIXART is not set
+# CONFIG_SND_NM256 is not set
+# CONFIG_SND_PCXHR is not set
+# CONFIG_SND_RIPTIDE is not set
+# CONFIG_SND_RME32 is not set
+# CONFIG_SND_RME96 is not set
+# CONFIG_SND_RME9652 is not set
+# CONFIG_SND_SONICVIBES is not set
+# CONFIG_SND_TRIDENT is not set
+# CONFIG_SND_VIA82XX is not set
+# CONFIG_SND_VIA82XX_MODEM is not set
+# CONFIG_SND_VX222 is not set
+# CONFIG_SND_YMFPCI is not set
+
+#
+# ALSA ARM devices
+#
+
+#
+# USB devices
+#
+CONFIG_SND_USB_AUDIO=m
+
+#
+# Open Sound System
+#
+# CONFIG_SOUND_PRIME is not set
+
+#
+# USB support
+#
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB_ARCH_HAS_OHCI=y
+CONFIG_USB_ARCH_HAS_EHCI=y
+CONFIG_USB=m
+# CONFIG_USB_DEBUG is not set
+
+#
+# Miscellaneous USB options
+#
+CONFIG_USB_DEVICEFS=y
+# CONFIG_USB_BANDWIDTH is not set
+# CONFIG_USB_DYNAMIC_MINORS is not set
+# CONFIG_USB_OTG is not set
+
+#
+# USB Host Controller Drivers
+#
+CONFIG_USB_EHCI_HCD=m
+CONFIG_USB_EHCI_SPLIT_ISO=y
+CONFIG_USB_EHCI_ROOT_HUB_TT=y
+CONFIG_USB_EHCI_TT_NEWSCHED=y
+# CONFIG_USB_ISP116X_HCD is not set
+CONFIG_USB_OHCI_HCD=m
+# CONFIG_USB_OHCI_BIG_ENDIAN is not set
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+CONFIG_USB_UHCI_HCD=m
+# CONFIG_USB_SL811_HCD is not set
+
+#
+# USB Device Class drivers
+#
+CONFIG_USB_ACM=m
+CONFIG_USB_PRINTER=m
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# may also be needed; see USB_STORAGE Help for more information
+#
+CONFIG_USB_STORAGE=m
+# CONFIG_USB_STORAGE_DEBUG is not set
+# CONFIG_USB_STORAGE_DATAFAB is not set
+# CONFIG_USB_STORAGE_FREECOM is not set
+# CONFIG_USB_STORAGE_DPCM is not set
+# CONFIG_USB_STORAGE_USBAT is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_SDDR55 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+# CONFIG_USB_STORAGE_ALAUDA is not set
+CONFIG_USB_STORAGE_ONETOUCH=y
+# CONFIG_USB_LIBUSUAL is not set
+
+#
+# USB Input Devices
+#
+CONFIG_USB_HID=m
+CONFIG_USB_HIDINPUT=y
+# CONFIG_USB_HIDINPUT_POWERBOOK is not set
+# CONFIG_HID_FF is not set
+CONFIG_USB_HIDDEV=y
+
+#
+# USB HID Boot Protocol drivers
+#
+CONFIG_USB_KBD=m
+# CONFIG_USB_MOUSE is not set
+# CONFIG_USB_AIPTEK is not set
+# CONFIG_USB_WACOM is not set
+# CONFIG_USB_ACECAD is not set
+# CONFIG_USB_KBTAB is not set
+# CONFIG_USB_POWERMATE is not set
+# CONFIG_USB_TOUCHSCREEN is not set
+CONFIG_USB_YEALINK=m
+# CONFIG_USB_XPAD is not set
+# CONFIG_USB_ATI_REMOTE is not set
+# CONFIG_USB_ATI_REMOTE2 is not set
+# CONFIG_USB_KEYSPAN_REMOTE is not set
+# CONFIG_USB_APPLETOUCH is not set
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_MICROTEK is not set
+
+#
+# USB Network Adapters
+#
+CONFIG_USB_CATC=m
+CONFIG_USB_KAWETH=m
+CONFIG_USB_PEGASUS=m
+CONFIG_USB_RTL8150=m
+CONFIG_USB_USBNET=m
+CONFIG_USB_NET_AX8817X=m
+CONFIG_USB_NET_CDCETHER=m
+# CONFIG_USB_NET_GL620A is not set
+CONFIG_USB_NET_NET1080=m
+# CONFIG_USB_NET_PLUSB is not set
+# CONFIG_USB_NET_RNDIS_HOST is not set
+# CONFIG_USB_NET_CDC_SUBSET is not set
+CONFIG_USB_NET_ZAURUS=m
+# CONFIG_USB_MON is not set
+
+#
+# USB port drivers
+#
+
+#
+# USB Serial Converter support
+#
+CONFIG_USB_SERIAL=m
+CONFIG_USB_SERIAL_GENERIC=y
+# CONFIG_USB_SERIAL_AIRPRIME is not set
+# CONFIG_USB_SERIAL_ARK3116 is not set
+CONFIG_USB_SERIAL_BELKIN=m
+CONFIG_USB_SERIAL_WHITEHEAT=m
+CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
+# CONFIG_USB_SERIAL_CP2101 is not set
+CONFIG_USB_SERIAL_CYPRESS_M8=m
+CONFIG_USB_SERIAL_EMPEG=m
+CONFIG_USB_SERIAL_FTDI_SIO=m
+CONFIG_USB_SERIAL_FUNSOFT=m
+CONFIG_USB_SERIAL_VISOR=m
+CONFIG_USB_SERIAL_IPAQ=m
+CONFIG_USB_SERIAL_IR=m
+CONFIG_USB_SERIAL_EDGEPORT=m
+CONFIG_USB_SERIAL_EDGEPORT_TI=m
+CONFIG_USB_SERIAL_GARMIN=m
+CONFIG_USB_SERIAL_IPW=m
+CONFIG_USB_SERIAL_KEYSPAN_PDA=m
+# CONFIG_USB_SERIAL_KEYSPAN is not set
+CONFIG_USB_SERIAL_KLSI=m
+CONFIG_USB_SERIAL_KOBIL_SCT=m
+CONFIG_USB_SERIAL_MCT_U232=m
+CONFIG_USB_SERIAL_NAVMAN=m
+CONFIG_USB_SERIAL_PL2303=m
+# CONFIG_USB_SERIAL_HP4X is not set
+CONFIG_USB_SERIAL_SAFE=m
+# CONFIG_USB_SERIAL_SAFE_PADDED is not set
+# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set
+CONFIG_USB_SERIAL_TI=m
+CONFIG_USB_SERIAL_CYBERJACK=m
+CONFIG_USB_SERIAL_XIRCOM=m
+# CONFIG_USB_SERIAL_OPTION is not set
+CONFIG_USB_SERIAL_OMNINET=m
+CONFIG_USB_EZUSB=y
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_EMI62 is not set
+# CONFIG_USB_EMI26 is not set
+# CONFIG_USB_AUERSWALD is not set
+# CONFIG_USB_RIO500 is not set
+# CONFIG_USB_LEGOTOWER is not set
+# CONFIG_USB_LCD is not set
+# CONFIG_USB_LED is not set
+# CONFIG_USB_CYPRESS_CY7C63 is not set
+# CONFIG_USB_CYTHERM is not set
+# CONFIG_USB_PHIDGETKIT is not set
+# CONFIG_USB_PHIDGETSERVO is not set
+# CONFIG_USB_IDMOUSE is not set
+# CONFIG_USB_APPLEDISPLAY is not set
+CONFIG_USB_SISUSBVGA=m
+# CONFIG_USB_LD is not set
+# CONFIG_USB_TEST is not set
+
+#
+# USB DSL modem support
+#
+
+#
+# USB Gadget Support
+#
+# CONFIG_USB_GADGET is not set
+
+#
+# MMC/SD Card support
+#
+# CONFIG_MMC is not set
+
+#
+# Real Time Clock
+#
+CONFIG_RTC_LIB=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_HCTOSYS=y
+CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
+
+#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=y
+CONFIG_RTC_INTF_PROC=y
+CONFIG_RTC_INTF_DEV=y
+# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
+
+#
+# RTC drivers
+#
+CONFIG_RTC_DRV_X1205=y
+CONFIG_RTC_DRV_DS1307=y
+# CONFIG_RTC_DRV_DS1553 is not set
+CONFIG_RTC_DRV_ISL1208=y
+CONFIG_RTC_DRV_DS1672=y
+# CONFIG_RTC_DRV_DS1742 is not set
+CONFIG_RTC_DRV_PCF8563=y
+# CONFIG_RTC_DRV_PCF8583 is not set
+# CONFIG_RTC_DRV_RS5C372 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
+# CONFIG_RTC_DRV_TEST is not set
+# CONFIG_RTC_DRV_V3020 is not set
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=m
+CONFIG_EXT2_FS_XATTR=y
+CONFIG_EXT2_FS_POSIX_ACL=y
+CONFIG_EXT2_FS_SECURITY=y
+# CONFIG_EXT2_FS_XIP is not set
+CONFIG_EXT3_FS=m
+CONFIG_EXT3_FS_XATTR=y
+CONFIG_EXT3_FS_POSIX_ACL=y
+CONFIG_EXT3_FS_SECURITY=y
+CONFIG_JBD=m
+# CONFIG_JBD_DEBUG is not set
+CONFIG_FS_MBCACHE=m
+CONFIG_REISERFS_FS=m
+# CONFIG_REISERFS_CHECK is not set
+# CONFIG_REISERFS_PROC_INFO is not set
+CONFIG_REISERFS_FS_XATTR=y
+CONFIG_REISERFS_FS_POSIX_ACL=y
+CONFIG_REISERFS_FS_SECURITY=y
+# CONFIG_JFS_FS is not set
+CONFIG_FS_POSIX_ACL=y
+# CONFIG_XFS_FS is not set
+# CONFIG_OCFS2_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+# CONFIG_QUOTA is not set
+CONFIG_DNOTIFY=y
+# CONFIG_AUTOFS_FS is not set
+CONFIG_AUTOFS4_FS=m
+# CONFIG_FUSE_FS is not set
+
+#
+# CD-ROM/DVD Filesystems
+#
+CONFIG_ISO9660_FS=m
+CONFIG_JOLIET=y
+CONFIG_ZISOFS=y
+CONFIG_ZISOFS_FS=m
+CONFIG_UDF_FS=m
+CONFIG_UDF_NLS=y
+
+#
+# DOS/FAT/NT Filesystems
+#
+CONFIG_FAT_FS=m
+CONFIG_MSDOS_FS=m
+CONFIG_VFAT_FS=m
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="utf8"
+CONFIG_NTFS_FS=m
+# CONFIG_NTFS_DEBUG is not set
+CONFIG_NTFS_RW=y
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_HUGETLB_PAGE is not set
+CONFIG_RAMFS=y
+# CONFIG_CONFIGFS_FS is not set
+
+#
+# Miscellaneous filesystems
+#
+# CONFIG_ADFS_FS is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_HFS_FS is not set
+# CONFIG_HFSPLUS_FS is not set
+# CONFIG_BEFS_FS is not set
+# CONFIG_BFS_FS is not set
+# CONFIG_EFS_FS is not set
+# CONFIG_JFFS_FS is not set
+CONFIG_JFFS2_FS=y
+CONFIG_JFFS2_FS_DEBUG=0
+CONFIG_JFFS2_FS_WRITEBUFFER=y
+# CONFIG_JFFS2_SUMMARY is not set
+# CONFIG_JFFS2_FS_XATTR is not set
+# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
+CONFIG_JFFS2_ZLIB=y
+CONFIG_JFFS2_RTIME=y
+# CONFIG_JFFS2_RUBIN is not set
+# CONFIG_JFFS2_NATIVE_ENDIAN is not set
+# CONFIG_JFFS2_BIG_ENDIAN is not set
+CONFIG_JFFS2_LITTLE_ENDIAN=y
+# CONFIG_CRAMFS is not set
+CONFIG_SQUASHFS=m
+# CONFIG_SQUASHFS_EMBEDDED is not set
+CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
+# CONFIG_SQUASHFS_VMALLOC is not set
+# CONFIG_VXFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+
+#
+# Network File Systems
+#
+CONFIG_NFS_FS=m
+CONFIG_NFS_V3=y
+# CONFIG_NFS_V3_ACL is not set
+CONFIG_NFS_V4=y
+CONFIG_NFS_DIRECTIO=y
+CONFIG_NFSD=m
+CONFIG_NFSD_V3=y
+# CONFIG_NFSD_V3_ACL is not set
+CONFIG_NFSD_V4=y
+CONFIG_NFSD_TCP=y
+CONFIG_LOCKD=m
+CONFIG_LOCKD_V4=y
+CONFIG_EXPORTFS=m
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=m
+CONFIG_SUNRPC_GSS=m
+CONFIG_RPCSEC_GSS_KRB5=m
+# CONFIG_RPCSEC_GSS_SPKM3 is not set
+CONFIG_SMB_FS=m
+# CONFIG_SMB_NLS_DEFAULT is not set
+CONFIG_CIFS=m
+# CONFIG_CIFS_STATS is not set
+# CONFIG_CIFS_WEAK_PW_HASH is not set
+CONFIG_CIFS_XATTR=y
+CONFIG_CIFS_POSIX=y
+# CONFIG_CIFS_DEBUG2 is not set
+# CONFIG_CIFS_EXPERIMENTAL is not set
+# CONFIG_NCP_FS is not set
+# CONFIG_CODA_FS is not set
+# CONFIG_AFS_FS is not set
+# CONFIG_9P_FS is not set
+
+#
+# Partition Types
+#
+CONFIG_PARTITION_ADVANCED=y
+# CONFIG_ACORN_PARTITION is not set
+# CONFIG_OSF_PARTITION is not set
+# CONFIG_AMIGA_PARTITION is not set
+# CONFIG_ATARI_PARTITION is not set
+# CONFIG_MAC_PARTITION is not set
+CONFIG_MSDOS_PARTITION=y
+# CONFIG_BSD_DISKLABEL is not set
+# CONFIG_MINIX_SUBPARTITION is not set
+# CONFIG_SOLARIS_X86_PARTITION is not set
+# CONFIG_UNIXWARE_DISKLABEL is not set
+# CONFIG_LDM_PARTITION is not set
+# CONFIG_SGI_PARTITION is not set
+# CONFIG_ULTRIX_PARTITION is not set
+# CONFIG_SUN_PARTITION is not set
+# CONFIG_KARMA_PARTITION is not set
+# CONFIG_EFI_PARTITION is not set
+
+#
+# Native Language Support
+#
+CONFIG_NLS=m
+CONFIG_NLS_DEFAULT="utf8"
+CONFIG_NLS_CODEPAGE_437=m
+CONFIG_NLS_CODEPAGE_737=m
+CONFIG_NLS_CODEPAGE_775=m
+CONFIG_NLS_CODEPAGE_850=m
+CONFIG_NLS_CODEPAGE_852=m
+CONFIG_NLS_CODEPAGE_855=m
+CONFIG_NLS_CODEPAGE_857=m
+CONFIG_NLS_CODEPAGE_860=m
+CONFIG_NLS_CODEPAGE_861=m
+CONFIG_NLS_CODEPAGE_862=m
+CONFIG_NLS_CODEPAGE_863=m
+CONFIG_NLS_CODEPAGE_864=m
+CONFIG_NLS_CODEPAGE_865=m
+CONFIG_NLS_CODEPAGE_866=m
+CONFIG_NLS_CODEPAGE_869=m
+CONFIG_NLS_CODEPAGE_936=m
+CONFIG_NLS_CODEPAGE_950=m
+CONFIG_NLS_CODEPAGE_932=m
+CONFIG_NLS_CODEPAGE_949=m
+CONFIG_NLS_CODEPAGE_874=m
+CONFIG_NLS_ISO8859_8=m
+CONFIG_NLS_CODEPAGE_1250=m
+CONFIG_NLS_CODEPAGE_1251=m
+CONFIG_NLS_ASCII=m
+CONFIG_NLS_ISO8859_1=m
+CONFIG_NLS_ISO8859_2=m
+CONFIG_NLS_ISO8859_3=m
+CONFIG_NLS_ISO8859_4=m
+CONFIG_NLS_ISO8859_5=m
+CONFIG_NLS_ISO8859_6=m
+CONFIG_NLS_ISO8859_7=m
+CONFIG_NLS_ISO8859_9=m
+CONFIG_NLS_ISO8859_13=m
+CONFIG_NLS_ISO8859_14=m
+CONFIG_NLS_ISO8859_15=m
+CONFIG_NLS_KOI8_R=m
+CONFIG_NLS_KOI8_U=m
+CONFIG_NLS_UTF8=m
+
+#
+# Profiling support
+#
+# CONFIG_PROFILING is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+# CONFIG_MAGIC_SYSRQ is not set
+# CONFIG_UNUSED_SYMBOLS is not set
+# CONFIG_DEBUG_KERNEL is not set
+CONFIG_LOG_BUF_SHIFT=14
+# CONFIG_DEBUG_BUGVERBOSE is not set
+# CONFIG_DEBUG_FS is not set
+CONFIG_FRAME_POINTER=y
+# CONFIG_UNWIND_INFO is not set
+# CONFIG_DEBUG_USER is not set
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+
+#
+# Cryptographic options
+#
+CONFIG_CRYPTO=y
+CONFIG_CRYPTO_HMAC=y
+# CONFIG_CRYPTO_NULL is not set
+CONFIG_CRYPTO_MD4=m
+CONFIG_CRYPTO_MD5=y
+CONFIG_CRYPTO_SHA1=m
+CONFIG_CRYPTO_SHA256=m
+CONFIG_CRYPTO_SHA512=m
+CONFIG_CRYPTO_WP512=m
+CONFIG_CRYPTO_TGR192=m
+CONFIG_CRYPTO_DES=m
+CONFIG_CRYPTO_BLOWFISH=m
+CONFIG_CRYPTO_TWOFISH=m
+CONFIG_CRYPTO_SERPENT=m
+CONFIG_CRYPTO_AES=m
+CONFIG_CRYPTO_CAST5=m
+CONFIG_CRYPTO_CAST6=m
+CONFIG_CRYPTO_TEA=m
+CONFIG_CRYPTO_ARC4=m
+CONFIG_CRYPTO_KHAZAD=m
+CONFIG_CRYPTO_ANUBIS=m
+CONFIG_CRYPTO_DEFLATE=m
+CONFIG_CRYPTO_MICHAEL_MIC=m
+CONFIG_CRYPTO_CRC32C=m
+CONFIG_CRYPTO_TEST=m
+
+#
+# Hardware crypto devices
+#
+
+#
+# Library routines
+#
+CONFIG_CRC_CCITT=m
+CONFIG_CRC16=m
+CONFIG_CRC32=y
+CONFIG_LIBCRC32C=m
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_TEXTSEARCH=y
+CONFIG_TEXTSEARCH_KMP=m
+CONFIG_TEXTSEARCH_BM=m
+CONFIG_TEXTSEARCH_FSM=m
+CONFIG_PLIST=y
diff --git a/packages/linux/linux-ixp4xx/defconfig-2.6.19 b/packages/linux/linux-ixp4xx/defconfig-2.6.19
new file mode 100644
index 0000000000..58d6a39c8d
--- /dev/null
+++ b/packages/linux/linux-ixp4xx/defconfig-2.6.19
@@ -0,0 +1,1950 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.19
+# Sun Jan 14 08:22:40 2007
+#
+CONFIG_ARM=y
+CONFIG_GENERIC_TIME=y
+CONFIG_MMU=y
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+CONFIG_HARDIRQS_SW_RESEND=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_VECTORS_BASE=0xffff0000
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+
+#
+# Code maturity level options
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_LOCK_KERNEL=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+
+#
+# General setup
+#
+CONFIG_LOCALVERSION=""
+# CONFIG_LOCALVERSION_AUTO is not set
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=y
+# CONFIG_IPC_NS is not set
+# CONFIG_POSIX_MQUEUE is not set
+# CONFIG_BSD_PROCESS_ACCT is not set
+# CONFIG_TASKSTATS is not set
+# CONFIG_UTS_NS is not set
+# CONFIG_AUDIT is not set
+CONFIG_IKCONFIG=m
+CONFIG_IKCONFIG_PROC=y
+# CONFIG_RELAY is not set
+CONFIG_INITRAMFS_SOURCE=""
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_SYSCTL=y
+CONFIG_EMBEDDED=y
+CONFIG_UID16=y
+# CONFIG_SYSCTL_SYSCALL is not set
+# CONFIG_KALLSYMS is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_EPOLL=y
+CONFIG_SHMEM=y
+CONFIG_SLAB=y
+# CONFIG_VM_EVENT_COUNTERS is not set
+CONFIG_RT_MUTEXES=y
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=0
+# CONFIG_SLOB is not set
+
+#
+# Loadable module support
+#
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+# CONFIG_MODULE_FORCE_UNLOAD is not set
+CONFIG_MODVERSIONS=y
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_KMOD=y
+
+#
+# Block layer
+#
+CONFIG_BLOCK=y
+# CONFIG_BLK_DEV_IO_TRACE is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+# CONFIG_IOSCHED_AS is not set
+CONFIG_IOSCHED_DEADLINE=y
+# CONFIG_IOSCHED_CFQ is not set
+# CONFIG_DEFAULT_AS is not set
+CONFIG_DEFAULT_DEADLINE=y
+# CONFIG_DEFAULT_CFQ is not set
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="deadline"
+
+#
+# System Type
+#
+# CONFIG_ARCH_AAEC2000 is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_VERSATILE is not set
+# CONFIG_ARCH_AT91 is not set
+# CONFIG_ARCH_CLPS7500 is not set
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_CO285 is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_EP93XX is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_NETX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+CONFIG_ARCH_IXP4XX=y
+# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_IXP23XX is not set
+# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_PNX4008 is not set
+# CONFIG_ARCH_PXA is not set
+# CONFIG_ARCH_RPC is not set
+# CONFIG_ARCH_SA1100 is not set
+# CONFIG_ARCH_S3C2410 is not set
+# CONFIG_ARCH_SHARK is not set
+# CONFIG_ARCH_LH7A40X is not set
+# CONFIG_ARCH_OMAP is not set
+CONFIG_ARCH_SUPPORTS_BIG_ENDIAN=y
+
+#
+# Intel IXP4xx Implementation Options
+#
+
+#
+# IXP4xx Platforms
+#
+CONFIG_MACH_NSLU2=y
+CONFIG_MACH_AVILA=y
+CONFIG_MACH_LOFT=y
+# CONFIG_ARCH_ADI_COYOTE is not set
+CONFIG_ARCH_IXDP425=y
+# CONFIG_MACH_IXDPG425 is not set
+# CONFIG_MACH_IXDP465 is not set
+CONFIG_ARCH_IXCDP1100=y
+# CONFIG_ARCH_PRPMC1100 is not set
+CONFIG_MACH_NAS100D=y
+CONFIG_MACH_DSMG600=y
+CONFIG_ARCH_IXDP4XX=y
+CONFIG_MACH_FSG=y
+# CONFIG_MACH_GTWX5715 is not set
+
+#
+# IXP4xx Options
+#
+CONFIG_DMABOUNCE=y
+# CONFIG_IXP4XX_INDIRECT_PCI is not set
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+CONFIG_CPU_XSCALE=y
+CONFIG_CPU_32v5=y
+CONFIG_CPU_ABRT_EV5T=y
+CONFIG_CPU_CACHE_VIVT=y
+CONFIG_CPU_TLB_V4WBI=y
+CONFIG_CPU_CP15=y
+CONFIG_CPU_CP15_MMU=y
+
+#
+# Processor Features
+#
+CONFIG_ARM_THUMB=y
+CONFIG_CPU_BIG_ENDIAN=y
+# CONFIG_CPU_DCACHE_DISABLE is not set
+CONFIG_XSCALE_PMU=y
+CONFIG_KEXEC=y
+
+#
+# Bus support
+#
+CONFIG_PCI=y
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+# CONFIG_PCCARD is not set
+
+#
+# Kernel Features
+#
+CONFIG_PREEMPT=y
+# CONFIG_NO_IDLE_HZ is not set
+CONFIG_HZ=100
+CONFIG_AEABI=y
+CONFIG_OABI_COMPAT=y
+# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
+CONFIG_SELECT_MEMORY_MODEL=y
+CONFIG_FLATMEM_MANUAL=y
+# CONFIG_DISCONTIGMEM_MANUAL is not set
+# CONFIG_SPARSEMEM_MANUAL is not set
+CONFIG_FLATMEM=y
+CONFIG_FLAT_NODE_MEM_MAP=y
+# CONFIG_SPARSEMEM_STATIC is not set
+CONFIG_SPLIT_PTLOCK_CPUS=4096
+# CONFIG_RESOURCES_64BIT is not set
+CONFIG_ALIGNMENT_TRAP=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE=" noirqdebug console=ttyS0,115200n8"
+# CONFIG_XIP_KERNEL is not set
+
+#
+# Floating point emulation
+#
+
+#
+# At least one emulation must be selected
+#
+CONFIG_FPE_NWFPE=y
+# CONFIG_FPE_NWFPE_XP is not set
+# CONFIG_FPE_FASTFPE is not set
+
+#
+# Userspace binary formats
+#
+CONFIG_BINFMT_ELF=y
+# CONFIG_BINFMT_AOUT is not set
+# CONFIG_BINFMT_MISC is not set
+# CONFIG_ARTHUR is not set
+
+#
+# Power management options
+#
+# CONFIG_PM is not set
+# CONFIG_APM is not set
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+# CONFIG_NETDEBUG is not set
+CONFIG_PACKET=y
+CONFIG_PACKET_MMAP=y
+CONFIG_UNIX=y
+CONFIG_XFRM=y
+# CONFIG_XFRM_USER is not set
+# CONFIG_XFRM_SUB_POLICY is not set
+# CONFIG_NET_KEY is not set
+CONFIG_INET=y
+# CONFIG_IP_MULTICAST is not set
+# CONFIG_IP_ADVANCED_ROUTER is not set
+CONFIG_IP_FIB_HASH=y
+# CONFIG_IP_PNP is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_ARPD is not set
+# CONFIG_SYN_COOKIES is not set
+CONFIG_INET_AH=m
+CONFIG_INET_ESP=m
+CONFIG_INET_IPCOMP=m
+CONFIG_INET_XFRM_TUNNEL=m
+CONFIG_INET_TUNNEL=m
+CONFIG_INET_XFRM_MODE_TRANSPORT=y
+CONFIG_INET_XFRM_MODE_TUNNEL=y
+CONFIG_INET_XFRM_MODE_BEET=m
+CONFIG_INET_DIAG=y
+CONFIG_INET_TCP_DIAG=y
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_CUBIC=y
+CONFIG_DEFAULT_TCP_CONG="cubic"
+
+#
+# IP: Virtual Server Configuration
+#
+# CONFIG_IP_VS is not set
+CONFIG_IPV6=m
+# CONFIG_IPV6_PRIVACY is not set
+# CONFIG_IPV6_ROUTER_PREF is not set
+CONFIG_INET6_AH=m
+CONFIG_INET6_ESP=m
+CONFIG_INET6_IPCOMP=m
+# CONFIG_IPV6_MIP6 is not set
+CONFIG_INET6_XFRM_TUNNEL=m
+CONFIG_INET6_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_TRANSPORT=m
+CONFIG_INET6_XFRM_MODE_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_BEET=m
+# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
+CONFIG_IPV6_SIT=m
+CONFIG_IPV6_TUNNEL=m
+# CONFIG_IPV6_MULTIPLE_TABLES is not set
+# CONFIG_NETWORK_SECMARK is not set
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+CONFIG_BRIDGE_NETFILTER=y
+
+#
+# Core Netfilter Configuration
+#
+# CONFIG_NETFILTER_NETLINK is not set
+CONFIG_NETFILTER_XTABLES=m
+CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
+# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
+CONFIG_NETFILTER_XT_TARGET_MARK=m
+CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
+CONFIG_NETFILTER_XT_TARGET_NOTRACK=m
+CONFIG_NETFILTER_XT_MATCH_COMMENT=m
+CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
+CONFIG_NETFILTER_XT_MATCH_DCCP=m
+# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
+CONFIG_NETFILTER_XT_MATCH_ESP=m
+CONFIG_NETFILTER_XT_MATCH_HELPER=m
+CONFIG_NETFILTER_XT_MATCH_LENGTH=m
+CONFIG_NETFILTER_XT_MATCH_LIMIT=m
+CONFIG_NETFILTER_XT_MATCH_MAC=m
+CONFIG_NETFILTER_XT_MATCH_MARK=m
+CONFIG_NETFILTER_XT_MATCH_POLICY=m
+CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
+CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m
+CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
+# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
+CONFIG_NETFILTER_XT_MATCH_REALM=m
+CONFIG_NETFILTER_XT_MATCH_SCTP=m
+CONFIG_NETFILTER_XT_MATCH_STATE=m
+# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
+CONFIG_NETFILTER_XT_MATCH_STRING=m
+CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
+
+#
+# IP: Netfilter Configuration
+#
+CONFIG_IP_NF_CONNTRACK=m
+# CONFIG_IP_NF_CT_ACCT is not set
+# CONFIG_IP_NF_CONNTRACK_MARK is not set
+# CONFIG_IP_NF_CONNTRACK_EVENTS is not set
+CONFIG_IP_NF_CT_PROTO_SCTP=m
+CONFIG_IP_NF_FTP=m
+CONFIG_IP_NF_IRC=m
+# CONFIG_IP_NF_NETBIOS_NS is not set
+CONFIG_IP_NF_TFTP=m
+CONFIG_IP_NF_AMANDA=m
+# CONFIG_IP_NF_PPTP is not set
+CONFIG_IP_NF_H323=m
+CONFIG_IP_NF_SIP=m
+CONFIG_IP_NF_QUEUE=m
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_MATCH_IPRANGE=m
+CONFIG_IP_NF_MATCH_TOS=m
+CONFIG_IP_NF_MATCH_RECENT=m
+CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_AH=m
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_MATCH_OWNER=m
+CONFIG_IP_NF_MATCH_ADDRTYPE=m
+CONFIG_IP_NF_MATCH_HASHLIMIT=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_LOG=m
+CONFIG_IP_NF_TARGET_ULOG=m
+CONFIG_IP_NF_TARGET_TCPMSS=m
+CONFIG_IP_NF_NAT=m
+CONFIG_IP_NF_NAT_NEEDED=y
+CONFIG_IP_NF_TARGET_MASQUERADE=m
+CONFIG_IP_NF_TARGET_REDIRECT=m
+CONFIG_IP_NF_TARGET_NETMAP=m
+CONFIG_IP_NF_TARGET_SAME=m
+CONFIG_IP_NF_NAT_SNMP_BASIC=m
+CONFIG_IP_NF_NAT_IRC=m
+CONFIG_IP_NF_NAT_FTP=m
+CONFIG_IP_NF_NAT_TFTP=m
+CONFIG_IP_NF_NAT_AMANDA=m
+CONFIG_IP_NF_NAT_H323=m
+CONFIG_IP_NF_NAT_SIP=m
+CONFIG_IP_NF_MANGLE=m
+CONFIG_IP_NF_TARGET_TOS=m
+CONFIG_IP_NF_TARGET_ECN=m
+CONFIG_IP_NF_TARGET_TTL=m
+CONFIG_IP_NF_RAW=m
+CONFIG_IP_NF_ARPTABLES=m
+CONFIG_IP_NF_ARPFILTER=m
+CONFIG_IP_NF_ARP_MANGLE=m
+
+#
+# IPv6: Netfilter Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP6_NF_QUEUE is not set
+CONFIG_IP6_NF_IPTABLES=m
+CONFIG_IP6_NF_MATCH_RT=m
+CONFIG_IP6_NF_MATCH_OPTS=m
+CONFIG_IP6_NF_MATCH_FRAG=m
+CONFIG_IP6_NF_MATCH_HL=m
+CONFIG_IP6_NF_MATCH_OWNER=m
+CONFIG_IP6_NF_MATCH_IPV6HEADER=m
+CONFIG_IP6_NF_MATCH_AH=m
+CONFIG_IP6_NF_MATCH_EUI64=m
+CONFIG_IP6_NF_FILTER=m
+CONFIG_IP6_NF_TARGET_LOG=m
+CONFIG_IP6_NF_TARGET_REJECT=m
+CONFIG_IP6_NF_MANGLE=m
+CONFIG_IP6_NF_TARGET_HL=m
+CONFIG_IP6_NF_RAW=m
+
+#
+# Bridge: Netfilter Configuration
+#
+# CONFIG_BRIDGE_NF_EBTABLES is not set
+
+#
+# DCCP Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_DCCP is not set
+
+#
+# SCTP Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_SCTP is not set
+
+#
+# TIPC Configuration (EXPERIMENTAL)
+#
+CONFIG_TIPC=m
+# CONFIG_TIPC_ADVANCED is not set
+# CONFIG_TIPC_DEBUG is not set
+# CONFIG_ATM is not set
+CONFIG_BRIDGE=m
+CONFIG_VLAN_8021Q=m
+# CONFIG_DECNET is not set
+CONFIG_LLC=m
+# CONFIG_LLC2 is not set
+CONFIG_IPX=m
+# CONFIG_IPX_INTERN is not set
+CONFIG_ATALK=m
+CONFIG_DEV_APPLETALK=m
+CONFIG_IPDDP=m
+CONFIG_IPDDP_ENCAP=y
+CONFIG_IPDDP_DECAP=y
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_ECONET is not set
+# CONFIG_WAN_ROUTER is not set
+
+#
+# QoS and/or fair queueing
+#
+# CONFIG_NET_SCHED is not set
+CONFIG_NET_CLS_ROUTE=y
+
+#
+# Network testing
+#
+CONFIG_NET_PKTGEN=m
+# CONFIG_HAMRADIO is not set
+# CONFIG_IRDA is not set
+CONFIG_BT=m
+CONFIG_BT_L2CAP=m
+CONFIG_BT_SCO=m
+CONFIG_BT_RFCOMM=m
+CONFIG_BT_RFCOMM_TTY=y
+CONFIG_BT_BNEP=m
+CONFIG_BT_BNEP_MC_FILTER=y
+CONFIG_BT_BNEP_PROTO_FILTER=y
+# CONFIG_BT_HIDP is not set
+
+#
+# Bluetooth device drivers
+#
+CONFIG_BT_HCIUSB=m
+CONFIG_BT_HCIUSB_SCO=y
+# CONFIG_BT_HCIUART is not set
+CONFIG_BT_HCIBCM203X=m
+# CONFIG_BT_HCIBPA10X is not set
+# CONFIG_BT_HCIBFUSB is not set
+# CONFIG_BT_HCIVHCI is not set
+CONFIG_IEEE80211=m
+# CONFIG_IEEE80211_DEBUG is not set
+CONFIG_IEEE80211_CRYPT_WEP=m
+CONFIG_IEEE80211_CRYPT_CCMP=m
+CONFIG_IEEE80211_CRYPT_TKIP=m
+CONFIG_IEEE80211_SOFTMAC=m
+# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
+CONFIG_WIRELESS_EXT=y
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=y
+# CONFIG_SYS_HYPERVISOR is not set
+
+#
+# Connector - unified userspace <-> kernelspace linker
+#
+# CONFIG_CONNECTOR is not set
+
+#
+# Memory Technology Devices (MTD)
+#
+CONFIG_MTD=y
+# CONFIG_MTD_DEBUG is not set
+CONFIG_MTD_CONCAT=y
+CONFIG_MTD_PARTITIONS=y
+CONFIG_MTD_REDBOOT_PARTS=y
+CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1
+CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED=y
+# CONFIG_MTD_REDBOOT_PARTS_READONLY is not set
+# CONFIG_MTD_CMDLINE_PARTS is not set
+# CONFIG_MTD_AFS_PARTS is not set
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=y
+CONFIG_MTD_BLOCK=y
+# CONFIG_FTL is not set
+CONFIG_NFTL=y
+CONFIG_NFTL_RW=y
+# CONFIG_INFTL is not set
+# CONFIG_RFD_FTL is not set
+# CONFIG_SSFDC is not set
+
+#
+# RAM/ROM/Flash chip drivers
+#
+CONFIG_MTD_CFI=y
+# CONFIG_MTD_JEDECPROBE is not set
+CONFIG_MTD_GEN_PROBE=y
+CONFIG_MTD_CFI_ADV_OPTIONS=y
+# CONFIG_MTD_CFI_NOSWAP is not set
+CONFIG_MTD_CFI_BE_BYTE_SWAP=y
+# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
+CONFIG_MTD_CFI_GEOMETRY=y
+# CONFIG_MTD_MAP_BANK_WIDTH_1 is not set
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+# CONFIG_MTD_MAP_BANK_WIDTH_4 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
+CONFIG_MTD_CFI_I1=y
+CONFIG_MTD_CFI_I2=y
+# CONFIG_MTD_CFI_I4 is not set
+# CONFIG_MTD_CFI_I8 is not set
+# CONFIG_MTD_OTP is not set
+CONFIG_MTD_CFI_INTELEXT=y
+# CONFIG_MTD_CFI_AMDSTD is not set
+# CONFIG_MTD_CFI_STAA is not set
+CONFIG_MTD_CFI_UTIL=y
+# CONFIG_MTD_RAM is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+# CONFIG_MTD_OBSOLETE_CHIPS is not set
+
+#
+# Mapping drivers for chip access
+#
+CONFIG_MTD_COMPLEX_MAPPINGS=y
+# CONFIG_MTD_PHYSMAP is not set
+# CONFIG_MTD_ARM_INTEGRATOR is not set
+CONFIG_MTD_IXP4XX=y
+# CONFIG_MTD_PCI is not set
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_PMC551 is not set
+# CONFIG_MTD_SLRAM is not set
+# CONFIG_MTD_PHRAM is not set
+# CONFIG_MTD_MTDRAM is not set
+# CONFIG_MTD_BLOCK2MTD is not set
+
+#
+# Disk-On-Chip Device Drivers
+#
+# CONFIG_MTD_DOC2000 is not set
+# CONFIG_MTD_DOC2001 is not set
+# CONFIG_MTD_DOC2001PLUS is not set
+
+#
+# NAND Flash Device Drivers
+#
+# CONFIG_MTD_NAND is not set
+
+#
+# OneNAND Flash Device Drivers
+#
+# CONFIG_MTD_ONENAND is not set
+
+#
+# Parallel port support
+#
+# CONFIG_PARPORT is not set
+
+#
+# Plug and Play support
+#
+
+#
+# Block devices
+#
+# CONFIG_BLK_CPQ_DA is not set
+# CONFIG_BLK_CPQ_CISS_DA is not set
+# CONFIG_BLK_DEV_DAC960 is not set
+# CONFIG_BLK_DEV_UMEM is not set
+# CONFIG_BLK_DEV_COW_COMMON is not set
+CONFIG_BLK_DEV_LOOP=m
+# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+CONFIG_BLK_DEV_NBD=m
+# CONFIG_BLK_DEV_SX8 is not set
+# CONFIG_BLK_DEV_UB is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=4
+CONFIG_BLK_DEV_RAM_SIZE=10240
+CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
+# CONFIG_BLK_DEV_INITRD is not set
+CONFIG_CDROM_PKTCDVD=m
+CONFIG_CDROM_PKTCDVD_BUFFERS=8
+# CONFIG_CDROM_PKTCDVD_WCACHE is not set
+CONFIG_ATA_OVER_ETH=m
+
+#
+# ATA/ATAPI/MFM/RLL support
+#
+# CONFIG_IDE is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+CONFIG_SCSI=y
+# CONFIG_SCSI_NETLINK is not set
+CONFIG_SCSI_PROC_FS=y
+
+#
+# SCSI support type (disk, tape, CD-ROM)
+#
+CONFIG_BLK_DEV_SD=y
+CONFIG_CHR_DEV_ST=m
+# CONFIG_CHR_DEV_OSST is not set
+CONFIG_BLK_DEV_SR=m
+# CONFIG_BLK_DEV_SR_VENDOR is not set
+CONFIG_CHR_DEV_SG=m
+# CONFIG_CHR_DEV_SCH is not set
+
+#
+# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
+#
+CONFIG_SCSI_MULTI_LUN=y
+# CONFIG_SCSI_CONSTANTS is not set
+# CONFIG_SCSI_LOGGING is not set
+
+#
+# SCSI Transports
+#
+# CONFIG_SCSI_SPI_ATTRS is not set
+# CONFIG_SCSI_FC_ATTRS is not set
+CONFIG_SCSI_ISCSI_ATTRS=m
+# CONFIG_SCSI_SAS_ATTRS is not set
+# CONFIG_SCSI_SAS_LIBSAS is not set
+
+#
+# SCSI low-level drivers
+#
+CONFIG_ISCSI_TCP=m
+# 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_DMX3191D is not set
+# CONFIG_SCSI_FUTURE_DOMAIN 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_IPR 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
+
+#
+# Serial ATA (prod) and Parallel ATA (experimental) drivers
+#
+CONFIG_ATA=m
+# CONFIG_SATA_AHCI is not set
+# CONFIG_SATA_SVW is not set
+# CONFIG_ATA_PIIX is not set
+# CONFIG_SATA_MV is not set
+# CONFIG_SATA_NV is not set
+# CONFIG_PDC_ADMA is not set
+# CONFIG_SATA_QSTOR is not set
+# CONFIG_SATA_PROMISE is not set
+# CONFIG_SATA_SX4 is not set
+# CONFIG_SATA_SIL is not set
+# CONFIG_SATA_SIL24 is not set
+# CONFIG_SATA_SIS is not set
+# CONFIG_SATA_ULI is not set
+CONFIG_SATA_VIA=m
+# CONFIG_SATA_VITESSE is not set
+# CONFIG_PATA_ALI is not set
+# CONFIG_PATA_AMD is not set
+CONFIG_PATA_ARTOP=m
+# CONFIG_PATA_ATIIXP is not set
+# CONFIG_PATA_CMD64X is not set
+# CONFIG_PATA_CS5520 is not set
+# CONFIG_PATA_CS5530 is not set
+# CONFIG_PATA_CYPRESS is not set
+# CONFIG_PATA_EFAR is not set
+# CONFIG_ATA_GENERIC is not set
+# CONFIG_PATA_HPT366 is not set
+# CONFIG_PATA_HPT37X is not set
+# CONFIG_PATA_HPT3X2N is not set
+# CONFIG_PATA_HPT3X3 is not set
+# CONFIG_PATA_IT821X is not set
+# CONFIG_PATA_JMICRON is not set
+# CONFIG_PATA_TRIFLEX is not set
+# CONFIG_PATA_MPIIX is not set
+# CONFIG_PATA_OLDPIIX is not set
+# CONFIG_PATA_NETCELL is not set
+# CONFIG_PATA_NS87410 is not set
+# CONFIG_PATA_OPTI is not set
+# CONFIG_PATA_OPTIDMA is not set
+# CONFIG_PATA_PDC_OLD is not set
+# CONFIG_PATA_RADISYS is not set
+# CONFIG_PATA_RZ1000 is not set
+# CONFIG_PATA_SC1200 is not set
+# CONFIG_PATA_SERVERWORKS is not set
+# CONFIG_PATA_PDC2027X is not set
+# CONFIG_PATA_SIL680 is not set
+# CONFIG_PATA_SIS is not set
+# CONFIG_PATA_VIA is not set
+# CONFIG_PATA_WINBOND is not set
+CONFIG_PATA_IXP4XX_CF=m
+
+#
+# Multi-device support (RAID and LVM)
+#
+CONFIG_MD=y
+CONFIG_BLK_DEV_MD=m
+CONFIG_MD_LINEAR=m
+CONFIG_MD_RAID0=m
+CONFIG_MD_RAID1=m
+CONFIG_MD_RAID10=m
+CONFIG_MD_RAID456=m
+CONFIG_MD_RAID5_RESHAPE=y
+CONFIG_MD_MULTIPATH=m
+CONFIG_MD_FAULTY=m
+CONFIG_BLK_DEV_DM=m
+# CONFIG_DM_DEBUG is not set
+# CONFIG_DM_CRYPT is not set
+# CONFIG_DM_SNAPSHOT is not set
+# CONFIG_DM_MIRROR is not set
+# CONFIG_DM_ZERO is not set
+# CONFIG_DM_MULTIPATH is not set
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+# CONFIG_FUSION_SPI is not set
+# CONFIG_FUSION_FC is not set
+# CONFIG_FUSION_SAS is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+# CONFIG_IEEE1394 is not set
+
+#
+# I2O device support
+#
+# CONFIG_I2O is not set
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+CONFIG_TUN=m
+
+#
+# ARCnet devices
+#
+# CONFIG_ARCNET is not set
+
+#
+# PHY device support
+#
+# CONFIG_PHYLIB is not set
+
+#
+# Ethernet (10 or 100Mbit)
+#
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=y
+CONFIG_IXP4XX_QMGR=y
+CONFIG_IXP4XX_NPE=y
+CONFIG_IXP4XX_NPE_FW_LOAD=y
+CONFIG_IXP4XX_NPE_FW_MTD=y
+CONFIG_IXP4XX_MAC=y
+CONFIG_IXP4XX_CRYPTO=m
+# CONFIG_HAPPYMEAL is not set
+# CONFIG_SUNGEM is not set
+# CONFIG_CASSINI is not set
+# CONFIG_NET_VENDOR_3COM is not set
+# CONFIG_SMC91X is not set
+# CONFIG_DM9000 is not set
+
+#
+# Tulip family network device support
+#
+# 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 is not set
+# 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
+
+#
+# Ethernet (1000 Mbit)
+#
+# CONFIG_ACENIC is not set
+# CONFIG_DL2K is not set
+# CONFIG_E1000 is not set
+# CONFIG_NS83820 is not set
+# CONFIG_HAMACHI is not set
+# CONFIG_YELLOWFIN is not set
+CONFIG_R8169=m
+# CONFIG_R8169_NAPI is not set
+CONFIG_R8169_VLAN=y
+# CONFIG_SIS190 is not set
+# CONFIG_SKGE is not set
+# CONFIG_SKY2 is not set
+# CONFIG_SK98LIN is not set
+CONFIG_VIA_VELOCITY=m
+# CONFIG_TIGON3 is not set
+# CONFIG_BNX2 is not set
+# CONFIG_QLA3XXX is not set
+
+#
+# Ethernet (10000 Mbit)
+#
+# CONFIG_CHELSIO_T1 is not set
+# CONFIG_IXGB is not set
+# CONFIG_S2IO is not set
+# CONFIG_MYRI10GE is not set
+
+#
+# Token Ring devices
+#
+# CONFIG_TR is not set
+
+#
+# Wireless LAN (non-hamradio)
+#
+CONFIG_NET_RADIO=y
+# CONFIG_NET_WIRELESS_RTNETLINK is not set
+
+#
+# Obsolete Wireless cards support (pre-802.11)
+#
+# CONFIG_STRIP is not set
+
+#
+# Wireless 802.11b ISA/PCI cards support
+#
+# CONFIG_IPW2100 is not set
+# CONFIG_IPW2200 is not set
+# CONFIG_HERMES is not set
+# CONFIG_ATMEL is not set
+
+#
+# Prism GT/Duette 802.11(a/b/g) PCI/Cardbus support
+#
+# CONFIG_PRISM54 is not set
+# CONFIG_USB_ZD1201 is not set
+# CONFIG_HOSTAP is not set
+# CONFIG_BCM43XX is not set
+CONFIG_ZD1211RW=m
+# CONFIG_ZD1211RW_DEBUG is not set
+CONFIG_NET_WIRELESS=y
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+# CONFIG_FDDI is not set
+# CONFIG_HIPPI is not set
+CONFIG_PPP=m
+# CONFIG_PPP_MULTILINK is not set
+CONFIG_PPP_FILTER=y
+CONFIG_PPP_ASYNC=m
+CONFIG_PPP_SYNC_TTY=m
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+CONFIG_PPP_MPPE=m
+CONFIG_PPPOE=m
+# CONFIG_SLIP is not set
+CONFIG_SLHC=m
+# CONFIG_NET_FC is not set
+# CONFIG_SHAPER is not set
+CONFIG_NETCONSOLE=y
+CONFIG_NETPOLL=y
+# CONFIG_NETPOLL_RX is not set
+# CONFIG_NETPOLL_TRAP is not set
+CONFIG_NET_POLL_CONTROLLER=y
+
+#
+# ISDN subsystem
+#
+# CONFIG_ISDN is not set
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS is not set
+
+#
+# Userland interfaces
+#
+# CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_TSDEV is not set
+CONFIG_INPUT_EVDEV=y
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# Input Device Drivers
+#
+# CONFIG_INPUT_KEYBOARD is not set
+# CONFIG_INPUT_MOUSE is not set
+# CONFIG_INPUT_JOYSTICK is not set
+# CONFIG_INPUT_TOUCHSCREEN is not set
+CONFIG_INPUT_MISC=y
+CONFIG_INPUT_IXP4XX_BEEPER=y
+# CONFIG_INPUT_UINPUT is not set
+
+#
+# Hardware I/O ports
+#
+# CONFIG_SERIO is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+# CONFIG_VT is not set
+CONFIG_SERIAL_NONSTANDARD=y
+# CONFIG_COMPUTONE is not set
+# CONFIG_ROCKETPORT is not set
+# CONFIG_CYCLADES is not set
+# CONFIG_DIGIEPCA is not set
+# CONFIG_MOXA_INTELLIO is not set
+# CONFIG_MOXA_SMARTIO is not set
+# CONFIG_ISI is not set
+# CONFIG_SYNCLINKMP is not set
+# CONFIG_SYNCLINK_GT is not set
+CONFIG_N_HDLC=m
+# CONFIG_RISCOM8 is not set
+# CONFIG_SPECIALIX is not set
+# CONFIG_SX is not set
+# CONFIG_RIO is not set
+# CONFIG_STALDRV is not set
+
+#
+# Serial drivers
+#
+CONFIG_SERIAL_8250=y
+CONFIG_SERIAL_8250_CONSOLE=y
+CONFIG_SERIAL_8250_PCI=m
+CONFIG_SERIAL_8250_NR_UARTS=2
+CONFIG_SERIAL_8250_RUNTIME_UARTS=2
+# CONFIG_SERIAL_8250_EXTENDED is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+# CONFIG_SERIAL_JSM is not set
+CONFIG_UNIX98_PTYS=y
+# CONFIG_LEGACY_PTYS is not set
+
+#
+# IPMI
+#
+# CONFIG_IPMI_HANDLER is not set
+
+#
+# Watchdog Cards
+#
+CONFIG_WATCHDOG=y
+# CONFIG_WATCHDOG_NOWAYOUT is not set
+
+#
+# Watchdog Device Drivers
+#
+# CONFIG_SOFT_WATCHDOG is not set
+CONFIG_IXP4XX_WATCHDOG=m
+
+#
+# PCI-based Watchdog Cards
+#
+# CONFIG_PCIPCWATCHDOG is not set
+# CONFIG_WDTPCI is not set
+
+#
+# USB-based Watchdog Cards
+#
+# CONFIG_USBPCWATCHDOG is not set
+CONFIG_HW_RANDOM=y
+CONFIG_HW_RANDOM_IXP4XX=y
+# CONFIG_NVRAM is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+# CONFIG_APPLICOM is not set
+
+#
+# Ftape, the floppy tape device driver
+#
+# CONFIG_DRM is not set
+# CONFIG_RAW_DRIVER is not set
+
+#
+# TPM devices
+#
+# CONFIG_TCG_TPM is not set
+
+#
+# I2C support
+#
+CONFIG_I2C=y
+CONFIG_I2C_CHARDEV=y
+
+#
+# I2C Algorithms
+#
+CONFIG_I2C_ALGOBIT=y
+# CONFIG_I2C_ALGOPCF is not set
+# CONFIG_I2C_ALGOPCA is not set
+
+#
+# I2C Hardware Bus support
+#
+# CONFIG_I2C_ALI1535 is not set
+# CONFIG_I2C_ALI1563 is not set
+# CONFIG_I2C_ALI15X3 is not set
+# CONFIG_I2C_AMD756 is not set
+# CONFIG_I2C_AMD8111 is not set
+# CONFIG_I2C_I801 is not set
+# CONFIG_I2C_I810 is not set
+# CONFIG_I2C_PIIX4 is not set
+# CONFIG_I2C_IOP3XX is not set
+CONFIG_I2C_ISA=m
+CONFIG_I2C_IXP4XX=y
+# CONFIG_I2C_NFORCE2 is not set
+# CONFIG_I2C_OCORES is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_PROSAVAGE is not set
+# CONFIG_I2C_SAVAGE4 is not set
+# CONFIG_I2C_SIS5595 is not set
+# CONFIG_I2C_SIS630 is not set
+# CONFIG_I2C_SIS96X is not set
+# CONFIG_I2C_STUB is not set
+# CONFIG_I2C_VIA is not set
+# CONFIG_I2C_VIAPRO is not set
+# CONFIG_I2C_VOODOO3 is not set
+# CONFIG_I2C_PCA_ISA is not set
+
+#
+# Miscellaneous I2C Chip support
+#
+# CONFIG_SENSORS_DS1337 is not set
+# CONFIG_SENSORS_DS1374 is not set
+CONFIG_SENSORS_EEPROM=y
+CONFIG_SENSORS_PCF8574=m
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_SENSORS_MAX6875 is not set
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CHIP is not set
+
+#
+# SPI support
+#
+# CONFIG_SPI is not set
+# CONFIG_SPI_MASTER is not set
+
+#
+# Dallas's 1-wire bus
+#
+CONFIG_W1=m
+
+#
+# 1-wire Bus Masters
+#
+# CONFIG_W1_MASTER_MATROX is not set
+CONFIG_W1_MASTER_DS2490=m
+CONFIG_W1_MASTER_DS2482=m
+
+#
+# 1-wire Slaves
+#
+CONFIG_W1_SLAVE_THERM=m
+CONFIG_W1_SLAVE_SMEM=m
+CONFIG_W1_SLAVE_DS2433=m
+CONFIG_W1_SLAVE_DS2433_CRC=y
+
+#
+# Hardware Monitoring support
+#
+CONFIG_HWMON=m
+CONFIG_HWMON_VID=m
+# CONFIG_SENSORS_ABITUGURU is not set
+# CONFIG_SENSORS_ADM1021 is not set
+# CONFIG_SENSORS_ADM1025 is not set
+# CONFIG_SENSORS_ADM1026 is not set
+# CONFIG_SENSORS_ADM1031 is not set
+# CONFIG_SENSORS_ADM9240 is not set
+# CONFIG_SENSORS_ASB100 is not set
+# CONFIG_SENSORS_ATXP1 is not set
+# CONFIG_SENSORS_DS1621 is not set
+# CONFIG_SENSORS_F71805F is not set
+# CONFIG_SENSORS_FSCHER is not set
+# CONFIG_SENSORS_FSCPOS is not set
+# CONFIG_SENSORS_GL518SM is not set
+# CONFIG_SENSORS_GL520SM is not set
+# CONFIG_SENSORS_IT87 is not set
+# CONFIG_SENSORS_LM63 is not set
+# CONFIG_SENSORS_LM75 is not set
+# CONFIG_SENSORS_LM77 is not set
+# CONFIG_SENSORS_LM78 is not set
+# CONFIG_SENSORS_LM80 is not set
+# CONFIG_SENSORS_LM83 is not set
+# CONFIG_SENSORS_LM85 is not set
+# CONFIG_SENSORS_LM87 is not set
+# CONFIG_SENSORS_LM90 is not set
+# CONFIG_SENSORS_LM92 is not set
+# CONFIG_SENSORS_MAX1619 is not set
+# CONFIG_SENSORS_PC87360 is not set
+# CONFIG_SENSORS_SIS5595 is not set
+# CONFIG_SENSORS_SMSC47M1 is not set
+# CONFIG_SENSORS_SMSC47M192 is not set
+# CONFIG_SENSORS_SMSC47B397 is not set
+# CONFIG_SENSORS_VIA686A is not set
+# CONFIG_SENSORS_VT1211 is not set
+# CONFIG_SENSORS_VT8231 is not set
+CONFIG_SENSORS_W83781D=m
+# CONFIG_SENSORS_W83791D is not set
+# CONFIG_SENSORS_W83792D is not set
+# CONFIG_SENSORS_W83L785TS is not set
+# CONFIG_SENSORS_W83627HF is not set
+# CONFIG_SENSORS_W83627EHF is not set
+CONFIG_SENSORS_AD7418=m
+# CONFIG_HWMON_DEBUG_CHIP is not set
+
+#
+# Misc devices
+#
+# CONFIG_SGI_IOC4 is not set
+# CONFIG_TIFM_CORE is not set
+
+#
+# LED devices
+#
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+
+#
+# LED drivers
+#
+CONFIG_LEDS_IXP4XX=y
+
+#
+# LED Triggers
+#
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=y
+CONFIG_LEDS_TRIGGER_HEARTBEAT=y
+CONFIG_LEDS_TRIGGER_CPU_ACTIVITY=y
+
+#
+# Multimedia devices
+#
+CONFIG_VIDEO_DEV=m
+CONFIG_VIDEO_V4L1=y
+CONFIG_VIDEO_V4L1_COMPAT=y
+CONFIG_VIDEO_V4L2=y
+
+#
+# Video Capture Adapters
+#
+
+#
+# Video Capture Adapters
+#
+# CONFIG_VIDEO_ADV_DEBUG is not set
+CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
+CONFIG_VIDEO_TDA9840=m
+CONFIG_VIDEO_TEA6415C=m
+CONFIG_VIDEO_TEA6420=m
+CONFIG_VIDEO_BT819=m
+CONFIG_VIDEO_BT856=m
+CONFIG_VIDEO_SAA7110=m
+CONFIG_VIDEO_SAA7111=m
+CONFIG_VIDEO_SAA7114=m
+CONFIG_VIDEO_VPX3220=m
+CONFIG_VIDEO_SAA7185=m
+CONFIG_VIDEO_ADV7170=m
+CONFIG_VIDEO_ADV7175=m
+CONFIG_VIDEO_VIVI=m
+# CONFIG_VIDEO_BT848 is not set
+CONFIG_VIDEO_CPIA=m
+CONFIG_VIDEO_CPIA_USB=m
+CONFIG_VIDEO_CPIA2=m
+CONFIG_VIDEO_SAA5246A=m
+CONFIG_VIDEO_SAA5249=m
+CONFIG_TUNER_3036=m
+CONFIG_VIDEO_STRADIS=m
+CONFIG_VIDEO_ZORAN_ZR36060=m
+CONFIG_VIDEO_ZORAN=m
+CONFIG_VIDEO_ZORAN_BUZ=m
+CONFIG_VIDEO_ZORAN_DC10=m
+CONFIG_VIDEO_ZORAN_DC30=m
+CONFIG_VIDEO_ZORAN_LML33=m
+CONFIG_VIDEO_ZORAN_LML33R10=m
+# CONFIG_VIDEO_ZORAN_AVS6EYES is not set
+CONFIG_VIDEO_SAA7134=m
+# CONFIG_VIDEO_SAA7134_ALSA is not set
+CONFIG_VIDEO_MXB=m
+CONFIG_VIDEO_DPC=m
+CONFIG_VIDEO_HEXIUM_ORION=m
+CONFIG_VIDEO_HEXIUM_GEMINI=m
+CONFIG_VIDEO_CX88=m
+CONFIG_VIDEO_CX88_ALSA=m
+# CONFIG_VIDEO_CX88_BLACKBIRD is not set
+
+#
+# V4L USB devices
+#
+# CONFIG_VIDEO_PVRUSB2 is not set
+# CONFIG_VIDEO_EM28XX is not set
+# CONFIG_USB_VICAM is not set
+# CONFIG_USB_IBMCAM is not set
+# CONFIG_USB_KONICAWC is not set
+# CONFIG_USB_QUICKCAM_MESSENGER is not set
+# CONFIG_USB_ET61X251 is not set
+CONFIG_VIDEO_OVCAMCHIP=m
+# CONFIG_USB_W9968CF is not set
+# CONFIG_USB_OV511 is not set
+# CONFIG_USB_SE401 is not set
+# CONFIG_USB_SN9C102 is not set
+# CONFIG_USB_STV680 is not set
+# CONFIG_USB_ZC0301 is not set
+CONFIG_USB_PWC=m
+# CONFIG_USB_PWC_DEBUG is not set
+
+#
+# Radio Adapters
+#
+# CONFIG_RADIO_GEMTEK_PCI is not set
+# CONFIG_RADIO_MAXIRADIO is not set
+# CONFIG_RADIO_MAESTRO is not set
+# CONFIG_USB_DSBR is not set
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB is not set
+CONFIG_VIDEO_SAA7146=m
+CONFIG_VIDEO_SAA7146_VV=m
+CONFIG_VIDEO_VIDEOBUF=m
+CONFIG_VIDEO_TUNER=m
+CONFIG_VIDEO_BUF=m
+CONFIG_VIDEO_BTCX=m
+CONFIG_VIDEO_IR=m
+CONFIG_VIDEO_TVEEPROM=m
+# CONFIG_USB_DABUSB is not set
+
+#
+# Graphics support
+#
+# CONFIG_FIRMWARE_EDID is not set
+# CONFIG_FB is not set
+# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
+
+#
+# Sound
+#
+CONFIG_SOUND=m
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=m
+CONFIG_SND_TIMER=m
+CONFIG_SND_PCM=m
+CONFIG_SND_HWDEP=m
+CONFIG_SND_RAWMIDI=m
+# CONFIG_SND_SEQUENCER is not set
+CONFIG_SND_OSSEMUL=y
+CONFIG_SND_MIXER_OSS=m
+CONFIG_SND_PCM_OSS=m
+CONFIG_SND_PCM_OSS_PLUGINS=y
+# CONFIG_SND_DYNAMIC_MINORS is not set
+CONFIG_SND_SUPPORT_OLD_API=y
+CONFIG_SND_VERBOSE_PROCFS=y
+# CONFIG_SND_VERBOSE_PRINTK is not set
+# CONFIG_SND_DEBUG is not set
+
+#
+# Generic devices
+#
+# CONFIG_SND_DUMMY is not set
+# CONFIG_SND_MTPAV is not set
+# CONFIG_SND_SERIAL_U16550 is not set
+# CONFIG_SND_MPU401 is not set
+
+#
+# PCI devices
+#
+# CONFIG_SND_AD1889 is not set
+# CONFIG_SND_ALS300 is not set
+# CONFIG_SND_ALI5451 is not set
+# CONFIG_SND_ATIIXP is not set
+# CONFIG_SND_ATIIXP_MODEM is not set
+# CONFIG_SND_AU8810 is not set
+# CONFIG_SND_AU8820 is not set
+# CONFIG_SND_AU8830 is not set
+# CONFIG_SND_AZT3328 is not set
+# CONFIG_SND_BT87X is not set
+# CONFIG_SND_CA0106 is not set
+# CONFIG_SND_CMIPCI is not set
+# CONFIG_SND_CS4281 is not set
+# CONFIG_SND_CS46XX is not set
+# CONFIG_SND_DARLA20 is not set
+# CONFIG_SND_GINA20 is not set
+# CONFIG_SND_LAYLA20 is not set
+# CONFIG_SND_DARLA24 is not set
+# CONFIG_SND_GINA24 is not set
+# CONFIG_SND_LAYLA24 is not set
+# CONFIG_SND_MONA is not set
+# CONFIG_SND_MIA is not set
+# CONFIG_SND_ECHO3G is not set
+# CONFIG_SND_INDIGO is not set
+# CONFIG_SND_INDIGOIO is not set
+# CONFIG_SND_INDIGODJ is not set
+# CONFIG_SND_EMU10K1 is not set
+# CONFIG_SND_EMU10K1X is not set
+# CONFIG_SND_ENS1370 is not set
+# CONFIG_SND_ENS1371 is not set
+# CONFIG_SND_ES1938 is not set
+# CONFIG_SND_ES1968 is not set
+# CONFIG_SND_FM801 is not set
+# CONFIG_SND_HDA_INTEL is not set
+# CONFIG_SND_HDSP is not set
+# CONFIG_SND_HDSPM is not set
+# CONFIG_SND_ICE1712 is not set
+# CONFIG_SND_ICE1724 is not set
+# CONFIG_SND_INTEL8X0 is not set
+# CONFIG_SND_INTEL8X0M is not set
+# CONFIG_SND_KORG1212 is not set
+# CONFIG_SND_MAESTRO3 is not set
+# CONFIG_SND_MIXART is not set
+# CONFIG_SND_NM256 is not set
+# CONFIG_SND_PCXHR is not set
+# CONFIG_SND_RIPTIDE is not set
+# CONFIG_SND_RME32 is not set
+# CONFIG_SND_RME96 is not set
+# CONFIG_SND_RME9652 is not set
+# CONFIG_SND_SONICVIBES is not set
+# CONFIG_SND_TRIDENT is not set
+# CONFIG_SND_VIA82XX is not set
+# CONFIG_SND_VIA82XX_MODEM is not set
+# CONFIG_SND_VX222 is not set
+# CONFIG_SND_YMFPCI is not set
+
+#
+# ALSA ARM devices
+#
+
+#
+# USB devices
+#
+CONFIG_SND_USB_AUDIO=m
+
+#
+# Open Sound System
+#
+# CONFIG_SOUND_PRIME is not set
+
+#
+# USB support
+#
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB_ARCH_HAS_OHCI=y
+CONFIG_USB_ARCH_HAS_EHCI=y
+CONFIG_USB=y
+# CONFIG_USB_DEBUG is not set
+
+#
+# Miscellaneous USB options
+#
+CONFIG_USB_DEVICEFS=y
+# CONFIG_USB_BANDWIDTH is not set
+# CONFIG_USB_DYNAMIC_MINORS is not set
+# CONFIG_USB_OTG is not set
+
+#
+# USB Host Controller Drivers
+#
+CONFIG_USB_EHCI_HCD=y
+CONFIG_USB_EHCI_SPLIT_ISO=y
+CONFIG_USB_EHCI_ROOT_HUB_TT=y
+CONFIG_USB_EHCI_TT_NEWSCHED=y
+# CONFIG_USB_ISP116X_HCD is not set
+CONFIG_USB_OHCI_HCD=m
+# CONFIG_USB_OHCI_BIG_ENDIAN is not set
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+CONFIG_USB_UHCI_HCD=m
+# CONFIG_USB_U132_HCD is not set
+# CONFIG_USB_SL811_HCD is not set
+
+#
+# USB Device Class drivers
+#
+CONFIG_USB_ACM=m
+CONFIG_USB_PRINTER=m
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# may also be needed; see USB_STORAGE Help for more information
+#
+CONFIG_USB_STORAGE=y
+# CONFIG_USB_STORAGE_DEBUG is not set
+# CONFIG_USB_STORAGE_DATAFAB is not set
+# CONFIG_USB_STORAGE_FREECOM is not set
+# CONFIG_USB_STORAGE_DPCM is not set
+# CONFIG_USB_STORAGE_USBAT is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_SDDR55 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+# CONFIG_USB_STORAGE_ALAUDA is not set
+CONFIG_USB_STORAGE_ONETOUCH=y
+CONFIG_USB_STORAGE_KARMA=y
+# CONFIG_USB_LIBUSUAL is not set
+
+#
+# USB Input Devices
+#
+CONFIG_USB_HID=m
+CONFIG_USB_HIDINPUT=y
+# CONFIG_USB_HIDINPUT_POWERBOOK is not set
+# CONFIG_HID_FF is not set
+CONFIG_USB_HIDDEV=y
+
+#
+# USB HID Boot Protocol drivers
+#
+CONFIG_USB_KBD=m
+# CONFIG_USB_MOUSE is not set
+# CONFIG_USB_AIPTEK is not set
+# CONFIG_USB_WACOM is not set
+# CONFIG_USB_ACECAD is not set
+# CONFIG_USB_KBTAB is not set
+# CONFIG_USB_POWERMATE is not set
+# CONFIG_USB_TOUCHSCREEN is not set
+CONFIG_USB_YEALINK=m
+# CONFIG_USB_XPAD is not set
+# CONFIG_USB_ATI_REMOTE is not set
+# CONFIG_USB_ATI_REMOTE2 is not set
+# CONFIG_USB_KEYSPAN_REMOTE is not set
+# CONFIG_USB_APPLETOUCH is not set
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_MICROTEK is not set
+
+#
+# USB Network Adapters
+#
+CONFIG_USB_CATC=m
+CONFIG_USB_KAWETH=m
+CONFIG_USB_PEGASUS=m
+CONFIG_USB_RTL8150=m
+CONFIG_USB_USBNET_MII=m
+CONFIG_USB_USBNET=m
+CONFIG_USB_NET_AX8817X=m
+CONFIG_USB_NET_CDCETHER=m
+# CONFIG_USB_NET_GL620A is not set
+CONFIG_USB_NET_NET1080=m
+# CONFIG_USB_NET_PLUSB is not set
+CONFIG_USB_NET_MCS7830=m
+# CONFIG_USB_NET_RNDIS_HOST is not set
+# CONFIG_USB_NET_CDC_SUBSET is not set
+CONFIG_USB_NET_ZAURUS=m
+# CONFIG_USB_MON is not set
+
+#
+# USB port drivers
+#
+
+#
+# USB Serial Converter support
+#
+CONFIG_USB_SERIAL=m
+CONFIG_USB_SERIAL_GENERIC=y
+CONFIG_USB_SERIAL_AIRCABLE=m
+# CONFIG_USB_SERIAL_AIRPRIME is not set
+# CONFIG_USB_SERIAL_ARK3116 is not set
+CONFIG_USB_SERIAL_BELKIN=m
+CONFIG_USB_SERIAL_WHITEHEAT=m
+CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
+# CONFIG_USB_SERIAL_CP2101 is not set
+CONFIG_USB_SERIAL_CYPRESS_M8=m
+CONFIG_USB_SERIAL_EMPEG=m
+CONFIG_USB_SERIAL_FTDI_SIO=m
+CONFIG_USB_SERIAL_FUNSOFT=m
+CONFIG_USB_SERIAL_VISOR=m
+CONFIG_USB_SERIAL_IPAQ=m
+CONFIG_USB_SERIAL_IR=m
+CONFIG_USB_SERIAL_EDGEPORT=m
+CONFIG_USB_SERIAL_EDGEPORT_TI=m
+CONFIG_USB_SERIAL_GARMIN=m
+CONFIG_USB_SERIAL_IPW=m
+CONFIG_USB_SERIAL_KEYSPAN_PDA=m
+# CONFIG_USB_SERIAL_KEYSPAN is not set
+CONFIG_USB_SERIAL_KLSI=m
+CONFIG_USB_SERIAL_KOBIL_SCT=m
+CONFIG_USB_SERIAL_MCT_U232=m
+CONFIG_USB_SERIAL_MOS7720=m
+CONFIG_USB_SERIAL_MOS7840=m
+CONFIG_USB_SERIAL_NAVMAN=m
+CONFIG_USB_SERIAL_PL2303=m
+# CONFIG_USB_SERIAL_HP4X is not set
+CONFIG_USB_SERIAL_SAFE=m
+# CONFIG_USB_SERIAL_SAFE_PADDED is not set
+# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set
+CONFIG_USB_SERIAL_TI=m
+CONFIG_USB_SERIAL_CYBERJACK=m
+CONFIG_USB_SERIAL_XIRCOM=m
+# CONFIG_USB_SERIAL_OPTION is not set
+CONFIG_USB_SERIAL_OMNINET=m
+CONFIG_USB_EZUSB=y
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_EMI62 is not set
+# CONFIG_USB_EMI26 is not set
+CONFIG_USB_ADUTUX=m
+# CONFIG_USB_AUERSWALD is not set
+# CONFIG_USB_RIO500 is not set
+# CONFIG_USB_LEGOTOWER is not set
+# CONFIG_USB_LCD is not set
+# CONFIG_USB_LED is not set
+# CONFIG_USB_CYPRESS_CY7C63 is not set
+# CONFIG_USB_CYTHERM is not set
+CONFIG_USB_PHIDGET=m
+CONFIG_USB_PHIDGETKIT=m
+CONFIG_USB_PHIDGETMOTORCONTROL=m
+CONFIG_USB_PHIDGETSERVO=m
+# CONFIG_USB_IDMOUSE is not set
+CONFIG_USB_FTDI_ELAN=m
+# CONFIG_USB_APPLEDISPLAY is not set
+CONFIG_USB_SISUSBVGA=m
+# CONFIG_USB_LD is not set
+# CONFIG_USB_TRANCEVIBRATOR is not set
+# CONFIG_USB_TEST is not set
+
+#
+# USB DSL modem support
+#
+
+#
+# USB Gadget Support
+#
+# CONFIG_USB_GADGET is not set
+
+#
+# MMC/SD Card support
+#
+# CONFIG_MMC is not set
+
+#
+# Real Time Clock
+#
+CONFIG_RTC_LIB=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_HCTOSYS=y
+CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
+# CONFIG_RTC_DEBUG is not set
+
+#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=y
+CONFIG_RTC_INTF_PROC=y
+CONFIG_RTC_INTF_DEV=y
+# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
+
+#
+# RTC drivers
+#
+CONFIG_RTC_DRV_X1205=y
+CONFIG_RTC_DRV_DS1307=y
+# CONFIG_RTC_DRV_DS1553 is not set
+CONFIG_RTC_DRV_ISL1208=y
+CONFIG_RTC_DRV_DS1672=y
+# CONFIG_RTC_DRV_DS1742 is not set
+CONFIG_RTC_DRV_PCF8563=y
+# CONFIG_RTC_DRV_PCF8583 is not set
+# CONFIG_RTC_DRV_RS5C372 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
+# CONFIG_RTC_DRV_TEST is not set
+# CONFIG_RTC_DRV_V3020 is not set
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=m
+CONFIG_EXT2_FS_XATTR=y
+CONFIG_EXT2_FS_POSIX_ACL=y
+CONFIG_EXT2_FS_SECURITY=y
+# CONFIG_EXT2_FS_XIP is not set
+CONFIG_EXT3_FS=m
+CONFIG_EXT3_FS_XATTR=y
+CONFIG_EXT3_FS_POSIX_ACL=y
+CONFIG_EXT3_FS_SECURITY=y
+# CONFIG_EXT4DEV_FS is not set
+CONFIG_JBD=m
+# CONFIG_JBD_DEBUG is not set
+CONFIG_FS_MBCACHE=m
+CONFIG_REISERFS_FS=m
+# CONFIG_REISERFS_CHECK is not set
+# CONFIG_REISERFS_PROC_INFO is not set
+CONFIG_REISERFS_FS_XATTR=y
+CONFIG_REISERFS_FS_POSIX_ACL=y
+CONFIG_REISERFS_FS_SECURITY=y
+# CONFIG_JFS_FS is not set
+CONFIG_FS_POSIX_ACL=y
+# CONFIG_XFS_FS is not set
+# CONFIG_GFS2_FS is not set
+# CONFIG_OCFS2_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+# CONFIG_QUOTA is not set
+CONFIG_DNOTIFY=y
+# CONFIG_AUTOFS_FS is not set
+CONFIG_AUTOFS4_FS=m
+# CONFIG_FUSE_FS is not set
+
+#
+# CD-ROM/DVD Filesystems
+#
+CONFIG_ISO9660_FS=m
+CONFIG_JOLIET=y
+CONFIG_ZISOFS=y
+CONFIG_ZISOFS_FS=m
+CONFIG_UDF_FS=m
+CONFIG_UDF_NLS=y
+
+#
+# DOS/FAT/NT Filesystems
+#
+CONFIG_FAT_FS=m
+CONFIG_MSDOS_FS=m
+CONFIG_VFAT_FS=m
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="utf8"
+CONFIG_NTFS_FS=m
+# CONFIG_NTFS_DEBUG is not set
+CONFIG_NTFS_RW=y
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_TMPFS_POSIX_ACL is not set
+# CONFIG_HUGETLB_PAGE is not set
+CONFIG_RAMFS=y
+# CONFIG_CONFIGFS_FS is not set
+
+#
+# Miscellaneous filesystems
+#
+# CONFIG_ADFS_FS is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_HFS_FS is not set
+# CONFIG_HFSPLUS_FS is not set
+# CONFIG_BEFS_FS is not set
+# CONFIG_BFS_FS is not set
+# CONFIG_EFS_FS is not set
+# CONFIG_JFFS_FS is not set
+CONFIG_JFFS2_FS=y
+CONFIG_JFFS2_FS_DEBUG=0
+CONFIG_JFFS2_FS_WRITEBUFFER=y
+# CONFIG_JFFS2_SUMMARY is not set
+# CONFIG_JFFS2_FS_XATTR is not set
+# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
+CONFIG_JFFS2_ZLIB=y
+CONFIG_JFFS2_RTIME=y
+# CONFIG_JFFS2_RUBIN is not set
+# CONFIG_CRAMFS is not set
+CONFIG_SQUASHFS=m
+# CONFIG_SQUASHFS_EMBEDDED is not set
+CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
+# CONFIG_SQUASHFS_VMALLOC is not set
+# CONFIG_VXFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+
+#
+# Network File Systems
+#
+CONFIG_NFS_FS=m
+CONFIG_NFS_V3=y
+# CONFIG_NFS_V3_ACL is not set
+# CONFIG_NFS_V4 is not set
+# CONFIG_NFS_DIRECTIO is not set
+CONFIG_NFSD=m
+CONFIG_NFSD_V3=y
+# CONFIG_NFSD_V3_ACL is not set
+CONFIG_NFSD_V4=y
+CONFIG_NFSD_TCP=y
+CONFIG_ROOT_NFS=y
+CONFIG_LOCKD=m
+CONFIG_LOCKD_V4=y
+CONFIG_EXPORTFS=m
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=y
+CONFIG_SUNRPC_GSS=y
+CONFIG_RPCSEC_GSS_KRB5=y
+# CONFIG_RPCSEC_GSS_SPKM3 is not set
+CONFIG_SMB_FS=m
+# CONFIG_SMB_NLS_DEFAULT is not set
+CONFIG_CIFS=m
+# CONFIG_CIFS_STATS is not set
+# CONFIG_CIFS_WEAK_PW_HASH is not set
+CONFIG_CIFS_XATTR=y
+CONFIG_CIFS_POSIX=y
+# CONFIG_CIFS_DEBUG2 is not set
+# CONFIG_CIFS_EXPERIMENTAL is not set
+# CONFIG_NCP_FS is not set
+# CONFIG_CODA_FS is not set
+# CONFIG_AFS_FS is not set
+# CONFIG_9P_FS is not set
+
+#
+# Partition Types
+#
+CONFIG_PARTITION_ADVANCED=y
+# CONFIG_ACORN_PARTITION is not set
+# CONFIG_OSF_PARTITION is not set
+# CONFIG_AMIGA_PARTITION is not set
+# CONFIG_ATARI_PARTITION is not set
+# CONFIG_MAC_PARTITION is not set
+CONFIG_MSDOS_PARTITION=y
+# CONFIG_BSD_DISKLABEL is not set
+# CONFIG_MINIX_SUBPARTITION is not set
+# CONFIG_SOLARIS_X86_PARTITION is not set
+# CONFIG_UNIXWARE_DISKLABEL is not set
+# CONFIG_LDM_PARTITION is not set
+# CONFIG_SGI_PARTITION is not set
+# CONFIG_ULTRIX_PARTITION is not set
+# CONFIG_SUN_PARTITION is not set
+# CONFIG_KARMA_PARTITION is not set
+# CONFIG_EFI_PARTITION is not set
+
+#
+# Native Language Support
+#
+CONFIG_NLS=m
+CONFIG_NLS_DEFAULT="utf8"
+CONFIG_NLS_CODEPAGE_437=m
+CONFIG_NLS_CODEPAGE_737=m
+CONFIG_NLS_CODEPAGE_775=m
+CONFIG_NLS_CODEPAGE_850=m
+CONFIG_NLS_CODEPAGE_852=m
+CONFIG_NLS_CODEPAGE_855=m
+CONFIG_NLS_CODEPAGE_857=m
+CONFIG_NLS_CODEPAGE_860=m
+CONFIG_NLS_CODEPAGE_861=m
+CONFIG_NLS_CODEPAGE_862=m
+CONFIG_NLS_CODEPAGE_863=m
+CONFIG_NLS_CODEPAGE_864=m
+CONFIG_NLS_CODEPAGE_865=m
+CONFIG_NLS_CODEPAGE_866=m
+CONFIG_NLS_CODEPAGE_869=m
+CONFIG_NLS_CODEPAGE_936=m
+CONFIG_NLS_CODEPAGE_950=m
+CONFIG_NLS_CODEPAGE_932=m
+CONFIG_NLS_CODEPAGE_949=m
+CONFIG_NLS_CODEPAGE_874=m
+CONFIG_NLS_ISO8859_8=m
+CONFIG_NLS_CODEPAGE_1250=m
+CONFIG_NLS_CODEPAGE_1251=m
+CONFIG_NLS_ASCII=m
+CONFIG_NLS_ISO8859_1=m
+CONFIG_NLS_ISO8859_2=m
+CONFIG_NLS_ISO8859_3=m
+CONFIG_NLS_ISO8859_4=m
+CONFIG_NLS_ISO8859_5=m
+CONFIG_NLS_ISO8859_6=m
+CONFIG_NLS_ISO8859_7=m
+CONFIG_NLS_ISO8859_9=m
+CONFIG_NLS_ISO8859_13=m
+CONFIG_NLS_ISO8859_14=m
+CONFIG_NLS_ISO8859_15=m
+CONFIG_NLS_KOI8_R=m
+CONFIG_NLS_KOI8_U=m
+CONFIG_NLS_UTF8=m
+
+#
+# Profiling support
+#
+# CONFIG_PROFILING is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+CONFIG_ENABLE_MUST_CHECK=y
+# CONFIG_MAGIC_SYSRQ is not set
+# CONFIG_UNUSED_SYMBOLS is not set
+# CONFIG_DEBUG_KERNEL is not set
+CONFIG_LOG_BUF_SHIFT=14
+# CONFIG_DEBUG_BUGVERBOSE is not set
+# CONFIG_DEBUG_FS is not set
+CONFIG_FRAME_POINTER=y
+# CONFIG_HEADERS_CHECK is not set
+# CONFIG_DEBUG_USER is not set
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+
+#
+# Cryptographic options
+#
+CONFIG_CRYPTO=y
+CONFIG_CRYPTO_ALGAPI=y
+CONFIG_CRYPTO_BLKCIPHER=y
+CONFIG_CRYPTO_HASH=y
+CONFIG_CRYPTO_MANAGER=y
+CONFIG_CRYPTO_HMAC=y
+# CONFIG_CRYPTO_NULL is not set
+CONFIG_CRYPTO_MD4=m
+CONFIG_CRYPTO_MD5=y
+CONFIG_CRYPTO_SHA1=m
+CONFIG_CRYPTO_SHA256=m
+CONFIG_CRYPTO_SHA512=m
+CONFIG_CRYPTO_WP512=m
+CONFIG_CRYPTO_TGR192=m
+CONFIG_CRYPTO_ECB=m
+CONFIG_CRYPTO_CBC=y
+CONFIG_CRYPTO_DES=y
+CONFIG_CRYPTO_BLOWFISH=m
+CONFIG_CRYPTO_TWOFISH=m
+CONFIG_CRYPTO_TWOFISH_COMMON=m
+CONFIG_CRYPTO_SERPENT=m
+CONFIG_CRYPTO_AES=m
+CONFIG_CRYPTO_CAST5=m
+CONFIG_CRYPTO_CAST6=m
+CONFIG_CRYPTO_TEA=m
+CONFIG_CRYPTO_ARC4=m
+CONFIG_CRYPTO_KHAZAD=m
+CONFIG_CRYPTO_ANUBIS=m
+CONFIG_CRYPTO_DEFLATE=m
+CONFIG_CRYPTO_MICHAEL_MIC=m
+CONFIG_CRYPTO_CRC32C=m
+CONFIG_CRYPTO_TEST=m
+
+#
+# Hardware crypto devices
+#
+
+#
+# Library routines
+#
+CONFIG_CRC_CCITT=m
+CONFIG_CRC16=y
+CONFIG_CRC32=y
+CONFIG_LIBCRC32C=m
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_TEXTSEARCH=y
+CONFIG_TEXTSEARCH_KMP=m
+CONFIG_TEXTSEARCH_BM=m
+CONFIG_TEXTSEARCH_FSM=m
+CONFIG_PLIST=y
diff --git a/packages/linux/linux-ixp4xx/defconfig-2.6.20 b/packages/linux/linux-ixp4xx/defconfig-2.6.20
new file mode 100644
index 0000000000..27fab8ab73
--- /dev/null
+++ b/packages/linux/linux-ixp4xx/defconfig-2.6.20
@@ -0,0 +1,2031 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.20-rc5-git2
+# Wed Jan 24 01:08:16 2007
+#
+CONFIG_ARM=y
+CONFIG_GENERIC_TIME=y
+CONFIG_MMU=y
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+CONFIG_HARDIRQS_SW_RESEND=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+# CONFIG_ARCH_HAS_ILOG2_U32 is not set
+# CONFIG_ARCH_HAS_ILOG2_U64 is not set
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_VECTORS_BASE=0xffff0000
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+
+#
+# Code maturity level options
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_LOCK_KERNEL=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+
+#
+# General setup
+#
+CONFIG_LOCALVERSION=""
+# CONFIG_LOCALVERSION_AUTO is not set
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=y
+# CONFIG_IPC_NS is not set
+# CONFIG_POSIX_MQUEUE is not set
+# CONFIG_BSD_PROCESS_ACCT is not set
+# CONFIG_TASKSTATS is not set
+# CONFIG_UTS_NS is not set
+# CONFIG_AUDIT is not set
+CONFIG_IKCONFIG=m
+CONFIG_IKCONFIG_PROC=y
+CONFIG_SYSFS_DEPRECATED=y
+# CONFIG_RELAY is not set
+CONFIG_INITRAMFS_SOURCE=""
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_SYSCTL=y
+CONFIG_EMBEDDED=y
+CONFIG_UID16=y
+# CONFIG_SYSCTL_SYSCALL is not set
+# CONFIG_KALLSYMS is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_EPOLL=y
+CONFIG_SHMEM=y
+CONFIG_SLAB=y
+# CONFIG_VM_EVENT_COUNTERS is not set
+CONFIG_RT_MUTEXES=y
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=0
+# CONFIG_SLOB is not set
+
+#
+# Loadable module support
+#
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+# CONFIG_MODULE_FORCE_UNLOAD is not set
+CONFIG_MODVERSIONS=y
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_KMOD=y
+
+#
+# Block layer
+#
+CONFIG_BLOCK=y
+# CONFIG_LBD is not set
+# CONFIG_BLK_DEV_IO_TRACE is not set
+# CONFIG_LSF is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+# CONFIG_IOSCHED_AS is not set
+CONFIG_IOSCHED_DEADLINE=y
+# CONFIG_IOSCHED_CFQ is not set
+# CONFIG_DEFAULT_AS is not set
+CONFIG_DEFAULT_DEADLINE=y
+# CONFIG_DEFAULT_CFQ is not set
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="deadline"
+
+#
+# System Type
+#
+# CONFIG_ARCH_AAEC2000 is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_VERSATILE is not set
+# CONFIG_ARCH_AT91 is not set
+# CONFIG_ARCH_CLPS7500 is not set
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_CO285 is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_EP93XX is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_NETX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IOP13XX is not set
+CONFIG_ARCH_IXP4XX=y
+# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_IXP23XX is not set
+# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_PNX4008 is not set
+# CONFIG_ARCH_PXA is not set
+# CONFIG_ARCH_RPC is not set
+# CONFIG_ARCH_SA1100 is not set
+# CONFIG_ARCH_S3C2410 is not set
+# CONFIG_ARCH_SHARK is not set
+# CONFIG_ARCH_LH7A40X is not set
+# CONFIG_ARCH_OMAP is not set
+CONFIG_ARCH_SUPPORTS_BIG_ENDIAN=y
+
+#
+# Intel IXP4xx Implementation Options
+#
+
+#
+# IXP4xx Platforms
+#
+CONFIG_MACH_NSLU2=y
+CONFIG_MACH_AVILA=y
+CONFIG_MACH_LOFT=y
+# CONFIG_ARCH_ADI_COYOTE is not set
+CONFIG_ARCH_IXDP425=y
+# CONFIG_MACH_IXDPG425 is not set
+# CONFIG_MACH_IXDP465 is not set
+CONFIG_ARCH_IXCDP1100=y
+# CONFIG_ARCH_PRPMC1100 is not set
+CONFIG_MACH_NAS100D=y
+CONFIG_MACH_DSMG600=y
+CONFIG_ARCH_IXDP4XX=y
+CONFIG_MACH_FSG=y
+# CONFIG_MACH_GTWX5715 is not set
+
+#
+# IXP4xx Options
+#
+CONFIG_DMABOUNCE=y
+# CONFIG_IXP4XX_INDIRECT_PCI is not set
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+CONFIG_CPU_XSCALE=y
+CONFIG_CPU_32v5=y
+CONFIG_CPU_ABRT_EV5T=y
+CONFIG_CPU_CACHE_VIVT=y
+CONFIG_CPU_TLB_V4WBI=y
+CONFIG_CPU_CP15=y
+CONFIG_CPU_CP15_MMU=y
+
+#
+# Processor Features
+#
+CONFIG_ARM_THUMB=y
+# CONFIG_CPU_BIG_ENDIAN is not set
+# CONFIG_CPU_DCACHE_DISABLE is not set
+# CONFIG_IWMMXT is not set
+CONFIG_XSCALE_PMU=y
+CONFIG_KEXEC=y
+
+#
+# Bus support
+#
+CONFIG_PCI=y
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+# CONFIG_PCCARD is not set
+
+#
+# Kernel Features
+#
+CONFIG_PREEMPT=y
+# CONFIG_NO_IDLE_HZ is not set
+CONFIG_HZ=100
+CONFIG_AEABI=y
+CONFIG_OABI_COMPAT=y
+# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
+CONFIG_SELECT_MEMORY_MODEL=y
+CONFIG_FLATMEM_MANUAL=y
+# CONFIG_DISCONTIGMEM_MANUAL is not set
+# CONFIG_SPARSEMEM_MANUAL is not set
+CONFIG_FLATMEM=y
+CONFIG_FLAT_NODE_MEM_MAP=y
+# CONFIG_SPARSEMEM_STATIC is not set
+CONFIG_SPLIT_PTLOCK_CPUS=4096
+# CONFIG_RESOURCES_64BIT is not set
+CONFIG_ALIGNMENT_TRAP=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE=" noirqdebug console=ttyS0,115200n8"
+# CONFIG_XIP_KERNEL is not set
+
+#
+# Floating point emulation
+#
+
+#
+# At least one emulation must be selected
+#
+CONFIG_FPE_NWFPE=y
+# CONFIG_FPE_NWFPE_XP is not set
+# CONFIG_FPE_FASTFPE is not set
+
+#
+# Userspace binary formats
+#
+CONFIG_BINFMT_ELF=y
+# CONFIG_BINFMT_AOUT is not set
+# CONFIG_BINFMT_MISC is not set
+
+#
+# Power management options
+#
+# CONFIG_PM is not set
+# CONFIG_APM is not set
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+# CONFIG_NETDEBUG is not set
+CONFIG_PACKET=y
+CONFIG_PACKET_MMAP=y
+CONFIG_UNIX=y
+CONFIG_XFRM=y
+# CONFIG_XFRM_USER is not set
+# CONFIG_XFRM_SUB_POLICY is not set
+# CONFIG_NET_KEY is not set
+CONFIG_INET=y
+# CONFIG_IP_MULTICAST is not set
+# CONFIG_IP_ADVANCED_ROUTER is not set
+CONFIG_IP_FIB_HASH=y
+# CONFIG_IP_PNP is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_ARPD is not set
+# CONFIG_SYN_COOKIES is not set
+CONFIG_INET_AH=m
+CONFIG_INET_ESP=m
+CONFIG_INET_IPCOMP=m
+CONFIG_INET_XFRM_TUNNEL=m
+CONFIG_INET_TUNNEL=m
+CONFIG_INET_XFRM_MODE_TRANSPORT=y
+CONFIG_INET_XFRM_MODE_TUNNEL=y
+CONFIG_INET_XFRM_MODE_BEET=m
+CONFIG_INET_DIAG=y
+CONFIG_INET_TCP_DIAG=y
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_CUBIC=y
+CONFIG_DEFAULT_TCP_CONG="cubic"
+# CONFIG_TCP_MD5SIG is not set
+
+#
+# IP: Virtual Server Configuration
+#
+# CONFIG_IP_VS is not set
+CONFIG_IPV6=m
+# CONFIG_IPV6_PRIVACY is not set
+# CONFIG_IPV6_ROUTER_PREF is not set
+CONFIG_INET6_AH=m
+CONFIG_INET6_ESP=m
+CONFIG_INET6_IPCOMP=m
+# CONFIG_IPV6_MIP6 is not set
+CONFIG_INET6_XFRM_TUNNEL=m
+CONFIG_INET6_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_TRANSPORT=m
+CONFIG_INET6_XFRM_MODE_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_BEET=m
+# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
+CONFIG_IPV6_SIT=m
+CONFIG_IPV6_TUNNEL=m
+# CONFIG_IPV6_MULTIPLE_TABLES is not set
+# CONFIG_NETWORK_SECMARK is not set
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+CONFIG_BRIDGE_NETFILTER=y
+
+#
+# Core Netfilter Configuration
+#
+CONFIG_NETFILTER_NETLINK=m
+CONFIG_NETFILTER_NETLINK_QUEUE=m
+CONFIG_NETFILTER_NETLINK_LOG=m
+CONFIG_NF_CONNTRACK_ENABLED=m
+CONFIG_NF_CONNTRACK_SUPPORT=y
+# CONFIG_IP_NF_CONNTRACK_SUPPORT is not set
+CONFIG_NF_CONNTRACK=m
+CONFIG_NF_CT_ACCT=y
+CONFIG_NF_CONNTRACK_MARK=y
+CONFIG_NF_CONNTRACK_EVENTS=y
+CONFIG_NF_CT_PROTO_GRE=m
+CONFIG_NF_CT_PROTO_SCTP=m
+CONFIG_NF_CONNTRACK_AMANDA=m
+CONFIG_NF_CONNTRACK_FTP=m
+CONFIG_NF_CONNTRACK_H323=m
+CONFIG_NF_CONNTRACK_IRC=m
+CONFIG_NF_CONNTRACK_NETBIOS_NS=m
+CONFIG_NF_CONNTRACK_PPTP=m
+CONFIG_NF_CONNTRACK_SIP=m
+CONFIG_NF_CONNTRACK_TFTP=m
+CONFIG_NF_CT_NETLINK=m
+CONFIG_NETFILTER_XTABLES=m
+CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
+CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
+CONFIG_NETFILTER_XT_TARGET_DSCP=m
+CONFIG_NETFILTER_XT_TARGET_MARK=m
+CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
+CONFIG_NETFILTER_XT_TARGET_NFLOG=m
+CONFIG_NETFILTER_XT_TARGET_NOTRACK=m
+CONFIG_NETFILTER_XT_MATCH_COMMENT=m
+CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
+CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
+CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
+CONFIG_NETFILTER_XT_MATCH_DCCP=m
+CONFIG_NETFILTER_XT_MATCH_DSCP=m
+CONFIG_NETFILTER_XT_MATCH_ESP=m
+CONFIG_NETFILTER_XT_MATCH_HELPER=m
+CONFIG_NETFILTER_XT_MATCH_LENGTH=m
+CONFIG_NETFILTER_XT_MATCH_LIMIT=m
+CONFIG_NETFILTER_XT_MATCH_MAC=m
+CONFIG_NETFILTER_XT_MATCH_MARK=m
+CONFIG_NETFILTER_XT_MATCH_POLICY=m
+CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
+CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m
+CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
+CONFIG_NETFILTER_XT_MATCH_QUOTA=m
+CONFIG_NETFILTER_XT_MATCH_REALM=m
+CONFIG_NETFILTER_XT_MATCH_SCTP=m
+CONFIG_NETFILTER_XT_MATCH_STATE=m
+CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
+CONFIG_NETFILTER_XT_MATCH_STRING=m
+CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
+CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
+
+#
+# IP: Netfilter Configuration
+#
+CONFIG_NF_CONNTRACK_IPV4=m
+CONFIG_NF_CONNTRACK_PROC_COMPAT=y
+# CONFIG_IP_NF_QUEUE is not set
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_MATCH_IPRANGE=m
+CONFIG_IP_NF_MATCH_TOS=m
+CONFIG_IP_NF_MATCH_RECENT=m
+CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_AH=m
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_MATCH_OWNER=m
+CONFIG_IP_NF_MATCH_ADDRTYPE=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_LOG=m
+CONFIG_IP_NF_TARGET_ULOG=m
+CONFIG_IP_NF_TARGET_TCPMSS=m
+CONFIG_NF_NAT=m
+CONFIG_NF_NAT_NEEDED=y
+CONFIG_IP_NF_TARGET_MASQUERADE=m
+CONFIG_IP_NF_TARGET_REDIRECT=m
+CONFIG_IP_NF_TARGET_NETMAP=m
+CONFIG_IP_NF_TARGET_SAME=m
+CONFIG_NF_NAT_SNMP_BASIC=m
+CONFIG_NF_NAT_PROTO_GRE=m
+CONFIG_NF_NAT_FTP=m
+CONFIG_NF_NAT_IRC=m
+CONFIG_NF_NAT_TFTP=m
+CONFIG_NF_NAT_AMANDA=m
+CONFIG_NF_NAT_PPTP=m
+CONFIG_NF_NAT_H323=m
+CONFIG_NF_NAT_SIP=m
+CONFIG_IP_NF_MANGLE=m
+CONFIG_IP_NF_TARGET_TOS=m
+CONFIG_IP_NF_TARGET_ECN=m
+CONFIG_IP_NF_TARGET_TTL=m
+CONFIG_IP_NF_TARGET_CLUSTERIP=m
+CONFIG_IP_NF_RAW=m
+CONFIG_IP_NF_ARPTABLES=m
+CONFIG_IP_NF_ARPFILTER=m
+CONFIG_IP_NF_ARP_MANGLE=m
+
+#
+# IPv6: Netfilter Configuration (EXPERIMENTAL)
+#
+CONFIG_NF_CONNTRACK_IPV6=m
+# CONFIG_IP6_NF_QUEUE is not set
+CONFIG_IP6_NF_IPTABLES=m
+CONFIG_IP6_NF_MATCH_RT=m
+CONFIG_IP6_NF_MATCH_OPTS=m
+CONFIG_IP6_NF_MATCH_FRAG=m
+CONFIG_IP6_NF_MATCH_HL=m
+CONFIG_IP6_NF_MATCH_OWNER=m
+CONFIG_IP6_NF_MATCH_IPV6HEADER=m
+CONFIG_IP6_NF_MATCH_AH=m
+CONFIG_IP6_NF_MATCH_EUI64=m
+CONFIG_IP6_NF_FILTER=m
+CONFIG_IP6_NF_TARGET_LOG=m
+CONFIG_IP6_NF_TARGET_REJECT=m
+CONFIG_IP6_NF_MANGLE=m
+CONFIG_IP6_NF_TARGET_HL=m
+CONFIG_IP6_NF_RAW=m
+
+#
+# Bridge: Netfilter Configuration
+#
+CONFIG_BRIDGE_NF_EBTABLES=m
+CONFIG_BRIDGE_EBT_BROUTE=m
+CONFIG_BRIDGE_EBT_T_FILTER=m
+CONFIG_BRIDGE_EBT_T_NAT=m
+CONFIG_BRIDGE_EBT_802_3=m
+CONFIG_BRIDGE_EBT_AMONG=m
+CONFIG_BRIDGE_EBT_ARP=m
+CONFIG_BRIDGE_EBT_IP=m
+CONFIG_BRIDGE_EBT_LIMIT=m
+CONFIG_BRIDGE_EBT_MARK=m
+CONFIG_BRIDGE_EBT_PKTTYPE=m
+CONFIG_BRIDGE_EBT_STP=m
+CONFIG_BRIDGE_EBT_VLAN=m
+CONFIG_BRIDGE_EBT_ARPREPLY=m
+CONFIG_BRIDGE_EBT_DNAT=m
+CONFIG_BRIDGE_EBT_MARK_T=m
+CONFIG_BRIDGE_EBT_REDIRECT=m
+CONFIG_BRIDGE_EBT_SNAT=m
+CONFIG_BRIDGE_EBT_LOG=m
+CONFIG_BRIDGE_EBT_ULOG=m
+
+#
+# DCCP Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_DCCP is not set
+
+#
+# SCTP Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_SCTP is not set
+
+#
+# TIPC Configuration (EXPERIMENTAL)
+#
+CONFIG_TIPC=m
+# CONFIG_TIPC_ADVANCED is not set
+# CONFIG_TIPC_DEBUG is not set
+# CONFIG_ATM is not set
+CONFIG_BRIDGE=m
+CONFIG_VLAN_8021Q=m
+# CONFIG_DECNET is not set
+CONFIG_LLC=m
+# CONFIG_LLC2 is not set
+CONFIG_IPX=m
+# CONFIG_IPX_INTERN is not set
+CONFIG_ATALK=m
+CONFIG_DEV_APPLETALK=m
+CONFIG_IPDDP=m
+CONFIG_IPDDP_ENCAP=y
+CONFIG_IPDDP_DECAP=y
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_ECONET is not set
+# CONFIG_WAN_ROUTER is not set
+
+#
+# QoS and/or fair queueing
+#
+# CONFIG_NET_SCHED is not set
+CONFIG_NET_CLS_ROUTE=y
+
+#
+# Network testing
+#
+CONFIG_NET_PKTGEN=m
+# CONFIG_HAMRADIO is not set
+# CONFIG_IRDA is not set
+CONFIG_BT=m
+CONFIG_BT_L2CAP=m
+CONFIG_BT_SCO=m
+CONFIG_BT_RFCOMM=m
+CONFIG_BT_RFCOMM_TTY=y
+CONFIG_BT_BNEP=m
+CONFIG_BT_BNEP_MC_FILTER=y
+CONFIG_BT_BNEP_PROTO_FILTER=y
+CONFIG_BT_HIDP=m
+
+#
+# Bluetooth device drivers
+#
+CONFIG_BT_HCIUSB=m
+CONFIG_BT_HCIUSB_SCO=y
+CONFIG_BT_HCIUART=m
+CONFIG_BT_HCIUART_H4=y
+CONFIG_BT_HCIUART_BCSP=y
+CONFIG_BT_HCIBCM203X=m
+# CONFIG_BT_HCIBPA10X is not set
+# CONFIG_BT_HCIBFUSB is not set
+CONFIG_BT_HCIVHCI=m
+CONFIG_IEEE80211=m
+# CONFIG_IEEE80211_DEBUG is not set
+CONFIG_IEEE80211_CRYPT_WEP=m
+CONFIG_IEEE80211_CRYPT_CCMP=m
+CONFIG_IEEE80211_CRYPT_TKIP=m
+CONFIG_IEEE80211_SOFTMAC=m
+# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
+CONFIG_WIRELESS_EXT=y
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=y
+# CONFIG_SYS_HYPERVISOR is not set
+
+#
+# Connector - unified userspace <-> kernelspace linker
+#
+# CONFIG_CONNECTOR is not set
+
+#
+# Memory Technology Devices (MTD)
+#
+CONFIG_MTD=y
+# CONFIG_MTD_DEBUG is not set
+CONFIG_MTD_CONCAT=y
+CONFIG_MTD_PARTITIONS=y
+CONFIG_MTD_REDBOOT_PARTS=y
+CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1
+CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED=y
+# CONFIG_MTD_REDBOOT_PARTS_READONLY is not set
+# CONFIG_MTD_CMDLINE_PARTS is not set
+# CONFIG_MTD_AFS_PARTS is not set
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=y
+CONFIG_MTD_BLKDEVS=y
+CONFIG_MTD_BLOCK=y
+# CONFIG_FTL is not set
+CONFIG_NFTL=y
+CONFIG_NFTL_RW=y
+# CONFIG_INFTL is not set
+# CONFIG_RFD_FTL is not set
+# CONFIG_SSFDC is not set
+
+#
+# RAM/ROM/Flash chip drivers
+#
+CONFIG_MTD_CFI=y
+# CONFIG_MTD_JEDECPROBE is not set
+CONFIG_MTD_GEN_PROBE=y
+CONFIG_MTD_CFI_ADV_OPTIONS=y
+# CONFIG_MTD_CFI_NOSWAP is not set
+CONFIG_MTD_CFI_BE_BYTE_SWAP=y
+# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
+CONFIG_MTD_CFI_GEOMETRY=y
+# CONFIG_MTD_MAP_BANK_WIDTH_1 is not set
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+# CONFIG_MTD_MAP_BANK_WIDTH_4 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
+CONFIG_MTD_CFI_I1=y
+CONFIG_MTD_CFI_I2=y
+# CONFIG_MTD_CFI_I4 is not set
+# CONFIG_MTD_CFI_I8 is not set
+# CONFIG_MTD_OTP is not set
+CONFIG_MTD_CFI_INTELEXT=y
+# CONFIG_MTD_CFI_AMDSTD is not set
+# CONFIG_MTD_CFI_STAA is not set
+CONFIG_MTD_CFI_UTIL=y
+# CONFIG_MTD_RAM is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+# CONFIG_MTD_OBSOLETE_CHIPS is not set
+
+#
+# Mapping drivers for chip access
+#
+CONFIG_MTD_COMPLEX_MAPPINGS=y
+# CONFIG_MTD_PHYSMAP is not set
+# CONFIG_MTD_ARM_INTEGRATOR is not set
+CONFIG_MTD_IXP4XX=y
+# CONFIG_MTD_PCI is not set
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_PMC551 is not set
+# CONFIG_MTD_SLRAM is not set
+# CONFIG_MTD_PHRAM is not set
+# CONFIG_MTD_MTDRAM is not set
+# CONFIG_MTD_BLOCK2MTD is not set
+
+#
+# Disk-On-Chip Device Drivers
+#
+# CONFIG_MTD_DOC2000 is not set
+# CONFIG_MTD_DOC2001 is not set
+# CONFIG_MTD_DOC2001PLUS is not set
+
+#
+# NAND Flash Device Drivers
+#
+# CONFIG_MTD_NAND is not set
+# CONFIG_MTD_NAND_CAFE is not set
+
+#
+# OneNAND Flash Device Drivers
+#
+# CONFIG_MTD_ONENAND is not set
+
+#
+# Parallel port support
+#
+# CONFIG_PARPORT is not set
+
+#
+# Plug and Play support
+#
+
+#
+# Block devices
+#
+# CONFIG_BLK_CPQ_DA is not set
+# CONFIG_BLK_CPQ_CISS_DA is not set
+# CONFIG_BLK_DEV_DAC960 is not set
+# CONFIG_BLK_DEV_UMEM is not set
+# CONFIG_BLK_DEV_COW_COMMON is not set
+CONFIG_BLK_DEV_LOOP=m
+# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+CONFIG_BLK_DEV_NBD=m
+# CONFIG_BLK_DEV_SX8 is not set
+# CONFIG_BLK_DEV_UB is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=4
+CONFIG_BLK_DEV_RAM_SIZE=10240
+CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
+# CONFIG_BLK_DEV_INITRD is not set
+CONFIG_CDROM_PKTCDVD=m
+CONFIG_CDROM_PKTCDVD_BUFFERS=8
+# CONFIG_CDROM_PKTCDVD_WCACHE is not set
+CONFIG_ATA_OVER_ETH=m
+
+#
+# ATA/ATAPI/MFM/RLL support
+#
+# CONFIG_IDE is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+CONFIG_SCSI=y
+# CONFIG_SCSI_TGT is not set
+# CONFIG_SCSI_NETLINK is not set
+CONFIG_SCSI_PROC_FS=y
+
+#
+# SCSI support type (disk, tape, CD-ROM)
+#
+CONFIG_BLK_DEV_SD=y
+CONFIG_CHR_DEV_ST=m
+# CONFIG_CHR_DEV_OSST is not set
+CONFIG_BLK_DEV_SR=m
+# CONFIG_BLK_DEV_SR_VENDOR is not set
+CONFIG_CHR_DEV_SG=m
+# CONFIG_CHR_DEV_SCH is not set
+
+#
+# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
+#
+CONFIG_SCSI_MULTI_LUN=y
+# CONFIG_SCSI_CONSTANTS is not set
+# CONFIG_SCSI_LOGGING is not set
+# CONFIG_SCSI_SCAN_ASYNC is not set
+
+#
+# SCSI Transports
+#
+# CONFIG_SCSI_SPI_ATTRS is not set
+# CONFIG_SCSI_FC_ATTRS is not set
+CONFIG_SCSI_ISCSI_ATTRS=m
+# CONFIG_SCSI_SAS_ATTRS is not set
+# CONFIG_SCSI_SAS_LIBSAS is not set
+
+#
+# SCSI low-level drivers
+#
+CONFIG_ISCSI_TCP=m
+# 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_DMX3191D is not set
+# CONFIG_SCSI_FUTURE_DOMAIN 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_IPR 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
+
+#
+# Serial ATA (prod) and Parallel ATA (experimental) drivers
+#
+CONFIG_ATA=m
+# CONFIG_ATA_NONSTANDARD is not set
+# CONFIG_SATA_AHCI is not set
+# CONFIG_SATA_SVW is not set
+# CONFIG_ATA_PIIX is not set
+# CONFIG_SATA_MV is not set
+# CONFIG_SATA_NV is not set
+# CONFIG_PDC_ADMA is not set
+# CONFIG_SATA_QSTOR is not set
+# CONFIG_SATA_PROMISE is not set
+# CONFIG_SATA_SX4 is not set
+# CONFIG_SATA_SIL is not set
+# CONFIG_SATA_SIL24 is not set
+# CONFIG_SATA_SIS is not set
+# CONFIG_SATA_ULI is not set
+CONFIG_SATA_VIA=m
+# CONFIG_SATA_VITESSE is not set
+# CONFIG_PATA_ALI is not set
+# CONFIG_PATA_AMD is not set
+CONFIG_PATA_ARTOP=m
+# CONFIG_PATA_ATIIXP is not set
+# CONFIG_PATA_CMD64X is not set
+# CONFIG_PATA_CS5520 is not set
+# CONFIG_PATA_CS5530 is not set
+# CONFIG_PATA_CYPRESS is not set
+# CONFIG_PATA_EFAR is not set
+# CONFIG_ATA_GENERIC is not set
+# CONFIG_PATA_HPT366 is not set
+# CONFIG_PATA_HPT37X is not set
+# CONFIG_PATA_HPT3X2N is not set
+# CONFIG_PATA_HPT3X3 is not set
+# CONFIG_PATA_IT821X is not set
+# CONFIG_PATA_JMICRON is not set
+# CONFIG_PATA_TRIFLEX is not set
+# CONFIG_PATA_MARVELL is not set
+# CONFIG_PATA_MPIIX is not set
+# CONFIG_PATA_OLDPIIX is not set
+# CONFIG_PATA_NETCELL is not set
+# CONFIG_PATA_NS87410 is not set
+# CONFIG_PATA_OPTI is not set
+# CONFIG_PATA_OPTIDMA is not set
+# CONFIG_PATA_PDC_OLD is not set
+# CONFIG_PATA_RADISYS is not set
+# CONFIG_PATA_RZ1000 is not set
+# CONFIG_PATA_SC1200 is not set
+# CONFIG_PATA_SERVERWORKS is not set
+# CONFIG_PATA_PDC2027X is not set
+# CONFIG_PATA_SIL680 is not set
+# CONFIG_PATA_SIS is not set
+# CONFIG_PATA_VIA is not set
+# CONFIG_PATA_WINBOND is not set
+# CONFIG_PATA_PLATFORM is not set
+CONFIG_PATA_IXP4XX_CF=m
+
+#
+# Multi-device support (RAID and LVM)
+#
+CONFIG_MD=y
+CONFIG_BLK_DEV_MD=m
+CONFIG_MD_LINEAR=m
+CONFIG_MD_RAID0=m
+CONFIG_MD_RAID1=m
+CONFIG_MD_RAID10=m
+CONFIG_MD_RAID456=m
+CONFIG_MD_RAID5_RESHAPE=y
+CONFIG_MD_MULTIPATH=m
+CONFIG_MD_FAULTY=m
+CONFIG_BLK_DEV_DM=m
+# CONFIG_DM_DEBUG is not set
+# CONFIG_DM_CRYPT is not set
+# CONFIG_DM_SNAPSHOT is not set
+# CONFIG_DM_MIRROR is not set
+# CONFIG_DM_ZERO is not set
+# CONFIG_DM_MULTIPATH is not set
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+# CONFIG_FUSION_SPI is not set
+# CONFIG_FUSION_FC is not set
+# CONFIG_FUSION_SAS is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+# CONFIG_IEEE1394 is not set
+
+#
+# I2O device support
+#
+# CONFIG_I2O is not set
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+CONFIG_TUN=m
+
+#
+# ARCnet devices
+#
+# CONFIG_ARCNET is not set
+
+#
+# PHY device support
+#
+# CONFIG_PHYLIB is not set
+
+#
+# Ethernet (10 or 100Mbit)
+#
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=y
+CONFIG_IXP4XX_QMGR=y
+CONFIG_IXP4XX_NPE=y
+CONFIG_IXP4XX_NPE_FW_LOAD=y
+CONFIG_IXP4XX_NPE_FW_MTD=y
+CONFIG_IXP4XX_MAC=y
+CONFIG_IXP4XX_CRYPTO=m
+# CONFIG_HAPPYMEAL is not set
+# CONFIG_SUNGEM is not set
+# CONFIG_CASSINI is not set
+# CONFIG_NET_VENDOR_3COM is not set
+# CONFIG_SMC91X is not set
+# CONFIG_DM9000 is not set
+
+#
+# Tulip family network device support
+#
+# 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 is not set
+# 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
+
+#
+# Ethernet (1000 Mbit)
+#
+# CONFIG_ACENIC is not set
+# CONFIG_DL2K is not set
+# CONFIG_E1000 is not set
+# CONFIG_NS83820 is not set
+# CONFIG_HAMACHI is not set
+# CONFIG_YELLOWFIN is not set
+CONFIG_R8169=m
+# CONFIG_R8169_NAPI is not set
+CONFIG_R8169_VLAN=y
+# CONFIG_SIS190 is not set
+# CONFIG_SKGE is not set
+# CONFIG_SKY2 is not set
+# CONFIG_SK98LIN is not set
+CONFIG_VIA_VELOCITY=m
+# CONFIG_TIGON3 is not set
+# CONFIG_BNX2 is not set
+# CONFIG_QLA3XXX is not set
+
+#
+# Ethernet (10000 Mbit)
+#
+# CONFIG_CHELSIO_T1 is not set
+# CONFIG_IXGB is not set
+# CONFIG_S2IO is not set
+# CONFIG_MYRI10GE is not set
+# CONFIG_NETXEN_NIC is not set
+
+#
+# Token Ring devices
+#
+# CONFIG_TR is not set
+
+#
+# Wireless LAN (non-hamradio)
+#
+CONFIG_NET_RADIO=y
+# CONFIG_NET_WIRELESS_RTNETLINK is not set
+
+#
+# Obsolete Wireless cards support (pre-802.11)
+#
+# CONFIG_STRIP is not set
+
+#
+# Wireless 802.11b ISA/PCI cards support
+#
+# CONFIG_IPW2100 is not set
+# CONFIG_IPW2200 is not set
+# CONFIG_HERMES is not set
+# CONFIG_ATMEL is not set
+
+#
+# Prism GT/Duette 802.11(a/b/g) PCI/Cardbus support
+#
+# CONFIG_PRISM54 is not set
+# CONFIG_USB_ZD1201 is not set
+# CONFIG_HOSTAP is not set
+# CONFIG_BCM43XX is not set
+CONFIG_ZD1211RW=m
+# CONFIG_ZD1211RW_DEBUG is not set
+CONFIG_NET_WIRELESS=y
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+# CONFIG_FDDI is not set
+# CONFIG_HIPPI is not set
+CONFIG_PPP=m
+# CONFIG_PPP_MULTILINK is not set
+CONFIG_PPP_FILTER=y
+CONFIG_PPP_ASYNC=m
+CONFIG_PPP_SYNC_TTY=m
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+CONFIG_PPP_MPPE=m
+CONFIG_PPPOE=m
+# CONFIG_SLIP is not set
+CONFIG_SLHC=m
+# CONFIG_NET_FC is not set
+# CONFIG_SHAPER is not set
+CONFIG_NETCONSOLE=m
+CONFIG_NETPOLL=y
+# CONFIG_NETPOLL_RX is not set
+# CONFIG_NETPOLL_TRAP is not set
+CONFIG_NET_POLL_CONTROLLER=y
+
+#
+# ISDN subsystem
+#
+# CONFIG_ISDN is not set
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS is not set
+
+#
+# Userland interfaces
+#
+# CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_TSDEV is not set
+CONFIG_INPUT_EVDEV=y
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# Input Device Drivers
+#
+# CONFIG_INPUT_KEYBOARD is not set
+# CONFIG_INPUT_MOUSE is not set
+# CONFIG_INPUT_JOYSTICK is not set
+# CONFIG_INPUT_TOUCHSCREEN is not set
+CONFIG_INPUT_MISC=y
+CONFIG_INPUT_IXP4XX_BEEPER=y
+CONFIG_INPUT_UINPUT=m
+
+#
+# Hardware I/O ports
+#
+# CONFIG_SERIO is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+# CONFIG_VT is not set
+CONFIG_SERIAL_NONSTANDARD=y
+# CONFIG_COMPUTONE is not set
+# CONFIG_ROCKETPORT is not set
+# CONFIG_CYCLADES is not set
+# CONFIG_DIGIEPCA is not set
+# CONFIG_MOXA_INTELLIO is not set
+# CONFIG_MOXA_SMARTIO is not set
+# CONFIG_MOXA_SMARTIO_NEW is not set
+# CONFIG_ISI is not set
+# CONFIG_SYNCLINKMP is not set
+# CONFIG_SYNCLINK_GT is not set
+CONFIG_N_HDLC=m
+# CONFIG_RISCOM8 is not set
+# CONFIG_SPECIALIX is not set
+# CONFIG_SX is not set
+# CONFIG_RIO is not set
+# CONFIG_STALDRV is not set
+
+#
+# Serial drivers
+#
+CONFIG_SERIAL_8250=y
+CONFIG_SERIAL_8250_CONSOLE=y
+CONFIG_SERIAL_8250_PCI=m
+CONFIG_SERIAL_8250_NR_UARTS=2
+CONFIG_SERIAL_8250_RUNTIME_UARTS=2
+# CONFIG_SERIAL_8250_EXTENDED is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+# CONFIG_SERIAL_JSM is not set
+CONFIG_UNIX98_PTYS=y
+# CONFIG_LEGACY_PTYS is not set
+
+#
+# IPMI
+#
+# CONFIG_IPMI_HANDLER is not set
+
+#
+# Watchdog Cards
+#
+CONFIG_WATCHDOG=y
+# CONFIG_WATCHDOG_NOWAYOUT is not set
+
+#
+# Watchdog Device Drivers
+#
+# CONFIG_SOFT_WATCHDOG is not set
+CONFIG_IXP4XX_WATCHDOG=m
+
+#
+# PCI-based Watchdog Cards
+#
+# CONFIG_PCIPCWATCHDOG is not set
+# CONFIG_WDTPCI is not set
+
+#
+# USB-based Watchdog Cards
+#
+# CONFIG_USBPCWATCHDOG is not set
+CONFIG_HW_RANDOM=y
+CONFIG_HW_RANDOM_IXP4XX=y
+# CONFIG_NVRAM is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+# CONFIG_APPLICOM is not set
+# CONFIG_DRM is not set
+# CONFIG_RAW_DRIVER is not set
+
+#
+# TPM devices
+#
+# CONFIG_TCG_TPM is not set
+
+#
+# I2C support
+#
+CONFIG_I2C=y
+CONFIG_I2C_CHARDEV=y
+
+#
+# I2C Algorithms
+#
+CONFIG_I2C_ALGOBIT=y
+# CONFIG_I2C_ALGOPCF is not set
+# CONFIG_I2C_ALGOPCA is not set
+
+#
+# I2C Hardware Bus support
+#
+# CONFIG_I2C_ALI1535 is not set
+# CONFIG_I2C_ALI1563 is not set
+# CONFIG_I2C_ALI15X3 is not set
+# CONFIG_I2C_AMD756 is not set
+# CONFIG_I2C_AMD8111 is not set
+# CONFIG_I2C_I801 is not set
+# CONFIG_I2C_I810 is not set
+# CONFIG_I2C_PIIX4 is not set
+# CONFIG_I2C_IOP3XX is not set
+CONFIG_I2C_ISA=m
+CONFIG_I2C_IXP4XX=y
+# CONFIG_I2C_NFORCE2 is not set
+# CONFIG_I2C_OCORES is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_PROSAVAGE is not set
+# CONFIG_I2C_SAVAGE4 is not set
+# CONFIG_I2C_SIS5595 is not set
+# CONFIG_I2C_SIS630 is not set
+# CONFIG_I2C_SIS96X is not set
+# CONFIG_I2C_STUB is not set
+# CONFIG_I2C_VIA is not set
+# CONFIG_I2C_VIAPRO is not set
+# CONFIG_I2C_VOODOO3 is not set
+# CONFIG_I2C_PCA_ISA is not set
+
+#
+# Miscellaneous I2C Chip support
+#
+# CONFIG_SENSORS_DS1337 is not set
+# CONFIG_SENSORS_DS1374 is not set
+CONFIG_SENSORS_EEPROM=y
+CONFIG_SENSORS_PCF8574=m
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_SENSORS_MAX6875 is not set
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CHIP is not set
+
+#
+# SPI support
+#
+# CONFIG_SPI is not set
+# CONFIG_SPI_MASTER is not set
+
+#
+# Dallas's 1-wire bus
+#
+CONFIG_W1=m
+
+#
+# 1-wire Bus Masters
+#
+# CONFIG_W1_MASTER_MATROX is not set
+CONFIG_W1_MASTER_DS2490=m
+CONFIG_W1_MASTER_DS2482=m
+
+#
+# 1-wire Slaves
+#
+CONFIG_W1_SLAVE_THERM=m
+CONFIG_W1_SLAVE_SMEM=m
+CONFIG_W1_SLAVE_DS2433=m
+CONFIG_W1_SLAVE_DS2433_CRC=y
+
+#
+# Hardware Monitoring support
+#
+CONFIG_HWMON=m
+CONFIG_HWMON_VID=m
+# CONFIG_SENSORS_ABITUGURU is not set
+# CONFIG_SENSORS_ADM1021 is not set
+# CONFIG_SENSORS_ADM1025 is not set
+# CONFIG_SENSORS_ADM1026 is not set
+# CONFIG_SENSORS_ADM1031 is not set
+# CONFIG_SENSORS_ADM9240 is not set
+# CONFIG_SENSORS_ASB100 is not set
+# CONFIG_SENSORS_ATXP1 is not set
+# CONFIG_SENSORS_DS1621 is not set
+# CONFIG_SENSORS_F71805F is not set
+# CONFIG_SENSORS_FSCHER is not set
+# CONFIG_SENSORS_FSCPOS is not set
+# CONFIG_SENSORS_GL518SM is not set
+# CONFIG_SENSORS_GL520SM is not set
+# CONFIG_SENSORS_IT87 is not set
+# CONFIG_SENSORS_LM63 is not set
+# CONFIG_SENSORS_LM75 is not set
+# CONFIG_SENSORS_LM77 is not set
+# CONFIG_SENSORS_LM78 is not set
+# CONFIG_SENSORS_LM80 is not set
+# CONFIG_SENSORS_LM83 is not set
+# CONFIG_SENSORS_LM85 is not set
+# CONFIG_SENSORS_LM87 is not set
+# CONFIG_SENSORS_LM90 is not set
+# CONFIG_SENSORS_LM92 is not set
+# CONFIG_SENSORS_MAX1619 is not set
+# CONFIG_SENSORS_PC87360 is not set
+# CONFIG_SENSORS_PC87427 is not set
+# CONFIG_SENSORS_SIS5595 is not set
+# CONFIG_SENSORS_SMSC47M1 is not set
+# CONFIG_SENSORS_SMSC47M192 is not set
+# CONFIG_SENSORS_SMSC47B397 is not set
+# CONFIG_SENSORS_VIA686A is not set
+# CONFIG_SENSORS_VT1211 is not set
+# CONFIG_SENSORS_VT8231 is not set
+CONFIG_SENSORS_W83781D=m
+# CONFIG_SENSORS_W83791D is not set
+# CONFIG_SENSORS_W83792D is not set
+# CONFIG_SENSORS_W83793 is not set
+# CONFIG_SENSORS_W83L785TS is not set
+# CONFIG_SENSORS_W83627HF is not set
+# CONFIG_SENSORS_W83627EHF is not set
+CONFIG_SENSORS_AD7418=m
+# CONFIG_HWMON_DEBUG_CHIP is not set
+
+#
+# Misc devices
+#
+# CONFIG_SGI_IOC4 is not set
+# CONFIG_TIFM_CORE is not set
+
+#
+# LED devices
+#
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+
+#
+# LED drivers
+#
+CONFIG_LEDS_IXP4XX=y
+
+#
+# LED Triggers
+#
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=y
+CONFIG_LEDS_TRIGGER_HEARTBEAT=y
+CONFIG_LEDS_TRIGGER_CPU_ACTIVITY=y
+
+#
+# Multimedia devices
+#
+CONFIG_VIDEO_DEV=m
+CONFIG_VIDEO_V4L1=y
+CONFIG_VIDEO_V4L1_COMPAT=y
+CONFIG_VIDEO_V4L2=y
+
+#
+# Video Capture Adapters
+#
+
+#
+# Video Capture Adapters
+#
+# CONFIG_VIDEO_ADV_DEBUG is not set
+CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
+CONFIG_VIDEO_TDA9840=m
+CONFIG_VIDEO_TEA6415C=m
+CONFIG_VIDEO_TEA6420=m
+CONFIG_VIDEO_BT819=m
+CONFIG_VIDEO_BT856=m
+CONFIG_VIDEO_SAA7110=m
+CONFIG_VIDEO_SAA7111=m
+CONFIG_VIDEO_SAA7114=m
+CONFIG_VIDEO_VPX3220=m
+CONFIG_VIDEO_SAA7185=m
+CONFIG_VIDEO_ADV7170=m
+CONFIG_VIDEO_ADV7175=m
+CONFIG_VIDEO_VIVI=m
+# CONFIG_VIDEO_BT848 is not set
+CONFIG_VIDEO_CPIA=m
+CONFIG_VIDEO_CPIA_USB=m
+CONFIG_VIDEO_CPIA2=m
+CONFIG_VIDEO_SAA5246A=m
+CONFIG_VIDEO_SAA5249=m
+CONFIG_TUNER_3036=m
+CONFIG_VIDEO_STRADIS=m
+CONFIG_VIDEO_ZORAN_ZR36060=m
+CONFIG_VIDEO_ZORAN=m
+CONFIG_VIDEO_ZORAN_BUZ=m
+CONFIG_VIDEO_ZORAN_DC10=m
+CONFIG_VIDEO_ZORAN_DC30=m
+CONFIG_VIDEO_ZORAN_LML33=m
+CONFIG_VIDEO_ZORAN_LML33R10=m
+# CONFIG_VIDEO_ZORAN_AVS6EYES is not set
+CONFIG_VIDEO_SAA7134=m
+# CONFIG_VIDEO_SAA7134_ALSA is not set
+CONFIG_VIDEO_MXB=m
+CONFIG_VIDEO_DPC=m
+CONFIG_VIDEO_HEXIUM_ORION=m
+CONFIG_VIDEO_HEXIUM_GEMINI=m
+CONFIG_VIDEO_CX88=m
+CONFIG_VIDEO_CX88_ALSA=m
+# CONFIG_VIDEO_CX88_BLACKBIRD is not set
+# CONFIG_VIDEO_CAFE_CCIC is not set
+
+#
+# V4L USB devices
+#
+# CONFIG_VIDEO_PVRUSB2 is not set
+# CONFIG_VIDEO_EM28XX is not set
+# CONFIG_VIDEO_USBVISION is not set
+# CONFIG_USB_VICAM is not set
+# CONFIG_USB_IBMCAM is not set
+# CONFIG_USB_KONICAWC is not set
+# CONFIG_USB_QUICKCAM_MESSENGER is not set
+# CONFIG_USB_ET61X251 is not set
+CONFIG_VIDEO_OVCAMCHIP=m
+# CONFIG_USB_W9968CF is not set
+# CONFIG_USB_OV511 is not set
+# CONFIG_USB_SE401 is not set
+# CONFIG_USB_SN9C102 is not set
+# CONFIG_USB_STV680 is not set
+# CONFIG_USB_ZC0301 is not set
+CONFIG_USB_PWC=m
+# CONFIG_USB_PWC_DEBUG is not set
+
+#
+# Radio Adapters
+#
+# CONFIG_RADIO_GEMTEK_PCI is not set
+# CONFIG_RADIO_MAXIRADIO is not set
+# CONFIG_RADIO_MAESTRO is not set
+# CONFIG_USB_DSBR is not set
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB is not set
+CONFIG_VIDEO_SAA7146=m
+CONFIG_VIDEO_SAA7146_VV=m
+CONFIG_VIDEO_VIDEOBUF=m
+CONFIG_VIDEO_TUNER=m
+CONFIG_VIDEO_BUF=m
+CONFIG_VIDEO_BTCX=m
+CONFIG_VIDEO_IR=m
+CONFIG_VIDEO_TVEEPROM=m
+# CONFIG_USB_DABUSB is not set
+
+#
+# Graphics support
+#
+# CONFIG_FIRMWARE_EDID is not set
+# CONFIG_FB is not set
+# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
+
+#
+# Sound
+#
+CONFIG_SOUND=m
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=m
+CONFIG_SND_TIMER=m
+CONFIG_SND_PCM=m
+CONFIG_SND_HWDEP=m
+CONFIG_SND_RAWMIDI=m
+# CONFIG_SND_SEQUENCER is not set
+CONFIG_SND_OSSEMUL=y
+CONFIG_SND_MIXER_OSS=m
+CONFIG_SND_PCM_OSS=m
+CONFIG_SND_PCM_OSS_PLUGINS=y
+# CONFIG_SND_DYNAMIC_MINORS is not set
+CONFIG_SND_SUPPORT_OLD_API=y
+CONFIG_SND_VERBOSE_PROCFS=y
+# CONFIG_SND_VERBOSE_PRINTK is not set
+# CONFIG_SND_DEBUG is not set
+
+#
+# Generic devices
+#
+# CONFIG_SND_DUMMY is not set
+# CONFIG_SND_MTPAV is not set
+# CONFIG_SND_SERIAL_U16550 is not set
+# CONFIG_SND_MPU401 is not set
+
+#
+# PCI devices
+#
+# CONFIG_SND_AD1889 is not set
+# CONFIG_SND_ALS300 is not set
+# CONFIG_SND_ALI5451 is not set
+# CONFIG_SND_ATIIXP is not set
+# CONFIG_SND_ATIIXP_MODEM is not set
+# CONFIG_SND_AU8810 is not set
+# CONFIG_SND_AU8820 is not set
+# CONFIG_SND_AU8830 is not set
+# CONFIG_SND_AZT3328 is not set
+# CONFIG_SND_BT87X is not set
+# CONFIG_SND_CA0106 is not set
+# CONFIG_SND_CMIPCI is not set
+# CONFIG_SND_CS4281 is not set
+# CONFIG_SND_CS46XX is not set
+# CONFIG_SND_DARLA20 is not set
+# CONFIG_SND_GINA20 is not set
+# CONFIG_SND_LAYLA20 is not set
+# CONFIG_SND_DARLA24 is not set
+# CONFIG_SND_GINA24 is not set
+# CONFIG_SND_LAYLA24 is not set
+# CONFIG_SND_MONA is not set
+# CONFIG_SND_MIA is not set
+# CONFIG_SND_ECHO3G is not set
+# CONFIG_SND_INDIGO is not set
+# CONFIG_SND_INDIGOIO is not set
+# CONFIG_SND_INDIGODJ is not set
+# CONFIG_SND_EMU10K1 is not set
+# CONFIG_SND_EMU10K1X is not set
+# CONFIG_SND_ENS1370 is not set
+# CONFIG_SND_ENS1371 is not set
+# CONFIG_SND_ES1938 is not set
+# CONFIG_SND_ES1968 is not set
+# CONFIG_SND_FM801 is not set
+# CONFIG_SND_HDA_INTEL is not set
+# CONFIG_SND_HDSP is not set
+# CONFIG_SND_HDSPM is not set
+# CONFIG_SND_ICE1712 is not set
+# CONFIG_SND_ICE1724 is not set
+# CONFIG_SND_INTEL8X0 is not set
+# CONFIG_SND_INTEL8X0M is not set
+# CONFIG_SND_KORG1212 is not set
+# CONFIG_SND_MAESTRO3 is not set
+# CONFIG_SND_MIXART is not set
+# CONFIG_SND_NM256 is not set
+# CONFIG_SND_PCXHR is not set
+# CONFIG_SND_RIPTIDE is not set
+# CONFIG_SND_RME32 is not set
+# CONFIG_SND_RME96 is not set
+# CONFIG_SND_RME9652 is not set
+# CONFIG_SND_SONICVIBES is not set
+# CONFIG_SND_TRIDENT is not set
+# CONFIG_SND_VIA82XX is not set
+# CONFIG_SND_VIA82XX_MODEM is not set
+# CONFIG_SND_VX222 is not set
+# CONFIG_SND_YMFPCI is not set
+
+#
+# ALSA ARM devices
+#
+
+#
+# USB devices
+#
+CONFIG_SND_USB_AUDIO=m
+
+#
+# Open Sound System
+#
+# CONFIG_SOUND_PRIME is not set
+
+#
+# HID Devices
+#
+CONFIG_HID=m
+
+#
+# USB support
+#
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB_ARCH_HAS_OHCI=y
+CONFIG_USB_ARCH_HAS_EHCI=y
+CONFIG_USB=y
+# CONFIG_USB_DEBUG is not set
+
+#
+# Miscellaneous USB options
+#
+CONFIG_USB_DEVICEFS=y
+# CONFIG_USB_BANDWIDTH is not set
+# CONFIG_USB_DYNAMIC_MINORS is not set
+# CONFIG_USB_OTG is not set
+
+#
+# USB Host Controller Drivers
+#
+CONFIG_USB_EHCI_HCD=y
+CONFIG_USB_EHCI_SPLIT_ISO=y
+CONFIG_USB_EHCI_ROOT_HUB_TT=y
+CONFIG_USB_EHCI_TT_NEWSCHED=y
+# CONFIG_USB_ISP116X_HCD is not set
+CONFIG_USB_OHCI_HCD=m
+# CONFIG_USB_OHCI_BIG_ENDIAN is not set
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+CONFIG_USB_UHCI_HCD=m
+# CONFIG_USB_U132_HCD is not set
+# CONFIG_USB_SL811_HCD is not set
+
+#
+# USB Device Class drivers
+#
+CONFIG_USB_ACM=m
+CONFIG_USB_PRINTER=m
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# may also be needed; see USB_STORAGE Help for more information
+#
+CONFIG_USB_STORAGE=y
+# CONFIG_USB_STORAGE_DEBUG is not set
+# CONFIG_USB_STORAGE_DATAFAB is not set
+# CONFIG_USB_STORAGE_FREECOM is not set
+# CONFIG_USB_STORAGE_DPCM is not set
+# CONFIG_USB_STORAGE_USBAT is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_SDDR55 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+# CONFIG_USB_STORAGE_ALAUDA is not set
+CONFIG_USB_STORAGE_ONETOUCH=y
+CONFIG_USB_STORAGE_KARMA=y
+# CONFIG_USB_LIBUSUAL is not set
+
+#
+# USB Input Devices
+#
+CONFIG_USB_HID=m
+# CONFIG_USB_HIDINPUT_POWERBOOK is not set
+# CONFIG_HID_FF is not set
+CONFIG_USB_HIDDEV=y
+
+#
+# USB HID Boot Protocol drivers
+#
+CONFIG_USB_KBD=m
+# CONFIG_USB_MOUSE is not set
+# CONFIG_USB_AIPTEK is not set
+# CONFIG_USB_WACOM is not set
+# CONFIG_USB_ACECAD is not set
+# CONFIG_USB_KBTAB is not set
+# CONFIG_USB_POWERMATE is not set
+# CONFIG_USB_TOUCHSCREEN is not set
+CONFIG_USB_YEALINK=m
+# CONFIG_USB_XPAD is not set
+# CONFIG_USB_ATI_REMOTE is not set
+# CONFIG_USB_ATI_REMOTE2 is not set
+# CONFIG_USB_KEYSPAN_REMOTE is not set
+# CONFIG_USB_APPLETOUCH is not set
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_MICROTEK is not set
+
+#
+# USB Network Adapters
+#
+CONFIG_USB_CATC=m
+CONFIG_USB_KAWETH=m
+CONFIG_USB_PEGASUS=m
+CONFIG_USB_RTL8150=m
+CONFIG_USB_USBNET_MII=m
+CONFIG_USB_USBNET=m
+CONFIG_USB_NET_AX8817X=m
+CONFIG_USB_NET_CDCETHER=m
+# CONFIG_USB_NET_GL620A is not set
+CONFIG_USB_NET_NET1080=m
+# CONFIG_USB_NET_PLUSB is not set
+CONFIG_USB_NET_MCS7830=m
+# CONFIG_USB_NET_RNDIS_HOST is not set
+# CONFIG_USB_NET_CDC_SUBSET is not set
+CONFIG_USB_NET_ZAURUS=m
+# CONFIG_USB_MON is not set
+
+#
+# USB port drivers
+#
+
+#
+# USB Serial Converter support
+#
+CONFIG_USB_SERIAL=m
+CONFIG_USB_SERIAL_GENERIC=y
+CONFIG_USB_SERIAL_AIRCABLE=m
+# CONFIG_USB_SERIAL_AIRPRIME is not set
+CONFIG_USB_SERIAL_ARK3116=m
+CONFIG_USB_SERIAL_BELKIN=m
+CONFIG_USB_SERIAL_WHITEHEAT=m
+CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
+CONFIG_USB_SERIAL_CP2101=m
+CONFIG_USB_SERIAL_CYPRESS_M8=m
+CONFIG_USB_SERIAL_EMPEG=m
+CONFIG_USB_SERIAL_FTDI_SIO=m
+CONFIG_USB_SERIAL_FUNSOFT=m
+CONFIG_USB_SERIAL_VISOR=m
+CONFIG_USB_SERIAL_IPAQ=m
+CONFIG_USB_SERIAL_IR=m
+CONFIG_USB_SERIAL_EDGEPORT=m
+CONFIG_USB_SERIAL_EDGEPORT_TI=m
+CONFIG_USB_SERIAL_GARMIN=m
+CONFIG_USB_SERIAL_IPW=m
+CONFIG_USB_SERIAL_KEYSPAN_PDA=m
+CONFIG_USB_SERIAL_KEYSPAN=m
+CONFIG_USB_SERIAL_KEYSPAN_MPR=y
+CONFIG_USB_SERIAL_KEYSPAN_USA28=y
+CONFIG_USB_SERIAL_KEYSPAN_USA28X=y
+CONFIG_USB_SERIAL_KEYSPAN_USA28XA=y
+CONFIG_USB_SERIAL_KEYSPAN_USA28XB=y
+CONFIG_USB_SERIAL_KEYSPAN_USA19=y
+CONFIG_USB_SERIAL_KEYSPAN_USA18X=y
+CONFIG_USB_SERIAL_KEYSPAN_USA19W=y
+CONFIG_USB_SERIAL_KEYSPAN_USA19QW=y
+CONFIG_USB_SERIAL_KEYSPAN_USA19QI=y
+CONFIG_USB_SERIAL_KEYSPAN_USA49W=y
+CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y
+CONFIG_USB_SERIAL_KLSI=m
+CONFIG_USB_SERIAL_KOBIL_SCT=m
+CONFIG_USB_SERIAL_MCT_U232=m
+CONFIG_USB_SERIAL_MOS7720=m
+CONFIG_USB_SERIAL_MOS7840=m
+CONFIG_USB_SERIAL_NAVMAN=m
+CONFIG_USB_SERIAL_PL2303=m
+# CONFIG_USB_SERIAL_HP4X is not set
+CONFIG_USB_SERIAL_SAFE=m
+# CONFIG_USB_SERIAL_SAFE_PADDED is not set
+# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set
+CONFIG_USB_SERIAL_TI=m
+CONFIG_USB_SERIAL_CYBERJACK=m
+CONFIG_USB_SERIAL_XIRCOM=m
+# CONFIG_USB_SERIAL_OPTION is not set
+CONFIG_USB_SERIAL_OMNINET=m
+# CONFIG_USB_SERIAL_DEBUG is not set
+CONFIG_USB_EZUSB=y
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_EMI62 is not set
+# CONFIG_USB_EMI26 is not set
+CONFIG_USB_ADUTUX=m
+# CONFIG_USB_AUERSWALD is not set
+# CONFIG_USB_RIO500 is not set
+# CONFIG_USB_LEGOTOWER is not set
+# CONFIG_USB_LCD is not set
+# CONFIG_USB_LED is not set
+# CONFIG_USB_CYPRESS_CY7C63 is not set
+# CONFIG_USB_CYTHERM is not set
+CONFIG_USB_PHIDGET=m
+CONFIG_USB_PHIDGETKIT=m
+CONFIG_USB_PHIDGETMOTORCONTROL=m
+CONFIG_USB_PHIDGETSERVO=m
+# CONFIG_USB_IDMOUSE is not set
+CONFIG_USB_FTDI_ELAN=m
+# CONFIG_USB_APPLEDISPLAY is not set
+CONFIG_USB_SISUSBVGA=m
+# CONFIG_USB_LD is not set
+# CONFIG_USB_TRANCEVIBRATOR is not set
+# CONFIG_USB_TEST is not set
+
+#
+# USB DSL modem support
+#
+
+#
+# USB Gadget Support
+#
+# CONFIG_USB_GADGET is not set
+
+#
+# MMC/SD Card support
+#
+# CONFIG_MMC is not set
+
+#
+# Real Time Clock
+#
+CONFIG_RTC_LIB=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_HCTOSYS=y
+CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
+# CONFIG_RTC_DEBUG is not set
+
+#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=y
+CONFIG_RTC_INTF_PROC=y
+CONFIG_RTC_INTF_DEV=y
+# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
+
+#
+# RTC drivers
+#
+CONFIG_RTC_DRV_X1205=y
+CONFIG_RTC_DRV_DS1307=y
+# CONFIG_RTC_DRV_DS1553 is not set
+CONFIG_RTC_DRV_ISL1208=y
+CONFIG_RTC_DRV_DS1672=y
+# CONFIG_RTC_DRV_DS1742 is not set
+CONFIG_RTC_DRV_PCF8563=y
+# CONFIG_RTC_DRV_PCF8583 is not set
+# CONFIG_RTC_DRV_RS5C372 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
+# CONFIG_RTC_DRV_TEST is not set
+# CONFIG_RTC_DRV_V3020 is not set
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=m
+CONFIG_EXT2_FS_XATTR=y
+CONFIG_EXT2_FS_POSIX_ACL=y
+CONFIG_EXT2_FS_SECURITY=y
+# CONFIG_EXT2_FS_XIP is not set
+CONFIG_EXT3_FS=m
+CONFIG_EXT3_FS_XATTR=y
+CONFIG_EXT3_FS_POSIX_ACL=y
+CONFIG_EXT3_FS_SECURITY=y
+# CONFIG_EXT4DEV_FS is not set
+CONFIG_JBD=m
+# CONFIG_JBD_DEBUG is not set
+CONFIG_FS_MBCACHE=m
+CONFIG_REISERFS_FS=m
+# CONFIG_REISERFS_CHECK is not set
+# CONFIG_REISERFS_PROC_INFO is not set
+CONFIG_REISERFS_FS_XATTR=y
+CONFIG_REISERFS_FS_POSIX_ACL=y
+CONFIG_REISERFS_FS_SECURITY=y
+# CONFIG_JFS_FS is not set
+CONFIG_FS_POSIX_ACL=y
+# CONFIG_XFS_FS is not set
+# CONFIG_GFS2_FS is not set
+# CONFIG_OCFS2_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+# CONFIG_QUOTA is not set
+CONFIG_DNOTIFY=y
+# CONFIG_AUTOFS_FS is not set
+CONFIG_AUTOFS4_FS=m
+CONFIG_FUSE_FS=m
+
+#
+# CD-ROM/DVD Filesystems
+#
+CONFIG_ISO9660_FS=m
+CONFIG_JOLIET=y
+CONFIG_ZISOFS=y
+CONFIG_ZISOFS_FS=m
+CONFIG_UDF_FS=m
+CONFIG_UDF_NLS=y
+
+#
+# DOS/FAT/NT Filesystems
+#
+CONFIG_FAT_FS=m
+CONFIG_MSDOS_FS=m
+CONFIG_VFAT_FS=m
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="utf8"
+CONFIG_NTFS_FS=m
+# CONFIG_NTFS_DEBUG is not set
+CONFIG_NTFS_RW=y
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_TMPFS_POSIX_ACL is not set
+# CONFIG_HUGETLB_PAGE is not set
+CONFIG_RAMFS=y
+# CONFIG_CONFIGFS_FS is not set
+
+#
+# Miscellaneous filesystems
+#
+# CONFIG_ADFS_FS is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_HFS_FS is not set
+# CONFIG_HFSPLUS_FS is not set
+# CONFIG_BEFS_FS is not set
+# CONFIG_BFS_FS is not set
+# CONFIG_EFS_FS is not set
+CONFIG_JFFS2_FS=y
+CONFIG_JFFS2_FS_DEBUG=0
+CONFIG_JFFS2_FS_WRITEBUFFER=y
+# CONFIG_JFFS2_SUMMARY is not set
+# CONFIG_JFFS2_FS_XATTR is not set
+# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
+CONFIG_JFFS2_ZLIB=y
+CONFIG_JFFS2_RTIME=y
+# CONFIG_JFFS2_RUBIN is not set
+# CONFIG_CRAMFS is not set
+CONFIG_SQUASHFS=m
+# CONFIG_SQUASHFS_EMBEDDED is not set
+CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
+# CONFIG_SQUASHFS_VMALLOC is not set
+# CONFIG_VXFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+
+#
+# Network File Systems
+#
+CONFIG_NFS_FS=m
+CONFIG_NFS_V3=y
+# CONFIG_NFS_V3_ACL is not set
+# CONFIG_NFS_V4 is not set
+# CONFIG_NFS_DIRECTIO is not set
+CONFIG_NFSD=m
+CONFIG_NFSD_V3=y
+# CONFIG_NFSD_V3_ACL is not set
+CONFIG_NFSD_V4=y
+CONFIG_NFSD_TCP=y
+CONFIG_ROOT_NFS=y
+CONFIG_LOCKD=m
+CONFIG_LOCKD_V4=y
+CONFIG_EXPORTFS=m
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=y
+CONFIG_SUNRPC_GSS=y
+CONFIG_RPCSEC_GSS_KRB5=y
+# CONFIG_RPCSEC_GSS_SPKM3 is not set
+CONFIG_SMB_FS=m
+# CONFIG_SMB_NLS_DEFAULT is not set
+CONFIG_CIFS=m
+# CONFIG_CIFS_STATS is not set
+# CONFIG_CIFS_WEAK_PW_HASH is not set
+CONFIG_CIFS_XATTR=y
+CONFIG_CIFS_POSIX=y
+# CONFIG_CIFS_DEBUG2 is not set
+# CONFIG_CIFS_EXPERIMENTAL is not set
+# CONFIG_NCP_FS is not set
+# CONFIG_CODA_FS is not set
+# CONFIG_AFS_FS is not set
+# CONFIG_9P_FS is not set
+
+#
+# Partition Types
+#
+CONFIG_PARTITION_ADVANCED=y
+# CONFIG_ACORN_PARTITION is not set
+# CONFIG_OSF_PARTITION is not set
+# CONFIG_AMIGA_PARTITION is not set
+# CONFIG_ATARI_PARTITION is not set
+# CONFIG_MAC_PARTITION is not set
+CONFIG_MSDOS_PARTITION=y
+# CONFIG_BSD_DISKLABEL is not set
+# CONFIG_MINIX_SUBPARTITION is not set
+# CONFIG_SOLARIS_X86_PARTITION is not set
+# CONFIG_UNIXWARE_DISKLABEL is not set
+# CONFIG_LDM_PARTITION is not set
+# CONFIG_SGI_PARTITION is not set
+# CONFIG_ULTRIX_PARTITION is not set
+# CONFIG_SUN_PARTITION is not set
+# CONFIG_KARMA_PARTITION is not set
+# CONFIG_EFI_PARTITION is not set
+
+#
+# Native Language Support
+#
+CONFIG_NLS=m
+CONFIG_NLS_DEFAULT="utf8"
+CONFIG_NLS_CODEPAGE_437=m
+CONFIG_NLS_CODEPAGE_737=m
+CONFIG_NLS_CODEPAGE_775=m
+CONFIG_NLS_CODEPAGE_850=m
+CONFIG_NLS_CODEPAGE_852=m
+CONFIG_NLS_CODEPAGE_855=m
+CONFIG_NLS_CODEPAGE_857=m
+CONFIG_NLS_CODEPAGE_860=m
+CONFIG_NLS_CODEPAGE_861=m
+CONFIG_NLS_CODEPAGE_862=m
+CONFIG_NLS_CODEPAGE_863=m
+CONFIG_NLS_CODEPAGE_864=m
+CONFIG_NLS_CODEPAGE_865=m
+CONFIG_NLS_CODEPAGE_866=m
+CONFIG_NLS_CODEPAGE_869=m
+CONFIG_NLS_CODEPAGE_936=m
+CONFIG_NLS_CODEPAGE_950=m
+CONFIG_NLS_CODEPAGE_932=m
+CONFIG_NLS_CODEPAGE_949=m
+CONFIG_NLS_CODEPAGE_874=m
+CONFIG_NLS_ISO8859_8=m
+CONFIG_NLS_CODEPAGE_1250=m
+CONFIG_NLS_CODEPAGE_1251=m
+CONFIG_NLS_ASCII=m
+CONFIG_NLS_ISO8859_1=m
+CONFIG_NLS_ISO8859_2=m
+CONFIG_NLS_ISO8859_3=m
+CONFIG_NLS_ISO8859_4=m
+CONFIG_NLS_ISO8859_5=m
+CONFIG_NLS_ISO8859_6=m
+CONFIG_NLS_ISO8859_7=m
+CONFIG_NLS_ISO8859_9=m
+CONFIG_NLS_ISO8859_13=m
+CONFIG_NLS_ISO8859_14=m
+CONFIG_NLS_ISO8859_15=m
+CONFIG_NLS_KOI8_R=m
+CONFIG_NLS_KOI8_U=m
+CONFIG_NLS_UTF8=m
+
+#
+# Distributed Lock Manager
+#
+# CONFIG_DLM is not set
+
+#
+# Profiling support
+#
+# CONFIG_PROFILING is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+CONFIG_ENABLE_MUST_CHECK=y
+# CONFIG_MAGIC_SYSRQ is not set
+# CONFIG_UNUSED_SYMBOLS is not set
+# CONFIG_DEBUG_FS is not set
+# CONFIG_HEADERS_CHECK is not set
+# CONFIG_DEBUG_KERNEL is not set
+CONFIG_LOG_BUF_SHIFT=14
+# CONFIG_DEBUG_BUGVERBOSE is not set
+CONFIG_FRAME_POINTER=y
+# CONFIG_DEBUG_USER is not set
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+
+#
+# Cryptographic options
+#
+CONFIG_CRYPTO=y
+CONFIG_CRYPTO_ALGAPI=y
+CONFIG_CRYPTO_BLKCIPHER=y
+CONFIG_CRYPTO_HASH=y
+CONFIG_CRYPTO_MANAGER=y
+CONFIG_CRYPTO_HMAC=y
+# CONFIG_CRYPTO_XCBC is not set
+# CONFIG_CRYPTO_NULL is not set
+CONFIG_CRYPTO_MD4=m
+CONFIG_CRYPTO_MD5=y
+CONFIG_CRYPTO_SHA1=m
+CONFIG_CRYPTO_SHA256=m
+CONFIG_CRYPTO_SHA512=m
+CONFIG_CRYPTO_WP512=m
+CONFIG_CRYPTO_TGR192=m
+# CONFIG_CRYPTO_GF128MUL is not set
+CONFIG_CRYPTO_ECB=m
+CONFIG_CRYPTO_CBC=y
+# CONFIG_CRYPTO_LRW is not set
+CONFIG_CRYPTO_DES=y
+CONFIG_CRYPTO_BLOWFISH=m
+CONFIG_CRYPTO_TWOFISH=m
+CONFIG_CRYPTO_TWOFISH_COMMON=m
+CONFIG_CRYPTO_SERPENT=m
+CONFIG_CRYPTO_AES=m
+CONFIG_CRYPTO_CAST5=m
+CONFIG_CRYPTO_CAST6=m
+CONFIG_CRYPTO_TEA=m
+CONFIG_CRYPTO_ARC4=m
+CONFIG_CRYPTO_KHAZAD=m
+CONFIG_CRYPTO_ANUBIS=m
+CONFIG_CRYPTO_DEFLATE=m
+CONFIG_CRYPTO_MICHAEL_MIC=m
+CONFIG_CRYPTO_CRC32C=m
+CONFIG_CRYPTO_TEST=m
+
+#
+# Hardware crypto devices
+#
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+CONFIG_CRC_CCITT=m
+CONFIG_CRC16=y
+CONFIG_CRC32=y
+CONFIG_LIBCRC32C=m
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_TEXTSEARCH=y
+CONFIG_TEXTSEARCH_KMP=m
+CONFIG_TEXTSEARCH_BM=m
+CONFIG_TEXTSEARCH_FSM=m
+CONFIG_PLIST=y
+CONFIG_IOMAP_COPY=y
diff --git a/packages/linux/linux-ixp4xx/defconfig-2.6.21.6 b/packages/linux/linux-ixp4xx/defconfig-2.6.21.6
new file mode 100644
index 0000000000..b7da2803fb
--- /dev/null
+++ b/packages/linux/linux-ixp4xx/defconfig-2.6.21.6
@@ -0,0 +1,2092 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.21
+# Thu Nov 22 23:05:47 2007
+#
+CONFIG_ARM=y
+CONFIG_SYS_SUPPORTS_APM_EMULATION=y
+# CONFIG_GENERIC_GPIO is not set
+CONFIG_GENERIC_TIME=y
+CONFIG_MMU=y
+# CONFIG_NO_IOPORT is not set
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+CONFIG_HARDIRQS_SW_RESEND=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+# CONFIG_ARCH_HAS_ILOG2_U32 is not set
+# CONFIG_ARCH_HAS_ILOG2_U64 is not set
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_ZONE_DMA=y
+CONFIG_VECTORS_BASE=0xffff0000
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+
+#
+# Code maturity level options
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_LOCK_KERNEL=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+
+#
+# General setup
+#
+CONFIG_LOCALVERSION=""
+# CONFIG_LOCALVERSION_AUTO is not set
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=y
+# CONFIG_IPC_NS is not set
+CONFIG_SYSVIPC_SYSCTL=y
+# CONFIG_POSIX_MQUEUE is not set
+# CONFIG_BSD_PROCESS_ACCT is not set
+# CONFIG_TASKSTATS is not set
+# CONFIG_UTS_NS is not set
+# CONFIG_AUDIT is not set
+CONFIG_IKCONFIG=m
+CONFIG_IKCONFIG_PROC=y
+CONFIG_SYSFS_DEPRECATED=y
+# CONFIG_RELAY is not set
+# CONFIG_BLK_DEV_INITRD is not set
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_SYSCTL=y
+CONFIG_EMBEDDED=y
+CONFIG_UID16=y
+# CONFIG_SYSCTL_SYSCALL is not set
+# CONFIG_KALLSYMS is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_EPOLL=y
+CONFIG_SHMEM=y
+CONFIG_SLAB=y
+# CONFIG_VM_EVENT_COUNTERS is not set
+CONFIG_RT_MUTEXES=y
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=0
+# CONFIG_SLOB is not set
+
+#
+# Loadable module support
+#
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+# CONFIG_MODULE_FORCE_UNLOAD is not set
+CONFIG_MODVERSIONS=y
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_KMOD=y
+
+#
+# Block layer
+#
+CONFIG_BLOCK=y
+# CONFIG_LBD is not set
+# CONFIG_BLK_DEV_IO_TRACE is not set
+# CONFIG_LSF is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+# CONFIG_IOSCHED_AS is not set
+CONFIG_IOSCHED_DEADLINE=y
+# CONFIG_IOSCHED_CFQ is not set
+# CONFIG_DEFAULT_AS is not set
+CONFIG_DEFAULT_DEADLINE=y
+# CONFIG_DEFAULT_CFQ is not set
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="deadline"
+
+#
+# System Type
+#
+# CONFIG_ARCH_AAEC2000 is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_VERSATILE is not set
+# CONFIG_ARCH_AT91 is not set
+# CONFIG_ARCH_CLPS7500 is not set
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_CO285 is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_EP93XX is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_NETX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IOP13XX is not set
+CONFIG_ARCH_IXP4XX=y
+# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_IXP23XX is not set
+# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_NS9XXX is not set
+# CONFIG_ARCH_PNX4008 is not set
+# CONFIG_ARCH_PXA is not set
+# CONFIG_ARCH_RPC is not set
+# CONFIG_ARCH_SA1100 is not set
+# CONFIG_ARCH_S3C2410 is not set
+# CONFIG_ARCH_SHARK is not set
+# CONFIG_ARCH_LH7A40X is not set
+# CONFIG_ARCH_OMAP is not set
+CONFIG_ARCH_SUPPORTS_BIG_ENDIAN=y
+
+#
+# Intel IXP4xx Implementation Options
+#
+
+#
+# IXP4xx Platforms
+#
+CONFIG_MACH_NSLU2=y
+CONFIG_MACH_AVILA=y
+CONFIG_MACH_LOFT=y
+# CONFIG_ARCH_ADI_COYOTE is not set
+CONFIG_ARCH_IXDP425=y
+CONFIG_MACH_IXDPG425=y
+# CONFIG_MACH_IXDP465 is not set
+CONFIG_ARCH_IXCDP1100=y
+# CONFIG_ARCH_PRPMC1100 is not set
+CONFIG_MACH_NAS100D=y
+CONFIG_MACH_DSMG600=y
+CONFIG_ARCH_IXDP4XX=y
+CONFIG_MACH_FSG=y
+# CONFIG_MACH_GTWX5715 is not set
+
+#
+# IXP4xx Options
+#
+CONFIG_DMABOUNCE=y
+# CONFIG_IXP4XX_INDIRECT_PCI is not set
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+CONFIG_CPU_XSCALE=y
+CONFIG_CPU_32v5=y
+CONFIG_CPU_ABRT_EV5T=y
+CONFIG_CPU_CACHE_VIVT=y
+CONFIG_CPU_TLB_V4WBI=y
+CONFIG_CPU_CP15=y
+CONFIG_CPU_CP15_MMU=y
+
+#
+# Processor Features
+#
+CONFIG_ARM_THUMB=y
+# CONFIG_CPU_BIG_ENDIAN is not set
+# CONFIG_CPU_DCACHE_DISABLE is not set
+# CONFIG_OUTER_CACHE is not set
+# CONFIG_IWMMXT is not set
+CONFIG_XSCALE_PMU=y
+
+#
+# Bus support
+#
+CONFIG_PCI=y
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+# CONFIG_PCCARD is not set
+
+#
+# Kernel Features
+#
+CONFIG_PREEMPT=y
+# CONFIG_NO_IDLE_HZ is not set
+CONFIG_HZ=100
+CONFIG_AEABI=y
+CONFIG_OABI_COMPAT=y
+# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
+CONFIG_SELECT_MEMORY_MODEL=y
+CONFIG_FLATMEM_MANUAL=y
+# CONFIG_DISCONTIGMEM_MANUAL is not set
+# CONFIG_SPARSEMEM_MANUAL is not set
+CONFIG_FLATMEM=y
+CONFIG_FLAT_NODE_MEM_MAP=y
+# CONFIG_SPARSEMEM_STATIC is not set
+CONFIG_SPLIT_PTLOCK_CPUS=4096
+# CONFIG_RESOURCES_64BIT is not set
+CONFIG_ZONE_DMA_FLAG=1
+CONFIG_ALIGNMENT_TRAP=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE="root=/dev/nfs rootfstype=nfs ip=dhcp noirqdebug console=ttyS0,115200n8"
+# CONFIG_XIP_KERNEL is not set
+CONFIG_KEXEC=y
+
+#
+# Floating point emulation
+#
+
+#
+# At least one emulation must be selected
+#
+CONFIG_FPE_NWFPE=y
+# CONFIG_FPE_NWFPE_XP is not set
+# CONFIG_FPE_FASTFPE is not set
+
+#
+# Userspace binary formats
+#
+CONFIG_BINFMT_ELF=y
+# CONFIG_BINFMT_AOUT is not set
+# CONFIG_BINFMT_MISC is not set
+# CONFIG_ARTHUR is not set
+
+#
+# Power management options
+#
+# CONFIG_PM is not set
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+# CONFIG_NETDEBUG is not set
+CONFIG_PACKET=y
+CONFIG_PACKET_MMAP=y
+CONFIG_UNIX=y
+CONFIG_XFRM=y
+# CONFIG_XFRM_USER is not set
+# CONFIG_XFRM_SUB_POLICY is not set
+# CONFIG_XFRM_MIGRATE is not set
+# CONFIG_NET_KEY is not set
+CONFIG_INET=y
+# CONFIG_IP_MULTICAST is not set
+# CONFIG_IP_ADVANCED_ROUTER is not set
+CONFIG_IP_FIB_HASH=y
+CONFIG_IP_PNP=y
+CONFIG_IP_PNP_DHCP=y
+# CONFIG_IP_PNP_BOOTP is not set
+# CONFIG_IP_PNP_RARP is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_ARPD is not set
+# CONFIG_SYN_COOKIES is not set
+CONFIG_INET_AH=m
+CONFIG_INET_ESP=m
+CONFIG_INET_IPCOMP=m
+CONFIG_INET_XFRM_TUNNEL=m
+CONFIG_INET_TUNNEL=m
+CONFIG_INET_XFRM_MODE_TRANSPORT=y
+CONFIG_INET_XFRM_MODE_TUNNEL=y
+CONFIG_INET_XFRM_MODE_BEET=m
+CONFIG_INET_DIAG=y
+CONFIG_INET_TCP_DIAG=y
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_CUBIC=y
+CONFIG_DEFAULT_TCP_CONG="cubic"
+# CONFIG_TCP_MD5SIG is not set
+
+#
+# IP: Virtual Server Configuration
+#
+# CONFIG_IP_VS is not set
+CONFIG_IPV6=m
+# CONFIG_IPV6_PRIVACY is not set
+# CONFIG_IPV6_ROUTER_PREF is not set
+CONFIG_INET6_AH=m
+CONFIG_INET6_ESP=m
+CONFIG_INET6_IPCOMP=m
+# CONFIG_IPV6_MIP6 is not set
+CONFIG_INET6_XFRM_TUNNEL=m
+CONFIG_INET6_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_TRANSPORT=m
+CONFIG_INET6_XFRM_MODE_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_BEET=m
+# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
+CONFIG_IPV6_SIT=m
+CONFIG_IPV6_TUNNEL=m
+# CONFIG_IPV6_MULTIPLE_TABLES is not set
+# CONFIG_NETWORK_SECMARK is not set
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+CONFIG_BRIDGE_NETFILTER=y
+
+#
+# Core Netfilter Configuration
+#
+CONFIG_NETFILTER_NETLINK=m
+CONFIG_NETFILTER_NETLINK_QUEUE=m
+CONFIG_NETFILTER_NETLINK_LOG=m
+CONFIG_NF_CONNTRACK_ENABLED=m
+CONFIG_NF_CONNTRACK_SUPPORT=y
+# CONFIG_IP_NF_CONNTRACK_SUPPORT is not set
+CONFIG_NF_CONNTRACK=m
+CONFIG_NF_CT_ACCT=y
+CONFIG_NF_CONNTRACK_MARK=y
+CONFIG_NF_CONNTRACK_EVENTS=y
+CONFIG_NF_CT_PROTO_GRE=m
+CONFIG_NF_CT_PROTO_SCTP=m
+CONFIG_NF_CONNTRACK_AMANDA=m
+CONFIG_NF_CONNTRACK_FTP=m
+CONFIG_NF_CONNTRACK_H323=m
+CONFIG_NF_CONNTRACK_IRC=m
+CONFIG_NF_CONNTRACK_NETBIOS_NS=m
+CONFIG_NF_CONNTRACK_PPTP=m
+CONFIG_NF_CONNTRACK_SANE=m
+CONFIG_NF_CONNTRACK_SIP=m
+CONFIG_NF_CONNTRACK_TFTP=m
+CONFIG_NF_CT_NETLINK=m
+CONFIG_NETFILTER_XTABLES=m
+CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
+CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
+CONFIG_NETFILTER_XT_TARGET_DSCP=m
+CONFIG_NETFILTER_XT_TARGET_MARK=m
+CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
+CONFIG_NETFILTER_XT_TARGET_NFLOG=m
+CONFIG_NETFILTER_XT_TARGET_NOTRACK=m
+CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
+CONFIG_NETFILTER_XT_MATCH_COMMENT=m
+CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
+CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
+CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
+CONFIG_NETFILTER_XT_MATCH_DCCP=m
+CONFIG_NETFILTER_XT_MATCH_DSCP=m
+CONFIG_NETFILTER_XT_MATCH_ESP=m
+CONFIG_NETFILTER_XT_MATCH_HELPER=m
+CONFIG_NETFILTER_XT_MATCH_LENGTH=m
+CONFIG_NETFILTER_XT_MATCH_LIMIT=m
+CONFIG_NETFILTER_XT_MATCH_MAC=m
+CONFIG_NETFILTER_XT_MATCH_MARK=m
+CONFIG_NETFILTER_XT_MATCH_POLICY=m
+CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
+CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m
+CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
+CONFIG_NETFILTER_XT_MATCH_QUOTA=m
+CONFIG_NETFILTER_XT_MATCH_REALM=m
+CONFIG_NETFILTER_XT_MATCH_SCTP=m
+CONFIG_NETFILTER_XT_MATCH_STATE=m
+CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
+CONFIG_NETFILTER_XT_MATCH_STRING=m
+CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
+CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
+
+#
+# IP: Netfilter Configuration
+#
+CONFIG_NF_CONNTRACK_IPV4=m
+CONFIG_NF_CONNTRACK_PROC_COMPAT=y
+# CONFIG_IP_NF_QUEUE is not set
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_MATCH_IPRANGE=m
+CONFIG_IP_NF_MATCH_TOS=m
+CONFIG_IP_NF_MATCH_RECENT=m
+CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_AH=m
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_MATCH_OWNER=m
+CONFIG_IP_NF_MATCH_ADDRTYPE=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_LOG=m
+CONFIG_IP_NF_TARGET_ULOG=m
+CONFIG_NF_NAT=m
+CONFIG_NF_NAT_NEEDED=y
+CONFIG_IP_NF_TARGET_MASQUERADE=m
+CONFIG_IP_NF_TARGET_REDIRECT=m
+CONFIG_IP_NF_TARGET_NETMAP=m
+CONFIG_IP_NF_TARGET_SAME=m
+CONFIG_NF_NAT_SNMP_BASIC=m
+CONFIG_NF_NAT_PROTO_GRE=m
+CONFIG_NF_NAT_FTP=m
+CONFIG_NF_NAT_IRC=m
+CONFIG_NF_NAT_TFTP=m
+CONFIG_NF_NAT_AMANDA=m
+CONFIG_NF_NAT_PPTP=m
+CONFIG_NF_NAT_H323=m
+CONFIG_NF_NAT_SIP=m
+CONFIG_IP_NF_MANGLE=m
+CONFIG_IP_NF_TARGET_TOS=m
+CONFIG_IP_NF_TARGET_ECN=m
+CONFIG_IP_NF_TARGET_TTL=m
+CONFIG_IP_NF_TARGET_CLUSTERIP=m
+CONFIG_IP_NF_RAW=m
+CONFIG_IP_NF_ARPTABLES=m
+CONFIG_IP_NF_ARPFILTER=m
+CONFIG_IP_NF_ARP_MANGLE=m
+
+#
+# IPv6: Netfilter Configuration (EXPERIMENTAL)
+#
+CONFIG_NF_CONNTRACK_IPV6=m
+# CONFIG_IP6_NF_QUEUE is not set
+CONFIG_IP6_NF_IPTABLES=m
+CONFIG_IP6_NF_MATCH_RT=m
+CONFIG_IP6_NF_MATCH_OPTS=m
+CONFIG_IP6_NF_MATCH_FRAG=m
+CONFIG_IP6_NF_MATCH_HL=m
+CONFIG_IP6_NF_MATCH_OWNER=m
+CONFIG_IP6_NF_MATCH_IPV6HEADER=m
+CONFIG_IP6_NF_MATCH_AH=m
+CONFIG_IP6_NF_MATCH_MH=m
+CONFIG_IP6_NF_MATCH_EUI64=m
+CONFIG_IP6_NF_FILTER=m
+CONFIG_IP6_NF_TARGET_LOG=m
+CONFIG_IP6_NF_TARGET_REJECT=m
+CONFIG_IP6_NF_MANGLE=m
+CONFIG_IP6_NF_TARGET_HL=m
+CONFIG_IP6_NF_RAW=m
+
+#
+# Bridge: Netfilter Configuration
+#
+CONFIG_BRIDGE_NF_EBTABLES=m
+CONFIG_BRIDGE_EBT_BROUTE=m
+CONFIG_BRIDGE_EBT_T_FILTER=m
+CONFIG_BRIDGE_EBT_T_NAT=m
+CONFIG_BRIDGE_EBT_802_3=m
+CONFIG_BRIDGE_EBT_AMONG=m
+CONFIG_BRIDGE_EBT_ARP=m
+CONFIG_BRIDGE_EBT_IP=m
+CONFIG_BRIDGE_EBT_LIMIT=m
+CONFIG_BRIDGE_EBT_MARK=m
+CONFIG_BRIDGE_EBT_PKTTYPE=m
+CONFIG_BRIDGE_EBT_STP=m
+CONFIG_BRIDGE_EBT_VLAN=m
+CONFIG_BRIDGE_EBT_ARPREPLY=m
+CONFIG_BRIDGE_EBT_DNAT=m
+CONFIG_BRIDGE_EBT_MARK_T=m
+CONFIG_BRIDGE_EBT_REDIRECT=m
+CONFIG_BRIDGE_EBT_SNAT=m
+CONFIG_BRIDGE_EBT_LOG=m
+CONFIG_BRIDGE_EBT_ULOG=m
+
+#
+# DCCP Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_DCCP is not set
+
+#
+# SCTP Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_SCTP is not set
+
+#
+# TIPC Configuration (EXPERIMENTAL)
+#
+CONFIG_TIPC=m
+# CONFIG_TIPC_ADVANCED is not set
+# CONFIG_TIPC_DEBUG is not set
+# CONFIG_ATM is not set
+CONFIG_BRIDGE=m
+CONFIG_VLAN_8021Q=m
+# CONFIG_DECNET is not set
+CONFIG_LLC=m
+# CONFIG_LLC2 is not set
+CONFIG_IPX=m
+# CONFIG_IPX_INTERN is not set
+CONFIG_ATALK=m
+CONFIG_DEV_APPLETALK=m
+CONFIG_IPDDP=m
+CONFIG_IPDDP_ENCAP=y
+CONFIG_IPDDP_DECAP=y
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_ECONET is not set
+# CONFIG_WAN_ROUTER is not set
+
+#
+# QoS and/or fair queueing
+#
+# CONFIG_NET_SCHED is not set
+# CONFIG_NET_SCH_CLK_JIFFIES is not set
+# CONFIG_NET_SCH_CLK_GETTIMEOFDAY is not set
+# CONFIG_NET_SCH_CLK_CPU is not set
+CONFIG_NET_CLS_ROUTE=y
+
+#
+# Network testing
+#
+CONFIG_NET_PKTGEN=m
+# CONFIG_HAMRADIO is not set
+# CONFIG_IRDA is not set
+CONFIG_BT=m
+CONFIG_BT_L2CAP=m
+CONFIG_BT_SCO=m
+CONFIG_BT_RFCOMM=m
+CONFIG_BT_RFCOMM_TTY=y
+CONFIG_BT_BNEP=m
+CONFIG_BT_BNEP_MC_FILTER=y
+CONFIG_BT_BNEP_PROTO_FILTER=y
+CONFIG_BT_HIDP=m
+
+#
+# Bluetooth device drivers
+#
+CONFIG_BT_HCIUSB=m
+CONFIG_BT_HCIUSB_SCO=y
+CONFIG_BT_HCIUART=m
+CONFIG_BT_HCIUART_H4=y
+CONFIG_BT_HCIUART_BCSP=y
+CONFIG_BT_HCIBCM203X=m
+CONFIG_BT_HCIBPA10X=m
+CONFIG_BT_HCIBFUSB=m
+CONFIG_BT_HCIVHCI=m
+CONFIG_IEEE80211=m
+# CONFIG_IEEE80211_DEBUG is not set
+CONFIG_IEEE80211_CRYPT_WEP=m
+CONFIG_IEEE80211_CRYPT_CCMP=m
+CONFIG_IEEE80211_CRYPT_TKIP=m
+CONFIG_IEEE80211_SOFTMAC=m
+# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
+CONFIG_WIRELESS_EXT=y
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=y
+# CONFIG_SYS_HYPERVISOR is not set
+
+#
+# Connector - unified userspace <-> kernelspace linker
+#
+# CONFIG_CONNECTOR is not set
+
+#
+# Memory Technology Devices (MTD)
+#
+CONFIG_MTD=y
+# CONFIG_MTD_DEBUG is not set
+CONFIG_MTD_CONCAT=y
+CONFIG_MTD_PARTITIONS=y
+CONFIG_MTD_REDBOOT_PARTS=y
+CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1
+CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED=y
+# CONFIG_MTD_REDBOOT_PARTS_READONLY is not set
+# CONFIG_MTD_CMDLINE_PARTS is not set
+# CONFIG_MTD_AFS_PARTS is not set
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=y
+CONFIG_MTD_BLKDEVS=y
+CONFIG_MTD_BLOCK=y
+# CONFIG_FTL is not set
+CONFIG_NFTL=y
+CONFIG_NFTL_RW=y
+# CONFIG_INFTL is not set
+# CONFIG_RFD_FTL is not set
+# CONFIG_SSFDC is not set
+
+#
+# RAM/ROM/Flash chip drivers
+#
+CONFIG_MTD_CFI=y
+# CONFIG_MTD_JEDECPROBE is not set
+CONFIG_MTD_GEN_PROBE=y
+CONFIG_MTD_CFI_ADV_OPTIONS=y
+# CONFIG_MTD_CFI_NOSWAP is not set
+CONFIG_MTD_CFI_BE_BYTE_SWAP=y
+# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
+CONFIG_MTD_CFI_GEOMETRY=y
+# CONFIG_MTD_MAP_BANK_WIDTH_1 is not set
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+# CONFIG_MTD_MAP_BANK_WIDTH_4 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
+CONFIG_MTD_CFI_I1=y
+CONFIG_MTD_CFI_I2=y
+# CONFIG_MTD_CFI_I4 is not set
+# CONFIG_MTD_CFI_I8 is not set
+# CONFIG_MTD_OTP is not set
+CONFIG_MTD_CFI_INTELEXT=y
+# CONFIG_MTD_CFI_AMDSTD is not set
+# CONFIG_MTD_CFI_STAA is not set
+CONFIG_MTD_CFI_UTIL=y
+# CONFIG_MTD_RAM is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+# CONFIG_MTD_OBSOLETE_CHIPS is not set
+
+#
+# Mapping drivers for chip access
+#
+CONFIG_MTD_COMPLEX_MAPPINGS=y
+# CONFIG_MTD_PHYSMAP is not set
+# CONFIG_MTD_ARM_INTEGRATOR is not set
+CONFIG_MTD_IXP4XX=y
+# CONFIG_MTD_PCI is not set
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_PMC551 is not set
+# CONFIG_MTD_SLRAM is not set
+# CONFIG_MTD_PHRAM is not set
+# CONFIG_MTD_MTDRAM is not set
+# CONFIG_MTD_BLOCK2MTD is not set
+
+#
+# Disk-On-Chip Device Drivers
+#
+# CONFIG_MTD_DOC2000 is not set
+# CONFIG_MTD_DOC2001 is not set
+# CONFIG_MTD_DOC2001PLUS is not set
+
+#
+# NAND Flash Device Drivers
+#
+# CONFIG_MTD_NAND is not set
+
+#
+# OneNAND Flash Device Drivers
+#
+# CONFIG_MTD_ONENAND is not set
+
+#
+# Parallel port support
+#
+# CONFIG_PARPORT is not set
+
+#
+# Plug and Play support
+#
+# CONFIG_PNPACPI is not set
+
+#
+# Block devices
+#
+# CONFIG_BLK_CPQ_DA is not set
+# CONFIG_BLK_CPQ_CISS_DA is not set
+# CONFIG_BLK_DEV_DAC960 is not set
+# CONFIG_BLK_DEV_UMEM is not set
+# CONFIG_BLK_DEV_COW_COMMON is not set
+CONFIG_BLK_DEV_LOOP=m
+CONFIG_BLK_DEV_CRYPTOLOOP=m
+CONFIG_BLK_DEV_NBD=m
+# CONFIG_BLK_DEV_SX8 is not set
+# CONFIG_BLK_DEV_UB is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=4
+CONFIG_BLK_DEV_RAM_SIZE=10240
+CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
+CONFIG_CDROM_PKTCDVD=m
+CONFIG_CDROM_PKTCDVD_BUFFERS=8
+# CONFIG_CDROM_PKTCDVD_WCACHE is not set
+CONFIG_ATA_OVER_ETH=m
+
+#
+# ATA/ATAPI/MFM/RLL support
+#
+# CONFIG_IDE is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+CONFIG_SCSI=y
+# CONFIG_SCSI_TGT is not set
+# CONFIG_SCSI_NETLINK is not set
+CONFIG_SCSI_PROC_FS=y
+
+#
+# SCSI support type (disk, tape, CD-ROM)
+#
+CONFIG_BLK_DEV_SD=y
+CONFIG_CHR_DEV_ST=m
+# CONFIG_CHR_DEV_OSST is not set
+CONFIG_BLK_DEV_SR=m
+# CONFIG_BLK_DEV_SR_VENDOR is not set
+CONFIG_CHR_DEV_SG=m
+# CONFIG_CHR_DEV_SCH is not set
+
+#
+# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
+#
+CONFIG_SCSI_MULTI_LUN=y
+# CONFIG_SCSI_CONSTANTS is not set
+# CONFIG_SCSI_LOGGING is not set
+# CONFIG_SCSI_SCAN_ASYNC is not set
+
+#
+# SCSI Transports
+#
+# CONFIG_SCSI_SPI_ATTRS is not set
+# CONFIG_SCSI_FC_ATTRS is not set
+CONFIG_SCSI_ISCSI_ATTRS=m
+# CONFIG_SCSI_SAS_ATTRS is not set
+# CONFIG_SCSI_SAS_LIBSAS is not set
+
+#
+# SCSI low-level drivers
+#
+CONFIG_ISCSI_TCP=m
+# 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_DMX3191D is not set
+# CONFIG_SCSI_FUTURE_DOMAIN 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_IPR 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
+
+#
+# Serial ATA (prod) and Parallel ATA (experimental) drivers
+#
+CONFIG_ATA=y
+# CONFIG_ATA_NONSTANDARD is not set
+# CONFIG_SATA_AHCI is not set
+# CONFIG_SATA_SVW is not set
+# CONFIG_ATA_PIIX is not set
+# CONFIG_SATA_MV is not set
+# CONFIG_SATA_NV is not set
+# CONFIG_PDC_ADMA is not set
+# CONFIG_SATA_QSTOR is not set
+# CONFIG_SATA_PROMISE is not set
+# CONFIG_SATA_SX4 is not set
+# CONFIG_SATA_SIL is not set
+# CONFIG_SATA_SIL24 is not set
+# CONFIG_SATA_SIS is not set
+# CONFIG_SATA_ULI is not set
+CONFIG_SATA_VIA=y
+# CONFIG_SATA_VITESSE is not set
+# CONFIG_SATA_INIC162X is not set
+# CONFIG_PATA_ALI is not set
+# CONFIG_PATA_AMD is not set
+CONFIG_PATA_ARTOP=y
+# CONFIG_PATA_ATIIXP is not set
+# CONFIG_PATA_CMD64X is not set
+# CONFIG_PATA_CS5520 is not set
+# CONFIG_PATA_CS5530 is not set
+# CONFIG_PATA_CYPRESS is not set
+# CONFIG_PATA_EFAR is not set
+# CONFIG_ATA_GENERIC is not set
+# CONFIG_PATA_HPT366 is not set
+# CONFIG_PATA_HPT37X is not set
+# CONFIG_PATA_HPT3X2N is not set
+# CONFIG_PATA_HPT3X3 is not set
+# CONFIG_PATA_IT821X is not set
+# CONFIG_PATA_IT8213 is not set
+# CONFIG_PATA_JMICRON is not set
+# CONFIG_PATA_TRIFLEX is not set
+# CONFIG_PATA_MARVELL is not set
+# CONFIG_PATA_MPIIX is not set
+# CONFIG_PATA_OLDPIIX is not set
+# CONFIG_PATA_NETCELL is not set
+# CONFIG_PATA_NS87410 is not set
+# CONFIG_PATA_OPTI is not set
+# CONFIG_PATA_OPTIDMA is not set
+# CONFIG_PATA_PDC_OLD is not set
+# CONFIG_PATA_RADISYS is not set
+# CONFIG_PATA_RZ1000 is not set
+# CONFIG_PATA_SC1200 is not set
+# CONFIG_PATA_SERVERWORKS is not set
+# CONFIG_PATA_PDC2027X is not set
+# CONFIG_PATA_SIL680 is not set
+# CONFIG_PATA_SIS is not set
+# CONFIG_PATA_VIA is not set
+# CONFIG_PATA_WINBOND is not set
+# CONFIG_PATA_PLATFORM is not set
+CONFIG_PATA_IXP4XX_CF=y
+
+#
+# Multi-device support (RAID and LVM)
+#
+CONFIG_MD=y
+CONFIG_BLK_DEV_MD=m
+CONFIG_MD_LINEAR=m
+CONFIG_MD_RAID0=m
+CONFIG_MD_RAID1=m
+CONFIG_MD_RAID10=m
+CONFIG_MD_RAID456=m
+CONFIG_MD_RAID5_RESHAPE=y
+CONFIG_MD_MULTIPATH=m
+CONFIG_MD_FAULTY=m
+CONFIG_BLK_DEV_DM=m
+# CONFIG_DM_DEBUG is not set
+CONFIG_DM_CRYPT=m
+CONFIG_DM_SNAPSHOT=m
+CONFIG_DM_MIRROR=m
+CONFIG_DM_ZERO=m
+CONFIG_DM_MULTIPATH=m
+# CONFIG_DM_MULTIPATH_EMC is not set
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+# CONFIG_FUSION_SPI is not set
+# CONFIG_FUSION_FC is not set
+# CONFIG_FUSION_SAS is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+# CONFIG_IEEE1394 is not set
+
+#
+# I2O device support
+#
+# CONFIG_I2O is not set
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+CONFIG_TUN=m
+
+#
+# ARCnet devices
+#
+# CONFIG_ARCNET is not set
+
+#
+# PHY device support
+#
+# CONFIG_PHYLIB is not set
+
+#
+# Ethernet (10 or 100Mbit)
+#
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=y
+CONFIG_IXP4XX_QMGR=y
+CONFIG_IXP4XX_NPE=y
+CONFIG_IXP4XX_NPE_FW_LOAD=y
+CONFIG_IXP4XX_NPE_FW_MTD=y
+CONFIG_IXP4XX_MAC=y
+CONFIG_IXP4XX_CRYPTO=m
+# CONFIG_HAPPYMEAL is not set
+# CONFIG_SUNGEM is not set
+# CONFIG_CASSINI is not set
+# CONFIG_NET_VENDOR_3COM is not set
+# CONFIG_SMC91X is not set
+# CONFIG_DM9000 is not set
+
+#
+# Tulip family network device support
+#
+# 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 is not set
+# 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
+
+#
+# Ethernet (1000 Mbit)
+#
+# CONFIG_ACENIC is not set
+# CONFIG_DL2K is not set
+# CONFIG_E1000 is not set
+# CONFIG_NS83820 is not set
+# CONFIG_HAMACHI is not set
+# CONFIG_YELLOWFIN is not set
+CONFIG_R8169=m
+# CONFIG_R8169_NAPI is not set
+CONFIG_R8169_VLAN=y
+# CONFIG_SIS190 is not set
+# CONFIG_SKGE is not set
+# CONFIG_SKY2 is not set
+# CONFIG_SK98LIN is not set
+CONFIG_VIA_VELOCITY=y
+# CONFIG_TIGON3 is not set
+# CONFIG_BNX2 is not set
+# CONFIG_QLA3XXX is not set
+# CONFIG_ATL1 is not set
+
+#
+# Ethernet (10000 Mbit)
+#
+# 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
+
+#
+# Token Ring devices
+#
+# CONFIG_TR is not set
+
+#
+# Wireless LAN (non-hamradio)
+#
+CONFIG_NET_RADIO=y
+# CONFIG_NET_WIRELESS_RTNETLINK is not set
+
+#
+# Obsolete Wireless cards support (pre-802.11)
+#
+# CONFIG_STRIP is not set
+
+#
+# Wireless 802.11b ISA/PCI cards support
+#
+# CONFIG_IPW2100 is not set
+# CONFIG_IPW2200 is not set
+# CONFIG_HERMES is not set
+# CONFIG_ATMEL is not set
+
+#
+# Prism GT/Duette 802.11(a/b/g) PCI/Cardbus support
+#
+# CONFIG_PRISM54 is not set
+# CONFIG_USB_ZD1201 is not set
+# CONFIG_HOSTAP is not set
+# CONFIG_BCM43XX is not set
+CONFIG_ZD1211RW=m
+# CONFIG_ZD1211RW_DEBUG is not set
+CONFIG_NET_WIRELESS=y
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+# CONFIG_FDDI is not set
+# CONFIG_HIPPI is not set
+CONFIG_PPP=m
+# CONFIG_PPP_MULTILINK is not set
+CONFIG_PPP_FILTER=y
+CONFIG_PPP_ASYNC=m
+CONFIG_PPP_SYNC_TTY=m
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+CONFIG_PPP_MPPE=m
+CONFIG_PPPOE=m
+# CONFIG_SLIP is not set
+CONFIG_SLHC=m
+# CONFIG_NET_FC is not set
+# CONFIG_SHAPER is not set
+CONFIG_NETCONSOLE=m
+CONFIG_NETPOLL=y
+# CONFIG_NETPOLL_TRAP is not set
+CONFIG_NET_POLL_CONTROLLER=y
+
+#
+# ISDN subsystem
+#
+# CONFIG_ISDN is not set
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS is not set
+
+#
+# Userland interfaces
+#
+# CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_TSDEV is not set
+CONFIG_INPUT_EVDEV=y
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# Input Device Drivers
+#
+# CONFIG_INPUT_KEYBOARD is not set
+# CONFIG_INPUT_MOUSE is not set
+# CONFIG_INPUT_JOYSTICK is not set
+# CONFIG_INPUT_TOUCHSCREEN is not set
+CONFIG_INPUT_MISC=y
+CONFIG_INPUT_IXP4XX_BEEPER=y
+CONFIG_INPUT_UINPUT=m
+
+#
+# Hardware I/O ports
+#
+# CONFIG_SERIO is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+# CONFIG_VT is not set
+CONFIG_SERIAL_NONSTANDARD=y
+# CONFIG_COMPUTONE is not set
+# CONFIG_ROCKETPORT is not set
+# CONFIG_CYCLADES is not set
+# CONFIG_DIGIEPCA is not set
+# CONFIG_MOXA_INTELLIO is not set
+# CONFIG_MOXA_SMARTIO is not set
+# CONFIG_MOXA_SMARTIO_NEW is not set
+# CONFIG_ISI is not set
+# CONFIG_SYNCLINKMP is not set
+# CONFIG_SYNCLINK_GT is not set
+CONFIG_N_HDLC=m
+# CONFIG_RISCOM8 is not set
+# CONFIG_SPECIALIX is not set
+# CONFIG_SX is not set
+# CONFIG_RIO is not set
+# CONFIG_STALDRV is not set
+
+#
+# Serial drivers
+#
+CONFIG_SERIAL_8250=y
+CONFIG_SERIAL_8250_CONSOLE=y
+CONFIG_SERIAL_8250_PCI=m
+CONFIG_SERIAL_8250_NR_UARTS=2
+CONFIG_SERIAL_8250_RUNTIME_UARTS=2
+# CONFIG_SERIAL_8250_EXTENDED is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+# CONFIG_SERIAL_JSM is not set
+CONFIG_UNIX98_PTYS=y
+# CONFIG_LEGACY_PTYS is not set
+
+#
+# IPMI
+#
+# CONFIG_IPMI_HANDLER is not set
+
+#
+# Watchdog Cards
+#
+CONFIG_WATCHDOG=y
+# CONFIG_WATCHDOG_NOWAYOUT is not set
+
+#
+# Watchdog Device Drivers
+#
+# CONFIG_SOFT_WATCHDOG is not set
+CONFIG_IXP4XX_WATCHDOG=m
+
+#
+# PCI-based Watchdog Cards
+#
+# CONFIG_PCIPCWATCHDOG is not set
+# CONFIG_WDTPCI is not set
+
+#
+# USB-based Watchdog Cards
+#
+# CONFIG_USBPCWATCHDOG is not set
+CONFIG_HW_RANDOM=y
+CONFIG_HW_RANDOM_IXP4XX=y
+# CONFIG_NVRAM is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+# CONFIG_APPLICOM is not set
+# CONFIG_DRM is not set
+# CONFIG_RAW_DRIVER is not set
+
+#
+# TPM devices
+#
+# CONFIG_TCG_TPM is not set
+
+#
+# I2C support
+#
+CONFIG_I2C=y
+CONFIG_I2C_CHARDEV=y
+
+#
+# I2C Algorithms
+#
+CONFIG_I2C_ALGOBIT=y
+# CONFIG_I2C_ALGOPCF is not set
+# CONFIG_I2C_ALGOPCA is not set
+
+#
+# I2C Hardware Bus support
+#
+# CONFIG_I2C_ALI1535 is not set
+# CONFIG_I2C_ALI1563 is not set
+# CONFIG_I2C_ALI15X3 is not set
+# CONFIG_I2C_AMD756 is not set
+# CONFIG_I2C_AMD8111 is not set
+# CONFIG_I2C_I801 is not set
+# CONFIG_I2C_I810 is not set
+# CONFIG_I2C_PIIX4 is not set
+# CONFIG_I2C_IOP3XX is not set
+CONFIG_I2C_ISA=m
+CONFIG_I2C_IXP4XX=y
+# CONFIG_I2C_NFORCE2 is not set
+# CONFIG_I2C_OCORES is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_PROSAVAGE is not set
+# CONFIG_I2C_SAVAGE4 is not set
+# CONFIG_I2C_SIS5595 is not set
+# CONFIG_I2C_SIS630 is not set
+# CONFIG_I2C_SIS96X is not set
+# CONFIG_I2C_STUB is not set
+# CONFIG_I2C_VIA is not set
+# CONFIG_I2C_VIAPRO is not set
+# CONFIG_I2C_VOODOO3 is not set
+# CONFIG_I2C_PCA_ISA is not set
+
+#
+# Miscellaneous I2C Chip support
+#
+# CONFIG_SENSORS_DS1337 is not set
+# CONFIG_SENSORS_DS1374 is not set
+CONFIG_SENSORS_EEPROM=y
+CONFIG_SENSORS_PCF8574=m
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_SENSORS_MAX6875 is not set
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CHIP is not set
+
+#
+# SPI support
+#
+# CONFIG_SPI is not set
+# CONFIG_SPI_MASTER is not set
+
+#
+# Dallas's 1-wire bus
+#
+CONFIG_W1=m
+
+#
+# 1-wire Bus Masters
+#
+# CONFIG_W1_MASTER_MATROX is not set
+CONFIG_W1_MASTER_DS2490=m
+CONFIG_W1_MASTER_DS2482=m
+
+#
+# 1-wire Slaves
+#
+CONFIG_W1_SLAVE_THERM=m
+CONFIG_W1_SLAVE_SMEM=m
+CONFIG_W1_SLAVE_DS2433=m
+CONFIG_W1_SLAVE_DS2433_CRC=y
+
+#
+# Hardware Monitoring support
+#
+CONFIG_HWMON=m
+CONFIG_HWMON_VID=m
+# CONFIG_SENSORS_ABITUGURU is not set
+# CONFIG_SENSORS_ADM1021 is not set
+# CONFIG_SENSORS_ADM1025 is not set
+# CONFIG_SENSORS_ADM1026 is not set
+# CONFIG_SENSORS_ADM1029 is not set
+# CONFIG_SENSORS_ADM1031 is not set
+# CONFIG_SENSORS_ADM9240 is not set
+# CONFIG_SENSORS_ASB100 is not set
+# CONFIG_SENSORS_ATXP1 is not set
+# CONFIG_SENSORS_DS1621 is not set
+# CONFIG_SENSORS_F71805F is not set
+# CONFIG_SENSORS_FSCHER is not set
+# CONFIG_SENSORS_FSCPOS is not set
+# CONFIG_SENSORS_GL518SM is not set
+# CONFIG_SENSORS_GL520SM is not set
+# CONFIG_SENSORS_IT87 is not set
+# CONFIG_SENSORS_LM63 is not set
+# CONFIG_SENSORS_LM75 is not set
+# CONFIG_SENSORS_LM77 is not set
+# CONFIG_SENSORS_LM78 is not set
+# CONFIG_SENSORS_LM80 is not set
+# CONFIG_SENSORS_LM83 is not set
+# CONFIG_SENSORS_LM85 is not set
+# CONFIG_SENSORS_LM87 is not set
+# CONFIG_SENSORS_LM90 is not set
+# CONFIG_SENSORS_LM92 is not set
+# CONFIG_SENSORS_MAX1619 is not set
+# CONFIG_SENSORS_PC87360 is not set
+# CONFIG_SENSORS_PC87427 is not set
+# CONFIG_SENSORS_SIS5595 is not set
+# CONFIG_SENSORS_SMSC47M1 is not set
+# CONFIG_SENSORS_SMSC47M192 is not set
+# CONFIG_SENSORS_SMSC47B397 is not set
+# CONFIG_SENSORS_VIA686A is not set
+# CONFIG_SENSORS_VT1211 is not set
+# CONFIG_SENSORS_VT8231 is not set
+CONFIG_SENSORS_W83781D=m
+# CONFIG_SENSORS_W83791D is not set
+# CONFIG_SENSORS_W83792D is not set
+# CONFIG_SENSORS_W83793 is not set
+# CONFIG_SENSORS_W83L785TS is not set
+# CONFIG_SENSORS_W83627HF is not set
+# CONFIG_SENSORS_W83627EHF is not set
+CONFIG_SENSORS_AD7418=m
+# CONFIG_HWMON_DEBUG_CHIP is not set
+
+#
+# Misc devices
+#
+# CONFIG_SGI_IOC4 is not set
+# CONFIG_TIFM_CORE is not set
+
+#
+# Multifunction device drivers
+#
+# CONFIG_MFD_SM501 is not set
+
+#
+# LED devices
+#
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+
+#
+# LED drivers
+#
+CONFIG_LEDS_IXP4XX=y
+
+#
+# LED Triggers
+#
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=y
+CONFIG_LEDS_TRIGGER_HEARTBEAT=y
+CONFIG_LEDS_TRIGGER_CPU_ACTIVITY=y
+
+#
+# Multimedia devices
+#
+CONFIG_VIDEO_DEV=m
+CONFIG_VIDEO_V4L1=y
+CONFIG_VIDEO_V4L1_COMPAT=y
+CONFIG_VIDEO_V4L2=y
+
+#
+# Video Capture Adapters
+#
+
+#
+# Video Capture Adapters
+#
+# CONFIG_VIDEO_ADV_DEBUG is not set
+CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
+CONFIG_VIDEO_TDA9840=m
+CONFIG_VIDEO_TEA6415C=m
+CONFIG_VIDEO_TEA6420=m
+CONFIG_VIDEO_MSP3400=m
+CONFIG_VIDEO_WM8775=m
+CONFIG_VIDEO_BT819=m
+CONFIG_VIDEO_BT856=m
+CONFIG_VIDEO_KS0127=m
+CONFIG_VIDEO_OV7670=m
+CONFIG_VIDEO_SAA7110=m
+CONFIG_VIDEO_SAA7111=m
+CONFIG_VIDEO_SAA7114=m
+CONFIG_VIDEO_SAA711X=m
+CONFIG_VIDEO_TVP5150=m
+CONFIG_VIDEO_VPX3220=m
+CONFIG_VIDEO_CX25840=m
+CONFIG_VIDEO_CX2341X=m
+CONFIG_VIDEO_SAA7185=m
+CONFIG_VIDEO_ADV7170=m
+CONFIG_VIDEO_ADV7175=m
+CONFIG_VIDEO_VIVI=m
+# CONFIG_VIDEO_BT848 is not set
+CONFIG_VIDEO_CPIA=m
+CONFIG_VIDEO_CPIA_USB=m
+CONFIG_VIDEO_CPIA2=m
+CONFIG_VIDEO_SAA5246A=m
+CONFIG_VIDEO_SAA5249=m
+CONFIG_TUNER_3036=m
+CONFIG_VIDEO_STRADIS=m
+CONFIG_VIDEO_ZORAN_ZR36060=m
+CONFIG_VIDEO_ZORAN=m
+CONFIG_VIDEO_ZORAN_BUZ=m
+CONFIG_VIDEO_ZORAN_DC10=m
+CONFIG_VIDEO_ZORAN_DC30=m
+CONFIG_VIDEO_ZORAN_LML33=m
+CONFIG_VIDEO_ZORAN_LML33R10=m
+CONFIG_VIDEO_ZORAN_AVS6EYES=m
+CONFIG_VIDEO_SAA7134=m
+CONFIG_VIDEO_SAA7134_ALSA=m
+CONFIG_VIDEO_MXB=m
+CONFIG_VIDEO_DPC=m
+CONFIG_VIDEO_HEXIUM_ORION=m
+CONFIG_VIDEO_HEXIUM_GEMINI=m
+CONFIG_VIDEO_CX88=m
+CONFIG_VIDEO_CX88_ALSA=m
+CONFIG_VIDEO_CX88_BLACKBIRD=m
+CONFIG_VIDEO_CAFE_CCIC=m
+
+#
+# V4L USB devices
+#
+CONFIG_VIDEO_PVRUSB2=m
+CONFIG_VIDEO_PVRUSB2_29XXX=y
+CONFIG_VIDEO_PVRUSB2_24XXX=y
+CONFIG_VIDEO_PVRUSB2_SYSFS=y
+# CONFIG_VIDEO_PVRUSB2_DEBUGIFC is not set
+CONFIG_VIDEO_EM28XX=m
+CONFIG_VIDEO_USBVISION=m
+CONFIG_VIDEO_USBVIDEO=m
+CONFIG_USB_VICAM=m
+CONFIG_USB_IBMCAM=m
+CONFIG_USB_KONICAWC=m
+CONFIG_USB_QUICKCAM_MESSENGER=m
+CONFIG_USB_ET61X251=m
+CONFIG_VIDEO_OVCAMCHIP=m
+CONFIG_USB_W9968CF=m
+CONFIG_USB_OV511=m
+CONFIG_USB_SE401=m
+CONFIG_USB_SN9C102=m
+CONFIG_USB_STV680=m
+CONFIG_USB_ZC0301=m
+CONFIG_USB_PWC=m
+# CONFIG_USB_PWC_DEBUG is not set
+
+#
+# Radio Adapters
+#
+# CONFIG_RADIO_GEMTEK_PCI is not set
+# CONFIG_RADIO_MAXIRADIO is not set
+# CONFIG_RADIO_MAESTRO is not set
+CONFIG_USB_DSBR=m
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB is not set
+CONFIG_VIDEO_SAA7146=m
+CONFIG_VIDEO_SAA7146_VV=m
+CONFIG_VIDEO_TUNER=m
+CONFIG_VIDEO_BUF=m
+CONFIG_VIDEO_BTCX=m
+CONFIG_VIDEO_IR=m
+CONFIG_VIDEO_TVEEPROM=m
+# CONFIG_USB_DABUSB is not set
+
+#
+# Graphics support
+#
+# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
+# CONFIG_FB is not set
+
+#
+# Sound
+#
+CONFIG_SOUND=m
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=m
+CONFIG_SND_TIMER=m
+CONFIG_SND_PCM=m
+CONFIG_SND_HWDEP=m
+CONFIG_SND_RAWMIDI=m
+CONFIG_SND_SEQUENCER=m
+CONFIG_SND_SEQ_DUMMY=m
+CONFIG_SND_OSSEMUL=y
+CONFIG_SND_MIXER_OSS=m
+CONFIG_SND_PCM_OSS=m
+CONFIG_SND_PCM_OSS_PLUGINS=y
+# CONFIG_SND_SEQUENCER_OSS is not set
+# CONFIG_SND_DYNAMIC_MINORS is not set
+CONFIG_SND_SUPPORT_OLD_API=y
+CONFIG_SND_VERBOSE_PROCFS=y
+# CONFIG_SND_VERBOSE_PRINTK is not set
+# CONFIG_SND_DEBUG is not set
+
+#
+# Generic devices
+#
+# CONFIG_SND_DUMMY is not set
+# CONFIG_SND_VIRMIDI is not set
+# CONFIG_SND_MTPAV is not set
+# CONFIG_SND_SERIAL_U16550 is not set
+# CONFIG_SND_MPU401 is not set
+
+#
+# PCI devices
+#
+# CONFIG_SND_AD1889 is not set
+# CONFIG_SND_ALS300 is not set
+# CONFIG_SND_ALI5451 is not set
+# CONFIG_SND_ATIIXP is not set
+# CONFIG_SND_ATIIXP_MODEM is not set
+# CONFIG_SND_AU8810 is not set
+# CONFIG_SND_AU8820 is not set
+# CONFIG_SND_AU8830 is not set
+# CONFIG_SND_AZT3328 is not set
+# CONFIG_SND_BT87X is not set
+# CONFIG_SND_CA0106 is not set
+# CONFIG_SND_CMIPCI is not set
+# CONFIG_SND_CS4281 is not set
+# CONFIG_SND_CS46XX is not set
+# CONFIG_SND_DARLA20 is not set
+# CONFIG_SND_GINA20 is not set
+# CONFIG_SND_LAYLA20 is not set
+# CONFIG_SND_DARLA24 is not set
+# CONFIG_SND_GINA24 is not set
+# CONFIG_SND_LAYLA24 is not set
+# CONFIG_SND_MONA is not set
+# CONFIG_SND_MIA is not set
+# CONFIG_SND_ECHO3G is not set
+# CONFIG_SND_INDIGO is not set
+# CONFIG_SND_INDIGOIO is not set
+# CONFIG_SND_INDIGODJ is not set
+# CONFIG_SND_EMU10K1 is not set
+# CONFIG_SND_EMU10K1X is not set
+# CONFIG_SND_ENS1370 is not set
+# CONFIG_SND_ENS1371 is not set
+# CONFIG_SND_ES1938 is not set
+# CONFIG_SND_ES1968 is not set
+# CONFIG_SND_FM801 is not set
+# CONFIG_SND_HDA_INTEL is not set
+# CONFIG_SND_HDSP is not set
+# CONFIG_SND_HDSPM is not set
+# CONFIG_SND_ICE1712 is not set
+# CONFIG_SND_ICE1724 is not set
+# CONFIG_SND_INTEL8X0 is not set
+# CONFIG_SND_INTEL8X0M is not set
+# CONFIG_SND_KORG1212 is not set
+# CONFIG_SND_MAESTRO3 is not set
+# CONFIG_SND_MIXART is not set
+# CONFIG_SND_NM256 is not set
+# CONFIG_SND_PCXHR is not set
+# CONFIG_SND_RIPTIDE is not set
+# CONFIG_SND_RME32 is not set
+# CONFIG_SND_RME96 is not set
+# CONFIG_SND_RME9652 is not set
+# CONFIG_SND_SONICVIBES is not set
+# CONFIG_SND_TRIDENT is not set
+# CONFIG_SND_VIA82XX is not set
+# CONFIG_SND_VIA82XX_MODEM is not set
+# CONFIG_SND_VX222 is not set
+# CONFIG_SND_YMFPCI is not set
+
+#
+# ALSA ARM devices
+#
+
+#
+# USB devices
+#
+CONFIG_SND_USB_AUDIO=m
+
+#
+# SoC audio support
+#
+# CONFIG_SND_SOC is not set
+
+#
+# Open Sound System
+#
+# CONFIG_SOUND_PRIME is not set
+
+#
+# HID Devices
+#
+CONFIG_HID=m
+# CONFIG_HID_DEBUG is not set
+
+#
+# USB support
+#
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB_ARCH_HAS_OHCI=y
+CONFIG_USB_ARCH_HAS_EHCI=y
+CONFIG_USB=y
+# CONFIG_USB_DEBUG is not set
+
+#
+# Miscellaneous USB options
+#
+CONFIG_USB_DEVICEFS=y
+# CONFIG_USB_DYNAMIC_MINORS is not set
+# CONFIG_USB_OTG is not set
+
+#
+# USB Host Controller Drivers
+#
+CONFIG_USB_EHCI_HCD=y
+CONFIG_USB_EHCI_SPLIT_ISO=y
+CONFIG_USB_EHCI_ROOT_HUB_TT=y
+CONFIG_USB_EHCI_TT_NEWSCHED=y
+# CONFIG_USB_EHCI_BIG_ENDIAN_MMIO is not set
+# CONFIG_USB_ISP116X_HCD is not set
+CONFIG_USB_OHCI_HCD=y
+# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
+# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+CONFIG_USB_UHCI_HCD=y
+# CONFIG_USB_U132_HCD is not set
+# CONFIG_USB_SL811_HCD is not set
+
+#
+# USB Device Class drivers
+#
+CONFIG_USB_ACM=m
+CONFIG_USB_PRINTER=m
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# may also be needed; see USB_STORAGE Help for more information
+#
+CONFIG_USB_STORAGE=y
+# CONFIG_USB_STORAGE_DEBUG is not set
+# CONFIG_USB_STORAGE_DATAFAB is not set
+CONFIG_USB_STORAGE_FREECOM=y
+# CONFIG_USB_STORAGE_DPCM is not set
+# CONFIG_USB_STORAGE_USBAT is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_SDDR55 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+# CONFIG_USB_STORAGE_ALAUDA is not set
+CONFIG_USB_STORAGE_ONETOUCH=y
+CONFIG_USB_STORAGE_KARMA=y
+# CONFIG_USB_LIBUSUAL is not set
+
+#
+# USB Input Devices
+#
+CONFIG_USB_HID=m
+# CONFIG_USB_HIDINPUT_POWERBOOK is not set
+# CONFIG_HID_FF is not set
+CONFIG_USB_HIDDEV=y
+
+#
+# USB HID Boot Protocol drivers
+#
+CONFIG_USB_KBD=m
+# CONFIG_USB_MOUSE is not set
+# CONFIG_USB_AIPTEK is not set
+# CONFIG_USB_WACOM is not set
+# CONFIG_USB_ACECAD is not set
+# CONFIG_USB_KBTAB is not set
+# CONFIG_USB_POWERMATE is not set
+# CONFIG_USB_TOUCHSCREEN is not set
+CONFIG_USB_YEALINK=m
+# CONFIG_USB_XPAD is not set
+CONFIG_USB_ATI_REMOTE=m
+CONFIG_USB_ATI_REMOTE2=m
+CONFIG_USB_KEYSPAN_REMOTE=m
+# CONFIG_USB_APPLETOUCH is not set
+# CONFIG_USB_GTCO is not set
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_MICROTEK is not set
+
+#
+# USB Network Adapters
+#
+CONFIG_USB_CATC=m
+CONFIG_USB_KAWETH=m
+CONFIG_USB_PEGASUS=m
+CONFIG_USB_RTL8150=m
+CONFIG_USB_USBNET_MII=m
+CONFIG_USB_USBNET=m
+CONFIG_USB_NET_AX8817X=m
+CONFIG_USB_NET_CDCETHER=m
+CONFIG_USB_NET_DM9601=m
+CONFIG_USB_NET_GL620A=m
+CONFIG_USB_NET_NET1080=m
+CONFIG_USB_NET_PLUSB=m
+CONFIG_USB_NET_MCS7830=m
+CONFIG_USB_NET_RNDIS_HOST=m
+CONFIG_USB_NET_CDC_SUBSET=m
+CONFIG_USB_ALI_M5632=y
+CONFIG_USB_AN2720=y
+CONFIG_USB_BELKIN=y
+CONFIG_USB_ARMLINUX=y
+CONFIG_USB_EPSON2888=y
+CONFIG_USB_KC2190=y
+CONFIG_USB_NET_ZAURUS=m
+# CONFIG_USB_MON is not set
+
+#
+# USB port drivers
+#
+
+#
+# USB Serial Converter support
+#
+CONFIG_USB_SERIAL=m
+CONFIG_USB_SERIAL_GENERIC=y
+CONFIG_USB_SERIAL_AIRCABLE=m
+# CONFIG_USB_SERIAL_AIRPRIME is not set
+CONFIG_USB_SERIAL_ARK3116=m
+CONFIG_USB_SERIAL_BELKIN=m
+CONFIG_USB_SERIAL_WHITEHEAT=m
+CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
+CONFIG_USB_SERIAL_CP2101=m
+CONFIG_USB_SERIAL_CYPRESS_M8=m
+CONFIG_USB_SERIAL_EMPEG=m
+CONFIG_USB_SERIAL_FTDI_SIO=m
+CONFIG_USB_SERIAL_FUNSOFT=m
+CONFIG_USB_SERIAL_VISOR=m
+CONFIG_USB_SERIAL_IPAQ=m
+CONFIG_USB_SERIAL_IR=m
+CONFIG_USB_SERIAL_EDGEPORT=m
+CONFIG_USB_SERIAL_EDGEPORT_TI=m
+CONFIG_USB_SERIAL_GARMIN=m
+CONFIG_USB_SERIAL_IPW=m
+CONFIG_USB_SERIAL_KEYSPAN_PDA=m
+CONFIG_USB_SERIAL_KEYSPAN=m
+CONFIG_USB_SERIAL_KEYSPAN_MPR=y
+CONFIG_USB_SERIAL_KEYSPAN_USA28=y
+CONFIG_USB_SERIAL_KEYSPAN_USA28X=y
+CONFIG_USB_SERIAL_KEYSPAN_USA28XA=y
+CONFIG_USB_SERIAL_KEYSPAN_USA28XB=y
+CONFIG_USB_SERIAL_KEYSPAN_USA19=y
+CONFIG_USB_SERIAL_KEYSPAN_USA18X=y
+CONFIG_USB_SERIAL_KEYSPAN_USA19W=y
+CONFIG_USB_SERIAL_KEYSPAN_USA19QW=y
+CONFIG_USB_SERIAL_KEYSPAN_USA19QI=y
+CONFIG_USB_SERIAL_KEYSPAN_USA49W=y
+CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y
+CONFIG_USB_SERIAL_KLSI=m
+CONFIG_USB_SERIAL_KOBIL_SCT=m
+CONFIG_USB_SERIAL_MCT_U232=m
+CONFIG_USB_SERIAL_MOS7720=m
+CONFIG_USB_SERIAL_MOS7840=m
+CONFIG_USB_SERIAL_NAVMAN=m
+CONFIG_USB_SERIAL_PL2303=m
+# CONFIG_USB_SERIAL_HP4X is not set
+CONFIG_USB_SERIAL_SAFE=m
+# CONFIG_USB_SERIAL_SAFE_PADDED is not set
+# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set
+CONFIG_USB_SERIAL_TI=m
+CONFIG_USB_SERIAL_CYBERJACK=m
+CONFIG_USB_SERIAL_XIRCOM=m
+# CONFIG_USB_SERIAL_OPTION is not set
+CONFIG_USB_SERIAL_OMNINET=m
+# CONFIG_USB_SERIAL_DEBUG is not set
+CONFIG_USB_EZUSB=y
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_EMI62 is not set
+# CONFIG_USB_EMI26 is not set
+CONFIG_USB_ADUTUX=m
+# CONFIG_USB_AUERSWALD is not set
+CONFIG_USB_RIO500=m
+CONFIG_USB_LEGOTOWER=m
+CONFIG_USB_LCD=m
+CONFIG_USB_BERRY_CHARGE=m
+CONFIG_USB_LED=m
+# CONFIG_USB_CYPRESS_CY7C63 is not set
+# CONFIG_USB_CYTHERM is not set
+CONFIG_USB_PHIDGET=m
+CONFIG_USB_PHIDGETKIT=m
+CONFIG_USB_PHIDGETMOTORCONTROL=m
+CONFIG_USB_PHIDGETSERVO=m
+# CONFIG_USB_IDMOUSE is not set
+CONFIG_USB_FTDI_ELAN=m
+# CONFIG_USB_APPLEDISPLAY is not set
+CONFIG_USB_SISUSBVGA=m
+# CONFIG_USB_LD is not set
+# CONFIG_USB_TRANCEVIBRATOR is not set
+# CONFIG_USB_IOWARRIOR is not set
+# CONFIG_USB_TEST is not set
+
+#
+# USB DSL modem support
+#
+
+#
+# USB Gadget Support
+#
+# CONFIG_USB_GADGET is not set
+
+#
+# MMC/SD Card support
+#
+# CONFIG_MMC is not set
+
+#
+# Real Time Clock
+#
+CONFIG_RTC_LIB=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_HCTOSYS=y
+CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
+# CONFIG_RTC_DEBUG is not set
+
+#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=y
+CONFIG_RTC_INTF_PROC=y
+CONFIG_RTC_INTF_DEV=y
+# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
+
+#
+# RTC drivers
+#
+# CONFIG_RTC_DRV_CMOS is not set
+CONFIG_RTC_DRV_X1205=y
+CONFIG_RTC_DRV_DS1307=y
+# CONFIG_RTC_DRV_DS1553 is not set
+CONFIG_RTC_DRV_ISL1208=y
+CONFIG_RTC_DRV_DS1672=y
+# CONFIG_RTC_DRV_DS1742 is not set
+CONFIG_RTC_DRV_PCF8563=y
+# CONFIG_RTC_DRV_RS5C372 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
+# CONFIG_RTC_DRV_TEST is not set
+# CONFIG_RTC_DRV_V3020 is not set
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=y
+CONFIG_EXT2_FS_XATTR=y
+CONFIG_EXT2_FS_POSIX_ACL=y
+CONFIG_EXT2_FS_SECURITY=y
+# CONFIG_EXT2_FS_XIP is not set
+CONFIG_EXT3_FS=y
+CONFIG_EXT3_FS_XATTR=y
+CONFIG_EXT3_FS_POSIX_ACL=y
+CONFIG_EXT3_FS_SECURITY=y
+# CONFIG_EXT4DEV_FS is not set
+CONFIG_JBD=y
+# CONFIG_JBD_DEBUG is not set
+CONFIG_FS_MBCACHE=y
+CONFIG_REISERFS_FS=y
+# CONFIG_REISERFS_CHECK is not set
+# CONFIG_REISERFS_PROC_INFO is not set
+CONFIG_REISERFS_FS_XATTR=y
+CONFIG_REISERFS_FS_POSIX_ACL=y
+CONFIG_REISERFS_FS_SECURITY=y
+# CONFIG_JFS_FS is not set
+CONFIG_FS_POSIX_ACL=y
+# CONFIG_XFS_FS is not set
+# CONFIG_GFS2_FS is not set
+# CONFIG_OCFS2_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+# CONFIG_QUOTA is not set
+CONFIG_DNOTIFY=y
+# CONFIG_AUTOFS_FS is not set
+CONFIG_AUTOFS4_FS=m
+CONFIG_FUSE_FS=m
+
+#
+# CD-ROM/DVD Filesystems
+#
+CONFIG_ISO9660_FS=m
+CONFIG_JOLIET=y
+CONFIG_ZISOFS=y
+CONFIG_UDF_FS=m
+CONFIG_UDF_NLS=y
+
+#
+# DOS/FAT/NT Filesystems
+#
+CONFIG_FAT_FS=m
+CONFIG_MSDOS_FS=m
+CONFIG_VFAT_FS=m
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="utf8"
+CONFIG_NTFS_FS=m
+# CONFIG_NTFS_DEBUG is not set
+CONFIG_NTFS_RW=y
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_TMPFS_POSIX_ACL is not set
+# CONFIG_HUGETLB_PAGE is not set
+CONFIG_RAMFS=y
+# CONFIG_CONFIGFS_FS is not set
+
+#
+# Miscellaneous filesystems
+#
+# CONFIG_ADFS_FS is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_HFS_FS is not set
+# CONFIG_HFSPLUS_FS is not set
+# CONFIG_BEFS_FS is not set
+# CONFIG_BFS_FS is not set
+# CONFIG_EFS_FS is not set
+CONFIG_JFFS2_FS=y
+CONFIG_JFFS2_FS_DEBUG=0
+CONFIG_JFFS2_FS_WRITEBUFFER=y
+# CONFIG_JFFS2_SUMMARY is not set
+# CONFIG_JFFS2_FS_XATTR is not set
+# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
+CONFIG_JFFS2_ZLIB=y
+CONFIG_JFFS2_RTIME=y
+# CONFIG_JFFS2_RUBIN is not set
+# CONFIG_CRAMFS is not set
+CONFIG_SQUASHFS=m
+# CONFIG_SQUASHFS_EMBEDDED is not set
+CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
+# CONFIG_SQUASHFS_VMALLOC is not set
+# CONFIG_VXFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+
+#
+# Network File Systems
+#
+CONFIG_NFS_FS=y
+CONFIG_NFS_V3=y
+# CONFIG_NFS_V3_ACL is not set
+# CONFIG_NFS_V4 is not set
+# CONFIG_NFS_DIRECTIO is not set
+CONFIG_NFSD=m
+CONFIG_NFSD_V3=y
+# CONFIG_NFSD_V3_ACL is not set
+CONFIG_NFSD_V4=y
+CONFIG_NFSD_TCP=y
+CONFIG_ROOT_NFS=y
+CONFIG_LOCKD=y
+CONFIG_LOCKD_V4=y
+CONFIG_EXPORTFS=m
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=y
+CONFIG_SUNRPC_GSS=y
+CONFIG_RPCSEC_GSS_KRB5=y
+# CONFIG_RPCSEC_GSS_SPKM3 is not set
+CONFIG_SMB_FS=m
+# CONFIG_SMB_NLS_DEFAULT is not set
+CONFIG_CIFS=m
+# CONFIG_CIFS_STATS is not set
+# CONFIG_CIFS_WEAK_PW_HASH is not set
+CONFIG_CIFS_XATTR=y
+CONFIG_CIFS_POSIX=y
+# CONFIG_CIFS_DEBUG2 is not set
+# CONFIG_CIFS_EXPERIMENTAL is not set
+# CONFIG_NCP_FS is not set
+# CONFIG_CODA_FS is not set
+# CONFIG_AFS_FS is not set
+# CONFIG_9P_FS is not set
+
+#
+# Partition Types
+#
+CONFIG_PARTITION_ADVANCED=y
+# CONFIG_ACORN_PARTITION is not set
+# CONFIG_OSF_PARTITION is not set
+# CONFIG_AMIGA_PARTITION is not set
+# CONFIG_ATARI_PARTITION is not set
+# CONFIG_MAC_PARTITION is not set
+CONFIG_MSDOS_PARTITION=y
+# CONFIG_BSD_DISKLABEL is not set
+# CONFIG_MINIX_SUBPARTITION is not set
+# CONFIG_SOLARIS_X86_PARTITION is not set
+# CONFIG_UNIXWARE_DISKLABEL is not set
+# CONFIG_LDM_PARTITION is not set
+# CONFIG_SGI_PARTITION is not set
+# CONFIG_ULTRIX_PARTITION is not set
+# CONFIG_SUN_PARTITION is not set
+# CONFIG_KARMA_PARTITION is not set
+# CONFIG_EFI_PARTITION is not set
+
+#
+# Native Language Support
+#
+CONFIG_NLS=m
+CONFIG_NLS_DEFAULT="utf8"
+CONFIG_NLS_CODEPAGE_437=m
+CONFIG_NLS_CODEPAGE_737=m
+CONFIG_NLS_CODEPAGE_775=m
+CONFIG_NLS_CODEPAGE_850=m
+CONFIG_NLS_CODEPAGE_852=m
+CONFIG_NLS_CODEPAGE_855=m
+CONFIG_NLS_CODEPAGE_857=m
+CONFIG_NLS_CODEPAGE_860=m
+CONFIG_NLS_CODEPAGE_861=m
+CONFIG_NLS_CODEPAGE_862=m
+CONFIG_NLS_CODEPAGE_863=m
+CONFIG_NLS_CODEPAGE_864=m
+CONFIG_NLS_CODEPAGE_865=m
+CONFIG_NLS_CODEPAGE_866=m
+CONFIG_NLS_CODEPAGE_869=m
+CONFIG_NLS_CODEPAGE_936=m
+CONFIG_NLS_CODEPAGE_950=m
+CONFIG_NLS_CODEPAGE_932=m
+CONFIG_NLS_CODEPAGE_949=m
+CONFIG_NLS_CODEPAGE_874=m
+CONFIG_NLS_ISO8859_8=m
+CONFIG_NLS_CODEPAGE_1250=m
+CONFIG_NLS_CODEPAGE_1251=m
+CONFIG_NLS_ASCII=m
+CONFIG_NLS_ISO8859_1=m
+CONFIG_NLS_ISO8859_2=m
+CONFIG_NLS_ISO8859_3=m
+CONFIG_NLS_ISO8859_4=m
+CONFIG_NLS_ISO8859_5=m
+CONFIG_NLS_ISO8859_6=m
+CONFIG_NLS_ISO8859_7=m
+CONFIG_NLS_ISO8859_9=m
+CONFIG_NLS_ISO8859_13=m
+CONFIG_NLS_ISO8859_14=m
+CONFIG_NLS_ISO8859_15=m
+CONFIG_NLS_KOI8_R=m
+CONFIG_NLS_KOI8_U=m
+CONFIG_NLS_UTF8=m
+
+#
+# Distributed Lock Manager
+#
+# CONFIG_DLM is not set
+
+#
+# Profiling support
+#
+# CONFIG_PROFILING is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+CONFIG_ENABLE_MUST_CHECK=y
+# CONFIG_MAGIC_SYSRQ is not set
+# CONFIG_UNUSED_SYMBOLS is not set
+# CONFIG_DEBUG_FS is not set
+# CONFIG_HEADERS_CHECK is not set
+# CONFIG_DEBUG_KERNEL is not set
+CONFIG_LOG_BUF_SHIFT=14
+# CONFIG_DEBUG_BUGVERBOSE is not set
+CONFIG_FRAME_POINTER=y
+# CONFIG_DEBUG_USER is not set
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+
+#
+# Cryptographic options
+#
+CONFIG_CRYPTO=y
+CONFIG_CRYPTO_ALGAPI=y
+CONFIG_CRYPTO_BLKCIPHER=y
+CONFIG_CRYPTO_HASH=y
+CONFIG_CRYPTO_MANAGER=y
+CONFIG_CRYPTO_HMAC=y
+CONFIG_CRYPTO_XCBC=m
+CONFIG_CRYPTO_NULL=m
+CONFIG_CRYPTO_MD4=m
+CONFIG_CRYPTO_MD5=y
+CONFIG_CRYPTO_SHA1=m
+CONFIG_CRYPTO_SHA256=m
+CONFIG_CRYPTO_SHA512=m
+CONFIG_CRYPTO_WP512=m
+CONFIG_CRYPTO_TGR192=m
+CONFIG_CRYPTO_GF128MUL=m
+CONFIG_CRYPTO_ECB=m
+CONFIG_CRYPTO_CBC=y
+CONFIG_CRYPTO_PCBC=m
+CONFIG_CRYPTO_LRW=m
+CONFIG_CRYPTO_DES=y
+CONFIG_CRYPTO_FCRYPT=m
+CONFIG_CRYPTO_BLOWFISH=m
+CONFIG_CRYPTO_TWOFISH=m
+CONFIG_CRYPTO_TWOFISH_COMMON=m
+CONFIG_CRYPTO_SERPENT=m
+CONFIG_CRYPTO_AES=m
+CONFIG_CRYPTO_CAST5=m
+CONFIG_CRYPTO_CAST6=m
+CONFIG_CRYPTO_TEA=m
+CONFIG_CRYPTO_ARC4=m
+CONFIG_CRYPTO_KHAZAD=m
+CONFIG_CRYPTO_ANUBIS=m
+CONFIG_CRYPTO_DEFLATE=m
+CONFIG_CRYPTO_MICHAEL_MIC=m
+CONFIG_CRYPTO_CRC32C=m
+# CONFIG_CRYPTO_CAMELLIA is not set
+CONFIG_CRYPTO_TEST=m
+
+#
+# Hardware crypto devices
+#
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+CONFIG_CRC_CCITT=m
+CONFIG_CRC16=y
+CONFIG_CRC32=y
+CONFIG_LIBCRC32C=m
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_TEXTSEARCH=y
+CONFIG_TEXTSEARCH_KMP=m
+CONFIG_TEXTSEARCH_BM=m
+CONFIG_TEXTSEARCH_FSM=m
+CONFIG_PLIST=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
diff --git a/packages/linux/linux-ixp4xx/defconfig-2.6.22 b/packages/linux/linux-ixp4xx/defconfig-2.6.22
new file mode 100644
index 0000000000..6eaf4df545
--- /dev/null
+++ b/packages/linux/linux-ixp4xx/defconfig-2.6.22
@@ -0,0 +1,1984 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.22-rc5
+# Sun Jun 24 12:06:23 2007
+#
+CONFIG_ARM=y
+CONFIG_SYS_SUPPORTS_APM_EMULATION=y
+CONFIG_GENERIC_GPIO=y
+CONFIG_GENERIC_TIME=y
+CONFIG_GENERIC_CLOCKEVENTS=y
+CONFIG_MMU=y
+# CONFIG_NO_IOPORT is not set
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_STACKTRACE_SUPPORT=y
+CONFIG_LOCKDEP_SUPPORT=y
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+CONFIG_HARDIRQS_SW_RESEND=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+# CONFIG_ARCH_HAS_ILOG2_U32 is not set
+# CONFIG_ARCH_HAS_ILOG2_U64 is not set
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_ZONE_DMA=y
+CONFIG_VECTORS_BASE=0xffff0000
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+
+#
+# Code maturity level options
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_LOCK_KERNEL=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+
+#
+# General setup
+#
+CONFIG_LOCALVERSION=""
+# CONFIG_LOCALVERSION_AUTO is not set
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=y
+# CONFIG_IPC_NS is not set
+CONFIG_SYSVIPC_SYSCTL=y
+# CONFIG_POSIX_MQUEUE is not set
+# CONFIG_BSD_PROCESS_ACCT is not set
+# CONFIG_TASKSTATS is not set
+# CONFIG_UTS_NS is not set
+# CONFIG_AUDIT is not set
+CONFIG_IKCONFIG=m
+CONFIG_IKCONFIG_PROC=y
+CONFIG_LOG_BUF_SHIFT=14
+CONFIG_SYSFS_DEPRECATED=y
+# CONFIG_RELAY is not set
+# CONFIG_BLK_DEV_INITRD is not set
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_SYSCTL=y
+CONFIG_EMBEDDED=y
+CONFIG_UID16=y
+# CONFIG_SYSCTL_SYSCALL is not set
+# CONFIG_KALLSYMS is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_ANON_INODES=y
+CONFIG_EPOLL=y
+CONFIG_SIGNALFD=y
+CONFIG_TIMERFD=y
+CONFIG_EVENTFD=y
+CONFIG_SHMEM=y
+# CONFIG_VM_EVENT_COUNTERS is not set
+CONFIG_SLAB=y
+# CONFIG_SLUB is not set
+# CONFIG_SLOB is not set
+CONFIG_RT_MUTEXES=y
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=0
+
+#
+# Loadable module support
+#
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+# CONFIG_MODULE_FORCE_UNLOAD is not set
+CONFIG_MODVERSIONS=y
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_KMOD=y
+
+#
+# Block layer
+#
+CONFIG_BLOCK=y
+# CONFIG_LBD is not set
+# CONFIG_BLK_DEV_IO_TRACE is not set
+# CONFIG_LSF is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+# CONFIG_IOSCHED_AS is not set
+CONFIG_IOSCHED_DEADLINE=y
+# CONFIG_IOSCHED_CFQ is not set
+# CONFIG_DEFAULT_AS is not set
+CONFIG_DEFAULT_DEADLINE=y
+# CONFIG_DEFAULT_CFQ is not set
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="deadline"
+
+#
+# System Type
+#
+# CONFIG_ARCH_AAEC2000 is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_VERSATILE is not set
+# CONFIG_ARCH_AT91 is not set
+# CONFIG_ARCH_CLPS7500 is not set
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_CO285 is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_EP93XX is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_NETX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_IOP13XX is not set
+# CONFIG_ARCH_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IXP23XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+CONFIG_ARCH_IXP4XX=y
+# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_KS8695 is not set
+# CONFIG_ARCH_NS9XXX is not set
+# CONFIG_ARCH_PNX4008 is not set
+# CONFIG_ARCH_PXA is not set
+# CONFIG_ARCH_RPC is not set
+# CONFIG_ARCH_SA1100 is not set
+# CONFIG_ARCH_S3C2410 is not set
+# CONFIG_ARCH_SHARK is not set
+# CONFIG_ARCH_LH7A40X is not set
+# CONFIG_ARCH_DAVINCI is not set
+# CONFIG_ARCH_OMAP is not set
+CONFIG_ARCH_SUPPORTS_BIG_ENDIAN=y
+
+#
+# Intel IXP4xx Implementation Options
+#
+
+#
+# IXP4xx Platforms
+#
+CONFIG_MACH_NSLU2=y
+CONFIG_MACH_AVILA=y
+CONFIG_MACH_LOFT=y
+# CONFIG_ARCH_ADI_COYOTE is not set
+CONFIG_ARCH_IXDP425=y
+CONFIG_MACH_IXDPG425=y
+# CONFIG_MACH_IXDP465 is not set
+# CONFIG_MACH_KIXRP435 is not set
+CONFIG_ARCH_IXCDP1100=y
+# CONFIG_ARCH_PRPMC1100 is not set
+CONFIG_MACH_NAS100D=y
+CONFIG_MACH_DSMG600=y
+CONFIG_ARCH_IXDP4XX=y
+CONFIG_MACH_FSG=y
+# CONFIG_MACH_GTWX5715 is not set
+
+#
+# IXP4xx Options
+#
+CONFIG_DMABOUNCE=y
+# CONFIG_IXP4XX_INDIRECT_PCI is not set
+CONFIG_IXP4XX_QMGR=y
+CONFIG_IXP4XX_NPE=y
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+CONFIG_CPU_XSCALE=y
+CONFIG_CPU_32v5=y
+CONFIG_CPU_ABRT_EV5T=y
+CONFIG_CPU_CACHE_VIVT=y
+CONFIG_CPU_TLB_V4WBI=y
+CONFIG_CPU_CP15=y
+CONFIG_CPU_CP15_MMU=y
+
+#
+# Processor Features
+#
+CONFIG_ARM_THUMB=y
+CONFIG_CPU_BIG_ENDIAN=y
+# CONFIG_CPU_DCACHE_DISABLE is not set
+# CONFIG_OUTER_CACHE is not set
+# CONFIG_IWMMXT is not set
+CONFIG_XSCALE_PMU=y
+
+#
+# Bus support
+#
+CONFIG_PCI=y
+# CONFIG_ARCH_SUPPORTS_MSI is not set
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+# CONFIG_PCCARD is not set
+
+#
+# Kernel Features
+#
+CONFIG_TICK_ONESHOT=y
+CONFIG_NO_HZ=y
+CONFIG_HIGH_RES_TIMERS=y
+CONFIG_PREEMPT=y
+CONFIG_HZ=100
+CONFIG_AEABI=y
+CONFIG_OABI_COMPAT=y
+# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
+CONFIG_SELECT_MEMORY_MODEL=y
+CONFIG_FLATMEM_MANUAL=y
+# CONFIG_DISCONTIGMEM_MANUAL is not set
+# CONFIG_SPARSEMEM_MANUAL is not set
+CONFIG_FLATMEM=y
+CONFIG_FLAT_NODE_MEM_MAP=y
+# CONFIG_SPARSEMEM_STATIC is not set
+CONFIG_SPLIT_PTLOCK_CPUS=4096
+# CONFIG_RESOURCES_64BIT is not set
+CONFIG_ZONE_DMA_FLAG=1
+CONFIG_ALIGNMENT_TRAP=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE=" noirqdebug console=ttyS0,115200n8"
+# CONFIG_XIP_KERNEL is not set
+CONFIG_KEXEC=y
+
+#
+# Floating point emulation
+#
+
+#
+# At least one emulation must be selected
+#
+CONFIG_FPE_NWFPE=y
+# CONFIG_FPE_NWFPE_XP is not set
+# CONFIG_FPE_FASTFPE is not set
+
+#
+# Userspace binary formats
+#
+CONFIG_BINFMT_ELF=y
+# CONFIG_BINFMT_AOUT is not set
+# CONFIG_BINFMT_MISC is not set
+# CONFIG_ARTHUR is not set
+
+#
+# Power management options
+#
+# CONFIG_PM is not set
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+CONFIG_PACKET=y
+CONFIG_PACKET_MMAP=y
+CONFIG_UNIX=y
+CONFIG_XFRM=y
+# CONFIG_XFRM_USER is not set
+# CONFIG_XFRM_SUB_POLICY is not set
+# CONFIG_XFRM_MIGRATE is not set
+# CONFIG_NET_KEY is not set
+CONFIG_INET=y
+# CONFIG_IP_MULTICAST is not set
+# CONFIG_IP_ADVANCED_ROUTER is not set
+CONFIG_IP_FIB_HASH=y
+# CONFIG_IP_PNP is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_ARPD is not set
+# CONFIG_SYN_COOKIES is not set
+CONFIG_INET_AH=m
+CONFIG_INET_ESP=m
+CONFIG_INET_IPCOMP=m
+CONFIG_INET_XFRM_TUNNEL=m
+CONFIG_INET_TUNNEL=m
+CONFIG_INET_XFRM_MODE_TRANSPORT=y
+CONFIG_INET_XFRM_MODE_TUNNEL=y
+CONFIG_INET_XFRM_MODE_BEET=m
+CONFIG_INET_DIAG=y
+CONFIG_INET_TCP_DIAG=y
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_CUBIC=y
+CONFIG_DEFAULT_TCP_CONG="cubic"
+# CONFIG_TCP_MD5SIG is not set
+# CONFIG_IP_VS is not set
+CONFIG_IPV6=m
+# CONFIG_IPV6_PRIVACY is not set
+# CONFIG_IPV6_ROUTER_PREF is not set
+# CONFIG_IPV6_OPTIMISTIC_DAD is not set
+CONFIG_INET6_AH=m
+CONFIG_INET6_ESP=m
+CONFIG_INET6_IPCOMP=m
+# CONFIG_IPV6_MIP6 is not set
+CONFIG_INET6_XFRM_TUNNEL=m
+CONFIG_INET6_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_TRANSPORT=m
+CONFIG_INET6_XFRM_MODE_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_BEET=m
+# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
+CONFIG_IPV6_SIT=m
+CONFIG_IPV6_TUNNEL=m
+# CONFIG_IPV6_MULTIPLE_TABLES is not set
+# CONFIG_NETWORK_SECMARK is not set
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+CONFIG_BRIDGE_NETFILTER=y
+
+#
+# Core Netfilter Configuration
+#
+CONFIG_NETFILTER_NETLINK=m
+CONFIG_NETFILTER_NETLINK_QUEUE=m
+CONFIG_NETFILTER_NETLINK_LOG=m
+CONFIG_NF_CONNTRACK_ENABLED=m
+CONFIG_NF_CONNTRACK=m
+CONFIG_NF_CT_ACCT=y
+CONFIG_NF_CONNTRACK_MARK=y
+CONFIG_NF_CONNTRACK_EVENTS=y
+CONFIG_NF_CT_PROTO_GRE=m
+CONFIG_NF_CT_PROTO_SCTP=m
+CONFIG_NF_CONNTRACK_AMANDA=m
+CONFIG_NF_CONNTRACK_FTP=m
+CONFIG_NF_CONNTRACK_H323=m
+CONFIG_NF_CONNTRACK_IRC=m
+CONFIG_NF_CONNTRACK_NETBIOS_NS=m
+CONFIG_NF_CONNTRACK_PPTP=m
+CONFIG_NF_CONNTRACK_SANE=m
+CONFIG_NF_CONNTRACK_SIP=m
+CONFIG_NF_CONNTRACK_TFTP=m
+CONFIG_NF_CT_NETLINK=m
+CONFIG_NETFILTER_XTABLES=m
+CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
+CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
+CONFIG_NETFILTER_XT_TARGET_DSCP=m
+CONFIG_NETFILTER_XT_TARGET_MARK=m
+CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
+CONFIG_NETFILTER_XT_TARGET_NFLOG=m
+CONFIG_NETFILTER_XT_TARGET_NOTRACK=m
+CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
+CONFIG_NETFILTER_XT_MATCH_COMMENT=m
+CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
+CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
+CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
+CONFIG_NETFILTER_XT_MATCH_DCCP=m
+CONFIG_NETFILTER_XT_MATCH_DSCP=m
+CONFIG_NETFILTER_XT_MATCH_ESP=m
+CONFIG_NETFILTER_XT_MATCH_HELPER=m
+CONFIG_NETFILTER_XT_MATCH_LENGTH=m
+CONFIG_NETFILTER_XT_MATCH_LIMIT=m
+CONFIG_NETFILTER_XT_MATCH_MAC=m
+CONFIG_NETFILTER_XT_MATCH_MARK=m
+CONFIG_NETFILTER_XT_MATCH_POLICY=m
+CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
+CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m
+CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
+CONFIG_NETFILTER_XT_MATCH_QUOTA=m
+CONFIG_NETFILTER_XT_MATCH_REALM=m
+CONFIG_NETFILTER_XT_MATCH_SCTP=m
+CONFIG_NETFILTER_XT_MATCH_STATE=m
+CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
+CONFIG_NETFILTER_XT_MATCH_STRING=m
+CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
+CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
+
+#
+# IP: Netfilter Configuration
+#
+CONFIG_NF_CONNTRACK_IPV4=m
+CONFIG_NF_CONNTRACK_PROC_COMPAT=y
+# CONFIG_IP_NF_QUEUE is not set
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_MATCH_IPRANGE=m
+CONFIG_IP_NF_MATCH_TOS=m
+CONFIG_IP_NF_MATCH_RECENT=m
+CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_AH=m
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_MATCH_OWNER=m
+CONFIG_IP_NF_MATCH_ADDRTYPE=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_LOG=m
+CONFIG_IP_NF_TARGET_ULOG=m
+CONFIG_NF_NAT=m
+CONFIG_NF_NAT_NEEDED=y
+CONFIG_IP_NF_TARGET_MASQUERADE=m
+CONFIG_IP_NF_TARGET_REDIRECT=m
+CONFIG_IP_NF_TARGET_NETMAP=m
+CONFIG_IP_NF_TARGET_SAME=m
+CONFIG_NF_NAT_SNMP_BASIC=m
+CONFIG_NF_NAT_PROTO_GRE=m
+CONFIG_NF_NAT_FTP=m
+CONFIG_NF_NAT_IRC=m
+CONFIG_NF_NAT_TFTP=m
+CONFIG_NF_NAT_AMANDA=m
+CONFIG_NF_NAT_PPTP=m
+CONFIG_NF_NAT_H323=m
+CONFIG_NF_NAT_SIP=m
+CONFIG_IP_NF_MANGLE=m
+CONFIG_IP_NF_TARGET_TOS=m
+CONFIG_IP_NF_TARGET_ECN=m
+CONFIG_IP_NF_TARGET_TTL=m
+CONFIG_IP_NF_TARGET_CLUSTERIP=m
+CONFIG_IP_NF_RAW=m
+CONFIG_IP_NF_ARPTABLES=m
+CONFIG_IP_NF_ARPFILTER=m
+CONFIG_IP_NF_ARP_MANGLE=m
+
+#
+# IPv6: Netfilter Configuration (EXPERIMENTAL)
+#
+CONFIG_NF_CONNTRACK_IPV6=m
+# CONFIG_IP6_NF_QUEUE is not set
+CONFIG_IP6_NF_IPTABLES=m
+CONFIG_IP6_NF_MATCH_RT=m
+CONFIG_IP6_NF_MATCH_OPTS=m
+CONFIG_IP6_NF_MATCH_FRAG=m
+CONFIG_IP6_NF_MATCH_HL=m
+CONFIG_IP6_NF_MATCH_OWNER=m
+CONFIG_IP6_NF_MATCH_IPV6HEADER=m
+CONFIG_IP6_NF_MATCH_AH=m
+CONFIG_IP6_NF_MATCH_MH=m
+CONFIG_IP6_NF_MATCH_EUI64=m
+CONFIG_IP6_NF_FILTER=m
+CONFIG_IP6_NF_TARGET_LOG=m
+CONFIG_IP6_NF_TARGET_REJECT=m
+CONFIG_IP6_NF_MANGLE=m
+CONFIG_IP6_NF_TARGET_HL=m
+CONFIG_IP6_NF_RAW=m
+
+#
+# Bridge: Netfilter Configuration
+#
+CONFIG_BRIDGE_NF_EBTABLES=m
+CONFIG_BRIDGE_EBT_BROUTE=m
+CONFIG_BRIDGE_EBT_T_FILTER=m
+CONFIG_BRIDGE_EBT_T_NAT=m
+CONFIG_BRIDGE_EBT_802_3=m
+CONFIG_BRIDGE_EBT_AMONG=m
+CONFIG_BRIDGE_EBT_ARP=m
+CONFIG_BRIDGE_EBT_IP=m
+CONFIG_BRIDGE_EBT_LIMIT=m
+CONFIG_BRIDGE_EBT_MARK=m
+CONFIG_BRIDGE_EBT_PKTTYPE=m
+CONFIG_BRIDGE_EBT_STP=m
+CONFIG_BRIDGE_EBT_VLAN=m
+CONFIG_BRIDGE_EBT_ARPREPLY=m
+CONFIG_BRIDGE_EBT_DNAT=m
+CONFIG_BRIDGE_EBT_MARK_T=m
+CONFIG_BRIDGE_EBT_REDIRECT=m
+CONFIG_BRIDGE_EBT_SNAT=m
+CONFIG_BRIDGE_EBT_LOG=m
+CONFIG_BRIDGE_EBT_ULOG=m
+# CONFIG_IP_DCCP is not set
+# CONFIG_IP_SCTP is not set
+CONFIG_TIPC=m
+# CONFIG_TIPC_ADVANCED is not set
+# CONFIG_TIPC_DEBUG is not set
+# CONFIG_ATM is not set
+CONFIG_BRIDGE=m
+CONFIG_VLAN_8021Q=m
+# CONFIG_DECNET is not set
+CONFIG_LLC=m
+# CONFIG_LLC2 is not set
+CONFIG_IPX=m
+# CONFIG_IPX_INTERN is not set
+CONFIG_ATALK=m
+CONFIG_DEV_APPLETALK=m
+CONFIG_IPDDP=m
+CONFIG_IPDDP_ENCAP=y
+CONFIG_IPDDP_DECAP=y
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_ECONET is not set
+# CONFIG_WAN_ROUTER is not set
+
+#
+# QoS and/or fair queueing
+#
+# CONFIG_NET_SCHED is not set
+CONFIG_NET_CLS_ROUTE=y
+
+#
+# Network testing
+#
+CONFIG_NET_PKTGEN=m
+# CONFIG_HAMRADIO is not set
+# CONFIG_IRDA is not set
+CONFIG_BT=m
+CONFIG_BT_L2CAP=m
+CONFIG_BT_SCO=m
+CONFIG_BT_RFCOMM=m
+CONFIG_BT_RFCOMM_TTY=y
+CONFIG_BT_BNEP=m
+CONFIG_BT_BNEP_MC_FILTER=y
+CONFIG_BT_BNEP_PROTO_FILTER=y
+# CONFIG_BT_CMTP is not set
+CONFIG_BT_HIDP=m
+
+#
+# Bluetooth device drivers
+#
+CONFIG_BT_HCIUSB=m
+CONFIG_BT_HCIUSB_SCO=y
+CONFIG_BT_HCIUART=m
+CONFIG_BT_HCIUART_H4=y
+CONFIG_BT_HCIUART_BCSP=y
+CONFIG_BT_HCIBCM203X=m
+# CONFIG_BT_HCIBPA10X is not set
+# CONFIG_BT_HCIBFUSB is not set
+CONFIG_BT_HCIVHCI=m
+# CONFIG_AF_RXRPC is not set
+
+#
+# Wireless
+#
+# CONFIG_CFG80211 is not set
+CONFIG_WIRELESS_EXT=y
+# CONFIG_MAC80211 is not set
+CONFIG_IEEE80211=m
+# CONFIG_IEEE80211_DEBUG is not set
+CONFIG_IEEE80211_CRYPT_WEP=m
+CONFIG_IEEE80211_CRYPT_CCMP=m
+CONFIG_IEEE80211_CRYPT_TKIP=m
+CONFIG_IEEE80211_SOFTMAC=m
+# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
+# CONFIG_RFKILL is not set
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=y
+# CONFIG_SYS_HYPERVISOR is not set
+
+#
+# Connector - unified userspace <-> kernelspace linker
+#
+# CONFIG_CONNECTOR is not set
+CONFIG_MTD=y
+# CONFIG_MTD_DEBUG is not set
+CONFIG_MTD_CONCAT=y
+CONFIG_MTD_PARTITIONS=y
+CONFIG_MTD_REDBOOT_PARTS=y
+CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1
+CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED=y
+# CONFIG_MTD_REDBOOT_PARTS_READONLY is not set
+# CONFIG_MTD_CMDLINE_PARTS is not set
+# CONFIG_MTD_AFS_PARTS is not set
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=y
+CONFIG_MTD_BLKDEVS=y
+CONFIG_MTD_BLOCK=y
+# CONFIG_FTL is not set
+CONFIG_NFTL=y
+CONFIG_NFTL_RW=y
+# CONFIG_INFTL is not set
+# CONFIG_RFD_FTL is not set
+# CONFIG_SSFDC is not set
+
+#
+# RAM/ROM/Flash chip drivers
+#
+CONFIG_MTD_CFI=y
+# CONFIG_MTD_JEDECPROBE is not set
+CONFIG_MTD_GEN_PROBE=y
+CONFIG_MTD_CFI_ADV_OPTIONS=y
+# CONFIG_MTD_CFI_NOSWAP is not set
+CONFIG_MTD_CFI_BE_BYTE_SWAP=y
+# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
+CONFIG_MTD_CFI_GEOMETRY=y
+# CONFIG_MTD_MAP_BANK_WIDTH_1 is not set
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+# CONFIG_MTD_MAP_BANK_WIDTH_4 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
+CONFIG_MTD_CFI_I1=y
+CONFIG_MTD_CFI_I2=y
+# CONFIG_MTD_CFI_I4 is not set
+# CONFIG_MTD_CFI_I8 is not set
+# CONFIG_MTD_OTP is not set
+CONFIG_MTD_CFI_INTELEXT=y
+# CONFIG_MTD_CFI_AMDSTD is not set
+# CONFIG_MTD_CFI_STAA is not set
+CONFIG_MTD_CFI_UTIL=y
+# CONFIG_MTD_RAM is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+
+#
+# Mapping drivers for chip access
+#
+CONFIG_MTD_COMPLEX_MAPPINGS=y
+# CONFIG_MTD_PHYSMAP is not set
+# CONFIG_MTD_ARM_INTEGRATOR is not set
+CONFIG_MTD_IXP4XX=y
+# CONFIG_MTD_PCI is not set
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_PMC551 is not set
+# CONFIG_MTD_SLRAM is not set
+# CONFIG_MTD_PHRAM is not set
+# CONFIG_MTD_MTDRAM is not set
+# CONFIG_MTD_BLOCK2MTD is not set
+
+#
+# Disk-On-Chip Device Drivers
+#
+# CONFIG_MTD_DOC2000 is not set
+# CONFIG_MTD_DOC2001 is not set
+# CONFIG_MTD_DOC2001PLUS is not set
+# CONFIG_MTD_NAND is not set
+# CONFIG_MTD_ONENAND is not set
+
+#
+# UBI - Unsorted block images
+#
+# CONFIG_MTD_UBI is not set
+
+#
+# Parallel port support
+#
+# CONFIG_PARPORT is not set
+
+#
+# Plug and Play support
+#
+# CONFIG_PNPACPI is not set
+
+#
+# Block devices
+#
+# CONFIG_BLK_CPQ_DA is not set
+# CONFIG_BLK_CPQ_CISS_DA is not set
+# CONFIG_BLK_DEV_DAC960 is not set
+# CONFIG_BLK_DEV_UMEM is not set
+# CONFIG_BLK_DEV_COW_COMMON is not set
+CONFIG_BLK_DEV_LOOP=m
+# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+CONFIG_BLK_DEV_NBD=m
+# CONFIG_BLK_DEV_SX8 is not set
+# CONFIG_BLK_DEV_UB is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=4
+CONFIG_BLK_DEV_RAM_SIZE=10240
+CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
+CONFIG_CDROM_PKTCDVD=m
+CONFIG_CDROM_PKTCDVD_BUFFERS=8
+# CONFIG_CDROM_PKTCDVD_WCACHE is not set
+CONFIG_ATA_OVER_ETH=m
+# CONFIG_IDE is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+CONFIG_SCSI=y
+# CONFIG_SCSI_TGT is not set
+# CONFIG_SCSI_NETLINK is not set
+CONFIG_SCSI_PROC_FS=y
+
+#
+# SCSI support type (disk, tape, CD-ROM)
+#
+CONFIG_BLK_DEV_SD=y
+CONFIG_CHR_DEV_ST=m
+# CONFIG_CHR_DEV_OSST is not set
+CONFIG_BLK_DEV_SR=m
+# CONFIG_BLK_DEV_SR_VENDOR is not set
+CONFIG_CHR_DEV_SG=m
+# CONFIG_CHR_DEV_SCH is not set
+
+#
+# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
+#
+CONFIG_SCSI_MULTI_LUN=y
+# CONFIG_SCSI_CONSTANTS is not set
+# CONFIG_SCSI_LOGGING is not set
+# CONFIG_SCSI_SCAN_ASYNC is not set
+CONFIG_SCSI_WAIT_SCAN=m
+
+#
+# SCSI Transports
+#
+# CONFIG_SCSI_SPI_ATTRS is not set
+# CONFIG_SCSI_FC_ATTRS is not set
+CONFIG_SCSI_ISCSI_ATTRS=m
+# CONFIG_SCSI_SAS_ATTRS is not set
+# CONFIG_SCSI_SAS_LIBSAS is not set
+
+#
+# SCSI low-level drivers
+#
+CONFIG_ISCSI_TCP=m
+# 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_DMX3191D is not set
+# CONFIG_SCSI_FUTURE_DOMAIN 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_IPR 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=m
+# CONFIG_ATA_NONSTANDARD is not set
+# CONFIG_SATA_AHCI is not set
+# CONFIG_SATA_SVW is not set
+# CONFIG_ATA_PIIX is not set
+# CONFIG_SATA_MV is not set
+# CONFIG_SATA_NV is not set
+# CONFIG_PDC_ADMA is not set
+# CONFIG_SATA_QSTOR is not set
+# CONFIG_SATA_PROMISE is not set
+# CONFIG_SATA_SX4 is not set
+# CONFIG_SATA_SIL is not set
+# CONFIG_SATA_SIL24 is not set
+# CONFIG_SATA_SIS is not set
+# CONFIG_SATA_ULI is not set
+CONFIG_SATA_VIA=m
+# CONFIG_SATA_VITESSE is not set
+# CONFIG_SATA_INIC162X is not set
+# CONFIG_PATA_ALI is not set
+# CONFIG_PATA_AMD is not set
+CONFIG_PATA_ARTOP=m
+# CONFIG_PATA_ATIIXP is not set
+# CONFIG_PATA_CMD640_PCI is not set
+# CONFIG_PATA_CMD64X is not set
+# CONFIG_PATA_CS5520 is not set
+# CONFIG_PATA_CS5530 is not set
+# CONFIG_PATA_CYPRESS is not set
+# CONFIG_PATA_EFAR is not set
+# CONFIG_ATA_GENERIC is not set
+# CONFIG_PATA_HPT366 is not set
+# CONFIG_PATA_HPT37X is not set
+# CONFIG_PATA_HPT3X2N is not set
+# CONFIG_PATA_HPT3X3 is not set
+# CONFIG_PATA_IT821X is not set
+# CONFIG_PATA_IT8213 is not set
+# CONFIG_PATA_JMICRON is not set
+# CONFIG_PATA_TRIFLEX is not set
+# CONFIG_PATA_MARVELL is not set
+# CONFIG_PATA_MPIIX is not set
+# CONFIG_PATA_OLDPIIX is not set
+# CONFIG_PATA_NETCELL is not set
+# CONFIG_PATA_NS87410 is not set
+# CONFIG_PATA_OPTI is not set
+# CONFIG_PATA_OPTIDMA is not set
+# CONFIG_PATA_PDC_OLD is not set
+# CONFIG_PATA_RADISYS is not set
+# CONFIG_PATA_RZ1000 is not set
+# CONFIG_PATA_SC1200 is not set
+# CONFIG_PATA_SERVERWORKS is not set
+# CONFIG_PATA_PDC2027X is not set
+# CONFIG_PATA_SIL680 is not set
+# CONFIG_PATA_SIS is not set
+# CONFIG_PATA_VIA is not set
+# CONFIG_PATA_WINBOND is not set
+# CONFIG_PATA_PLATFORM is not set
+CONFIG_PATA_IXP4XX_CF=m
+
+#
+# Multi-device support (RAID and LVM)
+#
+CONFIG_MD=y
+CONFIG_BLK_DEV_MD=m
+CONFIG_MD_LINEAR=m
+CONFIG_MD_RAID0=m
+CONFIG_MD_RAID1=m
+CONFIG_MD_RAID10=m
+CONFIG_MD_RAID456=m
+CONFIG_MD_RAID5_RESHAPE=y
+CONFIG_MD_MULTIPATH=m
+CONFIG_MD_FAULTY=m
+CONFIG_BLK_DEV_DM=m
+# CONFIG_DM_DEBUG is not set
+# CONFIG_DM_CRYPT is not set
+# CONFIG_DM_SNAPSHOT is not set
+# CONFIG_DM_MIRROR is not set
+# CONFIG_DM_ZERO is not set
+# CONFIG_DM_MULTIPATH is not set
+# CONFIG_DM_DELAY is not set
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+# CONFIG_FUSION_SPI is not set
+# CONFIG_FUSION_FC is not set
+# CONFIG_FUSION_SAS is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+# CONFIG_FIREWIRE is not set
+# CONFIG_IEEE1394 is not set
+
+#
+# I2O device support
+#
+# CONFIG_I2O is not set
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+CONFIG_TUN=m
+# CONFIG_ARCNET is not set
+# CONFIG_PHYLIB is not set
+
+#
+# Ethernet (10 or 100Mbit)
+#
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=y
+CONFIG_IXP4XX_ETH=y
+# CONFIG_HAPPYMEAL is not set
+# CONFIG_SUNGEM is not set
+# CONFIG_CASSINI is not set
+# CONFIG_NET_VENDOR_3COM is not set
+# CONFIG_SMC91X is not set
+# CONFIG_DM9000 is not set
+
+#
+# Tulip family network device support
+#
+# 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 is not set
+# 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_NETDEV_1000=y
+# CONFIG_ACENIC is not set
+# CONFIG_DL2K is not set
+# CONFIG_E1000 is not set
+# CONFIG_NS83820 is not set
+# CONFIG_HAMACHI is not set
+# CONFIG_YELLOWFIN is not set
+# CONFIG_R8169 is not set
+# CONFIG_SIS190 is not set
+# CONFIG_SKGE is not set
+# CONFIG_SKY2 is not set
+# CONFIG_SK98LIN is not set
+CONFIG_VIA_VELOCITY=m
+# CONFIG_TIGON3 is not set
+# CONFIG_BNX2 is not set
+# CONFIG_QLA3XXX is not set
+# CONFIG_ATL1 is not set
+# CONFIG_NETDEV_10000 is not set
+# CONFIG_TR is not set
+
+#
+# Wireless LAN
+#
+# CONFIG_WLAN_PRE80211 is not set
+CONFIG_WLAN_80211=y
+# CONFIG_IPW2100 is not set
+# CONFIG_IPW2200 is not set
+CONFIG_LIBERTAS=m
+CONFIG_LIBERTAS_USB=m
+# CONFIG_LIBERTAS_DEBUG is not set
+# CONFIG_HERMES is not set
+# CONFIG_ATMEL is not set
+# CONFIG_PRISM54 is not set
+CONFIG_USB_ZD1201=m
+# CONFIG_HOSTAP is not set
+# CONFIG_BCM43XX is not set
+CONFIG_ZD1211RW=m
+# CONFIG_ZD1211RW_DEBUG is not set
+
+#
+# USB Network Adapters
+#
+CONFIG_USB_CATC=m
+CONFIG_USB_KAWETH=m
+CONFIG_USB_PEGASUS=m
+CONFIG_USB_RTL8150=m
+CONFIG_USB_USBNET_MII=m
+CONFIG_USB_USBNET=m
+CONFIG_USB_NET_AX8817X=m
+CONFIG_USB_NET_CDCETHER=m
+# CONFIG_USB_NET_DM9601 is not set
+# CONFIG_USB_NET_GL620A is not set
+CONFIG_USB_NET_NET1080=m
+# CONFIG_USB_NET_PLUSB is not set
+CONFIG_USB_NET_MCS7830=m
+# CONFIG_USB_NET_RNDIS_HOST is not set
+# CONFIG_USB_NET_CDC_SUBSET is not set
+CONFIG_USB_NET_ZAURUS=m
+# CONFIG_WAN is not set
+# CONFIG_FDDI is not set
+# CONFIG_HIPPI is not set
+CONFIG_PPP=m
+# CONFIG_PPP_MULTILINK is not set
+CONFIG_PPP_FILTER=y
+CONFIG_PPP_ASYNC=m
+CONFIG_PPP_SYNC_TTY=m
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+CONFIG_PPP_MPPE=m
+CONFIG_PPPOE=m
+# CONFIG_SLIP is not set
+CONFIG_SLHC=m
+# CONFIG_NET_FC is not set
+# CONFIG_SHAPER is not set
+CONFIG_NETCONSOLE=m
+CONFIG_NETPOLL=y
+# CONFIG_NETPOLL_TRAP is not set
+CONFIG_NET_POLL_CONTROLLER=y
+
+#
+# ISDN subsystem
+#
+CONFIG_ISDN=m
+
+#
+# Old ISDN4Linux
+#
+# CONFIG_ISDN_I4L is not set
+
+#
+# CAPI subsystem
+#
+CONFIG_ISDN_CAPI=m
+CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON=y
+CONFIG_CAPI_TRACE=y
+# CONFIG_ISDN_CAPI_MIDDLEWARE is not set
+CONFIG_ISDN_CAPI_CAPI20=m
+
+#
+# CAPI hardware drivers
+#
+
+#
+# Active AVM cards
+#
+# CONFIG_CAPI_AVM is not set
+
+#
+# Active Eicon DIVA Server cards
+#
+# CONFIG_CAPI_EICON is not set
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS is not set
+# CONFIG_INPUT_POLLDEV is not set
+
+#
+# Userland interfaces
+#
+# CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_TSDEV is not set
+CONFIG_INPUT_EVDEV=y
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# Input Device Drivers
+#
+# CONFIG_INPUT_KEYBOARD is not set
+# CONFIG_INPUT_MOUSE is not set
+# CONFIG_INPUT_JOYSTICK is not set
+# CONFIG_INPUT_TABLET is not set
+# CONFIG_INPUT_TOUCHSCREEN is not set
+CONFIG_INPUT_MISC=y
+CONFIG_INPUT_IXP4XX_BEEPER=y
+CONFIG_INPUT_ATI_REMOTE=m
+CONFIG_INPUT_ATI_REMOTE2=m
+CONFIG_INPUT_KEYSPAN_REMOTE=m
+# CONFIG_INPUT_POWERMATE is not set
+CONFIG_INPUT_YEALINK=m
+CONFIG_INPUT_UINPUT=m
+
+#
+# Hardware I/O ports
+#
+# CONFIG_SERIO is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+# CONFIG_VT is not set
+CONFIG_SERIAL_NONSTANDARD=y
+# CONFIG_COMPUTONE is not set
+# CONFIG_ROCKETPORT is not set
+# CONFIG_CYCLADES is not set
+# CONFIG_DIGIEPCA is not set
+# CONFIG_MOXA_INTELLIO is not set
+# CONFIG_MOXA_SMARTIO is not set
+# CONFIG_MOXA_SMARTIO_NEW is not set
+# CONFIG_ISI is not set
+# CONFIG_SYNCLINKMP is not set
+# CONFIG_SYNCLINK_GT is not set
+CONFIG_N_HDLC=m
+# CONFIG_RISCOM8 is not set
+# CONFIG_SPECIALIX is not set
+# CONFIG_SX is not set
+# CONFIG_RIO is not set
+# CONFIG_STALDRV is not set
+
+#
+# Serial drivers
+#
+CONFIG_SERIAL_8250=y
+CONFIG_SERIAL_8250_CONSOLE=y
+CONFIG_SERIAL_8250_PCI=m
+CONFIG_SERIAL_8250_NR_UARTS=2
+CONFIG_SERIAL_8250_RUNTIME_UARTS=2
+# CONFIG_SERIAL_8250_EXTENDED is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+# CONFIG_SERIAL_JSM is not set
+CONFIG_UNIX98_PTYS=y
+# CONFIG_LEGACY_PTYS is not set
+
+#
+# IPMI
+#
+# CONFIG_IPMI_HANDLER is not set
+CONFIG_WATCHDOG=y
+# CONFIG_WATCHDOG_NOWAYOUT is not set
+
+#
+# Watchdog Device Drivers
+#
+# CONFIG_SOFT_WATCHDOG is not set
+CONFIG_IXP4XX_WATCHDOG=m
+
+#
+# PCI-based Watchdog Cards
+#
+# CONFIG_PCIPCWATCHDOG is not set
+# CONFIG_WDTPCI is not set
+
+#
+# USB-based Watchdog Cards
+#
+# CONFIG_USBPCWATCHDOG is not set
+CONFIG_HW_RANDOM=y
+CONFIG_HW_RANDOM_IXP4XX=y
+# CONFIG_NVRAM is not set
+# CONFIG_R3964 is not set
+# CONFIG_APPLICOM is not set
+# CONFIG_DRM is not set
+# CONFIG_RAW_DRIVER is not set
+
+#
+# TPM devices
+#
+# CONFIG_TCG_TPM is not set
+CONFIG_DEVPORT=y
+CONFIG_I2C=y
+CONFIG_I2C_BOARDINFO=y
+CONFIG_I2C_CHARDEV=y
+
+#
+# I2C Algorithms
+#
+CONFIG_I2C_ALGOBIT=y
+# CONFIG_I2C_ALGOPCF is not set
+# CONFIG_I2C_ALGOPCA is not set
+
+#
+# I2C Hardware Bus support
+#
+# CONFIG_I2C_ALI1535 is not set
+# CONFIG_I2C_ALI1563 is not set
+# CONFIG_I2C_ALI15X3 is not set
+# CONFIG_I2C_AMD756 is not set
+# CONFIG_I2C_AMD8111 is not set
+CONFIG_I2C_GPIO=y
+# CONFIG_I2C_I801 is not set
+# CONFIG_I2C_I810 is not set
+# CONFIG_I2C_PIIX4 is not set
+# CONFIG_I2C_IOP3XX is not set
+# CONFIG_I2C_IXP4XX is not set
+# CONFIG_I2C_NFORCE2 is not set
+# CONFIG_I2C_OCORES is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_PROSAVAGE is not set
+# CONFIG_I2C_SAVAGE4 is not set
+# CONFIG_I2C_SIMTEC is not set
+# CONFIG_I2C_SIS5595 is not set
+# CONFIG_I2C_SIS630 is not set
+# CONFIG_I2C_SIS96X is not set
+# CONFIG_I2C_STUB is not set
+CONFIG_I2C_TINY_USB=m
+# CONFIG_I2C_VIA is not set
+# CONFIG_I2C_VIAPRO is not set
+# CONFIG_I2C_VOODOO3 is not set
+
+#
+# Miscellaneous I2C Chip support
+#
+# CONFIG_SENSORS_DS1337 is not set
+# CONFIG_SENSORS_DS1374 is not set
+CONFIG_SENSORS_EEPROM=y
+CONFIG_SENSORS_PCF8574=m
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_SENSORS_MAX6875 is not set
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CHIP is not set
+
+#
+# SPI support
+#
+# CONFIG_SPI is not set
+# CONFIG_SPI_MASTER is not set
+
+#
+# Dallas's 1-wire bus
+#
+CONFIG_W1=m
+
+#
+# 1-wire Bus Masters
+#
+# CONFIG_W1_MASTER_MATROX is not set
+CONFIG_W1_MASTER_DS2490=m
+CONFIG_W1_MASTER_DS2482=m
+# CONFIG_W1_MASTER_DS1WM is not set
+
+#
+# 1-wire Slaves
+#
+CONFIG_W1_SLAVE_THERM=m
+CONFIG_W1_SLAVE_SMEM=m
+CONFIG_W1_SLAVE_DS2433=m
+CONFIG_W1_SLAVE_DS2433_CRC=y
+CONFIG_HWMON=m
+CONFIG_HWMON_VID=m
+# CONFIG_SENSORS_ABITUGURU is not set
+CONFIG_SENSORS_AD7418=m
+# CONFIG_SENSORS_ADM1021 is not set
+# CONFIG_SENSORS_ADM1025 is not set
+# CONFIG_SENSORS_ADM1026 is not set
+# CONFIG_SENSORS_ADM1029 is not set
+# CONFIG_SENSORS_ADM1031 is not set
+# CONFIG_SENSORS_ADM9240 is not set
+# CONFIG_SENSORS_ASB100 is not set
+# CONFIG_SENSORS_ATXP1 is not set
+# CONFIG_SENSORS_DS1621 is not set
+# CONFIG_SENSORS_F71805F is not set
+# CONFIG_SENSORS_FSCHER is not set
+# CONFIG_SENSORS_FSCPOS is not set
+# CONFIG_SENSORS_GL518SM is not set
+# CONFIG_SENSORS_GL520SM is not set
+# CONFIG_SENSORS_IT87 is not set
+# CONFIG_SENSORS_LM63 is not set
+# CONFIG_SENSORS_LM75 is not set
+# CONFIG_SENSORS_LM77 is not set
+# CONFIG_SENSORS_LM78 is not set
+# CONFIG_SENSORS_LM80 is not set
+# CONFIG_SENSORS_LM83 is not set
+# CONFIG_SENSORS_LM85 is not set
+# CONFIG_SENSORS_LM87 is not set
+# CONFIG_SENSORS_LM90 is not set
+# CONFIG_SENSORS_LM92 is not set
+# CONFIG_SENSORS_MAX1619 is not set
+# CONFIG_SENSORS_MAX6650 is not set
+# CONFIG_SENSORS_PC87360 is not set
+# CONFIG_SENSORS_PC87427 is not set
+# CONFIG_SENSORS_SIS5595 is not set
+# CONFIG_SENSORS_SMSC47M1 is not set
+# CONFIG_SENSORS_SMSC47M192 is not set
+# CONFIG_SENSORS_SMSC47B397 is not set
+# CONFIG_SENSORS_VIA686A is not set
+# CONFIG_SENSORS_VT1211 is not set
+# CONFIG_SENSORS_VT8231 is not set
+CONFIG_SENSORS_W83781D=m
+# CONFIG_SENSORS_W83791D is not set
+# CONFIG_SENSORS_W83792D is not set
+# CONFIG_SENSORS_W83793 is not set
+# CONFIG_SENSORS_W83L785TS is not set
+# CONFIG_SENSORS_W83627HF is not set
+# CONFIG_SENSORS_W83627EHF is not set
+# CONFIG_HWMON_DEBUG_CHIP is not set
+
+#
+# Misc devices
+#
+# CONFIG_PHANTOM is not set
+# CONFIG_SGI_IOC4 is not set
+# CONFIG_TIFM_CORE is not set
+# CONFIG_BLINK is not set
+
+#
+# Multifunction device drivers
+#
+# CONFIG_MFD_SM501 is not set
+
+#
+# LED devices
+#
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+
+#
+# LED drivers
+#
+CONFIG_LEDS_IXP4XX=y
+
+#
+# LED Triggers
+#
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=y
+CONFIG_LEDS_TRIGGER_HEARTBEAT=y
+CONFIG_LEDS_TRIGGER_CPU_ACTIVITY=y
+
+#
+# Multimedia devices
+#
+CONFIG_VIDEO_DEV=m
+# CONFIG_VIDEO_V4L1 is not set
+# CONFIG_VIDEO_V4L1_COMPAT is not set
+CONFIG_VIDEO_V4L2=y
+CONFIG_VIDEO_CAPTURE_DRIVERS=y
+# CONFIG_VIDEO_ADV_DEBUG is not set
+CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
+CONFIG_VIDEO_VIVI=m
+CONFIG_VIDEO_SAA5246A=m
+CONFIG_VIDEO_SAA5249=m
+CONFIG_VIDEO_SAA7134=m
+# CONFIG_VIDEO_SAA7134_ALSA is not set
+CONFIG_VIDEO_HEXIUM_ORION=m
+CONFIG_VIDEO_HEXIUM_GEMINI=m
+CONFIG_VIDEO_CX88=m
+CONFIG_VIDEO_CX88_ALSA=m
+# CONFIG_VIDEO_CX88_BLACKBIRD is not set
+# CONFIG_VIDEO_CAFE_CCIC is not set
+CONFIG_V4L_USB_DRIVERS=y
+# CONFIG_VIDEO_PVRUSB2 is not set
+# CONFIG_VIDEO_USBVISION is not set
+# CONFIG_USB_SN9C102 is not set
+CONFIG_USB_ZR364XX=m
+# CONFIG_RADIO_ADAPTERS is not set
+# CONFIG_DVB_CORE is not set
+CONFIG_VIDEO_SAA7146=m
+CONFIG_VIDEO_SAA7146_VV=m
+CONFIG_VIDEO_TUNER=m
+CONFIG_VIDEO_BUF=m
+CONFIG_VIDEO_BTCX=m
+CONFIG_VIDEO_IR=m
+CONFIG_VIDEO_TVEEPROM=m
+# CONFIG_DAB is not set
+
+#
+# Graphics support
+#
+# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
+
+#
+# Display device support
+#
+# CONFIG_DISPLAY_SUPPORT is not set
+# CONFIG_VGASTATE is not set
+# CONFIG_FB is not set
+
+#
+# Sound
+#
+CONFIG_SOUND=m
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=m
+CONFIG_SND_TIMER=m
+CONFIG_SND_PCM=m
+CONFIG_SND_HWDEP=m
+CONFIG_SND_RAWMIDI=m
+# CONFIG_SND_SEQUENCER is not set
+CONFIG_SND_OSSEMUL=y
+CONFIG_SND_MIXER_OSS=m
+CONFIG_SND_PCM_OSS=m
+CONFIG_SND_PCM_OSS_PLUGINS=y
+# CONFIG_SND_DYNAMIC_MINORS is not set
+CONFIG_SND_SUPPORT_OLD_API=y
+CONFIG_SND_VERBOSE_PROCFS=y
+# CONFIG_SND_VERBOSE_PRINTK is not set
+# CONFIG_SND_DEBUG is not set
+
+#
+# Generic devices
+#
+# CONFIG_SND_DUMMY is not set
+# CONFIG_SND_MTPAV is not set
+# CONFIG_SND_SERIAL_U16550 is not set
+# CONFIG_SND_MPU401 is not set
+
+#
+# PCI devices
+#
+# CONFIG_SND_AD1889 is not set
+# CONFIG_SND_ALS300 is not set
+# CONFIG_SND_ALI5451 is not set
+# CONFIG_SND_ATIIXP is not set
+# CONFIG_SND_ATIIXP_MODEM is not set
+# CONFIG_SND_AU8810 is not set
+# CONFIG_SND_AU8820 is not set
+# CONFIG_SND_AU8830 is not set
+# CONFIG_SND_AZT3328 is not set
+# CONFIG_SND_BT87X is not set
+# CONFIG_SND_CA0106 is not set
+# CONFIG_SND_CMIPCI is not set
+# CONFIG_SND_CS4281 is not set
+# CONFIG_SND_CS46XX is not set
+# CONFIG_SND_DARLA20 is not set
+# CONFIG_SND_GINA20 is not set
+# CONFIG_SND_LAYLA20 is not set
+# CONFIG_SND_DARLA24 is not set
+# CONFIG_SND_GINA24 is not set
+# CONFIG_SND_LAYLA24 is not set
+# CONFIG_SND_MONA is not set
+# CONFIG_SND_MIA is not set
+# CONFIG_SND_ECHO3G is not set
+# CONFIG_SND_INDIGO is not set
+# CONFIG_SND_INDIGOIO is not set
+# CONFIG_SND_INDIGODJ is not set
+# CONFIG_SND_EMU10K1 is not set
+# CONFIG_SND_EMU10K1X is not set
+# CONFIG_SND_ENS1370 is not set
+# CONFIG_SND_ENS1371 is not set
+# CONFIG_SND_ES1938 is not set
+# CONFIG_SND_ES1968 is not set
+# CONFIG_SND_FM801 is not set
+# CONFIG_SND_HDA_INTEL is not set
+# CONFIG_SND_HDSP is not set
+# CONFIG_SND_HDSPM is not set
+# CONFIG_SND_ICE1712 is not set
+# CONFIG_SND_ICE1724 is not set
+# CONFIG_SND_INTEL8X0 is not set
+# CONFIG_SND_INTEL8X0M is not set
+# CONFIG_SND_KORG1212 is not set
+# CONFIG_SND_MAESTRO3 is not set
+# CONFIG_SND_MIXART is not set
+# CONFIG_SND_NM256 is not set
+# CONFIG_SND_PCXHR is not set
+# CONFIG_SND_RIPTIDE is not set
+# CONFIG_SND_RME32 is not set
+# CONFIG_SND_RME96 is not set
+# CONFIG_SND_RME9652 is not set
+# CONFIG_SND_SONICVIBES is not set
+# CONFIG_SND_TRIDENT is not set
+# CONFIG_SND_VIA82XX is not set
+# CONFIG_SND_VIA82XX_MODEM is not set
+# CONFIG_SND_VX222 is not set
+# CONFIG_SND_YMFPCI is not set
+
+#
+# ALSA ARM devices
+#
+
+#
+# USB devices
+#
+CONFIG_SND_USB_AUDIO=m
+CONFIG_SND_USB_CAIAQ=m
+CONFIG_SND_USB_CAIAQ_INPUT=y
+
+#
+# System on Chip audio support
+#
+# CONFIG_SND_SOC is not set
+
+#
+# Open Sound System
+#
+# CONFIG_SOUND_PRIME is not set
+
+#
+# HID Devices
+#
+CONFIG_HID=m
+# CONFIG_HID_DEBUG is not set
+
+#
+# USB Input Devices
+#
+CONFIG_USB_HID=m
+# CONFIG_USB_HIDINPUT_POWERBOOK is not set
+# CONFIG_HID_FF is not set
+CONFIG_USB_HIDDEV=y
+
+#
+# USB HID Boot Protocol drivers
+#
+CONFIG_USB_KBD=m
+# CONFIG_USB_MOUSE is not set
+
+#
+# USB support
+#
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB_ARCH_HAS_OHCI=y
+CONFIG_USB_ARCH_HAS_EHCI=y
+CONFIG_USB=y
+# CONFIG_USB_DEBUG is not set
+
+#
+# Miscellaneous USB options
+#
+CONFIG_USB_DEVICEFS=y
+# CONFIG_USB_DEVICE_CLASS is not set
+# CONFIG_USB_DYNAMIC_MINORS is not set
+# CONFIG_USB_OTG is not set
+
+#
+# USB Host Controller Drivers
+#
+CONFIG_USB_EHCI_HCD=y
+CONFIG_USB_EHCI_SPLIT_ISO=y
+CONFIG_USB_EHCI_ROOT_HUB_TT=y
+CONFIG_USB_EHCI_TT_NEWSCHED=y
+# CONFIG_USB_EHCI_BIG_ENDIAN_MMIO is not set
+# CONFIG_USB_ISP116X_HCD is not set
+CONFIG_USB_OHCI_HCD=m
+# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
+# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+CONFIG_USB_UHCI_HCD=m
+# CONFIG_USB_U132_HCD is not set
+# CONFIG_USB_SL811_HCD is not set
+
+#
+# USB Device Class drivers
+#
+CONFIG_USB_ACM=m
+CONFIG_USB_PRINTER=m
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# may also be needed; see USB_STORAGE Help for more information
+#
+CONFIG_USB_STORAGE=y
+# CONFIG_USB_STORAGE_DEBUG is not set
+# CONFIG_USB_STORAGE_DATAFAB is not set
+# CONFIG_USB_STORAGE_FREECOM is not set
+# CONFIG_USB_STORAGE_DPCM is not set
+# CONFIG_USB_STORAGE_USBAT is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_SDDR55 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+# CONFIG_USB_STORAGE_ALAUDA is not set
+CONFIG_USB_STORAGE_ONETOUCH=y
+CONFIG_USB_STORAGE_KARMA=y
+# CONFIG_USB_LIBUSUAL is not set
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_MICROTEK is not set
+# CONFIG_USB_MON is not set
+
+#
+# USB port drivers
+#
+
+#
+# USB Serial Converter support
+#
+CONFIG_USB_SERIAL=m
+CONFIG_USB_SERIAL_GENERIC=y
+CONFIG_USB_SERIAL_AIRCABLE=m
+# CONFIG_USB_SERIAL_AIRPRIME is not set
+CONFIG_USB_SERIAL_ARK3116=m
+CONFIG_USB_SERIAL_BELKIN=m
+CONFIG_USB_SERIAL_WHITEHEAT=m
+CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
+CONFIG_USB_SERIAL_CP2101=m
+CONFIG_USB_SERIAL_CYPRESS_M8=m
+CONFIG_USB_SERIAL_EMPEG=m
+CONFIG_USB_SERIAL_FTDI_SIO=m
+CONFIG_USB_SERIAL_FUNSOFT=m
+CONFIG_USB_SERIAL_VISOR=m
+CONFIG_USB_SERIAL_IPAQ=m
+CONFIG_USB_SERIAL_IR=m
+CONFIG_USB_SERIAL_EDGEPORT=m
+CONFIG_USB_SERIAL_EDGEPORT_TI=m
+CONFIG_USB_SERIAL_GARMIN=m
+CONFIG_USB_SERIAL_IPW=m
+CONFIG_USB_SERIAL_KEYSPAN_PDA=m
+CONFIG_USB_SERIAL_KEYSPAN=m
+CONFIG_USB_SERIAL_KEYSPAN_MPR=y
+CONFIG_USB_SERIAL_KEYSPAN_USA28=y
+CONFIG_USB_SERIAL_KEYSPAN_USA28X=y
+CONFIG_USB_SERIAL_KEYSPAN_USA28XA=y
+CONFIG_USB_SERIAL_KEYSPAN_USA28XB=y
+CONFIG_USB_SERIAL_KEYSPAN_USA19=y
+CONFIG_USB_SERIAL_KEYSPAN_USA18X=y
+CONFIG_USB_SERIAL_KEYSPAN_USA19W=y
+CONFIG_USB_SERIAL_KEYSPAN_USA19QW=y
+CONFIG_USB_SERIAL_KEYSPAN_USA19QI=y
+CONFIG_USB_SERIAL_KEYSPAN_USA49W=y
+CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y
+CONFIG_USB_SERIAL_KLSI=m
+CONFIG_USB_SERIAL_KOBIL_SCT=m
+CONFIG_USB_SERIAL_MCT_U232=m
+CONFIG_USB_SERIAL_MOS7720=m
+CONFIG_USB_SERIAL_MOS7840=m
+CONFIG_USB_SERIAL_NAVMAN=m
+CONFIG_USB_SERIAL_PL2303=m
+# CONFIG_USB_SERIAL_HP4X is not set
+CONFIG_USB_SERIAL_SAFE=m
+# CONFIG_USB_SERIAL_SAFE_PADDED is not set
+# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set
+CONFIG_USB_SERIAL_TI=m
+CONFIG_USB_SERIAL_CYBERJACK=m
+CONFIG_USB_SERIAL_XIRCOM=m
+# CONFIG_USB_SERIAL_OPTION is not set
+CONFIG_USB_SERIAL_OMNINET=m
+# CONFIG_USB_SERIAL_DEBUG is not set
+CONFIG_USB_EZUSB=y
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_EMI62 is not set
+# CONFIG_USB_EMI26 is not set
+CONFIG_USB_ADUTUX=m
+# CONFIG_USB_AUERSWALD is not set
+# CONFIG_USB_RIO500 is not set
+# CONFIG_USB_LEGOTOWER is not set
+# CONFIG_USB_LCD is not set
+# CONFIG_USB_BERRY_CHARGE is not set
+# CONFIG_USB_LED is not set
+# CONFIG_USB_CYPRESS_CY7C63 is not set
+# CONFIG_USB_CYTHERM is not set
+CONFIG_USB_PHIDGET=m
+CONFIG_USB_PHIDGETKIT=m
+CONFIG_USB_PHIDGETMOTORCONTROL=m
+CONFIG_USB_PHIDGETSERVO=m
+# CONFIG_USB_IDMOUSE is not set
+CONFIG_USB_FTDI_ELAN=m
+# CONFIG_USB_APPLEDISPLAY is not set
+CONFIG_USB_SISUSBVGA=m
+# CONFIG_USB_LD is not set
+# CONFIG_USB_TRANCEVIBRATOR is not set
+# CONFIG_USB_IOWARRIOR is not set
+# CONFIG_USB_TEST is not set
+
+#
+# USB DSL modem support
+#
+
+#
+# USB Gadget Support
+#
+# CONFIG_USB_GADGET is not set
+# CONFIG_MMC is not set
+
+#
+# Real Time Clock
+#
+CONFIG_RTC_LIB=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_HCTOSYS=y
+CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
+# CONFIG_RTC_DEBUG is not set
+
+#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=y
+CONFIG_RTC_INTF_PROC=y
+CONFIG_RTC_INTF_DEV=y
+# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
+# CONFIG_RTC_DRV_TEST is not set
+
+#
+# I2C RTC drivers
+#
+CONFIG_RTC_DRV_DS1307=y
+CONFIG_RTC_DRV_DS1672=y
+# CONFIG_RTC_DRV_MAX6900 is not set
+# CONFIG_RTC_DRV_RS5C372 is not set
+CONFIG_RTC_DRV_ISL1208=y
+CONFIG_RTC_DRV_X1205=y
+CONFIG_RTC_DRV_PCF8563=y
+# CONFIG_RTC_DRV_PCF8583 is not set
+
+#
+# SPI RTC drivers
+#
+
+#
+# Platform RTC drivers
+#
+# CONFIG_RTC_DRV_CMOS is not set
+# CONFIG_RTC_DRV_DS1553 is not set
+# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
+# CONFIG_RTC_DRV_V3020 is not set
+
+#
+# on-CPU RTC drivers
+#
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=m
+CONFIG_EXT2_FS_XATTR=y
+CONFIG_EXT2_FS_POSIX_ACL=y
+CONFIG_EXT2_FS_SECURITY=y
+# CONFIG_EXT2_FS_XIP is not set
+CONFIG_EXT3_FS=m
+CONFIG_EXT3_FS_XATTR=y
+CONFIG_EXT3_FS_POSIX_ACL=y
+CONFIG_EXT3_FS_SECURITY=y
+# CONFIG_EXT4DEV_FS is not set
+CONFIG_JBD=m
+# CONFIG_JBD_DEBUG is not set
+CONFIG_FS_MBCACHE=m
+CONFIG_REISERFS_FS=m
+# CONFIG_REISERFS_CHECK is not set
+# CONFIG_REISERFS_PROC_INFO is not set
+CONFIG_REISERFS_FS_XATTR=y
+CONFIG_REISERFS_FS_POSIX_ACL=y
+CONFIG_REISERFS_FS_SECURITY=y
+# CONFIG_JFS_FS is not set
+CONFIG_FS_POSIX_ACL=y
+# CONFIG_XFS_FS is not set
+# CONFIG_GFS2_FS is not set
+# CONFIG_OCFS2_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+# CONFIG_QUOTA is not set
+CONFIG_DNOTIFY=y
+# CONFIG_AUTOFS_FS is not set
+CONFIG_AUTOFS4_FS=m
+CONFIG_FUSE_FS=m
+
+#
+# CD-ROM/DVD Filesystems
+#
+CONFIG_ISO9660_FS=m
+CONFIG_JOLIET=y
+CONFIG_ZISOFS=y
+CONFIG_UDF_FS=m
+CONFIG_UDF_NLS=y
+
+#
+# DOS/FAT/NT Filesystems
+#
+CONFIG_FAT_FS=m
+CONFIG_MSDOS_FS=m
+CONFIG_VFAT_FS=m
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="utf8"
+CONFIG_NTFS_FS=m
+# CONFIG_NTFS_DEBUG is not set
+CONFIG_NTFS_RW=y
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_TMPFS_POSIX_ACL is not set
+# CONFIG_HUGETLB_PAGE is not set
+CONFIG_RAMFS=y
+# CONFIG_CONFIGFS_FS is not set
+
+#
+# Miscellaneous filesystems
+#
+# CONFIG_ADFS_FS is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_HFS_FS is not set
+# CONFIG_HFSPLUS_FS is not set
+# CONFIG_BEFS_FS is not set
+# CONFIG_BFS_FS is not set
+# CONFIG_EFS_FS is not set
+CONFIG_JFFS2_FS=y
+CONFIG_JFFS2_FS_DEBUG=0
+CONFIG_JFFS2_FS_WRITEBUFFER=y
+# CONFIG_JFFS2_SUMMARY is not set
+# CONFIG_JFFS2_FS_XATTR is not set
+# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
+CONFIG_JFFS2_ZLIB=y
+CONFIG_JFFS2_RTIME=y
+# CONFIG_JFFS2_RUBIN is not set
+# CONFIG_CRAMFS is not set
+# CONFIG_VXFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+
+#
+# Network File Systems
+#
+CONFIG_NFS_FS=m
+CONFIG_NFS_V3=y
+# CONFIG_NFS_V3_ACL is not set
+# CONFIG_NFS_V4 is not set
+# CONFIG_NFS_DIRECTIO is not set
+CONFIG_NFSD=m
+CONFIG_NFSD_V3=y
+# CONFIG_NFSD_V3_ACL is not set
+CONFIG_NFSD_V4=y
+CONFIG_NFSD_TCP=y
+CONFIG_LOCKD=m
+CONFIG_LOCKD_V4=y
+CONFIG_EXPORTFS=m
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=m
+CONFIG_SUNRPC_GSS=m
+# CONFIG_SUNRPC_BIND34 is not set
+CONFIG_RPCSEC_GSS_KRB5=m
+# CONFIG_RPCSEC_GSS_SPKM3 is not set
+CONFIG_SMB_FS=m
+# CONFIG_SMB_NLS_DEFAULT is not set
+CONFIG_CIFS=m
+# CONFIG_CIFS_STATS is not set
+# CONFIG_CIFS_WEAK_PW_HASH is not set
+CONFIG_CIFS_XATTR=y
+CONFIG_CIFS_POSIX=y
+# CONFIG_CIFS_DEBUG2 is not set
+# CONFIG_CIFS_EXPERIMENTAL is not set
+# CONFIG_NCP_FS is not set
+# CONFIG_CODA_FS is not set
+# CONFIG_AFS_FS is not set
+# CONFIG_9P_FS is not set
+
+#
+# Partition Types
+#
+CONFIG_PARTITION_ADVANCED=y
+# CONFIG_ACORN_PARTITION is not set
+# CONFIG_OSF_PARTITION is not set
+# CONFIG_AMIGA_PARTITION is not set
+# CONFIG_ATARI_PARTITION is not set
+# CONFIG_MAC_PARTITION is not set
+CONFIG_MSDOS_PARTITION=y
+# CONFIG_BSD_DISKLABEL is not set
+# CONFIG_MINIX_SUBPARTITION is not set
+# CONFIG_SOLARIS_X86_PARTITION is not set
+# CONFIG_UNIXWARE_DISKLABEL is not set
+# CONFIG_LDM_PARTITION is not set
+# CONFIG_SGI_PARTITION is not set
+# CONFIG_ULTRIX_PARTITION is not set
+# CONFIG_SUN_PARTITION is not set
+# CONFIG_KARMA_PARTITION is not set
+# CONFIG_EFI_PARTITION is not set
+# CONFIG_SYSV68_PARTITION is not set
+
+#
+# Native Language Support
+#
+CONFIG_NLS=m
+CONFIG_NLS_DEFAULT="utf8"
+CONFIG_NLS_CODEPAGE_437=m
+CONFIG_NLS_CODEPAGE_737=m
+CONFIG_NLS_CODEPAGE_775=m
+CONFIG_NLS_CODEPAGE_850=m
+CONFIG_NLS_CODEPAGE_852=m
+CONFIG_NLS_CODEPAGE_855=m
+CONFIG_NLS_CODEPAGE_857=m
+CONFIG_NLS_CODEPAGE_860=m
+CONFIG_NLS_CODEPAGE_861=m
+CONFIG_NLS_CODEPAGE_862=m
+CONFIG_NLS_CODEPAGE_863=m
+CONFIG_NLS_CODEPAGE_864=m
+CONFIG_NLS_CODEPAGE_865=m
+CONFIG_NLS_CODEPAGE_866=m
+CONFIG_NLS_CODEPAGE_869=m
+CONFIG_NLS_CODEPAGE_936=m
+CONFIG_NLS_CODEPAGE_950=m
+CONFIG_NLS_CODEPAGE_932=m
+CONFIG_NLS_CODEPAGE_949=m
+CONFIG_NLS_CODEPAGE_874=m
+CONFIG_NLS_ISO8859_8=m
+CONFIG_NLS_CODEPAGE_1250=m
+CONFIG_NLS_CODEPAGE_1251=m
+CONFIG_NLS_ASCII=m
+CONFIG_NLS_ISO8859_1=m
+CONFIG_NLS_ISO8859_2=m
+CONFIG_NLS_ISO8859_3=m
+CONFIG_NLS_ISO8859_4=m
+CONFIG_NLS_ISO8859_5=m
+CONFIG_NLS_ISO8859_6=m
+CONFIG_NLS_ISO8859_7=m
+CONFIG_NLS_ISO8859_9=m
+CONFIG_NLS_ISO8859_13=m
+CONFIG_NLS_ISO8859_14=m
+CONFIG_NLS_ISO8859_15=m
+CONFIG_NLS_KOI8_R=m
+CONFIG_NLS_KOI8_U=m
+CONFIG_NLS_UTF8=m
+
+#
+# Distributed Lock Manager
+#
+# CONFIG_DLM is not set
+
+#
+# Profiling support
+#
+# CONFIG_PROFILING is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+CONFIG_ENABLE_MUST_CHECK=y
+# CONFIG_MAGIC_SYSRQ is not set
+# CONFIG_UNUSED_SYMBOLS is not set
+# CONFIG_DEBUG_FS is not set
+# CONFIG_HEADERS_CHECK is not set
+# CONFIG_DEBUG_KERNEL is not set
+# CONFIG_DEBUG_BUGVERBOSE is not set
+CONFIG_FRAME_POINTER=y
+# CONFIG_DEBUG_USER is not set
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+
+#
+# Cryptographic options
+#
+CONFIG_CRYPTO=y
+CONFIG_CRYPTO_ALGAPI=y
+CONFIG_CRYPTO_BLKCIPHER=y
+CONFIG_CRYPTO_HASH=y
+CONFIG_CRYPTO_MANAGER=y
+CONFIG_CRYPTO_HMAC=y
+# CONFIG_CRYPTO_XCBC is not set
+# CONFIG_CRYPTO_NULL is not set
+# CONFIG_CRYPTO_MD4 is not set
+CONFIG_CRYPTO_MD5=y
+CONFIG_CRYPTO_SHA1=m
+# CONFIG_CRYPTO_SHA256 is not set
+# CONFIG_CRYPTO_SHA512 is not set
+# CONFIG_CRYPTO_WP512 is not set
+# CONFIG_CRYPTO_TGR192 is not set
+# CONFIG_CRYPTO_GF128MUL is not set
+CONFIG_CRYPTO_ECB=m
+CONFIG_CRYPTO_CBC=y
+# CONFIG_CRYPTO_PCBC is not set
+# CONFIG_CRYPTO_LRW is not set
+# CONFIG_CRYPTO_CRYPTD is not set
+CONFIG_CRYPTO_DES=y
+# CONFIG_CRYPTO_FCRYPT is not set
+# CONFIG_CRYPTO_BLOWFISH is not set
+# CONFIG_CRYPTO_TWOFISH is not set
+# CONFIG_CRYPTO_SERPENT is not set
+CONFIG_CRYPTO_AES=m
+# CONFIG_CRYPTO_CAST5 is not set
+# CONFIG_CRYPTO_CAST6 is not set
+# CONFIG_CRYPTO_TEA is not set
+CONFIG_CRYPTO_ARC4=m
+# CONFIG_CRYPTO_KHAZAD is not set
+# CONFIG_CRYPTO_ANUBIS is not set
+CONFIG_CRYPTO_DEFLATE=m
+CONFIG_CRYPTO_MICHAEL_MIC=m
+CONFIG_CRYPTO_CRC32C=m
+# CONFIG_CRYPTO_CAMELLIA is not set
+# CONFIG_CRYPTO_TEST is not set
+
+#
+# Hardware crypto devices
+#
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+CONFIG_CRC_CCITT=m
+CONFIG_CRC16=y
+# CONFIG_CRC_ITU_T is not set
+CONFIG_CRC32=y
+CONFIG_LIBCRC32C=m
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_TEXTSEARCH=y
+CONFIG_TEXTSEARCH_KMP=m
+CONFIG_TEXTSEARCH_BM=m
+CONFIG_TEXTSEARCH_FSM=m
+CONFIG_PLIST=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
+CONFIG_HAS_DMA=y
diff --git a/packages/linux/linux-ixp4xx/defconfig-2.6.23.8 b/packages/linux/linux-ixp4xx/defconfig-2.6.23.8
new file mode 100644
index 0000000000..efbd55195d
--- /dev/null
+++ b/packages/linux/linux-ixp4xx/defconfig-2.6.23.8
@@ -0,0 +1,1940 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.23.8
+# Wed Nov 21 22:15:10 2007
+#
+CONFIG_ARM=y
+CONFIG_SYS_SUPPORTS_APM_EMULATION=y
+CONFIG_GENERIC_GPIO=y
+CONFIG_GENERIC_TIME=y
+CONFIG_GENERIC_CLOCKEVENTS=y
+CONFIG_MMU=y
+# CONFIG_NO_IOPORT is not set
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_STACKTRACE_SUPPORT=y
+CONFIG_LOCKDEP_SUPPORT=y
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+CONFIG_HARDIRQS_SW_RESEND=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+# CONFIG_ARCH_HAS_ILOG2_U32 is not set
+# CONFIG_ARCH_HAS_ILOG2_U64 is not set
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_ZONE_DMA=y
+CONFIG_VECTORS_BASE=0xffff0000
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+
+#
+# General setup
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_LOCK_KERNEL=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+CONFIG_LOCALVERSION=""
+# CONFIG_LOCALVERSION_AUTO is not set
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=y
+CONFIG_SYSVIPC_SYSCTL=y
+# CONFIG_POSIX_MQUEUE is not set
+# CONFIG_BSD_PROCESS_ACCT is not set
+# CONFIG_TASKSTATS is not set
+# CONFIG_USER_NS is not set
+# CONFIG_AUDIT is not set
+CONFIG_IKCONFIG=m
+CONFIG_IKCONFIG_PROC=y
+CONFIG_LOG_BUF_SHIFT=14
+CONFIG_SYSFS_DEPRECATED=y
+# CONFIG_RELAY is not set
+# CONFIG_BLK_DEV_INITRD is not set
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_SYSCTL=y
+CONFIG_EMBEDDED=y
+CONFIG_UID16=y
+# CONFIG_SYSCTL_SYSCALL is not set
+# CONFIG_KALLSYMS is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_ANON_INODES=y
+CONFIG_EPOLL=y
+CONFIG_SIGNALFD=y
+CONFIG_EVENTFD=y
+CONFIG_SHMEM=y
+# CONFIG_VM_EVENT_COUNTERS is not set
+CONFIG_SLAB=y
+# CONFIG_SLUB is not set
+# CONFIG_SLOB is not set
+CONFIG_RT_MUTEXES=y
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=0
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+# CONFIG_MODULE_FORCE_UNLOAD is not set
+CONFIG_MODVERSIONS=y
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_KMOD=y
+CONFIG_BLOCK=y
+# CONFIG_LBD is not set
+# CONFIG_BLK_DEV_IO_TRACE is not set
+# CONFIG_LSF is not set
+# CONFIG_BLK_DEV_BSG is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+# CONFIG_IOSCHED_AS is not set
+CONFIG_IOSCHED_DEADLINE=y
+# CONFIG_IOSCHED_CFQ is not set
+# CONFIG_DEFAULT_AS is not set
+CONFIG_DEFAULT_DEADLINE=y
+# CONFIG_DEFAULT_CFQ is not set
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="deadline"
+
+#
+# System Type
+#
+# CONFIG_ARCH_AAEC2000 is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_VERSATILE is not set
+# CONFIG_ARCH_AT91 is not set
+# CONFIG_ARCH_CLPS7500 is not set
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_CO285 is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_EP93XX is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_NETX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_IOP13XX is not set
+# CONFIG_ARCH_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IXP23XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+CONFIG_ARCH_IXP4XX=y
+# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_KS8695 is not set
+# CONFIG_ARCH_NS9XXX is not set
+# CONFIG_ARCH_MXC is not set
+# CONFIG_ARCH_PNX4008 is not set
+# CONFIG_ARCH_PXA is not set
+# CONFIG_ARCH_RPC is not set
+# CONFIG_ARCH_SA1100 is not set
+# CONFIG_ARCH_S3C2410 is not set
+# CONFIG_ARCH_SHARK is not set
+# CONFIG_ARCH_LH7A40X is not set
+# CONFIG_ARCH_DAVINCI is not set
+# CONFIG_ARCH_OMAP is not set
+CONFIG_ARCH_SUPPORTS_BIG_ENDIAN=y
+
+#
+# Intel IXP4xx Implementation Options
+#
+
+#
+# IXP4xx Platforms
+#
+CONFIG_MACH_NSLU2=y
+CONFIG_MACH_AVILA=y
+CONFIG_MACH_LOFT=y
+# CONFIG_ARCH_ADI_COYOTE is not set
+# CONFIG_MACH_GATEWAY7001 is not set
+# CONFIG_MACH_WG302V2 is not set
+CONFIG_ARCH_IXDP425=y
+CONFIG_MACH_IXDPG425=y
+# CONFIG_MACH_IXDP465 is not set
+# CONFIG_MACH_KIXRP435 is not set
+CONFIG_ARCH_IXCDP1100=y
+# CONFIG_ARCH_PRPMC1100 is not set
+CONFIG_MACH_NAS100D=y
+CONFIG_MACH_DSMG600=y
+CONFIG_ARCH_IXDP4XX=y
+CONFIG_MACH_FSG=y
+# CONFIG_MACH_GTWX5715 is not set
+
+#
+# IXP4xx Options
+#
+CONFIG_DMABOUNCE=y
+# CONFIG_IXP4XX_INDIRECT_PCI is not set
+CONFIG_IXP4XX_QMGR=y
+CONFIG_IXP4XX_NPE=y
+
+#
+# Boot options
+#
+
+#
+# Power management
+#
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+CONFIG_CPU_XSCALE=y
+CONFIG_CPU_32v5=y
+CONFIG_CPU_ABRT_EV5T=y
+CONFIG_CPU_CACHE_VIVT=y
+CONFIG_CPU_TLB_V4WBI=y
+CONFIG_CPU_CP15=y
+CONFIG_CPU_CP15_MMU=y
+
+#
+# Processor Features
+#
+CONFIG_ARM_THUMB=y
+CONFIG_CPU_BIG_ENDIAN=y
+# CONFIG_CPU_DCACHE_DISABLE is not set
+# CONFIG_OUTER_CACHE is not set
+# CONFIG_IWMMXT is not set
+CONFIG_XSCALE_PMU=y
+
+#
+# Bus support
+#
+CONFIG_PCI=y
+CONFIG_PCI_SYSCALL=y
+# CONFIG_ARCH_SUPPORTS_MSI is not set
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+# CONFIG_PCCARD is not set
+
+#
+# Kernel Features
+#
+CONFIG_TICK_ONESHOT=y
+CONFIG_NO_HZ=y
+CONFIG_HIGH_RES_TIMERS=y
+CONFIG_PREEMPT=y
+CONFIG_HZ=100
+CONFIG_AEABI=y
+CONFIG_OABI_COMPAT=y
+# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
+CONFIG_SELECT_MEMORY_MODEL=y
+CONFIG_FLATMEM_MANUAL=y
+# CONFIG_DISCONTIGMEM_MANUAL is not set
+# CONFIG_SPARSEMEM_MANUAL is not set
+CONFIG_FLATMEM=y
+CONFIG_FLAT_NODE_MEM_MAP=y
+# CONFIG_SPARSEMEM_STATIC is not set
+CONFIG_SPLIT_PTLOCK_CPUS=4096
+# CONFIG_RESOURCES_64BIT is not set
+CONFIG_ZONE_DMA_FLAG=1
+CONFIG_BOUNCE=y
+CONFIG_VIRT_TO_BUS=y
+CONFIG_ALIGNMENT_TRAP=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE=" noirqdebug console=ttyS0,115200n8"
+# CONFIG_XIP_KERNEL is not set
+CONFIG_KEXEC=y
+
+#
+# Floating point emulation
+#
+
+#
+# At least one emulation must be selected
+#
+CONFIG_FPE_NWFPE=y
+# CONFIG_FPE_NWFPE_XP is not set
+# CONFIG_FPE_FASTFPE is not set
+
+#
+# Userspace binary formats
+#
+CONFIG_BINFMT_ELF=y
+# CONFIG_BINFMT_AOUT is not set
+# CONFIG_BINFMT_MISC is not set
+
+#
+# Power management options
+#
+# CONFIG_PM is not set
+CONFIG_SUSPEND_UP_POSSIBLE=y
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+CONFIG_PACKET=y
+CONFIG_PACKET_MMAP=y
+CONFIG_UNIX=y
+CONFIG_XFRM=y
+# CONFIG_XFRM_USER is not set
+# CONFIG_XFRM_SUB_POLICY is not set
+# CONFIG_XFRM_MIGRATE is not set
+# CONFIG_NET_KEY is not set
+CONFIG_INET=y
+# CONFIG_IP_MULTICAST is not set
+# CONFIG_IP_ADVANCED_ROUTER is not set
+CONFIG_IP_FIB_HASH=y
+# CONFIG_IP_PNP is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_ARPD is not set
+# CONFIG_SYN_COOKIES is not set
+CONFIG_INET_AH=m
+CONFIG_INET_ESP=m
+CONFIG_INET_IPCOMP=m
+CONFIG_INET_XFRM_TUNNEL=m
+CONFIG_INET_TUNNEL=m
+CONFIG_INET_XFRM_MODE_TRANSPORT=y
+CONFIG_INET_XFRM_MODE_TUNNEL=y
+CONFIG_INET_XFRM_MODE_BEET=m
+CONFIG_INET_DIAG=y
+CONFIG_INET_TCP_DIAG=y
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_CUBIC=y
+CONFIG_DEFAULT_TCP_CONG="cubic"
+# CONFIG_TCP_MD5SIG is not set
+# CONFIG_IP_VS is not set
+CONFIG_IPV6=m
+# CONFIG_IPV6_PRIVACY is not set
+# CONFIG_IPV6_ROUTER_PREF is not set
+# CONFIG_IPV6_OPTIMISTIC_DAD is not set
+CONFIG_INET6_AH=m
+CONFIG_INET6_ESP=m
+CONFIG_INET6_IPCOMP=m
+# CONFIG_IPV6_MIP6 is not set
+CONFIG_INET6_XFRM_TUNNEL=m
+CONFIG_INET6_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_TRANSPORT=m
+CONFIG_INET6_XFRM_MODE_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_BEET=m
+# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
+CONFIG_IPV6_SIT=m
+CONFIG_IPV6_TUNNEL=m
+# CONFIG_IPV6_MULTIPLE_TABLES is not set
+# CONFIG_NETWORK_SECMARK is not set
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+CONFIG_BRIDGE_NETFILTER=y
+
+#
+# Core Netfilter Configuration
+#
+CONFIG_NETFILTER_NETLINK=m
+CONFIG_NETFILTER_NETLINK_QUEUE=m
+CONFIG_NETFILTER_NETLINK_LOG=m
+CONFIG_NF_CONNTRACK_ENABLED=m
+CONFIG_NF_CONNTRACK=m
+CONFIG_NF_CT_ACCT=y
+CONFIG_NF_CONNTRACK_MARK=y
+CONFIG_NF_CONNTRACK_EVENTS=y
+CONFIG_NF_CT_PROTO_GRE=m
+CONFIG_NF_CT_PROTO_SCTP=m
+# CONFIG_NF_CT_PROTO_UDPLITE is not set
+CONFIG_NF_CONNTRACK_AMANDA=m
+CONFIG_NF_CONNTRACK_FTP=m
+CONFIG_NF_CONNTRACK_H323=m
+CONFIG_NF_CONNTRACK_IRC=m
+CONFIG_NF_CONNTRACK_NETBIOS_NS=m
+CONFIG_NF_CONNTRACK_PPTP=m
+CONFIG_NF_CONNTRACK_SANE=m
+CONFIG_NF_CONNTRACK_SIP=m
+CONFIG_NF_CONNTRACK_TFTP=m
+CONFIG_NF_CT_NETLINK=m
+CONFIG_NETFILTER_XTABLES=m
+CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
+CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
+CONFIG_NETFILTER_XT_TARGET_DSCP=m
+CONFIG_NETFILTER_XT_TARGET_MARK=m
+CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
+CONFIG_NETFILTER_XT_TARGET_NFLOG=m
+CONFIG_NETFILTER_XT_TARGET_NOTRACK=m
+# CONFIG_NETFILTER_XT_TARGET_TRACE is not set
+CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
+CONFIG_NETFILTER_XT_MATCH_COMMENT=m
+CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
+# CONFIG_NETFILTER_XT_MATCH_CONNLIMIT is not set
+CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
+CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
+CONFIG_NETFILTER_XT_MATCH_DCCP=m
+CONFIG_NETFILTER_XT_MATCH_DSCP=m
+CONFIG_NETFILTER_XT_MATCH_ESP=m
+CONFIG_NETFILTER_XT_MATCH_HELPER=m
+CONFIG_NETFILTER_XT_MATCH_LENGTH=m
+CONFIG_NETFILTER_XT_MATCH_LIMIT=m
+CONFIG_NETFILTER_XT_MATCH_MAC=m
+CONFIG_NETFILTER_XT_MATCH_MARK=m
+CONFIG_NETFILTER_XT_MATCH_POLICY=m
+CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
+CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m
+CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
+CONFIG_NETFILTER_XT_MATCH_QUOTA=m
+CONFIG_NETFILTER_XT_MATCH_REALM=m
+CONFIG_NETFILTER_XT_MATCH_SCTP=m
+CONFIG_NETFILTER_XT_MATCH_STATE=m
+CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
+CONFIG_NETFILTER_XT_MATCH_STRING=m
+CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
+# CONFIG_NETFILTER_XT_MATCH_U32 is not set
+CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
+
+#
+# IP: Netfilter Configuration
+#
+CONFIG_NF_CONNTRACK_IPV4=m
+CONFIG_NF_CONNTRACK_PROC_COMPAT=y
+# CONFIG_IP_NF_QUEUE is not set
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_MATCH_IPRANGE=m
+CONFIG_IP_NF_MATCH_TOS=m
+CONFIG_IP_NF_MATCH_RECENT=m
+CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_AH=m
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_MATCH_OWNER=m
+CONFIG_IP_NF_MATCH_ADDRTYPE=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_LOG=m
+CONFIG_IP_NF_TARGET_ULOG=m
+CONFIG_NF_NAT=m
+CONFIG_NF_NAT_NEEDED=y
+CONFIG_IP_NF_TARGET_MASQUERADE=m
+CONFIG_IP_NF_TARGET_REDIRECT=m
+CONFIG_IP_NF_TARGET_NETMAP=m
+CONFIG_IP_NF_TARGET_SAME=m
+CONFIG_NF_NAT_SNMP_BASIC=m
+CONFIG_NF_NAT_PROTO_GRE=m
+CONFIG_NF_NAT_FTP=m
+CONFIG_NF_NAT_IRC=m
+CONFIG_NF_NAT_TFTP=m
+CONFIG_NF_NAT_AMANDA=m
+CONFIG_NF_NAT_PPTP=m
+CONFIG_NF_NAT_H323=m
+CONFIG_NF_NAT_SIP=m
+CONFIG_IP_NF_MANGLE=m
+CONFIG_IP_NF_TARGET_TOS=m
+CONFIG_IP_NF_TARGET_ECN=m
+CONFIG_IP_NF_TARGET_TTL=m
+CONFIG_IP_NF_TARGET_CLUSTERIP=m
+CONFIG_IP_NF_RAW=m
+CONFIG_IP_NF_ARPTABLES=m
+CONFIG_IP_NF_ARPFILTER=m
+CONFIG_IP_NF_ARP_MANGLE=m
+
+#
+# IPv6: Netfilter Configuration (EXPERIMENTAL)
+#
+CONFIG_NF_CONNTRACK_IPV6=m
+# CONFIG_IP6_NF_QUEUE is not set
+CONFIG_IP6_NF_IPTABLES=m
+CONFIG_IP6_NF_MATCH_RT=m
+CONFIG_IP6_NF_MATCH_OPTS=m
+CONFIG_IP6_NF_MATCH_FRAG=m
+CONFIG_IP6_NF_MATCH_HL=m
+CONFIG_IP6_NF_MATCH_OWNER=m
+CONFIG_IP6_NF_MATCH_IPV6HEADER=m
+CONFIG_IP6_NF_MATCH_AH=m
+CONFIG_IP6_NF_MATCH_MH=m
+CONFIG_IP6_NF_MATCH_EUI64=m
+CONFIG_IP6_NF_FILTER=m
+CONFIG_IP6_NF_TARGET_LOG=m
+CONFIG_IP6_NF_TARGET_REJECT=m
+CONFIG_IP6_NF_MANGLE=m
+CONFIG_IP6_NF_TARGET_HL=m
+CONFIG_IP6_NF_RAW=m
+
+#
+# Bridge: Netfilter Configuration
+#
+CONFIG_BRIDGE_NF_EBTABLES=m
+CONFIG_BRIDGE_EBT_BROUTE=m
+CONFIG_BRIDGE_EBT_T_FILTER=m
+CONFIG_BRIDGE_EBT_T_NAT=m
+CONFIG_BRIDGE_EBT_802_3=m
+CONFIG_BRIDGE_EBT_AMONG=m
+CONFIG_BRIDGE_EBT_ARP=m
+CONFIG_BRIDGE_EBT_IP=m
+CONFIG_BRIDGE_EBT_LIMIT=m
+CONFIG_BRIDGE_EBT_MARK=m
+CONFIG_BRIDGE_EBT_PKTTYPE=m
+CONFIG_BRIDGE_EBT_STP=m
+CONFIG_BRIDGE_EBT_VLAN=m
+CONFIG_BRIDGE_EBT_ARPREPLY=m
+CONFIG_BRIDGE_EBT_DNAT=m
+CONFIG_BRIDGE_EBT_MARK_T=m
+CONFIG_BRIDGE_EBT_REDIRECT=m
+CONFIG_BRIDGE_EBT_SNAT=m
+CONFIG_BRIDGE_EBT_LOG=m
+CONFIG_BRIDGE_EBT_ULOG=m
+# CONFIG_IP_DCCP is not set
+# CONFIG_IP_SCTP is not set
+CONFIG_TIPC=m
+# CONFIG_TIPC_ADVANCED is not set
+# CONFIG_TIPC_DEBUG is not set
+# CONFIG_ATM is not set
+CONFIG_BRIDGE=m
+CONFIG_VLAN_8021Q=m
+# CONFIG_DECNET is not set
+CONFIG_LLC=m
+# CONFIG_LLC2 is not set
+CONFIG_IPX=m
+# CONFIG_IPX_INTERN is not set
+CONFIG_ATALK=m
+CONFIG_DEV_APPLETALK=m
+CONFIG_IPDDP=m
+CONFIG_IPDDP_ENCAP=y
+CONFIG_IPDDP_DECAP=y
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_ECONET is not set
+# CONFIG_WAN_ROUTER is not set
+
+#
+# QoS and/or fair queueing
+#
+# CONFIG_NET_SCHED is not set
+CONFIG_NET_CLS_ROUTE=y
+
+#
+# Network testing
+#
+CONFIG_NET_PKTGEN=m
+# CONFIG_HAMRADIO is not set
+# CONFIG_IRDA is not set
+CONFIG_BT=m
+CONFIG_BT_L2CAP=m
+CONFIG_BT_SCO=m
+CONFIG_BT_RFCOMM=m
+CONFIG_BT_RFCOMM_TTY=y
+CONFIG_BT_BNEP=m
+CONFIG_BT_BNEP_MC_FILTER=y
+CONFIG_BT_BNEP_PROTO_FILTER=y
+CONFIG_BT_CMTP=m
+CONFIG_BT_HIDP=m
+
+#
+# Bluetooth device drivers
+#
+CONFIG_BT_HCIUSB=m
+CONFIG_BT_HCIUSB_SCO=y
+CONFIG_BT_HCIUART=m
+CONFIG_BT_HCIUART_H4=y
+CONFIG_BT_HCIUART_BCSP=y
+CONFIG_BT_HCIBCM203X=m
+CONFIG_BT_HCIBPA10X=m
+CONFIG_BT_HCIBFUSB=m
+CONFIG_BT_HCIVHCI=m
+# CONFIG_AF_RXRPC is not set
+
+#
+# Wireless
+#
+# CONFIG_CFG80211 is not set
+CONFIG_WIRELESS_EXT=y
+# CONFIG_MAC80211 is not set
+CONFIG_IEEE80211=m
+# CONFIG_IEEE80211_DEBUG is not set
+CONFIG_IEEE80211_CRYPT_WEP=m
+CONFIG_IEEE80211_CRYPT_CCMP=m
+CONFIG_IEEE80211_CRYPT_TKIP=m
+CONFIG_IEEE80211_SOFTMAC=m
+# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
+CONFIG_RFKILL=m
+# CONFIG_RFKILL_INPUT is not set
+# CONFIG_NET_9P is not set
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=y
+# CONFIG_SYS_HYPERVISOR is not set
+# CONFIG_CONNECTOR is not set
+CONFIG_MTD=y
+# CONFIG_MTD_DEBUG is not set
+CONFIG_MTD_CONCAT=y
+CONFIG_MTD_PARTITIONS=y
+CONFIG_MTD_REDBOOT_PARTS=y
+CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1
+CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED=y
+# CONFIG_MTD_REDBOOT_PARTS_READONLY is not set
+# CONFIG_MTD_CMDLINE_PARTS is not set
+# CONFIG_MTD_AFS_PARTS is not set
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=y
+CONFIG_MTD_BLKDEVS=y
+CONFIG_MTD_BLOCK=y
+# CONFIG_FTL is not set
+CONFIG_NFTL=y
+CONFIG_NFTL_RW=y
+# CONFIG_INFTL is not set
+# CONFIG_RFD_FTL is not set
+# CONFIG_SSFDC is not set
+
+#
+# RAM/ROM/Flash chip drivers
+#
+CONFIG_MTD_CFI=y
+# CONFIG_MTD_JEDECPROBE is not set
+CONFIG_MTD_GEN_PROBE=y
+CONFIG_MTD_CFI_ADV_OPTIONS=y
+# CONFIG_MTD_CFI_NOSWAP is not set
+CONFIG_MTD_CFI_BE_BYTE_SWAP=y
+# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
+CONFIG_MTD_CFI_GEOMETRY=y
+# CONFIG_MTD_MAP_BANK_WIDTH_1 is not set
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+# CONFIG_MTD_MAP_BANK_WIDTH_4 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
+CONFIG_MTD_CFI_I1=y
+CONFIG_MTD_CFI_I2=y
+# CONFIG_MTD_CFI_I4 is not set
+# CONFIG_MTD_CFI_I8 is not set
+# CONFIG_MTD_OTP is not set
+CONFIG_MTD_CFI_INTELEXT=y
+# CONFIG_MTD_CFI_AMDSTD is not set
+# CONFIG_MTD_CFI_STAA is not set
+CONFIG_MTD_CFI_UTIL=y
+# CONFIG_MTD_RAM is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+
+#
+# Mapping drivers for chip access
+#
+CONFIG_MTD_COMPLEX_MAPPINGS=y
+# CONFIG_MTD_PHYSMAP is not set
+# CONFIG_MTD_ARM_INTEGRATOR is not set
+CONFIG_MTD_IXP4XX=y
+# CONFIG_MTD_PCI is not set
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_PMC551 is not set
+# CONFIG_MTD_SLRAM is not set
+# CONFIG_MTD_PHRAM is not set
+# CONFIG_MTD_MTDRAM is not set
+# CONFIG_MTD_BLOCK2MTD is not set
+
+#
+# Disk-On-Chip Device Drivers
+#
+# CONFIG_MTD_DOC2000 is not set
+# CONFIG_MTD_DOC2001 is not set
+# CONFIG_MTD_DOC2001PLUS is not set
+# CONFIG_MTD_NAND is not set
+# CONFIG_MTD_ONENAND is not set
+
+#
+# UBI - Unsorted block images
+#
+# CONFIG_MTD_UBI is not set
+# CONFIG_PARPORT is not set
+CONFIG_BLK_DEV=y
+# CONFIG_BLK_CPQ_DA is not set
+# CONFIG_BLK_CPQ_CISS_DA is not set
+# CONFIG_BLK_DEV_DAC960 is not set
+# CONFIG_BLK_DEV_UMEM is not set
+# CONFIG_BLK_DEV_COW_COMMON is not set
+CONFIG_BLK_DEV_LOOP=m
+# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+CONFIG_BLK_DEV_NBD=m
+# CONFIG_BLK_DEV_SX8 is not set
+# CONFIG_BLK_DEV_UB is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=4
+CONFIG_BLK_DEV_RAM_SIZE=10240
+CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
+CONFIG_CDROM_PKTCDVD=m
+CONFIG_CDROM_PKTCDVD_BUFFERS=8
+# CONFIG_CDROM_PKTCDVD_WCACHE is not set
+CONFIG_ATA_OVER_ETH=m
+# CONFIG_IDE is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+CONFIG_SCSI=y
+CONFIG_SCSI_DMA=y
+# CONFIG_SCSI_TGT is not set
+# CONFIG_SCSI_NETLINK is not set
+CONFIG_SCSI_PROC_FS=y
+
+#
+# SCSI support type (disk, tape, CD-ROM)
+#
+CONFIG_BLK_DEV_SD=y
+CONFIG_CHR_DEV_ST=m
+# CONFIG_CHR_DEV_OSST is not set
+CONFIG_BLK_DEV_SR=m
+# CONFIG_BLK_DEV_SR_VENDOR is not set
+CONFIG_CHR_DEV_SG=m
+# CONFIG_CHR_DEV_SCH is not set
+
+#
+# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
+#
+CONFIG_SCSI_MULTI_LUN=y
+# CONFIG_SCSI_CONSTANTS is not set
+# CONFIG_SCSI_LOGGING is not set
+# CONFIG_SCSI_SCAN_ASYNC is not set
+CONFIG_SCSI_WAIT_SCAN=m
+
+#
+# SCSI Transports
+#
+# CONFIG_SCSI_SPI_ATTRS is not set
+# CONFIG_SCSI_FC_ATTRS is not set
+CONFIG_SCSI_ISCSI_ATTRS=m
+# CONFIG_SCSI_SAS_LIBSAS is not set
+CONFIG_SCSI_LOWLEVEL=y
+CONFIG_ISCSI_TCP=m
+# 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_DMX3191D is not set
+# CONFIG_SCSI_FUTURE_DOMAIN 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_IPR 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=m
+# CONFIG_ATA_NONSTANDARD is not set
+# CONFIG_SATA_AHCI is not set
+# CONFIG_SATA_SVW is not set
+# CONFIG_ATA_PIIX is not set
+# CONFIG_SATA_MV is not set
+# CONFIG_SATA_NV is not set
+# CONFIG_PDC_ADMA is not set
+# CONFIG_SATA_QSTOR is not set
+# CONFIG_SATA_PROMISE is not set
+# CONFIG_SATA_SX4 is not set
+# CONFIG_SATA_SIL is not set
+# CONFIG_SATA_SIL24 is not set
+# CONFIG_SATA_SIS is not set
+# CONFIG_SATA_ULI is not set
+CONFIG_SATA_VIA=m
+# CONFIG_SATA_VITESSE is not set
+# CONFIG_SATA_INIC162X is not set
+# CONFIG_PATA_ALI is not set
+# CONFIG_PATA_AMD is not set
+CONFIG_PATA_ARTOP=m
+# CONFIG_PATA_ATIIXP is not set
+# CONFIG_PATA_CMD640_PCI is not set
+# CONFIG_PATA_CMD64X is not set
+# CONFIG_PATA_CS5520 is not set
+# CONFIG_PATA_CS5530 is not set
+# CONFIG_PATA_CYPRESS is not set
+# CONFIG_PATA_EFAR is not set
+# CONFIG_ATA_GENERIC is not set
+# CONFIG_PATA_HPT366 is not set
+# CONFIG_PATA_HPT37X is not set
+# CONFIG_PATA_HPT3X2N is not set
+# CONFIG_PATA_HPT3X3 is not set
+# CONFIG_PATA_IT821X is not set
+# CONFIG_PATA_IT8213 is not set
+# CONFIG_PATA_JMICRON is not set
+# CONFIG_PATA_TRIFLEX is not set
+# CONFIG_PATA_MARVELL is not set
+# CONFIG_PATA_MPIIX is not set
+# CONFIG_PATA_OLDPIIX is not set
+# CONFIG_PATA_NETCELL is not set
+# CONFIG_PATA_NS87410 is not set
+# CONFIG_PATA_OPTI is not set
+# CONFIG_PATA_OPTIDMA is not set
+# CONFIG_PATA_PDC_OLD is not set
+# CONFIG_PATA_RADISYS is not set
+# CONFIG_PATA_RZ1000 is not set
+# CONFIG_PATA_SC1200 is not set
+# CONFIG_PATA_SERVERWORKS is not set
+# CONFIG_PATA_PDC2027X is not set
+# CONFIG_PATA_SIL680 is not set
+# CONFIG_PATA_SIS is not set
+# CONFIG_PATA_VIA is not set
+# CONFIG_PATA_WINBOND is not set
+# CONFIG_PATA_PLATFORM is not set
+CONFIG_PATA_IXP4XX_CF=m
+CONFIG_MD=y
+CONFIG_BLK_DEV_MD=m
+CONFIG_MD_LINEAR=m
+CONFIG_MD_RAID0=m
+CONFIG_MD_RAID1=m
+CONFIG_MD_RAID10=m
+CONFIG_MD_RAID456=m
+CONFIG_MD_RAID5_RESHAPE=y
+CONFIG_MD_MULTIPATH=m
+CONFIG_MD_FAULTY=m
+CONFIG_BLK_DEV_DM=m
+# CONFIG_DM_DEBUG is not set
+CONFIG_DM_CRYPT=m
+# CONFIG_DM_SNAPSHOT is not set
+# CONFIG_DM_MIRROR is not set
+# CONFIG_DM_ZERO is not set
+# CONFIG_DM_MULTIPATH is not set
+# CONFIG_DM_DELAY is not set
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+# CONFIG_FUSION_SPI is not set
+# CONFIG_FUSION_FC is not set
+# CONFIG_FUSION_SAS is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+# CONFIG_FIREWIRE is not set
+# CONFIG_IEEE1394 is not set
+# CONFIG_I2O is not set
+CONFIG_NETDEVICES=y
+# CONFIG_NETDEVICES_MULTIQUEUE is not set
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_MACVLAN is not set
+# CONFIG_EQUALIZER is not set
+CONFIG_TUN=m
+# CONFIG_ARCNET is not set
+# CONFIG_PHYLIB is not set
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=y
+CONFIG_IXP4XX_ETH=y
+# CONFIG_AX88796 is not set
+# CONFIG_HAPPYMEAL is not set
+# CONFIG_SUNGEM is not set
+# CONFIG_CASSINI is not set
+# CONFIG_NET_VENDOR_3COM is not set
+# CONFIG_SMC91X is not set
+# CONFIG_DM9000 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 is not set
+# 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_NETDEV_1000=y
+# CONFIG_ACENIC is not set
+# CONFIG_DL2K is not set
+# CONFIG_E1000 is not set
+# CONFIG_NS83820 is not set
+# CONFIG_HAMACHI is not set
+# CONFIG_YELLOWFIN is not set
+# CONFIG_R8169 is not set
+# CONFIG_SIS190 is not set
+# CONFIG_SKGE is not set
+# CONFIG_SKY2 is not set
+# CONFIG_SK98LIN is not set
+CONFIG_VIA_VELOCITY=m
+# CONFIG_TIGON3 is not set
+# CONFIG_BNX2 is not set
+# CONFIG_QLA3XXX is not set
+# CONFIG_ATL1 is not set
+# CONFIG_NETDEV_10000 is not set
+# CONFIG_TR is not set
+
+#
+# Wireless LAN
+#
+# CONFIG_WLAN_PRE80211 is not set
+CONFIG_WLAN_80211=y
+# CONFIG_IPW2100 is not set
+# CONFIG_IPW2200 is not set
+CONFIG_LIBERTAS=m
+CONFIG_LIBERTAS_USB=m
+# CONFIG_LIBERTAS_DEBUG is not set
+# CONFIG_HERMES is not set
+# CONFIG_ATMEL is not set
+# CONFIG_PRISM54 is not set
+CONFIG_USB_ZD1201=m
+# CONFIG_HOSTAP is not set
+# CONFIG_BCM43XX is not set
+CONFIG_ZD1211RW=m
+# CONFIG_ZD1211RW_DEBUG is not set
+
+#
+# USB Network Adapters
+#
+CONFIG_USB_CATC=m
+CONFIG_USB_KAWETH=m
+CONFIG_USB_PEGASUS=m
+CONFIG_USB_RTL8150=m
+CONFIG_USB_USBNET_MII=m
+CONFIG_USB_USBNET=m
+CONFIG_USB_NET_AX8817X=m
+CONFIG_USB_NET_CDCETHER=m
+CONFIG_USB_NET_DM9601=m
+CONFIG_USB_NET_GL620A=m
+CONFIG_USB_NET_NET1080=m
+CONFIG_USB_NET_PLUSB=m
+CONFIG_USB_NET_MCS7830=m
+# CONFIG_USB_NET_RNDIS_HOST is not set
+# CONFIG_USB_NET_CDC_SUBSET is not set
+CONFIG_USB_NET_ZAURUS=m
+# CONFIG_WAN is not set
+# CONFIG_FDDI is not set
+# CONFIG_HIPPI is not set
+CONFIG_PPP=m
+# CONFIG_PPP_MULTILINK is not set
+CONFIG_PPP_FILTER=y
+CONFIG_PPP_ASYNC=m
+CONFIG_PPP_SYNC_TTY=m
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+CONFIG_PPP_MPPE=m
+CONFIG_PPPOE=m
+# CONFIG_PPPOL2TP is not set
+# CONFIG_SLIP is not set
+CONFIG_SLHC=m
+# CONFIG_NET_FC is not set
+# CONFIG_SHAPER is not set
+CONFIG_NETCONSOLE=m
+CONFIG_NETPOLL=y
+# CONFIG_NETPOLL_TRAP is not set
+CONFIG_NET_POLL_CONTROLLER=y
+CONFIG_ISDN=m
+# CONFIG_ISDN_I4L is not set
+CONFIG_ISDN_CAPI=m
+CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON=y
+CONFIG_CAPI_TRACE=y
+# CONFIG_ISDN_CAPI_MIDDLEWARE is not set
+CONFIG_ISDN_CAPI_CAPI20=m
+
+#
+# CAPI hardware drivers
+#
+# CONFIG_CAPI_AVM is not set
+# CONFIG_CAPI_EICON is not set
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS is not set
+# CONFIG_INPUT_POLLDEV is not set
+
+#
+# Userland interfaces
+#
+# CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_TSDEV is not set
+CONFIG_INPUT_EVDEV=y
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# Input Device Drivers
+#
+# CONFIG_INPUT_KEYBOARD is not set
+# CONFIG_INPUT_MOUSE is not set
+# CONFIG_INPUT_JOYSTICK is not set
+# CONFIG_INPUT_TABLET is not set
+# CONFIG_INPUT_TOUCHSCREEN is not set
+CONFIG_INPUT_MISC=y
+CONFIG_INPUT_IXP4XX_BEEPER=y
+CONFIG_INPUT_ATI_REMOTE=m
+CONFIG_INPUT_ATI_REMOTE2=m
+CONFIG_INPUT_KEYSPAN_REMOTE=m
+# CONFIG_INPUT_POWERMATE is not set
+CONFIG_INPUT_YEALINK=m
+CONFIG_INPUT_UINPUT=m
+
+#
+# Hardware I/O ports
+#
+# CONFIG_SERIO is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+# CONFIG_VT is not set
+CONFIG_SERIAL_NONSTANDARD=y
+# CONFIG_COMPUTONE is not set
+# CONFIG_ROCKETPORT is not set
+# CONFIG_CYCLADES is not set
+# CONFIG_DIGIEPCA is not set
+# CONFIG_MOXA_INTELLIO is not set
+# CONFIG_MOXA_SMARTIO is not set
+# CONFIG_MOXA_SMARTIO_NEW is not set
+# CONFIG_ISI is not set
+# CONFIG_SYNCLINKMP is not set
+# CONFIG_SYNCLINK_GT is not set
+CONFIG_N_HDLC=m
+# CONFIG_RISCOM8 is not set
+# CONFIG_SPECIALIX is not set
+# CONFIG_SX is not set
+# CONFIG_RIO is not set
+# CONFIG_STALDRV is not set
+
+#
+# Serial drivers
+#
+CONFIG_SERIAL_8250=y
+CONFIG_SERIAL_8250_CONSOLE=y
+CONFIG_SERIAL_8250_PCI=m
+CONFIG_SERIAL_8250_NR_UARTS=2
+CONFIG_SERIAL_8250_RUNTIME_UARTS=2
+# CONFIG_SERIAL_8250_EXTENDED is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+# CONFIG_SERIAL_JSM is not set
+CONFIG_UNIX98_PTYS=y
+# CONFIG_LEGACY_PTYS is not set
+# CONFIG_IPMI_HANDLER is not set
+CONFIG_WATCHDOG=y
+# CONFIG_WATCHDOG_NOWAYOUT is not set
+
+#
+# Watchdog Device Drivers
+#
+# CONFIG_SOFT_WATCHDOG is not set
+CONFIG_IXP4XX_WATCHDOG=m
+
+#
+# PCI-based Watchdog Cards
+#
+# CONFIG_PCIPCWATCHDOG is not set
+# CONFIG_WDTPCI is not set
+
+#
+# USB-based Watchdog Cards
+#
+# CONFIG_USBPCWATCHDOG is not set
+CONFIG_HW_RANDOM=y
+CONFIG_HW_RANDOM_IXP4XX=y
+# CONFIG_NVRAM is not set
+# CONFIG_R3964 is not set
+# CONFIG_APPLICOM is not set
+# CONFIG_DRM is not set
+# CONFIG_RAW_DRIVER is not set
+# CONFIG_TCG_TPM is not set
+CONFIG_DEVPORT=y
+CONFIG_I2C=y
+CONFIG_I2C_BOARDINFO=y
+CONFIG_I2C_CHARDEV=y
+
+#
+# I2C Algorithms
+#
+CONFIG_I2C_ALGOBIT=y
+# CONFIG_I2C_ALGOPCF is not set
+# CONFIG_I2C_ALGOPCA is not set
+
+#
+# I2C Hardware Bus support
+#
+# CONFIG_I2C_ALI1535 is not set
+# CONFIG_I2C_ALI1563 is not set
+# CONFIG_I2C_ALI15X3 is not set
+# CONFIG_I2C_AMD756 is not set
+# CONFIG_I2C_AMD8111 is not set
+CONFIG_I2C_GPIO=y
+# CONFIG_I2C_I801 is not set
+# CONFIG_I2C_I810 is not set
+# CONFIG_I2C_PIIX4 is not set
+# CONFIG_I2C_IOP3XX is not set
+# CONFIG_I2C_IXP4XX is not set
+# CONFIG_I2C_NFORCE2 is not set
+# CONFIG_I2C_OCORES is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_PROSAVAGE is not set
+# CONFIG_I2C_SAVAGE4 is not set
+# CONFIG_I2C_SIMTEC is not set
+# CONFIG_I2C_SIS5595 is not set
+# CONFIG_I2C_SIS630 is not set
+# CONFIG_I2C_SIS96X is not set
+# CONFIG_I2C_TAOS_EVM is not set
+# CONFIG_I2C_STUB is not set
+CONFIG_I2C_TINY_USB=m
+# CONFIG_I2C_VIA is not set
+# CONFIG_I2C_VIAPRO is not set
+# CONFIG_I2C_VOODOO3 is not set
+
+#
+# Miscellaneous I2C Chip support
+#
+# CONFIG_SENSORS_DS1337 is not set
+# CONFIG_SENSORS_DS1374 is not set
+# CONFIG_DS1682 is not set
+CONFIG_SENSORS_EEPROM=y
+CONFIG_SENSORS_PCF8574=m
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_SENSORS_MAX6875 is not set
+# CONFIG_SENSORS_TSL2550 is not set
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CHIP is not set
+
+#
+# SPI support
+#
+# CONFIG_SPI is not set
+# CONFIG_SPI_MASTER is not set
+CONFIG_W1=m
+
+#
+# 1-wire Bus Masters
+#
+# CONFIG_W1_MASTER_MATROX is not set
+CONFIG_W1_MASTER_DS2490=m
+CONFIG_W1_MASTER_DS2482=m
+# CONFIG_W1_MASTER_DS1WM is not set
+
+#
+# 1-wire Slaves
+#
+CONFIG_W1_SLAVE_THERM=m
+CONFIG_W1_SLAVE_SMEM=m
+CONFIG_W1_SLAVE_DS2433=m
+CONFIG_W1_SLAVE_DS2433_CRC=y
+# CONFIG_W1_SLAVE_DS2760 is not set
+CONFIG_HWMON=m
+CONFIG_HWMON_VID=m
+# CONFIG_SENSORS_ABITUGURU is not set
+# CONFIG_SENSORS_ABITUGURU3 is not set
+CONFIG_SENSORS_AD7418=m
+# CONFIG_SENSORS_ADM1021 is not set
+# CONFIG_SENSORS_ADM1025 is not set
+# CONFIG_SENSORS_ADM1026 is not set
+# CONFIG_SENSORS_ADM1029 is not set
+# CONFIG_SENSORS_ADM1031 is not set
+# CONFIG_SENSORS_ADM9240 is not set
+# CONFIG_SENSORS_ASB100 is not set
+# CONFIG_SENSORS_ATXP1 is not set
+# CONFIG_SENSORS_DS1621 is not set
+# CONFIG_SENSORS_F71805F is not set
+# CONFIG_SENSORS_FSCHER is not set
+# CONFIG_SENSORS_FSCPOS is not set
+# CONFIG_SENSORS_GL518SM is not set
+# CONFIG_SENSORS_GL520SM is not set
+# CONFIG_SENSORS_IT87 is not set
+# CONFIG_SENSORS_LM63 is not set
+# CONFIG_SENSORS_LM75 is not set
+# CONFIG_SENSORS_LM77 is not set
+# CONFIG_SENSORS_LM78 is not set
+# CONFIG_SENSORS_LM80 is not set
+# CONFIG_SENSORS_LM83 is not set
+# CONFIG_SENSORS_LM85 is not set
+# CONFIG_SENSORS_LM87 is not set
+# CONFIG_SENSORS_LM90 is not set
+# CONFIG_SENSORS_LM92 is not set
+# CONFIG_SENSORS_LM93 is not set
+# CONFIG_SENSORS_MAX1619 is not set
+# CONFIG_SENSORS_MAX6650 is not set
+# CONFIG_SENSORS_PC87360 is not set
+# CONFIG_SENSORS_PC87427 is not set
+# CONFIG_SENSORS_SIS5595 is not set
+# CONFIG_SENSORS_DME1737 is not set
+# CONFIG_SENSORS_SMSC47M1 is not set
+# CONFIG_SENSORS_SMSC47M192 is not set
+# CONFIG_SENSORS_SMSC47B397 is not set
+# CONFIG_SENSORS_THMC50 is not set
+# CONFIG_SENSORS_VIA686A is not set
+# CONFIG_SENSORS_VT1211 is not set
+# CONFIG_SENSORS_VT8231 is not set
+CONFIG_SENSORS_W83781D=m
+# CONFIG_SENSORS_W83791D is not set
+# CONFIG_SENSORS_W83792D is not set
+# CONFIG_SENSORS_W83793 is not set
+# CONFIG_SENSORS_W83L785TS is not set
+# CONFIG_SENSORS_W83627HF is not set
+# CONFIG_SENSORS_W83627EHF is not set
+# CONFIG_HWMON_DEBUG_CHIP is not set
+CONFIG_MISC_DEVICES=y
+# CONFIG_PHANTOM is not set
+# CONFIG_EEPROM_93CX6 is not set
+# CONFIG_SGI_IOC4 is not set
+# CONFIG_TIFM_CORE is not set
+
+#
+# Multifunction device drivers
+#
+# CONFIG_MFD_SM501 is not set
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+
+#
+# LED drivers
+#
+CONFIG_LEDS_IXP4XX=y
+# CONFIG_LEDS_GPIO is not set
+
+#
+# LED Triggers
+#
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=y
+CONFIG_LEDS_TRIGGER_HEARTBEAT=y
+CONFIG_LEDS_TRIGGER_CPU_ACTIVITY=y
+
+#
+# Multimedia devices
+#
+CONFIG_VIDEO_DEV=m
+# CONFIG_VIDEO_V4L1 is not set
+# CONFIG_VIDEO_V4L1_COMPAT is not set
+CONFIG_VIDEO_V4L2=y
+CONFIG_VIDEO_CAPTURE_DRIVERS=y
+# CONFIG_VIDEO_ADV_DEBUG is not set
+CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
+CONFIG_VIDEO_VIVI=m
+CONFIG_VIDEO_SAA5246A=m
+CONFIG_VIDEO_SAA5249=m
+# CONFIG_TUNER_TEA5761 is not set
+CONFIG_VIDEO_SAA7134=m
+# CONFIG_VIDEO_SAA7134_ALSA is not set
+CONFIG_VIDEO_HEXIUM_ORION=m
+CONFIG_VIDEO_HEXIUM_GEMINI=m
+CONFIG_VIDEO_CX88=m
+CONFIG_VIDEO_CX88_ALSA=m
+# CONFIG_VIDEO_CX88_BLACKBIRD is not set
+# CONFIG_VIDEO_CAFE_CCIC is not set
+CONFIG_V4L_USB_DRIVERS=y
+# CONFIG_VIDEO_PVRUSB2 is not set
+# CONFIG_VIDEO_USBVISION is not set
+# CONFIG_USB_ET61X251 is not set
+# CONFIG_USB_SN9C102 is not set
+# CONFIG_USB_ZC0301 is not set
+CONFIG_USB_ZR364XX=m
+# CONFIG_RADIO_ADAPTERS is not set
+# CONFIG_DVB_CORE is not set
+CONFIG_VIDEO_SAA7146=m
+CONFIG_VIDEO_SAA7146_VV=m
+CONFIG_VIDEO_TUNER=m
+CONFIG_VIDEO_BUF=m
+CONFIG_VIDEO_BTCX=m
+CONFIG_VIDEO_IR_I2C=m
+CONFIG_VIDEO_IR=m
+CONFIG_VIDEO_TVEEPROM=m
+# CONFIG_DAB is not set
+
+#
+# Graphics support
+#
+# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
+
+#
+# Display device support
+#
+# CONFIG_DISPLAY_SUPPORT is not set
+# CONFIG_VGASTATE is not set
+CONFIG_VIDEO_OUTPUT_CONTROL=m
+# CONFIG_FB is not set
+
+#
+# Sound
+#
+CONFIG_SOUND=m
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=m
+CONFIG_SND_TIMER=m
+CONFIG_SND_PCM=m
+CONFIG_SND_HWDEP=m
+CONFIG_SND_RAWMIDI=m
+# CONFIG_SND_SEQUENCER is not set
+CONFIG_SND_OSSEMUL=y
+CONFIG_SND_MIXER_OSS=m
+CONFIG_SND_PCM_OSS=m
+CONFIG_SND_PCM_OSS_PLUGINS=y
+# CONFIG_SND_DYNAMIC_MINORS is not set
+CONFIG_SND_SUPPORT_OLD_API=y
+CONFIG_SND_VERBOSE_PROCFS=y
+# CONFIG_SND_VERBOSE_PRINTK is not set
+# CONFIG_SND_DEBUG is not set
+
+#
+# Generic devices
+#
+# CONFIG_SND_DUMMY is not set
+# CONFIG_SND_MTPAV is not set
+# CONFIG_SND_SERIAL_U16550 is not set
+# CONFIG_SND_MPU401 is not set
+
+#
+# PCI devices
+#
+# CONFIG_SND_AD1889 is not set
+# CONFIG_SND_ALS300 is not set
+# CONFIG_SND_ALI5451 is not set
+# CONFIG_SND_ATIIXP is not set
+# CONFIG_SND_ATIIXP_MODEM is not set
+# CONFIG_SND_AU8810 is not set
+# CONFIG_SND_AU8820 is not set
+# CONFIG_SND_AU8830 is not set
+# CONFIG_SND_AZT3328 is not set
+# CONFIG_SND_BT87X is not set
+# CONFIG_SND_CA0106 is not set
+# CONFIG_SND_CMIPCI is not set
+# CONFIG_SND_CS4281 is not set
+# CONFIG_SND_CS46XX is not set
+# CONFIG_SND_DARLA20 is not set
+# CONFIG_SND_GINA20 is not set
+# CONFIG_SND_LAYLA20 is not set
+# CONFIG_SND_DARLA24 is not set
+# CONFIG_SND_GINA24 is not set
+# CONFIG_SND_LAYLA24 is not set
+# CONFIG_SND_MONA is not set
+# CONFIG_SND_MIA is not set
+# CONFIG_SND_ECHO3G is not set
+# CONFIG_SND_INDIGO is not set
+# CONFIG_SND_INDIGOIO is not set
+# CONFIG_SND_INDIGODJ is not set
+# CONFIG_SND_EMU10K1 is not set
+# CONFIG_SND_EMU10K1X is not set
+# CONFIG_SND_ENS1370 is not set
+# CONFIG_SND_ENS1371 is not set
+# CONFIG_SND_ES1938 is not set
+# CONFIG_SND_ES1968 is not set
+# CONFIG_SND_FM801 is not set
+# CONFIG_SND_HDA_INTEL is not set
+# CONFIG_SND_HDSP is not set
+# CONFIG_SND_HDSPM is not set
+# CONFIG_SND_ICE1712 is not set
+# CONFIG_SND_ICE1724 is not set
+# CONFIG_SND_INTEL8X0 is not set
+# CONFIG_SND_INTEL8X0M is not set
+# CONFIG_SND_KORG1212 is not set
+# CONFIG_SND_MAESTRO3 is not set
+# CONFIG_SND_MIXART is not set
+# CONFIG_SND_NM256 is not set
+# CONFIG_SND_PCXHR is not set
+# CONFIG_SND_RIPTIDE is not set
+# CONFIG_SND_RME32 is not set
+# CONFIG_SND_RME96 is not set
+# CONFIG_SND_RME9652 is not set
+# CONFIG_SND_SONICVIBES is not set
+# CONFIG_SND_TRIDENT is not set
+# CONFIG_SND_VIA82XX is not set
+# CONFIG_SND_VIA82XX_MODEM is not set
+# CONFIG_SND_VX222 is not set
+# CONFIG_SND_YMFPCI is not set
+
+#
+# ALSA ARM devices
+#
+
+#
+# USB devices
+#
+CONFIG_SND_USB_AUDIO=m
+CONFIG_SND_USB_CAIAQ=m
+CONFIG_SND_USB_CAIAQ_INPUT=y
+
+#
+# System on Chip audio support
+#
+# CONFIG_SND_SOC is not set
+
+#
+# SoC Audio support for SuperH
+#
+
+#
+# Open Sound System
+#
+# CONFIG_SOUND_PRIME is not set
+CONFIG_HID_SUPPORT=y
+CONFIG_HID=m
+# CONFIG_HID_DEBUG is not set
+
+#
+# USB Input Devices
+#
+CONFIG_USB_HID=m
+# CONFIG_USB_HIDINPUT_POWERBOOK is not set
+# CONFIG_HID_FF is not set
+CONFIG_USB_HIDDEV=y
+
+#
+# USB HID Boot Protocol drivers
+#
+CONFIG_USB_KBD=m
+CONFIG_USB_MOUSE=m
+CONFIG_USB_SUPPORT=y
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB_ARCH_HAS_OHCI=y
+CONFIG_USB_ARCH_HAS_EHCI=y
+CONFIG_USB=y
+# CONFIG_USB_DEBUG is not set
+
+#
+# Miscellaneous USB options
+#
+CONFIG_USB_DEVICEFS=y
+# CONFIG_USB_DEVICE_CLASS is not set
+# CONFIG_USB_DYNAMIC_MINORS is not set
+# CONFIG_USB_OTG is not set
+
+#
+# USB Host Controller Drivers
+#
+CONFIG_USB_EHCI_HCD=y
+CONFIG_USB_EHCI_SPLIT_ISO=y
+CONFIG_USB_EHCI_ROOT_HUB_TT=y
+CONFIG_USB_EHCI_TT_NEWSCHED=y
+# CONFIG_USB_ISP116X_HCD is not set
+CONFIG_USB_OHCI_HCD=m
+# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
+# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+CONFIG_USB_UHCI_HCD=m
+# CONFIG_USB_U132_HCD is not set
+# CONFIG_USB_SL811_HCD is not set
+# CONFIG_USB_R8A66597_HCD is not set
+
+#
+# USB Device Class drivers
+#
+CONFIG_USB_ACM=m
+CONFIG_USB_PRINTER=m
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# may also be needed; see USB_STORAGE Help for more information
+#
+CONFIG_USB_STORAGE=y
+# CONFIG_USB_STORAGE_DEBUG is not set
+# CONFIG_USB_STORAGE_DATAFAB is not set
+CONFIG_USB_STORAGE_FREECOM=y
+# CONFIG_USB_STORAGE_DPCM is not set
+CONFIG_USB_STORAGE_USBAT=y
+CONFIG_USB_STORAGE_SDDR09=y
+CONFIG_USB_STORAGE_SDDR55=y
+CONFIG_USB_STORAGE_JUMPSHOT=y
+CONFIG_USB_STORAGE_ALAUDA=y
+CONFIG_USB_STORAGE_ONETOUCH=y
+CONFIG_USB_STORAGE_KARMA=y
+# CONFIG_USB_LIBUSUAL is not set
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_MICROTEK is not set
+# CONFIG_USB_MON is not set
+
+#
+# USB port drivers
+#
+
+#
+# USB Serial Converter support
+#
+CONFIG_USB_SERIAL=m
+CONFIG_USB_SERIAL_GENERIC=y
+CONFIG_USB_SERIAL_AIRCABLE=m
+# CONFIG_USB_SERIAL_AIRPRIME is not set
+CONFIG_USB_SERIAL_ARK3116=m
+CONFIG_USB_SERIAL_BELKIN=m
+CONFIG_USB_SERIAL_WHITEHEAT=m
+CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
+CONFIG_USB_SERIAL_CP2101=m
+CONFIG_USB_SERIAL_CYPRESS_M8=m
+CONFIG_USB_SERIAL_EMPEG=m
+CONFIG_USB_SERIAL_FTDI_SIO=m
+CONFIG_USB_SERIAL_FUNSOFT=m
+CONFIG_USB_SERIAL_VISOR=m
+CONFIG_USB_SERIAL_IPAQ=m
+CONFIG_USB_SERIAL_IR=m
+CONFIG_USB_SERIAL_EDGEPORT=m
+CONFIG_USB_SERIAL_EDGEPORT_TI=m
+CONFIG_USB_SERIAL_GARMIN=m
+CONFIG_USB_SERIAL_IPW=m
+CONFIG_USB_SERIAL_KEYSPAN_PDA=m
+CONFIG_USB_SERIAL_KEYSPAN=m
+CONFIG_USB_SERIAL_KEYSPAN_MPR=y
+CONFIG_USB_SERIAL_KEYSPAN_USA28=y
+CONFIG_USB_SERIAL_KEYSPAN_USA28X=y
+CONFIG_USB_SERIAL_KEYSPAN_USA28XA=y
+CONFIG_USB_SERIAL_KEYSPAN_USA28XB=y
+CONFIG_USB_SERIAL_KEYSPAN_USA19=y
+CONFIG_USB_SERIAL_KEYSPAN_USA18X=y
+CONFIG_USB_SERIAL_KEYSPAN_USA19W=y
+CONFIG_USB_SERIAL_KEYSPAN_USA19QW=y
+CONFIG_USB_SERIAL_KEYSPAN_USA19QI=y
+CONFIG_USB_SERIAL_KEYSPAN_USA49W=y
+CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y
+CONFIG_USB_SERIAL_KLSI=m
+CONFIG_USB_SERIAL_KOBIL_SCT=m
+CONFIG_USB_SERIAL_MCT_U232=m
+CONFIG_USB_SERIAL_MOS7720=m
+CONFIG_USB_SERIAL_MOS7840=m
+CONFIG_USB_SERIAL_NAVMAN=m
+CONFIG_USB_SERIAL_PL2303=m
+# CONFIG_USB_SERIAL_OTI6858 is not set
+CONFIG_USB_SERIAL_HP4X=m
+CONFIG_USB_SERIAL_SAFE=m
+# CONFIG_USB_SERIAL_SAFE_PADDED is not set
+# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set
+CONFIG_USB_SERIAL_TI=m
+CONFIG_USB_SERIAL_CYBERJACK=m
+CONFIG_USB_SERIAL_XIRCOM=m
+CONFIG_USB_SERIAL_OPTION=m
+CONFIG_USB_SERIAL_OMNINET=m
+# CONFIG_USB_SERIAL_DEBUG is not set
+CONFIG_USB_EZUSB=y
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_EMI62 is not set
+# CONFIG_USB_EMI26 is not set
+CONFIG_USB_ADUTUX=m
+# CONFIG_USB_AUERSWALD is not set
+CONFIG_USB_RIO500=m
+CONFIG_USB_LEGOTOWER=m
+CONFIG_USB_LCD=m
+CONFIG_USB_BERRY_CHARGE=m
+CONFIG_USB_LED=m
+# CONFIG_USB_CYPRESS_CY7C63 is not set
+CONFIG_USB_CYTHERM=m
+CONFIG_USB_PHIDGET=m
+CONFIG_USB_PHIDGETKIT=m
+CONFIG_USB_PHIDGETMOTORCONTROL=m
+CONFIG_USB_PHIDGETSERVO=m
+CONFIG_USB_IDMOUSE=m
+CONFIG_USB_FTDI_ELAN=m
+# CONFIG_USB_APPLEDISPLAY is not set
+CONFIG_USB_SISUSBVGA=m
+# CONFIG_USB_LD is not set
+# CONFIG_USB_TRANCEVIBRATOR is not set
+# CONFIG_USB_IOWARRIOR is not set
+# CONFIG_USB_TEST is not set
+
+#
+# USB DSL modem support
+#
+
+#
+# USB Gadget Support
+#
+# CONFIG_USB_GADGET is not set
+# CONFIG_MMC is not set
+CONFIG_RTC_LIB=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_HCTOSYS=y
+CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
+# CONFIG_RTC_DEBUG is not set
+
+#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=y
+CONFIG_RTC_INTF_PROC=y
+CONFIG_RTC_INTF_DEV=y
+# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
+# CONFIG_RTC_DRV_TEST is not set
+
+#
+# I2C RTC drivers
+#
+CONFIG_RTC_DRV_DS1307=y
+CONFIG_RTC_DRV_DS1672=y
+# CONFIG_RTC_DRV_MAX6900 is not set
+# CONFIG_RTC_DRV_RS5C372 is not set
+CONFIG_RTC_DRV_ISL1208=y
+CONFIG_RTC_DRV_X1205=y
+CONFIG_RTC_DRV_PCF8563=y
+# CONFIG_RTC_DRV_PCF8583 is not set
+# CONFIG_RTC_DRV_M41T80 is not set
+
+#
+# SPI RTC drivers
+#
+
+#
+# Platform RTC drivers
+#
+# CONFIG_RTC_DRV_CMOS is not set
+# CONFIG_RTC_DRV_DS1553 is not set
+# CONFIG_RTC_DRV_STK17TA8 is not set
+# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
+# CONFIG_RTC_DRV_M48T59 is not set
+# CONFIG_RTC_DRV_V3020 is not set
+
+#
+# on-CPU RTC drivers
+#
+
+#
+# DMA Engine support
+#
+# CONFIG_DMA_ENGINE is not set
+
+#
+# DMA Clients
+#
+
+#
+# DMA Devices
+#
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=m
+CONFIG_EXT2_FS_XATTR=y
+CONFIG_EXT2_FS_POSIX_ACL=y
+CONFIG_EXT2_FS_SECURITY=y
+# CONFIG_EXT2_FS_XIP is not set
+CONFIG_EXT3_FS=m
+CONFIG_EXT3_FS_XATTR=y
+CONFIG_EXT3_FS_POSIX_ACL=y
+CONFIG_EXT3_FS_SECURITY=y
+# CONFIG_EXT4DEV_FS is not set
+CONFIG_JBD=m
+# CONFIG_JBD_DEBUG is not set
+CONFIG_FS_MBCACHE=m
+CONFIG_REISERFS_FS=m
+# CONFIG_REISERFS_CHECK is not set
+# CONFIG_REISERFS_PROC_INFO is not set
+CONFIG_REISERFS_FS_XATTR=y
+CONFIG_REISERFS_FS_POSIX_ACL=y
+CONFIG_REISERFS_FS_SECURITY=y
+# CONFIG_JFS_FS is not set
+CONFIG_FS_POSIX_ACL=y
+# CONFIG_XFS_FS is not set
+# CONFIG_GFS2_FS is not set
+# CONFIG_OCFS2_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+# CONFIG_QUOTA is not set
+CONFIG_DNOTIFY=y
+# CONFIG_AUTOFS_FS is not set
+CONFIG_AUTOFS4_FS=m
+CONFIG_FUSE_FS=m
+
+#
+# CD-ROM/DVD Filesystems
+#
+CONFIG_ISO9660_FS=m
+CONFIG_JOLIET=y
+CONFIG_ZISOFS=y
+CONFIG_UDF_FS=m
+CONFIG_UDF_NLS=y
+
+#
+# DOS/FAT/NT Filesystems
+#
+CONFIG_FAT_FS=m
+CONFIG_MSDOS_FS=m
+CONFIG_VFAT_FS=m
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="utf8"
+CONFIG_NTFS_FS=m
+# CONFIG_NTFS_DEBUG is not set
+CONFIG_NTFS_RW=y
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_TMPFS_POSIX_ACL is not set
+# CONFIG_HUGETLB_PAGE is not set
+CONFIG_RAMFS=y
+# CONFIG_CONFIGFS_FS is not set
+
+#
+# Miscellaneous filesystems
+#
+# CONFIG_ADFS_FS is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_HFS_FS is not set
+# CONFIG_HFSPLUS_FS is not set
+# CONFIG_BEFS_FS is not set
+# CONFIG_BFS_FS is not set
+# CONFIG_EFS_FS is not set
+CONFIG_JFFS2_FS=y
+CONFIG_JFFS2_FS_DEBUG=0
+CONFIG_JFFS2_FS_WRITEBUFFER=y
+# CONFIG_JFFS2_SUMMARY is not set
+# CONFIG_JFFS2_FS_XATTR is not set
+# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
+CONFIG_JFFS2_ZLIB=y
+CONFIG_JFFS2_RTIME=y
+# CONFIG_JFFS2_RUBIN is not set
+# CONFIG_CRAMFS is not set
+# CONFIG_VXFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+
+#
+# Network File Systems
+#
+CONFIG_NFS_FS=m
+CONFIG_NFS_V3=y
+# CONFIG_NFS_V3_ACL is not set
+CONFIG_NFS_V4=y
+# CONFIG_NFS_DIRECTIO is not set
+CONFIG_NFSD=m
+CONFIG_NFSD_V3=y
+# CONFIG_NFSD_V3_ACL is not set
+CONFIG_NFSD_V4=y
+CONFIG_NFSD_TCP=y
+CONFIG_LOCKD=m
+CONFIG_LOCKD_V4=y
+CONFIG_EXPORTFS=m
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=m
+CONFIG_SUNRPC_GSS=m
+CONFIG_SUNRPC_BIND34=y
+CONFIG_RPCSEC_GSS_KRB5=m
+# CONFIG_RPCSEC_GSS_SPKM3 is not set
+CONFIG_SMB_FS=m
+# CONFIG_SMB_NLS_DEFAULT is not set
+CONFIG_CIFS=m
+# CONFIG_CIFS_STATS is not set
+# CONFIG_CIFS_WEAK_PW_HASH is not set
+CONFIG_CIFS_XATTR=y
+CONFIG_CIFS_POSIX=y
+# CONFIG_CIFS_DEBUG2 is not set
+# CONFIG_CIFS_EXPERIMENTAL is not set
+# CONFIG_NCP_FS is not set
+# CONFIG_CODA_FS is not set
+# CONFIG_AFS_FS is not set
+
+#
+# Partition Types
+#
+CONFIG_PARTITION_ADVANCED=y
+# CONFIG_ACORN_PARTITION is not set
+# CONFIG_OSF_PARTITION is not set
+# CONFIG_AMIGA_PARTITION is not set
+# CONFIG_ATARI_PARTITION is not set
+# CONFIG_MAC_PARTITION is not set
+CONFIG_MSDOS_PARTITION=y
+# CONFIG_BSD_DISKLABEL is not set
+# CONFIG_MINIX_SUBPARTITION is not set
+# CONFIG_SOLARIS_X86_PARTITION is not set
+# CONFIG_UNIXWARE_DISKLABEL is not set
+# CONFIG_LDM_PARTITION is not set
+# CONFIG_SGI_PARTITION is not set
+# CONFIG_ULTRIX_PARTITION is not set
+# CONFIG_SUN_PARTITION is not set
+# CONFIG_KARMA_PARTITION is not set
+# CONFIG_EFI_PARTITION is not set
+# CONFIG_SYSV68_PARTITION is not set
+
+#
+# Native Language Support
+#
+CONFIG_NLS=m
+CONFIG_NLS_DEFAULT="utf8"
+CONFIG_NLS_CODEPAGE_437=m
+CONFIG_NLS_CODEPAGE_737=m
+CONFIG_NLS_CODEPAGE_775=m
+CONFIG_NLS_CODEPAGE_850=m
+CONFIG_NLS_CODEPAGE_852=m
+CONFIG_NLS_CODEPAGE_855=m
+CONFIG_NLS_CODEPAGE_857=m
+CONFIG_NLS_CODEPAGE_860=m
+CONFIG_NLS_CODEPAGE_861=m
+CONFIG_NLS_CODEPAGE_862=m
+CONFIG_NLS_CODEPAGE_863=m
+CONFIG_NLS_CODEPAGE_864=m
+CONFIG_NLS_CODEPAGE_865=m
+CONFIG_NLS_CODEPAGE_866=m
+CONFIG_NLS_CODEPAGE_869=m
+CONFIG_NLS_CODEPAGE_936=m
+CONFIG_NLS_CODEPAGE_950=m
+CONFIG_NLS_CODEPAGE_932=m
+CONFIG_NLS_CODEPAGE_949=m
+CONFIG_NLS_CODEPAGE_874=m
+CONFIG_NLS_ISO8859_8=m
+CONFIG_NLS_CODEPAGE_1250=m
+CONFIG_NLS_CODEPAGE_1251=m
+CONFIG_NLS_ASCII=m
+CONFIG_NLS_ISO8859_1=m
+CONFIG_NLS_ISO8859_2=m
+CONFIG_NLS_ISO8859_3=m
+CONFIG_NLS_ISO8859_4=m
+CONFIG_NLS_ISO8859_5=m
+CONFIG_NLS_ISO8859_6=m
+CONFIG_NLS_ISO8859_7=m
+CONFIG_NLS_ISO8859_9=m
+CONFIG_NLS_ISO8859_13=m
+CONFIG_NLS_ISO8859_14=m
+CONFIG_NLS_ISO8859_15=m
+CONFIG_NLS_KOI8_R=m
+CONFIG_NLS_KOI8_U=m
+CONFIG_NLS_UTF8=m
+
+#
+# Distributed Lock Manager
+#
+# CONFIG_DLM is not set
+
+#
+# Profiling support
+#
+# CONFIG_PROFILING is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+CONFIG_ENABLE_MUST_CHECK=y
+# CONFIG_MAGIC_SYSRQ is not set
+# CONFIG_UNUSED_SYMBOLS is not set
+# CONFIG_DEBUG_FS is not set
+# CONFIG_HEADERS_CHECK is not set
+# CONFIG_DEBUG_KERNEL is not set
+# CONFIG_DEBUG_BUGVERBOSE is not set
+CONFIG_FRAME_POINTER=y
+# CONFIG_DEBUG_USER is not set
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+CONFIG_XOR_BLOCKS=m
+CONFIG_ASYNC_CORE=m
+CONFIG_ASYNC_MEMCPY=m
+CONFIG_ASYNC_XOR=m
+CONFIG_CRYPTO=y
+CONFIG_CRYPTO_ALGAPI=y
+CONFIG_CRYPTO_BLKCIPHER=y
+CONFIG_CRYPTO_HASH=y
+CONFIG_CRYPTO_MANAGER=y
+CONFIG_CRYPTO_HMAC=y
+CONFIG_CRYPTO_XCBC=m
+CONFIG_CRYPTO_NULL=m
+CONFIG_CRYPTO_MD4=m
+CONFIG_CRYPTO_MD5=y
+CONFIG_CRYPTO_SHA1=m
+CONFIG_CRYPTO_SHA256=m
+CONFIG_CRYPTO_SHA512=m
+CONFIG_CRYPTO_WP512=m
+CONFIG_CRYPTO_TGR192=m
+CONFIG_CRYPTO_GF128MUL=m
+CONFIG_CRYPTO_ECB=m
+CONFIG_CRYPTO_CBC=y
+CONFIG_CRYPTO_PCBC=m
+CONFIG_CRYPTO_LRW=m
+# CONFIG_CRYPTO_CRYPTD is not set
+CONFIG_CRYPTO_DES=y
+CONFIG_CRYPTO_FCRYPT=m
+CONFIG_CRYPTO_BLOWFISH=m
+CONFIG_CRYPTO_TWOFISH=m
+CONFIG_CRYPTO_TWOFISH_COMMON=m
+CONFIG_CRYPTO_SERPENT=m
+CONFIG_CRYPTO_AES=m
+CONFIG_CRYPTO_CAST5=m
+CONFIG_CRYPTO_CAST6=m
+CONFIG_CRYPTO_TEA=m
+CONFIG_CRYPTO_ARC4=m
+CONFIG_CRYPTO_KHAZAD=m
+CONFIG_CRYPTO_ANUBIS=m
+CONFIG_CRYPTO_DEFLATE=m
+CONFIG_CRYPTO_MICHAEL_MIC=m
+CONFIG_CRYPTO_CRC32C=m
+CONFIG_CRYPTO_CAMELLIA=m
+# CONFIG_CRYPTO_TEST is not set
+CONFIG_CRYPTO_HW=y
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+CONFIG_CRC_CCITT=m
+CONFIG_CRC16=y
+# CONFIG_CRC_ITU_T is not set
+CONFIG_CRC32=y
+# CONFIG_CRC7 is not set
+CONFIG_LIBCRC32C=m
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_TEXTSEARCH=y
+CONFIG_TEXTSEARCH_KMP=m
+CONFIG_TEXTSEARCH_BM=m
+CONFIG_TEXTSEARCH_FSM=m
+CONFIG_PLIST=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
+CONFIG_HAS_DMA=y
diff --git a/packages/linux/linux-ixp4xx/nslu2/.mtn2git_empty b/packages/linux/linux-ixp4xx/nslu2/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-ixp4xx/nslu2/.mtn2git_empty
diff --git a/packages/linux/linux-ixp4xx/nslu2/defconfig-2.6.21.6 b/packages/linux/linux-ixp4xx/nslu2/defconfig-2.6.21.6
new file mode 100644
index 0000000000..457d379f5e
--- /dev/null
+++ b/packages/linux/linux-ixp4xx/nslu2/defconfig-2.6.21.6
@@ -0,0 +1,2085 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.21.6
+# Sat Dec 8 13:47:37 2007
+#
+CONFIG_ARM=y
+CONFIG_SYS_SUPPORTS_APM_EMULATION=y
+# CONFIG_GENERIC_GPIO is not set
+CONFIG_GENERIC_TIME=y
+CONFIG_MMU=y
+# CONFIG_NO_IOPORT is not set
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+CONFIG_HARDIRQS_SW_RESEND=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+# CONFIG_ARCH_HAS_ILOG2_U32 is not set
+# CONFIG_ARCH_HAS_ILOG2_U64 is not set
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_ZONE_DMA=y
+CONFIG_VECTORS_BASE=0xffff0000
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+
+#
+# Code maturity level options
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_LOCK_KERNEL=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+
+#
+# General setup
+#
+CONFIG_LOCALVERSION=""
+# CONFIG_LOCALVERSION_AUTO is not set
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=y
+# CONFIG_IPC_NS is not set
+CONFIG_SYSVIPC_SYSCTL=y
+# CONFIG_POSIX_MQUEUE is not set
+# CONFIG_BSD_PROCESS_ACCT is not set
+# CONFIG_TASKSTATS is not set
+# CONFIG_UTS_NS is not set
+# CONFIG_AUDIT is not set
+CONFIG_IKCONFIG=m
+CONFIG_IKCONFIG_PROC=y
+CONFIG_SYSFS_DEPRECATED=y
+# CONFIG_RELAY is not set
+# CONFIG_BLK_DEV_INITRD is not set
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_SYSCTL=y
+CONFIG_EMBEDDED=y
+CONFIG_UID16=y
+# CONFIG_SYSCTL_SYSCALL is not set
+# CONFIG_KALLSYMS is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_EPOLL=y
+CONFIG_SHMEM=y
+CONFIG_SLAB=y
+# CONFIG_VM_EVENT_COUNTERS is not set
+CONFIG_RT_MUTEXES=y
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=0
+# CONFIG_SLOB is not set
+
+#
+# Loadable module support
+#
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+# CONFIG_MODULE_FORCE_UNLOAD is not set
+CONFIG_MODVERSIONS=y
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_KMOD=y
+
+#
+# Block layer
+#
+CONFIG_BLOCK=y
+# CONFIG_LBD is not set
+# CONFIG_BLK_DEV_IO_TRACE is not set
+# CONFIG_LSF is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+# CONFIG_IOSCHED_AS is not set
+CONFIG_IOSCHED_DEADLINE=y
+# CONFIG_IOSCHED_CFQ is not set
+# CONFIG_DEFAULT_AS is not set
+CONFIG_DEFAULT_DEADLINE=y
+# CONFIG_DEFAULT_CFQ is not set
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="deadline"
+
+#
+# System Type
+#
+# CONFIG_ARCH_AAEC2000 is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_VERSATILE is not set
+# CONFIG_ARCH_AT91 is not set
+# CONFIG_ARCH_CLPS7500 is not set
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_CO285 is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_EP93XX is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_NETX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IOP13XX is not set
+CONFIG_ARCH_IXP4XX=y
+# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_IXP23XX is not set
+# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_NS9XXX is not set
+# CONFIG_ARCH_PNX4008 is not set
+# CONFIG_ARCH_PXA is not set
+# CONFIG_ARCH_RPC is not set
+# CONFIG_ARCH_SA1100 is not set
+# CONFIG_ARCH_S3C2410 is not set
+# CONFIG_ARCH_SHARK is not set
+# CONFIG_ARCH_LH7A40X is not set
+# CONFIG_ARCH_OMAP is not set
+CONFIG_ARCH_SUPPORTS_BIG_ENDIAN=y
+
+#
+# Intel IXP4xx Implementation Options
+#
+
+#
+# IXP4xx Platforms
+#
+CONFIG_MACH_NSLU2=y
+CONFIG_MACH_AVILA=y
+CONFIG_MACH_LOFT=y
+# CONFIG_ARCH_ADI_COYOTE is not set
+CONFIG_ARCH_IXDP425=y
+CONFIG_MACH_IXDPG425=y
+# CONFIG_MACH_IXDP465 is not set
+CONFIG_ARCH_IXCDP1100=y
+# CONFIG_ARCH_PRPMC1100 is not set
+CONFIG_MACH_NAS100D=y
+CONFIG_MACH_DSMG600=y
+CONFIG_ARCH_IXDP4XX=y
+CONFIG_MACH_FSG=y
+# CONFIG_MACH_GTWX5715 is not set
+
+#
+# IXP4xx Options
+#
+CONFIG_DMABOUNCE=y
+# CONFIG_IXP4XX_INDIRECT_PCI is not set
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+CONFIG_CPU_XSCALE=y
+CONFIG_CPU_32v5=y
+CONFIG_CPU_ABRT_EV5T=y
+CONFIG_CPU_CACHE_VIVT=y
+CONFIG_CPU_TLB_V4WBI=y
+CONFIG_CPU_CP15=y
+CONFIG_CPU_CP15_MMU=y
+
+#
+# Processor Features
+#
+CONFIG_ARM_THUMB=y
+# CONFIG_CPU_BIG_ENDIAN is not set
+# CONFIG_CPU_DCACHE_DISABLE is not set
+# CONFIG_OUTER_CACHE is not set
+# CONFIG_IWMMXT is not set
+CONFIG_XSCALE_PMU=y
+
+#
+# Bus support
+#
+CONFIG_PCI=y
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+# CONFIG_PCCARD is not set
+
+#
+# Kernel Features
+#
+CONFIG_PREEMPT=y
+# CONFIG_NO_IDLE_HZ is not set
+CONFIG_HZ=100
+CONFIG_AEABI=y
+CONFIG_OABI_COMPAT=y
+# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
+CONFIG_SELECT_MEMORY_MODEL=y
+CONFIG_FLATMEM_MANUAL=y
+# CONFIG_DISCONTIGMEM_MANUAL is not set
+# CONFIG_SPARSEMEM_MANUAL is not set
+CONFIG_FLATMEM=y
+CONFIG_FLAT_NODE_MEM_MAP=y
+# CONFIG_SPARSEMEM_STATIC is not set
+CONFIG_SPLIT_PTLOCK_CPUS=4096
+# CONFIG_RESOURCES_64BIT is not set
+CONFIG_ZONE_DMA_FLAG=1
+CONFIG_ALIGNMENT_TRAP=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE="root=/dev/nfs rootfstype=nfs ip=dhcp noirqdebug console=ttyS0,115200n8"
+# CONFIG_XIP_KERNEL is not set
+CONFIG_KEXEC=y
+
+#
+# Floating point emulation
+#
+
+#
+# At least one emulation must be selected
+#
+CONFIG_FPE_NWFPE=y
+# CONFIG_FPE_NWFPE_XP is not set
+# CONFIG_FPE_FASTFPE is not set
+
+#
+# Userspace binary formats
+#
+CONFIG_BINFMT_ELF=y
+# CONFIG_BINFMT_AOUT is not set
+# CONFIG_BINFMT_MISC is not set
+# CONFIG_ARTHUR is not set
+
+#
+# Power management options
+#
+# CONFIG_PM is not set
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+# CONFIG_NETDEBUG is not set
+CONFIG_PACKET=y
+CONFIG_PACKET_MMAP=y
+CONFIG_UNIX=y
+CONFIG_XFRM=y
+# CONFIG_XFRM_USER is not set
+# CONFIG_XFRM_SUB_POLICY is not set
+# CONFIG_XFRM_MIGRATE is not set
+# CONFIG_NET_KEY is not set
+CONFIG_INET=y
+# CONFIG_IP_MULTICAST is not set
+# CONFIG_IP_ADVANCED_ROUTER is not set
+CONFIG_IP_FIB_HASH=y
+# CONFIG_IP_PNP is not set
+CONFIG_NET_IPIP=m
+# CONFIG_NET_IPGRE is not set
+# CONFIG_ARPD is not set
+# CONFIG_SYN_COOKIES is not set
+CONFIG_INET_AH=m
+CONFIG_INET_ESP=m
+CONFIG_INET_IPCOMP=m
+CONFIG_INET_XFRM_TUNNEL=m
+CONFIG_INET_TUNNEL=m
+CONFIG_INET_XFRM_MODE_TRANSPORT=m
+CONFIG_INET_XFRM_MODE_TUNNEL=m
+CONFIG_INET_XFRM_MODE_BEET=m
+CONFIG_INET_DIAG=m
+CONFIG_INET_TCP_DIAG=m
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_CUBIC=y
+CONFIG_DEFAULT_TCP_CONG="cubic"
+# CONFIG_TCP_MD5SIG is not set
+
+#
+# IP: Virtual Server Configuration
+#
+# CONFIG_IP_VS is not set
+CONFIG_IPV6=m
+# CONFIG_IPV6_PRIVACY is not set
+# CONFIG_IPV6_ROUTER_PREF is not set
+CONFIG_INET6_AH=m
+CONFIG_INET6_ESP=m
+CONFIG_INET6_IPCOMP=m
+# CONFIG_IPV6_MIP6 is not set
+CONFIG_INET6_XFRM_TUNNEL=m
+CONFIG_INET6_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_TRANSPORT=m
+CONFIG_INET6_XFRM_MODE_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_BEET=m
+# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
+CONFIG_IPV6_SIT=m
+CONFIG_IPV6_TUNNEL=m
+# CONFIG_IPV6_MULTIPLE_TABLES is not set
+# CONFIG_NETWORK_SECMARK is not set
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+CONFIG_BRIDGE_NETFILTER=y
+
+#
+# Core Netfilter Configuration
+#
+CONFIG_NETFILTER_NETLINK=m
+CONFIG_NETFILTER_NETLINK_QUEUE=m
+CONFIG_NETFILTER_NETLINK_LOG=m
+CONFIG_NF_CONNTRACK_ENABLED=m
+CONFIG_NF_CONNTRACK_SUPPORT=y
+# CONFIG_IP_NF_CONNTRACK_SUPPORT is not set
+CONFIG_NF_CONNTRACK=m
+CONFIG_NF_CT_ACCT=y
+CONFIG_NF_CONNTRACK_MARK=y
+CONFIG_NF_CONNTRACK_EVENTS=y
+CONFIG_NF_CT_PROTO_GRE=m
+CONFIG_NF_CT_PROTO_SCTP=m
+CONFIG_NF_CONNTRACK_AMANDA=m
+CONFIG_NF_CONNTRACK_FTP=m
+CONFIG_NF_CONNTRACK_H323=m
+CONFIG_NF_CONNTRACK_IRC=m
+CONFIG_NF_CONNTRACK_NETBIOS_NS=m
+CONFIG_NF_CONNTRACK_PPTP=m
+CONFIG_NF_CONNTRACK_SANE=m
+CONFIG_NF_CONNTRACK_SIP=m
+CONFIG_NF_CONNTRACK_TFTP=m
+CONFIG_NF_CT_NETLINK=m
+CONFIG_NETFILTER_XTABLES=m
+CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
+CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
+CONFIG_NETFILTER_XT_TARGET_DSCP=m
+CONFIG_NETFILTER_XT_TARGET_MARK=m
+CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
+CONFIG_NETFILTER_XT_TARGET_NFLOG=m
+CONFIG_NETFILTER_XT_TARGET_NOTRACK=m
+CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
+CONFIG_NETFILTER_XT_MATCH_COMMENT=m
+CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
+CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
+CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
+CONFIG_NETFILTER_XT_MATCH_DCCP=m
+CONFIG_NETFILTER_XT_MATCH_DSCP=m
+CONFIG_NETFILTER_XT_MATCH_ESP=m
+CONFIG_NETFILTER_XT_MATCH_HELPER=m
+CONFIG_NETFILTER_XT_MATCH_LENGTH=m
+CONFIG_NETFILTER_XT_MATCH_LIMIT=m
+CONFIG_NETFILTER_XT_MATCH_MAC=m
+CONFIG_NETFILTER_XT_MATCH_MARK=m
+CONFIG_NETFILTER_XT_MATCH_POLICY=m
+CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
+CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m
+CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
+CONFIG_NETFILTER_XT_MATCH_QUOTA=m
+CONFIG_NETFILTER_XT_MATCH_REALM=m
+CONFIG_NETFILTER_XT_MATCH_SCTP=m
+CONFIG_NETFILTER_XT_MATCH_STATE=m
+CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
+CONFIG_NETFILTER_XT_MATCH_STRING=m
+CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
+CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
+
+#
+# IP: Netfilter Configuration
+#
+CONFIG_NF_CONNTRACK_IPV4=m
+CONFIG_NF_CONNTRACK_PROC_COMPAT=y
+# CONFIG_IP_NF_QUEUE is not set
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_MATCH_IPRANGE=m
+CONFIG_IP_NF_MATCH_TOS=m
+CONFIG_IP_NF_MATCH_RECENT=m
+CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_AH=m
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_MATCH_OWNER=m
+CONFIG_IP_NF_MATCH_ADDRTYPE=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_LOG=m
+CONFIG_IP_NF_TARGET_ULOG=m
+CONFIG_NF_NAT=m
+CONFIG_NF_NAT_NEEDED=y
+CONFIG_IP_NF_TARGET_MASQUERADE=m
+CONFIG_IP_NF_TARGET_REDIRECT=m
+CONFIG_IP_NF_TARGET_NETMAP=m
+CONFIG_IP_NF_TARGET_SAME=m
+CONFIG_NF_NAT_SNMP_BASIC=m
+CONFIG_NF_NAT_PROTO_GRE=m
+CONFIG_NF_NAT_FTP=m
+CONFIG_NF_NAT_IRC=m
+CONFIG_NF_NAT_TFTP=m
+CONFIG_NF_NAT_AMANDA=m
+CONFIG_NF_NAT_PPTP=m
+CONFIG_NF_NAT_H323=m
+CONFIG_NF_NAT_SIP=m
+CONFIG_IP_NF_MANGLE=m
+CONFIG_IP_NF_TARGET_TOS=m
+CONFIG_IP_NF_TARGET_ECN=m
+CONFIG_IP_NF_TARGET_TTL=m
+CONFIG_IP_NF_TARGET_CLUSTERIP=m
+CONFIG_IP_NF_RAW=m
+CONFIG_IP_NF_ARPTABLES=m
+CONFIG_IP_NF_ARPFILTER=m
+CONFIG_IP_NF_ARP_MANGLE=m
+
+#
+# IPv6: Netfilter Configuration (EXPERIMENTAL)
+#
+CONFIG_NF_CONNTRACK_IPV6=m
+# CONFIG_IP6_NF_QUEUE is not set
+CONFIG_IP6_NF_IPTABLES=m
+CONFIG_IP6_NF_MATCH_RT=m
+CONFIG_IP6_NF_MATCH_OPTS=m
+CONFIG_IP6_NF_MATCH_FRAG=m
+CONFIG_IP6_NF_MATCH_HL=m
+CONFIG_IP6_NF_MATCH_OWNER=m
+CONFIG_IP6_NF_MATCH_IPV6HEADER=m
+CONFIG_IP6_NF_MATCH_AH=m
+CONFIG_IP6_NF_MATCH_MH=m
+CONFIG_IP6_NF_MATCH_EUI64=m
+CONFIG_IP6_NF_FILTER=m
+CONFIG_IP6_NF_TARGET_LOG=m
+CONFIG_IP6_NF_TARGET_REJECT=m
+CONFIG_IP6_NF_MANGLE=m
+CONFIG_IP6_NF_TARGET_HL=m
+CONFIG_IP6_NF_RAW=m
+
+#
+# Bridge: Netfilter Configuration
+#
+CONFIG_BRIDGE_NF_EBTABLES=m
+CONFIG_BRIDGE_EBT_BROUTE=m
+CONFIG_BRIDGE_EBT_T_FILTER=m
+CONFIG_BRIDGE_EBT_T_NAT=m
+CONFIG_BRIDGE_EBT_802_3=m
+CONFIG_BRIDGE_EBT_AMONG=m
+CONFIG_BRIDGE_EBT_ARP=m
+CONFIG_BRIDGE_EBT_IP=m
+CONFIG_BRIDGE_EBT_LIMIT=m
+CONFIG_BRIDGE_EBT_MARK=m
+CONFIG_BRIDGE_EBT_PKTTYPE=m
+CONFIG_BRIDGE_EBT_STP=m
+CONFIG_BRIDGE_EBT_VLAN=m
+CONFIG_BRIDGE_EBT_ARPREPLY=m
+CONFIG_BRIDGE_EBT_DNAT=m
+CONFIG_BRIDGE_EBT_MARK_T=m
+CONFIG_BRIDGE_EBT_REDIRECT=m
+CONFIG_BRIDGE_EBT_SNAT=m
+CONFIG_BRIDGE_EBT_LOG=m
+CONFIG_BRIDGE_EBT_ULOG=m
+
+#
+# DCCP Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_DCCP is not set
+
+#
+# SCTP Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_SCTP is not set
+
+#
+# TIPC Configuration (EXPERIMENTAL)
+#
+CONFIG_TIPC=m
+# CONFIG_TIPC_ADVANCED is not set
+# CONFIG_TIPC_DEBUG is not set
+# CONFIG_ATM is not set
+CONFIG_BRIDGE=m
+CONFIG_VLAN_8021Q=m
+# CONFIG_DECNET is not set
+CONFIG_LLC=m
+# CONFIG_LLC2 is not set
+CONFIG_IPX=m
+# CONFIG_IPX_INTERN is not set
+CONFIG_ATALK=m
+CONFIG_DEV_APPLETALK=m
+CONFIG_IPDDP=m
+CONFIG_IPDDP_ENCAP=y
+CONFIG_IPDDP_DECAP=y
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_ECONET is not set
+# CONFIG_WAN_ROUTER is not set
+
+#
+# QoS and/or fair queueing
+#
+# CONFIG_NET_SCHED is not set
+CONFIG_NET_CLS_ROUTE=y
+
+#
+# Network testing
+#
+CONFIG_NET_PKTGEN=m
+# CONFIG_HAMRADIO is not set
+# CONFIG_IRDA is not set
+CONFIG_BT=m
+CONFIG_BT_L2CAP=m
+CONFIG_BT_SCO=m
+CONFIG_BT_RFCOMM=m
+CONFIG_BT_RFCOMM_TTY=y
+CONFIG_BT_BNEP=m
+CONFIG_BT_BNEP_MC_FILTER=y
+CONFIG_BT_BNEP_PROTO_FILTER=y
+CONFIG_BT_HIDP=m
+
+#
+# Bluetooth device drivers
+#
+CONFIG_BT_HCIUSB=m
+CONFIG_BT_HCIUSB_SCO=y
+CONFIG_BT_HCIUART=m
+CONFIG_BT_HCIUART_H4=y
+CONFIG_BT_HCIUART_BCSP=y
+CONFIG_BT_HCIBCM203X=m
+CONFIG_BT_HCIBPA10X=m
+CONFIG_BT_HCIBFUSB=m
+CONFIG_BT_HCIVHCI=m
+CONFIG_IEEE80211=m
+# CONFIG_IEEE80211_DEBUG is not set
+CONFIG_IEEE80211_CRYPT_WEP=m
+CONFIG_IEEE80211_CRYPT_CCMP=m
+CONFIG_IEEE80211_CRYPT_TKIP=m
+CONFIG_IEEE80211_SOFTMAC=m
+# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
+CONFIG_WIRELESS_EXT=y
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=y
+# CONFIG_SYS_HYPERVISOR is not set
+
+#
+# Connector - unified userspace <-> kernelspace linker
+#
+# CONFIG_CONNECTOR is not set
+
+#
+# Memory Technology Devices (MTD)
+#
+CONFIG_MTD=y
+# CONFIG_MTD_DEBUG is not set
+CONFIG_MTD_CONCAT=y
+CONFIG_MTD_PARTITIONS=y
+CONFIG_MTD_REDBOOT_PARTS=y
+CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1
+CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED=y
+# CONFIG_MTD_REDBOOT_PARTS_READONLY is not set
+# CONFIG_MTD_CMDLINE_PARTS is not set
+# CONFIG_MTD_AFS_PARTS is not set
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=y
+CONFIG_MTD_BLKDEVS=y
+CONFIG_MTD_BLOCK=y
+# CONFIG_FTL is not set
+CONFIG_NFTL=y
+CONFIG_NFTL_RW=y
+# CONFIG_INFTL is not set
+# CONFIG_RFD_FTL is not set
+# CONFIG_SSFDC is not set
+
+#
+# RAM/ROM/Flash chip drivers
+#
+CONFIG_MTD_CFI=y
+# CONFIG_MTD_JEDECPROBE is not set
+CONFIG_MTD_GEN_PROBE=y
+CONFIG_MTD_CFI_ADV_OPTIONS=y
+# CONFIG_MTD_CFI_NOSWAP is not set
+CONFIG_MTD_CFI_BE_BYTE_SWAP=y
+# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
+CONFIG_MTD_CFI_GEOMETRY=y
+# CONFIG_MTD_MAP_BANK_WIDTH_1 is not set
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+# CONFIG_MTD_MAP_BANK_WIDTH_4 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
+CONFIG_MTD_CFI_I1=y
+CONFIG_MTD_CFI_I2=y
+# CONFIG_MTD_CFI_I4 is not set
+# CONFIG_MTD_CFI_I8 is not set
+# CONFIG_MTD_OTP is not set
+CONFIG_MTD_CFI_INTELEXT=y
+# CONFIG_MTD_CFI_AMDSTD is not set
+# CONFIG_MTD_CFI_STAA is not set
+CONFIG_MTD_CFI_UTIL=y
+# CONFIG_MTD_RAM is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+# CONFIG_MTD_OBSOLETE_CHIPS is not set
+
+#
+# Mapping drivers for chip access
+#
+CONFIG_MTD_COMPLEX_MAPPINGS=y
+# CONFIG_MTD_PHYSMAP is not set
+# CONFIG_MTD_ARM_INTEGRATOR is not set
+CONFIG_MTD_IXP4XX=y
+# CONFIG_MTD_PCI is not set
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_PMC551 is not set
+# CONFIG_MTD_SLRAM is not set
+# CONFIG_MTD_PHRAM is not set
+# CONFIG_MTD_MTDRAM is not set
+# CONFIG_MTD_BLOCK2MTD is not set
+
+#
+# Disk-On-Chip Device Drivers
+#
+# CONFIG_MTD_DOC2000 is not set
+# CONFIG_MTD_DOC2001 is not set
+# CONFIG_MTD_DOC2001PLUS is not set
+
+#
+# NAND Flash Device Drivers
+#
+# CONFIG_MTD_NAND is not set
+
+#
+# OneNAND Flash Device Drivers
+#
+# CONFIG_MTD_ONENAND is not set
+
+#
+# Parallel port support
+#
+# CONFIG_PARPORT is not set
+
+#
+# Plug and Play support
+#
+# CONFIG_PNPACPI is not set
+
+#
+# Block devices
+#
+# CONFIG_BLK_CPQ_DA is not set
+# CONFIG_BLK_CPQ_CISS_DA is not set
+# CONFIG_BLK_DEV_DAC960 is not set
+# CONFIG_BLK_DEV_UMEM is not set
+# CONFIG_BLK_DEV_COW_COMMON is not set
+CONFIG_BLK_DEV_LOOP=m
+CONFIG_BLK_DEV_CRYPTOLOOP=m
+CONFIG_BLK_DEV_NBD=m
+# CONFIG_BLK_DEV_SX8 is not set
+# CONFIG_BLK_DEV_UB is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=4
+CONFIG_BLK_DEV_RAM_SIZE=10240
+CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
+CONFIG_CDROM_PKTCDVD=m
+CONFIG_CDROM_PKTCDVD_BUFFERS=8
+# CONFIG_CDROM_PKTCDVD_WCACHE is not set
+CONFIG_ATA_OVER_ETH=m
+
+#
+# ATA/ATAPI/MFM/RLL support
+#
+# CONFIG_IDE is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+CONFIG_SCSI=y
+# CONFIG_SCSI_TGT is not set
+# CONFIG_SCSI_NETLINK is not set
+CONFIG_SCSI_PROC_FS=y
+
+#
+# SCSI support type (disk, tape, CD-ROM)
+#
+CONFIG_BLK_DEV_SD=y
+CONFIG_CHR_DEV_ST=m
+# CONFIG_CHR_DEV_OSST is not set
+CONFIG_BLK_DEV_SR=m
+# CONFIG_BLK_DEV_SR_VENDOR is not set
+CONFIG_CHR_DEV_SG=m
+# CONFIG_CHR_DEV_SCH is not set
+
+#
+# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
+#
+CONFIG_SCSI_MULTI_LUN=y
+# CONFIG_SCSI_CONSTANTS is not set
+# CONFIG_SCSI_LOGGING is not set
+# CONFIG_SCSI_SCAN_ASYNC is not set
+
+#
+# SCSI Transports
+#
+# CONFIG_SCSI_SPI_ATTRS is not set
+# CONFIG_SCSI_FC_ATTRS is not set
+CONFIG_SCSI_ISCSI_ATTRS=m
+# CONFIG_SCSI_SAS_ATTRS is not set
+# CONFIG_SCSI_SAS_LIBSAS is not set
+
+#
+# SCSI low-level drivers
+#
+CONFIG_ISCSI_TCP=m
+# 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_DMX3191D is not set
+# CONFIG_SCSI_FUTURE_DOMAIN 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_IPR 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
+
+#
+# Serial ATA (prod) and Parallel ATA (experimental) drivers
+#
+CONFIG_ATA=m
+# CONFIG_ATA_NONSTANDARD is not set
+# CONFIG_SATA_AHCI is not set
+# CONFIG_SATA_SVW is not set
+# CONFIG_ATA_PIIX is not set
+# CONFIG_SATA_MV is not set
+# CONFIG_SATA_NV is not set
+# CONFIG_PDC_ADMA is not set
+# CONFIG_SATA_QSTOR is not set
+# CONFIG_SATA_PROMISE is not set
+# CONFIG_SATA_SX4 is not set
+# CONFIG_SATA_SIL is not set
+# CONFIG_SATA_SIL24 is not set
+# CONFIG_SATA_SIS is not set
+# CONFIG_SATA_ULI is not set
+CONFIG_SATA_VIA=m
+# CONFIG_SATA_VITESSE is not set
+# CONFIG_SATA_INIC162X is not set
+# CONFIG_PATA_ALI is not set
+# CONFIG_PATA_AMD is not set
+CONFIG_PATA_ARTOP=m
+# CONFIG_PATA_ATIIXP is not set
+# CONFIG_PATA_CMD64X is not set
+# CONFIG_PATA_CS5520 is not set
+# CONFIG_PATA_CS5530 is not set
+# CONFIG_PATA_CYPRESS is not set
+# CONFIG_PATA_EFAR is not set
+# CONFIG_ATA_GENERIC is not set
+# CONFIG_PATA_HPT366 is not set
+# CONFIG_PATA_HPT37X is not set
+# CONFIG_PATA_HPT3X2N is not set
+# CONFIG_PATA_HPT3X3 is not set
+# CONFIG_PATA_IT821X is not set
+# CONFIG_PATA_IT8213 is not set
+# CONFIG_PATA_JMICRON is not set
+# CONFIG_PATA_TRIFLEX is not set
+# CONFIG_PATA_MARVELL is not set
+# CONFIG_PATA_MPIIX is not set
+# CONFIG_PATA_OLDPIIX is not set
+# CONFIG_PATA_NETCELL is not set
+# CONFIG_PATA_NS87410 is not set
+# CONFIG_PATA_OPTI is not set
+# CONFIG_PATA_OPTIDMA is not set
+# CONFIG_PATA_PDC_OLD is not set
+# CONFIG_PATA_RADISYS is not set
+# CONFIG_PATA_RZ1000 is not set
+# CONFIG_PATA_SC1200 is not set
+# CONFIG_PATA_SERVERWORKS is not set
+# CONFIG_PATA_PDC2027X is not set
+# CONFIG_PATA_SIL680 is not set
+# CONFIG_PATA_SIS is not set
+# CONFIG_PATA_VIA is not set
+# CONFIG_PATA_WINBOND is not set
+# CONFIG_PATA_PLATFORM is not set
+CONFIG_PATA_IXP4XX_CF=m
+
+#
+# Multi-device support (RAID and LVM)
+#
+CONFIG_MD=y
+CONFIG_BLK_DEV_MD=m
+CONFIG_MD_LINEAR=m
+CONFIG_MD_RAID0=m
+CONFIG_MD_RAID1=m
+CONFIG_MD_RAID10=m
+CONFIG_MD_RAID456=m
+CONFIG_MD_RAID5_RESHAPE=y
+CONFIG_MD_MULTIPATH=m
+CONFIG_MD_FAULTY=m
+CONFIG_BLK_DEV_DM=m
+# CONFIG_DM_DEBUG is not set
+CONFIG_DM_CRYPT=m
+CONFIG_DM_SNAPSHOT=m
+CONFIG_DM_MIRROR=m
+CONFIG_DM_ZERO=m
+CONFIG_DM_MULTIPATH=m
+# CONFIG_DM_MULTIPATH_EMC is not set
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+# CONFIG_FUSION_SPI is not set
+# CONFIG_FUSION_FC is not set
+# CONFIG_FUSION_SAS is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+# CONFIG_IEEE1394 is not set
+
+#
+# I2O device support
+#
+# CONFIG_I2O is not set
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+CONFIG_TUN=m
+
+#
+# ARCnet devices
+#
+# CONFIG_ARCNET is not set
+
+#
+# PHY device support
+#
+# CONFIG_PHYLIB is not set
+
+#
+# Ethernet (10 or 100Mbit)
+#
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=m
+CONFIG_IXP4XX_QMGR=m
+CONFIG_IXP4XX_NPE=y
+CONFIG_IXP4XX_NPE_FW_LOAD=y
+CONFIG_IXP4XX_NPE_FW_MTD=y
+CONFIG_IXP4XX_MAC=m
+CONFIG_IXP4XX_CRYPTO=m
+# CONFIG_HAPPYMEAL is not set
+# CONFIG_SUNGEM is not set
+# CONFIG_CASSINI is not set
+# CONFIG_NET_VENDOR_3COM is not set
+# CONFIG_SMC91X is not set
+# CONFIG_DM9000 is not set
+
+#
+# Tulip family network device support
+#
+# 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 is not set
+# 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
+
+#
+# Ethernet (1000 Mbit)
+#
+# CONFIG_ACENIC is not set
+# CONFIG_DL2K is not set
+# CONFIG_E1000 is not set
+# CONFIG_NS83820 is not set
+# CONFIG_HAMACHI is not set
+# CONFIG_YELLOWFIN is not set
+CONFIG_R8169=m
+# CONFIG_R8169_NAPI is not set
+CONFIG_R8169_VLAN=y
+# CONFIG_SIS190 is not set
+# CONFIG_SKGE is not set
+# CONFIG_SKY2 is not set
+# CONFIG_SK98LIN is not set
+CONFIG_VIA_VELOCITY=m
+# CONFIG_TIGON3 is not set
+# CONFIG_BNX2 is not set
+# CONFIG_QLA3XXX is not set
+# CONFIG_ATL1 is not set
+
+#
+# Ethernet (10000 Mbit)
+#
+# 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
+
+#
+# Token Ring devices
+#
+# CONFIG_TR is not set
+
+#
+# Wireless LAN (non-hamradio)
+#
+CONFIG_NET_RADIO=y
+# CONFIG_NET_WIRELESS_RTNETLINK is not set
+
+#
+# Obsolete Wireless cards support (pre-802.11)
+#
+# CONFIG_STRIP is not set
+
+#
+# Wireless 802.11b ISA/PCI cards support
+#
+# CONFIG_IPW2100 is not set
+# CONFIG_IPW2200 is not set
+# CONFIG_HERMES is not set
+# CONFIG_ATMEL is not set
+
+#
+# Prism GT/Duette 802.11(a/b/g) PCI/Cardbus support
+#
+# CONFIG_PRISM54 is not set
+# CONFIG_USB_ZD1201 is not set
+# CONFIG_HOSTAP is not set
+# CONFIG_BCM43XX is not set
+CONFIG_ZD1211RW=m
+# CONFIG_ZD1211RW_DEBUG is not set
+CONFIG_NET_WIRELESS=y
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+# CONFIG_FDDI is not set
+# CONFIG_HIPPI is not set
+CONFIG_PPP=m
+# CONFIG_PPP_MULTILINK is not set
+CONFIG_PPP_FILTER=y
+CONFIG_PPP_ASYNC=m
+CONFIG_PPP_SYNC_TTY=m
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+CONFIG_PPP_MPPE=m
+CONFIG_PPPOE=m
+# CONFIG_SLIP is not set
+CONFIG_SLHC=m
+# CONFIG_NET_FC is not set
+# CONFIG_SHAPER is not set
+CONFIG_NETCONSOLE=m
+CONFIG_NETPOLL=y
+# CONFIG_NETPOLL_TRAP is not set
+CONFIG_NET_POLL_CONTROLLER=y
+
+#
+# ISDN subsystem
+#
+# CONFIG_ISDN is not set
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS is not set
+
+#
+# Userland interfaces
+#
+# CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_TSDEV is not set
+CONFIG_INPUT_EVDEV=y
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# Input Device Drivers
+#
+# CONFIG_INPUT_KEYBOARD is not set
+# CONFIG_INPUT_MOUSE is not set
+# CONFIG_INPUT_JOYSTICK is not set
+# CONFIG_INPUT_TOUCHSCREEN is not set
+CONFIG_INPUT_MISC=y
+CONFIG_INPUT_IXP4XX_BEEPER=y
+CONFIG_INPUT_UINPUT=m
+
+#
+# Hardware I/O ports
+#
+# CONFIG_SERIO is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+# CONFIG_VT is not set
+CONFIG_SERIAL_NONSTANDARD=y
+# CONFIG_COMPUTONE is not set
+# CONFIG_ROCKETPORT is not set
+# CONFIG_CYCLADES is not set
+# CONFIG_DIGIEPCA is not set
+# CONFIG_MOXA_INTELLIO is not set
+# CONFIG_MOXA_SMARTIO is not set
+# CONFIG_MOXA_SMARTIO_NEW is not set
+# CONFIG_ISI is not set
+# CONFIG_SYNCLINKMP is not set
+# CONFIG_SYNCLINK_GT is not set
+CONFIG_N_HDLC=m
+# CONFIG_RISCOM8 is not set
+# CONFIG_SPECIALIX is not set
+# CONFIG_SX is not set
+# CONFIG_RIO is not set
+# CONFIG_STALDRV is not set
+
+#
+# Serial drivers
+#
+CONFIG_SERIAL_8250=y
+CONFIG_SERIAL_8250_CONSOLE=y
+CONFIG_SERIAL_8250_PCI=m
+CONFIG_SERIAL_8250_NR_UARTS=2
+CONFIG_SERIAL_8250_RUNTIME_UARTS=2
+# CONFIG_SERIAL_8250_EXTENDED is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+# CONFIG_SERIAL_JSM is not set
+CONFIG_UNIX98_PTYS=y
+# CONFIG_LEGACY_PTYS is not set
+
+#
+# IPMI
+#
+# CONFIG_IPMI_HANDLER is not set
+
+#
+# Watchdog Cards
+#
+CONFIG_WATCHDOG=y
+# CONFIG_WATCHDOG_NOWAYOUT is not set
+
+#
+# Watchdog Device Drivers
+#
+# CONFIG_SOFT_WATCHDOG is not set
+CONFIG_IXP4XX_WATCHDOG=m
+
+#
+# PCI-based Watchdog Cards
+#
+# CONFIG_PCIPCWATCHDOG is not set
+# CONFIG_WDTPCI is not set
+
+#
+# USB-based Watchdog Cards
+#
+# CONFIG_USBPCWATCHDOG is not set
+CONFIG_HW_RANDOM=y
+CONFIG_HW_RANDOM_IXP4XX=y
+# CONFIG_NVRAM is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+# CONFIG_APPLICOM is not set
+# CONFIG_DRM is not set
+# CONFIG_RAW_DRIVER is not set
+
+#
+# TPM devices
+#
+# CONFIG_TCG_TPM is not set
+
+#
+# I2C support
+#
+CONFIG_I2C=y
+CONFIG_I2C_CHARDEV=y
+
+#
+# I2C Algorithms
+#
+CONFIG_I2C_ALGOBIT=y
+# CONFIG_I2C_ALGOPCF is not set
+# CONFIG_I2C_ALGOPCA is not set
+
+#
+# I2C Hardware Bus support
+#
+# CONFIG_I2C_ALI1535 is not set
+# CONFIG_I2C_ALI1563 is not set
+# CONFIG_I2C_ALI15X3 is not set
+# CONFIG_I2C_AMD756 is not set
+# CONFIG_I2C_AMD8111 is not set
+# CONFIG_I2C_I801 is not set
+# CONFIG_I2C_I810 is not set
+# CONFIG_I2C_PIIX4 is not set
+# CONFIG_I2C_IOP3XX is not set
+CONFIG_I2C_ISA=m
+CONFIG_I2C_IXP4XX=y
+# CONFIG_I2C_NFORCE2 is not set
+# CONFIG_I2C_OCORES is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_PROSAVAGE is not set
+# CONFIG_I2C_SAVAGE4 is not set
+# CONFIG_I2C_SIS5595 is not set
+# CONFIG_I2C_SIS630 is not set
+# CONFIG_I2C_SIS96X is not set
+# CONFIG_I2C_STUB is not set
+# CONFIG_I2C_VIA is not set
+# CONFIG_I2C_VIAPRO is not set
+# CONFIG_I2C_VOODOO3 is not set
+# CONFIG_I2C_PCA_ISA is not set
+
+#
+# Miscellaneous I2C Chip support
+#
+# CONFIG_SENSORS_DS1337 is not set
+# CONFIG_SENSORS_DS1374 is not set
+CONFIG_SENSORS_EEPROM=y
+CONFIG_SENSORS_PCF8574=m
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_SENSORS_MAX6875 is not set
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CHIP is not set
+
+#
+# SPI support
+#
+# CONFIG_SPI is not set
+# CONFIG_SPI_MASTER is not set
+
+#
+# Dallas's 1-wire bus
+#
+CONFIG_W1=m
+
+#
+# 1-wire Bus Masters
+#
+# CONFIG_W1_MASTER_MATROX is not set
+CONFIG_W1_MASTER_DS2490=m
+CONFIG_W1_MASTER_DS2482=m
+
+#
+# 1-wire Slaves
+#
+CONFIG_W1_SLAVE_THERM=m
+CONFIG_W1_SLAVE_SMEM=m
+CONFIG_W1_SLAVE_DS2433=m
+CONFIG_W1_SLAVE_DS2433_CRC=y
+
+#
+# Hardware Monitoring support
+#
+CONFIG_HWMON=m
+CONFIG_HWMON_VID=m
+# CONFIG_SENSORS_ABITUGURU is not set
+# CONFIG_SENSORS_ADM1021 is not set
+# CONFIG_SENSORS_ADM1025 is not set
+# CONFIG_SENSORS_ADM1026 is not set
+# CONFIG_SENSORS_ADM1029 is not set
+# CONFIG_SENSORS_ADM1031 is not set
+# CONFIG_SENSORS_ADM9240 is not set
+# CONFIG_SENSORS_ASB100 is not set
+# CONFIG_SENSORS_ATXP1 is not set
+# CONFIG_SENSORS_DS1621 is not set
+# CONFIG_SENSORS_F71805F is not set
+# CONFIG_SENSORS_FSCHER is not set
+# CONFIG_SENSORS_FSCPOS is not set
+# CONFIG_SENSORS_GL518SM is not set
+# CONFIG_SENSORS_GL520SM is not set
+# CONFIG_SENSORS_IT87 is not set
+# CONFIG_SENSORS_LM63 is not set
+# CONFIG_SENSORS_LM75 is not set
+# CONFIG_SENSORS_LM77 is not set
+# CONFIG_SENSORS_LM78 is not set
+# CONFIG_SENSORS_LM80 is not set
+# CONFIG_SENSORS_LM83 is not set
+# CONFIG_SENSORS_LM85 is not set
+# CONFIG_SENSORS_LM87 is not set
+# CONFIG_SENSORS_LM90 is not set
+# CONFIG_SENSORS_LM92 is not set
+# CONFIG_SENSORS_MAX1619 is not set
+# CONFIG_SENSORS_PC87360 is not set
+# CONFIG_SENSORS_PC87427 is not set
+# CONFIG_SENSORS_SIS5595 is not set
+# CONFIG_SENSORS_SMSC47M1 is not set
+# CONFIG_SENSORS_SMSC47M192 is not set
+# CONFIG_SENSORS_SMSC47B397 is not set
+# CONFIG_SENSORS_VIA686A is not set
+# CONFIG_SENSORS_VT1211 is not set
+# CONFIG_SENSORS_VT8231 is not set
+CONFIG_SENSORS_W83781D=m
+# CONFIG_SENSORS_W83791D is not set
+# CONFIG_SENSORS_W83792D is not set
+# CONFIG_SENSORS_W83793 is not set
+# CONFIG_SENSORS_W83L785TS is not set
+# CONFIG_SENSORS_W83627HF is not set
+# CONFIG_SENSORS_W83627EHF is not set
+CONFIG_SENSORS_AD7418=m
+# CONFIG_HWMON_DEBUG_CHIP is not set
+
+#
+# Misc devices
+#
+# CONFIG_SGI_IOC4 is not set
+# CONFIG_TIFM_CORE is not set
+
+#
+# Multifunction device drivers
+#
+# CONFIG_MFD_SM501 is not set
+
+#
+# LED devices
+#
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+
+#
+# LED drivers
+#
+CONFIG_LEDS_IXP4XX=y
+
+#
+# LED Triggers
+#
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=y
+CONFIG_LEDS_TRIGGER_HEARTBEAT=y
+CONFIG_LEDS_TRIGGER_CPU_ACTIVITY=y
+
+#
+# Multimedia devices
+#
+CONFIG_VIDEO_DEV=m
+CONFIG_VIDEO_V4L1=y
+CONFIG_VIDEO_V4L1_COMPAT=y
+CONFIG_VIDEO_V4L2=y
+
+#
+# Video Capture Adapters
+#
+
+#
+# Video Capture Adapters
+#
+# CONFIG_VIDEO_ADV_DEBUG is not set
+CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
+CONFIG_VIDEO_TDA9840=m
+CONFIG_VIDEO_TEA6415C=m
+CONFIG_VIDEO_TEA6420=m
+CONFIG_VIDEO_MSP3400=m
+CONFIG_VIDEO_WM8775=m
+CONFIG_VIDEO_BT819=m
+CONFIG_VIDEO_BT856=m
+CONFIG_VIDEO_KS0127=m
+CONFIG_VIDEO_OV7670=m
+CONFIG_VIDEO_SAA7110=m
+CONFIG_VIDEO_SAA7111=m
+CONFIG_VIDEO_SAA7114=m
+CONFIG_VIDEO_SAA711X=m
+CONFIG_VIDEO_TVP5150=m
+CONFIG_VIDEO_VPX3220=m
+CONFIG_VIDEO_CX25840=m
+CONFIG_VIDEO_CX2341X=m
+CONFIG_VIDEO_SAA7185=m
+CONFIG_VIDEO_ADV7170=m
+CONFIG_VIDEO_ADV7175=m
+CONFIG_VIDEO_VIVI=m
+# CONFIG_VIDEO_BT848 is not set
+CONFIG_VIDEO_CPIA=m
+CONFIG_VIDEO_CPIA_USB=m
+CONFIG_VIDEO_CPIA2=m
+CONFIG_VIDEO_SAA5246A=m
+CONFIG_VIDEO_SAA5249=m
+CONFIG_TUNER_3036=m
+CONFIG_VIDEO_STRADIS=m
+CONFIG_VIDEO_ZORAN_ZR36060=m
+CONFIG_VIDEO_ZORAN=m
+CONFIG_VIDEO_ZORAN_BUZ=m
+CONFIG_VIDEO_ZORAN_DC10=m
+CONFIG_VIDEO_ZORAN_DC30=m
+CONFIG_VIDEO_ZORAN_LML33=m
+CONFIG_VIDEO_ZORAN_LML33R10=m
+CONFIG_VIDEO_ZORAN_AVS6EYES=m
+CONFIG_VIDEO_SAA7134=m
+CONFIG_VIDEO_SAA7134_ALSA=m
+CONFIG_VIDEO_MXB=m
+CONFIG_VIDEO_DPC=m
+CONFIG_VIDEO_HEXIUM_ORION=m
+CONFIG_VIDEO_HEXIUM_GEMINI=m
+CONFIG_VIDEO_CX88=m
+CONFIG_VIDEO_CX88_ALSA=m
+CONFIG_VIDEO_CX88_BLACKBIRD=m
+CONFIG_VIDEO_CAFE_CCIC=m
+
+#
+# V4L USB devices
+#
+CONFIG_VIDEO_PVRUSB2=m
+CONFIG_VIDEO_PVRUSB2_29XXX=y
+CONFIG_VIDEO_PVRUSB2_24XXX=y
+CONFIG_VIDEO_PVRUSB2_SYSFS=y
+# CONFIG_VIDEO_PVRUSB2_DEBUGIFC is not set
+CONFIG_VIDEO_EM28XX=m
+CONFIG_VIDEO_USBVISION=m
+CONFIG_VIDEO_USBVIDEO=m
+CONFIG_USB_VICAM=m
+CONFIG_USB_IBMCAM=m
+CONFIG_USB_KONICAWC=m
+CONFIG_USB_QUICKCAM_MESSENGER=m
+CONFIG_USB_ET61X251=m
+CONFIG_VIDEO_OVCAMCHIP=m
+CONFIG_USB_W9968CF=m
+CONFIG_USB_OV511=m
+CONFIG_USB_SE401=m
+CONFIG_USB_SN9C102=m
+CONFIG_USB_STV680=m
+CONFIG_USB_ZC0301=m
+CONFIG_USB_PWC=m
+# CONFIG_USB_PWC_DEBUG is not set
+
+#
+# Radio Adapters
+#
+# CONFIG_RADIO_GEMTEK_PCI is not set
+# CONFIG_RADIO_MAXIRADIO is not set
+# CONFIG_RADIO_MAESTRO is not set
+CONFIG_USB_DSBR=m
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB is not set
+CONFIG_VIDEO_SAA7146=m
+CONFIG_VIDEO_SAA7146_VV=m
+CONFIG_VIDEO_TUNER=m
+CONFIG_VIDEO_BUF=m
+CONFIG_VIDEO_BTCX=m
+CONFIG_VIDEO_IR=m
+CONFIG_VIDEO_TVEEPROM=m
+# CONFIG_USB_DABUSB is not set
+
+#
+# Graphics support
+#
+# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
+# CONFIG_FB is not set
+
+#
+# Sound
+#
+CONFIG_SOUND=m
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=m
+CONFIG_SND_TIMER=m
+CONFIG_SND_PCM=m
+CONFIG_SND_HWDEP=m
+CONFIG_SND_RAWMIDI=m
+CONFIG_SND_SEQUENCER=m
+CONFIG_SND_SEQ_DUMMY=m
+CONFIG_SND_OSSEMUL=y
+CONFIG_SND_MIXER_OSS=m
+CONFIG_SND_PCM_OSS=m
+CONFIG_SND_PCM_OSS_PLUGINS=y
+# CONFIG_SND_SEQUENCER_OSS is not set
+# CONFIG_SND_DYNAMIC_MINORS is not set
+CONFIG_SND_SUPPORT_OLD_API=y
+CONFIG_SND_VERBOSE_PROCFS=y
+# CONFIG_SND_VERBOSE_PRINTK is not set
+# CONFIG_SND_DEBUG is not set
+
+#
+# Generic devices
+#
+# CONFIG_SND_DUMMY is not set
+# CONFIG_SND_VIRMIDI is not set
+# CONFIG_SND_MTPAV is not set
+# CONFIG_SND_SERIAL_U16550 is not set
+# CONFIG_SND_MPU401 is not set
+
+#
+# PCI devices
+#
+# CONFIG_SND_AD1889 is not set
+# CONFIG_SND_ALS300 is not set
+# CONFIG_SND_ALI5451 is not set
+# CONFIG_SND_ATIIXP is not set
+# CONFIG_SND_ATIIXP_MODEM is not set
+# CONFIG_SND_AU8810 is not set
+# CONFIG_SND_AU8820 is not set
+# CONFIG_SND_AU8830 is not set
+# CONFIG_SND_AZT3328 is not set
+# CONFIG_SND_BT87X is not set
+# CONFIG_SND_CA0106 is not set
+# CONFIG_SND_CMIPCI is not set
+# CONFIG_SND_CS4281 is not set
+# CONFIG_SND_CS46XX is not set
+# CONFIG_SND_DARLA20 is not set
+# CONFIG_SND_GINA20 is not set
+# CONFIG_SND_LAYLA20 is not set
+# CONFIG_SND_DARLA24 is not set
+# CONFIG_SND_GINA24 is not set
+# CONFIG_SND_LAYLA24 is not set
+# CONFIG_SND_MONA is not set
+# CONFIG_SND_MIA is not set
+# CONFIG_SND_ECHO3G is not set
+# CONFIG_SND_INDIGO is not set
+# CONFIG_SND_INDIGOIO is not set
+# CONFIG_SND_INDIGODJ is not set
+# CONFIG_SND_EMU10K1 is not set
+# CONFIG_SND_EMU10K1X is not set
+# CONFIG_SND_ENS1370 is not set
+# CONFIG_SND_ENS1371 is not set
+# CONFIG_SND_ES1938 is not set
+# CONFIG_SND_ES1968 is not set
+# CONFIG_SND_FM801 is not set
+# CONFIG_SND_HDA_INTEL is not set
+# CONFIG_SND_HDSP is not set
+# CONFIG_SND_HDSPM is not set
+# CONFIG_SND_ICE1712 is not set
+# CONFIG_SND_ICE1724 is not set
+# CONFIG_SND_INTEL8X0 is not set
+# CONFIG_SND_INTEL8X0M is not set
+# CONFIG_SND_KORG1212 is not set
+# CONFIG_SND_MAESTRO3 is not set
+# CONFIG_SND_MIXART is not set
+# CONFIG_SND_NM256 is not set
+# CONFIG_SND_PCXHR is not set
+# CONFIG_SND_RIPTIDE is not set
+# CONFIG_SND_RME32 is not set
+# CONFIG_SND_RME96 is not set
+# CONFIG_SND_RME9652 is not set
+# CONFIG_SND_SONICVIBES is not set
+# CONFIG_SND_TRIDENT is not set
+# CONFIG_SND_VIA82XX is not set
+# CONFIG_SND_VIA82XX_MODEM is not set
+# CONFIG_SND_VX222 is not set
+# CONFIG_SND_YMFPCI is not set
+
+#
+# ALSA ARM devices
+#
+
+#
+# USB devices
+#
+CONFIG_SND_USB_AUDIO=m
+
+#
+# SoC audio support
+#
+# CONFIG_SND_SOC is not set
+
+#
+# Open Sound System
+#
+# CONFIG_SOUND_PRIME is not set
+
+#
+# HID Devices
+#
+CONFIG_HID=m
+# CONFIG_HID_DEBUG is not set
+
+#
+# USB support
+#
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB_ARCH_HAS_OHCI=y
+CONFIG_USB_ARCH_HAS_EHCI=y
+CONFIG_USB=y
+# CONFIG_USB_DEBUG is not set
+
+#
+# Miscellaneous USB options
+#
+CONFIG_USB_DEVICEFS=y
+# CONFIG_USB_DYNAMIC_MINORS is not set
+# CONFIG_USB_OTG is not set
+
+#
+# USB Host Controller Drivers
+#
+CONFIG_USB_EHCI_HCD=m
+CONFIG_USB_EHCI_SPLIT_ISO=y
+CONFIG_USB_EHCI_ROOT_HUB_TT=y
+CONFIG_USB_EHCI_TT_NEWSCHED=y
+# CONFIG_USB_EHCI_BIG_ENDIAN_MMIO is not set
+# CONFIG_USB_ISP116X_HCD is not set
+CONFIG_USB_OHCI_HCD=m
+# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
+# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+CONFIG_USB_UHCI_HCD=m
+# CONFIG_USB_U132_HCD is not set
+# CONFIG_USB_SL811_HCD is not set
+
+#
+# USB Device Class drivers
+#
+CONFIG_USB_ACM=m
+CONFIG_USB_PRINTER=m
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# may also be needed; see USB_STORAGE Help for more information
+#
+CONFIG_USB_STORAGE=y
+# CONFIG_USB_STORAGE_DEBUG is not set
+# CONFIG_USB_STORAGE_DATAFAB is not set
+CONFIG_USB_STORAGE_FREECOM=y
+# CONFIG_USB_STORAGE_DPCM is not set
+# CONFIG_USB_STORAGE_USBAT is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_SDDR55 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+# CONFIG_USB_STORAGE_ALAUDA is not set
+CONFIG_USB_STORAGE_ONETOUCH=y
+CONFIG_USB_STORAGE_KARMA=y
+# CONFIG_USB_LIBUSUAL is not set
+
+#
+# USB Input Devices
+#
+CONFIG_USB_HID=m
+# CONFIG_USB_HIDINPUT_POWERBOOK is not set
+# CONFIG_HID_FF is not set
+CONFIG_USB_HIDDEV=y
+
+#
+# USB HID Boot Protocol drivers
+#
+CONFIG_USB_KBD=m
+# CONFIG_USB_MOUSE is not set
+# CONFIG_USB_AIPTEK is not set
+# CONFIG_USB_WACOM is not set
+# CONFIG_USB_ACECAD is not set
+# CONFIG_USB_KBTAB is not set
+# CONFIG_USB_POWERMATE is not set
+# CONFIG_USB_TOUCHSCREEN is not set
+CONFIG_USB_YEALINK=m
+# CONFIG_USB_XPAD is not set
+CONFIG_USB_ATI_REMOTE=m
+CONFIG_USB_ATI_REMOTE2=m
+CONFIG_USB_KEYSPAN_REMOTE=m
+# CONFIG_USB_APPLETOUCH is not set
+# CONFIG_USB_GTCO is not set
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_MICROTEK is not set
+
+#
+# USB Network Adapters
+#
+CONFIG_USB_CATC=m
+CONFIG_USB_KAWETH=m
+CONFIG_USB_PEGASUS=m
+CONFIG_USB_RTL8150=m
+CONFIG_USB_USBNET_MII=m
+CONFIG_USB_USBNET=m
+CONFIG_USB_NET_AX8817X=m
+CONFIG_USB_NET_CDCETHER=m
+CONFIG_USB_NET_DM9601=m
+CONFIG_USB_NET_GL620A=m
+CONFIG_USB_NET_NET1080=m
+CONFIG_USB_NET_PLUSB=m
+CONFIG_USB_NET_MCS7830=m
+CONFIG_USB_NET_RNDIS_HOST=m
+CONFIG_USB_NET_CDC_SUBSET=m
+CONFIG_USB_ALI_M5632=y
+CONFIG_USB_AN2720=y
+CONFIG_USB_BELKIN=y
+CONFIG_USB_ARMLINUX=y
+CONFIG_USB_EPSON2888=y
+CONFIG_USB_KC2190=y
+CONFIG_USB_NET_ZAURUS=m
+# CONFIG_USB_MON is not set
+
+#
+# USB port drivers
+#
+
+#
+# USB Serial Converter support
+#
+CONFIG_USB_SERIAL=m
+CONFIG_USB_SERIAL_GENERIC=y
+CONFIG_USB_SERIAL_AIRCABLE=m
+# CONFIG_USB_SERIAL_AIRPRIME is not set
+CONFIG_USB_SERIAL_ARK3116=m
+CONFIG_USB_SERIAL_BELKIN=m
+CONFIG_USB_SERIAL_WHITEHEAT=m
+CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
+CONFIG_USB_SERIAL_CP2101=m
+CONFIG_USB_SERIAL_CYPRESS_M8=m
+CONFIG_USB_SERIAL_EMPEG=m
+CONFIG_USB_SERIAL_FTDI_SIO=m
+CONFIG_USB_SERIAL_FUNSOFT=m
+CONFIG_USB_SERIAL_VISOR=m
+CONFIG_USB_SERIAL_IPAQ=m
+CONFIG_USB_SERIAL_IR=m
+CONFIG_USB_SERIAL_EDGEPORT=m
+CONFIG_USB_SERIAL_EDGEPORT_TI=m
+CONFIG_USB_SERIAL_GARMIN=m
+CONFIG_USB_SERIAL_IPW=m
+CONFIG_USB_SERIAL_KEYSPAN_PDA=m
+CONFIG_USB_SERIAL_KEYSPAN=m
+CONFIG_USB_SERIAL_KEYSPAN_MPR=y
+CONFIG_USB_SERIAL_KEYSPAN_USA28=y
+CONFIG_USB_SERIAL_KEYSPAN_USA28X=y
+CONFIG_USB_SERIAL_KEYSPAN_USA28XA=y
+CONFIG_USB_SERIAL_KEYSPAN_USA28XB=y
+CONFIG_USB_SERIAL_KEYSPAN_USA19=y
+CONFIG_USB_SERIAL_KEYSPAN_USA18X=y
+CONFIG_USB_SERIAL_KEYSPAN_USA19W=y
+CONFIG_USB_SERIAL_KEYSPAN_USA19QW=y
+CONFIG_USB_SERIAL_KEYSPAN_USA19QI=y
+CONFIG_USB_SERIAL_KEYSPAN_USA49W=y
+CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y
+CONFIG_USB_SERIAL_KLSI=m
+CONFIG_USB_SERIAL_KOBIL_SCT=m
+CONFIG_USB_SERIAL_MCT_U232=m
+CONFIG_USB_SERIAL_MOS7720=m
+CONFIG_USB_SERIAL_MOS7840=m
+CONFIG_USB_SERIAL_NAVMAN=m
+CONFIG_USB_SERIAL_PL2303=m
+# CONFIG_USB_SERIAL_HP4X is not set
+CONFIG_USB_SERIAL_SAFE=m
+# CONFIG_USB_SERIAL_SAFE_PADDED is not set
+# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set
+CONFIG_USB_SERIAL_TI=m
+CONFIG_USB_SERIAL_CYBERJACK=m
+CONFIG_USB_SERIAL_XIRCOM=m
+# CONFIG_USB_SERIAL_OPTION is not set
+CONFIG_USB_SERIAL_OMNINET=m
+# CONFIG_USB_SERIAL_DEBUG is not set
+CONFIG_USB_EZUSB=y
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_EMI62 is not set
+# CONFIG_USB_EMI26 is not set
+CONFIG_USB_ADUTUX=m
+# CONFIG_USB_AUERSWALD is not set
+CONFIG_USB_RIO500=m
+CONFIG_USB_LEGOTOWER=m
+CONFIG_USB_LCD=m
+CONFIG_USB_BERRY_CHARGE=m
+CONFIG_USB_LED=m
+# CONFIG_USB_CYPRESS_CY7C63 is not set
+# CONFIG_USB_CYTHERM is not set
+CONFIG_USB_PHIDGET=m
+CONFIG_USB_PHIDGETKIT=m
+CONFIG_USB_PHIDGETMOTORCONTROL=m
+CONFIG_USB_PHIDGETSERVO=m
+# CONFIG_USB_IDMOUSE is not set
+CONFIG_USB_FTDI_ELAN=m
+# CONFIG_USB_APPLEDISPLAY is not set
+CONFIG_USB_SISUSBVGA=m
+# CONFIG_USB_LD is not set
+# CONFIG_USB_TRANCEVIBRATOR is not set
+# CONFIG_USB_IOWARRIOR is not set
+# CONFIG_USB_TEST is not set
+
+#
+# USB DSL modem support
+#
+
+#
+# USB Gadget Support
+#
+# CONFIG_USB_GADGET is not set
+
+#
+# MMC/SD Card support
+#
+# CONFIG_MMC is not set
+
+#
+# Real Time Clock
+#
+CONFIG_RTC_LIB=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_HCTOSYS=y
+CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
+# CONFIG_RTC_DEBUG is not set
+
+#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=y
+CONFIG_RTC_INTF_PROC=y
+CONFIG_RTC_INTF_DEV=y
+# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
+
+#
+# RTC drivers
+#
+# CONFIG_RTC_DRV_CMOS is not set
+CONFIG_RTC_DRV_X1205=y
+CONFIG_RTC_DRV_DS1307=y
+# CONFIG_RTC_DRV_DS1553 is not set
+CONFIG_RTC_DRV_ISL1208=y
+CONFIG_RTC_DRV_DS1672=y
+# CONFIG_RTC_DRV_DS1742 is not set
+CONFIG_RTC_DRV_PCF8563=y
+# CONFIG_RTC_DRV_RS5C372 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
+# CONFIG_RTC_DRV_TEST is not set
+# CONFIG_RTC_DRV_V3020 is not set
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=m
+CONFIG_EXT2_FS_XATTR=y
+CONFIG_EXT2_FS_POSIX_ACL=y
+CONFIG_EXT2_FS_SECURITY=y
+# CONFIG_EXT2_FS_XIP is not set
+CONFIG_EXT3_FS=m
+CONFIG_EXT3_FS_XATTR=y
+CONFIG_EXT3_FS_POSIX_ACL=y
+CONFIG_EXT3_FS_SECURITY=y
+# CONFIG_EXT4DEV_FS is not set
+CONFIG_JBD=m
+# CONFIG_JBD_DEBUG is not set
+CONFIG_FS_MBCACHE=m
+CONFIG_REISERFS_FS=m
+# CONFIG_REISERFS_CHECK is not set
+# CONFIG_REISERFS_PROC_INFO is not set
+CONFIG_REISERFS_FS_XATTR=y
+CONFIG_REISERFS_FS_POSIX_ACL=y
+CONFIG_REISERFS_FS_SECURITY=y
+# CONFIG_JFS_FS is not set
+CONFIG_FS_POSIX_ACL=y
+# CONFIG_XFS_FS is not set
+# CONFIG_GFS2_FS is not set
+# CONFIG_OCFS2_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+# CONFIG_QUOTA is not set
+CONFIG_DNOTIFY=y
+# CONFIG_AUTOFS_FS is not set
+CONFIG_AUTOFS4_FS=m
+CONFIG_FUSE_FS=m
+
+#
+# CD-ROM/DVD Filesystems
+#
+CONFIG_ISO9660_FS=m
+CONFIG_JOLIET=y
+CONFIG_ZISOFS=y
+CONFIG_UDF_FS=m
+CONFIG_UDF_NLS=y
+
+#
+# DOS/FAT/NT Filesystems
+#
+CONFIG_FAT_FS=m
+CONFIG_MSDOS_FS=m
+CONFIG_VFAT_FS=m
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="utf8"
+CONFIG_NTFS_FS=m
+# CONFIG_NTFS_DEBUG is not set
+CONFIG_NTFS_RW=y
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_TMPFS_POSIX_ACL is not set
+# CONFIG_HUGETLB_PAGE is not set
+CONFIG_RAMFS=y
+# CONFIG_CONFIGFS_FS is not set
+
+#
+# Miscellaneous filesystems
+#
+# CONFIG_ADFS_FS is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_HFS_FS is not set
+# CONFIG_HFSPLUS_FS is not set
+# CONFIG_BEFS_FS is not set
+# CONFIG_BFS_FS is not set
+# CONFIG_EFS_FS is not set
+CONFIG_JFFS2_FS=y
+CONFIG_JFFS2_FS_DEBUG=0
+CONFIG_JFFS2_FS_WRITEBUFFER=y
+# CONFIG_JFFS2_SUMMARY is not set
+# CONFIG_JFFS2_FS_XATTR is not set
+# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
+CONFIG_JFFS2_ZLIB=y
+CONFIG_JFFS2_RTIME=y
+# CONFIG_JFFS2_RUBIN is not set
+# CONFIG_CRAMFS is not set
+CONFIG_SQUASHFS=m
+# CONFIG_SQUASHFS_EMBEDDED is not set
+CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
+# CONFIG_SQUASHFS_VMALLOC is not set
+# CONFIG_VXFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+
+#
+# Network File Systems
+#
+CONFIG_NFS_FS=m
+CONFIG_NFS_V3=y
+# CONFIG_NFS_V3_ACL is not set
+# CONFIG_NFS_V4 is not set
+# CONFIG_NFS_DIRECTIO is not set
+CONFIG_NFSD=m
+CONFIG_NFSD_V3=y
+# CONFIG_NFSD_V3_ACL is not set
+CONFIG_NFSD_V4=y
+CONFIG_NFSD_TCP=y
+CONFIG_LOCKD=m
+CONFIG_LOCKD_V4=y
+CONFIG_EXPORTFS=m
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=m
+CONFIG_SUNRPC_GSS=m
+CONFIG_RPCSEC_GSS_KRB5=m
+# CONFIG_RPCSEC_GSS_SPKM3 is not set
+CONFIG_SMB_FS=m
+# CONFIG_SMB_NLS_DEFAULT is not set
+CONFIG_CIFS=m
+# CONFIG_CIFS_STATS is not set
+# CONFIG_CIFS_WEAK_PW_HASH is not set
+CONFIG_CIFS_XATTR=y
+CONFIG_CIFS_POSIX=y
+# CONFIG_CIFS_DEBUG2 is not set
+# CONFIG_CIFS_EXPERIMENTAL is not set
+# CONFIG_NCP_FS is not set
+# CONFIG_CODA_FS is not set
+# CONFIG_AFS_FS is not set
+# CONFIG_9P_FS is not set
+
+#
+# Partition Types
+#
+CONFIG_PARTITION_ADVANCED=y
+# CONFIG_ACORN_PARTITION is not set
+# CONFIG_OSF_PARTITION is not set
+# CONFIG_AMIGA_PARTITION is not set
+# CONFIG_ATARI_PARTITION is not set
+# CONFIG_MAC_PARTITION is not set
+CONFIG_MSDOS_PARTITION=y
+# CONFIG_BSD_DISKLABEL is not set
+# CONFIG_MINIX_SUBPARTITION is not set
+# CONFIG_SOLARIS_X86_PARTITION is not set
+# CONFIG_UNIXWARE_DISKLABEL is not set
+# CONFIG_LDM_PARTITION is not set
+# CONFIG_SGI_PARTITION is not set
+# CONFIG_ULTRIX_PARTITION is not set
+# CONFIG_SUN_PARTITION is not set
+# CONFIG_KARMA_PARTITION is not set
+# CONFIG_EFI_PARTITION is not set
+
+#
+# Native Language Support
+#
+CONFIG_NLS=m
+CONFIG_NLS_DEFAULT="utf8"
+CONFIG_NLS_CODEPAGE_437=m
+CONFIG_NLS_CODEPAGE_737=m
+CONFIG_NLS_CODEPAGE_775=m
+CONFIG_NLS_CODEPAGE_850=m
+CONFIG_NLS_CODEPAGE_852=m
+CONFIG_NLS_CODEPAGE_855=m
+CONFIG_NLS_CODEPAGE_857=m
+CONFIG_NLS_CODEPAGE_860=m
+CONFIG_NLS_CODEPAGE_861=m
+CONFIG_NLS_CODEPAGE_862=m
+CONFIG_NLS_CODEPAGE_863=m
+CONFIG_NLS_CODEPAGE_864=m
+CONFIG_NLS_CODEPAGE_865=m
+CONFIG_NLS_CODEPAGE_866=m
+CONFIG_NLS_CODEPAGE_869=m
+CONFIG_NLS_CODEPAGE_936=m
+CONFIG_NLS_CODEPAGE_950=m
+CONFIG_NLS_CODEPAGE_932=m
+CONFIG_NLS_CODEPAGE_949=m
+CONFIG_NLS_CODEPAGE_874=m
+CONFIG_NLS_ISO8859_8=m
+CONFIG_NLS_CODEPAGE_1250=m
+CONFIG_NLS_CODEPAGE_1251=m
+CONFIG_NLS_ASCII=m
+CONFIG_NLS_ISO8859_1=m
+CONFIG_NLS_ISO8859_2=m
+CONFIG_NLS_ISO8859_3=m
+CONFIG_NLS_ISO8859_4=m
+CONFIG_NLS_ISO8859_5=m
+CONFIG_NLS_ISO8859_6=m
+CONFIG_NLS_ISO8859_7=m
+CONFIG_NLS_ISO8859_9=m
+CONFIG_NLS_ISO8859_13=m
+CONFIG_NLS_ISO8859_14=m
+CONFIG_NLS_ISO8859_15=m
+CONFIG_NLS_KOI8_R=m
+CONFIG_NLS_KOI8_U=m
+CONFIG_NLS_UTF8=m
+
+#
+# Distributed Lock Manager
+#
+# CONFIG_DLM is not set
+
+#
+# Profiling support
+#
+# CONFIG_PROFILING is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+CONFIG_ENABLE_MUST_CHECK=y
+# CONFIG_MAGIC_SYSRQ is not set
+# CONFIG_UNUSED_SYMBOLS is not set
+# CONFIG_DEBUG_FS is not set
+# CONFIG_HEADERS_CHECK is not set
+# CONFIG_DEBUG_KERNEL is not set
+CONFIG_LOG_BUF_SHIFT=14
+# CONFIG_DEBUG_BUGVERBOSE is not set
+CONFIG_FRAME_POINTER=y
+# CONFIG_DEBUG_USER is not set
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+
+#
+# Cryptographic options
+#
+CONFIG_CRYPTO=y
+CONFIG_CRYPTO_ALGAPI=y
+CONFIG_CRYPTO_BLKCIPHER=m
+CONFIG_CRYPTO_HASH=m
+CONFIG_CRYPTO_MANAGER=y
+CONFIG_CRYPTO_HMAC=m
+CONFIG_CRYPTO_XCBC=m
+CONFIG_CRYPTO_NULL=m
+CONFIG_CRYPTO_MD4=m
+CONFIG_CRYPTO_MD5=m
+CONFIG_CRYPTO_SHA1=m
+CONFIG_CRYPTO_SHA256=m
+CONFIG_CRYPTO_SHA512=m
+CONFIG_CRYPTO_WP512=m
+CONFIG_CRYPTO_TGR192=m
+CONFIG_CRYPTO_GF128MUL=m
+CONFIG_CRYPTO_ECB=m
+CONFIG_CRYPTO_CBC=m
+CONFIG_CRYPTO_PCBC=m
+CONFIG_CRYPTO_LRW=m
+CONFIG_CRYPTO_DES=m
+CONFIG_CRYPTO_FCRYPT=m
+CONFIG_CRYPTO_BLOWFISH=m
+CONFIG_CRYPTO_TWOFISH=m
+CONFIG_CRYPTO_TWOFISH_COMMON=m
+CONFIG_CRYPTO_SERPENT=m
+CONFIG_CRYPTO_AES=m
+CONFIG_CRYPTO_CAST5=m
+CONFIG_CRYPTO_CAST6=m
+CONFIG_CRYPTO_TEA=m
+CONFIG_CRYPTO_ARC4=m
+CONFIG_CRYPTO_KHAZAD=m
+CONFIG_CRYPTO_ANUBIS=m
+CONFIG_CRYPTO_DEFLATE=m
+CONFIG_CRYPTO_MICHAEL_MIC=m
+CONFIG_CRYPTO_CRC32C=m
+CONFIG_CRYPTO_CAMELLIA=m
+CONFIG_CRYPTO_TEST=m
+
+#
+# Hardware crypto devices
+#
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+CONFIG_CRC_CCITT=m
+CONFIG_CRC16=y
+CONFIG_CRC32=y
+CONFIG_LIBCRC32C=m
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_TEXTSEARCH=y
+CONFIG_TEXTSEARCH_KMP=m
+CONFIG_TEXTSEARCH_BM=m
+CONFIG_TEXTSEARCH_FSM=m
+CONFIG_PLIST=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
diff --git a/packages/linux/linux-ixp4xx_2.6.18.bb b/packages/linux/linux-ixp4xx_2.6.18.bb
new file mode 100644
index 0000000000..1fb86f15eb
--- /dev/null
+++ b/packages/linux/linux-ixp4xx_2.6.18.bb
@@ -0,0 +1,22 @@
+require linux.inc
+require linux-ixp4xx.inc
+
+KERNEL_RELEASE = "2.6.18"
+
+PV = "${KERNEL_RELEASE}+svnr${SRCREV}"
+PR = "r0"
+
+SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-${KERNEL_RELEASE}.tar.bz2 \
+ svn://svn.nslu2-linux.org/svnroot/kernel/trunk/patches;module=${KERNEL_RELEASE};proto=http \
+ file://defconfig-${KERNEL_RELEASE}"
+
+S = "${WORKDIR}/linux-${KERNEL_RELEASE}"
+
+do_prepatch() {
+ mv ${WORKDIR}/${KERNEL_RELEASE} ${S}/patches && cd ${S} && quilt push -av
+ mv patches patches.ixp4xx
+ mv .pc .pc.old
+ mv ${WORKDIR}/defconfig-${KERNEL_RELEASE} ${WORKDIR}/defconfig
+}
+
+addtask prepatch after do_unpack before do_patch
diff --git a/packages/linux/linux-ixp4xx_2.6.19.bb b/packages/linux/linux-ixp4xx_2.6.19.bb
new file mode 100644
index 0000000000..550313ca94
--- /dev/null
+++ b/packages/linux/linux-ixp4xx_2.6.19.bb
@@ -0,0 +1,22 @@
+require linux.inc
+require linux-ixp4xx.inc
+
+KERNEL_RELEASE = "2.6.19"
+
+PV = "${KERNEL_RELEASE}+svnr${SRCREV}"
+PR = "r0"
+
+SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-${KERNEL_RELEASE}.tar.bz2 \
+ svn://svn.nslu2-linux.org/svnroot/kernel/trunk/patches;module=${KERNEL_RELEASE};proto=http \
+ file://defconfig-${KERNEL_RELEASE}"
+
+S = "${WORKDIR}/linux-${KERNEL_RELEASE}"
+
+do_prepatch() {
+ mv ${WORKDIR}/${KERNEL_RELEASE} ${S}/patches && cd ${S} && quilt push -av
+ mv patches patches.ixp4xx
+ mv .pc .pc.old
+ mv ${WORKDIR}/defconfig-${KERNEL_RELEASE} ${WORKDIR}/defconfig
+}
+
+addtask prepatch after do_unpack before do_patch
diff --git a/packages/linux/linux-ixp4xx_2.6.20.bb b/packages/linux/linux-ixp4xx_2.6.20.bb
new file mode 100644
index 0000000000..f70992ea86
--- /dev/null
+++ b/packages/linux/linux-ixp4xx_2.6.20.bb
@@ -0,0 +1,22 @@
+require linux.inc
+require linux-ixp4xx.inc
+
+KERNEL_RELEASE = "2.6.20"
+
+PV = "${KERNEL_RELEASE}+svnr${SRCREV}"
+PR = "r0"
+
+SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-${KERNEL_RELEASE}.tar.bz2 \
+ svn://svn.nslu2-linux.org/svnroot/kernel/trunk/patches;module=${KERNEL_RELEASE};proto=http \
+ file://defconfig-${KERNEL_RELEASE}"
+
+S = "${WORKDIR}/linux-${KERNEL_RELEASE}"
+
+do_prepatch() {
+ mv ${WORKDIR}/${KERNEL_RELEASE} ${S}/patches && cd ${S} && quilt push -av
+ mv patches patches.ixp4xx
+ mv .pc .pc.old
+ mv ${WORKDIR}/defconfig-${KERNEL_RELEASE} ${WORKDIR}/defconfig
+}
+
+addtask prepatch after do_unpack before do_patch
diff --git a/packages/linux/linux-ixp4xx_2.6.21.6.bb b/packages/linux/linux-ixp4xx_2.6.21.6.bb
new file mode 100644
index 0000000000..288b9a7014
--- /dev/null
+++ b/packages/linux/linux-ixp4xx_2.6.21.6.bb
@@ -0,0 +1,24 @@
+require linux.inc
+require linux-ixp4xx.inc
+
+VANILLA_VERSION = "2.6.21"
+KERNEL_RELEASE = "2.6.21.6"
+
+PV = "${KERNEL_RELEASE}+svnr${SRCREV}"
+PR = "r3"
+
+SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-${VANILLA_VERSION}.tar.bz2 \
+ ${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/patch-${KERNEL_RELEASE}.bz2;patch=1 \
+ svn://svn.nslu2-linux.org/svnroot/kernel/trunk/patches;module=${VANILLA_VERSION};proto=http \
+ file://defconfig-${KERNEL_RELEASE}"
+
+S = "${WORKDIR}/linux-${VANILLA_VERSION}"
+
+do_prepatch() {
+ mv ${WORKDIR}/${VANILLA_VERSION} ${S}/patches && cd ${S} && quilt push -av
+ mv patches patches.ixp4xx
+ mv .pc .pc.old
+ mv ${WORKDIR}/defconfig-${KERNEL_RELEASE} ${WORKDIR}/defconfig
+}
+
+addtask prepatch after do_unpack before do_patch
diff --git a/packages/linux/linux-ixp4xx_2.6.23.8.bb b/packages/linux/linux-ixp4xx_2.6.23.8.bb
new file mode 100644
index 0000000000..ab621f310a
--- /dev/null
+++ b/packages/linux/linux-ixp4xx_2.6.23.8.bb
@@ -0,0 +1,31 @@
+# The new ethernet driver included in the 2.6.23 version of the nslu2-linux.org kernel patches
+# has problems with providing the correct MAC address on the initial DHCP request.
+DEFAULT_PREFERENCE = "-1"
+
+require linux.inc
+require linux-ixp4xx.inc
+
+VANILLA_VERSION = "2.6.23"
+KERNEL_RELEASE = "2.6.23.8"
+
+# If you use a rc, you will need to use this:
+#PV = "${VANILLA_VERSION}+${KERNEL_RELEASE}+svnr${SRCREV}"
+
+PV = "${KERNEL_RELEASE}+svnr${SRCREV}"
+PR = "r1"
+
+SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-${VANILLA_VERSION}.tar.bz2 \
+ ${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/patch-${KERNEL_RELEASE}.bz2;patch=1 \
+ svn://svn.nslu2-linux.org/svnroot/kernel/trunk/patches;module=${VANILLA_VERSION};proto=http \
+ file://defconfig-${KERNEL_RELEASE}"
+
+S = "${WORKDIR}/linux-${VANILLA_VERSION}"
+
+do_prepatch() {
+ mv ${WORKDIR}/${VANILLA_VERSION} ${S}/patches && cd ${S} && quilt push -av
+ mv patches patches.ixp4xx
+ mv .pc .pc.old
+ mv ${WORKDIR}/defconfig-${KERNEL_RELEASE} ${WORKDIR}/defconfig
+}
+
+addtask prepatch after do_unpack before do_patch
diff --git a/packages/linux/linux-omap1-2.6.23-omap1/.mtn2git_empty b/packages/linux/linux-omap1-2.6.23-omap1/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-omap1-2.6.23-omap1/.mtn2git_empty
diff --git a/packages/linux/linux-omap1-2.6.23-omap1/binutils-buildid-arm.patch b/packages/linux/linux-omap1-2.6.23-omap1/binutils-buildid-arm.patch
new file mode 100644
index 0000000000..edd224f4dd
--- /dev/null
+++ b/packages/linux/linux-omap1-2.6.23-omap1/binutils-buildid-arm.patch
@@ -0,0 +1,12 @@
+diff --git a/arch/arm/kernel/vmlinux.lds.S b/arch/arm/kernel/vmlinux.lds.S
+index 5ff5406..538fcb5 100644
+--- a/arch/arm/kernel/vmlinux.lds.S
++++ b/arch/arm/kernel/vmlinux.lds.S
+@@ -94,6 +94,7 @@ SECTIONS
+ TEXT_TEXT
+ SCHED_TEXT
+ LOCK_TEXT
++ *(.note.*)
+ #ifdef CONFIG_MMU
+ *(.fixup)
+ #endif
diff --git a/packages/linux/linux-omap1-2.6.23-omap1/defconfig b/packages/linux/linux-omap1-2.6.23-omap1/defconfig
new file mode 100644
index 0000000000..88b663c3f5
--- /dev/null
+++ b/packages/linux/linux-omap1-2.6.23-omap1/defconfig
@@ -0,0 +1,1098 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.23-omap1
+# Mon Dec 3 16:40:55 2007
+#
+CONFIG_ARM=y
+CONFIG_SYS_SUPPORTS_APM_EMULATION=y
+CONFIG_GENERIC_GPIO=y
+CONFIG_GENERIC_TIME=y
+CONFIG_GENERIC_CLOCKEVENTS=y
+CONFIG_MMU=y
+# CONFIG_NO_IOPORT is not set
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_STACKTRACE_SUPPORT=y
+CONFIG_LOCKDEP_SUPPORT=y
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+CONFIG_HARDIRQS_SW_RESEND=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+# CONFIG_ARCH_HAS_ILOG2_U32 is not set
+# CONFIG_ARCH_HAS_ILOG2_U64 is not set
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_ZONE_DMA=y
+CONFIG_VECTORS_BASE=0xffff0000
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+
+#
+# General setup
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+CONFIG_LOCALVERSION=""
+CONFIG_LOCALVERSION_AUTO=y
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=y
+CONFIG_SYSVIPC_SYSCTL=y
+# CONFIG_POSIX_MQUEUE is not set
+# CONFIG_BSD_PROCESS_ACCT is not set
+# CONFIG_TASKSTATS is not set
+# CONFIG_USER_NS is not set
+# CONFIG_AUDIT is not set
+# CONFIG_IKCONFIG is not set
+CONFIG_LOG_BUF_SHIFT=14
+CONFIG_SYSFS_DEPRECATED=y
+# CONFIG_RELAY is not set
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_INITRAMFS_SOURCE=""
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_SYSCTL=y
+# CONFIG_EMBEDDED is not set
+CONFIG_UID16=y
+CONFIG_SYSCTL_SYSCALL=y
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_EXTRA_PASS is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_ANON_INODES=y
+CONFIG_EPOLL=y
+CONFIG_SIGNALFD=y
+CONFIG_EVENTFD=y
+CONFIG_SHMEM=y
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_SLUB_DEBUG=y
+# CONFIG_SLAB is not set
+CONFIG_SLUB=y
+# CONFIG_SLOB is not set
+CONFIG_RT_MUTEXES=y
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=0
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+# CONFIG_MODULE_FORCE_UNLOAD is not set
+# CONFIG_MODVERSIONS is not set
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_KMOD=y
+CONFIG_BLOCK=y
+# CONFIG_LBD is not set
+# CONFIG_BLK_DEV_IO_TRACE is not set
+# CONFIG_LSF is not set
+# CONFIG_BLK_DEV_BSG is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+CONFIG_IOSCHED_AS=y
+CONFIG_IOSCHED_DEADLINE=y
+CONFIG_IOSCHED_CFQ=y
+# CONFIG_DEFAULT_AS is not set
+# CONFIG_DEFAULT_DEADLINE is not set
+CONFIG_DEFAULT_CFQ=y
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="cfq"
+
+#
+# System Type
+#
+# CONFIG_ARCH_AAEC2000 is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_VERSATILE is not set
+# CONFIG_ARCH_AT91 is not set
+# CONFIG_ARCH_CLPS7500 is not set
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_CO285 is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_EP93XX is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_NETX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_IOP13XX is not set
+# CONFIG_ARCH_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IXP23XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_KS8695 is not set
+# CONFIG_ARCH_NS9XXX is not set
+# CONFIG_ARCH_MXC is not set
+# CONFIG_ARCH_PNX4008 is not set
+# CONFIG_ARCH_PXA is not set
+# CONFIG_ARCH_RPC is not set
+# CONFIG_ARCH_SA1100 is not set
+# CONFIG_ARCH_S3C2410 is not set
+# CONFIG_ARCH_SHARK is not set
+# CONFIG_ARCH_LH7A40X is not set
+# CONFIG_ARCH_DAVINCI is not set
+CONFIG_ARCH_OMAP=y
+
+#
+# TI OMAP Implementations
+#
+CONFIG_ARCH_OMAP_OTG=y
+CONFIG_ARCH_OMAP1=y
+# CONFIG_ARCH_OMAP2 is not set
+# CONFIG_ARCH_OMAP3 is not set
+
+#
+# OMAP Feature Selections
+#
+CONFIG_OMAP_RESET_CLOCKS=y
+# CONFIG_OMAP_BOOT_TAG is not set
+# CONFIG_OMAP_GPIO_SWITCH is not set
+CONFIG_OMAP_MUX=y
+# CONFIG_OMAP_MUX_DEBUG is not set
+CONFIG_OMAP_MUX_WARNINGS=y
+# CONFIG_OMAP_STI is not set
+CONFIG_OMAP_MCBSP=y
+# CONFIG_OMAP_MMU_FWK is not set
+# CONFIG_OMAP_MBOX_FWK is not set
+# CONFIG_OMAP_MPU_TIMER is not set
+CONFIG_OMAP_32K_TIMER=y
+CONFIG_OMAP_32K_TIMER_HZ=128
+# CONFIG_OMAP_DM_TIMER is not set
+CONFIG_OMAP_LL_DEBUG_UART1=y
+# CONFIG_OMAP_LL_DEBUG_UART2 is not set
+# CONFIG_OMAP_LL_DEBUG_UART3 is not set
+CONFIG_OMAP_SERIAL_WAKE=y
+# CONFIG_OMAP_DSP is not set
+
+#
+# OMAP Core Type
+#
+# CONFIG_ARCH_OMAP730 is not set
+# CONFIG_ARCH_OMAP15XX is not set
+CONFIG_ARCH_OMAP16XX=y
+
+#
+# OMAP Board Type
+#
+# CONFIG_MACH_OMAP_INNOVATOR is not set
+# CONFIG_MACH_OMAP_H2 is not set
+# CONFIG_MACH_OMAP_H3 is not set
+CONFIG_MACH_OMAP_OSK=y
+CONFIG_OMAP_OSK_MISTRAL=y
+# CONFIG_MACH_NOKIA770 is not set
+# CONFIG_MACH_OMAP_GENERIC is not set
+
+#
+# OMAP CPU Speed
+#
+# CONFIG_OMAP_CLOCKS_SET_BY_BOOTLOADER is not set
+# CONFIG_OMAP_ARM_216MHZ is not set
+CONFIG_OMAP_ARM_192MHZ=y
+# CONFIG_OMAP_ARM_168MHZ is not set
+# CONFIG_OMAP_ARM_120MHZ is not set
+# CONFIG_OMAP_ARM_60MHZ is not set
+# CONFIG_OMAP_ARM_30MHZ is not set
+
+#
+# Boot options
+#
+
+#
+# Power management
+#
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+CONFIG_CPU_ARM926T=y
+CONFIG_CPU_32v5=y
+CONFIG_CPU_ABRT_EV5TJ=y
+CONFIG_CPU_PABRT_NOIFAR=y
+CONFIG_CPU_CACHE_VIVT=y
+CONFIG_CPU_COPY_V4WB=y
+CONFIG_CPU_TLB_V4WBI=y
+CONFIG_CPU_CP15=y
+CONFIG_CPU_CP15_MMU=y
+
+#
+# Processor Features
+#
+# CONFIG_ARM_THUMB is not set
+# CONFIG_CPU_ICACHE_DISABLE is not set
+# CONFIG_CPU_DCACHE_DISABLE is not set
+# CONFIG_CPU_DCACHE_WRITETHROUGH is not set
+# CONFIG_CPU_CACHE_ROUND_ROBIN is not set
+# CONFIG_OUTER_CACHE is not set
+
+#
+# Bus support
+#
+# CONFIG_PCI_SYSCALL is not set
+# CONFIG_ARCH_SUPPORTS_MSI is not set
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+CONFIG_PCCARD=y
+# CONFIG_PCMCIA_DEBUG is not set
+CONFIG_PCMCIA=y
+CONFIG_PCMCIA_LOAD_CIS=y
+CONFIG_PCMCIA_IOCTL=y
+
+#
+# PC-card bridges
+#
+CONFIG_OMAP_CF=y
+
+#
+# Kernel Features
+#
+# CONFIG_TICK_ONESHOT is not set
+# CONFIG_NO_HZ is not set
+# CONFIG_HIGH_RES_TIMERS is not set
+# CONFIG_PREEMPT is not set
+CONFIG_HZ=128
+CONFIG_AEABI=y
+CONFIG_OABI_COMPAT=y
+# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
+CONFIG_SELECT_MEMORY_MODEL=y
+CONFIG_FLATMEM_MANUAL=y
+# CONFIG_DISCONTIGMEM_MANUAL is not set
+# CONFIG_SPARSEMEM_MANUAL is not set
+CONFIG_FLATMEM=y
+CONFIG_FLAT_NODE_MEM_MAP=y
+# CONFIG_SPARSEMEM_STATIC is not set
+CONFIG_SPLIT_PTLOCK_CPUS=4096
+# CONFIG_RESOURCES_64BIT is not set
+CONFIG_ZONE_DMA_FLAG=1
+CONFIG_BOUNCE=y
+CONFIG_VIRT_TO_BUS=y
+# CONFIG_LEDS is not set
+CONFIG_ALIGNMENT_TRAP=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE="mem=32M console=ttyS0,115200 initrd=0x10400000,8M root=/dev/ram0 rw"
+# CONFIG_XIP_KERNEL is not set
+# CONFIG_KEXEC is not set
+
+#
+# CPU Frequency scaling
+#
+# CONFIG_CPU_FREQ is not set
+
+#
+# Floating point emulation
+#
+
+#
+# At least one emulation must be selected
+#
+CONFIG_FPE_NWFPE=y
+# CONFIG_FPE_NWFPE_XP is not set
+# CONFIG_FPE_FASTFPE is not set
+# CONFIG_VFP is not set
+
+#
+# Userspace binary formats
+#
+CONFIG_BINFMT_ELF=y
+# CONFIG_BINFMT_AOUT is not set
+# CONFIG_BINFMT_MISC is not set
+
+#
+# Power management options
+#
+CONFIG_PM=y
+# CONFIG_PM_LEGACY is not set
+# CONFIG_PM_DEBUG is not set
+CONFIG_PM_SLEEP=y
+CONFIG_SUSPEND_UP_POSSIBLE=y
+CONFIG_SUSPEND=y
+# CONFIG_APM_EMULATION is not set
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+CONFIG_PACKET=m
+# CONFIG_PACKET_MMAP is not set
+CONFIG_UNIX=y
+CONFIG_XFRM=y
+# CONFIG_XFRM_USER is not set
+# CONFIG_XFRM_SUB_POLICY is not set
+# CONFIG_XFRM_MIGRATE is not set
+# CONFIG_NET_KEY is not set
+CONFIG_INET=y
+CONFIG_IP_MULTICAST=y
+# CONFIG_IP_ADVANCED_ROUTER is not set
+CONFIG_IP_FIB_HASH=y
+CONFIG_IP_PNP=y
+CONFIG_IP_PNP_DHCP=y
+CONFIG_IP_PNP_BOOTP=y
+# CONFIG_IP_PNP_RARP is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_IP_MROUTE is not set
+# CONFIG_ARPD is not set
+# CONFIG_SYN_COOKIES is not set
+# CONFIG_INET_AH is not set
+# CONFIG_INET_ESP is not set
+# CONFIG_INET_IPCOMP is not set
+# CONFIG_INET_XFRM_TUNNEL is not set
+# CONFIG_INET_TUNNEL is not set
+CONFIG_INET_XFRM_MODE_TRANSPORT=y
+CONFIG_INET_XFRM_MODE_TUNNEL=y
+CONFIG_INET_XFRM_MODE_BEET=y
+CONFIG_INET_DIAG=y
+CONFIG_INET_TCP_DIAG=y
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_CUBIC=y
+CONFIG_DEFAULT_TCP_CONG="cubic"
+# CONFIG_TCP_MD5SIG is not set
+# CONFIG_IPV6 is not set
+# CONFIG_INET6_XFRM_TUNNEL is not set
+# CONFIG_INET6_TUNNEL is not set
+# CONFIG_NETWORK_SECMARK is not set
+# CONFIG_NETFILTER is not set
+# CONFIG_IP_DCCP is not set
+# CONFIG_IP_SCTP is not set
+# CONFIG_TIPC is not set
+# CONFIG_ATM is not set
+# CONFIG_BRIDGE is not set
+# CONFIG_VLAN_8021Q is not set
+# CONFIG_DECNET is not set
+# CONFIG_LLC2 is not set
+# CONFIG_IPX is not set
+# CONFIG_ATALK is not set
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_ECONET is not set
+# CONFIG_WAN_ROUTER is not set
+
+#
+# QoS and/or fair queueing
+#
+# CONFIG_NET_SCHED is not set
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_HAMRADIO is not set
+# CONFIG_IRDA is not set
+# CONFIG_BT is not set
+# CONFIG_AF_RXRPC is not set
+
+#
+# Wireless
+#
+# CONFIG_CFG80211 is not set
+# CONFIG_WIRELESS_EXT is not set
+# CONFIG_MAC80211 is not set
+# CONFIG_IEEE80211 is not set
+# CONFIG_RFKILL is not set
+# CONFIG_NET_9P is not set
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=y
+# CONFIG_SYS_HYPERVISOR is not set
+# CONFIG_CONNECTOR is not set
+CONFIG_MTD=y
+# CONFIG_MTD_DEBUG is not set
+# CONFIG_MTD_CONCAT is not set
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+CONFIG_MTD_CMDLINE_PARTS=y
+# CONFIG_MTD_AFS_PARTS is not set
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=y
+CONFIG_MTD_BLKDEVS=y
+CONFIG_MTD_BLOCK=y
+# CONFIG_FTL is not set
+# CONFIG_NFTL is not set
+# CONFIG_INFTL is not set
+# CONFIG_RFD_FTL is not set
+# CONFIG_SSFDC is not set
+
+#
+# RAM/ROM/Flash chip drivers
+#
+CONFIG_MTD_CFI=y
+# CONFIG_MTD_JEDECPROBE is not set
+CONFIG_MTD_GEN_PROBE=y
+# CONFIG_MTD_CFI_ADV_OPTIONS is not set
+CONFIG_MTD_MAP_BANK_WIDTH_1=y
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+CONFIG_MTD_MAP_BANK_WIDTH_4=y
+# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
+CONFIG_MTD_CFI_I1=y
+CONFIG_MTD_CFI_I2=y
+# CONFIG_MTD_CFI_I4 is not set
+# CONFIG_MTD_CFI_I8 is not set
+CONFIG_MTD_CFI_INTELEXT=y
+# CONFIG_MTD_CFI_AMDSTD is not set
+# CONFIG_MTD_CFI_STAA is not set
+CONFIG_MTD_CFI_UTIL=y
+# CONFIG_MTD_RAM is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+# CONFIG_MTD_PHYSMAP is not set
+# CONFIG_MTD_ARM_INTEGRATOR is not set
+CONFIG_MTD_OMAP_NOR=y
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_SLRAM is not set
+# CONFIG_MTD_PHRAM is not set
+# CONFIG_MTD_MTDRAM is not set
+# CONFIG_MTD_BLOCK2MTD is not set
+
+#
+# Disk-On-Chip Device Drivers
+#
+# CONFIG_MTD_DOC2000 is not set
+# CONFIG_MTD_DOC2001 is not set
+# CONFIG_MTD_DOC2001PLUS is not set
+# CONFIG_MTD_NAND is not set
+# CONFIG_MTD_ONENAND is not set
+
+#
+# UBI - Unsorted block images
+#
+# CONFIG_MTD_UBI is not set
+# CONFIG_PARPORT is not set
+CONFIG_BLK_DEV=y
+# CONFIG_BLK_DEV_COW_COMMON is not set
+CONFIG_BLK_DEV_LOOP=y
+# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+# CONFIG_BLK_DEV_NBD is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM_SIZE=8192
+CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+CONFIG_IDE=m
+CONFIG_BLK_DEV_IDE=m
+
+#
+# Please see Documentation/ide.txt for help/info on IDE drives
+#
+# CONFIG_BLK_DEV_IDE_SATA is not set
+CONFIG_BLK_DEV_IDEDISK=m
+# CONFIG_IDEDISK_MULTI_MODE is not set
+CONFIG_BLK_DEV_IDECS=m
+# CONFIG_BLK_DEV_IDECD is not set
+# CONFIG_BLK_DEV_IDETAPE is not set
+# CONFIG_BLK_DEV_IDEFLOPPY is not set
+# CONFIG_IDE_TASK_IOCTL is not set
+CONFIG_IDE_PROC_FS=y
+
+#
+# IDE chipset support/bugfixes
+#
+# CONFIG_IDE_GENERIC is not set
+# CONFIG_IDEPCI_PCIBUS_ORDER is not set
+# CONFIG_IDE_ARM is not set
+# CONFIG_BLK_DEV_IDEDMA is not set
+# CONFIG_BLK_DEV_HD is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+# CONFIG_SCSI is not set
+# CONFIG_SCSI_DMA is not set
+# CONFIG_SCSI_NETLINK is not set
+# CONFIG_ATA is not set
+# CONFIG_MD is not set
+CONFIG_NETDEVICES=y
+# CONFIG_NETDEVICES_MULTIQUEUE is not set
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_MACVLAN is not set
+# CONFIG_EQUALIZER is not set
+# CONFIG_TUN is not set
+# CONFIG_PHYLIB is not set
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=y
+# CONFIG_AX88796 is not set
+CONFIG_SMC91X=y
+# CONFIG_DM9000 is not set
+CONFIG_NETDEV_1000=y
+CONFIG_NETDEV_10000=y
+
+#
+# Wireless LAN
+#
+# CONFIG_WLAN_PRE80211 is not set
+# CONFIG_WLAN_80211 is not set
+# CONFIG_NET_PCMCIA is not set
+# CONFIG_WAN is not set
+CONFIG_PPP=y
+CONFIG_PPP_MULTILINK=y
+# CONFIG_PPP_FILTER is not set
+# CONFIG_PPP_ASYNC is not set
+# CONFIG_PPP_SYNC_TTY is not set
+# CONFIG_PPP_DEFLATE is not set
+# CONFIG_PPP_BSDCOMP is not set
+# CONFIG_PPP_MPPE is not set
+# CONFIG_PPPOE is not set
+# CONFIG_PPPOL2TP is not set
+# CONFIG_SLIP is not set
+CONFIG_SLHC=y
+# CONFIG_SHAPER is not set
+# CONFIG_NETCONSOLE is not set
+# CONFIG_NETPOLL is not set
+# CONFIG_NET_POLL_CONTROLLER is not set
+# CONFIG_ISDN is not set
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS is not set
+# CONFIG_INPUT_POLLDEV is not set
+
+#
+# Userland interfaces
+#
+CONFIG_INPUT_MOUSEDEV=y
+# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_TSDEV is not set
+CONFIG_INPUT_EVDEV=y
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# Input Device Drivers
+#
+CONFIG_INPUT_KEYBOARD=y
+# CONFIG_KEYBOARD_ATKBD is not set
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_LKKBD is not set
+# CONFIG_KEYBOARD_XTKBD is not set
+# CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_KEYBOARD_STOWAWAY is not set
+CONFIG_KEYBOARD_OMAP=y
+# CONFIG_KEYBOARD_GPIO is not set
+# CONFIG_INPUT_MOUSE is not set
+# CONFIG_INPUT_JOYSTICK is not set
+# CONFIG_INPUT_TABLET is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+# CONFIG_TOUCHSCREEN_FUJITSU is not set
+# CONFIG_TOUCHSCREEN_GUNZE is not set
+# CONFIG_TOUCHSCREEN_ELO is not set
+# CONFIG_TOUCHSCREEN_MTOUCH is not set
+# CONFIG_TOUCHSCREEN_MK712 is not set
+# CONFIG_TOUCHSCREEN_PENMOUNT is not set
+# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
+# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
+# CONFIG_TOUCHSCREEN_UCB1400 is not set
+# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set
+# CONFIG_INPUT_MISC is not set
+
+#
+# Hardware I/O ports
+#
+# CONFIG_SERIO is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_VT_CONSOLE=y
+CONFIG_HW_CONSOLE=y
+# CONFIG_VT_HW_CONSOLE_BINDING is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+CONFIG_SERIAL_8250=y
+CONFIG_SERIAL_8250_CONSOLE=y
+# CONFIG_SERIAL_8250_CS is not set
+CONFIG_SERIAL_8250_NR_UARTS=4
+CONFIG_SERIAL_8250_RUNTIME_UARTS=4
+# CONFIG_SERIAL_8250_EXTENDED is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+CONFIG_LEGACY_PTYS=y
+CONFIG_LEGACY_PTY_COUNT=256
+# CONFIG_IPMI_HANDLER is not set
+# CONFIG_WATCHDOG is not set
+CONFIG_HW_RANDOM=m
+CONFIG_HW_RANDOM_OMAP=m
+# CONFIG_NVRAM is not set
+# CONFIG_R3964 is not set
+
+#
+# PCMCIA character devices
+#
+# CONFIG_SYNCLINK_CS is not set
+# CONFIG_CARDMAN_4000 is not set
+# CONFIG_CARDMAN_4040 is not set
+# CONFIG_RAW_DRIVER is not set
+# CONFIG_TCG_TPM is not set
+CONFIG_I2C=y
+CONFIG_I2C_BOARDINFO=y
+CONFIG_I2C_CHARDEV=y
+
+#
+# I2C Algorithms
+#
+# CONFIG_I2C_ALGOBIT is not set
+# CONFIG_I2C_ALGOPCF is not set
+# CONFIG_I2C_ALGOPCA is not set
+
+#
+# I2C Hardware Bus support
+#
+# CONFIG_I2C_GPIO is not set
+# CONFIG_I2C_OCORES is not set
+CONFIG_I2C_OMAP=y
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_SIMTEC is not set
+# CONFIG_I2C_TAOS_EVM is not set
+# CONFIG_I2C_STUB is not set
+
+#
+# Miscellaneous I2C Chip support
+#
+# CONFIG_SENSORS_DS1337 is not set
+# CONFIG_SENSORS_DS1374 is not set
+# CONFIG_DS1682 is not set
+# CONFIG_SENSORS_EEPROM is not set
+# CONFIG_SENSORS_PCF8574 is not set
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_ISP1301_OMAP is not set
+CONFIG_TPS65010=y
+# CONFIG_SENSORS_TLV320AIC23 is not set
+# CONFIG_GPIOEXPANDER_OMAP is not set
+# CONFIG_SENSORS_MAX6875 is not set
+# CONFIG_SENSORS_TSL2550 is not set
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CHIP is not set
+
+#
+# SPI support
+#
+# CONFIG_SPI is not set
+# CONFIG_SPI_MASTER is not set
+# CONFIG_W1 is not set
+CONFIG_HWMON=y
+# CONFIG_HWMON_VID is not set
+# CONFIG_SENSORS_ABITUGURU is not set
+# CONFIG_SENSORS_ABITUGURU3 is not set
+# CONFIG_SENSORS_AD7418 is not set
+# CONFIG_SENSORS_ADM1021 is not set
+# CONFIG_SENSORS_ADM1025 is not set
+# CONFIG_SENSORS_ADM1026 is not set
+# CONFIG_SENSORS_ADM1029 is not set
+# CONFIG_SENSORS_ADM1031 is not set
+# CONFIG_SENSORS_ADM9240 is not set
+# CONFIG_SENSORS_ASB100 is not set
+# CONFIG_SENSORS_ATXP1 is not set
+# CONFIG_SENSORS_DS1621 is not set
+# CONFIG_SENSORS_F71805F is not set
+# CONFIG_SENSORS_FSCHER is not set
+# CONFIG_SENSORS_FSCPOS is not set
+# CONFIG_SENSORS_GL518SM is not set
+# CONFIG_SENSORS_GL520SM is not set
+# CONFIG_SENSORS_IT87 is not set
+# CONFIG_SENSORS_LM63 is not set
+# CONFIG_SENSORS_LM75 is not set
+# CONFIG_SENSORS_LM77 is not set
+# CONFIG_SENSORS_LM78 is not set
+# CONFIG_SENSORS_LM80 is not set
+# CONFIG_SENSORS_LM83 is not set
+# CONFIG_SENSORS_LM85 is not set
+# CONFIG_SENSORS_LM87 is not set
+# CONFIG_SENSORS_LM90 is not set
+# CONFIG_SENSORS_LM92 is not set
+# CONFIG_SENSORS_LM93 is not set
+# CONFIG_SENSORS_MAX1619 is not set
+# CONFIG_SENSORS_MAX6650 is not set
+# CONFIG_SENSORS_PC87360 is not set
+# CONFIG_SENSORS_PC87427 is not set
+# CONFIG_SENSORS_DME1737 is not set
+# CONFIG_SENSORS_SMSC47M1 is not set
+# CONFIG_SENSORS_SMSC47M192 is not set
+# CONFIG_SENSORS_SMSC47B397 is not set
+# CONFIG_SENSORS_THMC50 is not set
+# CONFIG_SENSORS_VT1211 is not set
+# CONFIG_SENSORS_W83781D is not set
+# CONFIG_SENSORS_W83791D is not set
+# CONFIG_SENSORS_W83792D is not set
+# CONFIG_SENSORS_W83793 is not set
+# CONFIG_SENSORS_W83L785TS is not set
+# CONFIG_SENSORS_W83627HF is not set
+# CONFIG_SENSORS_W83627EHF is not set
+# CONFIG_HWMON_DEBUG_CHIP is not set
+CONFIG_MISC_DEVICES=y
+# CONFIG_EEPROM_93CX6 is not set
+
+#
+# Multifunction device drivers
+#
+# CONFIG_MFD_SM501 is not set
+# CONFIG_NEW_LEDS is not set
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+# CONFIG_DVB_CORE is not set
+CONFIG_DAB=y
+
+#
+# Graphics support
+#
+# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
+
+#
+# Display device support
+#
+# CONFIG_DISPLAY_SUPPORT is not set
+# CONFIG_VGASTATE is not set
+CONFIG_VIDEO_OUTPUT_CONTROL=m
+CONFIG_FB=y
+# CONFIG_FIRMWARE_EDID is not set
+# CONFIG_FB_DDC is not set
+# CONFIG_FB_CFB_FILLRECT is not set
+# CONFIG_FB_CFB_COPYAREA is not set
+# CONFIG_FB_CFB_IMAGEBLIT is not set
+# CONFIG_FB_SYS_FILLRECT is not set
+# CONFIG_FB_SYS_COPYAREA is not set
+# CONFIG_FB_SYS_IMAGEBLIT is not set
+# CONFIG_FB_SYS_FOPS is not set
+CONFIG_FB_DEFERRED_IO=y
+# CONFIG_FB_SVGALIB is not set
+# CONFIG_FB_MACMODES is not set
+# CONFIG_FB_BACKLIGHT is not set
+CONFIG_FB_MODE_HELPERS=y
+# CONFIG_FB_TILEBLITTING is not set
+
+#
+# Frame buffer hardware drivers
+#
+# CONFIG_FB_S1D13XXX is not set
+CONFIG_FB_OMAP=y
+# CONFIG_FB_OMAP_LCDC_EXTERNAL is not set
+# CONFIG_FB_OMAP_BOOTLOADER_INIT is not set
+CONFIG_FB_OMAP_CONSISTENT_DMA_SIZE=2
+# CONFIG_FB_OMAP_DMA_TUNE is not set
+# CONFIG_FB_VIRTUAL is not set
+
+#
+# Console display driver support
+#
+# CONFIG_VGA_CONSOLE is not set
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
+# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
+CONFIG_FONTS=y
+CONFIG_FONT_8x8=y
+# CONFIG_FONT_8x16 is not set
+# CONFIG_FONT_6x11 is not set
+# CONFIG_FONT_7x14 is not set
+# CONFIG_FONT_PEARL_8x8 is not set
+# CONFIG_FONT_ACORN_8x8 is not set
+# CONFIG_FONT_MINI_4x6 is not set
+# CONFIG_FONT_SUN8x16 is not set
+# CONFIG_FONT_SUN12x22 is not set
+# CONFIG_FONT_10x18 is not set
+CONFIG_LOGO=y
+# CONFIG_LOGO_LINUX_MONO is not set
+# CONFIG_LOGO_LINUX_VGA16 is not set
+CONFIG_LOGO_LINUX_CLUT224=y
+
+#
+# Sound
+#
+# CONFIG_SOUND is not set
+CONFIG_HID_SUPPORT=y
+CONFIG_HID=y
+CONFIG_HID_DEBUG=y
+CONFIG_USB_SUPPORT=y
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB_ARCH_HAS_OHCI=y
+# CONFIG_USB_ARCH_HAS_EHCI is not set
+# CONFIG_USB is not set
+
+#
+# Enable Host or Gadget support to see Inventra options
+#
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# USB Gadget Support
+#
+# CONFIG_USB_GADGET is not set
+# CONFIG_MMC is not set
+CONFIG_RTC_LIB=y
+# CONFIG_RTC_CLASS is not set
+
+#
+# DMA Engine support
+#
+# CONFIG_DMA_ENGINE is not set
+
+#
+# DMA Clients
+#
+
+#
+# DMA Devices
+#
+
+#
+# CBUS support
+#
+# CONFIG_CBUS is not set
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=y
+# CONFIG_EXT2_FS_XATTR is not set
+# CONFIG_EXT2_FS_XIP is not set
+# CONFIG_EXT3_FS is not set
+# CONFIG_EXT4DEV_FS is not set
+# CONFIG_REISERFS_FS is not set
+# CONFIG_JFS_FS is not set
+# CONFIG_FS_POSIX_ACL is not set
+# CONFIG_XFS_FS is not set
+# CONFIG_GFS2_FS is not set
+# CONFIG_OCFS2_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+# CONFIG_QUOTA is not set
+CONFIG_DNOTIFY=y
+CONFIG_AUTOFS_FS=y
+CONFIG_AUTOFS4_FS=y
+# CONFIG_FUSE_FS is not set
+
+#
+# CD-ROM/DVD Filesystems
+#
+# CONFIG_ISO9660_FS is not set
+# CONFIG_UDF_FS is not set
+
+#
+# DOS/FAT/NT Filesystems
+#
+CONFIG_FAT_FS=m
+CONFIG_MSDOS_FS=m
+CONFIG_VFAT_FS=m
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+# CONFIG_NTFS_FS is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_TMPFS_POSIX_ACL is not set
+# CONFIG_HUGETLB_PAGE is not set
+CONFIG_RAMFS=y
+# CONFIG_CONFIGFS_FS is not set
+
+#
+# Miscellaneous filesystems
+#
+# CONFIG_ADFS_FS is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_HFS_FS is not set
+# CONFIG_HFSPLUS_FS is not set
+# CONFIG_BEFS_FS is not set
+# CONFIG_BFS_FS is not set
+# CONFIG_EFS_FS is not set
+CONFIG_JFFS2_FS=y
+CONFIG_JFFS2_FS_DEBUG=0
+CONFIG_JFFS2_FS_WRITEBUFFER=y
+# CONFIG_JFFS2_SUMMARY is not set
+# CONFIG_JFFS2_FS_XATTR is not set
+# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
+CONFIG_JFFS2_ZLIB=y
+CONFIG_JFFS2_RTIME=y
+# CONFIG_JFFS2_RUBIN is not set
+# CONFIG_CRAMFS is not set
+# CONFIG_VXFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+
+#
+# Network File Systems
+#
+CONFIG_NFS_FS=y
+CONFIG_NFS_V3=y
+# CONFIG_NFS_V3_ACL is not set
+# CONFIG_NFS_V4 is not set
+# CONFIG_NFS_DIRECTIO is not set
+# CONFIG_NFSD is not set
+CONFIG_ROOT_NFS=y
+CONFIG_LOCKD=y
+CONFIG_LOCKD_V4=y
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=y
+# CONFIG_SUNRPC_BIND34 is not set
+# CONFIG_RPCSEC_GSS_KRB5 is not set
+# CONFIG_RPCSEC_GSS_SPKM3 is not set
+# CONFIG_SMB_FS is not set
+# CONFIG_CIFS is not set
+# CONFIG_NCP_FS is not set
+# CONFIG_CODA_FS is not set
+# CONFIG_AFS_FS is not set
+
+#
+# Partition Types
+#
+# CONFIG_PARTITION_ADVANCED is not set
+CONFIG_MSDOS_PARTITION=y
+
+#
+# Native Language Support
+#
+CONFIG_NLS=m
+CONFIG_NLS_DEFAULT="iso8859-1"
+CONFIG_NLS_CODEPAGE_437=m
+# CONFIG_NLS_CODEPAGE_737 is not set
+# CONFIG_NLS_CODEPAGE_775 is not set
+# CONFIG_NLS_CODEPAGE_850 is not set
+# CONFIG_NLS_CODEPAGE_852 is not set
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+# CONFIG_NLS_CODEPAGE_936 is not set
+# CONFIG_NLS_CODEPAGE_950 is not set
+# CONFIG_NLS_CODEPAGE_932 is not set
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_ISO8859_8 is not set
+# CONFIG_NLS_CODEPAGE_1250 is not set
+# CONFIG_NLS_CODEPAGE_1251 is not set
+# CONFIG_NLS_ASCII is not set
+CONFIG_NLS_ISO8859_1=m
+# CONFIG_NLS_ISO8859_2 is not set
+# CONFIG_NLS_ISO8859_3 is not set
+# CONFIG_NLS_ISO8859_4 is not set
+# CONFIG_NLS_ISO8859_5 is not set
+# CONFIG_NLS_ISO8859_6 is not set
+# CONFIG_NLS_ISO8859_7 is not set
+# CONFIG_NLS_ISO8859_9 is not set
+# CONFIG_NLS_ISO8859_13 is not set
+# CONFIG_NLS_ISO8859_14 is not set
+# CONFIG_NLS_ISO8859_15 is not set
+# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_KOI8_U is not set
+# CONFIG_NLS_UTF8 is not set
+
+#
+# Distributed Lock Manager
+#
+# CONFIG_DLM is not set
+
+#
+# Profiling support
+#
+# CONFIG_PROFILING is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+CONFIG_ENABLE_MUST_CHECK=y
+# CONFIG_MAGIC_SYSRQ is not set
+# CONFIG_UNUSED_SYMBOLS is not set
+# CONFIG_DEBUG_FS is not set
+# CONFIG_HEADERS_CHECK is not set
+# CONFIG_DEBUG_KERNEL is not set
+# CONFIG_SLUB_DEBUG_ON is not set
+CONFIG_DEBUG_BUGVERBOSE=y
+CONFIG_FRAME_POINTER=y
+# CONFIG_DEBUG_USER is not set
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+# CONFIG_CRYPTO is not set
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+# CONFIG_CRC_CCITT is not set
+# CONFIG_CRC16 is not set
+# CONFIG_CRC_ITU_T is not set
+CONFIG_CRC32=y
+# CONFIG_CRC7 is not set
+# CONFIG_LIBCRC32C is not set
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_PLIST=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
+CONFIG_HAS_DMA=y
diff --git a/packages/linux/linux-omap1_2.6.23-omap1.bb b/packages/linux/linux-omap1_2.6.23-omap1.bb
new file mode 100644
index 0000000000..9c6a52e3f9
--- /dev/null
+++ b/packages/linux/linux-omap1_2.6.23-omap1.bb
@@ -0,0 +1,10 @@
+require linux-omap.inc
+
+COMPATIBLE_MACHINE = "omap5912osk"
+
+SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-2.6.23.tar.bz2 \
+ http://www.muru.com/linux/omap/patches/patch-2.6.23-omap1.bz2;patch=1 \
+ file://binutils-buildid-arm.patch;patch=1 \
+ file://defconfig"
+
+S = "${WORKDIR}/linux-2.6.23"
diff --git a/packages/linux/linux-openmoko/defconfig-2.6.22.5 b/packages/linux/linux-openmoko/defconfig-2.6.22.5
index 7aa23df77c..e9e40fed38 100644
--- a/packages/linux/linux-openmoko/defconfig-2.6.22.5
+++ b/packages/linux/linux-openmoko/defconfig-2.6.22.5
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.22.5
-# Wed Oct 3 13:55:25 2007
+# Tue Nov 27 09:09:32 2007
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -166,6 +166,7 @@ CONFIG_CPU_S3C2410_DMA=y
CONFIG_S3C2410_PM=y
CONFIG_S3C2410_GPIO=y
CONFIG_S3C2410_CLOCK=y
+CONFIG_S3C2410_PWM=y
#
# S3C2410 Machines
@@ -252,7 +253,8 @@ CONFIG_ARM_THUMB=y
CONFIG_PREEMPT=y
CONFIG_NO_IDLE_HZ=y
CONFIG_HZ=200
-# CONFIG_AEABI is not set
+CONFIG_AEABI=y
+CONFIG_OABI_COMPAT=y
# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
CONFIG_SELECT_MEMORY_MODEL=y
CONFIG_FLATMEM_MANUAL=y
@@ -271,7 +273,7 @@ CONFIG_ALIGNMENT_TRAP=y
#
CONFIG_ZBOOT_ROM_TEXT=0x0
CONFIG_ZBOOT_ROM_BSS=0x0
-CONFIG_CMDLINE="ip=192.168.1.2:192.168.1.10:192.168.1.10:255.255.255.0:ezx:usb0:off"
+CONFIG_CMDLINE="unused -- bootloader passes ATAG list"
# CONFIG_XIP_KERNEL is not set
CONFIG_KEXEC=y
@@ -292,7 +294,6 @@ CONFIG_FPE_NWFPE=y
CONFIG_BINFMT_ELF=y
# CONFIG_BINFMT_AOUT is not set
# CONFIG_BINFMT_MISC is not set
-# CONFIG_ARTHUR is not set
#
# Power management options
@@ -704,7 +705,7 @@ CONFIG_MTD_NAND_S3C2410=y
CONFIG_MTD_NAND_S3C2410_BBT=y
# CONFIG_MTD_NAND_S3C2410_DEBUG is not set
CONFIG_MTD_NAND_S3C2410_HWECC=y
-CONFIG_MTD_NAND_S3C2410_CLKSTOP=y
+# CONFIG_MTD_NAND_S3C2410_CLKSTOP is not set
# CONFIG_MTD_NAND_DISKONCHIP is not set
# CONFIG_MTD_NAND_NANDSIM is not set
# CONFIG_MTD_NAND_PLATFORM is not set
@@ -927,7 +928,13 @@ CONFIG_TOUCHSCREEN_S3C2410=y
# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
# CONFIG_TOUCHSCREEN_UCB1400 is not set
# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set
-# CONFIG_INPUT_MISC is not set
+CONFIG_INPUT_MISC=y
+# CONFIG_INPUT_ATI_REMOTE is not set
+# CONFIG_INPUT_ATI_REMOTE2 is not set
+# CONFIG_INPUT_KEYSPAN_REMOTE is not set
+# CONFIG_INPUT_POWERMATE is not set
+# CONFIG_INPUT_YEALINK is not set
+CONFIG_INPUT_UINPUT=m
#
# Hardware I/O ports
@@ -1049,6 +1056,7 @@ CONFIG_SPI_S3C24XX_GPIO=y
# CONFIG_SPI_AT25 is not set
# CONFIG_SPI_SPIDEV is not set
CONFIG_SPI_SLAVE_JBT6K74=y
+# CONFIG_SPI_SLAVE_LIS302DL is not set
#
# Dallas's 1-wire bus
@@ -1121,6 +1129,7 @@ CONFIG_LEDS_CLASS=y
#
CONFIG_LEDS_S3C24XX=m
CONFIG_LEDS_GTA01=y
+# CONFIG_LEDS_GTA02 is not set
#
# LED Triggers
@@ -1207,15 +1216,15 @@ CONFIG_SOUND=y
#
# Advanced Linux Sound Architecture
#
-CONFIG_SND=y
-CONFIG_SND_TIMER=y
-CONFIG_SND_PCM=y
+CONFIG_SND=m
+CONFIG_SND_TIMER=m
+CONFIG_SND_PCM=m
CONFIG_SND_HWDEP=m
CONFIG_SND_RAWMIDI=m
# CONFIG_SND_SEQUENCER is not set
CONFIG_SND_OSSEMUL=y
-CONFIG_SND_MIXER_OSS=y
-CONFIG_SND_PCM_OSS=y
+CONFIG_SND_MIXER_OSS=m
+CONFIG_SND_PCM_OSS=m
CONFIG_SND_PCM_OSS_PLUGINS=y
# CONFIG_SND_DYNAMIC_MINORS is not set
CONFIG_SND_SUPPORT_OLD_API=y
@@ -1244,10 +1253,11 @@ CONFIG_SND_USB_AUDIO=m
#
# System on Chip audio support
#
-CONFIG_SND_SOC=y
+CONFIG_SND_SOC=m
CONFIG_SND_S3C24XX_SOC=m
CONFIG_SND_S3C24XX_SOC_I2S=m
CONFIG_SND_S3C24XX_SOC_NEO1973_WM8753=m
+CONFIG_SND_S3C24XX_SOC_NEO1973_GTA02_WM8753=m
#
# SoC Audio support for SuperH
@@ -1294,7 +1304,7 @@ CONFIG_USB=y
CONFIG_USB_DEVICEFS=y
CONFIG_USB_DEVICE_CLASS=y
# CONFIG_USB_DYNAMIC_MINORS is not set
-# CONFIG_USB_SUSPEND is not set
+CONFIG_USB_SUSPEND=y
# CONFIG_USB_OTG is not set
#
@@ -1717,7 +1727,7 @@ CONFIG_DEBUG_KERNEL=y
# CONFIG_DEBUG_SHIRQ is not set
CONFIG_DETECT_SOFTLOCKUP=y
# CONFIG_SCHEDSTATS is not set
-# CONFIG_TIMER_STATS is not set
+CONFIG_TIMER_STATS=y
# CONFIG_DEBUG_SLAB is not set
CONFIG_DEBUG_PREEMPT=y
# CONFIG_DEBUG_RT_MUTEXES is not set
diff --git a/packages/linux/linux-openmoko/glamo-report-vram-size-to-userspace.patch b/packages/linux/linux-openmoko/glamo-report-vram-size-to-userspace.patch
new file mode 100644
index 0000000000..563923e71c
--- /dev/null
+++ b/packages/linux/linux-openmoko/glamo-report-vram-size-to-userspace.patch
@@ -0,0 +1,67 @@
+From ff1564e5100eeccd53ee6b007813ea722f8cf8b6 Mon Sep 17 00:00:00 2001
+From: Chia-I Wu <olv@openmoko.com>
+Date: Mon, 1 Oct 2007 21:16:46 +0800
+Subject: [PATCH] glamo: report vram size to userspace
+
+Set fb_fix_screeninfo.smem_len to RESSIZE(fb_res). This is not the real
+vram size, as it is a hardcoded value in glamo-core.c for now.
+---
+ drivers/video/glamo/glamo-fb.c | 13 +++++--------
+ 1 files changed, 5 insertions(+), 8 deletions(-)
+
+diff --git a/drivers/video/glamo/glamo-fb.c b/drivers/video/glamo/glamo-fb.c
+index 451de75..160a5b1 100644
+--- a/drivers/video/glamo/glamo-fb.c
++++ b/drivers/video/glamo/glamo-fb.c
+@@ -54,8 +54,6 @@
+
+ #define RESSIZE(ressource) (((ressource)->end - (ressource)->start)+1)
+
+-#define GLAMO_FB_ALLOC (640*480*2)
+-
+ struct glamofb_handle {
+ struct fb_info *fb;
+ struct device *dev;
+@@ -224,7 +222,6 @@ static int glamofb_set_par(struct fb_info *info)
+ }
+
+ glamo->fb->fix.line_length = (var->width * var->bits_per_pixel) / 8;
+- glamo->fb->fix.smem_len = info->fix.line_length * var->yres_virtual;
+
+ return 0;
+ }
+@@ -453,7 +450,7 @@ static int __init glamofb_probe(struct platform_device *pdev)
+ }
+
+ glamofb->fb_res = request_mem_region(glamofb->fb_res->start,
+- GLAMO_FB_ALLOC, pdev->name);
++ RESSIZE(glamofb->fb_res), pdev->name);
+ if (!glamofb->fb_res) {
+ dev_err(&pdev->dev, "failed to request vram region\n");
+ goto out_release_reg;
+@@ -467,6 +464,7 @@ static int __init glamofb_probe(struct platform_device *pdev)
+ goto out_release_fb;
+ }
+ fbinfo->fix.smem_start = (unsigned long) glamofb->fb_res->start;
++ fbinfo->fix.smem_len = RESSIZE(glamofb->fb_res);
+
+ fbinfo->screen_base = ioremap(glamofb->fb_res->start,
+ RESSIZE(glamofb->fb_res));
+@@ -522,11 +520,10 @@ static int __init glamofb_probe(struct platform_device *pdev)
+ fbinfo->var.green.length = 6;
+ fbinfo->var.blue.length = 5;
+ fbinfo->var.transp.length = 0;
+- fbinfo->fix.smem_len = mach_info->xres.max *
+- mach_info->yres.max *
+- mach_info->bpp.max / 8;
+
+- memset(fbinfo->screen_base, 0, fbinfo->fix.smem_len);
++ memset(fbinfo->screen_base, 0, mach_info->xres.max *
++ mach_info->yres.max *
++ mach_info->bpp.max / 8);
+
+ glamo_engine_enable(mach_info->glamo, GLAMO_ENGINE_LCD);
+ glamo_engine_reset(mach_info->glamo, GLAMO_ENGINE_LCD);
+--
+1.5.3.1
+
diff --git a/packages/linux/linux-openmoko/gta-vibro-pwm-suspend.patch b/packages/linux/linux-openmoko/gta-vibro-pwm-suspend.patch
new file mode 100644
index 0000000000..a98f5c8ca5
--- /dev/null
+++ b/packages/linux/linux-openmoko/gta-vibro-pwm-suspend.patch
@@ -0,0 +1,27 @@
+Index: linux-2.6.22/drivers/leds/leds-gta01.c
+===================================================================
+--- linux-2.6.22.orig/drivers/leds/leds-gta01.c 2007-11-09 16:27:03.000000000 +0000
++++ linux-2.6.22/drivers/leds/leds-gta01.c 2007-11-09 16:27:13.000000000 +0000
+@@ -33,6 +33,8 @@
+ struct s3c2410_pwm pwm;
+ };
+
++static int gta01vib_init_hw(struct gta01_vib_priv *vp);
++
+ static inline struct gta01_vib_priv *pdev_to_vpriv(struct platform_device *dev)
+ {
+ return platform_get_drvdata(dev);
+@@ -80,7 +82,13 @@
+
+ static int gta01vib_resume(struct platform_device *dev)
+ {
++ struct gta01_vib_priv *vp = pdev_to_vpriv(dev);
++
+ led_classdev_resume(&gta01_vib_led);
++
++ if (vp->has_pwm)
++ gta01vib_init_hw(vp);
++
+ return 0;
+ }
+ #endif
diff --git a/packages/linux/linux-openmoko/gta02-sound.patch b/packages/linux/linux-openmoko/gta02-sound.patch
new file mode 100644
index 0000000000..66fc850350
--- /dev/null
+++ b/packages/linux/linux-openmoko/gta02-sound.patch
@@ -0,0 +1,754 @@
+Index: linux-2.6.22/sound/soc/s3c24xx/neo1973_gta02_wm8753.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.22/sound/soc/s3c24xx/neo1973_gta02_wm8753.c 2007-11-09 16:21:35.000000000 +0000
+@@ -0,0 +1,667 @@
++/*
++ * neo1973_gta02_wm8753.c -- SoC audio for Neo1973
++ *
++ * Copyright 2007 OpenMoko Inc
++ * Author: Graeme Gregory <graeme@openmoko.org>
++ * Copyright 2007 Wolfson Microelectronics PLC.
++ * Author: Graeme Gregory <linux@wolfsonmicro.com>
++ *
++ * 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.
++ *
++ * Revision history
++ * 06th Nov 2007 Changed from GTA01 to GTA02
++ * 20th Jan 2007 Initial version.
++ * 05th Feb 2007 Rename all to Neo1973
++ *
++ */
++
++#include <linux/module.h>
++#include <linux/moduleparam.h>
++#include <linux/timer.h>
++#include <linux/interrupt.h>
++#include <linux/platform_device.h>
++#include <linux/i2c.h>
++#include <sound/driver.h>
++#include <sound/core.h>
++#include <sound/pcm.h>
++#include <sound/soc.h>
++#include <sound/soc-dapm.h>
++
++#include <asm/mach-types.h>
++#include <asm/hardware/scoop.h>
++#include <asm/arch/regs-iis.h>
++#include <asm/arch/regs-clock.h>
++#include <asm/arch/regs-gpio.h>
++#include <asm/hardware.h>
++#include <asm/arch/audio.h>
++#include <asm/io.h>
++#include <asm/arch/spi-gpio.h>
++#include <asm/arch/regs-gpioj.h>
++#include <asm/arch/gta02.h>
++#include "../codecs/wm8753.h"
++#include "s3c24xx-pcm.h"
++#include "s3c24xx-i2s.h"
++
++/* define the scenarios */
++#define NEO_AUDIO_OFF 0
++#define NEO_GSM_CALL_AUDIO_HANDSET 1
++#define NEO_GSM_CALL_AUDIO_HEADSET 2
++#define NEO_GSM_CALL_AUDIO_BLUETOOTH 3
++#define NEO_STEREO_TO_SPEAKERS 4
++#define NEO_STEREO_TO_HEADPHONES 5
++#define NEO_CAPTURE_HANDSET 6
++#define NEO_CAPTURE_HEADSET 7
++#define NEO_CAPTURE_BLUETOOTH 8
++#define NEO_STEREO_TO_HANDSET_SPK 9
++
++static struct snd_soc_machine neo1973_gta02;
++
++static int neo1973_gta02_hifi_hw_params(struct snd_pcm_substream *substream,
++ struct snd_pcm_hw_params *params)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ struct snd_soc_codec_dai *codec_dai = rtd->dai->codec_dai;
++ struct snd_soc_cpu_dai *cpu_dai = rtd->dai->cpu_dai;
++ unsigned int pll_out = 0, bclk = 0;
++ int ret = 0;
++ unsigned long iis_clkrate;
++
++ iis_clkrate = s3c24xx_i2s_get_clockrate();
++
++ switch (params_rate(params)) {
++ case 8000:
++ case 16000:
++ pll_out = 12288000;
++ break;
++ case 48000:
++ bclk = WM8753_BCLK_DIV_4;
++ pll_out = 12288000;
++ break;
++ case 96000:
++ bclk = WM8753_BCLK_DIV_2;
++ pll_out = 12288000;
++ break;
++ case 11025:
++ bclk = WM8753_BCLK_DIV_16;
++ pll_out = 11289600;
++ break;
++ case 22050:
++ bclk = WM8753_BCLK_DIV_8;
++ pll_out = 11289600;
++ break;
++ case 44100:
++ bclk = WM8753_BCLK_DIV_4;
++ pll_out = 11289600;
++ break;
++ case 88200:
++ bclk = WM8753_BCLK_DIV_2;
++ pll_out = 11289600;
++ break;
++ }
++
++ /* set codec DAI configuration */
++ ret = codec_dai->dai_ops.set_fmt(codec_dai,
++ SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF |
++ SND_SOC_DAIFMT_CBM_CFM);
++ if (ret < 0)
++ return ret;
++
++ /* set cpu DAI configuration */
++ ret = cpu_dai->dai_ops.set_fmt(cpu_dai,
++ SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF |
++ SND_SOC_DAIFMT_CBM_CFM);
++ if (ret < 0)
++ return ret;
++
++ /* set the codec system clock for DAC and ADC */
++ ret = codec_dai->dai_ops.set_sysclk(codec_dai, WM8753_MCLK, pll_out,
++ SND_SOC_CLOCK_IN);
++ if (ret < 0)
++ return ret;
++
++ /* set MCLK division for sample rate */
++ ret = cpu_dai->dai_ops.set_clkdiv(cpu_dai, S3C24XX_DIV_MCLK,
++ S3C2410_IISMOD_32FS );
++ if (ret < 0)
++ return ret;
++
++ /* set codec BCLK division for sample rate */
++ ret = codec_dai->dai_ops.set_clkdiv(codec_dai,
++ WM8753_BCLKDIV, bclk);
++ if (ret < 0)
++ return ret;
++
++ /* set prescaler division for sample rate */
++ ret = cpu_dai->dai_ops.set_clkdiv(cpu_dai, S3C24XX_DIV_PRESCALER,
++ S3C24XX_PRESCALE(4,4));
++ if (ret < 0)
++ return ret;
++
++ /* codec PLL input is PCLK/4 */
++ ret = codec_dai->dai_ops.set_pll(codec_dai, WM8753_PLL1,
++ iis_clkrate / 4, pll_out);
++ if (ret < 0)
++ return ret;
++
++ return 0;
++}
++
++static int neo1973_gta02_hifi_hw_free(struct snd_pcm_substream *substream)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ struct snd_soc_codec_dai *codec_dai = rtd->dai->codec_dai;
++
++ /* disable the PLL */
++ return codec_dai->dai_ops.set_pll(codec_dai, WM8753_PLL1, 0, 0);
++}
++
++/*
++ * Neo1973 WM8753 HiFi DAI opserations.
++ */
++static struct snd_soc_ops neo1973_gta02_hifi_ops = {
++ .hw_params = neo1973_gta02_hifi_hw_params,
++ .hw_free = neo1973_gta02_hifi_hw_free,
++};
++
++static int neo1973_gta02_voice_hw_params(
++ struct snd_pcm_substream *substream,
++ struct snd_pcm_hw_params *params)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ struct snd_soc_codec_dai *codec_dai = rtd->dai->codec_dai;
++ unsigned int pcmdiv = 0;
++ int ret = 0;
++ unsigned long iis_clkrate;
++
++ iis_clkrate = s3c24xx_i2s_get_clockrate();
++
++ if (params_rate(params) != 8000)
++ return -EINVAL;
++ if (params_channels(params) != 1)
++ return -EINVAL;
++
++ pcmdiv = WM8753_PCM_DIV_6; /* 2.048 MHz */
++
++ /* todo: gg check mode (DSP_B) against CSR datasheet */
++ /* set codec DAI configuration */
++ ret = codec_dai->dai_ops.set_fmt(codec_dai, SND_SOC_DAIFMT_DSP_B |
++ SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_CBS_CFS);
++ if (ret < 0)
++ return ret;
++
++ /* set the codec system clock for DAC and ADC */
++ ret = codec_dai->dai_ops.set_sysclk(codec_dai, WM8753_PCMCLK,
++ 12288000, SND_SOC_CLOCK_IN);
++ if (ret < 0)
++ return ret;
++
++ /* set codec PCM division for sample rate */
++ ret = codec_dai->dai_ops.set_clkdiv(codec_dai, WM8753_PCMDIV,
++ pcmdiv);
++ if (ret < 0)
++ return ret;
++
++ /* configue and enable PLL for 12.288MHz output */
++ ret = codec_dai->dai_ops.set_pll(codec_dai, WM8753_PLL2,
++ iis_clkrate / 4, 12288000);
++ if (ret < 0)
++ return ret;
++
++ return 0;
++}
++
++static int neo1973_gta02_voice_hw_free(struct snd_pcm_substream *substream)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ struct snd_soc_codec_dai *codec_dai = rtd->dai->codec_dai;
++
++ /* disable the PLL */
++ return codec_dai->dai_ops.set_pll(codec_dai, WM8753_PLL2, 0, 0);
++}
++
++static struct snd_soc_ops neo1973_gta02_voice_ops = {
++ .hw_params = neo1973_gta02_voice_hw_params,
++ .hw_free = neo1973_gta02_voice_hw_free,
++};
++
++#define LM4853_AMP 1
++#define LM4853_SPK 2
++
++static u8 lm4853_state=0;
++
++static int lm4853_set_state(struct snd_kcontrol *kcontrol,
++ struct snd_ctl_elem_value *ucontrol)
++{
++ int val = ucontrol->value.integer.value[0];
++
++ if(val) {
++ lm4853_state |= LM4853_AMP;
++ s3c2410_gpio_setpin(GTA02_GPIO_AMP_SHUT,0);
++ } else {
++ lm4853_state &= ~LM4853_AMP;
++ s3c2410_gpio_setpin(GTA02_GPIO_AMP_SHUT,1);
++ }
++
++ return 0;
++}
++
++static int lm4853_get_state(struct snd_kcontrol *kcontrol,
++ struct snd_ctl_elem_value *ucontrol)
++{
++ ucontrol->value.integer.value[0] = lm4853_state & LM4853_AMP;
++
++ return 0;
++}
++
++static int lm4853_set_spk(struct snd_kcontrol *kcontrol,
++ struct snd_ctl_elem_value *ucontrol)
++{
++ int val = ucontrol->value.integer.value[0];
++
++ if(val) {
++ lm4853_state |= LM4853_SPK;
++ s3c2410_gpio_setpin(GTA02_GPIO_HP_IN,0);
++ } else {
++ lm4853_state &= ~LM4853_SPK;
++ s3c2410_gpio_setpin(GTA02_GPIO_HP_IN,1);
++ }
++
++ return 0;
++}
++
++static int lm4853_get_spk(struct snd_kcontrol *kcontrol,
++ struct snd_ctl_elem_value *ucontrol)
++{
++ ucontrol->value.integer.value[0] = (lm4853_state & LM4853_AMP) >> 1;
++
++ return 0;
++}
++
++static int neo1973_gta02_set_stereo_out(struct snd_kcontrol *kcontrol,
++ struct snd_ctl_elem_value *ucontrol)
++{
++ struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
++ int val = ucontrol->value.integer.value[0];
++
++ snd_soc_dapm_set_endpoint(codec, "Stereo Out", val);
++
++ snd_soc_dapm_sync_endpoints(codec);
++
++ return 0;
++}
++
++static int neo1973_gta02_get_stereo_out(struct snd_kcontrol *kcontrol,
++ struct snd_ctl_elem_value *ucontrol)
++{
++ struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
++
++ ucontrol->value.integer.value[0] =
++ snd_soc_dapm_get_endpoint(codec, "Stereo Out");
++
++ return 0;
++}
++
++
++static int neo1973_gta02_set_gsm_out(struct snd_kcontrol *kcontrol,
++ struct snd_ctl_elem_value *ucontrol)
++{
++ struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
++ int val = ucontrol->value.integer.value[0];
++
++ snd_soc_dapm_set_endpoint(codec, "GSM Line Out", val);
++
++ snd_soc_dapm_sync_endpoints(codec);
++
++ return 0;
++}
++
++static int neo1973_gta02_get_gsm_out(struct snd_kcontrol *kcontrol,
++ struct snd_ctl_elem_value *ucontrol)
++{
++ struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
++
++ ucontrol->value.integer.value[0] =
++ snd_soc_dapm_get_endpoint(codec, "GSM Line Out");
++
++ return 0;
++}
++
++static int neo1973_gta02_set_gsm_in(struct snd_kcontrol *kcontrol,
++ struct snd_ctl_elem_value *ucontrol)
++{
++ struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
++ int val = ucontrol->value.integer.value[0];
++
++ snd_soc_dapm_set_endpoint(codec, "GSM Line In", val);
++
++ snd_soc_dapm_sync_endpoints(codec);
++
++ return 0;
++}
++
++static int neo1973_gta02_get_gsm_in(struct snd_kcontrol *kcontrol,
++ struct snd_ctl_elem_value *ucontrol)
++{
++ struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
++
++ ucontrol->value.integer.value[0] =
++ snd_soc_dapm_get_endpoint(codec, "GSM Line In");
++
++ return 0;
++}
++
++static int neo1973_gta02_set_headset_mic(struct snd_kcontrol *kcontrol,
++ struct snd_ctl_elem_value *ucontrol)
++{
++ struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
++ int val = ucontrol->value.integer.value[0];
++
++ snd_soc_dapm_set_endpoint(codec, "Headset Mic", val);
++
++ snd_soc_dapm_sync_endpoints(codec);
++
++ return 0;
++}
++
++static int neo1973_gta02_get_headset_mic(struct snd_kcontrol *kcontrol,
++ struct snd_ctl_elem_value *ucontrol)
++{
++ struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
++
++ ucontrol->value.integer.value[0] =
++ snd_soc_dapm_get_endpoint(codec, "Headset Mic");
++
++ return 0;
++}
++
++static int neo1973_gta02_set_handset_mic(struct snd_kcontrol *kcontrol,
++ struct snd_ctl_elem_value *ucontrol)
++{
++ struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
++ int val = ucontrol->value.integer.value[0];
++
++ snd_soc_dapm_set_endpoint(codec, "Handset Mic", val);
++
++ snd_soc_dapm_sync_endpoints(codec);
++
++ return 0;
++}
++
++static int neo1973_gta02_get_handset_mic(struct snd_kcontrol *kcontrol,
++ struct snd_ctl_elem_value *ucontrol)
++{
++ struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
++
++ ucontrol->value.integer.value[0] =
++ snd_soc_dapm_get_endpoint(codec, "Handset Mic");
++
++ return 0;
++}
++
++static int neo1973_gta02_set_handset_spk(struct snd_kcontrol *kcontrol,
++ struct snd_ctl_elem_value *ucontrol)
++{
++ struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
++ int val = ucontrol->value.integer.value[0];
++
++ snd_soc_dapm_set_endpoint(codec, "Handset Spk", val);
++
++ snd_soc_dapm_sync_endpoints(codec);
++
++ return 0;
++}
++
++static int neo1973_gta02_get_handset_spk(struct snd_kcontrol *kcontrol,
++ struct snd_ctl_elem_value *ucontrol)
++{
++ struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
++
++ ucontrol->value.integer.value[0] =
++ snd_soc_dapm_get_endpoint(codec, "Handset Spk");
++
++ return 0;
++}
++
++static const struct snd_soc_dapm_widget wm8753_dapm_widgets[] = {
++ SND_SOC_DAPM_LINE("Stereo Out", NULL),
++ SND_SOC_DAPM_LINE("GSM Line Out", NULL),
++ SND_SOC_DAPM_LINE("GSM Line In", NULL),
++ SND_SOC_DAPM_MIC("Headset Mic", NULL),
++ SND_SOC_DAPM_MIC("Handset Mic", NULL),
++ SND_SOC_DAPM_SPK("Handset Spk", NULL),
++};
++
++
++/* example machine audio_mapnections */
++static const char* audio_map[][3] = {
++
++ /* Connections to the lm4853 amp */
++ {"Stereo Out", NULL, "LOUT1"},
++ {"Stereo Out", NULL, "ROUT1"},
++
++ /* Connections to the GSM Module */
++ {"GSM Line Out", NULL, "MONO1"},
++ {"GSM Line Out", NULL, "MONO2"},
++ {"RXP", NULL, "GSM Line In"},
++ {"RXN", NULL, "GSM Line In"},
++
++ /* Connections to Headset */
++ {"MIC1", NULL, "Mic Bias"},
++ {"Mic Bias", NULL, "Headset Mic"},
++
++ /* Call Mic */
++ {"MIC2", NULL, "Mic Bias"},
++ {"MIC2N", NULL, "Mic Bias"},
++ {"Mic Bias", NULL, "Handset Mic"},
++
++ /* Call Speaker */
++ {"Handset Spk", NULL, "LOUT2"},
++ {"Handset Spk", NULL, "ROUT2"},
++
++ /* Connect the ALC pins */
++ {"ACIN", NULL, "ACOP"},
++
++ {NULL, NULL, NULL},
++};
++
++static const struct snd_kcontrol_new wm8753_neo1973_gta02_controls[] = {
++ SOC_SINGLE_EXT("DAPM Stereo Out Switch", 0, 0, 1, 0,
++ neo1973_gta02_get_stereo_out,
++ neo1973_gta02_set_stereo_out),
++ SOC_SINGLE_EXT("DAPM GSM Line Out Switch", 1, 0, 1, 0,
++ neo1973_gta02_get_gsm_out,
++ neo1973_gta02_set_gsm_out),
++ SOC_SINGLE_EXT("DAPM GSM Line In Switch", 2, 0, 1, 0,
++ neo1973_gta02_get_gsm_in,
++ neo1973_gta02_set_gsm_in),
++ SOC_SINGLE_EXT("DAPM Headset Mic Switch", 3, 0, 1, 0,
++ neo1973_gta02_get_headset_mic,
++ neo1973_gta02_set_headset_mic),
++ SOC_SINGLE_EXT("DAPM Handset Mic Switch", 4, 0, 1, 0,
++ neo1973_gta02_get_handset_mic,
++ neo1973_gta02_set_handset_mic),
++ SOC_SINGLE_EXT("DAPM Handset Spk Switch", 5, 0, 1, 0,
++ neo1973_gta02_get_handset_spk,
++ neo1973_gta02_set_handset_spk),
++ SOC_SINGLE_EXT("Amp State Switch", 6, 0, 1, 0,
++ lm4853_get_state,
++ lm4853_set_state),
++ SOC_SINGLE_EXT("Amp Spk Switch", 7, 0, 1, 0,
++ lm4853_get_spk,
++ lm4853_set_spk),
++};
++
++/*
++ * This is an example machine initialisation for a wm8753 connected to a
++ * neo1973 GTA02.
++ */
++static int neo1973_gta02_wm8753_init(struct snd_soc_codec *codec)
++{
++ int i, err;
++
++ /* set up NC codec pins */
++ snd_soc_dapm_set_endpoint(codec, "OUT3", 0);
++ snd_soc_dapm_set_endpoint(codec, "OUT4", 0);
++ snd_soc_dapm_set_endpoint(codec, "LINE1", 0);
++ snd_soc_dapm_set_endpoint(codec, "LINE2", 0);
++
++ /* Add neo1973 gta02 specific widgets */
++ for (i = 0; i < ARRAY_SIZE(wm8753_dapm_widgets); i++)
++ snd_soc_dapm_new_control(codec, &wm8753_dapm_widgets[i]);
++
++ /* add neo1973 gta02 specific controls */
++ for (i = 0; i < ARRAY_SIZE(wm8753_neo1973_gta02_controls); i++) {
++ err = snd_ctl_add(codec->card,
++ snd_soc_cnew(&wm8753_neo1973_gta02_controls[i],
++ codec, NULL));
++ if (err < 0)
++ return err;
++ }
++
++ /* set up neo1973 gta02 specific audio path audio_mapnects */
++ for (i = 0; audio_map[i][0] != NULL; i++) {
++ snd_soc_dapm_connect_input(codec, audio_map[i][0],
++ audio_map[i][1], audio_map[i][2]);
++ }
++
++ /* set endpoints to default off mode */
++ snd_soc_dapm_set_endpoint(codec, "Stereo Out", 0);
++ snd_soc_dapm_set_endpoint(codec, "GSM Line Out",0);
++ snd_soc_dapm_set_endpoint(codec, "GSM Line In", 0);
++ snd_soc_dapm_set_endpoint(codec, "Headset Mic", 0);
++ snd_soc_dapm_set_endpoint(codec, "Handset Mic", 0);
++ snd_soc_dapm_set_endpoint(codec, "Handset Spk", 0);
++
++ snd_soc_dapm_sync_endpoints(codec);
++ return 0;
++}
++
++/*
++ * BT Codec DAI
++ */
++static struct snd_soc_cpu_dai bt_dai =
++{ .name = "Bluetooth",
++ .id = 0,
++ .type = SND_SOC_DAI_PCM,
++ .playback = {
++ .channels_min = 1,
++ .channels_max = 1,
++ .rates = SNDRV_PCM_RATE_8000,
++ .formats = SNDRV_PCM_FMTBIT_S16_LE,},
++ .capture = {
++ .channels_min = 1,
++ .channels_max = 1,
++ .rates = SNDRV_PCM_RATE_8000,
++ .formats = SNDRV_PCM_FMTBIT_S16_LE,},
++};
++
++static struct snd_soc_dai_link neo1973_gta02_dai[] = {
++{ /* Hifi Playback - for similatious use with voice below */
++ .name = "WM8753",
++ .stream_name = "WM8753 HiFi",
++ .cpu_dai = &s3c24xx_i2s_dai,
++ .codec_dai = &wm8753_dai[WM8753_DAI_HIFI],
++ .init = neo1973_gta02_wm8753_init,
++ .ops = &neo1973_gta02_hifi_ops,
++},
++{ /* Voice via BT */
++ .name = "Bluetooth",
++ .stream_name = "Voice",
++ .cpu_dai = &bt_dai,
++ .codec_dai = &wm8753_dai[WM8753_DAI_VOICE],
++ .ops = &neo1973_gta02_voice_ops,
++},
++};
++
++#ifdef CONFIG_PM
++int neo1973_gta02_suspend(struct platform_device *pdev, pm_message_t state)
++{
++ s3c2410_gpio_setpin(GTA02_GPIO_AMP_SHUT, 1);
++
++ return 0;
++}
++
++int neo1973_gta02_resume(struct platform_device *pdev)
++{
++ if(lm4853_state & LM4853_AMP)
++ s3c2410_gpio_setpin(GTA02_GPIO_AMP_SHUT, 0);
++
++ return 0;
++}
++#else
++#define neo1973_gta02_suspend NULL
++#define neo1973_gta02_resume NULL
++#endif
++
++static struct snd_soc_machine neo1973_gta02 = {
++ .name = "neo1973-gta02",
++ .suspend_pre = neo1973_gta02_suspend,
++ .resume_post = neo1973_gta02_resume,
++ .dai_link = neo1973_gta02_dai,
++ .num_links = ARRAY_SIZE(neo1973_gta02_dai),
++};
++
++static struct wm8753_setup_data neo1973_gta02_wm8753_setup = {
++ .i2c_address = 0x1a,
++};
++
++static struct snd_soc_device neo1973_gta02_snd_devdata = {
++ .machine = &neo1973_gta02,
++ .platform = &s3c24xx_soc_platform,
++ .codec_dev = &soc_codec_dev_wm8753,
++ .codec_data = &neo1973_gta02_wm8753_setup,
++};
++
++static struct platform_device *neo1973_gta02_snd_device;
++
++static int __init neo1973_gta02_init(void)
++{
++ int ret;
++
++ if (!machine_is_neo1973_gta02()) {
++ printk(KERN_INFO
++ "Only GTA02 hardware supported by ASoc driver\n");
++ return -ENODEV;
++ }
++
++ neo1973_gta02_snd_device = platform_device_alloc("soc-audio", -1);
++ if (!neo1973_gta02_snd_device)
++ return -ENOMEM;
++
++ platform_set_drvdata(neo1973_gta02_snd_device,
++ &neo1973_gta02_snd_devdata);
++ neo1973_gta02_snd_devdata.dev = &neo1973_gta02_snd_device->dev;
++ ret = platform_device_add(neo1973_gta02_snd_device);
++
++ if (ret)
++ platform_device_put(neo1973_gta02_snd_device);
++
++ /* Initialise GPIOs used by amp */
++ s3c2410_gpio_cfgpin(GTA02_GPIO_HP_IN, S3C2410_GPIO_OUTPUT);
++ s3c2410_gpio_cfgpin(GTA02_GPIO_AMP_SHUT, S3C2410_GPIO_OUTPUT);
++
++ /* Amp off by default */
++ s3c2410_gpio_setpin(GTA02_GPIO_AMP_SHUT, 1);
++
++ /* Speaker off by default */
++ s3c2410_gpio_setpin(GTA02_GPIO_HP_IN, 1);
++
++ return ret;
++}
++
++static void __exit neo1973_gta02_exit(void)
++{
++ platform_device_unregister(neo1973_gta02_snd_device);
++}
++
++module_init(neo1973_gta02_init);
++module_exit(neo1973_gta02_exit);
++
++/* Module information */
++MODULE_AUTHOR("Graeme Gregory, graeme@openmoko.org");
++MODULE_DESCRIPTION("ALSA SoC WM8753 Neo1973 GTA02");
++MODULE_LICENSE("GPL");
++
+Index: linux-2.6.22/sound/soc/s3c24xx/Kconfig
+===================================================================
+--- linux-2.6.22.orig/sound/soc/s3c24xx/Kconfig 2007-11-09 16:13:04.000000000 +0000
++++ linux-2.6.22/sound/soc/s3c24xx/Kconfig 2007-11-09 16:13:08.000000000 +0000
+@@ -25,6 +25,15 @@
+ Say Y if you want to add support for SoC audio on smdk2440
+ with the WM8753.
+
++config SND_S3C24XX_SOC_NEO1973_GTA02_WM8753
++ tristate "SoC I2S Audio support for NEO1973 GTA02 - WM8753"
++ depends on SND_S3C24XX_SOC && MACH_NEO1973_GTA02
++ select SND_S3C24XX_SOC_I2S
++ select SND_SOC_WM8753
++ help
++ Say Y if you want to add support for SoC audio on neo1973 gta02
++ with the WM8753 codec
++
+ config SND_S3C24XX_SOC_SMDK2443_WM9710
+ tristate "SoC AC97 Audio support for SMDK2443 - WM9710"
+ depends on SND_S3C24XX_SOC && MACH_SMDK2443
+Index: linux-2.6.22/sound/soc/s3c24xx/Makefile
+===================================================================
+--- linux-2.6.22.orig/sound/soc/s3c24xx/Makefile 2007-11-09 16:13:04.000000000 +0000
++++ linux-2.6.22/sound/soc/s3c24xx/Makefile 2007-11-09 16:13:08.000000000 +0000
+@@ -10,6 +10,9 @@
+ # S3C24XX Machine Support
+ snd-soc-neo1973-wm8753-objs := neo1973_wm8753.o
+ snd-soc-smdk2443-wm9710-objs := smdk2443_wm9710.o
++snd-soc-neo1973-gta02-wm8753-objs := neo1973_gta02_wm8753.o
+
+ obj-$(CONFIG_SND_S3C24XX_SOC_NEO1973_WM8753) += snd-soc-neo1973-wm8753.o
+ obj-$(CONFIG_SND_S3C24XX_SOC_SMDK2443_WM9710) += snd-soc-smdk2443-wm9710.o
++obj-$(CONFIG_SND_S3C24XX_SOC_NEO1973_GTA02_WM8753) += snd-soc-neo1973-gta02-wm8753.o
++
+Index: linux-2.6.22/include/sound/soc-dapm.h
+===================================================================
+--- linux-2.6.22.orig/include/sound/soc-dapm.h 2007-07-09 00:32:17.000000000 +0100
++++ linux-2.6.22/include/sound/soc-dapm.h 2007-11-09 16:13:08.000000000 +0000
+@@ -206,6 +206,8 @@
+ /* dapm audio endpoint control */
+ int snd_soc_dapm_set_endpoint(struct snd_soc_codec *codec,
+ char *pin, int status);
++int snd_soc_dapm_get_endpoint(struct snd_soc_codec *codec,
++ char *pin);
+ int snd_soc_dapm_sync_endpoints(struct snd_soc_codec *codec);
+
+ /* dapm widget types */
+Index: linux-2.6.22/sound/soc/soc-dapm.c
+===================================================================
+--- linux-2.6.22.orig/sound/soc/soc-dapm.c 2007-07-09 00:32:17.000000000 +0100
++++ linux-2.6.22/sound/soc/soc-dapm.c 2007-11-09 16:13:08.000000000 +0000
+@@ -1305,6 +1305,30 @@
+ EXPORT_SYMBOL_GPL(snd_soc_dapm_set_endpoint);
+
+ /**
++ * snd_soc_dapm_get_endpoint - get audio endpoint status
++ * @codec: audio codec
++ * @endpoint: audio signal endpoint (or start point)
++ *
++ * Get audio endpoint status - connected or disconnected.
++ *
++ * Returns status
++ */
++int snd_soc_dapm_get_endpoint(struct snd_soc_codec *codec,
++ char *endpoint)
++{
++ struct snd_soc_dapm_widget *w;
++
++ list_for_each_entry(w, &codec->dapm_widgets, list) {
++ if (!strcmp(w->name, endpoint)) {
++ return w->connected;
++ }
++ }
++
++ return 0;
++}
++EXPORT_SYMBOL_GPL(snd_soc_dapm_get_endpoint);
++
++/**
+ * snd_soc_dapm_free - free dapm resources
+ * @socdev: SoC device
+ *
diff --git a/packages/linux/linux-openmoko/iis-suspend.patch b/packages/linux/linux-openmoko/iis-suspend.patch
new file mode 100644
index 0000000000..ab38672463
--- /dev/null
+++ b/packages/linux/linux-openmoko/iis-suspend.patch
@@ -0,0 +1,63 @@
+Index: linux-2.6.22/sound/soc/s3c24xx/s3c24xx-i2s.c
+===================================================================
+--- linux-2.6.22.orig/sound/soc/s3c24xx/s3c24xx-i2s.c 2007-11-09 16:13:04.000000000 +0000
++++ linux-2.6.22/sound/soc/s3c24xx/s3c24xx-i2s.c 2007-11-09 16:17:47.000000000 +0000
+@@ -75,6 +75,10 @@
+ struct s3c24xx_i2s_info {
+ void __iomem *regs;
+ struct clk *iis_clk;
++ u32 iiscon;
++ u32 iismod;
++ u32 iisfcon;
++ u32 iispsr;
+ };
+ static struct s3c24xx_i2s_info s3c24xx_i2s;
+
+@@ -404,6 +408,38 @@
+ return 0;
+ }
+
++#ifdef CONFIG_PM
++int s3c24xx_i2s_suspend(struct platform_device *pdev,
++ struct snd_soc_cpu_dai *cpu_dai)
++{
++ s3c24xx_i2s.iiscon=readl(s3c24xx_i2s.regs + S3C2410_IISCON);
++ s3c24xx_i2s.iismod=readl(s3c24xx_i2s.regs + S3C2410_IISMOD);
++ s3c24xx_i2s.iisfcon=readl(s3c24xx_i2s.regs + S3C2410_IISFCON);
++ s3c24xx_i2s.iispsr=readl(s3c24xx_i2s.regs + S3C2410_IISPSR);
++
++ clk_disable(s3c24xx_i2s.iis_clk);
++
++ return 0;
++}
++
++int s3c24xx_i2s_resume(struct platform_device *pdev,
++ struct snd_soc_cpu_dai *cpu_dai)
++{
++ clk_enable(s3c24xx_i2s.iis_clk);
++
++ writel(s3c24xx_i2s.iiscon, s3c24xx_i2s.regs + S3C2410_IISCON);
++ writel(s3c24xx_i2s.iismod, s3c24xx_i2s.regs + S3C2410_IISMOD);
++ writel(s3c24xx_i2s.iisfcon, s3c24xx_i2s.regs + S3C2410_IISFCON);
++ writel(s3c24xx_i2s.iispsr, s3c24xx_i2s.regs + S3C2410_IISPSR);
++
++ return 0;
++}
++#else
++#define s3c24xx_i2s_suspend NULL
++#define s3c24xx_i2s_resume NULL
++#endif
++
++
+ #define S3C24XX_I2S_RATES \
+ (SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_11025 | SNDRV_PCM_RATE_16000 | \
+ SNDRV_PCM_RATE_22050 | SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_44100 | \
+@@ -414,6 +450,8 @@
+ .id = 0,
+ .type = SND_SOC_DAI_I2S,
+ .probe = s3c24xx_i2s_probe,
++ .suspend = s3c24xx_i2s_suspend,
++ .resume = s3c24xx_i2s_resume,
+ .playback = {
+ .channels_min = 2,
+ .channels_max = 2,
diff --git a/packages/linux/linux-openmoko/s3c24xx-pcm-suspend.patch b/packages/linux/linux-openmoko/s3c24xx-pcm-suspend.patch
new file mode 100644
index 0000000000..fffc685a4e
--- /dev/null
+++ b/packages/linux/linux-openmoko/s3c24xx-pcm-suspend.patch
@@ -0,0 +1,73 @@
+Index: linux-2.6.22/sound/soc/s3c24xx/s3c24xx-pcm.c
+===================================================================
+--- linux-2.6.22.orig/sound/soc/s3c24xx/s3c24xx-pcm.c 2007-11-09 16:28:43.000000000 +0000
++++ linux-2.6.22/sound/soc/s3c24xx/s3c24xx-pcm.c 2007-11-09 16:33:05.000000000 +0000
+@@ -49,7 +49,9 @@
+ .info = SNDRV_PCM_INFO_INTERLEAVED |
+ SNDRV_PCM_INFO_BLOCK_TRANSFER |
+ SNDRV_PCM_INFO_MMAP |
+- SNDRV_PCM_INFO_MMAP_VALID,
++ SNDRV_PCM_INFO_MMAP_VALID |
++ SNDRV_PCM_INFO_PAUSE |
++ SNDRV_PCM_INFO_RESUME,
+ .formats = SNDRV_PCM_FMTBIT_S16_LE |
+ SNDRV_PCM_FMTBIT_U16_LE |
+ SNDRV_PCM_FMTBIT_U8 |
+@@ -176,28 +178,6 @@
+ }
+ }
+
+- /* channel needs configuring for mem=>device, increment memory addr,
+- * sync to pclk, half-word transfers to the IIS-FIFO. */
+- if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
+- s3c2410_dma_devconfig(prtd->params->channel,
+- S3C2410_DMASRC_MEM, S3C2410_DISRCC_INC |
+- S3C2410_DISRCC_APB, prtd->params->dma_addr);
+-
+- s3c2410_dma_config(prtd->params->channel,
+- prtd->params->dma_size,
+- S3C2410_DCON_SYNC_PCLK |
+- S3C2410_DCON_HANDSHAKE);
+- } else {
+- s3c2410_dma_config(prtd->params->channel,
+- prtd->params->dma_size,
+- S3C2410_DCON_HANDSHAKE |
+- S3C2410_DCON_SYNC_PCLK);
+-
+- s3c2410_dma_devconfig(prtd->params->channel,
+- S3C2410_DMASRC_HW, 0x3,
+- prtd->params->dma_addr);
+- }
+-
+ s3c2410_dma_set_buffdone_fn(prtd->params->channel,
+ s3c24xx_audio_buffdone);
+
+@@ -246,6 +226,28 @@
+ if (!prtd->params)
+ return 0;
+
++ /* channel needs configuring for mem=>device, increment memory addr,
++ * sync to pclk, half-word transfers to the IIS-FIFO. */
++ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
++ s3c2410_dma_devconfig(prtd->params->channel,
++ S3C2410_DMASRC_MEM, S3C2410_DISRCC_INC |
++ S3C2410_DISRCC_APB, prtd->params->dma_addr);
++
++ s3c2410_dma_config(prtd->params->channel,
++ prtd->params->dma_size,
++ S3C2410_DCON_SYNC_PCLK |
++ S3C2410_DCON_HANDSHAKE);
++ } else {
++ s3c2410_dma_config(prtd->params->channel,
++ prtd->params->dma_size,
++ S3C2410_DCON_HANDSHAKE |
++ S3C2410_DCON_SYNC_PCLK);
++
++ s3c2410_dma_devconfig(prtd->params->channel,
++ S3C2410_DMASRC_HW, 0x3,
++ prtd->params->dma_addr);
++ }
++
+ /* flush the DMA channel */
+ s3c2410_dma_ctrl(prtd->params->channel, S3C2410_DMAOP_FLUSH);
+ prtd->dma_loaded = 0;
diff --git a/packages/linux/linux-openmoko/soc-core-suspend.patch b/packages/linux/linux-openmoko/soc-core-suspend.patch
new file mode 100644
index 0000000000..7fb6cc7f7a
--- /dev/null
+++ b/packages/linux/linux-openmoko/soc-core-suspend.patch
@@ -0,0 +1,47 @@
+From 6c868238a5e083dca4d74439a7fd467b5c7726b0 Mon Sep 17 00:00:00 2001
+From: Liam Girdwood <liam@localhost.localdomain>
+Date: Fri, 1 Jun 2007 12:56:55 +0100
+Subject: [PATCH] This fixes a bug whereby PCM's were not being suspended when the rest of the audio subsystem was suspended.
+
+---
+ include/sound/soc.h | 3 +++
+ sound/soc/soc-core.c | 8 ++++++++
+ 2 files changed, 11 insertions(+), 0 deletions(-)
+
+Index: linux-2.6.22/include/sound/soc.h
+===================================================================
+--- linux-2.6.22.orig/include/sound/soc.h 2007-07-09 00:32:17.000000000 +0100
++++ linux-2.6.22/include/sound/soc.h 2007-11-09 16:13:08.000000000 +0000
+@@ -411,6 +411,9 @@
+
+ /* codec/machine specific init - e.g. add machine controls */
+ int (*init)(struct snd_soc_codec *codec);
++
++ /* DAI pcm */
++ struct snd_pcm *pcm;
+ };
+
+ /* SoC machine */
+Index: linux-2.6.22/sound/soc/soc-core.c
+===================================================================
+--- linux-2.6.22.orig/sound/soc/soc-core.c 2007-07-09 00:32:17.000000000 +0100
++++ linux-2.6.22/sound/soc/soc-core.c 2007-11-09 16:18:45.000000000 +0000
+@@ -639,6 +639,10 @@
+ dai->dai_ops.digital_mute(dai, 1);
+ }
+
++ /* suspend all pcm's */
++ for(i = 0; i < machine->num_links; i++)
++ snd_pcm_suspend_all(machine->dai_link[i].pcm);
++
+ if (machine->suspend_pre)
+ machine->suspend_pre(pdev, state);
+
+@@ -873,6 +877,7 @@
+ return ret;
+ }
+
++ dai_link->pcm = pcm;
+ pcm->private_data = rtd;
+ soc_pcm_ops.mmap = socdev->platform->pcm_ops->mmap;
+ soc_pcm_ops.pointer = socdev->platform->pcm_ops->pointer;
diff --git a/packages/linux/linux-openmoko_2.6.22.5.bb b/packages/linux/linux-openmoko_2.6.22.5.bb
index 348537e4d2..c623504c73 100644
--- a/packages/linux/linux-openmoko_2.6.22.5.bb
+++ b/packages/linux/linux-openmoko_2.6.22.5.bb
@@ -9,7 +9,7 @@ KERNEL_RELEASE = "2.6.22.5"
#PV = "${VANILLA_VERSION}+${KERNEL_RELEASE}-moko11+svnr${SRCREV}"
PV = "${KERNEL_RELEASE}-moko11+svnr${SRCREV}"
-PR = "r6"
+PR = "r10"
KERNEL_IMAGETYPE = "uImage"
UBOOT_ENTRYPOINT = "30008000"
@@ -24,6 +24,12 @@ SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-${VANILLA_VERSION}.ta
svn://svn.openmoko.org/trunk/src/target/kernel;module=patches;proto=http \
file://fix-EVIOCGRAB-semantics-2.6.22.5.patch;patch=1 \
file://fix-gta01-flowcontrol2-2.6.22.5.patch;patch=1 \
+ file://gta02-sound.patch;patch=1 \
+ file://soc-core-suspend.patch;patch=1 \
+ file://iis-suspend.patch;patch=1 \
+ file://s3c24xx-pcm-suspend.patch;patch=1 \
+ file://gta-vibro-pwm-suspend.patch;patch=1 \
+ file://glamo-report-vram-size-to-userspace.patch;patch=1 \
file://defconfig-${KERNEL_RELEASE}"
S = "${WORKDIR}/linux-${VANILLA_VERSION}"
@@ -49,6 +55,10 @@ module_autoload_hci_usb = "hci_usb"
module_autoload_g_ether = "g_ether"
# audio
module_autoload_snd-soc-neo1973-wm8753 = "snd-soc-neo1973-wm8753"
+module_autoload_snd-soc-neo1973-gta02-wm8753 = "snd-soc-neo1973-gta02-wm8753"
+module_autoload_snd-pcm-oss = "snd-pcm-oss"
+module_autoload_snd-mixer-oss = "snd-mixer-oss"
+
# sd/mmc
module_autoload_s3cmci = "s3cmci"
diff --git a/packages/linux/linux-rp-2.6.23/arm-dma-coherent.patch b/packages/linux/linux-rp-2.6.23/arm-dma-coherent.patch
new file mode 100644
index 0000000000..2454becf66
--- /dev/null
+++ b/packages/linux/linux-rp-2.6.23/arm-dma-coherent.patch
@@ -0,0 +1,361 @@
+Patch largely based on the work of Ian Molton (spyro@f2s.com).
+
+Signed-off-by: Dmitry Baryshkov <dbaryshkov@gmail.com>
+Index: linux-2.6.23/arch/arm/mm/consistent.c
+===================================================================
+--- linux-2.6.23.orig/arch/arm/mm/consistent.c 2007-10-10 00:31:38.000000000 +0400
++++ linux-2.6.23/arch/arm/mm/consistent.c 2007-11-13 01:20:58.281143408 +0300
+@@ -3,6 +3,8 @@
+ *
+ * Copyright (C) 2000-2004 Russell King
+ *
++ * Device local coherent memory support added by Ian Molton (spyro@f2s.com)
++ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+@@ -20,6 +22,7 @@
+
+ #include <asm/memory.h>
+ #include <asm/cacheflush.h>
++#include <asm/io.h>
+ #include <asm/tlbflush.h>
+ #include <asm/sizes.h>
+
+@@ -35,6 +38,13 @@
+ #define CONSISTENT_PTE_INDEX(x) (((unsigned long)(x) - CONSISTENT_BASE) >> PGDIR_SHIFT)
+ #define NUM_CONSISTENT_PTES (CONSISTENT_DMA_SIZE >> PGDIR_SHIFT)
+
++struct dma_coherent_mem {
++ void *virt_base;
++ u32 device_base;
++ int size;
++ int flags;
++ unsigned long *bitmap;
++};
+
+ /*
+ * These are the page tables (2MB each) covering uncached, DMA consistent allocations
+@@ -153,6 +163,13 @@
+ unsigned long order;
+ u64 mask = ISA_DMA_THRESHOLD, limit;
+
++ /* Following is a work-around (a.k.a. hack) to prevent pages
++ * with __GFP_COMP being passed to split_page() which cannot
++ * handle them. The real problem is that this flag probably
++ * should be 0 on ARM as it is not supported on this
++ * platform--see CONFIG_HUGETLB_PAGE. */
++ gfp &= ~(__GFP_COMP);
++
+ if (!consistent_pte[0]) {
+ printk(KERN_ERR "%s: not initialised\n", __func__);
+ dump_stack();
+@@ -160,6 +177,26 @@
+ }
+
+ if (dev) {
++
++ if (dev->dma_mem) {
++ unsigned long flags;
++ int page;
++ void *ret;
++
++ spin_lock_irqsave(&consistent_lock, flags);
++ page = bitmap_find_free_region(dev->dma_mem->bitmap,
++ dev->dma_mem->size,
++ get_order(size));
++ spin_unlock_irqrestore(&consistent_lock, flags);
++
++ if (page >= 0) {
++ *handle = dev->dma_mem->device_base + (page << PAGE_SHIFT);
++ ret = dev->dma_mem->virt_base + (page << PAGE_SHIFT);
++ memset(ret, 0, size);
++ return ret;
++ }
++ }
++
+ mask = dev->coherent_dma_mask;
+
+ /*
+@@ -177,6 +214,9 @@
+ mask, (unsigned long long)ISA_DMA_THRESHOLD);
+ goto no_page;
+ }
++
++ if (dev->dma_mem && dev->dma_mem->flags & DMA_MEMORY_EXCLUSIVE)
++ return NULL;
+ }
+
+ /*
+@@ -360,6 +400,8 @@
+ pte_t *ptep;
+ int idx;
+ u32 off;
++ struct dma_coherent_mem *mem = dev ? dev->dma_mem : NULL;
++ unsigned long order;
+
+ WARN_ON(irqs_disabled());
+
+@@ -369,6 +411,15 @@
+ }
+
+ size = PAGE_ALIGN(size);
++ order = get_order(size);
++
++ /* What if mem is valid and the range is not? */
++ if (mem && cpu_addr >= mem->virt_base && cpu_addr < (mem->virt_base + (mem->size << PAGE_SHIFT))) {
++ int page = (cpu_addr - mem->virt_base) >> PAGE_SHIFT;
++
++ bitmap_release_region(mem->bitmap, page, order);
++ return;
++ }
+
+ spin_lock_irqsave(&consistent_lock, flags);
+ c = vm_region_find(&consistent_head, (unsigned long)cpu_addr);
+@@ -438,6 +489,81 @@
+ }
+ EXPORT_SYMBOL(dma_free_coherent);
+
++int dma_declare_coherent_memory(struct device *dev, dma_addr_t bus_addr,
++ dma_addr_t device_addr, size_t size, int flags)
++{
++ void *mem_base;
++ int pages = size >> PAGE_SHIFT;
++ int bitmap_size = (pages + 31)/32;
++
++ if ((flags & (DMA_MEMORY_MAP | DMA_MEMORY_IO)) == 0)
++ goto out;
++ if (!size)
++ goto out;
++ if (dev->dma_mem)
++ goto out;
++
++ /* FIXME: this routine just ignores DMA_MEMORY_INCLUDES_CHILDREN */
++ mem_base = ioremap_nocache(bus_addr, size);
++ if (!mem_base)
++ goto out;
++
++ dev->dma_mem = kmalloc(GFP_KERNEL, sizeof(struct dma_coherent_mem));
++ if (!dev->dma_mem)
++ goto out;
++ memset(dev->dma_mem, 0, sizeof(struct dma_coherent_mem));
++ dev->dma_mem->bitmap = kmalloc(GFP_KERNEL, bitmap_size);
++ if (!dev->dma_mem->bitmap)
++ goto free1_out;
++ memset(dev->dma_mem->bitmap, 0, bitmap_size);
++
++ dev->dma_mem->virt_base = mem_base;
++ dev->dma_mem->device_base = device_addr;
++ dev->dma_mem->size = pages;
++ dev->dma_mem->flags = flags;
++
++ if (flags & DMA_MEMORY_MAP)
++ return DMA_MEMORY_MAP;
++
++ return DMA_MEMORY_IO;
++
++ free1_out:
++ kfree(dev->dma_mem->bitmap);
++ out:
++ return 0;
++}
++EXPORT_SYMBOL(dma_declare_coherent_memory);
++
++void dma_release_declared_memory(struct device *dev)
++{
++ struct dma_coherent_mem *mem = dev->dma_mem;
++
++ if (!mem)
++ return;
++ dev->dma_mem = NULL;
++ kfree(mem->bitmap);
++ kfree(mem);
++}
++EXPORT_SYMBOL(dma_release_declared_memory);
++
++void *dma_mark_declared_memory_occupied(struct device *dev,
++ dma_addr_t device_addr, size_t size)
++{
++ struct dma_coherent_mem *mem = dev->dma_mem;
++ int pages = (size + PAGE_SIZE - 1) >> PAGE_SHIFT;
++ int pos, err;
++
++ if (!mem)
++ return ERR_PTR(-EINVAL);
++
++ pos = (device_addr - mem->device_base) >> PAGE_SHIFT;
++ err = bitmap_allocate_region(mem->bitmap, pos, get_order(pages));
++ if (err != 0)
++ return ERR_PTR(err);
++ return mem->virt_base + (pos << PAGE_SHIFT);
++}
++EXPORT_SYMBOL(dma_mark_declared_memory_occupied);
++
+ /*
+ * Initialise the consistent memory allocation.
+ */
+Index: linux-2.6.23/arch/arm/common/dmabounce.c
+===================================================================
+--- linux-2.6.23.orig/arch/arm/common/dmabounce.c 2007-10-10 00:31:38.000000000 +0400
++++ linux-2.6.23/arch/arm/common/dmabounce.c 2007-11-13 01:23:17.452501736 +0300
+@@ -16,6 +16,7 @@
+ *
+ * Copyright (C) 2002 Hewlett Packard Company.
+ * Copyright (C) 2004 MontaVista Software, Inc.
++ * Copyright (C) 2007 Dmitry Baryshkov <dbaryshkov@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+@@ -29,6 +30,7 @@
+ #include <linux/dma-mapping.h>
+ #include <linux/dmapool.h>
+ #include <linux/list.h>
++#include <linux/rwsem.h>
+
+ #include <asm/cacheflush.h>
+
+@@ -79,6 +81,75 @@
+ rwlock_t lock;
+ };
+
++struct dmabounce_check_entry {
++ struct list_head list;
++ dmabounce_check checker;
++ void *data;
++};
++
++static struct list_head checkers = LIST_HEAD_INIT(checkers);
++static rwlock_t checkers_lock = RW_LOCK_UNLOCKED;
++
++int
++dmabounce_register_checker(dmabounce_check function, void *data)
++{
++ unsigned long flags;
++ struct dmabounce_check_entry *entry =
++ kzalloc(sizeof(struct dmabounce_check_entry), GFP_ATOMIC);
++
++ if (!entry)
++ return ENOMEM;
++
++ INIT_LIST_HEAD(&entry->list);
++ entry->checker = function;
++ entry->data = data;
++
++ write_lock_irqsave(checkers_lock, flags);
++ list_add(&entry->list, &checkers);
++ write_unlock_irqrestore(checkers_lock, flags);
++
++ return 0;
++}
++
++void
++dmabounce_remove_checker(dmabounce_check function, void *data)
++{
++ unsigned long flags;
++ struct list_head *pos;
++
++ write_lock_irqsave(checkers_lock, flags);
++ __list_for_each(pos, &checkers) {
++ struct dmabounce_check_entry *entry = container_of(pos,
++ struct dmabounce_check_entry, list);
++ if (entry->checker == function && entry->data == data) {
++ list_del(pos);
++ write_unlock_irqrestore(checkers_lock, flags);
++ kfree(entry);
++ return;
++ }
++ }
++
++ printk(KERN_WARNING "dmabounce checker not found: %p\n", function);
++}
++
++int dma_needs_bounce(struct device *dev, dma_addr_t dma, size_t size)
++{
++ unsigned long flags;
++ struct list_head *pos;
++
++ read_lock_irqsave(checkers_lock, flags);
++ __list_for_each(pos, &checkers) {
++ struct dmabounce_check_entry *entry = container_of(pos,
++ struct dmabounce_check_entry, list);
++ if (entry->checker(dev, dma, size, entry->data)) {
++ read_unlock_irqrestore(checkers_lock, flags);
++ return 1;
++ }
++ }
++
++ read_unlock_irqrestore(checkers_lock, flags);
++ return 0;
++}
+ #ifdef STATS
+ static ssize_t dmabounce_show(struct device *dev, struct device_attribute *attr,
+ char *buf)
+@@ -642,7 +713,6 @@
+ dev->bus_id, dev->bus->name);
+ }
+
+-
+ EXPORT_SYMBOL(dma_map_single);
+ EXPORT_SYMBOL(dma_unmap_single);
+ EXPORT_SYMBOL(dma_map_sg);
+@@ -652,6 +722,9 @@
+ EXPORT_SYMBOL(dma_sync_sg);
+ EXPORT_SYMBOL(dmabounce_register_dev);
+ EXPORT_SYMBOL(dmabounce_unregister_dev);
++EXPORT_SYMBOL(dmabounce_register_checker);
++EXPORT_SYMBOL(dmabounce_remove_checker);
++
+
+ MODULE_AUTHOR("Christopher Hoover <ch@hpl.hp.com>, Deepak Saxena <dsaxena@plexity.net>");
+ MODULE_DESCRIPTION("Special dma_{map/unmap/dma_sync}_* routines for systems with limited DMA windows");
+Index: linux-2.6.23/include/asm-arm/dma-mapping.h
+===================================================================
+--- linux-2.6.23.orig/include/asm-arm/dma-mapping.h 2007-10-10 00:31:38.000000000 +0400
++++ linux-2.6.23/include/asm-arm/dma-mapping.h 2007-11-13 01:24:05.588500474 +0300
+@@ -7,6 +7,18 @@
+
+ #include <asm/scatterlist.h>
+
++#define ARCH_HAS_DMA_DECLARE_COHERENT_MEMORY
++extern int
++dma_declare_coherent_memory(struct device *dev, dma_addr_t bus_addr,
++ dma_addr_t device_addr, size_t size, int flags);
++
++extern void
++dma_release_declared_memory(struct device *dev);
++
++extern void *
++dma_mark_declared_memory_occupied(struct device *dev,
++ dma_addr_t device_addr, size_t size);
++
+ /*
+ * DMA-consistent mapping functions. These allocate/free a region of
+ * uncached, unwrite-buffered mapped memory space for use with DMA
+@@ -433,23 +445,10 @@
+ */
+ extern void dmabounce_unregister_dev(struct device *);
+
+-/**
+- * dma_needs_bounce
+- *
+- * @dev: valid struct device pointer
+- * @dma_handle: dma_handle of unbounced buffer
+- * @size: size of region being mapped
+- *
+- * Platforms that utilize the dmabounce mechanism must implement
+- * this function.
+- *
+- * The dmabounce routines call this function whenever a dma-mapping
+- * is requested to determine whether a given buffer needs to be bounced
+- * or not. The function must return 0 if the buffer is OK for
+- * DMA access and 1 if the buffer needs to be bounced.
+- *
+- */
+-extern int dma_needs_bounce(struct device*, dma_addr_t, size_t);
++typedef int (*dmabounce_check)(struct device *dev, dma_addr_t dma, size_t size, void *data);
++extern int dmabounce_register_checker(dmabounce_check, void *data);
++extern void dmabounce_remove_checker(dmabounce_check, void *data);
++
+ #endif /* CONFIG_DMABOUNCE */
+
+ #endif /* __KERNEL__ */
diff --git a/packages/linux/linux-rp-2.6.23/connectplus-prevent-oops-HACK.patch b/packages/linux/linux-rp-2.6.23/connectplus-prevent-oops-HACK.patch
new file mode 100644
index 0000000000..b5439c62e7
--- /dev/null
+++ b/packages/linux/linux-rp-2.6.23/connectplus-prevent-oops-HACK.patch
@@ -0,0 +1,17 @@
+Index: linux-2.6.21/drivers/net/wireless/hostap/hostap_hw.c
+===================================================================
+--- linux-2.6.21.orig/drivers/net/wireless/hostap/hostap_hw.c 2007-07-07 12:45:39.000000000 +0100
++++ linux-2.6.21/drivers/net/wireless/hostap/hostap_hw.c 2007-07-07 12:47:30.000000000 +0100
+@@ -2666,6 +2666,12 @@
+ iface = netdev_priv(dev);
+ local = iface->local;
+
++ if(dev->base_addr == 0)
++ {
++ printk(KERN_DEBUG "%s: IRQ before base_addr set\n", dev->name);
++ return IRQ_HANDLED;
++ }
++
+ prism2_io_debug_add(dev, PRISM2_IO_DEBUG_CMD_INTERRUPT, 0, 0);
+
+ if (local->func->card_present && !local->func->card_present(local)) {
diff --git a/packages/linux/linux-rp-2.6.23/defconfig-tosa b/packages/linux/linux-rp-2.6.23/defconfig-tosa
index 08c2bbe87a..d3dc74bcc0 100644
--- a/packages/linux/linux-rp-2.6.23/defconfig-tosa
+++ b/packages/linux/linux-rp-2.6.23/defconfig-tosa
@@ -434,7 +434,7 @@ CONFIG_IEEE80211_CRYPT_TKIP=m
#
CONFIG_STANDALONE=y
CONFIG_PREVENT_FIRMWARE_BUILD=y
-CONFIG_FW_LOADER=y
+CONFIG_FW_LOADER=m
# CONFIG_DEBUG_DRIVER is not set
#
@@ -1311,8 +1311,7 @@ CONFIG_USB_GADGET=m
# CONFIG_USB_GADGET_DEBUG_FILES is not set
CONFIG_USB_GADGET_SELECTED=y
# CONFIG_USB_GADGET_NET2280 is not set
-CONFIG_USB_GADGET_PXA2XX=m
-CONFIG_USB_PXA2XX=m
+CONFIG_USB_GADGET_PXA2XX=y
# CONFIG_USB_PXA2XX_SMALL is not set
# CONFIG_USB_GADGET_PXA27X is not set
# CONFIG_USB_GADGET_GOKU is not set
@@ -1494,9 +1493,9 @@ CONFIG_MSDOS_PARTITION=y
#
# Native Language Support
#
-CONFIG_NLS=y
+CONFIG_NLS=m
CONFIG_NLS_DEFAULT="cp437"
-CONFIG_NLS_CODEPAGE_437=y
+CONFIG_NLS_CODEPAGE_437=m
CONFIG_NLS_CODEPAGE_737=m
CONFIG_NLS_CODEPAGE_775=m
CONFIG_NLS_CODEPAGE_850=m
@@ -1520,7 +1519,7 @@ CONFIG_NLS_ISO8859_8=m
CONFIG_NLS_CODEPAGE_1250=m
CONFIG_NLS_CODEPAGE_1251=m
CONFIG_NLS_ASCII=m
-CONFIG_NLS_ISO8859_1=y
+CONFIG_NLS_ISO8859_1=m
CONFIG_NLS_ISO8859_2=m
CONFIG_NLS_ISO8859_3=m
CONFIG_NLS_ISO8859_4=m
@@ -1533,7 +1532,7 @@ CONFIG_NLS_ISO8859_14=m
CONFIG_NLS_ISO8859_15=m
CONFIG_NLS_KOI8_R=m
CONFIG_NLS_KOI8_U=m
-CONFIG_NLS_UTF8=y
+CONFIG_NLS_UTF8=m
#
# Profiling support
diff --git a/packages/linux/linux-rp-2.6.23/pxa2xx_udc_support_inverse_vbus.patch b/packages/linux/linux-rp-2.6.23/pxa2xx_udc_support_inverse_vbus.patch
new file mode 100644
index 0000000000..72211aace2
--- /dev/null
+++ b/packages/linux/linux-rp-2.6.23/pxa2xx_udc_support_inverse_vbus.patch
@@ -0,0 +1,120 @@
+From dbaryshkov@gmail.com Fri Dec 7 00:05:32 2007
+Return-Path: <SRS0=7TBh+psr=Q5=lists.arm.linux.org.uk=linux-arm-kernel-bounces+openembedded=haerwu.biz@haerwu.biz>
+X-Spam-Checker-Version: SpamAssassin 3.1.7 (2006-10-05) on 3080.s.tld.pl
+X-Spam-Level:
+X-Spam-Status: No, score=1.0 required=5.0 tests=BAYES_40,SPF_FAIL
+ autolearn=disabled version=3.1.7
+Delivered-To: haerwu.biz-marcin@haerwu.biz
+Received: (qmail 3062 invoked by uid 813007); 6 Dec 2007 23:44:39 -0000
+Delivered-To: haerwu.biz-openembedded@haerwu.biz
+Received: (qmail 3048 invoked by uid 813007); 6 Dec 2007 23:44:39 -0000
+X-clamdmail: clamdmail 0.18a
+Received: from zeniv.linux.org.uk (195.92.253.2)
+ by smtp.host4.kei.pl with SMTP; 6 Dec 2007 23:44:38 -0000
+Received: from [2002:4e20:1eda:1:201:3dff:fe00:156] (helo=lists.arm.linux.org.uk)
+ by ZenIV.linux.org.uk with esmtpsa (Exim 4.63 #1 (Red Hat Linux))
+ id 1J0Pts-0004dN-KF; Thu, 06 Dec 2007 23:13:03 +0000
+Received: from localhost ([127.0.0.1] helo=lists.arm.linux.org.uk)
+ by lists.arm.linux.org.uk with esmtp (Exim 4.50)
+ id 1J0Pr7-0000cF-OJ; Thu, 06 Dec 2007 23:10:10 +0000
+Received: from mu-out-0910.google.com ([209.85.134.185])
+ by lists.arm.linux.org.uk with esmtp (Exim 4.50) id 1J0Pn3-0000bt-0E
+ for linux-arm-kernel@lists.arm.linux.org.uk;
+ Thu, 06 Dec 2007 23:06:40 +0000
+Received: by mu-out-0910.google.com with SMTP id i2so13552mue
+ for <linux-arm-kernel@lists.arm.linux.org.uk>;
+ Thu, 06 Dec 2007 15:05:40 -0800 (PST)
+DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma;
+ h=domainkey-signature:received:received:date:to:subject:message-id:mime-version:content-type:content-disposition:user-agent:from;
+ bh=cfa4MUFsOjAsSKDax5Yk97Hu762FByFSAfUQi5KP2cc=;
+ b=aA5uLmMsFBL6uxIQjxwtR4vD/2zBfGHiN/xepdZSggrNmYu0DJ75Q8JsSqzU/z7Vh9hALIiHjCR3WeqlJqZKCBMSrANzpFN4KVunUajamxn85btZMYysQ3YuZI+DUTYPovoZhuPjmT+SUT7RFpOhwKXbs7z9J8DCgodOVS+YwEY=
+DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma;
+ h=date:to:subject:message-id:mime-version:content-type:content-disposition:user-agent:from;
+ b=oWC1DMK+88t4jXf/5sY2gvSAjKuYypZhUflAHvCNbKYn2iFzpEFoFfjcUgV+lArS06OuT/R4v4Cp87JGK1NLA/uei3fhFZwNsoHcqWkgdsOqp5dSWMZFWCCrO4ODJahoFlnsxoS6OiceJM6EKX8u3RTELEVZEnVl3H2HWM4JJh4=
+Received: by 10.82.107.15 with SMTP id f15mr9802870buc.1196982339522;
+ Thu, 06 Dec 2007 15:05:39 -0800 (PST)
+Received: from doriath.ww600.siemens.net ( [91.122.9.34])
+ by mx.google.com with ESMTPS id 5sm15474nfv.2007.12.06.15.05.37
+ (version=SSLv3 cipher=OTHER); Thu, 06 Dec 2007 15:05:38 -0800 (PST)
+Date: Fri, 7 Dec 2007 02:05:32 +0300
+To: linux-arm-kernel@lists.arm.linux.org.uk
+Message-ID: <20071206230532.GA13332@doriath.ww600.siemens.net>
+MIME-Version: 1.0
+Content-Type: text/plain;
+ charset=us-ascii
+Content-Disposition: inline
+User-Agent: Mutt/1.5.17 (2007-11-01)
+From: Dmitry Baryshkov <dbaryshkov@gmail.com>
+Subject: [PATCH 1/2] pxa2xx_udc_support_inverse_vbus.patch
+X-BeenThere: linux-arm-kernel@lists.arm.linux.org.uk
+X-Mailman-Version: 2.1.5
+Precedence: list
+List-Id: ARM Linux kernel discussions <linux-arm-kernel.lists.arm.linux.org.uk>
+List-Unsubscribe: <http://lists.arm.linux.org.uk/mailman/listinfo/linux-arm-kernel>,
+ <mailto:linux-arm-kernel-request@lists.arm.linux.org.uk?subject=unsubscribe>
+List-Archive: <http://lists.arm.linux.org.uk/pipermail/linux-arm-kernel>
+List-Post: <mailto:linux-arm-kernel@lists.arm.linux.org.uk>
+List-Help: <mailto:linux-arm-kernel-request@lists.arm.linux.org.uk?subject=help>
+List-Subscribe: <http://lists.arm.linux.org.uk/mailman/listinfo/linux-arm-kernel>,
+ <mailto:linux-arm-kernel-request@lists.arm.linux.org.uk?subject=subscribe>
+Sender: linux-arm-kernel-bounces@lists.arm.linux.org.uk
+Errors-To: linux-arm-kernel-bounces+openembedded=haerwu.biz+openembedded=haerwu.biz@lists.arm.linux.org.uk
+X-Length: 5827
+Status: R
+X-Status: NC
+X-KMail-EncryptionState:
+X-KMail-SignatureState:
+X-KMail-MDN-Sent:
+
+Some pxa-based boards (like e.g. tosa) have the VBUS-detection gpio pin
+inverted. I.e. it's low when VBUS is connected and high when
+disconnected. Allow specifiing whether gpio_vbus value is inverted.
+
+Signed-off-by: Dmitry Baryshkov <dbaryshkov@gmail.com>
+
+Index: linux-test/drivers/usb/gadget/pxa2xx_udc.c
+===================================================================
+--- linux-test.orig/drivers/usb/gadget/pxa2xx_udc.c 2007-12-06 12:41:25.784337009 +0300
++++ linux-test/drivers/usb/gadget/pxa2xx_udc.c 2007-12-06 13:39:33.504345084 +0300
+@@ -125,8 +125,12 @@ static int is_vbus_present(void)
+ {
+ struct pxa2xx_udc_mach_info *mach = the_controller->mach;
+
+- if (mach->gpio_vbus)
+- return gpio_get_value(mach->gpio_vbus);
++ if (mach->gpio_vbus) {
++ int value = gpio_get_value(mach->gpio_vbus);
++ return mach->gpio_vbus_inverted ?
++ !value :
++ value;
++ }
+ if (mach->udc_is_connected)
+ return mach->udc_is_connected();
+ return 1;
+@@ -1396,6 +1400,9 @@ static irqreturn_t udc_vbus_irq(int irq,
+ struct pxa2xx_udc *dev = _dev;
+ int vbus = gpio_get_value(dev->mach->gpio_vbus);
+
++ if (dev->mach->gpio_vbus_inverted)
++ vbus = !vbus;
++
+ pxa2xx_udc_vbus_session(&dev->gadget, vbus);
+ return IRQ_HANDLED;
+ }
+Index: linux-test/include/asm-arm/mach/udc_pxa2xx.h
+===================================================================
+--- linux-test.orig/include/asm-arm/mach/udc_pxa2xx.h 2007-12-06 12:38:49.872349393 +0300
++++ linux-test/include/asm-arm/mach/udc_pxa2xx.h 2007-12-06 12:41:03.594903549 +0300
+@@ -22,5 +22,6 @@ struct pxa2xx_udc_mach_info {
+ */
+ u16 gpio_vbus; /* high == vbus present */
+ u16 gpio_pullup; /* high == pullup activated */
++ unsigned char gpio_vbus_inverted:1;
+ };
+
+
+-------------------------------------------------------------------
+List admin: http://lists.arm.linux.org.uk/mailman/listinfo/linux-arm-kernel
+FAQ: http://www.arm.linux.org.uk/mailinglists/faq.php
+Etiquette: http://www.arm.linux.org.uk/mailinglists/etiquette.php
+
diff --git a/packages/linux/linux-rp-2.6.23/tmio-ohci-r9.patch b/packages/linux/linux-rp-2.6.23/tmio-ohci-r9.patch
new file mode 100644
index 0000000000..034acc7b8e
--- /dev/null
+++ b/packages/linux/linux-rp-2.6.23/tmio-ohci-r9.patch
@@ -0,0 +1,472 @@
+Signed-off-by: Dmitry Baryshkov <dbaryshkov@gmail.com>
+
+Index: linux-2.6.23/drivers/usb/host/ohci-tmio.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.23/drivers/usb/host/ohci-tmio.c 2007-11-13 01:35:13.049455112 +0300
+@@ -0,0 +1,417 @@
++/*
++ * OHCI HCD(Host Controller Driver) for USB.
++ *
++ *(C) Copyright 1999 Roman Weissgaerber <weissg@vienna.at>
++ *(C) Copyright 2000-2002 David Brownell <dbrownell@users.sourceforge.net>
++ *(C) Copyright 2002 Hewlett-Packard Company
++ *
++ * Bus glue for Toshiba Mobile IO(TMIO) Controller's OHCI core
++ *(C) Copyright 2005 Chris Humbert <mahadri-usb@drigon.com>
++ *
++ * This is known to work with the following variants:
++ * TC6393XB revision 3 (32kB SRAM)
++ *
++ * The TMIO's OHCI core DMAs through a small internal buffer that
++ * is directly addressable by the CPU. dma_declare_coherent_memory
++ * and DMA bounce buffers allow the higher-level OHCI host driver to
++ * work. However, the dma API doesn't handle dma mapping failures
++ * well(dma_sg_map() is a prime example), so it is unusable.
++ *
++ * This HC pretends be a PIO-ish controller and uses the kernel's
++ * generic allocator for the entire SRAM. Using the USB core's
++ * usb_operations, we provide hcd_buffer_alloc/free. Using the OHCI's
++ * ohci_ops, we provide memory management for OHCI's TDs and EDs. We
++ * internally queue a URB's TDs until enough dma memory is available
++ * to enqueue them with the HC.
++ *
++ * Written from sparse documentation from Toshiba and Sharp's driver
++ * for the 2.4 kernel,
++ * usb-ohci-tc6393.c(C) Copyright 2004 Lineo Solutions, Inc.
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License version 2 as
++ * published by the Free Software Foundation.
++ */
++
++#include <linux/fs.h>
++#include <linux/mount.h>
++#include <linux/pagemap.h>
++#include <linux/init.h>
++#include <linux/namei.h>
++#include <linux/sched.h>
++
++#include <linux/genalloc.h>
++#include <asm/hardware/tmio.h>
++#include <linux/dma-mapping.h>
++
++/*-------------------------------------------------------------------------*/
++
++/*
++ * USB Host Controller Configuration Register
++ */
++struct tmio_uhccr {
++ u8 x00[8];
++ u8 revid; /* 0x08 Revision ID */
++ u8 x01[7];
++ u16 basel; /* 0x10 USB Control Register Base Address Low */
++ u16 baseh; /* 0x12 USB Control Register Base Address High */
++ u8 x02[0x2c];
++ u8 ilme; /* 0x40 Internal Local Memory Enable */
++ u8 x03[0x0b];
++ u16 pm; /* 0x4c Power Management */
++ u8 x04[2];
++ u8 intc; /* 0x50 INT Control */
++ u8 x05[3];
++ u16 lmw1l; /* 0x54 Local Memory Window 1 LMADRS Low */
++ u16 lmw1h; /* 0x56 Local Memory Window 1 LMADRS High */
++ u16 lmw1bl; /* 0x58 Local Memory Window 1 Base Address Low */
++ u16 lmw1bh; /* 0x5A Local Memory Window 1 Base Address High */
++ u16 lmw2l; /* 0x5C Local Memory Window 2 LMADRS Low */
++ u16 lmw2h; /* 0x5E Local Memory Window 2 LMADRS High */
++ u16 lmw2bl; /* 0x60 Local Memory Window 2 Base Address Low */
++ u16 lmw2bh; /* 0x62 Local Memory Window 2 Base Address High */
++ u8 x06[0x98];
++ u8 misc; /* 0xFC MISC */
++ u8 x07[3];
++} __attribute__((packed));
++
++union tmio_uhccr_pm {
++ u16 raw;
++struct {
++ unsigned gcken:1; /* D0 */
++ unsigned ckrnen:1; /* D1 */
++ unsigned uspw1:1; /* D2 USB Port 1 Power Disable */
++ unsigned uspw2:1; /* D3 USB Port 2 Power Disable */
++ unsigned x00:4;
++ unsigned pmee:1; /* D8 */
++ unsigned x01:6;
++ unsigned pmes:1; /* D15 */
++} __attribute__((packed));
++} __attribute__((packed));
++
++/*-------------------------------------------------------------------------*/
++
++struct tmio_hcd {
++ struct tmio_uhccr __iomem *ccr;
++};
++
++#define hcd_to_tmio(hcd) ((struct tmio_hcd *)(hcd_to_ohci(hcd) + 1))
++#define ohci_to_tmio(ohci) ((struct tmio_hcd *)(ohci + 1))
++
++/*-------------------------------------------------------------------------*/
++
++static void tmio_stop_hc(struct device *dev)
++{
++ struct tmio_device *tdev = dev_to_tdev(dev);
++ struct usb_hcd *hcd = dev_get_drvdata(dev);
++ struct tmio_hcd *tmio = hcd_to_tmio(hcd);
++ struct tmio_uhccr __iomem *ccr = tmio->ccr;
++ union tmio_uhccr_pm pm = {0};
++
++ pm.gcken = 1;
++ pm.ckrnen = 1;
++ pm.uspw1 = 1;
++ pm.uspw2 = 1;
++
++ iowrite8(0, &ccr->intc);
++ iowrite8(0, &ccr->ilme);
++ iowrite16(0, &ccr->basel);
++ iowrite16(0, &ccr->baseh);
++ iowrite16(pm.raw, &ccr->pm);
++
++ tdev->ops->function(dev, 0);
++ tdev->ops->clock(dev, 0);
++}
++
++static void tmio_start_hc(struct device *dev)
++{
++ struct tmio_device *tdev = dev_to_tdev(dev);
++ struct usb_hcd *hcd = dev_get_drvdata(dev);
++ struct tmio_hcd *tmio = hcd_to_tmio(hcd);
++ struct tmio_uhccr __iomem *ccr = tmio->ccr;
++ union tmio_uhccr_pm pm = {0};
++ unsigned long base = hcd->rsrc_start;
++
++ pm.pmes = 1;
++ pm.pmee = 1;
++ pm.ckrnen = 1;
++ pm.gcken = 1;
++
++ tdev->ops->clock(dev, 1);
++ tdev->ops->function(dev, 1);
++
++ iowrite16(pm.raw, &ccr->pm);
++ iowrite16(base, &ccr->basel);
++ iowrite16(base >> 16, &ccr->baseh);
++ iowrite8(1, &ccr->ilme);
++ iowrite8(2, &ccr->intc);
++
++ dev_info(dev, "revision %d @ 0x%08llx, irq %d\n",
++ ioread8(&ccr->revid), hcd->rsrc_start, hcd->irq);
++}
++
++static int usb_hcd_tmio_probe(const struct hc_driver *driver,
++ struct device *dev)
++{
++ struct tmio_device *tdev = dev_to_tdev(dev);
++ struct resource *config = tmio_resource_config(dev);
++ struct resource *regs = tmio_resource_control(dev);
++ struct resource *sram = tmio_resource_mem(dev);
++ struct resource *irq = tmio_resource_irq(dev);
++ struct tmio_hcd *tmio;
++ struct ohci_hcd *ohci;
++ struct usb_hcd *hcd;
++ int retval;
++
++ if (usb_disabled())
++ return -ENODEV;
++
++ hcd = usb_create_hcd(driver, dev, dev->bus_id);
++ if (!hcd) {
++ retval = -ENOMEM;
++ goto err_usb_create_hcd;
++ }
++
++ retval = request_resource(tdev->iomem, config);
++ if (retval)
++ goto err_request_config_resource;
++
++ retval = request_resource(tdev->iomem, regs);
++ if (retval)
++ goto err_request_regs_resource;
++
++ retval = request_resource(tdev->iomem, sram);
++ if (retval)
++ goto err_request_sram_resource;
++
++ hcd->rsrc_start = regs->start;
++ hcd->rsrc_len = regs->end - regs->start + 1;
++
++ tmio = hcd_to_tmio(hcd);
++
++ tmio->ccr = ioremap(config->start, config->end - config->start + 1);
++ if (!tmio->ccr) {
++ retval = -ENOMEM;
++ goto err_ioremap_ccr;
++ }
++
++ hcd->regs = ioremap(hcd->rsrc_start, hcd->rsrc_len);
++ if (!hcd->regs) {
++ retval = -ENOMEM;
++ goto err_ioremap_regs;
++ }
++
++ if (dma_declare_coherent_memory(dev, sram->start,
++ sram->start,
++ sram->end - sram->start + 1,
++ DMA_MEMORY_MAP) != DMA_MEMORY_MAP) {
++ retval = -EBUSY;
++ goto err_dma_declare;
++ }
++
++ retval = dmabounce_register_dev(dev, 512, 4096);
++ if (retval)
++ goto err_dmabounce_register_dev;
++
++ tmio_start_hc(dev);
++ ohci = hcd_to_ohci(hcd);
++ ohci_hcd_init(ohci);
++
++ retval = usb_add_hcd(hcd, irq->start, IRQF_DISABLED);
++
++ if (retval == 0)
++ return retval;
++
++ tmio_stop_hc(dev);
++
++ dmabounce_unregister_dev(dev);
++err_dmabounce_register_dev:
++ dma_release_declared_memory(dev);
++err_dma_declare:
++ iounmap(hcd->regs);
++err_ioremap_regs:
++ iounmap(tmio->ccr);
++err_ioremap_ccr:
++ release_resource(sram);
++err_request_sram_resource:
++ release_resource(regs);
++err_request_regs_resource:
++ release_resource(config);
++err_request_config_resource:
++ usb_put_hcd(hcd);
++err_usb_create_hcd:
++
++ return retval;
++}
++
++static void usb_hcd_tmio_remove(struct usb_hcd *hcd, struct device *dev)
++{
++ struct tmio_hcd *tmio = hcd_to_tmio(hcd);
++
++ usb_remove_hcd(hcd);
++ tmio_stop_hc(dev);
++ dmabounce_unregister_dev(dev);
++ dma_release_declared_memory(dev);
++ iounmap(hcd->regs);
++ iounmap(tmio->ccr);
++ release_resource(tmio_resource_mem(dev));
++ release_resource(tmio_resource_control(dev));
++ release_resource(tmio_resource_config(dev));
++ usb_put_hcd(hcd);
++}
++
++static int __devinit
++ohci_tmio_start(struct usb_hcd *hcd)
++{
++ struct ohci_hcd *ohci = hcd_to_ohci(hcd);
++ int retval;
++
++ if ((retval = ohci_init(ohci)) < 0)
++ return retval;
++
++ if ((retval = ohci_run(ohci)) < 0) {
++ err("can't start %s", hcd->self.bus_name);
++ ohci_stop(hcd);
++ return retval;
++ }
++
++ return 0;
++}
++
++static const struct hc_driver ohci_tmio_hc_driver = {
++ .description = hcd_name,
++ .product_desc = "TMIO OHCI USB Host Controller",
++ .hcd_priv_size = sizeof(struct ohci_hcd) + sizeof (struct tmio_hcd),
++
++ /* generic hardware linkage */
++ .irq = ohci_irq,
++ .flags = HCD_USB11 | HCD_MEMORY,
++
++ /* basic lifecycle operations */
++ .start = ohci_tmio_start,
++ .stop = ohci_stop,
++ .shutdown = ohci_shutdown,
++
++ /* managing i/o requests and associated device resources */
++ .urb_enqueue = ohci_urb_enqueue,
++ .urb_dequeue = ohci_urb_dequeue,
++ .endpoint_disable = ohci_endpoint_disable,
++
++ /* scheduling support */
++ .get_frame_number = ohci_get_frame,
++
++ /* root hub support */
++ .hub_status_data = ohci_hub_status_data,
++ .hub_control = ohci_hub_control,
++ .hub_irq_enable = ohci_rhsc_enable,
++#ifdef CONFIG_PM
++ .bus_suspend = ohci_bus_suspend,
++ .bus_resume = ohci_bus_resume,
++#endif
++ .start_port_reset = ohci_start_port_reset,
++};
++
++/*-------------------------------------------------------------------------*/
++static struct device_driver tmio_ohci;
++
++static int
++tmio_dmabounce_check(struct device *dev, dma_addr_t dma, size_t size, void *data)
++{
++ struct resource *sram = data;
++#ifdef DEBUG
++ printk(KERN_ERR "tmio_dmabounce_check: %08x %d\n", dma, size);
++#endif
++
++ if (dev->driver != &tmio_ohci)
++ return 0;
++
++ if (sram->start <= dma && dma + size <= sram->end)
++ return 0;
++
++ return 1;
++}
++
++static u64 dma_mask = DMA_32BIT_MASK;
++
++static int ohci_hcd_tmio_drv_probe(struct device *dev)
++{
++ struct resource *sram = tmio_resource_mem(dev);
++
++ dev->dma_mask = &dma_mask;
++ dev->coherent_dma_mask = DMA_32BIT_MASK;
++
++ dmabounce_register_checker(tmio_dmabounce_check, sram);
++
++ return usb_hcd_tmio_probe(&ohci_tmio_hc_driver, dev);
++}
++
++static int ohci_hcd_tmio_drv_remove(struct device *dev)
++{
++ struct usb_hcd *hcd = dev_get_drvdata(dev);
++ struct resource *sram = tmio_resource_mem(dev);
++
++ usb_hcd_tmio_remove(hcd, dev);
++
++ dev_set_drvdata(dev, NULL);
++
++ dmabounce_remove_checker(tmio_dmabounce_check, sram);
++
++ return 0;
++}
++
++#ifdef CONFIG_PM
++static int ohci_hcd_tmio_drv_suspend(struct device *dev, pm_message_t state)
++{
++ struct usb_hcd *hcd = dev_get_drvdata(dev);
++ struct ohci_hcd *ohci = hcd_to_ohci(hcd);
++
++ if (time_before(jiffies, ohci->next_statechange))
++ msleep(5);
++ ohci->next_statechange = jiffies;
++
++ tmio_stop_hc(dev);
++ hcd->state = HC_STATE_SUSPENDED;
++ dev->power.power_state = PMSG_SUSPEND;
++
++ return 0;
++}
++
++static int ohci_hcd_tmio_drv_resume(struct device *dev)
++{
++ struct usb_hcd *hcd = dev_get_drvdata(dev);
++ struct ohci_hcd *ohci = hcd_to_ohci(hcd);
++
++ if (time_before(jiffies, ohci->next_statechange))
++ msleep(5);
++ ohci->next_statechange = jiffies;
++
++ tmio_start_hc(dev);
++
++ dev->power.power_state = PMSG_ON;
++ usb_hcd_resume_root_hub(hcd);
++
++ return 0;
++}
++#endif
++
++static void usb_hcd_device_shutdown(struct device *dev)
++{
++ struct usb_hcd *hcd = dev_get_drvdata(dev);
++
++ if (hcd->driver->shutdown)
++ hcd->driver->shutdown(hcd);
++}
++
++static struct device_driver tmio_ohci = {
++ .owner = THIS_MODULE,
++ .name = TMIO_NAME_OHCI,
++ .bus = &tmio_bus_type,
++ .probe = ohci_hcd_tmio_drv_probe,
++ .remove = ohci_hcd_tmio_drv_remove,
++ .shutdown = usb_hcd_device_shutdown,
++#ifdef CONFIG_PM
++ .suspend = ohci_hcd_tmio_drv_suspend,
++ .resume = ohci_hcd_tmio_drv_resume,
++#endif
++};
++
+Index: linux-2.6.23/drivers/usb/host/Kconfig
+===================================================================
+--- linux-2.6.23.orig/drivers/usb/host/Kconfig 2007-10-10 00:31:38.000000000 +0400
++++ linux-2.6.23/drivers/usb/host/Kconfig 2007-11-12 13:46:53.086559913 +0300
+@@ -101,6 +101,7 @@
+ depends on USB && USB_ARCH_HAS_OHCI
+ select ISP1301_OMAP if MACH_OMAP_H2 || MACH_OMAP_H3
+ select I2C if ARCH_PNX4008
++ select GENERIC_ALLOCATOR if TOSHIBA_TC6393XB
+ ---help---
+ The Open Host Controller Interface (OHCI) is a standard for accessing
+ USB 1.1 host controller hardware. It does more in hardware than Intel's
+Index: linux-2.6.23/drivers/usb/host/ohci-hcd.c
+===================================================================
+--- linux-2.6.23.orig/drivers/usb/host/ohci-hcd.c 2007-11-12 13:46:52.894560883 +0300
++++ linux-2.6.23/drivers/usb/host/ohci-hcd.c 2007-11-13 01:03:53.950798640 +0300
+@@ -915,6 +915,10 @@
+ #define PLATFORM_DRIVER usb_hcd_pnx4008_driver
+ #endif
+
++#ifdef CONFIG_TOSHIBA_TC6393XB
++#include "ohci-tmio.c"
++#define DEVICE_DRIVER tmio_ohci
++#endif
+
+ #ifdef CONFIG_USB_OHCI_HCD_PPC_OF
+ #include "ohci-ppc-of.c"
+Index: linux-2.6.23/drivers/usb/Kconfig
+===================================================================
+--- linux-2.6.23.orig/drivers/usb/Kconfig 2007-10-10 00:31:38.000000000 +0400
++++ linux-2.6.23/drivers/usb/Kconfig 2007-11-12 13:46:53.090570777 +0300
+@@ -42,6 +42,7 @@
+ # MIPS:
+ default y if SOC_AU1X00
+ # more:
++ default y if TOSHIBA_TC6393XB
+ default PCI
+
+ # some non-PCI hcds implement EHCI
+Index: linux-2.6.23/arch/arm/common/Kconfig
+===================================================================
+--- linux-2.6.23.orig/arch/arm/common/Kconfig 2007-11-12 13:46:48.754297930 +0300
++++ linux-2.6.23/arch/arm/common/Kconfig 2007-11-12 13:46:53.090570777 +0300
+@@ -35,3 +35,4 @@
+
+ config TOSHIBA_TC6393XB
+ bool
++ select DMABOUNCE
diff --git a/packages/linux/linux-rp-2.6.23/tosa_udc_use_gpio_vbus.patch b/packages/linux/linux-rp-2.6.23/tosa_udc_use_gpio_vbus.patch
new file mode 100644
index 0000000000..ca98926049
--- /dev/null
+++ b/packages/linux/linux-rp-2.6.23/tosa_udc_use_gpio_vbus.patch
@@ -0,0 +1,100 @@
+From dbaryshkov@gmail.com Fri Dec 7 00:07:07 2007
+Return-Path: <SRS0=x/UTRF0x=Q6=lists.arm.linux.org.uk=linux-arm-kernel-bounces+openembedded=haerwu.biz@haerwu.biz>
+X-Spam-Checker-Version: SpamAssassin 3.1.7 (2006-10-05) on 3073.s.tld.pl
+X-Spam-Level:
+X-Spam-Status: No, score=-1.5 required=5.0 tests=BAYES_00,SPF_FAIL
+ autolearn=disabled version=3.1.7
+Delivered-To: haerwu.biz-marcin@haerwu.biz
+Received: (qmail 27813 invoked by uid 813007); 7 Dec 2007 00:02:29 -0000
+Delivered-To: haerwu.biz-openembedded@haerwu.biz
+Received: (qmail 27803 invoked by uid 813007); 7 Dec 2007 00:02:28 -0000
+X-clamdmail: clamdmail 0.18a
+Received: from zeniv.linux.org.uk (195.92.253.2)
+ by smtp.host4.kei.pl with SMTP; 7 Dec 2007 00:02:28 -0000
+Received: from [2002:4e20:1eda:1:201:3dff:fe00:156] (helo=lists.arm.linux.org.uk)
+ by ZenIV.linux.org.uk with esmtpsa (Exim 4.63 #1 (Red Hat Linux))
+ id 1J0Q9g-0005Vf-7a; Thu, 06 Dec 2007 23:29:23 +0000
+Received: from localhost ([127.0.0.1] helo=lists.arm.linux.org.uk)
+ by lists.arm.linux.org.uk with esmtp (Exim 4.50)
+ id 1J0Pvo-0000d6-NY; Thu, 06 Dec 2007 23:15:02 +0000
+Received: from ug-out-1314.google.com ([66.249.92.171])
+ by lists.arm.linux.org.uk with esmtp (Exim 4.50) id 1J0PoR-0000bz-SM
+ for linux-arm-kernel@lists.arm.linux.org.uk;
+ Thu, 06 Dec 2007 23:10:07 +0000
+Received: by ug-out-1314.google.com with SMTP id 29so955850ugc
+ for <linux-arm-kernel@lists.arm.linux.org.uk>;
+ Thu, 06 Dec 2007 15:07:14 -0800 (PST)
+DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma;
+ h=domainkey-signature:received:received:date:to:subject:message-id:mime-version:content-type:content-disposition:user-agent:from;
+ bh=kjQKYxTmbZXtFO0UaAnYmPE6Fk1iyXNHPNOw6H2kP6U=;
+ b=vpDrUZqfbWhRrhxvozaHlI9ZC2UwfZvkqIrEeyX5rmqM9rXJTkm1fQQUJvaw43KzvEmxqPXYvpvHQ663HaRRVtN08xB0t2NcDpTm20QUwznzUbze+c4FPTP+86FQbsfhCck86qmrvfBUoDVD1xS2eVR+MxwI63D3rapCtUNpvvo=
+DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma;
+ h=date:to:subject:message-id:mime-version:content-type:content-disposition:user-agent:from;
+ b=D4Cx347bDXn3mf7g77jwn0W3XSXIZh+CiEev1FGhlTeKRZhnM7x1ht4Z+57AiD/dMCrCq8lHqE8Gy0Rv7x7krF2bmUJaiO7HXfxmLWY+msGF2nTymkr1NKsqipQRIVCcEf0ZBKcIrT0dK94QhuP4Ea4Sb/YOfb2YwrJPyNWsISo=
+Received: by 10.78.165.16 with SMTP id n16mr3075565hue.1196982433587;
+ Thu, 06 Dec 2007 15:07:13 -0800 (PST)
+Received: from doriath.ww600.siemens.net ( [91.122.9.34])
+ by mx.google.com with ESMTPS id k5sm5631nfh.2007.12.06.15.07.12
+ (version=SSLv3 cipher=OTHER); Thu, 06 Dec 2007 15:07:12 -0800 (PST)
+Date: Fri, 7 Dec 2007 02:07:07 +0300
+To: linux-arm-kernel@lists.arm.linux.org.uk
+Message-ID: <20071206230707.GA13639@doriath.ww600.siemens.net>
+MIME-Version: 1.0
+Content-Type: text/plain;
+ charset=us-ascii
+Content-Disposition: inline
+User-Agent: Mutt/1.5.17 (2007-11-01)
+From: Dmitry Baryshkov <dbaryshkov@gmail.com>
+Subject: [PATCH 2/2] tosa_udc_use_gpio_vbus.patch
+X-BeenThere: linux-arm-kernel@lists.arm.linux.org.uk
+X-Mailman-Version: 2.1.5
+Precedence: list
+List-Id: ARM Linux kernel discussions <linux-arm-kernel.lists.arm.linux.org.uk>
+List-Unsubscribe: <http://lists.arm.linux.org.uk/mailman/listinfo/linux-arm-kernel>,
+ <mailto:linux-arm-kernel-request@lists.arm.linux.org.uk?subject=unsubscribe>
+List-Archive: <http://lists.arm.linux.org.uk/pipermail/linux-arm-kernel>
+List-Post: <mailto:linux-arm-kernel@lists.arm.linux.org.uk>
+List-Help: <mailto:linux-arm-kernel-request@lists.arm.linux.org.uk?subject=help>
+List-Subscribe: <http://lists.arm.linux.org.uk/mailman/listinfo/linux-arm-kernel>,
+ <mailto:linux-arm-kernel-request@lists.arm.linux.org.uk?subject=subscribe>
+Sender: linux-arm-kernel-bounces@lists.arm.linux.org.uk
+Errors-To: linux-arm-kernel-bounces+openembedded=haerwu.biz+openembedded=haerwu.biz@lists.arm.linux.org.uk
+X-Length: 4865
+Status: R
+X-Status: NC
+X-KMail-EncryptionState:
+X-KMail-SignatureState:
+X-KMail-MDN-Sent:
+
+Use gpio_vbus instead of udc_is_connected for udc on tosa.
+
+Signed-off-by: Dmitry Baryshkov <dbaryshkov@gmail.com>
+
+Index: linux-test/arch/arm/mach-pxa/tosa.c
+===================================================================
+--- linux-test.orig/arch/arm/mach-pxa/tosa.c 2007-12-06 12:43:04.301350179 +0300
++++ linux-test/arch/arm/mach-pxa/tosa.c 2007-12-06 12:47:50.881381650 +0300
+@@ -165,15 +165,10 @@ static void tosa_udc_command(int cmd)
+ }
+ }
+
+-static int tosa_udc_is_connected(void)
+-{
+- return ((GPLR(TOSA_GPIO_USB_IN) & GPIO_bit(TOSA_GPIO_USB_IN)) == 0);
+-}
+-
+-
+ static struct pxa2xx_udc_mach_info udc_info __initdata = {
+ .udc_command = tosa_udc_command,
+- .udc_is_connected = tosa_udc_is_connected,
++ .gpio_vbus = TOSA_GPIO_USB_IN,
++ .gpio_vbus_inverted = 1,
+ };
+
+ /*
+
+-------------------------------------------------------------------
+List admin: http://lists.arm.linux.org.uk/mailman/listinfo/linux-arm-kernel
+FAQ: http://www.arm.linux.org.uk/mailinglists/faq.php
+Etiquette: http://www.arm.linux.org.uk/mailinglists/etiquette.php
+
diff --git a/packages/linux/linux-rp-2.6.23/usb-ohci-hooks-r3.patch b/packages/linux/linux-rp-2.6.23/usb-ohci-hooks-r3.patch
new file mode 100644
index 0000000000..08f4f15211
--- /dev/null
+++ b/packages/linux/linux-rp-2.6.23/usb-ohci-hooks-r3.patch
@@ -0,0 +1,47 @@
+Signed-off-by: Dmitry Baryshkov <dbaryshkov@gmail.com>
+Index: linux-2.6.23/drivers/usb/host/ohci-hcd.c
+===================================================================
+--- linux-2.6.23.orig/drivers/usb/host/ohci-hcd.c 2007-11-12 12:36:12.598560065 +0300
++++ linux-2.6.23/drivers/usb/host/ohci-hcd.c 2007-11-12 12:36:16.614310504 +0300
+@@ -930,6 +930,7 @@
+ !defined(PLATFORM_DRIVER) && \
+ !defined(OF_PLATFORM_DRIVER) && \
+ !defined(SA1111_DRIVER) && \
++ !defined(DEVICE_DRIVER) && \
+ !defined(PS3_SYSTEM_BUS_DRIVER)
+ #error "missing bus glue for ohci-hcd"
+ #endif
+@@ -969,6 +970,12 @@
+ goto error_sa1111;
+ #endif
+
++#ifdef DEVICE_DRIVER
++ retval = driver_register(&DEVICE_DRIVER);
++ if (retval < 0)
++ goto error_device;
++#endif
++
+ #ifdef PCI_DRIVER
+ retval = pci_register_driver(&PCI_DRIVER);
+ if (retval < 0)
+@@ -981,6 +988,10 @@
+ #ifdef PCI_DRIVER
+ error_pci:
+ #endif
++#ifdef DEVICE_DRIVER
++ error_device:
++ driver_unregister(&DEVICE_DRIVER);
++#endif
+ #ifdef SA1111_DRIVER
+ sa1111_driver_unregister(&SA1111_DRIVER);
+ error_sa1111:
+@@ -1006,6 +1017,9 @@
+ #ifdef PCI_DRIVER
+ pci_unregister_driver(&PCI_DRIVER);
+ #endif
++#ifdef DEVICE_DRIVER
++ driver_unregister(&DEVICE_DRIVER);
++#endif
+ #ifdef SA1111_DRIVER
+ sa1111_driver_unregister(&SA1111_DRIVER);
+ #endif
diff --git a/packages/linux/linux-rp.inc b/packages/linux/linux-rp.inc
index 754f3b95bf..0f81bd4221 100644
--- a/packages/linux/linux-rp.inc
+++ b/packages/linux/linux-rp.inc
@@ -4,6 +4,7 @@ LICENSE = "GPL"
inherit kernel
+DEPENDS_collie += "bc-native"
RPROVIDES_kernel-base += "hostap-modules"
DOSRC = "http://www.do13.de/openzaurus/patches"
diff --git a/packages/linux/linux-rp_2.6.17.bb b/packages/linux/linux-rp_2.6.17.bb
index 329cd01217..de898b3f11 100644
--- a/packages/linux/linux-rp_2.6.17.bb
+++ b/packages/linux/linux-rp_2.6.17.bb
@@ -1,6 +1,8 @@
require linux-rp.inc
-PR = "r37"
+PR = "r38"
+
+DEFAULT_PREFERENCE_poodle = "99"
# Handy URLs
# git://rsync.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git \
diff --git a/packages/linux/linux-rp_2.6.20.bb b/packages/linux/linux-rp_2.6.20.bb
index b818b0f3e8..60305488ca 100644
--- a/packages/linux/linux-rp_2.6.20.bb
+++ b/packages/linux/linux-rp_2.6.20.bb
@@ -2,6 +2,8 @@ require linux-rp.inc
PR = "r19"
+DEFAULT_PREFERENCE_poodle = "-99"
+
# Handy URLs
# git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git;protocol=git;tag=ef7d1b244fa6c94fb76d5f787b8629df64ea4046
# http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.18.tar.bz2
diff --git a/packages/linux/linux-rp_2.6.21.bb b/packages/linux/linux-rp_2.6.21.bb
index 795e727ed3..d239b2aa32 100644
--- a/packages/linux/linux-rp_2.6.21.bb
+++ b/packages/linux/linux-rp_2.6.21.bb
@@ -1,7 +1,8 @@
require linux-rp.inc
-PR = "r10"
+PR = "r12"
+DEFAULT_PREFERENCE_poodle = "-99"
DEFAULT_PREFERENCE_collie = "1"
# Handy URLs
diff --git a/packages/linux/linux-rp_2.6.22.bb b/packages/linux/linux-rp_2.6.22.bb
index 939e630624..55c37af4c9 100644
--- a/packages/linux/linux-rp_2.6.22.bb
+++ b/packages/linux/linux-rp_2.6.22.bb
@@ -1,6 +1,8 @@
require linux-rp.inc
-PR = "r10"
+PR = "r11"
+
+DEFAULT_PREFERENCE_poodle = "-99"
# Handy URLs
# git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git;protocol=git;tag=ef7d1b244fa6c94fb76d5f787b8629df64ea4046
diff --git a/packages/linux/linux-rp_2.6.23.bb b/packages/linux/linux-rp_2.6.23.bb
index ab0fe13805..53625791a7 100644
--- a/packages/linux/linux-rp_2.6.23.bb
+++ b/packages/linux/linux-rp_2.6.23.bb
@@ -1,9 +1,10 @@
require linux-rp.inc
-PR = "r5"
+PR = "r10"
DEFAULT_PREFERENCE_qemuarm = "-1"
DEFAULT_PREFERENCE_qemux86 = "-1"
+DEFAULT_PREFERENCE_poodle = "-99"
# Handy URLs
# git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git;protocol=git;tag=ef7d1b244fa6c94fb76d5f787b8629df64ea4046
@@ -50,6 +51,7 @@ SRC_URI = "http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.23.tar.bz2 \
${RPSRC}/pxa_cf_initorder_hack-r1.patch;patch=1;status=hack \
file://pxa-serial-hack.patch;patch=1;status=hack \
file://connectplus-remove-ide-HACK.patch;patch=1;status=hack \
+ file://connectplus-prevent-oops-HACK.patch;patch=1;status=hack \
file://squashfs3.0-2.6.15.patch;patch=1;status=external \
file://uvesafb-0.1-rc3-2.6.22.patch;patch=1;status=external \
file://htcuni.patch;patch=1 \
@@ -96,9 +98,6 @@ SRC_URI_append_collie = "\
# wm97xx-lg13-r0.patch, tosa-power-r18.patch and tosa-bluetooth-r8.patch
# were adapted from $(DOSRC) to apply cleanly
-# FIXME:
-#- ${CHSRC}/usb-ohci-hooks-r1.patch;patch=1 \
-#- file://tmio-ohci-r6.patch;patch=1 \
SRC_URI_append_tosa = "\
${CHSRC}/tmio-core-r4.patch;patch=1 \
file://tmio-tc6393-r8.patch;patch=1 \
@@ -121,7 +120,12 @@ SRC_URI_append_tosa = "\
file://wm9712-reset-loop-r2.patch;patch=1 \
file://tosa-lcdnoise-r1.patch;patch=1 \
file://tosa-lcdnoise-r1-fix-r0.patch;patch=1 \
- "
+ file://arm-dma-coherent.patch;patch=1 \
+ file://usb-ohci-hooks-r3.patch;patch=1 \
+ file://tmio-ohci-r9.patch;patch=1 \
+ file://pxa2xx_udc_support_inverse_vbus.patch;patch=1 \
+ file://tosa_udc_use_gpio_vbus.patch;patch=1 \
+ "
# ${DOSRC}/tosa-asoc-r1.patch;patch=1 "
SRC_URI_append_htcuniversal ="\
diff --git a/packages/linux/linux.inc b/packages/linux/linux.inc
index 2fb0ce8177..a08c3a240b 100644
--- a/packages/linux/linux.inc
+++ b/packages/linux/linux.inc
@@ -13,11 +13,16 @@ RPSRC = "http://www.rpsys.net/openzaurus/patches/archive"
# Specify the commandline for your device
-#boot from mmc
+# Boot from mmc
CMDLINE_at91sam9263ek = "mem=64M console=ttyS0,115200 root=/dev/mmcblk0p1 rootfstype=ext2 rootdelay=5"
-#boot from nfs
+# Boot from nfs
#CMDLINE_at91sam9263ek = "mem=64M console=ttyS0,115200 root=301 root=/dev/nfs nfsroot=172.20.3.1:/data/at91 ip=172.20.0.5:::255.255.0.0"
+# Set the verbosity of kernel messages during runtime
+# You can define CMDLINE_DEBUG in your local.conf or distro.conf to override this behaviour
+CMDLINE_DEBUG ?= '${@base_conditional("DISTRO_TYPE", "release", "quiet", "debug",d)}'
+CMDLINE_append = " ${CMDLINE_DEBUG} "
+
do_configure_prepend() {
echo "" > ${S}/.config
@@ -41,11 +46,19 @@ do_configure_prepend() {
echo "# CONFIG_OABI_COMPAT is not set" >> ${S}/.config
fi
+ #
+ # endian support
+ #
+ if [ "${SITEINFO_ENDIANESS}" = "be" ]; then
+ echo "CONFIG_CPU_BIG_ENDIAN=y" >> ${S}/.config
+ fi
+
echo "CONFIG_CMDLINE=\"${CMDLINE}\"" >> ${S}/.config
sed -e '/CONFIG_AEABI/d' \
-e '/CONFIG_OABI_COMPAT=/d' \
-e '/CONFIG_CMDLINE=/d' \
+ -e '/CONFIG_CPU_BIG_ENDIAN/d' \
-e '/CONFIG_LOGO=/d' \
-e '/CONFIG_LOGO_LINUX_CLUT224=/d' \
< '${WORKDIR}/defconfig' >>'${S}/.config'
@@ -66,7 +79,7 @@ do_configure_prepend() {
-e '/CONFIG_CMDLINE=/d' \
-i ${S}/.config
echo "CONFIG_INET=y" >> ${S}/.config
- echo "CONFIG_IP_PNP=y" >> ${S}/.config
+ echo "CONFIG_IP_PNP=y" >> ${S}/.config
echo "CONFIG_USB_GADGET=y" >> ${S}/.config
echo "CONFIG_USB_GADGET_SELECTED=y" >> ${S}/.config
echo "CONFIG_USB_ETH=y" >> ${S}/.config
@@ -89,47 +102,35 @@ do_sizecheck() {
fi
}
-do_install_prepend() {
- if test -e arch/${ARCH}/boot/Image ; then
- ln -f arch/${ARCH}/boot/Image arch/${ARCH}/boot/uImage
- fi
-
- if test -e arch/${ARCH}/boot/images/uImage ; then
- ln -f arch/${ARCH}/boot/images/uImage arch/${ARCH}/boot/uImage
- fi
+UBOOT_ENTRYPOINT ?= "20008000"
- if test -e arch/${ARCH}/kernel/vmlinux.lds ; then
- ln -f arch/${ARCH}/kernel/vmlinux.lds arch/${ARCH}/boot/vmlinux
+do_compile_append() {
+ if test "x${KERNEL_IMAGETYPE}" = "xuImage" ; then
+ if test -e arch/${ARCH}/boot/compressed/vmlinux ; then
+ ${OBJCOPY} -O binary -R .note -R .comment -S arch/${ARCH}/boot/compressed/vmlinux linux.bin
+ uboot-mkimage -A ${ARCH} -O linux -T kernel -C none -a ${UBOOT_ENTRYPOINT} -e ${UBOOT_ENTRYPOINT} -n "${DISTRO_NAME}/${PV}/${MACHINE}" -d linux.bin arch/${ARCH}/boot/uImage
+ rm -f linux.bin
+ else
+ ${OBJCOPY} -O binary -R .note -R .comment -S vmlinux linux.bin
+ rm -f linux.bin.gz
+ gzip -9 linux.bin
+ uboot-mkimage -A ${ARCH} -O linux -T kernel -C gzip -a ${UBOOT_ENTRYPOINT} -e ${UBOOT_ENTRYPOINT} -n "${DISTRO_NAME}/${PV}/${MACHINE}" -d linux.bin.gz arch/${ARCH}/boot/uImage
+ rm -f linux.bin.gz
fi
+ fi
}
-UBOOT_ENTRYPOINT ?= "20008000"
-
-KERNEL_IMAGE_BASE_NAME = "${KERNEL_IMAGETYPE}-${PV}-${PR}-${MACHINE}-${DATETIME}"
+KERNEL_IMAGE_BASE_NAME = "${KERNEL_IMAGETYPE}-${PV}-${PR}-${MACHINE}"
KERNEL_IMAGE_SYMLINK_NAME = "${KERNEL_IMAGETYPE}-${MACHINE}"
do_deploy() {
install -d ${DEPLOY_DIR_IMAGE}
install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGE_BASE_NAME}.bin
- tar -cvzf ${DEPLOY_DIR_IMAGE}/modules-${KERNEL_RELEASE}-${PR}-${MACHINE}.tgz -C ${D} lib
-
- if test "x${KERNEL_IMAGETYPE}" = "xuImage" ; then
- if test -e arch/${ARCH}/boot/compressed/vmlinux ; then
- ${OBJCOPY} -O binary -R .note -R .comment -S arch/${ARCH}/boot/compressed/vmlinux linux.bin
- uboot-mkimage -A ${ARCH} -O linux -T kernel -C none -a ${UBOOT_ENTRYPOINT} -e ${UBOOT_ENTRYPOINT} -n "${DISTRO_NAME}/${PV}/${MACHINE}" -d linux.bin ${DEPLOY_DIR_IMAGE}/uImage-${PV}-${PR}-${MACHINE}-${DATETIME}.bin
- rm -f linux.bin
- else
- ${OBJCOPY} -O binary -R .note -R .comment -S vmlinux linux.bin
- rm -f linux.bin.gz
- gzip -9 linux.bin
- uboot-mkimage -A ${ARCH} -O linux -T kernel -C gzip -a ${UBOOT_ENTRYPOINT} -e ${UBOOT_ENTRYPOINT} -n "${DISTRO_NAME}/${PV}/${MACHINE}" -d linux.bin.gz ${DEPLOY_DIR_IMAGE}/uImage-${PV}-${PR}-${MACHINE}-${DATETIME}.bin
- rm -f linux.bin.gz
- fi
- fi
+ tar -cvzf ${DEPLOY_DIR_IMAGE}/modules-${PV}-${PR}-${MACHINE}.tgz -C ${D} lib
- cd ${DEPLOY_DIR_IMAGE}
- rm -f ${KERNEL_IMAGE_SYMLINK_NAME}.bin
- ln -sf ${KERNEL_IMAGE_BASE_NAME}.bin ${KERNEL_IMAGE_SYMLINK_NAME}.bin
+ cd ${DEPLOY_DIR_IMAGE}
+ rm -f ${KERNEL_IMAGE_SYMLINK_NAME}.bin
+ ln -sf ${KERNEL_IMAGE_BASE_NAME}.bin ${KERNEL_IMAGE_SYMLINK_NAME}.bin
}
do_deploy[dirs] = "${S}"
diff --git a/packages/linux/linux/vmware/.mtn2git_empty b/packages/linux/linux/vmware/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux/vmware/.mtn2git_empty
diff --git a/packages/linux/linux/vmware/defconfig b/packages/linux/linux/vmware/defconfig
new file mode 100644
index 0000000000..08396faef8
--- /dev/null
+++ b/packages/linux/linux/vmware/defconfig
@@ -0,0 +1,1242 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.16
+# Sun Mar 26 17:18:35 2006
+#
+CONFIG_X86_32=y
+CONFIG_SEMAPHORE_SLEEPERS=y
+CONFIG_X86=y
+CONFIG_MMU=y
+CONFIG_GENERIC_ISA_DMA=y
+CONFIG_GENERIC_IOMAP=y
+CONFIG_ARCH_MAY_HAVE_PC_FDC=y
+CONFIG_DMI=y
+
+#
+# Code maturity level options
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+
+#
+# General setup
+#
+CONFIG_LOCALVERSION=""
+CONFIG_LOCALVERSION_AUTO=y
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=y
+CONFIG_POSIX_MQUEUE=y
+# CONFIG_BSD_PROCESS_ACCT is not set
+CONFIG_SYSCTL=y
+CONFIG_AUDIT=y
+CONFIG_AUDITSYSCALL=y
+CONFIG_IKCONFIG=y
+CONFIG_IKCONFIG_PROC=y
+CONFIG_INITRAMFS_SOURCE=""
+CONFIG_UID16=y
+CONFIG_VM86=y
+# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
+# CONFIG_EMBEDDED is not set
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_EXTRA_PASS is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_EPOLL=y
+CONFIG_SHMEM=y
+CONFIG_CC_ALIGN_FUNCTIONS=0
+CONFIG_CC_ALIGN_LABELS=0
+CONFIG_CC_ALIGN_LOOPS=0
+CONFIG_CC_ALIGN_JUMPS=0
+CONFIG_SLAB=y
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=0
+# CONFIG_SLOB is not set
+
+#
+# Loadable module support
+#
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+# CONFIG_MODULE_FORCE_UNLOAD is not set
+CONFIG_OBSOLETE_MODPARM=y
+# CONFIG_MODVERSIONS is not set
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_KMOD=y
+
+#
+# Block layer
+#
+# CONFIG_LBD is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+CONFIG_IOSCHED_AS=y
+CONFIG_IOSCHED_DEADLINE=y
+CONFIG_IOSCHED_CFQ=y
+CONFIG_DEFAULT_AS=y
+# CONFIG_DEFAULT_DEADLINE is not set
+# CONFIG_DEFAULT_CFQ is not set
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="anticipatory"
+
+#
+# Processor type and features
+#
+CONFIG_X86_PC=y
+# CONFIG_X86_ELAN is not set
+# CONFIG_X86_VOYAGER is not set
+# CONFIG_X86_NUMAQ is not set
+# CONFIG_X86_SUMMIT is not set
+# CONFIG_X86_BIGSMP is not set
+# CONFIG_X86_VISWS is not set
+# CONFIG_X86_GENERICARCH is not set
+# CONFIG_X86_ES7000 is not set
+# CONFIG_M386 is not set
+# CONFIG_M486 is not set
+CONFIG_M586=y
+# CONFIG_M586TSC is not set
+# CONFIG_M586MMX is not set
+# CONFIG_M686 is not set
+# CONFIG_MPENTIUMII is not set
+# CONFIG_MPENTIUMIII is not set
+# CONFIG_MPENTIUMM is not set
+# CONFIG_MPENTIUM4 is not set
+# CONFIG_MK6 is not set
+# CONFIG_MK7 is not set
+# CONFIG_MK8 is not set
+# CONFIG_MCRUSOE is not set
+# CONFIG_MEFFICEON is not set
+# CONFIG_MWINCHIPC6 is not set
+# CONFIG_MWINCHIP2 is not set
+# CONFIG_MWINCHIP3D is not set
+# CONFIG_MGEODEGX1 is not set
+# CONFIG_MGEODE_LX is not set
+# CONFIG_MCYRIXIII is not set
+# CONFIG_MVIAC3_2 is not set
+CONFIG_X86_GENERIC=y
+CONFIG_X86_CMPXCHG=y
+CONFIG_X86_XADD=y
+CONFIG_X86_L1_CACHE_SHIFT=7
+CONFIG_RWSEM_XCHGADD_ALGORITHM=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_X86_PPRO_FENCE=y
+CONFIG_X86_F00F_BUG=y
+CONFIG_X86_WP_WORKS_OK=y
+CONFIG_X86_INVLPG=y
+CONFIG_X86_BSWAP=y
+CONFIG_X86_POPAD_OK=y
+CONFIG_X86_CMPXCHG64=y
+CONFIG_X86_ALIGNMENT_16=y
+CONFIG_X86_INTEL_USERCOPY=y
+# CONFIG_HPET_TIMER is not set
+# CONFIG_SMP is not set
+CONFIG_PREEMPT_NONE=y
+# CONFIG_PREEMPT_VOLUNTARY is not set
+# CONFIG_PREEMPT is not set
+# CONFIG_X86_UP_APIC is not set
+CONFIG_X86_MCE=y
+CONFIG_X86_MCE_NONFATAL=y
+# CONFIG_TOSHIBA is not set
+# CONFIG_I8K is not set
+# CONFIG_X86_REBOOTFIXUPS is not set
+# CONFIG_MICROCODE is not set
+# CONFIG_X86_MSR is not set
+# CONFIG_X86_CPUID is not set
+
+#
+# Firmware Drivers
+#
+# CONFIG_EDD is not set
+# CONFIG_DELL_RBU is not set
+# CONFIG_DCDBAS is not set
+CONFIG_NOHIGHMEM=y
+# CONFIG_HIGHMEM4G is not set
+# CONFIG_HIGHMEM64G is not set
+CONFIG_VMSPLIT_3G=y
+# CONFIG_VMSPLIT_3G_OPT is not set
+# CONFIG_VMSPLIT_2G is not set
+# CONFIG_VMSPLIT_1G is not set
+CONFIG_PAGE_OFFSET=0xC0000000
+CONFIG_ARCH_FLATMEM_ENABLE=y
+CONFIG_ARCH_SPARSEMEM_ENABLE=y
+CONFIG_ARCH_SELECT_MEMORY_MODEL=y
+CONFIG_SELECT_MEMORY_MODEL=y
+CONFIG_FLATMEM_MANUAL=y
+# CONFIG_DISCONTIGMEM_MANUAL is not set
+# CONFIG_SPARSEMEM_MANUAL is not set
+CONFIG_FLATMEM=y
+CONFIG_FLAT_NODE_MEM_MAP=y
+CONFIG_SPARSEMEM_STATIC=y
+CONFIG_SPLIT_PTLOCK_CPUS=4
+# CONFIG_MATH_EMULATION is not set
+CONFIG_MTRR=y
+# CONFIG_EFI is not set
+# CONFIG_REGPARM is not set
+CONFIG_SECCOMP=y
+CONFIG_HZ_100=y
+# CONFIG_HZ_250 is not set
+# CONFIG_HZ_1000 is not set
+CONFIG_HZ=100
+# CONFIG_KEXEC is not set
+CONFIG_PHYSICAL_START=0x100000
+CONFIG_DOUBLEFAULT=y
+
+#
+# Power management options (ACPI, APM)
+#
+CONFIG_PM=y
+CONFIG_PM_LEGACY=y
+# CONFIG_PM_DEBUG is not set
+# CONFIG_SOFTWARE_SUSPEND is not set
+
+#
+# ACPI (Advanced Configuration and Power Interface) Support
+#
+CONFIG_ACPI=y
+CONFIG_ACPI_SLEEP=y
+CONFIG_ACPI_SLEEP_PROC_FS=y
+# CONFIG_ACPI_SLEEP_PROC_SLEEP is not set
+CONFIG_ACPI_AC=y
+CONFIG_ACPI_BATTERY=y
+CONFIG_ACPI_BUTTON=y
+CONFIG_ACPI_VIDEO=m
+# CONFIG_ACPI_HOTKEY is not set
+CONFIG_ACPI_FAN=y
+CONFIG_ACPI_PROCESSOR=y
+CONFIG_ACPI_THERMAL=y
+# CONFIG_ACPI_ASUS is not set
+# CONFIG_ACPI_IBM is not set
+# CONFIG_ACPI_TOSHIBA is not set
+CONFIG_ACPI_BLACKLIST_YEAR=0
+# CONFIG_ACPI_DEBUG is not set
+CONFIG_ACPI_EC=y
+CONFIG_ACPI_POWER=y
+CONFIG_ACPI_SYSTEM=y
+CONFIG_X86_PM_TIMER=y
+# CONFIG_ACPI_CONTAINER is not set
+
+#
+# APM (Advanced Power Management) BIOS Support
+#
+# CONFIG_APM is not set
+
+#
+# CPU Frequency scaling
+#
+# CONFIG_CPU_FREQ is not set
+
+#
+# Bus options (PCI, PCMCIA, EISA, MCA, ISA)
+#
+CONFIG_PCI=y
+# CONFIG_PCI_GOBIOS is not set
+# CONFIG_PCI_GOMMCONFIG is not set
+# CONFIG_PCI_GODIRECT is not set
+CONFIG_PCI_GOANY=y
+CONFIG_PCI_BIOS=y
+CONFIG_PCI_DIRECT=y
+CONFIG_PCI_MMCONFIG=y
+# CONFIG_PCIEPORTBUS is not set
+CONFIG_PCI_LEGACY_PROC=y
+CONFIG_ISA_DMA_API=y
+CONFIG_ISA=y
+# CONFIG_EISA is not set
+# CONFIG_MCA is not set
+# CONFIG_SCx200 is not set
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+# CONFIG_PCCARD is not set
+
+#
+# PCI Hotplug Support
+#
+# CONFIG_HOTPLUG_PCI is not set
+
+#
+# Executable file formats
+#
+CONFIG_BINFMT_ELF=y
+CONFIG_BINFMT_AOUT=y
+CONFIG_BINFMT_MISC=y
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+# CONFIG_NETDEBUG is not set
+CONFIG_PACKET=y
+# CONFIG_PACKET_MMAP is not set
+CONFIG_UNIX=y
+# CONFIG_NET_KEY is not set
+CONFIG_INET=y
+CONFIG_IP_MULTICAST=y
+# CONFIG_IP_ADVANCED_ROUTER is not set
+CONFIG_IP_FIB_HASH=y
+# CONFIG_IP_PNP is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_IP_MROUTE is not set
+# CONFIG_ARPD is not set
+# CONFIG_SYN_COOKIES is not set
+# CONFIG_INET_AH is not set
+# CONFIG_INET_ESP is not set
+# CONFIG_INET_IPCOMP is not set
+# CONFIG_INET_TUNNEL is not set
+# CONFIG_INET_DIAG is not set
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_BIC=y
+# CONFIG_IPV6 is not set
+# CONFIG_NETFILTER is not set
+
+#
+# DCCP Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_DCCP is not set
+
+#
+# SCTP Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_SCTP is not set
+
+#
+# TIPC Configuration (EXPERIMENTAL)
+#
+# CONFIG_TIPC is not set
+# CONFIG_ATM is not set
+# CONFIG_BRIDGE is not set
+# CONFIG_VLAN_8021Q is not set
+# CONFIG_DECNET is not set
+# CONFIG_LLC2 is not set
+# CONFIG_IPX is not set
+# CONFIG_ATALK is not set
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_NET_DIVERT is not set
+# CONFIG_ECONET is not set
+# CONFIG_WAN_ROUTER is not set
+
+#
+# QoS and/or fair queueing
+#
+# CONFIG_NET_SCHED is not set
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_HAMRADIO is not set
+# CONFIG_IRDA is not set
+# CONFIG_BT is not set
+# CONFIG_IEEE80211 is not set
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=y
+
+#
+# Connector - unified userspace <-> kernelspace linker
+#
+# CONFIG_CONNECTOR is not set
+
+#
+# Memory Technology Devices (MTD)
+#
+# CONFIG_MTD is not set
+
+#
+# Parallel port support
+#
+# CONFIG_PARPORT is not set
+
+#
+# Plug and Play support
+#
+CONFIG_PNP=y
+# CONFIG_PNP_DEBUG is not set
+
+#
+# Protocols
+#
+# CONFIG_ISAPNP is not set
+# CONFIG_PNPBIOS is not set
+# CONFIG_PNPACPI is not set
+
+#
+# Block devices
+#
+CONFIG_BLK_DEV_FD=y
+# CONFIG_BLK_DEV_XD is not set
+# CONFIG_BLK_CPQ_DA is not set
+# CONFIG_BLK_CPQ_CISS_DA is not set
+# CONFIG_BLK_DEV_DAC960 is not set
+# CONFIG_BLK_DEV_UMEM is not set
+# CONFIG_BLK_DEV_COW_COMMON is not set
+CONFIG_BLK_DEV_LOOP=y
+# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+# CONFIG_BLK_DEV_NBD is not set
+# CONFIG_BLK_DEV_SX8 is not set
+# CONFIG_BLK_DEV_UB is not set
+# CONFIG_BLK_DEV_RAM is not set
+CONFIG_BLK_DEV_RAM_COUNT=16
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+
+#
+# ATA/ATAPI/MFM/RLL support
+#
+CONFIG_IDE=y
+CONFIG_BLK_DEV_IDE=y
+
+#
+# Please see Documentation/ide.txt for help/info on IDE drives
+#
+# CONFIG_BLK_DEV_IDE_SATA is not set
+# CONFIG_BLK_DEV_HD_IDE is not set
+# CONFIG_BLK_DEV_IDEDISK is not set
+# CONFIG_IDEDISK_MULTI_MODE is not set
+CONFIG_BLK_DEV_IDECD=y
+# CONFIG_BLK_DEV_IDETAPE is not set
+# CONFIG_BLK_DEV_IDEFLOPPY is not set
+# CONFIG_BLK_DEV_IDESCSI is not set
+# CONFIG_IDE_TASK_IOCTL is not set
+
+#
+# IDE chipset support/bugfixes
+#
+CONFIG_IDE_GENERIC=y
+# CONFIG_BLK_DEV_CMD640 is not set
+# CONFIG_BLK_DEV_IDEPNP is not set
+# CONFIG_BLK_DEV_IDEPCI is not set
+# CONFIG_IDE_ARM is not set
+# CONFIG_IDE_CHIPSETS is not set
+# CONFIG_BLK_DEV_IDEDMA is not set
+# CONFIG_IDEDMA_AUTO is not set
+# CONFIG_BLK_DEV_HD is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+CONFIG_SCSI=y
+CONFIG_SCSI_PROC_FS=y
+
+#
+# SCSI support type (disk, tape, CD-ROM)
+#
+CONFIG_BLK_DEV_SD=y
+# CONFIG_CHR_DEV_ST is not set
+# CONFIG_CHR_DEV_OSST is not set
+CONFIG_BLK_DEV_SR=y
+# CONFIG_BLK_DEV_SR_VENDOR is not set
+# CONFIG_CHR_DEV_SG is not set
+# CONFIG_CHR_DEV_SCH is not set
+
+#
+# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
+#
+# CONFIG_SCSI_MULTI_LUN is not set
+# CONFIG_SCSI_CONSTANTS is not set
+# CONFIG_SCSI_LOGGING is not set
+
+#
+# SCSI Transport Attributes
+#
+CONFIG_SCSI_SPI_ATTRS=y
+# CONFIG_SCSI_FC_ATTRS is not set
+# CONFIG_SCSI_ISCSI_ATTRS is not set
+# CONFIG_SCSI_SAS_ATTRS is not set
+
+#
+# SCSI low-level drivers
+#
+# CONFIG_ISCSI_TCP is not set
+# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
+# CONFIG_SCSI_3W_9XXX is not set
+# CONFIG_SCSI_7000FASST is not set
+# CONFIG_SCSI_ACARD is not set
+# CONFIG_SCSI_AHA152X is not set
+# CONFIG_SCSI_AHA1542 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_DPT_I2O is not set
+# CONFIG_SCSI_IN2000 is not set
+# CONFIG_MEGARAID_NEWGEN is not set
+# CONFIG_MEGARAID_LEGACY is not set
+# CONFIG_MEGARAID_SAS is not set
+# CONFIG_SCSI_SATA is not set
+# CONFIG_SCSI_BUSLOGIC is not set
+# CONFIG_SCSI_DMX3191D is not set
+# CONFIG_SCSI_DTC3280 is not set
+# CONFIG_SCSI_EATA is not set
+# CONFIG_SCSI_FUTURE_DOMAIN is not set
+# CONFIG_SCSI_GDTH is not set
+# CONFIG_SCSI_GENERIC_NCR5380 is not set
+# CONFIG_SCSI_GENERIC_NCR5380_MMIO is not set
+# CONFIG_SCSI_IPS is not set
+# CONFIG_SCSI_INITIO is not set
+# CONFIG_SCSI_INIA100 is not set
+# CONFIG_SCSI_NCR53C406A is not set
+CONFIG_SCSI_SYM53C8XX_2=y
+CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1
+CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16
+CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
+# CONFIG_SCSI_SYM53C8XX_IOMAPPED is not set
+# CONFIG_SCSI_IPR is not set
+# CONFIG_SCSI_PAS16 is not set
+# CONFIG_SCSI_PSI240I is not set
+# CONFIG_SCSI_QLOGIC_FAS is not set
+# CONFIG_SCSI_QLOGIC_FC is not set
+# CONFIG_SCSI_QLOGIC_1280 is not set
+# CONFIG_SCSI_QLA_FC is not set
+# CONFIG_SCSI_LPFC is not set
+# CONFIG_SCSI_SYM53C416 is not set
+# CONFIG_SCSI_DC395x is not set
+# CONFIG_SCSI_DC390T is not set
+# CONFIG_SCSI_T128 is not set
+# CONFIG_SCSI_U14_34F is not set
+# CONFIG_SCSI_ULTRASTOR is not set
+# CONFIG_SCSI_NSP32 is not set
+# CONFIG_SCSI_DEBUG is not set
+
+#
+# Old CD-ROM drivers (not SCSI, not IDE)
+#
+# CONFIG_CD_NO_IDESCSI is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
+
+#
+# Fusion MPT device support
+#
+CONFIG_FUSION=y
+CONFIG_FUSION_SPI=y
+# CONFIG_FUSION_FC is not set
+# CONFIG_FUSION_SAS is not set
+CONFIG_FUSION_MAX_SGE=128
+# CONFIG_FUSION_CTL is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+# CONFIG_IEEE1394 is not set
+
+#
+# I2O device support
+#
+# CONFIG_I2O is not set
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+# CONFIG_TUN is not set
+# CONFIG_NET_SB1000 is not set
+
+#
+# ARCnet devices
+#
+# CONFIG_ARCNET is not set
+
+#
+# PHY device support
+#
+# CONFIG_PHYLIB is not set
+
+#
+# Ethernet (10 or 100Mbit)
+#
+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_LANCE is not set
+# CONFIG_NET_VENDOR_SMC is not set
+# CONFIG_NET_VENDOR_RACAL is not set
+
+#
+# Tulip family network device support
+#
+# CONFIG_NET_TULIP is not set
+# CONFIG_AT1700 is not set
+# CONFIG_DEPCA is not set
+# CONFIG_HP100 is not set
+# CONFIG_NET_ISA is not set
+CONFIG_NET_PCI=y
+CONFIG_PCNET32=y
+# CONFIG_AMD8111_ETH is not set
+# CONFIG_ADAPTEC_STARFIRE is not set
+# CONFIG_AC3200 is not set
+# CONFIG_APRICOT is not set
+# CONFIG_B44 is not set
+# CONFIG_FORCEDETH is not set
+# CONFIG_CS89x0 is not set
+# CONFIG_DGRS is not set
+# CONFIG_EEPRO100 is not set
+# CONFIG_E100 is not set
+# 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
+
+#
+# Ethernet (1000 Mbit)
+#
+# CONFIG_ACENIC is not set
+# CONFIG_DL2K is not set
+# CONFIG_E1000 is not set
+# CONFIG_NS83820 is not set
+# CONFIG_HAMACHI is not set
+# CONFIG_YELLOWFIN is not set
+# CONFIG_R8169 is not set
+# CONFIG_SIS190 is not set
+# CONFIG_SKGE is not set
+# CONFIG_SKY2 is not set
+# CONFIG_SK98LIN is not set
+# CONFIG_VIA_VELOCITY is not set
+# CONFIG_TIGON3 is not set
+# CONFIG_BNX2 is not set
+
+#
+# Ethernet (10000 Mbit)
+#
+# CONFIG_CHELSIO_T1 is not set
+# CONFIG_IXGB is not set
+# CONFIG_S2IO is not set
+
+#
+# Token Ring devices
+#
+# CONFIG_TR is not set
+
+#
+# Wireless LAN (non-hamradio)
+#
+# CONFIG_NET_RADIO is not set
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+# CONFIG_FDDI is not set
+# CONFIG_HIPPI is not set
+# CONFIG_PPP is not set
+# CONFIG_SLIP is not set
+# CONFIG_NET_FC is not set
+# CONFIG_SHAPER is not set
+# CONFIG_NETCONSOLE is not set
+# CONFIG_NETPOLL is not set
+# CONFIG_NET_POLL_CONTROLLER is not set
+
+#
+# ISDN subsystem
+#
+# CONFIG_ISDN is not set
+
+#
+# Telephony Support
+#
+# CONFIG_PHONE is not set
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+
+#
+# Userland interfaces
+#
+CONFIG_INPUT_MOUSEDEV=y
+CONFIG_INPUT_MOUSEDEV_PSAUX=y
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_TSDEV is not set
+# CONFIG_INPUT_EVDEV is not set
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# Input Device Drivers
+#
+CONFIG_INPUT_KEYBOARD=y
+CONFIG_KEYBOARD_ATKBD=y
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_LKKBD is not set
+# CONFIG_KEYBOARD_XTKBD is not set
+# CONFIG_KEYBOARD_NEWTON is not set
+CONFIG_INPUT_MOUSE=y
+CONFIG_MOUSE_PS2=y
+# CONFIG_MOUSE_SERIAL is not set
+# CONFIG_MOUSE_INPORT is not set
+# CONFIG_MOUSE_LOGIBM is not set
+# CONFIG_MOUSE_PC110PAD is not set
+# CONFIG_MOUSE_VSXXXAA is not set
+# CONFIG_INPUT_JOYSTICK is not set
+# CONFIG_INPUT_TOUCHSCREEN is not set
+# CONFIG_INPUT_MISC is not set
+
+#
+# Hardware I/O ports
+#
+CONFIG_SERIO=y
+CONFIG_SERIO_I8042=y
+# CONFIG_SERIO_SERPORT is not set
+# CONFIG_SERIO_CT82C710 is not set
+# CONFIG_SERIO_PCIPS2 is not set
+CONFIG_SERIO_LIBPS2=y
+# CONFIG_SERIO_RAW is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_VT_CONSOLE=y
+CONFIG_HW_CONSOLE=y
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+CONFIG_SERIAL_8250=y
+# CONFIG_SERIAL_8250_CONSOLE is not set
+# CONFIG_SERIAL_8250_ACPI is not set
+CONFIG_SERIAL_8250_NR_UARTS=4
+CONFIG_SERIAL_8250_RUNTIME_UARTS=4
+# CONFIG_SERIAL_8250_EXTENDED is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_CORE=y
+# CONFIG_SERIAL_JSM is not set
+CONFIG_UNIX98_PTYS=y
+CONFIG_LEGACY_PTYS=y
+CONFIG_LEGACY_PTY_COUNT=256
+
+#
+# IPMI
+#
+# CONFIG_IPMI_HANDLER is not set
+
+#
+# Watchdog Cards
+#
+# CONFIG_WATCHDOG is not set
+# CONFIG_HW_RANDOM is not set
+# CONFIG_NVRAM is not set
+# CONFIG_RTC is not set
+# CONFIG_GEN_RTC is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+# CONFIG_APPLICOM is not set
+# CONFIG_SONYPI is not set
+
+#
+# Ftape, the floppy tape device driver
+#
+# CONFIG_FTAPE is not set
+# CONFIG_AGP is not set
+# CONFIG_DRM is not set
+# CONFIG_MWAVE is not set
+# CONFIG_CS5535_GPIO is not set
+# CONFIG_RAW_DRIVER is not set
+# CONFIG_HPET is not set
+# CONFIG_HANGCHECK_TIMER is not set
+
+#
+# TPM devices
+#
+# CONFIG_TCG_TPM is not set
+# CONFIG_TELCLOCK is not set
+
+#
+# I2C support
+#
+# CONFIG_I2C is not set
+
+#
+# SPI support
+#
+# CONFIG_SPI is not set
+# CONFIG_SPI_MASTER is not set
+
+#
+# Dallas's 1-wire bus
+#
+# CONFIG_W1 is not set
+
+#
+# Hardware Monitoring support
+#
+CONFIG_HWMON=y
+# CONFIG_HWMON_VID is not set
+# CONFIG_SENSORS_F71805F is not set
+# CONFIG_SENSORS_HDAPS is not set
+# CONFIG_HWMON_DEBUG_CHIP is not set
+
+#
+# Misc devices
+#
+# CONFIG_IBM_ASM is not set
+
+#
+# Multimedia Capabilities Port drivers
+#
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB is not set
+
+#
+# Graphics support
+#
+CONFIG_FB=y
+CONFIG_FB_CFB_FILLRECT=y
+CONFIG_FB_CFB_COPYAREA=y
+CONFIG_FB_CFB_IMAGEBLIT=y
+# CONFIG_FB_MACMODES is not set
+# CONFIG_FB_MODE_HELPERS is not set
+# CONFIG_FB_TILEBLITTING is not set
+# CONFIG_FB_CIRRUS is not set
+# CONFIG_FB_PM2 is not set
+# CONFIG_FB_CYBER2000 is not set
+# CONFIG_FB_ARC is not set
+# CONFIG_FB_ASILIANT is not set
+# CONFIG_FB_IMSTT is not set
+CONFIG_FB_VGA16=y
+CONFIG_FB_VESA=y
+CONFIG_VIDEO_SELECT=y
+# CONFIG_FB_HGA is not set
+# CONFIG_FB_S1D13XXX is not set
+# CONFIG_FB_NVIDIA is not set
+# CONFIG_FB_RIVA is not set
+# CONFIG_FB_I810 is not set
+# CONFIG_FB_INTEL is not set
+# CONFIG_FB_MATROX is not set
+# CONFIG_FB_RADEON_OLD is not set
+# CONFIG_FB_RADEON is not set
+# CONFIG_FB_ATY128 is not set
+# CONFIG_FB_ATY is not set
+# CONFIG_FB_SAVAGE is not set
+# CONFIG_FB_SIS is not set
+# CONFIG_FB_NEOMAGIC is not set
+# CONFIG_FB_KYRO is not set
+# CONFIG_FB_3DFX is not set
+# CONFIG_FB_VOODOO1 is not set
+# CONFIG_FB_CYBLA is not set
+# CONFIG_FB_TRIDENT is not set
+# CONFIG_FB_GEODE is not set
+# CONFIG_FB_VIRTUAL is not set
+
+#
+# Console display driver support
+#
+CONFIG_VGA_CONSOLE=y
+# CONFIG_MDA_CONSOLE is not set
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
+CONFIG_FONTS=y
+CONFIG_FONT_8x8=y
+CONFIG_FONT_8x16=y
+# CONFIG_FONT_6x11 is not set
+# CONFIG_FONT_7x14 is not set
+# CONFIG_FONT_PEARL_8x8 is not set
+# CONFIG_FONT_ACORN_8x8 is not set
+# CONFIG_FONT_MINI_4x6 is not set
+# CONFIG_FONT_SUN8x16 is not set
+# CONFIG_FONT_SUN12x22 is not set
+# CONFIG_FONT_10x18 is not set
+
+#
+# Logo configuration
+#
+CONFIG_LOGO=y
+# CONFIG_LOGO_LINUX_MONO is not set
+# CONFIG_LOGO_LINUX_VGA16 is not set
+CONFIG_LOGO_LINUX_CLUT224=y
+# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
+
+#
+# Sound
+#
+# CONFIG_SOUND is not set
+
+#
+# USB support
+#
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB_ARCH_HAS_OHCI=y
+CONFIG_USB=y
+# CONFIG_USB_DEBUG is not set
+
+#
+# Miscellaneous USB options
+#
+CONFIG_USB_DEVICEFS=y
+# CONFIG_USB_BANDWIDTH is not set
+# CONFIG_USB_DYNAMIC_MINORS is not set
+# CONFIG_USB_SUSPEND is not set
+# CONFIG_USB_OTG is not set
+
+#
+# USB Host Controller Drivers
+#
+CONFIG_USB_EHCI_HCD=y
+# CONFIG_USB_EHCI_SPLIT_ISO is not set
+# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
+# CONFIG_USB_ISP116X_HCD is not set
+# CONFIG_USB_OHCI_HCD is not set
+CONFIG_USB_UHCI_HCD=y
+# CONFIG_USB_SL811_HCD is not set
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_ACM is not set
+# CONFIG_USB_PRINTER is not set
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# may also be needed; see USB_STORAGE Help for more information
+#
+CONFIG_USB_STORAGE=y
+# CONFIG_USB_STORAGE_DEBUG is not set
+# CONFIG_USB_STORAGE_DATAFAB is not set
+# CONFIG_USB_STORAGE_FREECOM is not set
+# CONFIG_USB_STORAGE_ISD200 is not set
+# CONFIG_USB_STORAGE_DPCM is not set
+# CONFIG_USB_STORAGE_USBAT is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_SDDR55 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+# CONFIG_USB_STORAGE_ALAUDA is not set
+# CONFIG_USB_LIBUSUAL is not set
+
+#
+# USB Input Devices
+#
+CONFIG_USB_HID=y
+CONFIG_USB_HIDINPUT=y
+# CONFIG_USB_HIDINPUT_POWERBOOK is not set
+# CONFIG_HID_FF is not set
+# CONFIG_USB_HIDDEV is not set
+# CONFIG_USB_AIPTEK is not set
+# CONFIG_USB_WACOM is not set
+# CONFIG_USB_ACECAD is not set
+# CONFIG_USB_KBTAB is not set
+# CONFIG_USB_POWERMATE is not set
+# CONFIG_USB_MTOUCH is not set
+# CONFIG_USB_ITMTOUCH is not set
+# CONFIG_USB_EGALAX is not set
+# CONFIG_USB_YEALINK is not set
+# CONFIG_USB_XPAD is not set
+# CONFIG_USB_ATI_REMOTE is not set
+# CONFIG_USB_ATI_REMOTE2 is not set
+# CONFIG_USB_KEYSPAN_REMOTE is not set
+# CONFIG_USB_APPLETOUCH is not set
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_MICROTEK is not set
+
+#
+# USB Multimedia devices
+#
+# CONFIG_USB_DABUSB is not set
+
+#
+# Video4Linux support is needed for USB Multimedia device support
+#
+
+#
+# USB Network Adapters
+#
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_RTL8150 is not set
+# CONFIG_USB_USBNET is not set
+# CONFIG_USB_MON is not set
+
+#
+# USB port drivers
+#
+
+#
+# USB Serial Converter support
+#
+# CONFIG_USB_SERIAL is not set
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_EMI62 is not set
+# CONFIG_USB_EMI26 is not set
+# CONFIG_USB_AUERSWALD is not set
+# CONFIG_USB_RIO500 is not set
+# CONFIG_USB_LEGOTOWER is not set
+# CONFIG_USB_LCD is not set
+# CONFIG_USB_LED is not set
+# CONFIG_USB_CYTHERM is not set
+# CONFIG_USB_PHIDGETKIT is not set
+# CONFIG_USB_PHIDGETSERVO is not set
+# CONFIG_USB_IDMOUSE is not set
+# CONFIG_USB_SISUSBVGA is not set
+# CONFIG_USB_LD is not set
+# CONFIG_USB_TEST is not set
+
+#
+# USB DSL modem support
+#
+
+#
+# USB Gadget Support
+#
+# CONFIG_USB_GADGET is not set
+
+#
+# MMC/SD Card support
+#
+# CONFIG_MMC is not set
+
+#
+# InfiniBand support
+#
+# CONFIG_INFINIBAND is not set
+
+#
+# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
+#
+# CONFIG_EDAC is not set
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=y
+# CONFIG_EXT2_FS_XATTR is not set
+# CONFIG_EXT2_FS_XIP is not set
+CONFIG_EXT3_FS=y
+CONFIG_EXT3_FS_XATTR=y
+# CONFIG_EXT3_FS_POSIX_ACL is not set
+# CONFIG_EXT3_FS_SECURITY is not set
+CONFIG_JBD=y
+# CONFIG_JBD_DEBUG is not set
+CONFIG_FS_MBCACHE=y
+# CONFIG_REISERFS_FS is not set
+# CONFIG_JFS_FS is not set
+# CONFIG_FS_POSIX_ACL is not set
+# CONFIG_XFS_FS is not set
+# CONFIG_OCFS2_FS is not set
+CONFIG_MINIX_FS=y
+CONFIG_ROMFS_FS=y
+CONFIG_INOTIFY=y
+# CONFIG_QUOTA is not set
+CONFIG_DNOTIFY=y
+# CONFIG_AUTOFS_FS is not set
+CONFIG_AUTOFS4_FS=y
+CONFIG_FUSE_FS=y
+
+#
+# CD-ROM/DVD Filesystems
+#
+CONFIG_ISO9660_FS=y
+CONFIG_JOLIET=y
+# CONFIG_ZISOFS is not set
+CONFIG_UDF_FS=y
+CONFIG_UDF_NLS=y
+
+#
+# DOS/FAT/NT Filesystems
+#
+CONFIG_FAT_FS=y
+CONFIG_MSDOS_FS=y
+CONFIG_VFAT_FS=y
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+# CONFIG_NTFS_FS is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_KCORE=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_HUGETLBFS is not set
+# CONFIG_HUGETLB_PAGE is not set
+CONFIG_RAMFS=y
+# CONFIG_RELAYFS_FS is not set
+# CONFIG_CONFIGFS_FS is not set
+
+#
+# Miscellaneous filesystems
+#
+# CONFIG_ADFS_FS is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_HFS_FS is not set
+# CONFIG_HFSPLUS_FS is not set
+# CONFIG_BEFS_FS is not set
+# CONFIG_BFS_FS is not set
+# CONFIG_EFS_FS is not set
+CONFIG_CRAMFS=y
+# CONFIG_VXFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+
+#
+# Network File Systems
+#
+# CONFIG_NFS_FS is not set
+# CONFIG_NFSD is not set
+# CONFIG_SMB_FS is not set
+# CONFIG_CIFS is not set
+# CONFIG_NCP_FS is not set
+# CONFIG_CODA_FS is not set
+# CONFIG_AFS_FS is not set
+# CONFIG_9P_FS is not set
+
+#
+# Partition Types
+#
+# CONFIG_PARTITION_ADVANCED is not set
+CONFIG_MSDOS_PARTITION=y
+
+#
+# Native Language Support
+#
+CONFIG_NLS=y
+CONFIG_NLS_DEFAULT="iso8859-1"
+CONFIG_NLS_CODEPAGE_437=y
+# CONFIG_NLS_CODEPAGE_737 is not set
+# CONFIG_NLS_CODEPAGE_775 is not set
+# CONFIG_NLS_CODEPAGE_850 is not set
+# CONFIG_NLS_CODEPAGE_852 is not set
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+# CONFIG_NLS_CODEPAGE_936 is not set
+# CONFIG_NLS_CODEPAGE_950 is not set
+# CONFIG_NLS_CODEPAGE_932 is not set
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_ISO8859_8 is not set
+# CONFIG_NLS_CODEPAGE_1250 is not set
+# CONFIG_NLS_CODEPAGE_1251 is not set
+# CONFIG_NLS_ASCII is not set
+CONFIG_NLS_ISO8859_1=y
+# CONFIG_NLS_ISO8859_2 is not set
+# CONFIG_NLS_ISO8859_3 is not set
+# CONFIG_NLS_ISO8859_4 is not set
+# CONFIG_NLS_ISO8859_5 is not set
+# CONFIG_NLS_ISO8859_6 is not set
+# CONFIG_NLS_ISO8859_7 is not set
+# CONFIG_NLS_ISO8859_9 is not set
+# CONFIG_NLS_ISO8859_13 is not set
+# CONFIG_NLS_ISO8859_14 is not set
+# CONFIG_NLS_ISO8859_15 is not set
+# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_KOI8_U is not set
+# CONFIG_NLS_UTF8 is not set
+
+#
+# Instrumentation Support
+#
+# CONFIG_PROFILING is not set
+# CONFIG_KPROBES is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+# CONFIG_MAGIC_SYSRQ is not set
+# CONFIG_DEBUG_KERNEL is not set
+CONFIG_LOG_BUF_SHIFT=14
+CONFIG_DEBUG_BUGVERBOSE=y
+CONFIG_EARLY_PRINTK=y
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+
+#
+# Cryptographic options
+#
+# CONFIG_CRYPTO is not set
+
+#
+# Hardware crypto devices
+#
+
+#
+# Library routines
+#
+# CONFIG_CRC_CCITT is not set
+# CONFIG_CRC16 is not set
+CONFIG_CRC32=y
+CONFIG_LIBCRC32C=m
+CONFIG_ZLIB_INFLATE=y
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_X86_BIOS_REBOOT=y
+CONFIG_KTIME_SCALAR=y
+
+CONFIG_CMDLINE="root=/dev/sda1"
diff --git a/packages/linux/linux_2.6.23.bb b/packages/linux/linux_2.6.23.bb
index e042c7248b..6a4d8ceac2 100644
--- a/packages/linux/linux_2.6.23.bb
+++ b/packages/linux/linux_2.6.23.bb
@@ -6,7 +6,10 @@ DEFAULT_PREFERENCE_cm-x270 = "1"
DEFAULT_PREFERENCE_mpc8313e-rdb = "1"
DEFAULT_PREFERENCE_mpc8323e-rdb = "1"
-PR = "r2"
+DEPENDS_append_mpc8313e-rdb = " dtc-native"
+DEPENDS_append_mpc8323e-rdb = " dtc-native"
+
+PR = "r7"
SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-2.6.23.tar.bz2 \
file://binutils-buildid-arm.patch;patch=1 \
@@ -23,8 +26,19 @@ SRC_URI_append_cm-x270 = "\
file://0007-mmcsd_large_cards-r0.patch;patch=1 \
file://0008-cm-x270-nand-simplify-name.patch;patch=1"
+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"
+
+SRC_URI_append_mpc8323e-rdb = "\
+ file://mpc832x-leds.patch;patch=1"
+
CMDLINE_cm-x270 = "console=${CMX270_CONSOLE_SERIAL_PORT},38400 monitor=8 bpp=16 mem=64M mtdparts=physmap-flash.0:256k(boot)ro,0x180000(kernel),-(root);cm-x270-nand:64m(app),-(data) rdinit=/sbin/init root=mtd3 rootfstype=jffs2"
+DEVICETREE_mpc8313e-rdb = "arch/${ARCH}/boot/dts/mpc8313erdb.dts"
+DEVICETREE_mpc8323e-rdb = "arch/${ARCH}/boot/dts/mpc832x_rdb.dts"
+
FILES_kernel-image_cm-x270 = ""
python do_compulab_image() {
@@ -62,4 +76,15 @@ python do_compulab_image() {
os.symlink(img_file, link_file)
}
+do_devicetree_image() {
+ if test -n "${DEVICETREE}" ; then
+ dtc -I dts -O dtb -o ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGE_BASE_NAME}.dtb ${DEVICETREE}
+
+ cd ${DEPLOY_DIR_IMAGE}
+ rm -f ${KERNEL_IMAGE_SYMLINK_NAME}.dtb
+ ln -sf ${KERNEL_IMAGE_BASE_NAME}.dtb ${KERNEL_IMAGE_SYMLINK_NAME}.dtb
+ fi
+}
+
addtask compulab_image after do_deploy before do_package
+addtask devicetree_image after do_deploy before do_package
diff --git a/packages/lm_sensors/lmsensors-apps_2.10.1.bb b/packages/lm_sensors/lmsensors-apps_2.10.1.bb
index ce188beb64..91d7371ca1 100644
--- a/packages/lm_sensors/lmsensors-apps_2.10.1.bb
+++ b/packages/lm_sensors/lmsensors-apps_2.10.1.bb
@@ -1,6 +1,6 @@
DESCRIPTION = "Hardware health monitoring applications"
HOMEPAGE = "http://secure.netroedge.com/~lm78/"
-DEPENDS = "libsysfs virtual/libiconv"
+DEPENDS = "sysfsutils virtual/libiconv"
LICENSE = "GPL"
PR = "r2"
diff --git a/packages/lyx/lyx_1.4.1.bb b/packages/lyx/lyx_1.4.1.bb
index f0c139da64..1a89a4275c 100644
--- a/packages/lyx/lyx_1.4.1.bb
+++ b/packages/lyx/lyx_1.4.1.bb
@@ -10,7 +10,7 @@ PR = "r1"
SRC_URI = "svn://svn.lyx.org/lyx/lyx-devel/tags;module=lyx-1_4_1;rev=13847"
S = "${WORKDIR}/lyx-1_4_1"
-inherit autotools qt3x11
+inherit qt3x11 autotools
EXTRA_OECONF = "--with-frontend=qt --with-qt-dir=${QTDIR}"
PARALLEL_MAKE = ""
diff --git a/packages/lyx/lyx_1.4.4.bb b/packages/lyx/lyx_1.4.4.bb
index d9156cd779..26970a3ed0 100644
--- a/packages/lyx/lyx_1.4.4.bb
+++ b/packages/lyx/lyx_1.4.4.bb
@@ -10,7 +10,7 @@ PR = "r0"
SRC_URI = "svn://svn.lyx.org/lyx/lyx-devel/tags;module=lyx-1_4_4;rev=17185"
S = "${WORKDIR}/lyx-1_4_4"
-inherit autotools qt3x11
+inherit qt3x11 autotools
EXTRA_OECONF = "--with-frontend=qt --with-qt-dir=${QTDIR}"
PARALLEL_MAKE = ""
diff --git a/packages/lyx/lyx_1.5.1.bb b/packages/lyx/lyx_1.5.1.bb
index 60c10850b6..32e3096dbe 100644
--- a/packages/lyx/lyx_1.5.1.bb
+++ b/packages/lyx/lyx_1.5.1.bb
@@ -3,15 +3,13 @@ SECTION = "x11/office"
LICENSE = "GPL"
HOMEPAGE = "http://www.lyx.org"
DEPENDS = "boost qt4-x11-free"
-RRECOMMENDS = "tetex"
+RSUGGESTS = "tetex"
RDEPENDS = "python-shell python-textutils"
PR = "r0"
-DEFAULT_PREFERENCE = "-1"
-
SRC_URI = "http://lyx.cybermirror.org/stable/lyx-${PV}.tar.bz2"
-inherit autotools qt4x11
+inherit qt4x11 autotools
EXTRA_OECONF = " --with-qt4-dir=${QTDIR} -enable-pch"
EXTRA_QMAKEVARS_POST = "DEFINES+=_LIBC"
diff --git a/packages/madwifi/madwifi-ng_r2826-20071105.bb b/packages/madwifi/madwifi-ng_r2826-20071105.bb
new file mode 100644
index 0000000000..5a8bb116a3
--- /dev/null
+++ b/packages/madwifi/madwifi-ng_r2826-20071105.bb
@@ -0,0 +1,13 @@
+# Bitbake recipe for the madwifi-ng driver
+
+DEFAULT_PREFERENCE = "-1"
+DEFAULT_PREFERENCE_mpc8323e-rdb = "1"
+
+# Disable stripping of kernel modules, since this action strips too
+# much out, and the resulting module won't load.
+INHIBIT_PACKAGE_STRIP = "1"
+
+require madwifi-ng_r.inc
+
+# PR set after the include, to override what's set in the included file.
+PR = "r1"
diff --git a/packages/maemo-mapper/files/mapper-hildon1.diff b/packages/maemo-mapper/files/mapper-hildon1.diff
new file mode 100644
index 0000000000..55ea791955
--- /dev/null
+++ b/packages/maemo-mapper/files/mapper-hildon1.diff
@@ -0,0 +1,20 @@
+--- /tmp/maemo-mapper.c 2007-10-02 12:15:04.000000000 +0200
++++ maemo-mapper/src/maemo-mapper.c 2007-10-02 12:18:06.622045000 +0200
+@@ -52,7 +52,7 @@
+ #include <hildon-widgets/hildon-controlbar.h>
+ #include <hildon-widgets/hildon-note.h>
+ #include <hildon-widgets/hildon-color-button.h>
+-#include <hildon-widgets/hildon-file-chooser-dialog.h>
++#include <hildon-fm-2/hildon/hildon-file-chooser-dialog.h>
+ #include <hildon-widgets/hildon-number-editor.h>
+ #include <hildon-widgets/hildon-banner.h>
+ #include <hildon-widgets/hildon-system-sound.h>
+@@ -6532,8 +6532,6 @@
+
+ gtk_widget_show_all(GTK_WIDGET(menu));
+
+- gtk_widget_tap_and_hold_setup(_map_widget, GTK_WIDGET(menu), NULL, 0);
+-
+ vprintf("%s(): return\n", __PRETTY_FUNCTION__);
+ }
+
diff --git a/packages/maemo-mapper/maemo-mapper_svn.bb b/packages/maemo-mapper/maemo-mapper_svn.bb
new file mode 100644
index 0000000000..39e89fcc98
--- /dev/null
+++ b/packages/maemo-mapper/maemo-mapper_svn.bb
@@ -0,0 +1,21 @@
+DESCRIPTION = "GPS navigation/map display software"
+LICENSE = "GPL"
+DEPENDS = "gdbm libconic sqlite3 gtk+ libhildonfm libosso osso-ic-oss libosso-help gnome-vfs dbus bluez-libs"
+RDEPENDS = "bluez-utils"
+RRECOMMENDS = "gpsd flite"
+PV = "2.0.3+svnr${SRCREV}"
+PR = "r2"
+
+SRC_URI = "svn://garage.maemo.org/svn/maemo-mapper;proto=https;module=trunk \
+ file://mapper-hildon1.diff;patch=1;maxrev=108"
+
+S = "${WORKDIR}/trunk"
+
+inherit autotools pkgconfig
+
+do_install_append () {
+ install -d ${D}${datadir}/applications/
+ mv ${D}/maemo-mapper.desktop ${D}${datadir}/applications/
+}
+
+#FILES_${PN} += "${datadir}/icons"
diff --git a/packages/maemo4/.mtn2git_empty b/packages/maemo4/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/maemo4/.mtn2git_empty
diff --git a/packages/maemo4/hildon-1/.mtn2git_empty b/packages/maemo4/hildon-1/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/maemo4/hildon-1/.mtn2git_empty
diff --git a/packages/maemo3/hildon-1/buttonbox.patch b/packages/maemo4/hildon-1/buttonbox.patch
index cfea60d000..cfea60d000 100644
--- a/packages/maemo3/hildon-1/buttonbox.patch
+++ b/packages/maemo4/hildon-1/buttonbox.patch
diff --git a/packages/maemo3/hildon-1_svn.bb b/packages/maemo4/hildon-1_svn.bb
index 5105472989..27b0443d79 100644
--- a/packages/maemo3/hildon-1_svn.bb
+++ b/packages/maemo4/hildon-1_svn.bb
@@ -6,7 +6,7 @@ DEPENDS = "gconf-dbus esound gtk+"
PV = "1.0.17+svnr${SRCREV}"
SRC_URI = "svn://stage.maemo.org/svn/maemo/projects/haf/trunk;module=hildon-1;proto=https \
- file://buttonbox.patch;patch=1 "
+ file://buttonbox.patch;patch=1;maxrev=14173 "
S = "${WORKDIR}/hildon-1"
inherit autotools pkgconfig lib_package
diff --git a/packages/maemo3/hildon-base-lib_0.11.1.bb b/packages/maemo4/hildon-base-lib_0.11.1.bb
index ce3f667a00..ce3f667a00 100644
--- a/packages/maemo3/hildon-base-lib_0.11.1.bb
+++ b/packages/maemo4/hildon-base-lib_0.11.1.bb
diff --git a/packages/maemo3/hildon-lgpl_0.12.1.bb b/packages/maemo4/hildon-lgpl_0.12.1.bb
index 02bbad9dd2..02bbad9dd2 100644
--- a/packages/maemo3/hildon-lgpl_0.12.1.bb
+++ b/packages/maemo4/hildon-lgpl_0.12.1.bb
diff --git a/packages/maemo3/hildon-libs_0.15.1.bb b/packages/maemo4/hildon-libs_0.15.1.bb
index cb89376776..4c88d322ff 100644
--- a/packages/maemo3/hildon-libs_0.15.1.bb
+++ b/packages/maemo4/hildon-libs_0.15.1.bb
@@ -1,7 +1,7 @@
LICENSE = "LGPL"
DESCRIPTION = "Nokia hildon librares"
-DEPENDS = "gtk-doc-native libosso"
+DEPENDS = "gtk-doc-native libosso libmatchbox"
PR = "r0"
diff --git a/packages/maemo3/hildon-thumbnail_0.11.bb b/packages/maemo4/hildon-thumbnail_0.11.bb
index 54646e7630..54646e7630 100644
--- a/packages/maemo3/hildon-thumbnail_0.11.bb
+++ b/packages/maemo4/hildon-thumbnail_0.11.bb
diff --git a/packages/maemo4/libconic/.mtn2git_empty b/packages/maemo4/libconic/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/maemo4/libconic/.mtn2git_empty
diff --git a/packages/maemo4/libconic/dbus-api-update.patch b/packages/maemo4/libconic/dbus-api-update.patch
new file mode 100644
index 0000000000..3542cecae8
--- /dev/null
+++ b/packages/maemo4/libconic/dbus-api-update.patch
@@ -0,0 +1,19 @@
+--- /tmp/conicconnection.c 2007-11-12 12:45:37.000000000 +0100
++++ libconic-0.13/conic/conicconnection.c 2007-11-12 12:46:04.663234000 +0100
+@@ -473,7 +473,7 @@
+ ICD_DBUS_PATH,
+ &icd_vtable,
+ NULL)) {
+- dbus_connection_disconnect(dbus_connection);
++ dbus_connection_close(dbus_connection);
+ dbus_connection_unref(dbus_connection);
+ dbus_connection = NULL;
+ }
+--- /tmp/Makefile.am 2007-11-12 12:47:22.000000000 +0100
++++ libconic-0.13/Makefile.am 2007-11-12 12:47:29.773234000 +0100
+@@ -1,4 +1,4 @@
+-SUBDIRS = conic tests
++SUBDIRS = conic
+
+ pkgconfigdir = $(libdir)/pkgconfig
+ pkgconfig_DATA = conic.pc
diff --git a/packages/maemo4/libconic_0.13.bb b/packages/maemo4/libconic_0.13.bb
new file mode 100644
index 0000000000..511abb70cc
--- /dev/null
+++ b/packages/maemo4/libconic_0.13.bb
@@ -0,0 +1,13 @@
+DESCRIPTION = "Internet connection library"
+LICENSE = "LGPL"
+DEPENDS = "dbus-glib gconf"
+
+SRC_URI = "http://repository.maemo.org/pool/bora/free/source/${PN}_${PV}.tar.gz \
+ file://dbus-api-update.patch;patch=1"
+inherit autotools pkgconfig
+
+do_stage() {
+ autotools_stage_all
+}
+
+
diff --git a/packages/maemo3/libgpsbt_0.1.bb b/packages/maemo4/libgpsbt_0.1.bb
index 59d0db9fbc..59d0db9fbc 100644
--- a/packages/maemo3/libgpsbt_0.1.bb
+++ b/packages/maemo4/libgpsbt_0.1.bb
diff --git a/packages/maemo3/libgpsmgr_0.1.bb b/packages/maemo4/libgpsmgr_0.1.bb
index f0fc14bae9..f0fc14bae9 100644
--- a/packages/maemo3/libgpsmgr_0.1.bb
+++ b/packages/maemo4/libgpsmgr_0.1.bb
diff --git a/packages/maemo4/libhildonfm/.mtn2git_empty b/packages/maemo4/libhildonfm/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/maemo4/libhildonfm/.mtn2git_empty
diff --git a/packages/maemo3/libhildonfm/hildonfm-ifdef-maemogtk.diff b/packages/maemo4/libhildonfm/hildonfm-ifdef-maemogtk.diff
index 8d91e1dd65..8d91e1dd65 100644
--- a/packages/maemo3/libhildonfm/hildonfm-ifdef-maemogtk.diff
+++ b/packages/maemo4/libhildonfm/hildonfm-ifdef-maemogtk.diff
diff --git a/packages/maemo3/libhildonfm_1.9.41.bb b/packages/maemo4/libhildonfm_1.9.41.bb
index de1bb3d9e3..777b2a456b 100644
--- a/packages/maemo3/libhildonfm_1.9.41.bb
+++ b/packages/maemo4/libhildonfm_1.9.41.bb
@@ -3,7 +3,7 @@ DESCRIPTION = "Nokia hildon filemanager library"
DEPENDS = "hildon-thumbnail mce-dev libhildonmime osso-gwconnect hildon-libs osso-thumbnail"
-PR = "r0"
+PR = "r1"
SRC_URI = "http://repository.maemo.org/pool/sardine/main/source/libh/libhildonfm/libhildonfm_${PV}.tar.gz \
file://hildonfm-ifdef-maemogtk.diff;patch=1 \
@@ -24,6 +24,7 @@ PARALLEL_MAKE = ""
do_stage() {
autotools_stage_all
+ ln -sf ${STAGING_INCDIR}/hildon-fm-2/hildon/* ${STAGING_INCDIR}/hildon-widgets/
}
diff --git a/packages/maemo3/libhildonhelp_1.9.1.bb b/packages/maemo4/libhildonhelp_1.9.1.bb
index 43d4c15d2e..43d4c15d2e 100644
--- a/packages/maemo3/libhildonhelp_1.9.1.bb
+++ b/packages/maemo4/libhildonhelp_1.9.1.bb
diff --git a/packages/maemo3/libhildonmime_1.9.5.bb b/packages/maemo4/libhildonmime_1.9.5.bb
index 1e0285b1fb..1e0285b1fb 100644
--- a/packages/maemo3/libhildonmime_1.9.5.bb
+++ b/packages/maemo4/libhildonmime_1.9.5.bb
diff --git a/packages/maemo3/libosso-gsf_1.11.10.4.bb b/packages/maemo4/libosso-gsf_1.11.10.4.bb
index 8888ac7780..8888ac7780 100644
--- a/packages/maemo3/libosso-gsf_1.11.10.4.bb
+++ b/packages/maemo4/libosso-gsf_1.11.10.4.bb
diff --git a/packages/maemo3/libosso-help_2.1.2.bb b/packages/maemo4/libosso-help_2.1.2.bb
index 8a35e1a4f0..8a35e1a4f0 100644
--- a/packages/maemo3/libosso-help_2.1.2.bb
+++ b/packages/maemo4/libosso-help_2.1.2.bb
diff --git a/packages/maemo3/libosso_1.20.bb b/packages/maemo4/libosso_1.20.bb
index d5489c7e95..d5489c7e95 100644
--- a/packages/maemo3/libosso_1.20.bb
+++ b/packages/maemo4/libosso_1.20.bb
diff --git a/packages/maemo3/mce-dev_1.5.6.bb b/packages/maemo4/mce-dev_1.5.6.bb
index 6168cbe31e..6168cbe31e 100644
--- a/packages/maemo3/mce-dev_1.5.6.bb
+++ b/packages/maemo4/mce-dev_1.5.6.bb
diff --git a/packages/maemo3/osso-gwconnect_1.0.8.bb b/packages/maemo4/osso-gwconnect_1.0.8.bb
index 66b47ebac2..66b47ebac2 100644
--- a/packages/maemo3/osso-gwconnect_1.0.8.bb
+++ b/packages/maemo4/osso-gwconnect_1.0.8.bb
diff --git a/packages/maemo4/osso-ic-oss/.mtn2git_empty b/packages/maemo4/osso-ic-oss/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/maemo4/osso-ic-oss/.mtn2git_empty
diff --git a/packages/maemo3/osso-ic-oss/dbus-api-update.patch b/packages/maemo4/osso-ic-oss/dbus-api-update.patch
index 425f959d79..425f959d79 100644
--- a/packages/maemo3/osso-ic-oss/dbus-api-update.patch
+++ b/packages/maemo4/osso-ic-oss/dbus-api-update.patch
diff --git a/packages/maemo3/osso-ic-oss_1.0.4.bb b/packages/maemo4/osso-ic-oss_1.0.4.bb
index 4f9b742fb7..4f9b742fb7 100644
--- a/packages/maemo3/osso-ic-oss_1.0.4.bb
+++ b/packages/maemo4/osso-ic-oss_1.0.4.bb
diff --git a/packages/maemo3/osso-thumbnail_0.7.bb b/packages/maemo4/osso-thumbnail_0.7.bb
index d99ee786b5..d99ee786b5 100644
--- a/packages/maemo3/osso-thumbnail_0.7.bb
+++ b/packages/maemo4/osso-thumbnail_0.7.bb
diff --git a/packages/maemo3/outo_0.1.1.bb b/packages/maemo4/outo_0.1.1.bb
index 7fe0343691..7fe0343691 100644
--- a/packages/maemo3/outo_0.1.1.bb
+++ b/packages/maemo4/outo_0.1.1.bb
diff --git a/packages/matchbox-applet-inputmanager/files/visibility-protocol.patch b/packages/matchbox-applet-inputmanager/files/visibility-protocol.patch
new file mode 100644
index 0000000000..545d4808d9
--- /dev/null
+++ b/packages/matchbox-applet-inputmanager/files/visibility-protocol.patch
@@ -0,0 +1,33 @@
+# HG changeset patch
+# User "Paul Sokolovsky <pfalcon@users.sourceforge.net>"
+# Date 1196333272 -7200
+# Node ID 4ec785864bbe896eda3b933e65a5f2d71864b9b3
+# Parent 375f9e4a30d3de9852b00cd1decb259f4f04446e
+Implement an IM [Unix-]signal-based visibility protocol, as supported
+by xkbd. By receiving SISUSR1, IM implementation toggles its visibility.
+The most valuable, default action for SIGUSR1 is process termination, so
+we can send SIGUSR1 unconditionally, replacing old method of sending
+SIGTERM (and there's also check for process existence before sending
+signal, so if process is dead, it will be just restarted).
+
+diff -r 375f9e4a30d3 -r 4ec785864bbe mbinputmgr.c
+--- a/mbinputmgr.c Wed Nov 28 03:41:20 2007 +0200
++++ b/mbinputmgr.c Thu Nov 29 12:47:52 2007 +0200
+@@ -1,3 +1,4 @@
++#include <signal.h>
+ #include "mbinputmgr.h"
+
+ static void
+@@ -233,8 +234,10 @@ mbinputmgr_toggle_selected_method (MBInp
+ if ( (inpmgr->PidCurrent != -1) /* Something running */
+ && (kill(inpmgr->PidCurrent, 0) != -1) )
+ {
+- kill(inpmgr->PidCurrent, 15); /* kill it */
+- inpmgr->PidCurrent = -1;
++ /* Send a SIGUSR1. Smart IMs will toggle their visibility.
++ Dumb, which don't handle it at all, will just die
++ per default action for SIGUSR1, termination. */
++ kill(inpmgr->PidCurrent, SIGUSR1);
+ }
+ else fork_exec(inpmgr, inpmgr->MethodSelected->exec);
+ }
diff --git a/packages/matchbox-applet-inputmanager/matchbox-applet-inputmanager_0.6.bb b/packages/matchbox-applet-inputmanager/matchbox-applet-inputmanager_0.6.bb
index 4afdd426db..09f2a7d999 100644
--- a/packages/matchbox-applet-inputmanager/matchbox-applet-inputmanager_0.6.bb
+++ b/packages/matchbox-applet-inputmanager/matchbox-applet-inputmanager_0.6.bb
@@ -3,11 +3,12 @@ LICENSE = "GPL"
DEPENDS = "matchbox-wm libmatchbox"
SECTION = "x11/wm"
-PR = "r3"
+PR = "r4"
SRC_URI = "http://projects.o-hand.com/matchbox/sources/mb-applet-input-manager/${PV}/mb-applet-input-manager-${PV}.tar.gz \
file://update-to-svn.diff;patch=1 \
file://mbinputmgr-libgtkinput.patch;patch=1 \
+ file://visibility-protocol.patch;patch=1 \
"
S = "${WORKDIR}/mb-applet-input-manager-${PV}"
diff --git a/packages/matchbox-common/matchbox-common_0.9.1.bb b/packages/matchbox-common/matchbox-common_0.9.1.bb
index d2db4683e1..6ec38cfbef 100644
--- a/packages/matchbox-common/matchbox-common_0.9.1.bb
+++ b/packages/matchbox-common/matchbox-common_0.9.1.bb
@@ -1,17 +1,26 @@
-SECTION = "x11/wm"
DESCRIPTION = "Matchbox window manager common files"
+SECTION = "x11/wm"
LICENSE = "GPL"
DEPENDS = "libmatchbox"
-PR = "r2"
+PR = "r5"
SRC_URI = "http://projects.o-hand.com/matchbox/sources/${PN}/0.9/${PN}-${PV}.tar.gz \
file://no-utilities-category.patch;patch=1 \
file://add-media-category.patch;patch=1"
-inherit autotools pkgconfig
+inherit autotools pkgconfig update-alternatives
EXTRA_OECONF = "--enable-pda-folders"
-FILES_${PN} = "${bindir} \
- ${datadir}/matchbox/vfolders \
- ${datadir}/pixmaps"
+FILES_${PN} = "\
+ ${bindir} \
+ ${datadir}/matchbox/vfolders \
+ ${datadir}/pixmaps"
+
+ALTERNATIVE_NAME = "x-window-manager"
+ALTERNATIVE_LINK = "${bindir}/x-window-manager"
+ALTERNATIVE_PATH = "${bindir}/matchbox-session"
+ALTERNATIVE_PRIORITY = "11"
+
+
+PACKAGE_ARCH = "all"
diff --git a/packages/matchbox-common/matchbox-common_svn.bb b/packages/matchbox-common/matchbox-common_svn.bb
index 97709bf31e..eff0642970 100644
--- a/packages/matchbox-common/matchbox-common_svn.bb
+++ b/packages/matchbox-common/matchbox-common_svn.bb
@@ -1,17 +1,22 @@
-SECTION = "x11/wm"
DESCRIPTION = "Matchbox window manager common files"
+SECTION = "x11/wm"
LICENSE = "GPL"
DEPENDS = "libmatchbox"
PV = "0.9.1+svn${SRCDATE}"
-S = "${WORKDIR}/matchbox-common"
+PR = "r1"
+
DEFAULT_PREFERENCE = "-1"
SRC_URI = "svn://svn.o-hand.com/repos/matchbox/trunk;module=matchbox-common;proto=http"
+S = "${WORKDIR}/matchbox-common"
inherit autotools pkgconfig
EXTRA_OECONF = " --enable-pda-folders "
-FILES_${PN} = "${bindir} \
- ${datadir}/matchbox/vfolders \
- ${datadir}/pixmaps"
+FILES_${PN} = "\
+ ${bindir} \
+ ${datadir}/matchbox/vfolders \
+ ${datadir}/pixmaps"
+
+PACKAGE_ARCH = "all"
diff --git a/packages/matchbox-keyboard/matchbox-keyboard_svn.bb b/packages/matchbox-keyboard/matchbox-keyboard_svn.bb
index 27ea4aea1d..696486b6ef 100644
--- a/packages/matchbox-keyboard/matchbox-keyboard_svn.bb
+++ b/packages/matchbox-keyboard/matchbox-keyboard_svn.bb
@@ -5,13 +5,13 @@ RCONFLICTS = matchbox-keyboard-inputmethod
RPROVIDES_${PN} = matchbox-keyboard-inputmethod
SECTION = "x11"
PV = "0.0+svnr${SRCREV}"
-PR="r6"
+PR="r7"
SRC_URI = "svn://svn.o-hand.com/repos/matchbox/trunk;module=${PN};proto=http \
file://smallscreen-fontsize.patch;patch=1 \
-# file://2-Add-new-modifier--layout--Used-to-cycle-thru-all-available-layouts.patch;patch=1 \
-# file://3-Changes-to-improve-layout-rendering--especially-after-adding-support-for.patch;patch=1 \
-# file://4-Add-rendering-debug-logging.patch;patch=1 \
+ file://2-Add-new-modifier--layout--Used-to-cycle-thru-all-available-layouts.patch;patch=1 \
+ file://3-Changes-to-improve-layout-rendering--especially-after-adding-support-for.patch;patch=1 \
+ file://4-Add-rendering-debug-logging.patch;patch=1 \
file://5-Add-support-for-loading-multiple-independent-layouts.patch;patch=1 \
file://6-Add-layout-switch-key-to-all-layouts.patch;patch=1 \
"
diff --git a/packages/matchbox-keyboard/mboxkbd-layouts-gui/.mtn2git_empty b/packages/matchbox-keyboard/mboxkbd-layouts-gui/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/matchbox-keyboard/mboxkbd-layouts-gui/.mtn2git_empty
diff --git a/packages/matchbox-keyboard/mboxkbd-layouts-gui/auto-mkdir.patch b/packages/matchbox-keyboard/mboxkbd-layouts-gui/auto-mkdir.patch
new file mode 100644
index 0000000000..82f6cb50b9
--- /dev/null
+++ b/packages/matchbox-keyboard/mboxkbd-layouts-gui/auto-mkdir.patch
@@ -0,0 +1,16 @@
+diff -r cccb513c808c src/interface.c
+--- a/src/interface.c Wed Nov 28 01:22:54 2007 +0200
++++ b/src/interface.c Wed Nov 28 01:43:12 2007 +0200
+@@ -93,8 +93,12 @@ static void fill_user_list(GtkListStore
+ strcpy(linkpath, home_dir);
+ strcat(linkpath, "/");
+ strcat(linkpath, USR_LAYOUT_SUFFIX);
++ if (access(linkpath, X_OK)) {
++ mkdir(linkpath, 0711);
++ }
+ dir = opendir(linkpath);
+ if(!dir) {
++ fprintf(stderr, "Cannot read %s directory: ", linkpath);
+ perror("opendir");
+ exit(1);
+ }
diff --git a/packages/matchbox-keyboard/mboxkbd-layouts-gui/mboxkbd-layouts-gui.png b/packages/matchbox-keyboard/mboxkbd-layouts-gui/mboxkbd-layouts-gui.png
new file mode 100644
index 0000000000..d08be372ac
--- /dev/null
+++ b/packages/matchbox-keyboard/mboxkbd-layouts-gui/mboxkbd-layouts-gui.png
Binary files differ
diff --git a/packages/matchbox-keyboard/mboxkbd-layouts-gui/sanitize-desktop-file.patch b/packages/matchbox-keyboard/mboxkbd-layouts-gui/sanitize-desktop-file.patch
new file mode 100644
index 0000000000..095a8d337a
--- /dev/null
+++ b/packages/matchbox-keyboard/mboxkbd-layouts-gui/sanitize-desktop-file.patch
@@ -0,0 +1,18 @@
+diff -r a6959d06b0fb mk-layouts-gui.desktop
+--- a/mk-layouts-gui.desktop Wed Nov 28 02:07:06 2007 +0200
++++ b/mk-layouts-gui.desktop Wed Nov 28 02:08:49 2007 +0200
+@@ -1,9 +1,9 @@
+ [Desktop Entry]
+ Name=MK Layout Manager
+ Comment=Manage matchbox-keyboard layouts
+-Exec=mk-layouts-gui
++Exec=mboxkbd-layouts-gui
+ Type=Application
+-Icon=mk-layouts-gui.png
+-Categories=Application;SystemSettings;MB
+-StartupNotify=True
+-SingleInstance=True
++Icon=mboxkbd-layouts-gui
++Categories=Application;SystemSettings;MB;
++StartupNotify=true
++SingleInstance=true
diff --git a/packages/matchbox-keyboard/mboxkbd-layouts-gui_git.bb b/packages/matchbox-keyboard/mboxkbd-layouts-gui_git.bb
index 2dfba07fc7..6a466a1e9a 100644
--- a/packages/matchbox-keyboard/mboxkbd-layouts-gui_git.bb
+++ b/packages/matchbox-keyboard/mboxkbd-layouts-gui_git.bb
@@ -3,12 +3,21 @@ AUTHOR = "Sergey Lapin"
SECTION = "x11"
LICENSE = "GPL"
DEPENDS = "gtk+"
-PR = "r3"
+PR = "r5"
-PV = "0.0+git${SRCDATE}"
+PV = "0.0+git5b42aeff36d930dc3a9b75eedc74dacfec45f43f"
-SRC_URI = "git://ossfans.org/home/slapin/git/mk-layouts-gui.git;protocol=git"
+SRC_URI = "http://linux-h4000.sourceforge.net/mirror/mk-layouts-gui.git_5b42aeff36d930dc3a9b75eedc74dacfec45f43f.tar.gz \
+#git://ossfans.org/home/slapin/git/mk-layouts-gui.git;protocol=git;tag=5b42aeff36d930dc3a9b75eedc74dacfec45f43f \
+ file://auto-mkdir.patch;patch=1 \
+ file://sanitize-desktop-file.patch;patch=1 \
+ file://mboxkbd-layouts-gui.png"
S = "${WORKDIR}/git"
inherit autotools
+
+do_install_append() {
+ install -d ${D}${datadir}/pixmaps
+ install -m 0644 ${WORKDIR}/mboxkbd-layouts-gui.png ${D}${datadir}/pixmaps/
+}
diff --git a/packages/matchbox-wm/matchbox-wm_0.8.3.bb b/packages/matchbox-wm/matchbox-wm_0.8.3.bb
index 524dc1af36..58da385674 100644
--- a/packages/matchbox-wm/matchbox-wm_0.8.3.bb
+++ b/packages/matchbox-wm/matchbox-wm_0.8.3.bb
@@ -1,7 +1,7 @@
require matchbox-wm.inc
-DEPENDS = "libmatchbox virtual/libx11 libxext libxcomposite libxfixes libxdamage libxrender startup-notification expat gconf matchbox-common"
-RDEPENDS = "matchbox-common"
+DEPENDS = "libmatchbox virtual/libx11 libxext libxcomposite libxfixes libxdamage libxrender startup-notification expat gconf "
+RDEPENDS = ""
SRC_URI = "http://projects.o-hand.com/matchbox/sources/matchbox-window-manager/0.8/matchbox-window-manager-${PV}.tar.bz2 \
file://kbdconfig_keylaunch_simpad.patch;patch=1;pnum=0"
diff --git a/packages/matchbox-wm/matchbox-wm_0.8.4.bb b/packages/matchbox-wm/matchbox-wm_0.8.4.bb
index 524dc1af36..58da385674 100644
--- a/packages/matchbox-wm/matchbox-wm_0.8.4.bb
+++ b/packages/matchbox-wm/matchbox-wm_0.8.4.bb
@@ -1,7 +1,7 @@
require matchbox-wm.inc
-DEPENDS = "libmatchbox virtual/libx11 libxext libxcomposite libxfixes libxdamage libxrender startup-notification expat gconf matchbox-common"
-RDEPENDS = "matchbox-common"
+DEPENDS = "libmatchbox virtual/libx11 libxext libxcomposite libxfixes libxdamage libxrender startup-notification expat gconf "
+RDEPENDS = ""
SRC_URI = "http://projects.o-hand.com/matchbox/sources/matchbox-window-manager/0.8/matchbox-window-manager-${PV}.tar.bz2 \
file://kbdconfig_keylaunch_simpad.patch;patch=1;pnum=0"
diff --git a/packages/matchbox-wm/matchbox-wm_0.9.2.bb b/packages/matchbox-wm/matchbox-wm_0.9.2.bb
index a46073b924..a85e4b23c4 100644
--- a/packages/matchbox-wm/matchbox-wm_0.9.2.bb
+++ b/packages/matchbox-wm/matchbox-wm_0.9.2.bb
@@ -1,8 +1,8 @@
require matchbox-wm.inc
-DEPENDS = "libmatchbox virtual/libx11 libxext libxcomposite libxfixes libxdamage libxrender startup-notification expat gconf matchbox-common"
-RDEPENDS = "matchbox-common"
-PR = "r1"
+DEPENDS = "libmatchbox virtual/libx11 libxext libxcomposite libxfixes libxdamage libxrender startup-notification expat gconf "
+RDEPENDS = ""
+PR = "r2"
SRC_URI = "http://projects.o-hand.com/matchbox/sources/matchbox-window-manager/0.9/matchbox-window-manager-${PV}.tar.gz"
diff --git a/packages/matchbox-wm/matchbox-wm_0.9.3.bb b/packages/matchbox-wm/matchbox-wm_0.9.3.bb
index 2363801cb2..c2016cab66 100644
--- a/packages/matchbox-wm/matchbox-wm_0.9.3.bb
+++ b/packages/matchbox-wm/matchbox-wm_0.9.3.bb
@@ -1,8 +1,8 @@
require matchbox-wm.inc
-DEPENDS = "libmatchbox virtual/libx11 libxext libxcomposite libxfixes libxdamage libxrender startup-notification expat gconf matchbox-common"
-RDEPENDS = "matchbox-common"
-PR = "r2"
+DEPENDS = "libmatchbox virtual/libx11 libxext libxcomposite libxfixes libxdamage libxrender startup-notification expat gconf "
+RDEPENDS = ""
+PR = "r3"
SRC_URI = "http://projects.o-hand.com/matchbox/sources/matchbox-window-manager/0.9/matchbox-window-manager-${PV}.tar.gz \
diff --git a/packages/matchbox-wm/matchbox-wm_0.9.4.bb b/packages/matchbox-wm/matchbox-wm_0.9.4.bb
index 5ce26cbab2..80b6dc7e19 100644
--- a/packages/matchbox-wm/matchbox-wm_0.9.4.bb
+++ b/packages/matchbox-wm/matchbox-wm_0.9.4.bb
@@ -1,7 +1,7 @@
require matchbox-wm.inc
-DEPENDS = "libmatchbox virtual/libx11 libxext libxcomposite libxfixes libxdamage libxrender startup-notification expat gconf matchbox-common"
-RDEPENDS = "matchbox-common"
+DEPENDS = "libmatchbox virtual/libx11 libxext libxcomposite libxfixes libxdamage libxrender startup-notification expat gconf "
+RDEPENDS = ""
SRC_URI = "http://projects.o-hand.com/matchbox/sources/matchbox-window-manager/0.9/matchbox-window-manager-${PV}.tar.gz \
file://kbdconfig"
diff --git a/packages/matchbox-wm/matchbox-wm_0.9.5.bb b/packages/matchbox-wm/matchbox-wm_0.9.5.bb
index f135ffd426..0be38b33cb 100644
--- a/packages/matchbox-wm/matchbox-wm_0.9.5.bb
+++ b/packages/matchbox-wm/matchbox-wm_0.9.5.bb
@@ -1,8 +1,8 @@
require matchbox-wm.inc
-DEPENDS = "libmatchbox virtual/libx11 libxext libxcomposite libxfixes libxdamage libxrender startup-notification expat gconf matchbox-common"
-RDEPENDS = "matchbox-common"
-PR="r1"
+DEPENDS = "libmatchbox virtual/libx11 libxext libxcomposite libxfixes libxdamage libxrender startup-notification expat gconf "
+RDEPENDS = ""
+PR="r2"
SRC_URI = "http://projects.o-hand.com/matchbox/sources/matchbox-window-manager/0.9/matchbox-window-manager-${PV}.tar.gz \
file://kbdconfig"
diff --git a/packages/matchbox-wm/matchbox-wm_0.9.bb b/packages/matchbox-wm/matchbox-wm_0.9.bb
index 8387d957a1..700fb15eeb 100644
--- a/packages/matchbox-wm/matchbox-wm_0.9.bb
+++ b/packages/matchbox-wm/matchbox-wm_0.9.bb
@@ -1,7 +1,7 @@
require matchbox-wm.inc
-DEPENDS = "libmatchbox virtual/libx11 libxext libxcomposite libxfixes libxdamage libxrender startup-notification expat gconf matchbox-common"
-RDEPENDS = "matchbox-common"
+DEPENDS = "libmatchbox virtual/libx11 libxext libxcomposite libxfixes libxdamage libxrender startup-notification expat gconf "
+RDEPENDS = ""
SRC_URI = "http://projects.o-hand.com/matchbox/sources/matchbox-window-manager/${PV}/matchbox-window-manager-${PV}.tar.gz"
S = "${WORKDIR}/matchbox-window-manager-${PV}"
diff --git a/packages/matchbox-wm/matchbox-wm_1.0.bb b/packages/matchbox-wm/matchbox-wm_1.0.bb
index e55f7a5c4e..dad8163232 100644
--- a/packages/matchbox-wm/matchbox-wm_1.0.bb
+++ b/packages/matchbox-wm/matchbox-wm_1.0.bb
@@ -1,9 +1,9 @@
require matchbox-wm.inc
-DEPENDS = "libmatchbox virtual/libx11 libxext libxcomposite libxfixes libxdamage libxrender startup-notification expat gconf matchbox-common"
-RDEPENDS = "matchbox-common"
+DEPENDS = "libmatchbox virtual/libx11 libxext libxcomposite libxfixes libxdamage libxrender startup-notification expat gconf "
+RDEPENDS = ""
-PR="r2"
+PR="r3"
SRC_URI = "http://projects.o-hand.com/matchbox/sources/matchbox-window-manager/1.0/matchbox-window-manager-${PV}.tar.gz \
diff --git a/packages/matchbox-wm/matchbox-wm_1.1.bb b/packages/matchbox-wm/matchbox-wm_1.1.bb
index c3e8186481..703470adea 100644
--- a/packages/matchbox-wm/matchbox-wm_1.1.bb
+++ b/packages/matchbox-wm/matchbox-wm_1.1.bb
@@ -1,9 +1,9 @@
require matchbox-wm.inc
-DEPENDS = "libmatchbox virtual/libx11 libxext libxcomposite libxfixes libxdamage libxrender startup-notification expat gconf matchbox-common"
-RDEPENDS = "matchbox-common"
+DEPENDS = "libmatchbox virtual/libx11 libxext libxcomposite libxfixes libxdamage libxrender startup-notification expat gconf "
+RDEPENDS = ""
-PR="r1"
+PR="r2"
SRC_URI = "http://projects.o-hand.com/matchbox/sources/matchbox-window-manager/1.1/matchbox-window-manager-${PV}.tar.gz \
file://kbdconfig"
diff --git a/packages/matchbox-wm/matchbox-wm_1.2.bb b/packages/matchbox-wm/matchbox-wm_1.2.bb
index 83eb403c5f..bf57441815 100644
--- a/packages/matchbox-wm/matchbox-wm_1.2.bb
+++ b/packages/matchbox-wm/matchbox-wm_1.2.bb
@@ -1,9 +1,9 @@
require matchbox-wm.inc
-DEPENDS = "libmatchbox virtual/libx11 libxext libxcomposite libxfixes libxdamage libxrender startup-notification expat gconf gconf-native matchbox-common"
-RDEPENDS = "matchbox-common"
+DEPENDS = "libmatchbox virtual/libx11 libxext libxcomposite libxfixes libxdamage libxrender startup-notification expat gconf gconf-native "
+RDEPENDS = ""
-PR="r1"
+PR="r3"
SRC_URI = "http://projects.o-hand.com/matchbox/sources/matchbox-window-manager/1.2/matchbox-window-manager-${PV}.tar.bz2 \
file://gconf-2.m4 \
@@ -23,7 +23,7 @@ FILES_${PN} = "${bindir}/* \
ALTERNATIVE_NAME = "x-window-manager"
ALTERNATIVE_LINK = "${bindir}/x-window-manager"
-ALTERNATIVE_PATH = "${bindir}/matchbox-session"
+ALTERNATIVE_PATH = "${bindir}/matchbox-window-manager"
ALTERNATIVE_PRIORITY = "10"
EXTRA_OECONF = " \
diff --git a/packages/matchbox-wm/matchbox-wm_svn.bb b/packages/matchbox-wm/matchbox-wm_svn.bb
index 91c66dae90..554811d597 100644
--- a/packages/matchbox-wm/matchbox-wm_svn.bb
+++ b/packages/matchbox-wm/matchbox-wm_svn.bb
@@ -1,9 +1,9 @@
require matchbox-wm.inc
-DEPENDS = "libmatchbox virtual/libx11 libxext libxcomposite libxfixes libxdamage libxrender startup-notification expat gconf matchbox-common"
-RDEPENDS = "matchbox-common"
+DEPENDS = "libmatchbox virtual/libx11 libxext libxcomposite libxfixes libxdamage libxrender startup-notification expat gconf "
+RDEPENDS = ""
PV = "1.1+svn${SRCDATE}"
-PR = "r3"
+PR = "r4"
DEFAULT_PREFERENCE = "-1"
SRC_URI = "svn://svn.o-hand.com/repos/matchbox/trunk;module=matchbox-window-manager;proto=http \
diff --git a/packages/mesa/mesa-7.0.2/.mtn2git_empty b/packages/mesa/mesa-7.0.2/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/mesa/mesa-7.0.2/.mtn2git_empty
diff --git a/packages/mesa/mesa-7.0.2/fix-host-compile.patch b/packages/mesa/mesa-7.0.2/fix-host-compile.patch
new file mode 100644
index 0000000000..d24d03d379
--- /dev/null
+++ b/packages/mesa/mesa-7.0.2/fix-host-compile.patch
@@ -0,0 +1,30 @@
+--- /src/mesa/x86/orig-Makefile 2005-07-01 04:54:38.000000000 +0300
++++ /src/mesa/x86/Makefile 2007-06-07 21:52:31.000000000 +0300
+@@ -5,6 +5,7 @@
+
+
+ INCLUDE_DIRS = \
++ -I/usr/include \
+ -I$(TOP)/include/GL \
+ -I$(TOP)/include \
+ -I.. \
+@@ -13,6 +14,10 @@
+ -I../glapi \
+ -I../tnl
+
++OPT_FLAGS_host = -fexpensive-optimizations -fomit-frame-pointer -frename-registers -Os
++
++CFLAGS_host = -Wall -Wmissing-prototypes $(OPT_FLAGS_host) $(PIC_FLAGS) $(ARCH_FLAGS) \
++ $(DEFINES) $(ASM_FLAGS) $(X11_INCLUDES) -std=c99 -ffast-math
+
+ default: gen_matypes matypes.h
+
+@@ -21,7 +26,7 @@
+
+
+ gen_matypes: gen_matypes.c
+- $(CC) $(INCLUDE_DIRS) $(CFLAGS) gen_matypes.c -o gen_matypes
++ $(CC) $(INCLUDE_DIRS) $(CFLAGS_host) gen_matypes.c -o gen_matypes
+
+ # need some special rules here, unfortunately
+ matypes.h: ../main/mtypes.h ../tnl/t_context.h gen_matypes
diff --git a/packages/mesa/mesa-7.0.2/mklib-rpath-link.patch b/packages/mesa/mesa-7.0.2/mklib-rpath-link.patch
new file mode 100644
index 0000000000..618f5b57ed
--- /dev/null
+++ b/packages/mesa/mesa-7.0.2/mklib-rpath-link.patch
@@ -0,0 +1,23 @@
+--- /tmp/mklib 2007-12-08 11:03:23.000000000 +0100
++++ Mesa-7.0.2/bin/mklib 2007-12-08 11:04:02.509863000 +0100
+@@ -106,6 +106,9 @@
+ -L*)
+ DEPS="$DEPS $1"
+ ;;
++ -Wl*)
++ DEPS="$DEPS $1"
++ ;;
+ -pthread)
+ # this is a special case (see bugzilla 10876)
+ DEPS="$DEPS $1"
+--- /tmp/default 2007-12-08 11:04:17.000000000 +0100
++++ Mesa-7.0.2/configs/default 2007-12-08 11:05:06.279863000 +0100
+@@ -76,7 +76,7 @@
+ GLW_LIB_DEPS = -L$(TOP)/$(LIB_DIR) -l$(GL_LIB) $(EXTRA_LIB_PATH) -lXt -lX11
+
+ # Program dependencies - specific GL/glut libraries added in Makefiles
+-APP_LIB_DEPS = -lm
++APP_LIB_DEPS = $(EXTRA_LIB_PATH) -lm
+
+
+
diff --git a/packages/mesa/mesa-dri_6.5.2.bb b/packages/mesa/mesa-dri_6.5.2.bb
index 9255a926e9..fffbfee780 100644
--- a/packages/mesa/mesa-dri_6.5.2.bb
+++ b/packages/mesa/mesa-dri_6.5.2.bb
@@ -4,9 +4,11 @@ FILESPATH = "${FILE_DIRNAME}/mesa-${PV}:${FILE_DIRNAME}/files:${FILE_DIRNAME}"
PACKAGES_DYNAMIC = "mesa-dri-driver-*"
-PR = "r0"
+PR = "r1"
DEPENDS += "libdrm"
+# DRI is useless without the kernel drivers
+RRECOMMENDS += " kernel-module-drm kernel-module-radeon "
do_configure() {
cd configs
diff --git a/packages/mesa/mesa_7.0.2.bb b/packages/mesa/mesa_7.0.2.bb
new file mode 100644
index 0000000000..3eb1fbef8b
--- /dev/null
+++ b/packages/mesa/mesa_7.0.2.bb
@@ -0,0 +1,6 @@
+include mesa-mesa.inc
+
+SRC_URI_append = " file://fix-host-compile.patch;patch=1 "
+
+
+
diff --git a/packages/meta/external-toolchain.bb b/packages/meta/external-toolchain.bb
new file mode 100644
index 0000000000..c483ea26a6
--- /dev/null
+++ b/packages/meta/external-toolchain.bb
@@ -0,0 +1,50 @@
+DESCRIPTION = "This package allows OE to work with an external toolchain generated \
+ by meta-toolchain instead of building its own. It expects that toolchain \
+ to be located in SDK_PREFIX/prefix."
+
+PROVIDES = "\
+ linux-libc-headers \
+ virtual/${TARGET_PREFIX}gcc \
+ virtual/${TARGET_PREFIX}gcc-initial \
+ virtual/${TARGET_PREFIX}binutils \
+ virtual/${TARGET_PREFIX}libc-for-gcc \
+ virtual/libc \
+ virtual/libintl \
+ virtual/libiconv \
+ glibc-thread-db \
+ virtual/linux-libc-headers \
+ "
+
+RPROVIDES = "glibc-utils libsegfault glibc-thread-db libgcc-dev libstdc++-dev libstdc++"
+PACKAGES_DYNAMIC = "glibc-gconv-*"
+PR = "r1"
+
+inherit sdk
+
+do_stage() {
+ if [ ! -e ${prefix}/package-status ]; then
+ echo "The external toolchain could not be found in ${prefix}!"
+ exit 1
+ fi
+
+ install -d ${STAGING_DIR}/pkgdata/
+ install -d ${STAGING_DIR_TARGET}/shlibs/
+
+ cp -ar ${prefix}/pkgdata/* ${STAGING_DIR}/pkgdata/
+ cp -ar ${prefix}/${TARGET_SYS}/shlibs/* ${STAGING_DIR_TARGET}/shlibs/
+
+ if [ -d ${prefix}/ipk ]; then
+ install -d ${DEPLOY_DIR_IPK}/
+ cp -ar ${prefix}/ipk/* ${DEPLOY_DIR_IPK}/
+ fi
+
+ if [ -d ${prefix}/deb ]; then
+ install -d ${DEPLOY_DIR_DEB}/
+ cp -ar ${prefix}/deb/* ${DEPLOY_DIR_DEB}/
+ fi
+
+ if [ -d ${prefix}/pstage -a "x${DEPLOY_DIR_PSTAGE}" != "x" ]; then
+ install -d ${DEPLOY_DIR_PSTAGE}/
+ cp -ar ${prefix}/pstage/* ${DEPLOY_DIR_PSTAGE}/
+ fi
+}
diff --git a/packages/meta/meta-sdk-gpe.bb b/packages/meta/meta-sdk-gpe.bb
deleted file mode 100644
index a91f3192c7..0000000000
--- a/packages/meta/meta-sdk-gpe.bb
+++ /dev/null
@@ -1,101 +0,0 @@
-DESCRIPTION = "Meta package for SDK including GPE"
-LICENSE = "MIT"
-DEPENDS = "ipkg-native ipkg-utils-native fakeroot-native sed-native"
-PR = "r1"
-
-inherit rootfs_ipk sdk meta
-
-SDK_DIR = "${WORKDIR}/sdk"
-SDK_OUTPUT = "${SDK_DIR}/image"
-SDK_DEPLOY = "${TMPDIR}/deploy/sdk"
-
-IPKG_HOST = "ipkg-cl -f ${SDK_DIR}/ipkg-host.conf -o ${SDK_OUTPUT}"
-IPKG_TARGET = "ipkg-cl -f ${SDK_DIR}/ipkg-target.conf -o ${SDK_OUTPUT}/${prefix}"
-
-HOST_INSTALL = "\
- binutils-cross-sdk \
- gcc-cross-sdk \
- gdb-cross"
-
-TARGET_INSTALL = "\
- task-sdk-base \
- task-sdk-x11 \
- task-sdk-x11-ext \
- task-sdk-gpe \
- task-sdk-gpephone"
-
-RDEPENDS = "${TARGET_INSTALL} ${HOST_INSTALL}"
-
-do_populate_sdk() {
- set -ex
- package_update_index_ipk
- set +ex
-
- rm -rf ${SDK_OUTPUT}
- mkdir -p ${SDK_OUTPUT}
-
- priority=1
- for arch in $ipkgarchs; do
- echo "arch $arch $priority" >> ${SDK_DIR}/ipkg-target.conf
- echo "arch ${BUILD_ARCH}-$arch-sdk $priority" >> ${SDK_DIR}/ipkg-host.conf
- priority=$(expr $priority + 5)
- if [ -e ${DEPLOY_DIR_IPK}/$arch/Packages ] ; then
- echo "src oe-$arch file:${DEPLOY_DIR_IPK}/$arch" >> ${SDK_DIR}/ipkg-target.conf
- fi
- if [ -e ${DEPLOY_DIR_IPK}/${BUILD_ARCH}-$arch-sdk/Packages ] ; then
- echo "src oe-$arch-sdk file:${DEPLOY_DIR_IPK}/${BUILD_ARCH}-$arch-sdk" >> ${SDK_DIR}/ipkg-host.conf
- fi
- done
-
- rm -rf ${SDK_OUTPUT}
- mkdir -p ${SDK_OUTPUT}
-
- ${IPKG_HOST} update
- ${IPKG_HOST} -nodeps install ${HOST_INSTALL}
-
- ${IPKG_TARGET} update
- ${IPKG_TARGET} install ${TARGET_INSTALL}
-
- mkdir -p ${SDK_OUTPUT}/${prefix}/${TARGET_SYS}
- cp -pPR ${SDK_OUTPUT}/${prefix}/usr/* ${SDK_OUTPUT}/${prefix}/${TARGET_SYS}
- rm -rf ${SDK_OUTPUT}/${prefix}/usr/
-
- cp -pPR ${SDK_OUTPUT}/${prefix}/lib/* ${SDK_OUTPUT}/${prefix}/${TARGET_SYS}/lib
- rm -rf ${SDK_OUTPUT}/${prefix}/lib/*
-
- mv ${SDK_OUTPUT}/${prefix}/${TARGET_SYS}/lib/gcc* ${SDK_OUTPUT}/${prefix}/lib
-
- cp -pPR ${TMPDIR}/cross/${TARGET_SYS}/include/linux/ ${SDK_OUTPUT}/${prefix}/${TARGET_SYS}/include/
- cp -pPR ${TMPDIR}/cross/${TARGET_SYS}/include/asm/ ${SDK_OUTPUT}/${prefix}/${TARGET_SYS}/include/
- chmod -R a+r ${SDK_OUTPUT}/${prefix}/${TARGET_SYS}/include/
- find ${SDK_OUTPUT}/${prefix}/${TARGET_SYS}/include/ -type d | xargs chmod +x
-
- echo 'GROUP ( libpthread.so.0 libpthread_nonshared.a )' > ${SDK_OUTPUT}/${prefix}/${TARGET_SYS}/lib/libpthread.so
- echo 'GROUP ( libc.so.6 libc_nonshared.a )' > ${SDK_OUTPUT}/${prefix}/${TARGET_SYS}/lib/libc.so
- # remove unwanted housekeeping files
- mv ${SDK_OUTPUT}${libdir}/../${TARGET_SYS}/lib/ipkg/status ${SDK_OUTPUT}/${prefix}/package-status
- rm -rf ${SDK_OUTPUT}${libdir}/ipkg
-
- # remove unwanted executables
- rm -rf ${SDK_OUTPUT}/${prefix}/sbin ${SDK_OUTPUT}/${prefix}/etc
-
- # remove broken .la files
- rm ${SDK_OUTPUT}/${prefix}/${TARGET_SYS}/lib/*.la
-
- # fix pkgconfig data files
- cd ${SDK_OUTPUT}/${prefix}/${TARGET_SYS}/lib/pkgconfig
- for f in *.pc ; do
- sed -i 's%=/usr%=${prefix}/${TARGET_SYS}%g' "$f"
- done
- for f in *.pc ; do
- sed -i 's%${STAGING_DIR}%/usr/local/${TARGET_ARCH}/oe%g' "$f"
- done
-
- mkdir -p ${SDK_DEPLOY}
- cd ${SDK_OUTPUT}
- fakeroot tar cfj ${SDK_DEPLOY}/${DISTRO}-${DISTRO_VERSION}-${TARGET_ARCH}-oe-sdk-${DATE}.tar.bz2 .
-}
-
-do_populate_sdk[nostamp] = "1"
-do_populate_sdk[recrdeptask] = "do_package_write"
-addtask populate_sdk before do_package_write after do_install
diff --git a/packages/meta/meta-sdk-sbox-gpe.bb b/packages/meta/meta-sdk-sbox-gpe.bb
deleted file mode 100644
index 28317c03fe..0000000000
--- a/packages/meta/meta-sdk-sbox-gpe.bb
+++ /dev/null
@@ -1,100 +0,0 @@
-DESCRIPTION = "Meta package for a Scratchbox GPE SDK"
-LICENSE = "MIT"
-PACKAGES = ""
-PR = "r0"
-
-inherit rootfs_ipk sdk meta
-
-SDK_DIR = "${WORKDIR}/sdk"
-SDK_OUTPUT = "${SDK_DIR}/image"
-SDK_DEPLOY = "${DEPLOY_DIR}/sdk"
-prefix = "/"
-exec_prefix = "${prefix}"
-base_prefix = "${exec_prefix}"
-FILES_${PN} = "${prefix}"
-
-TARGET_INSTALL = "\
- task-sdk-base \
- task-sdk-sbox \
- task-sdk-sbox-gpe \
- task-sdk-x11 \
- task-sdk-x11-ext \
- task-sdk-gpe \
- task-sdk-gpephone"
-
-DEPENDS = "ipkg-native ipkg-utils-native fakeroot-native sed-native"
-RDEPENDS = "${TARGET_INSTALL}"
-
-
-IPKG_TARGET = "ipkg-cl -f ${SDK_DIR}/ipkg-target.conf -o ${SDK_OUTPUT}/${prefix}"
-
-do_populate_sdk() {
- set -ex
- package_update_index_ipk
- set +ex
-
- rm -rf ${SDK_OUTPUT}
- mkdir -p ${SDK_OUTPUT}
-
- cat <<EOF >${SDK_DIR}/ipkg-target.conf
-src oe file:${DEPLOY_DIR_IPK}
-EOF
- ipkgarchs="${PACKAGE_ARCHS}"
- priority=1
- for arch in $ipkgarchs; do
- echo "arch $arch $priority" >> ${SDK_DIR}/ipkg-target.conf
- priority=$(expr $priority + 5)
- if [ -e ${DEPLOY_DIR_IPK}/$arch/Packages ] ; then
- echo "src oe-$arch file:${DEPLOY_DIR_IPK}/$arch" >> ${SDK_DIR}/ipkg-target.conf
- fi
- done
-
- rm -r ${SDK_OUTPUT}
- mkdir -p ${SDK_OUTPUT}
-
- ${IPKG_TARGET} update
- ${IPKG_TARGET} install ${TARGET_INSTALL}
-
- mkdir -p ${SDK_OUTPUT}/${prefix}/usr/include
- #cp -pPR ${SDK_OUTPUT}/${prefix}/usr/* ${SDK_OUTPUT}/${prefix}/${TARGET_SYS}
- #rm -rf ${SDK_OUTPUT}/${prefix}/usr/
-
- #cp -pPR ${SDK_OUTPUT}/${prefix}/lib/* ${SDK_OUTPUT}/${prefix}/${TARGET_SYS}/lib
- #rm -rf ${SDK_OUTPUT}/${prefix}/lib/*
-
- cp -pPR ${TMPDIR}/cross/${TARGET_SYS}/include/linux/ ${SDK_OUTPUT}/${prefix}/usr/include/
- cp -pPR ${TMPDIR}/cross/${TARGET_SYS}/include/asm/ ${SDK_OUTPUT}/${prefix}/usr/include/
- chmod -R a+r ${SDK_OUTPUT}/${prefix}/usr/include/
- find ${SDK_OUTPUT}/${prefix}/usr/include/ -type d | xargs chmod +x
-
- echo 'GROUP ( libpthread.so.0 libpthread_nonshared.a )' > ${SDK_OUTPUT}/${prefix}/lib/libpthread.so
- echo 'GROUP ( libc.so.6 libc_nonshared.a )' > ${SDK_OUTPUT}/${prefix}/lib/libc.so
- # remove unwanted housekeeping files
- mv ${SDK_OUTPUT}${libdir}/../*/lib/ipkg/status ${SDK_OUTPUT}/${prefix}/package-status
- rm -rf ${SDK_OUTPUT}${libdir}/ipkg
-
- # remove unwanted executables
- rm -rf ${SDK_OUTPUT}/${prefix}/sbin ${SDK_OUTPUT}/${prefix}/etc
-
- # fixup libtool files
- rm ${SDK_OUTPUT}/${prefix}/usr/lib/*.la
- #cd ${SDK_OUTPUT}/${prefix}/usr/lib/
- #for f in *.la ; do
- # sed -i 's%${STAGING_DIR}/${TARGET_SYS}%/usr/%g' "$f"
- #done
-
-
- # fix pkgconfig data files
- cd ${SDK_OUTPUT}/${prefix}/usr/lib/pkgconfig
- for f in *.pc ; do
- sed -i 's%${STAGING_DIR}%/usr/%g' "$f"
- done
-
- mkdir -p ${SDK_DEPLOY}
- cd ${SDK_OUTPUT}
- fakeroot tar cfz ${SDK_DEPLOY}/sbox-gpesdk-${DISTRO}-${DISTRO_VERSION}-${TARGET_ARCH}.tar.gz .
-}
-
-do_populate_sdk[nostamp] = "1"
-do_populate_sdk[recrdeptask] = "do_package_write"
-addtask populate_sdk before do_build after do_install
diff --git a/packages/meta/meta-sdk-sbox.bb b/packages/meta/meta-sdk-sbox.bb
deleted file mode 100644
index 13c9612a74..0000000000
--- a/packages/meta/meta-sdk-sbox.bb
+++ /dev/null
@@ -1,96 +0,0 @@
-DESCRIPTION = "Meta package for a Scratchbox SDK"
-LICENSE = "MIT"
-PACKAGES = ""
-PR = "r6"
-
-inherit rootfs_ipk sdk meta
-
-SDK_DIR = "${WORKDIR}/sdk"
-SDK_OUTPUT = "${SDK_DIR}/image"
-SDK_DEPLOY = "${DEPLOY_DIR}/sdk"
-prefix = "/"
-exec_prefix = "${prefix}"
-base_prefix = "${exec_prefix}"
-FILES_${PN} = "${prefix}"
-
-TARGET_INSTALL = "\
- task-sdk-bare \
- task-sdk-sbox \
- "
-
-DEPENDS = "ipkg-native ipkg-utils-native fakeroot-native sed-native"
-RDEPENDS = "${TARGET_INSTALL}"
-
-
-IPKG_TARGET = "ipkg-cl -f ${SDK_DIR}/ipkg-target.conf -o ${SDK_OUTPUT}/${prefix}"
-
-do_populate_sdk() {
- set -ex
- package_update_index_ipk
- set +ex
-
- rm -rf ${SDK_OUTPUT}
- mkdir -p ${SDK_OUTPUT}
-
- cat <<EOF >${SDK_DIR}/ipkg-target.conf
-src oe file:${DEPLOY_DIR_IPK}
-EOF
- ipkgarchs="${PACKAGE_ARCHS}"
- priority=1
- for arch in $ipkgarchs; do
- echo "arch $arch $priority" >> ${SDK_DIR}/ipkg-target.conf
- priority=$(expr $priority + 5)
- if [ -e ${DEPLOY_DIR_IPK}/$arch/Packages ] ; then
- echo "src oe-$arch file:${DEPLOY_DIR_IPK}/$arch" >> ${SDK_DIR}/ipkg-target.conf
- fi
- done
-
- rm -r ${SDK_OUTPUT}
- mkdir -p ${SDK_OUTPUT}
-
- ${IPKG_TARGET} update
- ${IPKG_TARGET} install ${TARGET_INSTALL}
-
- mkdir -p ${SDK_OUTPUT}/${prefix}/usr/include
- #cp -pPR ${SDK_OUTPUT}/${prefix}/usr/* ${SDK_OUTPUT}/${prefix}/${TARGET_SYS}
- #rm -rf ${SDK_OUTPUT}/${prefix}/usr/
-
- #cp -pPR ${SDK_OUTPUT}/${prefix}/lib/* ${SDK_OUTPUT}/${prefix}/${TARGET_SYS}/lib
- #rm -rf ${SDK_OUTPUT}/${prefix}/lib/*
-
- cp -pPR ${TMPDIR}/cross/${TARGET_SYS}/include/linux/ ${SDK_OUTPUT}/${prefix}/usr/include/
- cp -pPR ${TMPDIR}/cross/${TARGET_SYS}/include/asm/ ${SDK_OUTPUT}/${prefix}/usr/include/
- chmod -R a+r ${SDK_OUTPUT}/${prefix}/usr/include/
- find ${SDK_OUTPUT}/${prefix}/usr/include/ -type d | xargs chmod +x
-
- echo 'GROUP ( libpthread.so.0 libpthread_nonshared.a )' > ${SDK_OUTPUT}/${prefix}/lib/libpthread.so
- echo 'GROUP ( libc.so.6 libc_nonshared.a )' > ${SDK_OUTPUT}/${prefix}/lib/libc.so
- # remove unwanted housekeeping files
- mv ${SDK_OUTPUT}${libdir}/../*/lib/ipkg/status ${SDK_OUTPUT}/${prefix}/package-status
- rm -rf ${SDK_OUTPUT}${libdir}/ipkg
-
- # remove unwanted executables
- rm -rf ${SDK_OUTPUT}/${prefix}/sbin ${SDK_OUTPUT}/${prefix}/etc
-
- # fixup libtool files
- rm ${SDK_OUTPUT}/${prefix}/usr/lib/*.la
- #cd ${SDK_OUTPUT}/${prefix}/usr/lib/
- #for f in *.la ; do
- # sed -i 's%${STAGING_DIR}/${TARGET_SYS}%/usr/%g' "$f"
- #done
-
-
- # fix pkgconfig data files
- cd ${SDK_OUTPUT}/${prefix}/usr/lib/pkgconfig
- for f in *.pc ; do
- sed -i 's%${STAGING_DIR}%/usr/%g' "$f"
- done
-
- mkdir -p ${SDK_DEPLOY}
- cd ${SDK_OUTPUT}
- fakeroot tar cfz ${SDK_DEPLOY}/${DISTRO}-${DISTRO_VERSION}-${TARGET_ARCH}-sbox-sdk-${DATE}.tar.gz .
-}
-
-do_populate_sdk[nostamp] = "1"
-do_populate_sdk[recrdeptask] = "do_package_write"
-addtask populate_sdk before do_build after do_install
diff --git a/packages/meta/meta-sdk.bb b/packages/meta/meta-sdk.bb
deleted file mode 100644
index 47796603db..0000000000
--- a/packages/meta/meta-sdk.bb
+++ /dev/null
@@ -1,100 +0,0 @@
-DESCRIPTION = "Meta package for bare SDK package"
-LICENSE = "MIT"
-DEPENDS = "ipkg-native ipkg-utils-native fakeroot-native sed-native"
-PR = "r14"
-
-inherit rootfs_ipk sdk meta
-
-SDK_DIR = "${WORKDIR}/sdk"
-SDK_OUTPUT = "${SDK_DIR}/image"
-SDK_DEPLOY = "${TMPDIR}/deploy/sdk"
-
-IPKG_HOST = "ipkg-cl -f ${SDK_DIR}/ipkg-host.conf -o ${SDK_OUTPUT}"
-IPKG_TARGET = "ipkg-cl -f ${SDK_DIR}/ipkg-target.conf -o ${SDK_OUTPUT}/${prefix}"
-
-HOST_INSTALL = "\
- binutils-cross-sdk \
- gcc-cross-sdk \
- gdb-cross"
-
-TARGET_INSTALL = "\
- task-sdk-bare \
- "
-
-RDEPENDS = "${TARGET_INSTALL} ${HOST_INSTALL}"
-
-do_populate_sdk() {
- set -ex
- package_update_index_ipk
- set +ex
-
- echo "Creating host.conf..."
-
- rm -rf ${SDK_OUTPUT}
- mkdir -p ${SDK_OUTPUT}
-
- priority=1
- for arch in $ipkgarchs; do
- echo "arch $arch $priority" >> ${SDK_DIR}/ipkg-target.conf
- echo "arch ${BUILD_ARCH}-$arch-sdk $priority" >> ${SDK_DIR}/ipkg-host.conf
- priority=$(expr $priority + 5)
- if [ -e ${DEPLOY_DIR_IPK}/$arch/Packages ] ; then
- echo "src oe-$arch file:${DEPLOY_DIR_IPK}/$arch" >> ${SDK_DIR}/ipkg-target.conf
- fi
- if [ -e ${DEPLOY_DIR_IPK}/${BUILD_ARCH}-$arch-sdk/Packages ] ; then
- echo "src oe-$arch-sdk file:${DEPLOY_DIR_IPK}/${BUILD_ARCH}-$arch-sdk" >> ${SDK_DIR}/ipkg-host.conf
- fi
- done
-
- rm -r ${SDK_OUTPUT}
- mkdir -p ${SDK_OUTPUT}
-
- ${IPKG_HOST} update
- ${IPKG_HOST} -nodeps install ${HOST_INSTALL}
-
- ${IPKG_TARGET} update
- ${IPKG_TARGET} install ${TARGET_INSTALL}
-
- mkdir -p ${SDK_OUTPUT}/${prefix}/${TARGET_SYS}
- cp -pPR ${SDK_OUTPUT}/${prefix}/usr/* ${SDK_OUTPUT}/${prefix}/${TARGET_SYS}
- rm -rf ${SDK_OUTPUT}/${prefix}/usr/
-
- cp -pPR ${SDK_OUTPUT}/${prefix}/lib/* ${SDK_OUTPUT}/${prefix}/${TARGET_SYS}/lib
- rm -rf ${SDK_OUTPUT}/${prefix}/lib/*
-
- mv ${SDK_OUTPUT}/${prefix}/${TARGET_SYS}/lib/gcc* ${SDK_OUTPUT}/${prefix}/lib
-
- cp -pPR ${TMPDIR}/cross/${TARGET_SYS}/include/linux/ ${SDK_OUTPUT}/${prefix}/${TARGET_SYS}/include/
- cp -pPR ${TMPDIR}/cross/${TARGET_SYS}/include/asm/ ${SDK_OUTPUT}/${prefix}/${TARGET_SYS}/include/
- chmod -R a+r ${SDK_OUTPUT}/${prefix}/${TARGET_SYS}/include/
- find ${SDK_OUTPUT}/${prefix}/${TARGET_SYS}/include/ -type d | xargs chmod +x
-
- echo 'GROUP ( libpthread.so.0 libpthread_nonshared.a )' > ${SDK_OUTPUT}/${prefix}/${TARGET_SYS}/lib/libpthread.so
- echo 'GROUP ( libc.so.6 libc_nonshared.a )' > ${SDK_OUTPUT}/${prefix}/${TARGET_SYS}/lib/libc.so
- # remove unwanted housekeeping files
- mv ${SDK_OUTPUT}${libdir}/../${TARGET_SYS}/lib/ipkg/status ${SDK_OUTPUT}/${prefix}/package-status
- rm -rf ${SDK_OUTPUT}${libdir}/ipkg
-
- # remove unwanted executables
- rm -rf ${SDK_OUTPUT}/${prefix}/sbin ${SDK_OUTPUT}/${prefix}/etc
-
- # remove broken .la files
- rm ${SDK_OUTPUT}/${prefix}/${TARGET_SYS}/lib/*.la
-
- # fix pkgconfig data files
- cd ${SDK_OUTPUT}/${prefix}/${TARGET_SYS}/lib/pkgconfig
- for f in *.pc ; do
- sed -i 's%=/usr%=${prefix}/${TARGET_SYS}%g' "$f"
- done
- for f in *.pc ; do
- sed -i 's%${STAGING_DIR}%/usr/local/${TARGET_ARCH}/oe%g' "$f"
- done
-
- mkdir -p ${SDK_DEPLOY}
- cd ${SDK_OUTPUT}
- fakeroot tar cfj ${SDK_DEPLOY}/${DISTRO}-${DISTRO_VERSION}-${TARGET_ARCH}-oe-sdk-${DATE}.tar.bz2 .
-}
-
-do_populate_sdk[nostamp] = "1"
-do_populate_sdk[recrdeptask] = "do_package_write"
-addtask populate_sdk before do_build after do_install
diff --git a/packages/meta/meta-toolchain-gpe-sbox.bb b/packages/meta/meta-toolchain-gpe-sbox.bb
new file mode 100644
index 0000000000..d32087b964
--- /dev/null
+++ b/packages/meta/meta-toolchain-gpe-sbox.bb
@@ -0,0 +1,11 @@
+TOOLCHAIN_TARGET_TASK = "\
+ task-sdk-base \
+ task-sdk-sbox \
+ task-sdk-sbox-gpe \
+ task-sdk-x11 \
+ task-sdk-x11-ext \
+ task-sdk-gpe \
+ task-sdk-gpephone"
+
+require meta-toolchain.bb
+
diff --git a/packages/meta/meta-toolchain-gpe.bb b/packages/meta/meta-toolchain-gpe.bb
new file mode 100644
index 0000000000..f79ff31bb7
--- /dev/null
+++ b/packages/meta/meta-toolchain-gpe.bb
@@ -0,0 +1,9 @@
+TOOLCHAIN_TARGET_TASK = "\
+ task-sdk-base \
+ task-sdk-x11 \
+ task-sdk-x11-ext \
+ task-sdk-gpe \
+ task-sdk-gpephone"
+
+require meta-toolchain.bb
+
diff --git a/packages/meta/meta-toolchain-openmoko.bb b/packages/meta/meta-toolchain-openmoko.bb
index 4e29180d28..90eff20259 100644
--- a/packages/meta/meta-toolchain-openmoko.bb
+++ b/packages/meta/meta-toolchain-openmoko.bb
@@ -1,5 +1,4 @@
TOOLCHAIN_TARGET_TASK = "task-toolchain-openmoko-sdk"
-RDEPENDS = "${TOOLCHAIN_TARGET_TASK}"
require meta-toolchain.bb
diff --git a/packages/meta/meta-toolchain-sbox.bb b/packages/meta/meta-toolchain-sbox.bb
new file mode 100644
index 0000000000..6e31fd0d69
--- /dev/null
+++ b/packages/meta/meta-toolchain-sbox.bb
@@ -0,0 +1,6 @@
+TOOLCHAIN_TARGET_TASK = "\
+ task-sdk-bare \
+ task-sdk-sbox"
+
+require meta-toolchain.bb
+
diff --git a/packages/meta/meta-toolchain.bb b/packages/meta/meta-toolchain.bb
index 58a5fb622b..91467e5140 100644
--- a/packages/meta/meta-toolchain.bb
+++ b/packages/meta/meta-toolchain.bb
@@ -8,6 +8,8 @@ SDK_DIR = "${WORKDIR}/sdk"
SDK_OUTPUT = "${SDK_DIR}/image"
SDK_DEPLOY = "${TMPDIR}/deploy/sdk"
+FEED_ARCH ?= "${TARGET_ARCH}"
+
IPKG_HOST = "ipkg-cl -f ${IPKGCONF_SDK} -o ${SDK_OUTPUT}"
IPKG_TARGET = "ipkg-cl -f ${IPKGCONF_TARGET} -o ${SDK_OUTPUT}/${prefix}"
@@ -51,34 +53,29 @@ do_populate_sdk() {
fi
done
- mv ${SDK_OUTPUT}/${prefix}/${TARGET_SYS}/lib/gcc* ${SDK_OUTPUT}/${prefix}/lib
-
- cp -pPR ${TMPDIR}/cross/${TARGET_SYS}/include/linux/ ${SDK_OUTPUT}/${prefix}/${TARGET_SYS}/include/
- cp -pPR ${TMPDIR}/cross/${TARGET_SYS}/include/asm/ ${SDK_OUTPUT}/${prefix}/${TARGET_SYS}/include/
- chmod -R a+r ${SDK_OUTPUT}/${prefix}/${TARGET_SYS}/include/
- find ${SDK_OUTPUT}/${prefix}/${TARGET_SYS}/include/ -type d | xargs chmod +x
+ mv ${SDK_OUTPUT}/${prefix}/${TARGET_SYS}/lib/gcc ${SDK_OUTPUT}/${prefix}/lib
echo 'GROUP ( libpthread.so.0 libpthread_nonshared.a )' > ${SDK_OUTPUT}/${prefix}/${TARGET_SYS}/lib/libpthread.so
echo 'GROUP ( libc.so.6 libc_nonshared.a )' > ${SDK_OUTPUT}/${prefix}/${TARGET_SYS}/lib/libc.so
# remove unwanted housekeeping files
- mv ${SDK_OUTPUT}${libdir}/../${TARGET_SYS}/lib/ipkg/status ${SDK_OUTPUT}/${prefix}/package-status
- rm -Rf ${SDK_OUTPUT}${libdir}/ipkg
+ mv ${SDK_OUTPUT}${prefix}/${TARGET_SYS}/lib/ipkg/status ${SDK_OUTPUT}/${prefix}/package-status
+ rm -Rf ${SDK_OUTPUT}${prefix}/${TARGET_SYS}/lib/ipkg
mv ${SDK_OUTPUT}/usr/lib/ipkg/status ${SDK_OUTPUT}/${prefix}/package-status-host
rm -Rf ${SDK_OUTPUT}/usr/lib
- # extract and store ipks, pkgdata, pkgmaps and shlibs data
+ # extract and store ipks, pkgdata and shlibs data
target_pkgs=`cat ${SDK_OUTPUT}/${prefix}/package-status | grep Package: | cut -f 2 -d ' '`
mkdir -p ${SDK_OUTPUT}/${prefix}/ipk/
mkdir -p ${SDK_OUTPUT}/${prefix}/pkgdata/runtime/
- mkdir -p ${SDK_OUTPUT}/${prefix}/pkgmaps/debian/
mkdir -p ${SDK_OUTPUT}/${prefix}/${TARGET_SYS}/shlibs/
for pkg in $target_pkgs ; do
for arch in $revipkgarchs; do
- if [ -e ${DEPLOY_DIR_IPK}/${pkg}_*_$arch.ipk ]; then
- echo "Found ${DEPLOY_DIR_IPK}/${pkg}_$arch.ipk"
- cp ${DEPLOY_DIR_IPK}/${pkg}_*_$arch.ipk ${SDK_OUTPUT}/${prefix}/ipk/
- orig_pkg=`ipkg-list-fields ${DEPLOY_DIR_IPK}/${pkg}_*_$arch.ipk | grep OE: | cut -d ' ' -f2`
+ pkgnames=${DEPLOY_DIR_IPK}/$arch/${pkg}_*_$arch.ipk
+ if [ -e $pkgnames ]; then
+ echo "Found $pkgnames"
+ cp $pkgnames ${SDK_OUTPUT}/${prefix}/ipk/
+ orig_pkg=`ipkg-list-fields $pkgnames | grep OE: | cut -d ' ' -f2`
pkg_subdir=$arch${TARGET_VENDOR}${@['-' + bb.data.getVar('TARGET_OS', d, 1), ''][bb.data.getVar('TARGET_OS', d, 1) == ('' or 'custom')]}
mkdir -p ${SDK_OUTPUT}/${prefix}/pkgdata/$pkg_subdir/runtime
cp ${STAGING_DIR}/pkgdata/$pkg_subdir/$orig_pkg ${SDK_OUTPUT}/${prefix}/pkgdata/$pkg_subdir/
@@ -88,11 +85,8 @@ do_populate_sdk() {
if [ -e ${STAGING_DIR}/pkgdata/$pkg_subdir/runtime/$subpkg.packaged ];then
cp ${STAGING_DIR}/pkgdata/$pkg_subdir/runtime/$subpkg.packaged ${SDK_OUTPUT}/${prefix}/pkgdata/$pkg_subdir/runtime/
fi
- if [ -e ${STAGING_DIR}/pkgmaps/debian/$subpkg ]; then
- cp ${STAGING_DIR}/pkgmaps/debian/$subpkg ${SDK_OUTPUT}/${prefix}/pkgmaps/debian/
- fi
- if [ -e ${STAGING_DIR}/${TARGET_SYS}/shlibs/$subpkg.list ]; then
- cp ${STAGING_DIR}/${TARGET_SYS}/shlibs/$subpkg.* ${SDK_OUTPUT}/${prefix}/${TARGET_SYS}/shlibs/
+ if [ -e ${STAGING_DIR_TARGET}/shlibs/$subpkg.list ]; then
+ cp ${STAGING_DIR_TARGET}/shlibs/$subpkg.* ${SDK_OUTPUT}/${prefix}/${TARGET_SYS}/shlibs/
fi
done
break
@@ -102,6 +96,8 @@ do_populate_sdk() {
# add missing link to libgcc_s.so.1
# libgcc-dev should be responsible for that, but it's not getting built
+ # RP: it gets smashed up depending on the order that gcc, gcc-cross and
+ # gcc-cross-sdk get built :( (30/11/07)
ln -sf libgcc_s.so.1 ${SDK_OUTPUT}/${prefix}/${TARGET_SYS}/lib/libgcc_s.so
# remove unwanted executables
@@ -117,14 +113,14 @@ do_populate_sdk() {
sed -i 's%=/usr%=${prefix}/${TARGET_SYS}%g' "$f"
done
for f in *.pc ; do
- sed -i 's%${STAGING_DIR}%/usr/local/${TARGET_ARCH}/oe%g' "$f"
+ sed -i 's%${STAGING_DIR}%${prefix}%g' "$f"
done
fi
# package it up
mkdir -p ${SDK_DEPLOY}
cd ${SDK_OUTPUT}
- fakeroot tar cfj ${SDK_DEPLOY}/${DISTRO}-${DISTRO_VERSION}-${TARGET_ARCH}-${TARGET_OS}-toolchain.tar.bz2 .
+ fakeroot tar cfj ${SDK_DEPLOY}/${DISTRO}-${DISTRO_VERSION}-${FEED_ARCH}-${TARGET_OS}-toolchain.tar.bz2 .
}
do_populate_sdk[nostamp] = "1"
diff --git a/packages/meta/slugos-packages.bb b/packages/meta/slugos-packages.bb
index 7960be85eb..e914865e9b 100644
--- a/packages/meta/slugos-packages.bb
+++ b/packages/meta/slugos-packages.bb
@@ -5,7 +5,7 @@
DESCRIPTION = "Packages that are compatible with the SlugOS firmware"
HOMEPAGE = "http://www.nslu2-linux.org"
LICENSE = "MIT"
-PR = "r40"
+PR = "r42"
CONFLICTS = "db3"
COMPATIBLE_MACHINE = "nslu2"
@@ -48,6 +48,7 @@ SLUGOS_PACKAGES = "\
cherokee \
coreutils \
cron \
+ cryptsetup \
ctorrent \
ctrlproxy \
cups \
@@ -149,6 +150,7 @@ SLUGOS_PACKAGES = "\
net-tools \
netcat \
netpbm \
+ nfs-utils \
nmap \
ntfs-3g \
ntp \
@@ -166,6 +168,7 @@ SLUGOS_PACKAGES = "\
picocom \
pkgconfig \
popt \
+ portmap \
postfix \
ppp \
procps \
@@ -211,9 +214,9 @@ SLUGOS_PACKAGES = "\
wireless-tools \
wireshark \
wpa-supplicant \
- wview-sim wview-sim-mysql \
- wview-vpro wview-vpro-mysql \
- wview-wxt510 wview-wxt510-mysql \
+ wview-sim \
+ wview-vpro \
+ wview-wxt510 \
xinetd \
yeaphone \
yp-tools ypbind ypserv \
@@ -229,7 +232,6 @@ SLUGOS_BROKEN_PACKAGES = "\
fetchmail \
lirc-modules lirc \
madfu \
- portmap nfs-utils \
openldap \
pvrusb2-mci \
pwc \
@@ -238,6 +240,7 @@ SLUGOS_BROKEN_PACKAGES = "\
openocd task-mokogateway-everything \
task-native-sdk \
unionfs-modules unionfs-utils \
+ wview-sim-mysql wview-wxt510-mysql wview-vpro-mysql \
zd1211 \
"
diff --git a/packages/midpath/midpath-alsa_0.1.bb b/packages/midpath/midpath-alsa_0.1.bb
index 940a1ea8a2..6d580405b6 100644
--- a/packages/midpath/midpath-alsa_0.1.bb
+++ b/packages/midpath/midpath-alsa_0.1.bb
@@ -13,10 +13,6 @@ do_configure() {
do_compile() {
-mkdir -p ${S}/dist
-
-# Build native code
-
# Build the ALSA native part
cd ${S}/native/alsa
make || exit 1
diff --git a/packages/midpath/midpath-cldc-sdl_0.1.bb b/packages/midpath/midpath-cldc-sdl_0.1.bb
index d00cbfc619..65850e2f4c 100644
--- a/packages/midpath/midpath-cldc-sdl_0.1.bb
+++ b/packages/midpath/midpath-cldc-sdl_0.1.bb
@@ -13,8 +13,6 @@ do_configure() {
do_compile() {
-mkdir -p ${S}/dist
-
# Build SDLJava for CLDC
cd ${S}/external/sdljava-cldc
make JAVAC=${JAVAC_CMD} JAVAC_FLAGS="-bootclasspath ${CLDC_PATH}:${GNU_CLASSPATH_PATH} -sourcepath ${S}/external/sdljava-cldc -source 1.3 -target 1.1" || exit 1
diff --git a/packages/midpath/midpath-cldc-x11_0.1.bb b/packages/midpath/midpath-cldc-x11_0.1.bb
index 30ca378436..9db0c4a686 100644
--- a/packages/midpath/midpath-cldc-x11_0.1.bb
+++ b/packages/midpath/midpath-cldc-x11_0.1.bb
@@ -12,8 +12,6 @@ do_configure() {
do_compile() {
-mkdir -p ${S}/dist
-
# Build Escher X11 library
cd ${S}/external/escher-cldc/core
make JAVAC=${JAVAC_CMD} JAVAC_FLAGS="-bootclasspath ${CLDC_PATH} -sourcepath ${S}/external/escher-cldc/core -source 1.3 -target 1.1" || exit 1
diff --git a/packages/midpath/midpath-cldc_0.1.bb b/packages/midpath/midpath-cldc_0.1.bb
index 24ffc61332..51a1314467 100644
--- a/packages/midpath/midpath-cldc_0.1.bb
+++ b/packages/midpath/midpath-cldc_0.1.bb
@@ -2,6 +2,7 @@
require midpath.inc
PROVIDES = "virtual/cldc-api-1.1"
+RPROVIDES = "virtual/cldc-api-1.1"
do_compile() {
diff --git a/packages/midpath/midpath-gtk_0.1.bb b/packages/midpath/midpath-gtk_0.1.bb
index 680b4e259d..7bf5570ef2 100644
--- a/packages/midpath/midpath-gtk_0.1.bb
+++ b/packages/midpath/midpath-gtk_0.1.bb
@@ -15,8 +15,6 @@ do_configure() {
do_compile() {
-mkdir -p ${S}/dist
-
# Build the GTK native part
cd ${S}/native/gtk
make || exit 1
diff --git a/packages/midpath/midpath-pulseaudio_0.1.bb b/packages/midpath/midpath-pulseaudio_0.1.bb
new file mode 100644
index 0000000000..6344e018a0
--- /dev/null
+++ b/packages/midpath/midpath-pulseaudio_0.1.bb
@@ -0,0 +1,39 @@
+
+require midpath_${PV}.bb
+
+DEPENDS = "pulseaudio"
+RDEPENDS = "pulseaudio"
+
+do_configure() {
+ cd ${S}/native/pulseaudio
+ sed -i -e "s|\-I/usr/include/classpath|\-I${STAGING_INCDIR}/classpath-minimal|" Makefile
+ cd ${S}/resources-embedded/com/sun/midp/configuration
+ sed -i -e "s|sound.backend:NULL|sound.backend:PulseAudio|" configuration.cfg
+}
+
+do_compile() {
+
+# Build the PulseAudio native part
+cd ${S}/native/pulseaudio
+make || exit 1
+
+}
+
+do_install() {
+ install -d ${D}${libdir}
+ install -m 0644 ${S}/native/pulseaudio/libmidpathpulse.so ${D}${libdir}
+ install -d ${D}${datadir}/java/resources-embedded/com/sun/midp/configuration
+ install -m 0644 resources-embedded/com/sun/midp/configuration/configuration.cfg ${D}${datadir}/java/resources-embedded/com/sun/midp/configuration/
+}
+
+do_stage() {
+ :
+}
+
+PACKAGES = "${PN}"
+
+FILES_${PN} = "${libdir}/libmidpathpulse.so \
+ ${datadir}/java/resources-embedded/com/sun/midp/configuration/configuration.cfg \
+ "
+
+CONFFILES_${PN} = "${datadir}/java/resources-embedded/com/sun/midp/configuration/configuration.cfg"
diff --git a/packages/midpath/midpath-qt3x11_0.1.bb b/packages/midpath/midpath-qt3x11_0.1.bb
index 1d44706db9..1d24012810 100644
--- a/packages/midpath/midpath-qt3x11_0.1.bb
+++ b/packages/midpath/midpath-qt3x11_0.1.bb
@@ -20,8 +20,6 @@ do_configure() {
do_compile() {
-mkdir -p ${S}/dist
-
# Build the QT native part
cd ${S}/native/qt
make || exit 1
diff --git a/packages/midpath/midpath-qte_0.1.bb b/packages/midpath/midpath-qte_0.1.bb
index e37825bf57..39b9264930 100644
--- a/packages/midpath/midpath-qte_0.1.bb
+++ b/packages/midpath/midpath-qte_0.1.bb
@@ -18,8 +18,6 @@ do_configure() {
do_compile() {
-mkdir -p ${S}/dist
-
# Build the QT native part
cd ${S}/native/qt
make || exit 1
diff --git a/packages/midpath/midpath.inc b/packages/midpath/midpath.inc
index 7f6e4f3d31..33793bffd0 100644
--- a/packages/midpath/midpath.inc
+++ b/packages/midpath/midpath.inc
@@ -3,7 +3,7 @@ HOMEPAGE = "http://midpath.thenesis.org/"
LICENSE = "GPL"
PRIORITY = "optional"
SECTION = "interpreters"
-PR = "r0"
+PR = "r1"
SRC_URI = "http://downloads.sourceforge.net/midpath/midpath-${PV}.tar.gz"
diff --git a/packages/mipl-mipv6/mipv6_2.0.2.bb b/packages/mipl-mipv6/mipv6_2.0.2.bb
new file mode 100644
index 0000000000..8bbcb4cb75
--- /dev/null
+++ b/packages/mipl-mipv6/mipv6_2.0.2.bb
@@ -0,0 +1,22 @@
+LICENSE = "GPL"
+DEPENDS = "virtual/kernel"
+RRECOMMENDS = "kernel-module-mip6 kernel-module-ipv6"
+
+SRC_URI = "http://www.mobile-ipv6.org/software/download/mipv6-${PV}.tar.gz"
+
+inherit autotools module-base
+
+CFLAGS =+ "-I${S}/include -I${STAGING_KERNEL_DIR}/include"
+
+do_compile() {
+ oe_runmake CFLAGS="${CFLAGS}"
+}
+
+do_install() {
+ install -d ${D}${sbindir}
+ install -d ${D}${sysconfdir}/init.d
+ oe_runmake sbindir="${D}${sbindir}" initdir="${D}${sysconfdir}/init.d" mandir="${D}${mandir}" docdir="${D}${docdir}/mobile-ip6" NETWORK_MIP6_CONF="${D}${sysconfdir}" install
+}
+
+PACKAGE_ARCH_${PN} = "${MACHINE_ARCH}"
+
diff --git a/packages/monotone/monotone-6-0.37/.mtn2git_empty b/packages/monotone/monotone-6-0.37/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/monotone/monotone-6-0.37/.mtn2git_empty
diff --git a/packages/monotone/monotone-6-0.37/txt2c-cross-post-0.22.patch b/packages/monotone/monotone-6-0.37/txt2c-cross-post-0.22.patch
new file mode 100644
index 0000000000..182993f027
--- /dev/null
+++ b/packages/monotone/monotone-6-0.37/txt2c-cross-post-0.22.patch
@@ -0,0 +1,11 @@
+--- /tmp/Makefile.am 2007-11-12 14:43:17.000000000 +0100
++++ monotone-0.37/Makefile.am 2007-11-12 14:43:35.633234000 +0100
+@@ -692,7 +692,7 @@
+ CLEANFILES = $(BUILT_SOURCES) $(CLEAN_SOURCES) $(EPS_FIGURES)
+
+ txt2c: txt2c.cc
+- $(CXX) $(CXXFLAGS) -o $@ $<
++ $(BUILD_CXX) $(BUILD_CXXFLAGS) -o $@ $<
+ chmod 0755 $@$(EXEEXT)
+
+ # FIXME: should use stamp files.
diff --git a/packages/monotone/monotone-6_0.37.bb b/packages/monotone/monotone-6_0.37.bb
new file mode 100644
index 0000000000..571f5b17f5
--- /dev/null
+++ b/packages/monotone/monotone-6_0.37.bb
@@ -0,0 +1,52 @@
+DESCRIPTION = "Monotone is a distributed Source Control System"
+HOMEPAGE = "http://www.monotone.ca/"
+SECTION = "devel"
+PRIORITY = "optional"
+LICENSE = "MIT"
+DEPENDS = "boost"
+
+PROVIDES = "monotone"
+RPROVIDES = "monotone"
+
+S = "${WORKDIR}/monotone-${PV}"
+# no cross compile support - it tries to run the test program even with
+# --enable_ipv6=yes
+EXTRA_OECONF = "--disable-ipv6 \
+ --disable-dependency-tracking \
+ --disable-rpath \
+ --disable-nls \
+ --with-gnu-ld \
+ --with-bundled-lua --with-bundled-sqlite"
+
+inherit autotools
+
+# Release 0.22 reveals bugs in g++ for thumb (g++ generates
+# relocations which the linker cannot represent)
+#FIXME: remove the following
+ARM_INSTRUCTION_SET = "arm"
+
+PR = "r0"
+
+SRC_URI = "http://monotone.ca/downloads/${PV}/monotone-${PV}.tar.gz \
+ file://txt2c-cross-post-0.22.patch;patch=1 \
+# file://uclibc.database.hh.stdarg.patch;patch=1 \
+ file://configure.ac-no-sync-with-stdio-0.31.patch;patch=1 \
+ "
+do_compile_append() {
+ touch testsuite
+}
+
+# This makes the testsuite as a package and renames the monotone executable
+# to include the netsync suffix.
+do_install_append() {
+ install -d ${D}${tsd}
+ install -c -m 755 testsuite ${D}${tsd}/testsuite
+ cp -pPR tests ${D}${tsd}/tests
+ rm ${D}/home/monotone/monotone-6/tests/diff_a_binary_file/binary
+}
+
+PACKAGES = "${PN} ${PN}-doc ${PN}-testsuite"
+tsd = "/home/monotone/${PN}"
+FILES_${PN}-testsuite = "${tsd}/testsuite ${tsd}/tests"
+RDEPENDS_${PN}-testsuite += "bash sed grep cvs patch perl perl-modules"
+
diff --git a/packages/mozilla/firefox-2.0.0.3/linkage-problem.patch b/packages/mozilla/firefox-2.0.0.3/linkage-problem.patch
new file mode 100644
index 0000000000..28bffd1e22
--- /dev/null
+++ b/packages/mozilla/firefox-2.0.0.3/linkage-problem.patch
@@ -0,0 +1,14 @@
+--- mozilla/layout/build/Makefile.in~ 2007-11-24 00:38:14.000000000 -0200
++++ mozilla/layout/build/Makefile.in 2007-11-24 00:38:14.000000000 -0200
+@@ -229,6 +229,11 @@
+ $(NULL)
+ endif
+
++ifdef MOZ_ENABLE_XFT
++EXTRA_DSO_LDOPTS += $(MOZ_XFT_LIBS) \
++ $(NULL)
++endif
++
+ ifneq (,$(MOZ_ENABLE_CANVAS)$(MOZ_SVG_RENDERER_CAIRO))
+ EXTRA_DSO_LDOPTS += $(MOZ_CAIRO_LIBS) \
+ $(NULL)
diff --git a/packages/mozilla/firefox-2.0.0.3/mozconfig b/packages/mozilla/firefox-2.0.0.3/mozconfig
index 9737330a77..96caace6bb 100644
--- a/packages/mozilla/firefox-2.0.0.3/mozconfig
+++ b/packages/mozilla/firefox-2.0.0.3/mozconfig
@@ -55,3 +55,6 @@ ac_add_options --enable-image-decoders=png,gif,jpeg
#ac_add_options --disable-shared
#ac_add_options --enable-static
ac_add_options --enable-optimize=-O1
+
+# Use cairo from system
+ac_add_options --enable-system-cairo
diff --git a/packages/mozilla/firefox_2.0.0.3.bb b/packages/mozilla/firefox_2.0.0.3.bb
index ede30a6b05..e1fb5a996d 100644
--- a/packages/mozilla/firefox_2.0.0.3.bb
+++ b/packages/mozilla/firefox_2.0.0.3.bb
@@ -1,17 +1,22 @@
-PR = "r2"
+DEPENDS += "cairo"
+PR = "r3"
+
SRC_URI = "http://ftp.mozilla.org/pub/mozilla.org/firefox/releases/${PV}/source/firefox-${PV}-source.tar.bz2 \
file://xptcstubs.patch;patch=1 \
file://no-xmb.patch;patch=1 \
file://jsautocfg.h \
file://extensions-hack.patch;patch=1 \
- file://security-cross.patch;patch=1 \
- file://jsautocfg-dontoverwrite.patch;patch=1 \
- file://xptcinvoke-arm.patch;patch=1 \
- file://eabi-fix.patch;patch=1 \
- file://eabi-fix2.patch;patch=1 \
- file://eabi-fix3.patch;patch=1 \
+ file://security-cross.patch;patch=1 \
+ file://jsautocfg-dontoverwrite.patch;patch=1 \
+ file://xptcinvoke-arm.patch;patch=1 \
+ file://eabi-fix.patch;patch=1 \
+ file://eabi-fix2.patch;patch=1 \
+ file://eabi-fix3.patch;patch=1 \
+ file://linkage-problem.patch;patch=1 \
"
+
S = "${WORKDIR}/mozilla"
+
DEFAULT_PREFERENCE = "-1"
inherit mozilla
@@ -36,4 +41,3 @@ do_stage() {
# removes 2 lines that call absent headers
sed -e '178,179d' ${STAGING_INCDIR}/${P}/nsIServiceManager.h
}
-
diff --git a/packages/mozilla/mozilla/.mtn2git_empty b/packages/mozilla/mozilla/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/mozilla/mozilla/.mtn2git_empty
diff --git a/packages/mozilla/mozilla/files/.mtn2git_empty b/packages/mozilla/mozilla/files/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/mozilla/mozilla/files/.mtn2git_empty
diff --git a/packages/mozilla/mozilla/files/i386/.mtn2git_empty b/packages/mozilla/mozilla/files/i386/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/mozilla/mozilla/files/i386/.mtn2git_empty
diff --git a/packages/mozilla/mozilla/files/i386/jsautocfg.h b/packages/mozilla/mozilla/files/i386/jsautocfg.h
new file mode 100644
index 0000000000..7e8171fc23
--- /dev/null
+++ b/packages/mozilla/mozilla/files/i386/jsautocfg.h
@@ -0,0 +1,52 @@
+#ifndef js_cpucfg___
+#define js_cpucfg___
+
+/* AUTOMATICALLY GENERATED - DO NOT EDIT */
+
+#define IS_LITTLE_ENDIAN 1
+#undef IS_BIG_ENDIAN
+
+#define JS_BYTES_PER_BYTE 1L
+#define JS_BYTES_PER_SHORT 2L
+#define JS_BYTES_PER_INT 4L
+#define JS_BYTES_PER_INT64 8L
+#define JS_BYTES_PER_LONG 4L
+#define JS_BYTES_PER_FLOAT 4L
+#define JS_BYTES_PER_DOUBLE 8L
+#define JS_BYTES_PER_WORD 4L
+#define JS_BYTES_PER_DWORD 8L
+
+#define JS_BITS_PER_BYTE 8L
+#define JS_BITS_PER_SHORT 16L
+#define JS_BITS_PER_INT 32L
+#define JS_BITS_PER_INT64 64L
+#define JS_BITS_PER_LONG 32L
+#define JS_BITS_PER_FLOAT 32L
+#define JS_BITS_PER_DOUBLE 64L
+#define JS_BITS_PER_WORD 32L
+
+#define JS_BITS_PER_BYTE_LOG2 3L
+#define JS_BITS_PER_SHORT_LOG2 4L
+#define JS_BITS_PER_INT_LOG2 5L
+#define JS_BITS_PER_INT64_LOG2 6L
+#define JS_BITS_PER_LONG_LOG2 5L
+#define JS_BITS_PER_FLOAT_LOG2 5L
+#define JS_BITS_PER_DOUBLE_LOG2 6L
+#define JS_BITS_PER_WORD_LOG2 5L
+
+#define JS_ALIGN_OF_SHORT 2L
+#define JS_ALIGN_OF_INT 4L
+#define JS_ALIGN_OF_LONG 4L
+#define JS_ALIGN_OF_INT64 8L
+#define JS_ALIGN_OF_FLOAT 4L
+#define JS_ALIGN_OF_DOUBLE 8L
+#define JS_ALIGN_OF_POINTER 4L
+#define JS_ALIGN_OF_WORD 4L
+
+#define JS_BYTES_PER_WORD_LOG2 2L
+#define JS_BYTES_PER_DWORD_LOG2 3L
+#define JS_WORDS_PER_DWORD_LOG2 1L
+
+#define JS_STACK_GROWTH_DIRECTION (-1)
+
+#endif /* js_cpucfg___ */
diff --git a/packages/mozilla/mozilla/files/i486/.mtn2git_empty b/packages/mozilla/mozilla/files/i486/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/mozilla/mozilla/files/i486/.mtn2git_empty
diff --git a/packages/mozilla/mozilla/files/i486/jsautocfg.h b/packages/mozilla/mozilla/files/i486/jsautocfg.h
new file mode 100644
index 0000000000..7e8171fc23
--- /dev/null
+++ b/packages/mozilla/mozilla/files/i486/jsautocfg.h
@@ -0,0 +1,52 @@
+#ifndef js_cpucfg___
+#define js_cpucfg___
+
+/* AUTOMATICALLY GENERATED - DO NOT EDIT */
+
+#define IS_LITTLE_ENDIAN 1
+#undef IS_BIG_ENDIAN
+
+#define JS_BYTES_PER_BYTE 1L
+#define JS_BYTES_PER_SHORT 2L
+#define JS_BYTES_PER_INT 4L
+#define JS_BYTES_PER_INT64 8L
+#define JS_BYTES_PER_LONG 4L
+#define JS_BYTES_PER_FLOAT 4L
+#define JS_BYTES_PER_DOUBLE 8L
+#define JS_BYTES_PER_WORD 4L
+#define JS_BYTES_PER_DWORD 8L
+
+#define JS_BITS_PER_BYTE 8L
+#define JS_BITS_PER_SHORT 16L
+#define JS_BITS_PER_INT 32L
+#define JS_BITS_PER_INT64 64L
+#define JS_BITS_PER_LONG 32L
+#define JS_BITS_PER_FLOAT 32L
+#define JS_BITS_PER_DOUBLE 64L
+#define JS_BITS_PER_WORD 32L
+
+#define JS_BITS_PER_BYTE_LOG2 3L
+#define JS_BITS_PER_SHORT_LOG2 4L
+#define JS_BITS_PER_INT_LOG2 5L
+#define JS_BITS_PER_INT64_LOG2 6L
+#define JS_BITS_PER_LONG_LOG2 5L
+#define JS_BITS_PER_FLOAT_LOG2 5L
+#define JS_BITS_PER_DOUBLE_LOG2 6L
+#define JS_BITS_PER_WORD_LOG2 5L
+
+#define JS_ALIGN_OF_SHORT 2L
+#define JS_ALIGN_OF_INT 4L
+#define JS_ALIGN_OF_LONG 4L
+#define JS_ALIGN_OF_INT64 8L
+#define JS_ALIGN_OF_FLOAT 4L
+#define JS_ALIGN_OF_DOUBLE 8L
+#define JS_ALIGN_OF_POINTER 4L
+#define JS_ALIGN_OF_WORD 4L
+
+#define JS_BYTES_PER_WORD_LOG2 2L
+#define JS_BYTES_PER_DWORD_LOG2 3L
+#define JS_WORDS_PER_DWORD_LOG2 1L
+
+#define JS_STACK_GROWTH_DIRECTION (-1)
+
+#endif /* js_cpucfg___ */
diff --git a/packages/mozilla/mozilla/files/i586/.mtn2git_empty b/packages/mozilla/mozilla/files/i586/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/mozilla/mozilla/files/i586/.mtn2git_empty
diff --git a/packages/mozilla/mozilla/files/i586/jsautocfg.h b/packages/mozilla/mozilla/files/i586/jsautocfg.h
new file mode 100644
index 0000000000..7e8171fc23
--- /dev/null
+++ b/packages/mozilla/mozilla/files/i586/jsautocfg.h
@@ -0,0 +1,52 @@
+#ifndef js_cpucfg___
+#define js_cpucfg___
+
+/* AUTOMATICALLY GENERATED - DO NOT EDIT */
+
+#define IS_LITTLE_ENDIAN 1
+#undef IS_BIG_ENDIAN
+
+#define JS_BYTES_PER_BYTE 1L
+#define JS_BYTES_PER_SHORT 2L
+#define JS_BYTES_PER_INT 4L
+#define JS_BYTES_PER_INT64 8L
+#define JS_BYTES_PER_LONG 4L
+#define JS_BYTES_PER_FLOAT 4L
+#define JS_BYTES_PER_DOUBLE 8L
+#define JS_BYTES_PER_WORD 4L
+#define JS_BYTES_PER_DWORD 8L
+
+#define JS_BITS_PER_BYTE 8L
+#define JS_BITS_PER_SHORT 16L
+#define JS_BITS_PER_INT 32L
+#define JS_BITS_PER_INT64 64L
+#define JS_BITS_PER_LONG 32L
+#define JS_BITS_PER_FLOAT 32L
+#define JS_BITS_PER_DOUBLE 64L
+#define JS_BITS_PER_WORD 32L
+
+#define JS_BITS_PER_BYTE_LOG2 3L
+#define JS_BITS_PER_SHORT_LOG2 4L
+#define JS_BITS_PER_INT_LOG2 5L
+#define JS_BITS_PER_INT64_LOG2 6L
+#define JS_BITS_PER_LONG_LOG2 5L
+#define JS_BITS_PER_FLOAT_LOG2 5L
+#define JS_BITS_PER_DOUBLE_LOG2 6L
+#define JS_BITS_PER_WORD_LOG2 5L
+
+#define JS_ALIGN_OF_SHORT 2L
+#define JS_ALIGN_OF_INT 4L
+#define JS_ALIGN_OF_LONG 4L
+#define JS_ALIGN_OF_INT64 8L
+#define JS_ALIGN_OF_FLOAT 4L
+#define JS_ALIGN_OF_DOUBLE 8L
+#define JS_ALIGN_OF_POINTER 4L
+#define JS_ALIGN_OF_WORD 4L
+
+#define JS_BYTES_PER_WORD_LOG2 2L
+#define JS_BYTES_PER_DWORD_LOG2 3L
+#define JS_WORDS_PER_DWORD_LOG2 1L
+
+#define JS_STACK_GROWTH_DIRECTION (-1)
+
+#endif /* js_cpucfg___ */
diff --git a/packages/mozilla/mozilla/files/i686/.mtn2git_empty b/packages/mozilla/mozilla/files/i686/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/mozilla/mozilla/files/i686/.mtn2git_empty
diff --git a/packages/mozilla/mozilla/files/i686/jsautocfg.h b/packages/mozilla/mozilla/files/i686/jsautocfg.h
new file mode 100644
index 0000000000..7e8171fc23
--- /dev/null
+++ b/packages/mozilla/mozilla/files/i686/jsautocfg.h
@@ -0,0 +1,52 @@
+#ifndef js_cpucfg___
+#define js_cpucfg___
+
+/* AUTOMATICALLY GENERATED - DO NOT EDIT */
+
+#define IS_LITTLE_ENDIAN 1
+#undef IS_BIG_ENDIAN
+
+#define JS_BYTES_PER_BYTE 1L
+#define JS_BYTES_PER_SHORT 2L
+#define JS_BYTES_PER_INT 4L
+#define JS_BYTES_PER_INT64 8L
+#define JS_BYTES_PER_LONG 4L
+#define JS_BYTES_PER_FLOAT 4L
+#define JS_BYTES_PER_DOUBLE 8L
+#define JS_BYTES_PER_WORD 4L
+#define JS_BYTES_PER_DWORD 8L
+
+#define JS_BITS_PER_BYTE 8L
+#define JS_BITS_PER_SHORT 16L
+#define JS_BITS_PER_INT 32L
+#define JS_BITS_PER_INT64 64L
+#define JS_BITS_PER_LONG 32L
+#define JS_BITS_PER_FLOAT 32L
+#define JS_BITS_PER_DOUBLE 64L
+#define JS_BITS_PER_WORD 32L
+
+#define JS_BITS_PER_BYTE_LOG2 3L
+#define JS_BITS_PER_SHORT_LOG2 4L
+#define JS_BITS_PER_INT_LOG2 5L
+#define JS_BITS_PER_INT64_LOG2 6L
+#define JS_BITS_PER_LONG_LOG2 5L
+#define JS_BITS_PER_FLOAT_LOG2 5L
+#define JS_BITS_PER_DOUBLE_LOG2 6L
+#define JS_BITS_PER_WORD_LOG2 5L
+
+#define JS_ALIGN_OF_SHORT 2L
+#define JS_ALIGN_OF_INT 4L
+#define JS_ALIGN_OF_LONG 4L
+#define JS_ALIGN_OF_INT64 8L
+#define JS_ALIGN_OF_FLOAT 4L
+#define JS_ALIGN_OF_DOUBLE 8L
+#define JS_ALIGN_OF_POINTER 4L
+#define JS_ALIGN_OF_WORD 4L
+
+#define JS_BYTES_PER_WORD_LOG2 2L
+#define JS_BYTES_PER_DWORD_LOG2 3L
+#define JS_WORDS_PER_DWORD_LOG2 1L
+
+#define JS_STACK_GROWTH_DIRECTION (-1)
+
+#endif /* js_cpucfg___ */
diff --git a/packages/mozilla/mozilla/firefox-2.0.0.3/.mtn2git_empty b/packages/mozilla/mozilla/firefox-2.0.0.3/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/mozilla/mozilla/firefox-2.0.0.3/.mtn2git_empty
diff --git a/packages/mozilla/mozilla/firefox-2.0.0.3/linkage-problem.patch b/packages/mozilla/mozilla/firefox-2.0.0.3/linkage-problem.patch
new file mode 100644
index 0000000000..28bffd1e22
--- /dev/null
+++ b/packages/mozilla/mozilla/firefox-2.0.0.3/linkage-problem.patch
@@ -0,0 +1,14 @@
+--- mozilla/layout/build/Makefile.in~ 2007-11-24 00:38:14.000000000 -0200
++++ mozilla/layout/build/Makefile.in 2007-11-24 00:38:14.000000000 -0200
+@@ -229,6 +229,11 @@
+ $(NULL)
+ endif
+
++ifdef MOZ_ENABLE_XFT
++EXTRA_DSO_LDOPTS += $(MOZ_XFT_LIBS) \
++ $(NULL)
++endif
++
+ ifneq (,$(MOZ_ENABLE_CANVAS)$(MOZ_SVG_RENDERER_CAIRO))
+ EXTRA_DSO_LDOPTS += $(MOZ_CAIRO_LIBS) \
+ $(NULL)
diff --git a/packages/mpfr/mpfr-native_2.3.0.bb b/packages/mpfr/mpfr-native_2.3.0.bb
new file mode 100644
index 0000000000..01ba37c8bf
--- /dev/null
+++ b/packages/mpfr/mpfr-native_2.3.0.bb
@@ -0,0 +1,4 @@
+require mpfr_${PV}.bb
+inherit native
+DEPENDS = "gmp-native"
+
diff --git a/packages/mpfr/mpfr-native_svn.bb b/packages/mpfr/mpfr-native_svn.bb
new file mode 100644
index 0000000000..51b0f0a5d5
--- /dev/null
+++ b/packages/mpfr/mpfr-native_svn.bb
@@ -0,0 +1,3 @@
+require mpfr_svn.bb
+inherit native
+DEPENDS = "gmp-native"
diff --git a/packages/mpfr/mpfr.inc b/packages/mpfr/mpfr.inc
new file mode 100644
index 0000000000..cf898b62b6
--- /dev/null
+++ b/packages/mpfr/mpfr.inc
@@ -0,0 +1,6 @@
+DESCRIPTION = "A C library for multiple-precision floating-point computations with exact rounding"
+HOMEPAGE = "http://www.mpfr.org/"
+LICENSE = "LGPL"
+SECTION = "libs"
+
+inherit autotools
diff --git a/packages/mpfr/mpfr_2.1.1.bb b/packages/mpfr/mpfr_2.1.1.bb
index 10383b1caa..a42498cfd4 100644
--- a/packages/mpfr/mpfr_2.1.1.bb
+++ b/packages/mpfr/mpfr_2.1.1.bb
@@ -1,14 +1,11 @@
-DESCRIPTION = "A C library for multiple-precision floating-point computations with exact rounding"
-LICENSE = "LGPL"
-SECTION = "libs"
+require mpfr.inc
+
DEPENDS = "gmp"
-PR = "r2"
+PR = "r3"
SRC_URI = "http://www.mpfr.org/mpfr-${PV}/mpfr-${PV}.tar.bz2"
S = "${WORKDIR}/mpfr-${PV}"
-inherit autotools
-
do_stage() {
oe_runmake install prefix=${STAGING_DIR} \
bindir=${STAGING_BINDIR} \
diff --git a/packages/mpfr/mpfr_2.3.0.bb b/packages/mpfr/mpfr_2.3.0.bb
new file mode 100644
index 0000000000..92fbe7bd4b
--- /dev/null
+++ b/packages/mpfr/mpfr_2.3.0.bb
@@ -0,0 +1,15 @@
+require mpfr.inc
+
+DEPENDS = "gmp"
+PR = "r1"
+
+SRC_URI = "http://www.mpfr.org/mpfr-${PV}/mpfr-${PV}.tar.bz2"
+S = "${WORKDIR}/mpfr-${PV}"
+
+do_stage() {
+ oe_runmake install prefix=${STAGING_DIR} \
+ bindir=${STAGING_BINDIR} \
+ includedir=${STAGING_INCDIR} \
+ libdir=${STAGING_LIBDIR} \
+ datadir=${STAGING_DATADIR}
+}
diff --git a/packages/mpfr/mpfr_cvs.bb b/packages/mpfr/mpfr_cvs.bb
deleted file mode 100644
index fcea24633a..0000000000
--- a/packages/mpfr/mpfr_cvs.bb
+++ /dev/null
@@ -1,19 +0,0 @@
-DESCRIPTION = "A C library for multiple-precision floating-point computations with exact rounding"
-LICENSE = "LGPL"
-SECTION = "libs"
-DEPENDS = "gmp"
-PV = "0.0+cvs${SRCDATE}"
-PR = "r1"
-
-SRC_URI = "cvs://cvs:@cvs-sop.inria.fr/CVS/spaces;module=mpfr;method=pserver"
-S = "${WORKDIR}/mpfr"
-
-inherit autotools
-
-do_stage() {
- oe_runmake install prefix=${STAGING_DIR} \
- bindir=${STAGING_BINDIR} \
- includedir=${STAGING_INCDIR} \
- libdir=${STAGING_LIBDIR} \
- datadir=${STAGING_DATADIR}
-}
diff --git a/packages/mpfr/mpfr_svn.bb b/packages/mpfr/mpfr_svn.bb
new file mode 100644
index 0000000000..da6036e69f
--- /dev/null
+++ b/packages/mpfr/mpfr_svn.bb
@@ -0,0 +1,16 @@
+require mpfr.inc
+
+DEPENDS = "gmp"
+PV = "0.0+svn${SRCDATE}"
+PR = "r3"
+
+SRC_URI = "svn://scm.gforge.inria.fr/svn/mpfr;module=trunk"
+S = "${WORKDIR}/trunk"
+
+do_stage() {
+ oe_runmake install prefix=${STAGING_DIR} \
+ bindir=${STAGING_BINDIR} \
+ includedir=${STAGING_INCDIR} \
+ libdir=${STAGING_LIBDIR} \
+ datadir=${STAGING_DATADIR}
+}
diff --git a/packages/mplayer/files/motion-comp-pld.patch b/packages/mplayer/files/motion-comp-pld.patch
new file mode 100644
index 0000000000..6d4160c7bb
--- /dev/null
+++ b/packages/mplayer/files/motion-comp-pld.patch
@@ -0,0 +1,163 @@
+Index: MPlayer-1.0rc2/libmpeg2/motion_comp_arm_s.S
+===================================================================
+--- MPlayer-1.0rc2.orig/libmpeg2/motion_comp_arm_s.S 2007-11-02 14:16:50.000000000 +0000
++++ MPlayer-1.0rc2/libmpeg2/motion_comp_arm_s.S 2007-11-02 14:23:53.000000000 +0000
+@@ -18,6 +18,14 @@
+ @ along with this program; if not, write to the Free Software
+ @ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
++#if defined(__ARM_ARCH_5__) || \
++ defined(__ARM_ARCH_5T__) || \
++ defined(__ARM_ARCH_5TE__)
++#define PLD(code...) code
++#else
++#define PLD(code...)
++#endif
++
+ .text
+
+ @ ----------------------------------------------------------------
+@@ -25,7 +33,7 @@
+ .global MC_put_o_16_arm
+ MC_put_o_16_arm:
+ @@ void func(uint8_t * dest, const uint8_t * ref, int stride, int height)
+- pld [r1]
++ PLD ( pld [r1] )
+ stmfd sp!, {r4-r11, lr} @ R14 is also called LR
+ and r4, r1, #3
+ adr r5, MC_put_o_16_arm_align_jt
+@@ -35,7 +43,7 @@
+ MC_put_o_16_arm_align0:
+ ldmia r1, {r4-r7}
+ add r1, r1, r2
+- pld [r1]
++ PLD ( pld [r1] )
+ stmia r0, {r4-r7}
+ subs r3, r3, #1
+ add r0, r0, r2
+@@ -46,7 +54,7 @@
+ ldmia r1, {r4-r8}
+ add r1, r1, r2
+ mov r9, r4, lsr #(\shift)
+- pld [r1]
++ PLD ( pld [r1] )
+ mov r10, r5, lsr #(\shift)
+ orr r9, r9, r5, lsl #(32-\shift)
+ mov r11, r6, lsr #(\shift)
+@@ -85,7 +93,7 @@
+ .global MC_put_o_8_arm
+ MC_put_o_8_arm:
+ @@ void func(uint8_t * dest, const uint8_t * ref, int stride, int height)
+- pld [r1]
++ PLD ( pld [r1] )
+ stmfd sp!, {r4-r10, lr} @ R14 is also called LR
+ and r4, r1, #3
+ adr r5, MC_put_o_8_arm_align_jt
+@@ -94,7 +102,7 @@
+ MC_put_o_8_arm_align0:
+ ldmia r1, {r4-r5}
+ add r1, r1, r2
+- pld [r1]
++ PLD ( pld [r1] )
+ stmia r0, {r4-r5}
+ add r0, r0, r2
+ subs r3, r3, #1
+@@ -105,7 +113,7 @@
+ ldmia r1, {r4-r6}
+ add r1, r1, r2
+ mov r9, r4, lsr #(\shift)
+- pld [r1]
++ PLD ( pld [r1] )
+ mov r10, r5, lsr #(\shift)
+ orr r9, r9, r5, lsl #(32-\shift)
+ orr r10, r10, r6, lsl #(32-\shift)
+@@ -154,7 +162,7 @@
+ .global MC_put_x_16_arm
+ MC_put_x_16_arm:
+ @@ void func(uint8_t * dest, const uint8_t * ref, int stride, int height)
+- pld [r1]
++ PLD ( pld [r1] )
+ stmfd sp!, {r4-r11,lr} @ R14 is also called LR
+ and r4, r1, #3
+ adr r5, MC_put_x_16_arm_align_jt
+@@ -179,7 +187,7 @@
+ MC_put_x_16_arm_align0:
+ ldmia r1, {r4-r8}
+ add r1, r1, r2
+- pld [r1]
++ PLD ( pld [r1] )
+ AVG_PW r7, r8
+ AVG_PW r6, r7
+ AVG_PW r5, r6
+@@ -193,7 +201,7 @@
+ and r1, r1, #0xFFFFFFFC
+ 1: ldmia r1, {r4-r8}
+ add r1, r1, r2
+- pld [r1]
++ PLD ( pld [r1] )
+ ADJ_ALIGN_QW 8, r4, r5, r6, r7, r8
+ AVG_PW r7, r8
+ AVG_PW r6, r7
+@@ -208,7 +216,7 @@
+ and r1, r1, #0xFFFFFFFC
+ 1: ldmia r1, {r4-r8}
+ add r1, r1, r2
+- pld [r1]
++ PLD ( pld [r1] )
+ ADJ_ALIGN_QW 16, r4, r5, r6, r7, r8
+ AVG_PW r7, r8
+ AVG_PW r6, r7
+@@ -223,7 +231,7 @@
+ and r1, r1, #0xFFFFFFFC
+ 1: ldmia r1, {r4-r8}
+ add r1, r1, r2
+- pld [r1]
++ PLD ( pld [r1] )
+ ADJ_ALIGN_QW 24, r4, r5, r6, r7, r8
+ AVG_PW r7, r8
+ AVG_PW r6, r7
+@@ -246,7 +254,7 @@
+ .global MC_put_x_8_arm
+ MC_put_x_8_arm:
+ @@ void func(uint8_t * dest, const uint8_t * ref, int stride, int height)
+- pld [r1]
++ PLD ( pld [r1] )
+ stmfd sp!, {r4-r11,lr} @ R14 is also called LR
+ and r4, r1, #3
+ adr r5, MC_put_x_8_arm_align_jt
+@@ -267,7 +275,7 @@
+ MC_put_x_8_arm_align0:
+ ldmia r1, {r4-r6}
+ add r1, r1, r2
+- pld [r1]
++ PLD ( pld [r1] )
+ AVG_PW r5, r6
+ AVG_PW r4, r5
+ stmia r0, {r5-r6}
+@@ -279,7 +287,7 @@
+ and r1, r1, #0xFFFFFFFC
+ 1: ldmia r1, {r4-r6}
+ add r1, r1, r2
+- pld [r1]
++ PLD ( pld [r1] )
+ ADJ_ALIGN_DW 8, r4, r5, r6
+ AVG_PW r5, r6
+ AVG_PW r4, r5
+@@ -292,7 +300,7 @@
+ and r1, r1, #0xFFFFFFFC
+ 1: ldmia r1, {r4-r6}
+ add r1, r1, r2
+- pld [r1]
++ PLD ( pld [r1] )
+ ADJ_ALIGN_DW 16, r4, r5, r6
+ AVG_PW r5, r6
+ AVG_PW r4, r5
+@@ -305,7 +313,7 @@
+ and r1, r1, #0xFFFFFFFC
+ 1: ldmia r1, {r4-r6}
+ add r1, r1, r2
+- pld [r1]
++ PLD ( pld [r1] )
+ ADJ_ALIGN_DW 24, r4, r5, r6
+ AVG_PW r5, r6
+ AVG_PW r4, r5
diff --git a/packages/mplayer/mplayer_0.0+1.0rc2.bb b/packages/mplayer/mplayer_0.0+1.0rc2.bb
index 92b8b3ced9..d963ac03cf 100644
--- a/packages/mplayer/mplayer_0.0+1.0rc2.bb
+++ b/packages/mplayer/mplayer_0.0+1.0rc2.bb
@@ -24,7 +24,8 @@ SRC_URI = "http://www1.mplayerhq.hu/MPlayer/releases/MPlayer-1.0rc2.tar.bz2 \
file://mplayer-imageon-svn.patch;patch=1 \
file://imageon-video_out.patch;patch=1 \
file://pxa_configure.patch;patch=1 \
- file://pxa-video_out.patch;patch=1 "
+ file://pxa-video_out.patch;patch=1 \
+ file://motion-comp-pld.patch;patch=1 "
# This is required for the collie machine only as all stacks in that
# machine seem to be set to executable by the toolchain. If someone
@@ -39,7 +40,7 @@ PACKAGE_ARCH_hx4700 = "hx4700"
RCONFLICTS_${PN} = "mplayer-atty"
RREPLACES_${PN} = "mplayer-atty"
-PR = "r5"
+PR = "r6"
PARALLEL_MAKE = ""
diff --git a/packages/navit/navit_0.0.1.bb b/packages/navit/navit_0.0.1.bb
index 74ce41b78f..2db71a3e87 100644
--- a/packages/navit/navit_0.0.1.bb
+++ b/packages/navit/navit_0.0.1.bb
@@ -1,13 +1,12 @@
DESCRIPTION = "Navit is a car navigation system with routing engine."
LICENSE = "GPL"
DEPENDS = "glib-2.0 gtk+"
-PV = "0.0.1"
PR = "r2"
inherit autotools
SRC_URI = "${SOURCEFORGE_MIRROR}/navit/navit-${PV}.tar.gz \
- file://compile-fix.patch;patch=1"
+ file://compile-fix.patch;patch=1"
EXTRA_OECONF = "--disable-gui-sdl --disable-binding-python --enable-avoid-unaligned --enable-avoid-float"
diff --git a/packages/navit/navit_0.0.2.bb b/packages/navit/navit_0.0.2.bb
new file mode 100644
index 0000000000..ce34ee835b
--- /dev/null
+++ b/packages/navit/navit_0.0.2.bb
@@ -0,0 +1,13 @@
+DESCRIPTION = "Navit is a car navigation system with routing engine."
+LICENSE = "GPL"
+DEPENDS = "glib-2.0 gtk+"
+PR = "r0"
+
+inherit autotools
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/navit/navit-${PV}.tar.gz \
+ file://compile-fix.patch;patch=1"
+
+EXTRA_OECONF = "--disable-gui-sdl --disable-binding-python --enable-avoid-unaligned --enable-avoid-float"
+
+FILES_${PN}-dbg += "${libdir}/${PN}/*/.debug"
diff --git a/packages/navit/navit_cvs.bb b/packages/navit/navit_cvs.bb
new file mode 100644
index 0000000000..8f158d4f79
--- /dev/null
+++ b/packages/navit/navit_cvs.bb
@@ -0,0 +1,19 @@
+DESCRIPTION = "Navit is a car navigation system with routing engine."
+LICENSE = "GPL"
+DEPENDS = "glib-2.0 gtk+"
+PV = "0.0.2+cvs${SRCDATE}"
+PR = "r0"
+
+inherit autotools
+S = "${WORKDIR}/navit"
+
+SRC_URI = "cvs://anonymous@navit.cvs.sourceforge.net/cvsroot/navit;module=navit \
+ "
+
+EXTRA_OECONF = "--disable-binding-python --disable-gui-sdl --disable-samplemap --enable-avoid-float --enable-avoid-unaligned"
+#--enable-shared
+
+EXTRA_AUTORECONF = " -I m4"
+
+FILES_${PN}-dbg += "${libdir}/${PN}/*/.debug"
+
diff --git a/packages/net-tools/net-tools_1.60.bb b/packages/net-tools/net-tools_1.60.bb
index ab79db8cf1..dddcedf00a 100644
--- a/packages/net-tools/net-tools_1.60.bb
+++ b/packages/net-tools/net-tools_1.60.bb
@@ -1,6 +1,6 @@
SUMMARY="Basic networking tools"
LICENSE="GPL"
-
+PR = "r1"
#
# NOTE:
@@ -73,8 +73,8 @@ do_configure() {
}
do_compile() {
- export COPTS=$CFLAGS
- export LOPTS=$LDFLAGS
+ export COPTS="$CFLAGS"
+ export LOPTS="$LDFLAGS"
unset CFLAGS
unset LDFLAGS
diff --git a/packages/netbase/netbase/fic-gta01/interfaces b/packages/netbase/netbase/fic-gta01/interfaces
index 090c18aa07..39f45af734 100644
--- a/packages/netbase/netbase/fic-gta01/interfaces
+++ b/packages/netbase/netbase/fic-gta01/interfaces
@@ -22,6 +22,7 @@ iface usb0 inet static
netmask 255.255.255.0
network 192.168.0.0
gateway 192.168.0.200
+ up echo nameserver 192.168.0.200 >/etc/resolv.conf
# Bluetooth networking
iface bnep0 inet dhcp
diff --git a/packages/netbase/netbase/fic-gta02/interfaces b/packages/netbase/netbase/fic-gta02/interfaces
index 090c18aa07..39f45af734 100644
--- a/packages/netbase/netbase/fic-gta02/interfaces
+++ b/packages/netbase/netbase/fic-gta02/interfaces
@@ -22,6 +22,7 @@ iface usb0 inet static
netmask 255.255.255.0
network 192.168.0.0
gateway 192.168.0.200
+ up echo nameserver 192.168.0.200 >/etc/resolv.conf
# Bluetooth networking
iface bnep0 inet dhcp
diff --git a/packages/netbase/netbase/interfaces b/packages/netbase/netbase/interfaces
index c9b2faf3f8..ca449168a9 100644
--- a/packages/netbase/netbase/interfaces
+++ b/packages/netbase/netbase/interfaces
@@ -41,6 +41,7 @@ iface wlan0 inet dhcp
iface atml0 inet dhcp
# Wired or wireless interfaces
+auto eth0
iface eth0 inet dhcp
iface eth1 inet dhcp
diff --git a/packages/netbase/netbase_4.21.bb b/packages/netbase/netbase_4.21.bb
index bfb178d0a0..82464d82c6 100644
--- a/packages/netbase/netbase_4.21.bb
+++ b/packages/netbase/netbase_4.21.bb
@@ -2,7 +2,7 @@ DESCRIPTION = "This package provides the necessary \
infrastructure for basic TCP/IP based networking."
SECTION = "base"
LICENSE = "GPL"
-PR = "r23"
+PR = "r25"
inherit update-rc.d
diff --git a/packages/notecase/notecase-1.6.9/.mtn2git_empty b/packages/notecase/notecase-1.6.9/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/notecase/notecase-1.6.9/.mtn2git_empty
diff --git a/packages/notecase/notecase-1.6.9/no-hardcoded-cxx.patch b/packages/notecase/notecase-1.6.9/no-hardcoded-cxx.patch
new file mode 100644
index 0000000000..7b54e6232d
--- /dev/null
+++ b/packages/notecase/notecase-1.6.9/no-hardcoded-cxx.patch
@@ -0,0 +1,38 @@
+--- tmp/Makefile 2007-05-08 12:25:10.000000000 +0200
++++ Makefile 2007-11-03 10:46:51.000000000 +0100
+@@ -131,7 +131,7 @@
+ ifdef WINDIR
+ LD=$(QL) $(CXX) $(DEBUG) $(PROFILE) $(LDFLAGS) -L$(OBJ) -lz
+ else
+- LD=$(QL) $(CXX) $(DEBUG) $(PROFILE) $(LDFLAGS) -ldl
++ NLD=$(QL) $(CXX) $(DEBUG) $(PROFILE) $(LOPTIMIZE) -ldl -export-dynamic $(LOPTIMIZE)
+ endif
+
+ #
+@@ -190,7 +190,7 @@
+ LIBS += hildon-libs hildon-fm libosso
+ endif
+
+-GTKCFLAGS=`pkg-config --cflags $(LIBS)` -I/target/include -I/sw/include
++GTKCFLAGS=`pkg-config --cflags $(LIBS)`
+ GTKLIBS=`pkg-config --libs $(LIBS)`
+
+ #
+@@ -201,7 +201,7 @@
+ $(LD) $(OBJS) -o $(BIN)/notecase$(EXE) $(FLAGS) $(LDFLAGS) $(GTKLIBS)
+ else
+ notecase$(EXE): updatesrc $(OBJS)
+- $(LD) $(OBJS) -o $(BIN)/notecase$(EXE) $(FLAGS) $(LDFLAGS) $(GTKLIBS) > /dev/null
++ $(NLD) $(OBJS) -o $(BIN)/notecase$(EXE) $(FLAGS) $(LDFLAGS) $(GTKLIBS)
+ endif
+
+ #
+@@ -421,7 +421,7 @@
+ $(CC) $(FLAGS) -c $(GUIPATH)/DocActionFinishDel.cpp -o $(OBJ)/DocActionFinishDel.o $(GTKCFLAGS)
+
+ $(OBJ)/libz.a:
+- @cd ./src/lib/zlib/; $(MAKE); cp ./libz.a ../../../$(OBJ)/
++ @cd ./src/lib/zlib/; cp ./libz.a ../../../$(OBJ)/
+
+ $(OBJ)/ShortcutsList.o: $(GUIPATH)/ShortcutsList.cpp $(GUIPATH)/ShortcutsList.h
+ $(CC) $(FLAGS) -c $(GUIPATH)/ShortcutsList.cpp -o $(OBJ)/ShortcutsList.o $(GTKCFLAGS)
diff --git a/packages/notecase/notecase-1.7.2/.mtn2git_empty b/packages/notecase/notecase-1.7.2/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/notecase/notecase-1.7.2/.mtn2git_empty
diff --git a/packages/notecase/notecase-1.7.2/no-hardcoded-cxx.patch b/packages/notecase/notecase-1.7.2/no-hardcoded-cxx.patch
new file mode 100644
index 0000000000..7b54e6232d
--- /dev/null
+++ b/packages/notecase/notecase-1.7.2/no-hardcoded-cxx.patch
@@ -0,0 +1,38 @@
+--- tmp/Makefile 2007-05-08 12:25:10.000000000 +0200
++++ Makefile 2007-11-03 10:46:51.000000000 +0100
+@@ -131,7 +131,7 @@
+ ifdef WINDIR
+ LD=$(QL) $(CXX) $(DEBUG) $(PROFILE) $(LDFLAGS) -L$(OBJ) -lz
+ else
+- LD=$(QL) $(CXX) $(DEBUG) $(PROFILE) $(LDFLAGS) -ldl
++ NLD=$(QL) $(CXX) $(DEBUG) $(PROFILE) $(LOPTIMIZE) -ldl -export-dynamic $(LOPTIMIZE)
+ endif
+
+ #
+@@ -190,7 +190,7 @@
+ LIBS += hildon-libs hildon-fm libosso
+ endif
+
+-GTKCFLAGS=`pkg-config --cflags $(LIBS)` -I/target/include -I/sw/include
++GTKCFLAGS=`pkg-config --cflags $(LIBS)`
+ GTKLIBS=`pkg-config --libs $(LIBS)`
+
+ #
+@@ -201,7 +201,7 @@
+ $(LD) $(OBJS) -o $(BIN)/notecase$(EXE) $(FLAGS) $(LDFLAGS) $(GTKLIBS)
+ else
+ notecase$(EXE): updatesrc $(OBJS)
+- $(LD) $(OBJS) -o $(BIN)/notecase$(EXE) $(FLAGS) $(LDFLAGS) $(GTKLIBS) > /dev/null
++ $(NLD) $(OBJS) -o $(BIN)/notecase$(EXE) $(FLAGS) $(LDFLAGS) $(GTKLIBS)
+ endif
+
+ #
+@@ -421,7 +421,7 @@
+ $(CC) $(FLAGS) -c $(GUIPATH)/DocActionFinishDel.cpp -o $(OBJ)/DocActionFinishDel.o $(GTKCFLAGS)
+
+ $(OBJ)/libz.a:
+- @cd ./src/lib/zlib/; $(MAKE); cp ./libz.a ../../../$(OBJ)/
++ @cd ./src/lib/zlib/; cp ./libz.a ../../../$(OBJ)/
+
+ $(OBJ)/ShortcutsList.o: $(GUIPATH)/ShortcutsList.cpp $(GUIPATH)/ShortcutsList.h
+ $(CC) $(FLAGS) -c $(GUIPATH)/ShortcutsList.cpp -o $(OBJ)/ShortcutsList.o $(GTKCFLAGS)
diff --git a/packages/notecase/notecase.inc b/packages/notecase/notecase.inc
new file mode 100644
index 0000000000..951930d27b
--- /dev/null
+++ b/packages/notecase/notecase.inc
@@ -0,0 +1,13 @@
+DESCRIPTION = "Hierarchical note manager (aka. outliner)"
+AUTHOR = "Miroslav Rajcic <miroslav.rajcic@inet.hr>"
+HOMEPAGE = "http://notecase.sourceforge.net/"
+SECTION = "x11/utils"
+LICENSE = "BSD"
+DEPENDS = "zlib gtk+ gnome-vfs"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/${PN}/${P}_src.tar.gz \
+ file://no-hardcoded-cxx.patch;patch=1"
+
+do_compile_prepend() {
+ cp ${STAGING_LIBDIR}/libz.a ${S}/src/lib/zlib/
+}
diff --git a/packages/notecase/notecase_1.2.6.bb b/packages/notecase/notecase_1.2.6.bb
index 7a38480f22..7cd2cd7987 100644
--- a/packages/notecase/notecase_1.2.6.bb
+++ b/packages/notecase/notecase_1.2.6.bb
@@ -1,17 +1,4 @@
-DESCRIPTION = "NoteCase is a hierarchical note manager (aka. outliner)." "
-LICENSE = "BSD"
-
-DEPENDS = "zlib gtk+ gnome-vfs"
-
-SRC_URI = "${SOURCEFORGE_MIRROR}/${PN}/${P}_src.tar.gz \
- file://no-hardcoded-cxx.patch;patch=1"
-
-inherit pkgconfig
-
-do_compile_prepend() {
- cp ${STAGING_LIBDIR}/libz.a ${S}/src/lib/zlib/
-}
-
+require notecase.inc
do_install() {
install -d ${D}${bindir}
diff --git a/packages/notecase/notecase_1.6.9.bb b/packages/notecase/notecase_1.6.9.bb
new file mode 100644
index 0000000000..73ea27b7db
--- /dev/null
+++ b/packages/notecase/notecase_1.6.9.bb
@@ -0,0 +1,17 @@
+require notecase.inc
+
+PR = "r1"
+
+do_install() {
+ install -d ${D}${bindir}
+ install -d ${D}${datadir}/applications
+ install -d ${D}${datadir}/doc
+ install -d ${D}${datadir}/doc/notecase
+ install -d ${D}${datadir}/icons
+ install -m 644 ${S}/docs/notecase.desktop ${D}${datadir}/applications
+ install -m 644 ${S}/docs/help.ncd ${D}${datadir}/doc/notecase/help.ncd
+ install -m 644 ${S}/res/notecase.xpm ${D}${datadir}/icons/notecase.xpm
+ install -m 755 ${S}/bin/notecase ${D}${bindir}/
+}
+
+FILES_${PN} += "${datadir}"
diff --git a/packages/notecase/notecase_1.7.2.bb b/packages/notecase/notecase_1.7.2.bb
new file mode 100644
index 0000000000..73ea27b7db
--- /dev/null
+++ b/packages/notecase/notecase_1.7.2.bb
@@ -0,0 +1,17 @@
+require notecase.inc
+
+PR = "r1"
+
+do_install() {
+ install -d ${D}${bindir}
+ install -d ${D}${datadir}/applications
+ install -d ${D}${datadir}/doc
+ install -d ${D}${datadir}/doc/notecase
+ install -d ${D}${datadir}/icons
+ install -m 644 ${S}/docs/notecase.desktop ${D}${datadir}/applications
+ install -m 644 ${S}/docs/help.ncd ${D}${datadir}/doc/notecase/help.ncd
+ install -m 644 ${S}/res/notecase.xpm ${D}${datadir}/icons/notecase.xpm
+ install -m 755 ${S}/bin/notecase ${D}${bindir}/
+}
+
+FILES_${PN} += "${datadir}"
diff --git a/packages/nslu2-binary-only/nslu2-linksys-firmware_2.3r63.bb b/packages/nslu2-binary-only/nslu2-linksys-firmware_2.3r63.bb
index 6d13d092c1..52af4ad273 100644
--- a/packages/nslu2-binary-only/nslu2-linksys-firmware_2.3r63.bb
+++ b/packages/nslu2-binary-only/nslu2-linksys-firmware_2.3r63.bb
@@ -2,12 +2,12 @@ SECTION = "base"
PACKAGES = ""
LICENSE = "GPL"
INHIBIT_DEFAULT_DEPS = "1"
-PR = "r2"
+PR = "r3"
SRC_URI = "http://nslu.sf.net/downloads/${PN}-${PV}.tar.bz2"
S = "${WORKDIR}/${PN}-${PV}"
-COMPATIBLE_MACHINE = "nslu2"
+COMPATIBLE_MACHINE = "(nslu2|ixp4xx)"
do_compile () {
install -d ${STAGING_LIBDIR}/nslu2-binaries
diff --git a/packages/ntp/ntp.inc b/packages/ntp/ntp.inc
index 6a14521d36..7ef6d672d1 100644
--- a/packages/ntp/ntp.inc
+++ b/packages/ntp/ntp.inc
@@ -6,7 +6,7 @@ HOMEPAGE = "http://ntp.isc.org/bin/view/Main/WebHome"
SECTION = "console/network"
PRIORITY = "optional"
LICENSE = "ntp"
-RRECOMMENDS = "iana-etc"
+RSUGGESTS = "iana-etc"
SRC_URI = "http://www.eecis.udel.edu/~ntp/ntp_spool/ntp4/ntp-4.2/${P}.tar.gz \
file://ipv6only-workaround.patch;patch=1 \
diff --git a/packages/ntp/ntp_4.1.2.bb b/packages/ntp/ntp_4.1.2.bb
index 4300b5bbe6..7091f05394 100644
--- a/packages/ntp/ntp_4.1.2.bb
+++ b/packages/ntp/ntp_4.1.2.bb
@@ -1,6 +1,6 @@
require ntp.inc
-PR = "r4"
+PR = "r5"
SRC_URI = "http://www.eecis.udel.edu/~ntp/ntp_spool/ntp4/ntp-4.1/ntp-${PV}.tar.gz \
file://configure.patch;patch=1 \
diff --git a/packages/ntp/ntp_4.2.0.bb b/packages/ntp/ntp_4.2.0.bb
index 63e7d552a8..f2825a03c9 100644
--- a/packages/ntp/ntp_4.2.0.bb
+++ b/packages/ntp/ntp_4.2.0.bb
@@ -1,6 +1,6 @@
require ntp.inc
-PR = "r8"
+PR = "r9"
SRC_URI = "http://www.eecis.udel.edu/~ntp/ntp_spool/ntp4/ntp-4.2/${P}.tar.gz \
file://ntpdc.Makefile.am.maybe-layout.patch;patch=1 \
diff --git a/packages/ntp/ntp_4.2.2p3.bb b/packages/ntp/ntp_4.2.2p3.bb
index ad861cf8f5..22d2e1bff6 100644
--- a/packages/ntp/ntp_4.2.2p3.bb
+++ b/packages/ntp/ntp_4.2.2p3.bb
@@ -1,5 +1,7 @@
require ntp.inc
+PR = "r1"
+
SRC_URI = "http://www.eecis.udel.edu/~ntp/ntp_spool/ntp4/ntp-4.2/${P}.tar.gz \
file://ipv6only-workaround.patch;patch=1 \
file://tickadj.c.patch;patch=1 \
diff --git a/packages/octave/files/.mtn2git_empty b/packages/octave/files/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/octave/files/.mtn2git_empty
diff --git a/packages/octave/files/configure.patch b/packages/octave/files/configure.patch
new file mode 100644
index 0000000000..f94e5ae8c0
--- /dev/null
+++ b/packages/octave/files/configure.patch
@@ -0,0 +1,15 @@
+--- octave-2.9.17/configure.old 2007-11-17 18:57:35.000000000 -0600
++++ octave-2.9.17/configure 2007-11-17 19:08:33.000000000 -0600
+@@ -22598,11 +22598,10 @@ ac_link='$CC -o conftest$ac_exeext $CFLA
+ ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ if test "$cross_compiling" = yes; then
+- { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
++ { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
+ See \`config.log' for more details." >&5
+ echo "$as_me: error: cannot run test program while cross compiling
+ See \`config.log' for more details." >&2;}
+- { (exit 1); exit 1; }; }
+ else
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
diff --git a/packages/octave/octave_2.1.71.bb b/packages/octave/octave.inc
index 22c4d69393..414f95bf83 100644
--- a/packages/octave/octave_2.1.71.bb
+++ b/packages/octave/octave.inc
@@ -2,16 +2,28 @@ DESCRIPTION = "GNU Octave is a high-level language, primarily intended for numer
It provides a convenient command line interface for solving linear and nonlinear problems numerically, \
and for performing other numerical experiments using a language that is mostly compatible with Matlab. \
It may also be used as a batch-oriented language."
-SECTION = "console/utils"
+HOMEPAGE = "http://www.gnu.org/software/octave/"
+SECTION = "console/scientific"
LICENSE = "GPL"
-DEPENDS = "readline ncurses"
-SRC_URI = "ftp://ftp.octave.org/pub/octave/bleeding-edge/octave-${PV}.tar.gz"
+DEPENDS = "readline ncurses fftw"
+RDEPENDS = "libfftw3"
+# fftw compiled with --disable-fortran
inherit autotools
-FILES_${PN}-dev += "${libdir}/octave-${PV}/*.la ${libdir}/octave-${PV}/*.a"
+EXTRA_OECONF = "--without-hdf5"
do_configure() {
gnu-configize
oe_runconf
}
+
+PACKAGES =+ "octave-m"
+
+# octave-m provides matlab routines in .m file format
+FILES_${PN}-m = "${datadir}/${PN}/*"
+
+do_stage() {
+ autotools_stage_all
+}
+
diff --git a/packages/octave/octave_2.1.73.bb b/packages/octave/octave_2.1.73.bb
new file mode 100644
index 0000000000..a6bf240732
--- /dev/null
+++ b/packages/octave/octave_2.1.73.bb
@@ -0,0 +1,11 @@
+require octave.inc
+
+SRC_URI = "ftp://ftp.octave.org/pub/octave/obsolete/${PN}-${PV}.tar.gz"
+
+PR = "r0"
+
+PACKAGES =+ "libcruft-dev liboctave-dev liboctinterp-dev"
+
+FILES_libcruft-dev = "${libdir}/${PN}-${PV}/libcruft*"
+FILES_liboctave-dev = "${libdir}/${PN}-${PV}/liboctave*"
+FILES_liboctinterp-dev = "${libdir}/${PN}-${PV}/liboctinterp*"
diff --git a/packages/octave/octave_2.9.17.bb b/packages/octave/octave_2.9.17.bb
new file mode 100644
index 0000000000..5473e0d99e
--- /dev/null
+++ b/packages/octave/octave_2.9.17.bb
@@ -0,0 +1,27 @@
+require octave.inc
+
+SRC_URI = "ftp://ftp.octave.org/pub/octave/${PN}-${PV}.tar.gz \
+ file://configure.patch;patch=1"
+
+PR = "r0"
+
+PACKAGES =+ "libcruft liboctave liboctinterp octave-oct \
+ libcruft-dev liboctave-dev liboctinterp-dev \
+ libcruft-dbg liboctave-dbg liboctinterp-dbg"
+
+FILES_libcruft = "${libdir}/${PN}-${PV}/libcruft*"
+FILES_libcruft-dev = "${libdir}/${PN}-${PV}/libcruft.so"
+FILES_libcruft-dbg = "${libdir}/${PN}-${PV}/.debug/libcruft*"
+
+FILES_liboctave = "${libdir}/${PN}-${PV}/liboctave*"
+FILES_liboctave-dev = "${libdir}/${PN}-${PV}/liboctave.so"
+FILES_liboctave-dbg = "${libdir}/${PN}-${PV}/.debug/liboctave*"
+
+FILES_liboctinterp = "${libdir}/${PN}-${PV}/liboctinterp*"
+FILES_liboctinterp-dev = "${libdir}/${PN}-${PV}/liboctinterp.so"
+FILES_liboctinterp-dbg = "${libdir}/${PN}-${PV}/.debug/liboctinterp*"
+
+# octave-oct provides subroutines in .oct file format
+FILES_${PN}-oct = "${libexecdir}/${PN}/${PV}/oct/${TARGET_SYS}/*.oct"
+
+FILES_${PN}-dbg += "${libexecdir}/${PN}/${PV}/oct/${TARGET_SYS}/.debug"
diff --git a/packages/openmoko-panel-plugins/openmoko-panel-gsm_svn.bb b/packages/openmoko-panel-plugins/openmoko-panel-gsm_svn.bb
index 079d6ffeea..a932473ed3 100644
--- a/packages/openmoko-panel-plugins/openmoko-panel-gsm_svn.bb
+++ b/packages/openmoko-panel-plugins/openmoko-panel-gsm_svn.bb
@@ -1,6 +1,6 @@
DESCRIPTION = "Shows the GSM / GPRS status in the OpenMoko panel"
DEPENDS = "libgsmd libnotify"
PV = "0.1.0+svn${SVNREV}"
-PR = "r0"
+PR = "r1"
inherit openmoko-panel-plugin
diff --git a/packages/openmoko-spaces/.mtn2git_empty b/packages/openmoko-spaces/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/openmoko-spaces/.mtn2git_empty
diff --git a/packages/openmoko-spaces/openmoko-toolchain-scripts_svn.bb b/packages/openmoko-spaces/openmoko-toolchain-scripts_svn.bb
new file mode 100644
index 0000000000..b96cf8fa74
--- /dev/null
+++ b/packages/openmoko-spaces/openmoko-toolchain-scripts_svn.bb
@@ -0,0 +1,15 @@
+DESCRIPTION = "Convenient scripts to be used with openmoko toolchain."
+PACKAGE_ARCH = "all"
+
+SRC_URI = "svn://svn.openmoko.org/developers/john_lee;module=toolkit;proto=http"
+SRC_URI += "svn://svn.openmoko.org/trunk/src/target/OM-2007.2/applications;module=openmoko-sample2;proto=http"
+
+SRCREV="3563"
+FILES_${PN} = "/"
+
+do_install () {
+ (find ${WORKDIR} -type d -name ".svn" | xargs rm -rf) || true
+ install -m 755 -d ${D}/share
+ cp -dr ${WORKDIR}/toolkit/* ${D}
+ cp -dr ${WORKDIR}/openmoko-sample2 ${D}/share
+}
diff --git a/packages/openmoko2/libjana_svn.bb b/packages/openmoko2/libjana_svn.bb
index 065f380969..5b40bd4846 100644
--- a/packages/openmoko2/libjana_svn.bb
+++ b/packages/openmoko2/libjana_svn.bb
@@ -1,13 +1,15 @@
DESCRIPTION = "O-Hand Jana Library"
DEPENDS = "libmokojournal2 gtk+ eds-dbus gconf"
PV = "0.1.0+svnr${SRCREV}"
-PR = "r4"
+PR = "r5"
inherit autotools pkgconfig lib_package
SRC_URI = "svn://svn.o-hand.com/repos/jana/;module=trunk;proto=http"
S = "${WORKDIR}/trunk/"
+EXTRA_OECONF = "--enable-examples "
+
do_configure_prepend() {
touch gtk-doc.make
}
@@ -26,3 +28,4 @@ FILES_libjana-ecal = "${libdir}/libjana-ecal.so.*"
FILES_libjana-ecal-dbg = "${libdir}/.debug/libjana-ecal*"
FILES_libjana-gtk = "${libdir}/libjana-gtk.so.* ${datadir}/jana/landwater.vmf"
FILES_libjana-gtk-dbg = "${libdir}/.debug/libjana-gtk.so.*"
+FILES_libjana-bin_append = " ${datadir}/jana/flag-uk.png "
diff --git a/packages/openmoko2/libmokogsmd2_svn.bb b/packages/openmoko2/libmokogsmd2_svn.bb
index 8e547b3663..5625bf809d 100644
--- a/packages/openmoko2/libmokogsmd2_svn.bb
+++ b/packages/openmoko2/libmokogsmd2_svn.bb
@@ -1,7 +1,7 @@
SECTION = "openmoko/libs"
DEPENDS = "libgsmd glib-2.0"
PV = "0.1.0+svnr${SRCREV}"
-PR = "r1"
+PR = "r2"
inherit openmoko2
diff --git a/packages/openmoko2/neod_svn.bb b/packages/openmoko2/neod_svn.bb
index 7e662de73a..e627e60bd2 100644
--- a/packages/openmoko2/neod_svn.bb
+++ b/packages/openmoko2/neod_svn.bb
@@ -1,14 +1,14 @@
DESCRIPTION = "Simple Neo1973 Daemon for Button Handling and Power Management"
SECTION = "openmoko/daemons"
DEPENDS = "gtk+ pulseaudio"
-RDEPENDS = "gpe-scap xrandr alsa-utils-amixer apm"
+RDEPENDS = "gpe-scap xrandr alsa-utils-amixer apm dbus"
PV = "0.1.0+svnr${SRCREV}"
-PR = "r4"
+PR = "r5"
inherit openmoko2 gconf
-SRC_URI += "file://htc.patch;patch=1 \
- file://ipaq.patch;patch=1"
+SRC_URI += "file://htc.patch;patch=1;maxrev=3348 \
+ file://ipaq.patch;patch=1;maxrev=3348"
EXTRA_OECONF_fic-gta01 = "--with-platform=neo1973"
EXTRA_OECONF_fic-gta02 = "--with-platform=neo1973"
@@ -19,6 +19,7 @@ EXTRA_OECONF_rokre2 = "--with-platform=ezx"
EXTRA_OECONF_rokre6 = "--with-platform=ezx"
EXTRA_OECONF_magician = "--with-platform=htc"
EXTRA_OECONF_hx4700 = "--with-platform=ipaq"
+EXTRA_OECONF_htcuniversal = "--with-platform=htc"
PACKAGE_ARCH = "${MACHINE_ARCH}"
diff --git a/packages/openmoko2/openmoko-browser2/.mtn2git_empty b/packages/openmoko2/openmoko-browser2/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/openmoko2/openmoko-browser2/.mtn2git_empty
diff --git a/packages/openmoko2/openmoko-browser2/fingerscroll.diff b/packages/openmoko2/openmoko-browser2/fingerscroll.diff
new file mode 100644
index 0000000000..89f79496a0
--- /dev/null
+++ b/packages/openmoko2/openmoko-browser2/fingerscroll.diff
@@ -0,0 +1,13 @@
+Index: src/current-page.c
+===================================================================
+--- openmoko-browser2/src/current-page.c (revision 3249)
++++ openmoko-browser2/src/current-page.c (working copy)
+@@ -129,7 +129,7 @@
+ gtk_toolbar_insert (GTK_TOOLBAR (toolbar), data->currentClose, 8);
+
+
+- data->currentFingerScroll = gtk_scrolled_window_new (NULL, NULL); //moko_finger_scroll_new ();
++ data->currentFingerScroll = moko_finger_scroll_new ();
+ gtk_box_pack_start (box, data->currentFingerScroll, TRUE, TRUE, 0);
+ }
+
diff --git a/packages/openmoko2/openmoko-browser2_svn.bb b/packages/openmoko2/openmoko-browser2_svn.bb
index 431e40769c..b9c7efed02 100644
--- a/packages/openmoko2/openmoko-browser2_svn.bb
+++ b/packages/openmoko2/openmoko-browser2_svn.bb
@@ -5,3 +5,7 @@ PV = "0.0.1+svnr${SRCREV}"
PR = "r1"
inherit openmoko2
+
+#SRC_URI += "file://fingerscroll.diff;patch=1"
+
+
diff --git a/packages/openmoko2/openmoko-dialer2_svn.bb b/packages/openmoko2/openmoko-dialer2_svn.bb
index b01d9d3c05..5d2683e0fd 100644
--- a/packages/openmoko2/openmoko-dialer2_svn.bb
+++ b/packages/openmoko2/openmoko-dialer2_svn.bb
@@ -1,8 +1,9 @@
DESCRIPTION = "The OpenMoko Dialer"
SECTION = "openmoko/pim"
-DEPENDS = "libmokogsmd2 libmokoui2 libmokojournal2 pulseaudio"
+DEPENDS = "libjana libmokogsmd2 libmokoui2 libmokojournal2 pulseaudio"
PV = "0.1.0+svnr${SRCREV}"
PR = "r5"
+PE = "1"
inherit openmoko2
diff --git a/packages/openmoko2/openmoko-messages2_svn.bb b/packages/openmoko2/openmoko-messages2_svn.bb
new file mode 100644
index 0000000000..bc1bcaff5e
--- /dev/null
+++ b/packages/openmoko2/openmoko-messages2_svn.bb
@@ -0,0 +1,11 @@
+DESCRIPTION = "The OpenMoko Message application"
+SECTION = "openmoko/pim"
+DEPENDS = "libmokogsmd2 libmokoui2 libmokojournal2"
+PV = "0.1.0+svnr${SRCREV}"
+PR = "r0"
+
+inherit openmoko2
+
+EXTRA_OECONF = "--with-dbusbindir=${STAGING_BINDIR_NATIVE}"
+
+FILES_${PN} += "${datadir}/openmoko-messages/ ${datadir}/dbus-1/services/"
diff --git a/packages/openmoko2/openmoko-sample2_svn.bb b/packages/openmoko2/openmoko-sample2_svn.bb
new file mode 100644
index 0000000000..c05b6d3618
--- /dev/null
+++ b/packages/openmoko2/openmoko-sample2_svn.bb
@@ -0,0 +1,24 @@
+DESCRIPTION = "The OpenMoko Sample Project"
+SECTION = "openmoko/applications"
+DEPENDS = "libmokoui2 intltool gconf"
+PV = "0.0.1+svnr${SRCREV}"
+PR = "r0"
+
+inherit openmoko2
+
+PACKAGES += "${PN}-src"
+# path should match the toolchain path
+FILES_${PN}-src = "/usr/local/openmoko"
+PACKAGE_ARCH_${PN}-src = "all"
+
+do_configure_prepend() {
+ install -d ${WORKDIR}/source
+ cp -a ${S} ${WORKDIR}/source/
+ find ${WORKDIR}/source -name ".svn"|xargs rm -rf
+}
+
+do_install_append() {
+ install -d ${D}/usr/local/openmoko/source/
+ cp -a ${WORKDIR}/source/* ${D}/usr/local/openmoko/source/
+}
+
diff --git a/packages/openmoko2/openmoko-session2.bb b/packages/openmoko2/openmoko-session2.bb
index b71d35528d..3d8c9109e1 100644
--- a/packages/openmoko2/openmoko-session2.bb
+++ b/packages/openmoko2/openmoko-session2.bb
@@ -1,15 +1,27 @@
DESCRIPTION = "Custom Matchbox session files for OpenMoko"
LICENSE = "GPL"
SECTION = "x11"
-RDEPENDS = "matchbox-common matchbox-applet-startup-monitor matchbox-panel-2"
+RDEPENDS = "matchbox-applet-startup-monitor matchbox-panel-2"
RDEPENDS += "openmoko-common2 openmoko-today2 openmoko-dialer2"
-RCONFLICTS = "openmoko-session"
-PR = "r37"
+RCONFLICTS_${PN} = "openmoko-session matchbox-common"
+PR = "r63"
-SRC_URI = "file://etc"
+SRC_URI = "\
+ file://etc \
+ file://matchbox-session \
+"
S = ${WORKDIR}
+inherit update-alternatives
+
+ALTERNATIVE_NAME = "x-window-manager"
+ALTERNATIVE_LINK = "${bindir}/x-window-manager"
+ALTERNATIVE_PATH = "${bindir}/matchbox-session"
+ALTERNATIVE_PRIORITY = "11"
+
do_install() {
+ install -d ${D}${bindir}
+ install -m 0655 ${WORKDIR}/matchbox-session ${D}${bindir}
install -d ${D}${sysconfdir}
cp -R ${S}/etc/* ${D}${sysconfdir}
rm -fR ${D}${sysconfdir}/.svn
diff --git a/packages/openmoko2/openmoko-session2/etc/matchbox/session b/packages/openmoko2/openmoko-session2/etc/matchbox/session
index 2f27a4cc6a..9eea32a45d 100755
--- a/packages/openmoko2/openmoko-session2/etc/matchbox/session
+++ b/packages/openmoko2/openmoko-session2/etc/matchbox/session
@@ -2,7 +2,7 @@
SHOWCURSOR="no"
openmoko-today &
-openmoko-dialer &
+phone-kit &
matchbox-window-manager -use_titlebar yes -use_desktop_mode decorated -theme openmoko-standard-2 -use_cursor $SHOWCURSOR $@ &
diff --git a/packages/openmoko2/openmoko-session2/matchbox-session b/packages/openmoko2/openmoko-session2/matchbox-session
new file mode 100755
index 0000000000..65f1ce72ca
--- /dev/null
+++ b/packages/openmoko2/openmoko-session2/matchbox-session
@@ -0,0 +1,24 @@
+#!/bin/sh
+#
+# Very simple session manager for matchbox tools
+#
+
+# Uncomment below to enable parsing of debian menu entrys
+# export MB_USE_DEB_MENUS=1
+
+if [ -e $HOME/.matchbox/session ]
+then
+exec $HOME/.matchbox/session
+fi
+
+if [ -e /etc/matchbox/session ]
+then
+exec /etc/matchbox/session
+fi
+
+# Default files to run if $HOME/.matchbox/session or /etc/matchbox/session
+# dont exist.
+
+matchbox-desktop &
+matchbox-panel --orientation south &
+exec matchbox-window-manager $@
diff --git a/packages/openmoko2/openmoko-sound-system2/pulseaudio b/packages/openmoko2/openmoko-sound-system2/pulseaudio
index 76daacd3ae..964947376e 100755
--- a/packages/openmoko2/openmoko-sound-system2/pulseaudio
+++ b/packages/openmoko2/openmoko-sound-system2/pulseaudio
@@ -13,17 +13,21 @@ RETVAL=0
prog="pulseaudio"
start() {
- echo -n "Starting the audio server..."
+ echo -n "Starting audio server: "
# FIXME once alsa/shm permissions have been fixed, supply --system
- pulseaudio --resample-method=trivial -D -nF /etc/pulse/session
- echo $prog
+ start-stop-daemon -S -x /usr/bin/pulseaudio -- --no-cpu-limit --resample-method=trivial -D -nF /etc/pulse/session
+
+ if [ $? = 0 ]; then
+ echo "$prog (warning ignores)." # FIXME remove comment on warning
+ else
+ echo "(failed.)"
+ fi
}
stop() {
- # Stop daemons.
- echo -n "Shutting down $prog: "
- killall pulseaudio
- echo "done"
+ echo -n "Stopping audio server: "
+ start-stop-daemon -K -x /usr/bin/pulseaudio
+ echo "pulseaudio."
}
# See how we were called.
diff --git a/packages/openmoko2/openmoko-sound-system2_0.1.0.bb b/packages/openmoko2/openmoko-sound-system2_0.1.0.bb
index e77561c3a1..29d0cba1fe 100644
--- a/packages/openmoko2/openmoko-sound-system2_0.1.0.bb
+++ b/packages/openmoko2/openmoko-sound-system2_0.1.0.bb
@@ -13,7 +13,7 @@ RDEPENDS = "\
"
RREPLACES = "openmoko-sound-system"
RPROVIDES = "openmoko-sound-system"
-PR = "r3"
+PR = "r4"
inherit openmoko-base update-rc.d
diff --git a/packages/openmoko2/openmoko-today2-folders_svn.bb b/packages/openmoko2/openmoko-today2-folders_svn.bb
index ecd28d1b68..baf60d877b 100644
--- a/packages/openmoko2/openmoko-today2-folders_svn.bb
+++ b/packages/openmoko2/openmoko-today2-folders_svn.bb
@@ -1,7 +1,8 @@
DESCRIPTION = "The OpenMoko Today2 vfolder files"
SECTION = "openmoko/misc"
PV = "0.1.0+svnr${SRCREV}"
-PR = "r1"
+PR = "r3"
+RCONFLICTS_${PN} = "matchbox-common"
inherit openmoko2
diff --git a/packages/openmoko2/openmoko-worldclock2_svn.bb b/packages/openmoko2/openmoko-worldclock2_svn.bb
index bb849accfb..5857dde982 100644
--- a/packages/openmoko2/openmoko-worldclock2_svn.bb
+++ b/packages/openmoko2/openmoko-worldclock2_svn.bb
@@ -1,6 +1,6 @@
DESCRIPTION = "A World-Clock for OpenMoko"
SECTION = "openmoko/tools"
-DEPENDS = "libmokoui2 openmoko-dates2 libnotify"
+DEPENDS = "libmokoui2 libjana"
PV = "0.1.0+svnr${SRCREV}"
inherit openmoko2
diff --git a/packages/openrdate/.mtn2git_empty b/packages/openrdate/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/openrdate/.mtn2git_empty
diff --git a/packages/openrdate/openrdate_1.1.3.bb b/packages/openrdate/openrdate_1.1.3.bb
new file mode 100644
index 0000000000..265f4191f2
--- /dev/null
+++ b/packages/openrdate/openrdate_1.1.3.bb
@@ -0,0 +1,12 @@
+DESCRIPTION = "Date and time setting software implementing RFC 868 and RFC 2030 protocols"
+HOMEPAGE = "http://sourceforge.net/projects/openrdate/"
+SECTION = "admin"
+LICENSE = "BSD"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/openrdate/openrdate-${PV}.tar.gz"
+
+inherit autotools
+
+do_stage() {
+ autotools_stage_all
+}
diff --git a/packages/openssl/openssl.inc b/packages/openssl/openssl.inc
index 25388b5fbb..8e3f33a96e 100644
--- a/packages/openssl/openssl.inc
+++ b/packages/openssl/openssl.inc
@@ -60,6 +60,12 @@ do_compile () {
linux-powerpc)
target=linux-ppc
;;
+ linux-supersparc)
+ target=linux-sparcv8
+ ;;
+ linux-sparc)
+ target=linux-sparcv8
+ ;;
esac
perl ./Configure shared --prefix=${prefix} --openssldir=${libdir}/ssl $target
oe_runmake
diff --git a/packages/pango/pango-1.18.3/.mtn2git_empty b/packages/pango/pango-1.18.3/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/pango/pango-1.18.3/.mtn2git_empty
diff --git a/packages/pango/pango-1.18.3/no-tests.patch b/packages/pango/pango-1.18.3/no-tests.patch
new file mode 100644
index 0000000000..dafcb20c3b
--- /dev/null
+++ b/packages/pango/pango-1.18.3/no-tests.patch
@@ -0,0 +1,10 @@
+--- /tmp/Makefile.am 2007-03-01 13:29:37.000000000 +0100
++++ pango-1.16.0/Makefile.am 2007-03-01 13:29:52.545251000 +0100
+@@ -1,6 +1,6 @@
+ ## Process this file with automake to create Makefile.in.
+
+-SUBDIRS= pango modules pango-view examples docs tools tests
++SUBDIRS= pango modules pango-view examples docs tools
+
+ EXTRA_DIST = \
+ autogen.sh \
diff --git a/packages/pango/pango_1.18.3.bb b/packages/pango/pango_1.18.3.bb
new file mode 100644
index 0000000000..9656f30376
--- /dev/null
+++ b/packages/pango/pango_1.18.3.bb
@@ -0,0 +1,4 @@
+require pango.inc
+
+DEFAULT_PREFERENCE = "-1"
+
diff --git a/packages/perl/libxml-parser-perl_2.34.bb b/packages/perl/libxml-parser-perl_2.34.bb
index 46ce6512ca..dd502a8f63 100644
--- a/packages/perl/libxml-parser-perl_2.34.bb
+++ b/packages/perl/libxml-parser-perl_2.34.bb
@@ -1,7 +1,7 @@
SECTION = "libs"
LICENSE = "Artistic"
-DEPENDS += "expat-native"
-PR = "r10"
+DEPENDS += "expat expat-native"
+PR = "r11"
SRC_URI = "http://www.cpan.org/modules/by-module/XML/XML-Parser-${PV}.tar.gz"
diff --git a/packages/pimlico/contacts.inc b/packages/pimlico/contacts.inc
index 5fa493fab3..6baab5e306 100644
--- a/packages/pimlico/contacts.inc
+++ b/packages/pimlico/contacts.inc
@@ -1,7 +1,7 @@
DESCRIPTION = "Address-book application."
LICENSE = "LGPL"
SECTION = "x11"
-DEPENDS = "glib-2.0 gtk+ eds-dbus"
+DEPENDS = "glib-2.0 gtk+ eds-dbus libowl"
RDEPENDS = "libedata-book"
inherit autotools pkgconfig
diff --git a/packages/pimlico/dates.inc b/packages/pimlico/dates.inc
index 4c1e771ba8..40a88ea5c0 100644
--- a/packages/pimlico/dates.inc
+++ b/packages/pimlico/dates.inc
@@ -1,7 +1,7 @@
DESCRIPTION = "Dates is a calendar application."
LICENSE = "LGPL"
SECTION = "x11"
-DEPENDS = "glib-2.0 gtk+ libglade eds-dbus"
+DEPENDS = "glib-2.0 gtk+ libglade eds-dbus libowl"
RDEPENDS = "libedata-cal"
inherit autotools pkgconfig gtk-icon-cache
diff --git a/packages/poppler/poppler_0.6.2.bb b/packages/poppler/poppler_0.6.2.bb
new file mode 100644
index 0000000000..3c1ec00183
--- /dev/null
+++ b/packages/poppler/poppler_0.6.2.bb
@@ -0,0 +1,6 @@
+require poppler.inc
+
+PR = "r0"
+
+EXTRA_OECONF_append = " --disable-abiword-output "
+
diff --git a/packages/portmap/portmap-6.0/no-pie.patch b/packages/portmap/portmap-6.0/no-pie.patch
new file mode 100644
index 0000000000..4d7e2daae4
--- /dev/null
+++ b/packages/portmap/portmap-6.0/no-pie.patch
@@ -0,0 +1,14 @@
+--- portmap_6.0/Makefile.orig 2007-11-21 00:35:52.000000000 -0600
++++ portmap_6.0/Makefile 2007-11-21 00:37:23.000000000 -0600
+@@ -125,9 +125,9 @@
+ all: portmap pmap_dump pmap_set portmap.man
+
+ CPPFLAGS += $(HOSTS_ACCESS)
+-portmap: CFLAGS += -fpie
++#portmap: CFLAGS += -fpie
+ portmap: LDLIBS += $(WRAP_LIB)
+-portmap: LDFLAGS += -pie
++#portmap: LDFLAGS += -pie
+ portmap: portmap.o pmap_check.o from_local.o
+
+ from_local: CPPFLAGS += -DTEST
diff --git a/packages/portmap/portmap_6.0.bb b/packages/portmap/portmap_6.0.bb
index 315cb4a473..335b5c6d09 100644
--- a/packages/portmap/portmap_6.0.bb
+++ b/packages/portmap/portmap_6.0.bb
@@ -1,11 +1,16 @@
require portmap.inc
+PR = "r1"
+
SRC_URI = "http://neil.brown.name/portmap/portmap-6.0.tgz \
file://destdir-no-strip.patch;patch=1 \
file://no-tcpd-support.patch;patch=1 \
file://no-libwrap.patch;patch=1;pnum=0 \
file://portmap.init "
+# Remove this patch when SlugOS upgrades to binutils 1.18
+SRC_URI_append_slugos = " file://no-pie.patch;patch=1 "
+
S = "${WORKDIR}/${PN}_${PV}/"
CPPFLAGS += "-DFACILITY=LOG_DAEMON -DENABLE_DNS"
diff --git a/packages/powertop/powertop_1.9.bb b/packages/powertop/powertop_1.9.bb
new file mode 100644
index 0000000000..ab84161ddc
--- /dev/null
+++ b/packages/powertop/powertop_1.9.bb
@@ -0,0 +1,17 @@
+DESCRIPTION = "PowerTOP, a tool that helps you find what software is using the most power."
+HOMEPAGE = "http://www.linuxpowertop.org/"
+LICENSE = "GPLv2"
+DEPENDS = "ncurses"
+
+SRC_URI = "http://www.linuxpowertop.org/download/powertop-${PV}.tar.gz"
+
+CFLAGS += "${LDFLAGS}"
+
+do_configure() {
+ # We do not build ncurses with wide char support
+ sed -i -e "s/lncursesw/lncurses/" ${S}/Makefile
+}
+
+do_install() {
+ oe_runmake install DESTDIR=${D}
+}
diff --git a/packages/psplash/files/angstrom/angstrom-psplash-qvga-img.h b/packages/psplash/files/angstrom/angstrom-psplash-qvga-img.h
deleted file mode 100644
index a03d16e57a..0000000000
--- a/packages/psplash/files/angstrom/angstrom-psplash-qvga-img.h
+++ /dev/null
@@ -1,1336 +0,0 @@
-/* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */
-
-#define HAND_IMG_ROWSTRIDE (1016)
-#define HAND_IMG_WIDTH (254)
-#define HAND_IMG_HEIGHT (264)
-#define HAND_IMG_BYTES_PER_PIXEL (4) /* 3:RGB, 4:RGBA */
-#define HAND_IMG_RLE_PIXEL_DATA ((uint8*) \
- "\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343" \
- "\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377" \
- "\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333" \
- "\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342" \
- "\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377" \
- "\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343" \
- "\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377" \
- "\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333" \
- "\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342" \
- "\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377" \
- "\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343" \
- "\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377" \
- "\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333" \
- "\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342" \
- "\377\377\333\343\342\377\377\333\343\342\377\331\333\343\342\377\5\327" \
- "\340\337\377\314\327\325\377\306\323\320\377\321\333\331\377\332\342" \
- "\341\377\377\333\343\342\377\206\333\343\342\377\1\276\311\307\377\202" \
- "g~y\377\357\333\343\342\377\2\253\276\272\377\233\262\255\377\204\223" \
- "\254\247\377\3\225\255\250\377\240\266\262\377\303\321\316\377\377\333" \
- "\343\342\377\204\333\343\342\377\1\270\305\303\377\202Slg\377\357\333" \
- "\343\342\377\11\231\260\254\377\223\254\247\377\243\271\264\377\267\307" \
- "\304\377\277\316\313\377\256\301\275\377\232\261\255\377\223\254\247" \
- "\377\271\311\306\377\377\333\343\342\377\204\333\343\342\377\1\270\305" \
- "\303\377\202Slg\377\357\333\343\342\377\202\231\260\254\377\204\377\377" \
- "\377\377\3\326\337\335\377\223\254\247\377\271\311\306\377\364\333\343" \
- "\342\377\4\332\342\341\377\316\330\326\377\277\312\310\377\260\275\273" \
- "\377\213\254\271\267\377\1\225\246\243\377\202Slg\377\357\333\343\342" \
- "\377\202\231\260\254\377\204\377\377\377\377\3\326\337\335\377\223\254" \
- "\247\377\271\311\306\377\362\333\343\342\377\3\266\302\300\377v\212\206" \
- "\377Vni\377\221Slg\377\357\333\343\342\377\202\231\260\254\377\204\377" \
- "\377\377\377\3\326\337\335\377\223\254\247\377\271\311\306\377\360\333" \
- "\343\342\377\2\320\331\330\377n\204\200\377\224Slg\377\357\333\343\342" \
- "\377\202\231\260\254\377\204\377\377\377\377\3\326\337\335\377\223\254" \
- "\247\377\271\311\306\377\357\333\343\342\377\2\332\342\341\377x\215\211" \
- "\377\225Slg\377\357\333\343\342\377\202\231\260\254\377\204\377\377\377" \
- "\377\3\326\337\335\377\223\254\247\377\271\311\306\377\357\333\343\342" \
- "\377\1\240\260\255\377\204Slg\377\4Uni\377s\210\203\377\177\222\217\377" \
- "\213\235\231\377\213\222\243\240\377\1\202\225\221\377\202Slg\377\357" \
- "\333\343\342\377\202\231\260\254\377\204\377\377\377\377\3\326\337\335" \
- "\377\223\254\247\377\271\311\306\377\357\333\343\342\377\1{\217\213\377" \
- "\203Slg\377\2\230\250\245\377\317\330\327\377\216\333\343\342\377\1\270" \
- "\305\303\377\202Slg\377\357\333\343\342\377\202\231\260\254\377\204\377" \
- "\377\377\377\3\326\337\335\377\223\254\247\377\271\311\306\377\357\333" \
- "\343\342\377\1byt\377\202Slg\377\1\230\250\245\377\220\333\343\342\377" \
- "\1\270\305\303\377\202Slg\377\357\333\343\342\377\202\231\260\254\377" \
- "\204\377\377\377\377\3\326\337\335\377\223\254\247\377\271\311\306\377" \
- "\356\333\343\342\377\1\324\335\334\377\203Slg\377\1\324\334\333\377\220" \
- "\333\343\342\377\1\274\307\306\377\202_vr\377\357\333\343\342\377\202" \
- "\231\260\254\377\204\377\377\377\377\3\326\337\335\377\223\254\247\377" \
- "\271\311\306\377\356\333\343\342\377\4\332\342\341\377Xql\377Slg\377" \
- "f|x\377\377\333\343\342\377\204\333\343\342\377\202\231\260\254\377\204" \
- "\377\377\377\377\3\326\337\335\377\223\254\247\377\271\311\306\377\357" \
- "\333\343\342\377\3n\204\200\377Slg\377_vr\377\377\333\343\342\377\204" \
- "\333\343\342\377\202\231\260\254\377\204\377\377\377\377\3\326\337\335" \
- "\377\223\254\247\377\271\311\306\377\357\333\343\342\377\1\243\262\257" \
- "\377\202Slg\377\1\311\324\322\377\220\333\343\342\377\1\325\336\335\377" \
- "\202\305\320\316\377\357\333\343\342\377\202\231\260\254\377\204\377" \
- "\377\377\377\3\326\337\335\377\223\254\247\377\271\311\306\377\357\333" \
- "\343\342\377\4\327\337\336\377dzv\377Slg\377\220\242\236\377\220\333" \
- "\343\342\377\1\270\305\303\377\202Slg\377\357\333\343\342\377\202\231" \
- "\260\254\377\204\377\377\377\377\3\326\337\335\377\223\254\247\377\271" \
- "\311\306\377\360\333\343\342\377\4\307\321\320\377`ws\377Slg\377\240" \
- "\260\255\377\217\333\343\342\377\1\270\305\303\377\202Slg\377\357\333" \
- "\343\342\377\202\231\260\254\377\204\377\377\377\377\3\326\337\335\377" \
- "\223\254\247\377\271\311\306\377\361\333\343\342\377\6\307\322\320\377" \
- "u\211\205\377Slg\377m\202~\377\246\265\262\377\321\333\331\377\214\333" \
- "\343\342\377\1\270\305\303\377\202Slg\377\357\333\343\342\377\202\231" \
- "\260\254\377\204\377\377\377\377\3\326\337\335\377\223\254\247\377\271" \
- "\311\306\377\362\333\343\342\377\2\332\342\341\377\213\235\231\377\203" \
- "Slg\377\3Xpk\377f}x\377s\210\203\377\211t\211\205\377\1l\201}\377\202" \
- "Slg\377\357\333\343\342\377\202\231\260\254\377\204\377\377\377\377\3" \
- "\326\337\335\377\223\254\247\377\271\311\306\377\361\333\343\342\377" \
- "\2\265\302\300\377i\177{\377\223Slg\377\357\333\343\342\377\202\231\260" \
- "\254\377\204\377\377\377\377\3\326\337\335\377\223\254\247\377\271\311" \
- "\306\377\360\333\343\342\377\2\255\272\270\377Uni\377\224Slg\377\357" \
- "\333\343\342\377\202\231\260\254\377\204\377\377\377\377\3\326\337\335" \
- "\377\223\254\247\377\271\311\306\377\357\333\343\342\377\2\316\327\326" \
- "\377Wpk\377\225Slg\377\357\333\343\342\377\202\231\260\254\377\204\377" \
- "\377\377\377\3\326\337\335\377\223\254\247\377\271\311\306\377\357\333" \
- "\343\342\377\1\220\241\236\377\203Slg\377\5Woj\377\205\227\224\377\254" \
- "\271\267\377\270\304\302\377\304\316\315\377\213\311\324\322\377\1\254" \
- "\271\267\377\202Slg\377\357\333\343\342\377\202\231\260\254\377\204\377" \
- "\377\377\377\3\326\337\335\377\223\254\247\377\271\311\306\377\357\333" \
- "\343\342\377\1i\177{\377\202Slg\377\2dzv\377\316\327\326\377\217\333" \
- "\343\342\377\1\270\305\303\377\202Slg\377\357\333\343\342\377\202\231" \
- "\260\254\377\204\377\377\377\377\3\326\337\335\377\223\254\247\377\271" \
- "\311\306\377\356\333\343\342\377\2\331\342\341\377Voj\377\202Slg\377" \
- "\1\273\307\305\377\220\333\343\342\377\1\270\305\303\377\202Slg\377\357" \
- "\333\343\342\377\3\241\267\262\377\223\254\247\377\363\366\365\377\203" \
- "\377\377\377\377\3\304\321\317\377\223\254\247\377\301\317\314\377\356" \
- "\333\343\342\377\1\324\335\334\377\202Slg\377\2Xpk\377\331\342\341\377" \
- "\220\333\343\342\377\1\311\324\322\377\202\226\247\244\377\357\333\343" \
- "\342\377\3\264\305\302\377\223\254\247\377\326\337\335\377\203\377\377" \
- "\377\377\3\246\273\267\377\223\254\247\377\324\335\334\377\357\333\343" \
- "\342\377\3_vr\377Slg\377i\177{\377\377\333\343\342\377\202\333\343\342" \
- "\377\5\317\332\331\377\257\301\276\377\217\251\244\377\223\254\247\377" \
- "\270\310\305\377\202\377\377\377\377\6\365\367\367\377\223\254\247\377" \
- "\217\251\244\377\234\263\257\377\275\314\312\377\330\341\340\377\355" \
- "\333\343\342\377\4\177\222\217\377Slg\377Vni\377\327\337\336\377\376" \
- "\333\343\342\377\2\277\316\313\377\207\243\236\377\203o\221\212\377\7" \
- "\221\253\246\377\233\262\256\377\376\376\376\377\377\377\377\377\330" \
- "\341\337\377\223\254\247\377\202\237\231\377\202o\221\212\377\3t\225" \
- "\216\377\234\263\257\377\322\334\333\377\353\333\343\342\377\1\277\313" \
- "\311\377\202Slg\377\1\273\307\305\377\220\333\343\342\377\1\307\322\320" \
- "\377\202\216\237\234\377\351\333\343\342\377\2\310\325\323\377\216\251" \
- "\243\377\204o\221\212\377\10v\226\220\377\221\252\245\377\223\254\247" \
- "\377\324\336\334\377\340\347\346\377\262\304\300\377\223\254\247\377" \
- "\210\244\237\377\204o\221\212\377\3u\225\217\377\250\274\270\377\327" \
- "\340\337\377\352\333\343\342\377\4\226\246\243\377Slg\377h\177z\377\321" \
- "\333\331\377\217\333\343\342\377\1\270\305\303\377\202Slg\377\350\333" \
- "\343\342\377\2\264\305\302\377q\223\214\377\202o\221\212\377\5q\223\214" \
- "\377\233\263\256\377\300\317\314\377\331\342\340\377\273\312\307\377" \
- "\204\223\254\247\377\5\225\255\250\377\330\341\337\377\321\333\332\377" \
- "\261\303\277\377\206\243\235\377\203o\221\212\377\2\205\242\234\377\317" \
- "\332\331\377\352\333\343\342\377\4\230\250\245\377Tmh\377q\206\202\377" \
- "\276\311\307\377\216\333\343\342\377\1\270\305\303\377\202Slg\377\346" \
- "\333\343\342\377\2\332\342\341\377\241\267\263\377\203o\221\212\377\2" \
- "\227\257\253\377\315\331\327\377\203\333\343\342\377\1\321\333\332\377" \
- "\204\262\303\300\377\1\272\312\307\377\204\333\343\342\377\2\270\310" \
- "\306\377\177\235\227\377\202o\221\212\377\2z\231\222\377\304\322\320" \
- "\377\347\333\343\342\377\1\317\330\327\377\202\301\314\312\377\10\247" \
- "\266\263\377^vq\377Slg\377o\204\200\377\232\252\247\377\247\266\263\377" \
- "\264\301\277\377\277\313\311\377\211\301\314\312\377\1\245\264\261\377" \
- "\202Slg\377\346\333\343\342\377\1\236\265\260\377\202o\221\212\377\2" \
- "t\225\216\377\273\313\310\377\220\333\343\342\377\2\327\340\337\377\225" \
- "\256\251\377\202o\221\212\377\2t\225\216\377\310\325\323\377\346\333" \
- "\343\342\377\1\233\253\250\377\226Slg\377\345\333\343\342\377\1\261\303" \
- "\277\377\202o\221\212\377\2|\233\225\377\311\325\323\377\223\333\343" \
- "\342\377\1\247\273\267\377\202o\221\212\377\2|\233\225\377\322\334\333" \
- "\377\345\333\343\342\377\1\233\253\250\377\226Slg\377\344\333\343\342" \
- "\377\5\304\321\317\377q\222\213\377o\221\212\377u\226\217\377\312\326" \
- "\324\377\225\333\343\342\377\1\242\270\264\377\202o\221\212\377\2\211" \
- "\244\237\377\332\342\341\377\344\333\343\342\377\1\233\253\250\377\226" \
- "Slg\377\344\333\343\342\377\4\207\243\236\377o\221\212\377p\222\213\377" \
- "\275\314\312\377\226\333\343\342\377\2\332\342\341\377\220\252\245\377" \
- "\202o\221\212\377\1\264\305\302\377\344\333\343\342\377\3\233\253\250" \
- "\377Slg\377\\so\377\221x\215\211\377\1o\204\200\377\202Slg\377\343\333" \
- "\343\342\377\1\267\310\305\377\202o\221\212\377\1\237\265\261\377\230" \
- "\333\343\342\377\5\324\336\334\377v\226\220\377o\221\212\377|\233\225" \
- "\377\330\341\337\377\343\333\343\342\377\3\233\253\250\377Slg\377t\211" \
- "\205\377\221\333\343\342\377\1\270\305\303\377\202Slg\377\342\333\343" \
- "\342\377\5\332\342\341\377~\234\226\377o\221\212\377t\225\216\377\322" \
- "\334\333\377\231\333\343\342\377\1\251\275\271\377\202o\221\212\377\1" \
- "\255\300\275\377\343\333\343\342\377\3\233\253\250\377Slg\377t\211\205" \
- "\377\221\333\343\342\377\1\270\305\303\377\202Slg\377\342\333\343\342" \
- "\377\1\304\321\317\377\202o\221\212\377\1\245\272\266\377\232\333\343" \
- "\342\377\4\327\340\337\377y\231\222\377o\221\212\377\207\243\236\377" \
- "\343\333\343\342\377\3\233\253\250\377Slg\377t\211\205\377\221\333\343" \
- "\342\377\1\270\305\303\377\202Slg\377\342\333\343\342\377\1\243\270\264" \
- "\377\202o\221\212\377\1\314\327\325\377\233\333\343\342\377\1\234\263" \
- "\257\377\202o\221\212\377\1\321\333\332\377\342\333\343\342\377\3\277" \
- "\312\310\377\237\256\253\377\256\273\271\377\221\333\343\342\377\1\323" \
- "\334\333\377\202\275\310\306\377\342\333\343\342\377\3\202\237\231\377" \
- "o\221\212\377\201\236\230\377\234\333\343\342\377\1\276\315\312\377\202" \
- "o\221\212\377\1\261\303\300\377\377\333\343\342\377\333\333\343\342\377" \
- "\1\330\341\340\377\202o\221\212\377\1\234\263\256\377\234\333\343\342" \
- "\377\1\330\341\337\377\202o\221\212\377\1\234\263\257\377\377\333\343" \
- "\342\377\333\333\343\342\377\1\317\332\330\377\202o\221\212\377\1\250" \
- "\274\270\377\235\333\343\342\377\3y\230\222\377o\221\212\377\222\254" \
- "\246\377\377\333\343\342\377\333\333\343\342\377\1\304\322\320\377\202" \
- "o\221\212\377\1\264\306\302\377\235\333\343\342\377\3\205\242\234\377" \
- "o\221\212\377\207\243\236\377\350\333\343\342\377\13\327\340\337\377" \
- "\267\303\301\377\225\246\243\377{\217\213\377p\205\201\377f}x\377k\201" \
- "}\377u\211\205\377\205\227\224\377\245\263\261\377\310\323\321\377\347" \
- "\333\343\342\377\1\275\314\312\377\202o\221\212\377\1\274\314\311\377" \
- "\235\333\343\342\377\3\215\250\242\377o\221\212\377\200\236\230\377\346" \
- "\333\343\342\377\3\324\334\333\377\231\251\246\377_wr\377\212Slg\377" \
- "\2x\215\211\377\270\304\302\377\345\333\343\342\377\1\306\323\321\377" \
- "\202o\221\212\377\1\263\304\301\377\235\333\343\342\377\3\203\240\232" \
- "\377o\221\212\377\211\244\237\377\345\333\343\342\377\2\300\314\312\377" \
- "f|x\377\216Slg\377\2\216\240\235\377\330\340\337\377\343\333\343\342" \
- "\377\1\320\333\331\377\202o\221\212\377\1\247\273\267\377\235\333\343" \
- "\342\377\3w\227\221\377o\221\212\377\223\254\250\377\344\333\343\342" \
- "\377\2\273\307\305\377Woj\377\220Slg\377\2y\216\212\377\330\341\340\377" \
- "\342\333\343\342\377\4\331\342\340\377p\221\213\377o\221\212\377\231" \
- "\261\254\377\234\333\343\342\377\1\326\337\336\377\202o\221\212\377\1" \
- "\236\265\260\377\331\333\343\342\377\3\272\306\304\377\231\251\246\377" \
- "\310\322\321\377\207\333\343\342\377\2\310\322\321\377\\to\377\205Sl" \
- "g\377\7Woj\377dzv\377q\206\202\377}\221\215\377w\214\210\377k\201|\377" \
- "]up\377\206Slg\377\1\211\233\230\377\343\333\343\342\377\3\206\242\234" \
- "\377o\221\212\377|\233\225\377\234\333\343\342\377\1\271\311\306\377" \
- "\202o\221\212\377\1\265\306\303\377\330\333\343\342\377\1\222\243\240" \
- "\377\203Slg\377\1\271\306\304\377\206\333\343\342\377\1|\217\214\377" \
- "\203Slg\377\3dzv\377\231\252\247\377\314\326\324\377\207\333\343\342" \
- "\377\4\330\340\337\377\267\304\302\377\201\224\220\377Vni\377\203Slg" \
- "\377\1\274\307\306\377\342\333\343\342\377\1\247\274\270\377\202o\221" \
- "\212\377\1\307\323\321\377\233\333\343\342\377\4\227\257\253\377o\221" \
- "\212\377q\222\213\377\324\336\334\377\327\333\343\342\377\2\325\335\334" \
- "\377Zrm\377\203Slg\377\1\205\227\224\377\205\333\343\342\377\1\275\310" \
- "\306\377\202Slg\377\3Umh\377\251\270\265\377\331\342\341\377\214\333" \
- "\343\342\377\2\317\331\327\377y\216\212\377\202Slg\377\1t\211\205\377" \
- "\342\333\343\342\377\1\310\325\323\377\202o\221\212\377\1\237\265\261" \
- "\377\232\333\343\342\377\4\325\336\335\377v\226\217\377o\221\212\377" \
- "\213\246\241\377\330\333\343\342\377\2\331\341\340\377czu\377\203Slg" \
- "\377\1\221\243\237\377\205\333\343\342\377\4\220\241\236\377Slg\377T" \
- "lg\377\253\271\267\377\217\333\343\342\377\2\326\336\335\377s\210\204" \
- "\377\202Slg\377\1\317\331\327\377\342\333\343\342\377\4\203\240\232\377" \
- "o\221\212\377r\223\214\377\317\331\330\377\205\333\343\342\377\2\305" \
- "\322\320\377\322\334\332\377\212\333\343\342\377\3\332\342\341\377\305" \
- "\322\320\377\322\334\333\377\205\333\343\342\377\1\243\270\264\377\202" \
- "o\221\212\377\1\262\304\301\377\331\333\343\342\377\5\250\266\264\377" \
- "Yql\377Slg\377f|x\377\310\322\321\377\205\333\343\342\377\3k\201}\377" \
- "Slg\377\212\234\231\377\221\333\343\342\377\4\321\332\331\377Tmh\377" \
- "Slg\377\253\271\267\377\342\333\343\342\377\1\276\315\312\377\202o\221" \
- "\212\377\1\227\257\253\377\204\333\343\342\377\6\327\340\337\377\227" \
- "\257\252\377\223\254\247\377\251\275\271\377\307\324\322\377\332\342" \
- "\341\377\205\333\343\342\377\5\325\337\335\377\272\311\307\377\234\263" \
- "\256\377\223\254\247\377\263\304\301\377\204\333\343\342\377\5\317\332" \
- "\331\377s\224\215\377o\221\212\377\201\236\230\377\331\342\340\377\332" \
- "\333\343\342\377\3\324\334\333\377\274\307\306\377\332\342\341\377\206" \
- "\333\343\342\377\3Xql\377Slg\377\255\272\270\377\222\333\343\342\377" \
- "\3m\202~\377Slg\377\230\251\246\377\343\333\343\342\377\1\216\250\243" \
- "\377\202o\221\212\377\1\264\305\302\377\203\333\343\342\377\3\275\314" \
- "\312\377\223\254\247\377\225\255\250\377\202\223\254\247\377\7\236\264" \
- "\260\377\273\313\310\377\327\337\336\377\333\343\342\377\315\330\326" \
- "\377\256\301\275\377\225\255\251\377\202\223\254\247\377\3\224\254\250" \
- "\377\227\257\252\377\330\341\337\377\202\333\343\342\377\2\330\341\337" \
- "\377\207\243\236\377\202o\221\212\377\1\273\312\310\377\343\333\343\342" \
- "\377\1\324\335\334\377\202Slg\377\1\314\326\324\377\222\333\343\342\377" \
- "\3\214\236\233\377Slg\377\214\235\232\377\343\333\343\342\377\5\312\326" \
- "\324\377t\225\216\377o\221\212\377q\223\214\377\303\320\316\377\202\333" \
- "\343\342\377\5\237\265\261\377\223\254\247\377\347\355\354\377\335\344" \
- "\343\377\257\301\276\377\202\223\254\247\377\2\250\274\270\377\321\334" \
- "\332\377\202\223\254\247\377\6\231\261\254\377\303\321\316\377\360\363" \
- "\363\377\271\311\306\377\223\254\247\377\277\315\313\377\202\333\343" \
- "\342\377\1\227\257\252\377\202o\221\212\377\1\222\254\246\377\344\333" \
- "\343\342\377\1\325\335\334\377\202Slg\377\1\313\325\323\377\222\333\343" \
- "\342\377\3\213\235\231\377Slg\377\214\236\233\377\344\333\343\342\377" \
- "\1\273\312\310\377\202o\221\212\377\5v\226\220\377\277\316\313\377\311" \
- "\325\323\377\223\254\247\377\251\275\271\377\203\377\377\377\377\7\355" \
- "\361\360\377\227\257\253\377\226\256\251\377\273\312\307\377\223\254" \
- "\247\377\271\311\306\377\372\373\373\377\202\377\377\377\377\5\346\354" \
- "\353\377\223\254\247\377\240\266\262\377\330\341\340\377\232\261\255" \
- "\377\202o\221\212\377\2\203\240\232\377\326\337\336\377\334\333\343\342" \
- "\377\3\322\333\332\377\267\303\301\377\331\341\340\377\206\333\343\342" \
- "\377\3Yql\377Slg\377\253\271\267\377\222\333\343\342\377\3k\201}\377" \
- "Slg\377\231\251\246\377\345\333\343\342\377\1\252\276\272\377\202o\221" \
- "\212\377\4p\222\213\377\234\263\256\377\223\254\247\377\327\340\336\377" \
- "\203\377\377\377\377\2\344\352\351\377\232\261\254\377\202\223\254\247" \
- "\377\3\224\255\250\377\262\303\300\377\371\372\372\377\203\377\377\377" \
- "\377\3\250\274\270\377\223\254\247\377\214\246\241\377\202o\221\212\377" \
- "\2y\231\222\377\317\331\330\377\334\333\343\342\377\5\247\266\263\377" \
- "Xql\377Slg\377`ws\377\305\320\316\377\205\333\343\342\377\3l\201}\377" \
- "Slg\377\210\233\227\377\221\333\343\342\377\4\317\331\327\377Tlg\377" \
- "Slg\377\254\271\267\377\346\333\343\342\377\6\257\301\276\377p\222\213" \
- "\377r\223\214\377\222\253\246\377\233\262\256\377\374\374\374\377\202" \
- "\377\377\377\377\11\316\331\327\377\223\254\247\377\252\275\272\377\320" \
- "\333\331\377\332\343\341\377\305\323\320\377\227\257\253\377\237\265" \
- "\261\377\362\365\364\377\202\377\377\377\377\6\325\337\335\377\223\254" \
- "\247\377\206\242\234\377o\221\212\377\202\237\231\377\315\330\326\377" \
- "\334\333\343\342\377\2\331\341\340\377czu\377\203Slg\377\1\217\241\235" \
- "\377\205\333\343\342\377\1\221\243\237\377\202Slg\377\1\251\267\265\377" \
- "\217\333\343\342\377\5\325\335\334\377p\206\202\377Slg\377Tlg\377\320" \
- "\331\330\377\347\333\343\342\377\4\277\316\313\377\204\241\233\377\223" \
- "\254\247\377\306\323\320\377\202\377\377\377\377\4\352\357\356\377\225" \
- "\255\250\377\300\317\314\377\376\376\376\377\203\377\377\377\377\12\361" \
- "\364\363\377\236\264\260\377\257\302\276\377\376\376\376\377\377\377" \
- "\377\377\373\374\373\377\232\261\254\377\222\253\246\377\217\251\244" \
- "\377\325\337\335\377\335\333\343\342\377\2\325\336\335\377[sn\377\203" \
- "Slg\377\1\206\231\225\377\205\333\343\342\377\1\276\312\310\377\202S" \
- "lg\377\3Umh\377\251\267\265\377\331\342\341\377\214\333\343\342\377\2" \
- "\315\326\325\377v\213\207\377\202Slg\377\1v\213\207\377\350\333\343\342" \
- "\377\4\331\341\340\377\230\260\253\377\224\254\247\377\362\365\364\377" \
- "\202\377\377\377\377\3\272\312\307\377\243\270\264\377\374\375\375\377" \
- "\205\377\377\377\377\3\335\345\343\377\223\254\247\377\352\357\356\377" \
- "\202\377\377\377\377\3\304\321\317\377\223\254\247\377\267\307\304\377" \
- "\337\333\343\342\377\1\223\244\240\377\202Slg\377\2Umh\377\275\310\306" \
- "\377\206\333\343\342\377\1~\222\216\377\203Slg\377\4czu\377\227\247\244" \
- "\377\310\322\321\377\331\341\340\377\206\333\343\342\377\4\325\335\334" \
- "\377\263\300\276\377}\220\215\377Tmh\377\203Slg\377\1\277\312\310\377" \
- "\350\333\343\342\377\3\302\320\315\377\223\254\247\377\264\305\302\377" \
- "\203\377\377\377\377\2\243\271\264\377\277\316\313\377\206\377\377\377" \
- "\377\3\373\374\373\377\224\255\250\377\322\335\333\377\202\377\377\377" \
- "\377\4\360\363\363\377\223\254\247\377\232\262\255\377\332\342\341\377" \
- "\337\333\343\342\377\3\274\310\306\377\236\255\253\377\315\327\325\377" \
- "\207\333\343\342\377\2\311\324\322\377^uq\377\205Slg\377\7Tmh\377_wr" \
- "\377m\202~\377y\215\211\377s\210\204\377f}x\377Yql\377\206Slg\377\1\217" \
- "\240\235\377\351\333\343\342\377\3\244\271\265\377\223\254\247\377\342" \
- "\350\347\377\203\377\377\377\377\2\240\266\262\377\302\320\315\377\206" \
- "\377\377\377\377\3\374\375\375\377\225\255\251\377\317\332\330\377\203" \
- "\377\377\377\377\3\262\304\300\377\223\254\247\377\303\321\317\377\352" \
- "\333\343\342\377\2\275\311\307\377Xql\377\220Slg\377\2}\221\215\377\331" \
- "\342\341\377\350\333\343\342\377\4\316\331\327\377\223\254\247\377\243" \
- "\270\264\377\376\376\376\377\203\377\377\377\377\2\267\307\304\377\250" \
- "\274\270\377\206\377\377\377\377\3\345\353\351\377\223\254\247\377\346" \
- "\354\353\377\203\377\377\377\377\3\340\347\345\377\223\254\247\377\245" \
- "\272\266\377\353\333\343\342\377\2\303\316\314\377h\177z\377\215Slg\377" \
- "\3Tlg\377\225\245\242\377\331\341\340\377\351\333\343\342\377\3\257\302" \
- "\276\377\223\254\247\377\320\333\331\377\204\377\377\377\377\3\340\347" \
- "\346\377\223\254\247\377\317\332\330\377\204\377\377\377\377\4\371\372" \
- "\372\377\245\272\266\377\246\272\266\377\374\375\375\377\203\377\377" \
- "\377\377\4\376\376\376\377\242\267\263\377\223\254\247\377\317\331\330" \
- "\377\353\333\343\342\377\3\325\335\334\377\235\255\252\377czu\377\211" \
- "Slg\377\3Tlg\377\177\222\217\377\277\312\310\377\352\333\343\342\377" \
- "\4\326\337\336\377\225\256\251\377\227\257\253\377\371\372\372\377\205" \
- "\377\377\377\377\11\277\316\313\377\223\254\247\377\272\312\307\377\341" \
- "\350\346\377\353\360\357\377\326\340\336\377\240\266\261\377\227\257" \
- "\252\377\352\357\356\377\205\377\377\377\377\3\316\331\327\377\223\254" \
- "\247\377\260\302\277\377\355\333\343\342\377\13\330\341\340\377\273\307" \
- "\305\377\231\252\247\377\177\222\217\377t\211\205\377k\201|\377o\205" \
- "\201\377y\215\211\377\211\233\230\377\251\267\265\377\314\326\324\377" \
- "\354\333\343\342\377\3\273\312\310\377\223\254\247\377\277\316\313\377" \
- "\207\377\377\377\377\2\315\330\327\377\224\255\250\377\203\223\254\247" \
- "\377\2\235\263\257\377\360\363\362\377\206\377\377\377\377\4\370\371" \
- "\371\377\227\257\252\377\226\256\252\377\327\340\336\377\377\333\343" \
- "\342\377\343\333\343\342\377\4\332\342\341\377\235\263\257\377\223\254" \
- "\247\377\354\361\360\377\207\377\377\377\377\7\310\325\322\377\223\254" \
- "\247\377\262\303\300\377\307\323\321\377\231\260\253\377\225\255\251" \
- "\377\365\367\367\377\207\377\377\377\377\3\275\314\311\377\223\254\247" \
- "\377\274\313\311\377\346\333\343\342\377\1\316\327\326\377\205\301\314" \
- "\312\377\1\327\340\337\377\365\333\343\342\377\3\306\323\321\377\223" \
- "\254\247\377\256\300\275\377\207\377\377\377\377\10\374\375\375\377\235" \
- "\264\257\377\224\255\250\377\324\336\334\377\333\343\342\377\266\307" \
- "\304\377\223\254\247\377\312\326\324\377\207\377\377\377\377\3\353\357" \
- "\356\377\223\254\247\377\236\264\260\377\346\333\343\342\377\1\204\227" \
- "\223\377\205Slg\377\1\311\324\322\377\365\333\343\342\377\3\250\274\270" \
- "\377\223\254\247\377\335\345\344\377\207\377\377\377\377\3\332\342\340" \
- "\377\223\254\247\377\254\277\274\377\202\333\343\342\377\4\323\335\334" \
- "\377\224\255\250\377\236\265\260\377\375\376\375\377\207\377\377\377" \
- "\377\3\256\301\275\377\223\254\247\377\310\324\322\377\345\333\343\342" \
- "\377\1i\177{\377\205Slg\377\1\311\324\322\377\364\333\343\342\377\4\321" \
- "\334\332\377\223\254\247\377\240\265\261\377\376\376\376\377\207\377" \
- "\377\377\377\3\254\277\274\377\223\254\247\377\312\326\324\377\203\333" \
- "\343\342\377\3\253\276\272\377\223\254\247\377\334\344\342\377\207\377" \
- "\377\377\377\3\333\343\342\377\223\254\247\377\251\275\271\377\345\333" \
- "\343\342\377\1Vni\377\202Slg\377\4Yrm\377\234\253\251\377\302\315\313" \
- "\377\331\342\341\377\364\333\343\342\377\3\264\305\302\377\223\254\247" \
- "\377\314\330\325\377\207\377\377\377\377\3\353\360\357\377\223\254\247" \
- "\377\241\266\262\377\204\333\343\342\377\3\311\325\323\377\223\254\247" \
- "\377\256\301\275\377\207\377\377\377\377\4\375\375\375\377\236\265\260" \
- "\377\223\254\247\377\322\334\333\377\343\333\343\342\377\1\324\334\333" \
- "\377\203Slg\377\1\261\277\274\377\366\333\343\342\377\4\330\341\340\377" \
- "\230\260\253\377\225\256\251\377\366\370\370\377\207\377\377\377\377" \
- "\3\276\315\312\377\223\254\247\377\277\315\313\377\205\333\343\342\377" \
- "\3\237\265\261\377\223\254\247\377\355\361\360\377\207\377\377\377\377" \
- "\3\312\326\324\377\223\254\247\377\265\306\303\377\343\333\343\342\377" \
- "\1\326\337\336\377\202Slg\377\1]up\377\367\333\343\342\377\3\277\316" \
- "\313\377\223\254\247\377\272\312\307\377\207\377\377\377\377\4\370\371" \
- "\371\377\227\257\252\377\230\257\253\377\330\341\337\377\205\333\343" \
- "\342\377\3\275\314\312\377\223\254\247\377\277\316\313\377\207\377\377" \
- "\377\377\4\365\367\367\377\225\255\251\377\231\260\254\377\331\341\340" \
- "\377\343\333\343\342\377\3`ws\377Slg\377i\200{\377\367\333\343\342\377" \
- "\3\241\267\263\377\223\254\247\377\350\355\354\377\207\377\377\377\377" \
- "\3\317\332\330\377\223\254\247\377\263\305\301\377\206\333\343\342\377" \
- "\4\327\340\337\377\227\257\252\377\230\260\253\377\371\372\372\377\207" \
- "\377\377\377\377\3\271\311\306\377\223\254\247\377\301\317\314\377\343" \
- "\333\343\342\377\4y\215\211\377Slg\377Vni\377\327\340\337\377\220\333" \
- "\343\342\377\1\324\335\334\377\202\301\314\312\377\342\333\343\342\377" \
- "\3\313\327\325\377\223\254\247\377\251\275\271\377\207\377\377\377\377" \
- "\4\376\376\376\377\242\267\263\377\223\254\247\377\321\333\332\377\207" \
- "\333\343\342\377\3\262\303\300\377\223\254\247\377\321\334\332\377\207" \
- "\377\377\377\377\3\346\354\352\377\223\254\247\377\242\270\263\377\343" \
- "\333\343\342\377\1\260\276\273\377\202Slg\377\1\300\313\311\377\220\333" \
- "\343\342\377\1\270\305\303\377\202Slg\377\342\333\343\342\377\3\255\300" \
- "\274\377\223\254\247\377\327\340\336\377\207\377\377\377\377\3\340\347" \
- "\346\377\223\254\247\377\247\273\270\377\210\333\343\342\377\3\320\332" \
- "\331\377\223\254\247\377\244\271\265\377\210\377\377\377\377\3\247\273" \
- "\267\377\223\254\247\377\314\330\326\377\342\333\343\342\377\5\331\342" \
- "\341\377o\205\201\377Slg\377x\215\211\377\331\342\341\377\217\333\343" \
- "\342\377\1\270\305\303\377\202Slg\377\341\333\343\342\377\4\325\336\335" \
- "\377\225\255\250\377\233\262\255\377\374\374\374\377\207\377\377\377" \
- "\377\3\263\305\301\377\223\254\247\377\306\323\321\377\211\333\343\342" \
- "\377\3\246\273\267\377\223\254\247\377\343\351\350\377\207\377\377\377" \
- "\377\3\325\336\334\377\223\254\247\377\256\300\275\377\343\333\343\342" \
- "\377\5\316\330\326\377dzv\377Slg\377\220\241\236\377\332\342\341\377" \
- "\216\333\343\342\377\1\270\305\303\377\202Slg\377\341\333\343\342\377" \
- "\3\270\310\306\377\223\254\247\377\305\323\320\377\207\377\377\377\377" \
- "\4\361\364\363\377\223\254\247\377\234\263\257\377\332\342\341\377\211" \
- "\333\343\342\377\3\304\322\317\377\223\254\247\377\265\306\302\377\207" \
- "\377\377\377\377\4\373\374\373\377\232\261\254\377\225\255\251\377\325" \
- "\337\335\377\343\333\343\342\377\6\316\327\326\377\200\224\220\377Sl" \
- "g\377h~z\377\246\265\262\377\326\336\335\377\214\333\343\342\377\1\270" \
- "\305\303\377\202Slg\377\340\333\343\342\377\4\332\342\341\377\233\262" \
- "\255\377\223\254\247\377\361\364\364\377\207\377\377\377\377\3\304\322" \
- "\317\377\223\254\247\377\272\312\307\377\212\333\343\342\377\4\332\342" \
- "\341\377\233\262\256\377\224\254\247\377\362\365\364\377\207\377\377" \
- "\377\377\3\303\321\316\377\223\254\247\377\272\311\307\377\341\333\343" \
- "\342\377\1\257\274\272\377\203}\220\215\377\1^vq\377\203Slg\377\3^vq" \
- "\377n\203\177\377{\217\213\377\211}\220\215\377\1r\207\203\377\202Sl" \
- "g\377\340\333\343\342\377\3\304\321\317\377\223\254\247\377\264\305\301" \
- "\377\207\377\377\377\377\4\373\374\374\377\232\262\255\377\225\256\251" \
- "\377\326\337\336\377\213\333\343\342\377\3\271\311\306\377\223\254\247" \
- "\377\307\324\321\377\207\377\377\377\377\4\360\363\362\377\223\254\247" \
- "\377\234\263\256\377\332\342\341\377\340\333\343\342\377\1\233\253\250" \
- "\377\226Slg\377\340\333\343\342\377\3\246\272\266\377\223\254\247\377" \
- "\341\350\347\377\207\377\377\377\377\3\326\337\335\377\223\254\247\377" \
- "\256\301\275\377\214\333\343\342\377\4\325\336\335\377\225\255\250\377" \
- "\234\263\256\377\374\375\374\377\207\377\377\377\377\3\262\304\300\377" \
- "\223\254\247\377\305\322\320\377\340\333\343\342\377\1\233\253\250\377" \
- "\226Slg\377\337\333\343\342\377\4\317\332\330\377\223\254\247\377\242" \
- "\270\263\377\376\376\376\377\207\377\377\377\377\3\251\274\270\377\223" \
- "\254\247\377\315\330\326\377\215\333\343\342\377\3\255\300\274\377\223" \
- "\254\247\377\330\341\337\377\207\377\377\377\377\3\337\346\345\377\223" \
- "\254\247\377\247\273\267\377\340\333\343\342\377\1\233\253\250\377\226" \
- "Slg\377\337\333\343\342\377\3\261\303\300\377\223\254\247\377\320\333" \
- "\331\377\207\377\377\377\377\3\347\355\354\377\223\254\247\377\243\270" \
- "\264\377\216\333\343\342\377\3\314\327\325\377\223\254\247\377\252\276" \
- "\272\377\207\377\377\377\377\4\376\376\376\377\241\267\262\377\223\254" \
- "\247\377\320\333\331\377\337\333\343\342\377\3\233\253\250\377Slg\377" \
- "m\202~\377\221\275\310\306\377\1\242\261\256\377\202Slg\377\336\333\343" \
- "\342\377\1\327\340\337\377\202\227\257\252\377\1\370\372\371\377\207" \
- "\377\377\377\377\3\272\312\307\377\223\254\247\377\301\317\315\377\217" \
- "\333\343\342\377\3\241\267\263\377\223\254\247\377\351\356\355\377\207" \
- "\377\377\377\377\3\316\331\327\377\223\254\247\377\263\304\301\377\337" \
- "\333\343\342\377\3\233\253\250\377Slg\377t\211\205\377\221\333\343\342" \
- "\377\1\270\305\303\377\202Slg\377\336\333\343\342\377\3\275\314\311\377" \
- "\223\254\247\377\277\315\312\377\207\377\377\377\377\4\366\370\367\377" \
- "\225\256\251\377\231\260\254\377\331\341\340\377\217\333\343\342\377" \
- "\3\300\316\314\377\223\254\247\377\274\313\310\377\207\377\377\377\377" \
- "\4\367\371\371\377\226\256\252\377\227\257\252\377\330\340\337\377\336" \
- "\333\343\342\377\3\233\253\250\377Slg\377t\211\205\377\221\333\343\342" \
- "\377\1\270\305\303\377\202Slg\377\336\333\343\342\377\3\237\265\260\377" \
- "\223\254\247\377\354\360\357\377\207\377\377\377\377\3\313\327\325\377" \
- "\223\254\247\377\266\306\303\377\220\333\343\342\377\4\331\341\340\377" \
- "\230\260\253\377\226\256\252\377\367\371\370\377\207\377\377\377\377" \
- "\3\274\314\311\377\223\254\247\377\276\315\312\377\336\333\343\342\377" \
- "\3\237\256\253\377[sn\377{\217\213\377\221\333\343\342\377\1\302\315" \
- "\313\377\202x\215\211\377\335\333\343\342\377\3\310\325\323\377\223\254" \
- "\247\377\255\300\274\377\207\377\377\377\377\4\375\376\375\377\237\265" \
- "\261\377\224\254\247\377\323\334\333\377\221\333\343\342\377\3\264\305" \
- "\302\377\223\254\247\377\315\331\326\377\207\377\377\377\377\3\352\357" \
- "\356\377\223\254\247\377\240\266\261\377\377\333\343\342\377\323\333" \
- "\343\342\377\3\252\276\272\377\223\254\247\377\333\343\341\377\207\377" \
- "\377\377\377\3\335\344\343\377\223\254\247\377\252\275\272\377\222\333" \
- "\343\342\377\4\322\334\332\377\223\254\247\377\241\266\262\377\376\376" \
- "\376\377\207\377\377\377\377\3\253\276\273\377\223\254\247\377\312\326" \
- "\324\377\356\333\343\342\377\1\331\342\341\377\341\333\343\342\377\4" \
- "\323\335\333\377\224\254\247\377\235\264\257\377\375\375\375\377\207" \
- "\377\377\377\377\3\257\302\276\377\223\254\247\377\310\324\322\377\207" \
- "\333\343\342\377\4\327\340\337\377\264\305\302\377\260\302\277\377\305" \
- "\321\317\377\210\333\343\342\377\3\251\274\271\377\223\254\247\377\337" \
- "\346\345\377\207\377\377\377\377\3\330\341\337\377\223\254\247\377\253" \
- "\276\273\377\356\333\343\342\377\5\264\301\277\377^uq\377w\214\210\377" \
- "\236\255\253\377\330\341\340\377\335\333\343\342\377\3\266\306\303\377" \
- "\223\254\247\377\311\325\323\377\207\377\377\377\377\3\356\362\361\377" \
- "\223\254\247\377\236\265\260\377\210\333\343\342\377\5\251\275\272\377" \
- "\226\256\251\377\240\266\261\377\222\253\246\377\316\331\330\377\207" \
- "\333\343\342\377\3\307\323\321\377\223\254\247\377\261\303\300\377\207" \
- "\377\377\377\377\4\374\375\374\377\234\263\256\377\224\255\250\377\324" \
- "\335\334\377\334\333\343\342\377\3\241\260\255\377_vr\377z\216\212\377" \
- "\216\333\343\342\377\1\264\301\277\377\203Slg\377\2m\202~\377\312\324" \
- "\323\377\333\333\343\342\377\4\331\341\340\377\231\261\254\377\225\255" \
- "\250\377\364\367\366\377\207\377\377\377\377\3\301\317\314\377\223\254" \
- "\247\377\275\314\311\377\207\333\343\342\377\6\331\342\341\377\225\255" \
- "\250\377\320\333\331\377\374\375\375\377\234\263\256\377\261\303\300" \
- "\377\207\333\343\342\377\4\332\342\341\377\235\264\257\377\223\254\247" \
- "\377\360\363\362\377\207\377\377\377\377\3\307\324\321\377\223\254\247" \
- "\377\267\310\305\377\334\333\343\342\377\3\233\253\250\377Slg\377p\205" \
- "\201\377\216\333\343\342\377\2\270\305\303\377Woj\377\203Slg\377\1~\221" \
- "\216\377\333\333\343\342\377\3\301\317\315\377\223\254\247\377\270\310" \
- "\305\377\207\377\377\377\377\4\371\373\372\377\230\260\253\377\226\256" \
- "\252\377\327\340\336\377\207\333\343\342\377\6\331\340\337\377\223\254" \
- "\247\377\332\342\341\377\377\377\377\377\251\275\271\377\255\300\275" \
- "\377\210\333\343\342\377\3\273\313\310\377\223\254\247\377\303\321\316" \
- "\377\207\377\377\377\377\4\363\365\365\377\224\255\250\377\232\261\255" \
- "\377\331\342\341\377\333\333\343\342\377\3\233\253\250\377Slg\377p\205" \
- "\201\377\217\333\343\342\377\3\332\342\341\377\306\321\317\377\206\230" \
- "\225\377\202Slg\377\1\300\313\311\377\332\333\343\342\377\3\243\270\264" \
- "\377\223\254\247\377\345\353\352\377\207\377\377\377\377\3\322\335\333" \
- "\377\223\254\247\377\261\303\277\377\210\333\343\342\377\6\331\340\337" \
- "\377\223\254\247\377\332\342\341\377\377\377\377\377\251\275\271\377" \
- "\255\300\275\377\210\333\343\342\377\4\326\337\336\377\226\256\251\377" \
- "\232\261\254\377\372\373\373\377\207\377\377\377\377\3\266\307\303\377" \
- "\223\254\247\377\303\320\316\377\333\333\343\342\377\3\233\253\250\377" \
- "Slg\377p\205\201\377\221\333\343\342\377\4\332\342\341\377q\207\202\377" \
- "Slg\377\246\264\262\377\331\333\343\342\377\3\315\330\326\377\223\254" \
- "\247\377\246\273\267\377\210\377\377\377\377\3\245\272\266\377\223\254" \
- "\247\377\317\332\330\377\210\333\343\342\377\6\331\340\337\377\223\254" \
- "\247\377\332\342\341\377\377\377\377\377\251\275\271\377\255\300\275" \
- "\377\211\333\343\342\377\3\260\302\276\377\223\254\247\377\324\336\334" \
- "\377\207\377\377\377\377\3\343\351\350\377\223\254\247\377\244\271\265" \
- "\377\333\333\343\342\377\3\233\253\250\377Slg\377p\205\201\377\222\333" \
- "\343\342\377\3\223\244\240\377Slg\377\223\244\240\377\331\333\343\342" \
- "\377\3\257\301\276\377\223\254\247\377\324\336\334\377\207\377\377\377" \
- "\377\3\344\352\351\377\223\254\247\377\245\272\266\377\211\333\343\342" \
- "\377\6\331\340\337\377\223\254\247\377\332\342\341\377\377\377\377\377" \
- "\251\275\271\377\255\300\275\377\211\333\343\342\377\3\316\331\327\377" \
- "\223\254\247\377\247\273\267\377\210\377\377\377\377\3\244\271\265\377" \
- "\223\254\247\377\316\331\327\377\332\333\343\342\377\3\233\253\250\377" \
- "Slg\377p\205\201\377\222\333\343\342\377\3\213\235\232\377Slg\377\214" \
- "\235\232\377\330\333\343\342\377\10\326\337\336\377\225\256\251\377\231" \
- "\261\254\377\372\373\373\377\354\360\357\377\301\317\315\377\325\337" \
- "\335\377\373\374\374\377\203\377\377\377\377\3\266\307\303\377\223\254" \
- "\247\377\303\321\317\377\211\333\343\342\377\6\331\340\337\377\223\254" \
- "\247\377\332\342\341\377\377\377\377\377\251\275\271\377\255\300\275" \
- "\377\212\333\343\342\377\3\244\271\265\377\223\254\247\377\346\353\352" \
- "\377\203\377\377\377\377\7\356\362\362\377\303\321\316\377\322\334\332" \
- "\377\372\373\373\377\322\334\332\377\223\254\247\377\260\302\277\377" \
- "\332\333\343\342\377\3\233\253\250\377Slg\377p\205\201\377\221\333\343" \
- "\342\377\4\314\325\324\377_wr\377Slg\377\235\254\252\377\306\333\343" \
- "\342\377\1\203\240\232\377\205r\223\214\377\1w\227\221\377\213\253\276" \
- "\273\377\16\240\265\262\377\223\254\247\377\302\320\315\377\266\307\304" \
- "\377\223\254\247\377\233\262\256\377\223\254\247\377\233\262\255\377" \
- "\346\353\352\377\377\377\377\377\363\366\365\377\224\255\250\377\225" \
- "\256\251\377\252\275\272\377\211\253\276\273\377\6\252\275\272\377\223" \
- "\254\247\377\332\342\341\377\377\377\377\377\250\274\270\377\233\262" \
- "\256\377\212\253\276\273\377\3\242\267\264\377\223\254\247\377\270\310" \
- "\305\377\202\377\377\377\377\11\275\315\312\377\223\254\247\377\232\262" \
- "\255\377\224\255\250\377\231\261\254\377\332\344\341\377\230\260\253" \
- "\377\224\254\250\377\251\275\271\377\212\253\276\273\377\1\227\257\253" \
- "\377\205r\223\214\377\2s\224\215\377\261\303\300\377\300\333\343\342" \
- "\377\1\267\304\302\377\206\211\234\230\377\3p\205\201\377Slg\377^vq\377" \
- "\216\211\234\230\377\4\206\231\225\377\177\223\217\377r\207\203\377T" \
- "mh\377\202Slg\377\1\257\274\272\377\306\333\343\342\377\1|\233\224\377" \
- "\221o\221\212\377\15\215\250\242\377\223\254\247\377\335\345\343\377" \
- "\223\254\247\377\317\332\330\377\375\375\375\377\360\363\363\377\243" \
- "\270\264\377\265\306\303\377\377\377\377\377\310\325\322\377\223\254" \
- "\247\377\200\236\227\377\212o\221\212\377\6p\221\212\377\223\254\247" \
- "\377\332\342\341\377\377\377\377\377\247\273\267\377\205\242\234\377" \
- "\213o\221\212\377\15\217\251\244\377\224\255\250\377\365\367\367\377" \
- "\361\364\364\377\224\255\250\377\306\323\321\377\374\375\375\377\363" \
- "\366\365\377\252\276\272\377\255\300\274\377\300\317\314\377\223\254" \
- "\247\377~\234\226\377\221o\221\212\377\1\256\301\276\377\300\333\343" \
- "\342\377\1\237\256\253\377\234Slg\377\2]up\377\321\333\331\377\306\333" \
- "\343\342\377\1|\233\224\377\220o\221\212\377\6y\230\222\377\223\254\247" \
- "\377\261\303\277\377\277\316\313\377\235\264\257\377\376\376\376\377" \
- "\202\377\377\377\377\6\317\332\330\377\224\255\250\377\362\366\365\377" \
- "\234\263\257\377\222\253\246\377r\223\214\377\212o\221\212\377\6p\221" \
- "\212\377\223\254\247\377\332\342\341\377\377\377\377\377\247\273\267" \
- "\377\205\242\234\377\213o\221\212\377\6\201\236\230\377\223\254\247\377" \
- "\312\326\323\377\310\324\322\377\227\257\252\377\372\373\373\377\202" \
- "\377\377\377\377\5\331\342\340\377\223\254\247\377\337\346\345\377\223" \
- "\254\247\377\215\247\242\377\221o\221\212\377\1\256\301\276\377\300\333" \
- "\343\342\377\1\237\256\253\377\234Slg\377\1\246\265\262\377\307\333\343" \
- "\342\377\1|\233\224\377\220o\221\212\377\6\210\244\236\377\223\254\247" \
- "\377\336\346\344\377\320\333\330\377\225\256\251\377\365\367\367\377" \
- "\202\377\377\377\377\5\275\315\312\377\236\264\260\377\327\341\337\377" \
- "\223\254\247\377\206\242\234\377\213o\221\212\377\6p\221\212\377\223" \
- "\254\247\377\332\342\341\377\377\377\377\377\247\273\267\377\205\242" \
- "\234\377\213o\221\212\377\6r\223\214\377\222\253\246\377\236\264\260" \
- "\377\327\340\336\377\223\254\247\377\354\360\357\377\202\377\377\377" \
- "\377\6\310\324\322\377\231\260\253\377\371\373\373\377\257\301\276\377" \
- "\223\254\247\377x\230\221\377\220o\221\212\377\1\256\301\276\377\300" \
- "\333\343\342\377\1\237\256\253\377\232Slg\377\2q\207\202\377\267\304" \
- "\302\377\310\333\343\342\377\1|\233\224\377\217o\221\212\377\16s\224" \
- "\215\377\222\253\246\377\240\266\262\377\376\376\376\377\371\372\372" \
- "\377\230\260\253\377\250\274\270\377\326\337\336\377\301\317\315\377" \
- "\226\256\251\377\310\325\322\377\253\277\273\377\223\254\247\377w\227" \
- "\220\377\213o\221\212\377\6p\221\212\377\223\254\247\377\332\342\341" \
- "\377\377\377\377\377\247\273\267\377\205\242\234\377\214o\221\212\377" \
- "\15\206\242\235\377\223\254\247\377\330\341\340\377\234\263\256\377\245" \
- "\272\265\377\324\336\334\377\305\322\317\377\230\260\253\377\301\317" \
- "\314\377\377\377\377\377\334\344\343\377\223\254\247\377\207\243\236" \
- "\377\220o\221\212\377\1\256\301\276\377\300\333\343\342\377\1\306\321" \
- "\317\377\206\254\271\267\377\3\202\225\221\377Slg\377f|x\377\216\254" \
- "\271\267\377\3\263\300\276\377\304\317\315\377\325\335\334\377\312\333" \
- "\343\342\377\1\255\300\274\377\205\244\271\265\377\1\251\275\271\377" \
- "\211\333\343\342\377\3\263\305\301\377\223\254\247\377\315\330\326\377" \
- "\202\377\377\377\377\10\341\350\346\377\257\301\275\377\223\254\247\377" \
- "\234\263\256\377\306\323\321\377\345\352\351\377\223\254\247\377\241" \
- "\266\262\377\214\333\343\342\377\6\331\340\337\377\223\254\247\377\332" \
- "\342\341\377\377\377\377\377\251\275\271\377\255\300\275\377\214\333" \
- "\343\342\377\16\311\325\323\377\223\254\247\377\256\300\275\377\344\352" \
- "\351\377\262\304\301\377\223\254\247\377\231\261\254\377\303\321\316" \
- "\377\365\367\367\377\377\377\377\377\375\376\375\377\237\265\260\377" \
- "\223\254\247\377\322\334\333\377\210\333\343\342\377\1\310\324\322\377" \
- "\206\244\271\265\377\1\304\322\320\377\307\333\343\342\377\3\233\253" \
- "\250\377Slg\377p\205\201\377\352\333\343\342\377\4\330\341\337\377\230" \
- "\257\253\377\226\256\251\377\366\370\370\377\204\377\377\377\377\6\361" \
- "\364\363\377\374\375\375\377\377\377\377\377\275\314\311\377\223\254" \
- "\247\377\277\315\313\377\214\333\343\342\377\6\331\340\337\377\223\254" \
- "\247\377\332\342\341\377\377\377\377\377\251\275\271\377\255\300\275" \
- "\377\215\333\343\342\377\6\237\265\261\377\223\254\247\377\354\361\360" \
- "\377\377\377\377\377\362\365\365\377\372\373\373\377\204\377\377\377" \
- "\377\3\313\327\324\377\223\254\247\377\265\306\302\377\327\333\343\342" \
- "\377\3\233\253\250\377Slg\377p\205\201\377\352\333\343\342\377\3\277" \
- "\315\313\377\223\254\247\377\274\313\310\377\207\377\377\377\377\4\370" \
- "\371\371\377\227\257\252\377\230\257\253\377\330\341\337\377\214\333" \
- "\343\342\377\6\331\340\337\377\223\254\247\377\332\342\341\377\377\377" \
- "\377\377\251\275\271\377\255\300\275\377\215\333\343\342\377\3\275\314" \
- "\312\377\223\254\247\377\277\316\313\377\207\377\377\377\377\4\366\370" \
- "\367\377\225\256\251\377\230\260\253\377\331\341\340\377\326\333\343" \
- "\342\377\3\253\271\266\377t\211\205\377\213\235\231\377\352\333\343\342" \
- "\377\3\241\266\262\377\223\254\247\377\351\356\355\377\207\377\377\377" \
- "\377\3\317\332\330\377\223\254\247\377\263\305\301\377\215\333\343\342" \
- "\377\6\331\340\337\377\223\254\247\377\332\342\341\377\377\377\377\377" \
- "\251\275\271\377\255\300\275\377\215\333\343\342\377\4\327\340\337\377" \
- "\227\257\252\377\227\257\253\377\371\372\372\377\207\377\377\377\377" \
- "\3\271\311\306\377\223\254\247\377\300\316\314\377\377\333\343\342\377" \
- "\303\333\343\342\377\3\312\326\324\377\223\254\247\377\252\275\271\377" \
- "\207\377\377\377\377\4\376\376\376\377\242\267\263\377\223\254\247\377" \
- "\321\333\332\377\215\333\343\342\377\6\331\340\337\377\223\254\247\377" \
- "\332\342\341\377\377\377\377\377\251\275\271\377\255\300\275\377\216" \
- "\333\343\342\377\3\262\303\300\377\223\254\247\377\320\333\331\377\207" \
- "\377\377\377\377\3\347\354\353\377\223\254\247\377\242\267\263\377\377" \
- "\333\343\342\377\303\333\343\342\377\3\254\277\274\377\223\254\247\377" \
- "\330\341\337\377\207\377\377\377\377\3\340\347\346\377\223\254\247\377" \
- "\247\273\270\377\216\333\343\342\377\6\331\340\337\377\223\254\247\377" \
- "\330\341\337\377\377\377\377\377\250\274\270\377\255\300\275\377\216" \
- "\333\343\342\377\3\320\332\331\377\223\254\247\377\243\271\264\377\210" \
- "\377\377\377\377\3\250\274\270\377\223\254\247\377\314\327\325\377\377" \
- "\333\343\342\377\301\333\343\342\377\4\324\336\334\377\224\255\250\377" \
- "\233\262\256\377\374\374\374\377\207\377\377\377\377\3\263\304\301\377" \
- "\223\254\247\377\306\323\321\377\217\333\343\342\377\5\237\265\261\377" \
- "\252\275\271\377\322\334\332\377\223\254\247\377\275\314\311\377\217" \
- "\333\343\342\377\3\246\273\267\377\223\254\247\377\342\351\347\377\207" \
- "\377\377\377\377\3\325\337\335\377\223\254\247\377\256\300\275\377\343" \
- "\333\343\342\377\6\267\303\301\377\223\244\240\377|\220\214\377\213\235" \
- "\231\377\250\267\264\377\311\323\322\377\327\333\343\342\377\3\270\310" \
- "\305\377\223\254\247\377\306\323\321\377\207\377\377\377\377\4\361\364" \
- "\363\377\223\254\247\377\234\263\257\377\332\342\341\377\217\333\343" \
- "\342\377\1\307\323\321\377\202\223\254\247\377\2\240\265\261\377\332" \
- "\342\341\377\217\333\343\342\377\3\304\322\317\377\223\254\247\377\264" \
- "\306\302\377\207\377\377\377\377\4\373\374\374\377\232\262\255\377\225" \
- "\255\250\377\325\336\335\377\325\333\343\342\377\1\302\315\313\377\204" \
- "\222\243\240\377\1\253\271\267\377\205\333\343\342\377\2\323\334\333" \
- "\377\200\223\220\377\205Slg\377\2Uni\377\247\266\263\377\325\333\343" \
- "\342\377\4\332\342\341\377\233\262\255\377\224\254\247\377\362\365\364" \
- "\377\207\377\377\377\377\3\304\322\317\377\223\254\247\377\272\312\307" \
- "\377\221\333\343\342\377\3\327\337\336\377\326\337\335\377\331\340\337" \
- "\377\220\333\343\342\377\4\332\342\341\377\233\262\256\377\224\254\247" \
- "\377\362\365\364\377\207\377\377\377\377\3\304\322\317\377\223\254\247" \
- "\377\271\311\306\377\325\333\343\342\377\1\211\233\230\377\204Slg\377" \
- "\1\201\224\220\377\205\333\343\342\377\1\200\223\220\377\210Slg\377\1" \
- "\227\247\244\377\324\333\343\342\377\3\303\321\317\377\223\254\247\377" \
- "\265\306\302\377\207\377\377\377\377\4\373\374\374\377\232\261\255\377" \
- "\225\256\251\377\326\337\336\377\245\333\343\342\377\3\271\311\306\377" \
- "\223\254\247\377\306\323\320\377\207\377\377\377\377\4\361\364\363\377" \
- "\223\254\247\377\234\262\256\377\332\342\341\377\323\333\343\342\377" \
- "\2\330\341\340\377]up\377\203Slg\377\2[sn\377\227\247\244\377\204\333" \
- "\343\342\377\1\247\266\263\377\212Slg\377\1\305\317\316\377\323\333\343" \
- "\342\377\3\245\272\266\377\223\254\247\377\342\351\347\377\207\377\377" \
- "\377\377\3\325\337\335\377\223\254\247\377\256\301\275\377\246\333\343" \
- "\342\377\4\325\336\335\377\225\255\250\377\233\262\256\377\374\374\374" \
- "\377\207\377\377\377\377\3\263\304\301\377\223\254\247\377\305\322\320" \
- "\377\323\333\343\342\377\1\265\302\300\377\202Slg\377\3]up\377\263\300" \
- "\275\377\332\342\341\377\205\333\343\342\377\1i\177{\377\203Slg\377\5" \
- "Yrm\377\233\253\250\377\266\302\300\377\246\264\262\377x\214\210\377" \
- "\202Slg\377\1\204\227\223\377\322\333\343\342\377\3\317\332\330\377\223" \
- "\254\247\377\243\270\264\377\210\377\377\377\377\3\250\274\270\377\223" \
- "\254\247\377\315\330\326\377\247\333\343\342\377\3\255\300\274\377\223" \
- "\254\247\377\330\341\337\377\207\377\377\377\377\3\340\347\346\377\223" \
- "\254\247\377\247\273\267\377\323\333\343\342\377\4\212\234\231\377Sl" \
- "g\377Voj\377\307\322\320\377\206\333\343\342\377\1\270\305\303\377\203" \
- "Slg\377\2Vni\377\303\316\314\377\203\333\343\342\377\5\331\342\341\377" \
- "\210\233\227\377Slg\377Umh\377\315\327\325\377\321\333\343\342\377\3" \
- "\261\303\277\377\223\254\247\377\321\333\331\377\207\377\377\377\377" \
- "\3\347\354\353\377\223\254\247\377\243\270\264\377\250\333\343\342\377" \
- "\3\314\327\325\377\223\254\247\377\252\275\271\377\207\377\377\377\377" \
- "\4\376\376\376\377\242\267\263\377\223\254\247\377\320\333\331\377\322" \
- "\333\343\342\377\3u\211\205\377Slg\377\221\242\237\377\207\333\343\342" \
- "\377\1\204\227\223\377\203Slg\377\1\221\243\237\377\205\333\343\342\377" \
- "\4\317\331\327\377Voj\377Slg\377\266\303\301\377\320\333\343\342\377" \
- "\4\327\340\336\377\226\256\252\377\227\257\253\377\371\372\372\377\207" \
- "\377\377\377\377\3\271\311\306\377\223\254\247\377\301\317\315\377\251" \
- "\333\343\342\377\3\241\267\263\377\223\254\247\377\351\356\355\377\207" \
- "\377\377\377\377\3\317\332\330\377\223\254\247\377\262\304\300\377\322" \
- "\333\343\342\377\3dzv\377Slg\377\274\307\306\377\206\333\343\342\377" \
- "\2\331\341\340\377\\to\377\202Slg\377\2Tmh\377\315\327\325\377\206\333" \
- "\343\342\377\3z\216\212\377Slg\377\246\264\262\377\320\333\343\342\377" \
- "\3\274\313\311\377\223\254\247\377\277\316\313\377\207\377\377\377\377" \
- "\4\365\367\367\377\225\255\251\377\231\260\254\377\331\341\340\377\251" \
- "\333\343\342\377\3\300\316\314\377\223\254\247\377\273\313\310\377\207" \
- "\377\377\377\377\1\370\371\371\377\202\227\257\252\377\1\327\340\337" \
- "\377\320\333\343\342\377\4\331\341\340\377Umh\377Slg\377\317\330\327" \
- "\377\206\333\343\342\377\1\271\306\304\377\203Slg\377\1z\216\212\377" \
- "\207\333\343\342\377\3\213\235\231\377Slg\377\225\246\243\377\320\333" \
- "\343\342\377\3\236\265\260\377\223\254\247\377\355\361\360\377\207\377" \
- "\377\377\377\3\313\327\324\377\223\254\247\377\266\306\303\377\252\333" \
- "\343\342\377\4\331\341\340\377\230\260\253\377\226\256\251\377\366\370" \
- "\370\377\207\377\377\377\377\3\275\314\311\377\223\254\247\377\276\315" \
- "\312\377\320\333\343\342\377\1\324\334\333\377\202Slg\377\1\325\336\335" \
- "\377\206\333\343\342\377\1\216\240\235\377\203Slg\377\1\255\272\270\377" \
- "\207\333\343\342\377\3\227\247\244\377Slg\377\210\233\227\377\317\333" \
- "\343\342\377\3\310\324\322\377\223\254\247\377\256\301\275\377\207\377" \
- "\377\377\377\4\375\376\375\377\237\265\260\377\224\254\247\377\323\334" \
- "\333\377\253\333\343\342\377\3\264\305\302\377\223\254\247\377\315\330" \
- "\326\377\207\377\377\377\377\3\353\357\356\377\223\254\247\377\237\265" \
- "\261\377\321\333\343\342\377\3\\to\377Slg\377\310\322\321\377\205\333" \
- "\343\342\377\2\330\341\340\377_vr\377\202Slg\377\2Xpk\377\325\336\335" \
- "\377\207\333\343\342\377\3\214\235\232\377Slg\377\216\237\234\377\317" \
- "\333\343\342\377\3\252\275\271\377\223\254\247\377\333\343\342\377\207" \
- "\377\377\377\377\3\334\344\343\377\223\254\247\377\252\275\272\377\254" \
- "\333\343\342\377\4\322\334\332\377\223\254\247\377\240\266\262\377\376" \
- "\376\376\377\207\377\377\377\377\3\254\277\273\377\223\254\247\377\311" \
- "\325\323\377\320\333\343\342\377\3n\203\177\377Slg\377\257\274\272\377" \
- "\205\333\343\342\377\1\261\277\274\377\203Slg\377\1\200\223\220\377\210" \
- "\333\343\342\377\3{\217\213\377Slg\377\227\247\244\377\316\333\343\342" \
- "\377\4\323\334\333\377\223\254\247\377\236\265\260\377\375\375\375\377" \
- "\207\377\377\377\377\3\257\301\276\377\223\254\247\377\310\324\322\377" \
- "\255\333\343\342\377\3\251\274\271\377\223\254\247\377\336\346\344\377" \
- "\207\377\377\377\377\3\331\342\340\377\223\254\247\377\253\276\273\377" \
- "\320\333\343\342\377\3\201\224\220\377Slg\377v\212\206\377\204\333\343" \
- "\342\377\2\330\340\337\377i\200{\377\203Slg\377\1\260\276\273\377\207" \
- "\333\343\342\377\4\325\335\334\377^uq\377Slg\377\253\271\267\377\316" \
- "\333\343\342\377\3\265\306\303\377\223\254\247\377\312\326\324\377\207" \
- "\377\377\377\377\3\356\361\361\377\223\254\247\377\236\265\260\377\256" \
- "\333\343\342\377\3\307\323\321\377\223\254\247\377\261\303\277\377\207" \
- "\377\377\377\377\4\374\375\375\377\235\263\257\377\224\255\250\377\323" \
- "\335\334\377\317\333\343\342\377\1\263\300\275\377\202Slg\377\5\206\231" \
- "\225\377\314\326\324\377\333\343\342\377\315\327\325\377\177\222\217" \
- "\377\203Slg\377\2czu\377\331\341\340\377\207\333\343\342\377\1\234\253" \
- "\251\377\202Slg\377\1\303\316\314\377\315\333\343\342\377\4\331\341\340" \
- "\377\231\260\254\377\225\255\251\377\365\367\367\377\207\377\377\377" \
- "\377\3\300\317\314\377\223\254\247\377\275\314\311\377\256\333\343\342" \
- "\377\4\332\342\341\377\235\264\257\377\223\254\247\377\357\362\362\377" \
- "\207\377\377\377\377\3\310\325\322\377\223\254\247\377\267\307\304\377" \
- "\320\333\343\342\377\1m\202~\377\203Slg\377\1Xql\377\205Slg\377\1\235" \
- "\254\252\377\207\333\343\342\377\4\241\261\256\377Voj\377Slg\377czu\377" \
- "\316\333\343\342\377\3\301\317\314\377\223\254\247\377\271\311\306\377" \
- "\207\377\377\377\377\4\371\373\372\377\230\260\253\377\226\256\252\377" \
- "\327\340\336\377\257\333\343\342\377\3\273\313\310\377\223\254\247\377" \
- "\302\320\315\377\207\377\377\377\377\4\363\366\366\377\224\255\250\377" \
- "\232\261\254\377\331\341\340\377\317\333\343\342\377\2\265\302\300\377" \
- "Voj\377\207Slg\377\2o\205\201\377\330\340\337\377\204\333\343\342\377" \
- "\3\274\307\306\377\210\233\227\377k\201}\377\203Slg\377\1\221\243\237" \
- "\377\316\333\343\342\377\3\243\270\264\377\223\254\247\377\346\354\352" \
- "\377\207\377\377\377\377\3\322\334\332\377\223\254\247\377\261\303\277" \
- "\377\260\333\343\342\377\4\326\337\336\377\226\256\251\377\231\261\254" \
- "\377\372\373\373\377\207\377\377\377\377\3\267\307\304\377\223\254\247" \
- "\377\302\320\316\377\320\333\343\342\377\2\274\310\306\377_wr\377\205" \
- "Slg\377\2j\200|\377\311\324\322\377\205\333\343\342\377\1\226\247\244" \
- "\377\205Slg\377\1\300\313\311\377\315\333\343\342\377\3\314\330\326\377" \
- "\223\254\247\377\247\273\267\377\210\377\377\377\377\3\244\271\265\377" \
- "\223\254\247\377\317\332\330\377\261\333\343\342\377\3\260\302\276\377" \
- "\223\254\247\377\324\336\334\377\207\377\377\377\377\3\344\352\351\377" \
- "\223\254\247\377\244\271\265\377\321\333\343\342\377\7\316\330\326\377" \
- "\250\266\264\377\214\236\233\377v\213\207\377\206\230\225\377\244\263" \
- "\260\377\330\341\340\377\206\333\343\342\377\1\243\262\257\377\204l\201" \
- "}\377\1x\215\211\377\316\333\343\342\377\3\256\301\275\377\223\254\247" \
- "\377\325\336\334\377\207\377\377\377\377\3\343\351\350\377\223\254\247" \
- "\377\245\272\266\377\262\333\343\342\377\3\316\331\327\377\223\254\247" \
- "\377\246\273\267\377\210\377\377\377\377\3\245\272\266\377\223\254\247" \
- "\377\316\331\327\377\377\333\343\342\377\261\333\343\342\377\4\325\337" \
- "\335\377\225\255\251\377\232\261\254\377\373\374\373\377\207\377\377" \
- "\377\377\3\266\307\303\377\223\254\247\377\303\321\317\377\263\333\343" \
- "\342\377\3\244\271\265\377\223\254\247\377\345\353\352\377\207\377\377" \
- "\377\377\3\322\335\333\377\223\254\247\377\260\302\276\377\377\333\343" \
- "\342\377\261\333\343\342\377\3\272\311\307\377\223\254\247\377\303\321" \
- "\316\377\207\377\377\377\377\4\363\366\365\377\224\255\250\377\232\262" \
- "\255\377\332\342\341\377\263\333\343\342\377\3\302\320\316\377\223\254" \
- "\247\377\270\310\305\377\207\377\377\377\377\4\372\373\373\377\231\260" \
- "\254\377\226\256\251\377\326\337\336\377\377\333\343\342\377\257\333" \
- "\343\342\377\4\332\342\341\377\234\263\256\377\223\254\247\377\360\363" \
- "\362\377\207\377\377\377\377\3\307\324\321\377\223\254\247\377\270\310" \
- "\305\377\264\333\343\342\377\4\331\341\340\377\232\261\254\377\225\255" \
- "\250\377\364\367\366\377\207\377\377\377\377\3\301\317\314\377\223\254" \
- "\247\377\273\313\310\377\314\333\343\342\377\3\277\312\310\377\237\256" \
- "\253\377\254\272\270\377\337\333\343\342\377\3\305\322\320\377\223\254" \
- "\247\377\262\304\300\377\207\377\377\377\377\4\374\375\374\377\234\263" \
- "\256\377\224\255\250\377\324\336\334\377\265\333\343\342\377\3\266\307" \
- "\304\377\223\254\247\377\311\325\323\377\207\377\377\377\377\4\356\362" \
- "\361\377\223\254\247\377\235\264\257\377\332\342\341\377\313\333\343" \
- "\342\377\3\233\253\250\377Slg\377p\205\201\377\337\333\343\342\377\3" \
- "\247\273\267\377\223\254\247\377\337\346\345\377\207\377\377\377\377" \
- "\3\330\341\337\377\223\254\247\377\254\277\274\377\266\333\343\342\377" \
- "\4\323\335\334\377\224\255\250\377\235\264\257\377\375\375\375\377\207" \
- "\377\377\377\377\3\260\302\276\377\223\254\247\377\307\323\321\377\313" \
- "\333\343\342\377\3\233\253\250\377Slg\377p\205\201\377\336\333\343\342" \
- "\377\4\321\333\331\377\223\254\247\377\241\266\262\377\376\376\376\377" \
- "\207\377\377\377\377\3\253\276\273\377\223\254\247\377\312\326\324\377" \
- "\267\333\343\342\377\3\253\276\272\377\223\254\247\377\333\343\341\377" \
- "\207\377\377\377\377\3\335\345\343\377\223\254\247\377\251\274\271\377" \
- "\313\333\343\342\377\3\233\253\250\377Slg\377p\205\201\377\336\333\343" \
- "\342\377\3\263\304\301\377\223\254\247\377\315\331\326\377\207\377\377" \
- "\377\377\3\351\356\355\377\223\254\247\377\241\266\262\377\270\333\343" \
- "\342\377\3\311\325\323\377\223\254\247\377\254\277\273\377\207\377\377" \
- "\377\377\4\375\376\375\377\240\265\261\377\223\254\247\377\321\334\332" \
- "\377\312\333\343\342\377\3\233\253\250\377Slg\377[sn\377\223x\215\211" \
- "\377\5z\216\212\377\202\225\221\377\214\236\233\377\246\265\262\377\310" \
- "\323\321\377\305\333\343\342\377\4\330\340\337\377\227\257\252\377\226" \
- "\256\252\377\367\371\370\377\207\377\377\377\377\3\274\313\310\377\223" \
- "\254\247\377\277\315\313\377\271\333\343\342\377\3\237\265\261\377\223" \
- "\254\247\377\353\360\357\377\207\377\377\377\377\3\314\327\325\377\223" \
- "\254\247\377\264\305\302\377\312\333\343\342\377\1\233\253\250\377\232" \
- "Slg\377\2x\214\210\377\275\311\307\377\303\333\343\342\377\3\276\315" \
- "\312\377\223\254\247\377\274\313\310\377\207\377\377\377\377\4\367\371" \
- "\370\377\226\256\251\377\230\257\253\377\330\341\337\377\271\333\343" \
- "\342\377\3\275\314\312\377\223\254\247\377\276\315\312\377\207\377\377" \
- "\377\377\4\366\370\370\377\225\256\251\377\230\260\253\377\330\341\340" \
- "\377\311\333\343\342\377\1\233\253\250\377\233Slg\377\2Tmh\377\237\256" \
- "\253\377\302\333\343\342\377\3\240\266\262\377\223\254\247\377\351\356" \
- "\355\377\207\377\377\377\377\3\315\330\326\377\223\254\247\377\263\305" \
- "\301\377\272\333\343\342\377\1\327\340\337\377\202\227\257\252\377\1" \
- "\370\371\371\377\207\377\377\377\377\3\272\312\307\377\223\254\247\377" \
- "\300\316\314\377\311\333\343\342\377\1\233\253\250\377\235Slg\377\1\243" \
- "\262\257\377\300\333\343\342\377\3\312\326\324\377\223\254\247\377\252" \
- "\276\272\377\207\377\377\377\377\4\376\376\376\377\240\266\262\377\223" \
- "\254\247\377\321\333\332\377\273\333\343\342\377\3\262\303\300\377\223" \
- "\254\247\377\317\332\330\377\207\377\377\377\377\3\350\355\354\377\223" \
- "\254\247\377\241\267\263\377\311\333\343\342\377\4\321\332\331\377\305" \
- "\320\316\377\305\317\316\377\207\231\226\377\202Slg\377\5j\200|\377\224" \
- "\245\242\377\244\263\260\377\264\300\276\377\302\315\313\377\202\305" \
- "\320\316\377\16\274\307\306\377\254\272\270\377\235\255\252\377\207\232" \
- "\226\377Xql\377Slg\377^vq\377\257\274\272\377\305\320\316\377\304\316" \
- "\315\377\266\303\301\377\247\265\263\377\227\250\245\377s\210\203\377" \
- "\203Slg\377\2Vni\377\304\317\315\377\277\333\343\342\377\3\254\277\273" \
- "\377\223\254\247\377\330\341\337\377\207\377\377\377\377\3\336\346\344" \
- "\377\223\254\247\377\247\273\270\377\274\333\343\342\377\4\320\332\331" \
- "\377\223\254\247\377\242\270\263\377\376\376\376\377\207\377\377\377" \
- "\377\3\251\275\271\377\223\254\247\377\313\327\325\377\311\333\343\342" \
- "\377\5\327\340\337\377y\215\211\377Slg\377q\207\202\377\266\302\300\377" \
- "\213\333\343\342\377\5\321\333\331\377\233\253\250\377Yrm\377Wpk\377" \
- "\255\273\271\377\205\333\343\342\377\2\271\305\303\377r\207\203\377\202" \
- "Slg\377\1\203\226\222\377\276\333\343\342\377\4\324\336\334\377\224\255" \
- "\250\377\234\263\256\377\374\375\374\377\207\377\377\377\377\3\261\303" \
- "\277\377\223\254\247\377\306\323\321\377\275\333\343\342\377\3\246\273" \
- "\267\377\223\254\247\377\340\347\346\377\207\377\377\377\377\3\326\340" \
- "\336\377\223\254\247\377\255\300\274\377\311\333\343\342\377\4\211\234" \
- "\230\377Slg\377n\204\200\377\325\336\335\377\216\333\343\342\377\4\263" \
- "\300\275\377Tlg\377Wpk\377\300\314\312\377\205\333\343\342\377\5\325" \
- "\335\334\377f}x\377Slg\377Umh\377\324\334\333\377\275\333\343\342\377" \
- "\3\267\310\305\377\223\254\247\377\307\324\321\377\207\377\377\377\377" \
- "\4\357\363\362\377\223\254\247\377\234\263\257\377\332\342\341\377\275" \
- "\333\343\342\377\3\304\322\317\377\223\254\247\377\263\304\301\377\207" \
- "\377\377\377\377\4\373\374\374\377\233\262\255\377\225\255\250\377\325" \
- "\336\335\377\307\333\343\342\377\4\275\311\307\377Slg\377\\so\377\316" \
- "\327\326\377\220\333\343\342\377\3\227\250\245\377Slg\377p\206\202\377" \
- "\206\333\343\342\377\4\276\312\310\377Tlg\377Slg\377\266\302\300\377" \
- "\274\333\343\342\377\4\331\342\341\377\232\261\255\377\224\254\247\377" \
- "\362\365\364\377\207\377\377\377\377\3\302\320\315\377\223\254\247\377" \
- "\272\312\307\377\276\333\343\342\377\4\332\342\341\377\233\262\256\377" \
- "\223\254\247\377\361\364\363\377\207\377\377\377\377\3\305\322\320\377" \
- "\223\254\247\377\271\311\306\377\307\333\343\342\377\3\211\233\230\377" \
- "Slg\377|\217\214\377\221\333\343\342\377\1\304\317\315\377\202Slg\377" \
- "\1\305\317\316\377\206\333\343\342\377\3f}x\377Slg\377\235\254\252\377" \
- "\274\333\343\342\377\3\303\320\316\377\223\254\247\377\265\306\302\377" \
- "\207\377\377\377\377\4\372\373\373\377\231\261\254\377\225\255\251\377" \
- "\326\337\336\377\277\333\343\342\377\3\271\311\306\377\223\254\247\377" \
- "\304\322\317\377\207\377\377\377\377\4\361\364\363\377\223\254\247\377" \
- "\233\262\256\377\332\342\341\377\306\333\343\342\377\3e{w\377Slg\377" \
- "\227\250\245\377\221\333\343\342\377\4\331\342\341\377Xql\377Slg\377" \
- "\241\261\256\377\206\333\343\342\377\3}\221\215\377Slg\377\221\242\237" \
- "\377\274\333\343\342\377\3\245\271\265\377\223\254\247\377\343\351\350" \
- "\377\207\377\377\377\377\3\324\336\334\377\223\254\247\377\256\301\275" \
- "\377\300\333\343\342\377\4\325\336\335\377\225\255\250\377\232\262\255" \
- "\377\373\374\374\377\207\377\377\377\377\3\264\305\301\377\223\254\247" \
- "\377\304\321\317\377\305\333\343\342\377\4\332\342\341\377Vni\377Slg" \
- "\377\243\262\257\377\222\333\343\342\377\3czu\377Slg\377\223\244\241" \
- "\377\206\333\343\342\377\3\224\244\241\377Slg\377\210\233\227\377\273" \
- "\333\343\342\377\3\316\331\330\377\223\254\247\377\244\271\264\377\210" \
- "\377\377\377\377\3\246\273\267\377\223\254\247\377\315\330\326\377\301" \
- "\333\343\342\377\4\255\300\274\377\222\253\246\377\315\330\326\377\376" \
- "\376\376\377\206\377\377\377\377\3\341\350\346\377\223\254\247\377\246" \
- "\272\266\377\305\333\343\342\377\1\322\333\332\377\202Slg\377\1\205\230" \
- "\224\377\221\333\343\342\377\1\316\327\326\377\202Slg\377\1\211\234\230" \
- "\377\206\333\343\342\377\3\220\242\236\377Slg\377\222\243\240\377\273" \
- "\333\343\342\377\3\260\302\277\377\223\254\247\377\321\334\332\377\207" \
- "\377\377\377\377\3\345\353\352\377\223\254\247\377\243\270\264\377\302" \
- "\333\343\342\377\16\314\327\325\377\223\254\246\377\223\254\247\377\226" \
- "\256\251\377\244\271\265\377\264\305\302\377\303\321\316\377\323\335" \
- "\333\377\342\351\350\377\361\365\364\377\375\375\375\377\242\270\263" \
- "\377\223\254\247\377\317\332\330\377\304\333\343\342\377\4\332\342\341" \
- "\377Vni\377Slg\377f|x\377\221\333\343\342\377\1\256\274\271\377\202S" \
- "lg\377\1\226\246\243\377\206\333\343\342\377\3\202\225\221\377Slg\377" \
- "\237\257\254\377\272\333\343\342\377\4\327\337\336\377\226\256\251\377" \
- "\230\260\253\377\371\372\372\377\207\377\377\377\377\3\270\310\305\377" \
- "\223\254\247\377\301\317\315\377\303\333\343\342\377\15\232\262\255\377" \
- "\223\254\246\377\325\336\335\377\331\342\340\377\312\326\324\377\273" \
- "\313\310\377\254\277\273\377\235\263\257\377\223\254\247\377\226\256" \
- "\251\377\234\263\256\377\222\254\246\377\256\300\274\377\305\333\343" \
- "\342\377\1i\200{\377\202Slg\377\1\224\244\241\377\217\333\343\342\377" \
- "\2\313\325\323\377czu\377\202Slg\377\1\253\271\266\377\205\333\343\342" \
- "\377\4\331\341\340\377czu\377Slg\377\254\272\270\377\272\333\343\342" \
- "\377\3\274\313\310\377\223\254\247\377\277\316\313\377\207\377\377\377" \
- "\377\4\364\367\366\377\225\255\250\377\231\260\254\377\331\341\340\377" \
- "\303\333\343\342\377\3\275\313\311\377\222\254\246\377\257\301\276\377" \
- "\205\377\377\377\377\3\372\373\373\377\353\360\357\377\327\340\335\377" \
- "\202\224\255\250\377\3\327\340\337\377\331\342\341\377\322\334\333\377" \
- "\302\333\343\342\377\1\226\247\244\377\203Slg\377\2\231\252\247\377\330" \
- "\341\340\377\214\333\343\342\377\2\310\323\321\377f|x\377\202Slg\377" \
- "\2Voj\377\323\334\332\377\205\333\343\342\377\1\253\271\266\377\202S" \
- "lg\377\1\272\306\304\377\272\333\343\342\377\3\236\264\260\377\223\254" \
- "\247\377\355\361\360\377\207\377\377\377\377\3\311\325\323\377\223\254" \
- "\247\377\266\306\303\377\304\333\343\342\377\4\331\341\340\377\224\255" \
- "\250\377\224\254\247\377\366\370\367\377\207\377\377\377\377\5\263\305" \
- "\301\377\222\254\246\377\266\306\302\377\232\262\254\377\240\266\262" \
- "\377\302\333\343\342\377\2\314\325\324\377Xql\377\203Slg\377\4_wr\377" \
- "\221\243\237\377\304\316\315\377\330\341\340\377\206\333\343\342\377" \
- "\4\322\333\332\377\254\271\267\377w\214\210\377Tlg\377\203Slg\377\1\211" \
- "\233\230\377\205\333\343\342\377\5\263\300\276\377Xql\377Slg\377Xql\377" \
- "\326\336\335\377\271\333\343\342\377\3\310\324\322\377\223\254\247\377" \
- "\256\301\275\377\207\377\377\377\377\4\375\375\375\377\235\264\257\377" \
- "\223\254\247\377\323\334\333\377\305\333\343\342\377\3\256\300\276\377" \
- "\223\253\246\377\305\322\320\377\207\377\377\377\377\6\353\360\357\377" \
- "\222\254\247\377\231\261\255\377\241\267\262\377\223\254\247\377\312" \
- "\326\324\377\302\333\343\342\377\1\237\256\253\377\206Slg\377\7Tlg\377" \
- "^vq\377l\202~\377y\215\211\377s\210\203\377e|w\377Xpk\377\206Slg\377" \
- "\2_wr\377\321\333\331\377\203\333\343\342\377\2\255\272\270\377q\207" \
- "\202\377\203Slg\377\1~\222\216\377\272\333\343\342\377\3\251\275\271" \
- "\377\223\254\247\377\334\344\342\377\207\377\377\377\377\3\333\343\341" \
- "\377\223\254\247\377\252\275\271\377\306\333\343\342\377\4\322\334\332" \
- "\377\223\253\246\377\231\260\253\377\375\376\375\377\207\377\377\377" \
- "\377\5\242\267\263\377\222\253\246\377\265\305\302\377\223\254\247\377" \
- "\254\277\273\377\303\333\343\342\377\1\220\242\236\377\221Slg\377\2_" \
- "vr\377\304\316\315\377\204\333\343\342\377\1}\220\215\377\204Slg\377" \
- "\1\251\267\265\377\271\333\343\342\377\4\322\334\333\377\223\254\247" \
- "\377\236\265\260\377\375\376\375\377\207\377\377\377\377\3\255\300\274" \
- "\377\223\254\247\377\310\324\322\377\307\333\343\342\377\3\241\266\263" \
- "\377\223\253\247\377\332\342\341\377\203\377\377\377\377\2\371\372\372" \
- "\377\364\367\366\377\202\377\377\377\377\6\326\340\336\377\222\254\246" \
- "\377\243\270\263\377\230\260\253\377\225\255\250\377\324\336\334\377" \
- "\303\333\343\342\377\2\242\261\256\377Yql\377\216Slg\377\2s\210\204\377" \
- "\310\322\321\377\205\333\343\342\377\1\235\255\252\377\204\201\224\220" \
- "\377\1\321\333\331\377\271\333\343\342\377\3\265\306\302\377\223\254" \
- "\247\377\312\326\324\377\207\377\377\377\377\3\354\360\357\377\223\254" \
- "\247\377\236\265\260\377\310\333\343\342\377\3\306\322\320\377\222\253" \
- "\246\377\244\271\266\377\203\377\377\377\377\2\244\271\264\377\272\312" \
- "\307\377\202\377\377\377\377\6\374\375\375\377\227\257\252\377\223\254" \
- "\246\377\260\303\277\377\223\254\247\377\267\310\305\377\304\333\343" \
- "\342\377\3\313\325\323\377\212\234\231\377Yrm\377\212Slg\377\3n\203\177" \
- "\377\247\266\263\377\332\342\341\377\304\333\343\342\377\4\331\341\340" \
- "\377\230\260\253\377\225\255\251\377\365\367\367\377\207\377\377\377" \
- "\377\3\277\315\312\377\223\254\247\377\275\314\311\377\310\333\343\342" \
- "\377\4\332\342\341\377\227\257\253\377\223\253\246\377\356\361\361\377" \
- "\202\377\377\377\377\3\312\326\324\377\226\256\251\377\367\370\370\377" \
- "\202\377\377\377\377\6\300\316\314\377\223\253\246\377\226\256\250\377" \
- "\223\254\247\377\233\261\255\377\332\342\341\377\305\333\343\342\377" \
- "\13\324\335\334\377\261\277\274\377\224\244\241\377|\217\214\377r\207" \
- "\203\377j\200|\377n\203\177\377v\213\207\377\205\227\224\377\242\261" \
- "\256\377\303\316\314\377\307\333\343\342\377\3\301\317\314\377\223\254" \
- "\247\377\271\311\306\377\207\377\377\377\377\4\370\372\371\377\227\257" \
- "\252\377\226\256\252\377\327\340\336\377\311\333\343\342\377\3\267\310" \
- "\305\377\223\253\246\377\266\307\304\377\202\377\377\377\377\3\365\367" \
- "\367\377\225\256\251\377\315\330\326\377\202\377\377\377\377\6\364\366" \
- "\366\377\223\254\246\377\223\253\247\377\235\263\260\377\223\254\247" \
- "\377\303\321\317\377\377\333\343\342\377\230\333\343\342\377\3\242\267" \
- "\263\377\223\254\247\377\346\354\353\377\207\377\377\377\377\3\320\333" \
- "\331\377\223\254\247\377\261\303\277\377\312\333\343\342\377\4\326\337" \
- "\336\377\223\254\247\377\224\255\250\377\371\373\372\377\202\377\377" \
- "\377\377\3\271\311\306\377\241\266\262\377\376\376\376\377\202\377\377" \
- "\377\377\5\253\277\273\377\223\253\247\377\263\305\302\377\223\254\247" \
- "\377\245\271\265\377\377\333\343\342\377\227\333\343\342\377\3\314\330" \
- "\326\377\223\254\247\377\247\273\267\377\207\377\377\377\377\4\376\376" \
- "\376\377\243\270\264\377\223\254\247\377\317\332\330\377\313\333\343" \
- "\342\377\3\251\274\270\377\222\254\247\377\315\330\325\377\202\377\377" \
- "\377\377\3\346\354\353\377\223\254\247\377\337\346\345\377\202\377\377" \
- "\377\377\2\344\352\350\377\223\254\246\377\202\235\263\257\377\2\223" \
- "\254\247\377\316\331\330\377\377\333\343\342\377\226\333\343\342\377" \
- "\3\256\300\275\377\223\254\247\377\325\337\335\377\207\377\377\377\377" \
- "\3\341\350\347\377\223\254\247\377\245\272\266\377\314\333\343\342\377" \
- "\3\316\331\327\377\222\253\246\377\234\263\256\377\203\377\377\377\377" \
- "\2\247\274\270\377\261\303\300\377\203\377\377\377\377\5\234\263\256" \
- "\377\223\253\246\377\263\305\301\377\223\254\247\377\260\303\277\377" \
- "\322\333\343\342\377\1\304\317\315\377\202\201\224\220\377\277\333\343" \
- "\342\377\4\325\336\335\377\225\255\250\377\232\261\255\377\373\374\373" \
- "\377\207\377\377\377\377\3\264\305\302\377\223\254\247\377\303\321\317" \
- "\377\315\333\343\342\377\3\235\263\260\377\223\253\246\377\342\351\347" \
- "\377\202\377\377\377\377\3\325\336\334\377\223\254\247\377\360\363\363" \
- "\377\202\377\377\377\377\5\315\330\326\377\223\253\246\377\247\274\267" \
- "\377\227\256\251\377\253\276\273\377\322\333\343\342\377\1\270\305\303" \
- "\377\202Slg\377\277\333\343\342\377\3\271\311\306\377\223\254\247\377" \
- "\303\321\316\377\207\377\377\377\377\4\361\364\364\377\224\254\247\377" \
- "\232\262\255\377\332\342\341\377\315\333\343\342\377\3\300\317\315\377" \
- "\223\254\246\377\253\277\272\377\202\377\377\377\377\3\373\374\374\377" \
- "\232\262\255\377\303\321\316\377\202\377\377\377\377\4\372\373\373\377" \
- "\225\255\251\377\224\254\247\377\321\333\332\377\323\333\343\342\377" \
- "\1\270\305\303\377\202Slg\377\276\333\343\342\377\4\332\342\341\377\234" \
- "\263\256\377\223\254\247\377\360\363\363\377\207\377\377\377\377\3\305" \
- "\323\320\377\223\254\247\377\270\310\305\377\316\333\343\342\377\4\331" \
- "\341\340\377\226\255\251\377\223\253\247\377\363\366\365\377\202\377" \
- "\377\377\377\3\304\321\317\377\232\262\255\377\373\374\374\377\202\377" \
- "\377\377\377\3\267\310\304\377\222\253\246\377\270\310\304\377\306\333" \
- "\343\342\377\2\317\331\327\377\301\314\312\377\213\275\310\306\377\1" \
- "\242\261\256\377\202Slg\377\276\333\343\342\377\3\305\322\320\377\223" \
- "\254\247\377\262\304\300\377\207\377\377\377\377\4\374\374\374\377\233" \
- "\262\255\377\224\255\250\377\324\336\334\377\317\333\343\342\377\3\261" \
- "\303\300\377\223\253\246\377\276\315\313\377\202\377\377\377\377\3\360" \
- "\364\363\377\223\254\247\377\325\337\335\377\202\377\377\377\377\4\357" \
- "\362\362\377\222\253\246\377\231\260\253\377\332\342\341\377\301\333" \
- "\343\342\377\4\305\320\316\377\204\227\223\377e|w\377Voj\377\220Slg\377" \
- "\276\333\343\342\377\3\247\273\267\377\223\254\247\377\340\347\345\377" \
- "\207\377\377\377\377\3\327\340\336\377\223\254\247\377\254\277\274\377" \
- "\320\333\343\342\377\4\323\335\334\377\223\253\247\377\226\256\252\377" \
- "\374\375\374\377\202\377\377\377\377\2\262\304\301\377\250\274\270\377" \
- "\202\377\377\377\377\4\354\360\357\377\232\262\255\377\223\253\247\377" \
- "\306\323\321\377\277\333\343\342\377\3\325\335\334\377\202\225\221\377" \
- "Tlg\377\223Slg\377\275\333\343\342\377\4\320\333\331\377\223\254\247" \
- "\377\241\267\262\377\376\376\376\377\207\377\377\377\377\3\251\275\271" \
- "\377\223\254\247\377\312\326\324\377\321\333\343\342\377\3\244\271\264" \
- "\377\223\254\247\377\325\337\335\377\202\377\377\377\377\10\340\347\346" \
- "\377\223\254\247\377\312\327\324\377\255\300\274\377\226\256\251\377" \
- "\255\277\274\377\222\254\247\377\250\274\270\377\277\333\343\342\377" \
- "\1\207\232\226\377\225Slg\377\275\333\343\342\377\3\262\304\300\377\223" \
- "\254\247\377\316\331\327\377\207\377\377\377\377\3\350\355\354\377\223" \
- "\254\247\377\240\266\262\377\322\333\343\342\377\16\311\325\323\377\223" \
- "\254\246\377\241\266\263\377\377\377\377\377\364\367\366\377\310\325" \
- "\322\377\227\257\252\377\234\263\256\377\312\327\324\377\365\370\367" \
- "\377\376\376\376\377\240\266\261\377\223\254\247\377\321\333\332\377" \
- "\275\333\343\342\377\1\257\275\272\377\205Slg\377\4Voj\377axt\377k\201" \
- "|\377t\211\205\377\212x\215\211\377\1o\204\200\377\202Slg\377\274\333" \
- "\343\342\377\4\330\340\337\377\227\257\252\377\226\256\252\377\367\371" \
- "\371\377\207\377\377\377\377\3\273\312\307\377\223\254\247\377\277\315" \
- "\313\377\323\333\343\342\377\7\231\260\254\377\223\253\247\377\260\302" \
- "\276\377\225\256\251\377\257\301\276\377\334\344\343\377\376\376\376" \
- "\377\203\377\377\377\377\3\315\330\326\377\223\254\247\377\264\305\302" \
- "\377\275\333\343\342\377\1\201\225\221\377\203Slg\377\3~\222\216\377" \
- "\261\277\274\377\327\340\337\377\215\333\343\342\377\1\270\305\303\377" \
- "\202Slg\377\274\333\343\342\377\3\276\315\312\377\223\254\247\377\274" \
- "\314\311\377\207\377\377\377\377\4\366\370\370\377\225\256\251\377\230" \
- "\257\253\377\330\341\337\377\323\333\343\342\377\4\273\312\310\377\222" \
- "\254\246\377\244\271\265\377\356\362\361\377\206\377\377\377\377\4\366" \
- "\370\370\377\226\256\251\377\230\257\253\377\330\341\340\377\274\333" \
- "\343\342\377\1i\200{\377\202Slg\377\1\204\226\223\377\220\333\343\342" \
- "\377\1\270\305\303\377\202Slg\377\274\333\343\342\377\3\237\265\261\377" \
- "\223\254\247\377\352\357\356\377\207\377\377\377\377\3\314\330\325\377" \
- "\223\254\247\377\263\304\301\377\324\333\343\342\377\4\327\340\337\377" \
- "\227\257\252\377\226\256\252\377\367\371\371\377\207\377\377\377\377" \
- "\3\273\313\310\377\223\254\247\377\277\316\313\377\273\333\343\342\377" \
- "\2\330\340\337\377Uni\377\202Slg\377\1\321\333\331\377\220\333\343\342" \
- "\377\1\270\305\303\377\202Slg\377\273\333\343\342\377\3\312\326\324\377" \
- "\223\254\247\377\253\276\273\377\207\377\377\377\377\4\376\376\376\377" \
- "\240\265\261\377\223\254\247\377\321\333\332\377\325\333\343\342\377" \
- "\3\262\303\300\377\223\254\247\377\316\331\327\377\207\377\377\377\377" \
- "\3\350\356\355\377\223\254\247\377\241\267\262\377\273\333\343\342\377" \
- "\4\326\337\336\377Tlg\377Slg\377byt\377\221\333\343\342\377\1\330\341" \
- "\340\377\202\322\333\332\377\273\333\343\342\377\3\253\276\273\377\223" \
- "\254\247\377\330\341\337\377\207\377\377\377\377\3\335\345\344\377\223" \
- "\254\247\377\247\273\270\377\326\333\343\342\377\4\320\332\331\377\223" \
- "\254\247\377\241\267\262\377\376\376\376\377\207\377\377\377\377\3\252" \
- "\275\271\377\223\254\247\377\313\326\325\377\273\333\343\342\377\3cz" \
- "u\377Slg\377l\202~\377\316\333\343\342\377\4\323\335\334\377\224\255" \
- "\250\377\234\263\256\377\374\375\374\377\207\377\377\377\377\3\260\302" \
- "\276\377\223\254\247\377\306\323\321\377\327\333\343\342\377\3\246\273" \
- "\267\377\223\254\247\377\340\347\345\377\207\377\377\377\377\3\327\340" \
- "\336\377\223\254\247\377\254\277\274\377\273\333\343\342\377\4\207\231" \
- "\226\377Slg\377Vni\377\327\337\336\377\315\333\343\342\377\3\267\307" \
- "\304\377\223\254\247\377\307\324\321\377\207\377\377\377\377\4\356\362" \
- "\361\377\223\254\247\377\234\263\257\377\332\342\341\377\327\333\343" \
- "\342\377\3\304\322\317\377\223\254\247\377\262\304\300\377\207\377\377" \
- "\377\377\4\374\374\374\377\233\262\256\377\224\255\250\377\325\336\335" \
- "\377\272\333\343\342\377\1\305\317\316\377\202Slg\377\1\271\306\304\377" \
- "\220\333\343\342\377\1\307\322\320\377\202\216\237\234\377\271\333\343" \
- "\342\377\4\331\342\341\377\232\261\255\377\224\255\250\377\363\366\365" \
- "\377\207\377\377\377\377\3\302\320\315\377\223\254\247\377\272\312\307" \
- "\377\330\333\343\342\377\4\332\342\341\377\233\262\256\377\223\254\247" \
- "\377\360\363\363\377\207\377\377\377\377\3\306\323\320\377\223\254\247" \
- "\377\270\310\305\377\273\333\343\342\377\4\232\252\247\377Slg\377d{v" \
- "\377\317\330\327\377\217\333\343\342\377\1\270\305\303\377\202Slg\377" \
- "\271\333\343\342\377\3\303\320\316\377\223\254\247\377\266\307\303\377" \
- "\207\377\377\377\377\4\372\373\373\377\231\260\254\377\225\255\251\377" \
- "\326\337\336\377\331\333\343\342\377\3\271\311\306\377\223\254\247\377" \
- "\303\321\316\377\207\377\377\377\377\4\362\365\364\377\224\254\247\377" \
- "\233\262\255\377\332\342\341\377\273\333\343\342\377\4\226\246\243\377" \
- "Tmh\377l\201}\377\267\303\301\377\216\333\343\342\377\1\270\305\303\377" \
- "\202Slg\377\271\333\343\342\377\3\244\271\265\377\223\254\247\377\343" \
- "\352\350\377\207\377\377\377\377\3\323\335\333\377\223\254\247\377\256" \
- "\301\275\377\332\333\343\342\377\4\325\336\335\377\225\255\250\377\232" \
- "\261\254\377\373\374\373\377\207\377\377\377\377\3\264\306\302\377\223" \
- "\254\247\377\304\321\317\377\271\333\343\342\377\1\317\330\327\377\202" \
- "\301\314\312\377\10\246\265\262\377^vq\377Slg\377k\201}\377\226\247\244" \
- "\377\245\264\261\377\263\300\276\377\277\313\311\377\211\301\314\312" \
- "\377\1\245\264\261\377\202Slg\377\270\333\343\342\377\3\316\331\327\377" \
- "\223\254\247\377\245\271\265\377\210\377\377\377\377\3\246\272\266\377" \
- "\223\254\247\377\315\330\326\377\333\333\343\342\377\3\255\300\274\377" \
- "\223\254\247\377\325\336\334\377\207\377\377\377\377\3\342\350\347\377" \
- "\223\254\247\377\245\272\266\377\271\333\343\342\377\1\233\253\250\377" \
- "\226Slg\377\270\333\343\342\377\3\260\302\276\377\223\254\247\377\322" \
- "\334\332\377\207\377\377\377\377\3\344\352\351\377\223\254\247\377\243" \
- "\270\264\377\334\333\343\342\377\3\314\327\325\377\223\254\247\377\247" \
- "\273\267\377\207\377\377\377\377\4\376\376\376\377\243\270\264\377\223" \
- "\254\247\377\317\332\330\377\270\333\343\342\377\1\233\253\250\377\226" \
- "Slg\377\267\333\343\342\377\4\326\337\336\377\226\256\251\377\230\260" \
- "\253\377\371\373\372\377\207\377\377\377\377\3\267\307\304\377\223\254" \
- "\247\377\301\317\315\377\335\333\343\342\377\3\241\267\263\377\223\254" \
- "\247\377\346\354\353\377\207\377\377\377\377\3\320\333\331\377\223\254" \
- "\247\377\261\303\277\377\270\333\343\342\377\1\233\253\250\377\226Sl" \
- "g\377\267\333\343\342\377\3\273\313\310\377\223\254\247\377\300\317\314" \
- "\377\207\377\377\377\377\4\363\366\366\377\224\255\250\377\231\260\254" \
- "\377\331\341\340\377\335\333\343\342\377\3\300\316\314\377\223\254\247" \
- "\377\271\311\306\377\207\377\377\377\377\4\371\372\372\377\227\257\253" \
- "\377\226\256\252\377\327\340\337\377\267\333\343\342\377\3\233\253\250" \
- "\377Slg\377[sn\377\221x\215\211\377\1o\204\200\377\202Slg\377\266\333" \
- "\343\342\377\4\332\342\341\377\235\264\257\377\223\254\247\377\356\361" \
- "\361\377\207\377\377\377\377\3\310\325\322\377\223\254\247\377\266\306" \
- "\303\377\336\333\343\342\377\4\330\341\340\377\230\260\253\377\225\255" \
- "\251\377\365\367\367\377\207\377\377\377\377\3\277\316\313\377\223\254" \
- "\247\377\275\314\311\377\267\333\343\342\377\3\233\253\250\377Slg\377" \
- "p\205\201\377\221\333\343\342\377\1\270\305\303\377\202Slg\377\266\333" \
- "\343\342\377\3\307\324\322\377\223\254\247\377\257\301\276\377\207\377" \
- "\377\377\377\4\374\375\375\377\235\264\257\377\223\254\247\377\323\334" \
- "\333\377\337\333\343\342\377\3\264\305\302\377\223\254\247\377\312\326" \
- "\324\377\207\377\377\377\377\3\354\361\360\377\223\254\247\377\236\265" \
- "\260\377\267\333\343\342\377\3\233\253\250\377Slg\377p\205\201\377\221" \
- "\333\343\342\377\1\270\305\303\377\202Slg\377\266\333\343\342\377\3\251" \
- "\274\271\377\223\254\247\377\334\344\343\377\207\377\377\377\377\3\332" \
- "\342\340\377\223\254\247\377\252\275\271\377\340\333\343\342\377\4\322" \
- "\334\332\377\223\254\247\377\236\265\260\377\375\375\375\377\207\377" \
- "\377\377\377\3\256\300\275\377\223\254\247\377\310\324\322\377\266\333" \
- "\343\342\377\3\233\253\250\377Slg\377p\205\201\377\221\333\343\342\377" \
- "\1\270\305\303\377\202Slg\377\265\333\343\342\377\4\322\334\332\377\223" \
- "\254\247\377\237\265\260\377\375\376\375\377\207\377\377\377\377\3\254" \
- "\277\273\377\223\254\247\377\310\324\322\377\341\333\343\342\377\3\251" \
- "\274\271\377\223\254\247\377\333\343\342\377\207\377\377\377\377\3\333" \
- "\343\342\377\223\254\247\377\252\275\272\377\266\333\343\342\377\3\277" \
- "\312\310\377\237\256\253\377\254\272\270\377\221\333\343\342\377\1\323" \
- "\334\333\377\202\275\310\306\377\265\333\343\342\377\3\264\305\302\377" \
- "\223\254\247\377\313\327\324\377\207\377\377\377\377\3\353\360\357\377" \
- "\223\254\247\377\236\265\260\377\342\333\343\342\377\3\307\323\321\377" \
- "\223\254\247\377\256\301\275\377\207\377\377\377\377\4\375\375\375\377" \
- "\236\264\260\377\224\254\247\377\323\334\333\377\377\333\343\342\377" \
- "\5\333\343\342\377\331\341\340\377\230\260\253\377\225\256\251\377\366" \
- "\370\367\377\207\377\377\377\377\3\275\314\311\377\223\254\247\377\274" \
- "\313\311\377\342\333\343\342\377\4\332\342\341\377\235\264\257\377\223" \
- "\254\247\377\355\361\360\377\207\377\377\377\377\3\312\326\323\377\223" \
- "\254\247\377\266\306\303\377\377\333\343\342\377\4\333\343\342\377\300" \
- "\316\314\377\223\254\247\377\271\311\306\377\207\377\377\377\377\4\370" \
- "\371\371\377\227\257\252\377\226\256\252\377\327\340\336\377\343\333" \
- "\343\342\377\3\273\313\310\377\223\254\247\377\277\316\313\377\207\377" \
- "\377\377\377\4\364\367\366\377\225\255\250\377\231\260\254\377\331\341" \
- "\340\377\310\333\343\342\377\3\307\322\320\377\305\320\316\377\324\334" \
- "\333\377\264\333\343\342\377\3\241\267\263\377\223\254\247\377\347\354" \
- "\353\377\207\377\377\377\377\3\317\332\330\377\223\254\247\377\261\303" \
- "\277\377\344\333\343\342\377\4\326\337\336\377\226\256\251\377\227\257" \
- "\253\377\371\372\372\377\207\377\377\377\377\3\270\310\305\377\223\254" \
- "\247\377\301\317\315\377\310\333\343\342\377\3_vr\377Slg\377\254\271" \
- "\267\377\263\333\343\342\377\3\314\327\325\377\223\254\247\377\250\274" \
- "\270\377\207\377\377\377\377\4\376\376\376\377\242\270\263\377\223\254" \
- "\247\377\317\332\330\377\345\333\343\342\377\3\260\302\276\377\223\254" \
- "\247\377\321\333\331\377\207\377\377\377\377\3\346\353\352\377\223\254" \
- "\247\377\243\270\264\377\310\333\343\342\377\3_vr\377Slg\377\254\271" \
- "\267\377\263\333\343\342\377\3\255\300\274\377\223\254\247\377\325\337" \
- "\335\377\207\377\377\377\377\3\340\347\346\377\223\254\247\377\245\272" \
- "\266\377\346\333\343\342\377\3\316\331\327\377\223\254\247\377\244\271" \
- "\265\377\210\377\377\377\377\3\247\273\267\377\223\254\247\377\315\330" \
- "\326\377\307\333\343\342\377\3^vq\377Slg\377\254\271\267\377\262\333" \
- "\343\342\377\4\325\336\335\377\225\255\250\377\232\261\255\377\373\374" \
- "\374\377\207\377\377\377\377\3\263\304\301\377\223\254\247\377\303\321" \
- "\317\377\347\333\343\342\377\3\244\271\265\377\223\254\247\377\342\351" \
- "\347\377\207\377\377\377\377\3\324\336\334\377\223\254\247\377\256\301" \
- "\275\377\304\333\343\342\377\3\317\331\327\377\236\255\253\377i\177{" \
- "\377\202Slg\377\1\254\271\267\377\262\333\343\342\377\3\271\311\306\377" \
- "\223\254\247\377\304\322\317\377\207\377\377\377\377\4\361\364\363\377" \
- "\223\254\247\377\226\256\251\377\332\342\341\377\347\333\343\342\377" \
- "\3\302\320\316\377\223\254\247\377\265\306\302\377\202\377\377\377\377" \
- "\3\371\373\372\377\356\361\361\377\375\375\375\377\202\377\377\377\377" \
- "\4\372\373\373\377\232\261\254\377\225\255\251\377\326\337\336\377\300" \
- "\333\343\342\377\4\331\341\340\377\263\300\276\377~\222\216\377Uni\377" \
- "\204Slg\377\1\254\271\267\377\261\333\343\342\377\4\332\342\341\377\233" \
- "\262\256\377\223\254\247\377\361\364\363\377\207\377\377\377\377\1\304" \
- "\322\317\377\202\223\254\247\377\1\312\326\324\377\347\333\343\342\377" \
- "\5\331\341\340\377\232\261\254\377\223\254\247\377\302\320\315\377\244" \
- "\271\265\377\202\223\254\247\377\7\226\256\251\377\251\275\271\377\331" \
- "\342\340\377\377\377\377\377\303\321\316\377\223\254\247\377\272\312" \
- "\307\377\276\333\343\342\377\3\310\322\321\377\224\244\241\377axt\377" \
- "\207Slg\377\1\254\271\267\377\261\333\343\342\377\3\304\322\317\377\223" \
- "\254\247\377\263\304\301\377\207\377\377\377\377\5\373\374\374\377\233" \
- "\262\255\377\225\255\251\377\233\262\256\377\264\305\302\377\350\333" \
- "\343\342\377\1\260\303\277\377\202\224\255\250\377\13\277\315\312\377" \
- "\330\341\337\377\345\353\351\377\322\334\332\377\263\304\301\377\223" \
- "\254\247\377\267\307\304\377\353\357\356\377\223\254\247\377\234\263" \
- "\257\377\332\342\341\377\272\333\343\342\377\3\326\336\335\377\251\267" \
- "\265\377t\211\205\377\212Slg\377\1\254\271\267\377\261\333\343\342\377" \
- "\3\246\272\266\377\223\254\247\377\340\347\346\377\207\377\377\377\377" \
- "\5\326\337\335\377\223\254\247\377\271\311\306\377\262\304\300\377\246" \
- "\272\266\377\347\333\343\342\377\4\331\341\340\377\236\264\260\377\240" \
- "\266\261\377\351\356\355\377\205\377\377\377\377\6\330\341\337\377\226" \
- "\256\252\377\275\314\311\377\261\303\300\377\223\254\247\377\306\323" \
- "\320\377\270\333\343\342\377\3\276\312\310\377\211\234\230\377[sn\377" \
- "\211Slg\377\4Voj\377Umh\377Slg\377\254\271\267\377\260\333\343\342\377" \
- "\4\320\332\331\377\223\254\247\377\242\267\263\377\376\376\376\377\207" \
- "\377\377\377\377\5\250\274\270\377\223\254\247\377\346\354\353\377\272" \
- "\312\307\377\242\267\263\377\347\333\343\342\377\3\265\306\302\377\225" \
- "\255\250\377\352\357\356\377\207\377\377\377\377\5\322\334\332\377\223" \
- "\254\247\377\311\325\323\377\223\254\247\377\247\273\270\377\265\333" \
- "\343\342\377\3\320\332\330\377\237\256\253\377k\201|\377\212Slg\377\6" \
- "n\204\200\377\242\261\256\377\321\333\331\377_vr\377Slg\377\254\271\267" \
- "\377\260\333\343\342\377\3\262\303\300\377\223\254\247\377\317\332\330" \
- "\377\204\377\377\377\377\11\367\371\370\377\352\357\356\377\377\377\377" \
- "\377\347\355\354\377\223\254\247\377\247\273\267\377\377\377\377\377" \
- "\244\271\265\377\257\301\276\377\347\333\343\342\377\2\234\263\256\377" \
- "\303\321\316\377\211\377\377\377\377\5\250\274\270\377\267\307\304\377" \
- "\241\266\262\377\223\254\247\377\321\333\332\377\261\333\343\342\377" \
- "\4\331\342\341\377\264\301\277\377\200\223\220\377Vni\377\211Slg\377" \
- "\3^vq\377\220\241\236\377\303\316\314\377\203\333\343\342\377\3_vr\377" \
- "Slg\377\254\271\267\377\257\333\343\342\377\1\327\340\337\377\202\227" \
- "\257\252\377\1\370\371\371\377\203\377\377\377\377\12\352\357\356\377" \
- "\226\256\252\377\223\254\247\377\277\316\313\377\271\311\306\377\223" \
- "\254\247\377\325\337\335\377\351\356\355\377\223\254\247\377\277\316" \
- "\313\377\346\333\343\342\377\3\325\336\335\377\223\254\247\377\335\344" \
- "\343\377\211\377\377\377\377\5\302\320\315\377\241\267\262\377\315\331" \
- "\326\377\223\254\247\377\263\304\301\377\241\333\343\342\377\6\274\307" \
- "\306\377\217\241\235\377t\211\205\377|\217\214\377\242\261\256\377\310" \
- "\322\321\377\210\333\343\342\377\3\311\323\322\377\225\246\243\377by" \
- "t\377\213Slg\377\2\245\264\261\377\330\341\340\377\205\333\343\342\377" \
- "\3_vr\377Slg\377\254\271\267\377\257\333\343\342\377\3\314\327\325\377" \
- "\223\254\247\377\264\305\301\377\204\377\377\377\377\12\307\324\322\377" \
- "\226\256\252\377\261\303\300\377\230\260\253\377\224\255\250\377\232" \
- "\261\255\377\367\371\370\377\244\271\265\377\241\266\262\377\331\341" \
- "\340\377\346\333\343\342\377\3\312\326\324\377\223\254\247\377\353\360" \
- "\357\377\211\377\377\377\377\5\320\333\331\377\223\254\247\377\361\364" \
- "\364\377\223\254\247\377\243\270\264\377\237\333\343\342\377\3\327\340" \
- "\337\377\217\241\235\377Tlg\377\205Slg\377\1\236\255\253\377\204\333" \
- "\343\342\377\3\326\337\336\377\253\271\266\377v\212\206\377\212Slg\377" \
- "\2g}y\377\222\243\240\377\202Slg\377\1\305\320\316\377\206\333\343\342" \
- "\377\3\264\301\277\377\260\275\273\377\314\326\324\377\257\333\343\342" \
- "\377\3\316\331\330\377\223\254\247\377\263\304\301\377\204\377\377\377" \
- "\377\11\351\356\355\377\226\256\251\377\223\254\247\377\251\275\271\377" \
- "\223\254\247\377\272\312\307\377\244\271\265\377\225\255\251\377\316" \
- "\331\327\377\347\333\343\342\377\3\326\337\336\377\223\254\247\377\332" \
- "\343\341\377\211\377\377\377\377\5\277\316\313\377\243\270\264\377\363" \
- "\365\365\377\223\254\247\377\246\272\266\377\237\333\343\342\377\1\217" \
- "\241\235\377\203Slg\377\2e{w\377czu\377\203Slg\377\5\254\271\267\377" \
- "\333\343\342\377\300\313\311\377\213\235\232\377[sn\377\211Slg\377\5" \
- "Yql\377\206\231\225\377\273\307\305\377\333\343\342\377\316\327\326\377" \
- "\202Slg\377\1\305\320\316\377\270\333\343\342\377\3\321\334\332\377\223" \
- "\254\247\377\256\301\275\377\205\377\377\377\377\3\366\370\367\377\346" \
- "\354\352\377\237\265\260\377\202\223\254\247\377\2\240\266\262\377\315" \
- "\330\327\377\351\333\343\342\377\2\235\264\257\377\275\314\311\377\210" \
- "\377\377\377\377\6\375\375\375\377\243\271\264\377\271\311\306\377\356" \
- "\362\361\377\223\254\247\377\251\275\271\377\236\333\343\342\377\5\274" \
- "\307\306\377Tlg\377Slg\377e{w\377\300\313\311\377\202\333\343\342\377" \
- "\5\274\307\306\377axt\377Slg\377Vni\377k\201}\377\212Slg\377\3r\207\203" \
- "\377\246\265\262\377\324\335\334\377\203\333\343\342\377\1\316\327\326" \
- "\377\202Slg\377\1\305\320\316\377\270\333\343\342\377\3\324\336\334\377" \
- "\223\254\247\377\251\275\271\377\206\377\377\377\377\5\335\344\343\377" \
- "\223\254\247\377\233\262\255\377\300\316\314\377\331\341\340\377\352" \
- "\333\343\342\377\3\272\312\307\377\223\254\247\377\343\351\350\377\207" \
- "\377\377\377\377\6\310\325\322\377\224\254\250\377\350\355\354\377\351" \
- "\356\355\377\223\254\247\377\254\277\273\377\236\333\343\342\377\1\217" \
- "\241\235\377\202Slg\377\1\300\313\311\377\204\333\343\342\377\1\270\305" \
- "\303\377\212Slg\377\3_wr\377\222\243\240\377\306\320\317\377\206\333" \
- "\343\342\377\1\316\327\326\377\202Slg\377\1\305\320\316\377\270\333\343" \
- "\342\377\3\327\340\337\377\223\254\247\377\245\272\266\377\206\377\377" \
- "\377\377\3\257\301\276\377\223\254\247\377\306\323\320\377\354\333\343" \
- "\342\377\4\332\342\341\377\244\271\265\377\233\262\255\377\335\345\343" \
- "\377\204\377\377\377\377\10\375\376\375\377\312\326\324\377\224\254\250" \
- "\377\307\324\321\377\377\377\377\377\344\352\351\377\223\254\247\377" \
- "\257\301\276\377\236\333\343\342\377\3t\211\205\377Slg\377g~y\377\206" \
- "\333\343\342\377\1\\to\377\206Slg\377\4Uni\377}\221\215\377\261\277\274" \
- "\377\330\341\340\377\210\333\343\342\377\1\316\327\326\377\202Slg\377" \
- "\1\305\320\316\377\270\333\343\342\377\3\332\342\341\377\223\254\247" \
- "\377\240\266\262\377\205\377\377\377\377\4\356\361\361\377\223\254\247" \
- "\377\234\263\257\377\332\342\341\377\355\333\343\342\377\17\324\336\334" \
- "\377\250\273\270\377\223\254\247\377\261\303\277\377\312\326\324\377" \
- "\327\340\336\377\304\322\317\377\246\273\267\377\223\254\247\377\304" \
- "\322\317\377\375\375\375\377\377\377\377\377\340\347\345\377\223\254" \
- "\247\377\262\303\300\377\236\333\343\342\377\3v\212\206\377Slg\377f|" \
- "x\377\206\333\343\342\377\1[sn\377\204Slg\377\3i\177{\377\235\255\252" \
- "\377\317\330\327\377\213\333\343\342\377\1\316\327\326\377\202Slg\377" \
- "\1\305\320\316\377\271\333\343\342\377\2\225\255\251\377\234\263\256" \
- "\377\205\377\377\377\377\3\300\317\314\377\223\254\247\377\272\312\307" \
- "\377\360\333\343\342\377\7\277\316\313\377\245\272\266\377\227\257\252" \
- "\377\223\254\247\377\225\255\250\377\257\301\276\377\346\353\352\377" \
- "\203\377\377\377\377\3\333\343\342\377\223\254\247\377\265\306\302\377" \
- "\236\333\343\342\377\1\220\242\236\377\202Slg\377\1\277\312\310\377\204" \
- "\333\343\342\377\1\266\302\300\377\205Slg\377\3z\216\212\377\257\274" \
- "\272\377\330\340\337\377\213\333\343\342\377\1\316\327\326\377\202Sl" \
- "g\377\1\305\320\316\377\271\333\343\342\377\2\230\260\253\377\230\257" \
- "\253\377\204\377\377\377\377\4\371\373\372\377\230\260\253\377\225\255" \
- "\251\377\326\337\336\377\362\333\343\342\377\4\332\342\341\377\266\307" \
- "\304\377\223\254\247\377\302\320\315\377\204\377\377\377\377\3\326\337" \
- "\335\377\223\254\247\377\267\310\305\377\236\333\343\342\377\14\276\311" \
- "\307\377Tmh\377Slg\377d{v\377\274\307\306\377\333\343\342\377\321\332" \
- "\331\377\235\255\252\377^vq\377Slg\377Vni\377k\201}\377\204Slg\377\3" \
- "^uq\377\217\241\235\377\304\317\315\377\211\333\343\342\377\1\316\327" \
- "\326\377\202Slg\377\1\305\320\316\377\271\333\343\342\377\2\233\262\255" \
- "\377\223\254\247\377\204\377\377\377\377\3\322\334\332\377\223\254\247" \
- "\377\256\301\275\377\364\333\343\342\377\4\325\336\335\377\225\255\250" \
- "\377\231\261\254\377\372\373\373\377\203\377\377\377\377\3\321\334\332" \
- "\377\223\254\247\377\272\312\307\377\237\333\343\342\377\1\223\244\240" \
- "\377\203Slg\377\2_vr\377Wpk\377\203Slg\377\5\254\271\267\377\333\343" \
- "\342\377\300\314\312\377\214\236\233\377\\so\377\204Slg\377\3p\205\201" \
- "\377\245\263\261\377\324\334\333\377\206\333\343\342\377\1\316\327\326" \
- "\377\202Slg\377\1\305\320\316\377\271\333\343\342\377\3\236\264\260\377" \
- "\223\254\247\377\373\374\374\377\203\377\377\377\377\3\245\271\265\377" \
- "\223\254\247\377\315\330\326\377\365\333\343\342\377\3\255\300\274\377" \
- "\223\254\247\377\324\336\334\377\203\377\377\377\377\3\315\330\326\377" \
- "\223\254\247\377\275\314\312\377\237\333\343\342\377\3\330\340\337\377" \
- "\225\246\243\377Umh\377\205Slg\377\1\236\255\253\377\204\333\343\342" \
- "\377\4\327\337\336\377\254\271\267\377w\214\210\377Tlg\377\203Slg\377" \
- "\3Xpk\377\205\230\224\377\272\306\304\377\204\333\343\342\377\1\316\327" \
- "\326\377\202Slg\377\1\305\320\316\377\271\333\343\342\377\3\241\266\262" \
- "\377\223\254\247\377\366\370\370\377\202\377\377\377\377\3\343\352\350" \
- "\377\223\254\247\377\243\270\264\377\366\333\343\342\377\3\314\327\325" \
- "\377\223\254\247\377\246\273\267\377\203\377\377\377\377\3\307\324\322" \
- "\377\223\254\247\377\300\316\314\377\241\333\343\342\377\6\302\315\313" \
- "\377\230\250\245\377}\220\215\377\203\226\222\377\246\265\262\377\311" \
- "\324\322\377\210\333\343\342\377\3\313\325\323\377\227\250\245\377d{" \
- "v\377\204Slg\377\5f}x\377\233\253\250\377\315\327\325\377\333\343\342" \
- "\377\316\327\326\377\202Slg\377\1\305\320\316\377\271\333\343\342\377" \
- "\3\244\271\265\377\223\254\247\377\362\365\364\377\202\377\377\377\377" \
- "\3\266\307\303\377\223\254\247\377\301\317\315\377\367\333\343\342\377" \
- "\3\241\267\263\377\223\254\247\377\345\353\352\377\202\377\377\377\377" \
- "\3\303\321\316\377\223\254\247\377\303\321\317\377\261\333\343\342\377" \
- "\4\332\342\341\377\267\304\302\377\203\226\222\377Wpk\377\203Slg\377" \
- "\3Tmh\377|\217\214\377\245\264\261\377\202Slg\377\1\305\320\316\377\206" \
- "\333\343\342\377\3\317\331\327\377\316\327\326\377\326\337\336\377\260" \
- "\333\343\342\377\10\247\273\267\377\223\254\247\377\301\317\314\377\333" \
- "\343\341\377\344\352\351\377\224\255\250\377\231\260\254\377\331\341" \
- "\340\377\367\333\343\342\377\10\300\316\314\377\223\254\247\377\265\306" \
- "\303\377\345\353\351\377\322\335\333\377\250\274\270\377\223\254\247" \
- "\377\306\323\321\377\264\333\343\342\377\3\323\334\332\377\243\262\257" \
- "\377o\204\200\377\206Slg\377\1\267\304\302\377\206\333\343\342\377\3" \
- "_vr\377Slg\377\254\271\267\377\260\333\343\342\377\1\252\275\271\377" \
- "\205\223\254\247\377\1\266\306\303\377\370\333\343\342\377\2\330\341" \
- "\340\377\230\260\253\377\205\223\254\247\377\1\311\325\323\377\267\333" \
- "\343\342\377\3\303\316\314\377\217\240\235\377]up\377\204Slg\377\3r\207" \
- "\203\377\246\265\262\377\324\335\334\377\203\333\343\342\377\3_vr\377" \
- "Slg\377\254\271\267\377\260\333\343\342\377\7\327\337\336\377\220\243" \
- "\237\377k\204\177\377u\216\211\377\205\235\230\377\235\263\257\377\323" \
- "\334\333\377\371\333\343\342\377\7\267\307\304\377\233\261\255\377~\227" \
- "\222\377q\212\205\377m\206\201\377\273\310\306\377\332\342\341\377\271" \
- "\333\343\342\377\4\330\340\337\377\256\274\271\377z\216\212\377Tmh\377" \
- "\203Slg\377\7Yql\377\206\231\225\377\273\307\305\377\333\343\342\377" \
- "_vr\377Slg\377\254\271\267\377\261\333\343\342\377\1x\214\210\377\202" \
- "Slg\377\1~\221\216\377\374\333\343\342\377\5\325\335\334\377axt\377S" \
- "lg\377Tmh\377\251\270\265\377\275\333\343\342\377\3\315\326\325\377\232" \
- "\252\247\377f}x\377\204Slg\377\4g}y\377Woj\377Slg\377\254\271\267\377" \
- "\261\333\343\342\377\1}\220\215\377\202Slg\377\1\240\257\254\377\375" \
- "\333\343\342\377\1f}x\377\202Slg\377\1\222\243\240\377\300\333\343\342" \
- "\377\3\272\306\304\377\206\230\225\377Xql\377\204Slg\377\1\254\271\267" \
- "\377\261\333\343\342\377\4\216\237\234\377Slg\377_wr\377\326\336\335" \
- "\377\375\333\343\342\377\4r\207\203\377Slg\377axt\377\317\330\327\377" \
- "\302\333\343\342\377\3\324\334\333\377\246\264\262\377q\207\202\377\202" \
- "Slg\377\1\254\271\267\377\261\333\343\342\377\3\237\257\254\377Slg\377" \
- "\240\257\254\377\376\333\343\342\377\3\216\240\235\377Wpk\377\246\264" \
- "\262\377\306\333\343\342\377\3_vr\377Slg\377\254\271\267\377\261\333" \
- "\343\342\377\3\260\276\273\377axt\377\326\337\336\377\376\333\343\342" \
- "\377\2\265\302\277\377v\213\207\377\307\333\343\342\377\3_vr\377Slg\377" \
- "\254\271\267\377\261\333\343\342\377\2\302\315\313\377\242\261\256\377" \
- "\377\333\343\342\377\311\333\343\342\377\3z\216\212\377p\205\201\377" \
- "\266\303\301\377\261\333\343\342\377\2\326\336\335\377\327\340\337\377" \
- "\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333" \
- "\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342" \
- "\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377" \
- "\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343" \
- "\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377" \
- "\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333" \
- "\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342" \
- "\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377" \
- "\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343" \
- "\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377" \
- "\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333" \
- "\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342" \
- "\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377" \
- "\333\343\342\377\344\333\343\342\377")
-
-
diff --git a/packages/psplash/files/angstrom/angstrom-psplash-vga-img.h b/packages/psplash/files/angstrom/angstrom-psplash-vga-img.h
deleted file mode 100644
index 5eeef94919..0000000000
--- a/packages/psplash/files/angstrom/angstrom-psplash-vga-img.h
+++ /dev/null
@@ -1,2109 +0,0 @@
-/* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */
-
-#define HAND_IMG_ROWSTRIDE (1428)
-#define HAND_IMG_WIDTH (357)
-#define HAND_IMG_HEIGHT (376)
-#define HAND_IMG_BYTES_PER_PIXEL (4) /* 3:RGB, 4:RGBA */
-#define HAND_IMG_RLE_PIXEL_DATA ((uint8*) \
- "\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343" \
- "\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377" \
- "\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333" \
- "\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342" \
- "\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377" \
- "\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343" \
- "\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377" \
- "\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333" \
- "\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342" \
- "\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377" \
- "\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343" \
- "\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377" \
- "\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333" \
- "\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342" \
- "\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377" \
- "\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343" \
- "\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377" \
- "\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333" \
- "\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342" \
- "\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377" \
- "\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343" \
- "\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377" \
- "\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333" \
- "\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342" \
- "\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377" \
- "\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343" \
- "\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377" \
- "\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333" \
- "\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342" \
- "\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377" \
- "\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343" \
- "\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377" \
- "\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333" \
- "\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342" \
- "\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377" \
- "\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343" \
- "\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377" \
- "\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\202\333" \
- "\343\342\377\1\320\331\330\377\202\311\324\322\377\1\324\334\333\377" \
- "\377\333\343\342\377\251\333\343\342\377\4\323\335\333\377\311\325\323" \
- "\377\322\334\332\377\332\342\341\377\377\333\343\342\377\266\333\343" \
- "\342\377\1\202\225\221\377\202Slg\377\1\243\262\257\377\377\333\343\342" \
- "\377\244\333\343\342\377\5\326\337\336\377\273\313\310\377\257\301\276" \
- "\377\243\270\264\377\227\257\252\377\203\223\254\247\377\5\226\256\251" \
- "\377\242\267\263\377\256\300\275\377\272\312\307\377\323\335\333\377" \
- "\377\333\343\342\377\262\333\343\342\377\1\202\225\221\377\202Slg\377" \
- "\1\243\262\257\377\377\333\343\342\377\244\333\343\342\377\1\315\330" \
- "\326\377\213\223\254\247\377\1\304\321\317\377\377\333\343\342\377\262" \
- "\333\343\342\377\1\202\225\221\377\202Slg\377\1\243\262\257\377\377\333" \
- "\343\342\377\244\333\343\342\377\1\315\330\326\377\202\223\254\247\377" \
- "\7\241\267\263\377\270\310\305\377\312\326\324\377\330\341\337\377\314" \
- "\327\325\377\272\312\307\377\244\271\265\377\202\223\254\247\377\1\304" \
- "\321\317\377\377\333\343\342\377\262\333\343\342\377\1\202\225\221\377" \
- "\202Slg\377\1\243\262\257\377\377\333\343\342\377\244\333\343\342\377" \
- "\1\315\330\326\377\202\223\254\247\377\1\331\342\340\377\205\377\377" \
- "\377\377\1\343\352\350\377\202\223\254\247\377\1\304\321\317\377\377" \
- "\333\343\342\377\236\333\343\342\377\4\316\327\326\377\275\311\307\377" \
- "\266\302\300\377\256\274\271\377\220\254\271\267\377\1q\207\202\377\202" \
- "Slg\377\1\243\262\257\377\377\333\343\342\377\244\333\343\342\377\1\315" \
- "\330\326\377\202\223\254\247\377\1\331\342\340\377\205\377\377\377\377" \
- "\1\343\352\350\377\202\223\254\247\377\1\304\321\317\377\377\333\343" \
- "\342\377\232\333\343\342\377\4\324\335\334\377\250\266\264\377y\215\211" \
- "\377]up\377\227Slg\377\1\243\262\257\377\377\333\343\342\377\244\333" \
- "\343\342\377\1\315\330\326\377\202\223\254\247\377\1\331\342\340\377" \
- "\205\377\377\377\377\1\343\352\350\377\202\223\254\247\377\1\304\321" \
- "\317\377\377\333\343\342\377\230\333\343\342\377\3\332\342\341\377\246" \
- "\265\262\377\\to\377\232Slg\377\1\243\262\257\377\377\333\343\342\377" \
- "\244\333\343\342\377\1\315\330\326\377\202\223\254\247\377\1\331\342" \
- "\340\377\205\377\377\377\377\1\343\352\350\377\202\223\254\247\377\1" \
- "\304\321\317\377\377\333\343\342\377\227\333\343\342\377\2\331\342\341" \
- "\377\204\227\223\377\234Slg\377\1\243\262\257\377\377\333\343\342\377" \
- "\244\333\343\342\377\1\315\330\326\377\202\223\254\247\377\1\331\342" \
- "\340\377\205\377\377\377\377\1\343\352\350\377\202\223\254\247\377\1" \
- "\304\321\317\377\377\333\343\342\377\227\333\343\342\377\1\216\237\234" \
- "\377\235Slg\377\1\243\262\257\377\377\333\343\342\377\244\333\343\342" \
- "\377\1\315\330\326\377\202\223\254\247\377\1\331\342\340\377\205\377" \
- "\377\377\377\1\343\352\350\377\202\223\254\247\377\1\304\321\317\377" \
- "\377\333\343\342\377\226\333\343\342\377\2\303\316\314\377Tmh\377\235" \
- "Slg\377\1\243\262\257\377\377\333\343\342\377\244\333\343\342\377\1\315" \
- "\330\326\377\202\223\254\247\377\1\331\342\340\377\205\377\377\377\377" \
- "\1\343\352\350\377\202\223\254\247\377\1\304\321\317\377\377\333\343" \
- "\342\377\226\333\343\342\377\1\211\234\230\377\205Slg\377\7Tmh\377|\217" \
- "\214\377\252\270\266\377\271\305\303\377\304\317\315\377\320\331\330" \
- "\377\331\342\341\377\217\333\343\342\377\1\202\225\221\377\202Slg\377" \
- "\1\243\262\257\377\377\333\343\342\377\244\333\343\342\377\1\315\330" \
- "\326\377\202\223\254\247\377\1\331\342\340\377\205\377\377\377\377\1" \
- "\343\352\350\377\202\223\254\247\377\1\304\321\317\377\377\333\343\342" \
- "\377\226\333\343\342\377\1czu\377\204Slg\377\2~\222\216\377\314\325\324" \
- "\377\225\333\343\342\377\1\202\225\221\377\202Slg\377\1\243\262\257\377" \
- "\377\333\343\342\377\244\333\343\342\377\1\315\330\326\377\202\223\254" \
- "\247\377\1\331\342\340\377\205\377\377\377\377\1\343\352\350\377\202" \
- "\223\254\247\377\1\304\321\317\377\377\333\343\342\377\225\333\343\342" \
- "\377\1\322\333\332\377\204Slg\377\2n\203\177\377\326\336\335\377\226" \
- "\333\343\342\377\1\202\225\221\377\202Slg\377\1\243\262\257\377\377\333" \
- "\343\342\377\244\333\343\342\377\1\315\330\326\377\202\223\254\247\377" \
- "\1\331\342\340\377\205\377\377\377\377\1\343\352\350\377\202\223\254" \
- "\247\377\1\304\321\317\377\377\333\343\342\377\225\333\343\342\377\1" \
- "\306\321\317\377\204Slg\377\1\277\313\311\377\227\333\343\342\377\1\202" \
- "\225\221\377\202Slg\377\1\243\262\257\377\377\333\343\342\377\244\333" \
- "\343\342\377\1\315\330\326\377\202\223\254\247\377\1\331\342\340\377" \
- "\205\377\377\377\377\1\343\352\350\377\202\223\254\247\377\1\304\321" \
- "\317\377\377\333\343\342\377\225\333\343\342\377\1\304\317\315\377\203" \
- "Slg\377\2Uni\377\330\340\337\377\227\333\343\342\377\1\244\262\260\377" \
- "\202\205\230\224\377\1\267\304\302\377\377\333\343\342\377\244\333\343" \
- "\342\377\1\315\330\326\377\202\223\254\247\377\1\331\342\340\377\205" \
- "\377\377\377\377\1\343\352\350\377\202\223\254\247\377\1\304\321\317" \
- "\377\377\333\343\342\377\225\333\343\342\377\1\326\336\335\377\203Sl" \
- "g\377\1k\201}\377\377\333\343\342\377\300\333\343\342\377\1\315\330\326" \
- "\377\202\223\254\247\377\1\331\342\340\377\205\377\377\377\377\1\343" \
- "\352\350\377\202\223\254\247\377\1\304\321\317\377\377\333\343\342\377" \
- "\226\333\343\342\377\1byt\377\202Slg\377\1q\207\202\377\377\333\343\342" \
- "\377\300\333\343\342\377\1\315\330\326\377\202\223\254\247\377\1\331" \
- "\342\340\377\205\377\377\377\377\1\343\352\350\377\202\223\254\247\377" \
- "\1\304\321\317\377\377\333\343\342\377\226\333\343\342\377\1\204\226" \
- "\223\377\202Slg\377\1czu\377\377\333\343\342\377\300\333\343\342\377" \
- "\1\315\330\326\377\202\223\254\247\377\1\331\342\340\377\205\377\377" \
- "\377\377\1\343\352\350\377\202\223\254\247\377\1\304\321\317\377\377" \
- "\333\343\342\377\226\333\343\342\377\2\304\317\315\377Tlg\377\202Slg" \
- "\377\1\305\320\316\377\227\333\343\342\377\1\274\310\306\377\202\254" \
- "\271\267\377\1\307\322\320\377\377\333\343\342\377\244\333\343\342\377" \
- "\1\315\330\326\377\202\223\254\247\377\1\331\342\340\377\205\377\377" \
- "\377\377\1\343\352\350\377\202\223\254\247\377\1\304\321\317\377\377" \
- "\333\343\342\377\227\333\343\342\377\1\201\224\220\377\202Slg\377\1\206" \
- "\231\225\377\227\333\343\342\377\1\202\225\221\377\202Slg\377\1\243\262" \
- "\257\377\377\333\343\342\377\244\333\343\342\377\1\315\330\326\377\202" \
- "\223\254\247\377\1\331\342\340\377\205\377\377\377\377\1\343\352\350" \
- "\377\202\223\254\247\377\1\304\321\317\377\377\333\343\342\377\227\333" \
- "\343\342\377\2\323\334\332\377n\204\200\377\202Slg\377\1\247\266\263" \
- "\377\226\333\343\342\377\1\202\225\221\377\202Slg\377\1\243\262\257\377" \
- "\377\333\343\342\377\244\333\343\342\377\1\315\330\326\377\202\223\254" \
- "\247\377\1\331\342\340\377\205\377\377\377\377\1\343\352\350\377\202" \
- "\223\254\247\377\1\304\321\317\377\377\333\343\342\377\230\333\343\342" \
- "\377\2\321\333\331\377l\201}\377\202Slg\377\2\220\242\236\377\323\334" \
- "\333\377\224\333\343\342\377\1\202\225\221\377\202Slg\377\1\243\262\257" \
- "\377\377\333\343\342\377\244\333\343\342\377\1\315\330\326\377\202\223" \
- "\254\247\377\1\331\342\340\377\205\377\377\377\377\1\343\352\350\377" \
- "\202\223\254\247\377\1\304\321\317\377\377\333\343\342\377\231\333\343" \
- "\342\377\10\324\334\333\377\222\243\240\377Vni\377Slg\377]up\377\217" \
- "\240\235\377\273\307\305\377\326\336\335\377\221\333\343\342\377\1\202" \
- "\225\221\377\202Slg\377\1\243\262\257\377\377\333\343\342\377\244\333" \
- "\343\342\377\1\315\330\326\377\202\223\254\247\377\1\331\342\340\377" \
- "\205\377\377\377\377\1\343\352\350\377\202\223\254\247\377\1\304\321" \
- "\317\377\377\333\343\342\377\233\333\343\342\377\2\310\322\321\377k\201" \
- "}\377\204Slg\377\3d{v\377p\206\202\377w\214\210\377\216}\220\215\377" \
- "\1ayt\377\202Slg\377\1\243\262\257\377\377\333\343\342\377\244\333\343" \
- "\342\377\1\315\330\326\377\202\223\254\247\377\1\331\342\340\377\205" \
- "\377\377\377\377\1\343\352\350\377\202\223\254\247\377\1\304\321\317" \
- "\377\377\333\343\342\377\231\333\343\342\377\3\327\340\337\377\252\270" \
- "\266\377p\205\201\377\231Slg\377\1\243\262\257\377\377\333\343\342\377" \
- "\244\333\343\342\377\1\315\330\326\377\202\223\254\247\377\1\331\342" \
- "\340\377\205\377\377\377\377\1\343\352\350\377\202\223\254\247\377\1" \
- "\304\321\317\377\377\333\343\342\377\230\333\343\342\377\2\321\333\331" \
- "\377p\206\202\377\233Slg\377\1\243\262\257\377\377\333\343\342\377\244" \
- "\333\343\342\377\1\315\330\326\377\202\223\254\247\377\1\331\342\340" \
- "\377\205\377\377\377\377\1\343\352\350\377\202\223\254\247\377\1\304" \
- "\321\317\377\377\333\343\342\377\227\333\343\342\377\2\315\327\325\377" \
- "j\200|\377\234Slg\377\1\243\262\257\377\377\333\343\342\377\244\333\343" \
- "\342\377\1\315\330\326\377\202\223\254\247\377\1\331\342\340\377\205" \
- "\377\377\377\377\1\343\352\350\377\202\223\254\247\377\1\304\321\317" \
- "\377\377\333\343\342\377\227\333\343\342\377\1|\220\214\377\235Slg\377" \
- "\1\243\262\257\377\377\333\343\342\377\244\333\343\342\377\1\315\330" \
- "\326\377\202\223\254\247\377\1\331\342\340\377\205\377\377\377\377\1" \
- "\343\352\350\377\202\223\254\247\377\1\304\321\317\377\377\333\343\342" \
- "\377\226\333\343\342\377\1\301\314\312\377\207Slg\377\4Xql\377e|w\377" \
- "q\206\202\377}\220\215\377\220\205\230\224\377\1d{v\377\202Slg\377\1" \
- "\243\262\257\377\377\333\343\342\377\244\333\343\342\377\1\315\330\326" \
- "\377\202\223\254\247\377\1\331\342\340\377\205\377\377\377\377\1\343" \
- "\352\350\377\202\223\254\247\377\1\304\321\317\377\377\333\343\342\377" \
- "\226\333\343\342\377\1\200\224\220\377\204Slg\377\4Tlg\377{\217\213\377" \
- "\263\300\276\377\331\342\341\377\223\333\343\342\377\1\202\225\221\377" \
- "\202Slg\377\1\243\262\257\377\377\333\343\342\377\244\333\343\342\377" \
- "\1\315\330\326\377\202\223\254\247\377\1\331\342\340\377\205\377\377" \
- "\377\377\1\343\352\350\377\202\223\254\247\377\1\304\321\317\377\377" \
- "\333\343\342\377\226\333\343\342\377\1czu\377\204Slg\377\1\256\274\271" \
- "\377\226\333\343\342\377\1\202\225\221\377\202Slg\377\1\243\262\257\377" \
- "\377\333\343\342\377\244\333\343\342\377\1\315\330\326\377\202\223\254" \
- "\247\377\1\331\342\340\377\205\377\377\377\377\1\343\352\350\377\202" \
- "\223\254\247\377\1\304\321\317\377\377\333\343\342\377\225\333\343\342" \
- "\377\2\327\340\337\377Tlg\377\203Slg\377\1\223\244\240\377\227\333\343" \
- "\342\377\1\202\225\221\377\202Slg\377\1\243\262\257\377\377\333\343\342" \
- "\377\244\333\343\342\377\1\315\330\327\377\202\223\254\247\377\1\326" \
- "\337\335\377\205\377\377\377\377\1\340\347\346\377\202\223\254\247\377" \
- "\1\304\321\317\377\377\333\343\342\377\225\333\343\342\377\1\306\321" \
- "\317\377\204Slg\377\1\314\325\324\377\227\333\343\342\377\1\202\225\221" \
- "\377\202Slg\377\1\243\262\257\377\377\333\343\342\377\244\333\343\342" \
- "\377\4\327\340\337\377\224\255\250\377\223\254\247\377\274\313\310\377" \
- "\205\377\377\377\377\1\307\324\321\377\202\223\254\247\377\1\322\334" \
- "\332\377\377\333\343\342\377\225\333\343\342\377\1\310\323\321\377\203" \
- "Slg\377\1\\to\377\230\333\343\342\377\1\305\317\316\377\202\270\305\303" \
- "\377\1\315\326\325\377\377\333\343\342\377\245\333\343\342\377\3\244" \
- "\271\265\377\223\254\247\377\237\265\261\377\205\377\377\377\377\3\252" \
- "\275\271\377\223\254\247\377\235\263\257\377\377\333\343\342\377\226" \
- "\333\343\342\377\2\331\341\340\377Vni\377\202Slg\377\1r\207\203\377\377" \
- "\333\343\342\377\301\333\343\342\377\1\256\300\275\377\202\223\254\247" \
- "\377\1\356\361\361\377\203\377\377\377\377\5\370\372\371\377\224\254" \
- "\250\377\223\254\247\377\250\274\270\377\332\342\341\377\377\333\343" \
- "\342\377\226\333\343\342\377\1k\201|\377\202Slg\377\1m\202~\377\377\333" \
- "\343\342\377\275\333\343\342\377\5\332\342\341\377\301\317\315\377\237" \
- "\265\261\377}\233\225\377v\226\220\377\202\223\254\247\377\1\320\333" \
- "\331\377\203\377\377\377\377\1\335\344\343\377\202\223\254\247\377\202" \
- "z\231\223\377\3\233\263\256\377\275\314\311\377\330\341\340\377\377\333" \
- "\343\342\377\223\333\343\342\377\1\242\261\256\377\202Slg\377\2[sn\377" \
- "\330\340\337\377\377\333\343\342\377\272\333\343\342\377\3\327\340\337" \
- "\377\251\275\271\377x\230\221\377\204o\221\212\377\3\220\252\245\377" \
- "\223\254\247\377\263\305\301\377\203\377\377\377\377\4\300\316\313\377" \
- "\223\254\247\377\222\253\246\377p\222\213\377\203o\221\212\377\3t\225" \
- "\216\377\241\267\263\377\324\336\334\377\377\333\343\342\377\221\333" \
- "\343\342\377\2\327\340\337\377ayt\377\202Slg\377\1\263\300\275\377\227" \
- "\333\343\342\377\1\233\253\250\377\202x\215\211\377\1\262\277\275\377" \
- "\377\333\343\342\377\235\333\343\342\377\3\332\342\341\377\261\303\300" \
- "\377z\232\223\377\206o\221\212\377\4\207\243\235\377\223\254\247\377" \
- "\230\257\253\377\374\375\375\377\202\377\377\377\377\3\243\270\264\377" \
- "\223\254\247\377\212\245\240\377\206o\221\212\377\3w\227\220\377\253" \
- "\277\273\377\330\341\337\377\377\333\343\342\377\220\333\343\342\377" \
- "\5\265\301\277\377Uni\377Slg\377h\177z\377\327\337\336\377\226\333\343" \
- "\342\377\1\202\225\221\377\202Slg\377\1\243\262\257\377\377\333\343\342" \
- "\377\234\333\343\342\377\2\307\323\321\377\201\236\230\377\206o\221\212" \
- "\377\3\205\241\233\377\246\273\267\377\260\302\277\377\202\223\254\247" \
- "\377\1\244\271\265\377\202\246\273\267\377\202\223\254\247\377\3\254" \
- "\277\273\377\252\276\272\377\210\244\236\377\206o\221\212\377\2|\233" \
- "\225\377\300\317\314\377\377\333\343\342\377\220\333\343\342\377\5\255" \
- "\273\271\377Tlg\377Slg\377y\215\211\377\324\335\334\377\225\333\343\342" \
- "\377\1\202\225\221\377\202Slg\377\1\243\262\257\377\377\333\343\342\377" \
- "\233\333\343\342\377\2\267\310\305\377s\224\215\377\204o\221\212\377" \
- "\3y\230\222\377\253\276\273\377\317\331\330\377\202\333\343\342\377\1" \
- "\321\333\331\377\207\223\254\247\377\1\312\326\324\377\202\333\343\342" \
- "\377\3\321\333\332\377\257\302\276\377|\233\225\377\204o\221\212\377" \
- "\2q\222\213\377\260\302\277\377\377\333\343\342\377\220\333\343\342\377" \
- "\6\261\277\274\377axt\377Slg\377d{v\377\253\271\267\377\331\341\340\377" \
- "\223\333\343\342\377\1\202\225\221\377\202Slg\377\1\243\262\257\377\377" \
- "\333\343\342\377\231\333\343\342\377\2\332\342\341\377\245\272\266\377" \
- "\204o\221\212\377\3t\224\216\377\245\272\266\377\326\337\336\377\205" \
- "\333\343\342\377\1\253\276\273\377\205\247\273\267\377\2\250\274\270" \
- "\377\331\342\341\377\204\333\343\342\377\3\330\341\337\377\253\277\273" \
- "\377w\227\220\377\204o\221\212\377\2\234\263\257\377\331\341\340\377" \
- "\377\333\343\342\377\213\333\343\342\377\1\330\340\337\377\203\322\333" \
- "\332\377\2\313\325\324\377\205\230\224\377\202Slg\377\6]up\377\207\232" \
- "\226\377\244\262\260\377\271\306\304\377\306\320\317\377\315\326\325" \
- "\377\216\322\333\332\377\1\177\223\217\377\202Slg\377\1\243\262\257\377" \
- "\377\333\343\342\377\231\333\343\342\377\1\231\261\254\377\204o\221\212" \
- "\377\2\213\246\241\377\321\333\332\377\225\333\343\342\377\2\325\336" \
- "\335\377\225\255\251\377\204o\221\212\377\2\216\251\243\377\331\342\340" \
- "\377\377\333\343\342\377\212\333\343\342\377\1\250\267\264\377\236Sl" \
- "g\377\1\243\262\257\377\377\333\343\342\377\230\333\343\342\377\1\253" \
- "\276\273\377\204o\221\212\377\2\234\263\256\377\331\341\340\377\230\333" \
- "\343\342\377\1\246\273\267\377\204o\221\212\377\1\236\264\260\377\377" \
- "\333\343\342\377\212\333\343\342\377\1\250\267\264\377\236Slg\377\1\243" \
- "\262\257\377\377\333\343\342\377\227\333\343\342\377\2\275\314\311\377" \
- "p\221\213\377\202o\221\212\377\2p\222\213\377\256\301\275\377\233\333" \
- "\343\342\377\2\270\310\305\377r\223\215\377\203o\221\212\377\1\261\303" \
- "\300\377\377\333\343\342\377\211\333\343\342\377\1\250\267\264\377\236" \
- "Slg\377\1\243\262\257\377\377\333\343\342\377\226\333\343\342\377\2\312" \
- "\326\324\377u\226\217\377\203o\221\212\377\1\256\300\275\377\235\333" \
- "\343\342\377\1\266\307\303\377\203o\221\212\377\2q\222\214\377\302\320" \
- "\315\377\377\333\343\342\377\210\333\343\342\377\1\250\267\264\377\236" \
- "Slg\377\1\243\262\257\377\377\333\343\342\377\226\333\343\342\377\1\210" \
- "\244\236\377\203o\221\212\377\1\232\262\255\377\237\333\343\342\377\1" \
- "\243\271\265\377\203o\221\212\377\2\177\235\227\377\331\341\340\377\377" \
- "\333\343\342\377\207\333\343\342\377\1\250\267\264\377\236Slg\377\1\243" \
- "\262\257\377\377\333\343\342\377\225\333\343\342\377\1\272\312\307\377" \
- "\203o\221\212\377\2\211\244\237\377\330\341\340\377\237\333\343\342\377" \
- "\2\332\342\341\377\221\253\245\377\203o\221\212\377\1\256\301\276\377" \
- "\377\333\343\342\377\207\333\343\342\377\1\250\267\264\377\202Slg\377" \
- "\1u\211\205\377\230\270\305\303\377\1v\213\207\377\202Slg\377\1\243\262" \
- "\257\377\377\333\343\342\377\224\333\343\342\377\2\332\342\341\377\201" \
- "\236\230\377\202o\221\212\377\2p\222\213\377\312\326\324\377\241\333" \
- "\343\342\377\2\321\333\332\377t\225\216\377\202o\221\212\377\2x\230\221" \
- "\377\325\337\335\377\377\333\343\342\377\206\333\343\342\377\1\250\267" \
- "\264\377\202Slg\377\1\200\224\220\377\230\333\343\342\377\1\202\225\221" \
- "\377\202Slg\377\1\243\262\257\377\377\333\343\342\377\224\333\343\342" \
- "\377\1\262\304\300\377\203o\221\212\377\1\232\261\255\377\243\333\343" \
- "\342\377\1\246\272\266\377\203o\221\212\377\1\244\271\265\377\377\333" \
- "\343\342\377\206\333\343\342\377\1\250\267\264\377\202Slg\377\1\200\224" \
- "\220\377\230\333\343\342\377\1\202\225\221\377\202Slg\377\1\243\262\257" \
- "\377\377\333\343\342\377\224\333\343\342\377\1\202\237\231\377\202o\221" \
- "\212\377\2r\223\215\377\317\332\331\377\243\333\343\342\377\2\326\337" \
- "\336\377y\230\222\377\202o\221\212\377\2x\230\221\377\332\342\341\377" \
- "\377\333\343\342\377\205\333\343\342\377\1\250\267\264\377\202Slg\377" \
- "\1\200\224\220\377\230\333\343\342\377\1\202\225\221\377\202Slg\377\1" \
- "\243\262\257\377\377\333\343\342\377\223\333\343\342\377\1\315\330\326" \
- "\377\203o\221\212\377\1\236\264\260\377\245\333\343\342\377\1\253\276" \
- "\273\377\203o\221\212\377\1\302\320\315\377\377\333\343\342\377\205\333" \
- "\343\342\377\1\250\267\264\377\202Slg\377\1\200\224\220\377\230\333\343" \
- "\342\377\1\202\225\221\377\202Slg\377\1\243\262\257\377\377\333\343\342" \
- "\377\223\333\343\342\377\1\253\277\273\377\203o\221\212\377\1\302\320" \
- "\315\377\245\333\343\342\377\1\317\331\330\377\203o\221\212\377\1\237" \
- "\265\261\377\377\333\343\342\377\205\333\343\342\377\1\311\324\322\377" \
- "\202\254\271\267\377\1\274\307\306\377\230\333\343\342\377\1\325\336" \
- "\335\377\202\322\333\332\377\1\327\340\337\377\377\333\343\342\377\223" \
- "\333\343\342\377\1\212\246\240\377\202o\221\212\377\2w\227\221\377\332" \
- "\342\341\377\246\333\343\342\377\1\205\241\233\377\202o\221\212\377\1" \
- "}\234\226\377\377\333\343\342\377\377\333\343\342\377\267\333\343\342" \
- "\377\2\325\336\335\377p\222\213\377\202o\221\212\377\1\230\260\253\377" \
- "\247\333\343\342\377\1\246\273\267\377\203o\221\212\377\1\313\327\325" \
- "\377\377\333\343\342\377\377\333\343\342\377\266\333\343\342\377\1\310" \
- "\324\322\377\203o\221\212\377\1\264\305\302\377\247\333\343\342\377\1" \
- "\275\314\311\377\203o\221\212\377\1\275\314\312\377\377\333\343\342\377" \
- "\377\333\343\342\377\266\333\343\342\377\1\275\314\312\377\203o\221\212" \
- "\377\1\277\316\313\377\247\333\343\342\377\1\310\325\323\377\203o\221" \
- "\212\377\1\262\304\300\377\377\333\343\342\377\377\333\343\342\377\266" \
- "\333\343\342\377\1\263\305\301\377\203o\221\212\377\1\312\326\324\377" \
- "\247\333\343\342\377\1\323\335\334\377\203o\221\212\377\1\247\273\267" \
- "\377\377\333\343\342\377\217\333\343\342\377\4\330\340\337\377\300\313" \
- "\311\377\262\277\275\377\247\266\263\377\202\234\254\251\377\4\247\265" \
- "\263\377\262\277\275\377\277\313\311\377\330\340\337\377\377\333\343" \
- "\342\377\235\333\343\342\377\1\251\275\271\377\203o\221\212\377\1\325" \
- "\336\335\377\250\333\343\342\377\1r\223\215\377\202o\221\212\377\1\233" \
- "\263\256\377\377\333\343\342\377\214\333\343\342\377\4\316\330\326\377" \
- "\231\251\246\377v\213\207\377Xpk\377\210Slg\377\4Xpk\377v\212\206\377" \
- "\230\251\246\377\316\327\326\377\377\333\343\342\377\232\333\343\342" \
- "\377\1\242\267\263\377\203o\221\212\377\1\332\342\341\377\250\333\343" \
- "\342\377\1y\231\222\377\202o\221\212\377\1\225\256\251\377\377\333\343" \
- "\342\377\212\333\343\342\377\3\310\323\321\377\210\233\227\377Voj\377" \
- "\216Slg\377\3Voj\377\210\232\227\377\307\322\320\377\377\333\343\342" \
- "\377\230\333\343\342\377\1\253\276\273\377\203o\221\212\377\1\322\334" \
- "\333\377\247\333\343\342\377\2\332\342\341\377p\222\213\377\202o\221" \
- "\212\377\1\236\265\260\377\377\333\343\342\377\211\333\343\342\377\2" \
- "\251\270\265\377Xql\377\222Slg\377\2Xpk\377\246\265\262\377\377\333\343" \
- "\342\377\227\333\343\342\377\1\266\307\303\377\203o\221\212\377\1\307" \
- "\324\322\377\247\333\343\342\377\1\320\333\331\377\203o\221\212\377\1" \
- "\251\275\271\377\377\333\343\342\377\207\333\343\342\377\2\331\342\341" \
- "\377\210\233\227\377\226Slg\377\2\204\227\223\377\330\341\340\377\377" \
- "\333\343\342\377\225\333\343\342\377\1\300\317\314\377\203o\221\212\377" \
- "\1\274\314\311\377\247\333\343\342\377\1\305\322\320\377\203o\221\212" \
- "\377\1\265\306\303\377\377\333\343\342\377\207\333\343\342\377\1\213" \
- "\235\231\377\230Slg\377\1\206\231\225\377\377\333\343\342\377\225\333" \
- "\343\342\377\1\313\327\325\377\203o\221\212\377\1\256\301\276\377\247" \
- "\333\343\342\377\1\271\311\307\377\203o\221\212\377\1\300\317\314\377" \
- "\366\333\343\342\377\5\322\333\332\377\240\260\255\377\220\241\236\377" \
- "\246\265\262\377\330\340\337\377\212\333\343\342\377\1\231\251\246\377" \
- "\211Slg\377\3[sn\377g}y\377l\202~\377\202q\207\202\377\3l\202~\377g}" \
- "y\377[sn\377\211Slg\377\1\227\247\244\377\377\333\343\342\377\224\333" \
- "\343\342\377\2\330\341\337\377t\225\216\377\202o\221\212\377\1\220\252" \
- "\245\377\247\333\343\342\377\1\235\264\257\377\203o\221\212\377\1\320" \
- "\333\331\377\365\333\343\342\377\2\310\323\321\377ayt\377\203Slg\377" \
- "\2m\203\177\377\326\336\335\377\210\333\343\342\377\2\306\321\317\377" \
- "Umh\377\205Slg\377\4o\204\200\377\230\250\245\377\272\306\304\377\317" \
- "\330\327\377\210\333\343\342\377\4\317\330\327\377\272\306\304\377\227" \
- "\250\245\377o\204\200\377\205Slg\377\2Tmh\377\305\317\316\377\377\333" \
- "\343\342\377\224\333\343\342\377\1\223\254\247\377\202o\221\212\377\2" \
- "s\224\215\377\327\340\337\377\246\333\343\342\377\1|\232\224\377\202" \
- "o\221\212\377\1\206\242\234\377\366\333\343\342\377\1y\215\211\377\205" \
- "Slg\377\1\233\253\250\377\210\333\343\342\377\1~\222\216\377\204Slg\377" \
- "\2{\217\213\377\301\314\312\377\220\333\343\342\377\2\303\316\314\377" \
- "~\222\216\377\204Slg\377\1}\220\215\377\377\333\343\342\377\224\333\343" \
- "\342\377\1\264\305\302\377\203o\221\212\377\1\273\312\310\377\245\333" \
- "\343\342\377\1\306\323\321\377\203o\221\212\377\1\250\274\270\377\365" \
- "\333\343\342\377\2\331\341\340\377Voj\377\205Slg\377\1\177\222\217\377" \
- "\207\333\343\342\377\1\305\317\316\377\203Slg\377\2Voj\377\247\266\263" \
- "\377\224\333\343\342\377\2\253\271\267\377Woj\377\203Slg\377\1\303\316" \
- "\314\377\377\333\343\342\377\223\333\343\342\377\2\323\335\334\377p\222" \
- "\213\377\202o\221\212\377\1\225\255\251\377\245\333\343\342\377\1\237" \
- "\265\261\377\203o\221\212\377\1\312\326\324\377\366\333\343\342\377\1" \
- "axt\377\205Slg\377\1\210\233\227\377\207\333\343\342\377\1\235\254\252" \
- "\377\203Slg\377\1\260\276\273\377\226\333\343\342\377\1\263\300\276\377" \
- "\203Slg\377\1\231\251\246\377\377\333\343\342\377\224\333\343\342\377" \
- "\1\213\246\241\377\203o\221\212\377\1\307\323\321\377\243\333\343\342" \
- "\377\2\316\331\327\377r\223\214\377\202o\221\212\377\1\200\236\230\377" \
- "\367\333\343\342\377\1\232\252\247\377\205Slg\377\1\271\306\304\377\207" \
- "\333\343\342\377\1v\213\207\377\202Slg\377\1\204\227\223\377\230\333" \
- "\343\342\377\1\212\234\231\377\202Slg\377\1q\206\202\377\377\333\343" \
- "\342\377\224\333\343\342\377\1\300\316\314\377\203o\221\212\377\1\215" \
- "\247\242\377\207\333\343\342\377\4\327\337\336\377\236\264\260\377\270" \
- "\310\305\377\324\336\334\377\215\333\343\342\377\4\326\337\336\377\273" \
- "\312\310\377\236\264\260\377\322\334\332\377\207\333\343\342\377\1\227" \
- "\257\252\377\203o\221\212\377\1\263\305\301\377\367\333\343\342\377\6" \
- "\331\341\340\377\225\245\242\377Voj\377Slg\377^uq\377\251\267\265\377" \
- "\210\333\343\342\377\1Xql\377\202Slg\377\1\301\314\312\377\230\333\343" \
- "\342\377\1\305\317\316\377\202Slg\377\2Tmh\377\331\341\340\377\377\333" \
- "\343\342\377\224\333\343\342\377\1\215\250\243\377\203o\221\212\377\1" \
- "\276\315\312\377\206\333\343\342\377\1\274\313\311\377\202\223\254\247" \
- "\377\3\224\255\250\377\254\277\274\377\313\326\325\377\211\333\343\342" \
- "\377\3\316\331\327\377\257\302\276\377\226\256\251\377\202\223\254\247" \
- "\377\1\265\306\303\377\206\333\343\342\377\1\307\324\322\377\203o\221" \
- "\212\377\2\202\237\231\377\332\342\341\377\371\333\343\342\377\2\330" \
- "\340\337\377\315\326\325\377\211\333\343\342\377\1\325\335\334\377\202" \
- "Slg\377\1e|w\377\232\333\343\342\377\1g~y\377\202Slg\377\1\316\330\326" \
- "\377\377\333\343\342\377\224\333\343\342\377\1\306\323\321\377\203o\221" \
- "\212\377\2z\232\223\377\321\333\332\377\205\333\343\342\377\1\236\264" \
- "\260\377\205\223\254\247\377\3\241\267\262\377\277\316\313\377\330\341" \
- "\340\377\203\333\343\342\377\3\331\341\340\377\302\320\315\377\244\271" \
- "\265\377\205\223\254\247\377\2\231\260\254\377\331\341\340\377\204\333" \
- "\343\342\377\2\325\336\335\377\200\236\230\377\203o\221\212\377\1\274" \
- "\313\311\377\377\333\343\342\377\206\333\343\342\377\1\311\323\322\377" \
- "\202Slg\377\1w\213\207\377\232\333\343\342\377\1y\215\211\377\202Slg" \
- "\377\1\303\316\314\377\377\333\343\342\377\225\333\343\342\377\1\226" \
- "\256\252\377\203o\221\212\377\2\207\243\236\377\330\341\337\377\203\333" \
- "\343\342\377\1\310\324\322\377\202\223\254\247\377\2\271\311\306\377" \
- "\262\304\300\377\204\223\254\247\377\5\230\260\253\377\275\314\312\377" \
- "\333\343\342\377\304\321\317\377\232\261\254\377\204\223\254\247\377" \
- "\2\255\300\274\377\276\315\312\377\202\223\254\247\377\1\301\317\314" \
- "\377\203\333\343\342\377\2\332\342\341\377\216\250\243\377\203o\221\212" \
- "\377\1\213\246\241\377\377\333\343\342\377\207\333\343\342\377\1\301" \
- "\314\312\377\202Slg\377\1\200\224\220\377\232\333\343\342\377\1\203\226" \
- "\222\377\202Slg\377\1\273\307\305\377\377\333\343\342\377\225\333\343" \
- "\342\377\2\325\337\335\377\201\237\231\377\203o\221\212\377\1\230\260" \
- "\253\377\203\333\343\342\377\10\251\275\271\377\223\254\247\377\225\255" \
- "\251\377\365\367\367\377\377\377\377\377\360\363\362\377\302\320\315" \
- "\377\231\261\254\377\202\223\254\247\377\3\236\264\260\377\333\343\342" \
- "\377\247\273\267\377\202\223\254\247\377\10\227\257\252\377\275\314\311" \
- "\377\353\360\357\377\377\377\377\377\373\374\373\377\232\261\254\377" \
- "\223\254\247\377\242\270\263\377\203\333\343\342\377\1\240\266\262\377" \
- "\203o\221\212\377\2z\231\222\377\317\332\331\377\377\333\343\342\377" \
- "\207\333\343\342\377\1\313\325\324\377\202Slg\377\1t\211\205\377\232" \
- "\333\343\342\377\1v\213\207\377\202Slg\377\1\305\317\316\377\377\333" \
- "\343\342\377\226\333\343\342\377\2\315\330\326\377w\227\220\377\203o" \
- "\221\212\377\3\223\254\250\377\327\340\336\377\322\334\333\377\202\223" \
- "\254\247\377\1\271\311\306\377\204\377\377\377\377\2\372\373\373\377" \
- "\271\311\306\377\202\223\254\247\377\5\323\335\333\377\226\256\251\377" \
- "\223\254\247\377\257\301\276\377\367\371\371\377\204\377\377\377\377" \
- "\1\303\321\316\377\202\223\254\247\377\3\314\330\326\377\331\342\340" \
- "\377\235\264\257\377\203o\221\212\377\2r\223\214\377\304\321\317\377" \
- "\374\333\343\342\377\3\303\316\314\377\263\300\276\377\313\325\324\377" \
- "\210\333\343\342\377\1\327\337\336\377\202Slg\377\2`ws\377\332\342\341" \
- "\377\231\333\343\342\377\1ayt\377\202Slg\377\1\321\332\331\377\377\333" \
- "\343\342\377\227\333\343\342\377\2\277\316\313\377p\222\213\377\203o" \
- "\221\212\377\2\205\241\233\377\257\301\276\377\202\223\254\247\377\1" \
- "\346\354\353\377\205\377\377\377\377\1\315\330\326\377\202\223\253\246" \
- "\377\4\225\255\250\377\222\253\246\377\223\254\247\377\300\316\313\377" \
- "\205\377\377\377\377\1\360\363\362\377\202\223\254\247\377\2\253\277" \
- "\273\377\215\250\242\377\204o\221\212\377\1\264\305\302\377\373\333\343" \
- "\342\377\2\325\336\335\377}\221\215\377\202Slg\377\2Tlg\377\220\242\236" \
- "\377\210\333\343\342\377\1\\to\377\202Slg\377\1\267\304\302\377\230\333" \
- "\343\342\377\1\274\307\306\377\202Slg\377\2Wpk\377\332\342\341\377\377" \
- "\333\343\342\377\230\333\343\342\377\2\261\303\300\377p\222\213\377\203" \
- "o\221\212\377\3\220\252\245\377\223\254\247\377\247\273\267\377\204\377" \
- "\377\377\377\3\372\373\373\377\300\317\314\377\222\253\246\377\206\223" \
- "\254\247\377\2\271\311\306\377\367\371\371\377\204\377\377\377\377\4" \
- "\261\303\300\377\223\254\247\377\222\253\246\377q\222\214\377\203o\221" \
- "\212\377\1\247\274\270\377\374\333\343\342\377\1\213\235\232\377\205" \
- "Slg\377\1\254\271\267\377\207\333\343\342\377\1~\221\216\377\202Slg\377" \
- "\2v\212\206\377\332\342\341\377\227\333\343\342\377\1y\216\212\377\202" \
- "Slg\377\1z\216\212\377\377\333\343\342\377\232\333\343\342\377\4\276" \
- "\315\312\377v\226\220\377o\221\212\377{\232\224\377\202\223\254\247\377" \
- "\1\325\337\335\377\203\377\377\377\377\15\376\376\376\377\255\300\274" \
- "\377\223\254\247\377\230\260\253\377\315\331\326\377\353\360\357\377" \
- "\374\375\375\377\356\362\361\377\323\335\333\377\234\263\256\377\223" \
- "\254\247\377\245\272\265\377\374\374\374\377\203\377\377\377\377\1\337" \
- "\346\345\377\202\223\254\247\377\4\177\235\227\377o\221\212\377s\224" \
- "\215\377\267\307\305\377\374\333\343\342\377\2\332\342\341\377\\so\377" \
- "\205Slg\377\1\204\227\223\377\207\333\343\342\377\1\244\263\260\377\203" \
- "Slg\377\1\234\253\251\377\226\333\343\342\377\1\233\253\250\377\203S" \
- "lg\377\1\242\261\256\377\377\333\343\342\377\233\333\343\342\377\6\313" \
- "\327\325\377\200\236\230\377\213\246\240\377\223\254\247\377\232\261" \
- "\255\377\373\374\373\377\203\377\377\377\377\4\320\333\330\377\223\254" \
- "\247\377\244\271\264\377\361\364\364\377\205\377\377\377\377\4\366\370" \
- "\370\377\254\277\273\377\223\254\247\377\304\321\317\377\203\377\377" \
- "\377\377\6\376\376\376\377\241\267\262\377\223\254\247\377\216\250\243" \
- "\377{\232\224\377\306\323\321\377\375\333\343\342\377\2\331\342\341\377" \
- "Yrm\377\205Slg\377\1\201\225\221\377\207\333\343\342\377\2\314\326\324" \
- "\377Uni\377\203Slg\377\2\221\242\237\377\331\341\340\377\222\333\343" \
- "\342\377\2\331\341\340\377\220\242\236\377\203Slg\377\2Uni\377\314\325" \
- "\324\377\377\333\343\342\377\234\333\343\342\377\1\307\324\322\377\202" \
- "\223\254\247\377\1\303\321\316\377\203\377\377\377\377\4\367\371\371" \
- "\377\227\257\252\377\225\255\250\377\351\356\355\377\207\377\377\377" \
- "\377\4\361\365\364\377\230\260\253\377\224\255\250\377\357\363\362\377" \
- "\203\377\377\377\377\1\315\331\326\377\202\223\254\247\377\1\276\315" \
- "\313\377\377\333\343\342\377\1\204\226\223\377\205Slg\377\1\245\264\261" \
- "\377\210\333\343\342\377\1\214\236\233\377\204Slg\377\3g}y\377\251\267" \
- "\265\377\327\337\336\377\216\333\343\342\377\3\325\336\335\377\246\265" \
- "\262\377e|w\377\204Slg\377\1\215\236\233\377\377\333\343\342\377\235" \
- "\333\343\342\377\1\256\300\275\377\202\223\254\247\377\1\360\363\363" \
- "\377\203\377\377\377\377\3\341\350\346\377\223\254\247\377\266\307\304" \
- "\377\211\377\377\377\377\3\300\317\314\377\223\254\247\377\326\340\336" \
- "\377\203\377\377\377\377\4\367\371\370\377\226\256\252\377\223\254\247" \
- "\377\247\273\267\377\377\333\343\342\377\2\320\332\330\377q\207\202\377" \
- "\203Slg\377\2\204\226\223\377\332\342\341\377\210\333\343\342\377\2\317" \
- "\331\327\377Yrm\377\205Slg\377\7Yql\377~\222\216\377\240\260\255\377" \
- "\265\302\300\377\312\324\323\377\326\336\335\377\332\342\341\377\202" \
- "\333\343\342\377\7\332\342\341\377\326\336\335\377\312\324\323\377\265" \
- "\302\300\377\240\260\255\377}\220\215\377Wpk\377\205Slg\377\2Yrm\377" \
- "\317\331\327\377\377\333\343\342\377\234\333\343\342\377\4\325\336\335" \
- "\377\225\255\250\377\223\254\247\377\262\304\300\377\204\377\377\377" \
- "\377\3\312\326\324\377\223\254\247\377\315\331\327\377\211\377\377\377" \
- "\377\3\330\341\337\377\223\254\247\377\300\317\314\377\204\377\377\377" \
- "\377\1\274\313\310\377\202\223\254\247\377\1\320\333\331\377\377\333" \
- "\343\342\377\4\331\342\341\377\272\306\304\377\251\270\265\377\300\313" \
- "\311\377\213\333\343\342\377\1\255\273\271\377\214Slg\377\202Xpk\377" \
- "\214Slg\377\1\256\273\271\377\377\333\343\342\377\235\333\343\342\377" \
- "\1\271\311\306\377\202\223\254\247\377\1\340\347\345\377\204\377\377" \
- "\377\377\3\302\320\316\377\223\254\247\377\325\337\335\377\211\377\377" \
- "\377\377\3\340\347\345\377\223\254\247\377\270\311\305\377\204\377\377" \
- "\377\377\1\352\357\356\377\202\223\254\247\377\1\263\304\301\377\377" \
- "\333\343\342\377\220\333\343\342\377\1\237\256\253\377\230Slg\377\1\236" \
- "\255\253\377\377\333\343\342\377\235\333\343\342\377\5\332\342\341\377" \
- "\234\263\256\377\223\254\247\377\241\267\263\377\376\376\376\377\204" \
- "\377\377\377\377\3\330\341\337\377\223\254\247\377\277\316\313\377\211" \
- "\377\377\377\377\3\311\326\323\377\223\254\247\377\316\331\327\377\205" \
- "\377\377\377\377\4\253\276\272\377\223\254\247\377\227\257\252\377\330" \
- "\340\337\377\377\333\343\342\377\220\333\343\342\377\2\236\256\253\377" \
- "Uni\377\224Slg\377\2Uni\377\236\255\253\377\377\333\343\342\377\236\333" \
- "\343\342\377\1\305\322\320\377\202\223\254\247\377\1\316\331\327\377" \
- "\205\377\377\377\377\4\356\362\362\377\223\254\247\377\237\265\261\377" \
- "\371\373\373\377\207\377\377\377\377\4\375\376\376\377\246\273\267\377" \
- "\223\254\247\377\344\352\351\377\205\377\377\377\377\1\330\341\337\377" \
- "\202\223\254\247\377\1\276\315\312\377\377\333\343\342\377\221\333\343" \
- "\342\377\2\276\312\310\377e{w\377\222Slg\377\2dzv\377\275\311\307\377" \
- "\377\333\343\342\377\237\333\343\342\377\4\247\273\267\377\223\254\247" \
- "\377\226\256\252\377\367\371\371\377\206\377\377\377\377\3\264\306\302" \
- "\377\223\254\247\377\274\314\310\377\207\377\377\377\377\4\310\325\322" \
- "\377\223\254\247\377\251\275\271\377\376\376\376\377\205\377\377\377" \
- "\377\4\374\375\374\377\234\263\256\377\223\254\247\377\240\266\262\377" \
- "\377\333\343\342\377\222\333\343\342\377\3\326\336\335\377\242\261\256" \
- "\377e|w\377\216Slg\377\3d{v\377\241\261\256\377\325\336\335\377\377\333" \
- "\343\342\377\237\333\343\342\377\1\320\333\331\377\202\223\254\247\377" \
- "\1\274\314\311\377\207\377\377\377\377\5\365\367\367\377\233\262\255" \
- "\377\223\254\247\377\262\304\301\377\364\367\366\377\203\377\377\377" \
- "\377\5\370\372\371\377\273\313\310\377\223\254\247\377\226\257\252\377" \
- "\356\362\361\377\207\377\377\377\377\1\307\324\321\377\202\223\254\247" \
- "\377\1\312\326\324\377\377\333\343\342\377\223\333\343\342\377\5\331" \
- "\341\340\377\263\300\275\377\220\241\236\377o\204\200\377Umh\377\206" \
- "Slg\377\5Umh\377n\204\200\377\217\241\235\377\262\277\275\377\331\341" \
- "\340\377\377\333\343\342\377\241\333\343\342\377\1\262\304\301\377\202" \
- "\223\254\247\377\1\352\357\356\377\210\377\377\377\377\13\345\353\352" \
- "\377\240\266\261\377\223\254\247\377\225\255\250\377\247\274\270\377" \
- "\271\311\306\377\252\276\272\377\226\257\252\377\223\254\247\377\234" \
- "\263\256\377\336\346\344\377\210\377\377\377\377\4\363\365\365\377\224" \
- "\254\250\377\223\254\247\377\254\277\273\377\377\333\343\342\377\227" \
- "\333\343\342\377\3\327\340\337\377\315\326\325\377\303\316\314\377\202" \
- "\271\306\304\377\3\303\316\314\377\315\326\325\377\327\340\337\377\377" \
- "\333\343\342\377\244\333\343\342\377\4\330\340\337\377\227\257\252\377" \
- "\223\254\247\377\253\276\273\377\212\377\377\377\377\3\371\372\372\377" \
- "\232\262\255\377\223\253\246\377\203\223\254\247\377\3\222\253\246\377" \
- "\226\256\252\377\364\366\365\377\212\377\377\377\377\4\265\306\303\377" \
- "\223\254\247\377\224\255\250\377\324\335\334\377\377\333\343\342\377" \
- "\377\333\343\342\377\302\333\343\342\377\1\276\315\312\377\202\223\254" \
- "\247\377\1\331\342\340\377\212\377\377\377\377\1\346\353\352\377\202" \
- "\223\254\247\377\6\260\302\276\377\305\322\320\377\266\307\304\377\223" \
- "\253\247\377\223\254\247\377\333\343\342\377\212\377\377\377\377\1\343" \
- "\351\350\377\202\223\254\247\377\1\267\310\305\377\377\333\343\342\377" \
- "\377\333\343\342\377\302\333\343\342\377\4\237\265\261\377\223\254\247" \
- "\377\234\263\256\377\374\375\374\377\212\377\377\377\377\1\270\310\305" \
- "\377\202\223\254\247\377\6\322\334\333\377\333\343\342\377\327\340\337" \
- "\377\227\257\252\377\223\254\247\377\256\300\275\377\213\377\377\377" \
- "\377\4\244\271\265\377\223\254\247\377\232\261\255\377\331\342\341\377" \
- "\377\333\343\342\377\211\333\343\342\377\1\235\255\252\377\207czu\377" \
- "\1\274\310\306\377\377\333\343\342\377\256\333\343\342\377\1\312\326" \
- "\324\377\202\223\254\247\377\1\307\324\321\377\212\377\377\377\377\4" \
- "\364\367\366\377\225\255\250\377\223\254\247\377\251\275\271\377\203" \
- "\333\343\342\377\1\262\303\300\377\202\223\254\247\377\1\354\361\360" \
- "\377\212\377\377\377\377\1\321\334\332\377\202\223\254\247\377\1\303" \
- "\320\316\377\377\333\343\342\377\211\333\343\342\377\1|\217\214\377\207" \
- "Slg\377\1\270\304\302\377\377\333\343\342\377\256\333\343\342\377\4\253" \
- "\276\273\377\223\254\247\377\224\255\250\377\363\366\365\377\212\377" \
- "\377\377\377\1\312\326\323\377\202\223\254\247\377\1\307\324\322\377" \
- "\203\333\343\342\377\1\320\332\331\377\202\223\254\247\377\1\277\316" \
- "\313\377\212\377\377\377\377\4\371\372\372\377\230\260\253\377\223\254" \
- "\247\377\244\271\265\377\377\333\343\342\377\211\333\343\342\377\1ax" \
- "t\377\207Slg\377\1\270\304\302\377\377\333\343\342\377\255\333\343\342" \
- "\377\4\324\335\334\377\224\255\250\377\223\254\247\377\266\307\303\377" \
- "\212\377\377\377\377\5\375\375\375\377\236\264\260\377\223\254\247\377" \
- "\236\264\260\377\332\342\341\377\204\333\343\342\377\4\246\273\267\377" \
- "\223\254\247\377\230\257\253\377\371\372\372\377\212\377\377\377\377" \
- "\1\300\316\313\377\202\223\254\247\377\1\316\331\330\377\377\333\343" \
- "\342\377\207\333\343\342\377\1\325\335\334\377\205Slg\377\4Yql\377\216" \
- "\237\234\377\251\270\265\377\323\334\332\377\377\333\343\342\377\255" \
- "\333\343\342\377\1\267\307\304\377\202\223\254\247\377\1\343\352\350" \
- "\377\212\377\377\377\377\1\333\343\342\377\202\223\254\247\377\1\274" \
- "\313\310\377\205\333\343\342\377\1\305\322\320\377\202\223\254\247\377" \
- "\1\320\333\331\377\212\377\377\377\377\1\355\361\360\377\202\223\254" \
- "\247\377\1\260\302\277\377\377\333\343\342\377\207\333\343\342\377\1" \
- "\313\325\324\377\204Slg\377\2i\200{\377\313\325\324\377\377\333\343\342" \
- "\377\257\333\343\342\377\4\331\342\341\377\232\261\255\377\223\254\247" \
- "\377\245\271\265\377\213\377\377\377\377\4\256\300\275\377\223\254\247" \
- "\377\226\256\251\377\327\337\336\377\205\333\343\342\377\4\332\342\341" \
- "\377\234\262\256\377\223\254\247\377\243\271\264\377\213\377\377\377" \
- "\377\4\256\301\275\377\223\254\247\377\226\256\251\377\327\337\336\377" \
- "\377\333\343\342\377\206\333\343\342\377\1\302\315\313\377\204Slg\377" \
- "\1\273\307\305\377\377\333\343\342\377\260\333\343\342\377\1\303\320" \
- "\316\377\202\223\254\247\377\1\322\334\332\377\212\377\377\377\377\1" \
- "\354\361\360\377\202\223\254\247\377\1\260\302\277\377\207\333\343\342" \
- "\377\1\271\311\306\377\202\223\254\247\377\1\342\350\347\377\212\377" \
- "\377\377\377\1\334\344\342\377\202\223\254\247\377\1\274\313\310\377" \
- "\377\333\343\342\377\206\333\343\342\377\1\307\322\320\377\203Slg\377" \
- "\1^uq\377\377\333\343\342\377\261\333\343\342\377\4\244\271\265\377\223" \
- "\254\247\377\230\260\253\377\371\373\372\377\212\377\377\377\377\1\277" \
- "\316\313\377\202\223\254\247\377\1\316\331\327\377\207\333\343\342\377" \
- "\4\325\336\335\377\225\255\250\377\223\254\247\377\264\306\302\377\212" \
- "\377\377\377\377\5\375\376\375\377\237\265\261\377\223\254\247\377\236" \
- "\264\260\377\332\342\341\377\377\333\343\342\377\205\333\343\342\377" \
- "\1\326\337\336\377\203Slg\377\1q\207\202\377\377\333\343\342\377\260" \
- "\333\343\342\377\1\316\331\327\377\202\223\254\247\377\1\300\317\314" \
- "\377\212\377\377\377\377\4\371\372\372\377\230\257\253\377\223\254\247" \
- "\377\244\271\265\377\211\333\343\342\377\4\255\300\274\377\223\254\247" \
- "\377\224\254\250\377\362\365\364\377\212\377\377\377\377\1\312\326\324" \
- "\377\202\223\254\247\377\1\307\324\322\377\377\333\343\342\377\206\333" \
- "\343\342\377\1^vq\377\202Slg\377\1o\205\201\377\377\333\343\342\377\260" \
- "\333\343\342\377\1\260\302\277\377\202\223\254\247\377\1\356\361\361" \
- "\377\212\377\377\377\377\1\320\333\331\377\202\223\254\247\377\1\303" \
- "\320\316\377\211\333\343\342\377\1\314\327\325\377\202\223\254\247\377" \
- "\1\306\323\320\377\212\377\377\377\377\4\365\367\367\377\225\255\251" \
- "\377\223\254\247\377\251\275\271\377\377\333\343\342\377\206\333\343" \
- "\342\377\1}\221\215\377\202Slg\377\1byt\377\230\333\343\342\377\1\305" \
- "\317\316\377\202\270\305\303\377\1\315\326\325\377\377\333\343\342\377" \
- "\223\333\343\342\377\4\326\337\336\377\226\256\251\377\223\254\247\377" \
- "\257\301\276\377\213\377\377\377\377\4\243\271\264\377\223\254\247\377" \
- "\232\261\255\377\331\342\341\377\212\333\343\342\377\4\242\267\263\377" \
- "\223\254\247\377\233\262\256\377\374\374\374\377\212\377\377\377\377" \
- "\1\271\311\306\377\202\223\254\247\377\1\322\334\333\377\377\333\343" \
- "\342\377\205\333\343\342\377\1\270\304\302\377\203Slg\377\1\305\320\316" \
- "\377\227\333\343\342\377\1\202\225\221\377\202Slg\377\1\243\262\257\377" \
- "\377\333\343\342\377\223\333\343\342\377\1\273\313\310\377\202\223\254" \
- "\247\377\1\334\344\343\377\212\377\377\377\377\1\342\351\347\377\202" \
- "\223\254\247\377\1\267\307\304\377\213\333\343\342\377\1\300\316\314" \
- "\377\202\223\254\247\377\1\327\340\336\377\212\377\377\377\377\1\346" \
- "\354\353\377\202\223\254\247\377\1\265\306\302\377\377\333\343\342\377" \
- "\206\333\343\342\377\1k\201|\377\202Slg\377\1\216\240\235\377\227\333" \
- "\343\342\377\1\202\225\221\377\202Slg\377\1\243\262\257\377\377\333\343" \
- "\342\377\222\333\343\342\377\5\332\342\341\377\235\264\257\377\223\254" \
- "\247\377\237\265\261\377\375\376\375\377\212\377\377\377\377\4\264\306" \
- "\302\377\223\254\247\377\224\255\250\377\324\335\334\377\213\333\343" \
- "\342\377\4\331\341\340\377\230\260\253\377\223\254\247\377\252\275\271" \
- "\377\213\377\377\377\377\4\250\274\270\377\223\254\247\377\230\260\253" \
- "\377\331\341\340\377\377\333\343\342\377\205\333\343\342\377\5\301\315" \
- "\313\377Yrm\377Slg\377Umh\377\277\313\311\377\226\333\343\342\377\1\202" \
- "\225\221\377\202Slg\377\1\243\262\257\377\377\333\343\342\377\222\333" \
- "\343\342\377\1\307\324\322\377\202\223\254\247\377\1\313\327\324\377" \
- "\212\377\377\377\377\4\362\365\364\377\224\254\250\377\223\254\247\377" \
- "\253\276\273\377\215\333\343\342\377\1\264\305\302\377\202\223\254\247" \
- "\377\1\350\356\355\377\212\377\377\377\377\1\325\337\335\377\202\223" \
- "\254\247\377\1\300\316\314\377\377\333\343\342\377\206\333\343\342\377" \
- "\5\265\302\300\377Umh\377Slg\377]up\377\301\314\312\377\225\333\343\342" \
- "\377\1\202\225\221\377\202Slg\377\1\243\262\257\377\377\333\343\342\377" \
- "\222\333\343\342\377\4\251\274\271\377\223\254\247\377\225\256\251\377" \
- "\366\370\367\377\212\377\377\377\377\1\306\323\321\377\202\223\254\247" \
- "\377\1\312\326\324\377\215\333\343\342\377\1\322\334\332\377\202\223" \
- "\254\247\377\1\273\313\310\377\212\377\377\377\377\4\373\374\373\377" \
- "\232\261\255\377\223\254\247\377\242\267\263\377\377\333\343\342\377" \
- "\207\333\343\342\377\6\267\304\302\377e{w\377Slg\377Vni\377\224\245\242" \
- "\377\321\332\331\377\223\333\343\342\377\1\202\225\221\377\202Slg\377" \
- "\1\243\262\257\377\377\333\343\342\377\221\333\343\342\377\1\322\334" \
- "\332\377\202\223\254\247\377\1\271\311\306\377\212\377\377\377\377\4" \
- "\374\374\374\377\233\262\256\377\223\254\247\377\240\266\261\377\217" \
- "\333\343\342\377\4\251\275\271\377\223\254\247\377\226\256\251\377\366" \
- "\370\370\377\212\377\377\377\377\1\304\321\317\377\202\223\254\247\377" \
- "\1\314\327\325\377\377\333\343\342\377\203\333\343\342\377\1\330\340" \
- "\337\377\203\322\333\332\377\2\315\326\325\377\207\232\226\377\202Sl" \
- "g\377\6Vni\377|\220\214\377\234\254\251\377\264\301\277\377\303\316\314" \
- "\377\314\325\324\377\216\322\333\332\377\1\177\223\217\377\202Slg\377" \
- "\1\243\262\257\377\377\333\343\342\377\221\333\343\342\377\1\264\305" \
- "\302\377\202\223\254\247\377\1\346\353\352\377\212\377\377\377\377\1" \
- "\330\341\337\377\202\223\254\247\377\1\276\315\312\377\217\333\343\342" \
- "\377\1\307\324\322\377\202\223\254\247\377\1\315\330\326\377\212\377" \
- "\377\377\377\1\357\362\362\377\202\223\254\247\377\1\256\300\275\377" \
- "\377\333\343\342\377\203\333\343\342\377\1\250\267\264\377\236Slg\377" \
- "\1\243\262\257\377\377\333\343\342\377\220\333\343\342\377\4\331\341" \
- "\340\377\230\260\253\377\223\254\247\377\247\273\267\377\213\377\377" \
- "\377\377\4\252\276\272\377\223\254\247\377\227\257\252\377\330\340\337" \
- "\377\217\333\343\342\377\5\332\342\341\377\236\264\260\377\223\254\247" \
- "\377\240\266\262\377\376\376\376\377\212\377\377\377\377\4\261\303\277" \
- "\377\223\254\247\377\225\255\250\377\325\336\335\377\377\333\343\342" \
- "\377\202\333\343\342\377\1\250\267\264\377\236Slg\377\1\243\262\257\377" \
- "\377\333\343\342\377\220\333\343\342\377\1\300\316\314\377\202\223\254" \
- "\247\377\1\324\336\334\377\212\377\377\377\377\1\351\356\355\377\202" \
- "\223\254\247\377\1\262\304\301\377\221\333\343\342\377\1\273\313\310" \
- "\377\202\223\254\247\377\1\336\345\344\377\212\377\377\377\377\1\336" \
- "\346\344\377\202\223\254\247\377\1\271\311\306\377\377\333\343\342\377" \
- "\202\333\343\342\377\1\250\267\264\377\236Slg\377\1\243\262\257\377\377" \
- "\333\343\342\377\220\333\343\342\377\4\241\267\263\377\223\254\247\377" \
- "\231\261\254\377\372\373\373\377\212\377\377\377\377\1\274\313\310\377" \
- "\202\223\254\247\377\1\320\333\331\377\221\333\343\342\377\4\326\337" \
- "\336\377\226\256\251\377\223\254\247\377\261\303\277\377\212\377\377" \
- "\377\377\5\376\376\376\377\240\266\262\377\223\254\247\377\234\262\256" \
- "\377\332\342\341\377\377\333\343\342\377\2\333\343\342\377\250\267\264" \
- "\377\236Slg\377\1\243\262\257\377\377\333\343\342\377\217\333\343\342" \
- "\377\1\314\327\325\377\202\223\254\247\377\1\303\321\316\377\212\377" \
- "\377\377\377\4\367\371\370\377\226\256\251\377\223\254\247\377\247\273" \
- "\267\377\223\333\343\342\377\1\260\302\277\377\202\223\254\247\377\1" \
- "\357\362\362\377\212\377\377\377\377\1\315\330\326\377\202\223\254\247" \
- "\377\1\305\322\320\377\377\333\343\342\377\2\333\343\342\377\250\267" \
- "\264\377\236Slg\377\1\243\262\257\377\377\333\343\342\377\217\333\343" \
- "\342\377\1\255\300\274\377\202\223\254\247\377\1\357\363\362\377\212" \
- "\377\377\377\377\1\315\330\326\377\202\223\254\247\377\1\305\322\320" \
- "\377\223\333\343\342\377\1\316\331\327\377\202\223\254\247\377\1\302" \
- "\320\315\377\212\377\377\377\377\4\366\370\370\377\226\256\251\377\223" \
- "\254\247\377\247\273\267\377\377\333\343\342\377\2\333\343\342\377\250" \
- "\267\264\377\202Slg\377\1u\211\205\377\230\270\305\303\377\1v\213\207" \
- "\377\202Slg\377\1\243\262\257\377\377\333\343\342\377\216\333\343\342" \
- "\377\4\325\336\335\377\224\255\250\377\223\254\247\377\261\303\277\377" \
- "\212\377\377\377\377\5\376\376\376\377\240\266\262\377\223\254\247\377" \
- "\234\263\256\377\332\342\341\377\224\333\343\342\377\4\244\271\265\377" \
- "\223\254\247\377\231\261\254\377\372\373\373\377\212\377\377\377\377" \
- "\1\273\313\310\377\202\223\254\247\377\1\320\333\331\377\377\333\343" \
- "\342\377\1\250\267\264\377\202Slg\377\1\200\224\220\377\230\333\343\342" \
- "\377\1\202\225\221\377\202Slg\377\1\243\262\257\377\377\333\343\342\377" \
- "\216\333\343\342\377\1\271\311\306\377\202\223\254\247\377\1\337\346" \
- "\345\377\212\377\377\377\377\1\336\346\344\377\202\223\254\247\377\1" \
- "\271\311\306\377\225\333\343\342\377\1\303\320\316\377\202\223\254\247" \
- "\377\1\323\335\333\377\212\377\377\377\377\1\351\356\355\377\202\223" \
- "\254\247\377\1\262\304\300\377\377\333\343\342\377\1\250\267\264\377" \
- "\202Slg\377\1\200\224\220\377\230\333\343\342\377\1\202\225\221\377\202" \
- "Slg\377\1\243\262\257\377\377\333\343\342\377\215\333\343\342\377\5\332" \
- "\342\341\377\233\262\256\377\223\254\247\377\241\267\262\377\376\376" \
- "\376\377\212\377\377\377\377\4\261\303\277\377\223\254\247\377\225\255" \
- "\250\377\325\336\335\377\225\333\343\342\377\4\331\342\341\377\232\261" \
- "\255\377\223\254\247\377\246\272\266\377\213\377\377\377\377\4\252\275" \
- "\271\377\223\254\247\377\227\257\252\377\327\340\337\377\376\333\343" \
- "\342\377\1\250\267\264\377\202Slg\377\1\200\224\220\377\230\333\343\342" \
- "\377\1\202\225\221\377\202Slg\377\1\243\262\257\377\377\333\343\342\377" \
- "\215\333\343\342\377\1\304\322\317\377\202\223\254\247\377\1\315\331" \
- "\326\377\212\377\377\377\377\1\357\363\362\377\202\223\254\247\377\1" \
- "\256\300\275\377\227\333\343\342\377\1\267\307\304\377\202\223\254\247" \
- "\377\1\345\353\351\377\212\377\377\377\377\1\330\341\337\377\202\223" \
- "\254\247\377\1\276\315\312\377\376\333\343\342\377\1\250\267\264\377" \
- "\202Slg\377\1\200\224\220\377\230\333\343\342\377\1\202\225\221\377\202" \
- "Slg\377\1\243\262\257\377\377\333\343\342\377\215\333\343\342\377\4\246" \
- "\272\266\377\223\254\247\377\226\256\252\377\367\371\370\377\212\377" \
- "\377\377\377\1\302\320\315\377\202\223\254\247\377\1\314\330\326\377" \
- "\227\333\343\342\377\4\324\335\334\377\224\255\250\377\223\254\247\377" \
- "\267\310\305\377\212\377\377\377\377\4\374\374\374\377\233\262\256\377" \
- "\223\254\247\377\237\265\261\377\376\333\343\342\377\1\311\324\322\377" \
- "\202\254\271\267\377\1\274\307\306\377\230\333\343\342\377\1\325\336" \
- "\335\377\202\322\333\332\377\1\327\340\337\377\377\333\343\342\377\214" \
- "\333\343\342\377\1\320\332\331\377\202\223\254\247\377\1\274\313\310" \
- "\377\212\377\377\377\377\4\372\373\373\377\231\261\254\377\223\254\247" \
- "\377\242\267\263\377\231\333\343\342\377\4\253\276\273\377\223\254\247" \
- "\377\225\255\250\377\364\366\366\377\212\377\377\377\377\1\306\323\321" \
- "\377\202\223\254\247\377\1\311\325\323\377\377\333\343\342\377\377\333" \
- "\343\342\377\252\333\343\342\377\1\262\303\300\377\202\223\254\247\377" \
- "\1\351\356\355\377\212\377\377\377\377\1\324\336\334\377\202\223\254" \
- "\247\377\1\301\317\314\377\231\333\343\342\377\1\312\326\324\377\202" \
- "\223\254\247\377\1\311\325\323\377\212\377\377\377\377\4\362\365\364" \
- "\377\224\254\250\377\223\254\247\377\253\276\273\377\377\333\343\342" \
- "\377\377\333\343\342\377\251\333\343\342\377\4\327\340\337\377\227\257" \
- "\252\377\223\254\247\377\253\276\272\377\213\377\377\377\377\4\246\273" \
- "\267\377\223\254\247\377\230\260\253\377\331\341\340\377\213\333\343" \
- "\342\377\3\306\323\320\377\274\313\311\377\316\330\327\377\214\333\343" \
- "\342\377\4\237\265\261\377\223\254\247\377\236\264\257\377\375\375\375" \
- "\377\212\377\377\377\377\4\264\306\302\377\223\254\247\377\224\255\250" \
- "\377\323\335\334\377\377\333\343\342\377\225\333\343\342\377\5|\220\214" \
- "\377x\214\210\377\217\241\235\377\266\302\300\377\331\342\341\377\377" \
- "\333\343\342\377\216\333\343\342\377\1\275\314\312\377\202\223\254\247" \
- "\377\1\330\341\337\377\212\377\377\377\377\1\346\353\352\377\202\223" \
- "\254\247\377\1\265\306\303\377\212\333\343\342\377\2\331\341\340\377" \
- "\250\275\271\377\203\223\254\247\377\1\240\266\262\377\213\333\343\342" \
- "\377\1\276\315\312\377\202\223\254\247\377\1\332\343\341\377\212\377" \
- "\377\377\377\1\342\351\347\377\202\223\254\247\377\1\267\307\304\377" \
- "\374\333\343\342\377\1\315\326\325\377\202\264\301\277\377\1\277\312" \
- "\310\377\224\333\343\342\377\1h\177z\377\203Slg\377\2h\177z\377\267\303" \
- "\301\377\377\333\343\342\377\215\333\343\342\377\4\237\265\261\377\223" \
- "\254\247\377\234\263\256\377\374\375\374\377\212\377\377\377\377\1\270" \
- "\310\305\377\202\223\254\247\377\1\322\334\333\377\212\333\343\342\377" \
- "\7\306\323\320\377\223\254\247\377\236\264\260\377\303\321\316\377\236" \
- "\265\260\377\223\254\247\377\305\323\320\377\212\333\343\342\377\4\330" \
- "\340\337\377\227\257\252\377\223\254\247\377\255\300\274\377\213\377" \
- "\377\377\377\4\243\271\264\377\223\254\247\377\232\261\254\377\331\341" \
- "\340\377\373\333\343\342\377\1\250\267\264\377\202Slg\377\1x\214\210" \
- "\377\224\333\343\342\377\1h\177z\377\204Slg\377\2Tmh\377\251\270\265" \
- "\377\377\333\343\342\377\213\333\343\342\377\1\311\325\323\377\202\223" \
- "\254\247\377\1\307\324\321\377\212\377\377\377\377\4\364\367\366\377" \
- "\225\255\250\377\223\254\247\377\251\275\271\377\213\333\343\342\377" \
- "\7\260\302\277\377\223\254\247\377\325\336\334\377\377\377\377\377\327" \
- "\340\337\377\223\254\247\377\250\274\271\377\213\333\343\342\377\1\262" \
- "\304\300\377\202\223\254\247\377\1\353\360\357\377\212\377\377\377\377" \
- "\1\321\333\331\377\202\223\254\247\377\1\302\320\316\377\373\333\343" \
- "\342\377\1\250\267\264\377\202Slg\377\1x\214\210\377\224\333\343\342" \
- "\377\1h\177z\377\205Slg\377\2Xpk\377\311\323\322\377\377\333\343\342" \
- "\377\212\333\343\342\377\4\253\276\272\377\223\254\247\377\224\254\250" \
- "\377\362\365\364\377\212\377\377\377\377\1\312\326\323\377\202\223\254" \
- "\247\377\1\310\324\322\377\213\333\343\342\377\7\255\300\275\377\223" \
- "\254\247\377\341\350\346\377\377\377\377\377\356\362\361\377\223\254" \
- "\247\377\245\272\265\377\213\333\343\342\377\1\320\333\331\377\202\223" \
- "\254\247\377\1\276\315\312\377\212\377\377\377\377\4\371\372\372\377" \
- "\230\257\253\377\223\254\247\377\244\271\265\377\373\333\343\342\377" \
- "\1\250\267\264\377\202Slg\377\1x\214\210\377\224\333\343\342\377\4\303" \
- "\316\314\377\260\275\273\377\233\253\250\377f}x\377\203Slg\377\1\217" \
- "\241\235\377\377\333\343\342\377\211\333\343\342\377\4\323\335\333\377" \
- "\224\254\247\377\223\254\247\377\265\306\303\377\212\377\377\377\377" \
- "\4\375\375\375\377\236\264\260\377\223\254\247\377\236\264\260\377\214" \
- "\333\343\342\377\7\255\300\275\377\223\254\247\377\341\350\346\377\377" \
- "\377\377\377\356\362\361\377\223\254\247\377\245\272\265\377\214\333" \
- "\343\342\377\4\247\273\267\377\223\254\247\377\227\257\252\377\370\372" \
- "\371\377\212\377\377\377\377\1\277\316\313\377\202\223\254\247\377\1" \
- "\316\331\327\377\372\333\343\342\377\1\250\267\264\377\202Slg\377\1x" \
- "\214\210\377\227\333\343\342\377\2\331\342\341\377\211\233\230\377\202" \
- "Slg\377\1d{v\377\377\333\343\342\377\211\333\343\342\377\1\266\307\304" \
- "\377\202\223\254\247\377\1\343\351\350\377\212\377\377\377\377\1\333" \
- "\343\342\377\202\223\254\247\377\1\274\313\310\377\214\333\343\342\377" \
- "\7\255\300\275\377\223\254\247\377\341\350\346\377\377\377\377\377\356" \
- "\362\361\377\223\254\247\377\245\272\265\377\214\333\343\342\377\1\305" \
- "\322\320\377\202\223\254\247\377\1\317\332\330\377\212\377\377\377\377" \
- "\1\354\361\360\377\202\223\254\247\377\1\260\302\276\377\372\333\343" \
- "\342\377\1\250\267\264\377\202Slg\377\1x\214\210\377\230\333\343\342" \
- "\377\2\326\337\336\377]tp\377\202Slg\377\1\317\331\327\377\377\333\343" \
- "\342\377\207\333\343\342\377\4\331\341\340\377\232\261\254\377\223\254" \
- "\247\377\244\271\265\377\213\377\377\377\377\4\256\300\275\377\223\254" \
- "\247\377\226\256\251\377\327\337\336\377\214\333\343\342\377\7\255\300" \
- "\275\377\223\254\247\377\341\350\346\377\377\377\377\377\356\362\361" \
- "\377\223\254\247\377\245\272\265\377\214\333\343\342\377\5\332\342\341" \
- "\377\234\262\256\377\223\254\247\377\243\270\264\377\376\376\376\377" \
- "\212\377\377\377\377\4\256\300\275\377\223\254\247\377\226\256\251\377" \
- "\326\337\336\377\371\333\343\342\377\1\250\267\264\377\202Slg\377\1x" \
- "\214\210\377\231\333\343\342\377\1v\212\206\377\202Slg\377\1\301\315" \
- "\313\377\377\333\343\342\377\207\333\343\342\377\1\302\320\315\377\202" \
- "\223\254\247\377\1\321\334\332\377\212\377\377\377\377\1\354\361\360" \
- "\377\202\223\254\247\377\1\260\302\277\377\215\333\343\342\377\7\255" \
- "\300\275\377\223\254\247\377\341\350\346\377\377\377\377\377\356\362" \
- "\361\377\223\254\247\377\245\272\265\377\215\333\343\342\377\1\271\311" \
- "\306\377\202\223\254\247\377\1\341\350\346\377\212\377\377\377\377\1" \
- "\333\343\342\377\202\223\254\247\377\1\273\313\310\377\371\333\343\342" \
- "\377\1\250\267\264\377\202Slg\377\1x\214\210\377\231\333\343\342\377" \
- "\1\177\222\217\377\202Slg\377\1\272\306\304\377\377\333\343\342\377\207" \
- "\333\343\342\377\4\243\270\264\377\223\254\247\377\230\260\253\377\371" \
- "\372\372\377\212\377\377\377\377\1\277\316\313\377\202\223\254\247\377" \
- "\1\316\331\330\377\215\333\343\342\377\7\255\300\275\377\223\254\247" \
- "\377\341\350\346\377\377\377\377\377\356\362\361\377\223\254\247\377" \
- "\245\272\265\377\215\333\343\342\377\4\325\336\335\377\225\255\250\377" \
- "\223\254\247\377\264\305\301\377\212\377\377\377\377\5\375\375\375\377" \
- "\236\265\260\377\223\254\247\377\235\264\257\377\332\342\341\377\370" \
- "\333\343\342\377\1\250\267\264\377\202Slg\377\1x\214\210\377\231\333" \
- "\343\342\377\1i\177{\377\202Slg\377\1\276\312\310\377\377\333\343\342" \
- "\377\206\333\343\342\377\1\316\331\327\377\202\223\254\247\377\7\300" \
- "\316\313\377\377\377\377\377\327\340\337\377\272\312\306\377\254\277" \
- "\273\377\276\315\312\377\343\352\350\377\204\377\377\377\377\4\371\372" \
- "\372\377\230\257\253\377\223\254\247\377\245\271\265\377\216\333\343" \
- "\342\377\7\255\300\275\377\223\254\247\377\341\350\346\377\377\377\377" \
- "\377\356\362\361\377\223\254\247\377\245\272\265\377\216\333\343\342" \
- "\377\1\256\300\275\377\202\223\254\247\377\1\361\364\364\377\204\377" \
- "\377\377\377\7\350\355\354\377\300\317\314\377\254\300\274\377\267\310" \
- "\304\377\323\335\333\377\376\376\376\377\312\326\324\377\202\223\254" \
- "\247\377\1\307\323\321\377\370\333\343\342\377\1\250\267\264\377\202" \
- "Slg\377\1x\214\210\377\230\333\343\342\377\1\254\272\270\377\203Slg\377" \
- "\1\307\321\320\377\354\333\343\342\377\1\205\241\234\377\210|\233\225" \
- "\377\1\262\303\300\377\217\312\326\324\377\1\251\274\271\377\202\223" \
- "\254\247\377\2\350\355\354\377\257\301\275\377\205\223\254\247\377\1" \
- "\301\317\315\377\203\377\377\377\377\1\320\333\331\377\202\223\254\247" \
- "\377\1\267\310\305\377\216\312\326\324\377\7\247\273\267\377\223\254" \
- "\247\377\341\350\346\377\377\377\377\377\356\362\361\377\223\254\247" \
- "\377\240\266\262\377\216\312\326\324\377\1\276\315\312\377\202\223\254" \
- "\247\377\1\305\322\320\377\203\377\377\377\377\2\312\327\324\377\224" \
- "\255\250\377\204\223\254\247\377\5\251\275\271\377\354\360\360\377\225" \
- "\255\251\377\223\254\247\377\243\270\264\377\217\312\326\324\377\1\273" \
- "\313\310\377\210|\233\225\377\2\177\235\227\377\330\341\337\377\325\333" \
- "\343\342\377\1\273\307\305\377\210\270\305\303\377\1\223\244\241\377" \
- "\202Slg\377\1n\204\200\377\223\270\305\303\377\6\267\303\301\377\257" \
- "\274\272\377\247\265\263\377\232\252\247\377t\210\204\377Tmh\377\202" \
- "Slg\377\2Woj\377\330\340\337\377\354\333\343\342\377\1u\225\217\377\227" \
- "o\221\212\377\15q\222\213\377\221\252\245\377\223\254\247\377\256\301" \
- "\275\377\277\316\313\377\223\254\247\377\242\267\263\377\334\344\343" \
- "\377\354\360\357\377\323\335\333\377\232\261\255\377\223\254\247\377" \
- "\327\340\337\377\202\377\377\377\377\3\243\271\264\377\223\254\247\377" \
- "\217\251\243\377\217o\221\212\377\7\205\242\234\377\223\254\247\377\341" \
- "\350\346\377\377\377\377\377\356\362\361\377\223\254\247\377\212\245" \
- "\240\377\217o\221\212\377\22\213\246\240\377\223\254\247\377\233\262" \
- "\255\377\373\374\374\377\377\377\377\377\343\352\350\377\223\254\247" \
- "\377\226\257\252\377\316\331\327\377\354\360\357\377\340\347\345\377" \
- "\250\274\270\377\223\254\247\377\265\306\303\377\271\311\306\377\223" \
- "\254\247\377\222\253\246\377s\224\215\377\230o\221\212\377\1\327\340" \
- "\337\377\325\333\343\342\377\1\\so\377\247Slg\377\1t\210\204\377\355" \
- "\333\343\342\377\1u\225\217\377\227o\221\212\377\1~\234\226\377\202\223" \
- "\254\247\377\4\331\342\340\377\224\255\250\377\230\260\253\377\361\365" \
- "\364\377\203\377\377\377\377\5\341\350\346\377\223\254\247\377\247\274" \
- "\270\377\377\377\377\377\342\351\347\377\202\223\254\247\377\1\200\236" \
- "\230\377\217o\221\212\377\7\205\242\234\377\223\254\247\377\341\350\346" \
- "\377\377\377\377\377\356\362\361\377\223\254\247\377\212\245\240\377" \
- "\217o\221\212\377\1|\232\224\377\202\223\254\247\377\5\326\340\336\377" \
- "\377\377\377\377\262\304\301\377\223\254\247\377\325\337\335\377\203" \
- "\377\377\377\377\4\370\371\371\377\235\264\257\377\223\254\247\377\332" \
- "\342\340\377\202\223\254\247\377\1\202\237\231\377\230o\221\212\377\1" \
- "\327\340\337\377\325\333\343\342\377\1\\so\377\247Slg\377\1\253\271\266" \
- "\377\355\333\343\342\377\1u\225\217\377\227o\221\212\377\6\215\250\242" \
- "\377\223\254\247\377\236\265\260\377\344\352\350\377\223\254\247\377" \
- "\262\304\300\377\205\377\377\377\377\7\233\262\255\377\225\255\250\377" \
- "\374\374\374\377\264\306\302\377\223\254\247\377\222\253\246\377r\223" \
- "\214\377\217o\221\212\377\7\205\242\234\377\223\254\247\377\341\350\346" \
- "\377\377\377\377\377\356\362\361\377\223\254\247\377\212\245\240\377" \
- "\220o\221\212\377\7\220\251\244\377\223\254\247\377\251\275\271\377\377" \
- "\377\377\377\235\264\257\377\223\254\247\377\372\373\373\377\204\377" \
- "\377\377\377\7\275\314\311\377\223\254\247\377\333\343\342\377\247\273" \
- "\267\377\223\254\247\377\220\251\244\377p\221\212\377\227o\221\212\377" \
- "\1\327\340\337\377\325\333\343\342\377\1\\so\377\246Slg\377\2u\211\205" \
- "\377\331\341\340\377\355\333\343\342\377\1u\225\217\377\226o\221\212" \
- "\377\1y\230\222\377\202\223\254\247\377\4\312\326\324\377\353\360\357" \
- "\377\223\254\247\377\254\277\273\377\204\377\377\377\377\7\375\375\375" \
- "\377\227\257\252\377\230\260\253\377\361\364\363\377\224\254\250\377" \
- "\223\254\247\377\206\242\234\377\220o\221\212\377\7\205\242\234\377\223" \
- "\254\247\377\341\350\346\377\377\377\377\377\356\362\361\377\223\254" \
- "\247\377\212\245\240\377\220o\221\212\377\1\201\237\231\377\202\223\254" \
- "\247\377\4\350\355\354\377\243\270\264\377\223\254\247\377\365\367\367" \
- "\377\204\377\377\377\377\4\267\310\304\377\223\254\247\377\340\347\345" \
- "\377\325\336\334\377\202\223\254\247\377\1|\233\224\377\227o\221\212" \
- "\377\1\327\340\337\377\325\333\343\342\377\1\\so\377\245Slg\377\2}\220" \
- "\215\377\321\332\331\377\356\333\343\342\377\1u\225\217\377\226o\221" \
- "\212\377\10\210\243\236\377\223\254\247\377\225\255\251\377\365\367\367" \
- "\377\376\376\376\377\231\261\254\377\223\254\247\377\342\351\347\377" \
- "\203\377\377\377\377\4\315\331\326\377\223\254\247\377\260\302\276\377" \
- "\306\323\321\377\202\223\254\247\377\1w\227\220\377\220o\221\212\377" \
- "\7\205\242\234\377\223\254\247\377\341\350\346\377\377\377\377\377\356" \
- "\362\361\377\223\254\247\377\212\245\240\377\220o\221\212\377\7s\224" \
- "\215\377\222\253\246\377\223\254\247\377\272\312\307\377\273\313\307" \
- "\377\223\254\247\377\301\317\315\377\203\377\377\377\377\10\354\360\357" \
- "\377\226\256\251\377\225\256\251\377\366\370\370\377\373\374\373\377" \
- "\232\261\254\377\223\254\247\377\213\246\240\377\227o\221\212\377\1\327" \
- "\340\337\377\325\333\343\342\377\1\\so\377\241Slg\377\4Xpk\377n\204\200" \
- "\377\213\235\232\377\274\310\306\377\360\333\343\342\377\1u\225\217\377" \
- "\210o\221\212\377\1u\225\216\377\214x\230\221\377\4{\232\223\377\222" \
- "\253\246\377\223\254\247\377\271\311\306\377\202\377\377\377\377\14\324" \
- "\336\334\377\223\254\247\377\225\256\251\377\277\316\313\377\321\334" \
- "\331\377\266\307\303\377\223\254\247\377\225\256\251\377\347\354\353" \
- "\377\233\262\256\377\223\254\247\377\215\250\242\377\221x\230\221\377" \
- "\7\210\244\237\377\223\254\247\377\341\350\346\377\377\377\377\377\356" \
- "\362\361\377\223\254\247\377\214\247\241\377\221x\230\221\377\14\212" \
- "\245\240\377\223\254\247\377\225\256\251\377\352\356\356\377\231\260" \
- "\253\377\223\254\247\377\260\302\277\377\320\333\331\377\303\321\316" \
- "\377\230\260\253\377\223\254\247\377\312\326\324\377\202\377\377\377" \
- "\377\1\303\321\316\377\202\223\254\247\377\1}\234\225\377\214x\230\221" \
- "\377\1v\226\217\377\211o\221\212\377\1\327\340\337\377\325\333\343\342" \
- "\377\1\317\330\327\377\210\316\327\326\377\1\240\260\255\377\202Slg\377" \
- "\1t\211\205\377\223\316\327\326\377\2\320\331\330\377\327\340\337\377" \
- "\364\333\343\342\377\1\236\265\260\377\210\232\262\255\377\1\307\323" \
- "\321\377\214\333\343\342\377\1\264\305\302\377\202\223\254\247\377\1" \
- "\346\354\353\377\203\377\377\377\377\2\314\330\325\377\226\256\251\377" \
- "\203\223\254\247\377\3\233\263\256\377\335\345\343\377\330\341\337\377" \
- "\202\223\254\247\377\1\276\315\312\377\221\333\343\342\377\7\255\300" \
- "\275\377\223\254\247\377\341\350\346\377\377\377\377\377\356\362\361" \
- "\377\223\254\247\377\245\272\265\377\221\333\343\342\377\1\307\324\322" \
- "\377\202\223\254\247\377\3\314\327\325\377\343\352\351\377\237\265\261" \
- "\377\203\223\254\247\377\3\224\255\250\377\305\322\320\377\375\376\376" \
- "\377\202\377\377\377\377\1\360\363\362\377\202\223\254\247\377\1\255" \
- "\300\274\377\214\333\343\342\377\1\317\331\330\377\211\232\262\255\377" \
- "\1\331\341\340\377\336\333\343\342\377\1\250\267\264\377\202Slg\377\1" \
- "x\214\210\377\377\333\343\342\377\237\333\343\342\377\4\330\341\340\377" \
- "\230\260\253\377\223\254\247\377\250\274\270\377\205\377\377\377\377" \
- "\12\360\364\363\377\325\336\334\377\307\324\321\377\331\342\340\377\367" \
- "\371\370\377\377\377\377\377\252\276\272\377\223\254\247\377\227\257" \
- "\252\377\330\340\337\377\221\333\343\342\377\7\255\300\275\377\223\254" \
- "\247\377\341\350\346\377\377\377\377\377\356\362\361\377\223\254\247" \
- "\377\245\272\265\377\221\333\343\342\377\12\332\342\341\377\236\264\260" \
- "\377\223\254\247\377\240\266\261\377\375\376\375\377\371\373\373\377" \
- "\333\343\342\377\310\325\322\377\322\334\332\377\355\361\361\377\205" \
- "\377\377\377\377\4\262\304\300\377\223\254\247\377\224\255\250\377\325" \
- "\336\335\377\364\333\343\342\377\1\250\267\264\377\202Slg\377\1x\214" \
- "\210\377\377\333\343\342\377\237\333\343\342\377\1\277\316\313\377\202" \
- "\223\254\247\377\1\325\337\335\377\212\377\377\377\377\1\351\356\355" \
- "\377\202\223\254\247\377\1\263\304\301\377\222\333\343\342\377\7\255" \
- "\300\275\377\223\254\247\377\341\350\346\377\377\377\377\377\356\362" \
- "\361\377\223\254\247\377\245\272\265\377\222\333\343\342\377\1\274\313" \
- "\310\377\202\223\254\247\377\1\335\345\343\377\212\377\377\377\377\1" \
- "\337\346\345\377\202\223\254\247\377\1\271\311\306\377\364\333\343\342" \
- "\377\1\250\267\264\377\202Slg\377\1x\214\210\377\377\333\343\342\377" \
- "\237\333\343\342\377\4\241\267\263\377\223\254\247\377\232\261\255\377" \
- "\373\374\373\377\212\377\377\377\377\1\274\313\310\377\202\223\254\247" \
- "\377\1\320\333\331\377\222\333\343\342\377\7\255\300\275\377\223\254" \
- "\247\377\341\350\346\377\377\377\377\377\356\362\361\377\223\254\247" \
- "\377\245\272\265\377\222\333\343\342\377\4\327\337\336\377\226\256\251" \
- "\377\223\254\247\377\260\302\276\377\212\377\377\377\377\5\376\376\376" \
- "\377\241\267\263\377\223\254\247\377\233\262\256\377\332\342\341\377" \
- "\363\333\343\342\377\1\264\300\276\377\202p\205\201\377\1\215\237\234" \
- "\377\377\333\343\342\377\236\333\343\342\377\1\313\327\325\377\202\223" \
- "\254\247\377\1\304\321\317\377\212\377\377\377\377\4\367\371\370\377" \
- "\226\256\251\377\223\254\247\377\247\273\267\377\223\333\343\342\377" \
- "\7\255\300\275\377\223\254\247\377\341\350\346\377\377\377\377\377\356" \
- "\362\361\377\223\254\247\377\245\272\265\377\223\333\343\342\377\1\260" \
- "\302\277\377\202\223\254\247\377\1\356\362\361\377\212\377\377\377\377" \
- "\1\316\331\327\377\202\223\254\247\377\1\304\321\317\377\377\333\343" \
- "\342\377\377\333\343\342\377\226\333\343\342\377\1\255\300\274\377\202" \
- "\223\254\247\377\1\360\363\363\377\212\377\377\377\377\1\315\330\326" \
- "\377\202\223\254\247\377\1\305\322\320\377\223\333\343\342\377\7\255" \
- "\300\275\377\223\254\247\377\341\350\346\377\377\377\377\377\356\362" \
- "\361\377\223\254\247\377\245\272\265\377\223\333\343\342\377\1\316\331" \
- "\327\377\202\223\254\247\377\1\301\317\314\377\212\377\377\377\377\4" \
- "\367\371\371\377\226\256\252\377\223\254\247\377\246\272\266\377\377" \
- "\333\343\342\377\377\333\343\342\377\225\333\343\342\377\4\325\336\335" \
- "\377\224\255\250\377\223\254\247\377\262\304\300\377\212\377\377\377" \
- "\377\5\376\376\376\377\240\266\262\377\223\254\247\377\234\263\256\377" \
- "\332\342\341\377\223\333\343\342\377\7\255\300\275\377\223\254\247\377" \
- "\341\350\346\377\377\377\377\377\356\362\361\377\223\254\247\377\245" \
- "\272\265\377\224\333\343\342\377\4\244\271\265\377\223\254\247\377\230" \
- "\260\253\377\372\373\373\377\212\377\377\377\377\1\274\314\311\377\202" \
- "\223\254\247\377\1\317\332\330\377\377\333\343\342\377\377\333\343\342" \
- "\377\224\333\343\342\377\1\270\310\306\377\202\223\254\247\377\1\340" \
- "\347\345\377\212\377\377\377\377\1\337\346\345\377\202\223\254\247\377" \
- "\1\272\311\307\377\224\333\343\342\377\7\255\300\275\377\223\254\247" \
- "\377\341\350\346\377\377\377\377\377\356\362\361\377\223\254\247\377" \
- "\245\272\265\377\224\333\343\342\377\1\303\320\316\377\202\223\254\247" \
- "\377\1\322\335\333\377\212\377\377\377\377\1\352\357\356\377\202\223" \
- "\254\247\377\1\262\303\300\377\377\333\343\342\377\377\333\343\342\377" \
- "\223\333\343\342\377\5\332\342\341\377\233\262\255\377\223\254\247\377" \
- "\241\267\263\377\376\376\376\377\212\377\377\377\377\4\261\303\277\377" \
- "\223\254\247\377\225\255\251\377\325\337\335\377\224\333\343\342\377" \
- "\7\264\305\302\377\223\254\247\377\316\331\327\377\377\377\377\377\331" \
- "\342\340\377\223\254\247\377\252\276\273\377\224\333\343\342\377\4\331" \
- "\342\341\377\232\261\255\377\223\254\247\377\245\272\266\377\213\377" \
- "\377\377\377\4\253\276\273\377\223\254\247\377\226\257\252\377\327\340" \
- "\337\377\377\333\343\342\377\206\333\343\342\377\6\330\340\337\377\304" \
- "\316\315\377\255\272\270\377\254\272\270\377\273\307\305\377\325\336" \
- "\335\377\377\333\343\342\377\206\333\343\342\377\1\304\321\317\377\202" \
- "\223\254\247\377\1\316\331\327\377\212\377\377\377\377\1\357\363\362" \
- "\377\202\223\254\247\377\1\256\301\275\377\225\333\343\342\377\7\310" \
- "\324\323\377\222\253\246\377\225\255\250\377\256\301\275\377\227\257" \
- "\252\377\223\254\247\377\300\316\314\377\225\333\343\342\377\1\267\310" \
- "\305\377\202\223\254\247\377\1\344\352\351\377\212\377\377\377\377\1" \
- "\330\341\337\377\202\223\254\247\377\1\275\314\311\377\377\333\343\342" \
- "\377\204\333\343\342\377\3\320\331\330\377\205\227\224\377Uni\377\204" \
- "Slg\377\3Xpk\377\201\225\221\377\310\323\321\377\377\333\343\342\377" \
- "\204\333\343\342\377\4\246\272\266\377\223\254\247\377\227\257\252\377" \
- "\367\371\371\377\212\377\377\377\377\1\302\320\315\377\202\223\254\247" \
- "\377\1\314\330\326\377\226\333\343\342\377\2\274\313\311\377\225\255" \
- "\250\377\202\223\254\247\377\1\264\305\302\377\226\333\343\342\377\4" \
- "\324\335\334\377\224\255\250\377\223\254\247\377\267\307\304\377\212" \
- "\377\377\377\377\4\374\375\374\377\234\263\256\377\223\254\247\377\237" \
- "\265\261\377\363\333\343\342\377\1\200\224\220\377\205t\211\205\377\1" \
- "w\213\207\377\210\333\343\342\377\2\262\277\275\377\\to\377\210Slg\377" \
- "\2Xql\377\252\270\266\377\377\333\343\342\377\202\333\343\342\377\1\317" \
- "\332\330\377\202\223\254\247\377\1\275\314\311\377\212\377\377\377\377" \
- "\4\372\373\373\377\231\261\254\377\223\254\247\377\242\270\263\377\230" \
- "\333\343\342\377\3\330\341\340\377\313\326\324\377\327\337\336\377\230" \
- "\333\343\342\377\4\253\276\273\377\223\254\247\377\224\255\250\377\363" \
- "\366\366\377\212\377\377\377\377\1\307\324\321\377\202\223\254\247\377" \
- "\1\311\325\323\377\361\333\343\342\377\1\275\311\307\377\206Slg\377\1" \
- "Vni\377\207\333\343\342\377\2\306\321\317\377Yrm\377\212Slg\377\2Tmh" \
- "\377\256\273\271\377\377\333\343\342\377\2\333\343\342\377\261\303\300" \
- "\377\202\223\254\247\377\1\352\357\356\377\212\377\377\377\377\1\324" \
- "\336\334\377\202\223\254\247\377\1\301\317\314\377\263\333\343\342\377" \
- "\1\312\326\324\377\202\223\254\247\377\1\310\325\322\377\212\377\377" \
- "\377\377\4\363\365\365\377\224\255\250\377\223\254\247\377\253\276\272" \
- "\377\361\333\343\342\377\1\212\234\231\377\206Slg\377\1Vni\377\206\333" \
- "\343\342\377\2\326\337\336\377l\201}\377\214Slg\377\2Xpk\377\313\325" \
- "\323\377\376\333\343\342\377\4\327\340\337\377\226\257\252\377\223\254" \
- "\247\377\253\277\273\377\213\377\377\377\377\4\247\273\267\377\223\254" \
- "\247\377\231\260\254\377\331\341\340\377\264\333\343\342\377\4\240\266" \
- "\261\377\223\254\247\377\235\263\257\377\374\375\375\377\212\377\377" \
- "\377\377\4\266\307\303\377\223\254\247\377\224\254\247\377\323\335\333" \
- "\377\357\333\343\342\377\2\331\342\341\377]up\377\204Slg\377\3czu\377" \
- "\203\226\222\377\243\262\257\377\206\333\343\342\377\1\235\255\252\377" \
- "\216Slg\377\1\177\222\217\377\376\333\343\342\377\1\275\314\311\377\202" \
- "\223\254\247\377\1\331\342\340\377\212\377\377\377\377\1\346\353\352" \
- "\377\202\223\254\247\377\1\265\306\303\377\265\333\343\342\377\1\276" \
- "\315\312\377\202\223\254\247\377\1\331\342\340\377\212\377\377\377\377" \
- "\1\343\351\350\377\202\223\254\247\377\1\266\307\304\377\357\333\343" \
- "\342\377\1\276\311\307\377\204Slg\377\2\224\244\241\377\331\341\340\377" \
- "\207\333\343\342\377\2\332\342\341\377f|x\377\205Slg\377\6byt\377\252" \
- "\270\266\377\307\321\320\377\313\325\324\377\257\275\272\377\202\225" \
- "\221\377\204Slg\377\1\313\325\323\377\375\333\343\342\377\4\237\265\260" \
- "\377\223\254\247\377\235\263\257\377\374\375\375\377\212\377\377\377" \
- "\377\1\270\310\305\377\202\223\254\247\377\1\322\334\333\377\265\333" \
- "\343\342\377\4\330\340\337\377\227\257\252\377\223\254\247\377\254\277" \
- "\273\377\213\377\377\377\377\4\244\271\265\377\223\254\247\377\231\261" \
- "\254\377\331\341\340\377\356\333\343\342\377\1\227\250\245\377\203Sl" \
- "g\377\1\255\273\271\377\211\333\343\342\377\1\266\303\301\377\205Slg" \
- "\377\2l\202~\377\321\332\331\377\205\333\343\342\377\1\233\253\250\377" \
- "\203Slg\377\1\232\252\247\377\374\333\343\342\377\1\310\325\323\377\202" \
- "\223\254\247\377\1\307\324\322\377\212\377\377\377\377\4\364\367\366" \
- "\377\225\255\250\377\223\254\247\377\251\275\271\377\267\333\343\342" \
- "\377\1\262\304\301\377\202\223\254\247\377\1\353\357\356\377\212\377" \
- "\377\377\377\1\322\334\332\377\202\223\254\247\377\1\302\320\315\377" \
- "\356\333\343\342\377\1z\216\212\377\202Slg\377\1w\214\210\377\212\333" \
- "\343\342\377\1\177\222\217\377\204Slg\377\2Tlg\377\277\312\310\377\207" \
- "\333\343\342\377\1y\215\211\377\202Slg\377\1v\212\206\377\374\333\343" \
- "\342\377\4\252\276\272\377\223\254\247\377\224\255\250\377\363\366\365" \
- "\377\212\377\377\377\377\1\312\326\323\377\202\223\254\247\377\1\310" \
- "\324\322\377\267\333\343\342\377\1\320\333\331\377\202\223\254\247\377" \
- "\1\275\314\311\377\212\377\377\377\377\4\371\373\372\377\230\260\253" \
- "\377\223\254\247\377\243\270\264\377\356\333\343\342\377\1ayt\377\202" \
- "Slg\377\1\277\312\310\377\211\333\343\342\377\2\325\335\334\377Woj\377" \
- "\204Slg\377\1\211\233\230\377\210\333\343\342\377\1\265\302\300\377\202" \
- "Slg\377\1\\so\377\373\333\343\342\377\4\323\335\333\377\224\254\247\377" \
- "\223\254\247\377\266\307\303\377\212\377\377\377\377\4\375\375\375\377" \
- "\236\264\260\377\223\254\247\377\236\264\260\377\271\333\343\342\377" \
- "\4\247\273\267\377\223\254\247\377\227\257\252\377\370\371\371\377\212" \
- "\377\377\377\377\1\300\317\314\377\202\223\254\247\377\1\315\330\327" \
- "\377\354\333\343\342\377\1\324\335\334\377\202Slg\377\1Xql\377\212\333" \
- "\343\342\377\1\260\275\273\377\205Slg\377\1\301\315\313\377\211\333\343" \
- "\342\377\1[sn\377\202Slg\377\1\315\327\325\377\372\333\343\342\377\1" \
- "\266\306\303\377\202\223\254\247\377\1\343\352\350\377\212\377\377\377" \
- "\377\1\333\343\342\377\202\223\254\247\377\1\274\313\311\377\271\333" \
- "\343\342\377\1\305\322\320\377\202\223\254\247\377\1\317\332\330\377" \
- "\212\377\377\377\377\1\356\361\361\377\202\223\254\247\377\1\257\301" \
- "\276\377\354\333\343\342\377\1\312\324\323\377\202Slg\377\1l\201}\377" \
- "\212\333\343\342\377\1\207\231\226\377\204Slg\377\1l\202~\377\212\333" \
- "\343\342\377\1k\201|\377\202Slg\377\1\304\317\315\377\371\333\343\342" \
- "\377\4\331\341\340\377\231\260\254\377\223\254\247\377\245\271\265\377" \
- "\213\377\377\377\377\4\256\300\275\377\223\254\247\377\226\256\252\377" \
- "\327\340\336\377\271\333\343\342\377\5\332\342\341\377\234\263\256\377" \
- "\223\254\247\377\242\267\263\377\376\376\376\377\212\377\377\377\377" \
- "\4\257\301\276\377\223\254\247\377\225\256\251\377\326\337\336\377\353" \
- "\333\343\342\377\1\301\315\313\377\202Slg\377\1~\222\216\377\211\333" \
- "\343\342\377\2\332\342\341\377_vr\377\204Slg\377\1\237\257\254\377\212" \
- "\333\343\342\377\1y\215\211\377\202Slg\377\1\275\310\306\377\371\333" \
- "\343\342\377\1\301\317\315\377\202\223\254\247\377\1\322\334\332\377" \
- "\212\377\377\377\377\1\354\361\360\377\202\223\254\247\377\1\260\302" \
- "\277\377\273\333\343\342\377\1\271\311\306\377\202\223\254\247\377\1" \
- "\340\347\346\377\212\377\377\377\377\1\334\344\343\377\202\223\254\247" \
- "\377\1\273\312\307\377\353\333\343\342\377\1\301\315\313\377\202Slg\377" \
- "\1y\216\212\377\211\333\343\342\377\1\270\305\303\377\204Slg\377\2Tm" \
- "h\377\317\331\327\377\212\333\343\342\377\1\202\225\221\377\202Slg\377" \
- "\1\273\307\305\377\371\333\343\342\377\4\243\270\264\377\223\254\247" \
- "\377\230\260\253\377\371\373\372\377\212\377\377\377\377\1\277\316\313" \
- "\377\202\223\254\247\377\1\317\331\330\377\273\333\343\342\377\4\325" \
- "\337\335\377\225\255\250\377\223\254\247\377\263\304\301\377\212\377" \
- "\377\377\377\5\375\376\375\377\237\265\261\377\223\254\247\377\235\263" \
- "\257\377\332\342\341\377\352\333\343\342\377\1\310\323\321\377\202Sl" \
- "g\377\1k\201}\377\211\333\343\342\377\1\205\230\224\377\204Slg\377\1" \
- "v\212\206\377\213\333\343\342\377\1t\210\204\377\202Slg\377\1\301\315" \
- "\313\377\370\333\343\342\377\1\315\330\326\377\202\223\254\247\377\1" \
- "\301\317\314\377\212\377\377\377\377\4\371\372\372\377\230\257\253\377" \
- "\223\254\247\377\245\272\266\377\275\333\343\342\377\1\256\300\275\377" \
- "\202\223\254\247\377\1\361\364\363\377\212\377\377\377\377\1\313\327" \
- "\324\377\202\223\254\247\377\1\306\323\321\377\352\333\343\342\377\1" \
- "\321\332\331\377\202Slg\377\2\\to\377\332\342\341\377\207\333\343\342" \
- "\377\2\324\335\334\377Xql\377\204Slg\377\1\243\262\257\377\213\333\343" \
- "\342\377\1czu\377\202Slg\377\1\310\323\321\377\370\333\343\342\377\1" \
- "\257\301\276\377\202\223\254\247\377\1\356\362\361\377\212\377\377\377" \
- "\377\1\321\333\331\377\202\223\254\247\377\1\303\321\316\377\275\333" \
- "\343\342\377\1\314\330\326\377\202\223\254\247\377\1\304\322\317\377" \
- "\212\377\377\377\377\4\366\370\367\377\225\255\251\377\223\254\247\377" \
- "\250\274\270\377\353\333\343\342\377\1ayt\377\202Slg\377\1\267\303\301" \
- "\377\207\333\343\342\377\1\241\260\255\377\204Slg\377\2Tlg\377\316\330" \
- "\326\377\212\333\343\342\377\2\330\340\337\377Tmh\377\202Slg\377\1\325" \
- "\336\335\377\367\333\343\342\377\4\326\337\336\377\225\256\251\377\223" \
- "\254\247\377\257\302\276\377\213\377\377\377\377\4\243\271\264\377\223" \
- "\254\247\377\232\262\255\377\331\342\341\377\276\333\343\342\377\4\242" \
- "\270\263\377\223\254\247\377\232\261\255\377\373\374\374\377\212\377" \
- "\377\377\377\1\271\311\306\377\202\223\254\247\377\1\321\333\332\377" \
- "\352\333\343\342\377\1~\222\216\377\202Slg\377\1\177\222\217\377\206" \
- "\333\343\342\377\2\320\332\330\377\\to\377\204Slg\377\1z\216\212\377" \
- "\213\333\343\342\377\1\253\271\266\377\202Slg\377\1e|w\377\370\333\343" \
- "\342\377\1\272\312\307\377\202\223\254\247\377\1\335\344\343\377\212" \
- "\377\377\377\377\1\342\351\347\377\202\223\254\247\377\1\267\310\305" \
- "\377\277\333\343\342\377\1\301\317\314\377\202\223\254\247\377\1\325" \
- "\337\335\377\212\377\377\377\377\1\347\354\353\377\202\223\254\247\377" \
- "\1\264\305\302\377\352\333\343\342\377\1\251\270\265\377\203Slg\377\2" \
- "\220\242\236\377\331\342\341\377\203\333\343\342\377\2\320\331\330\377" \
- "x\214\210\377\205Slg\377\1\264\300\276\377\212\333\343\342\377\2\331" \
- "\342\341\377h~z\377\202Slg\377\1}\220\215\377\367\333\343\342\377\5\332" \
- "\342\341\377\234\263\257\377\223\254\247\377\237\265\261\377\375\376" \
- "\375\377\212\377\377\377\377\4\264\306\302\377\223\254\247\377\224\255" \
- "\250\377\324\336\334\377\277\333\343\342\377\4\331\341\340\377\230\260" \
- "\253\377\223\254\247\377\250\274\270\377\213\377\377\377\377\4\250\274" \
- "\270\377\223\254\247\377\230\257\253\377\330\341\340\377\351\333\343" \
- "\342\377\2\325\336\335\377[sn\377\203Slg\377\5i\177{\377\207\232\226" \
- "\377\230\251\246\377\204\227\223\377^vq\377\205Slg\377\2e|w\377\332\342" \
- "\341\377\212\333\343\342\377\1\232\252\247\377\203Slg\377\1\234\253\251" \
- "\377\367\333\343\342\377\1\306\323\321\377\202\223\254\247\377\1\313" \
- "\327\325\377\212\377\377\377\377\4\362\365\364\377\224\254\250\377\223" \
- "\254\247\377\254\277\273\377\301\333\343\342\377\1\265\306\303\377\202" \
- "\223\254\247\377\1\347\354\353\377\212\377\377\377\377\1\325\337\335" \
- "\377\202\223\254\247\377\1\277\316\313\377\352\333\343\342\377\1\237" \
- "\257\254\377\215Slg\377\1\244\262\260\377\211\333\343\342\377\2\320\332" \
- "\330\377}\220\215\377\204Slg\377\1\301\314\312\377\367\333\343\342\377" \
- "\4\250\274\270\377\223\254\247\377\225\256\251\377\366\370\367\377\212" \
- "\377\377\377\377\1\306\323\321\377\202\223\254\247\377\1\312\326\324" \
- "\377\301\333\343\342\377\1\322\334\333\377\202\223\254\247\377\1\271" \
- "\311\306\377\212\377\377\377\377\4\373\374\374\377\233\262\255\377\223" \
- "\254\247\377\241\267\262\377\352\333\343\342\377\2\331\342\341\377t\211" \
- "\205\377\213Slg\377\1|\220\214\377\207\333\343\342\377\4\274\310\306" \
- "\377\211\233\230\377n\204\200\377Voj\377\204Slg\377\2_vr\377\332\342" \
- "\341\377\366\333\343\342\377\1\321\333\332\377\202\223\254\247\377\1" \
- "\272\312\307\377\212\377\377\377\377\4\374\375\374\377\233\262\256\377" \
- "\223\254\247\377\240\266\262\377\303\333\343\342\377\4\251\275\271\377" \
- "\223\254\247\377\225\255\251\377\365\367\367\377\212\377\377\377\377" \
- "\1\304\322\317\377\202\223\254\247\377\1\313\326\325\377\352\333\343" \
- "\342\377\2\323\334\333\377o\204\200\377\211Slg\377\2d{v\377\321\332\331" \
- "\377\207\333\343\342\377\1\227\250\245\377\207Slg\377\1\217\240\235\377" \
- "\367\333\343\342\377\1\263\305\301\377\202\223\254\247\377\1\350\355" \
- "\354\377\212\377\377\377\377\1\330\341\337\377\202\223\254\247\377\1" \
- "\277\315\313\377\303\333\343\342\377\1\310\324\322\377\202\223\254\247" \
- "\377\1\313\327\324\377\212\377\377\377\377\1\361\364\363\377\202\223" \
- "\254\247\377\1\254\277\274\377\353\333\343\342\377\3\327\337\336\377" \
- "\226\247\244\377Xql\377\205Slg\377\3Umh\377\216\240\235\377\323\334\333" \
- "\377\210\333\343\342\377\1\227\250\245\377\207Slg\377\1\305\320\316\377" \
- "\366\333\343\342\377\4\330\341\337\377\230\257\253\377\223\254\247\377" \
- "\251\274\270\377\213\377\377\377\377\4\252\276\272\377\223\254\247\377" \
- "\227\257\252\377\330\341\337\377\304\333\343\342\377\4\236\264\260\377" \
- "\223\254\247\377\237\265\261\377\375\376\375\377\212\377\377\377\377" \
- "\4\263\304\301\377\223\254\247\377\224\255\250\377\325\336\335\377\354" \
- "\333\343\342\377\7\326\337\336\377\261\277\274\377\231\251\246\377\213" \
- "\235\232\377\226\246\243\377\256\273\271\377\312\324\323\377\212\333" \
- "\343\342\377\1\257\274\272\377\206\201\224\220\377\1\221\242\237\377" \
- "\367\333\343\342\377\1\277\315\313\377\202\223\254\247\377\1\326\337" \
- "\335\377\212\377\377\377\377\1\351\356\355\377\202\223\254\247\377\1" \
- "\263\304\301\377\305\333\343\342\377\1\274\313\311\377\202\223\254\247" \
- "\377\1\334\344\343\377\212\377\377\377\377\1\340\347\346\377\202\223" \
- "\254\247\377\1\270\310\305\377\377\333\343\342\377\375\333\343\342\377" \
- "\4\241\266\262\377\223\254\247\377\233\262\255\377\373\374\374\377\212" \
- "\377\377\377\377\1\274\313\310\377\202\223\254\247\377\1\321\333\331" \
- "\377\305\333\343\342\377\4\327\337\336\377\226\256\251\377\223\254\247" \
- "\377\257\301\276\377\212\377\377\377\377\5\376\376\376\377\242\267\263" \
- "\377\223\254\247\377\233\262\255\377\332\342\341\377\377\333\343\342" \
- "\377\373\333\343\342\377\1\312\326\324\377\202\223\254\247\377\1\304" \
- "\322\317\377\212\377\377\377\377\4\367\371\370\377\226\256\251\377\223" \
- "\254\247\377\247\273\270\377\307\333\343\342\377\1\260\302\277\377\202" \
- "\223\254\247\377\1\355\361\360\377\212\377\377\377\377\1\317\332\330" \
- "\377\202\223\254\247\377\1\304\321\317\377\377\333\343\342\377\373\333" \
- "\343\342\377\1\254\277\274\377\202\223\254\247\377\1\361\364\363\377" \
- "\212\377\377\377\377\1\315\330\326\377\202\223\254\247\377\1\306\323" \
- "\320\377\307\333\343\342\377\1\316\331\330\377\202\223\254\247\377\1" \
- "\300\317\314\377\212\377\377\377\377\4\370\371\371\377\227\257\252\377" \
- "\223\254\247\377\245\272\266\377\377\333\343\342\377\372\333\343\342" \
- "\377\4\324\336\334\377\224\255\250\377\223\254\247\377\263\305\301\377" \
- "\212\377\377\377\377\5\376\376\376\377\240\266\262\377\223\254\247\377" \
- "\234\263\256\377\332\342\341\377\310\333\343\342\377\4\245\271\265\377" \
- "\223\254\247\377\230\260\253\377\371\372\372\377\212\377\377\377\377" \
- "\1\275\314\311\377\202\223\254\247\377\1\317\332\330\377\345\333\343" \
- "\342\377\1\316\330\326\377\202\270\305\303\377\1\302\315\313\377\377" \
- "\333\343\342\377\220\333\343\342\377\1\270\310\305\377\202\223\254\247" \
- "\377\1\341\350\346\377\212\377\377\377\377\1\337\346\345\377\202\223" \
- "\254\247\377\1\272\312\307\377\311\333\343\342\377\1\303\321\316\377" \
- "\202\223\254\247\377\1\322\334\332\377\212\377\377\377\377\1\353\357" \
- "\356\377\202\223\254\247\377\1\261\303\277\377\345\333\343\342\377\1" \
- "\250\267\264\377\202Slg\377\1x\214\210\377\377\333\343\342\377\217\333" \
- "\343\342\377\5\332\342\341\377\232\262\255\377\223\254\247\377\242\270" \
- "\263\377\376\376\376\377\212\377\377\377\377\4\261\303\277\377\223\254" \
- "\247\377\225\255\251\377\326\337\336\377\311\333\343\342\377\4\331\342" \
- "\341\377\232\261\255\377\223\254\247\377\244\271\265\377\213\377\377" \
- "\377\377\4\254\277\273\377\223\254\247\377\226\256\252\377\327\340\337" \
- "\377\344\333\343\342\377\1\250\267\264\377\202Slg\377\1x\214\210\377" \
- "\377\333\343\342\377\217\333\343\342\377\1\303\321\317\377\202\223\254" \
- "\247\377\1\317\332\330\377\212\377\377\377\377\1\357\363\362\377\202" \
- "\223\254\247\377\1\256\301\275\377\313\333\343\342\377\1\267\310\305" \
- "\377\202\223\254\247\377\1\343\351\350\377\212\377\377\377\377\1\331" \
- "\342\340\377\202\223\254\247\377\1\275\314\311\377\344\333\343\342\377" \
- "\1\250\267\264\377\202Slg\377\1x\214\210\377\377\333\343\342\377\217" \
- "\333\343\342\377\4\245\272\266\377\223\254\247\377\227\257\252\377\370" \
- "\372\371\377\212\377\377\377\377\1\303\321\316\377\202\223\254\247\377" \
- "\1\315\330\326\377\313\333\343\342\377\4\324\336\334\377\224\255\250" \
- "\377\223\254\247\377\266\307\303\377\212\377\377\377\377\4\374\375\375" \
- "\377\235\263\257\377\223\254\247\377\236\265\260\377\344\333\343\342" \
- "\377\1\250\267\264\377\202Slg\377\1x\214\210\377\377\333\343\342\377" \
- "\216\333\343\342\377\1\317\332\330\377\202\223\254\247\377\1\276\315" \
- "\312\377\212\377\377\377\377\4\372\373\373\377\231\261\254\377\223\254" \
- "\247\377\243\270\264\377\315\333\343\342\377\4\254\277\273\377\223\254" \
- "\247\377\224\254\250\377\363\365\365\377\212\377\377\377\377\1\310\325" \
- "\322\377\202\223\254\247\377\1\310\324\322\377\343\333\343\342\377\1" \
- "\250\267\264\377\202Slg\377\1r\207\203\377\232\305\320\316\377\3\306" \
- "\320\317\377\316\327\326\377\330\340\337\377\360\333\343\342\377\1\261" \
- "\303\277\377\202\223\254\247\377\1\353\360\357\377\212\377\377\377\377" \
- "\1\324\336\334\377\202\223\254\247\377\1\301\317\315\377\315\333\343" \
- "\342\377\1\312\326\324\377\202\223\254\247\377\1\307\324\321\377\212" \
- "\377\377\377\377\4\363\366\366\377\224\255\250\377\223\254\247\377\252" \
- "\275\272\377\343\333\343\342\377\1\250\267\264\377\240Slg\377\4[sn\377" \
- "t\211\205\377\226\247\244\377\273\307\305\377\353\333\343\342\377\4\327" \
- "\340\336\377\226\256\252\377\223\254\247\377\254\277\274\377\213\377" \
- "\377\377\377\4\247\273\267\377\223\254\247\377\231\260\254\377\331\341" \
- "\340\377\316\333\343\342\377\4\240\266\262\377\223\254\247\377\234\263" \
- "\256\377\374\375\374\377\212\377\377\377\377\4\267\307\304\377\223\254" \
- "\247\377\224\254\247\377\323\334\333\377\342\333\343\342\377\1\250\267" \
- "\264\377\244Slg\377\2n\203\177\377\257\274\272\377\351\333\343\342\377" \
- "\1\274\313\311\377\202\223\254\247\377\1\332\343\341\377\212\377\377" \
- "\377\377\1\346\353\352\377\202\223\254\247\377\1\265\306\303\377\317" \
- "\333\343\342\377\1\276\315\312\377\202\223\254\247\377\1\330\341\337" \
- "\377\212\377\377\377\377\1\344\352\351\377\202\223\254\247\377\1\266" \
- "\306\303\377\342\333\343\342\377\1\250\267\264\377\246Slg\377\2\177\222" \
- "\217\377\324\335\334\377\347\333\343\342\377\4\236\264\260\377\223\254" \
- "\247\377\235\264\257\377\374\375\375\377\212\377\377\377\377\1\270\310" \
- "\305\377\202\223\254\247\377\1\323\334\333\377\317\333\343\342\377\4" \
- "\330\340\337\377\227\257\252\377\223\254\247\377\253\276\272\377\213" \
- "\377\377\377\377\4\245\272\266\377\223\254\247\377\231\260\254\377\331" \
- "\341\340\377\341\333\343\342\377\1\250\267\264\377\247Slg\377\2i\200" \
- "{\377\317\330\327\377\345\333\343\342\377\1\310\324\322\377\202\223\254" \
- "\247\377\1\310\325\322\377\212\377\377\377\377\4\365\367\367\377\225" \
- "\255\250\377\223\254\247\377\252\275\271\377\321\333\343\342\377\1\263" \
- "\304\301\377\202\223\254\247\377\1\352\357\356\377\212\377\377\377\377" \
- "\1\322\335\333\377\202\223\254\247\377\1\301\317\315\377\341\333\343" \
- "\342\377\1\250\267\264\377\250Slg\377\2u\212\206\377\331\341\340\377" \
- "\344\333\343\342\377\4\252\275\271\377\223\254\247\377\225\255\250\377" \
- "\364\366\366\377\212\377\377\377\377\1\312\326\323\377\202\223\254\247" \
- "\377\1\310\324\322\377\321\333\343\342\377\1\321\333\331\377\202\223" \
- "\254\247\377\1\274\314\311\377\212\377\377\377\377\4\372\373\373\377" \
- "\231\260\254\377\223\254\247\377\243\270\264\377\341\333\343\342\377" \
- "\1\321\333\331\377\203\301\314\312\377\2\247\266\263\377[sn\377\203S" \
- "lg\377\6r\207\203\377\216\240\235\377\247\265\263\377\264\301\277\377" \
- "\273\307\305\377\300\314\312\377\202\301\314\312\377\7\300\314\312\377" \
- "\273\307\305\377\265\301\277\377\250\266\264\377\220\241\236\377t\210" \
- "\204\377Tlg\377\202Slg\377\2Zrm\377\246\264\262\377\203\301\314\312\377" \
- "\6\274\310\306\377\266\302\300\377\254\271\267\377\223\244\241\377w\214" \
- "\210\377Uni\377\205Slg\377\1\225\246\243\377\343\333\343\342\377\1\323" \
- "\334\333\377\202\223\254\247\377\1\267\307\304\377\212\377\377\377\377" \
- "\4\375\375\375\377\236\264\260\377\223\254\247\377\236\265\260\377\323" \
- "\333\343\342\377\4\247\273\267\377\223\254\247\377\226\256\252\377\367" \
- "\371\371\377\212\377\377\377\377\1\301\317\314\377\202\223\254\247\377" \
- "\1\315\330\326\377\342\333\343\342\377\7\332\342\341\377\236\255\253" \
- "\377Vni\377Slg\377Wpk\377\225\245\242\377\313\325\324\377\216\333\343" \
- "\342\377\7\315\326\325\377\230\250\245\377Yrm\377Slg\377Uni\377\232\252" \
- "\247\377\331\342\341\377\206\333\343\342\377\3\320\331\330\377\235\255" \
- "\252\377[sn\377\203Slg\377\2Yql\377\321\332\331\377\342\333\343\342\377" \
- "\1\265\306\303\377\202\223\254\247\377\1\345\353\351\377\212\377\377" \
- "\377\377\1\333\343\342\377\202\223\254\247\377\1\274\313\311\377\323" \
- "\333\343\342\377\1\305\322\320\377\202\223\254\247\377\1\316\331\327" \
- "\377\212\377\377\377\377\1\356\362\361\377\202\223\254\247\377\1\256" \
- "\301\275\377\342\333\343\342\377\1\226\246\243\377\202Slg\377\2o\205" \
- "\201\377\313\325\324\377\222\333\343\342\377\2\316\330\326\377v\212\206" \
- "\377\202Slg\377\1\217\241\235\377\210\333\343\342\377\2\316\330\326\377" \
- "q\206\202\377\203Slg\377\1\230\250\245\377\341\333\343\342\377\4\331" \
- "\341\340\377\231\260\254\377\223\254\247\377\246\272\266\377\213\377" \
- "\377\377\377\4\256\300\275\377\223\254\247\377\226\256\252\377\327\340" \
- "\336\377\323\333\343\342\377\5\332\342\341\377\234\263\256\377\223\254" \
- "\247\377\241\267\262\377\376\376\376\377\212\377\377\377\377\4\260\302" \
- "\276\377\223\254\247\377\225\255\251\377\326\337\336\377\340\333\343" \
- "\342\377\1\262\277\275\377\202Slg\377\2q\207\202\377\325\335\334\377" \
- "\224\333\343\342\377\2\327\337\336\377v\212\206\377\202Slg\377\1\254" \
- "\272\270\377\210\333\343\342\377\2\321\333\331\377g}y\377\202Slg\377" \
- "\1i\177{\377\341\333\343\342\377\1\301\317\314\377\202\223\254\247\377" \
- "\1\323\335\333\377\212\377\377\377\377\1\354\361\360\377\202\223\254" \
- "\247\377\1\261\303\277\377\325\333\343\342\377\1\272\311\307\377\202" \
- "\223\254\247\377\1\337\346\345\377\212\377\377\377\377\1\335\345\344" \
- "\377\202\223\254\247\377\1\272\312\307\377\337\333\343\342\377\5\327" \
- "\337\336\377]up\377Slg\377Voj\377\306\320\317\377\226\333\343\342\377" \
- "\5\312\324\323\377Xpk\377Slg\377Yrm\377\324\335\334\377\210\333\343\342" \
- "\377\1\261\277\274\377\203Slg\377\1\317\331\327\377\340\333\343\342\377" \
- "\4\243\270\264\377\223\254\247\377\231\260\254\377\372\373\373\377\212" \
- "\377\377\377\377\1\277\316\313\377\202\223\254\247\377\1\317\332\330" \
- "\377\325\333\343\342\377\4\325\337\335\377\225\255\251\377\223\254\247" \
- "\377\261\303\300\377\212\377\377\377\377\5\376\376\376\377\240\266\261" \
- "\377\223\254\247\377\234\263\257\377\332\342\341\377\336\333\343\342" \
- "\377\1\254\272\270\377\202Slg\377\1\201\224\220\377\230\333\343\342\377" \
- "\1\206\230\225\377\202Slg\377\1\246\265\262\377\211\333\343\342\377\1" \
- "g}y\377\202Slg\377\1\257\274\272\377\337\333\343\342\377\1\314\330\326" \
- "\377\202\223\254\247\377\1\302\320\315\377\212\377\377\377\377\4\371" \
- "\372\372\377\230\257\253\377\223\254\247\377\245\272\266\377\327\333" \
- "\343\342\377\1\256\301\275\377\202\223\254\247\377\1\360\363\362\377" \
- "\212\377\377\377\377\1\314\327\325\377\202\223\254\247\377\1\306\323" \
- "\320\377\336\333\343\342\377\1x\215\211\377\202Slg\377\1\254\272\270" \
- "\377\230\333\343\342\377\1\257\274\272\377\202Slg\377\1r\207\203\377" \
- "\211\333\343\342\377\1\214\235\232\377\202Slg\377\1\237\257\254\377\337" \
- "\333\343\342\377\1\256\301\275\377\202\223\254\247\377\1\357\362\362" \
- "\377\212\377\377\377\377\1\321\333\331\377\202\223\254\247\377\1\303" \
- "\321\317\377\327\333\343\342\377\1\314\330\326\377\202\223\254\247\377" \
- "\1\303\321\316\377\212\377\377\377\377\4\366\370\370\377\225\256\251" \
- "\377\223\254\247\377\247\273\270\377\336\333\343\342\377\1\\so\377\202" \
- "Slg\377\1\277\313\311\377\230\333\343\342\377\1\301\315\313\377\202S" \
- "lg\377\2Vni\377\332\342\341\377\210\333\343\342\377\1\244\263\260\377" \
- "\202Slg\377\1\226\246\243\377\336\333\343\342\377\4\325\337\335\377\225" \
- "\255\251\377\223\254\247\377\260\302\277\377\213\377\377\377\377\4\243" \
- "\271\264\377\223\254\247\377\232\262\255\377\332\342\341\377\330\333" \
- "\343\342\377\4\243\270\264\377\223\254\247\377\232\261\254\377\373\374" \
- "\373\377\212\377\377\377\377\1\272\312\307\377\202\223\254\247\377\1" \
- "\321\333\332\377\334\333\343\342\377\1\326\336\335\377\203Slg\377\1\311" \
- "\324\322\377\230\333\343\342\377\1\314\325\324\377\203Slg\377\1\317\331" \
- "\327\377\210\333\343\342\377\1\256\274\271\377\202Slg\377\1\215\236\233" \
- "\377\336\333\343\342\377\1\272\311\307\377\202\223\254\247\377\1\336" \
- "\345\344\377\212\377\377\377\377\1\342\351\347\377\202\223\254\247\377" \
- "\1\270\310\305\377\331\333\343\342\377\1\301\317\314\377\202\223\254" \
- "\247\377\1\325\336\334\377\212\377\377\377\377\1\350\355\354\377\202" \
- "\223\254\247\377\1\263\304\301\377\334\333\343\342\377\1\307\322\320" \
- "\377\203Slg\377\1\276\311\307\377\230\333\343\342\377\1\302\315\313\377" \
- "\203Slg\377\1\301\314\312\377\210\333\343\342\377\1\261\276\274\377\202" \
- "Slg\377\1\215\237\234\377\335\333\343\342\377\5\332\342\341\377\234\263" \
- "\256\377\223\254\247\377\240\266\262\377\376\376\376\377\212\377\377" \
- "\377\377\4\265\306\302\377\223\254\247\377\224\255\250\377\324\336\334" \
- "\377\331\333\343\342\377\6\331\341\340\377\231\260\254\377\222\253\247" \
- "\377\237\265\261\377\351\356\355\377\370\371\371\377\211\377\377\377" \
- "\377\4\251\275\271\377\223\254\247\377\227\257\252\377\330\341\337\377" \
- "\333\333\343\342\377\1\303\316\314\377\203Slg\377\1\251\267\265\377\230" \
- "\333\343\342\377\1\257\274\272\377\203Slg\377\1\275\310\306\377\210\333" \
- "\343\342\377\1\243\262\257\377\202Slg\377\1\224\245\242\377\335\333\343" \
- "\342\377\1\305\322\320\377\202\223\254\247\377\1\315\330\326\377\212" \
- "\377\377\377\377\4\362\365\364\377\224\254\250\377\223\254\247\377\254" \
- "\277\274\377\333\333\343\342\377\2\265\306\303\377\222\254\246\377\203" \
- "\223\254\247\377\7\233\262\255\377\252\276\272\377\271\311\306\377\310" \
- "\325\322\377\330\341\337\377\347\354\353\377\366\370\370\377\202\377" \
- "\377\377\377\1\327\340\336\377\202\223\254\247\377\1\277\315\313\377" \
- "\333\333\343\342\377\1\321\332\331\377\203Slg\377\1|\220\214\377\230" \
- "\333\343\342\377\1\200\223\220\377\203Slg\377\1\313\325\323\377\210\333" \
- "\343\342\377\1\225\245\242\377\202Slg\377\1\234\253\251\377\335\333\343" \
- "\342\377\4\247\273\267\377\223\254\247\377\226\256\251\377\366\370\370" \
- "\377\212\377\377\377\377\1\306\323\321\377\202\223\254\247\377\1\312" \
- "\326\324\377\333\333\343\342\377\1\322\334\333\377\202\223\254\247\377" \
- "\5\245\271\266\377\307\324\321\377\267\310\304\377\247\274\270\377\230" \
- "\260\253\377\204\223\254\247\377\6\231\261\254\377\250\274\270\377\266" \
- "\306\303\377\226\256\251\377\222\254\247\377\236\265\261\377\334\333" \
- "\343\342\377\1Woj\377\202Slg\377\2Umh\377\277\312\310\377\226\333\343" \
- "\342\377\2\300\314\312\377Uni\377\202Slg\377\2Tlg\377\330\340\337\377" \
- "\210\333\343\342\377\1\177\223\217\377\202Slg\377\1\252\270\266\377\334" \
- "\333\343\342\377\1\321\333\331\377\202\223\254\247\377\1\273\312\307" \
- "\377\212\377\377\377\377\4\374\375\374\377\233\262\256\377\223\254\247" \
- "\377\241\266\262\377\335\333\343\342\377\4\245\271\265\377\223\254\247" \
- "\377\224\254\247\377\365\367\367\377\203\377\377\377\377\7\365\367\367" \
- "\377\345\353\352\377\325\337\335\377\306\323\320\377\267\307\304\377" \
- "\247\273\267\377\230\260\253\377\202\223\254\247\377\2\222\253\247\377" \
- "\312\326\324\377\333\333\343\342\377\1y\215\211\377\203Slg\377\2f}x\377" \
- "\316\330\326\377\224\333\343\342\377\2\317\330\327\377g~y\377\203Slg" \
- "\377\1s\210\204\377\210\333\343\342\377\2\316\327\326\377Vni\377\202" \
- "Slg\377\1\276\311\307\377\334\333\343\342\377\1\263\304\301\377\202\223" \
- "\254\247\377\1\350\356\355\377\212\377\377\377\377\1\330\341\337\377" \
- "\202\223\254\247\377\1\277\315\313\377\335\333\343\342\377\1\310\324" \
- "\322\377\202\222\254\247\377\1\310\325\323\377\212\377\377\377\377\4" \
- "\347\355\354\377\223\253\246\377\222\253\246\377\250\274\267\377\202" \
- "\333\343\342\377\2\306\323\321\377\331\340\337\377\327\333\343\342\377" \
- "\1\250\266\264\377\204Slg\377\2ayt\377\274\310\306\377\222\333\343\342" \
- "\377\2\275\310\306\377czu\377\204Slg\377\1\243\262\257\377\210\333\343" \
- "\342\377\1\223\244\241\377\203Slg\377\1\321\333\331\377\333\333\343\342" \
- "\377\4\330\340\337\377\227\257\252\377\223\254\247\377\251\275\271\377" \
- "\213\377\377\377\377\4\252\276\272\377\223\254\247\377\230\257\253\377" \
- "\330\341\337\377\336\333\343\342\377\4\232\261\254\377\223\254\247\377" \
- "\232\260\254\377\375\375\375\377\212\377\377\377\377\7\256\301\274\377" \
- "\223\254\247\377\223\253\247\377\311\325\323\377\234\264\256\377\223" \
- "\254\247\377\277\316\313\377\327\333\343\342\377\2\323\334\333\377^u" \
- "q\377\205Slg\377\3}\221\215\377\270\305\303\377\330\340\337\377\214\333" \
- "\343\342\377\3\330\340\337\377\270\304\302\377}\220\215\377\205Slg\377" \
- "\2]tp\377\321\332\331\377\207\333\343\342\377\2\237\256\253\377Tlg\377" \
- "\202Slg\377\1h~z\377\334\333\343\342\377\1\276\315\312\377\202\223\254" \
- "\247\377\1\327\340\336\377\212\377\377\377\377\1\351\356\355\377\202" \
- "\223\254\247\377\1\263\305\301\377\337\333\343\342\377\4\272\312\310" \
- "\377\223\253\247\377\222\253\246\377\333\343\342\377\212\377\377\377" \
- "\377\7\341\350\347\377\222\254\246\377\223\253\247\377\264\305\302\377" \
- "\230\257\253\377\223\254\247\377\241\267\263\377\330\333\343\342\377" \
- "\1\251\270\265\377\207Slg\377\6Yrm\377z\216\212\377\220\242\236\377\245" \
- "\264\261\377\263\300\276\377\270\305\303\377\202\276\312\310\377\6\271" \
- "\305\303\377\263\300\276\377\246\264\262\377\220\242\236\377y\216\212" \
- "\377Yql\377\207Slg\377\1\250\267\264\377\205\333\343\342\377\3\331\342" \
- "\341\377\271\306\304\377\204\226\223\377\204Slg\377\1\212\234\231\377" \
- "\334\333\343\342\377\4\240\266\262\377\223\254\247\377\233\262\256\377" \
- "\374\374\374\377\212\377\377\377\377\1\274\313\310\377\202\223\254\247" \
- "\377\1\321\333\332\377\337\333\343\342\377\4\327\340\336\377\224\254" \
- "\250\377\223\254\247\377\250\273\267\377\212\377\377\377\377\5\376\376" \
- "\376\377\236\264\257\377\223\254\247\377\227\257\252\377\263\304\302" \
- "\377\202\223\254\247\377\1\313\327\325\377\330\333\343\342\377\1}\221" \
- "\215\377\232Slg\377\1~\222\216\377\205\333\343\342\377\2\325\336\335" \
- "\377`xs\377\206Slg\377\1\256\274\271\377\333\333\343\342\377\1\312\326" \
- "\324\377\202\223\254\247\377\1\306\323\320\377\212\377\377\377\377\4" \
- "\367\371\370\377\226\256\251\377\223\254\247\377\247\273\270\377\341" \
- "\333\343\342\377\4\255\277\274\377\223\253\246\377\222\253\246\377\354" \
- "\361\360\377\212\377\377\377\377\4\317\332\330\377\222\253\246\377\223" \
- "\253\246\377\274\314\311\377\202\223\254\247\377\1\254\277\274\377\330" \
- "\333\343\342\377\2\327\340\337\377}\221\215\377\230Slg\377\2}\221\215" \
- "\377\330\340\337\377\205\333\343\342\377\1\323\334\333\377\206Slg\377" \
- "\2[sn\377\327\337\336\377\333\333\343\342\377\4\254\277\273\377\223\254" \
- "\247\377\224\254\250\377\362\365\364\377\212\377\377\377\377\1\315\330" \
- "\326\377\202\223\254\247\377\1\306\323\321\377\341\333\343\342\377\4" \
- "\317\331\330\377\222\253\247\377\223\253\246\377\273\313\310\377\212" \
- "\377\377\377\377\10\370\372\371\377\225\255\251\377\223\254\247\377\240" \
- "\266\262\377\251\274\271\377\223\254\247\377\225\255\250\377\324\336" \
- "\335\377\330\333\343\342\377\2\330\341\340\377\213\235\232\377\226Sl" \
- "g\377\2\211\234\230\377\330\340\337\377\206\333\343\342\377\1\323\334" \
- "\333\377\206Slg\377\1\212\234\231\377\333\333\343\342\377\4\324\336\334" \
- "\377\224\255\250\377\223\254\247\377\264\305\302\377\212\377\377\377" \
- "\377\5\376\376\376\377\240\266\262\377\223\254\247\377\234\263\257\377" \
- "\332\342\341\377\342\333\343\342\377\4\240\266\262\377\223\254\247\377" \
- "\225\255\250\377\371\372\372\377\203\377\377\377\377\3\367\371\371\377" \
- "\300\317\314\377\273\313\307\377\204\377\377\377\377\4\271\312\306\377" \
- "\223\254\246\377\223\254\247\377\276\314\311\377\202\223\254\247\377" \
- "\1\271\311\305\377\332\333\343\342\377\2\270\304\302\377e|w\377\222S" \
- "lg\377\2d{v\377\267\303\301\377\211\333\343\342\377\206\322\333\332\377" \
- "\1\327\340\337\377\333\333\343\342\377\1\267\310\305\377\202\223\254" \
- "\247\377\1\342\350\347\377\212\377\377\377\377\1\337\346\345\377\202" \
- "\223\254\247\377\1\272\312\307\377\343\333\343\342\377\4\303\321\317" \
- "\377\222\254\247\377\223\254\246\377\320\332\330\377\203\377\377\377" \
- "\377\4\373\374\374\377\233\262\255\377\224\255\250\377\363\366\365\377" \
- "\203\377\377\377\377\10\354\360\357\377\222\253\246\377\222\254\247\377" \
- "\255\300\274\377\233\262\255\377\223\254\247\377\233\262\255\377\332" \
- "\342\341\377\332\333\343\342\377\3\327\337\336\377\251\270\265\377q\207" \
- "\202\377\216Slg\377\3q\206\202\377\251\267\265\377\326\337\336\377\353" \
- "\333\343\342\377\5\331\342\341\377\232\261\255\377\223\254\247\377\243" \
- "\270\264\377\376\376\376\377\212\377\377\377\377\4\261\303\277\377\223" \
- "\254\247\377\225\255\251\377\326\337\336\377\343\333\343\342\377\4\332" \
- "\342\341\377\227\257\252\377\223\254\247\377\235\264\257\377\204\377" \
- "\377\377\377\3\304\321\317\377\223\254\247\377\307\324\321\377\204\377" \
- "\377\377\377\4\246\273\267\377\223\254\247\377\222\253\247\377\222\253" \
- "\246\377\202\223\254\247\377\1\304\321\317\377\335\333\343\342\377\6" \
- "\306\321\317\377\247\265\263\377\212\234\231\377o\205\201\377dzv\377" \
- "[sn\377\202Tlg\377\6[sn\377dzv\377o\205\201\377\212\234\231\377\247\265" \
- "\263\377\306\320\317\377\356\333\343\342\377\1\303\320\316\377\202\223" \
- "\254\247\377\1\320\333\331\377\212\377\377\377\377\1\357\363\362\377" \
- "\202\223\254\247\377\1\256\301\275\377\345\333\343\342\377\4\265\306" \
- "\303\377\223\254\247\377\222\254\246\377\342\351\347\377\203\377\377" \
- "\377\377\4\361\364\363\377\224\255\250\377\234\263\257\377\374\375\375" \
- "\377\203\377\377\377\377\4\333\343\341\377\223\253\246\377\222\254\246" \
- "\377\221\254\246\377\202\223\254\247\377\1\246\272\266\377\343\333\343" \
- "\342\377\2\332\342\341\377\331\342\341\377\364\333\343\342\377\4\245" \
- "\271\265\377\223\254\247\377\230\257\253\377\371\372\372\377\212\377" \
- "\377\377\377\1\303\321\316\377\202\223\254\247\377\1\315\330\326\377" \
- "\345\333\343\342\377\4\324\336\334\377\223\253\247\377\223\254\247\377" \
- "\257\302\275\377\204\377\377\377\377\3\262\304\301\377\223\254\247\377" \
- "\330\341\337\377\203\377\377\377\377\5\375\375\375\377\231\260\253\377" \
- "\223\254\247\377\230\260\253\377\257\301\276\377\202\223\254\247\377" \
- "\1\317\332\330\377\377\333\343\342\377\330\333\343\342\377\1\316\331" \
- "\330\377\202\223\254\247\377\1\277\316\313\377\212\377\377\377\377\4" \
- "\372\373\373\377\232\261\254\377\223\254\247\377\243\270\264\377\347" \
- "\333\343\342\377\4\247\273\270\377\222\253\246\377\223\253\247\377\362" \
- "\365\364\377\203\377\377\377\377\3\340\347\345\377\223\254\247\377\253" \
- "\276\272\377\204\377\377\377\377\4\307\323\321\377\223\253\247\377\223" \
- "\253\246\377\276\314\312\377\202\223\254\247\377\1\261\303\300\377\377" \
- "\333\343\342\377\330\333\343\342\377\1\260\302\277\377\202\223\254\247" \
- "\377\1\354\361\360\377\212\377\377\377\377\1\324\336\334\377\202\223" \
- "\254\247\377\1\301\317\315\377\347\333\343\342\377\1\312\326\324\377" \
- "\202\223\253\246\377\1\302\321\316\377\204\377\377\377\377\3\242\267" \
- "\263\377\223\254\247\377\351\356\355\377\203\377\377\377\377\10\364\367" \
- "\366\377\223\253\247\377\223\254\247\377\245\271\266\377\243\270\264" \
- "\377\223\254\247\377\227\257\252\377\327\340\337\377\377\333\343\342" \
- "\377\326\333\343\342\377\4\327\337\336\377\226\256\251\377\223\254\247" \
- "\377\256\300\275\377\213\377\377\377\377\4\247\273\267\377\223\254\247" \
- "\377\231\260\254\377\331\341\340\377\350\333\343\342\377\4\234\262\256" \
- "\377\223\254\247\377\227\257\252\377\374\374\374\377\203\377\377\377" \
- "\377\3\316\332\327\377\223\254\247\377\274\314\310\377\204\377\377\377" \
- "\377\4\261\304\300\377\222\253\246\377\222\254\247\377\274\313\311\377" \
- "\202\223\254\247\377\1\275\314\311\377\356\333\343\342\377\1\277\313" \
- "\311\377\202\260\275\273\377\1\311\323\322\377\343\333\343\342\377\1" \
- "\274\313\310\377\202\223\254\247\377\1\333\343\342\377\212\377\377\377" \
- "\377\1\346\353\352\377\202\223\254\247\377\1\266\306\303\377\351\333" \
- "\343\342\377\4\276\314\312\377\223\254\246\377\222\253\246\377\330\341" \
- "\337\377\203\377\377\377\377\4\370\371\371\377\227\257\252\377\226\257" \
- "\252\377\367\371\370\377\203\377\377\377\377\7\345\353\352\377\223\254" \
- "\246\377\223\253\246\377\261\303\301\377\231\261\254\377\223\254\247" \
- "\377\236\265\261\377\356\333\343\342\377\1\202\225\221\377\202Slg\377" \
- "\1\243\262\257\377\343\333\343\342\377\4\236\264\260\377\223\254\247" \
- "\377\236\264\260\377\375\375\375\377\212\377\377\377\377\4\270\310\305" \
- "\377\223\254\247\377\224\254\247\377\323\335\333\377\351\333\343\342" \
- "\377\4\330\341\337\377\224\255\251\377\223\254\247\377\244\271\264\377" \
- "\204\377\377\377\377\3\275\314\311\377\223\254\247\377\315\331\326\377" \
- "\204\377\377\377\377\7\240\266\262\377\223\254\247\377\226\255\251\377" \
- "\265\306\302\377\225\255\250\377\255\277\274\377\327\340\337\377\355" \
- "\333\343\342\377\1\202\225\221\377\202Slg\377\1\243\262\257\377\342\333" \
- "\343\342\377\1\307\324\322\377\202\223\254\247\377\1\312\326\323\377" \
- "\212\377\377\377\377\4\365\367\367\377\225\255\250\377\223\254\247\377" \
- "\252\275\272\377\353\333\343\342\377\4\260\301\276\377\223\253\246\377" \
- "\222\253\247\377\351\356\355\377\203\377\377\377\377\4\352\357\356\377" \
- "\223\254\247\377\241\266\262\377\376\376\376\377\203\377\377\377\377" \
- "\1\323\335\333\377\202\223\254\246\377\2\275\314\311\377\324\336\334" \
- "\377\357\333\343\342\377\1\202\225\221\377\202Slg\377\1\243\262\257\377" \
- "\342\333\343\342\377\4\251\275\271\377\223\254\247\377\225\255\250\377" \
- "\364\367\366\377\212\377\377\377\377\1\312\326\323\377\202\223\254\247" \
- "\377\1\310\324\322\377\353\333\343\342\377\4\321\333\331\377\223\254" \
- "\246\377\222\254\246\377\266\307\304\377\204\377\377\377\377\3\253\277" \
- "\273\377\223\254\247\377\336\346\344\377\203\377\377\377\377\4\372\373" \
- "\373\377\226\257\251\377\223\254\247\377\236\264\260\377\360\333\343" \
- "\342\377\1\202\225\221\377\202Slg\377\1\243\262\257\377\341\333\343\342" \
- "\377\1\322\334\333\377\202\223\254\247\377\1\270\310\305\377\212\377" \
- "\377\377\377\4\375\375\375\377\236\264\260\377\223\254\247\377\236\265" \
- "\260\377\355\333\343\342\377\4\243\270\264\377\223\254\247\377\224\255" \
- "\247\377\366\370\370\377\203\377\377\377\377\3\331\342\340\377\223\254" \
- "\247\377\261\303\300\377\204\377\377\377\377\4\276\314\312\377\223\253" \
- "\246\377\223\253\247\377\314\330\326\377\331\333\343\342\377\6\331\341" \
- "\340\377\306\320\317\377\256\273\271\377\237\257\254\377\230\250\245" \
- "\377\220\242\236\377\220\216\237\234\377\1g~y\377\202Slg\377\1\243\262" \
- "\257\377\341\333\343\342\377\1\265\306\302\377\202\223\254\247\377\1" \
- "\346\353\352\377\212\377\377\377\377\1\333\343\342\377\202\223\254\247" \
- "\377\1\275\314\311\377\355\333\343\342\377\4\306\323\320\377\222\253" \
- "\246\377\223\254\246\377\313\327\325\377\203\377\377\377\377\4\374\375" \
- "\375\377\234\263\257\377\223\254\247\377\357\363\362\377\203\377\377" \
- "\377\377\4\357\363\362\377\223\254\247\377\223\253\246\377\253\275\272" \
- "\377\327\333\343\342\377\3\271\306\304\377\205\230\224\377Yrm\377\230" \
- "Slg\377\1\243\262\257\377\340\333\343\342\377\4\331\341\340\377\230\260" \
- "\253\377\223\254\247\377\247\273\267\377\213\377\377\377\377\4\256\300" \
- "\275\377\223\254\247\377\226\256\252\377\327\340\337\377\355\333\343" \
- "\342\377\5\332\342\341\377\230\260\254\377\223\254\247\377\233\262\255" \
- "\377\376\376\376\377\203\377\377\377\377\3\307\324\321\377\223\254\247" \
- "\377\302\320\315\377\204\377\377\377\377\1\245\272\265\377\202\223\254" \
- "\247\377\1\325\337\335\377\324\333\343\342\377\2\317\330\327\377\200" \
- "\224\220\377\233Slg\377\1\243\262\257\377\340\333\343\342\377\1\300\316" \
- "\314\377\202\223\254\247\377\1\324\336\334\377\212\377\377\377\377\1" \
- "\354\361\360\377\202\223\254\247\377\1\261\303\277\377\357\333\343\342" \
- "\377\1\270\311\306\377\202\222\254\247\377\1\336\346\344\377\203\377" \
- "\377\377\377\13\363\366\365\377\224\255\250\377\231\261\254\377\372\373" \
- "\373\377\374\375\375\377\330\341\337\377\252\276\272\377\223\254\247" \
- "\377\222\254\246\377\223\253\247\377\271\311\306\377\323\333\343\342" \
- "\377\2\320\331\330\377h\177z\377\234Slg\377\1\243\262\257\377\340\333" \
- "\343\342\377\4\242\267\263\377\223\254\247\377\232\261\254\377\372\373" \
- "\373\377\212\377\377\377\377\1\277\316\313\377\202\223\254\247\377\1" \
- "\317\332\330\377\357\333\343\342\377\4\326\337\336\377\224\254\247\377" \
- "\223\254\247\377\252\276\272\377\204\377\377\377\377\13\266\307\303\377" \
- "\223\254\247\377\260\302\276\377\233\263\256\377\223\254\247\377\234" \
- "\263\257\377\306\323\320\377\236\265\260\377\223\254\247\377\234\263" \
- "\256\377\332\342\341\377\322\333\343\342\377\1x\214\210\377\235Slg\377" \
- "\1\243\262\257\377\337\333\343\342\377\1\314\327\325\377\202\223\254" \
- "\247\377\1\303\321\316\377\212\377\377\377\377\4\371\372\372\377\230" \
- "\257\253\377\223\254\247\377\245\272\266\377\361\333\343\342\377\4\252" \
- "\276\272\377\222\254\246\377\223\253\246\377\357\362\362\377\202\377" \
- "\377\377\377\11\341\350\346\377\253\276\273\377\223\253\247\377\223\254" \
- "\246\377\253\276\272\377\330\341\340\377\374\375\375\377\377\377\377" \
- "\377\315\330\326\377\202\223\254\247\377\1\305\322\320\377\321\333\343" \
- "\342\377\1\267\304\302\377\212Slg\377\3Xpk\377byt\377k\201|\377\216l" \
- "\201}\377\1[sn\377\202Slg\377\1\243\262\257\377\337\333\343\342\377\1" \
- "\256\300\275\377\202\223\254\247\377\1\357\363\362\377\212\377\377\377" \
- "\377\1\321\333\331\377\202\223\254\247\377\1\304\321\317\377\361\333" \
- "\343\342\377\12\315\330\326\377\222\254\246\377\222\254\247\377\272\312" \
- "\307\377\317\332\330\377\242\270\263\377\223\254\247\377\227\257\252" \
- "\377\275\314\311\377\352\357\356\377\204\377\377\377\377\4\366\370\370" \
- "\377\226\256\251\377\223\254\247\377\247\273\267\377\321\333\343\342" \
- "\377\1\204\226\223\377\205Slg\377\5]up\377\212\234\231\377\270\305\303" \
- "\377\315\326\325\377\327\337\336\377\221\333\343\342\377\1\202\225\221" \
- "\377\202Slg\377\1\243\262\257\377\336\333\343\342\377\4\325\336\335\377" \
- "\225\255\250\377\223\254\247\377\261\303\300\377\213\377\377\377\377" \
- "\4\243\271\264\377\223\254\247\377\233\262\255\377\332\342\341\377\362" \
- "\333\343\342\377\7\236\264\261\377\223\254\247\377\222\253\246\377\223" \
- "\254\247\377\241\267\263\377\316\331\327\377\367\371\371\377\207\377" \
- "\377\377\377\1\274\313\310\377\202\223\254\247\377\1\320\333\331\377" \
- "\320\333\343\342\377\1`ws\377\204Slg\377\2\220\241\236\377\330\341\340" \
- "\377\225\333\343\342\377\1\202\225\221\377\202Slg\377\1\243\262\257\377" \
- "\336\333\343\342\377\1\271\311\306\377\202\223\254\247\377\1\337\346" \
- "\345\377\212\377\377\377\377\1\342\351\347\377\202\223\254\247\377\1" \
- "\270\310\305\377\363\333\343\342\377\5\301\317\315\377\222\253\246\377" \
- "\223\253\247\377\300\317\314\377\376\376\376\377\211\377\377\377\377" \
- "\1\351\356\355\377\202\223\254\247\377\1\262\304\301\377\317\333\343" \
- "\342\377\1\322\333\332\377\204Slg\377\2{\217\213\377\331\342\341\377" \
- "\226\333\343\342\377\1\202\225\221\377\202Slg\377\1\243\262\257\377\335" \
- "\333\343\342\377\5\332\342\341\377\234\262\256\377\223\254\247\377\241" \
- "\267\262\377\376\376\376\377\212\377\377\377\377\4\265\306\302\377\223" \
- "\254\247\377\224\255\250\377\324\336\334\377\363\333\343\342\377\4\331" \
- "\341\340\377\231\260\254\377\223\254\247\377\246\272\266\377\213\377" \
- "\377\377\377\4\252\275\271\377\223\254\247\377\227\257\252\377\330\340" \
- "\337\377\316\333\343\342\377\1\307\321\320\377\204Slg\377\1\311\323\322" \
- "\377\227\333\343\342\377\1\202\225\221\377\202Slg\377\1\243\262\257\377" \
- "\335\333\343\342\377\1\305\322\320\377\202\223\254\247\377\1\315\331" \
- "\326\377\212\377\377\377\377\4\362\365\364\377\224\254\250\377\223\254" \
- "\247\377\254\277\274\377\365\333\343\342\377\1\266\306\303\377\202\223" \
- "\254\247\377\1\345\353\352\377\212\377\377\377\377\1\330\341\337\377" \
- "\202\223\254\247\377\1\276\315\312\377\316\333\343\342\377\1\303\316" \
- "\314\377\203Slg\377\2Zrm\377\332\342\341\377\227\333\343\342\377\1\267" \
- "\303\301\377\202\243\262\257\377\1\304\316\315\377\335\333\343\342\377" \
- "\4\247\273\267\377\223\254\247\377\226\256\252\377\367\371\370\377\212" \
- "\377\377\377\377\1\306\323\321\377\202\223\254\247\377\1\313\326\325" \
- "\377\365\333\343\342\377\1\323\334\333\377\202\223\254\247\377\1\267" \
- "\310\305\377\212\377\377\377\377\4\374\374\374\377\233\262\256\377\223" \
- "\254\247\377\240\266\261\377\316\333\343\342\377\1\322\333\332\377\203" \
- "Slg\377\1q\207\202\377\370\333\343\342\377\1\320\333\331\377\202\223" \
- "\254\247\377\1\274\313\310\377\212\377\377\377\377\4\374\375\374\377" \
- "\234\263\256\377\223\254\247\377\241\266\262\377\367\333\343\342\377" \
- "\4\252\275\271\377\223\254\247\377\225\255\250\377\364\366\366\377\212" \
- "\377\377\377\377\1\306\323\321\377\202\223\254\247\377\1\312\326\324" \
- "\377\316\333\343\342\377\1[sn\377\202Slg\377\1{\217\213\377\370\333\343" \
- "\342\377\1\262\304\300\377\202\223\254\247\377\1\351\356\355\377\212" \
- "\377\377\377\377\1\330\341\337\377\202\223\254\247\377\1\277\316\313" \
- "\377\367\333\343\342\377\1\310\324\322\377\202\223\254\247\377\1\311" \
- "\325\323\377\212\377\377\377\377\4\362\365\364\377\224\254\250\377\223" \
- "\254\247\377\253\276\273\377\316\333\343\342\377\1y\215\211\377\202S" \
- "lg\377\1o\204\200\377\367\333\343\342\377\4\330\340\337\377\227\257\252" \
- "\377\223\254\247\377\253\276\272\377\213\377\377\377\377\4\252\276\272" \
- "\377\223\254\247\377\230\257\253\377\330\341\337\377\370\333\343\342" \
- "\377\4\236\265\260\377\223\254\247\377\236\264\257\377\375\375\375\377" \
- "\212\377\377\377\377\4\265\306\302\377\223\254\247\377\224\255\250\377" \
- "\324\335\334\377\315\333\343\342\377\1\270\304\302\377\202Slg\377\2U" \
- "ni\377\320\332\330\377\366\333\343\342\377\1\276\315\312\377\202\223" \
- "\254\247\377\1\330\341\337\377\212\377\377\377\377\1\351\356\355\377" \
- "\202\223\254\247\377\1\264\305\302\377\371\333\343\342\377\1\275\314" \
- "\311\377\202\223\254\247\377\1\333\343\341\377\212\377\377\377\377\1" \
- "\342\351\347\377\202\223\254\247\377\1\267\307\304\377\316\333\343\342" \
- "\377\1q\206\202\377\202Slg\377\1\233\253\250\377\227\333\343\342\377" \
- "\1\205\230\224\377\202Voj\377\1\244\263\260\377\333\333\343\342\377\4" \
- "\237\265\261\377\223\254\247\377\234\263\256\377\374\375\374\377\212" \
- "\377\377\377\377\1\274\313\310\377\202\223\254\247\377\1\321\333\332" \
- "\377\371\333\343\342\377\4\327\340\336\377\226\256\252\377\223\254\247" \
- "\377\255\300\274\377\213\377\377\377\377\4\243\271\264\377\223\254\247" \
- "\377\232\261\255\377\331\342\341\377\315\333\343\342\377\5\313\325\323" \
- "\377ayt\377Slg\377Xpk\377\305\317\316\377\226\333\343\342\377\1\202\225" \
- "\221\377\202Slg\377\1\243\262\257\377\332\333\343\342\377\1\311\325\323" \
- "\377\202\223\254\247\377\1\310\325\322\377\212\377\377\377\377\4\367" \
- "\371\370\377\226\256\251\377\223\254\247\377\250\274\270\377\373\333" \
- "\343\342\377\1\261\303\277\377\202\223\254\247\377\1\356\361\361\377" \
- "\212\377\377\377\377\1\322\334\332\377\202\223\254\247\377\1\303\320" \
- "\316\377\316\333\343\342\377\5\305\317\316\377]up\377Slg\377^vq\377\275" \
- "\311\307\377\225\333\343\342\377\1\202\225\221\377\202Slg\377\1\243\262" \
- "\257\377\332\333\343\342\377\4\253\276\273\377\223\254\247\377\224\255" \
- "\250\377\363\366\366\377\212\377\377\377\377\1\315\330\326\377\202\223" \
- "\254\247\377\1\306\323\321\377\373\333\343\342\377\1\317\332\330\377" \
- "\202\223\254\247\377\1\300\317\314\377\212\377\377\377\377\4\371\373" \
- "\372\377\230\260\253\377\223\254\247\377\244\271\265\377\317\333\343" \
- "\342\377\6\314\325\324\377}\221\215\377Slg\377Tlg\377\206\230\225\377" \
- "\277\312\310\377\223\333\343\342\377\1\202\225\221\377\202Slg\377\1\243" \
- "\262\257\377\331\333\343\342\377\4\323\335\334\377\224\255\250\377\223" \
- "\254\247\377\267\307\304\377\212\377\377\377\377\5\376\376\376\377\240" \
- "\266\262\377\223\254\247\377\235\263\257\377\332\342\341\377\374\333" \
- "\343\342\377\4\245\272\266\377\223\254\247\377\230\260\253\377\371\373" \
- "\372\377\212\377\377\377\377\1\301\317\314\377\202\223\254\247\377\1" \
- "\316\331\327\377\313\333\343\342\377\1\313\325\324\377\204\260\275\273" \
- "\377\1\206\230\225\377\203Slg\377\5czu\377\177\223\217\377\227\250\245" \
- "\377\244\262\260\377\253\271\267\377\216\260\275\273\377\1s\210\204\377" \
- "\202Slg\377\1\243\262\257\377\331\333\343\342\377\1\267\307\304\377\202" \
- "\223\254\247\377\1\344\352\351\377\212\377\377\377\377\1\336\346\344" \
- "\377\202\223\254\247\377\1\273\312\307\377\375\333\343\342\377\1\304" \
- "\321\317\377\202\223\254\247\377\1\322\334\332\377\212\377\377\377\377" \
- "\1\356\361\361\377\202\223\254\247\377\1\260\302\277\377\313\333\343" \
- "\342\377\1\250\267\264\377\236Slg\377\1\243\262\257\377\330\333\343\342" \
- "\377\4\331\342\341\377\232\261\255\377\223\254\247\377\245\272\266\377" \
- "\213\377\377\377\377\4\261\303\277\377\223\254\247\377\225\256\251\377" \
- "\326\337\336\377\375\333\343\342\377\4\332\342\341\377\233\262\255\377" \
- "\223\254\247\377\244\271\265\377\213\377\377\377\377\4\257\302\276\377" \
- "\223\254\247\377\226\256\251\377\327\337\336\377\312\333\343\342\377" \
- "\1\250\267\264\377\236Slg\377\1\243\262\257\377\330\333\343\342\377\1" \
- "\302\320\316\377\202\223\254\247\377\1\322\335\333\377\212\377\377\377" \
- "\377\1\357\363\362\377\202\223\254\247\377\1\257\301\276\377\377\333" \
- "\343\342\377\1\270\310\305\377\202\223\254\247\377\1\343\351\350\377" \
- "\212\377\377\377\377\1\335\344\343\377\202\223\254\247\377\1\273\313" \
- "\310\377\312\333\343\342\377\1\250\267\264\377\236Slg\377\1\243\262\257" \
- "\377\330\333\343\342\377\4\244\271\265\377\223\254\247\377\231\260\254" \
- "\377\372\373\373\377\212\377\377\377\377\1\302\320\315\377\202\223\254" \
- "\247\377\1\315\330\327\377\377\333\343\342\377\4\324\336\334\377\224" \
- "\255\250\377\223\254\247\377\266\307\303\377\212\377\377\377\377\5\375" \
- "\376\375\377\237\265\261\377\223\254\247\377\236\264\260\377\332\342" \
- "\341\377\311\333\343\342\377\1\250\267\264\377\236Slg\377\1\243\262\257" \
- "\377\327\333\343\342\377\1\316\331\327\377\202\223\254\247\377\1\301" \
- "\317\314\377\212\377\377\377\377\4\372\373\373\377\231\261\254\377\223" \
- "\254\247\377\243\270\264\377\377\333\343\342\377\202\333\343\342\377" \
- "\4\254\277\274\377\223\254\247\377\224\255\250\377\363\366\365\377\212" \
- "\377\377\377\377\1\313\327\325\377\202\223\254\247\377\1\307\324\322" \
- "\377\311\333\343\342\377\1\250\267\264\377\236Slg\377\1\243\262\257\377" \
- "\327\333\343\342\377\1\260\302\276\377\202\223\254\247\377\1\356\362" \
- "\361\377\212\377\377\377\377\1\324\336\334\377\202\223\254\247\377\1" \
- "\301\317\315\377\377\333\343\342\377\202\333\343\342\377\1\312\326\324" \
- "\377\202\223\254\247\377\1\307\324\321\377\212\377\377\377\377\4\366" \
- "\370\367\377\225\256\251\377\223\254\247\377\251\275\271\377\311\333" \
- "\343\342\377\1\250\267\264\377\202Slg\377\1x\214\210\377\230\333\343" \
- "\342\377\1\202\225\221\377\202Slg\377\1\243\262\257\377\326\333\343\342" \
- "\377\4\326\337\336\377\226\256\251\377\223\254\247\377\260\302\276\377" \
- "\213\377\377\377\377\4\246\273\267\377\223\254\247\377\231\261\254\377" \
- "\331\341\340\377\377\333\343\342\377\203\333\343\342\377\4\241\266\262" \
- "\377\223\254\247\377\234\263\256\377\374\375\374\377\212\377\377\377" \
- "\377\1\272\312\307\377\202\223\254\247\377\1\322\334\333\377\310\333" \
- "\343\342\377\1\250\267\264\377\202Slg\377\1x\214\210\377\230\333\343" \
- "\342\377\1\202\225\221\377\202Slg\377\1\243\262\257\377\326\333\343\342" \
- "\377\1\273\313\310\377\202\223\254\247\377\1\335\345\344\377\212\377" \
- "\377\377\377\1\346\353\352\377\202\223\254\247\377\1\266\306\303\377" \
- "\377\333\343\342\377\204\333\343\342\377\1\277\315\313\377\202\223\254" \
- "\247\377\1\330\341\337\377\212\377\377\377\377\1\350\355\354\377\202" \
- "\223\254\247\377\1\264\305\302\377\310\333\343\342\377\1\250\267\264" \
- "\377\202Slg\377\1x\214\210\377\230\333\343\342\377\1\202\225\221\377" \
- "\202Slg\377\1\243\262\257\377\325\333\343\342\377\5\332\342\341\377\235" \
- "\264\257\377\223\254\247\377\240\266\261\377\376\376\376\377\212\377" \
- "\377\377\377\4\270\310\305\377\223\254\247\377\224\254\247\377\323\335" \
- "\333\377\377\333\343\342\377\204\333\343\342\377\4\330\341\337\377\230" \
- "\257\253\377\223\254\247\377\253\276\273\377\213\377\377\377\377\4\251" \
- "\274\270\377\223\254\247\377\230\260\253\377\331\341\340\377\307\333" \
- "\343\342\377\1\250\267\264\377\202Slg\377\1x\214\210\377\230\333\343" \
- "\342\377\1\202\225\221\377\202Slg\377\1\243\262\257\377\325\333\343\342" \
- "\377\1\307\324\322\377\202\223\254\247\377\1\314\330\325\377\212\377" \
- "\377\377\377\4\364\367\366\377\225\255\250\377\223\254\247\377\252\276" \
- "\272\377\377\333\343\342\377\206\333\343\342\377\1\263\305\301\377\202" \
- "\223\254\247\377\1\352\357\356\377\212\377\377\377\377\1\326\340\336" \
- "\377\202\223\254\247\377\1\300\316\314\377\307\333\343\342\377\1\250" \
- "\267\264\377\202Slg\377\1x\214\210\377\230\333\343\342\377\1\223\244" \
- "\241\377\202l\201}\377\1\255\272\270\377\325\333\343\342\377\4\251\274" \
- "\271\377\223\254\247\377\225\256\251\377\366\370\370\377\212\377\377" \
- "\377\377\1\312\326\323\377\202\223\254\247\377\1\310\325\323\377\377" \
- "\333\343\342\377\206\333\343\342\377\1\321\333\332\377\202\223\254\247" \
- "\377\1\274\314\311\377\212\377\377\377\377\4\373\374\374\377\233\262" \
- "\255\377\223\254\247\377\242\267\263\377\377\333\343\342\377\274\333" \
- "\343\342\377\1\322\334\332\377\202\223\254\247\377\1\272\312\307\377" \
- "\212\377\377\377\377\4\375\375\375\377\236\264\260\377\223\254\247\377" \
- "\237\265\260\377\377\333\343\342\377\210\333\343\342\377\4\250\274\270" \
- "\377\223\254\247\377\226\256\252\377\367\371\371\377\212\377\377\377" \
- "\377\1\304\322\317\377\202\223\254\247\377\1\314\327\325\377\377\333" \
- "\343\342\377\273\333\343\342\377\1\264\305\302\377\202\223\254\247\377" \
- "\1\350\355\354\377\212\377\377\377\377\1\333\343\342\377\202\223\254" \
- "\247\377\1\275\314\311\377\377\333\343\342\377\210\333\343\342\377\1" \
- "\306\323\321\377\202\223\254\247\377\1\316\331\327\377\212\377\377\377" \
- "\377\1\361\364\363\377\202\223\254\247\377\1\255\300\274\377\377\333" \
- "\343\342\377\272\333\343\342\377\4\331\341\340\377\230\260\253\377\223" \
- "\254\247\377\251\275\271\377\213\377\377\377\377\4\256\300\275\377\223" \
- "\254\247\377\226\257\252\377\327\340\337\377\377\333\343\342\377\210" \
- "\333\343\342\377\5\332\342\341\377\234\263\257\377\223\254\247\377\241" \
- "\267\263\377\376\376\376\377\212\377\377\377\377\4\263\305\301\377\223" \
- "\254\247\377\225\255\250\377\325\336\335\377\377\333\343\342\377\271" \
- "\333\343\342\377\1\300\316\314\377\202\223\254\247\377\1\327\340\336" \
- "\377\212\377\377\377\377\1\354\361\360\377\202\223\254\247\377\1\261" \
- "\303\300\377\377\333\343\342\377\212\333\343\342\377\1\272\312\307\377" \
- "\202\223\254\247\377\1\340\347\345\377\212\377\377\377\377\1\341\350" \
- "\346\377\202\223\254\247\377\1\271\311\306\377\340\333\343\342\377\1" \
- "\317\330\327\377\202\305\320\316\377\1\320\331\330\377\324\333\343\342" \
- "\377\4\241\267\263\377\223\254\247\377\233\262\255\377\374\374\374\377" \
- "\212\377\377\377\377\1\277\316\313\377\202\223\254\247\377\1\317\332" \
- "\330\377\377\333\343\342\377\212\333\343\342\377\4\326\337\336\377\225" \
- "\256\251\377\223\254\247\377\262\304\300\377\212\377\377\377\377\5\376" \
- "\376\376\377\243\270\264\377\223\254\247\377\234\262\256\377\332\342" \
- "\341\377\337\333\343\342\377\1\216\237\234\377\202Slg\377\1\227\247\244" \
- "\377\323\333\343\342\377\1\314\327\325\377\202\223\254\247\377\1\305" \
- "\323\320\377\212\377\377\377\377\4\371\372\372\377\230\257\253\377\223" \
- "\254\247\377\246\272\266\377\377\333\343\342\377\214\333\343\342\377" \
- "\1\257\301\276\377\202\223\254\247\377\1\360\363\363\377\212\377\377" \
- "\377\377\1\317\332\330\377\202\223\254\247\377\1\305\322\320\377\337" \
- "\333\343\342\377\1\216\237\234\377\202Slg\377\1\227\247\244\377\323\333" \
- "\343\342\377\1\255\300\274\377\202\223\254\247\377\1\361\364\364\377" \
- "\212\377\377\377\377\1\320\333\331\377\202\223\254\247\377\1\304\321" \
- "\317\377\377\333\343\342\377\214\333\343\342\377\1\315\330\326\377\202" \
- "\223\254\247\377\1\304\321\317\377\212\377\377\377\377\4\370\372\371" \
- "\377\227\257\252\377\223\254\247\377\246\273\267\377\337\333\343\342" \
- "\377\1\216\237\234\377\202Slg\377\1\227\247\244\377\322\333\343\342\377" \
- "\4\325\336\335\377\224\255\250\377\223\254\247\377\264\305\302\377\213" \
- "\377\377\377\377\4\243\271\264\377\223\254\247\377\233\262\255\377\332" \
- "\342\341\377\377\333\343\342\377\215\333\343\342\377\4\243\270\264\377" \
- "\223\254\247\377\232\261\255\377\373\374\373\377\212\377\377\377\377" \
- "\1\276\315\312\377\202\223\254\247\377\1\320\332\331\377\336\333\343" \
- "\342\377\1\216\237\234\377\202Slg\377\1\227\247\244\377\322\333\343\342" \
- "\377\1\271\311\306\377\202\223\254\247\377\1\341\350\347\377\212\377" \
- "\377\377\377\1\342\351\347\377\202\223\254\247\377\1\270\310\306\377" \
- "\377\333\343\342\377\216\333\343\342\377\1\301\317\315\377\202\223\254" \
- "\247\377\1\325\337\335\377\212\377\377\377\377\1\353\360\357\377\202" \
- "\223\254\247\377\1\262\303\300\377\334\333\343\342\377\3\304\317\316" \
- "\377\220\242\236\377]to\377\202Slg\377\1\227\247\244\377\321\333\343" \
- "\342\377\5\332\342\341\377\233\262\256\377\223\254\247\377\243\270\264" \
- "\377\376\376\376\377\212\377\377\377\377\4\264\306\302\377\223\254\247" \
- "\377\224\255\250\377\325\336\335\377\377\333\343\342\377\216\333\343" \
- "\342\377\4\331\341\340\377\231\260\254\377\223\254\247\377\247\273\267" \
- "\377\213\377\377\377\377\4\255\300\274\377\223\254\247\377\227\257\252" \
- "\377\327\340\337\377\330\333\343\342\377\3\323\335\333\377\246\263\261" \
- "\377p\206\202\377\205Slg\377\1\227\247\244\377\321\333\343\342\377\1" \
- "\304\322\317\377\202\223\254\247\377\1\320\333\331\377\212\377\377\377" \
- "\377\4\362\365\364\377\224\254\250\377\223\254\247\377\236\264\260\377" \
- "\377\333\343\342\377\220\333\343\342\377\1\266\306\303\377\202\223\254" \
- "\247\377\1\346\354\353\377\202\377\377\377\377\4\370\371\371\377\342" \
- "\351\347\377\333\343\342\377\360\363\363\377\204\377\377\377\377\1\332" \
- "\343\341\377\202\223\254\247\377\1\276\315\312\377\326\333\343\342\377" \
- "\3\273\306\304\377\206\230\225\377Xpl\377\207Slg\377\1\227\247\244\377" \
- "\321\333\343\342\377\4\246\272\266\377\223\254\247\377\227\257\252\377" \
- "\370\372\371\377\212\377\377\377\377\1\306\323\321\377\203\223\254\247" \
- "\377\1\314\327\325\377\377\333\343\342\377\217\333\343\342\377\6\323" \
- "\335\333\377\224\254\247\377\223\254\247\377\267\307\304\377\304\321" \
- "\317\377\242\267\263\377\204\223\254\247\377\10\232\262\255\377\263\304" \
- "\301\377\353\360\357\377\377\377\377\377\374\375\375\377\235\264\257" \
- "\377\223\254\247\377\237\265\261\377\323\333\343\342\377\3\315\327\325" \
- "\377\233\253\250\377g}y\377\212Slg\377\1\227\247\244\377\320\333\343" \
- "\342\377\1\320\332\331\377\202\223\254\247\377\1\277\315\312\377\212" \
- "\377\377\377\377\6\374\374\374\377\233\262\256\377\223\254\247\377\235" \
- "\264\257\377\223\254\247\377\266\307\304\377\377\333\343\342\377\220" \
- "\333\343\342\377\3\252\275\272\377\222\253\247\377\222\254\247\377\202" \
- "\223\254\247\377\12\237\265\261\377\266\307\304\377\276\315\312\377\250" \
- "\274\270\377\225\256\251\377\223\254\247\377\225\256\251\377\312\327" \
- "\324\377\375\376\376\377\311\325\323\377\202\223\254\247\377\1\311\325" \
- "\323\377\317\333\343\342\377\4\330\341\340\377\260\275\273\377|\217\214" \
- "\377Umh\377\214Slg\377\1\227\247\244\377\320\333\343\342\377\1\262\303" \
- "\300\377\202\223\254\247\377\1\354\360\357\377\212\377\377\377\377\1" \
- "\330\341\337\377\202\223\254\247\377\3\306\323\320\377\223\254\247\377" \
- "\250\273\270\377\377\333\343\342\377\220\333\343\342\377\1\263\305\301" \
- "\377\202\223\254\247\377\2\263\305\301\377\362\365\365\377\204\377\377" \
- "\377\377\11\374\374\374\377\317\332\330\377\226\257\252\377\223\254\247" \
- "\377\257\301\276\377\363\365\365\377\225\255\250\377\223\254\247\377" \
- "\253\276\272\377\315\333\343\342\377\3\305\320\316\377\220\242\236\377" \
- "_vr\377\217Slg\377\1\227\247\244\377\317\333\343\342\377\4\327\340\337" \
- "\377\227\257\252\377\223\254\247\377\255\300\274\377\213\377\377\377" \
- "\377\6\252\275\271\377\223\254\247\377\233\262\255\377\366\370\370\377" \
- "\224\255\250\377\230\260\254\377\377\333\343\342\377\217\333\343\342" \
- "\377\4\321\333\331\377\226\256\251\377\223\254\247\377\324\336\334\377" \
- "\210\377\377\377\377\10\355\361\361\377\243\270\264\377\223\254\247\377" \
- "\315\330\326\377\267\310\305\377\223\254\247\377\224\255\250\377\323" \
- "\335\334\377\311\333\343\342\377\3\324\335\334\377\245\264\262\377q\206" \
- "\203\377\217Slg\377\1\\to\377\202Slg\377\1\227\247\244\377\317\333\343" \
- "\342\377\1\275\314\311\377\202\223\254\247\377\1\333\343\341\377\212" \
- "\377\377\377\377\1\351\356\355\377\202\223\254\247\377\5\304\322\317" \
- "\377\377\377\377\377\231\261\254\377\224\254\247\377\331\342\341\377" \
- "\377\333\343\342\377\215\333\343\342\377\4\332\342\341\377\244\271\265" \
- "\377\223\254\247\377\302\320\316\377\212\377\377\377\377\4\351\356\355" \
- "\377\225\255\250\377\226\256\251\377\327\340\335\377\202\223\254\247" \
- "\377\1\266\307\304\377\307\333\343\342\377\3\273\307\305\377\206\231" \
- "\225\377Xpl\377\216Slg\377\4d{w\377\230\250\245\377\313\325\323\377\216" \
- "\237\234\377\202Slg\377\1\227\247\244\377\317\333\343\342\377\4\237\265" \
- "\261\377\223\254\247\377\236\264\257\377\375\375\375\377\212\377\377" \
- "\377\377\1\274\313\310\377\202\223\254\247\377\202\361\364\363\377\2" \
- "\223\254\247\377\240\265\261\377\377\333\343\342\377\216\333\343\342" \
- "\377\4\306\323\321\377\223\254\247\377\244\271\264\377\373\374\374\377" \
- "\213\377\377\377\377\7\310\325\322\377\223\254\247\377\267\310\305\377" \
- "\246\272\266\377\223\254\247\377\232\261\254\377\331\341\340\377\303" \
- "\333\343\342\377\3\316\327\326\377\233\253\251\377g}y\377\216Slg\377" \
- "\4Wpj\377\204\226\223\377\270\305\302\377\332\342\341\377\202\333\343" \
- "\342\377\1\216\237\234\377\202Slg\377\1\227\247\244\377\316\333\343\342" \
- "\377\1\311\325\323\377\202\223\254\247\377\1\311\325\323\377\206\377" \
- "\377\377\377\14\346\353\352\377\301\317\314\377\337\346\345\377\376\376" \
- "\376\377\367\371\370\377\226\256\251\377\223\254\247\377\263\304\301" \
- "\377\377\377\377\377\332\342\341\377\223\254\247\377\256\302\276\377" \
- "\377\333\343\342\377\216\333\343\342\377\3\267\307\304\377\223\254\247" \
- "\377\316\331\327\377\214\377\377\377\377\4\367\370\370\377\223\254\247" \
- "\377\240\266\262\377\323\335\333\377\202\223\254\247\377\1\302\320\316" \
- "\377\300\333\343\342\377\4\330\341\340\377\261\275\273\377|\220\214\377" \
- "Umh\377\216Slg\377\3p\205\201\377\244\263\260\377\323\334\333\377\205" \
- "\333\343\342\377\1\216\237\234\377\202Slg\377\1\227\247\244\377\316\333" \
- "\343\342\377\4\253\276\272\377\223\254\247\377\225\255\250\377\364\367" \
- "\366\377\205\377\377\377\377\1\326\337\336\377\203\223\254\247\377\2" \
- "\302\320\315\377\315\330\326\377\202\223\254\247\377\5\340\347\346\377" \
- "\377\377\377\377\257\301\276\377\223\254\247\377\276\315\313\377\377" \
- "\333\343\342\377\216\333\343\342\377\3\251\274\271\377\223\254\247\377" \
- "\344\352\351\377\215\377\377\377\377\6\240\266\262\377\223\254\247\377" \
- "\362\365\364\377\231\261\254\377\223\254\247\377\244\271\265\377\252" \
- "\333\343\342\377\11\330\340\337\377\243\262\257\377\204\227\224\377j" \
- "\200{\377Wpj\377f|x\377{\216\213\377\255\274\271\377\330\341\340\377" \
- "\213\333\343\342\377\3\305\320\316\377\221\242\237\377_vr\377\216Slg" \
- "\377\3^vq\377\220\241\236\377\304\317\315\377\210\333\343\342\377\1\216" \
- "\237\234\377\202Slg\377\1\227\247\244\377\316\333\343\342\377\3\226\256" \
- "\251\377\223\254\247\377\266\307\303\377\206\377\377\377\377\15\252\276" \
- "\272\377\223\254\247\377\302\320\316\377\223\254\247\377\232\261\255" \
- "\377\237\265\261\377\223\254\247\377\242\270\263\377\376\376\376\377" \
- "\321\334\331\377\223\254\247\377\235\263\257\377\330\340\340\377\377" \
- "\333\343\342\377\216\333\343\342\377\3\234\262\256\377\223\254\247\377" \
- "\370\372\371\377\215\377\377\377\377\4\264\306\302\377\223\254\247\377" \
- "\344\352\351\377\300\316\313\377\202\223\254\247\377\1\325\336\335\377" \
- "\250\333\343\342\377\2\303\316\315\377m\202~\377\207Slg\377\2g}y\377" \
- "\306\321\317\377\207\333\343\342\377\3\324\335\334\377\246\265\263\377" \
- "q\206\203\377\216Slg\377\4Umh\377|\217\214\377\260\275\273\377\330\340" \
- "\337\377\212\333\343\342\377\1\257\274\273\377\202\216\237\234\377\1" \
- "\264\300\277\377\316\333\343\342\377\3\230\257\253\377\223\254\247\377" \
- "\276\315\312\377\206\377\377\377\377\5\270\311\305\377\223\254\247\377" \
- "\244\271\264\377\223\254\247\377\240\266\262\377\202\223\254\247\377" \
- "\5\317\332\330\377\335\345\343\377\226\256\251\377\223\254\247\377\312" \
- "\326\324\377\377\333\343\342\377\217\333\343\342\377\3\241\267\263\377" \
- "\223\254\247\377\356\362\362\377\215\377\377\377\377\4\253\276\272\377" \
- "\223\254\247\377\355\361\360\377\310\325\322\377\202\223\254\247\377" \
- "\1\327\340\336\377\247\333\343\342\377\2\261\275\273\377Woj\377\211S" \
- "lg\377\2[to\377\301\314\312\377\204\333\343\342\377\3\273\307\305\377" \
- "\207\231\225\377Yql\377\206Slg\377\4Rkg\377Skf\377Slf\377Rkg\377\204" \
- "Slg\377\3h~z\377\234\254\251\377\316\327\326\377\337\333\343\342\377" \
- "\3\233\262\255\377\223\254\247\377\271\311\306\377\206\377\377\377\377" \
- "\10\351\356\355\377\240\266\261\377\223\254\247\377\233\262\256\377\247" \
- "\273\266\377\223\254\247\377\226\256\252\377\267\310\304\377\202\223" \
- "\254\247\377\1\267\307\305\377\377\333\343\342\377\220\333\343\342\377" \
- "\3\260\302\277\377\223\254\247\377\330\341\340\377\214\377\377\377\377" \
- "\5\375\376\376\377\226\257\252\377\227\257\252\377\376\376\376\377\304" \
- "\321\317\377\202\223\254\247\377\1\332\342\341\377\246\333\343\342\377" \
- "\2\315\327\325\377]to\377\203Slg\377\5Zqm\377x\214\210\377\210\232\226" \
- "\377r\210\204\377Vnj\377\203Slg\377\5j\200{\377\327\340\336\377\316\327" \
- "\326\377\233\253\251\377g}y\377\211Slg\377\10Skf\377Rkg\377Slg\377Rl" \
- "f\377Slg\377Zqm\377\207\233\227\377\275\310\306\377\342\333\343\342\377" \
- "\3\236\264\260\377\223\254\247\377\264\306\302\377\207\377\377\377\377" \
- "\3\376\376\376\377\346\354\353\377\354\360\357\377\204\223\254\247\377" \
- "\2\232\261\255\377\305\322\320\377\377\333\343\342\377\221\333\343\342" \
- "\377\3\276\315\312\377\223\254\247\377\274\313\310\377\214\377\377\377" \
- "\377\7\344\352\351\377\223\254\247\377\253\277\273\377\377\377\377\377" \
- "\277\315\312\377\223\254\247\377\225\255\250\377\247\333\343\342\377" \
- "\1y\215\212\377\203Slg\377\2x\214\211\377\315\327\325\377\203\333\343" \
- "\342\377\2\301\314\312\377h~z\377\203Slg\377\2j\200{\377Umh\377\213S" \
- "lg\377\6Skf\377Rkg\377Slg\377Xqk\377\250\266\263\377\325\336\335\377" \
- "\344\333\343\342\377\3\241\266\262\377\223\254\247\377\260\302\276\377" \
- "\211\377\377\377\377\1\302\320\315\377\202\223\254\247\377\3\231\260" \
- "\253\377\260\302\277\377\325\336\336\377\377\333\343\342\377\222\333" \
- "\343\342\377\4\323\334\334\377\226\256\251\377\223\254\247\377\344\352" \
- "\351\377\212\377\377\377\377\10\374\374\374\377\245\272\265\377\223\254" \
- "\247\377\320\333\331\377\377\377\377\377\272\312\307\377\223\254\247" \
- "\377\230\257\253\377\246\333\343\342\377\1\314\325\325\377\203Slg\377" \
- "\2j\201|\377\326\337\336\377\205\333\343\342\377\2\311\323\321\377Yq" \
- "l\377\217Slg\377\4_uq\377Slh\377Slg\377i\200{\377\346\333\343\342\377" \
- "\3\244\271\265\377\223\254\247\377\253\276\273\377\210\377\377\377\377" \
- "\4\372\373\373\377\231\261\254\377\223\254\247\377\242\267\263\377\377" \
- "\333\343\342\377\226\333\343\342\377\4\275\314\311\377\223\254\247\377" \
- "\241\266\262\377\371\372\372\377\211\377\377\377\377\10\303\321\316\377" \
- "\223\254\247\377\254\277\273\377\376\376\376\377\377\377\377\377\265" \
- "\306\303\377\223\254\247\377\233\262\255\377\246\333\343\342\377\1\263" \
- "\300\276\377\203Slg\377\1\263\300\276\377\207\333\343\342\377\1\222\243" \
- "\237\377\214Slg\377\7Vnj\377\200\223\220\377\264\300\277\377\300\313" \
- "\311\377Umi\377Slg\377i\200{\377\346\333\343\342\377\3\247\273\267\377" \
- "\223\254\247\377\246\273\267\377\210\377\377\377\377\1\324\336\334\377" \
- "\202\223\254\247\377\1\302\320\315\377\377\333\343\342\377\227\333\343" \
- "\342\377\4\246\272\267\377\223\254\247\377\241\267\262\377\345\353\352" \
- "\377\206\377\377\377\377\5\367\371\370\377\267\310\305\377\223\254\247" \
- "\377\227\257\252\377\357\363\362\377\202\377\377\377\377\3\261\303\277" \
- "\377\223\254\247\377\236\264\260\377\246\333\343\342\377\1\232\252\247" \
- "\377\203Slg\377\1\317\330\327\377\207\333\343\342\377\1\260\275\273\377" \
- "\212Slg\377\3l\201}\377\240\260\254\377\320\332\331\377\202\333\343\342" \
- "\377\4\301\314\312\377Umi\377Slg\377i\200{\377\346\333\343\342\377\3" \
- "\252\275\272\377\223\254\247\377\242\267\263\377\210\377\377\377\377" \
- "\4\246\273\267\377\223\254\247\377\231\261\254\377\331\341\340\377\377" \
- "\333\343\342\377\227\333\343\342\377\16\325\336\334\377\246\272\267\377" \
- "\223\254\247\377\224\255\250\377\271\311\306\377\322\334\332\377\351" \
- "\356\355\377\361\364\363\377\333\343\341\377\304\322\317\377\235\264" \
- "\257\377\223\254\247\377\235\263\257\377\341\350\346\377\203\377\377" \
- "\377\377\3\254\277\273\377\223\254\247\377\241\267\262\377\246\333\343" \
- "\342\377\1\233\253\250\377\203Slg\377\1\315\327\325\377\207\333\343\342" \
- "\377\1\256\274\272\377\207Slg\377\3[to\377\214\236\232\377\300\314\312" \
- "\377\205\333\343\342\377\4\301\314\312\377Umi\377Slg\377i\200{\377\346" \
- "\333\343\342\377\3\255\300\274\377\223\254\247\377\235\263\257\377\207" \
- "\377\377\377\377\1\346\353\352\377\202\223\254\247\377\1\266\307\304" \
- "\377\377\333\343\342\377\232\333\343\342\377\2\275\314\311\377\226\256" \
- "\251\377\207\223\254\247\377\2\267\310\305\377\367\371\370\377\204\377" \
- "\377\377\377\3\247\273\267\377\223\254\247\377\244\271\265\377\246\333" \
- "\343\342\377\1\265\301\300\377\203Slg\377\1\261\275\273\377\207\333\343" \
- "\342\377\1\217\240\235\377\206Slg\377\2p\205\201\377\311\324\322\377" \
- "\207\333\343\342\377\4\301\314\312\377Umi\377Slg\377i\200{\377\346\333" \
- "\343\342\377\3\260\302\277\377\223\254\247\377\230\260\253\377\207\377" \
- "\377\377\377\4\270\310\305\377\223\254\247\377\224\254\247\377\323\335" \
- "\333\377\377\333\343\342\377\233\333\343\342\377\10\324\336\335\377\302" \
- "\321\316\377\264\305\302\377\244\271\265\377\223\254\247\377\223\253" \
- "\246\377\241\266\262\377\353\360\357\377\206\377\377\377\377\3\242\270" \
- "\263\377\223\254\247\377\247\273\267\377\246\333\343\342\377\1\316\327" \
- "\326\377\203Slg\377\2i\177{\377\326\337\336\377\205\333\343\342\377\2" \
- "\307\322\320\377Vpk\377\207Slg\377\4Umh\377|\217\214\377\260\275\273" \
- "\377\330\341\340\377\204\333\343\342\377\4\301\314\312\377Umi\377Slg" \
- "\377i\200{\377\346\333\343\342\377\1\263\304\301\377\202\223\254\247" \
- "\377\206\377\377\377\377\4\364\367\366\377\225\255\250\377\223\254\247" \
- "\377\253\276\272\377\377\333\343\342\377\240\333\343\342\377\1\264\305" \
- "\302\377\202\223\254\247\377\1\351\356\355\377\206\377\377\377\377\3" \
- "\236\264\257\377\223\254\247\377\252\275\272\377\247\333\343\342\377" \
- "\1\177\222\216\377\203Slg\377\2v\212\206\377\312\324\323\377\203\333" \
- "\343\342\377\2\271\305\303\377e|w\377\203Slg\377\2j\201|\377Umh\377\206" \
- "Slg\377\3^vq\377\220\242\236\377\304\317\316\377\202\333\343\342\377" \
- "\4\301\314\312\377Umi\377Slg\377i\200{\377\346\333\343\342\377\1\266" \
- "\307\304\377\202\223\254\247\377\1\373\374\374\377\205\377\377\377\377" \
- "\1\312\326\323\377\202\223\254\247\377\1\311\325\323\377\377\333\343" \
- "\342\377\240\333\343\342\377\1\321\333\332\377\202\223\254\247\377\1" \
- "\274\313\310\377\206\377\377\377\377\3\231\260\254\377\223\254\247\377" \
- "\255\300\274\377\247\333\343\342\377\2\320\332\331\377_wr\377\203Slg" \
- "\377\4Uni\377k\201|\377{\216\213\377e}w\377\204Slg\377\5m\203\177\377" \
- "\330\340\337\377\316\330\326\377\235\254\252\377i\177z\377\207Slg\377" \
- "\6p\206\202\377\246\263\261\377\273\307\304\377Umi\377Slg\377i\200{\377" \
- "\346\333\343\342\377\1\271\311\306\377\202\223\254\247\377\1\366\370" \
- "\370\377\204\377\377\377\377\4\375\375\375\377\236\264\260\377\223\254" \
- "\247\377\237\265\261\377\377\333\343\342\377\242\333\343\342\377\4\250" \
- "\274\270\377\223\254\247\377\226\256\252\377\367\371\370\377\205\377" \
- "\377\377\377\3\224\255\250\377\223\254\247\377\260\302\277\377\250\333" \
- "\343\342\377\2\266\303\300\377Yql\377\211Slg\377\2_vr\377\305\320\316" \
- "\377\204\333\343\342\377\3\274\311\307\377\210\232\227\377Zrm\377\206" \
- "Slg\377\4Wnj\377Skg\377Slg\377i\200{\377\346\333\343\342\377\1\274\313" \
- "\311\377\202\223\254\247\377\1\361\364\364\377\204\377\377\377\377\1" \
- "\333\343\342\377\202\223\254\247\377\1\275\314\311\377\377\333\343\342" \
- "\377\242\333\343\342\377\1\306\323\321\377\202\223\254\247\377\1\315" \
- "\331\326\377\204\377\377\377\377\1\374\374\374\377\202\223\254\247\377" \
- "\1\263\305\301\377\251\333\343\342\377\2\311\324\322\377v\212\206\377" \
- "\207Slg\377\2k\201|\377\311\324\322\377\207\333\343\342\377\3\325\336" \
- "\335\377\251\267\264\377t\211\205\377\204Slg\377\6Skf\377Rkg\377Slg\377" \
- "Uoi\377\232\253\247\377\314\326\325\377\344\333\343\342\377\1\277\316" \
- "\313\377\202\223\254\247\377\1\355\361\360\377\204\377\377\377\377\4" \
- "\256\300\275\377\223\254\247\377\226\257\252\377\327\340\337\377\377" \
- "\333\343\342\377\242\333\343\342\377\5\332\342\341\377\235\263\257\377" \
- "\223\254\247\377\241\267\262\377\376\376\376\377\203\377\377\377\377" \
- "\1\367\371\370\377\202\223\254\247\377\1\266\307\304\377\252\333\343" \
- "\342\377\11\332\342\341\377\260\275\273\377\222\243\237\377w\213\210" \
- "\377d{w\377r\207\203\377\206\230\225\377\265\302\300\377\332\342\341" \
- "\377\213\333\343\342\377\5\307\322\320\377\225\245\242\377bxt\377Slg" \
- "\377Skf\377\203Slf\377\5Slg\377Tmh\377{\216\213\377\257\274\273\377\330" \
- "\340\337\377\341\333\343\342\377\1\302\320\316\377\202\223\254\247\377" \
- "\1\350\355\354\377\203\377\377\377\377\1\354\361\360\377\202\223\254" \
- "\247\377\1\262\303\300\377\377\333\343\342\377\244\333\343\342\377\1" \
- "\273\312\307\377\202\223\254\247\377\1\337\346\345\377\203\377\377\377" \
- "\377\1\362\365\364\377\202\223\254\247\377\1\271\311\306\377\300\333" \
- "\343\342\377\6\332\342\341\377\265\301\300\377~\223\217\377Vnj\377Sk" \
- "g\377Slf\377\204Slg\377\3^uq\377\217\241\236\377\304\317\315\377\337" \
- "\333\343\342\377\1\305\322\320\377\202\223\254\247\377\1\343\352\350" \
- "\377\203\377\377\377\377\1\277\316\313\377\202\223\254\247\377\1\317" \
- "\332\330\377\377\333\343\342\377\244\333\343\342\377\4\326\337\336\377" \
- "\225\256\251\377\223\254\247\377\261\303\300\377\203\377\377\377\377" \
- "\1\356\361\361\377\202\223\254\247\377\1\274\313\311\377\303\333\343" \
- "\342\377\3\321\332\331\377\240\257\255\377m\202~\377\207Slg\377\3p\205" \
- "\201\377\244\263\260\377\323\334\333\377\212\333\343\342\377\1\257\274" \
- "\273\377\202\216\237\234\377\1\264\300\277\377\316\333\343\342\377\1" \
- "\310\325\323\377\202\223\254\247\377\7\243\271\264\377\272\312\307\377" \
- "\315\330\326\377\336\345\344\377\230\257\253\377\223\254\247\377\246" \
- "\272\266\377\377\333\343\342\377\246\333\343\342\377\1\257\301\276\377" \
- "\202\223\254\247\377\4\332\342\340\377\317\332\330\377\274\313\310\377" \
- "\246\273\267\377\202\223\254\247\377\1\277\316\313\377\306\333\343\342" \
- "\377\3\301\314\312\377\215\237\233\377\\to\377\206Slg\377\3Xpk\377\204" \
- "\227\224\377\271\305\303\377\210\333\343\342\377\1\216\237\234\377\202" \
- "Slg\377\1\227\247\244\377\316\333\343\342\377\1\313\327\325\377\210\223" \
- "\254\247\377\1\304\321\317\377\377\333\343\342\377\246\333\343\342\377" \
- "\1\315\330\327\377\210\223\254\247\377\1\303\320\316\377\310\333\343" \
- "\342\377\3\326\337\336\377\255\272\270\377x\215\210\377\207Slg\377\3" \
- "e}w\377\232\252\246\377\314\325\325\377\205\333\343\342\377\1\216\237" \
- "\234\377\202Slg\377\1\227\247\244\377\316\333\343\342\377\5\326\337\336" \
- "\377\271\311\306\377\217\245\241\377\206\237\232\377\220\251\244\377" \
- "\203\223\254\247\377\2\233\262\256\377\332\342\341\377\377\333\343\342" \
- "\377\247\333\343\342\377\1\243\270\264\377\203\223\254\247\377\5\221" \
- "\252\245\377\210\241\234\377\203\233\226\377\267\310\305\377\323\335" \
- "\333\377\313\333\343\342\377\3\313\326\324\377\230\251\246\377f|x\377" \
- "\206Slg\377\4Tmh\377z\216\212\377\256\274\272\377\330\340\337\377\202" \
- "\333\343\342\377\1\216\237\234\377\202Slg\377\1\227\247\244\377\320\333" \
- "\343\342\377\1p\206\202\377\202Slg\377\4\\up\377o\207\203\377\270\310" \
- "\305\377\303\321\316\377\377\333\343\342\377\250\333\343\342\377\10\307" \
- "\324\322\377\267\307\304\377\200\226\221\377]vq\377Tmh\377Slg\377Woj" \
- "\377\331\342\341\377\316\333\343\342\377\4\332\342\341\377\271\305\303" \
- "\377\204\227\224\377Xpk\377\206Slg\377\4]up\377\217\240\235\377\303\316" \
- "\315\377\216\237\234\377\202Slg\377\1\227\247\244\377\320\333\343\342" \
- "\377\1Zrm\377\203Slg\377\1y\216\211\377\377\333\343\342\377\254\333\343" \
- "\342\377\2\226\247\244\377Tmh\377\202Slg\377\2[sn\377\307\322\320\377" \
- "\321\333\343\342\377\3\323\334\333\377\245\264\261\377q\205\201\377\207" \
- "Slg\377\1Xpl\377\202Slg\377\1\227\247\244\377\320\333\343\342\377\1_" \
- "wr\377\203Slg\377\1\227\247\244\377\377\333\343\342\377\254\333\343\342" \
- "\377\2\261\276\274\377[sn\377\202Slg\377\2Zrm\377\260\276\273\377\324" \
- "\333\343\342\377\3\304\317\316\377\221\242\237\377_vr\377\207Slg\377" \
- "\1\227\247\244\377\320\333\343\342\377\1p\206\202\377\202Slg\377\2Xp" \
- "l\377\317\330\327\377\377\333\343\342\377\254\333\343\342\377\2\311\324" \
- "\322\377Zrn\377\202Slg\377\2Yrm\377\313\325\324\377\326\333\343\342\377" \
- "\4\330\341\340\377\261\276\274\377|\221\215\377Umh\377\204Slg\377\1\227" \
- "\247\244\377\320\333\343\342\377\1\203\226\222\377\202Slg\377\1\222\243" \
- "\237\377\377\333\343\342\377\256\333\343\342\377\4Xpk\377Slg\377Yql\377" \
- "\241\261\256\377\332\333\343\342\377\3\316\330\326\377\235\254\252\377" \
- "byu\377\202Slg\377\1\227\247\244\377\320\333\343\342\377\4\224\245\242" \
- "\377Slg\377Yql\377\320\331\330\377\377\333\343\342\377\256\333\343\342" \
- "\377\4j\200{\377Slg\377o\204\200\377\332\342\341\377\334\333\343\342" \
- "\377\1\216\237\234\377\202Slg\377\1\227\247\244\377\320\333\343\342\377" \
- "\3\245\264\262\377Slg\377\223\243\241\377\377\333\343\342\377\257\333" \
- "\343\342\377\3\205\230\224\377Vnj\377\312\324\323\377\335\333\343\342" \
- "\377\1\216\237\234\377\202Slg\377\1\227\247\244\377\320\333\343\342\377" \
- "\3\267\304\302\377Zqm\377\320\332\331\377\377\333\343\342\377\257\333" \
- "\343\342\377\2\304\317\315\377\264\301\277\377\336\333\343\342\377\1" \
- "\216\237\234\377\202Slg\377\1\227\247\244\377\320\333\343\342\377\2\311" \
- "\323\321\377\223\244\242\377\377\333\343\342\377\377\333\343\342\377" \
- "\221\333\343\342\377\1\256\273\270\377\202\211\233\230\377\1\262\277" \
- "\275\377\320\333\343\342\377\2\330\341\340\377\321\332\331\377\377\333" \
- "\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342" \
- "\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377" \
- "\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343" \
- "\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377" \
- "\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333" \
- "\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342" \
- "\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377" \
- "\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343" \
- "\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377" \
- "\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333" \
- "\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342" \
- "\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377" \
- "\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343" \
- "\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377" \
- "\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333" \
- "\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342" \
- "\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377" \
- "\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343" \
- "\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377" \
- "\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333" \
- "\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342" \
- "\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377" \
- "\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343" \
- "\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377" \
- "\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333" \
- "\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342" \
- "\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377" \
- "\333\343\342\377\377\333\343\342\377\377\333\343\342\377\231\333\343" \
- "\342\377")
-
-
diff --git a/packages/psplash/files/angstrom/psplash-hand-img.h b/packages/psplash/files/angstrom/psplash-hand-img.h
index a03d16e57a..263befa564 100644
--- a/packages/psplash/files/angstrom/psplash-hand-img.h
+++ b/packages/psplash/files/angstrom/psplash-hand-img.h
@@ -1,1336 +1,1454 @@
/* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */
-#define HAND_IMG_ROWSTRIDE (1016)
-#define HAND_IMG_WIDTH (254)
-#define HAND_IMG_HEIGHT (264)
+#define HAND_IMG_ROWSTRIDE (920)
+#define HAND_IMG_WIDTH (230)
+#define HAND_IMG_HEIGHT (231)
#define HAND_IMG_BYTES_PER_PIXEL (4) /* 3:RGB, 4:RGBA */
#define HAND_IMG_RLE_PIXEL_DATA ((uint8*) \
- "\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343" \
- "\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377" \
- "\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333" \
- "\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342" \
- "\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377" \
- "\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343" \
- "\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377" \
- "\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333" \
- "\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342" \
- "\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377" \
- "\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343" \
- "\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377" \
- "\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333" \
- "\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342" \
- "\377\377\333\343\342\377\377\333\343\342\377\331\333\343\342\377\5\327" \
- "\340\337\377\314\327\325\377\306\323\320\377\321\333\331\377\332\342" \
- "\341\377\377\333\343\342\377\206\333\343\342\377\1\276\311\307\377\202" \
- "g~y\377\357\333\343\342\377\2\253\276\272\377\233\262\255\377\204\223" \
- "\254\247\377\3\225\255\250\377\240\266\262\377\303\321\316\377\377\333" \
- "\343\342\377\204\333\343\342\377\1\270\305\303\377\202Slg\377\357\333" \
- "\343\342\377\11\231\260\254\377\223\254\247\377\243\271\264\377\267\307" \
- "\304\377\277\316\313\377\256\301\275\377\232\261\255\377\223\254\247" \
- "\377\271\311\306\377\377\333\343\342\377\204\333\343\342\377\1\270\305" \
- "\303\377\202Slg\377\357\333\343\342\377\202\231\260\254\377\204\377\377" \
- "\377\377\3\326\337\335\377\223\254\247\377\271\311\306\377\364\333\343" \
- "\342\377\4\332\342\341\377\316\330\326\377\277\312\310\377\260\275\273" \
- "\377\213\254\271\267\377\1\225\246\243\377\202Slg\377\357\333\343\342" \
- "\377\202\231\260\254\377\204\377\377\377\377\3\326\337\335\377\223\254" \
- "\247\377\271\311\306\377\362\333\343\342\377\3\266\302\300\377v\212\206" \
- "\377Vni\377\221Slg\377\357\333\343\342\377\202\231\260\254\377\204\377" \
- "\377\377\377\3\326\337\335\377\223\254\247\377\271\311\306\377\360\333" \
- "\343\342\377\2\320\331\330\377n\204\200\377\224Slg\377\357\333\343\342" \
- "\377\202\231\260\254\377\204\377\377\377\377\3\326\337\335\377\223\254" \
- "\247\377\271\311\306\377\357\333\343\342\377\2\332\342\341\377x\215\211" \
- "\377\225Slg\377\357\333\343\342\377\202\231\260\254\377\204\377\377\377" \
- "\377\3\326\337\335\377\223\254\247\377\271\311\306\377\357\333\343\342" \
- "\377\1\240\260\255\377\204Slg\377\4Uni\377s\210\203\377\177\222\217\377" \
- "\213\235\231\377\213\222\243\240\377\1\202\225\221\377\202Slg\377\357" \
- "\333\343\342\377\202\231\260\254\377\204\377\377\377\377\3\326\337\335" \
- "\377\223\254\247\377\271\311\306\377\357\333\343\342\377\1{\217\213\377" \
- "\203Slg\377\2\230\250\245\377\317\330\327\377\216\333\343\342\377\1\270" \
- "\305\303\377\202Slg\377\357\333\343\342\377\202\231\260\254\377\204\377" \
- "\377\377\377\3\326\337\335\377\223\254\247\377\271\311\306\377\357\333" \
- "\343\342\377\1byt\377\202Slg\377\1\230\250\245\377\220\333\343\342\377" \
- "\1\270\305\303\377\202Slg\377\357\333\343\342\377\202\231\260\254\377" \
- "\204\377\377\377\377\3\326\337\335\377\223\254\247\377\271\311\306\377" \
- "\356\333\343\342\377\1\324\335\334\377\203Slg\377\1\324\334\333\377\220" \
- "\333\343\342\377\1\274\307\306\377\202_vr\377\357\333\343\342\377\202" \
- "\231\260\254\377\204\377\377\377\377\3\326\337\335\377\223\254\247\377" \
- "\271\311\306\377\356\333\343\342\377\4\332\342\341\377Xql\377Slg\377" \
- "f|x\377\377\333\343\342\377\204\333\343\342\377\202\231\260\254\377\204" \
- "\377\377\377\377\3\326\337\335\377\223\254\247\377\271\311\306\377\357" \
- "\333\343\342\377\3n\204\200\377Slg\377_vr\377\377\333\343\342\377\204" \
- "\333\343\342\377\202\231\260\254\377\204\377\377\377\377\3\326\337\335" \
- "\377\223\254\247\377\271\311\306\377\357\333\343\342\377\1\243\262\257" \
- "\377\202Slg\377\1\311\324\322\377\220\333\343\342\377\1\325\336\335\377" \
- "\202\305\320\316\377\357\333\343\342\377\202\231\260\254\377\204\377" \
- "\377\377\377\3\326\337\335\377\223\254\247\377\271\311\306\377\357\333" \
- "\343\342\377\4\327\337\336\377dzv\377Slg\377\220\242\236\377\220\333" \
- "\343\342\377\1\270\305\303\377\202Slg\377\357\333\343\342\377\202\231" \
- "\260\254\377\204\377\377\377\377\3\326\337\335\377\223\254\247\377\271" \
- "\311\306\377\360\333\343\342\377\4\307\321\320\377`ws\377Slg\377\240" \
- "\260\255\377\217\333\343\342\377\1\270\305\303\377\202Slg\377\357\333" \
- "\343\342\377\202\231\260\254\377\204\377\377\377\377\3\326\337\335\377" \
- "\223\254\247\377\271\311\306\377\361\333\343\342\377\6\307\322\320\377" \
- "u\211\205\377Slg\377m\202~\377\246\265\262\377\321\333\331\377\214\333" \
- "\343\342\377\1\270\305\303\377\202Slg\377\357\333\343\342\377\202\231" \
- "\260\254\377\204\377\377\377\377\3\326\337\335\377\223\254\247\377\271" \
- "\311\306\377\362\333\343\342\377\2\332\342\341\377\213\235\231\377\203" \
- "Slg\377\3Xpk\377f}x\377s\210\203\377\211t\211\205\377\1l\201}\377\202" \
- "Slg\377\357\333\343\342\377\202\231\260\254\377\204\377\377\377\377\3" \
- "\326\337\335\377\223\254\247\377\271\311\306\377\361\333\343\342\377" \
- "\2\265\302\300\377i\177{\377\223Slg\377\357\333\343\342\377\202\231\260" \
- "\254\377\204\377\377\377\377\3\326\337\335\377\223\254\247\377\271\311" \
- "\306\377\360\333\343\342\377\2\255\272\270\377Uni\377\224Slg\377\357" \
- "\333\343\342\377\202\231\260\254\377\204\377\377\377\377\3\326\337\335" \
- "\377\223\254\247\377\271\311\306\377\357\333\343\342\377\2\316\327\326" \
- "\377Wpk\377\225Slg\377\357\333\343\342\377\202\231\260\254\377\204\377" \
- "\377\377\377\3\326\337\335\377\223\254\247\377\271\311\306\377\357\333" \
- "\343\342\377\1\220\241\236\377\203Slg\377\5Woj\377\205\227\224\377\254" \
- "\271\267\377\270\304\302\377\304\316\315\377\213\311\324\322\377\1\254" \
- "\271\267\377\202Slg\377\357\333\343\342\377\202\231\260\254\377\204\377" \
- "\377\377\377\3\326\337\335\377\223\254\247\377\271\311\306\377\357\333" \
- "\343\342\377\1i\177{\377\202Slg\377\2dzv\377\316\327\326\377\217\333" \
- "\343\342\377\1\270\305\303\377\202Slg\377\357\333\343\342\377\202\231" \
- "\260\254\377\204\377\377\377\377\3\326\337\335\377\223\254\247\377\271" \
- "\311\306\377\356\333\343\342\377\2\331\342\341\377Voj\377\202Slg\377" \
- "\1\273\307\305\377\220\333\343\342\377\1\270\305\303\377\202Slg\377\357" \
- "\333\343\342\377\3\241\267\262\377\223\254\247\377\363\366\365\377\203" \
- "\377\377\377\377\3\304\321\317\377\223\254\247\377\301\317\314\377\356" \
- "\333\343\342\377\1\324\335\334\377\202Slg\377\2Xpk\377\331\342\341\377" \
- "\220\333\343\342\377\1\311\324\322\377\202\226\247\244\377\357\333\343" \
- "\342\377\3\264\305\302\377\223\254\247\377\326\337\335\377\203\377\377" \
- "\377\377\3\246\273\267\377\223\254\247\377\324\335\334\377\357\333\343" \
- "\342\377\3_vr\377Slg\377i\177{\377\377\333\343\342\377\202\333\343\342" \
- "\377\5\317\332\331\377\257\301\276\377\217\251\244\377\223\254\247\377" \
- "\270\310\305\377\202\377\377\377\377\6\365\367\367\377\223\254\247\377" \
- "\217\251\244\377\234\263\257\377\275\314\312\377\330\341\340\377\355" \
- "\333\343\342\377\4\177\222\217\377Slg\377Vni\377\327\337\336\377\376" \
- "\333\343\342\377\2\277\316\313\377\207\243\236\377\203o\221\212\377\7" \
- "\221\253\246\377\233\262\256\377\376\376\376\377\377\377\377\377\330" \
- "\341\337\377\223\254\247\377\202\237\231\377\202o\221\212\377\3t\225" \
- "\216\377\234\263\257\377\322\334\333\377\353\333\343\342\377\1\277\313" \
- "\311\377\202Slg\377\1\273\307\305\377\220\333\343\342\377\1\307\322\320" \
- "\377\202\216\237\234\377\351\333\343\342\377\2\310\325\323\377\216\251" \
- "\243\377\204o\221\212\377\10v\226\220\377\221\252\245\377\223\254\247" \
- "\377\324\336\334\377\340\347\346\377\262\304\300\377\223\254\247\377" \
- "\210\244\237\377\204o\221\212\377\3u\225\217\377\250\274\270\377\327" \
- "\340\337\377\352\333\343\342\377\4\226\246\243\377Slg\377h\177z\377\321" \
- "\333\331\377\217\333\343\342\377\1\270\305\303\377\202Slg\377\350\333" \
- "\343\342\377\2\264\305\302\377q\223\214\377\202o\221\212\377\5q\223\214" \
- "\377\233\263\256\377\300\317\314\377\331\342\340\377\273\312\307\377" \
- "\204\223\254\247\377\5\225\255\250\377\330\341\337\377\321\333\332\377" \
- "\261\303\277\377\206\243\235\377\203o\221\212\377\2\205\242\234\377\317" \
- "\332\331\377\352\333\343\342\377\4\230\250\245\377Tmh\377q\206\202\377" \
- "\276\311\307\377\216\333\343\342\377\1\270\305\303\377\202Slg\377\346" \
- "\333\343\342\377\2\332\342\341\377\241\267\263\377\203o\221\212\377\2" \
- "\227\257\253\377\315\331\327\377\203\333\343\342\377\1\321\333\332\377" \
- "\204\262\303\300\377\1\272\312\307\377\204\333\343\342\377\2\270\310" \
- "\306\377\177\235\227\377\202o\221\212\377\2z\231\222\377\304\322\320" \
- "\377\347\333\343\342\377\1\317\330\327\377\202\301\314\312\377\10\247" \
- "\266\263\377^vq\377Slg\377o\204\200\377\232\252\247\377\247\266\263\377" \
- "\264\301\277\377\277\313\311\377\211\301\314\312\377\1\245\264\261\377" \
- "\202Slg\377\346\333\343\342\377\1\236\265\260\377\202o\221\212\377\2" \
- "t\225\216\377\273\313\310\377\220\333\343\342\377\2\327\340\337\377\225" \
- "\256\251\377\202o\221\212\377\2t\225\216\377\310\325\323\377\346\333" \
- "\343\342\377\1\233\253\250\377\226Slg\377\345\333\343\342\377\1\261\303" \
- "\277\377\202o\221\212\377\2|\233\225\377\311\325\323\377\223\333\343" \
- "\342\377\1\247\273\267\377\202o\221\212\377\2|\233\225\377\322\334\333" \
- "\377\345\333\343\342\377\1\233\253\250\377\226Slg\377\344\333\343\342" \
- "\377\5\304\321\317\377q\222\213\377o\221\212\377u\226\217\377\312\326" \
- "\324\377\225\333\343\342\377\1\242\270\264\377\202o\221\212\377\2\211" \
- "\244\237\377\332\342\341\377\344\333\343\342\377\1\233\253\250\377\226" \
- "Slg\377\344\333\343\342\377\4\207\243\236\377o\221\212\377p\222\213\377" \
- "\275\314\312\377\226\333\343\342\377\2\332\342\341\377\220\252\245\377" \
- "\202o\221\212\377\1\264\305\302\377\344\333\343\342\377\3\233\253\250" \
- "\377Slg\377\\so\377\221x\215\211\377\1o\204\200\377\202Slg\377\343\333" \
- "\343\342\377\1\267\310\305\377\202o\221\212\377\1\237\265\261\377\230" \
- "\333\343\342\377\5\324\336\334\377v\226\220\377o\221\212\377|\233\225" \
- "\377\330\341\337\377\343\333\343\342\377\3\233\253\250\377Slg\377t\211" \
- "\205\377\221\333\343\342\377\1\270\305\303\377\202Slg\377\342\333\343" \
- "\342\377\5\332\342\341\377~\234\226\377o\221\212\377t\225\216\377\322" \
- "\334\333\377\231\333\343\342\377\1\251\275\271\377\202o\221\212\377\1" \
- "\255\300\275\377\343\333\343\342\377\3\233\253\250\377Slg\377t\211\205" \
- "\377\221\333\343\342\377\1\270\305\303\377\202Slg\377\342\333\343\342" \
- "\377\1\304\321\317\377\202o\221\212\377\1\245\272\266\377\232\333\343" \
- "\342\377\4\327\340\337\377y\231\222\377o\221\212\377\207\243\236\377" \
- "\343\333\343\342\377\3\233\253\250\377Slg\377t\211\205\377\221\333\343" \
- "\342\377\1\270\305\303\377\202Slg\377\342\333\343\342\377\1\243\270\264" \
- "\377\202o\221\212\377\1\314\327\325\377\233\333\343\342\377\1\234\263" \
- "\257\377\202o\221\212\377\1\321\333\332\377\342\333\343\342\377\3\277" \
- "\312\310\377\237\256\253\377\256\273\271\377\221\333\343\342\377\1\323" \
- "\334\333\377\202\275\310\306\377\342\333\343\342\377\3\202\237\231\377" \
- "o\221\212\377\201\236\230\377\234\333\343\342\377\1\276\315\312\377\202" \
- "o\221\212\377\1\261\303\300\377\377\333\343\342\377\333\333\343\342\377" \
- "\1\330\341\340\377\202o\221\212\377\1\234\263\256\377\234\333\343\342" \
- "\377\1\330\341\337\377\202o\221\212\377\1\234\263\257\377\377\333\343" \
- "\342\377\333\333\343\342\377\1\317\332\330\377\202o\221\212\377\1\250" \
- "\274\270\377\235\333\343\342\377\3y\230\222\377o\221\212\377\222\254" \
- "\246\377\377\333\343\342\377\333\333\343\342\377\1\304\322\320\377\202" \
- "o\221\212\377\1\264\306\302\377\235\333\343\342\377\3\205\242\234\377" \
- "o\221\212\377\207\243\236\377\350\333\343\342\377\13\327\340\337\377" \
- "\267\303\301\377\225\246\243\377{\217\213\377p\205\201\377f}x\377k\201" \
- "}\377u\211\205\377\205\227\224\377\245\263\261\377\310\323\321\377\347" \
- "\333\343\342\377\1\275\314\312\377\202o\221\212\377\1\274\314\311\377" \
- "\235\333\343\342\377\3\215\250\242\377o\221\212\377\200\236\230\377\346" \
- "\333\343\342\377\3\324\334\333\377\231\251\246\377_wr\377\212Slg\377" \
- "\2x\215\211\377\270\304\302\377\345\333\343\342\377\1\306\323\321\377" \
- "\202o\221\212\377\1\263\304\301\377\235\333\343\342\377\3\203\240\232" \
- "\377o\221\212\377\211\244\237\377\345\333\343\342\377\2\300\314\312\377" \
- "f|x\377\216Slg\377\2\216\240\235\377\330\340\337\377\343\333\343\342" \
- "\377\1\320\333\331\377\202o\221\212\377\1\247\273\267\377\235\333\343" \
- "\342\377\3w\227\221\377o\221\212\377\223\254\250\377\344\333\343\342" \
- "\377\2\273\307\305\377Woj\377\220Slg\377\2y\216\212\377\330\341\340\377" \
- "\342\333\343\342\377\4\331\342\340\377p\221\213\377o\221\212\377\231" \
- "\261\254\377\234\333\343\342\377\1\326\337\336\377\202o\221\212\377\1" \
- "\236\265\260\377\331\333\343\342\377\3\272\306\304\377\231\251\246\377" \
- "\310\322\321\377\207\333\343\342\377\2\310\322\321\377\\to\377\205Sl" \
- "g\377\7Woj\377dzv\377q\206\202\377}\221\215\377w\214\210\377k\201|\377" \
- "]up\377\206Slg\377\1\211\233\230\377\343\333\343\342\377\3\206\242\234" \
- "\377o\221\212\377|\233\225\377\234\333\343\342\377\1\271\311\306\377" \
- "\202o\221\212\377\1\265\306\303\377\330\333\343\342\377\1\222\243\240" \
- "\377\203Slg\377\1\271\306\304\377\206\333\343\342\377\1|\217\214\377" \
- "\203Slg\377\3dzv\377\231\252\247\377\314\326\324\377\207\333\343\342" \
- "\377\4\330\340\337\377\267\304\302\377\201\224\220\377Vni\377\203Slg" \
- "\377\1\274\307\306\377\342\333\343\342\377\1\247\274\270\377\202o\221" \
- "\212\377\1\307\323\321\377\233\333\343\342\377\4\227\257\253\377o\221" \
- "\212\377q\222\213\377\324\336\334\377\327\333\343\342\377\2\325\335\334" \
- "\377Zrm\377\203Slg\377\1\205\227\224\377\205\333\343\342\377\1\275\310" \
- "\306\377\202Slg\377\3Umh\377\251\270\265\377\331\342\341\377\214\333" \
- "\343\342\377\2\317\331\327\377y\216\212\377\202Slg\377\1t\211\205\377" \
- "\342\333\343\342\377\1\310\325\323\377\202o\221\212\377\1\237\265\261" \
- "\377\232\333\343\342\377\4\325\336\335\377v\226\217\377o\221\212\377" \
- "\213\246\241\377\330\333\343\342\377\2\331\341\340\377czu\377\203Slg" \
- "\377\1\221\243\237\377\205\333\343\342\377\4\220\241\236\377Slg\377T" \
- "lg\377\253\271\267\377\217\333\343\342\377\2\326\336\335\377s\210\204" \
- "\377\202Slg\377\1\317\331\327\377\342\333\343\342\377\4\203\240\232\377" \
- "o\221\212\377r\223\214\377\317\331\330\377\205\333\343\342\377\2\305" \
- "\322\320\377\322\334\332\377\212\333\343\342\377\3\332\342\341\377\305" \
- "\322\320\377\322\334\333\377\205\333\343\342\377\1\243\270\264\377\202" \
- "o\221\212\377\1\262\304\301\377\331\333\343\342\377\5\250\266\264\377" \
- "Yql\377Slg\377f|x\377\310\322\321\377\205\333\343\342\377\3k\201}\377" \
- "Slg\377\212\234\231\377\221\333\343\342\377\4\321\332\331\377Tmh\377" \
- "Slg\377\253\271\267\377\342\333\343\342\377\1\276\315\312\377\202o\221" \
- "\212\377\1\227\257\253\377\204\333\343\342\377\6\327\340\337\377\227" \
- "\257\252\377\223\254\247\377\251\275\271\377\307\324\322\377\332\342" \
- "\341\377\205\333\343\342\377\5\325\337\335\377\272\311\307\377\234\263" \
- "\256\377\223\254\247\377\263\304\301\377\204\333\343\342\377\5\317\332" \
- "\331\377s\224\215\377o\221\212\377\201\236\230\377\331\342\340\377\332" \
- "\333\343\342\377\3\324\334\333\377\274\307\306\377\332\342\341\377\206" \
- "\333\343\342\377\3Xql\377Slg\377\255\272\270\377\222\333\343\342\377" \
- "\3m\202~\377Slg\377\230\251\246\377\343\333\343\342\377\1\216\250\243" \
- "\377\202o\221\212\377\1\264\305\302\377\203\333\343\342\377\3\275\314" \
- "\312\377\223\254\247\377\225\255\250\377\202\223\254\247\377\7\236\264" \
- "\260\377\273\313\310\377\327\337\336\377\333\343\342\377\315\330\326" \
- "\377\256\301\275\377\225\255\251\377\202\223\254\247\377\3\224\254\250" \
- "\377\227\257\252\377\330\341\337\377\202\333\343\342\377\2\330\341\337" \
- "\377\207\243\236\377\202o\221\212\377\1\273\312\310\377\343\333\343\342" \
- "\377\1\324\335\334\377\202Slg\377\1\314\326\324\377\222\333\343\342\377" \
- "\3\214\236\233\377Slg\377\214\235\232\377\343\333\343\342\377\5\312\326" \
- "\324\377t\225\216\377o\221\212\377q\223\214\377\303\320\316\377\202\333" \
- "\343\342\377\5\237\265\261\377\223\254\247\377\347\355\354\377\335\344" \
- "\343\377\257\301\276\377\202\223\254\247\377\2\250\274\270\377\321\334" \
- "\332\377\202\223\254\247\377\6\231\261\254\377\303\321\316\377\360\363" \
- "\363\377\271\311\306\377\223\254\247\377\277\315\313\377\202\333\343" \
- "\342\377\1\227\257\252\377\202o\221\212\377\1\222\254\246\377\344\333" \
- "\343\342\377\1\325\335\334\377\202Slg\377\1\313\325\323\377\222\333\343" \
- "\342\377\3\213\235\231\377Slg\377\214\236\233\377\344\333\343\342\377" \
- "\1\273\312\310\377\202o\221\212\377\5v\226\220\377\277\316\313\377\311" \
- "\325\323\377\223\254\247\377\251\275\271\377\203\377\377\377\377\7\355" \
- "\361\360\377\227\257\253\377\226\256\251\377\273\312\307\377\223\254" \
- "\247\377\271\311\306\377\372\373\373\377\202\377\377\377\377\5\346\354" \
- "\353\377\223\254\247\377\240\266\262\377\330\341\340\377\232\261\255" \
- "\377\202o\221\212\377\2\203\240\232\377\326\337\336\377\334\333\343\342" \
- "\377\3\322\333\332\377\267\303\301\377\331\341\340\377\206\333\343\342" \
- "\377\3Yql\377Slg\377\253\271\267\377\222\333\343\342\377\3k\201}\377" \
- "Slg\377\231\251\246\377\345\333\343\342\377\1\252\276\272\377\202o\221" \
- "\212\377\4p\222\213\377\234\263\256\377\223\254\247\377\327\340\336\377" \
- "\203\377\377\377\377\2\344\352\351\377\232\261\254\377\202\223\254\247" \
- "\377\3\224\255\250\377\262\303\300\377\371\372\372\377\203\377\377\377" \
- "\377\3\250\274\270\377\223\254\247\377\214\246\241\377\202o\221\212\377" \
- "\2y\231\222\377\317\331\330\377\334\333\343\342\377\5\247\266\263\377" \
- "Xql\377Slg\377`ws\377\305\320\316\377\205\333\343\342\377\3l\201}\377" \
- "Slg\377\210\233\227\377\221\333\343\342\377\4\317\331\327\377Tlg\377" \
- "Slg\377\254\271\267\377\346\333\343\342\377\6\257\301\276\377p\222\213" \
- "\377r\223\214\377\222\253\246\377\233\262\256\377\374\374\374\377\202" \
- "\377\377\377\377\11\316\331\327\377\223\254\247\377\252\275\272\377\320" \
- "\333\331\377\332\343\341\377\305\323\320\377\227\257\253\377\237\265" \
- "\261\377\362\365\364\377\202\377\377\377\377\6\325\337\335\377\223\254" \
- "\247\377\206\242\234\377o\221\212\377\202\237\231\377\315\330\326\377" \
- "\334\333\343\342\377\2\331\341\340\377czu\377\203Slg\377\1\217\241\235" \
- "\377\205\333\343\342\377\1\221\243\237\377\202Slg\377\1\251\267\265\377" \
- "\217\333\343\342\377\5\325\335\334\377p\206\202\377Slg\377Tlg\377\320" \
- "\331\330\377\347\333\343\342\377\4\277\316\313\377\204\241\233\377\223" \
- "\254\247\377\306\323\320\377\202\377\377\377\377\4\352\357\356\377\225" \
- "\255\250\377\300\317\314\377\376\376\376\377\203\377\377\377\377\12\361" \
- "\364\363\377\236\264\260\377\257\302\276\377\376\376\376\377\377\377" \
- "\377\377\373\374\373\377\232\261\254\377\222\253\246\377\217\251\244" \
- "\377\325\337\335\377\335\333\343\342\377\2\325\336\335\377[sn\377\203" \
- "Slg\377\1\206\231\225\377\205\333\343\342\377\1\276\312\310\377\202S" \
- "lg\377\3Umh\377\251\267\265\377\331\342\341\377\214\333\343\342\377\2" \
- "\315\326\325\377v\213\207\377\202Slg\377\1v\213\207\377\350\333\343\342" \
- "\377\4\331\341\340\377\230\260\253\377\224\254\247\377\362\365\364\377" \
- "\202\377\377\377\377\3\272\312\307\377\243\270\264\377\374\375\375\377" \
- "\205\377\377\377\377\3\335\345\343\377\223\254\247\377\352\357\356\377" \
- "\202\377\377\377\377\3\304\321\317\377\223\254\247\377\267\307\304\377" \
- "\337\333\343\342\377\1\223\244\240\377\202Slg\377\2Umh\377\275\310\306" \
- "\377\206\333\343\342\377\1~\222\216\377\203Slg\377\4czu\377\227\247\244" \
- "\377\310\322\321\377\331\341\340\377\206\333\343\342\377\4\325\335\334" \
- "\377\263\300\276\377}\220\215\377Tmh\377\203Slg\377\1\277\312\310\377" \
- "\350\333\343\342\377\3\302\320\315\377\223\254\247\377\264\305\302\377" \
- "\203\377\377\377\377\2\243\271\264\377\277\316\313\377\206\377\377\377" \
- "\377\3\373\374\373\377\224\255\250\377\322\335\333\377\202\377\377\377" \
- "\377\4\360\363\363\377\223\254\247\377\232\262\255\377\332\342\341\377" \
- "\337\333\343\342\377\3\274\310\306\377\236\255\253\377\315\327\325\377" \
- "\207\333\343\342\377\2\311\324\322\377^uq\377\205Slg\377\7Tmh\377_wr" \
- "\377m\202~\377y\215\211\377s\210\204\377f}x\377Yql\377\206Slg\377\1\217" \
- "\240\235\377\351\333\343\342\377\3\244\271\265\377\223\254\247\377\342" \
- "\350\347\377\203\377\377\377\377\2\240\266\262\377\302\320\315\377\206" \
- "\377\377\377\377\3\374\375\375\377\225\255\251\377\317\332\330\377\203" \
- "\377\377\377\377\3\262\304\300\377\223\254\247\377\303\321\317\377\352" \
- "\333\343\342\377\2\275\311\307\377Xql\377\220Slg\377\2}\221\215\377\331" \
- "\342\341\377\350\333\343\342\377\4\316\331\327\377\223\254\247\377\243" \
- "\270\264\377\376\376\376\377\203\377\377\377\377\2\267\307\304\377\250" \
- "\274\270\377\206\377\377\377\377\3\345\353\351\377\223\254\247\377\346" \
- "\354\353\377\203\377\377\377\377\3\340\347\345\377\223\254\247\377\245" \
- "\272\266\377\353\333\343\342\377\2\303\316\314\377h\177z\377\215Slg\377" \
- "\3Tlg\377\225\245\242\377\331\341\340\377\351\333\343\342\377\3\257\302" \
- "\276\377\223\254\247\377\320\333\331\377\204\377\377\377\377\3\340\347" \
- "\346\377\223\254\247\377\317\332\330\377\204\377\377\377\377\4\371\372" \
- "\372\377\245\272\266\377\246\272\266\377\374\375\375\377\203\377\377" \
- "\377\377\4\376\376\376\377\242\267\263\377\223\254\247\377\317\331\330" \
- "\377\353\333\343\342\377\3\325\335\334\377\235\255\252\377czu\377\211" \
- "Slg\377\3Tlg\377\177\222\217\377\277\312\310\377\352\333\343\342\377" \
- "\4\326\337\336\377\225\256\251\377\227\257\253\377\371\372\372\377\205" \
- "\377\377\377\377\11\277\316\313\377\223\254\247\377\272\312\307\377\341" \
- "\350\346\377\353\360\357\377\326\340\336\377\240\266\261\377\227\257" \
- "\252\377\352\357\356\377\205\377\377\377\377\3\316\331\327\377\223\254" \
- "\247\377\260\302\277\377\355\333\343\342\377\13\330\341\340\377\273\307" \
- "\305\377\231\252\247\377\177\222\217\377t\211\205\377k\201|\377o\205" \
- "\201\377y\215\211\377\211\233\230\377\251\267\265\377\314\326\324\377" \
- "\354\333\343\342\377\3\273\312\310\377\223\254\247\377\277\316\313\377" \
- "\207\377\377\377\377\2\315\330\327\377\224\255\250\377\203\223\254\247" \
- "\377\2\235\263\257\377\360\363\362\377\206\377\377\377\377\4\370\371" \
- "\371\377\227\257\252\377\226\256\252\377\327\340\336\377\377\333\343" \
- "\342\377\343\333\343\342\377\4\332\342\341\377\235\263\257\377\223\254" \
- "\247\377\354\361\360\377\207\377\377\377\377\7\310\325\322\377\223\254" \
- "\247\377\262\303\300\377\307\323\321\377\231\260\253\377\225\255\251" \
- "\377\365\367\367\377\207\377\377\377\377\3\275\314\311\377\223\254\247" \
- "\377\274\313\311\377\346\333\343\342\377\1\316\327\326\377\205\301\314" \
- "\312\377\1\327\340\337\377\365\333\343\342\377\3\306\323\321\377\223" \
- "\254\247\377\256\300\275\377\207\377\377\377\377\10\374\375\375\377\235" \
- "\264\257\377\224\255\250\377\324\336\334\377\333\343\342\377\266\307" \
- "\304\377\223\254\247\377\312\326\324\377\207\377\377\377\377\3\353\357" \
- "\356\377\223\254\247\377\236\264\260\377\346\333\343\342\377\1\204\227" \
- "\223\377\205Slg\377\1\311\324\322\377\365\333\343\342\377\3\250\274\270" \
- "\377\223\254\247\377\335\345\344\377\207\377\377\377\377\3\332\342\340" \
- "\377\223\254\247\377\254\277\274\377\202\333\343\342\377\4\323\335\334" \
- "\377\224\255\250\377\236\265\260\377\375\376\375\377\207\377\377\377" \
- "\377\3\256\301\275\377\223\254\247\377\310\324\322\377\345\333\343\342" \
- "\377\1i\177{\377\205Slg\377\1\311\324\322\377\364\333\343\342\377\4\321" \
- "\334\332\377\223\254\247\377\240\265\261\377\376\376\376\377\207\377" \
- "\377\377\377\3\254\277\274\377\223\254\247\377\312\326\324\377\203\333" \
- "\343\342\377\3\253\276\272\377\223\254\247\377\334\344\342\377\207\377" \
- "\377\377\377\3\333\343\342\377\223\254\247\377\251\275\271\377\345\333" \
- "\343\342\377\1Vni\377\202Slg\377\4Yrm\377\234\253\251\377\302\315\313" \
- "\377\331\342\341\377\364\333\343\342\377\3\264\305\302\377\223\254\247" \
- "\377\314\330\325\377\207\377\377\377\377\3\353\360\357\377\223\254\247" \
- "\377\241\266\262\377\204\333\343\342\377\3\311\325\323\377\223\254\247" \
- "\377\256\301\275\377\207\377\377\377\377\4\375\375\375\377\236\265\260" \
- "\377\223\254\247\377\322\334\333\377\343\333\343\342\377\1\324\334\333" \
- "\377\203Slg\377\1\261\277\274\377\366\333\343\342\377\4\330\341\340\377" \
- "\230\260\253\377\225\256\251\377\366\370\370\377\207\377\377\377\377" \
- "\3\276\315\312\377\223\254\247\377\277\315\313\377\205\333\343\342\377" \
- "\3\237\265\261\377\223\254\247\377\355\361\360\377\207\377\377\377\377" \
- "\3\312\326\324\377\223\254\247\377\265\306\303\377\343\333\343\342\377" \
- "\1\326\337\336\377\202Slg\377\1]up\377\367\333\343\342\377\3\277\316" \
- "\313\377\223\254\247\377\272\312\307\377\207\377\377\377\377\4\370\371" \
- "\371\377\227\257\252\377\230\257\253\377\330\341\337\377\205\333\343" \
- "\342\377\3\275\314\312\377\223\254\247\377\277\316\313\377\207\377\377" \
- "\377\377\4\365\367\367\377\225\255\251\377\231\260\254\377\331\341\340" \
- "\377\343\333\343\342\377\3`ws\377Slg\377i\200{\377\367\333\343\342\377" \
- "\3\241\267\263\377\223\254\247\377\350\355\354\377\207\377\377\377\377" \
- "\3\317\332\330\377\223\254\247\377\263\305\301\377\206\333\343\342\377" \
- "\4\327\340\337\377\227\257\252\377\230\260\253\377\371\372\372\377\207" \
- "\377\377\377\377\3\271\311\306\377\223\254\247\377\301\317\314\377\343" \
- "\333\343\342\377\4y\215\211\377Slg\377Vni\377\327\340\337\377\220\333" \
- "\343\342\377\1\324\335\334\377\202\301\314\312\377\342\333\343\342\377" \
- "\3\313\327\325\377\223\254\247\377\251\275\271\377\207\377\377\377\377" \
- "\4\376\376\376\377\242\267\263\377\223\254\247\377\321\333\332\377\207" \
- "\333\343\342\377\3\262\303\300\377\223\254\247\377\321\334\332\377\207" \
- "\377\377\377\377\3\346\354\352\377\223\254\247\377\242\270\263\377\343" \
- "\333\343\342\377\1\260\276\273\377\202Slg\377\1\300\313\311\377\220\333" \
- "\343\342\377\1\270\305\303\377\202Slg\377\342\333\343\342\377\3\255\300" \
- "\274\377\223\254\247\377\327\340\336\377\207\377\377\377\377\3\340\347" \
- "\346\377\223\254\247\377\247\273\270\377\210\333\343\342\377\3\320\332" \
- "\331\377\223\254\247\377\244\271\265\377\210\377\377\377\377\3\247\273" \
- "\267\377\223\254\247\377\314\330\326\377\342\333\343\342\377\5\331\342" \
- "\341\377o\205\201\377Slg\377x\215\211\377\331\342\341\377\217\333\343" \
- "\342\377\1\270\305\303\377\202Slg\377\341\333\343\342\377\4\325\336\335" \
- "\377\225\255\250\377\233\262\255\377\374\374\374\377\207\377\377\377" \
- "\377\3\263\305\301\377\223\254\247\377\306\323\321\377\211\333\343\342" \
- "\377\3\246\273\267\377\223\254\247\377\343\351\350\377\207\377\377\377" \
- "\377\3\325\336\334\377\223\254\247\377\256\300\275\377\343\333\343\342" \
- "\377\5\316\330\326\377dzv\377Slg\377\220\241\236\377\332\342\341\377" \
- "\216\333\343\342\377\1\270\305\303\377\202Slg\377\341\333\343\342\377" \
- "\3\270\310\306\377\223\254\247\377\305\323\320\377\207\377\377\377\377" \
- "\4\361\364\363\377\223\254\247\377\234\263\257\377\332\342\341\377\211" \
- "\333\343\342\377\3\304\322\317\377\223\254\247\377\265\306\302\377\207" \
- "\377\377\377\377\4\373\374\373\377\232\261\254\377\225\255\251\377\325" \
- "\337\335\377\343\333\343\342\377\6\316\327\326\377\200\224\220\377Sl" \
- "g\377h~z\377\246\265\262\377\326\336\335\377\214\333\343\342\377\1\270" \
- "\305\303\377\202Slg\377\340\333\343\342\377\4\332\342\341\377\233\262" \
- "\255\377\223\254\247\377\361\364\364\377\207\377\377\377\377\3\304\322" \
- "\317\377\223\254\247\377\272\312\307\377\212\333\343\342\377\4\332\342" \
- "\341\377\233\262\256\377\224\254\247\377\362\365\364\377\207\377\377" \
- "\377\377\3\303\321\316\377\223\254\247\377\272\311\307\377\341\333\343" \
- "\342\377\1\257\274\272\377\203}\220\215\377\1^vq\377\203Slg\377\3^vq" \
- "\377n\203\177\377{\217\213\377\211}\220\215\377\1r\207\203\377\202Sl" \
- "g\377\340\333\343\342\377\3\304\321\317\377\223\254\247\377\264\305\301" \
- "\377\207\377\377\377\377\4\373\374\374\377\232\262\255\377\225\256\251" \
- "\377\326\337\336\377\213\333\343\342\377\3\271\311\306\377\223\254\247" \
- "\377\307\324\321\377\207\377\377\377\377\4\360\363\362\377\223\254\247" \
- "\377\234\263\256\377\332\342\341\377\340\333\343\342\377\1\233\253\250" \
- "\377\226Slg\377\340\333\343\342\377\3\246\272\266\377\223\254\247\377" \
- "\341\350\347\377\207\377\377\377\377\3\326\337\335\377\223\254\247\377" \
- "\256\301\275\377\214\333\343\342\377\4\325\336\335\377\225\255\250\377" \
- "\234\263\256\377\374\375\374\377\207\377\377\377\377\3\262\304\300\377" \
- "\223\254\247\377\305\322\320\377\340\333\343\342\377\1\233\253\250\377" \
- "\226Slg\377\337\333\343\342\377\4\317\332\330\377\223\254\247\377\242" \
- "\270\263\377\376\376\376\377\207\377\377\377\377\3\251\274\270\377\223" \
- "\254\247\377\315\330\326\377\215\333\343\342\377\3\255\300\274\377\223" \
- "\254\247\377\330\341\337\377\207\377\377\377\377\3\337\346\345\377\223" \
- "\254\247\377\247\273\267\377\340\333\343\342\377\1\233\253\250\377\226" \
- "Slg\377\337\333\343\342\377\3\261\303\300\377\223\254\247\377\320\333" \
- "\331\377\207\377\377\377\377\3\347\355\354\377\223\254\247\377\243\270" \
- "\264\377\216\333\343\342\377\3\314\327\325\377\223\254\247\377\252\276" \
- "\272\377\207\377\377\377\377\4\376\376\376\377\241\267\262\377\223\254" \
- "\247\377\320\333\331\377\337\333\343\342\377\3\233\253\250\377Slg\377" \
- "m\202~\377\221\275\310\306\377\1\242\261\256\377\202Slg\377\336\333\343" \
- "\342\377\1\327\340\337\377\202\227\257\252\377\1\370\372\371\377\207" \
- "\377\377\377\377\3\272\312\307\377\223\254\247\377\301\317\315\377\217" \
- "\333\343\342\377\3\241\267\263\377\223\254\247\377\351\356\355\377\207" \
- "\377\377\377\377\3\316\331\327\377\223\254\247\377\263\304\301\377\337" \
- "\333\343\342\377\3\233\253\250\377Slg\377t\211\205\377\221\333\343\342" \
- "\377\1\270\305\303\377\202Slg\377\336\333\343\342\377\3\275\314\311\377" \
- "\223\254\247\377\277\315\312\377\207\377\377\377\377\4\366\370\367\377" \
- "\225\256\251\377\231\260\254\377\331\341\340\377\217\333\343\342\377" \
- "\3\300\316\314\377\223\254\247\377\274\313\310\377\207\377\377\377\377" \
- "\4\367\371\371\377\226\256\252\377\227\257\252\377\330\340\337\377\336" \
- "\333\343\342\377\3\233\253\250\377Slg\377t\211\205\377\221\333\343\342" \
- "\377\1\270\305\303\377\202Slg\377\336\333\343\342\377\3\237\265\260\377" \
- "\223\254\247\377\354\360\357\377\207\377\377\377\377\3\313\327\325\377" \
- "\223\254\247\377\266\306\303\377\220\333\343\342\377\4\331\341\340\377" \
- "\230\260\253\377\226\256\252\377\367\371\370\377\207\377\377\377\377" \
- "\3\274\314\311\377\223\254\247\377\276\315\312\377\336\333\343\342\377" \
- "\3\237\256\253\377[sn\377{\217\213\377\221\333\343\342\377\1\302\315" \
- "\313\377\202x\215\211\377\335\333\343\342\377\3\310\325\323\377\223\254" \
- "\247\377\255\300\274\377\207\377\377\377\377\4\375\376\375\377\237\265" \
- "\261\377\224\254\247\377\323\334\333\377\221\333\343\342\377\3\264\305" \
- "\302\377\223\254\247\377\315\331\326\377\207\377\377\377\377\3\352\357" \
- "\356\377\223\254\247\377\240\266\261\377\377\333\343\342\377\323\333" \
- "\343\342\377\3\252\276\272\377\223\254\247\377\333\343\341\377\207\377" \
- "\377\377\377\3\335\344\343\377\223\254\247\377\252\275\272\377\222\333" \
- "\343\342\377\4\322\334\332\377\223\254\247\377\241\266\262\377\376\376" \
- "\376\377\207\377\377\377\377\3\253\276\273\377\223\254\247\377\312\326" \
- "\324\377\356\333\343\342\377\1\331\342\341\377\341\333\343\342\377\4" \
- "\323\335\333\377\224\254\247\377\235\264\257\377\375\375\375\377\207" \
- "\377\377\377\377\3\257\302\276\377\223\254\247\377\310\324\322\377\207" \
- "\333\343\342\377\4\327\340\337\377\264\305\302\377\260\302\277\377\305" \
- "\321\317\377\210\333\343\342\377\3\251\274\271\377\223\254\247\377\337" \
- "\346\345\377\207\377\377\377\377\3\330\341\337\377\223\254\247\377\253" \
- "\276\273\377\356\333\343\342\377\5\264\301\277\377^uq\377w\214\210\377" \
- "\236\255\253\377\330\341\340\377\335\333\343\342\377\3\266\306\303\377" \
- "\223\254\247\377\311\325\323\377\207\377\377\377\377\3\356\362\361\377" \
- "\223\254\247\377\236\265\260\377\210\333\343\342\377\5\251\275\272\377" \
- "\226\256\251\377\240\266\261\377\222\253\246\377\316\331\330\377\207" \
- "\333\343\342\377\3\307\323\321\377\223\254\247\377\261\303\300\377\207" \
- "\377\377\377\377\4\374\375\374\377\234\263\256\377\224\255\250\377\324" \
- "\335\334\377\334\333\343\342\377\3\241\260\255\377_vr\377z\216\212\377" \
- "\216\333\343\342\377\1\264\301\277\377\203Slg\377\2m\202~\377\312\324" \
- "\323\377\333\333\343\342\377\4\331\341\340\377\231\261\254\377\225\255" \
- "\250\377\364\367\366\377\207\377\377\377\377\3\301\317\314\377\223\254" \
- "\247\377\275\314\311\377\207\333\343\342\377\6\331\342\341\377\225\255" \
- "\250\377\320\333\331\377\374\375\375\377\234\263\256\377\261\303\300" \
- "\377\207\333\343\342\377\4\332\342\341\377\235\264\257\377\223\254\247" \
- "\377\360\363\362\377\207\377\377\377\377\3\307\324\321\377\223\254\247" \
- "\377\267\310\305\377\334\333\343\342\377\3\233\253\250\377Slg\377p\205" \
- "\201\377\216\333\343\342\377\2\270\305\303\377Woj\377\203Slg\377\1~\221" \
- "\216\377\333\333\343\342\377\3\301\317\315\377\223\254\247\377\270\310" \
- "\305\377\207\377\377\377\377\4\371\373\372\377\230\260\253\377\226\256" \
- "\252\377\327\340\336\377\207\333\343\342\377\6\331\340\337\377\223\254" \
- "\247\377\332\342\341\377\377\377\377\377\251\275\271\377\255\300\275" \
- "\377\210\333\343\342\377\3\273\313\310\377\223\254\247\377\303\321\316" \
- "\377\207\377\377\377\377\4\363\365\365\377\224\255\250\377\232\261\255" \
- "\377\331\342\341\377\333\333\343\342\377\3\233\253\250\377Slg\377p\205" \
- "\201\377\217\333\343\342\377\3\332\342\341\377\306\321\317\377\206\230" \
- "\225\377\202Slg\377\1\300\313\311\377\332\333\343\342\377\3\243\270\264" \
- "\377\223\254\247\377\345\353\352\377\207\377\377\377\377\3\322\335\333" \
- "\377\223\254\247\377\261\303\277\377\210\333\343\342\377\6\331\340\337" \
- "\377\223\254\247\377\332\342\341\377\377\377\377\377\251\275\271\377" \
- "\255\300\275\377\210\333\343\342\377\4\326\337\336\377\226\256\251\377" \
- "\232\261\254\377\372\373\373\377\207\377\377\377\377\3\266\307\303\377" \
- "\223\254\247\377\303\320\316\377\333\333\343\342\377\3\233\253\250\377" \
- "Slg\377p\205\201\377\221\333\343\342\377\4\332\342\341\377q\207\202\377" \
- "Slg\377\246\264\262\377\331\333\343\342\377\3\315\330\326\377\223\254" \
- "\247\377\246\273\267\377\210\377\377\377\377\3\245\272\266\377\223\254" \
- "\247\377\317\332\330\377\210\333\343\342\377\6\331\340\337\377\223\254" \
- "\247\377\332\342\341\377\377\377\377\377\251\275\271\377\255\300\275" \
- "\377\211\333\343\342\377\3\260\302\276\377\223\254\247\377\324\336\334" \
- "\377\207\377\377\377\377\3\343\351\350\377\223\254\247\377\244\271\265" \
- "\377\333\333\343\342\377\3\233\253\250\377Slg\377p\205\201\377\222\333" \
- "\343\342\377\3\223\244\240\377Slg\377\223\244\240\377\331\333\343\342" \
- "\377\3\257\301\276\377\223\254\247\377\324\336\334\377\207\377\377\377" \
- "\377\3\344\352\351\377\223\254\247\377\245\272\266\377\211\333\343\342" \
- "\377\6\331\340\337\377\223\254\247\377\332\342\341\377\377\377\377\377" \
- "\251\275\271\377\255\300\275\377\211\333\343\342\377\3\316\331\327\377" \
- "\223\254\247\377\247\273\267\377\210\377\377\377\377\3\244\271\265\377" \
- "\223\254\247\377\316\331\327\377\332\333\343\342\377\3\233\253\250\377" \
- "Slg\377p\205\201\377\222\333\343\342\377\3\213\235\232\377Slg\377\214" \
- "\235\232\377\330\333\343\342\377\10\326\337\336\377\225\256\251\377\231" \
- "\261\254\377\372\373\373\377\354\360\357\377\301\317\315\377\325\337" \
- "\335\377\373\374\374\377\203\377\377\377\377\3\266\307\303\377\223\254" \
- "\247\377\303\321\317\377\211\333\343\342\377\6\331\340\337\377\223\254" \
- "\247\377\332\342\341\377\377\377\377\377\251\275\271\377\255\300\275" \
- "\377\212\333\343\342\377\3\244\271\265\377\223\254\247\377\346\353\352" \
- "\377\203\377\377\377\377\7\356\362\362\377\303\321\316\377\322\334\332" \
- "\377\372\373\373\377\322\334\332\377\223\254\247\377\260\302\277\377" \
- "\332\333\343\342\377\3\233\253\250\377Slg\377p\205\201\377\221\333\343" \
- "\342\377\4\314\325\324\377_wr\377Slg\377\235\254\252\377\306\333\343" \
- "\342\377\1\203\240\232\377\205r\223\214\377\1w\227\221\377\213\253\276" \
- "\273\377\16\240\265\262\377\223\254\247\377\302\320\315\377\266\307\304" \
- "\377\223\254\247\377\233\262\256\377\223\254\247\377\233\262\255\377" \
- "\346\353\352\377\377\377\377\377\363\366\365\377\224\255\250\377\225" \
- "\256\251\377\252\275\272\377\211\253\276\273\377\6\252\275\272\377\223" \
- "\254\247\377\332\342\341\377\377\377\377\377\250\274\270\377\233\262" \
- "\256\377\212\253\276\273\377\3\242\267\264\377\223\254\247\377\270\310" \
- "\305\377\202\377\377\377\377\11\275\315\312\377\223\254\247\377\232\262" \
- "\255\377\224\255\250\377\231\261\254\377\332\344\341\377\230\260\253" \
- "\377\224\254\250\377\251\275\271\377\212\253\276\273\377\1\227\257\253" \
- "\377\205r\223\214\377\2s\224\215\377\261\303\300\377\300\333\343\342" \
- "\377\1\267\304\302\377\206\211\234\230\377\3p\205\201\377Slg\377^vq\377" \
- "\216\211\234\230\377\4\206\231\225\377\177\223\217\377r\207\203\377T" \
- "mh\377\202Slg\377\1\257\274\272\377\306\333\343\342\377\1|\233\224\377" \
- "\221o\221\212\377\15\215\250\242\377\223\254\247\377\335\345\343\377" \
- "\223\254\247\377\317\332\330\377\375\375\375\377\360\363\363\377\243" \
- "\270\264\377\265\306\303\377\377\377\377\377\310\325\322\377\223\254" \
- "\247\377\200\236\227\377\212o\221\212\377\6p\221\212\377\223\254\247" \
- "\377\332\342\341\377\377\377\377\377\247\273\267\377\205\242\234\377" \
- "\213o\221\212\377\15\217\251\244\377\224\255\250\377\365\367\367\377" \
- "\361\364\364\377\224\255\250\377\306\323\321\377\374\375\375\377\363" \
- "\366\365\377\252\276\272\377\255\300\274\377\300\317\314\377\223\254" \
- "\247\377~\234\226\377\221o\221\212\377\1\256\301\276\377\300\333\343" \
- "\342\377\1\237\256\253\377\234Slg\377\2]up\377\321\333\331\377\306\333" \
- "\343\342\377\1|\233\224\377\220o\221\212\377\6y\230\222\377\223\254\247" \
- "\377\261\303\277\377\277\316\313\377\235\264\257\377\376\376\376\377" \
- "\202\377\377\377\377\6\317\332\330\377\224\255\250\377\362\366\365\377" \
- "\234\263\257\377\222\253\246\377r\223\214\377\212o\221\212\377\6p\221" \
- "\212\377\223\254\247\377\332\342\341\377\377\377\377\377\247\273\267" \
- "\377\205\242\234\377\213o\221\212\377\6\201\236\230\377\223\254\247\377" \
- "\312\326\323\377\310\324\322\377\227\257\252\377\372\373\373\377\202" \
- "\377\377\377\377\5\331\342\340\377\223\254\247\377\337\346\345\377\223" \
- "\254\247\377\215\247\242\377\221o\221\212\377\1\256\301\276\377\300\333" \
- "\343\342\377\1\237\256\253\377\234Slg\377\1\246\265\262\377\307\333\343" \
- "\342\377\1|\233\224\377\220o\221\212\377\6\210\244\236\377\223\254\247" \
- "\377\336\346\344\377\320\333\330\377\225\256\251\377\365\367\367\377" \
- "\202\377\377\377\377\5\275\315\312\377\236\264\260\377\327\341\337\377" \
- "\223\254\247\377\206\242\234\377\213o\221\212\377\6p\221\212\377\223" \
- "\254\247\377\332\342\341\377\377\377\377\377\247\273\267\377\205\242" \
- "\234\377\213o\221\212\377\6r\223\214\377\222\253\246\377\236\264\260" \
- "\377\327\340\336\377\223\254\247\377\354\360\357\377\202\377\377\377" \
- "\377\6\310\324\322\377\231\260\253\377\371\373\373\377\257\301\276\377" \
- "\223\254\247\377x\230\221\377\220o\221\212\377\1\256\301\276\377\300" \
- "\333\343\342\377\1\237\256\253\377\232Slg\377\2q\207\202\377\267\304" \
- "\302\377\310\333\343\342\377\1|\233\224\377\217o\221\212\377\16s\224" \
- "\215\377\222\253\246\377\240\266\262\377\376\376\376\377\371\372\372" \
- "\377\230\260\253\377\250\274\270\377\326\337\336\377\301\317\315\377" \
- "\226\256\251\377\310\325\322\377\253\277\273\377\223\254\247\377w\227" \
- "\220\377\213o\221\212\377\6p\221\212\377\223\254\247\377\332\342\341" \
- "\377\377\377\377\377\247\273\267\377\205\242\234\377\214o\221\212\377" \
- "\15\206\242\235\377\223\254\247\377\330\341\340\377\234\263\256\377\245" \
- "\272\265\377\324\336\334\377\305\322\317\377\230\260\253\377\301\317" \
- "\314\377\377\377\377\377\334\344\343\377\223\254\247\377\207\243\236" \
- "\377\220o\221\212\377\1\256\301\276\377\300\333\343\342\377\1\306\321" \
- "\317\377\206\254\271\267\377\3\202\225\221\377Slg\377f|x\377\216\254" \
- "\271\267\377\3\263\300\276\377\304\317\315\377\325\335\334\377\312\333" \
- "\343\342\377\1\255\300\274\377\205\244\271\265\377\1\251\275\271\377" \
- "\211\333\343\342\377\3\263\305\301\377\223\254\247\377\315\330\326\377" \
- "\202\377\377\377\377\10\341\350\346\377\257\301\275\377\223\254\247\377" \
- "\234\263\256\377\306\323\321\377\345\352\351\377\223\254\247\377\241" \
- "\266\262\377\214\333\343\342\377\6\331\340\337\377\223\254\247\377\332" \
- "\342\341\377\377\377\377\377\251\275\271\377\255\300\275\377\214\333" \
- "\343\342\377\16\311\325\323\377\223\254\247\377\256\300\275\377\344\352" \
- "\351\377\262\304\301\377\223\254\247\377\231\261\254\377\303\321\316" \
- "\377\365\367\367\377\377\377\377\377\375\376\375\377\237\265\260\377" \
- "\223\254\247\377\322\334\333\377\210\333\343\342\377\1\310\324\322\377" \
- "\206\244\271\265\377\1\304\322\320\377\307\333\343\342\377\3\233\253" \
- "\250\377Slg\377p\205\201\377\352\333\343\342\377\4\330\341\337\377\230" \
- "\257\253\377\226\256\251\377\366\370\370\377\204\377\377\377\377\6\361" \
- "\364\363\377\374\375\375\377\377\377\377\377\275\314\311\377\223\254" \
- "\247\377\277\315\313\377\214\333\343\342\377\6\331\340\337\377\223\254" \
- "\247\377\332\342\341\377\377\377\377\377\251\275\271\377\255\300\275" \
- "\377\215\333\343\342\377\6\237\265\261\377\223\254\247\377\354\361\360" \
- "\377\377\377\377\377\362\365\365\377\372\373\373\377\204\377\377\377" \
- "\377\3\313\327\324\377\223\254\247\377\265\306\302\377\327\333\343\342" \
- "\377\3\233\253\250\377Slg\377p\205\201\377\352\333\343\342\377\3\277" \
- "\315\313\377\223\254\247\377\274\313\310\377\207\377\377\377\377\4\370" \
- "\371\371\377\227\257\252\377\230\257\253\377\330\341\337\377\214\333" \
- "\343\342\377\6\331\340\337\377\223\254\247\377\332\342\341\377\377\377" \
- "\377\377\251\275\271\377\255\300\275\377\215\333\343\342\377\3\275\314" \
- "\312\377\223\254\247\377\277\316\313\377\207\377\377\377\377\4\366\370" \
- "\367\377\225\256\251\377\230\260\253\377\331\341\340\377\326\333\343" \
- "\342\377\3\253\271\266\377t\211\205\377\213\235\231\377\352\333\343\342" \
- "\377\3\241\266\262\377\223\254\247\377\351\356\355\377\207\377\377\377" \
- "\377\3\317\332\330\377\223\254\247\377\263\305\301\377\215\333\343\342" \
- "\377\6\331\340\337\377\223\254\247\377\332\342\341\377\377\377\377\377" \
- "\251\275\271\377\255\300\275\377\215\333\343\342\377\4\327\340\337\377" \
- "\227\257\252\377\227\257\253\377\371\372\372\377\207\377\377\377\377" \
- "\3\271\311\306\377\223\254\247\377\300\316\314\377\377\333\343\342\377" \
- "\303\333\343\342\377\3\312\326\324\377\223\254\247\377\252\275\271\377" \
- "\207\377\377\377\377\4\376\376\376\377\242\267\263\377\223\254\247\377" \
- "\321\333\332\377\215\333\343\342\377\6\331\340\337\377\223\254\247\377" \
- "\332\342\341\377\377\377\377\377\251\275\271\377\255\300\275\377\216" \
- "\333\343\342\377\3\262\303\300\377\223\254\247\377\320\333\331\377\207" \
- "\377\377\377\377\3\347\354\353\377\223\254\247\377\242\267\263\377\377" \
- "\333\343\342\377\303\333\343\342\377\3\254\277\274\377\223\254\247\377" \
- "\330\341\337\377\207\377\377\377\377\3\340\347\346\377\223\254\247\377" \
- "\247\273\270\377\216\333\343\342\377\6\331\340\337\377\223\254\247\377" \
- "\330\341\337\377\377\377\377\377\250\274\270\377\255\300\275\377\216" \
- "\333\343\342\377\3\320\332\331\377\223\254\247\377\243\271\264\377\210" \
- "\377\377\377\377\3\250\274\270\377\223\254\247\377\314\327\325\377\377" \
- "\333\343\342\377\301\333\343\342\377\4\324\336\334\377\224\255\250\377" \
- "\233\262\256\377\374\374\374\377\207\377\377\377\377\3\263\304\301\377" \
- "\223\254\247\377\306\323\321\377\217\333\343\342\377\5\237\265\261\377" \
- "\252\275\271\377\322\334\332\377\223\254\247\377\275\314\311\377\217" \
- "\333\343\342\377\3\246\273\267\377\223\254\247\377\342\351\347\377\207" \
- "\377\377\377\377\3\325\337\335\377\223\254\247\377\256\300\275\377\343" \
- "\333\343\342\377\6\267\303\301\377\223\244\240\377|\220\214\377\213\235" \
- "\231\377\250\267\264\377\311\323\322\377\327\333\343\342\377\3\270\310" \
- "\305\377\223\254\247\377\306\323\321\377\207\377\377\377\377\4\361\364" \
- "\363\377\223\254\247\377\234\263\257\377\332\342\341\377\217\333\343" \
- "\342\377\1\307\323\321\377\202\223\254\247\377\2\240\265\261\377\332" \
- "\342\341\377\217\333\343\342\377\3\304\322\317\377\223\254\247\377\264" \
- "\306\302\377\207\377\377\377\377\4\373\374\374\377\232\262\255\377\225" \
- "\255\250\377\325\336\335\377\325\333\343\342\377\1\302\315\313\377\204" \
- "\222\243\240\377\1\253\271\267\377\205\333\343\342\377\2\323\334\333" \
- "\377\200\223\220\377\205Slg\377\2Uni\377\247\266\263\377\325\333\343" \
- "\342\377\4\332\342\341\377\233\262\255\377\224\254\247\377\362\365\364" \
- "\377\207\377\377\377\377\3\304\322\317\377\223\254\247\377\272\312\307" \
- "\377\221\333\343\342\377\3\327\337\336\377\326\337\335\377\331\340\337" \
- "\377\220\333\343\342\377\4\332\342\341\377\233\262\256\377\224\254\247" \
- "\377\362\365\364\377\207\377\377\377\377\3\304\322\317\377\223\254\247" \
- "\377\271\311\306\377\325\333\343\342\377\1\211\233\230\377\204Slg\377" \
- "\1\201\224\220\377\205\333\343\342\377\1\200\223\220\377\210Slg\377\1" \
- "\227\247\244\377\324\333\343\342\377\3\303\321\317\377\223\254\247\377" \
- "\265\306\302\377\207\377\377\377\377\4\373\374\374\377\232\261\255\377" \
- "\225\256\251\377\326\337\336\377\245\333\343\342\377\3\271\311\306\377" \
- "\223\254\247\377\306\323\320\377\207\377\377\377\377\4\361\364\363\377" \
- "\223\254\247\377\234\262\256\377\332\342\341\377\323\333\343\342\377" \
- "\2\330\341\340\377]up\377\203Slg\377\2[sn\377\227\247\244\377\204\333" \
- "\343\342\377\1\247\266\263\377\212Slg\377\1\305\317\316\377\323\333\343" \
- "\342\377\3\245\272\266\377\223\254\247\377\342\351\347\377\207\377\377" \
- "\377\377\3\325\337\335\377\223\254\247\377\256\301\275\377\246\333\343" \
- "\342\377\4\325\336\335\377\225\255\250\377\233\262\256\377\374\374\374" \
- "\377\207\377\377\377\377\3\263\304\301\377\223\254\247\377\305\322\320" \
- "\377\323\333\343\342\377\1\265\302\300\377\202Slg\377\3]up\377\263\300" \
- "\275\377\332\342\341\377\205\333\343\342\377\1i\177{\377\203Slg\377\5" \
- "Yrm\377\233\253\250\377\266\302\300\377\246\264\262\377x\214\210\377" \
- "\202Slg\377\1\204\227\223\377\322\333\343\342\377\3\317\332\330\377\223" \
- "\254\247\377\243\270\264\377\210\377\377\377\377\3\250\274\270\377\223" \
- "\254\247\377\315\330\326\377\247\333\343\342\377\3\255\300\274\377\223" \
- "\254\247\377\330\341\337\377\207\377\377\377\377\3\340\347\346\377\223" \
- "\254\247\377\247\273\267\377\323\333\343\342\377\4\212\234\231\377Sl" \
- "g\377Voj\377\307\322\320\377\206\333\343\342\377\1\270\305\303\377\203" \
- "Slg\377\2Vni\377\303\316\314\377\203\333\343\342\377\5\331\342\341\377" \
- "\210\233\227\377Slg\377Umh\377\315\327\325\377\321\333\343\342\377\3" \
- "\261\303\277\377\223\254\247\377\321\333\331\377\207\377\377\377\377" \
- "\3\347\354\353\377\223\254\247\377\243\270\264\377\250\333\343\342\377" \
- "\3\314\327\325\377\223\254\247\377\252\275\271\377\207\377\377\377\377" \
- "\4\376\376\376\377\242\267\263\377\223\254\247\377\320\333\331\377\322" \
- "\333\343\342\377\3u\211\205\377Slg\377\221\242\237\377\207\333\343\342" \
- "\377\1\204\227\223\377\203Slg\377\1\221\243\237\377\205\333\343\342\377" \
- "\4\317\331\327\377Voj\377Slg\377\266\303\301\377\320\333\343\342\377" \
- "\4\327\340\336\377\226\256\252\377\227\257\253\377\371\372\372\377\207" \
- "\377\377\377\377\3\271\311\306\377\223\254\247\377\301\317\315\377\251" \
- "\333\343\342\377\3\241\267\263\377\223\254\247\377\351\356\355\377\207" \
- "\377\377\377\377\3\317\332\330\377\223\254\247\377\262\304\300\377\322" \
- "\333\343\342\377\3dzv\377Slg\377\274\307\306\377\206\333\343\342\377" \
- "\2\331\341\340\377\\to\377\202Slg\377\2Tmh\377\315\327\325\377\206\333" \
- "\343\342\377\3z\216\212\377Slg\377\246\264\262\377\320\333\343\342\377" \
- "\3\274\313\311\377\223\254\247\377\277\316\313\377\207\377\377\377\377" \
- "\4\365\367\367\377\225\255\251\377\231\260\254\377\331\341\340\377\251" \
- "\333\343\342\377\3\300\316\314\377\223\254\247\377\273\313\310\377\207" \
- "\377\377\377\377\1\370\371\371\377\202\227\257\252\377\1\327\340\337" \
- "\377\320\333\343\342\377\4\331\341\340\377Umh\377Slg\377\317\330\327" \
- "\377\206\333\343\342\377\1\271\306\304\377\203Slg\377\1z\216\212\377" \
- "\207\333\343\342\377\3\213\235\231\377Slg\377\225\246\243\377\320\333" \
- "\343\342\377\3\236\265\260\377\223\254\247\377\355\361\360\377\207\377" \
- "\377\377\377\3\313\327\324\377\223\254\247\377\266\306\303\377\252\333" \
- "\343\342\377\4\331\341\340\377\230\260\253\377\226\256\251\377\366\370" \
- "\370\377\207\377\377\377\377\3\275\314\311\377\223\254\247\377\276\315" \
- "\312\377\320\333\343\342\377\1\324\334\333\377\202Slg\377\1\325\336\335" \
- "\377\206\333\343\342\377\1\216\240\235\377\203Slg\377\1\255\272\270\377" \
- "\207\333\343\342\377\3\227\247\244\377Slg\377\210\233\227\377\317\333" \
- "\343\342\377\3\310\324\322\377\223\254\247\377\256\301\275\377\207\377" \
- "\377\377\377\4\375\376\375\377\237\265\260\377\224\254\247\377\323\334" \
- "\333\377\253\333\343\342\377\3\264\305\302\377\223\254\247\377\315\330" \
- "\326\377\207\377\377\377\377\3\353\357\356\377\223\254\247\377\237\265" \
- "\261\377\321\333\343\342\377\3\\to\377Slg\377\310\322\321\377\205\333" \
- "\343\342\377\2\330\341\340\377_vr\377\202Slg\377\2Xpk\377\325\336\335" \
- "\377\207\333\343\342\377\3\214\235\232\377Slg\377\216\237\234\377\317" \
- "\333\343\342\377\3\252\275\271\377\223\254\247\377\333\343\342\377\207" \
- "\377\377\377\377\3\334\344\343\377\223\254\247\377\252\275\272\377\254" \
- "\333\343\342\377\4\322\334\332\377\223\254\247\377\240\266\262\377\376" \
- "\376\376\377\207\377\377\377\377\3\254\277\273\377\223\254\247\377\311" \
- "\325\323\377\320\333\343\342\377\3n\203\177\377Slg\377\257\274\272\377" \
- "\205\333\343\342\377\1\261\277\274\377\203Slg\377\1\200\223\220\377\210" \
- "\333\343\342\377\3{\217\213\377Slg\377\227\247\244\377\316\333\343\342" \
- "\377\4\323\334\333\377\223\254\247\377\236\265\260\377\375\375\375\377" \
- "\207\377\377\377\377\3\257\301\276\377\223\254\247\377\310\324\322\377" \
- "\255\333\343\342\377\3\251\274\271\377\223\254\247\377\336\346\344\377" \
- "\207\377\377\377\377\3\331\342\340\377\223\254\247\377\253\276\273\377" \
- "\320\333\343\342\377\3\201\224\220\377Slg\377v\212\206\377\204\333\343" \
- "\342\377\2\330\340\337\377i\200{\377\203Slg\377\1\260\276\273\377\207" \
- "\333\343\342\377\4\325\335\334\377^uq\377Slg\377\253\271\267\377\316" \
- "\333\343\342\377\3\265\306\303\377\223\254\247\377\312\326\324\377\207" \
- "\377\377\377\377\3\356\361\361\377\223\254\247\377\236\265\260\377\256" \
- "\333\343\342\377\3\307\323\321\377\223\254\247\377\261\303\277\377\207" \
- "\377\377\377\377\4\374\375\375\377\235\263\257\377\224\255\250\377\323" \
- "\335\334\377\317\333\343\342\377\1\263\300\275\377\202Slg\377\5\206\231" \
- "\225\377\314\326\324\377\333\343\342\377\315\327\325\377\177\222\217" \
- "\377\203Slg\377\2czu\377\331\341\340\377\207\333\343\342\377\1\234\253" \
- "\251\377\202Slg\377\1\303\316\314\377\315\333\343\342\377\4\331\341\340" \
- "\377\231\260\254\377\225\255\251\377\365\367\367\377\207\377\377\377" \
- "\377\3\300\317\314\377\223\254\247\377\275\314\311\377\256\333\343\342" \
- "\377\4\332\342\341\377\235\264\257\377\223\254\247\377\357\362\362\377" \
- "\207\377\377\377\377\3\310\325\322\377\223\254\247\377\267\307\304\377" \
- "\320\333\343\342\377\1m\202~\377\203Slg\377\1Xql\377\205Slg\377\1\235" \
- "\254\252\377\207\333\343\342\377\4\241\261\256\377Voj\377Slg\377czu\377" \
- "\316\333\343\342\377\3\301\317\314\377\223\254\247\377\271\311\306\377" \
- "\207\377\377\377\377\4\371\373\372\377\230\260\253\377\226\256\252\377" \
- "\327\340\336\377\257\333\343\342\377\3\273\313\310\377\223\254\247\377" \
- "\302\320\315\377\207\377\377\377\377\4\363\366\366\377\224\255\250\377" \
- "\232\261\254\377\331\341\340\377\317\333\343\342\377\2\265\302\300\377" \
- "Voj\377\207Slg\377\2o\205\201\377\330\340\337\377\204\333\343\342\377" \
- "\3\274\307\306\377\210\233\227\377k\201}\377\203Slg\377\1\221\243\237" \
- "\377\316\333\343\342\377\3\243\270\264\377\223\254\247\377\346\354\352" \
- "\377\207\377\377\377\377\3\322\334\332\377\223\254\247\377\261\303\277" \
- "\377\260\333\343\342\377\4\326\337\336\377\226\256\251\377\231\261\254" \
- "\377\372\373\373\377\207\377\377\377\377\3\267\307\304\377\223\254\247" \
- "\377\302\320\316\377\320\333\343\342\377\2\274\310\306\377_wr\377\205" \
- "Slg\377\2j\200|\377\311\324\322\377\205\333\343\342\377\1\226\247\244" \
- "\377\205Slg\377\1\300\313\311\377\315\333\343\342\377\3\314\330\326\377" \
- "\223\254\247\377\247\273\267\377\210\377\377\377\377\3\244\271\265\377" \
- "\223\254\247\377\317\332\330\377\261\333\343\342\377\3\260\302\276\377" \
- "\223\254\247\377\324\336\334\377\207\377\377\377\377\3\344\352\351\377" \
- "\223\254\247\377\244\271\265\377\321\333\343\342\377\7\316\330\326\377" \
- "\250\266\264\377\214\236\233\377v\213\207\377\206\230\225\377\244\263" \
- "\260\377\330\341\340\377\206\333\343\342\377\1\243\262\257\377\204l\201" \
- "}\377\1x\215\211\377\316\333\343\342\377\3\256\301\275\377\223\254\247" \
- "\377\325\336\334\377\207\377\377\377\377\3\343\351\350\377\223\254\247" \
- "\377\245\272\266\377\262\333\343\342\377\3\316\331\327\377\223\254\247" \
- "\377\246\273\267\377\210\377\377\377\377\3\245\272\266\377\223\254\247" \
- "\377\316\331\327\377\377\333\343\342\377\261\333\343\342\377\4\325\337" \
- "\335\377\225\255\251\377\232\261\254\377\373\374\373\377\207\377\377" \
- "\377\377\3\266\307\303\377\223\254\247\377\303\321\317\377\263\333\343" \
- "\342\377\3\244\271\265\377\223\254\247\377\345\353\352\377\207\377\377" \
- "\377\377\3\322\335\333\377\223\254\247\377\260\302\276\377\377\333\343" \
- "\342\377\261\333\343\342\377\3\272\311\307\377\223\254\247\377\303\321" \
- "\316\377\207\377\377\377\377\4\363\366\365\377\224\255\250\377\232\262" \
- "\255\377\332\342\341\377\263\333\343\342\377\3\302\320\316\377\223\254" \
- "\247\377\270\310\305\377\207\377\377\377\377\4\372\373\373\377\231\260" \
- "\254\377\226\256\251\377\326\337\336\377\377\333\343\342\377\257\333" \
- "\343\342\377\4\332\342\341\377\234\263\256\377\223\254\247\377\360\363" \
- "\362\377\207\377\377\377\377\3\307\324\321\377\223\254\247\377\270\310" \
- "\305\377\264\333\343\342\377\4\331\341\340\377\232\261\254\377\225\255" \
- "\250\377\364\367\366\377\207\377\377\377\377\3\301\317\314\377\223\254" \
- "\247\377\273\313\310\377\314\333\343\342\377\3\277\312\310\377\237\256" \
- "\253\377\254\272\270\377\337\333\343\342\377\3\305\322\320\377\223\254" \
- "\247\377\262\304\300\377\207\377\377\377\377\4\374\375\374\377\234\263" \
- "\256\377\224\255\250\377\324\336\334\377\265\333\343\342\377\3\266\307" \
- "\304\377\223\254\247\377\311\325\323\377\207\377\377\377\377\4\356\362" \
- "\361\377\223\254\247\377\235\264\257\377\332\342\341\377\313\333\343" \
- "\342\377\3\233\253\250\377Slg\377p\205\201\377\337\333\343\342\377\3" \
- "\247\273\267\377\223\254\247\377\337\346\345\377\207\377\377\377\377" \
- "\3\330\341\337\377\223\254\247\377\254\277\274\377\266\333\343\342\377" \
- "\4\323\335\334\377\224\255\250\377\235\264\257\377\375\375\375\377\207" \
- "\377\377\377\377\3\260\302\276\377\223\254\247\377\307\323\321\377\313" \
- "\333\343\342\377\3\233\253\250\377Slg\377p\205\201\377\336\333\343\342" \
- "\377\4\321\333\331\377\223\254\247\377\241\266\262\377\376\376\376\377" \
- "\207\377\377\377\377\3\253\276\273\377\223\254\247\377\312\326\324\377" \
- "\267\333\343\342\377\3\253\276\272\377\223\254\247\377\333\343\341\377" \
- "\207\377\377\377\377\3\335\345\343\377\223\254\247\377\251\274\271\377" \
- "\313\333\343\342\377\3\233\253\250\377Slg\377p\205\201\377\336\333\343" \
- "\342\377\3\263\304\301\377\223\254\247\377\315\331\326\377\207\377\377" \
- "\377\377\3\351\356\355\377\223\254\247\377\241\266\262\377\270\333\343" \
- "\342\377\3\311\325\323\377\223\254\247\377\254\277\273\377\207\377\377" \
- "\377\377\4\375\376\375\377\240\265\261\377\223\254\247\377\321\334\332" \
- "\377\312\333\343\342\377\3\233\253\250\377Slg\377[sn\377\223x\215\211" \
- "\377\5z\216\212\377\202\225\221\377\214\236\233\377\246\265\262\377\310" \
- "\323\321\377\305\333\343\342\377\4\330\340\337\377\227\257\252\377\226" \
- "\256\252\377\367\371\370\377\207\377\377\377\377\3\274\313\310\377\223" \
- "\254\247\377\277\315\313\377\271\333\343\342\377\3\237\265\261\377\223" \
- "\254\247\377\353\360\357\377\207\377\377\377\377\3\314\327\325\377\223" \
- "\254\247\377\264\305\302\377\312\333\343\342\377\1\233\253\250\377\232" \
- "Slg\377\2x\214\210\377\275\311\307\377\303\333\343\342\377\3\276\315" \
- "\312\377\223\254\247\377\274\313\310\377\207\377\377\377\377\4\367\371" \
- "\370\377\226\256\251\377\230\257\253\377\330\341\337\377\271\333\343" \
- "\342\377\3\275\314\312\377\223\254\247\377\276\315\312\377\207\377\377" \
- "\377\377\4\366\370\370\377\225\256\251\377\230\260\253\377\330\341\340" \
- "\377\311\333\343\342\377\1\233\253\250\377\233Slg\377\2Tmh\377\237\256" \
- "\253\377\302\333\343\342\377\3\240\266\262\377\223\254\247\377\351\356" \
- "\355\377\207\377\377\377\377\3\315\330\326\377\223\254\247\377\263\305" \
- "\301\377\272\333\343\342\377\1\327\340\337\377\202\227\257\252\377\1" \
- "\370\371\371\377\207\377\377\377\377\3\272\312\307\377\223\254\247\377" \
- "\300\316\314\377\311\333\343\342\377\1\233\253\250\377\235Slg\377\1\243" \
- "\262\257\377\300\333\343\342\377\3\312\326\324\377\223\254\247\377\252" \
- "\276\272\377\207\377\377\377\377\4\376\376\376\377\240\266\262\377\223" \
- "\254\247\377\321\333\332\377\273\333\343\342\377\3\262\303\300\377\223" \
- "\254\247\377\317\332\330\377\207\377\377\377\377\3\350\355\354\377\223" \
- "\254\247\377\241\267\263\377\311\333\343\342\377\4\321\332\331\377\305" \
- "\320\316\377\305\317\316\377\207\231\226\377\202Slg\377\5j\200|\377\224" \
- "\245\242\377\244\263\260\377\264\300\276\377\302\315\313\377\202\305" \
- "\320\316\377\16\274\307\306\377\254\272\270\377\235\255\252\377\207\232" \
- "\226\377Xql\377Slg\377^vq\377\257\274\272\377\305\320\316\377\304\316" \
- "\315\377\266\303\301\377\247\265\263\377\227\250\245\377s\210\203\377" \
- "\203Slg\377\2Vni\377\304\317\315\377\277\333\343\342\377\3\254\277\273" \
- "\377\223\254\247\377\330\341\337\377\207\377\377\377\377\3\336\346\344" \
- "\377\223\254\247\377\247\273\270\377\274\333\343\342\377\4\320\332\331" \
- "\377\223\254\247\377\242\270\263\377\376\376\376\377\207\377\377\377" \
- "\377\3\251\275\271\377\223\254\247\377\313\327\325\377\311\333\343\342" \
- "\377\5\327\340\337\377y\215\211\377Slg\377q\207\202\377\266\302\300\377" \
- "\213\333\343\342\377\5\321\333\331\377\233\253\250\377Yrm\377Wpk\377" \
- "\255\273\271\377\205\333\343\342\377\2\271\305\303\377r\207\203\377\202" \
- "Slg\377\1\203\226\222\377\276\333\343\342\377\4\324\336\334\377\224\255" \
- "\250\377\234\263\256\377\374\375\374\377\207\377\377\377\377\3\261\303" \
- "\277\377\223\254\247\377\306\323\321\377\275\333\343\342\377\3\246\273" \
- "\267\377\223\254\247\377\340\347\346\377\207\377\377\377\377\3\326\340" \
- "\336\377\223\254\247\377\255\300\274\377\311\333\343\342\377\4\211\234" \
- "\230\377Slg\377n\204\200\377\325\336\335\377\216\333\343\342\377\4\263" \
- "\300\275\377Tlg\377Wpk\377\300\314\312\377\205\333\343\342\377\5\325" \
- "\335\334\377f}x\377Slg\377Umh\377\324\334\333\377\275\333\343\342\377" \
- "\3\267\310\305\377\223\254\247\377\307\324\321\377\207\377\377\377\377" \
- "\4\357\363\362\377\223\254\247\377\234\263\257\377\332\342\341\377\275" \
- "\333\343\342\377\3\304\322\317\377\223\254\247\377\263\304\301\377\207" \
- "\377\377\377\377\4\373\374\374\377\233\262\255\377\225\255\250\377\325" \
- "\336\335\377\307\333\343\342\377\4\275\311\307\377Slg\377\\so\377\316" \
- "\327\326\377\220\333\343\342\377\3\227\250\245\377Slg\377p\206\202\377" \
- "\206\333\343\342\377\4\276\312\310\377Tlg\377Slg\377\266\302\300\377" \
- "\274\333\343\342\377\4\331\342\341\377\232\261\255\377\224\254\247\377" \
- "\362\365\364\377\207\377\377\377\377\3\302\320\315\377\223\254\247\377" \
- "\272\312\307\377\276\333\343\342\377\4\332\342\341\377\233\262\256\377" \
- "\223\254\247\377\361\364\363\377\207\377\377\377\377\3\305\322\320\377" \
- "\223\254\247\377\271\311\306\377\307\333\343\342\377\3\211\233\230\377" \
- "Slg\377|\217\214\377\221\333\343\342\377\1\304\317\315\377\202Slg\377" \
- "\1\305\317\316\377\206\333\343\342\377\3f}x\377Slg\377\235\254\252\377" \
- "\274\333\343\342\377\3\303\320\316\377\223\254\247\377\265\306\302\377" \
- "\207\377\377\377\377\4\372\373\373\377\231\261\254\377\225\255\251\377" \
- "\326\337\336\377\277\333\343\342\377\3\271\311\306\377\223\254\247\377" \
- "\304\322\317\377\207\377\377\377\377\4\361\364\363\377\223\254\247\377" \
- "\233\262\256\377\332\342\341\377\306\333\343\342\377\3e{w\377Slg\377" \
- "\227\250\245\377\221\333\343\342\377\4\331\342\341\377Xql\377Slg\377" \
- "\241\261\256\377\206\333\343\342\377\3}\221\215\377Slg\377\221\242\237" \
- "\377\274\333\343\342\377\3\245\271\265\377\223\254\247\377\343\351\350" \
- "\377\207\377\377\377\377\3\324\336\334\377\223\254\247\377\256\301\275" \
- "\377\300\333\343\342\377\4\325\336\335\377\225\255\250\377\232\262\255" \
- "\377\373\374\374\377\207\377\377\377\377\3\264\305\301\377\223\254\247" \
- "\377\304\321\317\377\305\333\343\342\377\4\332\342\341\377Vni\377Slg" \
- "\377\243\262\257\377\222\333\343\342\377\3czu\377Slg\377\223\244\241" \
- "\377\206\333\343\342\377\3\224\244\241\377Slg\377\210\233\227\377\273" \
- "\333\343\342\377\3\316\331\330\377\223\254\247\377\244\271\264\377\210" \
- "\377\377\377\377\3\246\273\267\377\223\254\247\377\315\330\326\377\301" \
- "\333\343\342\377\4\255\300\274\377\222\253\246\377\315\330\326\377\376" \
- "\376\376\377\206\377\377\377\377\3\341\350\346\377\223\254\247\377\246" \
- "\272\266\377\305\333\343\342\377\1\322\333\332\377\202Slg\377\1\205\230" \
- "\224\377\221\333\343\342\377\1\316\327\326\377\202Slg\377\1\211\234\230" \
- "\377\206\333\343\342\377\3\220\242\236\377Slg\377\222\243\240\377\273" \
- "\333\343\342\377\3\260\302\277\377\223\254\247\377\321\334\332\377\207" \
- "\377\377\377\377\3\345\353\352\377\223\254\247\377\243\270\264\377\302" \
- "\333\343\342\377\16\314\327\325\377\223\254\246\377\223\254\247\377\226" \
- "\256\251\377\244\271\265\377\264\305\302\377\303\321\316\377\323\335" \
- "\333\377\342\351\350\377\361\365\364\377\375\375\375\377\242\270\263" \
- "\377\223\254\247\377\317\332\330\377\304\333\343\342\377\4\332\342\341" \
- "\377Vni\377Slg\377f|x\377\221\333\343\342\377\1\256\274\271\377\202S" \
- "lg\377\1\226\246\243\377\206\333\343\342\377\3\202\225\221\377Slg\377" \
- "\237\257\254\377\272\333\343\342\377\4\327\337\336\377\226\256\251\377" \
- "\230\260\253\377\371\372\372\377\207\377\377\377\377\3\270\310\305\377" \
- "\223\254\247\377\301\317\315\377\303\333\343\342\377\15\232\262\255\377" \
- "\223\254\246\377\325\336\335\377\331\342\340\377\312\326\324\377\273" \
- "\313\310\377\254\277\273\377\235\263\257\377\223\254\247\377\226\256" \
- "\251\377\234\263\256\377\222\254\246\377\256\300\274\377\305\333\343" \
- "\342\377\1i\200{\377\202Slg\377\1\224\244\241\377\217\333\343\342\377" \
- "\2\313\325\323\377czu\377\202Slg\377\1\253\271\266\377\205\333\343\342" \
- "\377\4\331\341\340\377czu\377Slg\377\254\272\270\377\272\333\343\342" \
- "\377\3\274\313\310\377\223\254\247\377\277\316\313\377\207\377\377\377" \
- "\377\4\364\367\366\377\225\255\250\377\231\260\254\377\331\341\340\377" \
- "\303\333\343\342\377\3\275\313\311\377\222\254\246\377\257\301\276\377" \
- "\205\377\377\377\377\3\372\373\373\377\353\360\357\377\327\340\335\377" \
- "\202\224\255\250\377\3\327\340\337\377\331\342\341\377\322\334\333\377" \
- "\302\333\343\342\377\1\226\247\244\377\203Slg\377\2\231\252\247\377\330" \
- "\341\340\377\214\333\343\342\377\2\310\323\321\377f|x\377\202Slg\377" \
- "\2Voj\377\323\334\332\377\205\333\343\342\377\1\253\271\266\377\202S" \
- "lg\377\1\272\306\304\377\272\333\343\342\377\3\236\264\260\377\223\254" \
- "\247\377\355\361\360\377\207\377\377\377\377\3\311\325\323\377\223\254" \
- "\247\377\266\306\303\377\304\333\343\342\377\4\331\341\340\377\224\255" \
- "\250\377\224\254\247\377\366\370\367\377\207\377\377\377\377\5\263\305" \
- "\301\377\222\254\246\377\266\306\302\377\232\262\254\377\240\266\262" \
- "\377\302\333\343\342\377\2\314\325\324\377Xql\377\203Slg\377\4_wr\377" \
- "\221\243\237\377\304\316\315\377\330\341\340\377\206\333\343\342\377" \
- "\4\322\333\332\377\254\271\267\377w\214\210\377Tlg\377\203Slg\377\1\211" \
- "\233\230\377\205\333\343\342\377\5\263\300\276\377Xql\377Slg\377Xql\377" \
- "\326\336\335\377\271\333\343\342\377\3\310\324\322\377\223\254\247\377" \
- "\256\301\275\377\207\377\377\377\377\4\375\375\375\377\235\264\257\377" \
- "\223\254\247\377\323\334\333\377\305\333\343\342\377\3\256\300\276\377" \
- "\223\253\246\377\305\322\320\377\207\377\377\377\377\6\353\360\357\377" \
- "\222\254\247\377\231\261\255\377\241\267\262\377\223\254\247\377\312" \
- "\326\324\377\302\333\343\342\377\1\237\256\253\377\206Slg\377\7Tlg\377" \
- "^vq\377l\202~\377y\215\211\377s\210\203\377e|w\377Xpk\377\206Slg\377" \
- "\2_wr\377\321\333\331\377\203\333\343\342\377\2\255\272\270\377q\207" \
- "\202\377\203Slg\377\1~\222\216\377\272\333\343\342\377\3\251\275\271" \
- "\377\223\254\247\377\334\344\342\377\207\377\377\377\377\3\333\343\341" \
- "\377\223\254\247\377\252\275\271\377\306\333\343\342\377\4\322\334\332" \
- "\377\223\253\246\377\231\260\253\377\375\376\375\377\207\377\377\377" \
- "\377\5\242\267\263\377\222\253\246\377\265\305\302\377\223\254\247\377" \
- "\254\277\273\377\303\333\343\342\377\1\220\242\236\377\221Slg\377\2_" \
- "vr\377\304\316\315\377\204\333\343\342\377\1}\220\215\377\204Slg\377" \
- "\1\251\267\265\377\271\333\343\342\377\4\322\334\333\377\223\254\247" \
- "\377\236\265\260\377\375\376\375\377\207\377\377\377\377\3\255\300\274" \
- "\377\223\254\247\377\310\324\322\377\307\333\343\342\377\3\241\266\263" \
- "\377\223\253\247\377\332\342\341\377\203\377\377\377\377\2\371\372\372" \
- "\377\364\367\366\377\202\377\377\377\377\6\326\340\336\377\222\254\246" \
- "\377\243\270\263\377\230\260\253\377\225\255\250\377\324\336\334\377" \
- "\303\333\343\342\377\2\242\261\256\377Yql\377\216Slg\377\2s\210\204\377" \
- "\310\322\321\377\205\333\343\342\377\1\235\255\252\377\204\201\224\220" \
- "\377\1\321\333\331\377\271\333\343\342\377\3\265\306\302\377\223\254" \
- "\247\377\312\326\324\377\207\377\377\377\377\3\354\360\357\377\223\254" \
- "\247\377\236\265\260\377\310\333\343\342\377\3\306\322\320\377\222\253" \
- "\246\377\244\271\266\377\203\377\377\377\377\2\244\271\264\377\272\312" \
- "\307\377\202\377\377\377\377\6\374\375\375\377\227\257\252\377\223\254" \
- "\246\377\260\303\277\377\223\254\247\377\267\310\305\377\304\333\343" \
- "\342\377\3\313\325\323\377\212\234\231\377Yrm\377\212Slg\377\3n\203\177" \
- "\377\247\266\263\377\332\342\341\377\304\333\343\342\377\4\331\341\340" \
- "\377\230\260\253\377\225\255\251\377\365\367\367\377\207\377\377\377" \
- "\377\3\277\315\312\377\223\254\247\377\275\314\311\377\310\333\343\342" \
- "\377\4\332\342\341\377\227\257\253\377\223\253\246\377\356\361\361\377" \
- "\202\377\377\377\377\3\312\326\324\377\226\256\251\377\367\370\370\377" \
- "\202\377\377\377\377\6\300\316\314\377\223\253\246\377\226\256\250\377" \
- "\223\254\247\377\233\261\255\377\332\342\341\377\305\333\343\342\377" \
- "\13\324\335\334\377\261\277\274\377\224\244\241\377|\217\214\377r\207" \
- "\203\377j\200|\377n\203\177\377v\213\207\377\205\227\224\377\242\261" \
- "\256\377\303\316\314\377\307\333\343\342\377\3\301\317\314\377\223\254" \
- "\247\377\271\311\306\377\207\377\377\377\377\4\370\372\371\377\227\257" \
- "\252\377\226\256\252\377\327\340\336\377\311\333\343\342\377\3\267\310" \
- "\305\377\223\253\246\377\266\307\304\377\202\377\377\377\377\3\365\367" \
- "\367\377\225\256\251\377\315\330\326\377\202\377\377\377\377\6\364\366" \
- "\366\377\223\254\246\377\223\253\247\377\235\263\260\377\223\254\247" \
- "\377\303\321\317\377\377\333\343\342\377\230\333\343\342\377\3\242\267" \
- "\263\377\223\254\247\377\346\354\353\377\207\377\377\377\377\3\320\333" \
- "\331\377\223\254\247\377\261\303\277\377\312\333\343\342\377\4\326\337" \
- "\336\377\223\254\247\377\224\255\250\377\371\373\372\377\202\377\377" \
- "\377\377\3\271\311\306\377\241\266\262\377\376\376\376\377\202\377\377" \
- "\377\377\5\253\277\273\377\223\253\247\377\263\305\302\377\223\254\247" \
- "\377\245\271\265\377\377\333\343\342\377\227\333\343\342\377\3\314\330" \
- "\326\377\223\254\247\377\247\273\267\377\207\377\377\377\377\4\376\376" \
- "\376\377\243\270\264\377\223\254\247\377\317\332\330\377\313\333\343" \
- "\342\377\3\251\274\270\377\222\254\247\377\315\330\325\377\202\377\377" \
- "\377\377\3\346\354\353\377\223\254\247\377\337\346\345\377\202\377\377" \
- "\377\377\2\344\352\350\377\223\254\246\377\202\235\263\257\377\2\223" \
- "\254\247\377\316\331\330\377\377\333\343\342\377\226\333\343\342\377" \
- "\3\256\300\275\377\223\254\247\377\325\337\335\377\207\377\377\377\377" \
- "\3\341\350\347\377\223\254\247\377\245\272\266\377\314\333\343\342\377" \
- "\3\316\331\327\377\222\253\246\377\234\263\256\377\203\377\377\377\377" \
- "\2\247\274\270\377\261\303\300\377\203\377\377\377\377\5\234\263\256" \
- "\377\223\253\246\377\263\305\301\377\223\254\247\377\260\303\277\377" \
- "\322\333\343\342\377\1\304\317\315\377\202\201\224\220\377\277\333\343" \
- "\342\377\4\325\336\335\377\225\255\250\377\232\261\255\377\373\374\373" \
- "\377\207\377\377\377\377\3\264\305\302\377\223\254\247\377\303\321\317" \
- "\377\315\333\343\342\377\3\235\263\260\377\223\253\246\377\342\351\347" \
- "\377\202\377\377\377\377\3\325\336\334\377\223\254\247\377\360\363\363" \
- "\377\202\377\377\377\377\5\315\330\326\377\223\253\246\377\247\274\267" \
- "\377\227\256\251\377\253\276\273\377\322\333\343\342\377\1\270\305\303" \
- "\377\202Slg\377\277\333\343\342\377\3\271\311\306\377\223\254\247\377" \
- "\303\321\316\377\207\377\377\377\377\4\361\364\364\377\224\254\247\377" \
- "\232\262\255\377\332\342\341\377\315\333\343\342\377\3\300\317\315\377" \
- "\223\254\246\377\253\277\272\377\202\377\377\377\377\3\373\374\374\377" \
- "\232\262\255\377\303\321\316\377\202\377\377\377\377\4\372\373\373\377" \
- "\225\255\251\377\224\254\247\377\321\333\332\377\323\333\343\342\377" \
- "\1\270\305\303\377\202Slg\377\276\333\343\342\377\4\332\342\341\377\234" \
- "\263\256\377\223\254\247\377\360\363\363\377\207\377\377\377\377\3\305" \
- "\323\320\377\223\254\247\377\270\310\305\377\316\333\343\342\377\4\331" \
- "\341\340\377\226\255\251\377\223\253\247\377\363\366\365\377\202\377" \
- "\377\377\377\3\304\321\317\377\232\262\255\377\373\374\374\377\202\377" \
- "\377\377\377\3\267\310\304\377\222\253\246\377\270\310\304\377\306\333" \
- "\343\342\377\2\317\331\327\377\301\314\312\377\213\275\310\306\377\1" \
- "\242\261\256\377\202Slg\377\276\333\343\342\377\3\305\322\320\377\223" \
- "\254\247\377\262\304\300\377\207\377\377\377\377\4\374\374\374\377\233" \
- "\262\255\377\224\255\250\377\324\336\334\377\317\333\343\342\377\3\261" \
- "\303\300\377\223\253\246\377\276\315\313\377\202\377\377\377\377\3\360" \
- "\364\363\377\223\254\247\377\325\337\335\377\202\377\377\377\377\4\357" \
- "\362\362\377\222\253\246\377\231\260\253\377\332\342\341\377\301\333" \
- "\343\342\377\4\305\320\316\377\204\227\223\377e|w\377Voj\377\220Slg\377" \
- "\276\333\343\342\377\3\247\273\267\377\223\254\247\377\340\347\345\377" \
- "\207\377\377\377\377\3\327\340\336\377\223\254\247\377\254\277\274\377" \
- "\320\333\343\342\377\4\323\335\334\377\223\253\247\377\226\256\252\377" \
- "\374\375\374\377\202\377\377\377\377\2\262\304\301\377\250\274\270\377" \
- "\202\377\377\377\377\4\354\360\357\377\232\262\255\377\223\253\247\377" \
- "\306\323\321\377\277\333\343\342\377\3\325\335\334\377\202\225\221\377" \
- "Tlg\377\223Slg\377\275\333\343\342\377\4\320\333\331\377\223\254\247" \
- "\377\241\267\262\377\376\376\376\377\207\377\377\377\377\3\251\275\271" \
- "\377\223\254\247\377\312\326\324\377\321\333\343\342\377\3\244\271\264" \
- "\377\223\254\247\377\325\337\335\377\202\377\377\377\377\10\340\347\346" \
- "\377\223\254\247\377\312\327\324\377\255\300\274\377\226\256\251\377" \
- "\255\277\274\377\222\254\247\377\250\274\270\377\277\333\343\342\377" \
- "\1\207\232\226\377\225Slg\377\275\333\343\342\377\3\262\304\300\377\223" \
- "\254\247\377\316\331\327\377\207\377\377\377\377\3\350\355\354\377\223" \
- "\254\247\377\240\266\262\377\322\333\343\342\377\16\311\325\323\377\223" \
- "\254\246\377\241\266\263\377\377\377\377\377\364\367\366\377\310\325" \
- "\322\377\227\257\252\377\234\263\256\377\312\327\324\377\365\370\367" \
- "\377\376\376\376\377\240\266\261\377\223\254\247\377\321\333\332\377" \
- "\275\333\343\342\377\1\257\275\272\377\205Slg\377\4Voj\377axt\377k\201" \
- "|\377t\211\205\377\212x\215\211\377\1o\204\200\377\202Slg\377\274\333" \
- "\343\342\377\4\330\340\337\377\227\257\252\377\226\256\252\377\367\371" \
- "\371\377\207\377\377\377\377\3\273\312\307\377\223\254\247\377\277\315" \
- "\313\377\323\333\343\342\377\7\231\260\254\377\223\253\247\377\260\302" \
- "\276\377\225\256\251\377\257\301\276\377\334\344\343\377\376\376\376" \
- "\377\203\377\377\377\377\3\315\330\326\377\223\254\247\377\264\305\302" \
- "\377\275\333\343\342\377\1\201\225\221\377\203Slg\377\3~\222\216\377" \
- "\261\277\274\377\327\340\337\377\215\333\343\342\377\1\270\305\303\377" \
- "\202Slg\377\274\333\343\342\377\3\276\315\312\377\223\254\247\377\274" \
- "\314\311\377\207\377\377\377\377\4\366\370\370\377\225\256\251\377\230" \
- "\257\253\377\330\341\337\377\323\333\343\342\377\4\273\312\310\377\222" \
- "\254\246\377\244\271\265\377\356\362\361\377\206\377\377\377\377\4\366" \
- "\370\370\377\226\256\251\377\230\257\253\377\330\341\340\377\274\333" \
- "\343\342\377\1i\200{\377\202Slg\377\1\204\226\223\377\220\333\343\342" \
- "\377\1\270\305\303\377\202Slg\377\274\333\343\342\377\3\237\265\261\377" \
- "\223\254\247\377\352\357\356\377\207\377\377\377\377\3\314\330\325\377" \
- "\223\254\247\377\263\304\301\377\324\333\343\342\377\4\327\340\337\377" \
- "\227\257\252\377\226\256\252\377\367\371\371\377\207\377\377\377\377" \
- "\3\273\313\310\377\223\254\247\377\277\316\313\377\273\333\343\342\377" \
- "\2\330\340\337\377Uni\377\202Slg\377\1\321\333\331\377\220\333\343\342" \
- "\377\1\270\305\303\377\202Slg\377\273\333\343\342\377\3\312\326\324\377" \
- "\223\254\247\377\253\276\273\377\207\377\377\377\377\4\376\376\376\377" \
- "\240\265\261\377\223\254\247\377\321\333\332\377\325\333\343\342\377" \
- "\3\262\303\300\377\223\254\247\377\316\331\327\377\207\377\377\377\377" \
- "\3\350\356\355\377\223\254\247\377\241\267\262\377\273\333\343\342\377" \
- "\4\326\337\336\377Tlg\377Slg\377byt\377\221\333\343\342\377\1\330\341" \
- "\340\377\202\322\333\332\377\273\333\343\342\377\3\253\276\273\377\223" \
- "\254\247\377\330\341\337\377\207\377\377\377\377\3\335\345\344\377\223" \
- "\254\247\377\247\273\270\377\326\333\343\342\377\4\320\332\331\377\223" \
- "\254\247\377\241\267\262\377\376\376\376\377\207\377\377\377\377\3\252" \
- "\275\271\377\223\254\247\377\313\326\325\377\273\333\343\342\377\3cz" \
- "u\377Slg\377l\202~\377\316\333\343\342\377\4\323\335\334\377\224\255" \
- "\250\377\234\263\256\377\374\375\374\377\207\377\377\377\377\3\260\302" \
- "\276\377\223\254\247\377\306\323\321\377\327\333\343\342\377\3\246\273" \
- "\267\377\223\254\247\377\340\347\345\377\207\377\377\377\377\3\327\340" \
- "\336\377\223\254\247\377\254\277\274\377\273\333\343\342\377\4\207\231" \
- "\226\377Slg\377Vni\377\327\337\336\377\315\333\343\342\377\3\267\307" \
- "\304\377\223\254\247\377\307\324\321\377\207\377\377\377\377\4\356\362" \
- "\361\377\223\254\247\377\234\263\257\377\332\342\341\377\327\333\343" \
- "\342\377\3\304\322\317\377\223\254\247\377\262\304\300\377\207\377\377" \
- "\377\377\4\374\374\374\377\233\262\256\377\224\255\250\377\325\336\335" \
- "\377\272\333\343\342\377\1\305\317\316\377\202Slg\377\1\271\306\304\377" \
- "\220\333\343\342\377\1\307\322\320\377\202\216\237\234\377\271\333\343" \
- "\342\377\4\331\342\341\377\232\261\255\377\224\255\250\377\363\366\365" \
- "\377\207\377\377\377\377\3\302\320\315\377\223\254\247\377\272\312\307" \
- "\377\330\333\343\342\377\4\332\342\341\377\233\262\256\377\223\254\247" \
- "\377\360\363\363\377\207\377\377\377\377\3\306\323\320\377\223\254\247" \
- "\377\270\310\305\377\273\333\343\342\377\4\232\252\247\377Slg\377d{v" \
- "\377\317\330\327\377\217\333\343\342\377\1\270\305\303\377\202Slg\377" \
- "\271\333\343\342\377\3\303\320\316\377\223\254\247\377\266\307\303\377" \
- "\207\377\377\377\377\4\372\373\373\377\231\260\254\377\225\255\251\377" \
- "\326\337\336\377\331\333\343\342\377\3\271\311\306\377\223\254\247\377" \
- "\303\321\316\377\207\377\377\377\377\4\362\365\364\377\224\254\247\377" \
- "\233\262\255\377\332\342\341\377\273\333\343\342\377\4\226\246\243\377" \
- "Tmh\377l\201}\377\267\303\301\377\216\333\343\342\377\1\270\305\303\377" \
- "\202Slg\377\271\333\343\342\377\3\244\271\265\377\223\254\247\377\343" \
- "\352\350\377\207\377\377\377\377\3\323\335\333\377\223\254\247\377\256" \
- "\301\275\377\332\333\343\342\377\4\325\336\335\377\225\255\250\377\232" \
- "\261\254\377\373\374\373\377\207\377\377\377\377\3\264\306\302\377\223" \
- "\254\247\377\304\321\317\377\271\333\343\342\377\1\317\330\327\377\202" \
- "\301\314\312\377\10\246\265\262\377^vq\377Slg\377k\201}\377\226\247\244" \
- "\377\245\264\261\377\263\300\276\377\277\313\311\377\211\301\314\312" \
- "\377\1\245\264\261\377\202Slg\377\270\333\343\342\377\3\316\331\327\377" \
- "\223\254\247\377\245\271\265\377\210\377\377\377\377\3\246\272\266\377" \
- "\223\254\247\377\315\330\326\377\333\333\343\342\377\3\255\300\274\377" \
- "\223\254\247\377\325\336\334\377\207\377\377\377\377\3\342\350\347\377" \
- "\223\254\247\377\245\272\266\377\271\333\343\342\377\1\233\253\250\377" \
- "\226Slg\377\270\333\343\342\377\3\260\302\276\377\223\254\247\377\322" \
- "\334\332\377\207\377\377\377\377\3\344\352\351\377\223\254\247\377\243" \
- "\270\264\377\334\333\343\342\377\3\314\327\325\377\223\254\247\377\247" \
- "\273\267\377\207\377\377\377\377\4\376\376\376\377\243\270\264\377\223" \
- "\254\247\377\317\332\330\377\270\333\343\342\377\1\233\253\250\377\226" \
- "Slg\377\267\333\343\342\377\4\326\337\336\377\226\256\251\377\230\260" \
- "\253\377\371\373\372\377\207\377\377\377\377\3\267\307\304\377\223\254" \
- "\247\377\301\317\315\377\335\333\343\342\377\3\241\267\263\377\223\254" \
- "\247\377\346\354\353\377\207\377\377\377\377\3\320\333\331\377\223\254" \
- "\247\377\261\303\277\377\270\333\343\342\377\1\233\253\250\377\226Sl" \
- "g\377\267\333\343\342\377\3\273\313\310\377\223\254\247\377\300\317\314" \
- "\377\207\377\377\377\377\4\363\366\366\377\224\255\250\377\231\260\254" \
- "\377\331\341\340\377\335\333\343\342\377\3\300\316\314\377\223\254\247" \
- "\377\271\311\306\377\207\377\377\377\377\4\371\372\372\377\227\257\253" \
- "\377\226\256\252\377\327\340\337\377\267\333\343\342\377\3\233\253\250" \
- "\377Slg\377[sn\377\221x\215\211\377\1o\204\200\377\202Slg\377\266\333" \
- "\343\342\377\4\332\342\341\377\235\264\257\377\223\254\247\377\356\361" \
- "\361\377\207\377\377\377\377\3\310\325\322\377\223\254\247\377\266\306" \
- "\303\377\336\333\343\342\377\4\330\341\340\377\230\260\253\377\225\255" \
- "\251\377\365\367\367\377\207\377\377\377\377\3\277\316\313\377\223\254" \
- "\247\377\275\314\311\377\267\333\343\342\377\3\233\253\250\377Slg\377" \
- "p\205\201\377\221\333\343\342\377\1\270\305\303\377\202Slg\377\266\333" \
- "\343\342\377\3\307\324\322\377\223\254\247\377\257\301\276\377\207\377" \
- "\377\377\377\4\374\375\375\377\235\264\257\377\223\254\247\377\323\334" \
- "\333\377\337\333\343\342\377\3\264\305\302\377\223\254\247\377\312\326" \
- "\324\377\207\377\377\377\377\3\354\361\360\377\223\254\247\377\236\265" \
- "\260\377\267\333\343\342\377\3\233\253\250\377Slg\377p\205\201\377\221" \
- "\333\343\342\377\1\270\305\303\377\202Slg\377\266\333\343\342\377\3\251" \
- "\274\271\377\223\254\247\377\334\344\343\377\207\377\377\377\377\3\332" \
- "\342\340\377\223\254\247\377\252\275\271\377\340\333\343\342\377\4\322" \
- "\334\332\377\223\254\247\377\236\265\260\377\375\375\375\377\207\377" \
- "\377\377\377\3\256\300\275\377\223\254\247\377\310\324\322\377\266\333" \
- "\343\342\377\3\233\253\250\377Slg\377p\205\201\377\221\333\343\342\377" \
- "\1\270\305\303\377\202Slg\377\265\333\343\342\377\4\322\334\332\377\223" \
- "\254\247\377\237\265\260\377\375\376\375\377\207\377\377\377\377\3\254" \
- "\277\273\377\223\254\247\377\310\324\322\377\341\333\343\342\377\3\251" \
- "\274\271\377\223\254\247\377\333\343\342\377\207\377\377\377\377\3\333" \
- "\343\342\377\223\254\247\377\252\275\272\377\266\333\343\342\377\3\277" \
- "\312\310\377\237\256\253\377\254\272\270\377\221\333\343\342\377\1\323" \
- "\334\333\377\202\275\310\306\377\265\333\343\342\377\3\264\305\302\377" \
- "\223\254\247\377\313\327\324\377\207\377\377\377\377\3\353\360\357\377" \
- "\223\254\247\377\236\265\260\377\342\333\343\342\377\3\307\323\321\377" \
- "\223\254\247\377\256\301\275\377\207\377\377\377\377\4\375\375\375\377" \
- "\236\264\260\377\224\254\247\377\323\334\333\377\377\333\343\342\377" \
- "\5\333\343\342\377\331\341\340\377\230\260\253\377\225\256\251\377\366" \
- "\370\367\377\207\377\377\377\377\3\275\314\311\377\223\254\247\377\274" \
- "\313\311\377\342\333\343\342\377\4\332\342\341\377\235\264\257\377\223" \
- "\254\247\377\355\361\360\377\207\377\377\377\377\3\312\326\323\377\223" \
- "\254\247\377\266\306\303\377\377\333\343\342\377\4\333\343\342\377\300" \
- "\316\314\377\223\254\247\377\271\311\306\377\207\377\377\377\377\4\370" \
- "\371\371\377\227\257\252\377\226\256\252\377\327\340\336\377\343\333" \
- "\343\342\377\3\273\313\310\377\223\254\247\377\277\316\313\377\207\377" \
- "\377\377\377\4\364\367\366\377\225\255\250\377\231\260\254\377\331\341" \
- "\340\377\310\333\343\342\377\3\307\322\320\377\305\320\316\377\324\334" \
- "\333\377\264\333\343\342\377\3\241\267\263\377\223\254\247\377\347\354" \
- "\353\377\207\377\377\377\377\3\317\332\330\377\223\254\247\377\261\303" \
- "\277\377\344\333\343\342\377\4\326\337\336\377\226\256\251\377\227\257" \
- "\253\377\371\372\372\377\207\377\377\377\377\3\270\310\305\377\223\254" \
- "\247\377\301\317\315\377\310\333\343\342\377\3_vr\377Slg\377\254\271" \
- "\267\377\263\333\343\342\377\3\314\327\325\377\223\254\247\377\250\274" \
- "\270\377\207\377\377\377\377\4\376\376\376\377\242\270\263\377\223\254" \
- "\247\377\317\332\330\377\345\333\343\342\377\3\260\302\276\377\223\254" \
- "\247\377\321\333\331\377\207\377\377\377\377\3\346\353\352\377\223\254" \
- "\247\377\243\270\264\377\310\333\343\342\377\3_vr\377Slg\377\254\271" \
- "\267\377\263\333\343\342\377\3\255\300\274\377\223\254\247\377\325\337" \
- "\335\377\207\377\377\377\377\3\340\347\346\377\223\254\247\377\245\272" \
- "\266\377\346\333\343\342\377\3\316\331\327\377\223\254\247\377\244\271" \
- "\265\377\210\377\377\377\377\3\247\273\267\377\223\254\247\377\315\330" \
- "\326\377\307\333\343\342\377\3^vq\377Slg\377\254\271\267\377\262\333" \
- "\343\342\377\4\325\336\335\377\225\255\250\377\232\261\255\377\373\374" \
- "\374\377\207\377\377\377\377\3\263\304\301\377\223\254\247\377\303\321" \
- "\317\377\347\333\343\342\377\3\244\271\265\377\223\254\247\377\342\351" \
- "\347\377\207\377\377\377\377\3\324\336\334\377\223\254\247\377\256\301" \
- "\275\377\304\333\343\342\377\3\317\331\327\377\236\255\253\377i\177{" \
- "\377\202Slg\377\1\254\271\267\377\262\333\343\342\377\3\271\311\306\377" \
- "\223\254\247\377\304\322\317\377\207\377\377\377\377\4\361\364\363\377" \
- "\223\254\247\377\226\256\251\377\332\342\341\377\347\333\343\342\377" \
- "\3\302\320\316\377\223\254\247\377\265\306\302\377\202\377\377\377\377" \
- "\3\371\373\372\377\356\361\361\377\375\375\375\377\202\377\377\377\377" \
- "\4\372\373\373\377\232\261\254\377\225\255\251\377\326\337\336\377\300" \
- "\333\343\342\377\4\331\341\340\377\263\300\276\377~\222\216\377Uni\377" \
- "\204Slg\377\1\254\271\267\377\261\333\343\342\377\4\332\342\341\377\233" \
- "\262\256\377\223\254\247\377\361\364\363\377\207\377\377\377\377\1\304" \
- "\322\317\377\202\223\254\247\377\1\312\326\324\377\347\333\343\342\377" \
- "\5\331\341\340\377\232\261\254\377\223\254\247\377\302\320\315\377\244" \
- "\271\265\377\202\223\254\247\377\7\226\256\251\377\251\275\271\377\331" \
- "\342\340\377\377\377\377\377\303\321\316\377\223\254\247\377\272\312" \
- "\307\377\276\333\343\342\377\3\310\322\321\377\224\244\241\377axt\377" \
- "\207Slg\377\1\254\271\267\377\261\333\343\342\377\3\304\322\317\377\223" \
- "\254\247\377\263\304\301\377\207\377\377\377\377\5\373\374\374\377\233" \
- "\262\255\377\225\255\251\377\233\262\256\377\264\305\302\377\350\333" \
- "\343\342\377\1\260\303\277\377\202\224\255\250\377\13\277\315\312\377" \
- "\330\341\337\377\345\353\351\377\322\334\332\377\263\304\301\377\223" \
- "\254\247\377\267\307\304\377\353\357\356\377\223\254\247\377\234\263" \
- "\257\377\332\342\341\377\272\333\343\342\377\3\326\336\335\377\251\267" \
- "\265\377t\211\205\377\212Slg\377\1\254\271\267\377\261\333\343\342\377" \
- "\3\246\272\266\377\223\254\247\377\340\347\346\377\207\377\377\377\377" \
- "\5\326\337\335\377\223\254\247\377\271\311\306\377\262\304\300\377\246" \
- "\272\266\377\347\333\343\342\377\4\331\341\340\377\236\264\260\377\240" \
- "\266\261\377\351\356\355\377\205\377\377\377\377\6\330\341\337\377\226" \
- "\256\252\377\275\314\311\377\261\303\300\377\223\254\247\377\306\323" \
- "\320\377\270\333\343\342\377\3\276\312\310\377\211\234\230\377[sn\377" \
- "\211Slg\377\4Voj\377Umh\377Slg\377\254\271\267\377\260\333\343\342\377" \
- "\4\320\332\331\377\223\254\247\377\242\267\263\377\376\376\376\377\207" \
- "\377\377\377\377\5\250\274\270\377\223\254\247\377\346\354\353\377\272" \
- "\312\307\377\242\267\263\377\347\333\343\342\377\3\265\306\302\377\225" \
- "\255\250\377\352\357\356\377\207\377\377\377\377\5\322\334\332\377\223" \
- "\254\247\377\311\325\323\377\223\254\247\377\247\273\270\377\265\333" \
- "\343\342\377\3\320\332\330\377\237\256\253\377k\201|\377\212Slg\377\6" \
- "n\204\200\377\242\261\256\377\321\333\331\377_vr\377Slg\377\254\271\267" \
- "\377\260\333\343\342\377\3\262\303\300\377\223\254\247\377\317\332\330" \
- "\377\204\377\377\377\377\11\367\371\370\377\352\357\356\377\377\377\377" \
- "\377\347\355\354\377\223\254\247\377\247\273\267\377\377\377\377\377" \
- "\244\271\265\377\257\301\276\377\347\333\343\342\377\2\234\263\256\377" \
- "\303\321\316\377\211\377\377\377\377\5\250\274\270\377\267\307\304\377" \
- "\241\266\262\377\223\254\247\377\321\333\332\377\261\333\343\342\377" \
- "\4\331\342\341\377\264\301\277\377\200\223\220\377Vni\377\211Slg\377" \
- "\3^vq\377\220\241\236\377\303\316\314\377\203\333\343\342\377\3_vr\377" \
- "Slg\377\254\271\267\377\257\333\343\342\377\1\327\340\337\377\202\227" \
- "\257\252\377\1\370\371\371\377\203\377\377\377\377\12\352\357\356\377" \
- "\226\256\252\377\223\254\247\377\277\316\313\377\271\311\306\377\223" \
- "\254\247\377\325\337\335\377\351\356\355\377\223\254\247\377\277\316" \
- "\313\377\346\333\343\342\377\3\325\336\335\377\223\254\247\377\335\344" \
- "\343\377\211\377\377\377\377\5\302\320\315\377\241\267\262\377\315\331" \
- "\326\377\223\254\247\377\263\304\301\377\241\333\343\342\377\6\274\307" \
- "\306\377\217\241\235\377t\211\205\377|\217\214\377\242\261\256\377\310" \
- "\322\321\377\210\333\343\342\377\3\311\323\322\377\225\246\243\377by" \
- "t\377\213Slg\377\2\245\264\261\377\330\341\340\377\205\333\343\342\377" \
- "\3_vr\377Slg\377\254\271\267\377\257\333\343\342\377\3\314\327\325\377" \
- "\223\254\247\377\264\305\301\377\204\377\377\377\377\12\307\324\322\377" \
- "\226\256\252\377\261\303\300\377\230\260\253\377\224\255\250\377\232" \
- "\261\255\377\367\371\370\377\244\271\265\377\241\266\262\377\331\341" \
- "\340\377\346\333\343\342\377\3\312\326\324\377\223\254\247\377\353\360" \
- "\357\377\211\377\377\377\377\5\320\333\331\377\223\254\247\377\361\364" \
- "\364\377\223\254\247\377\243\270\264\377\237\333\343\342\377\3\327\340" \
- "\337\377\217\241\235\377Tlg\377\205Slg\377\1\236\255\253\377\204\333" \
- "\343\342\377\3\326\337\336\377\253\271\266\377v\212\206\377\212Slg\377" \
- "\2g}y\377\222\243\240\377\202Slg\377\1\305\320\316\377\206\333\343\342" \
- "\377\3\264\301\277\377\260\275\273\377\314\326\324\377\257\333\343\342" \
- "\377\3\316\331\330\377\223\254\247\377\263\304\301\377\204\377\377\377" \
- "\377\11\351\356\355\377\226\256\251\377\223\254\247\377\251\275\271\377" \
- "\223\254\247\377\272\312\307\377\244\271\265\377\225\255\251\377\316" \
- "\331\327\377\347\333\343\342\377\3\326\337\336\377\223\254\247\377\332" \
- "\343\341\377\211\377\377\377\377\5\277\316\313\377\243\270\264\377\363" \
- "\365\365\377\223\254\247\377\246\272\266\377\237\333\343\342\377\1\217" \
- "\241\235\377\203Slg\377\2e{w\377czu\377\203Slg\377\5\254\271\267\377" \
- "\333\343\342\377\300\313\311\377\213\235\232\377[sn\377\211Slg\377\5" \
- "Yql\377\206\231\225\377\273\307\305\377\333\343\342\377\316\327\326\377" \
- "\202Slg\377\1\305\320\316\377\270\333\343\342\377\3\321\334\332\377\223" \
- "\254\247\377\256\301\275\377\205\377\377\377\377\3\366\370\367\377\346" \
- "\354\352\377\237\265\260\377\202\223\254\247\377\2\240\266\262\377\315" \
- "\330\327\377\351\333\343\342\377\2\235\264\257\377\275\314\311\377\210" \
- "\377\377\377\377\6\375\375\375\377\243\271\264\377\271\311\306\377\356" \
- "\362\361\377\223\254\247\377\251\275\271\377\236\333\343\342\377\5\274" \
- "\307\306\377Tlg\377Slg\377e{w\377\300\313\311\377\202\333\343\342\377" \
- "\5\274\307\306\377axt\377Slg\377Vni\377k\201}\377\212Slg\377\3r\207\203" \
- "\377\246\265\262\377\324\335\334\377\203\333\343\342\377\1\316\327\326" \
- "\377\202Slg\377\1\305\320\316\377\270\333\343\342\377\3\324\336\334\377" \
- "\223\254\247\377\251\275\271\377\206\377\377\377\377\5\335\344\343\377" \
- "\223\254\247\377\233\262\255\377\300\316\314\377\331\341\340\377\352" \
- "\333\343\342\377\3\272\312\307\377\223\254\247\377\343\351\350\377\207" \
- "\377\377\377\377\6\310\325\322\377\224\254\250\377\350\355\354\377\351" \
- "\356\355\377\223\254\247\377\254\277\273\377\236\333\343\342\377\1\217" \
- "\241\235\377\202Slg\377\1\300\313\311\377\204\333\343\342\377\1\270\305" \
- "\303\377\212Slg\377\3_wr\377\222\243\240\377\306\320\317\377\206\333" \
- "\343\342\377\1\316\327\326\377\202Slg\377\1\305\320\316\377\270\333\343" \
- "\342\377\3\327\340\337\377\223\254\247\377\245\272\266\377\206\377\377" \
- "\377\377\3\257\301\276\377\223\254\247\377\306\323\320\377\354\333\343" \
- "\342\377\4\332\342\341\377\244\271\265\377\233\262\255\377\335\345\343" \
- "\377\204\377\377\377\377\10\375\376\375\377\312\326\324\377\224\254\250" \
- "\377\307\324\321\377\377\377\377\377\344\352\351\377\223\254\247\377" \
- "\257\301\276\377\236\333\343\342\377\3t\211\205\377Slg\377g~y\377\206" \
- "\333\343\342\377\1\\to\377\206Slg\377\4Uni\377}\221\215\377\261\277\274" \
- "\377\330\341\340\377\210\333\343\342\377\1\316\327\326\377\202Slg\377" \
- "\1\305\320\316\377\270\333\343\342\377\3\332\342\341\377\223\254\247" \
- "\377\240\266\262\377\205\377\377\377\377\4\356\361\361\377\223\254\247" \
- "\377\234\263\257\377\332\342\341\377\355\333\343\342\377\17\324\336\334" \
- "\377\250\273\270\377\223\254\247\377\261\303\277\377\312\326\324\377" \
- "\327\340\336\377\304\322\317\377\246\273\267\377\223\254\247\377\304" \
- "\322\317\377\375\375\375\377\377\377\377\377\340\347\345\377\223\254" \
- "\247\377\262\303\300\377\236\333\343\342\377\3v\212\206\377Slg\377f|" \
- "x\377\206\333\343\342\377\1[sn\377\204Slg\377\3i\177{\377\235\255\252" \
- "\377\317\330\327\377\213\333\343\342\377\1\316\327\326\377\202Slg\377" \
- "\1\305\320\316\377\271\333\343\342\377\2\225\255\251\377\234\263\256" \
- "\377\205\377\377\377\377\3\300\317\314\377\223\254\247\377\272\312\307" \
- "\377\360\333\343\342\377\7\277\316\313\377\245\272\266\377\227\257\252" \
- "\377\223\254\247\377\225\255\250\377\257\301\276\377\346\353\352\377" \
- "\203\377\377\377\377\3\333\343\342\377\223\254\247\377\265\306\302\377" \
- "\236\333\343\342\377\1\220\242\236\377\202Slg\377\1\277\312\310\377\204" \
- "\333\343\342\377\1\266\302\300\377\205Slg\377\3z\216\212\377\257\274" \
- "\272\377\330\340\337\377\213\333\343\342\377\1\316\327\326\377\202Sl" \
- "g\377\1\305\320\316\377\271\333\343\342\377\2\230\260\253\377\230\257" \
- "\253\377\204\377\377\377\377\4\371\373\372\377\230\260\253\377\225\255" \
- "\251\377\326\337\336\377\362\333\343\342\377\4\332\342\341\377\266\307" \
- "\304\377\223\254\247\377\302\320\315\377\204\377\377\377\377\3\326\337" \
- "\335\377\223\254\247\377\267\310\305\377\236\333\343\342\377\14\276\311" \
- "\307\377Tmh\377Slg\377d{v\377\274\307\306\377\333\343\342\377\321\332" \
- "\331\377\235\255\252\377^vq\377Slg\377Vni\377k\201}\377\204Slg\377\3" \
- "^uq\377\217\241\235\377\304\317\315\377\211\333\343\342\377\1\316\327" \
- "\326\377\202Slg\377\1\305\320\316\377\271\333\343\342\377\2\233\262\255" \
- "\377\223\254\247\377\204\377\377\377\377\3\322\334\332\377\223\254\247" \
- "\377\256\301\275\377\364\333\343\342\377\4\325\336\335\377\225\255\250" \
- "\377\231\261\254\377\372\373\373\377\203\377\377\377\377\3\321\334\332" \
- "\377\223\254\247\377\272\312\307\377\237\333\343\342\377\1\223\244\240" \
- "\377\203Slg\377\2_vr\377Wpk\377\203Slg\377\5\254\271\267\377\333\343" \
- "\342\377\300\314\312\377\214\236\233\377\\so\377\204Slg\377\3p\205\201" \
- "\377\245\263\261\377\324\334\333\377\206\333\343\342\377\1\316\327\326" \
- "\377\202Slg\377\1\305\320\316\377\271\333\343\342\377\3\236\264\260\377" \
- "\223\254\247\377\373\374\374\377\203\377\377\377\377\3\245\271\265\377" \
- "\223\254\247\377\315\330\326\377\365\333\343\342\377\3\255\300\274\377" \
- "\223\254\247\377\324\336\334\377\203\377\377\377\377\3\315\330\326\377" \
- "\223\254\247\377\275\314\312\377\237\333\343\342\377\3\330\340\337\377" \
- "\225\246\243\377Umh\377\205Slg\377\1\236\255\253\377\204\333\343\342" \
- "\377\4\327\337\336\377\254\271\267\377w\214\210\377Tlg\377\203Slg\377" \
- "\3Xpk\377\205\230\224\377\272\306\304\377\204\333\343\342\377\1\316\327" \
- "\326\377\202Slg\377\1\305\320\316\377\271\333\343\342\377\3\241\266\262" \
- "\377\223\254\247\377\366\370\370\377\202\377\377\377\377\3\343\352\350" \
- "\377\223\254\247\377\243\270\264\377\366\333\343\342\377\3\314\327\325" \
- "\377\223\254\247\377\246\273\267\377\203\377\377\377\377\3\307\324\322" \
- "\377\223\254\247\377\300\316\314\377\241\333\343\342\377\6\302\315\313" \
- "\377\230\250\245\377}\220\215\377\203\226\222\377\246\265\262\377\311" \
- "\324\322\377\210\333\343\342\377\3\313\325\323\377\227\250\245\377d{" \
- "v\377\204Slg\377\5f}x\377\233\253\250\377\315\327\325\377\333\343\342" \
- "\377\316\327\326\377\202Slg\377\1\305\320\316\377\271\333\343\342\377" \
- "\3\244\271\265\377\223\254\247\377\362\365\364\377\202\377\377\377\377" \
- "\3\266\307\303\377\223\254\247\377\301\317\315\377\367\333\343\342\377" \
- "\3\241\267\263\377\223\254\247\377\345\353\352\377\202\377\377\377\377" \
- "\3\303\321\316\377\223\254\247\377\303\321\317\377\261\333\343\342\377" \
- "\4\332\342\341\377\267\304\302\377\203\226\222\377Wpk\377\203Slg\377" \
- "\3Tmh\377|\217\214\377\245\264\261\377\202Slg\377\1\305\320\316\377\206" \
- "\333\343\342\377\3\317\331\327\377\316\327\326\377\326\337\336\377\260" \
- "\333\343\342\377\10\247\273\267\377\223\254\247\377\301\317\314\377\333" \
- "\343\341\377\344\352\351\377\224\255\250\377\231\260\254\377\331\341" \
- "\340\377\367\333\343\342\377\10\300\316\314\377\223\254\247\377\265\306" \
- "\303\377\345\353\351\377\322\335\333\377\250\274\270\377\223\254\247" \
- "\377\306\323\321\377\264\333\343\342\377\3\323\334\332\377\243\262\257" \
- "\377o\204\200\377\206Slg\377\1\267\304\302\377\206\333\343\342\377\3" \
- "_vr\377Slg\377\254\271\267\377\260\333\343\342\377\1\252\275\271\377" \
- "\205\223\254\247\377\1\266\306\303\377\370\333\343\342\377\2\330\341" \
- "\340\377\230\260\253\377\205\223\254\247\377\1\311\325\323\377\267\333" \
- "\343\342\377\3\303\316\314\377\217\240\235\377]up\377\204Slg\377\3r\207" \
- "\203\377\246\265\262\377\324\335\334\377\203\333\343\342\377\3_vr\377" \
- "Slg\377\254\271\267\377\260\333\343\342\377\7\327\337\336\377\220\243" \
- "\237\377k\204\177\377u\216\211\377\205\235\230\377\235\263\257\377\323" \
- "\334\333\377\371\333\343\342\377\7\267\307\304\377\233\261\255\377~\227" \
- "\222\377q\212\205\377m\206\201\377\273\310\306\377\332\342\341\377\271" \
- "\333\343\342\377\4\330\340\337\377\256\274\271\377z\216\212\377Tmh\377" \
- "\203Slg\377\7Yql\377\206\231\225\377\273\307\305\377\333\343\342\377" \
- "_vr\377Slg\377\254\271\267\377\261\333\343\342\377\1x\214\210\377\202" \
- "Slg\377\1~\221\216\377\374\333\343\342\377\5\325\335\334\377axt\377S" \
- "lg\377Tmh\377\251\270\265\377\275\333\343\342\377\3\315\326\325\377\232" \
- "\252\247\377f}x\377\204Slg\377\4g}y\377Woj\377Slg\377\254\271\267\377" \
- "\261\333\343\342\377\1}\220\215\377\202Slg\377\1\240\257\254\377\375" \
- "\333\343\342\377\1f}x\377\202Slg\377\1\222\243\240\377\300\333\343\342" \
- "\377\3\272\306\304\377\206\230\225\377Xql\377\204Slg\377\1\254\271\267" \
- "\377\261\333\343\342\377\4\216\237\234\377Slg\377_wr\377\326\336\335" \
- "\377\375\333\343\342\377\4r\207\203\377Slg\377axt\377\317\330\327\377" \
- "\302\333\343\342\377\3\324\334\333\377\246\264\262\377q\207\202\377\202" \
- "Slg\377\1\254\271\267\377\261\333\343\342\377\3\237\257\254\377Slg\377" \
- "\240\257\254\377\376\333\343\342\377\3\216\240\235\377Wpk\377\246\264" \
- "\262\377\306\333\343\342\377\3_vr\377Slg\377\254\271\267\377\261\333" \
- "\343\342\377\3\260\276\273\377axt\377\326\337\336\377\376\333\343\342" \
- "\377\2\265\302\277\377v\213\207\377\307\333\343\342\377\3_vr\377Slg\377" \
- "\254\271\267\377\261\333\343\342\377\2\302\315\313\377\242\261\256\377" \
- "\377\333\343\342\377\311\333\343\342\377\3z\216\212\377p\205\201\377" \
- "\266\303\301\377\261\333\343\342\377\2\326\336\335\377\327\340\337\377" \
- "\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333" \
- "\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342" \
- "\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377" \
- "\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343" \
- "\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377" \
- "\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333" \
- "\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342" \
- "\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377" \
- "\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343" \
- "\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377" \
- "\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333" \
- "\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342" \
- "\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377" \
- "\333\343\342\377\344\333\343\342\377")
+ "\307\354\354\341\377\2\342\345\333\377\344\346\334\377\377\354\354\341" \
+ "\377\221\354\354\341\377\3\242\256\246\377t\210\201\377\222\241\231\377" \
+ "\315\354\354\341\377\4\325\333\322\377\264\304\275\377\245\271\263\377" \
+ "\230\257\252\377\202\223\254\247\377\4\231\261\253\377\250\273\264\377" \
+ "\266\305\276\377\333\340\326\377\377\354\354\341\377\215\354\354\341" \
+ "\377\3\215\234\225\377Slg\377y\214\205\377\315\354\354\341\377\1\275" \
+ "\312\302\377\203\223\254\247\377\2\237\265\261\377\235\264\257\377\203" \
+ "\223\254\247\377\1\310\322\311\377\377\354\354\341\377\215\354\354\341" \
+ "\377\3\215\234\225\377Slg\377y\214\205\377\315\354\354\341\377\4\275" \
+ "\312\302\377\223\254\247\377\304\321\317\377\370\372\371\377\202\377" \
+ "\377\377\377\4\370\371\371\377\267\307\304\377\223\254\247\377\310\322" \
+ "\311\377\377\354\354\341\377\1\351\351\337\377\214\347\350\335\377\3" \
+ "\213\233\223\377Slg\377y\214\205\377\315\354\354\341\377\3\275\312\302" \
+ "\377\223\254\247\377\320\333\330\377\204\377\377\377\377\3\277\316\313" \
+ "\377\223\254\247\377\310\322\311\377\371\354\354\341\377\6\353\353\341" \
+ "\377\307\315\304\377\226\244\234\377x\213\204\377`wr\377Woj\377\217S" \
+ "lg\377\1y\214\205\377\315\354\354\341\377\3\275\312\302\377\223\254\247" \
+ "\377\320\333\330\377\204\377\377\377\377\3\277\316\313\377\223\254\247" \
+ "\377\310\322\311\377\370\354\354\341\377\2\320\324\313\377r\206\200\377" \
+ "\224Slg\377\1y\214\205\377\315\354\354\341\377\3\275\312\302\377\223" \
+ "\254\247\377\320\333\330\377\204\377\377\377\377\3\277\316\313\377\223" \
+ "\254\247\377\310\322\311\377\367\354\354\341\377\2\314\321\307\377[s" \
+ "m\377\225Slg\377\1y\214\205\377\315\354\354\341\377\3\275\312\302\377" \
+ "\223\254\247\377\320\333\330\377\204\377\377\377\377\3\277\316\313\377" \
+ "\223\254\247\377\310\322\311\377\366\354\354\341\377\2\351\351\337\377" \
+ "i~x\377\226Slg\377\1y\214\205\377\315\354\354\341\377\3\275\312\302\377" \
+ "\223\254\247\377\320\333\330\377\204\377\377\377\377\3\277\316\313\377" \
+ "\223\254\247\377\310\322\311\377\366\354\354\341\377\1\270\300\267\377" \
+ "\204Slg\377\5`wr\377\231\246\236\377\267\277\266\377\304\313\301\377" \
+ "\322\326\314\377\214\331\334\322\377\3\205\226\217\377Slg\377y\214\205" \
+ "\377\315\354\354\341\377\3\275\312\302\377\223\254\247\377\320\333\330" \
+ "\377\204\377\377\377\377\3\277\316\313\377\223\254\247\377\310\322\311" \
+ "\377\366\354\354\341\377\1\215\234\225\377\203Slg\377\2\225\243\234\377" \
+ "\351\351\337\377\220\354\354\341\377\3\215\234\225\377Slg\377y\214\205" \
+ "\377\315\354\354\341\377\3\275\312\302\377\223\254\247\377\320\333\330" \
+ "\377\204\377\377\377\377\3\277\316\313\377\223\254\247\377\310\322\311" \
+ "\377\366\354\354\341\377\1x\213\205\377\202Slg\377\2y\214\205\377\353" \
+ "\353\340\377\221\354\354\341\377\3\215\234\225\377Slg\377y\214\205\377" \
+ "\315\354\354\341\377\3\275\312\302\377\223\254\247\377\320\333\330\377" \
+ "\204\377\377\377\377\3\277\316\313\377\223\254\247\377\310\322\311\377" \
+ "\366\354\354\341\377\1p\204~\377\202Slg\377\1\250\263\252\377\222\354" \
+ "\354\341\377\3\250\263\252\377~\220\211\377\231\247\237\377\315\354\354" \
+ "\341\377\3\275\312\302\377\223\254\247\377\320\333\330\377\204\377\377" \
+ "\377\377\3\277\316\313\377\223\254\247\377\310\322\311\377\366\354\354" \
+ "\341\377\1\204\225\216\377\202Slg\377\1\301\310\277\377\342\354\354\341" \
+ "\377\3\275\312\302\377\223\254\247\377\320\333\330\377\204\377\377\377" \
+ "\377\3\277\316\313\377\223\254\247\377\310\322\311\377\366\354\354\341" \
+ "\377\1\234\251\241\377\202Slg\377\1\262\274\263\377\342\354\354\341\377" \
+ "\3\275\312\302\377\223\254\247\377\320\333\330\377\204\377\377\377\377" \
+ "\3\277\316\313\377\223\254\247\377\310\322\311\377\366\354\354\341\377" \
+ "\4\326\332\320\377Unh\377Slg\377\221\240\231\377\222\354\354\341\377" \
+ "\3\341\342\330\377\331\334\322\377\336\340\326\377\315\354\354\341\377" \
+ "\3\275\312\302\377\223\254\247\377\320\333\330\377\204\377\377\377\377" \
+ "\3\277\316\313\377\223\254\247\377\310\322\311\377\367\354\354\341\377" \
+ "\4\215\234\225\377Slg\377cys\377\336\340\326\377\221\354\354\341\377" \
+ "\3\215\234\225\377Slg\377y\214\205\377\315\354\354\341\377\3\275\312" \
+ "\302\377\223\254\247\377\320\333\330\377\204\377\377\377\377\3\277\316" \
+ "\313\377\223\254\247\377\310\322\311\377\367\354\354\341\377\5\346\347" \
+ "\334\377y\214\205\377Slg\377q\205\177\377\345\346\333\377\220\354\354" \
+ "\341\377\3\215\234\225\377Slg\377y\214\205\377\315\354\354\341\377\3" \
+ "\275\312\302\377\223\254\247\377\320\333\330\377\204\377\377\377\377" \
+ "\3\277\316\313\377\223\254\247\377\310\322\311\377\370\354\354\341\377" \
+ "\6\345\346\334\377\206\227\220\377Slg\377e{u\377\243\257\247\377\337" \
+ "\341\326\377\216\354\354\341\377\3\215\234\225\377Slg\377y\214\205\377" \
+ "\315\354\354\341\377\3\275\312\302\377\223\254\247\377\320\333\330\377" \
+ "\204\377\377\377\377\3\277\316\313\377\223\254\247\377\310\322\311\377" \
+ "\372\354\354\341\377\10\303\312\300\377dzt\377Slg\377Voi\377k\200z\377" \
+ "|\216\210\377\214\234\224\377\231\247\237\377\212\232\250\240\377\3n" \
+ "\203}\377Slg\377y\214\205\377\315\354\354\341\377\3\275\312\302\377\223" \
+ "\254\247\377\320\333\330\377\204\377\377\377\377\3\277\316\313\377\223" \
+ "\254\247\377\310\322\311\377\371\354\354\341\377\2\273\303\272\377y\214" \
+ "\205\377\223Slg\377\1y\214\205\377\315\354\354\341\377\3\275\312\302" \
+ "\377\223\254\247\377\320\333\330\377\204\377\377\377\377\3\277\316\313" \
+ "\377\223\254\247\377\310\322\311\377\370\354\354\341\377\1\232\247\237" \
+ "\377\225Slg\377\1y\214\205\377\315\354\354\341\377\3\275\312\302\377" \
+ "\223\254\247\377\320\333\330\377\204\377\377\377\377\3\277\316\313\377" \
+ "\223\254\247\377\310\322\311\377\367\354\354\341\377\1\242\256\246\377" \
+ "\226Slg\377\1y\214\205\377\315\354\354\341\377\3\275\312\302\377\223" \
+ "\254\247\377\320\333\330\377\204\377\377\377\377\3\277\316\313\377\223" \
+ "\254\247\377\310\322\311\377\366\354\354\341\377\2\341\342\330\377[s" \
+ "m\377\204Slg\377\4Zrm\377o\203}\377{\216\207\377\210\230\221\377\214" \
+ "\214\234\224\377\3i~x\377Slg\377y\214\205\377\315\354\354\341\377\3\275" \
+ "\312\302\377\223\254\247\377\320\333\330\377\204\377\377\377\377\3\277" \
+ "\316\313\377\223\254\247\377\310\322\311\377\366\354\354\341\377\1\244" \
+ "\260\250\377\203Slg\377\3f|v\377\261\272\262\377\345\346\334\377\217" \
+ "\354\354\341\377\3\215\234\225\377Slg\377y\214\205\377\315\354\354\341" \
+ "\377\3\275\312\302\377\223\254\247\377\320\333\330\377\204\377\377\377" \
+ "\377\3\277\316\313\377\223\254\247\377\310\322\311\377\366\354\354\341" \
+ "\377\1\212\232\223\377\202Slg\377\2[sn\377\324\330\316\377\221\354\354" \
+ "\341\377\3\215\234\225\377Slg\377y\214\205\377\315\354\354\341\377\3" \
+ "\275\312\302\377\223\254\247\377\315\331\326\377\204\377\377\377\377" \
+ "\3\274\314\310\377\223\254\247\377\310\322\312\377\366\354\354\341\377" \
+ "\1u\211\202\377\202Slg\377\1\232\247\237\377\222\354\354\341\377\3\215" \
+ "\234\225\377Slg\377y\214\205\377\315\354\354\341\377\3\314\325\314\377" \
+ "\223\254\247\377\264\305\302\377\204\377\377\377\377\3\243\270\264\377" \
+ "\223\254\247\377\327\335\324\377\366\354\354\341\377\1v\212\203\377\202" \
+ "Slg\377\1\265\276\265\377\222\354\354\341\377\3\330\333\321\377\312\320" \
+ "\306\377\323\327\315\377\315\354\354\341\377\4\344\346\334\377\223\254" \
+ "\247\377\231\261\254\377\375\376\376\377\202\377\377\377\377\4\362\365" \
+ "\365\377\223\254\247\377\230\260\252\377\353\353\340\377\366\354\354" \
+ "\341\377\1\215\235\225\377\202Slg\377\1\301\310\277\377\340\354\354\341" \
+ "\377\6\337\342\330\377\271\307\275\377\223\253\242\377\215\250\242\377" \
+ "\223\254\247\377\346\354\353\377\202\377\377\377\377\6\325\337\335\377" \
+ "\223\254\247\377\212\246\240\377\230\257\246\377\276\313\301\377\343" \
+ "\345\333\377\364\354\354\341\377\1\270\300\267\377\202Slg\377\1\242\256" \
+ "\246\377\336\354\354\341\377\3\320\330\316\377\216\250\237\377p\221\212" \
+ "\377\202o\221\212\377\3\203\240\232\377\223\254\247\377\310\325\322\377" \
+ "\202\377\377\377\377\3\267\310\305\377\223\254\247\377~\234\226\377\202" \
+ "o\221\212\377\3q\222\213\377\226\256\246\377\330\336\324\377\362\354" \
+ "\354\341\377\4\353\353\340\377k\200z\377Slg\377|\216\210\377\222\354" \
+ "\354\341\377\3\256\270\257\377\207\230\221\377\240\255\245\377\307\354" \
+ "\354\341\377\2\333\337\324\377\230\257\247\377\205o\221\212\377\3\207" \
+ "\243\233\377\223\254\247\377\250\274\270\377\202\344\352\351\377\3\233" \
+ "\262\256\377\223\254\247\377\203\240\231\377\204o\221\212\377\3q\223" \
+ "\214\377\242\266\256\377\342\345\332\377\361\354\354\341\377\4\315\322" \
+ "\311\377\\tn\377Slg\377\253\265\255\377\221\354\354\341\377\3\215\234" \
+ "\225\377Slg\377y\214\205\377\306\354\354\341\377\2\302\315\304\377s\224" \
+ "\215\377\203o\221\212\377\5\211\244\234\377\267\305\274\377\333\340\326" \
+ "\377\351\352\337\377\225\256\251\377\204\223\254\247\377\5\235\263\256" \
+ "\377\354\354\341\377\331\336\324\377\262\302\271\377\201\236\227\377" \
+ "\203o\221\212\377\2y\230\221\377\316\326\314\377\361\354\354\341\377" \
+ "\5\312\317\306\377`wq\377Unh\377\253\265\255\377\346\347\334\377\217" \
+ "\354\354\341\377\3\215\234\225\377Slg\377y\214\205\377\304\354\354\341" \
+ "\377\3\353\354\341\377\256\277\265\377p\221\212\377\202o\221\212\377" \
+ "\2\201\236\227\377\302\315\304\377\204\354\354\341\377\1\272\310\300" \
+ "\377\204\254\276\267\377\1\303\317\306\377\203\354\354\341\377\3\352" \
+ "\352\337\377\271\307\275\377{\232\222\377\202o\221\212\377\2r\224\214" \
+ "\377\273\310\277\377\356\354\354\341\377\1\353\353\341\377\202\347\350" \
+ "\335\377\11\334\337\325\377\211\231\222\377Slg\377]to\377\226\244\234" \
+ "\377\270\300\267\377\311\316\305\377\331\334\322\377\346\347\334\377" \
+ "\212\347\350\335\377\3\213\233\223\377Slg\377y\214\205\377\304\354\354" \
+ "\341\377\1\244\270\257\377\203o\221\212\377\2\242\266\256\377\351\352" \
+ "\340\377\220\354\354\341\377\2\346\350\334\377\227\256\245\377\203o\221" \
+ "\212\377\1\266\305\274\377\355\354\354\341\377\1\320\324\313\377\227" \
+ "Slg\377\1y\214\205\377\303\354\354\341\377\1\272\310\276\377\202o\221" \
+ "\212\377\2q\223\214\377\270\306\274\377\223\354\354\341\377\6\353\354" \
+ "\341\377\255\276\264\377p\221\212\377o\221\212\377q\223\214\377\313\324" \
+ "\312\377\354\354\354\341\377\1\320\324\313\377\227Slg\377\1y\214\205" \
+ "\377\302\354\354\341\377\5\315\326\313\377r\223\213\377o\221\212\377" \
+ "p\222\213\377\305\317\305\377\226\354\354\341\377\1\265\304\273\377\202" \
+ "o\221\212\377\2x\230\220\377\333\340\325\377\353\354\354\341\377\1\320" \
+ "\324\313\377\227Slg\377\1y\214\205\377\301\354\354\341\377\2\351\352" \
+ "\337\377\177\234\224\377\202o\221\212\377\1\263\303\272\377\230\354\354" \
+ "\341\377\1\240\265\254\377\202o\221\212\377\1\216\247\240\377\353\354" \
+ "\354\341\377\1\320\324\313\377\227Slg\377\1y\214\205\377\301\354\354" \
+ "\341\377\1\264\303\272\377\202o\221\212\377\1\227\256\245\377\231\354" \
+ "\354\341\377\2\351\352\340\377\210\243\233\377\202o\221\212\377\1\310" \
+ "\322\310\377\352\354\354\341\377\1\320\324\313\377\202Slg\377\1\300\307" \
+ "\276\377\222\331\334\322\377\3\205\226\217\377Slg\377y\214\205\377\300" \
+ "\354\354\341\377\5\344\346\334\377x\230\220\377o\221\212\377r\223\213" \
+ "\377\332\337\324\377\232\354\354\341\377\1\315\326\313\377\202o\221\212" \
+ "\377\2\205\241\231\377\353\353\340\377\351\354\354\341\377\1\320\324" \
+ "\313\377\202Slg\377\1\317\324\312\377\222\354\354\341\377\3\215\234\225" \
+ "\377Slg\377y\214\205\377\300\354\354\341\377\1\264\303\272\377\202o\221" \
+ "\212\377\1\243\267\256\377\234\354\354\341\377\1\224\254\244\377\202" \
+ "o\221\212\377\1\305\320\306\377\351\354\354\341\377\1\320\324\313\377" \
+ "\202Slg\377\1\317\324\312\377\222\354\354\341\377\3\215\234\225\377S" \
+ "lg\377y\214\205\377\300\354\354\341\377\4\214\246\237\377o\221\212\377" \
+ "p\222\213\377\340\343\331\377\234\354\354\341\377\1\316\326\314\377\202" \
+ "o\221\212\377\1\236\263\253\377\351\354\354\341\377\1\320\324\313\377" \
+ "\202Slg\377\1\317\324\312\377\222\354\354\341\377\3\234\251\241\377j" \
+ "\200z\377\213\233\223\377\277\354\354\341\377\4\342\345\332\377p\222" \
+ "\213\377o\221\212\377\214\246\236\377\235\354\354\341\377\5\353\353\340" \
+ "\377{\231\222\377o\221\212\377y\231\221\377\352\353\340\377\350\354\354" \
+ "\341\377\1\352\352\337\377\202\336\340\326\377\1\352\352\337\377\324" \
+ "\354\354\341\377\1\275\312\300\377\202o\221\212\377\1\262\302\271\377" \
+ "\236\354\354\341\377\1\241\265\255\377\202o\221\212\377\1\317\327\315" \
+ "\377\377\354\354\341\377\301\354\354\341\377\1\255\276\264\377\202o\221" \
+ "\212\377\1\317\327\314\377\236\354\354\341\377\1\276\312\301\377\202" \
+ "o\221\212\377\1\274\311\277\377\377\354\354\341\377\301\354\354\341\377" \
+ "\1\237\264\254\377\202o\221\212\377\1\334\340\326\377\236\354\354\341" \
+ "\377\1\313\324\312\377\202o\221\212\377\1\260\300\267\377\377\354\354" \
+ "\341\377\301\354\354\341\377\4\222\252\242\377o\221\212\377p\222\213" \
+ "\377\351\352\340\377\236\354\354\341\377\1\330\335\323\377\202o\221\212" \
+ "\377\1\244\270\257\377\357\354\354\341\377\14\331\334\322\377\257\271" \
+ "\260\377\212\232\223\377p\204~\377e{u\377[sm\377_vq\377j\177y\377x\213" \
+ "\204\377\232\247\237\377\277\306\275\377\350\350\336\377\305\354\354" \
+ "\341\377\3\210\243\233\377o\221\212\377w\227\217\377\237\354\354\341" \
+ "\377\1\342\345\332\377\202o\221\212\377\1\233\261\250\377\355\354\354" \
+ "\341\377\3\320\324\313\377\206\227\220\377Tmh\377\212Slg\377\3bys\377" \
+ "\245\261\251\377\345\346\334\377\303\354\354\341\377\4\223\253\243\377" \
+ "o\221\212\377p\221\212\377\351\352\337\377\236\354\354\341\377\1\326" \
+ "\334\322\377\202o\221\212\377\1\245\270\257\377\353\354\354\341\377\3" \
+ "\353\353\341\377\246\261\251\377Uni\377\216Slg\377\2k\200z\377\322\326" \
+ "\314\377\302\354\354\341\377\1\240\265\254\377\202o\221\212\377\1\333" \
+ "\340\325\377\236\354\354\341\377\1\311\323\311\377\202o\221\212\377\1" \
+ "\261\301\270\377\352\354\354\341\377\2\353\353\341\377\212\232\223\377" \
+ "\221Slg\377\2Xqk\377\306\314\303\377\301\354\354\341\377\1\256\277\265" \
+ "\377\202o\221\212\377\1\314\325\313\377\236\354\354\341\377\1\274\311" \
+ "\277\377\202o\221\212\377\1\276\312\301\377\337\354\354\341\377\2\322" \
+ "\326\314\377\311\316\305\377\211\354\354\341\377\1\231\247\237\377\207" \
+ "Slg\377\6Xpk\377^vp\377dzt\377axr\377[sn\377Tmh\377\206Slg\377\2]to\377" \
+ "\322\326\314\377\300\354\354\341\377\1\300\314\303\377\202o\221\212\377" \
+ "\1\256\277\266\377\236\354\354\341\377\1\236\263\253\377\202o\221\212" \
+ "\377\1\323\332\317\377\335\354\354\341\377\2\353\353\341\377~\220\211" \
+ "\377\202Slg\377\2m\202|\377\344\345\333\377\206\354\354\341\377\1\312" \
+ "\317\306\377\204Slg\377\4h~x\377\231\247\237\377\302\311\300\377\334" \
+ "\336\324\377\205\354\354\341\377\5\347\350\335\377\320\324\313\377\262" \
+ "\273\263\377\205\226\217\377Xpk\377\203Slg\377\1s\207\201\377\300\354" \
+ "\354\341\377\4\343\346\333\377q\223\214\377o\221\212\377\210\243\233" \
+ "\377\235\354\354\341\377\5\352\352\337\377x\230\220\377o\221\212\377" \
+ "{\232\222\377\353\354\341\377\335\354\354\341\377\1\300\307\276\377\204" \
+ "Slg\377\1\256\270\260\377\206\354\354\341\377\1x\213\204\377\202Slg\377" \
+ "\3`wr\377\265\276\265\377\353\353\340\377\214\354\354\341\377\2\335\337" \
+ "\325\377\217\236\227\377\203Slg\377\1\272\302\271\377\300\354\354\341" \
+ "\377\1\220\251\241\377\202o\221\212\377\1\333\340\326\377\234\354\354" \
+ "\341\377\1\312\323\311\377\202o\221\212\377\1\241\265\255\377\336\354" \
+ "\354\341\377\1\246\262\252\377\204Slg\377\1\226\244\235\377\205\354\354" \
+ "\341\377\1\326\331\317\377\202Slg\377\2i~x\377\333\335\323\377\220\354" \
+ "\354\341\377\1\256\270\257\377\202Slg\377\1~\220\211\377\300\354\354" \
+ "\341\377\1\271\307\275\377\202o\221\212\377\1\235\263\252\377\206\354" \
+ "\354\341\377\1\353\353\340\377\216\354\354\341\377\1\353\353\341\377" \
+ "\206\354\354\341\377\1\216\247\240\377\202o\221\212\377\1\311\323\311" \
+ "\377\336\354\354\341\377\2\337\341\327\377Wpj\377\203Slg\377\1\320\324" \
+ "\313\377\205\354\354\341\377\4\251\264\253\377Slg\377Tmg\377\316\323" \
+ "\311\377\222\354\354\341\377\4\211\231\222\377Slg\377Xpk\377\346\347" \
+ "\334\377\277\354\354\341\377\5\347\351\335\377{\232\222\377o\221\212" \
+ "\377p\222\213\377\325\334\321\377\205\354\354\341\377\4\271\307\300\377" \
+ "\253\275\267\377\321\330\317\377\353\353\341\377\210\354\354\341\377" \
+ "\4\352\352\337\377\314\325\314\377\246\272\263\377\306\321\310\377\205" \
+ "\354\354\341\377\1\307\321\307\377\202o\221\212\377\1\212\245\235\377" \
+ "\340\354\354\341\377\4\314\321\310\377\215\235\225\377\205\226\217\377" \
+ "\300\307\276\377\206\354\354\341\377\3\210\230\221\377Slg\377x\213\205" \
+ "\377\223\354\354\341\377\1\315\322\311\377\202Slg\377\1\312\320\306\377" \
+ "\300\354\354\341\377\1\272\310\276\377\202o\221\212\377\2\220\251\241" \
+ "\377\353\354\341\377\203\354\354\341\377\2\350\351\336\377\230\260\252" \
+ "\377\202\223\254\247\377\3\236\264\256\377\303\316\306\377\345\347\335" \
+ "\377\204\354\354\341\377\3\342\344\332\377\275\312\303\377\232\261\254" \
+ "\377\202\223\254\247\377\1\242\267\261\377\204\354\354\341\377\2\347" \
+ "\351\335\377\203\237\227\377\202o\221\212\377\1\316\326\314\377\352\354" \
+ "\354\341\377\3z\215\206\377Slg\377\235\252\242\377\224\354\354\341\377" \
+ "\3[sn\377Slg\377\275\304\273\377\300\354\354\341\377\2\352\353\340\377" \
+ "\203\237\227\377\202o\221\212\377\1\251\273\263\377\203\354\354\341\377" \
+ "\4\307\322\311\377\223\254\247\377\243\270\264\377\244\271\264\377\202" \
+ "\223\254\247\377\6\226\256\251\377\265\304\275\377\345\347\334\377\340" \
+ "\343\331\377\257\300\271\377\224\255\250\377\202\223\254\247\377\4\251" \
+ "\275\271\377\236\264\260\377\223\254\247\377\325\334\322\377\202\354" \
+ "\354\341\377\2\353\354\341\377\227\256\246\377\202o\221\212\377\1\224" \
+ "\254\244\377\353\354\354\341\377\3o\203}\377Slg\377\256\270\257\377\224" \
+ "\354\354\341\377\3k\200z\377Slg\377\261\273\262\377\301\354\354\341\377" \
+ "\2\325\333\321\377t\224\216\377\202o\221\212\377\1\273\310\277\377\202" \
+ "\354\354\341\377\22\242\267\261\377\223\254\247\377\332\343\341\377\377" \
+ "\377\377\377\341\350\347\377\263\305\301\377\224\255\250\377\223\254" \
+ "\247\377\311\323\312\377\276\313\303\377\223\254\247\377\225\256\251" \
+ "\377\271\311\306\377\347\355\354\377\377\377\377\377\315\330\326\377" \
+ "\223\254\247\377\260\301\272\377\202\354\354\341\377\1\252\274\264\377" \
+ "\202o\221\212\377\2|\233\223\377\340\343\331\377\353\354\354\341\377" \
+ "\3w\212\204\377Slg\377\242\256\246\377\224\354\354\341\377\3`wq\377S" \
+ "lg\377\272\302\271\377\302\354\354\341\377\2\303\316\304\377p\221\212" \
+ "\377\202o\221\212\377\5\255\276\264\377\325\334\322\377\223\254\247\377" \
+ "\235\264\257\377\375\375\375\377\203\377\377\377\377\6\321\334\332\377" \
+ "\223\254\247\377\252\274\266\377\242\267\261\377\223\254\247\377\337" \
+ "\346\345\377\203\377\377\377\377\5\367\370\370\377\226\256\251\377\224" \
+ "\255\250\377\340\343\332\377\240\265\254\377\202o\221\212\377\2s\223" \
+ "\215\377\323\332\317\377\342\354\354\341\377\4\346\347\334\377\261\272" \
+ "\262\377\247\262\252\377\340\342\327\377\206\354\354\341\377\3\204\225" \
+ "\216\377Slg\377\204\225\216\377\223\354\354\341\377\1\331\334\322\377" \
+ "\202Slg\377\1\307\315\303\377\303\354\354\341\377\1\256\277\266\377\203" \
+ "o\221\212\377\3\224\255\247\377\223\254\247\377\310\325\322\377\203\377" \
+ "\377\377\377\2\361\364\364\377\252\276\272\377\203\223\254\247\377\3" \
+ "\224\255\250\377\266\307\304\377\367\371\370\377\203\377\377\377\377" \
+ "\3\273\313\307\377\223\254\247\377\220\251\243\377\202o\221\212\377\2" \
+ "p\221\212\377\300\314\303\377\342\354\354\341\377\2\347\350\335\377c" \
+ "ys\377\202Slg\377\2Xpk\377\334\337\325\377\205\354\354\341\377\4\236" \
+ "\253\243\377Slg\377Xpk\377\336\340\326\377\222\354\354\341\377\4\234" \
+ "\251\241\377Slg\377Tmh\377\340\342\327\377\304\354\354\341\377\6\271" \
+ "\307\275\377q\223\214\377s\224\215\377\223\254\247\377\225\255\250\377" \
+ "\364\367\366\377\202\377\377\377\377\12\352\357\356\377\230\260\253\377" \
+ "\232\262\255\377\315\331\326\377\347\355\354\377\344\352\351\377\306" \
+ "\323\321\377\225\256\251\377\235\264\257\377\363\366\365\377\202\377" \
+ "\377\377\377\6\351\356\355\377\223\254\247\377\220\252\244\377p\222\213" \
+ "\377u\226\216\377\306\320\306\377\343\354\354\341\377\1\262\273\263\377" \
+ "\204Slg\377\1\241\255\245\377\205\354\354\341\377\1\313\320\307\377\202" \
+ "Slg\377\2~\220\211\377\351\351\337\377\220\354\354\341\377\4\312\317" \
+ "\306\377Voi\377Slg\377u\210\202\377\306\354\354\341\377\4\314\325\313" \
+ "\377\206\242\234\377\223\254\247\377\267\310\304\377\202\377\377\377" \
+ "\377\4\374\375\375\377\245\272\266\377\237\265\261\377\363\366\365\377" \
+ "\204\377\377\377\377\3\352\357\356\377\227\257\253\377\261\303\300\377" \
+ "\203\377\377\377\377\4\251\275\271\377\223\254\247\377\206\242\234\377" \
+ "\327\334\322\377\344\354\354\341\377\1\262\273\263\377\204Slg\377\1\241" \
+ "\255\245\377\205\354\354\341\377\2\353\353\341\377h~x\377\202Slg\377" \
+ "\2x\213\205\377\331\334\322\377\215\354\354\341\377\3\353\353\340\377" \
+ "\261\272\262\377Xqk\377\202Slg\377\1\251\264\254\377\306\354\354\341" \
+ "\377\4\352\353\340\377\232\261\254\377\223\254\247\377\344\352\351\377" \
+ "\202\377\377\377\377\3\336\345\344\377\223\254\247\377\337\347\345\377" \
+ "\206\377\377\377\377\3\317\332\330\377\223\254\247\377\356\362\362\377" \
+ "\202\377\377\377\377\3\327\340\336\377\223\254\247\377\246\272\263\377" \
+ "\345\354\354\341\377\2\347\350\335\377cys\377\202Slg\377\2Xpk\377\334" \
+ "\337\325\377\206\354\354\341\377\1\270\300\267\377\203Slg\377\4Voi\377" \
+ "\215\235\225\377\300\307\276\377\347\347\335\377\210\354\354\341\377" \
+ "\3\327\332\320\377\250\263\252\377l\201{\377\203Slg\377\2e{u\377\350" \
+ "\350\336\377\306\354\354\341\377\3\315\326\315\377\223\254\247\377\246" \
+ "\272\266\377\203\377\377\377\377\3\310\324\322\377\225\255\250\377\374" \
+ "\375\375\377\206\377\377\377\377\3\360\364\363\377\223\254\247\377\330" \
+ "\341\340\377\202\377\377\377\377\4\374\374\374\377\233\263\256\377\223" \
+ "\254\247\377\333\340\326\377\345\354\354\341\377\4\346\347\334\377\261" \
+ "\272\262\377\247\262\252\377\340\342\327\377\207\354\354\341\377\2\353" \
+ "\353\341\377~\220\211\377\205Slg\377\11Tmh\377f|v\377y\214\205\377\200" \
+ "\222\213\377\205\226\217\377\203\224\215\377}\217\210\377r\206\177\377" \
+ "[sn\377\205Slg\377\2Tmh\377\276\305\274\377\307\354\354\341\377\3\250" \
+ "\273\264\377\223\254\247\377\323\335\333\377\203\377\377\377\377\2\277" \
+ "\316\313\377\231\261\254\377\207\377\377\377\377\3\370\371\371\377\223" \
+ "\254\247\377\320\333\331\377\203\377\377\377\377\3\305\323\320\377\223" \
+ "\254\247\377\266\305\276\377\361\354\354\341\377\2\344\345\333\377o\204" \
+ "}\377\222Slg\377\1\251\264\254\377\307\354\354\341\377\4\334\340\326" \
+ "\377\223\254\247\377\231\261\254\377\372\373\373\377\203\377\377\377" \
+ "\377\3\325\336\334\377\223\254\247\377\361\364\363\377\206\377\377\377" \
+ "\377\3\341\350\346\377\223\254\247\377\346\353\352\377\203\377\377\377" \
+ "\377\4\362\365\364\377\224\255\250\377\226\256\251\377\346\350\335\377" \
+ "\361\354\354\341\377\2\341\343\330\377\200\222\213\377\217Slg\377\2Z" \
+ "rl\377\262\274\263\377\310\354\354\341\377\3\266\305\276\377\223\254" \
+ "\247\377\302\320\315\377\204\377\377\377\377\3\361\364\364\377\226\256" \
+ "\252\377\267\310\304\377\205\377\377\377\377\4\375\375\375\377\250\274" \
+ "\270\377\234\263\256\377\373\374\374\377\204\377\377\377\377\3\264\305" \
+ "\302\377\223\254\247\377\304\317\307\377\362\354\354\341\377\3\353\353" \
+ "\341\377\254\267\256\377e{u\377\213Slg\377\3Tmh\377\204\225\216\377\325" \
+ "\330\316\377\310\354\354\341\377\4\346\350\335\377\227\257\251\377\223" \
+ "\254\247\377\356\362\362\377\205\377\377\377\377\4\316\332\327\377\223" \
+ "\254\247\377\273\313\307\377\370\372\371\377\202\377\377\377\377\4\363" \
+ "\366\365\377\260\302\276\377\223\254\247\377\334\344\342\377\205\377" \
+ "\377\377\377\3\341\350\347\377\223\254\247\377\237\265\257\377\364\354" \
+ "\354\341\377\4\352\352\337\377\271\301\270\377\215\235\225\377h~x\377" \
+ "\205Slg\377\4Wpj\377x\213\205\377\235\252\242\377\325\330\316\377\312" \
+ "\354\354\341\377\3\305\320\307\377\223\254\247\377\260\302\277\377\206" \
+ "\377\377\377\377\2\376\376\376\377\312\326\324\377\202\225\255\250\377" \
+ "\5\243\270\264\377\241\267\262\377\223\254\247\377\230\257\253\377\325" \
+ "\337\335\377\207\377\377\377\377\3\243\270\264\377\223\254\247\377\323" \
+ "\332\320\377\367\354\354\341\377\6\350\350\336\377\335\337\325\377\323" \
+ "\327\315\377\327\332\320\377\342\343\331\377\353\353\340\377\315\354" \
+ "\354\341\377\3\240\265\257\377\223\254\247\377\336\345\344\377\210\377" \
+ "\377\377\377\6\240\266\262\377\223\254\247\377\246\272\263\377\243\270" \
+ "\262\377\223\254\247\377\260\302\276\377\210\377\377\377\377\3\320\333" \
+ "\331\377\223\254\247\377\255\277\270\377\377\354\354\341\377\312\354" \
+ "\354\341\377\4\323\332\321\377\223\254\247\377\240\266\262\377\376\376" \
+ "\376\377\207\377\377\377\377\10\341\350\346\377\223\254\247\377\236\264" \
+ "\256\377\353\353\341\377\347\350\336\377\227\257\252\377\224\255\250" \
+ "\377\361\364\364\377\207\377\377\377\377\4\371\372\372\377\230\260\253" \
+ "\377\224\255\247\377\340\343\331\377\354\354\354\341\377\1\322\326\314" \
+ "\377\205\226\244\234\377\1\253\266\255\377\325\354\354\341\377\3\256" \
+ "\277\270\377\223\254\247\377\314\330\326\377\210\377\377\377\377\3\264" \
+ "\305\302\377\223\254\247\377\302\316\306\377\202\354\354\341\377\3\267" \
+ "\306\276\377\223\254\247\377\305\322\317\377\210\377\377\377\377\3\277" \
+ "\316\313\377\223\254\247\377\273\311\301\377\354\354\354\341\377\1\250" \
+ "\263\252\377\205Slg\377\1y\214\205\377\324\354\354\341\377\4\340\344" \
+ "\331\377\224\255\247\377\226\256\251\377\367\370\370\377\207\377\377" \
+ "\377\377\4\361\365\364\377\224\255\250\377\225\256\251\377\345\347\334" \
+ "\377\202\354\354\341\377\4\334\341\327\377\223\254\247\377\233\262\255" \
+ "\377\374\374\374\377\207\377\377\377\377\4\354\360\357\377\223\254\247" \
+ "\377\231\261\253\377\351\352\337\377\353\354\354\341\377\1\213\233\224" \
+ "\377\205Slg\377\1\205\226\217\377\324\354\354\341\377\3\274\311\302\377" \
+ "\223\254\247\377\273\313\307\377\210\377\377\377\377\3\305\323\320\377" \
+ "\223\254\247\377\264\304\274\377\204\354\354\341\377\3\250\273\265\377" \
+ "\223\254\247\377\326\337\336\377\210\377\377\377\377\3\255\300\274\377" \
+ "\223\254\247\377\312\323\313\377\353\354\354\341\377\1{\216\207\377\203" \
+ "Slg\377\2\226\244\234\377\341\342\330\377\324\354\354\341\377\4\351\352" \
+ "\337\377\232\261\253\377\223\254\247\377\350\355\354\377\207\377\377" \
+ "\377\377\4\374\374\374\377\233\263\256\377\223\254\247\377\331\336\325" \
+ "\377\204\354\354\341\377\3\316\326\315\377\223\254\247\377\251\275\271" \
+ "\377\210\377\377\377\377\3\333\343\341\377\223\254\247\377\244\271\262" \
+ "\377\353\354\354\341\377\1p\204~\377\202Slg\377\1\203\224\215\377\326" \
+ "\354\354\341\377\3\312\324\313\377\223\254\247\377\251\275\271\377\210" \
+ "\377\377\377\377\3\327\340\336\377\223\254\247\377\245\271\263\377\205" \
+ "\354\354\341\377\4\352\353\340\377\234\262\255\377\223\254\247\377\350" \
+ "\355\354\377\207\377\377\377\377\4\375\375\375\377\236\264\260\377\223" \
+ "\254\247\377\330\336\324\377\352\354\354\341\377\1v\212\203\377\202S" \
+ "lg\377\1\266\277\266\377\326\354\354\341\377\3\245\271\263\377\223\254" \
+ "\247\377\327\340\336\377\210\377\377\377\377\3\251\275\271\377\223\254" \
+ "\247\377\313\324\313\377\206\354\354\341\377\3\277\314\304\377\223\254" \
+ "\247\377\272\312\307\377\210\377\377\377\377\3\311\326\323\377\223\254" \
+ "\247\377\263\303\274\377\352\354\354\341\377\1\211\231\222\377\202Sl" \
+ "g\377\1\303\311\300\377\325\354\354\341\377\4\331\336\324\377\223\254" \
+ "\247\377\233\262\256\377\374\374\374\377\207\377\377\377\377\4\351\356" \
+ "\355\377\223\254\247\377\232\261\253\377\351\352\337\377\206\354\354" \
+ "\341\377\4\343\346\333\377\224\255\250\377\226\256\251\377\366\370\370" \
+ "\377\207\377\377\377\377\4\364\367\366\377\225\256\251\377\225\256\250" \
+ "\377\344\346\334\377\351\354\354\341\377\1\242\256\246\377\202Slg\377" \
+ "\1\251\264\253\377\222\354\354\341\377\3\344\345\332\377\336\340\326" \
+ "\377\341\343\330\377\300\354\354\341\377\3\263\303\274\377\223\254\247" \
+ "\377\305\322\320\377\210\377\377\377\377\3\273\313\310\377\223\254\247" \
+ "\377\274\312\302\377\210\354\354\341\377\3\261\302\273\377\223\254\247" \
+ "\377\314\330\325\377\210\377\377\377\377\3\267\310\305\377\223\254\247" \
+ "\377\301\315\305\377\351\354\354\341\377\4\334\336\324\377Uni\377Slg" \
+ "\377\212\232\223\377\222\354\354\341\377\3\215\234\225\377Slg\377y\214" \
+ "\205\377\277\354\354\341\377\4\345\347\334\377\225\256\251\377\224\255" \
+ "\250\377\361\365\364\377\207\377\377\377\377\4\367\370\370\377\226\256" \
+ "\251\377\224\255\247\377\341\344\332\377\210\354\354\341\377\4\326\334" \
+ "\323\377\223\254\247\377\240\266\261\377\376\376\376\377\207\377\377" \
+ "\377\377\4\345\353\352\377\223\254\247\377\235\263\256\377\353\353\340" \
+ "\377\351\354\354\341\377\4\215\234\225\377Slg\377\\tn\377\326\332\320" \
+ "\377\221\354\354\341\377\3\215\234\225\377Slg\377y\214\205\377\277\354" \
+ "\354\341\377\3\302\316\305\377\223\254\247\377\264\305\302\377\210\377" \
+ "\377\377\377\3\315\330\326\377\223\254\247\377\256\277\271\377\212\354" \
+ "\354\341\377\3\243\267\261\377\223\254\247\377\335\345\343\377\210\377" \
+ "\377\377\377\3\246\273\267\377\223\254\247\377\320\330\317\377\351\354" \
+ "\354\341\377\5\347\347\335\377u\211\202\377Slg\377m\202|\377\345\346" \
+ "\334\377\220\354\354\341\377\3\215\234\225\377Slg\377y\214\205\377\276" \
+ "\354\354\341\377\4\353\353\340\377\235\264\256\377\223\254\247\377\341" \
+ "\350\347\377\207\377\377\377\377\4\376\376\376\377\241\266\262\377\223" \
+ "\254\247\377\323\332\321\377\212\354\354\341\377\3\310\322\312\377\223" \
+ "\254\247\377\260\302\276\377\210\377\377\377\377\3\323\335\333\377\223" \
+ "\254\247\377\252\275\266\377\352\354\354\341\377\6\341\342\330\377\201" \
+ "\223\214\377Slg\377l\201{\377\265\276\265\377\352\352\340\377\216\354" \
+ "\354\341\377\3\215\234\225\377Slg\377y\214\205\377\276\354\354\341\377" \
+ "\3\320\330\317\377\223\254\247\377\243\270\264\377\210\377\377\377\377" \
+ "\3\336\346\344\377\223\254\247\377\240\265\257\377\213\354\354\341\377" \
+ "\4\350\351\336\377\230\260\252\377\223\254\247\377\356\362\362\377\207" \
+ "\377\377\377\377\4\372\373\373\377\231\261\254\377\223\254\247\377\336" \
+ "\342\330\377\347\354\354\341\377\1\344\345\333\377\203\301\310\277\377" \
+ "\1\213\233\224\377\202Slg\377\5g}w\377\215\235\225\377\237\254\244\377" \
+ "\261\272\262\377\300\307\276\377\212\301\310\277\377\3|\217\210\377S" \
+ "lg\377y\214\205\377\276\354\354\341\377\3\253\275\266\377\223\254\247" \
+ "\377\320\333\330\377\210\377\377\377\377\3\261\303\277\377\223\254\247" \
+ "\377\305\320\310\377\214\354\354\341\377\3\271\310\300\377\223\254\247" \
+ "\377\301\317\315\377\210\377\377\377\377\3\302\320\315\377\223\254\247" \
+ "\377\271\307\300\377\347\354\354\341\377\1\320\324\313\377\227Slg\377" \
+ "\1y\214\205\377\275\354\354\341\377\4\336\342\330\377\223\254\247\377" \
+ "\230\260\253\377\371\372\372\377\207\377\377\377\377\4\357\363\362\377" \
+ "\223\254\247\377\227\257\251\377\346\350\335\377\214\354\354\341\377" \
+ "\4\336\342\330\377\223\254\247\377\231\261\254\377\372\373\373\377\207" \
+ "\377\377\377\377\4\357\363\362\377\223\254\247\377\230\260\252\377\350" \
+ "\351\336\377\346\354\354\341\377\1\320\324\313\377\227Slg\377\1y\214" \
+ "\205\377\275\354\354\341\377\3\271\307\300\377\223\254\247\377\276\315" \
+ "\312\377\210\377\377\377\377\3\302\320\316\377\223\254\247\377\267\306" \
+ "\276\377\216\354\354\341\377\3\253\275\267\377\223\254\247\377\323\335" \
+ "\333\377\210\377\377\377\377\3\261\303\277\377\223\254\247\377\307\321" \
+ "\311\377\346\354\354\341\377\1\320\324\313\377\227Slg\377\1y\214\205" \
+ "\377\274\354\354\341\377\4\350\351\336\377\230\260\252\377\223\254\247" \
+ "\377\354\360\357\377\207\377\377\377\377\4\373\374\374\377\232\261\255" \
+ "\377\223\254\247\377\334\340\327\377\216\354\354\341\377\3\320\330\317" \
+ "\377\223\254\247\377\246\272\266\377\210\377\377\377\377\3\336\346\344" \
+ "\377\223\254\247\377\242\267\261\377\346\354\354\341\377\1\320\324\313" \
+ "\377\202Slg\377\1bys\377\222f|v\377\3Zrm\377Slg\377y\214\205\377\274" \
+ "\354\354\341\377\3\310\322\311\377\223\254\247\377\255\300\274\377\210" \
+ "\377\377\377\377\3\324\336\334\377\223\254\247\377\250\273\265\377\217" \
+ "\354\354\341\377\4\353\353\340\377\235\264\256\377\223\254\247\377\344" \
+ "\352\351\377\207\377\377\377\377\4\376\376\376\377\240\266\262\377\223" \
+ "\254\247\377\326\334\322\377\345\354\354\341\377\1\320\324\313\377\202" \
+ "Slg\377\1\317\324\312\377\222\354\354\341\377\3\215\234\225\377Slg\377" \
+ "y\214\205\377\274\354\354\341\377\3\242\267\261\377\223\254\247\377\332" \
+ "\343\341\377\210\377\377\377\377\3\246\273\267\377\223\254\247\377\316" \
+ "\326\315\377\220\354\354\341\377\3\302\316\306\377\223\254\247\377\267" \
+ "\310\304\377\210\377\377\377\377\3\315\330\326\377\223\254\247\377\260" \
+ "\301\272\377\345\354\354\341\377\1\320\324\313\377\202Slg\377\1\317\324" \
+ "\312\377\222\354\354\341\377\3\215\234\225\377Slg\377y\214\205\377\273" \
+ "\354\354\341\377\4\326\334\323\377\223\254\247\377\236\264\260\377\375" \
+ "\375\375\377\207\377\377\377\377\4\346\353\352\377\223\254\247\377\233" \
+ "\262\254\377\352\353\340\377\220\354\354\341\377\4\345\347\334\377\225" \
+ "\256\251\377\225\255\250\377\364\367\366\377\207\377\377\377\377\4\367" \
+ "\370\370\377\226\257\252\377\224\255\250\377\343\345\333\377\344\354" \
+ "\354\341\377\1\320\324\313\377\202Slg\377\1\317\324\312\377\222\354\354" \
+ "\341\377\3\215\234\225\377Slg\377y\214\205\377\273\354\354\341\377\3" \
+ "\261\301\272\377\223\254\247\377\311\325\323\377\210\377\377\377\377" \
+ "\3\270\311\305\377\223\254\247\377\277\314\304\377\222\354\354\341\377" \
+ "\3\263\303\274\377\223\254\247\377\310\325\322\377\210\377\377\377\377" \
+ "\3\273\313\310\377\223\254\247\377\277\313\303\377\344\354\354\341\377" \
+ "\1\325\330\316\377\202j\200z\377\1\323\327\315\377\222\354\354\341\377" \
+ "\3\264\275\264\377\221\240\230\377\250\263\252\377\272\354\354\341\377" \
+ "\4\343\345\333\377\224\255\250\377\225\255\250\377\364\367\366\377\207" \
+ "\377\377\377\377\4\365\367\367\377\225\256\251\377\224\255\250\377\343" \
+ "\345\333\377\222\354\354\341\377\4\331\336\324\377\223\254\247\377\235" \
+ "\264\257\377\375\375\375\377\207\377\377\377\377\4\351\356\355\377\223" \
+ "\254\247\377\233\262\254\377\352\353\340\377\377\354\354\341\377\267" \
+ "\354\354\341\377\3\277\314\304\377\223\254\247\377\267\310\305\377\210" \
+ "\377\377\377\377\3\312\326\324\377\223\254\247\377\261\301\272\377\224" \
+ "\354\354\341\377\3\245\271\263\377\223\254\247\377\332\343\341\377\210" \
+ "\377\377\377\377\3\251\275\271\377\223\254\247\377\315\326\315\377\366" \
+ "\354\354\341\377\1\336\340\326\377\276\354\354\341\377\4\352\353\340" \
+ "\377\233\262\254\377\223\254\247\377\345\353\352\377\207\377\377\377" \
+ "\377\4\375\376\376\377\236\264\260\377\223\254\247\377\326\334\323\377" \
+ "\210\354\354\341\377\4\327\335\324\377\254\276\270\377\273\311\301\377" \
+ "\330\336\325\377\210\354\354\341\377\3\312\324\313\377\223\254\247\377" \
+ "\255\300\274\377\210\377\377\377\377\3\327\340\337\377\223\254\247\377" \
+ "\250\273\264\377\366\354\354\341\377\4f|v\377^up\377{\215\207\377\276" \
+ "\305\274\377\273\354\354\341\377\3\316\326\315\377\223\254\247\377\246" \
+ "\273\267\377\210\377\377\377\377\3\333\344\342\377\223\254\247\377\242" \
+ "\267\261\377\210\354\354\341\377\6\335\341\330\377\224\255\250\377\235" \
+ "\264\257\377\230\260\254\377\233\262\255\377\352\353\340\377\207\354" \
+ "\354\341\377\4\351\352\337\377\232\261\253\377\223\254\247\377\354\360" \
+ "\357\377\207\377\377\377\377\4\374\375\375\377\233\263\256\377\223\254" \
+ "\247\377\333\340\326\377\342\354\354\341\377\1\321\325\313\377\202Wp" \
+ "j\377\1\314\321\307\377\217\354\354\341\377\1f|v\377\203Slg\377\2\207" \
+ "\227\220\377\352\352\337\377\271\354\354\341\377\3\250\273\265\377\223" \
+ "\254\247\377\323\335\333\377\210\377\377\377\377\3\256\301\275\377\223" \
+ "\254\247\377\310\322\311\377\210\354\354\341\377\6\300\315\305\377\224" \
+ "\255\250\377\366\370\367\377\345\353\352\377\223\254\247\377\316\326" \
+ "\315\377\210\354\354\341\377\3\274\311\302\377\223\254\247\377\276\315" \
+ "\312\377\210\377\377\377\377\3\306\323\320\377\223\254\247\377\266\305" \
+ "\276\377\342\354\354\341\377\1\320\324\313\377\202Slg\377\1\312\320\306" \
+ "\377\217\354\354\341\377\1i~x\377\204Slg\377\1\254\266\256\377\270\354" \
+ "\354\341\377\4\334\340\327\377\223\254\247\377\231\261\254\377\372\373" \
+ "\373\377\207\377\377\377\377\4\355\361\360\377\223\254\247\377\230\260" \
+ "\252\377\350\351\336\377\210\354\354\341\377\6\272\310\300\377\232\261" \
+ "\254\377\377\377\377\377\370\372\371\377\223\254\247\377\310\322\311" \
+ "\377\210\354\354\341\377\4\340\344\331\377\224\255\247\377\230\260\253" \
+ "\377\371\372\372\377\207\377\377\377\377\4\362\365\364\377\224\255\250" \
+ "\377\227\257\251\377\346\350\335\377\341\354\354\341\377\1\320\324\313" \
+ "\377\202Slg\377\1\312\320\306\377\217\354\354\341\377\7\353\353\341\377" \
+ "\335\337\325\377\260\272\261\377cys\377Slg\377_vq\377\350\351\336\377" \
+ "\267\354\354\341\377\3\267\306\276\377\223\254\247\377\302\320\315\377" \
+ "\210\377\377\377\377\3\277\316\313\377\223\254\247\377\271\310\300\377" \
+ "\211\354\354\341\377\6\272\310\300\377\232\261\254\377\377\377\377\377" \
+ "\370\372\371\377\223\254\247\377\310\322\311\377\211\354\354\341\377" \
+ "\3\256\277\270\377\223\254\247\377\320\333\330\377\210\377\377\377\377" \
+ "\3\264\305\302\377\223\254\247\377\305\320\307\377\341\354\354\341\377" \
+ "\1\320\324\313\377\202Slg\377\1\312\320\306\377\222\354\354\341\377\1" \
+ "\312\317\306\377\202Slg\377\1\325\331\317\377\266\354\354\341\377\4\346" \
+ "\350\335\377\227\257\251\377\223\254\247\377\357\363\362\377\207\377" \
+ "\377\377\377\4\371\372\372\377\230\260\253\377\223\254\247\377\336\342" \
+ "\330\377\211\354\354\341\377\6\272\310\300\377\232\261\254\377\377\377" \
+ "\377\377\370\372\371\377\223\254\247\377\310\322\311\377\211\354\354" \
+ "\341\377\3\323\332\321\377\223\254\247\377\243\270\264\377\210\377\377" \
+ "\377\377\3\342\351\347\377\223\254\247\377\240\265\257\377\341\354\354" \
+ "\341\377\1\320\324\313\377\202Slg\377\1\312\320\306\377\223\354\354\341" \
+ "\377\3`wq\377Slg\377\301\310\277\377\266\354\354\341\377\3\305\320\310" \
+ "\377\223\254\247\377\260\302\277\377\210\377\377\377\377\3\321\334\332" \
+ "\377\223\254\247\377\253\275\266\377\212\354\354\341\377\6\272\310\300" \
+ "\377\232\261\254\377\377\377\377\377\370\372\371\377\223\254\247\377" \
+ "\310\322\311\377\212\354\354\341\377\3\240\265\257\377\223\254\247\377" \
+ "\341\350\347\377\210\377\377\377\377\3\243\270\264\377\223\254\247\377" \
+ "\323\332\321\377\340\354\354\341\377\1\320\324\313\377\202Slg\377\1\312" \
+ "\320\306\377\223\354\354\341\377\3f|v\377Slg\377\262\274\263\377\266" \
+ "\354\354\341\377\6\240\265\257\377\223\254\247\377\336\346\344\377\377" \
+ "\377\377\377\366\370\370\377\364\367\366\377\205\377\377\377\377\3\244" \
+ "\271\265\377\223\254\247\377\320\330\317\377\212\354\354\341\377\6\272" \
+ "\310\300\377\232\261\254\377\377\377\377\377\370\372\371\377\223\254" \
+ "\247\377\310\322\311\377\212\354\354\341\377\3\305\320\307\377\223\254" \
+ "\247\377\264\305\302\377\205\377\377\377\377\6\361\364\363\377\372\373" \
+ "\373\377\377\377\377\377\320\333\331\377\223\254\247\377\256\277\270" \
+ "\377\340\354\354\341\377\1\320\324\313\377\202Slg\377\1\312\320\306\377" \
+ "\222\354\354\341\377\4\326\331\317\377Tmg\377Slg\377\303\311\300\377" \
+ "\241\354\354\341\377\1\347\350\335\377\207\261\301\270\377\1\347\350" \
+ "\335\377\213\354\354\341\377\11\323\332\321\377\223\254\247\377\240\266" \
+ "\262\377\353\357\356\377\272\312\307\377\226\256\251\377\225\255\250" \
+ "\377\267\310\304\377\347\354\353\377\202\377\377\377\377\4\343\351\350" \
+ "\377\223\254\247\377\235\264\256\377\353\353\340\377\212\354\354\341" \
+ "\377\6\272\310\300\377\232\261\254\377\377\377\377\377\370\372\371\377" \
+ "\223\254\247\377\310\322\311\377\212\354\354\341\377\4\346\350\335\377" \
+ "\227\257\251\377\224\255\250\377\361\365\364\377\202\377\377\377\377" \
+ "\11\340\347\345\377\261\303\277\377\224\255\250\377\231\260\253\377\300" \
+ "\317\314\377\354\360\360\377\230\260\253\377\224\255\247\377\340\344" \
+ "\331\377\213\354\354\341\377\1\337\343\330\377\206\261\301\270\377\1" \
+ "\263\303\272\377\305\354\354\341\377\1\336\340\326\377\206\324\330\316" \
+ "\377\1\275\304\273\377\202Slg\377\1\270\300\267\377\216\324\330\316\377" \
+ "\5\323\327\315\377\312\317\306\377\300\307\276\377\240\254\244\377e{" \
+ "u\377\202Slg\377\1\327\332\320\377\241\354\354\341\377\1\340\344\331" \
+ "\377\207o\221\212\377\1u\226\217\377\213v\226\217\377\16\212\245\240" \
+ "\377\223\254\247\377\314\330\326\377\243\270\264\377\232\262\255\377" \
+ "\303\321\316\377\306\323\320\377\234\263\257\377\233\262\256\377\374" \
+ "\375\375\377\377\377\377\377\265\306\303\377\223\254\247\377\204\240" \
+ "\232\377\213v\226\217\377\6\206\242\234\377\230\260\253\377\377\377\377" \
+ "\377\370\372\371\377\223\254\247\377\202\237\231\377\213v\226\217\377" \
+ "\16\210\243\236\377\223\254\247\377\305\323\320\377\377\377\377\377\365" \
+ "\367\367\377\225\256\251\377\241\266\262\377\313\327\325\377\275\314" \
+ "\311\377\227\257\252\377\260\302\277\377\277\316\313\377\223\254\247" \
+ "\377\206\242\234\377\213v\226\217\377\1t\225\216\377\206o\221\212\377" \
+ "\1r\223\214\377\305\354\354\341\377\1\215\234\225\377\236Slg\377\2]t" \
+ "o\377\351\351\337\377\241\354\354\341\377\1\340\344\331\377\222o\221" \
+ "\212\377\6t\224\216\377\223\254\247\377\226\256\251\377\334\344\342\377" \
+ "\223\254\247\377\333\343\341\377\202\377\377\377\377\7\344\352\351\377" \
+ "\223\254\247\377\330\341\337\377\363\366\365\377\224\255\250\377\222" \
+ "\253\246\377r\223\214\377\213o\221\212\377\6\203\240\232\377\230\260" \
+ "\253\377\377\377\377\377\370\372\371\377\223\254\247\377~\234\226\377" \
+ "\213o\221\212\377\7v\226\217\377\223\254\247\377\233\262\256\377\374" \
+ "\374\374\377\312\326\324\377\223\254\247\377\361\365\364\377\202\377" \
+ "\377\377\377\6\315\331\326\377\224\255\250\377\337\346\344\377\223\254" \
+ "\247\377\220\252\245\377p\222\213\377\221o\221\212\377\1r\223\214\377" \
+ "\305\354\354\341\377\1\215\234\225\377\236Slg\377\1\253\265\255\377\242" \
+ "\354\354\341\377\1\340\344\331\377\222o\221\212\377\6\202\240\232\377" \
+ "\223\254\247\377\273\313\307\377\304\321\317\377\223\254\247\377\367" \
+ "\371\371\377\202\377\377\377\377\6\375\376\376\377\230\260\253\377\272" \
+ "\312\306\377\307\324\321\377\223\254\247\377\206\242\234\377\214o\221" \
+ "\212\377\6\203\240\232\377\230\260\253\377\377\377\377\377\370\372\371" \
+ "\377\223\254\247\377~\234\226\377\214o\221\212\377\5\213\246\240\377" \
+ "\223\254\247\377\327\340\336\377\254\300\274\377\243\270\264\377\203" \
+ "\377\377\377\377\6\352\357\356\377\223\254\247\377\321\334\332\377\255" \
+ "\300\274\377\223\254\247\377}\233\225\377\221o\221\212\377\1r\223\214" \
+ "\377\305\354\354\341\377\1\215\234\225\377\235Slg\377\2\204\225\216\377" \
+ "\352\352\340\377\242\354\354\341\377\1\340\344\331\377\221o\221\212\377" \
+ "\3p\222\213\377\220\252\245\377\223\254\247\377\202\351\356\355\377\2" \
+ "\223\254\247\377\323\335\333\377\202\377\377\377\377\6\335\345\343\377" \
+ "\223\254\247\377\335\345\344\377\234\263\257\377\223\254\247\377w\227" \
+ "\220\377\214o\221\212\377\6\203\240\232\377\230\260\253\377\377\377\377" \
+ "\377\370\372\371\377\223\254\247\377~\234\226\377\214o\221\212\377\6" \
+ "|\232\224\377\223\254\247\377\251\275\271\377\321\334\332\377\223\254" \
+ "\247\377\353\357\356\377\202\377\377\377\377\6\305\323\320\377\225\255" \
+ "\250\377\364\367\366\377\333\343\341\377\223\254\247\377\214\247\241" \
+ "\377\221o\221\212\377\1r\223\214\377\305\354\354\341\377\1\215\234\225" \
+ "\377\230Slg\377\5Tmg\377axr\377s\207\200\377\207\230\221\377\311\317" \
+ "\305\377\244\354\354\341\377\1\340\344\331\377\207o\221\212\377\1\207" \
+ "\243\233\377\211\212\245\235\377\3\215\250\241\377\223\254\247\377\251" \
+ "\275\271\377\202\377\377\377\377\11\252\276\272\377\224\255\250\377\262" \
+ "\304\300\377\265\306\303\377\225\255\250\377\240\266\262\377\327\340" \
+ "\337\377\223\254\247\377\221\253\245\377\215\212\245\235\377\6\217\251" \
+ "\242\377\231\260\253\377\377\377\377\377\370\372\371\377\223\254\247" \
+ "\377\216\250\241\377\215\212\245\235\377\16\222\253\246\377\223\254\247" \
+ "\377\344\352\351\377\227\257\253\377\227\257\252\377\272\312\307\377" \
+ "\254\277\273\377\223\254\247\377\267\310\305\377\377\377\377\377\375" \
+ "\376\376\377\236\264\260\377\223\254\247\377\214\247\237\377\211\212" \
+ "\245\235\377\1\204\241\231\377\206o\221\212\377\1r\223\214\377\305\354" \
+ "\354\341\377\1\352\352\337\377\206\347\350\335\377\1\314\321\310\377" \
+ "\202Slg\377\1\307\315\303\377\216\347\350\335\377\1\352\352\337\377\250" \
+ "\354\354\341\377\1\351\352\337\377\207\305\317\305\377\1\351\352\337" \
+ "\377\211\354\354\341\377\3\245\271\263\377\223\254\247\377\327\340\336" \
+ "\377\202\377\377\377\377\11\366\370\367\377\313\327\325\377\237\266\261" \
+ "\377\235\264\257\377\310\324\322\377\363\366\365\377\253\277\273\377" \
+ "\223\254\247\377\312\324\313\377\215\354\354\341\377\6\272\310\300\377" \
+ "\232\261\254\377\377\377\377\377\370\372\371\377\223\254\247\377\310" \
+ "\322\311\377\215\354\354\341\377\11\277\313\303\377\223\254\247\377\273" \
+ "\313\307\377\356\362\361\377\301\317\315\377\231\260\254\377\245\272" \
+ "\266\377\321\334\332\377\371\372\372\377\202\377\377\377\377\3\311\326" \
+ "\323\377\223\254\247\377\263\303\274\377\211\354\354\341\377\1\343\346" \
+ "\333\377\206\305\317\305\377\1\307\321\307\377\314\354\354\341\377\1" \
+ "\320\324\313\377\202Slg\377\1\312\320\306\377\310\354\354\341\377\4\331" \
+ "\336\325\377\223\254\247\377\233\263\256\377\374\375\375\377\204\377" \
+ "\377\377\377\7\376\376\376\377\375\375\375\377\377\377\377\377\352\357" \
+ "\356\377\223\254\247\377\232\261\253\377\351\352\337\377\215\354\354" \
+ "\341\377\6\272\310\300\377\232\261\254\377\377\377\377\377\370\372\371" \
+ "\377\223\254\247\377\310\322\311\377\215\354\354\341\377\6\343\345\333" \
+ "\377\224\255\250\377\226\256\251\377\367\370\370\377\377\377\377\377" \
+ "\374\374\374\377\205\377\377\377\377\1\364\367\366\377\202\225\256\251" \
+ "\377\1\345\347\334\377\334\354\354\341\377\1\320\324\313\377\202Slg\377" \
+ "\1\312\320\306\377\310\354\354\341\377\3\264\304\274\377\223\254\247" \
+ "\377\305\323\320\377\210\377\377\377\377\3\275\314\311\377\223\254\247" \
+ "\377\274\311\302\377\216\354\354\341\377\6\272\310\300\377\232\261\254" \
+ "\377\377\377\377\377\370\372\371\377\223\254\247\377\310\322\311\377" \
+ "\216\354\354\341\377\3\260\301\272\377\223\254\247\377\315\330\326\377" \
+ "\210\377\377\377\377\3\270\310\305\377\223\254\247\377\302\316\305\377" \
+ "\334\354\354\341\377\1\331\334\322\377\202\207\230\221\377\1\326\331" \
+ "\317\377\307\354\354\341\377\4\345\347\334\377\225\256\251\377\224\255" \
+ "\250\377\362\365\364\377\207\377\377\377\377\4\367\371\371\377\227\257" \
+ "\252\377\224\255\247\377\340\344\331\377\216\354\354\341\377\6\272\310" \
+ "\300\377\232\261\254\377\377\377\377\377\370\372\371\377\223\254\247" \
+ "\377\310\322\311\377\216\354\354\341\377\4\326\334\322\377\223\254\247" \
+ "\377\240\266\262\377\376\376\376\377\207\377\377\377\377\4\345\353\352" \
+ "\377\223\254\247\377\235\264\256\377\353\353\340\377\377\354\354\341" \
+ "\377\247\354\354\341\377\3\302\316\306\377\223\254\247\377\264\305\302" \
+ "\377\210\377\377\377\377\3\316\332\327\377\223\254\247\377\256\277\270" \
+ "\377\217\354\354\341\377\6\272\310\300\377\232\261\254\377\377\377\377" \
+ "\377\370\372\371\377\223\254\247\377\310\322\311\377\217\354\354\341" \
+ "\377\3\242\267\261\377\223\254\247\377\336\346\344\377\210\377\377\377" \
+ "\377\3\246\273\267\377\223\254\247\377\320\330\317\377\377\354\354\341" \
+ "\377\246\354\354\341\377\4\353\353\341\377\236\264\256\377\223\254\247" \
+ "\377\341\350\347\377\210\377\377\377\377\3\241\267\263\377\223\254\247" \
+ "\377\323\332\321\377\217\354\354\341\377\6\272\310\300\377\232\261\254" \
+ "\377\377\377\377\377\370\372\371\377\223\254\247\377\310\322\311\377" \
+ "\217\354\354\341\377\3\307\321\311\377\223\254\247\377\261\303\277\377" \
+ "\210\377\377\377\377\3\324\336\334\377\223\254\247\377\253\275\266\377" \
+ "\377\354\354\341\377\246\354\354\341\377\3\321\330\317\377\223\254\247" \
+ "\377\243\270\264\377\210\377\377\377\377\3\340\347\345\377\223\254\247" \
+ "\377\240\265\257\377\220\354\354\341\377\6\306\321\311\377\223\254\247" \
+ "\377\337\346\345\377\321\334\331\377\223\254\247\377\324\333\321\377" \
+ "\217\354\354\341\377\4\350\351\336\377\230\257\252\377\223\254\247\377" \
+ "\357\363\362\377\207\377\377\377\377\4\372\373\373\377\231\261\254\377" \
+ "\223\254\247\377\336\342\330\377\351\354\354\341\377\6\343\344\332\377" \
+ "\277\306\275\377\245\261\251\377\234\251\241\377\254\266\256\377\325" \
+ "\330\316\377\265\354\354\341\377\3\253\275\267\377\223\254\247\377\320" \
+ "\333\331\377\210\377\377\377\377\3\262\304\301\377\223\254\247\377\305" \
+ "\320\307\377\220\354\354\341\377\2\351\352\340\377\240\266\257\377\202" \
+ "\223\254\247\377\1\251\274\266\377\221\354\354\341\377\3\271\307\300" \
+ "\377\223\254\247\377\302\320\315\377\210\377\377\377\377\3\302\320\316" \
+ "\377\223\254\247\377\271\307\300\377\334\354\354\341\377\1\303\312\300" \
+ "\377\204\301\310\277\377\1\337\341\326\377\206\354\354\341\377\2\267" \
+ "\277\266\377axr\377\205Slg\377\2\201\222\213\377\335\337\325\377\262" \
+ "\354\354\341\377\4\337\342\330\377\223\254\247\377\230\260\253\377\371" \
+ "\372\372\377\207\377\377\377\377\4\361\364\363\377\224\255\250\377\227" \
+ "\257\251\377\346\350\335\377\221\354\354\341\377\1\334\340\326\377\202" \
+ "\312\324\313\377\1\341\344\331\377\221\354\354\341\377\4\336\342\330" \
+ "\377\223\254\247\377\231\261\254\377\372\373\373\377\207\377\377\377" \
+ "\377\4\357\363\362\377\223\254\247\377\230\260\252\377\350\351\336\377" \
+ "\332\354\354\341\377\1\323\327\315\377\205Slg\377\1\274\304\273\377\205" \
+ "\354\354\341\377\1\261\273\262\377\210Slg\377\2g}w\377\334\337\325\377" \
+ "\261\354\354\341\377\3\272\310\300\377\223\254\247\377\277\316\313\377" \
+ "\210\377\377\377\377\3\304\322\317\377\223\254\247\377\266\305\276\377" \
+ "\250\354\354\341\377\3\252\275\266\377\223\254\247\377\324\336\334\377" \
+ "\210\377\377\377\377\3\261\303\277\377\223\254\247\377\310\322\311\377" \
+ "\332\354\354\341\377\1\240\254\244\377\205Slg\377\1\274\304\273\377\204" \
+ "\354\354\341\377\2\322\326\314\377Xqk\377\211Slg\377\1z\215\206\377\260" \
+ "\354\354\341\377\4\350\351\336\377\230\260\252\377\223\254\247\377\354" \
+ "\360\357\377\207\377\377\377\377\4\373\374\374\377\233\262\255\377\223" \
+ "\254\247\377\334\340\326\377\250\354\354\341\377\3\317\327\316\377\223" \
+ "\254\247\377\246\273\267\377\210\377\377\377\377\3\336\346\344\377\223" \
+ "\254\247\377\242\267\261\377\332\354\354\341\377\1m\202|\377\202Slg\377" \
+ "\4Yql\377\234\251\241\377\301\310\277\377\346\347\334\377\204\354\354" \
+ "\341\377\1\204\225\216\377\204Slg\377\4Xqk\377v\212\203\377y\214\206" \
+ "\377[sm\377\203Slg\377\1\276\305\274\377\257\354\354\341\377\3\310\322" \
+ "\312\377\223\254\247\377\255\300\274\377\210\377\377\377\377\3\325\337" \
+ "\335\377\223\254\247\377\250\273\264\377\251\354\354\341\377\4\353\353" \
+ "\340\377\235\263\255\377\223\254\247\377\345\353\352\377\207\377\377" \
+ "\377\377\4\376\376\376\377\241\266\262\377\223\254\247\377\326\334\323" \
+ "\377\330\354\354\341\377\1\323\327\315\377\202Slg\377\2i~x\377\323\327" \
+ "\315\377\206\354\354\341\377\2\334\337\325\377Uni\377\203Slg\377\2s\207" \
+ "\201\377\332\335\323\377\202\354\354\341\377\2\352\352\337\377\222\241" \
+ "\231\377\202Slg\377\1\203\224\215\377\257\354\354\341\377\3\243\267\261" \
+ "\377\223\254\247\377\333\343\341\377\210\377\377\377\377\3\250\274\270" \
+ "\377\223\254\247\377\315\326\315\377\252\354\354\341\377\3\301\315\305" \
+ "\377\223\254\247\377\270\310\305\377\210\377\377\377\377\3\315\330\326" \
+ "\377\223\254\247\377\261\301\272\377\330\354\354\341\377\1\257\271\260" \
+ "\377\202Slg\377\1\303\311\300\377\207\354\354\341\377\1\240\255\245\377" \
+ "\203Slg\377\2Yql\377\331\334\322\377\205\354\354\341\377\4~\220\211\377" \
+ "Slg\377Xqk\377\352\352\337\377\255\354\354\341\377\4\326\334\323\377" \
+ "\223\254\247\377\236\264\260\377\375\375\375\377\207\377\377\377\377" \
+ "\4\347\355\354\377\223\254\247\377\233\262\254\377\352\353\340\377\252" \
+ "\354\354\341\377\4\344\346\334\377\225\256\250\377\225\256\251\377\364" \
+ "\367\366\377\207\377\377\377\377\4\367\371\370\377\226\257\252\377\224" \
+ "\255\250\377\343\345\333\377\327\354\354\341\377\3\234\251\241\377Sl" \
+ "g\377u\210\202\377\210\354\354\341\377\1l\201{\377\203Slg\377\1\235\252" \
+ "\242\377\206\354\354\341\377\1\301\310\277\377\202Slg\377\1\321\325\313" \
+ "\377\255\354\354\341\377\3\261\302\273\377\223\254\247\377\311\326\323" \
+ "\377\210\377\377\377\377\3\272\312\306\377\223\254\247\377\277\313\303" \
+ "\377\254\354\354\341\377\3\263\303\274\377\223\254\247\377\311\326\323" \
+ "\377\210\377\377\377\377\3\273\313\310\377\223\254\247\377\277\314\304" \
+ "\377\327\354\354\341\377\3\210\231\222\377Slg\377\223\242\232\377\207" \
+ "\354\354\341\377\1\326\331\317\377\203Slg\377\2Tmg\377\330\333\321\377" \
+ "\206\354\354\341\377\4\350\350\336\377Tmg\377Slg\377\275\304\273\377" \
+ "\254\354\354\341\377\4\343\346\333\377\225\255\250\377\225\256\251\377" \
+ "\364\367\366\377\207\377\377\377\377\4\366\370\367\377\226\256\251\377" \
+ "\224\255\250\377\343\345\333\377\254\354\354\341\377\4\330\336\324\377" \
+ "\223\254\247\377\236\264\260\377\375\376\376\377\207\377\377\377\377" \
+ "\4\351\356\355\377\223\254\247\377\233\262\254\377\352\353\340\377\326" \
+ "\354\354\341\377\3u\211\202\377Slg\377\251\264\253\377\207\354\354\341" \
+ "\377\1\246\261\251\377\203Slg\377\1y\214\205\377\210\354\354\341\377" \
+ "\3`wr\377Slg\377\264\275\264\377\254\354\354\341\377\3\277\314\304\377" \
+ "\223\254\247\377\267\310\305\377\210\377\377\377\377\3\313\327\325\377" \
+ "\223\254\247\377\260\301\272\377\256\354\354\341\377\3\244\270\262\377" \
+ "\223\254\247\377\333\343\342\377\210\377\377\377\377\3\252\276\272\377" \
+ "\223\254\247\377\315\326\315\377\326\354\354\341\377\3t\210\201\377S" \
+ "lg\377\250\263\253\377\207\354\354\341\377\1s\207\201\377\203Slg\377" \
+ "\1\261\273\262\377\210\354\354\341\377\3k\200z\377Slg\377\260\272\261" \
+ "\377\253\354\354\341\377\4\352\353\340\377\234\262\255\377\223\254\247" \
+ "\377\345\353\352\377\207\377\377\377\377\4\376\376\376\377\237\265\261" \
+ "\377\223\254\247\377\326\334\322\377\256\354\354\341\377\3\311\323\312" \
+ "\377\223\254\247\377\256\301\275\377\210\377\377\377\377\3\327\340\337" \
+ "\377\223\254\247\377\250\273\265\377\326\354\354\341\377\3\207\230\221" \
+ "\377Slg\377\227\245\236\377\206\354\354\341\377\1\326\331\317\377\203" \
+ "Slg\377\2Woj\377\342\343\331\377\210\354\354\341\377\3Zrm\377Slg\377" \
+ "\270\301\270\377\253\354\354\341\377\3\316\326\315\377\223\254\247\377" \
+ "\246\273\267\377\210\377\377\377\377\3\335\345\343\377\223\254\247\377" \
+ "\242\267\261\377\257\354\354\341\377\4\351\352\337\377\231\260\253\377" \
+ "\223\254\247\377\354\361\360\377\207\377\377\377\377\4\374\375\375\377" \
+ "\233\263\256\377\223\254\247\377\334\340\326\377\325\354\354\341\377" \
+ "\3\232\250\240\377Slg\377x\213\204\377\206\354\354\341\377\1\235\252" \
+ "\242\377\203Slg\377\1\201\223\214\377\210\354\354\341\377\1\341\342\330" \
+ "\377\202Slg\377\1\303\311\300\377\253\354\354\341\377\3\250\273\265\377" \
+ "\223\254\247\377\324\336\334\377\210\377\377\377\377\3\257\302\276\377" \
+ "\223\254\247\377\307\322\311\377\260\354\354\341\377\3\273\311\301\377" \
+ "\223\254\247\377\277\316\313\377\210\377\377\377\377\3\306\323\320\377" \
+ "\223\254\247\377\266\305\276\377\325\354\354\341\377\1\256\270\260\377" \
+ "\202Slg\377\1\322\326\314\377\204\354\354\341\377\2\332\335\323\377Z" \
+ "rl\377\203Slg\377\1\271\301\270\377\210\354\354\341\377\1\267\300\267" \
+ "\377\202Slg\377\1\332\335\323\377\252\354\354\341\377\4\334\341\327\377" \
+ "\223\254\247\377\231\261\254\377\372\373\373\377\207\377\377\377\377" \
+ "\4\356\362\361\377\223\254\247\377\230\260\252\377\350\351\336\377\260" \
+ "\354\354\341\377\4\340\343\331\377\223\254\247\377\230\260\253\377\371" \
+ "\372\372\377\207\377\377\377\377\4\362\365\364\377\224\255\250\377\227" \
+ "\257\251\377\346\350\335\377\324\354\354\341\377\11\340\342\327\377Z" \
+ "rl\377Slg\377e{u\377\312\320\306\377\353\353\341\377\354\354\341\377" \
+ "\325\330\316\377p\205~\377\203Slg\377\2axr\377\351\351\337\377\207\354" \
+ "\354\341\377\4\353\353\340\377k\200z\377Slg\377[sn\377\253\354\354\341" \
+ "\377\3\267\306\276\377\223\254\247\377\302\320\315\377\210\377\377\377" \
+ "\377\3\301\317\315\377\223\254\247\377\271\307\300\377\262\354\354\341" \
+ "\377\3\254\276\270\377\223\254\247\377\320\333\331\377\210\377\377\377" \
+ "\377\3\264\306\302\377\223\254\247\377\305\320\310\377\325\354\354\341" \
+ "\377\1\231\246\236\377\203Slg\377\2]to\377dzt\377\205Slg\377\1\235\252" \
+ "\242\377\207\354\354\341\377\2\344\345\333\377\210\230\221\377\202Sl" \
+ "g\377\1\202\223\214\377\252\354\354\341\377\4\347\350\336\377\227\257" \
+ "\252\377\223\254\247\377\357\363\362\377\207\377\377\377\377\4\372\373" \
+ "\373\377\231\261\254\377\223\254\247\377\336\342\330\377\262\354\354" \
+ "\341\377\3\322\331\320\377\223\254\247\377\244\271\264\377\210\377\377" \
+ "\377\377\3\342\351\347\377\223\254\247\377\240\265\257\377\325\354\354" \
+ "\341\377\2\336\340\326\377^up\377\210Slg\377\2i\177y\377\344\345\333" \
+ "\377\204\354\354\341\377\4\347\347\335\377\267\277\266\377\230\246\236" \
+ "\377g}w\377\203Slg\377\1\256\270\257\377\252\354\354\341\377\3\305\320" \
+ "\310\377\223\254\247\377\261\303\277\377\210\377\377\377\377\3\323\335" \
+ "\333\377\223\254\247\377\252\275\266\377\263\354\354\341\377\4\353\353" \
+ "\341\377\237\265\257\377\223\254\247\377\342\351\350\377\210\377\377" \
+ "\377\377\3\244\271\264\377\223\254\247\377\323\332\321\377\325\354\354" \
+ "\341\377\2\327\332\320\377l\201{\377\206Slg\377\2\\tn\377\317\324\312" \
+ "\377\205\354\354\341\377\1\325\330\316\377\205Slg\377\2Voi\377\337\341" \
+ "\327\377\252\354\354\341\377\3\240\266\260\377\223\254\247\377\336\346" \
+ "\344\377\210\377\377\377\377\3\245\272\266\377\223\254\247\377\320\330" \
+ "\317\377\264\354\354\341\377\3\304\317\307\377\223\254\247\377\265\306" \
+ "\303\377\210\377\377\377\377\3\320\333\331\377\223\254\247\377\256\277" \
+ "\271\377\326\354\354\341\377\10\344\345\333\377\232\250\240\377w\212" \
+ "\204\377Xqk\377Slg\377axr\377\213\233\224\377\336\340\326\377\206\354" \
+ "\354\341\377\1\325\330\316\377\205Slg\377\1\206\227\220\377\252\354\354" \
+ "\341\377\4\324\332\321\377\223\254\247\377\241\266\262\377\376\376\376" \
+ "\377\207\377\377\377\377\4\344\352\351\377\223\254\247\377\235\263\256" \
+ "\377\353\353\340\377\264\354\354\341\377\4\346\347\335\377\226\256\251" \
+ "\377\224\255\250\377\362\365\365\377\207\377\377\377\377\4\371\372\372" \
+ "\377\230\260\253\377\224\255\247\377\341\344\332\377\330\354\354\341" \
+ "\377\2\352\352\337\377\342\343\331\377\211\354\354\341\377\1\350\351" \
+ "\336\377\205\324\330\316\377\1\342\343\331\377\252\354\354\341\377\3" \
+ "\256\300\271\377\223\254\247\377\315\330\326\377\210\377\377\377\377" \
+ "\3\267\310\304\377\223\254\247\377\301\315\305\377\266\354\354\341\377" \
+ "\3\265\305\275\377\223\254\247\377\306\323\321\377\210\377\377\377\377" \
+ "\3\277\316\313\377\223\254\247\377\274\312\302\377\377\354\354\341\377" \
+ "\224\354\354\341\377\4\341\344\332\377\224\255\247\377\226\257\252\377" \
+ "\367\370\370\377\207\377\377\377\377\4\364\367\366\377\225\255\250\377" \
+ "\225\256\250\377\345\347\334\377\266\354\354\341\377\4\333\337\326\377" \
+ "\223\254\247\377\234\263\256\377\374\375\375\377\207\377\377\377\377" \
+ "\4\354\360\357\377\223\254\247\377\232\261\253\377\351\352\337\377\377" \
+ "\354\354\341\377\223\354\354\341\377\3\275\312\302\377\223\254\247\377" \
+ "\273\313\310\377\210\377\377\377\377\3\310\325\322\377\223\254\247\377" \
+ "\263\303\274\377\270\354\354\341\377\3\247\272\264\377\223\254\247\377" \
+ "\330\341\337\377\210\377\377\377\377\3\255\300\274\377\223\254\247\377" \
+ "\313\324\313\377\377\354\354\341\377\222\354\354\341\377\4\352\352\337" \
+ "\377\232\261\254\377\223\254\247\377\351\356\355\377\207\377\377\377" \
+ "\377\4\375\375\375\377\235\264\257\377\223\254\247\377\330\336\324\377" \
+ "\270\354\354\341\377\3\314\325\314\377\223\254\247\377\252\276\272\377" \
+ "\210\377\377\377\377\3\333\343\342\377\223\254\247\377\245\271\263\377" \
+ "\321\354\354\341\377\1\331\334\322\377\202\202\224\215\377\1\325\331" \
+ "\317\377\274\354\354\341\377\3\313\324\314\377\223\254\247\377\252\276" \
+ "\272\377\210\377\377\377\377\3\332\343\341\377\223\254\247\377\245\271" \
+ "\263\377\271\354\354\341\377\4\352\352\340\377\233\262\254\377\223\254" \
+ "\247\377\351\356\355\377\207\377\377\377\377\4\375\376\376\377\236\264" \
+ "\260\377\223\254\247\377\331\336\325\377\320\354\354\341\377\1\320\324" \
+ "\313\377\202Slg\377\1\312\320\306\377\274\354\354\341\377\3\246\272\263" \
+ "\377\223\254\247\377\327\340\337\377\210\377\377\377\377\3\254\300\274" \
+ "\377\223\254\247\377\312\324\313\377\272\354\354\341\377\3\276\313\303" \
+ "\377\223\254\247\377\274\314\310\377\210\377\377\377\377\3\311\326\323" \
+ "\377\223\254\247\377\264\304\274\377\320\354\354\341\377\1\320\324\313" \
+ "\377\202Slg\377\1\312\320\306\377\273\354\354\341\377\4\332\337\325\377" \
+ "\223\254\247\377\233\263\256\377\374\375\375\377\207\377\377\377\377" \
+ "\4\354\360\357\377\223\254\247\377\231\261\253\377\351\352\337\377\272" \
+ "\354\354\341\377\4\342\345\332\377\224\255\250\377\226\257\252\377\367" \
+ "\371\371\377\207\377\377\377\377\1\364\367\366\377\202\225\256\251\377" \
+ "\1\345\347\334\377\317\354\354\341\377\1\320\324\313\377\202Slg\377\1" \
+ "\312\320\306\377\273\354\354\341\377\3\264\304\275\377\223\254\247\377" \
+ "\306\323\320\377\210\377\377\377\377\3\276\315\312\377\223\254\247\377" \
+ "\273\311\301\377\274\354\354\341\377\3\257\300\271\377\223\254\247\377" \
+ "\315\331\327\377\210\377\377\377\377\3\270\310\305\377\223\254\247\377" \
+ "\302\316\306\377\317\354\354\341\377\1\320\324\313\377\202Slg\377\1p" \
+ "\205~\377\224y\214\205\377\5|\217\210\377\210\231\222\377\226\244\234" \
+ "\377\266\277\266\377\334\336\324\377\241\354\354\341\377\4\345\347\334" \
+ "\377\226\256\251\377\224\255\250\377\362\365\364\377\207\377\377\377" \
+ "\377\4\371\372\372\377\230\260\253\377\224\255\247\377\340\344\331\377" \
+ "\274\354\354\341\377\4\325\333\322\377\223\254\247\377\241\267\262\377" \
+ "\376\376\376\377\207\377\377\377\377\4\345\353\352\377\223\254\247\377" \
+ "\236\264\256\377\353\353\340\377\316\354\354\341\377\1\320\324\313\377" \
+ "\234Slg\377\2\202\224\215\377\320\324\313\377\237\354\354\341\377\3\302" \
+ "\316\306\377\223\254\247\377\264\306\302\377\210\377\377\377\377\3\320" \
+ "\333\330\377\223\254\247\377\255\277\270\377\276\354\354\341\377\3\241" \
+ "\266\260\377\223\254\247\377\337\346\345\377\210\377\377\377\377\3\246" \
+ "\273\267\377\223\254\247\377\320\330\317\377\316\354\354\341\377\1\320" \
+ "\324\313\377\235Slg\377\2Uni\377\250\263\253\377\235\354\354\341\377" \
+ "\4\353\353\341\377\236\264\256\377\223\254\247\377\342\351\347\377\210" \
+ "\377\377\377\377\3\243\270\264\377\223\254\247\377\323\332\320\377\276" \
+ "\354\354\341\377\3\306\321\310\377\223\254\247\377\261\303\300\377\210" \
+ "\377\377\377\377\3\324\336\334\377\223\254\247\377\253\275\267\377\316" \
+ "\354\354\341\377\1\320\324\313\377\237Slg\377\1\240\254\244\377\234\354" \
+ "\354\341\377\3\321\331\317\377\223\254\247\377\243\270\264\377\210\377" \
+ "\377\377\377\3\341\350\347\377\223\254\247\377\237\265\257\377\277\354" \
+ "\354\341\377\4\347\350\336\377\227\257\252\377\223\254\247\377\360\363" \
+ "\363\377\207\377\377\377\377\4\372\373\373\377\232\261\255\377\223\254" \
+ "\247\377\336\342\330\377\315\354\354\341\377\1\341\342\330\377\202\256" \
+ "\270\257\377\2\252\265\254\377d{u\377\202Slg\377\5[sn\377w\212\204\377" \
+ "\210\231\222\377\232\250\240\377\253\265\255\377\202\256\270\257\377" \
+ "\4\245\260\250\377\223\242\232\377\201\223\214\377o\203}\377\203Slg\377" \
+ "\1\210\230\221\377\202\256\270\257\377\5\251\264\253\377\227\245\236" \
+ "\377\206\227\220\377u\210\202\377Xqk\377\203Slg\377\2Tmh\377\304\313" \
+ "\301\377\233\354\354\341\377\3\253\276\267\377\223\254\247\377\320\333" \
+ "\331\377\210\377\377\377\377\3\264\305\302\377\223\254\247\377\304\317" \
+ "\307\377\300\354\354\341\377\3\270\306\277\377\223\254\247\377\303\321" \
+ "\316\377\210\377\377\377\377\3\302\320\316\377\223\254\247\377\271\310" \
+ "\300\377\317\354\354\341\377\6\326\331\317\377p\205~\377Slg\377g}w\377" \
+ "\251\264\254\377\345\346\333\377\212\354\354\341\377\6\322\326\314\377" \
+ "\216\235\226\377Wpj\377Tmh\377\234\251\241\377\353\353\340\377\204\354" \
+ "\354\341\377\3\336\340\326\377\231\246\236\377Zrl\377\202Slg\377\1s\207" \
+ "\201\377\232\354\354\341\377\4\337\343\331\377\223\254\247\377\230\260" \
+ "\253\377\371\372\372\377\207\377\377\377\377\4\362\365\364\377\224\255" \
+ "\250\377\227\257\251\377\346\350\335\377\300\354\354\341\377\4\335\341" \
+ "\327\377\223\254\247\377\232\262\255\377\373\374\374\377\207\377\377" \
+ "\377\377\4\357\363\362\377\223\254\247\377\230\260\252\377\350\351\336" \
+ "\377\315\354\354\341\377\5\341\343\330\377g}w\377Slg\377\204\225\216" \
+ "\377\352\352\340\377\216\354\354\341\377\4\323\327\315\377]to\377Slg" \
+ "\377\234\251\241\377\206\354\354\341\377\2\331\334\322\377]uo\377\202" \
+ "Slg\377\1\311\316\305\377\231\354\354\341\377\3\272\310\300\377\223\254" \
+ "\247\377\277\316\313\377\210\377\377\377\377\3\305\323\320\377\223\254" \
+ "\247\377\266\305\276\377\302\354\354\341\377\3\251\274\266\377\223\254" \
+ "\247\377\325\336\334\377\210\377\377\377\377\3\261\303\300\377\223\254" \
+ "\247\377\310\322\312\377\315\354\354\341\377\4\204\225\216\377Slg\377" \
+ "s\207\201\377\347\347\335\377\220\354\354\341\377\4\303\312\300\377U" \
+ "ni\377Slg\377\301\310\277\377\206\354\354\341\377\1\272\302\271\377\202" \
+ "Slg\377\1\235\252\242\377\230\354\354\341\377\4\350\351\336\377\230\260" \
+ "\252\377\223\254\247\377\354\360\357\377\207\377\377\377\377\4\374\375" \
+ "\375\377\233\263\256\377\223\254\247\377\333\340\326\377\302\354\354" \
+ "\341\377\3\317\327\316\377\223\254\247\377\247\274\270\377\210\377\377" \
+ "\377\377\3\336\346\344\377\223\254\247\377\243\267\261\377\314\354\354" \
+ "\341\377\4\330\333\321\377Tmg\377Slg\377\310\316\304\377\222\354\354" \
+ "\341\377\3\206\227\220\377Slg\377\177\221\212\377\207\354\354\341\377" \
+ "\3z\215\206\377Slg\377x\213\205\377\230\354\354\341\377\3\310\322\312" \
+ "\377\223\254\247\377\255\300\274\377\210\377\377\377\377\3\327\340\337" \
+ "\377\223\254\247\377\247\273\264\377\303\354\354\341\377\4\353\353\340" \
+ "\377\234\263\255\377\223\254\247\377\346\354\353\377\207\377\377\377" \
+ "\377\4\376\376\376\377\241\266\262\377\223\254\247\377\326\334\323\377" \
+ "\313\354\354\341\377\4\241\255\245\377Slg\377Unh\377\345\346\334\377" \
+ "\222\354\354\341\377\4\245\261\251\377Slg\377Unh\377\341\342\330\377" \
+ "\206\354\354\341\377\3\230\246\236\377Slg\377f|v\377\230\354\354\341" \
+ "\377\3\243\270\261\377\223\254\247\377\333\343\342\377\210\377\377\377" \
+ "\377\3\251\275\271\377\223\254\247\377\315\326\315\377\304\354\354\341" \
+ "\377\3\300\314\304\377\223\254\247\377\271\311\306\377\210\377\377\377" \
+ "\377\3\315\331\326\377\223\254\247\377\261\302\273\377\313\354\354\341" \
+ "\377\3\207\230\221\377Slg\377m\202|\377\223\354\354\341\377\1\304\312" \
+ "\301\377\202Slg\377\1\312\317\306\377\206\354\354\341\377\3\262\273\263" \
+ "\377Slg\377Zrm\377\227\354\354\341\377\4\327\335\323\377\223\254\247" \
+ "\377\236\264\260\377\375\376\376\377\207\377\377\377\377\4\351\356\355" \
+ "\377\223\254\247\377\233\262\254\377\352\352\340\377\304\354\354\341" \
+ "\377\4\344\346\334\377\225\255\250\377\226\256\251\377\365\370\367\377" \
+ "\207\377\377\377\377\4\367\371\370\377\226\257\252\377\224\255\250\377" \
+ "\343\345\333\377\312\354\354\341\377\3v\212\203\377Slg\377o\203}\377" \
+ "\223\354\354\341\377\1\306\314\303\377\202Slg\377\1\270\301\270\377\206" \
+ "\354\354\341\377\3\306\314\302\377Slg\377Uni\377\227\354\354\341\377" \
+ "\3\261\302\273\377\223\254\247\377\311\326\323\377\210\377\377\377\377" \
+ "\3\273\313\310\377\223\254\247\377\276\313\303\377\306\354\354\341\377" \
+ "\6\262\302\273\377\223\254\247\377\261\304\277\377\336\345\344\377\355" \
+ "\361\360\377\374\374\374\377\205\377\377\377\377\3\274\313\310\377\223" \
+ "\254\247\377\277\314\304\377\312\354\354\341\377\4q\205\177\377Slg\377" \
+ "[sm\377\350\351\336\377\222\354\354\341\377\1\256\270\260\377\202Slg" \
+ "\377\1\264\275\264\377\206\354\354\341\377\3\272\302\271\377Slg\377]" \
+ "uo\377\226\354\354\341\377\4\343\346\333\377\225\255\250\377\225\256" \
+ "\251\377\364\367\366\377\207\377\377\377\377\4\367\371\370\377\226\257" \
+ "\252\377\224\255\250\377\343\345\333\377\306\354\354\341\377\4\327\335" \
+ "\323\377\223\254\247\377\224\255\250\377\231\261\254\377\202\223\254" \
+ "\247\377\11\237\265\261\377\257\301\275\377\276\315\312\377\315\331\326" \
+ "\377\334\344\343\377\332\342\340\377\223\254\247\377\234\262\255\377" \
+ "\352\353\340\377\311\354\354\341\377\1\201\222\213\377\202Slg\377\1\272" \
+ "\302\271\377\222\354\354\341\377\1x\213\204\377\202Slg\377\1\303\311" \
+ "\300\377\206\354\354\341\377\3\250\263\253\377Slg\377g}w\377\226\354" \
+ "\354\341\377\3\300\314\304\377\223\254\247\377\270\310\305\377\210\377" \
+ "\377\377\377\3\315\331\326\377\223\254\247\377\260\301\272\377\310\354" \
+ "\354\341\377\12\234\263\255\377\223\254\247\377\333\343\341\377\367\370" \
+ "\370\377\350\355\354\377\330\341\340\377\311\326\323\377\272\312\307" \
+ "\377\253\277\273\377\234\263\256\377\203\223\254\247\377\1\314\325\314" \
+ "\377\311\354\354\341\377\1\232\247\237\377\202Slg\377\2e{u\377\342\343" \
+ "\331\377\220\354\354\341\377\1\256\270\260\377\202Slg\377\2Tmg\377\333" \
+ "\336\324\377\206\354\354\341\377\3|\216\210\377Slg\377{\216\207\377\225" \
+ "\354\354\341\377\4\353\353\340\377\234\263\255\377\223\254\247\377\345" \
+ "\353\352\377\207\377\377\377\377\4\376\376\376\377\241\266\262\377\223" \
+ "\254\247\377\325\334\322\377\310\354\354\341\377\3\306\320\310\377\223" \
+ "\254\247\377\246\273\266\377\207\377\377\377\377\7\371\372\372\377\312" \
+ "\326\324\377\223\254\247\377\241\266\260\377\354\354\341\377\341\344" \
+ "\331\377\334\340\326\377\306\354\354\341\377\1\315\322\311\377\203Sl" \
+ "g\377\2j\177y\377\317\324\312\377\215\354\354\341\377\3\352\352\337\377" \
+ "\243\257\247\377Tmh\377\202Slg\377\1v\211\203\377\206\354\354\341\377" \
+ "\1\320\324\313\377\202Slg\377\1\221\240\231\377\225\354\354\341\377\3" \
+ "\316\327\316\377\223\254\247\377\246\273\267\377\210\377\377\377\377" \
+ "\3\336\346\344\377\223\254\247\377\242\267\261\377\311\354\354\341\377" \
+ "\4\351\351\337\377\225\255\250\377\223\254\247\377\355\361\361\377\207" \
+ "\377\377\377\377\6\374\375\375\377\227\257\252\377\223\254\247\377\306" \
+ "\321\310\377\223\254\247\377\251\274\266\377\307\354\354\341\377\1x\213" \
+ "\204\377\203Slg\377\4Tmg\377\205\226\217\377\272\302\271\377\342\344" \
+ "\331\377\207\354\354\341\377\4\353\353\341\377\322\326\314\377\245\261" \
+ "\251\377g}w\377\204Slg\377\1\272\302\271\377\205\354\354\341\377\2\315" \
+ "\322\311\377axr\377\202Slg\377\1\264\275\264\377\225\354\354\341\377" \
+ "\3\251\274\265\377\223\254\247\377\324\336\334\377\210\377\377\377\377" \
+ "\3\261\303\300\377\223\254\247\377\307\321\311\377\312\354\354\341\377" \
+ "\3\264\303\274\377\223\254\247\377\271\311\307\377\210\377\377\377\377" \
+ "\6\276\315\312\377\223\254\247\377\255\277\270\377\230\260\252\377\223" \
+ "\254\247\377\334\341\327\377\306\354\354\341\377\2\324\330\316\377Wp" \
+ "j\377\206Slg\377\10cys\377x\213\204\377\177\221\212\377\205\226\217\377" \
+ "\203\224\215\377}\217\210\377o\204}\377Yql\377\206Slg\377\1\201\223\214" \
+ "\377\204\354\354\341\377\3\276\305\274\377\200\222\213\377Voi\377\203" \
+ "Slg\377\1\332\335\323\377\224\354\354\341\377\4\335\341\327\377\223\254" \
+ "\247\377\232\261\255\377\373\374\374\377\207\377\377\377\377\4\357\363" \
+ "\362\377\223\254\247\377\230\257\252\377\347\351\336\377\312\354\354" \
+ "\341\377\4\337\343\331\377\223\254\247\377\225\255\251\377\371\373\373" \
+ "\377\207\377\377\377\377\6\362\365\365\377\223\254\247\377\225\255\250" \
+ "\377\270\306\277\377\223\254\247\377\267\306\277\377\307\354\354\341" \
+ "\377\2\277\306\275\377Wpj\377\222Slg\377\2u\211\202\377\344\345\332\377" \
+ "\204\354\354\341\377\1y\214\206\377\204Slg\377\1s\207\200\377\225\354" \
+ "\354\341\377\3\267\306\277\377\223\254\247\377\302\320\316\377\210\377" \
+ "\377\377\377\3\302\320\316\377\223\254\247\377\271\307\300\377\314\354" \
+ "\354\341\377\3\244\270\261\377\223\254\247\377\317\332\330\377\204\377" \
+ "\377\377\377\1\370\371\371\377\203\377\377\377\377\6\252\276\271\377" \
+ "\223\254\247\377\272\310\302\377\223\254\247\377\227\257\252\377\347" \
+ "\350\336\377\307\354\354\341\377\2\304\313\301\377czt\377\220Slg\377" \
+ "\2\205\226\217\377\344\345\333\377\205\354\354\341\377\1\210\230\221" \
+ "\377\204f|v\377\1\261\272\262\377\224\354\354\341\377\4\347\350\336\377" \
+ "\227\257\252\377\223\254\247\377\357\363\362\377\207\377\377\377\377" \
+ "\4\373\374\374\377\232\261\255\377\223\254\247\377\336\342\330\377\314" \
+ "\354\354\341\377\3\320\331\317\377\223\254\247\377\235\263\257\377\203" \
+ "\377\377\377\377\3\324\336\334\377\227\257\252\377\367\370\370\377\202" \
+ "\377\377\377\377\6\341\350\346\377\223\254\247\377\232\262\254\377\253" \
+ "\275\267\377\223\254\247\377\305\320\310\377\310\354\354\341\377\3\343" \
+ "\344\332\377\224\242\233\377Yql\377\214Slg\377\2l\201{\377\273\303\272" \
+ "\377\241\354\354\341\377\3\306\320\310\377\223\254\247\377\261\303\300" \
+ "\377\210\377\377\377\377\3\324\336\334\377\223\254\247\377\252\275\266" \
+ "\377\315\354\354\341\377\4\353\353\341\377\230\260\252\377\223\254\247" \
+ "\377\343\352\350\377\202\377\377\377\377\3\357\363\362\377\223\254\247" \
+ "\377\315\330\326\377\203\377\377\377\377\5\234\262\256\377\223\254\247" \
+ "\377\240\265\257\377\223\254\247\377\241\266\257\377\312\354\354\341" \
+ "\377\4\343\344\332\377\255\267\257\377\204\225\216\377bys\377\205Slg" \
+ "\377\4Uni\377r\206\177\377\223\242\232\377\306\314\303\377\243\354\354" \
+ "\341\377\3\241\266\260\377\223\254\247\377\336\346\344\377\210\377\377" \
+ "\377\377\3\247\273\267\377\223\254\247\377\320\330\317\377\316\354\354" \
+ "\341\377\3\276\313\303\377\223\254\247\377\255\300\274\377\203\377\377" \
+ "\377\377\3\261\303\300\377\241\266\262\377\376\376\376\377\202\377\377" \
+ "\377\377\1\313\327\324\377\202\223\254\247\377\3\226\256\251\377\223" \
+ "\254\247\377\324\333\321\377\315\354\354\341\377\6\344\345\333\377\333" \
+ "\336\324\377\322\326\314\377\326\331\317\377\337\341\326\377\351\351" \
+ "\337\377\245\354\354\341\377\4\324\333\322\377\223\254\247\377\241\266" \
+ "\262\377\376\376\376\377\207\377\377\377\377\4\346\353\352\377\223\254" \
+ "\247\377\235\263\256\377\353\353\340\377\316\354\354\341\377\4\345\347" \
+ "\335\377\224\254\250\377\223\254\247\377\363\366\365\377\202\377\377" \
+ "\377\377\3\337\346\345\377\223\254\247\377\336\346\344\377\202\377\377" \
+ "\377\377\6\371\372\372\377\225\255\250\377\224\254\247\377\275\312\302" \
+ "\377\223\254\247\377\256\300\271\377\370\354\354\341\377\3\257\300\271" \
+ "\377\223\254\247\377\315\331\326\377\210\377\377\377\377\3\270\311\305" \
+ "\377\223\254\247\377\301\315\305\377\320\354\354\341\377\3\254\276\270" \
+ "\377\223\254\247\377\301\320\314\377\202\377\377\377\377\3\376\376\376" \
+ "\377\241\266\262\377\261\303\300\377\203\377\377\377\377\6\265\306\303" \
+ "\377\223\254\247\377\266\303\274\377\225\256\251\377\224\255\250\377" \
+ "\341\344\332\377\366\354\354\341\377\4\342\344\332\377\224\255\250\377" \
+ "\226\257\252\377\367\371\370\377\207\377\377\377\377\4\365\367\367\377" \
+ "\225\256\251\377\225\256\250\377\344\346\334\377\320\354\354\341\377" \
+ "\4\332\337\325\377\223\254\247\377\227\257\253\377\374\375\375\377\202" \
+ "\377\377\377\377\3\315\331\326\377\223\254\247\377\360\363\363\377\202" \
+ "\377\377\377\377\6\354\361\360\377\223\254\247\377\226\256\251\377\263" \
+ "\303\274\377\223\254\247\377\275\312\302\377\330\354\354\341\377\3\333" \
+ "\335\323\377\317\324\312\377\326\332\320\377\233\354\354\341\377\3\275" \
+ "\312\303\377\223\254\247\377\274\313\310\377\210\377\377\377\377\3\312" \
+ "\326\324\377\223\254\247\377\263\303\274\377\322\354\354\341\377\3\237" \
+ "\265\257\377\223\254\247\377\327\341\337\377\202\377\377\377\377\3\367" \
+ "\371\370\377\226\257\252\377\303\321\316\377\203\377\377\377\377\6\243" \
+ "\271\264\377\223\254\247\377\276\313\304\377\223\254\247\377\232\262" \
+ "\254\377\352\353\340\377\327\354\354\341\377\3\215\234\225\377Slg\377" \
+ "y\214\205\377\232\354\354\341\377\4\352\352\337\377\232\261\254\377\223" \
+ "\254\247\377\351\356\355\377\207\377\377\377\377\4\375\376\376\377\236" \
+ "\265\260\377\223\254\247\377\330\336\324\377\322\354\354\341\377\3\311" \
+ "\323\313\377\223\254\247\377\242\270\264\377\203\377\377\377\377\3\274" \
+ "\313\310\377\232\262\255\377\373\374\374\377\202\377\377\377\377\6\330" \
+ "\341\340\377\223\254\247\377\236\264\256\377\270\307\300\377\315\326" \
+ "\315\377\352\353\340\377\327\354\354\341\377\3\215\234\225\377Slg\377" \
+ "y\214\205\377\232\354\354\341\377\3\314\325\314\377\223\254\247\377\252" \
+ "\276\272\377\210\377\377\377\377\3\333\344\342\377\223\254\247\377\244" \
+ "\271\262\377\323\354\354\341\377\4\352\352\337\377\226\256\252\377\223" \
+ "\254\247\377\352\357\356\377\202\377\377\377\377\3\351\356\355\377\223" \
+ "\254\247\377\325\337\335\377\202\377\377\377\377\4\375\376\376\377\230" \
+ "\257\253\377\223\254\247\377\332\337\325\377\331\354\354\341\377\3\215" \
+ "\234\225\377Slg\377y\214\205\377\232\354\354\341\377\3\246\272\264\377" \
+ "\223\254\247\377\330\341\337\377\210\377\377\377\377\3\256\301\275\377" \
+ "\223\254\247\377\312\323\313\377\324\354\354\341\377\3\270\306\276\377" \
+ "\223\254\247\377\264\305\301\377\203\377\377\377\377\2\252\276\272\377" \
+ "\250\274\270\377\203\377\377\377\377\3\302\321\316\377\223\254\247\377" \
+ "\256\300\271\377\310\354\354\341\377\5\343\344\332\377\310\316\304\377" \
+ "\262\273\263\377\250\263\253\377\241\255\245\377\214\237\254\244\377" \
+ "\3p\204~\377Slg\377y\214\205\377\231\354\354\341\377\4\332\337\325\377" \
+ "\223\254\247\377\234\263\256\377\374\375\375\377\207\377\377\377\377" \
+ "\4\355\361\360\377\223\254\247\377\231\261\253\377\351\352\337\377\324" \
+ "\354\354\341\377\4\341\344\332\377\223\254\247\377\224\255\250\377\370" \
+ "\371\371\377\202\377\377\377\377\3\330\341\337\377\223\254\247\377\347" \
+ "\355\354\377\202\377\377\377\377\4\365\367\367\377\224\255\247\377\224" \
+ "\255\250\377\345\347\334\377\305\354\354\341\377\3\300\307\276\377~\220" \
+ "\211\377Unh\377\222Slg\377\1y\214\205\377\231\354\354\341\377\3\265\304" \
+ "\275\377\223\254\247\377\306\323\320\377\210\377\377\377\377\3\300\317" \
+ "\314\377\223\254\247\377\273\311\301\377\326\354\354\341\377\3\247\272" \
+ "\263\377\223\254\247\377\311\326\323\377\202\377\377\377\377\11\374\375" \
+ "\375\377\234\263\256\377\272\312\307\377\377\377\377\377\373\374\374" \
+ "\377\325\336\334\377\230\260\253\377\223\254\247\377\302\316\306\377" \
+ "\303\354\354\341\377\2\353\353\340\377\215\234\225\377\225Slg\377\1y" \
+ "\214\205\377\230\354\354\341\377\4\345\347\335\377\226\256\251\377\224" \
+ "\255\250\377\362\365\365\377\207\377\377\377\377\4\371\372\372\377\230" \
+ "\260\253\377\224\255\247\377\340\343\331\377\326\354\354\341\377\3\324" \
+ "\332\321\377\223\254\247\377\232\261\255\377\203\377\377\377\377\11\306" \
+ "\323\321\377\226\256\251\377\300\317\314\377\232\262\255\377\231\261" \
+ "\254\377\267\307\304\377\223\254\247\377\236\264\256\377\353\353\341" \
+ "\377\302\354\354\341\377\1\227\245\235\377\226Slg\377\1y\214\205\377" \
+ "\230\354\354\341\377\3\303\316\306\377\223\254\247\377\264\306\302\377" \
+ "\210\377\377\377\377\3\321\334\332\377\223\254\247\377\255\277\270\377" \
+ "\330\354\354\341\377\16\232\262\254\377\223\254\247\377\337\346\345\377" \
+ "\377\377\377\377\341\350\347\377\260\302\277\377\224\254\247\377\245" \
+ "\271\266\377\324\336\334\377\372\373\373\377\377\377\377\377\246\273" \
+ "\267\377\223\254\247\377\321\330\317\377\301\354\354\341\377\2\326\331" \
+ "\317\377Uni\377\205Slg\377\4`wr\377l\201{\377x\213\204\377\204\225\216" \
+ "\377\213\207\230\221\377\3g}w\377Slg\377y\214\205\377\227\354\354\341" \
+ "\377\4\353\353\341\377\237\264\257\377\223\254\247\377\342\351\350\377" \
+ "\210\377\377\377\377\3\244\271\265\377\223\254\247\377\322\331\320\377" \
+ "\330\354\354\341\377\7\302\315\306\377\223\254\247\377\237\265\261\377" \
+ "\244\271\264\377\225\256\251\377\270\311\305\377\346\353\352\377\204" \
+ "\377\377\377\377\3\324\336\334\377\223\254\247\377\253\276\267\377\301" \
+ "\354\354\341\377\1\244\260\250\377\203Slg\377\3^vp\377\236\253\243\377" \
+ "\324\330\316\377\217\354\354\341\377\3\215\234\225\377Slg\377y\214\205" \
+ "\377\227\354\354\341\377\3\321\331\320\377\223\254\247\377\244\271\264" \
+ "\377\210\377\377\377\377\3\343\352\350\377\223\254\247\377\237\265\257" \
+ "\377\331\354\354\341\377\5\347\350\336\377\225\255\250\377\223\254\247" \
+ "\377\303\320\316\377\365\367\367\377\206\377\377\377\377\4\373\374\374" \
+ "\377\232\261\254\377\223\254\247\377\337\342\330\377\300\354\354\341" \
+ "\377\1\202\224\215\377\202Slg\377\2Woj\377\311\316\305\377\221\354\354" \
+ "\341\377\3\215\234\225\377Slg\377y\214\205\377\227\354\354\341\377\3" \
+ "\254\276\267\377\223\254\247\377\320\333\331\377\210\377\377\377\377" \
+ "\3\265\306\303\377\223\254\247\377\304\317\307\377\332\354\354\341\377" \
+ "\3\267\306\276\377\223\254\247\377\304\322\317\377\210\377\377\377\377" \
+ "\3\302\320\316\377\223\254\247\377\272\310\300\377\300\354\354\341\377" \
+ "\1u\210\202\377\202Slg\377\1\224\243\233\377\222\354\354\341\377\3\215" \
+ "\234\225\377Slg\377y\214\205\377\226\354\354\341\377\4\337\343\331\377" \
+ "\223\254\247\377\230\260\253\377\371\372\372\377\207\377\377\377\377" \
+ "\4\363\366\365\377\224\255\250\377\226\256\251\377\346\350\335\377\332" \
+ "\354\354\341\377\4\334\340\327\377\223\254\247\377\233\262\255\377\373" \
+ "\374\374\377\207\377\377\377\377\4\357\363\362\377\223\254\247\377\230" \
+ "\260\252\377\350\351\336\377\277\354\354\341\377\1r\206\177\377\202S" \
+ "lg\377\1\262\274\263\377\222\354\354\341\377\3\325\330\316\377\306\314" \
+ "\302\377\317\324\312\377\226\354\354\341\377\3\272\310\301\377\223\254" \
+ "\247\377\277\316\313\377\210\377\377\377\377\3\307\324\321\377\223\254" \
+ "\247\377\266\305\276\377\334\354\354\341\377\3\250\273\265\377\223\254" \
+ "\247\377\325\337\335\377\210\377\377\377\377\3\261\303\300\377\223\254" \
+ "\247\377\310\322\312\377\277\354\354\341\377\1\206\227\220\377\202Sl" \
+ "g\377\1\310\316\304\377\252\354\354\341\377\4\351\351\337\377\231\260" \
+ "\253\377\223\254\247\377\354\361\360\377\207\377\377\377\377\4\374\375" \
+ "\375\377\234\263\257\377\223\254\247\377\333\340\326\377\334\354\354" \
+ "\341\377\3\316\326\315\377\223\254\247\377\250\274\270\377\210\377\377" \
+ "\377\377\3\336\346\344\377\223\254\247\377\243\270\261\377\277\354\354" \
+ "\341\377\1\242\256\246\377\202Slg\377\1\261\272\262\377\252\354\354\341" \
+ "\377\3\311\323\312\377\223\254\247\377\256\301\275\377\210\377\377\377" \
+ "\377\3\330\341\340\377\223\254\247\377\247\272\264\377\335\354\354\341" \
+ "\377\4\352\353\340\377\234\262\255\377\223\254\247\377\347\355\354\377" \
+ "\207\377\377\377\377\4\376\376\376\377\241\266\262\377\223\254\247\377" \
+ "\327\335\323\377\276\354\354\341\377\4\336\340\326\377Xpk\377Slg\377" \
+ "\221\240\230\377\222\354\354\341\377\3\336\340\326\377\324\330\316\377" \
+ "\332\335\323\377\225\354\354\341\377\3\243\270\262\377\223\254\247\377" \
+ "\333\343\342\377\210\377\377\377\377\3\253\277\273\377\223\254\247\377" \
+ "\315\325\315\377\336\354\354\341\377\3\277\314\304\377\223\254\247\377" \
+ "\272\312\306\377\210\377\377\377\377\3\315\331\326\377\223\254\247\377" \
+ "\261\302\273\377\277\354\354\341\377\4\232\250\240\377Slg\377^up\377" \
+ "\330\333\321\377\221\354\354\341\377\3\215\234\225\377Slg\377y\214\205" \
+ "\377\224\354\354\341\377\4\327\335\324\377\223\254\247\377\236\264\260" \
+ "\377\375\376\376\377\207\377\377\377\377\4\352\357\356\377\223\254\247" \
+ "\377\233\262\254\377\352\352\340\377\336\354\354\341\377\4\343\345\333" \
+ "\377\224\255\250\377\226\256\251\377\366\370\367\377\207\377\377\377" \
+ "\377\4\367\371\370\377\226\257\252\377\225\255\250\377\343\346\333\377" \
+ "\276\354\354\341\377\5\353\353\340\377\207\230\221\377Slg\377l\201{\377" \
+ "\344\345\332\377\220\354\354\341\377\3\215\234\225\377Slg\377y\214\205" \
+ "\377\224\354\354\341\377\3\262\302\273\377\223\254\247\377\312\326\324" \
+ "\377\210\377\377\377\377\3\275\314\311\377\223\254\247\377\276\313\303" \
+ "\377\340\354\354\341\377\3\261\301\272\377\223\254\247\377\313\327\325" \
+ "\377\210\377\377\377\377\3\274\313\310\377\223\254\247\377\300\314\304" \
+ "\377\277\354\354\341\377\6\351\351\337\377\237\254\244\377Wpj\377axr" \
+ "\377\237\254\244\377\336\340\326\377\216\354\354\341\377\3\215\234\225" \
+ "\377Slg\377y\214\205\377\223\354\354\341\377\4\344\346\334\377\225\255" \
+ "\250\377\225\256\251\377\365\367\367\377\207\377\377\377\377\4\370\371" \
+ "\371\377\227\257\252\377\224\255\250\377\342\345\333\377\340\354\354" \
+ "\341\377\4\326\334\323\377\223\254\247\377\237\265\261\377\376\376\376" \
+ "\377\207\377\377\377\377\4\351\356\355\377\223\254\247\377\234\263\255" \
+ "\377\353\353\340\377\274\354\354\341\377\1\335\337\325\377\203\232\250" \
+ "\240\377\1\204\225\216\377\202Slg\377\5Voi\377k\200z\377|\216\210\377" \
+ "\214\234\224\377\231\247\237\377\212\232\250\240\377\3n\203}\377Slg\377" \
+ "y\214\205\377\223\354\354\341\377\3\300\315\305\377\223\254\247\377\270" \
+ "\311\305\377\210\377\377\377\377\3\316\332\327\377\223\254\247\377\260" \
+ "\301\272\377\342\354\354\341\377\3\242\267\261\377\223\254\247\377\335" \
+ "\345\343\377\210\377\377\377\377\3\252\276\272\377\223\254\247\377\316" \
+ "\327\316\377\274\354\354\341\377\1\320\324\313\377\227Slg\377\1y\214" \
+ "\205\377\222\354\354\341\377\4\353\353\340\377\234\263\255\377\223\254" \
+ "\247\377\346\353\352\377\210\377\377\377\377\3\242\267\263\377\223\254" \
+ "\247\377\325\333\322\377\342\354\354\341\377\3\310\322\311\377\223\254" \
+ "\247\377\257\302\276\377\210\377\377\377\377\3\330\341\337\377\223\254" \
+ "\247\377\251\274\265\377\274\354\354\341\377\1\320\324\313\377\227Sl" \
+ "g\377\1y\214\205\377\222\354\354\341\377\3\317\327\316\377\223\254\247" \
+ "\377\247\273\267\377\210\377\377\377\377\3\340\347\346\377\223\254\247" \
+ "\377\241\266\260\377\343\354\354\341\377\4\350\351\336\377\230\260\252" \
+ "\377\223\254\247\377\356\362\361\377\207\377\377\377\377\4\374\375\375" \
+ "\377\234\263\256\377\223\254\247\377\335\341\327\377\273\354\354\341" \
+ "\377\1\320\324\313\377\227Slg\377\1y\214\205\377\222\354\354\341\377" \
+ "\3\251\274\266\377\223\254\247\377\324\336\334\377\210\377\377\377\377" \
+ "\3\263\304\301\377\223\254\247\377\307\321\311\377\344\354\354\341\377" \
+ "\3\271\310\300\377\223\254\247\377\301\317\314\377\210\377\377\377\377" \
+ "\3\306\323\321\377\223\254\247\377\267\306\277\377\273\354\354\341\377" \
+ "\1\320\324\313\377\202Slg\377\1\177\221\212\377\222\214\234\224\377\3" \
+ "i~x\377Slg\377y\214\205\377\221\354\354\341\377\4\335\341\327\377\223" \
+ "\254\247\377\232\261\254\377\373\374\374\377\207\377\377\377\377\4\361" \
+ "\364\363\377\224\255\250\377\230\257\252\377\347\351\336\377\344\354" \
+ "\354\341\377\4\336\342\330\377\223\254\247\377\231\261\254\377\372\373" \
+ "\373\377\207\377\377\377\377\4\362\365\365\377\224\255\250\377\227\257" \
+ "\252\377\347\350\336\377\272\354\354\341\377\1\320\324\313\377\202Sl" \
+ "g\377\1\312\320\306\377\222\354\354\341\377\3\215\234\225\377Slg\377" \
+ "y\214\205\377\221\354\354\341\377\3\270\306\277\377\223\254\247\377\303" \
+ "\321\316\377\210\377\377\377\377\3\304\322\317\377\223\254\247\377\270" \
+ "\307\277\377\346\354\354\341\377\3\253\275\266\377\223\254\247\377\323" \
+ "\335\333\377\210\377\377\377\377\3\265\306\303\377\223\254\247\377\306" \
+ "\320\310\377\272\354\354\341\377\1\320\324\313\377\202Slg\377\1\312\320" \
+ "\306\377\222\354\354\341\377\3\215\234\225\377Slg\377y\214\205\377\220" \
+ "\354\354\341\377\4\347\350\336\377\227\257\252\377\223\254\247\377\357" \
+ "\363\362\377\207\377\377\377\377\4\373\374\374\377\233\262\255\377\223" \
+ "\254\247\377\335\341\327\377\346\354\354\341\377\3\320\330\317\377\223" \
+ "\254\247\377\245\272\266\377\210\377\377\377\377\3\342\351\350\377\223" \
+ "\254\247\377\241\266\260\377\272\354\354\341\377\1\320\324\313\377\202" \
+ "Slg\377\1\312\320\306\377\222\354\354\341\377\3\215\234\225\377Slg\377" \
+ "y\214\205\377\220\354\354\341\377\3\306\321\310\377\223\254\247\377\261" \
+ "\303\300\377\210\377\377\377\377\3\326\337\336\377\223\254\247\377\252" \
+ "\274\266\377\347\354\354\341\377\4\353\353\340\377\235\264\256\377\223" \
+ "\254\247\377\344\352\351\377\210\377\377\377\377\3\244\271\264\377\223" \
+ "\254\247\377\324\333\321\377\271\354\354\341\377\1\333\336\324\377\202" \
+ "\221\240\230\377\1\330\333\321\377\222\354\354\341\377\3\314\321\307" \
+ "\377\267\300\267\377\304\313\301\377\220\354\354\341\377\3\241\266\260" \
+ "\377\223\254\247\377\337\346\345\377\210\377\377\377\377\3\250\274\270" \
+ "\377\223\254\247\377\317\327\316\377\350\354\354\341\377\3\302\316\305" \
+ "\377\223\254\247\377\267\307\304\377\210\377\377\377\377\3\321\334\331" \
+ "\377\223\254\247\377\257\300\271\377\341\354\354\341\377\4\325\333\322" \
+ "\377\223\254\247\377\241\267\262\377\376\376\376\377\207\377\377\377" \
+ "\377\4\347\355\354\377\223\254\247\377\235\263\255\377\353\353\340\377" \
+ "\350\354\354\341\377\4\345\347\334\377\225\256\251\377\225\255\250\377" \
+ "\364\366\366\377\207\377\377\377\377\4\371\372\372\377\230\260\253\377" \
+ "\224\255\250\377\342\344\332\377\340\354\354\341\377\3\257\300\271\377" \
+ "\223\254\247\377\315\331\327\377\210\377\377\377\377\3\272\312\307\377" \
+ "\223\254\247\377\301\315\305\377\352\354\354\341\377\3\263\303\274\377" \
+ "\223\254\247\377\310\325\322\377\210\377\377\377\377\3\277\316\313\377" \
+ "\223\254\247\377\275\312\302\377\337\354\354\341\377\4\342\345\332\377" \
+ "\224\255\250\377\226\257\252\377\367\371\370\377\207\377\377\377\377" \
+ "\4\366\370\370\377\226\256\251\377\225\256\250\377\344\346\334\377\352" \
+ "\354\354\341\377\4\331\336\324\377\223\254\247\377\235\264\257\377\375" \
+ "\375\375\377\207\377\377\377\377\4\354\361\360\377\223\254\247\377\232" \
+ "\261\254\377\352\352\337\377\314\354\354\341\377\1\303\312\300\377\202" \
+ "t\210\201\377\1\350\351\336\377\216\354\354\341\377\3\276\313\303\377" \
+ "\223\254\247\377\274\313\310\377\210\377\377\377\377\3\313\327\325\377" \
+ "\223\254\247\377\262\303\273\377\354\354\354\341\377\3\245\271\263\377" \
+ "\223\254\247\377\332\342\341\377\210\377\377\377\377\3\256\301\275\377" \
+ "\223\254\247\377\314\325\314\377\314\354\354\341\377\1\267\300\267\377" \
+ "\202Slg\377\1\347\350\335\377\215\354\354\341\377\4\352\352\337\377\232" \
+ "\261\254\377\223\254\247\377\351\356\355\377\207\377\377\377\377\4\376" \
+ "\376\376\377\240\266\261\377\223\254\247\377\330\335\324\377\354\354" \
+ "\354\341\377\3\312\324\313\377\223\254\247\377\254\277\273\377\210\377" \
+ "\377\377\377\3\333\343\342\377\223\254\247\377\246\272\263\377\314\354" \
+ "\354\341\377\1\267\300\267\377\202Slg\377\1\347\350\335\377\215\354\354" \
+ "\341\377\3\314\325\314\377\223\254\247\377\252\276\272\377\210\377\377" \
+ "\377\377\3\335\345\343\377\223\254\247\377\244\270\262\377\355\354\354" \
+ "\341\377\4\351\352\337\377\232\261\253\377\223\254\247\377\353\360\357" \
+ "\377\207\377\377\377\377\4\375\376\376\377\236\264\260\377\223\254\247" \
+ "\377\332\337\325\377\312\354\354\341\377\2\343\344\332\377\225\243\234" \
+ "\377\202Slg\377\1\347\350\335\377\215\354\354\341\377\3\247\272\264\377" \
+ "\223\254\247\377\330\341\337\377\210\377\377\377\377\3\260\302\276\377" \
+ "\223\254\247\377\311\323\312\377\356\354\354\341\377\3\274\311\302\377" \
+ "\223\254\247\377\276\315\312\377\210\377\377\377\377\3\312\326\324\377" \
+ "\223\254\247\377\265\304\275\377\307\354\354\341\377\4\353\353\341\377" \
+ "\306\314\302\377\212\232\223\377Xqk\377\203Slg\377\1\347\350\335\377" \
+ "\214\354\354\341\377\4\332\337\325\377\223\254\247\377\234\263\256\377" \
+ "\374\375\375\377\207\377\377\377\377\4\356\362\361\377\223\254\247\377" \
+ "\224\254\247\377\342\345\332\377\356\354\354\341\377\17\340\344\331\377" \
+ "\224\255\247\377\227\257\252\377\370\372\371\377\371\372\372\377\343" \
+ "\352\350\377\316\332\327\377\324\336\334\377\352\357\356\377\375\375" \
+ "\375\377\377\377\377\377\365\367\367\377\225\256\251\377\226\256\251" \
+ "\377\345\347\335\377\304\354\354\341\377\3\334\336\324\377\242\256\246" \
+ "\377h~x\377\206Slg\377\1\347\350\335\377\214\354\354\341\377\3\265\304" \
+ "\275\377\223\254\247\377\306\323\321\377\210\377\377\377\377\4\301\317" \
+ "\315\377\223\254\247\377\224\255\250\377\272\310\300\377\357\354\354" \
+ "\341\377\4\256\277\270\377\223\254\247\377\254\277\274\377\224\255\250" \
+ "\377\204\223\254\247\377\6\233\262\255\377\332\342\341\377\377\377\377" \
+ "\377\270\311\305\377\223\254\247\377\303\316\306\377\301\354\354\341" \
+ "\377\4\351\351\337\377\272\302\271\377\177\221\212\377Unh\377\210Slg" \
+ "\377\1\347\350\335\377\213\354\354\341\377\4\346\347\335\377\226\256" \
+ "\251\377\224\255\250\377\362\365\365\377\207\377\377\377\377\5\372\373" \
+ "\373\377\231\261\254\377\223\254\247\377\256\301\275\377\245\271\263" \
+ "\377\357\354\354\341\377\17\311\323\313\377\224\256\250\377\224\255\250" \
+ "\377\300\317\314\377\342\351\347\377\367\371\370\377\361\364\363\377" \
+ "\333\343\341\377\254\277\274\377\223\254\247\377\270\310\305\377\344" \
+ "\352\351\377\223\254\247\377\236\264\256\377\353\353\341\377\276\354" \
+ "\354\341\377\3\322\326\314\377\227\245\236\377`wq\377\213Slg\377\1\347" \
+ "\350\335\377\213\354\354\341\377\3\303\317\306\377\223\254\247\377\265" \
+ "\306\303\377\210\377\377\377\377\6\323\335\333\377\223\254\247\377\262" \
+ "\304\300\377\311\325\323\377\226\256\251\377\351\352\340\377\355\354" \
+ "\354\341\377\4\352\353\340\377\245\271\263\377\234\262\256\377\346\353" \
+ "\352\377\205\377\377\377\377\7\376\376\376\377\313\327\325\377\223\254" \
+ "\247\377\312\327\324\377\247\273\267\377\223\254\247\377\321\331\317" \
+ "\377\273\354\354\341\377\3\344\345\333\377\257\271\261\377t\210\201\377" \
+ "\213Slg\377\1cys\377\202Slg\377\1\347\350\335\377\212\354\354\341\377" \
+ "\4\353\353\341\377\237\264\257\377\223\254\247\377\342\351\350\377\210" \
+ "\377\377\377\377\6\246\272\266\377\223\254\247\377\337\347\345\377\316" \
+ "\331\327\377\223\254\247\377\350\351\336\377\355\354\354\341\377\3\302" \
+ "\316\305\377\223\254\247\377\337\346\345\377\210\377\377\377\377\5\271" \
+ "\311\306\377\225\256\251\377\310\326\323\377\223\254\247\377\254\276" \
+ "\267\377\271\354\354\341\377\3\307\315\304\377\214\234\224\377Yql\377" \
+ "\212Slg\377\4axr\377\231\247\237\377\323\327\315\377\267\300\267\377" \
+ "\202Slg\377\1\347\350\335\377\212\354\354\341\377\3\322\331\320\377\223" \
+ "\254\247\377\244\271\265\377\205\377\377\377\377\11\363\366\365\377\364" \
+ "\366\366\377\377\377\377\377\344\352\351\377\223\254\247\377\241\267" \
+ "\263\377\376\376\376\377\270\310\305\377\241\266\261\377\356\354\354" \
+ "\341\377\2\240\265\257\377\263\305\301\377\211\377\377\377\377\6\370" \
+ "\372\371\377\226\257\252\377\306\323\321\377\232\261\254\377\223\254" \
+ "\247\377\337\343\331\377\265\354\354\341\377\3\335\337\325\377\244\260" \
+ "\250\377i\177y\377\212Slg\377\4Voi\377\203\224\215\377\276\305\274\377" \
+ "\352\352\337\377\202\354\354\341\377\1\267\300\267\377\202Slg\377\1\347" \
+ "\350\335\377\212\354\354\341\377\3\254\276\270\377\223\254\247\377\321" \
+ "\334\331\377\204\377\377\377\377\12\320\333\330\377\224\255\250\377\225" \
+ "\255\250\377\323\335\333\377\267\310\304\377\223\254\247\377\316\331" \
+ "\327\377\367\371\370\377\234\263\256\377\263\303\274\377\355\354\354" \
+ "\341\377\3\346\350\335\377\224\255\250\377\315\330\326\377\212\377\377" \
+ "\377\377\5\252\276\272\377\261\303\277\377\303\321\316\377\223\254\247" \
+ "\377\272\310\301\377\243\354\354\341\377\7\343\344\332\377\257\271\260" \
+ "\377\223\241\232\377\203\224\215\377\246\262\252\377\320\324\313\377" \
+ "\353\353\341\377\210\354\354\341\377\4\352\352\337\377\274\304\273\377" \
+ "\201\222\213\377Unh\377\213Slg\377\2\226\244\234\377\337\341\326\377" \
+ "\205\354\354\341\377\1\267\300\267\377\202Slg\377\1\347\350\335\377\212" \
+ "\354\354\341\377\202\224\255\250\377\1\371\372\372\377\204\377\377\377" \
+ "\377\12\243\271\264\377\250\274\270\377\245\272\265\377\244\272\265\377" \
+ "\225\255\250\377\227\257\252\377\367\371\371\377\270\310\305\377\225" \
+ "\256\251\377\334\341\327\377\355\354\354\341\377\3\330\335\324\377\223" \
+ "\254\247\377\336\346\344\377\212\377\377\377\377\5\275\314\311\377\240" \
+ "\266\261\377\353\357\356\377\223\254\247\377\240\265\257\377\242\354" \
+ "\354\341\377\2\306\314\302\377e{u\377\205Slg\377\2h~x\377\334\336\324" \
+ "\377\205\354\354\341\377\3\324\330\316\377\231\246\236\377axr\377\212" \
+ "Slg\377\2[sn\377\202\224\215\377\202Slg\377\1\301\310\277\377\206\354" \
+ "\354\341\377\1\323\327\315\377\202\244\260\250\377\1\352\352\340\377" \
+ "\212\354\354\341\377\3\227\257\252\377\223\254\247\377\376\376\376\377" \
+ "\204\377\377\377\377\1\272\312\307\377\202\223\254\247\377\6\251\274" \
+ "\271\377\223\254\247\377\272\312\307\377\275\314\311\377\223\254\247" \
+ "\377\300\315\305\377\356\354\354\341\377\3\343\346\333\377\223\254\247" \
+ "\377\321\334\331\377\212\377\377\377\377\202\256\301\275\377\3\355\361" \
+ "\361\377\223\254\247\377\242\267\261\377\241\354\354\341\377\2\306\314" \
+ "\303\377Tmh\377\207Slg\377\6o\203}\377\344\345\332\377\354\354\341\377" \
+ "\345\346\333\377\261\272\262\377v\211\203\377\212Slg\377\5Tmg\377y\214" \
+ "\205\377\264\275\264\377\346\347\334\377\324\330\316\377\202Slg\377\1" \
+ "\301\310\277\377\224\354\354\341\377\3\233\262\254\377\223\254\247\377" \
+ "\371\373\373\377\204\377\377\377\377\11\371\372\372\377\320\333\331\377" \
+ "\321\333\331\377\235\263\257\377\223\254\247\377\235\263\257\377\225" \
+ "\255\251\377\277\313\303\377\353\353\340\377\357\354\354\341\377\2\234" \
+ "\262\255\377\272\312\307\377\211\377\377\377\377\6\375\375\375\377\231" \
+ "\261\254\377\303\321\316\377\351\356\355\377\223\254\247\377\246\272" \
+ "\263\377\240\354\354\341\377\2\344\345\333\377f|v\377\202Slg\377\5\202" \
+ "\224\215\377\316\323\311\377\344\345\332\377\306\314\302\377s\207\201" \
+ "\377\202Slg\377\3y\214\205\377\216\235\226\377Zrm\377\212Slg\377\3dz" \
+ "t\377\235\252\242\377\327\332\320\377\203\354\354\341\377\1\324\330\316" \
+ "\377\202Slg\377\1\301\310\277\377\224\354\354\341\377\3\237\264\257\377" \
+ "\223\254\247\377\365\367\367\377\206\377\377\377\377\5\332\343\341\377" \
+ "\223\254\247\377\225\255\250\377\255\277\267\377\332\337\325\377\361" \
+ "\354\354\341\377\3\267\306\277\377\226\256\251\377\354\360\357\377\210" \
+ "\377\377\377\377\6\311\326\323\377\223\254\247\377\342\351\350\377\344" \
+ "\352\351\377\223\254\247\377\252\274\266\377\240\354\354\341\377\1\257" \
+ "\271\261\377\202Slg\377\1\204\225\216\377\204\354\354\341\377\2\350\351" \
+ "\336\377m\202|\377\213Slg\377\4Woj\377\205\226\217\377\300\307\276\377" \
+ "\353\353\340\377\205\354\354\341\377\1\324\330\316\377\202Slg\377\1\301" \
+ "\310\277\377\224\354\354\341\377\3\242\267\261\377\223\254\247\377\360" \
+ "\363\363\377\206\377\377\377\377\3\255\300\274\377\223\254\247\377\314" \
+ "\325\314\377\363\354\354\341\377\4\347\350\336\377\234\263\255\377\247" \
+ "\273\267\377\365\370\367\377\206\377\377\377\377\7\342\351\347\377\225" \
+ "\255\250\377\273\313\310\377\377\377\377\377\340\347\345\377\223\254" \
+ "\247\377\256\277\270\377\240\354\354\341\377\1\221\240\230\377\202Sl" \
+ "g\377\1\320\325\313\377\205\354\354\341\377\1\264\275\264\377\211Slg" \
+ "\377\3o\203}\377\251\264\254\377\341\342\330\377\210\354\354\341\377" \
+ "\1\324\330\316\377\202Slg\377\1\301\310\277\377\224\354\354\341\377\3" \
+ "\246\272\264\377\223\254\247\377\353\360\357\377\205\377\377\377\377" \
+ "\4\354\360\357\377\223\254\247\377\233\262\254\377\352\352\340\377\364" \
+ "\354\354\341\377\5\325\333\322\377\226\256\252\377\233\262\256\377\327" \
+ "\340\337\377\367\370\370\377\202\377\377\377\377\11\360\364\363\377\303" \
+ "\321\316\377\223\254\247\377\244\271\265\377\371\372\372\377\377\377" \
+ "\377\377\333\344\342\377\223\254\247\377\261\302\273\377\240\354\354" \
+ "\341\377\1|\216\210\377\202Slg\377\1\345\346\333\377\205\354\354\341" \
+ "\377\1\310\316\304\377\206Slg\377\3]to\377\222\241\231\377\315\322\310" \
+ "\377\213\354\354\341\377\1\324\330\316\377\202Slg\377\1\301\310\277\377" \
+ "\224\354\354\341\377\3\252\275\266\377\223\254\247\377\346\354\353\377" \
+ "\205\377\377\377\377\3\276\315\312\377\223\254\247\377\276\313\303\377" \
+ "\366\354\354\341\377\2\340\344\331\377\251\274\265\377\202\223\254\247" \
+ "\377\2\236\264\260\377\230\257\253\377\202\223\254\247\377\2\304\322" \
+ "\317\377\374\374\374\377\202\377\377\377\377\3\327\340\336\377\223\254" \
+ "\247\377\265\305\275\377\240\354\354\341\377\1\224\243\233\377\202Sl" \
+ "g\377\1\314\321\310\377\205\354\354\341\377\1\257\271\261\377\204Slg" \
+ "\377\3Tmg\377\235\252\242\377\347\350\335\377\215\354\354\341\377\1\324" \
+ "\330\316\377\202Slg\377\1\301\310\277\377\224\354\354\341\377\3\256\277" \
+ "\271\377\223\254\247\377\342\351\347\377\204\377\377\377\377\4\371\372" \
+ "\372\377\230\260\253\377\224\255\250\377\342\345\332\377\370\354\354" \
+ "\341\377\6\327\335\323\377\304\317\307\377\253\275\267\377\223\254\247" \
+ "\377\233\262\256\377\357\362\362\377\204\377\377\377\377\3\323\335\333" \
+ "\377\223\254\247\377\271\307\300\377\240\354\354\341\377\1\264\275\265" \
+ "\377\202Slg\377\2{\216\207\377\352\352\340\377\203\354\354\341\377\2" \
+ "\345\346\333\377g}w\377\206Slg\377\3u\211\202\377\261\272\262\377\345" \
+ "\346\333\377\213\354\354\341\377\1\324\330\316\377\202Slg\377\1\301\310" \
+ "\277\377\224\354\354\341\377\3\262\302\273\377\223\254\247\377\335\345" \
+ "\343\377\204\377\377\377\377\3\320\333\331\377\223\254\247\377\257\300" \
+ "\271\377\374\354\354\341\377\3\242\267\261\377\223\254\247\377\336\345" \
+ "\344\377\204\377\377\377\377\3\316\331\327\377\223\254\247\377\275\312" \
+ "\302\377\240\354\354\341\377\2\350\351\336\377o\204}\377\202Slg\377\5" \
+ "t\210\201\377\272\302\271\377\315\322\310\377\262\273\263\377g}w\377" \
+ "\202Slg\377\3\200\222\213\377\227\245\236\377`wq\377\204Slg\377\3Zrm" \
+ "\377\216\235\226\377\311\317\305\377\211\354\354\341\377\1\324\330\316" \
+ "\377\202Slg\377\1\301\310\277\377\224\354\354\341\377\3\266\305\276\377" \
+ "\223\254\247\377\330\341\337\377\204\377\377\377\377\3\243\270\264\377" \
+ "\223\254\247\377\325\333\322\377\374\354\354\341\377\3\307\321\311\377" \
+ "\223\254\247\377\260\302\277\377\204\377\377\377\377\3\312\326\324\377" \
+ "\223\254\247\377\301\315\305\377\241\354\354\341\377\2\321\325\313\377" \
+ "Yql\377\207Slg\377\7v\211\203\377\347\347\335\377\354\354\341\377\351" \
+ "\351\337\377\273\303\272\377\201\222\213\377Unh\377\204Slg\377\3l\201" \
+ "{\377\247\262\252\377\337\341\327\377\206\354\354\341\377\1\324\330\316" \
+ "\377\202Slg\377\1\301\310\277\377\224\354\354\341\377\3\271\310\300\377" \
+ "\223\254\247\377\323\335\333\377\203\377\377\377\377\3\341\350\347\377" \
+ "\223\254\247\377\241\266\260\377\375\354\354\341\377\4\347\351\336\377" \
+ "\230\257\252\377\223\254\247\377\356\362\362\377\203\377\377\377\377" \
+ "\3\305\322\320\377\223\254\247\377\305\320\307\377\242\354\354\341\377" \
+ "\2\325\331\317\377u\210\202\377\204Slg\377\3Tmg\377v\211\203\377\341" \
+ "\343\330\377\205\354\354\341\377\3\335\337\325\377\245\260\250\377j\177" \
+ "y\377\204Slg\377\4Voi\377\204\225\216\377\300\307\276\377\352\352\340" \
+ "\377\203\354\354\341\377\1\324\330\316\377\202Slg\377\1\301\310\277\377" \
+ "\224\354\354\341\377\3\275\312\303\377\223\254\247\377\317\332\330\377" \
+ "\203\377\377\377\377\3\264\305\302\377\223\254\247\377\306\321\310\377" \
+ "\376\354\354\341\377\3\270\307\277\377\223\254\247\377\302\320\315\377" \
+ "\203\377\377\377\377\3\300\317\314\377\223\254\247\377\310\322\312\377" \
+ "\243\354\354\341\377\6\352\352\340\377\306\314\303\377\250\263\252\377" \
+ "\226\244\234\377\270\300\267\377\337\341\326\377\212\354\354\341\377" \
+ "\3\310\316\304\377\215\235\225\377Zrm\377\204Slg\377\5dzt\377\235\252" \
+ "\242\377\330\333\321\377\354\354\341\377\324\330\316\377\202Slg\377\1" \
+ "\301\310\277\377\224\354\354\341\377\3\301\315\305\377\223\254\247\377" \
+ "\312\326\324\377\202\377\377\377\377\4\362\365\364\377\224\255\250\377" \
+ "\227\257\252\377\347\350\336\377\376\354\354\341\377\4\336\342\330\377" \
+ "\223\254\247\377\231\261\254\377\372\373\373\377\202\377\377\377\377" \
+ "\3\274\314\310\377\223\254\247\377\314\325\314\377\265\354\354\341\377" \
+ "\3\345\346\333\377\261\273\262\377v\212\203\377\204Slg\377\3Tmg\377{" \
+ "\215\207\377\243\257\247\377\202Slg\377\1\301\310\277\377\206\354\354" \
+ "\341\377\1\342\344\331\377\202\317\324\312\377\1\353\353\341\377\212" \
+ "\354\354\341\377\10\305\320\310\377\223\254\247\377\250\274\270\377\316" \
+ "\332\327\377\342\351\347\377\301\317\314\377\223\254\247\377\270\307" \
+ "\277\377\377\354\354\341\377\11\354\354\341\377\252\275\266\377\223\254" \
+ "\247\377\314\330\325\377\337\347\345\377\314\330\325\377\242\270\263" \
+ "\377\223\254\247\377\320\330\317\377\270\354\354\341\377\3\325\330\316" \
+ "\377\232\250\240\377bys\377\206Slg\377\1\256\270\257\377\206\354\354" \
+ "\341\377\1\267\300\267\377\202Slg\377\1\347\350\335\377\212\354\354\341" \
+ "\377\1\311\323\312\377\206\223\254\247\377\1\335\341\327\377\377\354" \
+ "\354\341\377\2\354\354\341\377\317\327\316\377\206\223\254\247\377\1" \
+ "\324\333\321\377\272\354\354\341\377\4\352\352\337\377\276\305\274\377" \
+ "\203\224\215\377Voi\377\204Slg\377\3j\200z\377\245\260\250\377\335\337" \
+ "\325\377\203\354\354\341\377\1\267\300\267\377\202Slg\377\1\347\350\335" \
+ "\377\212\354\354\341\377\7\350\351\336\377\277\310\300\377m\206\201\377" \
+ "w\220\213\377\202\233\226\377\225\255\250\377\251\274\265\377\377\354" \
+ "\354\341\377\202\354\354\341\377\10\353\353\340\377\235\264\256\377\224" \
+ "\253\246\377\200\231\224\377v\217\212\377s\213\205\377\311\320\307\377" \
+ "\352\352\337\377\275\354\354\341\377\3\337\341\326\377\247\262\252\377" \
+ "l\201{\377\204Slg\377\5Unh\377\200\222\213\377\273\303\272\377\351\351" \
+ "\337\377\267\300\267\377\202Slg\377\1\347\350\335\377\213\354\354\341" \
+ "\377\1\261\272\262\377\203Slg\377\2\306\314\302\377\353\353\340\377\377" \
+ "\354\354\341\377\203\354\354\341\377\6\353\353\340\377\276\306\274\377" \
+ "Zrn\377Slg\377Yql\377\274\304\272\377\301\354\354\341\377\3\313\320\307" \
+ "\377\220\237\230\377[sn\377\204Slg\377\2_vq\377x\213\205\377\202Slg\377" \
+ "\1\347\350\335\377\213\354\354\341\377\1\257\271\261\377\202Slg\377\2" \
+ "Woj\377\342\343\331\377\377\354\354\341\377\205\354\354\341\377\2\331" \
+ "\334\323\377bys\377\202Slg\377\1\234\251\242\377\303\354\354\341\377" \
+ "\4\346\347\334\377\264\275\264\377y\214\205\377Tmg\377\205Slg\377\1\347" \
+ "\350\335\377\213\354\354\341\377\1\303\312\300\377\202Slg\377\1\222\241" \
+ "\231\377\377\354\354\341\377\207\354\354\341\377\4e{u\377Slg\377_vq\377" \
+ "\317\324\312\377\306\354\354\341\377\3\327\332\320\377\235\252\242\377" \
+ "dzt\377\203Slg\377\1\347\350\335\377\213\354\354\341\377\4\327\332\320" \
+ "\377Slg\377Wpj\377\333\336\324\377\377\354\354\341\377\207\354\354\341" \
+ "\377\3m\202|\377Xok\377\227\245\235\377\311\354\354\341\377\2\353\353" \
+ "\340\377\242\256\246\377\202Slg\377\1\347\350\335\377\213\354\354\341" \
+ "\377\3\351\351\337\377Tmh\377\224\242\233\377\377\354\354\341\377\210" \
+ "\354\354\341\377\3\207\227\220\377g}w\377\351\351\337\377\312\354\354" \
+ "\341\377\1\267\300\267\377\202Slg\377\1\347\350\335\377\214\354\354\341" \
+ "\377\2j\177y\377\334\337\325\377\377\354\354\341\377\210\354\354\341" \
+ "\377\2\324\330\316\377\326\332\317\377\313\354\354\341\377\1\267\300" \
+ "\267\377\202Slg\377\1\347\350\335\377\214\354\354\341\377\1\273\303\272" \
+ "\377\377\354\354\341\377\326\354\354\341\377\1\336\340\326\377\202\301" \
+ "\310\277\377\1\353\353\340\377\212\354\354\341\377")
diff --git a/packages/psplash/files/configurability.patch b/packages/psplash/files/configurability.patch
index b923cb24f1..c9688655c9 100644
--- a/packages/psplash/files/configurability.patch
+++ b/packages/psplash/files/configurability.patch
@@ -1,8 +1,8 @@
Index: psplash/psplash.c
===================================================================
---- psplash.orig/psplash.c
-+++ psplash/psplash.c
-@@ -44,17 +44,17 @@ psplash_draw_msg (PSplashFB *fb, const c
+--- psplash.orig/psplash.c 2007-12-06 11:14:23.000000000 +0000
++++ psplash/psplash.c 2007-12-06 11:19:12.000000000 +0000
+@@ -44,17 +44,17 @@
/* Clear */
@@ -27,7 +27,7 @@ Index: psplash/psplash.c
&radeon_font,
msg);
}
-@@ -66,36 +66,36 @@ psplash_draw_progress (PSplashFB *fb, in
+@@ -66,36 +66,36 @@
/* 4 pix border */
x = ((fb->width - BAR_IMG_WIDTH)/2) + 4 ;
@@ -75,7 +75,7 @@ Index: psplash/psplash.c
{
char *command;
int parsed=0;
-@@ -103,21 +103,21 @@ parse_command (PSplashFB *fb, char *stri
+@@ -103,21 +103,21 @@
parsed = strlen(string)+1;
DBG("got cmd %s", string);
@@ -103,7 +103,7 @@ Index: psplash/psplash.c
{
return 1;
}
-@@ -125,8 +125,8 @@ parse_command (PSplashFB *fb, char *stri
+@@ -125,8 +125,8 @@
return 0;
}
@@ -114,7 +114,7 @@ Index: psplash/psplash.c
{
int err;
ssize_t length = 0;
-@@ -143,14 +143,14 @@ psplash_main (PSplashFB *fb, int pipe_fd
+@@ -143,14 +143,14 @@
end = command;
@@ -133,7 +133,7 @@ Index: psplash/psplash.c
{
/*
if (errno == EINTR)
-@@ -158,29 +158,29 @@ psplash_main (PSplashFB *fb, int pipe_fd
+@@ -158,29 +158,29 @@
*/
return;
}
@@ -171,7 +171,7 @@ Index: psplash/psplash.c
FD_ZERO(&descriptors);
FD_SET(pipe_fd,&descriptors);
}
-@@ -188,14 +188,14 @@ psplash_main (PSplashFB *fb, int pipe_fd
+@@ -188,14 +188,14 @@
return;
}
@@ -189,7 +189,7 @@ Index: psplash/psplash.c
signal(SIGHUP, psplash_exit);
signal(SIGINT, psplash_exit);
signal(SIGQUIT, psplash_exit);
-@@ -214,10 +214,10 @@ main (int argc, char** argv)
+@@ -214,10 +214,10 @@
angle = atoi(argv[i]);
continue;
}
@@ -203,7 +203,7 @@ Index: psplash/psplash.c
argv[0]);
exit(-1);
}
-@@ -231,7 +231,7 @@ main (int argc, char** argv)
+@@ -231,7 +231,7 @@
if (mkfifo(PSPLASH_FIFO, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP))
{
@@ -212,7 +212,7 @@ Index: psplash/psplash.c
{
perror("mkfifo");
exit(-1);
-@@ -239,8 +239,8 @@ main (int argc, char** argv)
+@@ -239,8 +239,8 @@
}
pipe_fd = open (PSPLASH_FIFO,O_RDONLY|O_NONBLOCK);
@@ -223,22 +223,20 @@ Index: psplash/psplash.c
{
perror("pipe open");
exit(-2);
-@@ -252,30 +252,30 @@ main (int argc, char** argv)
- if ((fb = psplash_fb_new(angle)) == NULL)
+@@ -253,29 +253,29 @@
exit(-1);
-- /* Clear the background with #ecece1 */
+ /* Clear the background with #ecece1 */
- psplash_fb_draw_rect (fb, 0, 0, fb->width, fb->height, 0xec, 0xec, 0xe1);
-+ /* Clear the background */
+ psplash_fb_draw_rect (fb, 0, 0, fb->width, fb->height, PSPLASH_BACKGROUND_COLOR_R, PSPLASH_BACKGROUND_COLOR_G, PSPLASH_BACKGROUND_COLOR_B);
/* Draw the OH logo */
- psplash_fb_draw_image (fb,
- (fb->width - HAND_IMG_WIDTH)/2,
-- (fb->height - HAND_IMG_HEIGHT)/2,
+- ((fb->height * 5) / 6 - HAND_IMG_HEIGHT)/2,
+ psplash_fb_draw_image (fb,
-+ (fb->width - HAND_IMG_WIDTH)/2,
-+ (fb->height - HAND_IMG_HEIGHT)/2,
++ (fb->width - HAND_IMG_WIDTH)/2,
++ (fb->height - HAND_IMG_HEIGHT)/2,
HAND_IMG_WIDTH,
HAND_IMG_HEIGHT,
HAND_IMG_BYTES_PER_PIXEL,
@@ -249,8 +247,8 @@ Index: psplash/psplash.c
- (fb->width - BAR_IMG_WIDTH)/2,
- fb->height - (fb->height/6),
+ psplash_fb_draw_image (fb,
-+ (fb->width - BAR_IMG_WIDTH)/2,
-+ fb->height - (fb->height/PSPLASH_PROGRESS_DIVIDER),
++ (fb->width - BAR_IMG_WIDTH)/2,
++ fb->height - (fb->height/PSPLASH_PROGRESS_DIVIDER),
BAR_IMG_WIDTH,
BAR_IMG_HEIGHT,
BAR_IMG_BYTES_PER_PIXEL,
@@ -266,9 +264,9 @@ Index: psplash/psplash.c
Index: psplash/psplash.h
===================================================================
---- psplash.orig/psplash.h
-+++ psplash/psplash.h
-@@ -54,6 +54,21 @@ typedef int bool;
+--- psplash.orig/psplash.h 2007-12-06 11:15:35.000000000 +0000
++++ psplash/psplash.h 2007-12-06 11:15:45.000000000 +0000
+@@ -54,6 +54,21 @@
#define TRUE 1
#endif
diff --git a/packages/psplash/files/logo-math.patch b/packages/psplash/files/logo-math.patch
new file mode 100644
index 0000000000..87574b1855
--- /dev/null
+++ b/packages/psplash/files/logo-math.patch
@@ -0,0 +1,13 @@
+Do better math when showing logo vs progressbar.
+
+--- psplash/psplash.c.org 2007-09-22 20:33:36.000000000 +0300
++++ psplash/psplash.c 2007-12-01 21:27:08.000000000 +0200
+@@ -258,7 +258,7 @@
+ /* Draw the OH logo */
+ psplash_fb_draw_image (fb,
+ (fb->width - HAND_IMG_WIDTH)/2,
+- (fb->height - HAND_IMG_HEIGHT)/2,
++ ((fb->height * 5) / 6 - HAND_IMG_HEIGHT)/2,
+ HAND_IMG_WIDTH,
+ HAND_IMG_HEIGHT,
+ HAND_IMG_BYTES_PER_PIXEL,
diff --git a/packages/psplash/files/psplash-init b/packages/psplash/files/psplash-init
index 2bd83cfb07..5587346cb1 100644
--- a/packages/psplash/files/psplash-init
+++ b/packages/psplash/files/psplash-init
@@ -19,3 +19,5 @@ export TMPDIR=/mnt/.psplash
mount tmpfs -t tmpfs $TMPDIR -o,size=40k
/usr/bin/psplash $psplash_args &
+
+(sleep 120; psplash-write "QUIT") &
diff --git a/packages/psplash/psplash_svn.bb b/packages/psplash/psplash_svn.bb
index 98e2a36805..cf6e228d92 100644
--- a/packages/psplash/psplash_svn.bb
+++ b/packages/psplash/psplash_svn.bb
@@ -3,7 +3,7 @@ HOMEPAGE = "http://projects.o-hand.com/psplash"
SECTION = "base"
LICENSE = "GPL"
PV = "0.0+svnr${SRCREV}"
-PR = "r9"
+PR = "r11"
# You can create your own pslash-hand-img.h by doing
# ./make-image-header.sh <file>.png HAND
@@ -17,6 +17,8 @@ SRC_URI = "svn://svn.o-hand.com/repos/misc/trunk;module=psplash;proto=http \
file://psplash-init"
S = "${WORKDIR}/psplash"
+# This really should be default, but due yo openmoko hack below, can't be easily
+SRC_URI_append_angstrom = " file://logo-math.patch;patch=1 "
SRC_URI_append_openmoko = " file://configurability.patch;patch=1 "
inherit autotools pkgconfig update-rc.d
diff --git a/packages/pulseaudio/files/disable-using-glibc-tls.patch b/packages/pulseaudio/files/disable-using-glibc-tls.patch
new file mode 100644
index 0000000000..9646e2c2d0
--- /dev/null
+++ b/packages/pulseaudio/files/disable-using-glibc-tls.patch
@@ -0,0 +1,15 @@
+Index: pulseaudio-0.9.7/configure.ac
+===================================================================
+--- pulseaudio-0.9.7.orig/configure.ac
++++ pulseaudio-0.9.7/configure.ac
+@@ -124,8 +124,8 @@
+ ret=$?
+ rm -f conftest.o conftest
+ if test $ret -eq 0 ; then
+- AC_DEFINE([HAVE_TLS_BUILTIN], 1, [Have __thread().])
+- AC_MSG_RESULT([yes])
++dnl AC_DEFINE([HAVE_TLS_BUILTIN], 1, [Have __thread().])
++ AC_MSG_RESULT([no])
+ else
+ AC_MSG_RESULT([no])
+ fi
diff --git a/packages/pulseaudio/files/fix-dbus-without-hal.patch b/packages/pulseaudio/files/fix-dbus-without-hal.patch
new file mode 100644
index 0000000000..f8ac5674a6
--- /dev/null
+++ b/packages/pulseaudio/files/fix-dbus-without-hal.patch
@@ -0,0 +1,15 @@
+Index: pulseaudio-0.9.8/src/Makefile.am
+===================================================================
+--- pulseaudio-0.9.8.orig/src/Makefile.am
++++ pulseaudio-0.9.8/src/Makefile.am
+@@ -1424,8 +1424,8 @@
+ # HAL
+ libdbus_util_la_SOURCES = modules/dbus-util.c modules/dbus-util.h
+ libdbus_util_la_LDFLAGS = -avoid-version
+-libdbus_util_la_LIBADD = $(AM_LIBADD) $(HAL_LIBS) libpulsecore.la
+-libdbus_util_la_CFLAGS = $(AM_CFLAGS) $(HAL_CFLAGS)
++libdbus_util_la_LIBADD = $(AM_LIBADD) $(HAL_LIBS) $(DBUS_LIBS) libpulsecore.la
++libdbus_util_la_CFLAGS = $(AM_CFLAGS) $(HAL_CFLAGS) $(DBUS_CFLAGS)
+
+ module_hal_detect_la_SOURCES = modules/module-hal-detect.c
+ module_hal_detect_la_LDFLAGS = -module -avoid-version
diff --git a/packages/pulseaudio/pulse.inc b/packages/pulseaudio/pulse.inc
index f765bec1a1..08b0b5cd14 100644
--- a/packages/pulseaudio/pulse.inc
+++ b/packages/pulseaudio/pulse.inc
@@ -3,7 +3,6 @@ HOMEPAGE = "http://www.pulseaudio.org"
AUTHOR = "Lennart Poettering"
SECTION = "libs/multimedia"
LICENSE = "LGPL"
-
DEPENDS = "libatomics-ops liboil avahi libsamplerate0 libsndfile1 libtool"
# optional
DEPENDS += "alsa-lib glib-2.0"
diff --git a/packages/pulseaudio/pulseaudio_0.9.8.bb b/packages/pulseaudio/pulseaudio_0.9.8.bb
new file mode 100644
index 0000000000..93c8ffb849
--- /dev/null
+++ b/packages/pulseaudio/pulseaudio_0.9.8.bb
@@ -0,0 +1,17 @@
+require pulse.inc
+
+DEPENDS += "dbus"
+
+# this is not correct (see below)
+SRC_URI += "\
+ file://disable-using-glibc-tls.patch;patch=1 \
+ file://fix-dbus-without-hal.patch;patch=1 \
+"
+
+PR = "r0"
+
+# problems w/ pulseaudio 0.9.8 atm:
+# 1.) needs libltdl >= 1.5.24 (yes, any older version will NOT work at runtime)
+# 2.) doesn't build w/ glibc TLS support (hence patched out)
+DEFAULT_PREFERENCE = "-1"
+
diff --git a/packages/python/python-2.5-manifest.inc b/packages/python/python-2.5-manifest.inc
index e80da80d87..f899eb2fea 100644
--- a/packages/python/python-2.5-manifest.inc
+++ b/packages/python/python-2.5-manifest.inc
@@ -1,5 +1,5 @@
########################################################################################################################
-### AUTO-GENERATED by 'contrib/python/generate-manifest-2.5.py' [(C) 2002-2007 Michael 'Mickey' Lauer <mlauer@vanille-media.de>] on Thu Aug 23 10:20:20 2007
+### AUTO-GENERATED by 'contrib/python/generate-manifest-2.5.py' [(C) 2002-2007 Michael 'Mickey' Lauer <mlauer@vanille-media.de>] on Fri Dec 7 11:51:27 2007
###
### Visit THE Python for Embedded Systems Site => http://www.Vanille.de/projects/python.spy
###
@@ -8,287 +8,292 @@
########################################################################################################################
-PROVIDES+="python-profile python-threading python-distutils python-textutils python-codecs python-pickle python-datetime python-core python-io python-compiler python-compression python-re python-xmlrpc python-terminal python-email python-image python-core-dbg python-resource python-devel python-math python-hotshot python-unixadmin python-syslog python-tkinter python-gdbm python-fcntl python-netclient python-pprint python-netserver python-curses python-smtpd python-html python-readline python-subprocess python-pydoc python-logging python-mailbox python-xml python-mime python-sqlite3 python-tests python-unittest python-stringold python-robotparser python-lib-old-and-deprecated python-compile python-debugger python-shell python-bsddb python-mmap python-zlib python-db python-crypt python-idle python-lang python-audio "
+PROVIDES+="python-profile python-threading python-distutils python-textutils python-codecs python-ctypes python-pickle python-datetime python-core python-io python-compiler python-compression python-re python-xmlrpc python-terminal python-email python-image python-core-dbg python-resource python-devel python-math python-hotshot python-unixadmin python-syslog python-tkinter python-gdbm python-fcntl python-netclient python-pprint python-netserver python-curses python-smtpd python-html python-readline python-subprocess python-pydoc python-logging python-mailbox python-xml python-mime python-sqlite3 python-tests python-unittest python-stringold python-robotparser python-lib-old-and-deprecated python-compile python-debugger python-shell python-bsddb python-mmap python-zlib python-db python-crypt python-idle python-lang python-audio "
-PACKAGES="python-profile python-threading python-distutils python-textutils python-codecs python-pickle python-datetime python-core python-io python-compiler python-compression python-re python-xmlrpc python-terminal python-email python-image python-core-dbg python-resource python-devel python-math python-hotshot python-unixadmin python-syslog python-tkinter python-gdbm python-fcntl python-netclient python-pprint python-netserver python-curses python-smtpd python-html python-readline python-subprocess python-pydoc python-logging python-mailbox python-xml python-mime python-sqlite3 python-tests python-unittest python-stringold python-robotparser python-lib-old-and-deprecated python-compile python-debugger python-shell python-bsddb python-mmap python-zlib python-db python-crypt python-idle python-lang python-audio "
+PACKAGES="python-profile python-threading python-distutils python-textutils python-codecs python-ctypes python-pickle python-datetime python-core python-io python-compiler python-compression python-re python-xmlrpc python-terminal python-email python-image python-core-dbg python-resource python-devel python-math python-hotshot python-unixadmin python-syslog python-tkinter python-gdbm python-fcntl python-netclient python-pprint python-netserver python-curses python-smtpd python-html python-readline python-subprocess python-pydoc python-logging python-mailbox python-xml python-mime python-sqlite3 python-tests python-unittest python-stringold python-robotparser python-lib-old-and-deprecated python-compile python-debugger python-shell python-bsddb python-mmap python-zlib python-db python-crypt python-idle python-lang python-audio "
DESCRIPTION_python-profile="Python Basic Profiling Support"
-PR_python-profile="ml1"
+PR_python-profile="ml5"
RDEPENDS_python-profile="python-core"
FILES_python-profile="${libdir}/python2.5/profile.* ${libdir}/python2.5/pstats.* "
DESCRIPTION_python-threading="Python Threading & Synchronization Support"
-PR_python-threading="ml1"
+PR_python-threading="ml5"
RDEPENDS_python-threading="python-core python-lang"
FILES_python-threading="${libdir}/python2.5/_threading_local.* ${libdir}/python2.5/dummy_thread.* ${libdir}/python2.5/dummy_threading.* ${libdir}/python2.5/mutex.* ${libdir}/python2.5/threading.* ${libdir}/python2.5/Queue.* "
DESCRIPTION_python-distutils="Python Distribution Utilities"
-PR_python-distutils="ml1"
+PR_python-distutils="ml5"
RDEPENDS_python-distutils="python-core"
FILES_python-distutils="${libdir}/python2.5/config ${libdir}/python2.5/distutils "
DESCRIPTION_python-textutils="Python Option Parsing, Text Wrapping and Comma-Separated-Value Support"
-PR_python-textutils="ml1"
+PR_python-textutils="ml5"
RDEPENDS_python-textutils="python-core python-io python-re python-stringold"
FILES_python-textutils="${libdir}/python2.5/lib-dynload/_csv.so ${libdir}/python2.5/csv.* ${libdir}/python2.5/optparse.* ${libdir}/python2.5/textwrap.* "
DESCRIPTION_python-codecs="Python Codecs, Encodings & i18n Support"
-PR_python-codecs="ml1"
-RDEPENDS_python-codecs="python-core"
+PR_python-codecs="ml5"
+RDEPENDS_python-codecs="python-core python-lang"
FILES_python-codecs="${libdir}/python2.5/codecs.* ${libdir}/python2.5/encodings ${libdir}/python2.5/gettext.* ${libdir}/python2.5/locale.* ${libdir}/python2.5/lib-dynload/_locale.so ${libdir}/python2.5/lib-dynload/unicodedata.so ${libdir}/python2.5/stringprep.* ${libdir}/python2.5/xdrlib.* "
+DESCRIPTION_python-ctypes="Python C Types Support"
+PR_python-ctypes="ml5"
+RDEPENDS_python-ctypes="python-core"
+FILES_python-ctypes="${libdir}/python2.5/ctypes ${libdir}/python2.5/lib-dynload/_ctypes.so "
+
DESCRIPTION_python-pickle="Python Persistence Support"
-PR_python-pickle="ml1"
+PR_python-pickle="ml5"
RDEPENDS_python-pickle="python-core python-codecs python-io python-re"
FILES_python-pickle="${libdir}/python2.5/pickle.* ${libdir}/python2.5/shelve.* ${libdir}/python2.5/lib-dynload/cPickle.so "
DESCRIPTION_python-datetime="Python Calendar and Time support"
-PR_python-datetime="ml1"
+PR_python-datetime="ml5"
RDEPENDS_python-datetime="python-core python-codecs"
FILES_python-datetime="${libdir}/python2.5/_strptime.* ${libdir}/python2.5/calendar.* ${libdir}/python2.5/lib-dynload/datetime.so "
DESCRIPTION_python-core="Python Interpreter and core modules (needed!)"
-PR_python-core="ml3"
+PR_python-core="ml5"
RDEPENDS_python-core=""
-FILES_python-core="${libdir}/python2.5/__future__.* ${libdir}/python2.5/copy.* ${libdir}/python2.5/copy_reg.* ${libdir}/python2.5/ConfigParser.* ${libdir}/python2.5/getopt.* ${libdir}/python2.5/linecache.* ${libdir}/python2.5/new.* ${libdir}/python2.5/os.* ${libdir}/python2.5/posixpath.* ${libdir}/python2.5/warnings.* ${libdir}/python2.5/site.* ${libdir}/python2.5/stat.* ${libdir}/python2.5/UserDict.* ${libdir}/python2.5/UserList.* ${libdir}/python2.5/UserString.* ${libdir}/python2.5/lib-dynload/binascii.so ${libdir}/python2.5/lib-dynload/struct.so ${libdir}/python2.5/lib-dynload/time.so ${libdir}/python2.5/lib-dynload/xreadlines.so ${libdir}/python2.5/types.* ${bindir}/python* "
+FILES_python-core="${libdir}/python2.5/__future__.* ${libdir}/python2.5/copy.* ${libdir}/python2.5/copy_reg.* ${libdir}/python2.5/ConfigParser.* ${libdir}/python2.5/getopt.* ${libdir}/python2.5/linecache.* ${libdir}/python2.5/new.* ${libdir}/python2.5/os.* ${libdir}/python2.5/posixpath.* ${libdir}/python2.5/struct.* ${libdir}/python2.5/warnings.* ${libdir}/python2.5/site.* ${libdir}/python2.5/stat.* ${libdir}/python2.5/UserDict.* ${libdir}/python2.5/UserList.* ${libdir}/python2.5/UserString.* ${libdir}/python2.5/lib-dynload/binascii.so ${libdir}/python2.5/lib-dynload/_struct.so ${libdir}/python2.5/lib-dynload/time.so ${libdir}/python2.5/lib-dynload/xreadlines.so ${libdir}/python2.5/types.* ${bindir}/python* "
DESCRIPTION_python-io="Python Low-Level I/O"
-PR_python-io="ml1"
+PR_python-io="ml5"
RDEPENDS_python-io="python-core python-math"
FILES_python-io="${libdir}/python2.5/lib-dynload/_socket.so ${libdir}/python2.5/lib-dynload/_ssl.so ${libdir}/python2.5/lib-dynload/select.so ${libdir}/python2.5/lib-dynload/termios.so ${libdir}/python2.5/lib-dynload/cStringIO.so ${libdir}/python2.5/pipes.* ${libdir}/python2.5/socket.* ${libdir}/python2.5/tempfile.* ${libdir}/python2.5/StringIO.* "
DESCRIPTION_python-compiler="Python Compiler Support"
-PR_python-compiler="ml1"
+PR_python-compiler="ml5"
RDEPENDS_python-compiler="python-core"
FILES_python-compiler="${libdir}/python2.5/compiler "
DESCRIPTION_python-compression="Python High Level Compression Support"
-PR_python-compression="ml1"
+PR_python-compression="ml5"
RDEPENDS_python-compression="python-core python-zlib"
FILES_python-compression="${libdir}/python2.5/gzip.* ${libdir}/python2.5/zipfile.* "
DESCRIPTION_python-re="Python Regular Expression APIs"
-PR_python-re="ml1"
+PR_python-re="ml5"
RDEPENDS_python-re="python-core"
FILES_python-re="${libdir}/python2.5/re.* ${libdir}/python2.5/sre.* ${libdir}/python2.5/sre_compile.* ${libdir}/python2.5/sre_constants* ${libdir}/python2.5/sre_parse.* "
DESCRIPTION_python-xmlrpc="Python XMLRPC Support"
-PR_python-xmlrpc="ml1"
+PR_python-xmlrpc="ml5"
RDEPENDS_python-xmlrpc="python-core python-xml python-netserver python-lang"
FILES_python-xmlrpc="${libdir}/python2.5/xmlrpclib.* ${libdir}/python2.5/SimpleXMLRPCServer.* "
DESCRIPTION_python-terminal="Python Terminal Controlling Support"
-PR_python-terminal="ml1"
+PR_python-terminal="ml5"
RDEPENDS_python-terminal="python-core python-io"
FILES_python-terminal="${libdir}/python2.5/pty.* ${libdir}/python2.5/tty.* "
DESCRIPTION_python-email="Python Email Support"
-PR_python-email="ml1"
+PR_python-email="ml5"
RDEPENDS_python-email="python-core python-io python-re python-mime python-audio python-image"
FILES_python-email="${libdir}/python2.5/email "
DESCRIPTION_python-image="Python Graphical Image Handling"
-PR_python-image="ml1"
+PR_python-image="ml5"
RDEPENDS_python-image="python-core"
FILES_python-image="${libdir}/python2.5/colorsys.* ${libdir}/python2.5/imghdr.* ${libdir}/python2.5/lib-dynload/imageop.so ${libdir}/python2.5/lib-dynload/rgbimg.so "
DESCRIPTION_python-core-dbg="Python core module debug information"
-PR_python-core-dbg="ml1"
+PR_python-core-dbg="ml5"
RDEPENDS_python-core-dbg="python-core"
FILES_python-core-dbg="${libdir}/python2.5/lib-dynload/.debug ${bindir}/.debug ${libdir}/.debug "
DESCRIPTION_python-resource="Python Resource Control Interface"
-PR_python-resource="ml1"
+PR_python-resource="ml5"
RDEPENDS_python-resource="python-core"
FILES_python-resource="${libdir}/python2.5/lib-dynload/resource.so "
DESCRIPTION_python-devel="Python Development Package"
-PR_python-devel="ml1"
+PR_python-devel="ml5"
RDEPENDS_python-devel="python-core"
FILES_python-devel="${includedir} ${libdir}/python2.5/config "
DESCRIPTION_python-math="Python Math Support"
-PR_python-math="ml1"
+PR_python-math="ml5"
RDEPENDS_python-math="python-core"
FILES_python-math="${libdir}/python2.5/lib-dynload/cmath.so ${libdir}/python2.5/lib-dynload/math.so ${libdir}/python2.5/lib-dynload/_random.so ${libdir}/python2.5/random.* ${libdir}/python2.5/sets.* "
DESCRIPTION_python-hotshot="Python Hotshot Profiler"
-PR_python-hotshot="ml1"
+PR_python-hotshot="ml5"
RDEPENDS_python-hotshot="python-core"
FILES_python-hotshot="${libdir}/python2.5/hotshot ${libdir}/python2.5/lib-dynload/_hotshot.so "
DESCRIPTION_python-unixadmin="Python Unix Administration Support"
-PR_python-unixadmin="ml1"
+PR_python-unixadmin="ml5"
RDEPENDS_python-unixadmin="python-core"
FILES_python-unixadmin="${libdir}/python2.5/lib-dynload/nis.so ${libdir}/python2.5/lib-dynload/grp.so ${libdir}/python2.5/lib-dynload/pwd.so ${libdir}/python2.5/getpass.* "
DESCRIPTION_python-syslog="Python's syslog Interface"
-PR_python-syslog="ml1"
+PR_python-syslog="ml5"
RDEPENDS_python-syslog="python-core"
FILES_python-syslog="${libdir}/python2.5/lib-dynload/syslog.so "
DESCRIPTION_python-tkinter="Python Tcl/Tk Bindings"
-PR_python-tkinter="ml1"
+PR_python-tkinter="ml5"
RDEPENDS_python-tkinter="python-core"
FILES_python-tkinter="${libdir}/python2.5/lib-dynload/_tkinter.so ${libdir}/python2.5/lib-tk "
DESCRIPTION_python-gdbm="Python GNU Database Support"
-PR_python-gdbm="ml1"
+PR_python-gdbm="ml5"
RDEPENDS_python-gdbm="python-core"
FILES_python-gdbm="${libdir}/python2.5/lib-dynload/gdbm.so "
DESCRIPTION_python-fcntl="Python's fcntl Interface"
-PR_python-fcntl="ml1"
+PR_python-fcntl="ml5"
RDEPENDS_python-fcntl="python-core"
FILES_python-fcntl="${libdir}/python2.5/lib-dynload/fcntl.so "
DESCRIPTION_python-netclient="Python Internet Protocol Clients"
-PR_python-netclient="ml2"
-RDEPENDS_python-netclient="python-core python-datetime python-io python-lang python-logging python-mime python-stringold"
+PR_python-netclient="ml5"
+RDEPENDS_python-netclient="python-core python-crypt python-datetime python-io python-lang python-logging python-mime"
FILES_python-netclient="${libdir}/python2.5/*Cookie*.* ${libdir}/python2.5/base64.* ${libdir}/python2.5/cookielib.* ${libdir}/python2.5/ftplib.* ${libdir}/python2.5/gopherlib.* ${libdir}/python2.5/hmac.* ${libdir}/python2.5/httplib.* ${libdir}/python2.5/mimetypes.* ${libdir}/python2.5/nntplib.* ${libdir}/python2.5/poplib.* ${libdir}/python2.5/smtplib.* ${libdir}/python2.5/telnetlib.* ${libdir}/python2.5/urllib.* ${libdir}/python2.5/urllib2.* ${libdir}/python2.5/urlparse.* "
DESCRIPTION_python-pprint="Python Pretty-Print Support"
-PR_python-pprint="ml1"
+PR_python-pprint="ml5"
RDEPENDS_python-pprint="python-core"
FILES_python-pprint="${libdir}/python2.5/pprint.* "
DESCRIPTION_python-netserver="Python Internet Protocol Servers"
-PR_python-netserver="ml1"
+PR_python-netserver="ml5"
RDEPENDS_python-netserver="python-core python-netclient"
FILES_python-netserver="${libdir}/python2.5/cgi.* ${libdir}/python2.5/BaseHTTPServer.* ${libdir}/python2.5/SimpleHTTPServer.* ${libdir}/python2.5/SocketServer.* "
DESCRIPTION_python-curses="Python Curses Support"
-PR_python-curses="ml1"
+PR_python-curses="ml5"
RDEPENDS_python-curses="python-core"
FILES_python-curses="${libdir}/python2.5/curses ${libdir}/python2.5/lib-dynload/_curses.so ${libdir}/python2.5/lib-dynload/_curses_panel.so "
DESCRIPTION_python-smtpd="Python Simple Mail Transport Daemon"
-PR_python-smtpd="ml1"
+PR_python-smtpd="ml5"
RDEPENDS_python-smtpd="python-core python-netserver python-email python-mime"
FILES_python-smtpd="${bindir}/smtpd.* "
DESCRIPTION_python-html="Python HTML Processing"
-PR_python-html="ml1"
+PR_python-html="ml5"
RDEPENDS_python-html="python-core"
FILES_python-html="${libdir}/python2.5/formatter.* ${libdir}/python2.5/htmlentitydefs.* ${libdir}/python2.5/htmllib.* ${libdir}/python2.5/markupbase.* ${libdir}/python2.5/sgmllib.* "
DESCRIPTION_python-readline="Python Readline Support"
-PR_python-readline="ml1"
+PR_python-readline="ml5"
RDEPENDS_python-readline="python-core"
FILES_python-readline="${libdir}/python2.5/lib-dynload/readline.so ${libdir}/python2.5/rlcompleter.* "
DESCRIPTION_python-subprocess="Python Subprocess Support"
-PR_python-subprocess="ml1"
+PR_python-subprocess="ml5"
RDEPENDS_python-subprocess="python-core python-io python-re python-fcntl python-pickle"
FILES_python-subprocess="${libdir}/python2.5/subprocess.* "
DESCRIPTION_python-pydoc="Python Interactive Help Support"
-PR_python-pydoc="ml1"
+PR_python-pydoc="ml5"
RDEPENDS_python-pydoc="python-core python-lang python-stringold python-re"
FILES_python-pydoc="${bindir}/pydoc ${libdir}/python2.5/pydoc.* "
DESCRIPTION_python-logging="Python Logging Support"
-PR_python-logging="ml1"
-RDEPENDS_python-logging="python-core"
+PR_python-logging="ml5"
+RDEPENDS_python-logging="python-core python-io python-lang python-stringold"
FILES_python-logging="${libdir}/python2.5/logging "
DESCRIPTION_python-mailbox="Python Mailbox Format Support"
-PR_python-mailbox="ml1"
+PR_python-mailbox="ml5"
RDEPENDS_python-mailbox="python-core python-mime"
FILES_python-mailbox="${libdir}/python2.5/mailbox.* "
DESCRIPTION_python-xml="Python basic XML support."
-PR_python-xml="ml2"
+PR_python-xml="ml5"
RDEPENDS_python-xml="python-core python-re python-netclient"
FILES_python-xml="${libdir}/python2.5/lib-dynload/pyexpat.so ${libdir}/python2.5/xml ${libdir}/python2.5/xmllib.* "
DESCRIPTION_python-mime="Python MIME Handling APIs"
-PR_python-mime="ml1"
+PR_python-mime="ml5"
RDEPENDS_python-mime="python-core python-io"
FILES_python-mime="${libdir}/python2.5/mimetools.* ${libdir}/python2.5/uu.* ${libdir}/python2.5/quopri.* ${libdir}/python2.5/rfc822.* "
DESCRIPTION_python-sqlite3="Python Sqlite3 Database Support"
-PR_python-sqlite3="ml1"
+PR_python-sqlite3="ml5"
RDEPENDS_python-sqlite3="python-core"
FILES_python-sqlite3="${libdir}/python2.5/sqlite3 "
DESCRIPTION_python-tests="Python Tests"
-PR_python-tests="ml1"
+PR_python-tests="ml5"
RDEPENDS_python-tests="python-core"
FILES_python-tests="${libdir}/python2.5/test "
DESCRIPTION_python-unittest="Python Unit Testing Framework"
-PR_python-unittest="ml1"
+PR_python-unittest="ml5"
RDEPENDS_python-unittest="python-core python-stringold python-lang"
FILES_python-unittest="${libdir}/python2.5/unittest.* "
DESCRIPTION_python-stringold="Python String APIs [deprecated]"
-PR_python-stringold="ml1"
+PR_python-stringold="ml5"
RDEPENDS_python-stringold="python-core python-re"
FILES_python-stringold="${libdir}/python2.5/lib-dynload/strop.so ${libdir}/python2.5/string.* "
DESCRIPTION_python-robotparser="Python robots.txt parser"
-PR_python-robotparser="ml1"
+PR_python-robotparser="ml5"
RDEPENDS_python-robotparser="python-core python-netclient"
FILES_python-robotparser="${libdir}/python2.5/robotparser.* "
DESCRIPTION_python-lib-old-and-deprecated="Python Deprecated Libraries"
-PR_python-lib-old-and-deprecated="ml1"
+PR_python-lib-old-and-deprecated="ml5"
RDEPENDS_python-lib-old-and-deprecated="python-core"
FILES_python-lib-old-and-deprecated="${libdir}/python2.5/lib-old "
DESCRIPTION_python-compile="Python Bytecode Compilation Support"
-PR_python-compile="ml1"
+PR_python-compile="ml5"
RDEPENDS_python-compile="python-core"
FILES_python-compile="${libdir}/python2.5/py_compile.* ${libdir}/python2.5/compileall.* "
DESCRIPTION_python-debugger="Python Debugger"
-PR_python-debugger="ml1"
+PR_python-debugger="ml5"
RDEPENDS_python-debugger="python-core python-io python-lang python-re python-stringold python-shell"
FILES_python-debugger="${libdir}/python2.5/bdb.* ${libdir}/python2.5/pdb.* "
DESCRIPTION_python-shell="Python Shell-Like Functionality"
-PR_python-shell="ml1"
+PR_python-shell="ml5"
RDEPENDS_python-shell="python-core python-re"
FILES_python-shell="${libdir}/python2.5/cmd.* ${libdir}/python2.5/commands.* ${libdir}/python2.5/dircache.* ${libdir}/python2.5/fnmatch.* ${libdir}/python2.5/glob.* ${libdir}/python2.5/popen2.* ${libdir}/python2.5/shutil.* "
DESCRIPTION_python-bsddb="Python Berkeley Database Bindings"
-PR_python-bsddb="ml1"
+PR_python-bsddb="ml5"
RDEPENDS_python-bsddb="python-core"
FILES_python-bsddb="${libdir}/python2.5/bsddb "
DESCRIPTION_python-mmap="Python Memory-Mapped-File Support"
-PR_python-mmap="ml1"
+PR_python-mmap="ml5"
RDEPENDS_python-mmap="python-core python-io"
FILES_python-mmap="${libdir}/python2.5/lib-dynload/mmap.so "
DESCRIPTION_python-zlib="Python zlib Support."
-PR_python-zlib="ml1"
+PR_python-zlib="ml5"
RDEPENDS_python-zlib="python-core"
FILES_python-zlib="${libdir}/python2.5/lib-dynload/zlib.so "
DESCRIPTION_python-db="Python File-Based Database Support"
-PR_python-db="ml1"
+PR_python-db="ml5"
RDEPENDS_python-db="python-core"
FILES_python-db="${libdir}/python2.5/anydbm.* ${libdir}/python2.5/dumbdbm.* ${libdir}/python2.5/whichdb.* "
DESCRIPTION_python-crypt="Python Basic Cryptographic and Hashing Support"
-PR_python-crypt="ml1"
+PR_python-crypt="ml5"
RDEPENDS_python-crypt="python-core"
-FILES_python-crypt="${libdir}/python2.5/lib-dynload/crypt.so ${libdir}/python2.5/lib-dynload/md5.so ${libdir}/python2.5/lib-dynload/rotor.so ${libdir}/python2.5/lib-dynload/sha.so "
+FILES_python-crypt="${libdir}/python2.5/hashlib.* ${libdir}/python2.5/md5.* ${libdir}/python2.5/sha.* ${libdir}/python2.5/lib-dynload/crypt.so ${libdir}/python2.5/lib-dynload/_hashlib.so ${libdir}/python2.5/lib-dynload/_sha256.so ${libdir}/python2.5/lib-dynload/_sha512.so "
DESCRIPTION_python-idle="Python Integrated Development Environment"
-PR_python-idle="ml1"
+PR_python-idle="ml5"
RDEPENDS_python-idle="python-core python-tkinter"
FILES_python-idle="${bindir}/idle ${libdir}/python2.5/idlelib "
DESCRIPTION_python-lang="Python Low-Level Language Support"
-PR_python-lang="ml1"
+PR_python-lang="ml5"
RDEPENDS_python-lang="python-core"
FILES_python-lang="${libdir}/python2.5/lib-dynload/array.so ${libdir}/python2.5/lib-dynload/parser.so ${libdir}/python2.5/lib-dynload/operator.so ${libdir}/python2.5/lib-dynload/_weakref.so ${libdir}/python2.5/lib-dynload/itertools.so ${libdir}/python2.5/lib-dynload/collections.so ${libdir}/python2.5/lib-dynload/_bisect.so ${libdir}/python2.5/lib-dynload/_heapq.so ${libdir}/python2.5/atexit.* ${libdir}/python2.5/bisect.* ${libdir}/python2.5/code.* ${libdir}/python2.5/codeop.* ${libdir}/python2.5/dis.* ${libdir}/python2.5/heapq.* ${libdir}/python2.5/inspect.* ${libdir}/python2.5/keyword.* ${libdir}/python2.5/opcode.* ${libdir}/python2.5/repr.* ${libdir}/python2.5/token.* ${libdir}/python2.5/tokenize.* ${libdir}/python2.5/traceback.* ${libdir}/python2.5/linecache.* ${libdir}/python2.5/weakref.* "
DESCRIPTION_python-audio="Python Audio Handling"
-PR_python-audio="ml1"
+PR_python-audio="ml5"
RDEPENDS_python-audio="python-core"
FILES_python-audio="${libdir}/python2.5/wave.* ${libdir}/python2.5/chunk.* ${libdir}/python2.5/sndhdr.* ${libdir}/python2.5/lib-dynload/ossaudiodev.so ${libdir}/python2.5/lib-dynload/audioop.so "
diff --git a/packages/python/python-2.5.1/enable-ctypes-module.patch b/packages/python/python-2.5.1/enable-ctypes-module.patch
new file mode 100644
index 0000000000..dd5adaf0e7
--- /dev/null
+++ b/packages/python/python-2.5.1/enable-ctypes-module.patch
@@ -0,0 +1,106 @@
+diff -Naur Python-2.5.1.orig/setup.py Python-2.5.1/setup.py
+--- Python-2.5.orig/setup.py 2006-08-10 01:42:18.000000000 +0200
++++ Python-2.5/setup.py 2007-11-21 18:00:43.000000000 +0100
+@@ -1321,16 +1329,16 @@
+ ffi_configfile):
+ from distutils.dir_util import mkpath
+ mkpath(ffi_builddir)
+- config_args = []
++ config_args = ['--host=%s' % os.environ["HOST_SYS"], ]
+
+ # Pass empty CFLAGS because we'll just append the resulting
+ # CFLAGS to Python's; -g or -O2 is to be avoided.
+- cmd = "cd %s && env CFLAGS='' '%s/configure' %s" \
+- % (ffi_builddir, ffi_srcdir, " ".join(config_args))
++ cmd = "(cd %s && autoconf -W cross) && (cd %s && env CFLAGS='' '%s/configure' %s)" \
++ % (ffi_srcdir, ffi_builddir, ffi_srcdir, " ".join(config_args))
+
+ res = os.system(cmd)
+ if res or not os.path.exists(ffi_configfile):
+- print "Failed to configure _ctypes module"
++ print "Failed to configure _ctypes module, ret %d or missing %s"% (res, ffi_configfile, )
+ return False
+
+ fficonfig = {}
+diff -Naur Python-2.5.1.orig/Modules/_ctypes/callbacks.c Python-2.5.1/Modules/_ctypes/callbacks.c
+--- Python-2.5.1.orig/Modules/_ctypes/callbacks.c 2006-10-17 21:41:10.000000000 +0200
++++ Python-2.5.1/Modules/_ctypes/callbacks.c 2007-11-22 10:29:33.000000000 +0100
+@@ -273,11 +273,13 @@
+ PyErr_NoMemory();
+ return NULL;
+ }
++#if FFI_CLOSURES
+ p->pcl = MallocClosure();
+ if (p->pcl == NULL) {
+ PyErr_NoMemory();
+ goto error;
+ }
++#endif
+
+ for (i = 0; i < nArgs; ++i) {
+ PyObject *cnv = PySequence_GetItem(converters, i);
+@@ -315,12 +317,14 @@
+ "ffi_prep_cif failed with %d", result);
+ goto error;
+ }
++#if FFI_CLOSURES
+ result = ffi_prep_closure(p->pcl, &p->cif, closure_fcn, p);
+ if (result != FFI_OK) {
+ PyErr_Format(PyExc_RuntimeError,
+ "ffi_prep_closure failed with %d", result);
+ goto error;
+ }
++#endif
+
+ p->converters = converters;
+ p->callable = callable;
+@@ -328,8 +332,10 @@
+
+ error:
+ if (p) {
++#if FFI_CLOSURES
+ if (p->pcl)
+ FreeClosure(p->pcl);
++#endif
+ PyMem_Free(p);
+ }
+ return NULL;
+diff -Naur Python-2.5.1.orig/Modules/_ctypes/_ctypes.c Python-2.5.1/Modules/_ctypes/_ctypes.c
+--- Python-2.5.1.orig/Modules/_ctypes/_ctypes.c 2007-03-23 20:56:45.000000000 +0100
++++ Python-2.5.1/Modules/_ctypes/_ctypes.c 2007-11-22 10:29:01.000000000 +0100
+@@ -3419,7 +3419,9 @@
+ Py_CLEAR(self->paramflags);
+
+ if (self->thunk) {
++#if FFI_CLOSURES
+ FreeClosure(self->thunk->pcl);
++#endif
+ PyMem_Free(self->thunk);
+ self->thunk = NULL;
+ }
+diff -Naur Python-2.5.1.orig/Modules/_ctypes/ctypes.h Python-2.5.1/Modules/_ctypes/ctypes.h
+--- Python-2.5.1.orig/Modules/_ctypes/ctypes.h 2006-08-14 13:17:48.000000000 +0200
++++ Python-2.5.1/Modules/_ctypes/ctypes.h 2007-11-22 10:29:44.000000000 +0100
+@@ -68,7 +68,9 @@
+ };
+
+ typedef struct {
++#if FFI_CLOSURES
+ ffi_closure *pcl; /* the C callable */
++#endif
+ ffi_cif cif;
+ PyObject *converters;
+ PyObject *callable;
+diff -Naur Python-2.5.1.orig/Modules/_ctypes/malloc_closure.c Python-2.5.1/Modules/_ctypes/malloc_closure.c
+--- Python-2.5.1.orig/Modules/_ctypes/malloc_closure.c 2006-06-12 22:56:48.000000000 +0200
++++ Python-2.5.1/Modules/_ctypes/malloc_closure.c 2007-11-22 10:30:17.000000000 +0100
+@@ -27,7 +27,9 @@
+ /******************************************************************/
+
+ typedef union _tagITEM {
++#if FFI_CLOSURES
+ ffi_closure closure;
++#endif
+ union _tagITEM *next;
+ } ITEM;
+
diff --git a/packages/python/python-cheetah_2.0.1.bb b/packages/python/python-cheetah_2.0.1.bb
new file mode 100644
index 0000000000..55f0b37b00
--- /dev/null
+++ b/packages/python/python-cheetah_2.0.1.bb
@@ -0,0 +1,11 @@
+DESCRIPTION = "template engine and code generation tool"
+SECTION = "devel/python"
+PRIORITY = "optional"
+LICENSE = "MIT-like"
+RDEPENDS = "python-pickle python-pprint"
+SRCNAME = "Cheetah"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/cheetahtemplate/${SRCNAME}-${PV}.tar.gz"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit distutils
diff --git a/packages/python/python-cython-native_0.9.6.9.bb b/packages/python/python-cython-native_0.9.6.9.bb
new file mode 100644
index 0000000000..cb7743e1bf
--- /dev/null
+++ b/packages/python/python-cython-native_0.9.6.9.bb
@@ -0,0 +1,9 @@
+require python-cython_${PV}.bb
+inherit native
+DEPENDS = "python-native"
+RDEPENDS = ""
+
+do_stage() {
+ BUILD_SYS=${BUILD_SYS} HOST_SYS=${HOST_SYS} \
+ ${STAGING_BINDIR}/python setup.py install --prefix=${STAGING_BINDIR}/.. --install-data=${STAGING_DATADIR}
+}
diff --git a/packages/python/python-cython_0.9.6.9.bb b/packages/python/python-cython_0.9.6.9.bb
new file mode 100644
index 0000000000..a513104108
--- /dev/null
+++ b/packages/python/python-cython_0.9.6.9.bb
@@ -0,0 +1,13 @@
+DESCRIPTION = "Cython is a language specially designed for writing Python extension modules. \
+It's designed to bridge the gap between the nice, high-level, easy-to-use world of Python \
+and the messy, low-level world of C."
+SECTION = "devel/python"
+PRIORITY = "optional"
+LICENSE = "GPL"
+SRCNAME = "cython"
+PR = "ml0"
+
+SRC_URI = "http://www.cython.org/${SRCNAME}-${PV}.zip"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit distutils
diff --git a/packages/python/python-django_0.96.1.bb b/packages/python/python-django_0.96.1.bb
new file mode 100644
index 0000000000..7921f9db0f
--- /dev/null
+++ b/packages/python/python-django_0.96.1.bb
@@ -0,0 +1,16 @@
+DESCRIPTION = "Python Web framework"
+SECTION = "devel/python"
+PRIORITY = "optional"
+LICENSE = "BSD"
+RDEPENDS = "python-email python-netserver python-pickle python-pprint \
+ python-shell python-textutils python-threading python-unixadmin \
+ python-xml"
+RRECOMMENDS = "python-pysqlite2"
+SRCNAME = "Django"
+
+SRC_URI = "http://media.djangoproject.com/releases/0.96/${SRCNAME}-${PV}.tar.gz"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit distutils
+
+DISTUTILS_INSTALL_ARGS = "--root=${D} --prefix=${prefix}"
diff --git a/packages/python/python-ecore_cvs.bb b/packages/python/python-ecore_cvs.bb
index 73c9f1d0b6..8f4db6382e 100644
--- a/packages/python/python-ecore_cvs.bb
+++ b/packages/python/python-ecore_cvs.bb
@@ -1,5 +1,9 @@
require python-efl.inc
DEPENDS += "ecore"
-PR = "r1"
+PR = "r2"
+
+do_stage() {
+ distutils_stage_all
+}
diff --git a/packages/python/python-efl.bb b/packages/python/python-efl.bb
new file mode 100644
index 0000000000..c667ceff11
--- /dev/null
+++ b/packages/python/python-efl.bb
@@ -0,0 +1,7 @@
+DESCRIPTION = "Python Bindings to the Enlightenment Foundation Libraries"
+LICENSE = "MIT"
+SECTION = "devel/python"
+DEPENDS = "python-evas python-ecore python-emotion python-edje python-epsilon"
+
+ALLOW_EMPTY = "1"
+
diff --git a/packages/python/python-efl.inc b/packages/python/python-efl.inc
index aa12b979f8..727c718bd2 100644
--- a/packages/python/python-efl.inc
+++ b/packages/python/python-efl.inc
@@ -2,17 +2,15 @@ DESCRIPTION = "${PN} bindings"
LICENSE = "BSD"
AUTHOR = "Gustavo Sverzut Barbieri <barbieri@gmail.com>"
HOMEPAGE = "http://www.enlightenment.org"
-DEPENDS = "python-pyrex-native python-numeric"
+# somewhere is a bug. cython should be self-contained, but somehow this
+# does not compile unless pyrex has been built
+DEPENDS = "python-cython-native python-pyrex-native python-numeric"
PV = "0.1.1+cvs${SRCDATE}"
-inherit distutils
+inherit setuptools
SRC_URI = "${E_CVS};module=e17/proto/python-efl/${PN}"
S = "${WORKDIR}/${PN}"
-do_install_append() {
- rm ${D}${libdir}/${PYTHON_DIR}/site-packages/site.*
-}
-
FILES_${PN}-dbg += "${libdir}/${PYTHON_DIR}/site-packages/*.egg/*/*/.debug"
diff --git a/packages/python/python-epsilon_cvs.bb b/packages/python/python-epsilon_cvs.bb
new file mode 100644
index 0000000000..81ebfcb0c7
--- /dev/null
+++ b/packages/python/python-epsilon_cvs.bb
@@ -0,0 +1,4 @@
+require python-efl.inc
+DEPENDS += "epsilon python-ecore"
+
+PR = "r0"
diff --git a/packages/python/python-formencode/setup.py.diff b/packages/python/python-formencode/setup.py.diff
deleted file mode 100644
index dc9db4352e..0000000000
--- a/packages/python/python-formencode/setup.py.diff
+++ /dev/null
@@ -1,13 +0,0 @@
---- python-formencode-0.4.orig/setup.py
-+++ python-formencode-0.4/setup.py
-@@ -1,6 +1,7 @@
--from ez_setup import use_setuptools
--use_setuptools()
--from setuptools import setup
-+#from ez_setup import use_setuptools
-+#use_setuptools()
-+#from setuptools import setup
-+from distutils.core import setup
-
- version = '0.4'
-
diff --git a/packages/python/python-formencode_svn.bb b/packages/python/python-formencode_svn.bb
index b1cf3ce7c7..80a1ba2e5b 100644
--- a/packages/python/python-formencode_svn.bb
+++ b/packages/python/python-formencode_svn.bb
@@ -4,12 +4,11 @@ PRIORITY = "optional"
LICENSE = "LGPL"
DEPENDS = "sqlite3"
SRCNAME = "FormEncode"
-PV = "0.4+svn${SRCDATE}"
+PV = "0.4+svnr${SRCREV}"
PR = "ml0"
inherit distutils
-SRC_URI = "svn://svn.colorstudy.com/FormEncode;module=trunk;proto=http \
- file://setup.py.diff;patch=1"
+SRC_URI = "svn://svn.colorstudy.com/FormEncode;module=trunk;proto=http"
S = "${WORKDIR}/trunk"
diff --git a/packages/python/python-gst_0.10.8.bb b/packages/python/python-gst_0.10.8.bb
index 0de7dc81e9..224d24b59a 100644
--- a/packages/python/python-gst_0.10.8.bb
+++ b/packages/python/python-gst_0.10.8.bb
@@ -2,7 +2,7 @@ DESCRIPTION = "Python Gstreamer bindings"
SECTION = "devel/python"
LICENSE = "LGPL"
DEPENDS = "gstreamer gst-plugins-base python-pygobject"
-PR = "ml0"
+PR = "ml1"
SRC_URI = "http://gstreamer.freedesktop.org/src/gst-python/gst-python-${PV}.tar.bz2 \
file://python-path.patch;patch=1"
@@ -21,4 +21,6 @@ do_stage() {
autotools_stage_all
}
-FILES_${PN}-dbg = "${libdir}/python2.4/site-packages/gst-0.10/gst/.debug/"
+FILES_${PN} += "${datadir}/gst-python"
+FILES_${PN}-dev += "${datadir}/gst-python/0.10/defs"
+FILES_${PN}-dbg += "${libdir}/${PYTHON_DIR}/site-packages/gst-0.10/gst/.debug/"
diff --git a/packages/python/python-pycairo_1.4.0.bb b/packages/python/python-pycairo_1.4.0.bb
index 0a20010be6..a74c59fdaa 100644
--- a/packages/python/python-pycairo_1.4.0.bb
+++ b/packages/python/python-pycairo_1.4.0.bb
@@ -14,6 +14,3 @@ do_stage() {
install -d ${STAGING_INCDIR}
install -m 0644 cairo/pycairo.h ${STAGING_INCDIR}
}
-
-
-FILES_${PN}-dbg += "${libdir}/python2.4/site-packages/cairo/.debug"
diff --git a/packages/python/python-pygobject_2.12.3.bb b/packages/python/python-pygobject_2.12.3.bb
index a9ab5b51ad..bfd04d569d 100644
--- a/packages/python/python-pygobject_2.12.3.bb
+++ b/packages/python/python-pygobject_2.12.3.bb
@@ -6,7 +6,6 @@ PR = "r3"
SRC_URI = "ftp://ftp.gnome.org/pub/GNOME/sources/pygobject/2.12/pygobject-${PV}.tar.bz2 \
file://python-path.patch;patch=1"
-
S = "${WORKDIR}/pygobject-${PV}"
inherit autotools distutils-base pkgconfig
@@ -22,5 +21,4 @@ do_stage() {
}
FILES_${PN} = "${libdir}/python*"
-FILES_${PN}-dbg += "${libdir}/python2.4/site-packages/gtk-2.0/gobject/.debug"
FILES_${PN}-dev += "${datadir}/pygobject/xsl"
diff --git a/packages/python/python-pygtk-1.2/acinclude.m4 b/packages/python/python-pygtk-1.2/acinclude.m4
new file mode 100644
index 0000000000..53518fb2eb
--- /dev/null
+++ b/packages/python/python-pygtk-1.2/acinclude.m4
@@ -0,0 +1,90 @@
+## this one is commonly used with AM_PATH_PYTHONDIR ...
+dnl AM_CHECK_PYMOD(MODNAME [,SYMBOL [,ACTION-IF-FOUND [,ACTION-IF-NOT-FOUND]]])
+dnl Check if a module containing a given symbol is visible to python.
+AC_DEFUN(AM_CHECK_PYMOD,
+[AC_REQUIRE([AM_PATH_PYTHON])
+py_mod_var=`echo $1['_']$2 | sed 'y%./+-%__p_%'`
+AC_MSG_CHECKING(for ifelse([$2],[],,[$2 in ])python module $1)
+AC_CACHE_VAL(py_cv_mod_$py_mod_var, [
+ifelse([$2],[], [prog="
+import sys
+try:
+ import $1
+except ImportError:
+ sys.exit(1)
+except:
+ sys.exit(0)
+sys.exit(0)"], [prog="
+import $1
+$1.$2"])
+if $PYTHON -c "$prog" 1>&AC_FD_CC 2>&AC_FD_CC
+ then
+ eval "py_cv_mod_$py_mod_var=yes"
+ else
+ eval "py_cv_mod_$py_mod_var=no"
+ fi
+])
+py_val=`eval "echo \`echo '$py_cv_mod_'$py_mod_var\`"`
+if test "x$py_val" != xno; then
+ AC_MSG_RESULT(yes)
+ ifelse([$3], [],, [$3
+])dnl
+else
+ AC_MSG_RESULT(no)
+ ifelse([$4], [],, [$4
+])dnl
+fi
+])
+
+dnl a macro to check for ability to create python extensions
+dnl AM_CHECK_PYTHON_HEADERS([ACTION-IF-POSSIBLE], [ACTION-IF-NOT-POSSIBLE])
+dnl function also defines PYTHON_INCLUDES
+AC_DEFUN([AM_CHECK_PYTHON_HEADERS],
+[AC_REQUIRE([AM_PATH_PYTHON])
+AC_MSG_CHECKING(for headers required to compile python extensions)
+dnl deduce PYTHON_INCLUDES
+AC_ARG_WITH(python-includes,
+ [ --with-python-includes=DIR path to Python includes], py_exec_prefix=$withval)
+if test x$py_exec_prefix != x; then
+PYTHON_INCLUDES="-I${py_exec_prefix}/include/python${PYTHON_VERSION}"
+else
+py_prefix=`$PYTHON -c "import sys; print sys.prefix"`
+py_exec_prefix=`$PYTHON -c "import sys; print sys.exec_prefix"`
+PYTHON_INCLUDES="-I${py_prefix}/include/python${PYTHON_VERSION}"
+if test "$py_prefix" != "$py_exec_prefix"; then
+ PYTHON_INCLUDES="$PYTHON_INCLUDES -I${py_exec_prefix}/include/python${PYTHON_VERSION}"
+fi
+fi
+AC_SUBST(PYTHON_INCLUDES)
+dnl check if the headers exist:
+save_CPPFLAGS="$CPPFLAGS"
+CPPFLAGS="$CPPFLAGS $PYTHON_INCLUDES"
+AC_TRY_CPP([#include <Python.h>],dnl
+[AC_MSG_RESULT(found)
+$1],dnl
+[AC_MSG_RESULT(not found)
+$2])
+CPPFLAGS="$save_CPPFLAGS"
+])
+
+dnl
+dnl JH_ADD_CFLAG(FLAG)
+dnl checks whether the C compiler supports the given flag, and if so, adds
+dnl it to $CFLAGS. If the flag is already present in the list, then the
+dnl check is not performed.
+AC_DEFUN([JH_ADD_CFLAG],
+[
+case " $CFLAGS " in
+*@<:@\ \ @:>@$1@<:@\ \ @:>@*)
+ ;;
+*)
+ save_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS $1"
+ AC_MSG_CHECKING([whether [$]CC understands $1])
+ AC_TRY_COMPILE([], [], [jh_has_option=yes], [jh_has_option=no])
+ AC_MSG_RESULT($jh_has_option)
+ if test $jh_has_option = no; then
+ CFLAGS="$save_CFLAGS"
+ fi
+ ;;
+esac])
diff --git a/packages/python/python-pygtk_2.10.3.bb b/packages/python/python-pygtk_2.10.3.bb
deleted file mode 100644
index 78c76d47f9..0000000000
--- a/packages/python/python-pygtk_2.10.3.bb
+++ /dev/null
@@ -1,41 +0,0 @@
-DESCRIPTION = "Python GTK+ Bindings"
-SECTION = "devel/python"
-# needs gtk+ 2.10.x
-DEPENDS = "gtk+ libglade python-pycairo python-pygobject"
-RDEPENDS = "python-shell"
-SRCNAME = "pygtk"
-LICENSE = "LGPL"
-PR = "ml4"
-
-SRC_URI = "ftp://ftp.gnome.org/pub/gnome/sources/pygtk/2.10/${SRCNAME}-${PV}.tar.bz2 \
- file://fix-gtkunixprint.patch;patch=1 \
- file://acinclude.m4"
-S = "${WORKDIR}/${SRCNAME}-${PV}"
-
-EXTRA_OECONF = "--disable-docs"
-EXTRA_OECONF += "--with-python-includes=${STAGING_INCDIR}/../"
-
-inherit autotools pkgconfig distutils-base
-
-FILES_${PN}-dev += "${libdir}/pygtk/2.0 ${bindir}/pygtk-*"
-FILES_${PN}-dbg += "${libdir}/python2.4/site-packages/gtk-2.0/.debug"
-
-do_configure_prepend() {
- install -m 0644 ${WORKDIR}/acinclude.m4 ${S}/
-}
-
-require fix-path.inc
-
-FILES_${PN}-dbg += "${libdir}/python2.4/site-packages/gtk-2.0/*/.debug"
-FILES_${PN}-dbg += "${libdir}/python2.4/site-packages/gtk-2.0/.debug"
-
-do_stage() {
- autotools_stage_includes
- sed -i s:/usr/share:${STAGING_DATADIR}: codegen/pygtk-codegen-2.0
- install -m 0755 codegen/pygtk-codegen-2.0 ${STAGING_BINDIR_NATIVE}/
- install -d ${STAGING_DATADIR}/pygtk/2.0/codegen
- install -d ${STAGING_DATADIR}/pygtk/2.0/defs/
- cp -pPr codegen/*.py* ${STAGING_DATADIR}/pygtk/2.0/codegen/
- cp -pPr *.defs ${STAGING_DATADIR}/pygtk/2.0/defs/
- cp -pPr gtk/*.defs ${STAGING_DATADIR}/pygtk/2.0/defs/
-}
diff --git a/packages/python/python-pygtk_2.10.4.bb b/packages/python/python-pygtk_2.10.4.bb
index 87776ff426..d53e3d5105 100644
--- a/packages/python/python-pygtk_2.10.4.bb
+++ b/packages/python/python-pygtk_2.10.4.bb
@@ -1,11 +1,12 @@
DESCRIPTION = "Python GTK+ 2.10.x Bindings"
SECTION = "devel/python"
# needs gtk+ 2.10.x
-DEPENDS = "gtk+ libglade python-pycairo python-pygobject"
+DEPENDS = "gtk+ libglade"
RDEPENDS = "python-shell python-pycairo python-pygobject"
+PROVIDES = "python-pygtk2"
SRCNAME = "pygtk"
LICENSE = "LGPL"
-PR = "ml3"
+PR = "ml5"
SRC_URI = "ftp://ftp.gnome.org/pub/gnome/sources/pygtk/2.10/${SRCNAME}-${PV}.tar.bz2 \
file://fix-gtkunixprint.patch;patch=1 \
@@ -18,21 +19,31 @@ EXTRA_OECONF += "--with-python-includes=${STAGING_INCDIR}/../"
inherit autotools pkgconfig distutils-base
do_configure_prepend() {
- install -m 0644 ${WORKDIR}/acinclude.m4 ${S}/
+ install -m 0644 ${WORKDIR}/acinclude.m4 ${S}/
}
-
-FILES_${PN}-dev += "${libdir}/pygtk/2.0 ${bindir}/pygtk-*"
-FILES_${PN}-dbg += "${libdir}/python2.4/site-packages/gtk-2.0/.debug"
-
-do_configure_prepend() {
- install -m 0644 ${WORKDIR}/acinclude.m4 ${S}/
+# dirty fix #1: remove dependency on python-pygobject-dev
+do_install_append() {
+ find ${D} -name "*.la"|xargs rm -f
+ rm -f ${D}/${bindir}/pygtk-codegen-2.0
+ rm -rf ${D}/${libdir}/pkgconfig
}
+# dirty fix #2: fix build system paths leaking in
require fix-path.inc
-FILES_${PN}-dev += "${libdir}/pygtk/2.0 ${bindir}/pygtk-*"
-FILES_${PN}-dbg += "${libdir}/python2.4/site-packages/gtk-2.0/*/.debug"
-FILES_${PN}-dbg += "${libdir}/python2.4/site-packages/gtk-2.0/.debug"
+
+PACKAGES =+ "${PN}-demo"
+FILES_${PN}-demo = "\
+ ${bindir}/pygtk-demo \
+ ${libdir}/pygtk \
+"
+RDEPENDS_${PN}-demo = "python-pygtk python-stringold python-lang"
+
+# todo: revamp packaging, package demo seperatly
+FILES_${PN}-dev += "\
+ ${libdir}/pygtk/2.0 \
+ ${bindir}/pygtk-* \
+ ${datadir}/pygtk/2.0"
do_stage() {
autotools_stage_includes
diff --git a/packages/python/python-pygtk_2.6.3.bb b/packages/python/python-pygtk_2.6.3.bb
index 417de0a109..ae6b7d131e 100644
--- a/packages/python/python-pygtk_2.6.3.bb
+++ b/packages/python/python-pygtk_2.6.3.bb
@@ -15,8 +15,6 @@ inherit autotools pkgconfig distutils-base
EXTRA_OECONF += "--with-python-includes=${STAGING_INCDIR}/../"
PACKAGES = "${PN}-dbg ${PN}-dev ${PN}-doc ${PN}"
-FILES_${PN}-dbg += "${libdir}/python2.4/site-packages/gtk-2.0/gtk/.debug \
- ${libdir}/python2.4/site-packages/gtk-2.0/.debug"
FILES_${PN}-dev += "${bindir} ${datadir}/pygtk ${libdir}/pygtk"
do_configure_prepend() {
@@ -25,7 +23,7 @@ do_configure_prepend() {
do_stage() {
autotools_stage_includes
- sed -i s:/usr/share:${STAGING_DATADIR}: codegen/pygtk-codegen-2.0
+ sed -i s:/usr/share:${STAGING_DATADIR}: codegen/pygtk-codegen-2.0
install -m 0755 codegen/pygtk-codegen-2.0 ${STAGING_BINDIR_NATIVE}/
install -d ${STAGING_DATADIR}/pygtk/2.0/codegen
install -d ${STAGING_DATADIR}/pygtk/2.0/defs/
diff --git a/packages/python/python-pyopenssl_0.6.bb b/packages/python/python-pyopenssl_0.6.bb
new file mode 100644
index 0000000000..f3e6835a24
--- /dev/null
+++ b/packages/python/python-pyopenssl_0.6.bb
@@ -0,0 +1,12 @@
+DESCRIPTION = "Simple Python wrapper around the OpenSSL library"
+SECTION = "devel/python"
+PRIORITY = "optional"
+LICENSE = "LGPL"
+SRCNAME = "pyOpenSSL"
+DEPENDS = "openssl"
+RDEPENDS = "python-threading"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/pyopenssl/${SRCNAME}-${PV}.tar.gz"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit distutils
diff --git a/packages/python/python-pyqt/01_configure.dpatch b/packages/python/python-pyqt/01_configure.dpatch
new file mode 100644
index 0000000000..d7c45b9a44
--- /dev/null
+++ b/packages/python/python-pyqt/01_configure.dpatch
@@ -0,0 +1,288 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 01_configure.dpatch by Torsten Marek <shlomme@debian.org>
+##
+## DP: Make PyQt4 objectdir-buildable
+
+@DPATCH@
+diff -urNad python-qt4-4.2+snapshot20070727~/configure.py python-qt4-4.2+snapshot20070727/configure.py
+--- python-qt4-4.2+snapshot20070727~/configure.py 2007-07-29 23:58:48.000000000 +0200
++++ python-qt4-4.2+snapshot20070727/configure.py 2007-07-30 00:00:17.000000000 +0200
+@@ -20,6 +20,8 @@
+ # Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
++# Modified for Debian by Torsten Marek <shlomme@gmx.net>
++
+ import sys
+ import os
+ import string
+@@ -29,6 +31,23 @@
+
+ import sipconfig
+
++topsrcdir = os.path.dirname(os.path.abspath(__file__))
++has_objdir = topsrcdir != os.path.abspath(os.path.curdir)
++if not has_objdir:
++ topsrcdir = None
++
++
++def makeDir(dirname):
++ try:
++ os.mkdir(dirname)
++ except OSError, e:
++ if e.errno != 17:
++ raise
++
++def srcPath(filename):
++ if topsrcdir is not None:
++ return os.path.join(topsrcdir, filename)
++ return filename
+
+ # Initialise the globals.
+ pyqt_version = 0x040200
+@@ -134,6 +153,8 @@
+ p.add_option("-g", "--consolidate", action="store_true", default=False,
+ dest="bigqt", help="create a single module which links against "
+ "all the Qt libraries")
++ p.add_option("--disable-designer-plugin", action="store_true", default=False,
++ help="do not build the Qt Designer plugin")
+
+ # These are internal options used to build the mega Windows GPL package.
+ p.add_option("--mwg-openssl", action="callback", default=None,
+@@ -282,6 +303,7 @@
+ check_module("QAxContainer", "qaxobject.h", "new QAxObject()",
+ extra_libs=["QAxContainer"])
+
++ makeDir("dbus")
+ if os.path.isdir("dbus"):
+ check_dbus()
+
+@@ -354,7 +376,7 @@
+ generate_code("QtAssistant")
+
+ if "QtDesigner" in pyqt_modules:
+- qpy_dir = os.path.abspath(os.path.join("qpy", "QtDesigner"))
++ qpy_dir = os.path.abspath(srcPath(os.path.join("qpy", "QtDesigner")))
+
+ if sys.platform == "win32":
+ if opts.debug:
+@@ -380,10 +402,10 @@
+
+ # Generate the composite module.
+ qtmod_sipdir = os.path.join("sip", "Qt")
+- mk_clean_dir(qtmod_sipdir)
++ mk_clean_dir(srcPath(qtmod_sipdir))
+
+ qtmod_sipfile = os.path.join(qtmod_sipdir, "Qtmod.sip")
+- f = open(qtmod_sipfile, "w")
++ f = open(srcPath(qtmod_sipfile), "w")
+
+ f.write("""%CompositeModule PyQt4.Qt
+
+@@ -555,7 +577,7 @@
+ return libs, libdirs
+
+ def module_installs(self):
+- return ["__init__.py", "pyqtconfig.py"]
++ return [srcPath("__init__.py"), "pyqtconfig.py"]
+
+ def qpylibs(self):
+ # See which QPy libraries to build.
+@@ -571,8 +593,8 @@
+ for qpy, pro in qpylibs.iteritems():
+ sipconfig.inform("Creating QPy library for %s Makefile..." % qpy)
+
+- os.chdir(os.path.join("qpy", qpy))
+-
++ os.chdir(srcPath(os.path.join("qpy", qpy)))
++
+ if sipcfg.universal:
+ upro = "u_" + pro
+
+@@ -596,6 +618,8 @@
+
+ sipconfig.inform("Creating QPy libraries Makefile...")
+
++ makeDir("qpy")
++ os.system("ln -s %s qpy/QtDesigner" % (srcPath("qpy/QtDesigner"),))
+ sipconfig.ParentMakefile(
+ configuration=sipcfg,
+ dir="qpy",
+@@ -617,6 +641,7 @@
+ install_dir=pydbusmoddir,
+ qt=["QtCore"],
+ debug=opts.debug,
++ topsrcdir=topsrcdir,
+ universal=sipcfg.universal
+ )
+
+@@ -625,18 +650,19 @@
+ makefile.generate()
+ tool.append("dbus")
+
+- # Only include ElementTree for older versions of Python.
+- if sipcfg.py_version < 0x020500:
+- sipconfig.inform("Creating elementtree Makefile...")
++ # Don't include elementtree on Debian
++## # Only include ElementTree for older versions of Python.
++## if sipcfg.py_version < 0x020500:
++## sipconfig.inform("Creating elementtree Makefile...")
+
+- makefile = sipconfig.PythonModuleMakefile(
+- configuration=sipcfg,
+- dstdir=os.path.join(pyqt_modroot, "elementtree"),
+- dir="elementtree"
+- )
++## makefile = sipconfig.PythonModuleMakefile(
++## configuration=sipcfg,
++## dstdir=os.path.join(pyqt_modroot, "elementtree"),
++## dir="elementtree"
++## )
+
+- makefile.generate()
+- tool.append("elementtree")
++## makefile.generate()
++## tool.append("elementtree")
+
+ # Create the pyuic4 wrapper. Use the GUI version on MacOS (so that
+ # previews work properly and normal console use will work anyway), but
+@@ -644,16 +670,18 @@
+ sipconfig.inform("Creating pyuic4 wrapper...")
+
+ uicdir=os.path.join(pyqt_modroot, "uic")
+- wrapper = sipconfig.create_wrapper(os.path.join(uicdir, "pyuic.py"), os.path.join("pyuic", "pyuic4"), (sys.platform == "darwin"))
++ makeDir("pyuic")
++ # Wrapper script is not needed on Debian
++ #wrapper = sipconfig.create_wrapper(os.path.join(uicdir, "pyuic.py"), os.path.join("pyuic", "pyuic4"), (sys.platform == "darwin"))
+
+ sipconfig.inform("Creating pyuic4 Makefile...")
+
+ makefile = sipconfig.PythonModuleMakefile(
+ configuration=sipcfg,
+ dstdir=uicdir,
+- srcdir="uic",
++ srcdir=srcPath(os.path.join("pyuic", "uic")),
+ dir="pyuic",
+- installs=[[os.path.basename(wrapper), opts.pyqtbindir]]
++ #installs=[[os.path.basename(wrapper), opts.pyqtbindir]]
+ )
+
+ makefile.generate()
+@@ -661,7 +689,7 @@
+
+ if "QtXml" in pyqt_modules:
+ sipconfig.inform("Creating pylupdate4 Makefile...")
+-
++ makeDir("pylupdate")
+ makefile = sipconfig.ProgramMakefile(
+ configuration=sipcfg,
+ build_file="pylupdate.sbf",
+@@ -671,14 +699,15 @@
+ qt=["QtCore", "QtGui", "QtXml"],
+ debug=opts.debug,
+ warnings=1,
++ topsrcdir=topsrcdir,
+ universal=sipcfg.universal
+ )
+-
++ makefile.extra_include_dirs.append(srcPath("pylupdate"))
+ makefile.generate()
+ tool.append("pylupdate")
+
+ sipconfig.inform("Creating pyrcc4 Makefile...")
+-
++ makeDir("pyrcc")
+ makefile = sipconfig.ProgramMakefile(
+ configuration=sipcfg,
+ build_file="pyrcc.sbf",
+@@ -688,6 +717,7 @@
+ qt=["QtCore", "QtXml"],
+ debug=opts.debug,
+ warnings=1,
++ topsrcdir=topsrcdir,
+ universal=sipcfg.universal
+ )
+
+@@ -697,7 +727,7 @@
+ sipconfig.inform("pylupdate4 and pyrcc4 will not be built because the Qt XML module is missing.")
+
+ if "QtDesigner" in pyqt_modules:
+- enabled = True
++ enabled = not opts.disable_designer_plugin
+
+ py_major = sipcfg.py_version >> 16
+ py_minor = (sipcfg.py_version >> 8) & 0x0ff
+@@ -731,7 +761,7 @@
+ # Run qmake to generate the Makefile.
+ qmake_args = fix_qmake_args()
+ cwd = os.getcwd()
+- os.chdir("designer")
++ os.chdir(srcPath("designer"))
+
+ # Create the qmake project file.
+ fin = open("python.pro-in")
+@@ -755,7 +785,7 @@
+ run_command("%s %s" % (opts.qmake, qmake_args))
+ os.chdir(cwd)
+
+- tool.append("designer")
++ tool.append(srcPath("designer"))
+
+ return tool
+
+@@ -899,7 +929,6 @@
+ add_makefile_extras(makefile, extra_include_dirs, extra_lib_dirs, extra_libs)
+
+ exe, build = makefile.build_command(name)
+-
+ # Make sure the executable file doesn't exist.
+ remove_file(exe)
+ run_command(build)
+@@ -1025,7 +1054,7 @@
+ return
+
+ # Check the module's main .sip file exists.
+- if os.access(os.path.join("sip", mname, mname + "mod.sip"), os.F_OK):
++ if os.access(srcPath(os.path.join("sip", mname, mname + "mod.sip")), os.F_OK):
+ sipconfig.inform("Checking to see if the %s module should be built..." % mname)
+
+ if check_api(incfile, test, mname, extra_include_dirs=extra_include_dirs, extra_lib_dirs=extra_lib_dirs, extra_libs=extra_libs):
+@@ -1226,10 +1255,14 @@
+ argv.append(buildfile)
+
+ argv.append("-I")
+- argv.append("sip")
++ argv.append(srcPath("sip"))
+
+ # SIP assumes POSIX style path separators.
+- argv.append(string.join(["sip", mname, mname + "mod.sip"], "/"))
++ if topsrcdir is not None:
++ argv.append(string.join([topsrcdir, "sip", mname, mname + "mod.sip"], "/"))
++ else:
++ argv.append(string.join(["sip", mname, mname + "mod.sip"], "/"))
++
+
+ cmd = string.join(argv)
+
+@@ -1251,7 +1284,11 @@
+ sipfiles = []
+
+ for s in glob.glob("sip/" + mname + "/*.sip"):
+- sipfiles.append(os.path.join("..", "sip", mname, os.path.basename(s)))
++ if has_objdir:
++ topdir = topsrcdir
++ else:
++ topdir = ".."
++ sipfiles.append(os.path.join(topdir, "sip", mname, os.path.basename(s)))
+
+ installs.append([sipfiles, os.path.join(opts.pyqtsipdir, mname)])
+
+@@ -1835,7 +1872,7 @@
+ ).generate()
+
+ # Install the configuration module.
+- create_config("pyqtconfig.py", "pyqtconfig.py.in", macros)
++ create_config("pyqtconfig.py", srcPath("pyqtconfig.py.in"), macros)
+
+
+ ###############################################################################
diff --git a/packages/python/python-pyqt/02_htmllinks.dpatch b/packages/python/python-pyqt/02_htmllinks.dpatch
new file mode 100644
index 0000000000..f65509ae2c
--- /dev/null
+++ b/packages/python/python-pyqt/02_htmllinks.dpatch
@@ -0,0 +1,18 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 02_htmllinks.dpatch by Torsten Marek <shlomme@debian.org>
+
+## DP: Fix the links in the documentation HTML files.
+
+@DPATCH@
+diff -urNad python-qt4-4.1~/doc/pyqt4ref.html python-qt4-4.1/doc/pyqt4ref.html
+--- python-qt4-4.1~/doc/pyqt4ref.html 2006-11-05 00:51:19.000000000 +0100
++++ python-qt4-4.1/doc/pyqt4ref.html 2006-11-21 23:35:52.000000000 +0100
+@@ -85,7 +85,7 @@
+ <p>This is the reference guide for PyQt 4.1. PyQt v4 is a set of
+ <a class="reference" href="http://www.python.org">Python</a> bindings for v4 of the Qt application
+ framework from <a class="reference" href="http://www.trolltech.com">Trolltech</a>.</p>
+-<p>There is a separate <a class="reference" href="html/classes.html">PyQt API Reference</a>.</p>
++<p>There is a separate <a class="reference" href="classes.html">PyQt API Reference</a>.</p>
+ <p>Qt is a set of C++ libraries and development tools that includes platform
+ independent abstractions for graphical user interfaces, networking, threads,
+ Unicode, regular expressions, SQL databases, SVG, OpenGL, XML, and user and
diff --git a/packages/python/python-pyqt/03_qreal.dpatch b/packages/python/python-pyqt/03_qreal.dpatch
new file mode 100644
index 0000000000..8f9568656c
--- /dev/null
+++ b/packages/python/python-pyqt/03_qreal.dpatch
@@ -0,0 +1,18 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 03_qreal.dpatch by Torsten Marek <shlomme@debian.org>
+##
+## DP: On ARM, ARMEL, Mips and Mipsel, qreal is a float, not a double.
+
+@DPATCH@
+diff -urNad python-qt4-4.3~/sip/QtCore/qglobal.sip python-qt4-4.3/sip/QtCore/qglobal.sip
+--- python-qt4-4.3~/sip/QtCore/qglobal.sip 2007-08-07 21:52:15.000000000 +0200
++++ python-qt4-4.3/sip/QtCore/qglobal.sip 2007-08-07 22:10:14.000000000 +0200
+@@ -46,7 +46,7 @@
+ typedef unsigned long long quint64;
+ typedef qint64 qlonglong;
+ typedef quint64 qulonglong;
+-typedef double qreal;
++typedef float qreal;
+ typedef unsigned char uchar;
+ typedef unsigned short ushort;
+ typedef unsigned int uint;
diff --git a/packages/python/python-pyqt/04_qreal_api_fixes.dpatch b/packages/python/python-pyqt/04_qreal_api_fixes.dpatch
new file mode 100644
index 0000000000..abd9e3f4cd
--- /dev/null
+++ b/packages/python/python-pyqt/04_qreal_api_fixes.dpatch
@@ -0,0 +1,259 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 04_qreal_api_fixes.dpatch by Torsten Marek <shlomme@debian.org>
+##
+## DP: Exchanges double by qreal in some wrapped methods.
+
+@DPATCH@
+diff -urNad python-qt4-4.3~/sip/QtCore/qlist.sip python-qt4-4.3/sip/QtCore/qlist.sip
+--- python-qt4-4.3~/sip/QtCore/qlist.sip 2007-09-02 00:35:50.000000000 +0200
++++ python-qt4-4.3/sip/QtCore/qlist.sip 2007-09-02 00:35:53.000000000 +0200
+@@ -322,8 +322,8 @@
+ %End
+ };
+ %If (Qt_4_3_0 -)
+-// QList<QPair<double, double> > is implemented as a Python list of 2-element tuples.
+-%MappedType QList<QPair<double, double> >
++// QList<QPair<float, float> > is implemented as a Python list of 2-element tuples.
++%MappedType QList<QPair<float, float> >
+ {
+ %TypeHeaderCode
+ #include <qlist.h>
+@@ -340,7 +340,7 @@
+ // Set the list elements.
+ for (int i = 0; i < sipCpp->size(); ++i)
+ {
+- const QPair<double, double> &p = sipCpp->at(i);
++ const QPair<float, float> &p = sipCpp->at(i);
+ PyObject *pobj;
+
+ if ((pobj = Py_BuildValue((char *)"dd", p.first, p.second)) == NULL)
+@@ -370,16 +370,16 @@
+ return 1;
+ }
+
+- QList<QPair<double, double> > *ql = new QList<QPair<double, double> >;
++ QList<QPair<float, float> > *ql = new QList<QPair<float, float> >;
+
+ for (int i = 0; i < PyList_GET_SIZE(sipPy); ++i)
+ {
+ PyObject *tup = PyList_GET_ITEM(sipPy, i);
+
+- double first = PyFloat_AsDouble(PyTuple_GET_ITEM(tup, 0));
+- double second = PyFloat_AsDouble(PyTuple_GET_ITEM(tup, 1));
++ float first = PyFloat_AsDouble(PyTuple_GET_ITEM(tup, 0));
++ float second = PyFloat_AsDouble(PyTuple_GET_ITEM(tup, 1));
+
+- ql->append(QPair<double, double>(first, second));
++ ql->append(QPair<float, float>(first, second));
+ }
+
+ *sipCppPtr = ql;
+@@ -389,9 +389,9 @@
+ };
+ %End
+ %If (Qt_4_3_0 -)
+-// QList<QPair<double, TYPE> > is implemented as a Python list of 2-element tuples.
+-template<double, TYPE>
+-%MappedType QList<QPair<double, TYPE> >
++// QList<QPair<float, TYPE> > is implemented as a Python list of 2-element tuples.
++template<float, TYPE>
++%MappedType QList<QPair<float, TYPE> >
+ {
+ %TypeHeaderCode
+ #include <qlist.h>
+@@ -408,7 +408,7 @@
+ // Set the list elements.
+ for (int i = 0; i < sipCpp->size(); ++i)
+ {
+- const QPair<double, TYPE> &p = sipCpp->at(i);
++ const QPair<float, TYPE> &p = sipCpp->at(i);
+ TYPE *t = new TYPE(p.second);
+ PyObject *pobj;
+
+@@ -447,12 +447,12 @@
+ return 1;
+ }
+
+- QList<QPair<double, TYPE> > *ql = new QList<QPair<double, TYPE> >;
++ QList<QPair<float, TYPE> > *ql = new QList<QPair<float, TYPE> >;
+
+ for (int i = 0; i < PyList_GET_SIZE(sipPy); ++i)
+ {
+ PyObject *tup = PyList_GET_ITEM(sipPy, i);
+- double d;
++ float d;
+ int state;
+
+ d = PyFloat_AsDouble(PyTuple_GET_ITEM(tup, 0));
+@@ -466,7 +466,7 @@
+ return 0;
+ }
+
+- ql->append(QPair<double, TYPE>(d, *t));
++ ql->append(QPair<float, TYPE>(d, *t));
+
+ sipReleaseInstance(t, sipClass_TYPE, state);
+ }
+@@ -524,8 +524,8 @@
+ return sipGetState(sipTransferObj);
+ %End
+ };
+-// QList<double> is implemented as a Python list of floats.
+-%MappedType QList<double>
++// QList<float> is implemented as a Python list of floats.
++%MappedType QList<float>
+ {
+ %TypeHeaderCode
+ #include <qlist.h>
+@@ -561,7 +561,7 @@
+ if (sipIsErr == NULL)
+ return PyList_Check(sipPy);
+
+- QList<double> *ql = new QList<double>;
++ QList<float> *ql = new QList<float>;
+
+ for (int i = 0; i < PyList_GET_SIZE(sipPy); ++i)
+ ql->append(PyFloat_AsDouble(PyList_GET_ITEM(sipPy, i)));
+diff -urNad python-qt4-4.3~/sip/QtCore/qvector.sip python-qt4-4.3/sip/QtCore/qvector.sip
+--- python-qt4-4.3~/sip/QtCore/qvector.sip 2007-09-02 00:35:50.000000000 +0200
++++ python-qt4-4.3/sip/QtCore/qvector.sip 2007-09-02 00:35:53.000000000 +0200
+@@ -143,8 +143,8 @@
+ return sipGetState(sipTransferObj);
+ %End
+ };
+-// QVector<double> is implemented as a Python list of floats.
+-%MappedType QVector<double>
++// QVector<float> is implemented as a Python list of floats.
++%MappedType QVector<float>
+ {
+ %TypeHeaderCode
+ #include <qvector.h>
+@@ -180,7 +180,7 @@
+ if (sipIsErr == NULL)
+ return PyList_Check(sipPy);
+
+- QVector<double> *ql = new QVector<double>;
++ QVector<float> *ql = new QVector<float>;
+
+ for (int i = 0; i < PyList_GET_SIZE(sipPy); ++i)
+ ql->append(PyFloat_AsDouble(PyList_GET_ITEM(sipPy, i)));
+@@ -190,9 +190,9 @@
+ return sipGetState(sipTransferObj);
+ %End
+ };
+-// QVector<QPair<double, TYPE> > is implemented as a Python list of 2-element tuples.
++// QVector<QPair<float, TYPE> > is implemented as a Python list of 2-element tuples.
+ template<TYPE>
+-%MappedType QVector<QPair<double, TYPE> >
++%MappedType QVector<QPair<float, TYPE> >
+ {
+ %TypeHeaderCode
+ #include <qvector.h>
+@@ -209,7 +209,7 @@
+ // Set the list elements.
+ for (int i = 0; i < sipCpp->size(); ++i)
+ {
+- const QPair<double, TYPE> &p = sipCpp->at(i);
++ const QPair<float, TYPE> &p = sipCpp->at(i);
+ TYPE *pt = new TYPE(p.second);
+ PyObject *pobj;
+
+@@ -248,14 +248,14 @@
+ return 1;
+ }
+
+- QVector<QPair<double, TYPE> > *qv = new QVector<QPair<double, TYPE> >;
++ QVector<QPair<float, TYPE> > *qv = new QVector<QPair<float, TYPE> >;
+
+ for (int i = 0; i < PyList_GET_SIZE(sipPy); ++i)
+ {
+ PyObject *tup = PyList_GET_ITEM(sipPy, i);
+ int state;
+ TYPE *s;
+- QPair<double, TYPE> p;
++ QPair<float, TYPE> p;
+
+ p.first = PyFloat_AsDouble(PyTuple_GET_ITEM(tup, 0));
+
+diff -urNad python-qt4-4.3~/sip/QtGui/qbrush.sip python-qt4-4.3/sip/QtGui/qbrush.sip
+--- python-qt4-4.3~/sip/QtGui/qbrush.sip 2007-09-02 00:35:50.000000000 +0200
++++ python-qt4-4.3/sip/QtGui/qbrush.sip 2007-09-02 00:35:53.000000000 +0200
+@@ -138,7 +138,7 @@
+
+ QDataStream &operator>>(QDataStream &, QBrush & /Constrained/);
+ QDataStream &operator<<(QDataStream &, const QBrush & /Constrained/);
+-typedef QVector<QPair<double, QColor> > QGradientStops;
++typedef QVector<QPair<float, QColor> > QGradientStops;
+
+ class QGradient
+ {
+diff -urNad python-qt4-4.3~/sip/QtGui/qgraphicsitemanimation.sip python-qt4-4.3/sip/QtGui/qgraphicsitemanimation.sip
+--- python-qt4-4.3~/sip/QtGui/qgraphicsitemanimation.sip 2007-09-02 00:35:50.000000000 +0200
++++ python-qt4-4.3/sip/QtGui/qgraphicsitemanimation.sip 2007-09-02 00:35:53.000000000 +0200
+@@ -64,19 +64,19 @@
+
+ public:
+ %If (Qt_4_3_0 -)
+- QList<QPair<double, QPointF> > posList() const;
++ QList<QPair<float, QPointF> > posList() const;
+ %End
+ %If (Qt_4_3_0 -)
+- QList<QPair<double, double> > rotationList() const;
++ QList<QPair<float, float> > rotationList() const;
+ %End
+ %If (Qt_4_3_0 -)
+- QList<QPair<double, QPointF> > translationList() const;
++ QList<QPair<float, QPointF> > translationList() const;
+ %End
+ %If (Qt_4_3_0 -)
+- QList<QPair<double, QPointF> > scaleList() const;
++ QList<QPair<float, QPointF> > scaleList() const;
+ %End
+ %If (Qt_4_3_0 -)
+- QList<QPair<double, QPointF> > shearList() const;
++ QList<QPair<float, QPointF> > shearList() const;
+ %End
+
+ private:
+diff -urNad python-qt4-4.3~/sip/QtGui/qpainterpath.sip python-qt4-4.3/sip/QtGui/qpainterpath.sip
+--- python-qt4-4.3~/sip/QtGui/qpainterpath.sip 2007-09-02 00:35:50.000000000 +0200
++++ python-qt4-4.3/sip/QtGui/qpainterpath.sip 2007-09-02 00:35:53.000000000 +0200
+@@ -194,8 +194,8 @@
+ void setCurveThreshold(qreal threshold);
+ qreal curveThreshold() const;
+ void setDashPattern(Qt::PenStyle);
+- void setDashPattern(const QVector<double> &dashPattern);
+- QVector<double> dashPattern() const;
++ void setDashPattern(const QVector<float> &dashPattern);
++ QVector<float> dashPattern() const;
+ QPainterPath createStroke(const QPainterPath &path) const;
+ %If (Qt_4_3_0 -)
+ void setDashOffset(qreal offset);
+diff -urNad python-qt4-4.3~/sip/QtGui/qpen.sip python-qt4-4.3/sip/QtGui/qpen.sip
+--- python-qt4-4.3~/sip/QtGui/qpen.sip 2007-09-02 00:35:50.000000000 +0200
++++ python-qt4-4.3/sip/QtGui/qpen.sip 2007-09-02 00:35:53.000000000 +0200
+@@ -91,8 +91,8 @@
+ void setCapStyle(Qt::PenCapStyle pcs);
+ Qt::PenJoinStyle joinStyle() const;
+ void setJoinStyle(Qt::PenJoinStyle pcs);
+- QVector<double> dashPattern() const;
+- void setDashPattern(const QVector<double> &pattern);
++ QVector<float> dashPattern() const;
++ void setDashPattern(const QVector<float> &pattern);
+ qreal miterLimit() const;
+ void setMiterLimit(qreal limit);
+ bool operator==(const QPen &p) const;
+diff -urNad python-qt4-4.3~/sip/QtGui/qtextoption.sip python-qt4-4.3/sip/QtGui/qtextoption.sip
+--- python-qt4-4.3~/sip/QtGui/qtextoption.sip 2007-09-02 00:35:50.000000000 +0200
++++ python-qt4-4.3/sip/QtGui/qtextoption.sip 2007-09-02 00:35:53.000000000 +0200
+@@ -62,8 +62,8 @@
+ typedef QFlags<QTextOption::Flag> Flags;
+ QFlags<QTextOption::Flag> flags() const;
+ qreal tabStop() const;
+- void setTabArray(QList<double> tabStops);
+- QList<double> tabArray() const;
++ void setTabArray(QList<float> tabStops);
++ QList<float> tabArray() const;
+ void setUseDesignMetrics(bool b);
+ bool useDesignMetrics() const;
+ void setAlignment(Qt::Alignment aalignment);
diff --git a/packages/python/python-pyqt_4.3.1.bb b/packages/python/python-pyqt_4.3.1.bb
new file mode 100644
index 0000000000..d9c45ec14c
--- /dev/null
+++ b/packages/python/python-pyqt_4.3.1.bb
@@ -0,0 +1,71 @@
+DESCRIPTION = "Python Qt4 Bindings"
+HOMEPAGE = "http://riverbankcomputing.co.uk"
+AUTHOR = "Phil Thomson @ riverbank.co.uk"
+SECTION = "devel/python"
+PRIORITY = "optional"
+LICENSE = "GPL"
+RDEPENDS = "python-core"
+SRCNAME = "pyqt"
+PR = "ml0"
+
+SRC_URI = "\
+ http://www.riverbankcomputing.com/Downloads/PyQt4/GPL/PyQt-x11-gpl-${PV}.tar.gz \
+ file://cross-compile.patch;patch=1 \
+ file://01_configure.dpatch;patch=1 \
+ file://02_htmllinks.dpatch;patch=1 \
+ file://03_qreal.dpatch;patch=1 \
+ file://04_qreal_api_fixes.dpatch;patch=1"
+S = "${WORKDIR}/PyQt-x11-gpl-${PV}"
+
+inherit qt4x11 sip distutils-base
+
+PARALLEL_MAKE = ""
+
+QMAKE_PROFILES = "pyqt.pro"
+EXTRA_SIPTAGS = "-tWS_X11 -tQt_4_3_1 -xVendorID -xPyQt_SessionManager -xPyQt_Accessibility"
+EXTRA_OEMAKE = " MAKEFLAGS= "
+
+SIP_MODULES = "QtCore QtGui QtNetwork QtSql QtSvg QtXml"
+# SIP_MODULES += "QtAssistant"
+EXTRA_QMAKEVARS_POST += "INCLUDEPATH+=${OE_QMAKE_INCDIR_QT}/Qt \
+ INCLUDEPATH+=${STAGING_INCDIR}/${PYTHON_DIR} \
+ DEFINES+=QT_NO_FPU"
+
+FIX_QREAL = "\
+ QtCore/qtimeline.sip \
+ QtCore/qrect.sip \
+ QtGui/qtransform.sip \
+"
+
+do_generate_prepend() {
+ for i in ${FIX_QREAL}; do
+ sed -i -e s,qreal,float,g sip/$i
+ done
+}
+
+do_configure_prepend() {
+ echo "TEMPLATE=subdirs\nSUBDIRS=${SIP_MODULES}\n" >pyqt.pro
+}
+
+do_stage() {
+ install -d ${STAGING_SIPDIR}/qt/
+ install -d ${STAGING_LIBDIR}/${PYTHON_DIR}/site-packages
+ for module in ${SIP_MODULES}
+ do
+ install -m 0644 ${S}/sip/${module}/*.sip ${STAGING_SIPDIR}/qt/
+ install -m 0755 ${module}/lib${module}.so ${STAGING_LIBDIR}/${PYTHON_DIR}/site-packages/${module}.so
+ done
+}
+
+do_install() {
+ install -d ${D}${libdir}/${PYTHON_DIR}/site-packages/PyQt4
+ for module in ${SIP_MODULES}
+ do
+ echo "from PyQt4.${module} import *\n" >> ${D}${libdir}/${PYTHON_DIR}/site-packages/PyQt4/Qt.py
+ install -m 0755 ${module}/lib${module}.so ${D}${libdir}/${PYTHON_DIR}/site-packages/PyQt4/${module}.so
+ done
+ cp -pPR elementtree ${D}${libdir}/${PYTHON_DIR}/site-packages/PyQt4/
+ cp __init__.py ${D}${libdir}/${PYTHON_DIR}/site-packages/PyQt4/
+}
+
+FILES_${PN} = "${libdir}/${PYTHON_DIR}/site-packages"
diff --git a/packages/python/python-pyqt_4.3.bb b/packages/python/python-pyqt_4.3.bb
deleted file mode 100644
index c867598b4f..0000000000
--- a/packages/python/python-pyqt_4.3.bb
+++ /dev/null
@@ -1,84 +0,0 @@
-DESCRIPTION = "Python Qt4 Bindings"
-HOMEPAGE = "http://riverbankcomputing.co.uk"
-AUTHOR = "Phil Thomson @ riverbank.co.uk"
-SECTION = "devel/python"
-PRIORITY = "optional"
-LICENSE = "GPL"
-RDEPENDS = "python-core"
-SRCNAME = "pyqt"
-PR = "ml0"
-
-SRC_URI = "http://www.riverbankcomputing.com/Downloads/PyQt4/GPL/PyQt-x11-gpl-${PV}.tar.gz \
- file://cross-compile.patch;patch=1"
-
-BROKEN = "1"
-# Something really fishy wrt. to arm/mips/etc. double vs. qreal. May even be a problem in Qt headers itself.
-# Symptons:
-#| sipQtCoreQTimeLine.cpp:136: error: conflicting return type specified for 'virtual double sipQTimeLine::valueForTime(int) const'
-#| /home/pkg/oe/fic-gta01/tmp/staging/arm-angstrom-linux-gnueabi/qt4/include/QtCore/qtimeline.h:92: error: overriding 'virtual qreal QTimeLine::valueForTime(int) const'
-# And:
-#| sipQtCoreQRectF.cpp: In function 'PyObject* meth_QRectF_getRect(PyObject*, PyObject*)':
-#| sipQtCoreQRectF.cpp:1182: error: no matching function for call to 'QRectF::getRect(double*, double*, double*, double*)'
-#| /home/pkg/oe/fic-gta01/tmp/staging/arm-angstrom-linux-gnueabi/qt4/include/QtCore/qrect.h:725: note: candidates are: void QRectF::getRect(qreal*, qreal*, qreal*, qreal*) const
-#| sipQtCoreQRectF.cpp: In function 'PyObject* meth_QRectF_getCoords(PyObject*, PyObject*)':
-#| sipQtCoreQRectF.cpp:1237: error: no matching function for call to 'QRectF::getCoords(double*, double*, double*, double*)'
-#| /home/pkg/oe/fic-gta01/tmp/staging/arm-angstrom-linux-gnueabi/qt4/include/QtCore/qrect.h:741: note: candidates are: void QRectF::getCoords(qreal*, qreal*, qreal*, qreal*) const
-#| make[1]: *** [sipQtCoreQRectF.o] Error 1
-
-S = "${WORKDIR}/PyQt-x11-gpl-${PV}"
-
-inherit qmake qt4x11 sip distutils-base
-
-PARALLEL_MAKE = ""
-
-QMAKE_PROFILES = "pyqt.pro"
-EXTRA_SIPTAGS = "-tWS_X11 -tQt_4_3_0 -xVendorID -xPyQt_SessionManager -xPyQt_Accessibility"
-EXTRA_OEMAKE = " MAKEFLAGS= "
-
-SIP_MODULES = "QtCore QtGui QtNetwork QtSql QtSvg QtXml"
-# SIP_MODULES += "QtAssistant"
-EXTRA_QMAKEVARS_POST += "INCLUDEPATH+=${OE_QMAKE_INCDIR_QT}/Qt \
- INCLUDEPATH+=${STAGING_INCDIR}/${PYTHON_DIR}"
-
-#EXTRA_QMAKEVARS_POST += "QMAKE_UIC=${STAGING_BINDIR_NATIVE}/uic \
-# QMAKE_MOC=${STAGING_BINDIR_NATIVE}/moc \
-# QMAKE_RPATH=-Wl,-rpath-link, \
-# DESTDIR= \
-# VERSION=1.0.0 \
-# DEFINES+=SIP_MAKE_DLL \
-# DEFINES+=SIP_QT_SUPPORT \
-# INCLUDEPATH+=. \
-# INCLUDEPATH+=${STAGING_INCDIR}/${PYTHON_DIR} \
-# INCLUDEPATH+=${STAGING_INCDIR} \
-# LIBS+=-L${STAGING_LIBDIR}/${PYTHON_DIR}/site-packages"
-
-do_configure_prepend() {
- echo -e "TEMPLATE=subdirs\nSUBDIRS=${SIP_MODULES}\n" >pyqt.pro
-}
-
-#do_configure() {
-# echo "yes" | python configure.py -w -q ${OE_QMAKE_QMAKE}
-#}
-
-do_stage() {
- install -d ${STAGING_SIPDIR}/qt/
- install -d ${STAGING_LIBDIR}/${PYTHON_DIR}/site-packages
- for module in ${SIP_MODULES}
- do
- install -m 0644 ${S}/sip/${module}/*.sip ${STAGING_SIPDIR}/qt/
- install -m 0755 ${module}/lib${module}.so ${STAGING_LIBDIR}/${PYTHON_DIR}/site-packages/${module}.so
- done
-}
-
-do_install() {
- install -d ${D}${libdir}/${PYTHON_DIR}/site-packages/PyQt4
- for module in ${SIP_MODULES}
- do
- echo "from PyQt4.${module} import *\n" >> ${D}${libdir}/${PYTHON_DIR}/site-packages/PyQt4/Qt.py
- install -m 0755 ${module}/lib${module}.so ${D}${libdir}/${PYTHON_DIR}/site-packages/PyQt4/${module}.so
- done
- cp -pPR elementtree ${D}${libdir}/${PYTHON_DIR}/site-packages/PyQt4/
- cp __init__.py ${D}${libdir}/${PYTHON_DIR}/site-packages/PyQt4/
-}
-
-FILES_${PN} = "${libdir}/${PYTHON_DIR}/site-packages"
diff --git a/packages/python/python-pyrad_1.1.bb b/packages/python/python-pyrad_1.1.bb
new file mode 100644
index 0000000000..9b452d9b0f
--- /dev/null
+++ b/packages/python/python-pyrad_1.1.bb
@@ -0,0 +1,11 @@
+DESCRIPTION = "Python Radius Client and Server"
+SECTION = "devel/python"
+PRIORITY = "optional"
+LICENSE = "BSD"
+RDEPENDS = "python-crypt"
+SRCNAME = "pyrad"
+
+SRC_URI = "http://pypi.python.org/packages/source/p/${SRCNAME}/${SRCNAME}-${PV}.tar.gz"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit setuptools
diff --git a/packages/python/python-pysqlite2/.mtn2git_empty b/packages/python/python-pysqlite2/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/python/python-pysqlite2/.mtn2git_empty
diff --git a/packages/python/python-pysqlite2/fix-setup.patch b/packages/python/python-pysqlite2/fix-setup.patch
new file mode 100644
index 0000000000..fb732a1c3d
--- /dev/null
+++ b/packages/python/python-pysqlite2/fix-setup.patch
@@ -0,0 +1,9 @@
+diff -urN pysqlite-2.4.0.orig/setup.cfg pysqlite-2.4.0/setup.cfg
+--- pysqlite-2.4.0.orig/setup.cfg 2007-11-25 17:56:17.000000000 +0100
++++ pysqlite-2.4.0/setup.cfg 2007-12-07 09:59:36.000000000 +0100
+@@ -1,5 +1,3 @@
+ [build_ext]
+ define=
+-include_dirs=/usr/include
+-library_dirs=/usr/lib
+ libraries=sqlite3
diff --git a/packages/python/python-pysqlite2_2.4.0.bb b/packages/python/python-pysqlite2_2.4.0.bb
new file mode 100644
index 0000000000..751122e10e
--- /dev/null
+++ b/packages/python/python-pysqlite2_2.4.0.bb
@@ -0,0 +1,17 @@
+DESCRIPTION = "Python interface to SQLite 3"
+SECTION = "devel/python"
+PRIORITY = "optional"
+LICENSE = "BSD"
+DEPENDS = "sqlite3"
+SRCNAME = "pysqlite"
+
+SRC_URI = "http://initd.org/pub/software/pysqlite/releases/2.4/${PV}/${SRCNAME}-${PV}.tar.gz \
+ file://fix-setup.patch;patch=1"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit distutils
+
+do_install_append() {
+ install -d ${D}${datadir}/doc/
+ mv ${D}${datadir}/pysqlite2-doc ${D}${datadir}/doc/${PN}
+}
diff --git a/packages/python/python-sip_4.7.bb b/packages/python/python-sip_4.7.1.bb
index 61fcc32986..fc87b01e53 100644
--- a/packages/python/python-sip_4.7.bb
+++ b/packages/python/python-sip_4.7.1.bb
@@ -1,5 +1,3 @@
-BROKEN = "1"
-
DESCRIPTION = "Runtime helper for sip-generated python wrapper libraries"
SECTION = "devel/python"
HOMEPAGE = "http://www.riverbankcomputing.co.uk/sip"
@@ -12,7 +10,7 @@ PR = "ml0"
SRC_URI = "http://www.riverbankcomputing.com/Downloads/sip4/sip-${PV}.tar.gz"
S = "${WORKDIR}/sip-${PV}/siplib"
-inherit qmake qt4x11 distutils-base
+inherit qt4x11 distutils-base
EXTRA_QMAKEVARS_POST += " TEMPLATE=lib \
CONFIG=console \
diff --git a/packages/python/python-sword_1.5.9.bb b/packages/python/python-sword_1.5.10.bb
index a18cf89466..a18cf89466 100644
--- a/packages/python/python-sword_1.5.9.bb
+++ b/packages/python/python-sword_1.5.10.bb
diff --git a/packages/python/python-sword_1.5.8.bb b/packages/python/python-sword_1.5.8.bb
deleted file mode 100644
index b8e319c693..0000000000
--- a/packages/python/python-sword_1.5.8.bb
+++ /dev/null
@@ -1,30 +0,0 @@
-DESCRIPTION = "Python bindings for the sword library"
-SECTION = "devel/python"
-PRIORITY = "optional"
-LICENSE = "GPL"
-RDEPENDS = "python-core sword"
-DEPENDS = "sword-${PV} swig-native"
-SRCNAME = "sword"
-PR = "r0"
-
-SRC_URI = "http://crosswire.org/ftpmirror/pub/sword/source/v1.5/sword-${PV}.tar.gz"
-S = "${WORKDIR}/${SRCNAME}-${PV}/bindings/swig/package"
-
-EXTRA_OECONF = "--with-sword-dir=${STAGING_DIR}/${HOST_SYS}"
-
-inherit distutils autotools
-
-PARALLEL_MAKE = ""
-
-do_configure_prepend() {
- ./autogen.sh
-}
-
-do_compile() {
- oe_runmake BUILD_SYS=${BUILD_SYS} HOST_SYS=${HOST_SYS} pythonswig python_make
-}
-
-do_install() {
- cd ${S}/python
- distutils_do_install
-}
diff --git a/packages/python/python_2.5.1.bb b/packages/python/python_2.5.1.bb
index 400376599a..8ad4e797c0 100644
--- a/packages/python/python_2.5.1.bb
+++ b/packages/python/python_2.5.1.bb
@@ -7,7 +7,7 @@ DEPENDS = "python-native readline zlib gdbm openssl sqlite3 tcl tk"
DEPENDS_sharprom = "python-native readline zlib gdbm openssl"
# NOTE: Keep the digit in sync with BASEREV in contrib/generate-manifest-2.5.py
-PR = "ml1"
+PR = "ml5"
PYTHON_MAJMIN = "2.5"
@@ -17,6 +17,7 @@ SRC_URI = "http://www.python.org/ftp/python/${PV}/Python-${PV}.tar.bz2 \
file://fix-tkinter-detection.patch;patch=1 \
file://autohell.patch;patch=1 \
file://sitebranding.patch;patch=1 \
+ file://enable-ctypes-module.patch;patch=1 \
file://default-is-optimized.patch;patch=1"
S = "${WORKDIR}/Python-${PV}"
diff --git a/packages/qte/qte-common_2.3.10.inc b/packages/qte/qte-common_2.3.10.inc
index fa9ddaea7a..6517eb058d 100644
--- a/packages/qte/qte-common_2.3.10.inc
+++ b/packages/qte/qte-common_2.3.10.inc
@@ -4,7 +4,7 @@ PRIORITY = "optional"
HOMEPAGE = "http://www.trolltech.com"
LICENSE = "GPL"
DEPENDS = "zlib libpng jpeg tslib uicmoc-native"
-DEPENDS_append_c7x0 = " sharp-aticore-oss"
+#DEPENDS_append_c7x0 = " sharp-aticore-oss"
PROVIDES = "virtual/libqte2"
FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/qte-${PV}"
@@ -58,9 +58,9 @@ W100_ACCEL_PATCHES = "file://c7x0-w100-accel.patch;patch=1 \
file://c7x0-w100-gcc4.patch;patch=1 \
file://suspend-resume-hooks.patch;patch=1"
-SRC_URI_append_c7x0 = "${W100_ACCEL_PATCHES} "
-SRC_URI_append_spitz = "file://spitz-adhoc-keypad-rotate.patch;patch=1 "
-SRC_URI_append_akita = "file://spitz-adhoc-keypad-rotate.patch;patch=1 "
+#SRC_URI_append_c7x0 = "${W100_ACCEL_PATCHES} "
+#SRC_URI_append_spitz = "file://spitz-adhoc-keypad-rotate.patch;patch=1 "
+#SRC_URI_append_akita = "file://spitz-adhoc-keypad-rotate.patch;patch=1 "
# "ipaqs" used to have this, but later were proven to at least work
# without it. Review again and see if has interesting bits to be applied
@@ -78,8 +78,9 @@ QTE_ARCH := "${@qte_arch(d)}"
# add device configuration here
#
EXTRA_OECONF_CONFIG = "-qconfig qpe"
-EXTRA_OECONF_CONFIG_c7x0 = "-qconfig qpe -accel-w100"
+#EXTRA_OECONF_CONFIG_c7x0 = "-qconfig qpe -accel-w100"
EXTRA_OECONF_CONFIG_native = "-qconfig qpe -qvfb"
+
EXTRA_OECONF = "-system-jpeg -system-libpng -system-zlib -no-qvfb -no-xft -no-vnc -gif \
-xplatform ${TARGET_OS}-${QTE_ARCH}-g++ ${EXTRA_OECONF_CONFIG} -depths 8,16,32"
EXTRA_OEMAKE = "-e"
@@ -88,8 +89,8 @@ EXTRA_OEMAKE = "-e"
# add device flags here
#
EXTRA_DEFINES = "-DQT_QWS_TSLIB -DQT_QWS_CUSTOM -DQT_QWS_IPAQ"
-EXTRA_DEFINES_spitz = "-DQT_QWS_TSLIB -DQT_QWS_CUSTOM -DQT_QWS_IPAQ -DQT_QWS_SLCXK"
-EXTRA_DEFINES_akita = "-DQT_QWS_TSLIB -DQT_QWS_CUSTOM -DQT_QWS_IPAQ -DQT_QWS_SLCXK"
+#EXTRA_DEFINES_spitz = "-DQT_QWS_TSLIB -DQT_QWS_CUSTOM -DQT_QWS_IPAQ -DQT_QWS_SLCXK"
+#EXTRA_DEFINES_akita = "-DQT_QWS_TSLIB -DQT_QWS_CUSTOM -DQT_QWS_IPAQ -DQT_QWS_SLCXK"
#
# don't touch anything below here
diff --git a/packages/qte/qte-mt_2.3.10.bb b/packages/qte/qte-mt_2.3.10.bb
index 0af996559e..d9c3de136f 100644
--- a/packages/qte/qte-mt_2.3.10.bb
+++ b/packages/qte/qte-mt_2.3.10.bb
@@ -1,6 +1,6 @@
require qte-common_${PV}.inc
-PR = "r24"
+PR = "r25"
EXTRA_OECONF += "-thread"
-PACKAGE_ARCH = "${MACHINE_ARCH}"
+DEFAULT_PREFERENCE = "1"
diff --git a/packages/quasar/.mtn2git_empty b/packages/quasar/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/quasar/.mtn2git_empty
diff --git a/packages/quasar/files/.mtn2git_empty b/packages/quasar/files/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/quasar/files/.mtn2git_empty
diff --git a/packages/quasar/files/cross-compile.patch b/packages/quasar/files/cross-compile.patch
new file mode 100644
index 0000000000..5d3aca4756
--- /dev/null
+++ b/packages/quasar/files/cross-compile.patch
@@ -0,0 +1,31 @@
+--- tmp/quasar-qt.pro 2007-10-29 00:18:03.000000000 +0100
++++ quasar-qt.pro 2007-11-04 09:11:58.000000000 +0100
+@@ -3,13 +3,13 @@
+ TARGET = quasar
+ TEMPLATE = app
+
+-#CONFIG = qt warn_on
+-CONFIG = qt warn_on debug
++CONFIG = qt warn_on release
++#CONFIG = qt warn_on debug
+
+ # for native compilation with ccache:
+-TMAKE_CC = ccache gcc
+-TMAKE_CXX = ccache g++
+-TMAKE_LINK = ccache g++
++#TMAKE_CC = ccache gcc
++#TMAKE_CXX = ccache g++
++#TMAKE_LINK = ccache g++
+
+ # for native compilation with pdaxii13's zgcc:
+ #TMAKE_CC = gcc
+@@ -26,7 +26,8 @@
+ TMAKE_CFLAGS = $$TMAKE_CFLAGS $$SQLITE_FLAGS -DQUASAR -O3
+ TMAKE_CXXFLAGS = $$TMAKE_CXXFLAGS $$SQLITE_FLAGS -DQUASAR -O3
+
+-LIBS = -liconv -lz -lstdc++
++#LIBS = -liconv -lz -lstdc++
++LIBS = -lz
+
+ INCLUDEPATH = \
+ . \
diff --git a/packages/quasar/quasar_0.9beta3.bb b/packages/quasar/quasar_0.9beta3.bb
new file mode 100644
index 0000000000..08b394a3be
--- /dev/null
+++ b/packages/quasar/quasar_0.9beta3.bb
@@ -0,0 +1,28 @@
+DESCRIPTION = "Quasar mediaplayer"
+HOMEPAGE = "http://katastrophos.net/andre/blog/software/quasar-media-player/"
+AUTHOR = "Andre Beckedorf"
+LICENSE = "GPL"
+SECTION = "multimedia"
+RDEPENDS = "mplayer"
+PV = "0.8+0.9beta3"
+S = "${WORKDIR}/v0.9_beta3"
+
+SRC_URI = "http://katastrophos.net/zaurus/sources/quasar/quasar_0.9_beta3_sources.tar.bz2\
+ file://cross-compile.patch;patch=1"
+
+inherit qmake qt3x11
+
+QMAKE_PROFILES = "quasar-qt.pro"
+
+do_install() {
+ install -d ${D}${bindir}
+ install -m 0755 quasar ${D}${bindir}
+ install -d ${D}${datadir}/applications
+ install -m 0755 ${S}/distro/skeletons/pdaXrom/usr/share/applications/quasar.desktop ${D}${datadir}/applications/
+ install -d ${D}${datadir}/pixmaps
+ install -m 0755 ${S}/distro/images/quasar.png ${D}${datadir}/pixmaps/
+ install -d ${D}${datadir}/quasar/skins
+ install -d ${D}${datadir}/quasar/skins/default
+ install -m 0755 ${S}/distro/skins/default/* ${D}${datadir}/quasar/skins/default/
+}
+
diff --git a/packages/shasum/shasum-native.bb b/packages/shasum/shasum-native.bb
index 2b9dd9a09d..a28d5ac967 100644
--- a/packages/shasum/shasum-native.bb
+++ b/packages/shasum/shasum-native.bb
@@ -6,6 +6,7 @@ INHIBIT_DEFAULT_DEPS = "1"
PATCHTOOL = "patch"
do_fetch[depends] = ""
-do_populate_staging() {
+do_stage() {
+ install -d ${STAGING_BINDIR}
install ${S}/oe_sha256sum ${STAGING_BINDIR}
}
diff --git a/packages/sip/sip-native_4.7.bb b/packages/sip/sip-native_4.7.1.bb
index 08cdae4ead..b47a3a7539 100644
--- a/packages/sip/sip-native_4.7.bb
+++ b/packages/sip/sip-native_4.7.1.bb
@@ -8,7 +8,7 @@ LICENSE = "GPL"
SRC_URI = "http://www.riverbankcomputing.com/Downloads/sip4/sip-${PV}.tar.gz"
S = "${WORKDIR}/sip-${PV}/sipgen"
-inherit qmake qt4x11 native
+inherit qt4x11 native
EXTRA_QMAKEVARS_POST += "DESTDIR=${S} CONFIG=console"
@@ -17,7 +17,7 @@ do_configure_prepend() {
}
do_stage() {
- install -m 0755 sip ${STAGING_BINDIR}/sip4
+ install -m 0755 sip ${STAGING_BINDIR_NATIVE}/sip
cd ${WORKDIR}/sip-${PV} && python configure.py
install -d ${STAGING_PYDIR}/site-packages
install -m 0755 sip*.py ${STAGING_PYDIR}/site-packages
diff --git a/packages/slugos-init/files/turnup b/packages/slugos-init/files/turnup
index 761e07829d..8d4c3f0f93 100644
--- a/packages/slugos-init/files/turnup
+++ b/packages/slugos-init/files/turnup
@@ -28,6 +28,7 @@ d root root 0755 /var/lock/subsys none
d root root 0755 /var/lib/dropbear none
d root root 0755 /var/lib/misc none
f root root 0664 /var/log/wtmp none
+f root root 0664 /var/log/lastlog none
f root root 0664 /var/run/utmp none"
INRAM_NFS="\
@@ -50,6 +51,7 @@ d root root 0755 /var/lib/dropbear none
d root root 0755 /var/lib/misc none
d root root 0755 /var/lib/ipkg none
f root root 0664 /var/log/wtmp none
+f root root 0664 /var/log/lastlog none
f root root 0664 /var/run/utmp none"
INRAM_DISK="\
@@ -68,6 +70,7 @@ d root root 0755 /var/lib/dropbear none
d root root 0755 /var/lib/misc none
d root root 0755 /var/lib/ipkg none
f root root 0664 /var/log/wtmp none
+f root root 0664 /var/log/lastlog none
f root root 0664 /var/run/utmp none"
INRAM_HEADER="\
diff --git a/packages/slugos-init/slugos-init_0.10.bb b/packages/slugos-init/slugos-init_0.10.bb
index c8e903ce97..247578bab3 100644
--- a/packages/slugos-init/slugos-init_0.10.bb
+++ b/packages/slugos-init/slugos-init_0.10.bb
@@ -4,7 +4,7 @@ PRIORITY = "required"
LICENSE = "GPL"
DEPENDS = "base-files devio"
RDEPENDS = "busybox devio"
-PR = "r89"
+PR = "r90"
SRC_URI = "file://boot/flash \
file://boot/disk \
diff --git a/packages/sofia-sip/sofia-sip.inc b/packages/sofia-sip/sofia-sip.inc
new file mode 100644
index 0000000000..f2bc57688f
--- /dev/null
+++ b/packages/sofia-sip/sofia-sip.inc
@@ -0,0 +1,21 @@
+DESCRIPTION = "Sofia-SIP is an open-source SIP User-Agent library, compliant with the IETF RFC3261 specification."
+HOMEPAGE = "http://sofia-sip.sourceforge.net/"
+LICENSE = "LGPL"
+DEPENDS = "glib-2.0 openssl"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/${PN}/${P}.tar.gz"
+
+inherit autotools pkgconfig
+
+PACKAGES += " ${PN}-bin ${PN}-glib"
+
+FILES_${PN}-bin = "${bindir}"
+FILES_${PN} = "${libdir}/libsofia-sip-ua.so.*"
+FILES_${PN}-dev += "${datadir}/sofia-sip/*.awk"
+FILES_${PN}-glib = "${libdir}/libsofia-sip-ua-glib.so.*"
+
+LEAD_SONAME = "libsofia-sip-ua.so"
+
+do_stage () {
+ autotools_stage_all
+}
diff --git a/packages/sofia-sip/sofia-sip_1.11.7.bb b/packages/sofia-sip/sofia-sip_1.11.7.bb
index 50f4e1d617..accc58784f 100644
--- a/packages/sofia-sip/sofia-sip_1.11.7.bb
+++ b/packages/sofia-sip/sofia-sip_1.11.7.bb
@@ -1,13 +1,3 @@
-DESCRIPTION = "Sofia-SIP is an open-source SIP User-Agent library, compliant with the IETF RFC3261 specification."
-HOMEPAGE = "http://sofia-sip.sourceforge.net/"
-LICENSE = "LGPL"
-
-SRC_URI = "${SOURCEFORGE_MIRROR}/${PN}/${P}.tar.gz"
-
-inherit autotools pkgconfig
-
-do_stage() {
-autotools_stage_all
-}
-
+require sofia-sip.inc
+PR = "r2"
diff --git a/packages/sofia-sip/sofia-sip_1.12.7.bb b/packages/sofia-sip/sofia-sip_1.12.7.bb
new file mode 100644
index 0000000000..4c3eff14df
--- /dev/null
+++ b/packages/sofia-sip/sofia-sip_1.12.7.bb
@@ -0,0 +1,3 @@
+require sofia-sip.inc
+
+PR = "r1"
diff --git a/packages/sqlite/sqlite3/.mtn2git_empty b/packages/sqlite/sqlite3/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/sqlite/sqlite3/.mtn2git_empty
diff --git a/packages/sqlite/sqlite3/cross-compile.patch b/packages/sqlite/sqlite3/cross-compile.patch
new file mode 100644
index 0000000000..31d4f0d162
--- /dev/null
+++ b/packages/sqlite/sqlite3/cross-compile.patch
@@ -0,0 +1,92 @@
+--- sqlite-3.3.7/configure.ac.orig 2006-08-21 00:20:50.000000000 +0200
++++ sqlite-3.3.7/configure.ac 2006-08-21 00:22:35.000000000 +0200
+@@ -187,10 +187,11 @@
+ default_build_cflags="-g"
+ if test "$config_BUILD_CC" = ""; then
+ AC_PROG_CC
+- if test "$cross_compiling" = "yes"; then
+- AC_MSG_ERROR([unable to find a compiler for building build tools])
+- fi
+- BUILD_CC=$CC
++# if test "$cross_compiling" = "yes"; then
++# AC_MSG_ERROR([unable to find a compiler for building build tools])
++# fi
++# BUILD_CC=$CC
++BUILD_CC=gcc
+ default_build_cflags=$CFLAGS
+ else
+ BUILD_CC=$config_BUILD_CC
+@@ -238,6 +239,12 @@
+ TARGET_LINK=$config_TARGET_LINK
+ fi
+ AC_MSG_RESULT($TARGET_LINK)
++if test "$config_TARGET_LFLAGS" != ""; then
++ TARGET_LFLAGS=$config_TARGET_LFLAGS
++ else
++ TARGET_LFLAGS=$BUILD_LFLAGS
++ fi
++AC_MSG_RESULT($TARGET_LFLAGS)
+ AC_MSG_CHECKING([switches on the target compiler])
+ if test "$config_TARGET_TFLAGS" != ""; then
+ TARGET_TFLAGS=$config_TARGET_TFLAGS
+@@ -592,15 +599,7 @@
+ # Figure out what C libraries are required to compile programs
+ # that use "readline()" library.
+ #
+-if test "$config_TARGET_READLINE_LIBS" != ""; then
+- TARGET_READLINE_LIBS="$config_TARGET_READLINE_LIBS"
+-else
+- CC=$TARGET_CC
+- LIBS=""
+- AC_SEARCH_LIBS(tgetent, [readline ncurses curses termcap])
+- AC_CHECK_LIB([readline], [readline])
+- TARGET_READLINE_LIBS="$LIBS"
+-fi
++TARGET_READLINE_LIBS="-lreadline"
+ AC_SUBST(TARGET_READLINE_LIBS)
+
+ ##########
+@@ -615,41 +614,8 @@
+ ##########
+ # Figure out where to get the READLINE header files.
+ #
+-AC_MSG_CHECKING([readline header files])
+-found=no
+-if test "$config_TARGET_READLINE_INC" != ""; then
+- TARGET_READLINE_INC=$config_TARGET_READLINE_INC
+- found=yes
+-fi
+-if test "$found" = "yes"; then
+- AC_MSG_RESULT($TARGET_READLINE_INC)
+-else
+- AC_MSG_RESULT(not specified: still searching...)
+- AC_CHECK_HEADER(readline.h, [found=yes])
+-fi
+-if test "$found" = "no"; then
+- for dir in /usr /usr/local /usr/local/readline /usr/contrib /mingw; do
+- AC_CHECK_FILE($dir/include/readline.h, found=yes)
+- if test "$found" = "yes"; then
+- TARGET_READLINE_INC="-I$dir/include"
+- break
+- fi
+- AC_CHECK_FILE($dir/include/readline/readline.h, found=yes)
+- if test "$found" = "yes"; then
+- TARGET_READLINE_INC="-I$dir/include/readline"
+- break
+- fi
+- done
+-fi
+-if test "$found" = "yes"; then
+- if test "$TARGET_READLINE_LIBS" = ""; then
+- TARGET_HAVE_READLINE=0
+- else
+- TARGET_HAVE_READLINE=1
+- fi
+-else
+- TARGET_HAVE_READLINE=0
+-fi
++TARGET_READLINE_INC=""
++TARGET_HAVE_READLINE=1
+ AC_SUBST(TARGET_READLINE_INC)
+ AC_SUBST(TARGET_HAVE_READLINE)
+
diff --git a/packages/sqlite/sqlite3/ldflags.patch b/packages/sqlite/sqlite3/ldflags.patch
new file mode 100644
index 0000000000..ee5105ffff
--- /dev/null
+++ b/packages/sqlite/sqlite3/ldflags.patch
@@ -0,0 +1,67 @@
+--- sqlite-3.3.7/Makefile.in.orig 2006-08-20 23:05:36.000000000 +0200
++++ sqlite-3.3.7/Makefile.in 2006-08-20 23:42:49.000000000 +0200
+@@ -31,6 +31,10 @@
+ #
+ TCC = @TARGET_CC@ @TARGET_CFLAGS@ -I. -I${TOP}/src
+
++# OE overrides
++#
++TARGET_LFLAGS = @TARGET_LFLAGS@
++
+ # Define -DNDEBUG to compile without debugging (i.e., for production usage)
+ # Omitting the define will cause extra debugging code to be inserted and
+ # includes extra comments when "EXPLAIN stmt" is used.
+@@ -257,17 +261,17 @@
+ | $(NAWK) '{print $$5,$$6}' >last_change
+
+ libsqlite3.la: $(LIBOBJ)
+- $(LTLINK) -o libsqlite3.la $(LIBOBJ) $(LIBPTHREAD) \
++ $(LTLINK) -o libsqlite3.la $(LIBOBJ) $(TARGET_LFLAGS) $(LIBPTHREAD) \
+ ${ALLOWRELEASE} -rpath $(libdir) -version-info "8:6:8"
+
+ libtclsqlite3.la: tclsqlite.lo libsqlite3.la
+ $(LTLINK) -o libtclsqlite3.la tclsqlite.lo \
+- $(LIBOBJ) @TCL_STUB_LIB_SPEC@ $(LIBPTHREAD) \
++ $(LIBOBJ) @TCL_STUB_LIB_SPEC@ $(TARGET_LFLAGS) $(LIBPTHREAD) \
+ -rpath $(libdir)/sqlite \
+ -version-info "8:6:8"
+
+ sqlite3$(TEXE): $(TOP)/src/shell.c libsqlite3.la sqlite3.h
+- $(LTLINK) $(READLINE_FLAGS) $(LIBPTHREAD) \
++ $(LTLINK) $(TARGET_LFLAGS) $(READLINE_FLAGS) $(LIBPTHREAD) \
+ -o $@ $(TOP)/src/shell.c libsqlite3.la \
+ $(LIBREADLINE) $(TLIBS)
+
+@@ -456,12 +460,12 @@
+
+ tclsqlite3: tclsqlite-shell.lo libsqlite3.la
+ $(LTLINK) -o tclsqlite3 tclsqlite-shell.lo \
+- libsqlite3.la $(LIBTCL)
++ libsqlite3.la $(TARGET_LFLAGS) $(LIBTCL)
+
+ testfixture$(TEXE): $(TOP)/src/tclsqlite.c libsqlite3.la $(TESTSRC)
+ $(LTLINK) -DTCLSH=1 -DSQLITE_TEST=1 -DSQLITE_CRASH_TEST=1 \
+ $(TEMP_STORE) -o testfixture $(TESTSRC) $(TOP)/src/tclsqlite.c \
+- libsqlite3.la $(LIBTCL)
++ libsqlite3.la $(TARGET_LFLAGS) $(LIBTCL)
+
+
+ fulltest: testfixture$(TEXE) sqlite3$(TEXE)
+@@ -471,7 +475,7 @@
+ ./testfixture $(TOP)/test/quick.test
+
+ sqlite3_analyzer$(TEXE): $(TOP)/src/tclsqlite.c libtclsqlite3.la \
+- $(TESTSRC) $(TOP)/tool/spaceanal.tcl
++ $(TARGET_LFLAGS) $(TESTSRC) $(TOP)/tool/spaceanal.tcl
+ sed \
+ -e '/^#/d' \
+ -e 's,\\,\\\\,g' \
+@@ -481,7 +485,7 @@
+ $(TOP)/tool/spaceanal.tcl >spaceanal_tcl.h
+ $(LTLINK) -DTCLSH=2 -DSQLITE_TEST=1 $(TEMP_STORE)\
+ -o sqlite3_analyzer$(EXE) $(TESTSRC) $(TOP)/src/tclsqlite.c \
+- libtclsqlite3.la $(LIBTCL)
++ libtclsqlite3.la $(TARGET_LFLAGS) $(LIBTCL)
+
+ # Rules used to build documentation
+ #
diff --git a/packages/sqlite/sqlite3/libtool.patch b/packages/sqlite/sqlite3/libtool.patch
new file mode 100644
index 0000000000..ccf9993ed2
--- /dev/null
+++ b/packages/sqlite/sqlite3/libtool.patch
@@ -0,0 +1,25 @@
+Index: sqlite-3.2.1/Makefile.in
+===================================================================
+--- sqlite-3.2.1.orig/Makefile.in 2005-03-23 17:09:39.000000000 +0100
++++ sqlite-3.2.1/Makefile.in 2005-04-25 23:11:20.000000000 +0200
+@@ -15,7 +15,10 @@
+ # The toplevel directory of the source tree. This is the directory
+ # that contains this "Makefile.in" and the "configure.in" script.
+ #
+-TOP = @srcdir@
++TOP = $(srcdir)
++srcdir = @srcdir@
++top_srcdir = @top_srcdir@
++top_builddir = .
+
+ # C Compiler and options for use in building executables that
+ # will run on the platform that is doing the build.
+@@ -96,7 +99,7 @@
+ exec_prefix = @exec_prefix@
+ libdir = @libdir@
+ INSTALL = @INSTALL@
+-LIBTOOL = ./libtool
++LIBTOOL = @LIBTOOL@
+ ALLOWRELEASE = @ALLOWRELEASE@
+
+ # libtool compile/link/install
diff --git a/packages/sqlite/sqlite3_3.5.2.bb b/packages/sqlite/sqlite3_3.5.2.bb
new file mode 100644
index 0000000000..53fd96c705
--- /dev/null
+++ b/packages/sqlite/sqlite3_3.5.2.bb
@@ -0,0 +1 @@
+require sqlite3.inc
diff --git a/packages/squashfs-tools/squashfs-tools-3.3/.mtn2git_empty b/packages/squashfs-tools/squashfs-tools-3.3/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/squashfs-tools/squashfs-tools-3.3/.mtn2git_empty
diff --git a/packages/squashfs-tools/squashfs-tools-3.3/Makefile.patch b/packages/squashfs-tools/squashfs-tools-3.3/Makefile.patch
new file mode 100644
index 0000000000..5addf8dd34
--- /dev/null
+++ b/packages/squashfs-tools/squashfs-tools-3.3/Makefile.patch
@@ -0,0 +1,32 @@
+Index: squashfs-tools/Makefile
+===================================================================
+--- squashfs-tools.orig/Makefile 2007-11-16 20:32:00.000000000 +0100
++++ squashfs-tools/Makefile 2007-11-16 20:37:04.000000000 +0100
+@@ -1,19 +1,24 @@
+ INCLUDEDIR = .
+
+-CFLAGS := -I$(INCLUDEDIR) -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_GNU_SOURCE -O2
++LOCAL_CFLAGS := -I$(INCLUDEDIR) -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_GNU_SOURCE
+
+ all: mksquashfs unsquashfs
+
+ mksquashfs: mksquashfs.o read_fs.o sort.o
+- $(CC) mksquashfs.o read_fs.o sort.o -lz -lpthread -lm -o $@
++ $(CC) $(LDFLAGS) mksquashfs.o read_fs.o sort.o -lz -lpthread -lm -o $@
+
+ mksquashfs.o: mksquashfs.c squashfs_fs.h mksquashfs.h global.h sort.h
++ $(CC) $(CFLAGS) $(LOCAL_CFLAGS) -c -o mksquashfs.o mksquashfs.c
+
+ read_fs.o: read_fs.c squashfs_fs.h read_fs.h global.h
++ $(CC) $(CFLAGS) $(LOCAL_CFLAGS) -c -o read_fs.o read_fs.c
+
+ sort.o: sort.c squashfs_fs.h global.h sort.h
++ $(CC) $(CFLAGS) $(LOCAL_CFLAGS) -c -o sort.o sort.c
+
+ unsquashfs: unsquashfs.o
+- $(CC) unsquashfs.o -lz -o $@
++ $(CC) $(LDFLAGS) unsquashfs.o -lz -o $@
+
+ unsquashfs.o: unsquashfs.c squashfs_fs.h read_fs.h global.h
++ $(CC) $(CFLAGS) $(LOCAL_CFLAGS) -c -o unsquashfs.o -lz -o $@
++
diff --git a/packages/squashfs-tools/squashfs-tools-native_3.3.bb b/packages/squashfs-tools/squashfs-tools-native_3.3.bb
new file mode 100644
index 0000000000..87ba761ce4
--- /dev/null
+++ b/packages/squashfs-tools/squashfs-tools-native_3.3.bb
@@ -0,0 +1,11 @@
+require squashfs-tools_${PV}.bb
+PR = "r0"
+
+inherit native
+
+FILESPATH = "${@base_set_filespath([ '${FILE_DIRNAME}/squashfs-tools-${PV}', '${FILE_DIRNAME}/squashfs-tools', '${FILE_DIRNAME}/files', '${FILE_DIRNAME}' ], d)}"
+PACKAGES = ""
+
+do_stage () {
+ install -m 0755 mksquashfs ${STAGING_BINDIR}/
+}
diff --git a/packages/squashfs-tools/squashfs-tools.inc b/packages/squashfs-tools/squashfs-tools.inc
new file mode 100644
index 0000000000..f27d9ec79a
--- /dev/null
+++ b/packages/squashfs-tools/squashfs-tools.inc
@@ -0,0 +1,18 @@
+DESCRIPTION = "Squashfs is a highly compressed read-only filesystem for Linux."
+SECTION = "base"
+LICENSE = "GPLv2"
+
+DEPENDS = "zlib"
+
+S = "${WORKDIR}/squashfs${@bb.data.getVar('PV',d,1).replace('r','-r')}/squashfs-tools"
+
+prefix = ""
+
+do_compile() {
+ oe_runmake mksquashfs
+}
+
+do_install () {
+ install -d ${D}${sbindir}
+ install -m 0755 mksquashfs ${D}${sbindir}/
+}
diff --git a/packages/squashfs-tools/squashfs-tools_3.3.bb b/packages/squashfs-tools/squashfs-tools_3.3.bb
new file mode 100644
index 0000000000..2bf0a98ccb
--- /dev/null
+++ b/packages/squashfs-tools/squashfs-tools_3.3.bb
@@ -0,0 +1,8 @@
+require squashfs-tools.inc
+PR = "r0"
+
+# some release have .tgz, some have .tar.gz, so keep that outside the .inc file
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/squashfs/squashfs${@bb.data.getVar('PV',d,1).replace('r','-r')}.tgz \
+file://Makefile.patch;patch=1"
+
diff --git a/packages/squid/squid-native_2.6.STABLE14.bb b/packages/squid/squid-native_2.6.STABLE14.bb
new file mode 100644
index 0000000000..c8c4258275
--- /dev/null
+++ b/packages/squid/squid-native_2.6.STABLE14.bb
@@ -0,0 +1,11 @@
+inherit native autotools
+
+SRC_URI = "http://www.squid-cache.org/Versions/v2/2.6/squid-${PV}.tar.bz2"
+S = "${WORKDIR}/squid-${PV}"
+
+inherit native autotools
+
+do_stage() {
+ install -d ${STAGING_BINDIR_NATIVE}
+ install -m 0755 src/cf_gen ${STAGING_BINDIR_NATIVE}/cf_gen
+}
diff --git a/packages/squid/squid_2.6.STABLE14.bb b/packages/squid/squid_2.6.STABLE14.bb
index 580ec52ac6..beef3ba2b0 100644
--- a/packages/squid/squid_2.6.STABLE14.bb
+++ b/packages/squid/squid_2.6.STABLE14.bb
@@ -1,11 +1,23 @@
DESCRIPTION = "Squid is a caching proxy for the Web supporting HTTP, HTTPS, FTP, and more"
LICENSE = "GPLv2"
-DEPENDS = "aio"
+DEPENDS = "squid-native-${PV}"
-SRC_URI = "http://www.squid-cache.org/Versions/v2/2.6/squid-2.6.STABLE14.tar.bz2"
+SRC_URI = "http://www.squid-cache.org/Versions/v2/2.6/squid-${PV}.tar.bz2"
inherit autotools
+EXTRA_OECONF = "--disable-epoll --disable-nls"
+do_configure_append() {
+ sed -i -e 's|./cf_gen |${STAGING_BINDIR_NATIVE}/cf_gen |g' src/Makefile
+}
+# this packages the languages better and saves some space, installs
+# English as errors default and the others in locale package
+
+FILES_${PN} += " ${datadir}/errors/English/* \
+ ${datadir}/icons/* \
+ ${datadir}/mib.txt"
+
+FILES_${PN}-locale += " ${datadir}/errors/* "
diff --git a/packages/stage-manager/files/stage-manager b/packages/stage-manager/files/stage-manager
index c5b6d17a56..35453992f4 100755
--- a/packages/stage-manager/files/stage-manager
+++ b/packages/stage-manager/files/stage-manager
@@ -1,6 +1,6 @@
#!/usr/bin/env python
-# Copyright (C) 2006 Richard Purdie
+# Copyright (C) 2006-2007 Richard Purdie
#
# This program is free software; you can redistribute it and/or modify it under
# the terms of the GNU General Public License version 2 as published by the Free
@@ -79,33 +79,54 @@ if __name__ == "__main__":
found = False
+ def updateCache(path, fstamp):
+ cache[path] = {}
+ cache[path]['ts'] = fstamp[stat.ST_MTIME]
+ cache[path]['size'] = fstamp[stat.ST_SIZE]
+ found = True
+
+ def copyfile(path):
+ if options.copydir:
+ copypath = os.path.join(options.copydir, path.replace(options.parentdir, '', 1))
+ mkdirhier(os.path.split(copypath)[0])
+ os.system("cp -dp " + path + " " + copypath)
+
+ def copydir(path, fstamp):
+ if options.copydir:
+ copypath = os.path.join(options.copydir, path.replace(options.parentdir, '', 1))
+ if os.path.islink(path):
+ os.symlink(os.readlink(path), copypath)
+ else:
+ mkdirhier(copypath)
+ os.utime(copypath, (fstamp[stat.ST_ATIME], fstamp[stat.ST_MTIME]))
+
for root, dirs, files in os.walk(options.parentdir):
for f in files:
path = os.path.join(root, f)
if not os.access(path, os.R_OK):
continue
- fstamp = os.stat(path)
+ fstamp = os.lstat(path)
if path not in cache:
print "new file %s" % path
- cache[path] = {}
- cache[path]['ts'] = fstamp[stat.ST_MTIME]
- cache[path]['size'] = fstamp[stat.ST_SIZE]
- if options.copydir:
- copypath = os.path.join(options.copydir, path.replace(options.parentdir, '', 1))
- mkdirhier(os.path.split(copypath)[0])
- os.system("mv " + path + " " + copypath)
- found = True
+ updateCache(path, fstamp)
+ copyfile(path)
else:
if cache[path]['ts'] != fstamp[stat.ST_MTIME] or cache[path]['size'] != fstamp[stat.ST_SIZE]:
print "file %s changed" % path
- cache[path] = {}
- cache[path]['ts'] = fstamp[stat.ST_MTIME]
- cache[path]['size'] = fstamp[stat.ST_SIZE]
- if options.copydir:
- copypath = os.path.join(options.copydir, path.replace(options.parentdir, '', 1))
- mkdirhier(os.path.split(copypath)[0])
- os.system("mv " + path + " " + copypath)
- found = True
+ updateCache(path, fstamp)
+ copyfile(path)
+ for d in dirs:
+ path = os.path.join(root, d)
+ fstamp = os.lstat(path)
+ if path not in cache:
+ print "new dir %s" % path
+ updateCache(path, fstamp)
+ copydir(path, fstamp)
+ else:
+ if cache[path]['ts'] != fstamp[stat.ST_MTIME]:
+ print "dir %s changed" % path
+ updateCache(path, fstamp)
+ copydir(path, fstamp)
if options.update:
print "Updating"
diff --git a/packages/stage-manager/stagemanager-native_0.0.1.bb b/packages/stage-manager/stagemanager-native_0.0.1.bb
index 7074d37307..828af1fbb5 100644
--- a/packages/stage-manager/stagemanager-native_0.0.1.bb
+++ b/packages/stage-manager/stagemanager-native_0.0.1.bb
@@ -1,5 +1,5 @@
DESCRIPTION = "Helper script for packaged-staging.bbclass"
-PR = "r1"
+PR = "r7"
SRC_URI = "file://stage-manager"
LICENSE = "GPLv2"
diff --git a/packages/subversion/subversion_1.4.5.bb b/packages/subversion/subversion_1.4.5.bb
new file mode 100644
index 0000000000..1daf45bd0c
--- /dev/null
+++ b/packages/subversion/subversion_1.4.5.bb
@@ -0,0 +1,33 @@
+DESCRIPTION = "The Subversion (svn) client"
+SECTION = "console/network"
+DEPENDS = "apr-util neon"
+RDEPENDS = "neon"
+LICENSE = "Apache BSD"
+HOMEPAGE = "http://subversion.tigris.org"
+
+PR = "r0"
+
+SRC_URI = "http://subversion.tigris.org/downloads/${P}.tar.bz2 \
+ file://disable-revision-install.patch;patch=1 \
+ file://neon-detection.patch;patch=1"
+
+EXTRA_OECONF = "--with-neon=${STAGING_DIR}/${TARGET_SYS} \
+ --without-berkeley-db --without-apxs --without-apache \
+ --without-swig --with-apr=${STAGING_BINDIR_CROSS} \
+ --with-apr-util=${STAGING_BINDIR_CROSS}"
+
+
+inherit autotools
+
+export LDFLAGS += " -L${STAGING_LIBDIR} "
+
+do_configure() {
+ gnu-configize
+ libtoolize --force
+ aclocal -I build/ -I build/ac-macros/ && autoconf
+ oe_runconf
+}
+
+do_stage() {
+ autotools_stage_all
+}
diff --git a/packages/sword/sword_1.5.10.bb b/packages/sword/sword_1.5.10.bb
new file mode 100644
index 0000000000..151bba366d
--- /dev/null
+++ b/packages/sword/sword_1.5.10.bb
@@ -0,0 +1,19 @@
+DESCRIPTION = "The SWORD Project is an open source, cross-platform \
+(Linux, Windows, Solaris, MacOSX etc.) API and library for \
+Bible software with a constantly growing list of front-ends \
+(GUI, textmode, web-based, etc.) and a library of over 200 text modules"
+SECTION = "libs"
+HOMEPAGE = "http://www.e-sword.net/"
+PRIORITY = "optional"
+LICENSE = "GPL"
+PR = "r0"
+
+SRC_URI = "http://www.crosswire.org/ftpmirror/pub/sword/source/v1.5/sword-${PV}.tar.gz"
+
+inherit autotools pkgconfig lib_package
+
+EXTRA_OECONF = "--without-clucene --without-curl"
+
+do_stage() {
+ autotools_stage_all
+}
diff --git a/packages/tasks/task-base.bb b/packages/tasks/task-base.bb
index 412254d944..33d93f2921 100644
--- a/packages/tasks/task-base.bb
+++ b/packages/tasks/task-base.bb
@@ -1,5 +1,5 @@
DESCRIPTION = "Merge machine and distro options to create a basic machine task/package"
-PR = "r44"
+PR = "r50"
inherit task
@@ -11,43 +11,43 @@ PACKAGES = ' \
task-distro-base \
task-machine-base \
\
- task-base-acpi \
- task-base-alsa \
- task-base-apm \
+ ${@base_contains("MACHINE_FEATURES", "acpi", "task-base-acpi", "",d)} \
+ ${@base_contains("MACHINE_FEATURES", "alsa", "task-base-alsa", "", d)} \
+ ${@base_contains("MACHINE_FEATURES", "apm", "task-base-apm", "", d)} \
+ ${@base_contains("MACHINE_FEATURES", "ext2", "task-base-ext2", "", d)} \
+ ${@base_contains("MACHINE_FEATURES", "irda", "task-base-irda", "",d)} \
+ ${@base_contains("MACHINE_FEATURES", "keyboard", "task-base-keyboard", "", d)} \
+ ${@base_contains("MACHINE_FEATURES", "pci", "task-base-pci", "",d)} \
+ ${@base_contains("MACHINE_FEATURES", "pcmcia", "task-base-pcmcia", "", d)} \
+ ${@base_contains("MACHINE_FEATURES", "phone", "task-base-phone", "", d)} \
+ ${@base_contains("MACHINE_FEATURES", "screen", "task-base-screen", "", d)} \
+ ${@base_contains("MACHINE_FEATURES", "serial", "task-base-serial", "", d)} \
+ ${@base_contains("MACHINE_FEATURES", "touchscreen", "task-base-touchscreen", "", d)} \
+ ${@base_contains("MACHINE_FEATURES", "usbgadget", "task-base-usbgadget", "", d)} \
+ ${@base_contains("MACHINE_FEATURES", "usbhost", "task-base-usbhost", "", d)} \
+ \
+ ${@base_contains("MACHINE_FEATURES", "uboot", "task-base-uboot", "",d)} \
+ ${@base_contains("MACHINE_FEATURES", "redboot", "task-base-redboot", "",d)} \
+ ${@base_contains("MACHINE_FEATURES", "apex", "task-base-apex", "",d)} \
+ \
task-base-bluetooth \
- task-base-ext2 \
- task-base-irda \
- task-base-keyboard \
- task-base-pci \
- task-base-pcmcia \
- task-base-phone \
- task-base-screen \
- task-base-serial \
- task-base-touchscreen \
- task-base-usbgadget \
- task-base-usbhost \
task-base-wifi \
\
- task-base-cramfs \
- task-base-ipsec \
- task-base-ipv6 \
- task-base-nfs \
- task-base-ppp \
- task-base-smbfs \
- \
+ ${@base_contains("DISTRO_FEATURES", "cramfs", "task-base-cramfs", "", d)} \
+ ${@base_contains("DISTRO_FEATURES", "ipsec", "task-base-ipsec", "", d)} \
+ ${@base_contains("DISTRO_FEATURES", "ipv6", "task-base-ipv6", "", d)} \
+ ${@base_contains("DISTRO_FEATURES", "nfs", "task-base-nfs", "", d)} \
+ ${@base_contains("DISTRO_FEATURES", "ppp", "task-base-ppp", "", d)} \
+ ${@base_contains("DISTRO_FEATURES", "smbfs", "task-base-smbfs", "", d)} \
+ ${@base_contains("DISTRO_FEATURES", "raid", "task-base-raid", "",d)} \
+ \
${@base_contains("MACHINE_FEATURES","kernel26","task-base-kernel26","task-base-kernel24",d)} \
- '
+ '
#
# packages which content depend on MACHINE_FEATURES need to be MACHINE_ARCH
#
-PACKAGE_ARCH_task-base = "${MACHINE_ARCH}"
-PACKAGE_ARCH_task-machine-base = "${MACHINE_ARCH}"
-PACKAGE_ARCH_task-base-apm = "${MACHINE_ARCH}"
-PACKAGE_ARCH_task-base-bluetooth = "${MACHINE_ARCH}"
-PACKAGE_ARCH_task-base-irda = "${MACHINE_ARCH}"
-PACKAGE_ARCH_task-base-pcmcia = "${MACHINE_ARCH}"
-PACKAGE_ARCH_task-base-wifi = "${MACHINE_ARCH}"
+PACKAGE_ARCH = "${MACHINE_ARCH}"
#
# linux-hotplug or none
@@ -96,6 +96,7 @@ RDEPENDS_task-base = "\
${@base_contains('COMBINED_FEATURES', 'wifi', 'task-base-wifi', '',d)} \
${@base_contains('COMBINED_FEATURES', 'uboot', 'task-base-uboot', '',d)} \
${@base_contains('COMBINED_FEATURES', 'redboot', 'task-base-redboot', '',d)} \
+ ${@base_contains('COMBINED_FEATURES', 'apex', 'task-base-apex', '',d)} \
\
${@base_contains('DISTRO_FEATURES', 'nfs', 'task-base-nfs', '',d)} \
${@base_contains('DISTRO_FEATURES', 'cramfs', 'task-base-cramfs', '',d)} \
@@ -159,6 +160,7 @@ RRECOMMENDS_task-base-kernel24 = "\
kernel-module-uinput"
RRECOMMENDS_task-base-kernel26 = "\
+ kernel-module-nls-utf8 \
kernel-module-input \
kernel-module-uinput \
kernel-module-rtc-dev \
@@ -298,6 +300,9 @@ RDEPENDS_task-base-uboot = "\
RDEPENDS_task-base-redboot = "\
fis"
+RDEPENDS_task-base-apex = "\
+ apex-env"
+
RDEPENDS_task-base-ppp = "\
ppp \
ppp-dialin"
diff --git a/packages/tasks/task-boot.bb b/packages/tasks/task-boot.bb
index fb09ad1a83..0435c2aa62 100644
--- a/packages/tasks/task-boot.bb
+++ b/packages/tasks/task-boot.bb
@@ -1,5 +1,5 @@
DESCRIPTION = "Basic task to get a device booting"
-PR = "r41"
+PR = "r42"
inherit task
diff --git a/packages/tasks/task-devimage.bb b/packages/tasks/task-devimage.bb
new file mode 100644
index 0000000000..bd0c15e70f
--- /dev/null
+++ b/packages/tasks/task-devimage.bb
@@ -0,0 +1,25 @@
+DESCRIPTION = "Image for development testing"
+PR = "r1"
+LICENSE = "MIT"
+
+inherit task
+
+DEVIMAGE_EXTRA_RDEPENDS ?= ""
+DEVIMAGE_EXTRA_RRECOMMENDS ?= ""
+
+RDEPENDS = "\
+ devimage \
+ busybox dropbear udev \
+ util-linux-mount \
+ module-init-tools pcmciautils \
+ wireless-tools wpa-supplicant \
+ irda-utils acx-firmware \
+ ${DEVIMAGE_EXTRA_RDEPENDS} \
+ "
+
+RRECOMMENDS = "\
+ kernel-module-msdos \
+ kernel-module-vfat \
+ kernel-modules \
+ ${DEVIMAGE_EXTRA_RRECOMMENDS} \
+ "
diff --git a/packages/tasks/task-gpe-sectest.bb b/packages/tasks/task-gpe-sectest.bb
deleted file mode 100644
index b647c6136b..0000000000
--- a/packages/tasks/task-gpe-sectest.bb
+++ /dev/null
@@ -1,18 +0,0 @@
-DESCRIPTION = "Security testing task packages for GPE Palmtop Environment"
-PR = "r6"
-LICENSE = "MIT"
-
-inherit task
-
-RDEPENDS_${PN} = "\
- nmap \
- ettercap \
- stunnel \
- curl \
- dsniff \
- prismstumbler \
- tcpdump \
- kismet \
- hydra \
- thcrut"
-
diff --git a/packages/tasks/task-mipl.bb b/packages/tasks/task-mipl.bb
new file mode 100644
index 0000000000..9e2dce52f1
--- /dev/null
+++ b/packages/tasks/task-mipl.bb
@@ -0,0 +1,16 @@
+# Tasks for IPv6 Mobility extensions, needs:
+# CONFIG_IPV6_MIP6=y
+# CONFIG_IPV6=y
+# in the kernel .config
+
+DESCRIPTION = "Mobile ipv6 extensions"
+
+inherit task
+
+PACKAGE_ARCH = "all"
+
+RDEPENDS = "mipv6"
+RRECOMMENDS = "kernel-module-ipv6 \
+ kernel-module-mip6 \
+ "
+
diff --git a/packages/tasks/task-native-sdk.bb b/packages/tasks/task-native-sdk.bb
index b164363612..b840254176 100644
--- a/packages/tasks/task-native-sdk.bb
+++ b/packages/tasks/task-native-sdk.bb
@@ -3,7 +3,8 @@ LICENSE = "MIT"
DEPENDS = "gcc binutils make patch patchutils diffstat diffutils automake flex bison gawk sed grep"
RDEPENDS = "gcc-symlinks g++-symlinks binutils-symlinks make libc6-dev \
flex flex-dev bison gawk sed grep autoconf automake make \
- patch patchutils diffstat diffutils libgcc-s-dev libstdc++-dev"
+ patch patchutils diffstat diffutils libstdc++-dev"
+PR = "r2"
ALLOW_EMPTY = "1"
PACKAGES = "${PN}"
diff --git a/packages/tasks/task-openmoko.bb b/packages/tasks/task-openmoko.bb
index 2df8c6c293..76e0b843f7 100644
--- a/packages/tasks/task-openmoko.bb
+++ b/packages/tasks/task-openmoko.bb
@@ -2,10 +2,12 @@ DESCRIPTION = "OpenMoko: Tasks for the OpenMoko Linux Distribution"
SECTION = "openmoko/base"
LICENSE = "MIT"
PROVIDES = "task-openmoko-everything"
-PR = "r66"
+PR = "r71"
inherit task
+XSERVER ?= "xserver-kdrive-fbdev"
+
PACKAGES = "\
task-openmoko-linux \
task-openmoko-ui \
@@ -46,6 +48,7 @@ RDEPENDS_task-openmoko-linux = "\
# task-openmoko-ui
#
DESCRIPTION_task-openmoko-ui = "OpenMoko: The X11/Gtk+2 based native User Interface"
+PACKAGE_ARCH_task-openmoko-ui = "${MACHINE_ARCH}"
RDEPENDS_task-openmoko-ui = "\
gdk-pixbuf-loader-png \
gdk-pixbuf-loader-gif \
@@ -54,12 +57,10 @@ RDEPENDS_task-openmoko-ui = "\
pango-module-basic-x \
pango-module-basic-fc \
gtk+ \
- matchbox-common \
matchbox-wm \
- xserver-kdrive-fbdev \
+ ${XSERVER} \
xserver-kdrive-common \
xserver-nodm-init \
- ttf-bitstream-vera \
xauth \
xhost \
xset \
@@ -141,7 +142,7 @@ RDEPENDS_task-openmoko-pim = "\
openmoko-appmanager2 \
openmoko-tasks2 \
openmoko-mediaplayer2 \
-# openmoko-messages \
+ openmoko-messages2 \
"
#
diff --git a/packages/tasks/task-opie-16mb.bb b/packages/tasks/task-opie-16mb.bb
index 7758b9a141..9d8295d0ca 100644
--- a/packages/tasks/task-opie-16mb.bb
+++ b/packages/tasks/task-opie-16mb.bb
@@ -1,7 +1,7 @@
DESCRIPTION = "Tasks for small OPIE image"
SECTION = "opie/base"
LICENSE = "MIT"
-PR = "r1"
+PR = "r3"
inherit task
@@ -17,7 +17,7 @@ PACKAGES = "task-opie-16mb-base \
# Dependencies to get the launcher up and running
#
RDEPENDS_task-opie-16mb-base = "opie-init opie-alarm opie-qcop opie-qss opie-quicklauncher \
- opie-taskbar opie-pics opie-sounds opie-freetype \
+ opie-taskbar opie-pics opie-sounds opie-freetype opie-taskbar-images-320x240 \
ttf-dejavu-sans ttf-dejavu-sans-mono"
#
diff --git a/packages/tasks/task-python-everything.bb b/packages/tasks/task-python-everything.bb
index 09367a931f..a1d9f444b1 100644
--- a/packages/tasks/task-python-everything.bb
+++ b/packages/tasks/task-python-everything.bb
@@ -1,7 +1,7 @@
DESCRIPTION= "Everything Python"
HOMEPAGE = "http://www.vanille.de/projects/python.spy"
LICENSE = "MIT"
-PR = "ml20"
+PR = "ml21"
RDEPENDS = "\
python-ao \
@@ -9,10 +9,7 @@ RDEPENDS = "\
python-constraint \
python-dbus \
python-dialog \
- python-evas \
- python-ecore \
- python-emotion \
- python-edje \
+ python-efl \
python-pycurl \
python-fam \
python-fnorb \
@@ -52,6 +49,7 @@ RDEPENDS = "\
python-pyiw \
python-pylinda \
python-pylint \
+ python-pyqt \
python-pyraf \
python-pyreverse \
python-pyrex \
@@ -74,6 +72,7 @@ RDEPENDS = "\
python-spydi \
python-spyro \
python-sqlobject \
+ python-sword \
python-tlslite \
python-urwid \
python-vmaps \
@@ -88,9 +87,7 @@ BROKEN_PACKAGES = "\
python-egenix-mx-base \
python-gammu \
python-m2crypto \
- python-sword \
python-mysqldb \
- python-pyqt \
python-pyqwt \
"
diff --git a/packages/tasks/task-python-sharprom_20060425.bb b/packages/tasks/task-python-sharprom_20060425.bb
index 25841b357a..5dbd59d18a 100644
--- a/packages/tasks/task-python-sharprom_20060425.bb
+++ b/packages/tasks/task-python-sharprom_20060425.bb
@@ -20,7 +20,6 @@ RDEPENDS = "\
python-ao \
python-constraint \
python-dialog \
- python-egenix-mx-base \
python-fnorb \
python-fpconst \
python-gnosis \
@@ -28,7 +27,7 @@ RDEPENDS = "\
python-irclib \
python-itools \
python-libgmail \
- python-logilab \
+ python-logilab-common \
python-lxml \
python-mad \
python-native \
@@ -53,7 +52,6 @@ RDEPENDS = "\
python-pyweather \
python-pyxml \
python-pyxmlrpc \
- python-quicklauncher \
python-scapy \
python-scons \
python-sip \
@@ -70,6 +68,7 @@ RDEPENDS = "\
twisted \
zope"
+#fixme add python-egenix-mx-base if brought in from nonworking
#fixme add python-pycap once libdnet is in again
#fixme add python-pyx once kpathwhich-native is there
#fixme add packages dynamically
diff --git a/packages/tasks/task-toolchain-openmoko-sdk.bb b/packages/tasks/task-toolchain-openmoko-sdk.bb
index 062b05519b..bcb2d370a6 100644
--- a/packages/tasks/task-toolchain-openmoko-sdk.bb
+++ b/packages/tasks/task-toolchain-openmoko-sdk.bb
@@ -1,8 +1,9 @@
DESCRIPTION = "Packages for a standalone OpenMoko SDK or external toolchain"
-PR = "r1"
LICENSE = "MIT"
ALLOW_EMPTY = "1"
+PR = "r2"
+
PACKAGES = "${PN}"
RDEPENDS_${PN} = "\
@@ -25,4 +26,6 @@ RDEPENDS_${PN} = "\
libmokoui2-dev \
libmokopanelui2-dev \
libmokojournal2-dev \
+ openmoko-sample2-src \
+ openmoko-toolchain-scripts \
"
diff --git a/packages/tinymail/files/no-iconv-detect.patch b/packages/tinymail/files/no-iconv-detect.patch
index 558cbb2f93..cfda4cb0f2 100644
--- a/packages/tinymail/files/no-iconv-detect.patch
+++ b/packages/tinymail/files/no-iconv-detect.patch
@@ -1,66 +1,9 @@
---- /tmp/ticonv.m4 2006-11-19 12:01:18.000000000 +0100
-+++ trunk/m4/ticonv.m4 2006-11-19 12:14:50.378554000 +0100
-@@ -14,12 +14,7 @@
- save_LIBS="$LIBS"
- CFLAGS="$CFLAGS $ICONV_CFLAGS"
- LIBS="$LIBS $ICONV_LIBS -liconv"
--AC_CACHE_CHECK(for iconv in -liconv, ac_cv_libiconv, AC_LINK_IFELSE([AC_LANG_PROGRAM([[
--#include <iconv.h>
--]], [[
-- iconv_t cd;
-- cd = iconv_open ("UTF-8", "ISO-8859-1");
--]])],[ac_cv_libiconv=yes],[ac_cv_libiconv=no]))
-+
- if test $ac_cv_libiconv = yes; then
- ICONV_LIBS="$ICONV_LIBS -liconv"
- have_iconv=yes
-@@ -33,39 +28,6 @@
- if test $ac_cv_libiconv = no; then
- AC_CHECK_FUNCS(gnu_get_libc_version)
- fi
-- AC_CACHE_CHECK([if iconv() handles UTF-8], ac_cv_libiconv_utf8, AC_RUN_IFELSE([AC_LANG_SOURCE([[
--#include <iconv.h>
--#include <stdlib.h>
--#include <string.h>
--#ifdef HAVE_GNU_GET_LIBC_VERSION
--#include <gnu/libc-version.h>
--#endif
--
--int main (int argc, char **argv)
--{
-- const char *from = "Some Text \xA4";
-- const char *utf8 = "Some Text \xC2\xA4";
-- char *transbuf = malloc (20), *trans = transbuf;
-- iconv_t cd;
-- size_t from_len = strlen (from), utf8_len = 20;
-- size_t utf8_real_len = strlen (utf8);
--
--#ifdef HAVE_GNU_GET_LIBC_VERSION
-- /* glibc 2.1.2's iconv is broken in hard to test ways. */
-- if (!strcmp (gnu_get_libc_version (), "2.1.2"))
-- exit (1);
--#endif
--
-- cd = iconv_open ("UTF-8", "ISO-8859-1");
-- if (cd == (iconv_t) -1)
-- exit (1);
-- if (iconv (cd, &from, &from_len, &trans, &utf8_len) == -1 || from_len != 0)
-- exit (1);
-- if (memcmp (utf8, transbuf, utf8_real_len) != 0)
-- exit (1);
--
-- exit (0);
--}]])],[ac_cv_libiconv_utf8=yes],[ac_cv_libiconv_utf8=no; have_iconv=no],[ac_cv_libiconv_utf8=no; have_iconv=no]))
- fi
+--- m4/ticonv.m4~ 2007-10-30 13:57:32.000000000 +0100
++++ trunk/m4/ticonv.m4 2007-10-30 13:57:32.000000000 +0100
+@@ -76,15 +76,6 @@
+
+ CFLAGS="$CFLAGS -I$srcdir"
- if test "$have_iconv" = no; then
-@@ -73,20 +35,5 @@
- fi
- AC_SUBST(ICONV_CFLAGS)
- AC_SUBST(ICONV_LIBS)
--
--CFLAGS="$CFLAGS -I$srcdir"
--
-AC_MSG_CHECKING(preferred charset formats for system iconv)
-AC_RUN_IFELSE([AC_LANG_SOURCE([[
-#define CONFIGURE_IN
@@ -70,9 +13,6 @@
-],[
- AC_MSG_RESULT(not found)
-],[])
--
--CFLAGS="$save_CFLAGS"
--LIBS="$save_LIBS"
--
- ])
-+
+
+ CFLAGS="$save_CFLAGS"
+ LIBS="$save_LIBS"
diff --git a/packages/tinymail/libtinymail-0.0.1/.mtn2git_empty b/packages/tinymail/libtinymail-0.0.1/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/tinymail/libtinymail-0.0.1/.mtn2git_empty
diff --git a/packages/tinymail/libtinymail-0.0.1/no-iconv-detect.patch b/packages/tinymail/libtinymail-0.0.1/no-iconv-detect.patch
new file mode 100644
index 0000000000..558cbb2f93
--- /dev/null
+++ b/packages/tinymail/libtinymail-0.0.1/no-iconv-detect.patch
@@ -0,0 +1,78 @@
+--- /tmp/ticonv.m4 2006-11-19 12:01:18.000000000 +0100
++++ trunk/m4/ticonv.m4 2006-11-19 12:14:50.378554000 +0100
+@@ -14,12 +14,7 @@
+ save_LIBS="$LIBS"
+ CFLAGS="$CFLAGS $ICONV_CFLAGS"
+ LIBS="$LIBS $ICONV_LIBS -liconv"
+-AC_CACHE_CHECK(for iconv in -liconv, ac_cv_libiconv, AC_LINK_IFELSE([AC_LANG_PROGRAM([[
+-#include <iconv.h>
+-]], [[
+- iconv_t cd;
+- cd = iconv_open ("UTF-8", "ISO-8859-1");
+-]])],[ac_cv_libiconv=yes],[ac_cv_libiconv=no]))
++
+ if test $ac_cv_libiconv = yes; then
+ ICONV_LIBS="$ICONV_LIBS -liconv"
+ have_iconv=yes
+@@ -33,39 +28,6 @@
+ if test $ac_cv_libiconv = no; then
+ AC_CHECK_FUNCS(gnu_get_libc_version)
+ fi
+- AC_CACHE_CHECK([if iconv() handles UTF-8], ac_cv_libiconv_utf8, AC_RUN_IFELSE([AC_LANG_SOURCE([[
+-#include <iconv.h>
+-#include <stdlib.h>
+-#include <string.h>
+-#ifdef HAVE_GNU_GET_LIBC_VERSION
+-#include <gnu/libc-version.h>
+-#endif
+-
+-int main (int argc, char **argv)
+-{
+- const char *from = "Some Text \xA4";
+- const char *utf8 = "Some Text \xC2\xA4";
+- char *transbuf = malloc (20), *trans = transbuf;
+- iconv_t cd;
+- size_t from_len = strlen (from), utf8_len = 20;
+- size_t utf8_real_len = strlen (utf8);
+-
+-#ifdef HAVE_GNU_GET_LIBC_VERSION
+- /* glibc 2.1.2's iconv is broken in hard to test ways. */
+- if (!strcmp (gnu_get_libc_version (), "2.1.2"))
+- exit (1);
+-#endif
+-
+- cd = iconv_open ("UTF-8", "ISO-8859-1");
+- if (cd == (iconv_t) -1)
+- exit (1);
+- if (iconv (cd, &from, &from_len, &trans, &utf8_len) == -1 || from_len != 0)
+- exit (1);
+- if (memcmp (utf8, transbuf, utf8_real_len) != 0)
+- exit (1);
+-
+- exit (0);
+-}]])],[ac_cv_libiconv_utf8=yes],[ac_cv_libiconv_utf8=no; have_iconv=no],[ac_cv_libiconv_utf8=no; have_iconv=no]))
+ fi
+
+ if test "$have_iconv" = no; then
+@@ -73,20 +35,5 @@
+ fi
+ AC_SUBST(ICONV_CFLAGS)
+ AC_SUBST(ICONV_LIBS)
+-
+-CFLAGS="$CFLAGS -I$srcdir"
+-
+-AC_MSG_CHECKING(preferred charset formats for system iconv)
+-AC_RUN_IFELSE([AC_LANG_SOURCE([[
+-#define CONFIGURE_IN
+-#include "iconv-detect.c"
+-]])],[
+- AC_MSG_RESULT(found)
+-],[
+- AC_MSG_RESULT(not found)
+-],[])
+-
+-CFLAGS="$save_CFLAGS"
+-LIBS="$save_LIBS"
+-
+ ])
++
diff --git a/packages/tinymail/libtinymail-0.0.3/no-iconv-detect.patch b/packages/tinymail/libtinymail-0.0.3/no-iconv-detect.patch
deleted file mode 100644
index cfda4cb0f2..0000000000
--- a/packages/tinymail/libtinymail-0.0.3/no-iconv-detect.patch
+++ /dev/null
@@ -1,18 +0,0 @@
---- m4/ticonv.m4~ 2007-10-30 13:57:32.000000000 +0100
-+++ trunk/m4/ticonv.m4 2007-10-30 13:57:32.000000000 +0100
-@@ -76,15 +76,6 @@
-
- CFLAGS="$CFLAGS -I$srcdir"
-
--AC_MSG_CHECKING(preferred charset formats for system iconv)
--AC_RUN_IFELSE([AC_LANG_SOURCE([[
--#define CONFIGURE_IN
--#include "iconv-detect.c"
--]])],[
-- AC_MSG_RESULT(found)
--],[
-- AC_MSG_RESULT(not found)
--],[])
-
- CFLAGS="$save_CFLAGS"
- LIBS="$save_LIBS"
diff --git a/packages/tinymail/libtinymail_0.0.5.bb b/packages/tinymail/libtinymail_0.0.5.bb
new file mode 100644
index 0000000000..342f11ba85
--- /dev/null
+++ b/packages/tinymail/libtinymail_0.0.5.bb
@@ -0,0 +1 @@
+require libtinymail.inc
diff --git a/packages/tinymail/libtinymail_svn.bb b/packages/tinymail/libtinymail_svn.bb
index 300fee2cfa..7d396fe968 100644
--- a/packages/tinymail/libtinymail_svn.bb
+++ b/packages/tinymail/libtinymail_svn.bb
@@ -2,7 +2,7 @@ DESCRIPTION = "TinyMail is an attempt to create an E-mail framework for mobile d
SECTION = "x11/utils"
LICENSE = "LGPL"
DEPENDS = "gtk+ glib-2.0 gnome-vfs gconf-dbus libgnomeui"
-PV = "0.0.1+svnr${SRCREV}"
+PV = "0.0.5+svnr${SRCREV}"
PR = "r3"
DEFAULT_PREFERENCE = "-1"
diff --git a/packages/tinymail/tmut_1.1.0.bb b/packages/tinymail/tmut_1.1.0.bb
new file mode 100644
index 0000000000..d3f84f057a
--- /dev/null
+++ b/packages/tinymail/tmut_1.1.0.bb
@@ -0,0 +1,9 @@
+DESCRIPTION = "Tmut is a really small E-Mail client based on Tinymail"
+SECTION = "x11/utils"
+LICENSE = "LGPL"
+DEPENDS = "gtk+ glib-2.0 gnome-vfs gconf-dbus libtinymail"
+PR = "r0"
+
+SRC_URI = "http://tinymail.org/files/tmut/releases/v1.1/v${PV}/${PN}-${PV}.tar.bz2"
+
+inherit pkgconfig autotools
diff --git a/packages/tinymail/tmut_svn.bb b/packages/tinymail/tmut_svn.bb
index 1c59890720..abe7417898 100644
--- a/packages/tinymail/tmut_svn.bb
+++ b/packages/tinymail/tmut_svn.bb
@@ -3,15 +3,12 @@ SECTION = "x11/utils"
LICENSE = "LGPL"
DEPENDS = "gtk+ glib-2.0 gnome-vfs gconf-dbus libtinymail"
PV = "0.0.0+svnr${SRCREV}"
-PR = "r0"
-
-SRCREV ?= "15"
+PR = "r2"
DEFAULT_PREFERENCE = "-1"
-SRC_URI = "svn://svn.tinymail.org/svn/tmut/;module=trunk;proto=http \
- file://tmut-build-oe.patch;patch=1;pnum=0"
+SRC_URI = "svn://svn.tinymail.org/svn/tmut/;module=trunk;proto=http"
inherit pkgconfig autotools
S = "${WORKDIR}/trunk"
diff --git a/packages/uboot/files/glamo-ram-init.patch b/packages/uboot/files/glamo-ram-init.patch
new file mode 100644
index 0000000000..4c12074347
--- /dev/null
+++ b/packages/uboot/files/glamo-ram-init.patch
@@ -0,0 +1,21 @@
+diff --git a/board/neo1973/common/lowlevel_init.S b/board/neo1973/common/lowlevel_init.S
+index 582aa0e..92a9c7b 100644
+--- a/board/neo1973/common/lowlevel_init.S
++++ b/board/neo1973/common/lowlevel_init.S
+@@ -67,11 +67,11 @@
+ #define B0_PMC 0x0 /* normal */
+
+ /* BANK1CON */
+-#define B1_Tacs 0x0 /* 0clk */
+-#define B1_Tcos 0x1 /* 1clk */
+-#define B1_Tacc 0x4 /* 4clk */
+-#define B1_Tcoh 0x1 /* 1clk */
+-#define B1_Tah 0x0 /* 0clk */
++#define B1_Tacs 0x3 /* 4clk */
++#define B1_Tcos 0x3 /* 4clk */
++#define B1_Tacc 0x7 /* 14clk */
++#define B1_Tcoh 0x3 /* 4clk */
++#define B1_Tah 0x3 /* 4clk */
+ #define B1_Tacp 0x0
+ #define B1_PMC 0x0
+
diff --git a/packages/uboot/u-boot-1.1.6/u-boot-1.1.6-83xx-optimizations.patch b/packages/uboot/u-boot-1.1.6/u-boot-1.1.6-83xx-optimizations.patch
new file mode 100644
index 0000000000..fe85228771
--- /dev/null
+++ b/packages/uboot/u-boot-1.1.6/u-boot-1.1.6-83xx-optimizations.patch
@@ -0,0 +1,89 @@
+diff --exclude CVS -uNr u-boot-1.1.6/cpu/mpc83xx/cpu_init.c u-boot-1.1.6.modified/cpu/mpc83xx/cpu_init.c
+--- u-boot-1.1.6/cpu/mpc83xx/cpu_init.c 2007-04-10 17:43:16.000000000 -0400
++++ u-boot-1.1.6.modified/cpu/mpc83xx/cpu_init.c 2007-04-10 17:31:51.000000000 -0400
+@@ -66,10 +66,30 @@
+ memset ((void *) gd, 0, sizeof (gd_t));
+
+ /* system performance tweaking */
++ /* System Priority Configuration Register (SPCR) */
++#ifdef CFG_SPCR_PCIHPE
++ /* PCI highest priority enable */
++ im->sysconf.spcr = (im->sysconf.spcr & ~SPCR_PCIHPE) | (CFG_SPCR_PCIHPE << SPCR_PCIHPE_SHIFT);
++#endif
+
+-#ifdef CFG_ACR_PIPE_DEP
+- /* Arbiter pipeline depth */
+- im->arbiter.acr = (im->arbiter.acr & ~ACR_PIPE_DEP) | (3 << ACR_PIPE_DEP_SHIFT);
++#ifdef CFG_SPCR_PCIPR
++ /* PCI bridge CSB request priority */
++ im->sysconf.spcr = (im->sysconf.spcr & ~SPCR_PCIPR) | (CFG_SPCR_PCIPR << SPCR_PCIPR_SHIFT);
++#endif
++
++#ifdef CFG_SPCR_OPT
++ /* Optimize transactions between CSB and other devices */
++ im->sysconf.spcr = (im->sysconf.spcr & ~SPCR_OPT) | (CFG_SPCR_OPT << SPCR_OPT_SHIFT);
++#endif
++
++#ifdef CFG_SPCR_TBEN
++ /* e300 time base unit enable */
++ im->sysconf.spcr = (im->sysconf.spcr & ~SPCR_TBEN) | (CFG_SPCR_TBEN << SPCR_TBEN_SHIFT);
++#endif
++
++#ifdef CFG_SPCR_COREPR
++ /* e300 core CSB request priority */
++ im->sysconf.spcr = (im->sysconf.spcr & ~SPCR_COREPR) | (CFG_SPCR_COREPR << SPCR_COREPR_SHIFT);
+ #endif
+
+ #ifdef CFG_SPCR_TSEC1EP
+@@ -82,6 +102,7 @@
+ im->sysconf.spcr = (im->sysconf.spcr & ~SPCR_TSEC2EP) | (3 << SPCR_TSEC2EP_SHIFT);
+ #endif
+
++ /* System Clock Control Register (SCCR) */
+ #ifdef CFG_SCCR_TSEC1CM
+ /* TSEC1 clock mode */
+ im->clk.sccr = (im->clk.sccr & ~SCCR_TSEC1CM) | (1 << SCCR_TSEC1CM_SHIFT);
+@@ -91,6 +112,12 @@
+ im->clk.sccr = (im->clk.sccr & ~SCCR_TSEC2CM) | (1 << SCCR_TSEC2CM_SHIFT);
+ #endif
+
++ /* Arbiter Control Register (ACR) */
++#ifdef CFG_ACR_PIPE_DEP
++ /* Arbiter pipeline depth */
++ im->arbiter.acr = (im->arbiter.acr & ~ACR_PIPE_DEP) | (3 << ACR_PIPE_DEP_SHIFT);
++#endif
++
+ #ifdef CFG_ACR_RPTCNT
+ /* Arbiter repeat count */
+ im->arbiter.acr = ((im->arbiter.acr & ~(ACR_RPTCNT)) | (3 << ACR_RPTCNT_SHIFT));
+diff --exclude CVS -uNr u-boot-1.1.6/include/configs/MPC8323ERDB.h u-boot-1.1.6.modified/include/configs/MPC8323ERDB.h
+--- u-boot-1.1.6/include/configs/MPC8323ERDB.h 2007-04-10 17:43:16.000000000 -0400
++++ u-boot-1.1.6.modified/include/configs/MPC8323ERDB.h 2007-04-10 17:32:03.000000000 -0400
+@@ -63,6 +63,16 @@
+ HRCWH_BIG_ENDIAN |\
+ HRCWH_LALE_NORMAL)
+
++/* System performance */
++#define CFG_ACR_PIPE_DEP 3 /* Arbiter pipeline depth (0-3) */
++#define CFG_ACR_RPTCNT 3 /* Arbiter repeat count (0-7) */
++#define CFG_SPCR_PCIHPE 0 /* (0-1) PCI highest priority enable */
++#define CFG_SPCR_PCIPR 0 /* (0-3) PCI bridge CSB request priority */
++#define CFG_SPCR_OPT 1 /* (0-1) Optimize transactions between CSB and the SEC and QUICC Engine block */
++#define CFG_SPCR_TBEN 1 /* (0-1) e300 time base unit enable */
++#define CFG_SPCR_COREPR 0 /* (0-3) e300 core CSB request priority */
++
++
+ /*
+ * System IO Config
+ */
+diff --exclude CVS -uNr u-boot-1.1.6/include/mpc83xx.h u-boot-1.1.6.modified/include/mpc83xx.h
+--- u-boot-1.1.6/include/mpc83xx.h 2007-04-10 17:43:16.000000000 -0400
++++ u-boot-1.1.6.modified/include/mpc83xx.h 2007-04-10 17:32:15.000000000 -0400
+@@ -91,6 +91,7 @@
+ #define SPCR_PCIPR 0x03000000 /* PCI bridge system bus request priority */
+ #define SPCR_PCIPR_SHIFT (31-7)
+ #define SPCR_OPT 0x00800000 /* Optimize */
++#define SPCR_OPT_SHIFT (31-8)
+ #define SPCR_TBEN 0x00400000 /* E300 PowerPC core time base unit enable */
+ #define SPCR_TBEN_SHIFT (31-9)
+ #define SPCR_COREPR 0x00300000 /* E300 PowerPC Core system bus request priority */
diff --git a/packages/uboot/u-boot-1.1.6/u-boot-1.1.6-fsl-1-Add-support-for-the-MPC832XEMDS-board.patch b/packages/uboot/u-boot-1.1.6/u-boot-1.1.6-fsl-1-Add-support-for-the-MPC832XEMDS-board.patch
new file mode 100644
index 0000000000..5018cd3434
--- /dev/null
+++ b/packages/uboot/u-boot-1.1.6/u-boot-1.1.6-fsl-1-Add-support-for-the-MPC832XEMDS-board.patch
@@ -0,0 +1,1809 @@
+fe298a1bbd7b9526ca1139da8977e1a076c4e176
+diff --git a/Makefile b/Makefile
+index d2534ab..d172411 100644
+--- a/Makefile
++++ b/Makefile
+@@ -1621,6 +1621,30 @@ MPC8360EMDS_SLAVE_config: unconfig
+ MPC8349ITX_config: unconfig
+ @$(MKCONFIG) $(@:_config=) ppc mpc83xx mpc8349itx
+
++MPC832XEMDS_config \
++MPC832XEMDS_HOST_33_config \
++MPC832XEMDS_HOST_66_config \
++MPC832XEMDS_SLAVE_config: unconfig
++ @echo "" >include/config.h ; \
++ if [ "$(findstring _HOST_,$@)" ] ; then \
++ echo -n "... PCI HOST " ; \
++ echo "#define CONFIG_PCI" >>include/config.h ; \
++ fi ; \
++ if [ "$(findstring _SLAVE_,$@)" ] ; then \
++ echo "...PCI SLAVE 66M" ; \
++ echo "#define CONFIG_PCI" >>include/config.h ; \
++ echo "#define CONFIG_PCISLAVE" >>include/config.h ; \
++ fi ; \
++ if [ "$(findstring _33_,$@)" ] ; then \
++ echo -n "...33M ..." ; \
++ echo "#define PCI_33M" >>include/config.h ; \
++ fi ; \
++ if [ "$(findstring _66_,$@)" ] ; then \
++ echo -n "...66M..." ; \
++ echo "#define PCI_66M" >>include/config.h ; \
++ fi ;
++ @$(MKCONFIG) -a MPC832XEMDS ppc mpc83xx mpc832xemds
++
+ #########################################################################
+ ## MPC85xx Systems
+ #########################################################################
+diff --git a/board/mpc832xemds/Makefile b/board/mpc832xemds/Makefile
+new file mode 100644
+index 0000000..5ec7a87
+--- /dev/null
++++ b/board/mpc832xemds/Makefile
+@@ -0,0 +1,50 @@
++#
++# (C) Copyright 2006
++# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
++#
++# See file CREDITS for list of people who contributed to this
++# project.
++#
++# 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
++#
++
++include $(TOPDIR)/config.mk
++
++LIB = $(obj)lib$(BOARD).a
++
++COBJS := $(BOARD).o pci.o
++
++SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
++OBJS := $(addprefix $(obj),$(COBJS))
++SOBJS := $(addprefix $(obj),$(SOBJS))
++
++$(LIB): $(obj).depend $(OBJS)
++ $(AR) $(ARFLAGS) $@ $(OBJS)
++
++clean:
++ rm -f $(SOBJS) $(OBJS)
++
++distclean: clean
++ rm -f $(LIB) core *.bak .depend
++
++#########################################################################
++
++# defines $(obj).depend target
++include $(SRCTREE)/rules.mk
++
++sinclude $(obj).depend
++
++#########################################################################
+diff --git a/board/mpc832xemds/config.mk b/board/mpc832xemds/config.mk
+new file mode 100644
+index 0000000..6c3eca7
+--- /dev/null
++++ b/board/mpc832xemds/config.mk
+@@ -0,0 +1,28 @@
++#
++# (C) Copyright 2006
++# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
++#
++# See file CREDITS for list of people who contributed to this
++# project.
++#
++# 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
++#
++
++#
++# MPC832XEMDS
++#
++
++TEXT_BASE = 0xFE000000
+diff --git a/board/mpc832xemds/mpc832xemds.c b/board/mpc832xemds/mpc832xemds.c
+new file mode 100644
+index 0000000..772da67
+--- /dev/null
++++ b/board/mpc832xemds/mpc832xemds.c
+@@ -0,0 +1,176 @@
++/*
++ * Copyright (C) 2006 Freescale Semiconductor, Inc.
++ *
++ * Dave Liu <daveliu@freescale.com>
++ *
++ * See file CREDITS for list of people who contributed to this
++ * project.
++ *
++ * 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.
++ */
++
++#include <common.h>
++#include <ioports.h>
++#include <mpc83xx.h>
++#include <i2c.h>
++#include <spd.h>
++#include <miiphy.h>
++#include <command.h>
++#if defined(CONFIG_PCI)
++#include <pci.h>
++#endif
++#if defined(CONFIG_SPD_EEPROM)
++#include <spd_sdram.h>
++#else
++#include <asm/mmu.h>
++#endif
++#if defined(CONFIG_OF_FLAT_TREE)
++#include <ft_build.h>
++#endif
++
++const qe_iop_conf_t qe_iop_conf_tab[] = {
++ /* ETH3 */
++ {1, 0, 1, 0, 1}, /* TxD0 */
++ {1, 1, 1, 0, 1}, /* TxD1 */
++ {1, 2, 1, 0, 1}, /* TxD2 */
++ {1, 3, 1, 0, 1}, /* TxD3 */
++ {1, 9, 1, 0, 1}, /* TxER */
++ {1, 12, 1, 0, 1}, /* TxEN */
++ {3, 24, 2, 0, 1}, /* TxCLK->CLK10 */
++
++ {1, 4, 2, 0, 1}, /* RxD0 */
++ {1, 5, 2, 0, 1}, /* RxD1 */
++ {1, 6, 2, 0, 1}, /* RxD2 */
++ {1, 7, 2, 0, 1}, /* RxD3 */
++ {1, 8, 2, 0, 1}, /* RxER */
++ {1, 10, 2, 0, 1}, /* RxDV */
++ {0, 13, 2, 0, 1}, /* RxCLK->CLK9 */
++ {1, 11, 2, 0, 1}, /* COL */
++ {1, 13, 2, 0, 1}, /* CRS */
++
++ /* ETH4 */
++ {1, 18, 1, 0, 1}, /* TxD0 */
++ {1, 19, 1, 0, 1}, /* TxD1 */
++ {1, 20, 1, 0, 1}, /* TxD2 */
++ {1, 21, 1, 0, 1}, /* TxD3 */
++ {1, 27, 1, 0, 1}, /* TxER */
++ {1, 30, 1, 0, 1}, /* TxEN */
++ {3, 6, 2, 0, 1}, /* TxCLK->CLK8 */
++
++ {1, 22, 2, 0, 1}, /* RxD0 */
++ {1, 23, 2, 0, 1}, /* RxD1 */
++ {1, 24, 2, 0, 1}, /* RxD2 */
++ {1, 25, 2, 0, 1}, /* RxD3 */
++ {1, 26, 1, 0, 1}, /* RxER */
++ {1, 28, 2, 0, 1}, /* Rx_DV */
++ {3, 31, 2, 0, 1}, /* RxCLK->CLK7 */
++ {1, 29, 2, 0, 1}, /* COL */
++ {1, 31, 2, 0, 1}, /* CRS */
++
++ {3, 4, 3, 0, 2}, /* MDIO */
++ {3, 5, 1, 0, 2}, /* MDC */
++
++ {0, 0, 0, 0, QE_IOP_TAB_END}, /* END of table */
++};
++
++int board_early_init_f(void)
++{
++ volatile u8 *bcsr = (volatile u8 *)CFG_BCSR;
++
++ /* Enable flash write */
++ bcsr[9] &= ~0x08;
++
++ return 0;
++}
++
++int fixed_sdram(void);
++
++long int initdram(int board_type)
++{
++ volatile immap_t *im = (immap_t *) CFG_IMMR;
++ u32 msize = 0;
++
++ if ((im->sysconf.immrbar & IMMRBAR_BASE_ADDR) != (u32) im)
++ return -1;
++
++ /* DDR SDRAM - Main SODIMM */
++ im->sysconf.ddrlaw[0].bar = CFG_DDR_BASE & LAWBAR_BAR;
++
++ msize = fixed_sdram();
++
++ puts("\n DDR RAM: ");
++
++ /* return total bus SDRAM size(bytes) -- DDR */
++ return (msize * 1024 * 1024);
++}
++
++/*************************************************************************
++ * fixed sdram init -- doesn't use serial presence detect.
++ ************************************************************************/
++int fixed_sdram(void)
++{
++ volatile immap_t *im = (immap_t *) CFG_IMMR;
++ u32 msize = 0;
++ u32 ddr_size;
++ u32 ddr_size_log2;
++
++ msize = CFG_DDR_SIZE;
++ for (ddr_size = msize << 20, ddr_size_log2 = 0;
++ (ddr_size > 1); ddr_size = ddr_size >> 1, ddr_size_log2++) {
++ if (ddr_size & 1) {
++ return -1;
++ }
++ }
++ im->sysconf.ddrlaw[0].ar =
++ LAWAR_EN | ((ddr_size_log2 - 1) & LAWAR_SIZE);
++#if (CFG_DDR_SIZE != 128)
++#warning Currenly any ddr size other than 128 is not supported
++#endif
++ im->ddr.sdram_clk_cntl = CFG_DDR_CLK_CNTL;
++ im->ddr.csbnds[0].csbnds = CFG_DDR_CS0_BNDS;
++ im->ddr.cs_config[0] = CFG_DDR_CS0_CONFIG;
++ im->ddr.timing_cfg_0 = CFG_DDR_TIMING_0;
++ im->ddr.timing_cfg_1 = CFG_DDR_TIMING_1;
++ im->ddr.timing_cfg_2 = CFG_DDR_TIMING_2;
++ im->ddr.timing_cfg_3 = CFG_DDR_TIMING_3;
++ im->ddr.sdram_cfg = CFG_DDR_SDRAM_CFG;
++ im->ddr.sdram_cfg2 = CFG_DDR_SDRAM_CFG2;
++ im->ddr.sdram_mode = CFG_DDR_MODE;
++ im->ddr.sdram_mode2 = CFG_DDR_MODE2;
++ im->ddr.sdram_interval = CFG_DDR_INTERVAL;
++ __asm__ __volatile__ ("sync");
++ udelay(200);
++
++ im->ddr.sdram_cfg |= SDRAM_CFG_MEM_EN;
++ __asm__ __volatile__ ("sync");
++ return msize;
++}
++
++int checkboard(void)
++{
++ puts("Board: Freescale MPC832XEMDS\n");
++ return 0;
++}
++
++#if defined(CONFIG_OF_FLAT_TREE) && defined(CONFIG_OF_BOARD_SETUP)
++void
++ft_board_setup(void *blob, bd_t *bd)
++{
++ u32 *p;
++ int len;
++
++#ifdef CONFIG_PCI
++ ft_pci_setup(blob, bd);
++#endif
++ ft_cpu_setup(blob, bd);
++
++ p = ft_get_prop(blob, "/memory/reg", &len);
++ if (p != NULL) {
++ *p++ = cpu_to_be32(bd->bi_memstart);
++ *p = cpu_to_be32(bd->bi_memsize);
++ }
++}
++#endif
+diff --git a/board/mpc832xemds/pci.c b/board/mpc832xemds/pci.c
+new file mode 100644
+index 0000000..09f3ac3
+--- /dev/null
++++ b/board/mpc832xemds/pci.c
+@@ -0,0 +1,313 @@
++/*
++ * Copyright (C) 2006 Freescale Semiconductor, Inc.
++ *
++ * See file CREDITS for list of people who contributed to this
++ * project.
++ *
++ * 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.
++ */
++
++/*
++ * PCI Configuration space access support for MPC83xx PCI Bridge
++ */
++#include <asm/mmu.h>
++#include <asm/io.h>
++#include <common.h>
++#include <pci.h>
++#include <i2c.h>
++
++#include <asm/fsl_i2c.h>
++
++DECLARE_GLOBAL_DATA_PTR;
++
++#if defined(CONFIG_PCI)
++#define PCI_FUNCTION_CONFIG 0x44
++#define PCI_FUNCTION_CFG_LOCK 0x20
++
++/*
++ * Initialize PCI Devices, report devices found
++ */
++#ifndef CONFIG_PCI_PNP
++static struct pci_config_table pci_mpc83xxemds_config_table[] = {
++ {
++ PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID,
++ pci_cfgfunc_config_device,
++ {PCI_ENET0_IOADDR,
++ PCI_ENET0_MEMADDR,
++ PCI_COMMON_MEMORY | PCI_COMMAND_MASTER}
++ },
++ {}
++}
++#endif
++static struct pci_controller hose[] = {
++ {
++#ifndef CONFIG_PCI_PNP
++ config_table:pci_mpc83xxemds_config_table,
++#endif
++ },
++};
++
++/**********************************************************************
++ * pci_init_board()
++ *********************************************************************/
++void pci_init_board(void)
++#ifdef CONFIG_PCISLAVE
++{
++ u16 reg16;
++ volatile immap_t *immr;
++ volatile law83xx_t *pci_law;
++ volatile pot83xx_t *pci_pot;
++ volatile pcictrl83xx_t *pci_ctrl;
++ volatile pciconf83xx_t *pci_conf;
++
++ immr = (immap_t *) CFG_IMMR;
++ pci_law = immr->sysconf.pcilaw;
++ pci_pot = immr->ios.pot;
++ pci_ctrl = immr->pci_ctrl;
++ pci_conf = immr->pci_conf;
++ /*
++ * Configure PCI Inbound Translation Windows
++ */
++ pci_ctrl[0].pitar0 = 0x0;
++ pci_ctrl[0].pibar0 = 0x0;
++ pci_ctrl[0].piwar0 = PIWAR_EN | PIWAR_RTT_SNOOP |
++ PIWAR_WTT_SNOOP | PIWAR_IWS_4K;
++
++ pci_ctrl[0].pitar1 = 0x0;
++ pci_ctrl[0].pibar1 = 0x0;
++ pci_ctrl[0].piebar1 = 0x0;
++ pci_ctrl[0].piwar1 &= ~PIWAR_EN;
++
++ pci_ctrl[0].pitar2 = 0x0;
++ pci_ctrl[0].pibar2 = 0x0;
++ pci_ctrl[0].piebar2 = 0x0;
++ pci_ctrl[0].piwar2 &= ~PIWAR_EN;
++
++ hose[0].first_busno = 0;
++ hose[0].last_busno = 0xff;
++ pci_setup_indirect(&hose[0],
++ (CFG_IMMR + 0x8300), (CFG_IMMR + 0x8304));
++ reg16 = 0xff;
++
++ pci_hose_read_config_word(&hose[0], PCI_BDF(0, 0, 0),
++ PCI_COMMAND, &reg16);
++ reg16 |= PCI_COMMAND_SERR | PCI_COMMAND_MEMORY;
++ pci_hose_write_config_word(&hose[0], PCI_BDF(0, 0, 0),
++ PCI_COMMAND, reg16);
++
++ /*
++ * Clear non-reserved bits in status register.
++ */
++ pci_hose_write_config_word(&hose[0], PCI_BDF(0, 0, 0),
++ PCI_STATUS, 0xffff);
++ pci_hose_write_config_byte(&hose[0], PCI_BDF(0, 0, 0),
++ PCI_LATENCY_TIMER, 0x80);
++
++ /*
++ * Unlock configuration lock in PCI function configuration register.
++ */
++ pci_hose_read_config_word(&hose[0], PCI_BDF(0, 0, 0),
++ PCI_FUNCTION_CONFIG, &reg16);
++ reg16 &= ~(PCI_FUNCTION_CFG_LOCK);
++ pci_hose_write_config_word(&hose[0], PCI_BDF(0, 0, 0),
++ PCI_FUNCTION_CONFIG, reg16);
++
++ printf("Enabled PCI 32bit Agent Mode\n");
++}
++#else
++{
++ volatile immap_t *immr;
++ volatile clk83xx_t *clk;
++ volatile law83xx_t *pci_law;
++ volatile pot83xx_t *pci_pot;
++ volatile pcictrl83xx_t *pci_ctrl;
++ volatile pciconf83xx_t *pci_conf;
++
++ u8 val8, orig_i2c_bus;
++ u16 reg16;
++ u32 val32;
++ u32 dev;
++
++ immr = (immap_t *) CFG_IMMR;
++ clk = (clk83xx_t *) & immr->clk;
++ pci_law = immr->sysconf.pcilaw;
++ pci_pot = immr->ios.pot;
++ pci_ctrl = immr->pci_ctrl;
++ pci_conf = immr->pci_conf;
++ /*
++ * Configure PCI controller and PCI_CLK_OUTPUT both in 66M mode
++ */
++ val32 = clk->occr;
++ udelay(2000);
++#if defined(PCI_66M)
++ clk->occr = OCCR_PCICOE0 | OCCR_PCICOE1 | OCCR_PCICOE2;
++ printf("PCI clock is 66MHz\n");
++#elif defined(PCI_33M)
++ clk->occr = OCCR_PCICOE0 | OCCR_PCICOE1 | OCCR_PCICOE2 |
++ OCCR_PCICD0 | OCCR_PCICD1 | OCCR_PCICD2 | OCCR_PCICR;
++ printf("PCI clock is 33MHz\n");
++#else
++ clk->occr = OCCR_PCICOE0 | OCCR_PCICOE1 | OCCR_PCICOE2;
++ printf("PCI clock is 66MHz\n");
++#endif
++ udelay(2000);
++
++ /*
++ * Configure PCI Local Access Windows
++ */
++ pci_law[0].bar = CFG_PCI_MEM_PHYS & LAWBAR_BAR;
++ pci_law[0].ar = LAWAR_EN | LAWAR_SIZE_512M;
++
++ pci_law[1].bar = CFG_PCI_IO_PHYS & LAWBAR_BAR;
++ pci_law[1].ar = LAWAR_EN | LAWAR_SIZE_1M;
++
++ /*
++ * Configure PCI Outbound Translation Windows
++ */
++
++ /* PCI mem space - prefetch */
++ pci_pot[0].potar = (CFG_PCI_MEM_BASE >> 12) & POTAR_TA_MASK;
++ pci_pot[0].pobar = (CFG_PCI_MEM_PHYS >> 12) & POBAR_BA_MASK;
++ pci_pot[0].pocmr =
++ POCMR_EN | POCMR_SE | (POCMR_CM_256M & POCMR_CM_MASK);
++
++ /* PCI mmio - non-prefetch mem space */
++ pci_pot[1].potar = (CFG_PCI_MMIO_BASE >> 12) & POTAR_TA_MASK;
++ pci_pot[1].pobar = (CFG_PCI_MMIO_PHYS >> 12) & POBAR_BA_MASK;
++ pci_pot[1].pocmr = POCMR_EN | (POCMR_CM_256M & POCMR_CM_MASK);
++
++ /* PCI IO space */
++ pci_pot[2].potar = (CFG_PCI_IO_BASE >> 12) & POTAR_TA_MASK;
++ pci_pot[2].pobar = (CFG_PCI_IO_PHYS >> 12) & POBAR_BA_MASK;
++ pci_pot[2].pocmr = POCMR_EN | POCMR_IO | (POCMR_CM_1M & POCMR_CM_MASK);
++
++ /*
++ * Configure PCI Inbound Translation Windows
++ */
++ pci_ctrl[0].pitar1 = (CFG_PCI_SLV_MEM_LOCAL >> 12) & PITAR_TA_MASK;
++ pci_ctrl[0].pibar1 = (CFG_PCI_SLV_MEM_BUS >> 12) & PIBAR_MASK;
++ pci_ctrl[0].piebar1 = 0x0;
++ pci_ctrl[0].piwar1 =
++ PIWAR_EN | PIWAR_PF | PIWAR_RTT_SNOOP | PIWAR_WTT_SNOOP |
++ PIWAR_IWS_2G;
++
++ /*
++ * Assign PIB PMC slot to desired PCI bus
++ */
++
++ /* Switch temporarily to I2C bus #2 */
++ orig_i2c_bus = i2c_get_bus_num();
++ i2c_set_bus_num(1);
++
++ val8 = 0;
++ i2c_write(0x23, 0x6, 1, &val8, 1);
++ i2c_write(0x23, 0x7, 1, &val8, 1);
++ val8 = 0xff;
++ i2c_write(0x23, 0x2, 1, &val8, 1);
++ i2c_write(0x23, 0x3, 1, &val8, 1);
++
++ val8 = 0;
++ i2c_write(0x26, 0x6, 1, &val8, 1);
++ val8 = 0x34;
++ i2c_write(0x26, 0x7, 1, &val8, 1);
++
++ val8 = 0xf9; /* PMC2, PMC3 slot to PCI bus */
++ i2c_write(0x26, 0x2, 1, &val8, 1);
++ val8 = 0xff;
++ i2c_write(0x26, 0x3, 1, &val8, 1);
++
++ val8 = 0;
++ i2c_write(0x27, 0x6, 1, &val8, 1);
++ i2c_write(0x27, 0x7, 1, &val8, 1);
++ val8 = 0xff;
++ i2c_write(0x27, 0x2, 1, &val8, 1);
++ val8 = 0xef;
++ i2c_write(0x27, 0x3, 1, &val8, 1);
++ asm("eieio");
++
++ /* Reset to original I2C bus */
++ i2c_set_bus_num(orig_i2c_bus);
++
++ /*
++ * Release PCI RST Output signal
++ */
++ udelay(2000);
++ pci_ctrl[0].gcr = 1;
++ udelay(2000);
++
++ hose[0].first_busno = 0;
++ hose[0].last_busno = 0xff;
++
++ /* PCI memory prefetch space */
++ pci_set_region(hose[0].regions + 0,
++ CFG_PCI_MEM_BASE,
++ CFG_PCI_MEM_PHYS,
++ CFG_PCI_MEM_SIZE, PCI_REGION_MEM | PCI_REGION_PREFETCH);
++
++ /* PCI memory space */
++ pci_set_region(hose[0].regions + 1,
++ CFG_PCI_MMIO_BASE,
++ CFG_PCI_MMIO_PHYS, CFG_PCI_MMIO_SIZE, PCI_REGION_MEM);
++
++ /* PCI IO space */
++ pci_set_region(hose[0].regions + 2,
++ CFG_PCI_IO_BASE,
++ CFG_PCI_IO_PHYS, CFG_PCI_IO_SIZE, PCI_REGION_IO);
++
++ /* System memory space */
++ pci_set_region(hose[0].regions + 3,
++ CFG_PCI_SLV_MEM_LOCAL,
++ CFG_PCI_SLV_MEM_BUS,
++ CFG_PCI_SLV_MEM_SIZE,
++ PCI_REGION_MEM | PCI_REGION_MEMORY);
++
++ hose[0].region_count = 4;
++
++ pci_setup_indirect(&hose[0],
++ (CFG_IMMR + 0x8300), (CFG_IMMR + 0x8304));
++
++ pci_register_hose(hose);
++
++ /*
++ * Write command register
++ */
++ reg16 = 0xff;
++ dev = PCI_BDF(0, 0, 0);
++ pci_hose_read_config_word(&hose[0], dev, PCI_COMMAND, &reg16);
++ reg16 |= PCI_COMMAND_SERR | PCI_COMMAND_MASTER | PCI_COMMAND_MEMORY;
++ pci_hose_write_config_word(&hose[0], dev, PCI_COMMAND, reg16);
++
++ /*
++ * Clear non-reserved bits in status register.
++ */
++ pci_hose_write_config_word(&hose[0], dev, PCI_STATUS, 0xffff);
++ pci_hose_write_config_byte(&hose[0], dev, PCI_LATENCY_TIMER, 0x80);
++ pci_hose_write_config_byte(&hose[0], dev, PCI_CACHE_LINE_SIZE, 0x08);
++
++ printf("PCI 32bit bus on PMC2 & PMC3\n");
++
++ /*
++ * Hose scan.
++ */
++ hose->last_busno = pci_hose_scan(hose);
++}
++#endif /* CONFIG_PCISLAVE */
++
++#ifdef CONFIG_OF_FLAT_TREE
++void
++ft_pci_setup(void *blob, bd_t *bd)
++{
++ u32 *p;
++ int len;
++
++ p = (u32 *)ft_get_prop(blob, "/" OF_SOC "/pci@8500/bus-range", &len);
++ if (p != NULL) {
++ p[0] = hose[0].first_busno;
++ p[1] = hose[0].last_busno;
++ }
++}
++#endif /* CONFIG_OF_FLAT_TREE */
++#endif /* CONFIG_PCI */
+diff --git a/board/mpc832xemds/u-boot.lds b/board/mpc832xemds/u-boot.lds
+new file mode 100644
+index 0000000..937c87a
+--- /dev/null
++++ b/board/mpc832xemds/u-boot.lds
+@@ -0,0 +1,123 @@
++/*
++ * (C) Copyright 2006
++ * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
++ *
++ * See file CREDITS for list of people who contributed to this
++ * project.
++ *
++ * 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
++ */
++
++OUTPUT_ARCH(powerpc)
++SECTIONS
++{
++ /* Read-only sections, merged into text segment: */
++ . = + SIZEOF_HEADERS;
++ .interp : { *(.interp) }
++ .hash : { *(.hash) }
++ .dynsym : { *(.dynsym) }
++ .dynstr : { *(.dynstr) }
++ .rel.text : { *(.rel.text) }
++ .rela.text : { *(.rela.text) }
++ .rel.data : { *(.rel.data) }
++ .rela.data : { *(.rela.data) }
++ .rel.rodata : { *(.rel.rodata) }
++ .rela.rodata : { *(.rela.rodata) }
++ .rel.got : { *(.rel.got) }
++ .rela.got : { *(.rela.got) }
++ .rel.ctors : { *(.rel.ctors) }
++ .rela.ctors : { *(.rela.ctors) }
++ .rel.dtors : { *(.rel.dtors) }
++ .rela.dtors : { *(.rela.dtors) }
++ .rel.bss : { *(.rel.bss) }
++ .rela.bss : { *(.rela.bss) }
++ .rel.plt : { *(.rel.plt) }
++ .rela.plt : { *(.rela.plt) }
++ .init : { *(.init) }
++ .plt : { *(.plt) }
++ .text :
++ {
++ cpu/mpc83xx/start.o (.text)
++ *(.text)
++ *(.fixup)
++ *(.got1)
++ . = ALIGN(16);
++ *(.rodata)
++ *(.rodata1)
++ *(.rodata.str1.4)
++ *(.eh_frame)
++ }
++ .fini : { *(.fini) } =0
++ .ctors : { *(.ctors) }
++ .dtors : { *(.dtors) }
++
++ /* Read-write section, merged into data segment: */
++ . = (. + 0x0FFF) & 0xFFFFF000;
++ _erotext = .;
++ PROVIDE (erotext = .);
++ .reloc :
++ {
++ *(.got)
++ _GOT2_TABLE_ = .;
++ *(.got2)
++ _FIXUP_TABLE_ = .;
++ *(.fixup)
++ }
++ __got2_entries = (_FIXUP_TABLE_ - _GOT2_TABLE_) >> 2;
++ __fixup_entries = (. - _FIXUP_TABLE_) >> 2;
++
++ .data :
++ {
++ *(.data)
++ *(.data1)
++ *(.sdata)
++ *(.sdata2)
++ *(.dynamic)
++ CONSTRUCTORS
++ }
++ _edata = .;
++ PROVIDE (edata = .);
++
++ . = .;
++ __u_boot_cmd_start = .;
++ .u_boot_cmd : { *(.u_boot_cmd) }
++ __u_boot_cmd_end = .;
++
++
++ . = .;
++ __start___ex_table = .;
++ __ex_table : { *(__ex_table) }
++ __stop___ex_table = .;
++
++ . = ALIGN(4096);
++ __init_begin = .;
++ .text.init : { *(.text.init) }
++ .data.init : { *(.data.init) }
++ . = ALIGN(4096);
++ __init_end = .;
++
++ __bss_start = .;
++ .bss :
++ {
++ *(.sbss) *(.scommon)
++ *(.dynbss)
++ *(.bss)
++ *(COMMON)
++ }
++ _end = . ;
++ PROVIDE (end = .);
++}
++ENTRY(_start)
+diff --git a/cpu/mpc83xx/cpu.c b/cpu/mpc83xx/cpu.c
+index 1b51078..bc61219 100644
+--- a/cpu/mpc83xx/cpu.c
++++ b/cpu/mpc83xx/cpu.c
+@@ -92,6 +92,22 @@ int checkcpu(void)
+ case SPR_8360_REV12:
+ puts("MPC8360, ");
+ break;
++ case SPR_8323E_REV10:
++ case SPR_8323E_REV11:
++ puts("MPC8323E, ");
++ break;
++ case SPR_8323_REV10:
++ case SPR_8323_REV11:
++ puts("MPC8323, ");
++ break;
++ case SPR_8321E_REV10:
++ case SPR_8321E_REV11:
++ puts("MPC8321E, ");
++ break;
++ case SPR_8321_REV10:
++ case SPR_8321_REV11:
++ puts("MPC8321, ");
++ break;
+ default:
+ puts("Rev: Unknown\n");
+ return -1; /* Not sure what this is */
+diff --git a/cpu/mpc83xx/cpu_init.c b/cpu/mpc83xx/cpu_init.c
+index 7574fab..eb256e5 100644
+--- a/cpu/mpc83xx/cpu_init.c
++++ b/cpu/mpc83xx/cpu_init.c
+@@ -119,6 +119,11 @@ void cpu_init_f (volatile immap_t * im)
+ #ifdef CFG_SICRL
+ im->sysconf.sicrl = CFG_SICRL;
+ #endif
++ /* DDR control driver register */
++#ifdef CFG_DDRCDR
++ im->sysconf.ddrcdr = CFG_DDRCDR;
++#endif
++
+ #ifdef CONFIG_QE
+ /* Config QE ioports */
+ config_qe_ioports();
+diff --git a/cpu/mpc83xx/speed.c b/cpu/mpc83xx/speed.c
+index 40ba6b0..9fd1bf1 100644
+--- a/cpu/mpc83xx/speed.c
++++ b/cpu/mpc83xx/speed.c
+@@ -107,15 +107,19 @@ int get_clocks(void)
+ #endif
+ u32 core_clk;
+ u32 i2c1_clk;
++#if !defined(CONFIG_MPC832X)
+ u32 i2c2_clk;
++#endif
+ u32 enc_clk;
+ u32 lbiu_clk;
+ u32 lclk_clk;
+ u32 ddr_clk;
+-#if defined (CONFIG_MPC8360)
++#if defined(CONFIG_MPC8360)
++ u32 ddr_sec_clk;
++#endif
++#if defined(CONFIG_MPC8360) || defined(CONFIG_MPC832X)
+ u32 qepmf;
+ u32 qepdf;
+- u32 ddr_sec_clk;
+ u32 qe_clk;
+ u32 brg_clk;
+ #endif
+@@ -227,10 +231,12 @@ int get_clocks(void)
+ return -9;
+ }
+ #endif
+-#if defined (CONFIG_MPC8360)
++#if defined(CONFIG_MPC8360) || defined(CONFIG_MPC832X)
+ i2c1_clk = csb_clk;
+ #endif
++#if !defined(CONFIG_MPC832X)
+ i2c2_clk = csb_clk; /* i2c-2 clk is equal to csb clk */
++#endif
+
+ switch ((sccr & SCCR_ENCCM) >> SCCR_ENCCM_SHIFT) {
+ case 0:
+@@ -249,12 +255,9 @@ int get_clocks(void)
+ /* unkown SCCR_ENCCM value */
+ return -6;
+ }
+-#if defined(CONFIG_MPC8349) || defined(CONFIG_MPC8360)
++
+ lbiu_clk = csb_clk *
+ (1 + ((im->reset.rcwl & HRCWL_LBIUCM) >> HRCWL_LBIUCM_SHIFT));
+-#else
+-#error Unknown MPC83xx chip
+-#endif
+ lcrr = (im->lbus.lcrr & LCRR_CLKDIV) >> LCRR_CLKDIV_SHIFT;
+ switch (lcrr) {
+ case 2:
+@@ -266,17 +269,14 @@ int get_clocks(void)
+ /* unknown lcrr */
+ return -10;
+ }
+-#if defined(CONFIG_MPC8349) || defined(CONFIG_MPC8360)
++
+ ddr_clk = csb_clk *
+ (1 + ((im->reset.rcwl & HRCWL_DDRCM) >> HRCWL_DDRCM_SHIFT));
+ corepll = (im->reset.rcwl & HRCWL_COREPLL) >> HRCWL_COREPLL_SHIFT;
+-#if defined (CONFIG_MPC8360)
++#if defined(CONFIG_MPC8360)
+ ddr_sec_clk = csb_clk * (1 +
+ ((im->reset.rcwl & HRCWL_LBIUCM) >> HRCWL_LBIUCM_SHIFT));
+ #endif
+-#else
+-#error Unknown MPC83xx chip
+-#endif
+
+ corecnf_tab_index = ((corepll & 0x1F) << 2) | ((corepll & 0x60) >> 5);
+ if (corecnf_tab_index > (sizeof(corecnf_tab) / sizeof(corecnf_t))) {
+@@ -306,7 +306,7 @@ int get_clocks(void)
+ return -12;
+ }
+
+-#if defined (CONFIG_MPC8360)
++#if defined(CONFIG_MPC8360) || defined(CONFIG_MPC832X)
+ qepmf = (im->reset.rcwl & HRCWL_CEPMF) >> HRCWL_CEPMF_SHIFT;
+ qepdf = (im->reset.rcwl & HRCWL_CEPDF) >> HRCWL_CEPDF_SHIFT;
+ qe_clk = (pci_sync_in * qepmf) / (1 + qepdf);
+@@ -322,13 +322,17 @@ int get_clocks(void)
+ #endif
+ gd->core_clk = core_clk;
+ gd->i2c1_clk = i2c1_clk;
++#if !defined(CONFIG_MPC832X)
+ gd->i2c2_clk = i2c2_clk;
++#endif
+ gd->enc_clk = enc_clk;
+ gd->lbiu_clk = lbiu_clk;
+ gd->lclk_clk = lclk_clk;
+ gd->ddr_clk = ddr_clk;
+-#if defined (CONFIG_MPC8360)
++#if defined(CONFIG_MPC8360)
+ gd->ddr_sec_clk = ddr_sec_clk;
++#endif
++#if defined(CONFIG_MPC8360) || defined(CONFIG_MPC832X)
+ gd->qe_clk = qe_clk;
+ gd->brg_clk = brg_clk;
+ #endif
+@@ -352,18 +356,21 @@ int print_clock_conf(void)
+ printf("Clock configuration:\n");
+ printf(" Coherent System Bus: %4d MHz\n", gd->csb_clk / 1000000);
+ printf(" Core: %4d MHz\n", gd->core_clk / 1000000);
+-#if defined (CONFIG_MPC8360)
++#if defined(CONFIG_MPC8360) || defined(CONFIG_MPC832X)
+ printf(" QE: %4d MHz\n", gd->qe_clk / 1000000);
++ printf(" BRG: %4d MHz\n", gd->brg_clk / 1000000);
+ #endif
+ printf(" Local Bus Controller:%4d MHz\n", gd->lbiu_clk / 1000000);
+ printf(" Local Bus: %4d MHz\n", gd->lclk_clk / 1000000);
+ printf(" DDR: %4d MHz\n", gd->ddr_clk / 1000000);
+-#if defined (CONFIG_MPC8360)
++#if defined(CONFIG_MPC8360)
+ printf(" DDR Secondary: %4d MHz\n", gd->ddr_sec_clk / 1000000);
+ #endif
+ printf(" SEC: %4d MHz\n", gd->enc_clk / 1000000);
+ printf(" I2C1: %4d MHz\n", gd->i2c1_clk / 1000000);
++#if !defined(CONFIG_MPC832X)
+ printf(" I2C2: %4d MHz\n", gd->i2c2_clk / 1000000);
++#endif
+ #if defined(CONFIG_MPC8349)
+ printf(" TSEC1: %4d MHz\n", gd->tsec1_clk / 1000000);
+ printf(" TSEC2: %4d MHz\n", gd->tsec2_clk / 1000000);
+diff --git a/drivers/qe/qe.h b/drivers/qe/qe.h
+index f7f8ed0..0bcd0a9 100644
+--- a/drivers/qe/qe.h
++++ b/drivers/qe/qe.h
+@@ -30,7 +30,7 @@
+ #define UCC_MAX_NUM 8
+
+ #define QE_DATAONLY_BASE (uint)(128)
+-#define QE_DATAONLY_SIZE ((uint)(0xc000) - QE_DATAONLY_BASE)
++#define QE_DATAONLY_SIZE (QE_MURAM_SIZE - QE_DATAONLY_BASE)
+
+ /* QE threads SNUM
+ */
+diff --git a/drivers/qe/uec.c b/drivers/qe/uec.c
+index c44a5be..aea455b 100644
+--- a/drivers/qe/uec.c
++++ b/drivers/qe/uec.c
+@@ -432,7 +432,12 @@ static int init_phy(struct eth_device *dev)
+ }
+ memset(mii_info, 0, sizeof(*mii_info));
+
+- mii_info->speed = SPEED_1000;
++ if (uec->uec_info->uf_info.eth_type == GIGA_ETH) {
++ mii_info->speed = SPEED_1000;
++ } else {
++ mii_info->speed = SPEED_100;
++ }
++
+ mii_info->duplex = DUPLEX_FULL;
+ mii_info->pause = 0;
+ mii_info->link = 1;
+@@ -508,7 +513,8 @@ static void adjust_link(struct eth_device *dev)
+ }
+
+ if (mii_info->speed != uec->oldspeed) {
+- switch (mii_info->speed) {
++ if (uec->uec_info->uf_info.eth_type == GIGA_ETH) {
++ switch (mii_info->speed) {
+ case 1000:
+ break;
+ case 100:
+@@ -531,6 +537,7 @@ static void adjust_link(struct eth_device *dev)
+ printf("%s: Ack,Speed(%d)is illegal\n",
+ dev->name, mii_info->speed);
+ break;
++ }
+ }
+
+ printf("%s: Speed %dBT\n", dev->name, mii_info->speed);
+diff --git a/include/asm-ppc/e300.h b/include/asm-ppc/e300.h
+index 79dcae4..ff9512f 100644
+--- a/include/asm-ppc/e300.h
++++ b/include/asm-ppc/e300.h
+@@ -15,6 +15,11 @@
+ #define PVR_8360_REV10 (PVR_83xx | 0x0020)
+ #define PVR_8360_REV11 (PVR_83xx | 0x0020)
+
++#if defined(CONFIG_MPC832X)
++#undef PVR_83xx
++#define PVR_83xx 0x80840000
++#endif
++
+ /*
+ * Hardware Implementation-Dependent Register 0 (HID0)
+ */
+diff --git a/include/asm-ppc/immap_83xx.h b/include/asm-ppc/immap_83xx.h
+index 67b035c..77a079f 100644
+--- a/include/asm-ppc/immap_83xx.h
++++ b/include/asm-ppc/immap_83xx.h
+@@ -60,7 +60,10 @@ typedef struct sysconf83xx {
+ u32 spcr; /* System Priority Configuration Register */
+ u32 sicrl; /* System I/O Configuration Register Low */
+ u32 sicrh; /* System I/O Configuration Register High */
+- u8 res6[0xE4];
++ u8 res6[0x0C];
++ u32 ddrcdr; /* DDR Control Driver Register */
++ u32 ddrdsr; /* DDR Debug Status Register */
++ u8 res7[0xD0];
+ } sysconf83xx_t;
+
+ /*
+@@ -274,25 +277,35 @@ typedef struct ddr83xx {
+ ddr_cs_bnds_t csbnds[4];/* Chip Select x Memory Bounds */
+ u8 res0[0x60];
+ u32 cs_config[4]; /* Chip Select x Configuration */
+- u8 res1[0x78];
++ u8 res1[0x70];
++ u32 timing_cfg_3; /* SDRAM Timing Configuration 3 */
++ u32 timing_cfg_0; /* SDRAM Timing Configuration 0 */
+ u32 timing_cfg_1; /* SDRAM Timing Configuration 1 */
+ u32 timing_cfg_2; /* SDRAM Timing Configuration 2 */
+ u32 sdram_cfg; /* SDRAM Control Configuration */
+- u8 res2[4];
++ u32 sdram_cfg2; /* SDRAM Control Configuration 2 */
+ u32 sdram_mode; /* SDRAM Mode Configuration */
+- u8 res3[8];
++ u32 sdram_mode2; /* SDRAM Mode Configuration 2 */
++ u32 sdram_md_cntl; /* SDRAM Mode Control */
+ u32 sdram_interval; /* SDRAM Interval Configuration */
+- u8 res9[8];
+- u32 sdram_clk_cntl;
+- u8 res4[0xCCC];
++ u32 ddr_data_init; /* SDRAM Data Initialization */
++ u8 res2[4];
++ u32 sdram_clk_cntl; /* SDRAM Clock Control */
++ u8 res3[0x14];
++ u32 ddr_init_addr; /* DDR training initialization address */
++ u32 ddr_init_ext_addr; /* DDR training initialization extended address */
++ u8 res4[0xAA8];
++ u32 ddr_ip_rev1; /* DDR IP block revision 1 */
++ u32 ddr_ip_rev2; /* DDR IP block revision 2 */
++ u8 res5[0x200];
+ u32 data_err_inject_hi; /* Memory Data Path Error Injection Mask High */
+ u32 data_err_inject_lo; /* Memory Data Path Error Injection Mask Low */
+ u32 ecc_err_inject; /* Memory Data Path Error Injection Mask ECC */
+- u8 res5[0x14];
++ u8 res6[0x14];
+ u32 capture_data_hi; /* Memory Data Path Read Capture High */
+ u32 capture_data_lo; /* Memory Data Path Read Capture Low */
+ u32 capture_ecc; /* Memory Data Path Read Capture ECC */
+- u8 res6[0x14];
++ u8 res7[0x14];
+ u32 err_detect; /* Memory Error Detect */
+ u32 err_disable; /* Memory Error Disable */
+ u32 err_int_en; /* Memory Error Interrupt Enable */
+@@ -300,9 +313,9 @@ typedef struct ddr83xx {
+ u32 capture_address; /* Memory Error Address Capture */
+ u32 capture_ext_address;/* Memory Error Extended Address Capture */
+ u32 err_sbe; /* Memory Single-Bit ECC Error Management */
+- u8 res7[0xA4];
++ u8 res8[0xA4];
+ u32 debug_reg;
+- u8 res8[0xFC];
++ u8 res9[0xFC];
+ } ddr83xx_t;
+
+ /*
+@@ -607,6 +620,43 @@ typedef struct immap {
+ u8 res10[0xC0000];
+ u8 qe[0x100000]; /* QE block */
+ } immap_t;
++
++#elif defined(CONFIG_MPC832X)
++typedef struct immap {
++ sysconf83xx_t sysconf; /* System configuration */
++ wdt83xx_t wdt; /* Watch Dog Timer (WDT) Registers */
++ rtclk83xx_t rtc; /* Real Time Clock Module Registers */
++ rtclk83xx_t pit; /* Periodic Interval Timer */
++ gtm83xx_t gtm[2]; /* Global Timers Module */
++ ipic83xx_t ipic; /* Integrated Programmable Interrupt Controller */
++ arbiter83xx_t arbiter; /* System Arbiter Registers */
++ reset83xx_t reset; /* Reset Module */
++ clk83xx_t clk; /* System Clock Module */
++ pmc83xx_t pmc; /* Power Management Control Module */
++ qepi83xx_t qepi; /* QE Ports Interrupts Registers */
++ u8 res0[0x300];
++ u8 dll_ddr[0x100];
++ u8 dll_lbc[0x100];
++ u8 res1[0x200];
++ qepio83xx_t qepio; /* QE Parallel I/O ports */
++ u8 res2[0x800];
++ ddr83xx_t ddr; /* DDR Memory Controller Memory */
++ fsl_i2c_t i2c[2]; /* I2C Controllers */
++ u8 res3[0x1300];
++ duart83xx_t duart[2]; /* DUART */
++ u8 res4[0x900];
++ lbus83xx_t lbus; /* Local Bus Controller Registers */
++ u8 res5[0x2000];
++ dma83xx_t dma; /* DMA */
++ pciconf83xx_t pci_conf[1]; /* PCI Software Configuration Registers */
++ u8 res6[128];
++ ios83xx_t ios; /* Sequencer (IOS) */
++ pcictrl83xx_t pci_ctrl[1]; /* PCI Controller Control and Status Registers */
++ u8 res7[0x27A00];
++ security83xx_t security;
++ u8 res8[0xC0000];
++ u8 qe[0x100000]; /* QE block */
++} immap_t;
+ #endif
+
+ #endif /* __IMMAP_83xx__ */
+diff --git a/include/asm-ppc/immap_qe.h b/include/asm-ppc/immap_qe.h
+index f385032..950b949 100644
+--- a/include/asm-ppc/immap_qe.h
++++ b/include/asm-ppc/immap_qe.h
+@@ -547,4 +547,10 @@ typedef struct qe_immap {
+
+ extern qe_map_t *qe_immr;
+
++#if defined(CONFIG_MPC8360)
++#define QE_MURAM_SIZE 0xc000UL
++#elif defined(CONFIG_MPC832X)
++#define QE_MURAM_SIZE 0x4000UL
++#endif
++
+ #endif /* __IMMAP_QE_H__ */
+diff --git a/include/configs/MPC832XEMDS.h b/include/configs/MPC832XEMDS.h
+new file mode 100644
+index 0000000..b8bf00f
+--- /dev/null
++++ b/include/configs/MPC832XEMDS.h
+@@ -0,0 +1,629 @@
++/*
++ * Copyright (C) 2006 Freescale Semiconductor, Inc.
++ *
++ * 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
++ */
++
++#ifndef __CONFIG_H
++#define __CONFIG_H
++
++#undef DEBUG
++
++/*
++ * High Level Configuration Options
++ */
++#define CONFIG_E300 1 /* E300 family */
++#define CONFIG_QE 1 /* Has QE */
++#define CONFIG_MPC83XX 1 /* MPC83xx family */
++#define CONFIG_MPC832X 1 /* MPC832x CPU specific */
++#define CONFIG_MPC832XEMDS 1 /* MPC832XEMDS board specific */
++
++/*
++ * System Clock Setup
++ */
++#ifdef CONFIG_PCISLAVE
++#define CONFIG_83XX_PCICLK 66000000 /* in HZ */
++#else
++#define CONFIG_83XX_CLKIN 66000000 /* in Hz */
++#endif
++
++#ifndef CONFIG_SYS_CLK_FREQ
++#define CONFIG_SYS_CLK_FREQ 66000000
++#endif
++
++/*
++ * Hardware Reset Configuration Word
++ */
++#define CFG_HRCW_LOW (\
++ HRCWL_LCL_BUS_TO_SCB_CLK_1X1 |\
++ HRCWL_DDR_TO_SCB_CLK_2X1 |\
++ HRCWL_VCO_1X2 |\
++ HRCWL_CSB_TO_CLKIN_2X1 |\
++ HRCWL_CORE_TO_CSB_2X1 |\
++ HRCWL_CE_PLL_VCO_DIV_2 |\
++ HRCWL_CE_PLL_DIV_1X1 |\
++ HRCWL_CE_TO_PLL_1X3)
++
++#ifdef CONFIG_PCISLAVE
++#define CFG_HRCW_HIGH (\
++ HRCWH_PCI_AGENT |\
++ HRCWH_PCI1_ARBITER_DISABLE |\
++ HRCWH_CORE_ENABLE |\
++ HRCWH_FROM_0XFFF00100 |\
++ HRCWH_BOOTSEQ_DISABLE |\
++ HRCWH_SW_WATCHDOG_DISABLE |\
++ HRCWH_ROM_LOC_LOCAL_16BIT |\
++ HRCWH_BIG_ENDIAN |\
++ HRCWH_LALE_NORMAL)
++#else
++#define CFG_HRCW_HIGH (\
++ HRCWH_PCI_HOST |\
++ HRCWH_PCI1_ARBITER_ENABLE |\
++ HRCWH_CORE_ENABLE |\
++ HRCWH_FROM_0X00000100 |\
++ HRCWH_BOOTSEQ_DISABLE |\
++ HRCWH_SW_WATCHDOG_DISABLE |\
++ HRCWH_ROM_LOC_LOCAL_16BIT |\
++ HRCWH_BIG_ENDIAN |\
++ HRCWH_LALE_NORMAL)
++#endif
++
++/*
++ * System IO Config
++ */
++#define CFG_SICRL 0x00000000
++
++#define CONFIG_BOARD_EARLY_INIT_F /* call board_pre_init */
++
++/*
++ * IMMR new address
++ */
++#define CFG_IMMR 0xE0000000
++
++/*
++ * DDR Setup
++ */
++#define CFG_DDR_BASE 0x00000000 /* DDR is system memory */
++#define CFG_SDRAM_BASE CFG_DDR_BASE
++#define CFG_DDR_SDRAM_BASE CFG_DDR_BASE
++#define CFG_DDRCDR 0x73000002 /* DDR II voltage is 1.8V */
++
++#undef CONFIG_SPD_EEPROM
++#if defined(CONFIG_SPD_EEPROM)
++/* Determine DDR configuration from I2C interface
++ */
++#define SPD_EEPROM_ADDRESS 0x51 /* DDR SODIMM */
++#else
++/* Manually set up DDR parameters
++ */
++#define CFG_DDR_SIZE 128 /* MB */
++#define CFG_DDR_CS0_CONFIG 0x80840102
++#define CFG_DDR_TIMING_0 0x00220802
++#define CFG_DDR_TIMING_1 0x3935d322
++#define CFG_DDR_TIMING_2 0x0f9048ca
++#define CFG_DDR_TIMING_3 0x00000000
++#define CFG_DDR_CLK_CNTL 0x02000000
++#define CFG_DDR_MODE 0x44400232
++#define CFG_DDR_MODE2 0x8000c000
++#define CFG_DDR_INTERVAL 0x03200064
++#define CFG_DDR_CS0_BNDS 0x00000007
++#define CFG_DDR_SDRAM_CFG 0x43080000
++#define CFG_DDR_SDRAM_CFG2 0x00401000
++#endif
++
++/*
++ * Memory test
++ */
++#undef CFG_DRAM_TEST /* memory test, takes time */
++#define CFG_MEMTEST_START 0x00000000 /* memtest region */
++#define CFG_MEMTEST_END 0x00100000
++
++/*
++ * The reserved memory
++ */
++#define CFG_MONITOR_BASE TEXT_BASE /* start of monitor */
++
++#if (CFG_MONITOR_BASE < CFG_FLASH_BASE)
++#define CFG_RAMBOOT
++#else
++#undef CFG_RAMBOOT
++#endif
++
++#define CFG_MONITOR_LEN (256 * 1024) /* Reserve 256 kB for Mon */
++#define CFG_MALLOC_LEN (128 * 1024) /* Reserved for malloc */
++
++/*
++ * Initial RAM Base Address Setup
++ */
++#define CFG_INIT_RAM_LOCK 1
++#define CFG_INIT_RAM_ADDR 0xE6000000 /* Initial RAM address */
++#define CFG_INIT_RAM_END 0x1000 /* End of used area in RAM */
++#define CFG_GBL_DATA_SIZE 0x100 /* num bytes initial data */
++#define CFG_GBL_DATA_OFFSET (CFG_INIT_RAM_END - CFG_GBL_DATA_SIZE)
++
++/*
++ * Local Bus Configuration & Clock Setup
++ */
++#define CFG_LCRR (LCRR_DBYP | LCRR_CLKDIV_2)
++#define CFG_LBC_LBCR 0x00000000
++
++/*
++ * FLASH on the Local Bus
++ */
++#define CFG_FLASH_CFI /* use the Common Flash Interface */
++#define CFG_FLASH_CFI_DRIVER /* use the CFI driver */
++#define CFG_FLASH_BASE 0xFE000000 /* FLASH base address */
++#define CFG_FLASH_SIZE 16 /* FLASH size is 16M */
++
++#define CFG_LBLAWBAR0_PRELIM CFG_FLASH_BASE /* Window base at flash base */
++#define CFG_LBLAWAR0_PRELIM 0x80000018 /* 32MB window size */
++
++#define CFG_BR0_PRELIM (CFG_FLASH_BASE | /* Flash Base address */ \
++ (2 << BR_PS_SHIFT) | /* 16 bit port size */ \
++ BR_V) /* valid */
++#define CFG_OR0_PRELIM 0xfe006ff7 /* 16MB Flash size */
++
++#define CFG_MAX_FLASH_BANKS 1 /* number of banks */
++#define CFG_MAX_FLASH_SECT 128 /* sectors per device */
++
++#undef CFG_FLASH_CHECKSUM
++
++/*
++ * BCSR on the Local Bus
++ */
++#define CFG_BCSR 0xF8000000
++#define CFG_LBLAWBAR1_PRELIM CFG_BCSR /* Access window base at BCSR base */
++#define CFG_LBLAWAR1_PRELIM 0x8000000E /* Access window size 32K */
++
++#define CFG_BR1_PRELIM (CFG_BCSR|0x00000801) /* Port size=8bit, MSEL=GPCM */
++#define CFG_OR1_PRELIM 0xFFFFE9f7 /* length 32K */
++
++/*
++ * SDRAM on the Local Bus
++ */
++#undef CFG_LB_SDRAM /* The board has not SRDAM on local bus */
++
++#ifdef CFG_LB_SDRAM
++#define CFG_LBC_SDRAM_BASE 0xF0000000 /* SDRAM base address */
++#define CFG_LBC_SDRAM_SIZE 64 /* LBC SDRAM is 64MB */
++
++#define CFG_LBLAWBAR2_PRELIM CFG_LBC_SDRAM_BASE
++#define CFG_LBLAWAR2_PRELIM 0x80000019 /* 64MB */
++
++/*local bus BR2, OR2 definition for SDRAM if soldered on the EPB board */
++/*
++ * Base Register 2 and Option Register 2 configure SDRAM.
++ * The SDRAM base address, CFG_LBC_SDRAM_BASE, is 0xf0000000.
++ *
++ * For BR2, need:
++ * Base address of 0xf0000000 = BR[0:16] = 1111 0000 0000 0000 0
++ * port size = 32-bits = BR2[19:20] = 11
++ * no parity checking = BR2[21:22] = 00
++ * SDRAM for MSEL = BR2[24:26] = 011
++ * Valid = BR[31] = 1
++ *
++ * 0 4 8 12 16 20 24 28
++ * 1111 0000 0000 0000 0001 1000 0110 0001 = f0001861
++ *
++ * CFG_LBC_SDRAM_BASE should be masked and OR'ed into
++ * the top 17 bits of BR2.
++ */
++
++#define CFG_BR2_PRELIM 0xf0001861 /*Port size=32bit, MSEL=SDRAM */
++
++/*
++ * The SDRAM size in MB, CFG_LBC_SDRAM_SIZE, is 64.
++ *
++ * For OR2, need:
++ * 64MB mask for AM, OR2[0:7] = 1111 1100
++ * XAM, OR2[17:18] = 11
++ * 9 columns OR2[19-21] = 010
++ * 13 rows OR2[23-25] = 100
++ * EAD set for extra time OR[31] = 1
++ *
++ * 0 4 8 12 16 20 24 28
++ * 1111 1100 0000 0000 0110 1001 0000 0001 = fc006901
++ */
++
++#define CFG_OR2_PRELIM 0xfc006901
++
++#define CFG_LBC_LSRT 0x32000000 /* LB sdram refresh timer, about 6us */
++#define CFG_LBC_MRTPR 0x20000000 /* LB refresh timer prescal, 266MHz/32 */
++
++/*
++ * LSDMR masks
++ */
++#define CFG_LBC_LSDMR_OP_NORMAL (0 << (31 - 4))
++#define CFG_LBC_LSDMR_OP_ARFRSH (1 << (31 - 4))
++#define CFG_LBC_LSDMR_OP_SRFRSH (2 << (31 - 4))
++#define CFG_LBC_LSDMR_OP_MRW (3 << (31 - 4))
++#define CFG_LBC_LSDMR_OP_PRECH (4 << (31 - 4))
++#define CFG_LBC_LSDMR_OP_PCHALL (5 << (31 - 4))
++#define CFG_LBC_LSDMR_OP_ACTBNK (6 << (31 - 4))
++#define CFG_LBC_LSDMR_OP_RWINV (7 << (31 - 4))
++
++#define CFG_LBC_LSDMR_COMMON 0x0063b723
++
++/*
++ * SDRAM Controller configuration sequence.
++ */
++#define CFG_LBC_LSDMR_1 ( CFG_LBC_LSDMR_COMMON \
++ | CFG_LBC_LSDMR_OP_PCHALL)
++#define CFG_LBC_LSDMR_2 ( CFG_LBC_LSDMR_COMMON \
++ | CFG_LBC_LSDMR_OP_ARFRSH)
++#define CFG_LBC_LSDMR_3 ( CFG_LBC_LSDMR_COMMON \
++ | CFG_LBC_LSDMR_OP_ARFRSH)
++#define CFG_LBC_LSDMR_4 ( CFG_LBC_LSDMR_COMMON \
++ | CFG_LBC_LSDMR_OP_MRW)
++#define CFG_LBC_LSDMR_5 ( CFG_LBC_LSDMR_COMMON \
++ | CFG_LBC_LSDMR_OP_NORMAL)
++
++#endif
++
++/*
++ * Windows to access PIB via local bus
++ */
++#define CFG_LBLAWBAR3_PRELIM 0xf8008000 /* windows base 0xf8008000 */
++#define CFG_LBLAWAR3_PRELIM 0x8000000f /* windows size 64KB */
++
++/*
++ * CS2 on Local Bus, to PIB
++ */
++#define CFG_BR2_PRELIM 0xf8008801 /* CS2 base address at 0xf8008000 */
++#define CFG_OR2_PRELIM 0xffffe9f7 /* size 32KB, port size 8bit, GPCM */
++
++/*
++ * CS3 on Local Bus, to PIB
++ */
++#define CFG_BR3_PRELIM 0xf8010801 /* CS3 base address at 0xf8010000 */
++#define CFG_OR3_PRELIM 0xffffe9f7 /* size 32KB, port size 8bit, GPCM */
++
++/*
++ * Serial Port
++ */
++#define CONFIG_CONS_INDEX 1
++#undef CONFIG_SERIAL_SOFTWARE_FIFO
++#define CFG_NS16550
++#define CFG_NS16550_SERIAL
++#define CFG_NS16550_REG_SIZE 1
++#define CFG_NS16550_CLK get_bus_freq(0)
++
++#define CFG_BAUDRATE_TABLE \
++ {300, 600, 1200, 2400, 4800, 9600, 19200, 38400,115200}
++
++#define CFG_NS16550_COM1 (CFG_IMMR+0x4500)
++#define CFG_NS16550_COM2 (CFG_IMMR+0x4600)
++
++/* Use the HUSH parser */
++#define CFG_HUSH_PARSER
++#ifdef CFG_HUSH_PARSER
++#define CFG_PROMPT_HUSH_PS2 "> "
++#endif
++
++/* pass open firmware flat tree */
++#define CONFIG_OF_FLAT_TREE 1
++#define CONFIG_OF_BOARD_SETUP 1
++
++/* maximum size of the flat tree (8K) */
++#define OF_FLAT_TREE_MAX_SIZE 8192
++
++#define OF_CPU "PowerPC,8323@0"
++#define OF_SOC "soc8323@e0000000"
++#define OF_TBCLK (bd->bi_busfreq / 4)
++#define OF_STDOUT_PATH "/soc8323@e0000000/serial@4500"
++
++/* I2C */
++#define CONFIG_HARD_I2C /* I2C with hardware support */
++#undef CONFIG_SOFT_I2C /* I2C bit-banged */
++#define CONFIG_FSL_I2C
++#define CFG_I2C_SPEED 400000 /* I2C speed and slave address */
++#define CFG_I2C_SLAVE 0x7F
++#define CFG_I2C_NOPROBES {0x51} /* Don't probe these addrs */
++#define CFG_I2C_OFFSET 0x3000
++
++/*
++ * Config on-board RTC
++ */
++#define CONFIG_RTC_DS1374 /* use ds1374 rtc via i2c */
++#define CFG_I2C_RTC_ADDR 0x68 /* at address 0x68 */
++
++/*
++ * General PCI
++ * Addresses are mapped 1-1.
++ */
++#define CFG_PCI_MEM_BASE 0x80000000
++#define CFG_PCI_MEM_PHYS CFG_PCI_MEM_BASE
++#define CFG_PCI_MEM_SIZE 0x10000000 /* 256M */
++#define CFG_PCI_MMIO_BASE 0x90000000
++#define CFG_PCI_MMIO_PHYS CFG_PCI_MMIO_BASE
++#define CFG_PCI_MMIO_SIZE 0x10000000 /* 256M */
++#define CFG_PCI_IO_BASE 0xE0300000
++#define CFG_PCI_IO_PHYS 0xE0300000
++#define CFG_PCI_IO_SIZE 0x100000 /* 1M */
++
++#define CFG_PCI_SLV_MEM_LOCAL CFG_SDRAM_BASE
++#define CFG_PCI_SLV_MEM_BUS 0x00000000
++#define CFG_PCI_SLV_MEM_SIZE 0x80000000
++
++
++#ifdef CONFIG_PCI
++
++#define CONFIG_NET_MULTI
++#define CONFIG_PCI_PNP /* do pci plug-and-play */
++
++#undef CONFIG_EEPRO100
++#undef CONFIG_PCI_SCAN_SHOW /* show pci devices on startup */
++#define CFG_PCI_SUBSYS_VENDORID 0x1957 /* Freescale */
++
++#endif /* CONFIG_PCI */
++
++
++#ifndef CONFIG_NET_MULTI
++#define CONFIG_NET_MULTI 1
++#endif
++
++/*
++ * QE UEC ethernet configuration
++ */
++#define CONFIG_UEC_ETH
++#define CONFIG_ETHPRIME "Freescale GETH"
++
++#define CONFIG_UEC_ETH1 /* ETH3 */
++
++#ifdef CONFIG_UEC_ETH1
++#define CFG_UEC1_UCC_NUM 2 /* UCC3 */
++#define CFG_UEC1_RX_CLK QE_CLK9
++#define CFG_UEC1_TX_CLK QE_CLK10
++#define CFG_UEC1_ETH_TYPE FAST_ETH
++#define CFG_UEC1_PHY_ADDR 3
++#define CFG_UEC1_INTERFACE_MODE ENET_100_MII
++#endif
++
++#define CONFIG_UEC_ETH2 /* ETH4 */
++
++#ifdef CONFIG_UEC_ETH2
++#define CFG_UEC2_UCC_NUM 3 /* UCC4 */
++#define CFG_UEC2_RX_CLK QE_CLK7
++#define CFG_UEC2_TX_CLK QE_CLK8
++#define CFG_UEC2_ETH_TYPE FAST_ETH
++#define CFG_UEC2_PHY_ADDR 4
++#define CFG_UEC2_INTERFACE_MODE ENET_100_MII
++#endif
++
++/*
++ * Environment
++ */
++#ifndef CFG_RAMBOOT
++ #define CFG_ENV_IS_IN_FLASH 1
++ #define CFG_ENV_ADDR (CFG_MONITOR_BASE + 0x40000)
++ #define CFG_ENV_SECT_SIZE 0x40000 /* 256K(one sector) for env */
++ #define CFG_ENV_SIZE 0x2000
++#else
++ #define CFG_NO_FLASH 1 /* Flash is not usable now */
++ #define CFG_ENV_IS_NOWHERE 1 /* Store ENV in memory only */
++ #define CFG_ENV_ADDR (CFG_MONITOR_BASE - 0x1000)
++ #define CFG_ENV_SIZE 0x2000
++#endif
++
++#define CONFIG_LOADS_ECHO 1 /* echo on for serial download */
++#define CFG_LOADS_BAUD_CHANGE 1 /* allow baudrate change */
++
++#if defined(CFG_RAMBOOT)
++#if defined(CONFIG_PCI)
++#define CONFIG_COMMANDS ((CONFIG_CMD_DFL \
++ | CFG_CMD_PING \
++ | CFG_CMD_ASKENV \
++ | CFG_CMD_PCI \
++ | CFG_CMD_I2C) \
++ & \
++ ~(CFG_CMD_ENV \
++ | CFG_CMD_LOADS))
++#else
++#define CONFIG_COMMANDS ((CONFIG_CMD_DFL \
++ | CFG_CMD_PING \
++ | CFG_CMD_ASKENV \
++ | CFG_CMD_I2C) \
++ & \
++ ~(CFG_CMD_ENV \
++ | CFG_CMD_LOADS))
++#endif
++#else
++#if defined(CONFIG_PCI)
++#define CONFIG_COMMANDS (CONFIG_CMD_DFL \
++ | CFG_CMD_PCI \
++ | CFG_CMD_PING \
++ | CFG_CMD_ASKENV \
++ | CFG_CMD_I2C)
++#else
++#define CONFIG_COMMANDS (CONFIG_CMD_DFL \
++ | CFG_CMD_PING \
++ | CFG_CMD_ASKENV \
++ | CFG_CMD_I2C )
++#endif
++#endif
++
++#include <cmd_confdefs.h>
++
++#undef CONFIG_WATCHDOG /* watchdog disabled */
++
++/*
++ * Miscellaneous configurable options
++ */
++#define CFG_LONGHELP /* undef to save memory */
++#define CFG_LOAD_ADDR 0x2000000 /* default load address */
++#define CFG_PROMPT "=> " /* Monitor Command Prompt */
++
++#if (CONFIG_COMMANDS & CFG_CMD_KGDB)
++ #define CFG_CBSIZE 1024 /* Console I/O Buffer Size */
++#else
++ #define CFG_CBSIZE 256 /* Console I/O Buffer Size */
++#endif
++
++#define CFG_PBSIZE (CFG_CBSIZE+sizeof(CFG_PROMPT)+16) /* Print Buffer Size */
++#define CFG_MAXARGS 16 /* max number of command args */
++#define CFG_BARGSIZE CFG_CBSIZE /* Boot Argument Buffer Size */
++#define CFG_HZ 1000 /* decrementer freq: 1ms ticks */
++
++/*
++ * For booting Linux, the board info and command line data
++ * have to be in the first 8 MB of memory, since this is
++ * the maximum mapped by the Linux kernel during initialization.
++ */
++#define CFG_BOOTMAPSZ (8 << 20) /* Initial Memory map for Linux */
++
++/*
++ * Core HID Setup
++ */
++#define CFG_HID0_INIT 0x000000000
++#define CFG_HID0_FINAL HID0_ENABLE_MACHINE_CHECK
++#define CFG_HID2 HID2_HBE
++
++/*
++ * Cache Config
++ */
++#define CFG_DCACHE_SIZE 16384
++#define CFG_CACHELINE_SIZE 32
++#if (CONFIG_COMMANDS & CFG_CMD_KGDB)
++#define CFG_CACHELINE_SHIFT 5 /*log base 2 of the above value */
++#endif
++
++/*
++ * MMU Setup
++ */
++
++/* DDR: cache cacheable */
++#define CFG_IBAT0L (CFG_SDRAM_BASE | BATL_PP_10 | BATL_MEMCOHERENCE)
++#define CFG_IBAT0U (CFG_SDRAM_BASE | BATU_BL_256M | BATU_VS | BATU_VP)
++#define CFG_DBAT0L CFG_IBAT0L
++#define CFG_DBAT0U CFG_IBAT0U
++
++/* IMMRBAR & PCI IO: cache-inhibit and guarded */
++#define CFG_IBAT1L (CFG_IMMR | BATL_PP_10 | \
++ BATL_CACHEINHIBIT | BATL_GUARDEDSTORAGE)
++#define CFG_IBAT1U (CFG_IMMR | BATU_BL_4M | BATU_VS | BATU_VP)
++#define CFG_DBAT1L CFG_IBAT1L
++#define CFG_DBAT1U CFG_IBAT1U
++
++/* BCSR: cache-inhibit and guarded */
++#define CFG_IBAT2L (CFG_BCSR | BATL_PP_10 | \
++ BATL_CACHEINHIBIT | BATL_GUARDEDSTORAGE)
++#define CFG_IBAT2U (CFG_BCSR | BATU_BL_128K | BATU_VS | BATU_VP)
++#define CFG_DBAT2L CFG_IBAT2L
++#define CFG_DBAT2U CFG_IBAT2U
++
++/* FLASH: icache cacheable, but dcache-inhibit and guarded */
++#define CFG_IBAT3L (CFG_FLASH_BASE | BATL_PP_10 | BATL_MEMCOHERENCE)
++#define CFG_IBAT3U (CFG_FLASH_BASE | BATU_BL_32M | BATU_VS | BATU_VP)
++#define CFG_DBAT3L (CFG_FLASH_BASE | BATL_PP_10 | \
++ BATL_CACHEINHIBIT | BATL_GUARDEDSTORAGE)
++#define CFG_DBAT3U CFG_IBAT3U
++
++#define CFG_IBAT4L (0)
++#define CFG_IBAT4U (0)
++#define CFG_DBAT4L CFG_IBAT4L
++#define CFG_DBAT4U CFG_IBAT4U
++
++/* Stack in dcache: cacheable, no memory coherence */
++#define CFG_IBAT5L (CFG_INIT_RAM_ADDR | BATL_PP_10)
++#define CFG_IBAT5U (CFG_INIT_RAM_ADDR | BATU_BL_128K | BATU_VS | BATU_VP)
++#define CFG_DBAT5L CFG_IBAT5L
++#define CFG_DBAT5U CFG_IBAT5U
++
++#ifdef CONFIG_PCI
++/* PCI MEM space: cacheable */
++#define CFG_IBAT6L (CFG_PCI_MEM_PHYS | BATL_PP_10 | BATL_MEMCOHERENCE)
++#define CFG_IBAT6U (CFG_PCI_MEM_PHYS | BATU_BL_256M | BATU_VS | BATU_VP)
++#define CFG_DBAT6L CFG_IBAT6L
++#define CFG_DBAT6U CFG_IBAT6U
++/* PCI MMIO space: cache-inhibit and guarded */
++#define CFG_IBAT7L (CFG_PCI_MMIO_PHYS | BATL_PP_10 | \
++ BATL_CACHEINHIBIT | BATL_GUARDEDSTORAGE)
++#define CFG_IBAT7U (CFG_PCI_MMIO_PHYS | BATU_BL_256M | BATU_VS | BATU_VP)
++#define CFG_DBAT7L CFG_IBAT7L
++#define CFG_DBAT7U CFG_IBAT7U
++#else
++#define CFG_IBAT6L (0)
++#define CFG_IBAT6U (0)
++#define CFG_IBAT7L (0)
++#define CFG_IBAT7U (0)
++#define CFG_DBAT6L CFG_IBAT6L
++#define CFG_DBAT6U CFG_IBAT6U
++#define CFG_DBAT7L CFG_IBAT7L
++#define CFG_DBAT7U CFG_IBAT7U
++#endif
++
++/*
++ * Internal Definitions
++ *
++ * Boot Flags
++ */
++#define BOOTFLAG_COLD 0x01 /* Normal Power-On: Boot from FLASH */
++#define BOOTFLAG_WARM 0x02 /* Software reboot */
++
++#if (CONFIG_COMMANDS & CFG_CMD_KGDB)
++#define CONFIG_KGDB_BAUDRATE 230400 /* speed of kgdb serial port */
++#define CONFIG_KGDB_SER_INDEX 2 /* which serial port to use */
++#endif
++
++/*
++ * Environment Configuration
++ */
++
++#define CONFIG_ENV_OVERWRITE
++
++#if defined(CONFIG_UEC_ETH)
++#define CONFIG_ETHADDR 00:04:9f:ef:03:01
++#define CONFIG_HAS_ETH1
++#define CONFIG_ETH1ADDR 00:04:9f:ef:03:02
++#endif
++
++#define CONFIG_BAUDRATE 115200
++
++#define CONFIG_LOADADDR 200000 /* default location for tftp and bootm */
++
++#define CONFIG_BOOTDELAY 6 /* -1 disables auto-boot */
++#undef CONFIG_BOOTARGS /* the boot command will set bootargs */
++
++#define CONFIG_EXTRA_ENV_SETTINGS \
++ "netdev=eth0\0" \
++ "consoledev=ttyS0\0" \
++ "ramdiskaddr=1000000\0" \
++ "ramdiskfile=ramfs.83xx\0" \
++ "fdtaddr=400000\0" \
++ "fdtfile=mpc832xemds.dtb\0" \
++ ""
++
++#define CONFIG_NFSBOOTCOMMAND \
++ "setenv bootargs root=/dev/nfs rw " \
++ "nfsroot=$serverip:$rootpath " \
++ "ip=$ipaddr:$serverip:$gatewayip:$netmask:$hostname:$netdev:off " \
++ "console=$consoledev,$baudrate $othbootargs;" \
++ "tftp $loadaddr $bootfile;" \
++ "tftp $fdtaddr $fdtfile;" \
++ "bootm $loadaddr - $fdtaddr"
++
++#define CONFIG_RAMBOOTCOMMAND \
++ "setenv bootargs root=/dev/ram rw " \
++ "console=$consoledev,$baudrate $othbootargs;" \
++ "tftp $ramdiskaddr $ramdiskfile;" \
++ "tftp $loadaddr $bootfile;" \
++ "tftp $fdtaddr $fdtfile;" \
++ "bootm $loadaddr $ramdiskaddr $fdtaddr"
++
++
++#define CONFIG_BOOTCOMMAND CONFIG_NFSBOOTCOMMAND
++
++#endif /* __CONFIG_H */
+diff --git a/include/mpc83xx.h b/include/mpc83xx.h
+index 504b6a9..52e4369 100644
+--- a/include/mpc83xx.h
++++ b/include/mpc83xx.h
+@@ -75,6 +75,15 @@
+ #define SPR_8360E_REV12 0x80480012
+ #define SPR_8360_REV12 0x80490012
+
++#define SPR_8323E_REV10 0x80620010
++#define SPR_8323_REV10 0x80630010
++#define SPR_8321E_REV10 0x80660010
++#define SPR_8321_REV10 0x80670010
++#define SPR_8323E_REV11 0x80620011
++#define SPR_8323_REV11 0x80630011
++#define SPR_8321E_REV11 0x80660011
++#define SPR_8321_REV11 0x80670011
++
+ /* SPCR - System Priority Configuration Register
+ */
+ #define SPCR_PCIHPE 0x10000000 /* PCI Highest Priority Enable */
+@@ -167,6 +176,14 @@
+ #define SICRH_UC1EOBI 0x00000004
+ #define SICRH_UC2E1OBI 0x00000002
+ #define SICRH_UC2E2OBI 0x00000001
++
++#elif defined(CONFIG_MPC832X)
++/* SICRL bits - MPC832X specific */
++#define SICRL_LDP_LCS_A 0x80000000
++#define SICRL_IRQ_CKS 0x20000000
++#define SICRL_PCI_MSRC 0x10000000
++#define SICRL_URT_CTPR 0x06000000
++#define SICRL_IRQ_CTPR 0x00C00000
+ #endif
+
+ /* SWCRR - System Watchdog Control Register
+@@ -270,7 +287,7 @@
+ #define HRCWL_CORE_TO_CSB_2_5X1 0x00050000
+ #define HRCWL_CORE_TO_CSB_3X1 0x00060000
+
+-#if defined(CONFIG_MPC8360)
++#if defined(CONFIG_MPC8360) || defined(CONFIG_MPC832X)
+ #define HRCWL_CEVCOD 0x000000C0
+ #define HRCWL_CEVCOD_SHIFT 6
+ #define HRCWL_CE_PLL_VCO_DIV_4 0x00000000
+@@ -718,7 +735,7 @@
+ #define BR_MS_UPMA 0x00000080 /* UPMA */
+ #define BR_MS_UPMB 0x000000A0 /* UPMB */
+ #define BR_MS_UPMC 0x000000C0 /* UPMC */
+-#if defined(CONFIG_MPC8360)
++#if defined(CONFIG_MPC8360) || defined(CONFIG_MPC832X)
+ #define BR_ATOM 0x0000000C
+ #define BR_ATOM_SHIFT 2
+ #endif
diff --git a/packages/uboot/u-boot-1.1.6/u-boot-1.1.6-fsl-1-Add-the-MPC832XEMDS-board-readme.patch b/packages/uboot/u-boot-1.1.6/u-boot-1.1.6-fsl-1-Add-the-MPC832XEMDS-board-readme.patch
new file mode 100644
index 0000000000..b5e2a87b16
--- /dev/null
+++ b/packages/uboot/u-boot-1.1.6/u-boot-1.1.6-fsl-1-Add-the-MPC832XEMDS-board-readme.patch
@@ -0,0 +1,131 @@
+657bdd350516722e4d73329caf37aae694f7eaaa
+diff --git a/doc/README.mpc832xemds b/doc/README.mpc832xemds
+new file mode 100644
+index 0000000..00c3af1
+--- /dev/null
++++ b/doc/README.mpc832xemds
+@@ -0,0 +1,124 @@
++Freescale MPC832XEMDS Board
++-----------------------------------------
++1. Board Switches and Jumpers
++1.0 There are five Dual-In-Line Packages(DIP) Switches on MPC832XE SYS board
++ For some reason, the HW designers describe the switch settings
++ in terms of 0 and 1, and then map that to physical switches where
++ the label "On" refers to logic 0 and "Off" is logic 1.
++
++ Switch bits are numbered 1 through, like, 4 6 8 or 10, but the
++ bits may contribute to signals that are numbered based at 0,
++ and some of those signals may be high-bit-number-0 too. Heed
++ well the names and labels and do not get confused.
++
++ "Off" == 1
++ "On" == 0
++
++ SW3 is switch 18 as silk-screened onto the board.
++ SW4[8] is the bit labled 8 on Switch 4.
++ SW5[1:6] refers to bits labeled 1 through 6 in order on switch 5.
++ SW6[7:1] refers to bits labeled 7 through 1 in order on switch 6.
++ SW7[1:8]= 0000_0001 refers to bits labeled 1 through 6 is set as "On"
++ and bits labeled 8 is set as "Off".
++
++1.1 For the MPC832XEMDS PROTO Board
++
++ First, make sure the board default setting is consistent with the
++ document shipped with your board. Then apply the following setting:
++ SW3[1-8]= 0000_1000 (core PLL setting, core enable)
++ SW4[1-8]= 0001_0010 (Flash boot on local bus, system PLL setting)
++ SW5[1-8]= 0010_0110 (Boot from high end)
++ SW6[1-8]= 0011_0100 (Flash boot on 16 bit local bus)
++ SW7[1-8]= 1000_0011 (QE PLL setting)
++
++ ENET3/4 MII mode settings:
++ J1 1-2 (ETH3_TXER)
++ J2 2-3 (MII mode)
++ J3 2-3 (MII mode)
++ J4 2-3 (ADSL clockOscillator)
++ J5 1-2 (ETH4_TXER)
++ J6 2-3 (ClockOscillator)
++ JP1 removed (don't force PORESET)
++ JP2 mounted (ETH4/2 MII)
++ JP3 mounted (ETH3 MII)
++ JP4 mounted (HRCW from BCSR)
++
++ ENET3/4 RMII mode settings:
++ J1 1-2 (ETH3_TXER)
++ J2 1-2 (RMII mode)
++ J3 1-2 (RMII mode)
++ J4 2-3 (ADSL clockOscillator)
++ J5 1-2 (ETH4_TXER)
++ J6 2-3 (ClockOscillator)
++ JP1 removed (don't force PORESET)
++ JP2 removed (ETH4/2 RMII)
++ JP3 removed (ETH3 RMII)
++ JP4 removed (HRCW from FLASH)
++
++ on board Oscillator: 66M
++
++
++2. Memory Map
++
++2.1 The memory map should look pretty much like this:
++
++ 0x0000_0000 0x7fff_ffff DDR 2G
++ 0x8000_0000 0x8fff_ffff PCI MEM prefetch 256M
++ 0x9000_0000 0x9fff_ffff PCI MEM non-prefetch 256M
++ 0xc000_0000 0xdfff_ffff Empty 512M
++ 0xe000_0000 0xe01f_ffff Int Mem Reg Space 2M
++ 0xe020_0000 0xe02f_ffff Empty 1M
++ 0xe030_0000 0xe03f_ffff PCI IO 1M
++ 0xe040_0000 0xefff_ffff Empty 252M
++ 0xf400_0000 0xf7ff_ffff Empty 64M
++ 0xf800_0000 0xf800_7fff BCSR on CS1 32K
++ 0xf800_8000 0xf800_ffff PIB CS2 32K
++ 0xf801_0000 0xf801_7fff PIB CS3 32K
++ 0xfe00_0000 0xfeff_ffff FLASH on CS0 16M
++
++
++3. Definitions
++
++3.1 Explanation of NEW definitions in:
++
++ include/configs/MPC832XEMDS.h
++
++ CONFIG_MPC83XX MPC83XX family for MPC8349, MPC8360 and MPC832X
++ CONFIG_MPC832X MPC832X specific
++ CONFIG_MPC832XEMDS MPC832XEMDS board specific
++
++4. Compilation
++
++ Assuming you're using BASH shell:
++
++ export CROSS_COMPILE=your-cross-compile-prefix
++ cd u-boot
++ make distclean
++ make MPC832XEMDS_config
++ make
++
++ MPC832X support PCI 33MHz and PCI 66MHz, to make u-boot support PCI:
++
++ 1)Make sure the DIP SW support PCI mode
++ as described in Section 1.1.
++
++ 2)To Make U-Boot image support PCI 33MHz, use
++ Make MPC832XEMDS_HOST_33_config
++
++ 3)To Make U-Boot image support PCI 66MHz, use
++ Make MPC832XEMDS_HOST_66_config
++
++5. Downloading and Flashing Images
++
++5.0 Download over network:
++
++ tftp 20000 u-boot.bin
++
++5.1 Reflash U-boot Image using U-boot
++
++ If your current u-boot sets $filesize automatically:
++
++ protect off fe000000 +$filesize
++ erase fe000000 +$filesize
++ cp.b 20000 fe000000 $filesize
++
diff --git a/packages/uboot/u-boot-1.1.6/u-boot-1.1.6-fsl-1-Added-MPC8323E-RDB-board-support-2.patch b/packages/uboot/u-boot-1.1.6/u-boot-1.1.6-fsl-1-Added-MPC8323E-RDB-board-support-2.patch
new file mode 100644
index 0000000000..23a9717e74
--- /dev/null
+++ b/packages/uboot/u-boot-1.1.6/u-boot-1.1.6-fsl-1-Added-MPC8323E-RDB-board-support-2.patch
@@ -0,0 +1,1221 @@
+7a328e85f4ff0b6c074a7fdb302e6e6f6f36e7f2
+diff --git a/Makefile b/Makefile
+index d172411..73014fd 100644
+--- a/Makefile
++++ b/Makefile
+@@ -1645,6 +1645,12 @@ MPC832XEMDS_SLAVE_config: unconfig
+ fi ;
+ @$(MKCONFIG) -a MPC832XEMDS ppc mpc83xx mpc832xemds
+
++MPC8323ERDB_config: unconfig
++ @echo "" >include/config.h ; \
++ echo -n "... PCI HOST " ; \
++ echo "#define CONFIG_PCI" >>include/config.h ;
++ @$(MKCONFIG) -a MPC8323ERDB ppc mpc83xx mpc8323erdb
++
+ #########################################################################
+ ## MPC85xx Systems
+ #########################################################################
+diff --git a/board/mpc8323erdb/Makefile b/board/mpc8323erdb/Makefile
+new file mode 100644
+index 0000000..5ec7a87
+--- /dev/null
++++ b/board/mpc8323erdb/Makefile
+@@ -0,0 +1,50 @@
++#
++# (C) Copyright 2006
++# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
++#
++# See file CREDITS for list of people who contributed to this
++# project.
++#
++# 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
++#
++
++include $(TOPDIR)/config.mk
++
++LIB = $(obj)lib$(BOARD).a
++
++COBJS := $(BOARD).o pci.o
++
++SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
++OBJS := $(addprefix $(obj),$(COBJS))
++SOBJS := $(addprefix $(obj),$(SOBJS))
++
++$(LIB): $(obj).depend $(OBJS)
++ $(AR) $(ARFLAGS) $@ $(OBJS)
++
++clean:
++ rm -f $(SOBJS) $(OBJS)
++
++distclean: clean
++ rm -f $(LIB) core *.bak .depend
++
++#########################################################################
++
++# defines $(obj).depend target
++include $(SRCTREE)/rules.mk
++
++sinclude $(obj).depend
++
++#########################################################################
+diff --git a/board/mpc8323erdb/config.mk b/board/mpc8323erdb/config.mk
+new file mode 100644
+index 0000000..fe0d37d
+--- /dev/null
++++ b/board/mpc8323erdb/config.mk
+@@ -0,0 +1,28 @@
++#
++# (C) Copyright 2006
++# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
++#
++# See file CREDITS for list of people who contributed to this
++# project.
++#
++# 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
++#
++
++#
++# MPC8323ERDB
++#
++
++TEXT_BASE = 0xFE000000
+diff --git a/board/mpc8323erdb/mpc8323erdb.c b/board/mpc8323erdb/mpc8323erdb.c
+new file mode 100644
+index 0000000..239adbb
+--- /dev/null
++++ b/board/mpc8323erdb/mpc8323erdb.c
+@@ -0,0 +1,169 @@
++/*
++ * Copyright (C) 2006 Freescale Semiconductor, Inc.
++ *
++ * Michael Barkowski <michael.barkowski@freescale.com>
++ * Based on mpc832xmds file by Dave Liu <daveliu@freescale.com>
++ *
++ * See file CREDITS for list of people who contributed to this
++ * project.
++ *
++ * 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.
++ */
++
++#include <common.h>
++#include <ioports.h>
++#include <mpc83xx.h>
++#include <i2c.h>
++#include <spd.h>
++#include <miiphy.h>
++#include <command.h>
++#if defined(CONFIG_PCI)
++#include <pci.h>
++#endif
++#if defined(CONFIG_SPD_EEPROM)
++#include <spd_sdram.h>
++#else
++#include <asm/mmu.h>
++#endif
++#if defined(CONFIG_OF_FLAT_TREE)
++#include <ft_build.h>
++#endif
++
++const qe_iop_conf_t qe_iop_conf_tab[] = {
++ /* UCC3 */
++ {1, 0, 1, 0, 1}, /* TxD0 */
++ {1, 1, 1, 0, 1}, /* TxD1 */
++ {1, 2, 1, 0, 1}, /* TxD2 */
++ {1, 3, 1, 0, 1}, /* TxD3 */
++ {1, 9, 1, 0, 1}, /* TxER */
++ {1, 12, 1, 0, 1}, /* TxEN */
++ {3, 24, 2, 0, 1}, /* TxCLK->CLK10 */
++
++ {1, 4, 2, 0, 1}, /* RxD0 */
++ {1, 5, 2, 0, 1}, /* RxD1 */
++ {1, 6, 2, 0, 1}, /* RxD2 */
++ {1, 7, 2, 0, 1}, /* RxD3 */
++ {1, 8, 2, 0, 1}, /* RxER */
++ {1, 10, 2, 0, 1}, /* RxDV */
++ {0, 13, 2, 0, 1}, /* RxCLK->CLK9 */
++ {1, 11, 2, 0, 1}, /* COL */
++ {1, 13, 2, 0, 1}, /* CRS */
++
++ /* UCC2 */
++ {0, 18, 1, 0, 1}, /* TxD0 */
++ {0, 19, 1, 0, 1}, /* TxD1 */
++ {0, 20, 1, 0, 1}, /* TxD2 */
++ {0, 21, 1, 0, 1}, /* TxD3 */
++ {0, 27, 1, 0, 1}, /* TxER */
++ {0, 30, 1, 0, 1}, /* TxEN */
++ {3, 23, 2, 0, 1}, /* TxCLK->CLK3 */
++
++ {0, 22, 2, 0, 1}, /* RxD0 */
++ {0, 23, 2, 0, 1}, /* RxD1 */
++ {0, 24, 2, 0, 1}, /* RxD2 */
++ {0, 25, 2, 0, 1}, /* RxD3 */
++ {0, 26, 1, 0, 1}, /* RxER */
++ {0, 28, 2, 0, 1}, /* Rx_DV */
++ {3, 21, 2, 0, 1}, /* RxCLK->CLK16 */
++ {0, 29, 2, 0, 1}, /* COL */
++ {0, 31, 2, 0, 1}, /* CRS */
++
++ {3, 4, 3, 0, 2}, /* MDIO */
++ {3, 5, 1, 0, 2}, /* MDC */
++
++ {0, 0, 0, 0, QE_IOP_TAB_END}, /* END of table */
++};
++
++int board_early_init_f(void)
++{
++ return 0;
++}
++
++int fixed_sdram(void);
++
++long int initdram(int board_type)
++{
++ volatile immap_t *im = (immap_t *) CFG_IMMR;
++ u32 msize = 0;
++
++ if ((im->sysconf.immrbar & IMMRBAR_BASE_ADDR) != (u32) im)
++ return -1;
++
++ /* DDR SDRAM - Main SODIMM */
++ im->sysconf.ddrlaw[0].bar = CFG_DDR_BASE & LAWBAR_BAR;
++
++ msize = fixed_sdram();
++
++ puts("\n DDR RAM: ");
++
++ /* return total bus SDRAM size(bytes) -- DDR */
++ return (msize * 1024 * 1024);
++}
++
++/*************************************************************************
++ * fixed sdram init -- doesn't use serial presence detect.
++ ************************************************************************/
++int fixed_sdram(void)
++{
++ volatile immap_t *im = (immap_t *) CFG_IMMR;
++ u32 msize = 0;
++ u32 ddr_size;
++ u32 ddr_size_log2;
++
++ msize = CFG_DDR_SIZE;
++ for (ddr_size = msize << 20, ddr_size_log2 = 0;
++ (ddr_size > 1); ddr_size = ddr_size >> 1, ddr_size_log2++) {
++ if (ddr_size & 1) {
++ return -1;
++ }
++ }
++ im->sysconf.ddrlaw[0].ar =
++ LAWAR_EN | ((ddr_size_log2 - 1) & LAWAR_SIZE);
++ im->ddr.sdram_clk_cntl = CFG_DDR_CLK_CNTL;
++ im->ddr.csbnds[0].csbnds = CFG_DDR_CS0_BNDS;
++ im->ddr.cs_config[0] = CFG_DDR_CS0_CONFIG;
++ im->ddr.timing_cfg_0 = CFG_DDR_TIMING_0;
++ im->ddr.timing_cfg_1 = CFG_DDR_TIMING_1;
++ im->ddr.timing_cfg_2 = CFG_DDR_TIMING_2;
++ im->ddr.timing_cfg_3 = CFG_DDR_TIMING_3;
++ im->ddr.sdram_cfg = CFG_DDR_SDRAM_CFG;
++ im->ddr.sdram_cfg2 = CFG_DDR_SDRAM_CFG2;
++ im->ddr.sdram_mode = CFG_DDR_MODE;
++ im->ddr.sdram_mode2 = CFG_DDR_MODE2;
++ im->ddr.sdram_interval = CFG_DDR_INTERVAL;
++ __asm__ __volatile__ ("sync");
++ udelay(200);
++
++ im->ddr.sdram_cfg |= SDRAM_CFG_MEM_EN;
++ __asm__ __volatile__ ("sync");
++ return msize;
++}
++
++int checkboard(void)
++{
++ puts("Board: Freescale MPC8323ERDB\n");
++ return 0;
++}
++
++#if defined(CONFIG_OF_FLAT_TREE) && defined(CONFIG_OF_BOARD_SETUP)
++void
++ft_board_setup(void *blob, bd_t *bd)
++{
++ u32 *p;
++ int len;
++
++#ifdef CONFIG_PCI
++ ft_pci_setup(blob, bd);
++#endif
++ ft_cpu_setup(blob, bd);
++
++ p = ft_get_prop(blob, "/memory/reg", &len);
++ if (p != NULL) {
++ *p++ = cpu_to_be32(bd->bi_memstart);
++ *p = cpu_to_be32(bd->bi_memsize);
++ }
++}
++#endif
+diff --git a/board/mpc8323erdb/pci.c b/board/mpc8323erdb/pci.c
+new file mode 100644
+index 0000000..2e942d2
+--- /dev/null
++++ b/board/mpc8323erdb/pci.c
+@@ -0,0 +1,208 @@
++/*
++ * Copyright (C) 2006 Freescale Semiconductor, Inc.
++ *
++ * Michael Barkowski <michael.barkowski@freescale.com>
++ * Based on mpc832xemds/pci.c by Dave Liu.
++ *
++ * See file CREDITS for list of people who contributed to this
++ * project.
++ *
++ * 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.
++ */
++
++/*
++ * PCI Configuration space access support for MPC83xx PCI Bridge
++ */
++#include <asm/mmu.h>
++#include <asm/io.h>
++#include <common.h>
++#include <pci.h>
++#include <i2c.h>
++
++#include <asm/fsl_i2c.h>
++
++DECLARE_GLOBAL_DATA_PTR;
++
++#if defined(CONFIG_PCI)
++#define PCI_FUNCTION_CONFIG 0x44
++#define PCI_FUNCTION_CFG_LOCK 0x20
++
++/*
++ * Initialize PCI Devices, report devices found
++ */
++#ifndef CONFIG_PCI_PNP
++static struct pci_config_table pci_mpc8323erdb_config_table[] = {
++ {
++ PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID,
++ pci_cfgfunc_config_device,
++ {PCI_ENET0_IOADDR,
++ PCI_ENET0_MEMADDR,
++ PCI_COMMON_MEMORY | PCI_COMMAND_MASTER}
++ },
++ {}
++}
++#endif
++static struct pci_controller hose[] = {
++ {
++#ifndef CONFIG_PCI_PNP
++ config_table:pci_mpc8323erdb_config_table,
++#endif
++ },
++};
++
++/**********************************************************************
++ * pci_init_board()
++ *********************************************************************/
++void pci_init_board(void)
++{
++ volatile immap_t *immr;
++ volatile clk83xx_t *clk;
++ volatile law83xx_t *pci_law;
++ volatile pot83xx_t *pci_pot;
++ volatile pcictrl83xx_t *pci_ctrl;
++ volatile pciconf83xx_t *pci_conf;
++
++ u8 val8;
++ u16 reg16;
++ u32 val32;
++ u32 dev;
++
++ immr = (immap_t *) CFG_IMMR;
++ clk = (clk83xx_t *) & immr->clk;
++ pci_law = immr->sysconf.pcilaw;
++ pci_pot = immr->ios.pot;
++ pci_ctrl = immr->pci_ctrl;
++ pci_conf = immr->pci_conf;
++ /*
++ * Enable PCI output signals
++ */
++ val32 = clk->occr;
++ udelay(2000);
++ /* if pin /CFG_CLKIN_DIV=1, PCI clock = clkin = 66MHz;
++ if pin /CFG_CLKIN_DIV=0, PCI clock = clkin/2 = 33MHz; */
++ clk->occr = OCCR_PCICOE0 | OCCR_PCICOE1 | OCCR_PCICOE2;
++ if (clk->spmr & SPMR_CKID)
++ printf("PCI clock is 33MHz\n");
++ else
++ printf("PCI clock is 66MHz\n");
++ udelay(2000);
++
++ /*
++ * Configure PCI Local Access Windows
++ */
++ pci_law[0].bar = CFG_PCI_MEM_PHYS & LAWBAR_BAR;
++ pci_law[0].ar = LAWAR_EN | LAWAR_SIZE_512M;
++
++ pci_law[1].bar = CFG_PCI_IO_PHYS & LAWBAR_BAR;
++ pci_law[1].ar = LAWAR_EN | LAWAR_SIZE_1M;
++
++ /*
++ * Configure PCI Outbound Translation Windows
++ */
++
++ /* PCI mem space - prefetch */
++ pci_pot[0].potar = (CFG_PCI_MEM_BASE >> 12) & POTAR_TA_MASK;
++ pci_pot[0].pobar = (CFG_PCI_MEM_PHYS >> 12) & POBAR_BA_MASK;
++ pci_pot[0].pocmr =
++ POCMR_EN | POCMR_SE | (POCMR_CM_256M & POCMR_CM_MASK);
++
++ /* PCI mmio - non-prefetch mem space */
++ pci_pot[1].potar = (CFG_PCI_MMIO_BASE >> 12) & POTAR_TA_MASK;
++ pci_pot[1].pobar = (CFG_PCI_MMIO_PHYS >> 12) & POBAR_BA_MASK;
++ pci_pot[1].pocmr = POCMR_EN | (POCMR_CM_256M & POCMR_CM_MASK);
++
++ /* PCI IO space */
++ pci_pot[2].potar = (CFG_PCI_IO_BASE >> 12) & POTAR_TA_MASK;
++ pci_pot[2].pobar = (CFG_PCI_IO_PHYS >> 12) & POBAR_BA_MASK;
++ pci_pot[2].pocmr = POCMR_EN | POCMR_IO | (POCMR_CM_1M & POCMR_CM_MASK);
++
++ /*
++ * Configure PCI Inbound Translation Windows
++ */
++ pci_ctrl[0].pitar1 = (CFG_PCI_SLV_MEM_LOCAL >> 12) & PITAR_TA_MASK;
++ pci_ctrl[0].pibar1 = (CFG_PCI_SLV_MEM_BUS >> 12) & PIBAR_MASK;
++ pci_ctrl[0].piebar1 = 0x0;
++ pci_ctrl[0].piwar1 =
++ PIWAR_EN | PIWAR_PF | PIWAR_RTT_SNOOP | PIWAR_WTT_SNOOP |
++ PIWAR_IWS_2G;
++
++ /*
++ * Release PCI RST Output signal
++ */
++ udelay(2000);
++ pci_ctrl[0].gcr = 1;
++ udelay(2000);
++
++ hose[0].first_busno = 0;
++ hose[0].last_busno = 0xff;
++
++ /* PCI memory prefetch space */
++ pci_set_region(hose[0].regions + 0,
++ CFG_PCI_MEM_BASE,
++ CFG_PCI_MEM_PHYS,
++ CFG_PCI_MEM_SIZE, PCI_REGION_MEM | PCI_REGION_PREFETCH);
++
++ /* PCI memory space */
++ pci_set_region(hose[0].regions + 1,
++ CFG_PCI_MMIO_BASE,
++ CFG_PCI_MMIO_PHYS, CFG_PCI_MMIO_SIZE, PCI_REGION_MEM);
++
++ /* PCI IO space */
++ pci_set_region(hose[0].regions + 2,
++ CFG_PCI_IO_BASE,
++ CFG_PCI_IO_PHYS, CFG_PCI_IO_SIZE, PCI_REGION_IO);
++
++ /* System memory space */
++ pci_set_region(hose[0].regions + 3,
++ CFG_PCI_SLV_MEM_LOCAL,
++ CFG_PCI_SLV_MEM_BUS,
++ CFG_PCI_SLV_MEM_SIZE,
++ PCI_REGION_MEM | PCI_REGION_MEMORY);
++
++ hose[0].region_count = 4;
++
++ pci_setup_indirect(&hose[0],
++ (CFG_IMMR + 0x8300), (CFG_IMMR + 0x8304));
++
++ pci_register_hose(hose);
++
++ /*
++ * Write command register
++ */
++ reg16 = 0xff;
++ dev = PCI_BDF(0, 0, 0);
++ pci_hose_read_config_word(&hose[0], dev, PCI_COMMAND, &reg16);
++ reg16 |= PCI_COMMAND_SERR | PCI_COMMAND_MASTER | PCI_COMMAND_MEMORY;
++ pci_hose_write_config_word(&hose[0], dev, PCI_COMMAND, reg16);
++
++ /*
++ * Clear non-reserved bits in status register.
++ */
++ pci_hose_write_config_word(&hose[0], dev, PCI_STATUS, 0xffff);
++ pci_hose_write_config_byte(&hose[0], dev, PCI_LATENCY_TIMER, 0x80);
++ pci_hose_write_config_byte(&hose[0], dev, PCI_CACHE_LINE_SIZE, 0x08);
++
++ /*
++ * Hose scan.
++ */
++ hose->last_busno = pci_hose_scan(hose);
++}
++
++#ifdef CONFIG_OF_FLAT_TREE
++void
++ft_pci_setup(void *blob, bd_t *bd)
++{
++ u32 *p;
++ int len;
++
++ p = (u32 *)ft_get_prop(blob, "/" OF_SOC "/pci@8500/bus-range", &len);
++ if (p != NULL) {
++ p[0] = hose[0].first_busno;
++ p[1] = hose[0].last_busno;
++ }
++}
++#endif /* CONFIG_OF_FLAT_TREE */
++#endif /* CONFIG_PCI */
+diff --git a/board/mpc8323erdb/u-boot.lds b/board/mpc8323erdb/u-boot.lds
+new file mode 100644
+index 0000000..937c87a
+--- /dev/null
++++ b/board/mpc8323erdb/u-boot.lds
+@@ -0,0 +1,123 @@
++/*
++ * (C) Copyright 2006
++ * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
++ *
++ * See file CREDITS for list of people who contributed to this
++ * project.
++ *
++ * 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
++ */
++
++OUTPUT_ARCH(powerpc)
++SECTIONS
++{
++ /* Read-only sections, merged into text segment: */
++ . = + SIZEOF_HEADERS;
++ .interp : { *(.interp) }
++ .hash : { *(.hash) }
++ .dynsym : { *(.dynsym) }
++ .dynstr : { *(.dynstr) }
++ .rel.text : { *(.rel.text) }
++ .rela.text : { *(.rela.text) }
++ .rel.data : { *(.rel.data) }
++ .rela.data : { *(.rela.data) }
++ .rel.rodata : { *(.rel.rodata) }
++ .rela.rodata : { *(.rela.rodata) }
++ .rel.got : { *(.rel.got) }
++ .rela.got : { *(.rela.got) }
++ .rel.ctors : { *(.rel.ctors) }
++ .rela.ctors : { *(.rela.ctors) }
++ .rel.dtors : { *(.rel.dtors) }
++ .rela.dtors : { *(.rela.dtors) }
++ .rel.bss : { *(.rel.bss) }
++ .rela.bss : { *(.rela.bss) }
++ .rel.plt : { *(.rel.plt) }
++ .rela.plt : { *(.rela.plt) }
++ .init : { *(.init) }
++ .plt : { *(.plt) }
++ .text :
++ {
++ cpu/mpc83xx/start.o (.text)
++ *(.text)
++ *(.fixup)
++ *(.got1)
++ . = ALIGN(16);
++ *(.rodata)
++ *(.rodata1)
++ *(.rodata.str1.4)
++ *(.eh_frame)
++ }
++ .fini : { *(.fini) } =0
++ .ctors : { *(.ctors) }
++ .dtors : { *(.dtors) }
++
++ /* Read-write section, merged into data segment: */
++ . = (. + 0x0FFF) & 0xFFFFF000;
++ _erotext = .;
++ PROVIDE (erotext = .);
++ .reloc :
++ {
++ *(.got)
++ _GOT2_TABLE_ = .;
++ *(.got2)
++ _FIXUP_TABLE_ = .;
++ *(.fixup)
++ }
++ __got2_entries = (_FIXUP_TABLE_ - _GOT2_TABLE_) >> 2;
++ __fixup_entries = (. - _FIXUP_TABLE_) >> 2;
++
++ .data :
++ {
++ *(.data)
++ *(.data1)
++ *(.sdata)
++ *(.sdata2)
++ *(.dynamic)
++ CONSTRUCTORS
++ }
++ _edata = .;
++ PROVIDE (edata = .);
++
++ . = .;
++ __u_boot_cmd_start = .;
++ .u_boot_cmd : { *(.u_boot_cmd) }
++ __u_boot_cmd_end = .;
++
++
++ . = .;
++ __start___ex_table = .;
++ __ex_table : { *(__ex_table) }
++ __stop___ex_table = .;
++
++ . = ALIGN(4096);
++ __init_begin = .;
++ .text.init : { *(.text.init) }
++ .data.init : { *(.data.init) }
++ . = ALIGN(4096);
++ __init_end = .;
++
++ __bss_start = .;
++ .bss :
++ {
++ *(.sbss) *(.scommon)
++ *(.dynbss)
++ *(.bss)
++ *(COMMON)
++ }
++ _end = . ;
++ PROVIDE (end = .);
++}
++ENTRY(_start)
+diff --git a/include/configs/MPC8323ERDB.h b/include/configs/MPC8323ERDB.h
+new file mode 100644
+index 0000000..ebbc7b0
+--- /dev/null
++++ b/include/configs/MPC8323ERDB.h
+@@ -0,0 +1,589 @@
++/*
++ * Copyright (C) 2006 Freescale Semiconductor, Inc.
++ *
++ * 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
++ */
++
++#ifndef __CONFIG_H
++#define __CONFIG_H
++
++#undef DEBUG
++
++/*
++ * High Level Configuration Options
++ */
++#define CONFIG_E300 1 /* E300 family */
++#define CONFIG_QE 1 /* Has QE */
++#define CONFIG_MPC83XX 1 /* MPC83xx family */
++#define CONFIG_MPC832X 1 /* MPC832x CPU specific */
++
++/*
++ * System Clock Setup
++ */
++#define CONFIG_83XX_CLKIN 66666667 /* in Hz */
++
++#ifndef CONFIG_SYS_CLK_FREQ
++#define CONFIG_SYS_CLK_FREQ 66666667
++#endif
++
++/*
++ * Hardware Reset Configuration Word
++ */
++#define CFG_HRCW_LOW (\
++ HRCWL_LCL_BUS_TO_SCB_CLK_1X1 |\
++ HRCWL_DDR_TO_SCB_CLK_2X1 |\
++ HRCWL_VCO_1X2 |\
++ HRCWL_CSB_TO_CLKIN_2X1 |\
++ HRCWL_CORE_TO_CSB_2_5X1 |\
++ HRCWL_CE_PLL_VCO_DIV_2 |\
++ HRCWL_CE_PLL_DIV_1X1 |\
++ HRCWL_CE_TO_PLL_1X3)
++
++#define CFG_HRCW_HIGH (\
++ HRCWH_PCI_HOST |\
++ HRCWH_PCI1_ARBITER_ENABLE |\
++ HRCWH_CORE_ENABLE |\
++ HRCWH_FROM_0X00000100 |\
++ HRCWH_BOOTSEQ_DISABLE |\
++ HRCWH_SW_WATCHDOG_DISABLE |\
++ HRCWH_ROM_LOC_LOCAL_16BIT |\
++ HRCWH_BIG_ENDIAN |\
++ HRCWH_LALE_NORMAL)
++
++/*
++ * System IO Config
++ */
++#define CFG_SICRL 0x00000000
++
++#define CONFIG_BOARD_EARLY_INIT_F /* call board_pre_init */
++
++/*
++ * IMMR new address
++ */
++#define CFG_IMMR 0xE0000000
++
++/*
++ * DDR Setup
++ */
++#define CFG_DDR_BASE 0x00000000 /* DDR is system memory */
++#define CFG_SDRAM_BASE CFG_DDR_BASE
++#define CFG_DDR_SDRAM_BASE CFG_DDR_BASE
++#define CFG_DDRCDR 0x73000002 /* DDR II voltage is 1.8V */
++
++#undef CONFIG_SPD_EEPROM
++#if defined(CONFIG_SPD_EEPROM)
++/* Determine DDR configuration from I2C interface
++ */
++#define SPD_EEPROM_ADDRESS 0x51 /* DDR SODIMM */
++#else
++/* Manually set up DDR parameters
++ */
++#define CFG_DDR_SIZE 64 /* MB */
++#define CFG_DDR_CS0_CONFIG 0x80840101
++#define CFG_DDR_TIMING_0 0x00220802
++#define CFG_DDR_TIMING_1 0x3935d322
++#define CFG_DDR_TIMING_2 0x0f9048ca
++#define CFG_DDR_TIMING_3 0x00000000
++#define CFG_DDR_CLK_CNTL 0x02000000
++#define CFG_DDR_MODE 0x44400232
++#define CFG_DDR_MODE2 0x8000c000
++#define CFG_DDR_INTERVAL 0x03200064
++#define CFG_DDR_CS0_BNDS 0x00000003
++#define CFG_DDR_SDRAM_CFG 0x43080000
++#define CFG_DDR_SDRAM_CFG2 0x00401000
++#endif
++
++/*
++ * Memory test
++ */
++#undef CFG_DRAM_TEST /* memory test, takes time */
++#define CFG_MEMTEST_START 0x00030000 /* memtest region */
++#define CFG_MEMTEST_END 0x03f00000
++
++/*
++ * The reserved memory
++ */
++#define CFG_MONITOR_BASE TEXT_BASE /* start of monitor */
++
++#if (CFG_MONITOR_BASE < CFG_FLASH_BASE)
++#define CFG_RAMBOOT
++#else
++#undef CFG_RAMBOOT
++#endif
++
++#define CFG_MONITOR_LEN (256 * 1024) /* Reserve 256 kB for Mon */
++#define CFG_MALLOC_LEN (128 * 1024) /* Reserved for malloc */
++
++/*
++ * Initial RAM Base Address Setup
++ */
++#define CFG_INIT_RAM_LOCK 1
++#define CFG_INIT_RAM_ADDR 0xE6000000 /* Initial RAM address */
++#define CFG_INIT_RAM_END 0x1000 /* End of used area in RAM */
++#define CFG_GBL_DATA_SIZE 0x100 /* num bytes initial data */
++#define CFG_GBL_DATA_OFFSET (CFG_INIT_RAM_END - CFG_GBL_DATA_SIZE)
++
++/*
++ * Local Bus Configuration & Clock Setup
++ */
++#define CFG_LCRR (LCRR_DBYP | LCRR_CLKDIV_2)
++#define CFG_LBC_LBCR 0x00000000
++
++/*
++ * FLASH on the Local Bus
++ */
++#define CFG_FLASH_CFI /* use the Common Flash Interface */
++#define CFG_FLASH_CFI_DRIVER /* use the CFI driver */
++#define CFG_FLASH_BASE 0xFE000000 /* FLASH base address */
++#define CFG_FLASH_SIZE 16 /* FLASH size is 16M */
++
++#define CFG_LBLAWBAR0_PRELIM CFG_FLASH_BASE /* Window base at flash base */
++#define CFG_LBLAWAR0_PRELIM 0x80000018 /* 32MB window size */
++
++#define CFG_BR0_PRELIM (CFG_FLASH_BASE | /* Flash Base address */ \
++ (2 << BR_PS_SHIFT) | /* 16 bit port size */ \
++ BR_V) /* valid */
++#define CFG_OR0_PRELIM 0xfe006ff7 /* 16MB Flash size */
++
++#define CFG_MAX_FLASH_BANKS 1 /* number of banks */
++#define CFG_MAX_FLASH_SECT 128 /* sectors per device */
++
++#undef CFG_FLASH_CHECKSUM
++
++/*
++ * SDRAM on the Local Bus
++ */
++#undef CFG_LB_SDRAM /* The board has not SRDAM on local bus */
++
++#ifdef CFG_LB_SDRAM
++#define CFG_LBC_SDRAM_BASE 0xF0000000 /* SDRAM base address */
++#define CFG_LBC_SDRAM_SIZE 64 /* LBC SDRAM is 64MB */
++
++#define CFG_LBLAWBAR2_PRELIM CFG_LBC_SDRAM_BASE
++#define CFG_LBLAWAR2_PRELIM 0x80000019 /* 64MB */
++
++/*local bus BR2, OR2 definition for SDRAM if soldered on the EPB board */
++/*
++ * Base Register 2 and Option Register 2 configure SDRAM.
++ * The SDRAM base address, CFG_LBC_SDRAM_BASE, is 0xf0000000.
++ *
++ * For BR2, need:
++ * Base address of 0xf0000000 = BR[0:16] = 1111 0000 0000 0000 0
++ * port size = 32-bits = BR2[19:20] = 11
++ * no parity checking = BR2[21:22] = 00
++ * SDRAM for MSEL = BR2[24:26] = 011
++ * Valid = BR[31] = 1
++ *
++ * 0 4 8 12 16 20 24 28
++ * 1111 0000 0000 0000 0001 1000 0110 0001 = f0001861
++ *
++ * CFG_LBC_SDRAM_BASE should be masked and OR'ed into
++ * the top 17 bits of BR2.
++ */
++
++#define CFG_BR2_PRELIM 0xf0001861 /*Port size=32bit, MSEL=SDRAM */
++
++/*
++ * The SDRAM size in MB, CFG_LBC_SDRAM_SIZE, is 64.
++ *
++ * For OR2, need:
++ * 64MB mask for AM, OR2[0:7] = 1111 1100
++ * XAM, OR2[17:18] = 11
++ * 9 columns OR2[19-21] = 010
++ * 13 rows OR2[23-25] = 100
++ * EAD set for extra time OR[31] = 1
++ *
++ * 0 4 8 12 16 20 24 28
++ * 1111 1100 0000 0000 0110 1001 0000 0001 = fc006901
++ */
++
++#define CFG_OR2_PRELIM 0xfc006901
++
++#define CFG_LBC_LSRT 0x32000000 /* LB sdram refresh timer, about 6us */
++#define CFG_LBC_MRTPR 0x20000000 /* LB refresh timer prescal, 266MHz/32 */
++
++/*
++ * LSDMR masks
++ */
++#define CFG_LBC_LSDMR_OP_NORMAL (0 << (31 - 4))
++#define CFG_LBC_LSDMR_OP_ARFRSH (1 << (31 - 4))
++#define CFG_LBC_LSDMR_OP_SRFRSH (2 << (31 - 4))
++#define CFG_LBC_LSDMR_OP_MRW (3 << (31 - 4))
++#define CFG_LBC_LSDMR_OP_PRECH (4 << (31 - 4))
++#define CFG_LBC_LSDMR_OP_PCHALL (5 << (31 - 4))
++#define CFG_LBC_LSDMR_OP_ACTBNK (6 << (31 - 4))
++#define CFG_LBC_LSDMR_OP_RWINV (7 << (31 - 4))
++
++#define CFG_LBC_LSDMR_COMMON 0x0063b723
++
++/*
++ * SDRAM Controller configuration sequence.
++ */
++#define CFG_LBC_LSDMR_1 ( CFG_LBC_LSDMR_COMMON \
++ | CFG_LBC_LSDMR_OP_PCHALL)
++#define CFG_LBC_LSDMR_2 ( CFG_LBC_LSDMR_COMMON \
++ | CFG_LBC_LSDMR_OP_ARFRSH)
++#define CFG_LBC_LSDMR_3 ( CFG_LBC_LSDMR_COMMON \
++ | CFG_LBC_LSDMR_OP_ARFRSH)
++#define CFG_LBC_LSDMR_4 ( CFG_LBC_LSDMR_COMMON \
++ | CFG_LBC_LSDMR_OP_MRW)
++#define CFG_LBC_LSDMR_5 ( CFG_LBC_LSDMR_COMMON \
++ | CFG_LBC_LSDMR_OP_NORMAL)
++
++#endif
++
++/*
++ * Windows to access PIB via local bus
++ */
++#define CFG_LBLAWBAR3_PRELIM 0xf8008000 /* windows base 0xf8008000 */
++#define CFG_LBLAWAR3_PRELIM 0x8000000f /* windows size 64KB */
++
++/*
++ * Serial Port
++ */
++#define CONFIG_CONS_INDEX 1
++#undef CONFIG_SERIAL_SOFTWARE_FIFO
++#define CFG_NS16550
++#define CFG_NS16550_SERIAL
++#define CFG_NS16550_REG_SIZE 1
++#define CFG_NS16550_CLK get_bus_freq(0)
++
++#define CFG_BAUDRATE_TABLE \
++ {300, 600, 1200, 2400, 4800, 9600, 19200, 38400,115200}
++
++#define CFG_NS16550_COM1 (CFG_IMMR+0x4500)
++#define CFG_NS16550_COM2 (CFG_IMMR+0x4600)
++
++/* Use the HUSH parser */
++#define CFG_HUSH_PARSER
++#ifdef CFG_HUSH_PARSER
++#define CFG_PROMPT_HUSH_PS2 "> "
++#endif
++
++/* pass open firmware flat tree */
++#define CONFIG_OF_FLAT_TREE 1
++#define CONFIG_OF_BOARD_SETUP 1
++
++/* maximum size of the flat tree (8K) */
++#define OF_FLAT_TREE_MAX_SIZE 8192
++
++#define OF_CPU "PowerPC,8323@0"
++#define OF_SOC "soc8323@e0000000"
++#define OF_TBCLK (bd->bi_busfreq / 4)
++#define OF_STDOUT_PATH "/soc8323@e0000000/serial@4500"
++
++/* I2C */
++#define CONFIG_HARD_I2C /* I2C with hardware support */
++#undef CONFIG_SOFT_I2C /* I2C bit-banged */
++#define CONFIG_FSL_I2C
++#define CFG_I2C_SPEED 400000 /* I2C speed and slave address */
++#define CFG_I2C_SLAVE 0x7F
++#define CFG_I2C_NOPROBES {0x51} /* Don't probe these addrs */
++#define CFG_I2C_OFFSET 0x3000
++
++/*
++ * Config on-board RTC
++ */
++#define CONFIG_RTC_DS1374 /* use ds1374 rtc via i2c */
++#define CFG_I2C_RTC_ADDR 0x68 /* at address 0x68 */
++
++/*
++ * General PCI
++ * Addresses are mapped 1-1.
++ */
++#define CFG_PCI_MEM_BASE 0x80000000
++#define CFG_PCI_MEM_PHYS CFG_PCI_MEM_BASE
++#define CFG_PCI_MEM_SIZE 0x10000000 /* 256M */
++#define CFG_PCI_MMIO_BASE 0x90000000
++#define CFG_PCI_MMIO_PHYS CFG_PCI_MMIO_BASE
++#define CFG_PCI_MMIO_SIZE 0x10000000 /* 256M */
++#define CFG_PCI_IO_BASE 0xd0000000
++#define CFG_PCI_IO_PHYS CFG_PCI_IO_BASE
++#define CFG_PCI_IO_SIZE 0x04000000 /* 64M */
++
++#define CFG_PCI_SLV_MEM_LOCAL CFG_SDRAM_BASE
++#define CFG_PCI_SLV_MEM_BUS 0x00000000
++#define CFG_PCI_SLV_MEM_SIZE 0x80000000
++
++
++#ifdef CONFIG_PCI
++
++#define CONFIG_NET_MULTI
++#define CONFIG_PCI_PNP /* do pci plug-and-play */
++
++#undef CONFIG_EEPRO100
++#undef CONFIG_PCI_SCAN_SHOW /* show pci devices on startup */
++#define CFG_PCI_SUBSYS_VENDORID 0x1957 /* Freescale */
++
++#endif /* CONFIG_PCI */
++
++
++#ifndef CONFIG_NET_MULTI
++#define CONFIG_NET_MULTI 1
++#endif
++
++/*
++ * QE UEC ethernet configuration
++ */
++#define CONFIG_UEC_ETH
++#define CONFIG_ETHPRIME "Freescale GETH"
++
++#define CONFIG_UEC_ETH1 /* ETH3 */
++
++#ifdef CONFIG_UEC_ETH1
++#define CFG_UEC1_UCC_NUM 2 /* UCC3 */
++#define CFG_UEC1_RX_CLK QE_CLK9
++#define CFG_UEC1_TX_CLK QE_CLK10
++#define CFG_UEC1_ETH_TYPE FAST_ETH
++#define CFG_UEC1_PHY_ADDR 4
++#define CFG_UEC1_INTERFACE_MODE ENET_100_MII
++#endif
++
++#define CONFIG_UEC_ETH2 /* ETH4 */
++
++#ifdef CONFIG_UEC_ETH2
++#define CFG_UEC2_UCC_NUM 1 /* UCC2 */
++#define CFG_UEC2_RX_CLK QE_CLK16
++#define CFG_UEC2_TX_CLK QE_CLK3
++#define CFG_UEC2_ETH_TYPE FAST_ETH
++#define CFG_UEC2_PHY_ADDR 0
++#define CFG_UEC2_INTERFACE_MODE ENET_100_MII
++#endif
++
++/*
++ * Environment
++ */
++#ifndef CFG_RAMBOOT
++ #define CFG_ENV_IS_IN_FLASH 1
++ #define CFG_ENV_ADDR (CFG_MONITOR_BASE + 0x40000)
++ #define CFG_ENV_SECT_SIZE 0x40000 /* 256K(one sector) for env */
++ #define CFG_ENV_SIZE 0x2000
++#else
++ #define CFG_NO_FLASH 1 /* Flash is not usable now */
++ #define CFG_ENV_IS_NOWHERE 1 /* Store ENV in memory only */
++ #define CFG_ENV_ADDR (CFG_MONITOR_BASE - 0x1000)
++ #define CFG_ENV_SIZE 0x2000
++#endif
++
++#define CONFIG_LOADS_ECHO 1 /* echo on for serial download */
++#define CFG_LOADS_BAUD_CHANGE 1 /* allow baudrate change */
++
++#if defined(CFG_RAMBOOT)
++#if defined(CONFIG_PCI)
++#define CONFIG_COMMANDS ((CONFIG_CMD_DFL \
++ | CFG_CMD_PING \
++ | CFG_CMD_ASKENV \
++ | CFG_CMD_PCI \
++ | CFG_CMD_I2C) \
++ & \
++ ~(CFG_CMD_ENV \
++ | CFG_CMD_LOADS))
++#else
++#define CONFIG_COMMANDS ((CONFIG_CMD_DFL \
++ | CFG_CMD_PING \
++ | CFG_CMD_ASKENV \
++ | CFG_CMD_I2C) \
++ & \
++ ~(CFG_CMD_ENV \
++ | CFG_CMD_LOADS))
++#endif
++#else
++#if defined(CONFIG_PCI)
++#define CONFIG_COMMANDS (CONFIG_CMD_DFL \
++ | CFG_CMD_PCI \
++ | CFG_CMD_PING \
++ | CFG_CMD_ASKENV \
++ | CFG_CMD_I2C)
++#else
++#define CONFIG_COMMANDS (CONFIG_CMD_DFL \
++ | CFG_CMD_PING \
++ | CFG_CMD_ASKENV \
++ | CFG_CMD_I2C )
++#endif
++#endif
++
++#include <cmd_confdefs.h>
++
++#undef CONFIG_WATCHDOG /* watchdog disabled */
++
++/*
++ * Miscellaneous configurable options
++ */
++#define CFG_LONGHELP /* undef to save memory */
++#define CFG_LOAD_ADDR 0x2000000 /* default load address */
++#define CFG_PROMPT "=> " /* Monitor Command Prompt */
++
++#if (CONFIG_COMMANDS & CFG_CMD_KGDB)
++ #define CFG_CBSIZE 1024 /* Console I/O Buffer Size */
++#else
++ #define CFG_CBSIZE 256 /* Console I/O Buffer Size */
++#endif
++
++#define CFG_PBSIZE (CFG_CBSIZE+sizeof(CFG_PROMPT)+16) /* Print Buffer Size */
++#define CFG_MAXARGS 16 /* max number of command args */
++#define CFG_BARGSIZE CFG_CBSIZE /* Boot Argument Buffer Size */
++#define CFG_HZ 1000 /* decrementer freq: 1ms ticks */
++
++/*
++ * For booting Linux, the board info and command line data
++ * have to be in the first 8 MB of memory, since this is
++ * the maximum mapped by the Linux kernel during initialization.
++ */
++#define CFG_BOOTMAPSZ (8 << 20) /* Initial Memory map for Linux */
++
++/*
++ * Core HID Setup
++ */
++#define CFG_HID0_INIT 0x000000000
++#define CFG_HID0_FINAL HID0_ENABLE_MACHINE_CHECK
++#define CFG_HID2 HID2_HBE
++
++/*
++ * Cache Config
++ */
++#define CFG_DCACHE_SIZE 16384
++#define CFG_CACHELINE_SIZE 32
++#if (CONFIG_COMMANDS & CFG_CMD_KGDB)
++#define CFG_CACHELINE_SHIFT 5 /*log base 2 of the above value */
++#endif
++
++/*
++ * MMU Setup
++ */
++
++/* DDR: cache cacheable */
++#define CFG_IBAT0L (CFG_SDRAM_BASE | BATL_PP_10 | BATL_MEMCOHERENCE)
++#define CFG_IBAT0U (CFG_SDRAM_BASE | BATU_BL_256M | BATU_VS | BATU_VP)
++#define CFG_DBAT0L CFG_IBAT0L
++#define CFG_DBAT0U CFG_IBAT0U
++
++/* IMMRBAR & PCI IO: cache-inhibit and guarded */
++#define CFG_IBAT1L (CFG_IMMR | BATL_PP_10 | \
++ BATL_CACHEINHIBIT | BATL_GUARDEDSTORAGE)
++#define CFG_IBAT1U (CFG_IMMR | BATU_BL_4M | BATU_VS | BATU_VP)
++#define CFG_DBAT1L CFG_IBAT1L
++#define CFG_DBAT1U CFG_IBAT1U
++
++/* FLASH: icache cacheable, but dcache-inhibit and guarded */
++#define CFG_IBAT2L (CFG_FLASH_BASE | BATL_PP_10 | BATL_MEMCOHERENCE)
++#define CFG_IBAT2U (CFG_FLASH_BASE | BATU_BL_32M | BATU_VS | BATU_VP)
++#define CFG_DBAT2L (CFG_FLASH_BASE | BATL_PP_10 | \
++ BATL_CACHEINHIBIT | BATL_GUARDEDSTORAGE)
++#define CFG_DBAT2U CFG_IBAT2U
++
++#define CFG_IBAT3L (0)
++#define CFG_IBAT3U (0)
++#define CFG_DBAT3L CFG_IBAT3L
++#define CFG_DBAT3U CFG_IBAT3U
++
++/* Stack in dcache: cacheable, no memory coherence */
++#define CFG_IBAT4L (CFG_INIT_RAM_ADDR | BATL_PP_10)
++#define CFG_IBAT4U (CFG_INIT_RAM_ADDR | BATU_BL_128K | BATU_VS | BATU_VP)
++#define CFG_DBAT4L CFG_IBAT4L
++#define CFG_DBAT4U CFG_IBAT4U
++
++#ifdef CONFIG_PCI
++/* PCI MEM space: cacheable */
++#define CFG_IBAT5L (CFG_PCI_MEM_PHYS | BATL_PP_10 | BATL_MEMCOHERENCE)
++#define CFG_IBAT5U (CFG_PCI_MEM_PHYS | BATU_BL_256M | BATU_VS | BATU_VP)
++#define CFG_DBAT5L CFG_IBAT5L
++#define CFG_DBAT5U CFG_IBAT5U
++/* PCI MMIO space: cache-inhibit and guarded */
++#define CFG_IBAT6L (CFG_PCI_MMIO_PHYS | BATL_PP_10 | \
++ BATL_CACHEINHIBIT | BATL_GUARDEDSTORAGE)
++#define CFG_IBAT6U (CFG_PCI_MMIO_PHYS | BATU_BL_256M | BATU_VS | BATU_VP)
++#define CFG_DBAT6L CFG_IBAT6L
++#define CFG_DBAT6U CFG_IBAT6U
++#else
++#define CFG_IBAT5L (0)
++#define CFG_IBAT5U (0)
++#define CFG_IBAT6L (0)
++#define CFG_IBAT6U (0)
++#define CFG_DBAT5L CFG_IBAT5L
++#define CFG_DBAT5U CFG_IBAT5U
++#define CFG_DBAT6L CFG_IBAT6L
++#define CFG_DBAT6U CFG_IBAT6U
++#endif
++
++/* Nothing in BAT7 */
++#define CFG_IBAT7L (0)
++#define CFG_IBAT7U (0)
++#define CFG_DBAT7L CFG_IBAT7L
++#define CFG_DBAT7U CFG_IBAT7U
++
++/*
++ * Internal Definitions
++ *
++ * Boot Flags
++ */
++#define BOOTFLAG_COLD 0x01 /* Normal Power-On: Boot from FLASH */
++#define BOOTFLAG_WARM 0x02 /* Software reboot */
++
++#if (CONFIG_COMMANDS & CFG_CMD_KGDB)
++#define CONFIG_KGDB_BAUDRATE 230400 /* speed of kgdb serial port */
++#define CONFIG_KGDB_SER_INDEX 2 /* which serial port to use */
++#endif
++
++/*
++ * Environment Configuration
++ */
++
++#define CONFIG_ENV_OVERWRITE
++
++#if defined(CONFIG_UEC_ETH)
++#define CONFIG_ETHADDR 00:04:9f:ef:03:01
++#define CONFIG_HAS_ETH1
++#define CONFIG_ETH1ADDR 00:04:9f:ef:03:02
++#endif
++
++#define CONFIG_BAUDRATE 115200
++
++#define CONFIG_LOADADDR 200000 /* default location for tftp and bootm */
++
++#define CONFIG_BOOTDELAY 6 /* -1 disables auto-boot */
++#undef CONFIG_BOOTARGS /* the boot command will set bootargs */
++
++#define CONFIG_EXTRA_ENV_SETTINGS \
++ "netdev=eth0\0" \
++ "consoledev=ttyS0\0" \
++ "bootfile=uImage\0" \
++ "ramdiskaddr=1000000\0" \
++ "ramdiskfile=rootfs.ext2.gz.uboot\0" \
++ "fdtaddr=400000\0" \
++ "fdtfile=mpc832x_rdb.dtb\0" \
++ ""
++
++#define CONFIG_NFSBOOTCOMMAND \
++ "setenv bootargs root=/dev/nfs rw " \
++ "nfsroot=$serverip:$rootpath " \
++ "ip=$ipaddr:$serverip:$gatewayip:$netmask:$hostname:$netdev:off " \
++ "console=$consoledev,$baudrate $othbootargs;" \
++ "tftp $loadaddr $bootfile;" \
++ "tftp $fdtaddr $fdtfile;" \
++ "bootm $loadaddr - $fdtaddr"
++
++#define CONFIG_RAMBOOTCOMMAND \
++ "setenv bootargs root=/dev/ram rw " \
++ "console=$consoledev,$baudrate $othbootargs;" \
++ "tftp $ramdiskaddr $ramdiskfile;" \
++ "tftp $loadaddr $bootfile;" \
++ "tftp $fdtaddr $fdtfile;" \
++ "bootm $loadaddr $ramdiskaddr $fdtaddr"
++
++
++#define CONFIG_BOOTCOMMAND CONFIG_RAMBOOTCOMMAND
++
++#endif /* __CONFIG_H */
diff --git a/packages/uboot/u-boot-1.1.6/u-boot-1.1.6-fsl-1-Fix-the-UEC-driver-bug-of-QE.patch b/packages/uboot/u-boot-1.1.6/u-boot-1.1.6-fsl-1-Fix-the-UEC-driver-bug-of-QE.patch
new file mode 100644
index 0000000000..ad2ff243e8
--- /dev/null
+++ b/packages/uboot/u-boot-1.1.6/u-boot-1.1.6-fsl-1-Fix-the-UEC-driver-bug-of-QE.patch
@@ -0,0 +1,62 @@
+21fb83dfa2dcba7982eeb54f4ca7bc1056582c1e
+diff --git a/drivers/qe/uec.c b/drivers/qe/uec.c
+index f640c81..c44a5be 100644
+--- a/drivers/qe/uec.c
++++ b/drivers/qe/uec.c
+@@ -1122,7 +1122,7 @@ static int uec_send(struct eth_device* dev, volatile void *buf, int len)
+ uec_private_t *uec;
+ ucc_fast_private_t *uccf;
+ volatile qe_bd_t *bd;
+- volatile u16 status;
++ u16 status;
+ int i;
+ int result = 0;
+
+@@ -1131,7 +1131,7 @@ static int uec_send(struct eth_device* dev, volatile void *buf, int len)
+ bd = uec->txBd;
+
+ /* Find an empty TxBD */
+- for (i = 0; BD_STATUS(bd) & TxBD_READY; i++) {
++ for (i = 0; bd->status & TxBD_READY; i++) {
+ if (i > 0x100000) {
+ printf("%s: tx buffer not ready\n", dev->name);
+ return result;
+@@ -1150,13 +1150,11 @@ static int uec_send(struct eth_device* dev, volatile void *buf, int len)
+ ucc_fast_transmit_on_demand(uccf);
+
+ /* Wait for buffer to be transmitted */
+- status = BD_STATUS(bd);
+- for (i = 0; status & TxBD_READY; i++) {
++ for (i = 0; bd->status & TxBD_READY; i++) {
+ if (i > 0x100000) {
+ printf("%s: tx error\n", dev->name);
+ return result;
+ }
+- status = BD_STATUS(bd);
+ }
+
+ /* Ok, the buffer be transimitted */
+@@ -1171,12 +1169,12 @@ static int uec_recv(struct eth_device* dev)
+ {
+ uec_private_t *uec = dev->priv;
+ volatile qe_bd_t *bd;
+- volatile u16 status;
++ u16 status;
+ u16 len;
+ u8 *data;
+
+ bd = uec->rxBd;
+- status = BD_STATUS(bd);
++ status = bd->status;
+
+ while (!(status & RxBD_EMPTY)) {
+ if (!(status & RxBD_ERROR)) {
+@@ -1190,7 +1188,7 @@ static int uec_recv(struct eth_device* dev)
+ BD_LENGTH_SET(bd, 0);
+ BD_STATUS_SET(bd, status | RxBD_EMPTY);
+ BD_ADVANCE(bd, status, uec->p_rx_bd_ring);
+- status = BD_STATUS(bd);
++ status = bd->status;
+ }
+ uec->rxBd = bd;
+
diff --git a/packages/uboot/u-boot-1.1.6/u-boot-1.1.6-fsl-1-UEC-remove-udelay.patch b/packages/uboot/u-boot-1.1.6/u-boot-1.1.6-fsl-1-UEC-remove-udelay.patch
new file mode 100644
index 0000000000..9e2829bd3e
--- /dev/null
+++ b/packages/uboot/u-boot-1.1.6/u-boot-1.1.6-fsl-1-UEC-remove-udelay.patch
@@ -0,0 +1,15 @@
+123b7d94ab4fa50a62aa9c0c0202d4e2c99a14c8
+diff --git a/drivers/qe/uec.c b/drivers/qe/uec.c
+index aea455b..a327a34 100644
+--- a/drivers/qe/uec.c
++++ b/drivers/qe/uec.c
+@@ -567,9 +567,6 @@ static void phy_change(struct eth_device *dev)
+
+ uec_regs = uec->uec_regs;
+
+- /* Delay 5s to give the PHY a chance to change the register state */
+- udelay(5000000);
+-
+ /* Update the link, speed, duplex */
+ result = uec->mii_info->phyinfo->read_status(uec->mii_info);
+
diff --git a/packages/uboot/u-boot-1.1.6/u-boot-1.1.6-fsl-1-mpc83xx-20061206.patch b/packages/uboot/u-boot-1.1.6/u-boot-1.1.6-fsl-1-mpc83xx-20061206.patch
new file mode 100644
index 0000000000..5f3e1f7aaa
--- /dev/null
+++ b/packages/uboot/u-boot-1.1.6/u-boot-1.1.6-fsl-1-mpc83xx-20061206.patch
@@ -0,0 +1,32020 @@
+This patch, when applied against the external pristine
+tarball u-boot-1.1.6.tar.bz2, makes the u-boot code match the git tree
+with sha1 dd520bf314c7add4183c5191692180f576f96b60,
+in the repository http://opensource.freescale.com/pub/scm/u-boot-83xx.git.
+This git tag is identified for this code baseline: u-boot-1.1.6-fsl-1
+
+The patch includes support changes for mpc8349itx, mpc8349emds, and mpc8360emds
+as well as many other changes as of November 30, 2006.
+
+diff -Naupr u-boot-1.1.6/board/amcc/yellowstone/yellowstone.c u-boot-1.1.6-fsl-1/board/amcc/yellowstone/yellowstone.c
+--- u-boot-1.1.6/board/amcc/yellowstone/yellowstone.c 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/board/amcc/yellowstone/yellowstone.c 2006-11-30 12:34:13.000000000 -0600
+@@ -552,3 +552,9 @@ void hw_watchdog_reset(void)
+
+ }
+ #endif
++
++void board_reset(void)
++{
++ /* give reset to BCSR */
++ *(unsigned char *)(CFG_BCSR_BASE | 0x06) = 0x09;
++}
+diff -Naupr u-boot-1.1.6/board/amcc/yosemite/yosemite.c u-boot-1.1.6-fsl-1/board/amcc/yosemite/yosemite.c
+--- u-boot-1.1.6/board/amcc/yosemite/yosemite.c 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/board/amcc/yosemite/yosemite.c 2006-11-30 12:34:13.000000000 -0600
+@@ -548,3 +548,9 @@ void hw_watchdog_reset(void)
+
+ }
+ #endif
++
++void board_reset(void)
++{
++ /* give reset to BCSR */
++ *(unsigned char *)(CFG_BCSR_BASE | 0x06) = 0x09;
++}
+diff -Naupr u-boot-1.1.6/board/bc3450/bc3450.c u-boot-1.1.6-fsl-1/board/bc3450/bc3450.c
+--- u-boot-1.1.6/board/bc3450/bc3450.c 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/board/bc3450/bc3450.c 2006-11-10 11:24:28.000000000 -0600
+@@ -295,7 +295,6 @@ void pci_init_board(void)
+ #endif
+
+ #if defined (CFG_CMD_IDE) && defined (CONFIG_IDE_RESET)
+-#define GPIO_PSC1_4 0x01000000UL
+
+ void init_ide_reset (void)
+ {
+@@ -311,9 +310,9 @@ void ide_set_reset (int idereset)
+ debug ("ide_reset(%d)\n", idereset);
+
+ if (idereset) {
+- *(vu_long *) MPC5XXX_WU_GPIO_DATA &= ~GPIO_PSC1_4;
++ *(vu_long *) MPC5XXX_WU_GPIO_DATA_O &= ~GPIO_PSC1_4;
+ } else {
+- *(vu_long *) MPC5XXX_WU_GPIO_DATA |= GPIO_PSC1_4;
++ *(vu_long *) MPC5XXX_WU_GPIO_DATA_O |= GPIO_PSC1_4;
+ }
+ }
+ #endif /* defined (CFG_CMD_IDE) && defined (CONFIG_IDE_RESET) */
+diff -Naupr u-boot-1.1.6/board/BuS/EB+MCF-EV123/cfm_flash.c u-boot-1.1.6-fsl-1/board/BuS/EB+MCF-EV123/cfm_flash.c
+--- u-boot-1.1.6/board/BuS/EB+MCF-EV123/cfm_flash.c 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/board/BuS/EB+MCF-EV123/cfm_flash.c 2006-12-06 10:33:49.000000000 -0600
+@@ -60,7 +60,7 @@ void cfm_flash_init (flash_info_t * info
+ MCFCFM_MCR = 0;
+ MCFCFM_CLKD = CFM_CLK;
+ debug ("CFM Clock divider: %ld (%d Hz @ %ld Hz)\n",CFM_CLK,\
+- CFG_CLK / (2* ((CFM_CLK & 0x3F)+1) * (1+((CFM_CLK & 0x40)>>6)*7)),\
++ CFG_CLK / (2* ((CFM_CLK & 0x3F)+1) * (1+((CFM_CLK & 0x40)>>6)*7)),\
+ CFG_CLK);
+ MCFCFM_SACC = 0;
+ MCFCFM_DACC = 0;
+diff -Naupr u-boot-1.1.6/board/BuS/EB+MCF-EV123/EB+MCF-EV123.c u-boot-1.1.6-fsl-1/board/BuS/EB+MCF-EV123/EB+MCF-EV123.c
+--- u-boot-1.1.6/board/BuS/EB+MCF-EV123/EB+MCF-EV123.c 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/board/BuS/EB+MCF-EV123/EB+MCF-EV123.c 2006-12-06 10:33:49.000000000 -0600
+@@ -50,13 +50,13 @@ long int initdram (int board_type)
+
+ MCFSDRAMC_DACR0 = MCFSDRAMC_DACR_BASE(CFG_SDRAM_BASE0)
+ | MCFSDRAMC_DACR_CASL(1)
+- | MCFSDRAMC_DACR_CBM(3)
++ | MCFSDRAMC_DACR_CBM(3)
+ | MCFSDRAMC_DACR_PS_16);
+
+ MCFSDRAMC_DMR0 = MCFSDRAMC_DMR_BAM_16M
+ | MCFSDRAMC_DMR_V;
+
+- MCFSDRAMC_DACR0 |= MCFSDRAMC_DACR_IP;
++ MCFSDRAMC_DACR0 |= MCFSDRAMC_DACR_IP;
+
+ *(unsigned short *)(CFG_SDRAM_BASE0) = 0xA5A5;
+ MCFSDRAMC_DACR0 |= MCFSDRAMC_DACR_RE;
+@@ -70,10 +70,10 @@ long int initdram (int board_type)
+ #ifdef CFG_SDRAM_BASE1
+ MCFSDRAMC_DACR1 = MCFSDRAMC_DACR_BASE(CFG_SDRAM_BASE1)
+ | MCFSDRAMC_DACR_CASL(1)
+- | MCFSDRAMC_DACR_CBM(3)
++ | MCFSDRAMC_DACR_CBM(3)
+ | MCFSDRAMC_DACR_PS_16;
+
+- MCFSDRAMC_DMR1 = MCFSDRAMC_DMR_BAM_16M
++ MCFSDRAMC_DMR1 = MCFSDRAMC_DMR_BAM_16M
+ | MCFSDRAMC_DMR_V;
+
+ MCFSDRAMC_DACR1 |= MCFSDRAMC_DACR_IP;
+@@ -82,7 +82,7 @@ long int initdram (int board_type)
+ MCFSDRAMC_DACR1 |= MCFSDRAMC_DACR_RE;
+ for (i=0; i < 2000; i++)
+ asm(" nop");
+- MCFSDRAMC_DACR1 |= MCFSDRAMC_DACR_IMRS;
++ MCFSDRAMC_DACR1 |= MCFSDRAMC_DACR_IMRS;
+ *(unsigned int *)(CFG_SDRAM_BASE1 + 0x220) = 0xA5A5;
+ size += CFG_SDRAM_SIZE1 * 1024 * 1024;
+ #endif
+diff -Naupr u-boot-1.1.6/board/BuS/EB+MCF-EV123/flash.c u-boot-1.1.6-fsl-1/board/BuS/EB+MCF-EV123/flash.c
+--- u-boot-1.1.6/board/BuS/EB+MCF-EV123/flash.c 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/board/BuS/EB+MCF-EV123/flash.c 2006-12-06 10:33:49.000000000 -0600
+@@ -256,7 +256,7 @@ int flash_erase (flash_info_t * info, in
+ enable_interrupts ();
+
+ if (cflag)
+- icache_enable ();
++ icache_enable ();
+
+ return rc;
+ }
+diff -Naupr u-boot-1.1.6/board/BuS/EB+MCF-EV123/u-boot.lds u-boot-1.1.6-fsl-1/board/BuS/EB+MCF-EV123/u-boot.lds
+--- u-boot-1.1.6/board/BuS/EB+MCF-EV123/u-boot.lds 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/board/BuS/EB+MCF-EV123/u-boot.lds 2006-12-06 10:33:49.000000000 -0600
+@@ -34,11 +34,11 @@ SECTIONS
+ .dynsym : { *(.dynsym) }
+ .dynstr : { *(.dynstr) }
+ .rel.text : { *(.rel.text) }
+- .rela.text : { *(.rela.text) }
++ .rela.text : { *(.rela.text) }
+ .rel.data : { *(.rel.data) }
+- .rela.data : { *(.rela.data) }
+- .rel.rodata : { *(.rel.rodata) }
+- .rela.rodata : { *(.rela.rodata) }
++ .rela.data : { *(.rela.data) }
++ .rel.rodata : { *(.rel.rodata) }
++ .rela.rodata : { *(.rela.rodata) }
+ .rel.got : { *(.rel.got) }
+ .rela.got : { *(.rela.got) }
+ .rel.ctors : { *(.rel.ctors) }
+diff -Naupr u-boot-1.1.6/board/BuS/EB+MCF-EV123/VCxK.c u-boot-1.1.6-fsl-1/board/BuS/EB+MCF-EV123/VCxK.c
+--- u-boot-1.1.6/board/BuS/EB+MCF-EV123/VCxK.c 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/board/BuS/EB+MCF-EV123/VCxK.c 2006-12-06 10:33:49.000000000 -0600
+@@ -66,7 +66,7 @@ int init_vcxk(void)
+ return 1;
+ }
+
+-void vcxk_loadimage(ulong source)
++void vcxk_loadimage(ulong source)
+ {
+ int cnt;
+ vcxk_acknowledge_wait();
+diff -Naupr u-boot-1.1.6/board/BuS/EB+MCF-EV123/VCxK.h u-boot-1.1.6-fsl-1/board/BuS/EB+MCF-EV123/VCxK.h
+--- u-boot-1.1.6/board/BuS/EB+MCF-EV123/VCxK.h 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/board/BuS/EB+MCF-EV123/VCxK.h 2006-12-06 10:33:49.000000000 -0600
+@@ -25,24 +25,24 @@
+ #define __VCXK_H_
+
+ extern int init_vcxk(void);
+-void vcxk_loadimage(ulong source);
++void vcxk_loadimage(ulong source);
+
+ #define VIDEO_ACKNOWLEDGE_PORT MCFGPTB_GPTPORT
+-#define VIDEO_ACKNOWLEDGE_DDR MCFGPTB_GPTDDR
++#define VIDEO_ACKNOWLEDGE_DDR MCFGPTB_GPTDDR
+ #define VIDEO_ACKNOWLEDGE_PIN 0x0001
+
+-#define VIDEO_ENABLE_PORT MCFGPTB_GPTPORT
+-#define VIDEO_ENABLE_DDR MCFGPTB_GPTDDR
++#define VIDEO_ENABLE_PORT MCFGPTB_GPTPORT
++#define VIDEO_ENABLE_DDR MCFGPTB_GPTDDR
+ #define VIDEO_ENABLE_PIN 0x0002
+
+-#define VIDEO_REQUEST_PORT MCFGPTB_GPTPORT
+-#define VIDEO_REQUEST_DDR MCFGPTB_GPTDDR
++#define VIDEO_REQUEST_PORT MCFGPTB_GPTPORT
++#define VIDEO_REQUEST_DDR MCFGPTB_GPTDDR
+ #define VIDEO_REQUEST_PIN 0x0004
+
+ #define VIDEO_Invert_CFG MCFGPIO_PEPAR
+ #define VIDEO_Invert_IO MCFGPIO_PEPAR_PEPA2
+-#define VIDEO_INVERT_PORT MCFGPIO_PORTE
+-#define VIDEO_INVERT_DDR MCFGPIO_DDRE
++#define VIDEO_INVERT_PORT MCFGPIO_PORTE
++#define VIDEO_INVERT_DDR MCFGPIO_DDRE
+ #define VIDEO_INVERT_PIN MCFGPIO_PORT2
+
+ #endif
+diff -Naupr u-boot-1.1.6/board/emk/top5200/top5200.c u-boot-1.1.6-fsl-1/board/emk/top5200/top5200.c
+--- u-boot-1.1.6/board/emk/top5200/top5200.c 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/board/emk/top5200/top5200.c 2006-12-06 10:33:49.000000000 -0600
+@@ -186,13 +186,11 @@ void pci_init_board(void)
+ *****************************************************************************/
+ #if defined (CFG_CMD_IDE) && defined (CONFIG_IDE_RESET)
+
+-#define GPIO_PSC1_4 0x01000000UL
+-
+ void init_ide_reset (void)
+ {
+ debug ("init_ide_reset\n");
+
+- /* Configure PSC1_4 as GPIO output for ATA reset */
++ /* Configure PSC1_4 as GPIO output for ATA reset */
+ *(vu_long *) MPC5XXX_WU_GPIO_ENABLE |= GPIO_PSC1_4;
+ *(vu_long *) MPC5XXX_WU_GPIO_DIR |= GPIO_PSC1_4;
+ }
+@@ -202,9 +200,9 @@ void ide_set_reset (int idereset)
+ debug ("ide_reset(%d)\n", idereset);
+
+ if (idereset) {
+- *(vu_long *) MPC5XXX_WU_GPIO_DATA &= ~GPIO_PSC1_4;
++ *(vu_long *) MPC5XXX_WU_GPIO_DATA_O &= ~GPIO_PSC1_4;
+ } else {
+- *(vu_long *) MPC5XXX_WU_GPIO_DATA |= GPIO_PSC1_4;
++ *(vu_long *) MPC5XXX_WU_GPIO_DATA_O |= GPIO_PSC1_4;
+ }
+ }
+ #endif /* defined (CFG_CMD_IDE) && defined (CONFIG_IDE_RESET) */
+diff -Naupr u-boot-1.1.6/board/esd/cpci5200/cpci5200.c u-boot-1.1.6-fsl-1/board/esd/cpci5200/cpci5200.c
+--- u-boot-1.1.6/board/esd/cpci5200/cpci5200.c 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/board/esd/cpci5200/cpci5200.c 2006-12-06 10:33:49.000000000 -0600
+@@ -191,16 +191,13 @@ static struct pci_controller hose;
+
+ extern void pci_mpc5xxx_init(struct pci_controller *);
+
+-void pci_init_board(void
+- ) {
++void pci_init_board(void) {
+ pci_mpc5xxx_init(&hose);
+ }
+ #endif
+
+ #if defined (CFG_CMD_IDE) && defined (CONFIG_IDE_RESET)
+
+-#define GPIO_PSC1_4 0x01000000UL
+-
+ void init_ide_reset(void)
+ {
+ debug("init_ide_reset\n");
+@@ -215,9 +212,9 @@ void ide_set_reset(int idereset)
+ debug("ide_reset(%d)\n", idereset);
+
+ if (idereset) {
+- *(vu_long *) MPC5XXX_WU_GPIO_DATA &= ~GPIO_PSC1_4;
++ *(vu_long *) MPC5XXX_WU_GPIO_DATA_O &= ~GPIO_PSC1_4;
+ } else {
+- *(vu_long *) MPC5XXX_WU_GPIO_DATA |= GPIO_PSC1_4;
++ *(vu_long *) MPC5XXX_WU_GPIO_DATA_O |= GPIO_PSC1_4;
+ }
+ }
+ #endif /* defined (CFG_CMD_IDE) && defined (CONFIG_IDE_RESET) */
+@@ -242,7 +239,7 @@ void init_ata_reset(void)
+ debug("init_ata_reset\n");
+
+ /* Configure GPIO_WU6 as GPIO output for ATA reset */
+- *(vu_long *) MPC5XXX_WU_GPIO_DATA |= GPIO_WU6;
++ *(vu_long *) MPC5XXX_WU_GPIO_DATA_O |= GPIO_WU6;
+ *(vu_long *) MPC5XXX_WU_GPIO_ENABLE |= GPIO_WU6;
+ *(vu_long *) MPC5XXX_WU_GPIO_DIR |= GPIO_WU6;
+ __asm__ volatile ("sync");
+diff -Naupr u-boot-1.1.6/board/esd/pf5200/pf5200.c u-boot-1.1.6-fsl-1/board/esd/pf5200/pf5200.c
+--- u-boot-1.1.6/board/esd/pf5200/pf5200.c 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/board/esd/pf5200/pf5200.c 2006-12-06 10:33:49.000000000 -0600
+@@ -191,16 +191,13 @@ static struct pci_controller hose;
+
+ extern void pci_mpc5xxx_init(struct pci_controller *);
+
+-void pci_init_board(void
+- ) {
++void pci_init_board(void) {
+ pci_mpc5xxx_init(&hose);
+ }
+ #endif
+
+ #if defined (CFG_CMD_IDE) && defined (CONFIG_IDE_RESET)
+
+-#define GPIO_PSC1_4 0x01000000UL
+-
+ void init_ide_reset(void)
+ {
+ debug("init_ide_reset\n");
+@@ -215,9 +212,9 @@ void ide_set_reset(int idereset)
+ debug("ide_reset(%d)\n", idereset);
+
+ if (idereset) {
+- *(vu_long *) MPC5XXX_WU_GPIO_DATA &= ~GPIO_PSC1_4;
++ *(vu_long *) MPC5XXX_WU_GPIO_DATA_O &= ~GPIO_PSC1_4;
+ } else {
+- *(vu_long *) MPC5XXX_WU_GPIO_DATA |= GPIO_PSC1_4;
++ *(vu_long *) MPC5XXX_WU_GPIO_DATA_O |= GPIO_PSC1_4;
+ }
+ }
+ #endif /* defined (CFG_CMD_IDE) && defined (CONFIG_IDE_RESET) */
+@@ -242,7 +239,7 @@ void init_power_switch(void)
+ debug("init_power_switch\n");
+
+ /* Configure GPIO_WU6 as GPIO output for ATA reset */
+- *(vu_long *) MPC5XXX_WU_GPIO_DATA |= GPIO_WU6;
++ *(vu_long *) MPC5XXX_WU_GPIO_DATA_O |= GPIO_WU6;
+ *(vu_long *) MPC5XXX_WU_GPIO_ENABLE |= GPIO_WU6;
+ *(vu_long *) MPC5XXX_WU_GPIO_DIR |= GPIO_WU6;
+ __asm__ volatile ("sync");
+@@ -272,10 +269,10 @@ void power_set_reset(int power)
+ debug("ide_set_reset(%d)\n", power);
+
+ if (power) {
+- *(vu_long *) MPC5XXX_WU_GPIO_DATA &= ~GPIO_WU6;
++ *(vu_long *) MPC5XXX_WU_GPIO_DATA_O &= ~GPIO_WU6;
+ *(vu_long *) MPC5XXX_INTERRUPT_GPIO_DATA_OUTPUT &= ~GPIO_USB9;
+ } else {
+- *(vu_long *) MPC5XXX_WU_GPIO_DATA |= GPIO_WU6;
++ *(vu_long *) MPC5XXX_WU_GPIO_DATA_O |= GPIO_WU6;
+ if ((*(vu_long *) MPC5XXX_INTERRUPT_GPIO_STATUS & GPIO_USB9S) ==
+ 0) {
+ *(vu_long *) MPC5XXX_SIMPLEIO_GPIO_DATA_OUTPUT |=
+diff -Naupr u-boot-1.1.6/board/icecube/icecube.c u-boot-1.1.6-fsl-1/board/icecube/icecube.c
+--- u-boot-1.1.6/board/icecube/icecube.c 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/board/icecube/icecube.c 2006-12-06 10:33:49.000000000 -0600
+@@ -29,6 +29,10 @@
+ #include <pci.h>
+ #include <asm/processor.h>
+
++#if defined(CONFIG_OF_FLAT_TREE)
++#include <ft_build.h>
++#endif
++
+ #if defined(CONFIG_LITE5200B)
+ #include "mt46v32m16.h"
+ #else
+@@ -308,17 +312,15 @@ void pci_init_board(void)
+
+ #if defined (CFG_CMD_IDE) && defined (CONFIG_IDE_RESET)
+
+-#define GPIO_PSC1_4 0x01000000UL
+-
+ void init_ide_reset (void)
+ {
+ debug ("init_ide_reset\n");
+
+- /* Configure PSC1_4 as GPIO output for ATA reset */
++ /* Configure PSC1_4 as GPIO output for ATA reset */
+ *(vu_long *) MPC5XXX_WU_GPIO_ENABLE |= GPIO_PSC1_4;
+ *(vu_long *) MPC5XXX_WU_GPIO_DIR |= GPIO_PSC1_4;
+ /* Deassert reset */
+- *(vu_long *) MPC5XXX_WU_GPIO_DATA |= GPIO_PSC1_4;
++ *(vu_long *) MPC5XXX_WU_GPIO_DATA_O |= GPIO_PSC1_4;
+ }
+
+ void ide_set_reset (int idereset)
+@@ -326,11 +328,19 @@ void ide_set_reset (int idereset)
+ debug ("ide_reset(%d)\n", idereset);
+
+ if (idereset) {
+- *(vu_long *) MPC5XXX_WU_GPIO_DATA &= ~GPIO_PSC1_4;
++ *(vu_long *) MPC5XXX_WU_GPIO_DATA_O &= ~GPIO_PSC1_4;
+ /* Make a delay. MPC5200 spec says 25 usec min */
+ udelay(500000);
+ } else {
+- *(vu_long *) MPC5XXX_WU_GPIO_DATA |= GPIO_PSC1_4;
++ *(vu_long *) MPC5XXX_WU_GPIO_DATA_O |= GPIO_PSC1_4;
+ }
+ }
+ #endif /* defined (CFG_CMD_IDE) && defined (CONFIG_IDE_RESET) */
++
++#if defined(CONFIG_OF_FLAT_TREE) && defined(CONFIG_OF_BOARD_SETUP)
++void
++ft_board_setup(void *blob, bd_t *bd)
++{
++ ft_cpu_setup(blob, bd);
++}
++#endif
+diff -Naupr u-boot-1.1.6/board/inka4x0/inka4x0.c u-boot-1.1.6-fsl-1/board/inka4x0/inka4x0.c
+--- u-boot-1.1.6/board/inka4x0/inka4x0.c 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/board/inka4x0/inka4x0.c 2006-11-10 11:24:28.000000000 -0600
+@@ -173,9 +173,6 @@ void flash_preinit(void)
+ *(vu_long *)MPC5XXX_BOOTCS_CFG &= ~0x1; /* clear RO */
+ }
+
+-#define GPIO_WKUP_7 0x80000000UL
+-#define GPIO_PSC3_9 0x04000000UL
+-
+ int misc_init_f (void)
+ {
+ uchar tmp[10];
+@@ -218,13 +215,13 @@ int misc_init_f (void)
+ *(vu_long *)MPC5XXX_WU_GPIO_DIR |= 0xc4000000;
+
+ /* Set LR mirror bit because it is low-active */
+- *(vu_long *)MPC5XXX_WU_GPIO_DATA |= GPIO_WKUP_7;
++ *(vu_long *) MPC5XXX_WU_GPIO_DATA_O |= GPIO_WKUP_7;
+ /*
+ * Reset Coral-P graphics controller
+ */
+ *(vu_long *) MPC5XXX_WU_GPIO_ENABLE |= GPIO_PSC3_9;
+ *(vu_long *) MPC5XXX_WU_GPIO_DIR |= GPIO_PSC3_9;
+- *(vu_long *) MPC5XXX_WU_GPIO_DATA |= GPIO_PSC3_9;
++ *(vu_long *) MPC5XXX_WU_GPIO_DATA_O |= GPIO_PSC3_9;
+ return 0;
+ }
+
+@@ -241,8 +238,6 @@ void pci_init_board(void)
+
+ #if defined (CFG_CMD_IDE) && defined (CONFIG_IDE_RESET)
+
+-#define GPIO_PSC1_4 0x01000000UL
+-
+ void init_ide_reset (void)
+ {
+ debug ("init_ide_reset\n");
+@@ -251,7 +246,7 @@ void init_ide_reset (void)
+ *(vu_long *) MPC5XXX_WU_GPIO_ENABLE |= GPIO_PSC1_4;
+ *(vu_long *) MPC5XXX_WU_GPIO_DIR |= GPIO_PSC1_4;
+ /* Deassert reset */
+- *(vu_long *) MPC5XXX_WU_GPIO_DATA |= GPIO_PSC1_4;
++ *(vu_long *) MPC5XXX_WU_GPIO_DATA_O |= GPIO_PSC1_4;
+ }
+
+ void ide_set_reset (int idereset)
+@@ -259,11 +254,11 @@ void ide_set_reset (int idereset)
+ debug ("ide_reset(%d)\n", idereset);
+
+ if (idereset) {
+- *(vu_long *) MPC5XXX_WU_GPIO_DATA &= ~GPIO_PSC1_4;
++ *(vu_long *) MPC5XXX_WU_GPIO_DATA_O &= ~GPIO_PSC1_4;
+ /* Make a delay. MPC5200 spec says 25 usec min */
+ udelay(500000);
+ } else {
+- *(vu_long *) MPC5XXX_WU_GPIO_DATA |= GPIO_PSC1_4;
++ *(vu_long *) MPC5XXX_WU_GPIO_DATA_O |= GPIO_PSC1_4;
+ }
+ }
+ #endif /* defined (CFG_CMD_IDE) && defined (CONFIG_IDE_RESET) */
+diff -Naupr u-boot-1.1.6/board/LEOX/elpt860/u-boot.lds u-boot-1.1.6-fsl-1/board/LEOX/elpt860/u-boot.lds
+--- u-boot-1.1.6/board/LEOX/elpt860/u-boot.lds 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/board/LEOX/elpt860/u-boot.lds 2006-12-06 10:33:49.000000000 -0600
+@@ -43,11 +43,11 @@ SECTIONS
+ .dynsym : { *(.dynsym) }
+ .dynstr : { *(.dynstr) }
+ .rel.text : { *(.rel.text) }
+- .rela.text : { *(.rela.text) }
++ .rela.text : { *(.rela.text) }
+ .rel.data : { *(.rel.data) }
+- .rela.data : { *(.rela.data) }
+- .rel.rodata : { *(.rel.rodata) }
+- .rela.rodata : { *(.rela.rodata) }
++ .rela.data : { *(.rela.data) }
++ .rel.rodata : { *(.rel.rodata) }
++ .rela.rodata : { *(.rela.rodata) }
+ .rel.got : { *(.rel.got) }
+ .rela.got : { *(.rela.got) }
+ .rel.ctors : { *(.rel.ctors) }
+diff -Naupr u-boot-1.1.6/board/LEOX/elpt860/u-boot.lds.debug u-boot-1.1.6-fsl-1/board/LEOX/elpt860/u-boot.lds.debug
+--- u-boot-1.1.6/board/LEOX/elpt860/u-boot.lds.debug 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/board/LEOX/elpt860/u-boot.lds.debug 2006-12-06 10:33:49.000000000 -0600
+@@ -43,11 +43,11 @@ SECTIONS
+ .dynsym : { *(.dynsym) }
+ .dynstr : { *(.dynstr) }
+ .rel.text : { *(.rel.text) }
+- .rela.text : { *(.rela.text) }
++ .rela.text : { *(.rela.text) }
+ .rel.data : { *(.rel.data) }
+- .rela.data : { *(.rela.data) }
+- .rel.rodata : { *(.rel.rodata) }
+- .rela.rodata : { *(.rela.rodata) }
++ .rela.data : { *(.rela.data) }
++ .rel.rodata : { *(.rel.rodata) }
++ .rela.rodata : { *(.rela.rodata) }
+ .rel.got : { *(.rel.got) }
+ .rela.got : { *(.rela.got) }
+ .rel.ctors : { *(.rel.ctors) }
+diff -Naupr u-boot-1.1.6/board/MAI/AmigaOneG3SE/articiaS_pci.c u-boot-1.1.6-fsl-1/board/MAI/AmigaOneG3SE/articiaS_pci.c
+--- u-boot-1.1.6/board/MAI/AmigaOneG3SE/articiaS_pci.c 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/board/MAI/AmigaOneG3SE/articiaS_pci.c 2006-12-06 10:33:49.000000000 -0600
+@@ -368,11 +368,11 @@ void articiaS_pci_init (void)
+ if (articiaS_init_vga() == -1)
+ {
+ /* If the VGA didn't init and we have stdout set to VGA, reset to serial */
+-/* s = getenv("stdout"); */
+-/* if (s && strcmp(s, "vga") == 0) */
+-/* { */
+-/* setenv("stdout", "serial"); */
+-/* } */
++/* s = getenv("stdout"); */
++/* if (s && strcmp(s, "vga") == 0) */
++/* { */
++/* setenv("stdout", "serial"); */
++/* } */
+ }
+ }
+ pci_write_config_byte(PCI_BDF(0,1,0), PCI_INTERRUPT_LINE, 0xFF);
+diff -Naupr u-boot-1.1.6/board/MAI/AmigaOneG3SE/enet.c u-boot-1.1.6-fsl-1/board/MAI/AmigaOneG3SE/enet.c
+--- u-boot-1.1.6/board/MAI/AmigaOneG3SE/enet.c 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/board/MAI/AmigaOneG3SE/enet.c 2006-12-06 10:33:49.000000000 -0600
+@@ -41,57 +41,57 @@
+
+ /* 3Com Commands, top 5 bits are command and bottom 11 bits are parameters */
+
+-#define TotalReset (0<<11)
+-#define SelectWindow (1<<11)
+-#define StartCoax (2<<11)
+-#define RxDisable (3<<11)
+-#define RxEnable (4<<11)
+-#define RxReset (5<<11)
+-#define UpStall (6<<11)
+-#define UpUnstall (6<<11)+1
+-#define DownStall (6<<11)+2
+-#define DownUnstall (6<<11)+3
+-#define RxDiscard (8<<11)
+-#define TxEnable (9<<11)
+-#define TxDisable (10<<11)
+-#define TxReset (11<<11)
+-#define FakeIntr (12<<11)
+-#define AckIntr (13<<11)
+-#define SetIntrEnb (14<<11)
+-#define SetStatusEnb (15<<11)
+-#define SetRxFilter (16<<11)
+-#define SetRxThreshold (17<<11)
+-#define SetTxThreshold (18<<11)
+-#define SetTxStart (19<<11)
+-#define StartDMAUp (20<<11)
+-#define StartDMADown (20<<11)+1
++#define TotalReset (0<<11)
++#define SelectWindow (1<<11)
++#define StartCoax (2<<11)
++#define RxDisable (3<<11)
++#define RxEnable (4<<11)
++#define RxReset (5<<11)
++#define UpStall (6<<11)
++#define UpUnstall (6<<11)+1
++#define DownStall (6<<11)+2
++#define DownUnstall (6<<11)+3
++#define RxDiscard (8<<11)
++#define TxEnable (9<<11)
++#define TxDisable (10<<11)
++#define TxReset (11<<11)
++#define FakeIntr (12<<11)
++#define AckIntr (13<<11)
++#define SetIntrEnb (14<<11)
++#define SetStatusEnb (15<<11)
++#define SetRxFilter (16<<11)
++#define SetRxThreshold (17<<11)
++#define SetTxThreshold (18<<11)
++#define SetTxStart (19<<11)
++#define StartDMAUp (20<<11)
++#define StartDMADown (20<<11)+1
+ #define StatsEnable (21<<11)
+ #define StatsDisable (22<<11)
+-#define StopCoax (23<<11)
+-#define SetFilterBit (25<<11)
++#define StopCoax (23<<11)
++#define SetFilterBit (25<<11)
+
+ /* The SetRxFilter command accepts the following classes */
+
+-#define RxStation 1
++#define RxStation 1
+ #define RxMulticast 2
+ #define RxBroadcast 4
+-#define RxProm 8
++#define RxProm 8
+
+ /* 3Com status word defnitions */
+
+-#define IntLatch 0x0001
+-#define HostError 0x0002
+-#define TxComplete 0x0004
+-#define TxAvailable 0x0008
+-#define RxComplete 0x0010
+-#define RxEarly 0x0020
+-#define IntReq 0x0040
+-#define StatsFull 0x0080
+-#define DMADone (1<<8)
+-#define DownComplete (1<<9)
+-#define UpComplete (1<<10)
+-#define DMAInProgress (1<<11) /* DMA controller is still busy.*/
+-#define CmdInProgress (1<<12) /* EL3_CMD is still busy.*/
++#define IntLatch 0x0001
++#define HostError 0x0002
++#define TxComplete 0x0004
++#define TxAvailable 0x0008
++#define RxComplete 0x0010
++#define RxEarly 0x0020
++#define IntReq 0x0040
++#define StatsFull 0x0080
++#define DMADone (1<<8)
++#define DownComplete (1<<9)
++#define UpComplete (1<<10)
++#define DMAInProgress (1<<11) /* DMA controller is still busy.*/
++#define CmdInProgress (1<<12) /* EL3_CMD is still busy.*/
+
+ /* Polling Registers */
+
+@@ -100,17 +100,17 @@
+
+ /* Register window 0 offets */
+
+-#define Wn0EepromCmd 10 /* Window 0: EEPROM command register. */
+-#define Wn0EepromData 12 /* Window 0: EEPROM results register. */
++#define Wn0EepromCmd 10 /* Window 0: EEPROM command register. */
++#define Wn0EepromData 12 /* Window 0: EEPROM results register. */
+ #define IntrStatus 0x0E /* Valid in all windows. */
+
+ /* Register window 0 EEPROM bits */
+
+-#define EEPROM_Read 0x80
+-#define EEPROM_WRITE 0x40
+-#define EEPROM_ERASE 0xC0
+-#define EEPROM_EWENB 0x30 /* Enable erasing/writing for 10 msec. */
+-#define EEPROM_EWDIS 0x00 /* Disable EWENB before 10 msec timeout. */
++#define EEPROM_Read 0x80
++#define EEPROM_WRITE 0x40
++#define EEPROM_ERASE 0xC0
++#define EEPROM_EWENB 0x30 /* Enable erasing/writing for 10 msec. */
++#define EEPROM_EWDIS 0x00 /* Disable EWENB before 10 msec timeout. */
+
+ /* EEPROM locations. */
+
+@@ -129,13 +129,13 @@
+
+ /* Register window 1 offsets, the window used in normal operation */
+
+-#define TX_FIFO 0x10
+-#define RX_FIFO 0x10
+-#define RxErrors 0x14
+-#define RxStatus 0x18
++#define TX_FIFO 0x10
++#define RX_FIFOa 0x10
++#define RxErrors 0x14
++#define RxStatus 0x18
+ #define Timer 0x1A
+-#define TxStatus 0x1B
+-#define TxFree 0x1C /* Remaining free bytes in Tx buffer. */
++#define TxStatus 0x1B
++#define TxFree 0x1C /* Remaining free bytes in Tx buffer. */
+
+ /* Register Window 2 */
+
+@@ -147,47 +147,47 @@
+ #define Wn3_MAC_Ctrl 6
+ #define Wn3_Options 8
+
+-#define BFEXT(value, offset, bitcount) \
++#define BFEXT(value, offset, bitcount) \
+ ((((unsigned long)(value)) >> (offset)) & ((1 << (bitcount)) - 1))
+
+ #define BFINS(lhs, rhs, offset, bitcount) \
+- (((lhs) & ~((((1 << (bitcount)) - 1)) << (offset))) | \
++ (((lhs) & ~((((1 << (bitcount)) - 1)) << (offset))) | \
+ (((rhs) & ((1 << (bitcount)) - 1)) << (offset)))
+
+ #define RAM_SIZE(v) BFEXT(v, 0, 3)
+-#define RAM_WIDTH(v) BFEXT(v, 3, 1)
+-#define RAM_SPEED(v) BFEXT(v, 4, 2)
++#define RAM_WIDTH(v) BFEXT(v, 3, 1)
++#define RAM_SPEED(v) BFEXT(v, 4, 2)
+ #define ROM_SIZE(v) BFEXT(v, 6, 2)
+-#define RAM_SPLIT(v) BFEXT(v, 16, 2)
++#define RAM_SPLIT(v) BFEXT(v, 16, 2)
+ #define XCVR(v) BFEXT(v, 20, 4)
+-#define AUTOSELECT(v) BFEXT(v, 24, 1)
++#define AUTOSELECT(v) BFEXT(v, 24, 1)
+
+ /* Register Window 4: Xcvr/media bits */
+
+-#define Wn4_FIFODiag 4
+-#define Wn4_NetDiag 6
++#define Wn4_FIFODiag 4
++#define Wn4_NetDiag 6
+ #define Wn4_PhysicalMgmt 8
+-#define Wn4_Media 10
++#define Wn4_Media 10
+
+-#define Media_SQE 0x0008 /* Enable SQE error counting for AUI. */
+-#define Media_10TP 0x00C0 /* Enable link beat and jabber for 10baseT. */
+-#define Media_Lnk 0x0080 /* Enable just link beat for 100TX/100FX. */
+-#define Media_LnkBeat 0x0800
++#define Media_SQE 0x0008 /* Enable SQE error counting for AUI. */
++#define Media_10TP 0x00C0 /* Enable link beat and jabber for 10baseT. */
++#define Media_Lnk 0x0080 /* Enable just link beat for 100TX/100FX. */
++#define Media_LnkBeat 0x0800
+
+ /* Register Window 7: Bus Master control */
+
+-#define Wn7_MasterAddr 0
+-#define Wn7_MasterLen 6
+-#define Wn7_MasterStatus 12
++#define Wn7_MasterAddr 0
++#define Wn7_MasterLen 6
++#define Wn7_MasterStatus 12
+
+ /* Boomerang bus master control registers. */
+
+-#define PktStatus 0x20
++#define PktStatus 0x20
+ #define DownListPtr 0x24
+-#define FragAddr 0x28
+-#define FragLen 0x2c
++#define FragAddr 0x28
++#define FragLen 0x2c
+ #define TxFreeThreshold 0x2f
+-#define UpPktStatus 0x30
++#define UpPktStatus 0x30
+ #define UpListPtr 0x38
+
+ /* The Rx and Tx descriptor lists. */
+diff -Naupr u-boot-1.1.6/board/MAI/AmigaOneG3SE/Makefile u-boot-1.1.6-fsl-1/board/MAI/AmigaOneG3SE/Makefile
+--- u-boot-1.1.6/board/MAI/AmigaOneG3SE/Makefile 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/board/MAI/AmigaOneG3SE/Makefile 2006-12-06 10:33:49.000000000 -0600
+@@ -30,7 +30,7 @@ endif
+ LIB = $(obj)lib$(BOARD).a
+
+ COBJS = $(BOARD).o articiaS.o flash.o serial.o smbus.o articiaS_pci.o \
+- via686.o i8259.o ../bios_emulator/x86interface.o \
++ via686.o i8259.o ../bios_emulator/x86interface.o \
+ ../bios_emulator/bios.o ../bios_emulator/glue.o \
+ interrupts.o ps2kbd.o video.o usb_uhci.o enet.o \
+ ../menu/cmd_menu.o cmd_boota.o nvram.o
+diff -Naupr u-boot-1.1.6/board/mcc200/mcc200.c u-boot-1.1.6-fsl-1/board/mcc200/mcc200.c
+--- u-boot-1.1.6/board/mcc200/mcc200.c 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/board/mcc200/mcc200.c 2006-11-30 12:34:13.000000000 -0600
+@@ -27,6 +27,7 @@
+ #include <common.h>
+ #include <mpc5xxx.h>
+ #include <pci.h>
++#include <asm/processor.h>
+
+ /* Two MT48LC8M32B2 for 32 MB */
+ /* #include "mt48lc8m32b2-6-7.h" */
+@@ -98,6 +99,7 @@ long int initdram (int board_type)
+ {
+ ulong dramsize = 0;
+ ulong dramsize2 = 0;
++ uint svr, pvr;
+ #ifndef CFG_RAMBOOT
+ ulong test1, test2;
+
+@@ -192,6 +194,22 @@ long int initdram (int board_type)
+
+ #endif /* CFG_RAMBOOT */
+
++ /*
++ * On MPC5200B we need to set the special configuration delay in the
++ * DDR controller. Please refer to Freescale's AN3221 "MPC5200B SDRAM
++ * Initialization and Configuration", 3.3.1 SDelay--MBAR + 0x0190:
++ *
++ * "The SDelay should be written to a value of 0x00000004. It is
++ * required to account for changes caused by normal wafer processing
++ * parameters."
++ */
++ svr = get_svr();
++ pvr = get_pvr();
++ if ((SVR_MJREV(svr) >= 2) && (PVR_MAJ(pvr) == 1) && (PVR_MIN(pvr) == 4)) {
++ *(vu_long *)MPC5XXX_SDRAM_SDELAY = 0x04;
++ __asm__ volatile ("sync");
++ }
++
+ return dramsize + dramsize2;
+ }
+
+diff -Naupr u-boot-1.1.6/board/mpc8349emds/Makefile u-boot-1.1.6-fsl-1/board/mpc8349emds/Makefile
+--- u-boot-1.1.6/board/mpc8349emds/Makefile 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/board/mpc8349emds/Makefile 2006-11-10 11:24:28.000000000 -0600
+@@ -25,7 +25,7 @@ include $(TOPDIR)/config.mk
+
+ LIB = $(obj)lib$(BOARD).a
+
+-COBJS := $(BOARD).o
++COBJS := $(BOARD).o pci.o
+
+ SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
+ OBJS := $(addprefix $(obj),$(COBJS))
+diff -Naupr u-boot-1.1.6/board/mpc8349emds/mpc8349emds.c u-boot-1.1.6-fsl-1/board/mpc8349emds/mpc8349emds.c
+--- u-boot-1.1.6/board/mpc8349emds/mpc8349emds.c 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/board/mpc8349emds/mpc8349emds.c 2006-11-10 11:24:28.000000000 -0600
+@@ -33,6 +33,10 @@
+ #if defined(CONFIG_SPD_EEPROM)
+ #include <spd_sdram.h>
+ #endif
++#if defined(CONFIG_OF_FLAT_TREE)
++#include <ft_build.h>
++#endif
++
+ int fixed_sdram(void);
+ void sdram_init(void);
+
+@@ -59,7 +63,7 @@ int board_early_init_f (void)
+
+ long int initdram (int board_type)
+ {
+- volatile immap_t *im = (immap_t *)CFG_IMMRBAR;
++ volatile immap_t *im = (immap_t *)CFG_IMMR;
+ u32 msize = 0;
+
+ if ((im->sysconf.immrbar & IMMRBAR_BASE_ADDR) != (u32)im)
+@@ -96,7 +100,7 @@ long int initdram (int board_type)
+ ************************************************************************/
+ int fixed_sdram(void)
+ {
+- volatile immap_t *im = (immap_t *)CFG_IMMRBAR;
++ volatile immap_t *im = (immap_t *)CFG_IMMR;
+ u32 msize = 0;
+ u32 ddr_size;
+ u32 ddr_size_log2;
+@@ -167,8 +171,8 @@ int checkboard (void)
+
+ void sdram_init(void)
+ {
+- volatile immap_t *immap = (immap_t *)CFG_IMMRBAR;
+- volatile lbus8349_t *lbc= &immap->lbus;
++ volatile immap_t *immap = (immap_t *)CFG_IMMR;
++ volatile lbus83xx_t *lbc= &immap->lbus;
+ uint *sdram_addr = (uint *)CFG_LBC_SDRAM_BASE;
+
+ puts("\n SDRAM on Local Bus: ");
+@@ -245,8 +249,8 @@ void sdram_init(void)
+ */
+ void ecc_print_status(void)
+ {
+- volatile immap_t *immap = (immap_t *)CFG_IMMRBAR;
+- volatile ddr8349_t *ddr = &immap->ddr;
++ volatile immap_t *immap = (immap_t *)CFG_IMMR;
++ volatile ddr83xx_t *ddr = &immap->ddr;
+
+ printf("\nECC mode: %s\n\n", (ddr->sdram_cfg & SDRAM_CFG_ECC_EN) ? "ON" : "OFF");
+
+@@ -320,8 +324,8 @@ void ecc_print_status(void)
+
+ int do_ecc ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
+ {
+- volatile immap_t *immap = (immap_t *)CFG_IMMRBAR;
+- volatile ddr8349_t *ddr = &immap->ddr;
++ volatile immap_t *immap = (immap_t *)CFG_IMMR;
++ volatile ddr83xx_t *ddr = &immap->ddr;
+ volatile u32 val;
+ u64 *addr, count, val64;
+ register u64 *i;
+@@ -564,3 +568,23 @@ U_BOOT_CMD(
+ " - re-inits memory"
+ );
+ #endif /* if defined(CONFIG_DDR_ECC) && defined(CONFIG_DDR_ECC_CMD) */
++
++#if defined(CONFIG_OF_FLAT_TREE) && defined(CONFIG_OF_BOARD_SETUP)
++void
++ft_board_setup(void *blob, bd_t *bd)
++{
++ u32 *p;
++ int len;
++
++#ifdef CONFIG_PCI
++ ft_pci_setup(blob, bd);
++#endif
++ ft_cpu_setup(blob, bd);
++
++ p = ft_get_prop(blob, "/memory/reg", &len);
++ if (p != NULL) {
++ *p++ = cpu_to_be32(bd->bi_memstart);
++ *p = cpu_to_be32(bd->bi_memsize);
++ }
++}
++#endif
+diff -Naupr u-boot-1.1.6/board/mpc8349emds/pci.c u-boot-1.1.6-fsl-1/board/mpc8349emds/pci.c
+--- u-boot-1.1.6/board/mpc8349emds/pci.c 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/board/mpc8349emds/pci.c 2006-12-06 10:33:49.000000000 -0600
+@@ -68,12 +68,13 @@ static struct pci_controller pci_hose[]
+ void
+ pib_init(void)
+ {
+- u8 val8;
++ u8 val8, orig_i2c_bus;
+ /*
+ * Assign PIB PMC slot to desired PCI bus
+ */
+- mpc8349_i2c = (i2c_t*)(CFG_IMMRBAR + CFG_I2C2_OFFSET);
+- i2c_init(CFG_I2C_SPEED, CFG_I2C_SLAVE);
++ /* Switch temporarily to I2C bus #2 */
++ orig_i2c_bus = i2c_get_bus_num();
++ i2c_set_bus_num(1);
+
+ val8 = 0;
+ i2c_write(0x23, 0x6, 1, &val8, 1);
+@@ -118,6 +119,8 @@ pib_init(void)
+ printf("PCI1: 32-bit on PMC1, PMC2\n");
+ printf("PCI2: 32-bit on PMC3\n");
+ #endif
++ /* Reset to original I2C bus */
++ i2c_set_bus_num(orig_i2c_bus);
+ }
+
+ /**************************************************************************
+@@ -130,18 +133,18 @@ void
+ pci_init_board(void)
+ {
+ volatile immap_t * immr;
+- volatile clk8349_t * clk;
+- volatile law8349_t * pci_law;
+- volatile pot8349_t * pci_pot;
+- volatile pcictrl8349_t * pci_ctrl;
+- volatile pciconf8349_t * pci_conf;
++ volatile clk83xx_t * clk;
++ volatile law83xx_t * pci_law;
++ volatile pot83xx_t * pci_pot;
++ volatile pcictrl83xx_t * pci_ctrl;
++ volatile pciconf83xx_t * pci_conf;
+ u16 reg16;
+ u32 reg32;
+ u32 dev;
+ struct pci_controller * hose;
+
+- immr = (immap_t *)CFG_IMMRBAR;
+- clk = (clk8349_t *)&immr->clk;
++ immr = (immap_t *)CFG_IMMR;
++ clk = (clk83xx_t *)&immr->clk;
+ pci_law = immr->sysconf.pcilaw;
+ pci_pot = immr->ios.pot;
+ pci_ctrl = immr->pci_ctrl;
+@@ -254,8 +257,8 @@ pci_init_board(void)
+ hose->region_count = 4;
+
+ pci_setup_indirect(hose,
+- (CFG_IMMRBAR+0x8300),
+- (CFG_IMMRBAR+0x8304));
++ (CFG_IMMR+0x8300),
++ (CFG_IMMR+0x8304));
+
+ pci_register_hose(hose);
+
+@@ -350,8 +353,8 @@ pci_init_board(void)
+ hose->region_count = 4;
+
+ pci_setup_indirect(hose,
+- (CFG_IMMRBAR+0x8380),
+- (CFG_IMMRBAR+0x8384));
++ (CFG_IMMR+0x8380),
++ (CFG_IMMR+0x8384));
+
+ pci_register_hose(hose);
+
+@@ -379,4 +382,26 @@ pci_init_board(void)
+
+ }
+
++#ifdef CONFIG_OF_FLAT_TREE
++void
++ft_pci_setup(void *blob, bd_t *bd)
++{
++ u32 *p;
++ int len;
++
++ p = (u32 *)ft_get_prop(blob, "/" OF_SOC "/pci@8500/bus-range", &len);
++ if (p != NULL) {
++ p[0] = pci_hose[0].first_busno;
++ p[1] = pci_hose[0].last_busno;
++ }
++
++#ifdef CONFIG_MPC83XX_PCI2
++ p = (u32 *)ft_get_prop(blob, "/" OF_SOC "/pci@8600/bus-range", &len);
++ if (p != NULL) {
++ p[0] = pci_hose[1].first_busno;
++ p[1] = pci_hose[1].last_busno;
++ }
++#endif
++}
++#endif /* CONFIG_OF_FLAT_TREE */
+ #endif /* CONFIG_PCI */
+diff -Naupr u-boot-1.1.6/board/mpc8349itx/config.mk u-boot-1.1.6-fsl-1/board/mpc8349itx/config.mk
+--- u-boot-1.1.6/board/mpc8349itx/config.mk 1969-12-31 18:00:00.000000000 -0600
++++ u-boot-1.1.6-fsl-1/board/mpc8349itx/config.mk 2006-11-10 11:24:28.000000000 -0600
+@@ -0,0 +1,33 @@
++#
++# Copyright (C) Freescale Semiconductor, Inc. 2006. All rights reserved.
++#
++# See file CREDITS for list of people who contributed to this
++# project.
++#
++# 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
++#
++
++#
++# MPC8349ITX
++#
++
++TEXT_BASE = 0xFEF00000
++
++ifneq ($(OBJTREE),$(SRCTREE))
++# We are building u-boot in a separate directory, use generated
++# .lds script from OBJTREE directory.
++LDSCRIPT := $(OBJTREE)/board/$(BOARDDIR)/u-boot.lds
++endif
+diff -Naupr u-boot-1.1.6/board/mpc8349itx/Makefile u-boot-1.1.6-fsl-1/board/mpc8349itx/Makefile
+--- u-boot-1.1.6/board/mpc8349itx/Makefile 1969-12-31 18:00:00.000000000 -0600
++++ u-boot-1.1.6-fsl-1/board/mpc8349itx/Makefile 2006-11-10 11:24:28.000000000 -0600
+@@ -0,0 +1,48 @@
++#
++# Copyright (C) Freescale Semiconductor, Inc. 2006. All rights reserved.
++#
++# See file CREDITS for list of people who contributed to this
++# project.
++#
++# 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
++#
++
++include $(TOPDIR)/config.mk
++
++LIB = $(obj)lib$(BOARD).a
++
++COBJS := $(BOARD).o pci.o
++
++SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
++OBJS := $(addprefix $(obj),$(COBJS))
++SOBJS := $(addprefix $(obj),$(SOBJS))
++
++$(LIB): $(obj).depend $(OBJS)
++ $(AR) crv $@ $(OBJS)
++
++clean:
++ rm -f $(SOBJS) $(OBJS)
++
++distclean: clean
++ rm -f $(LIB) core *.bak .depend
++
++#########################################################################
++
++include $(SRCTREE)/rules.mk
++
++sinclude $(obj).depend
++
++#########################################################################
+diff -Naupr u-boot-1.1.6/board/mpc8349itx/mpc8349itx.c u-boot-1.1.6-fsl-1/board/mpc8349itx/mpc8349itx.c
+--- u-boot-1.1.6/board/mpc8349itx/mpc8349itx.c 1969-12-31 18:00:00.000000000 -0600
++++ u-boot-1.1.6-fsl-1/board/mpc8349itx/mpc8349itx.c 2006-11-30 12:34:13.000000000 -0600
+@@ -0,0 +1,477 @@
++/*
++ * Copyright (C) Freescale Semiconductor, Inc. 2006. All rights reserved.
++ *
++ * See file CREDITS for list of people who contributed to this
++ * project.
++ *
++ * 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
++ */
++
++#include <common.h>
++#include <ioports.h>
++#include <mpc83xx.h>
++#include <i2c.h>
++#include <spd.h>
++#include <miiphy.h>
++
++#ifdef CONFIG_PCI
++#include <asm/mpc8349_pci.h>
++#include <pci.h>
++#endif
++
++#ifdef CONFIG_SPD_EEPROM
++#include <spd_sdram.h>
++#else
++#include <asm/mmu.h>
++#endif
++#if defined(CONFIG_OF_FLAT_TREE)
++#include <ft_build.h>
++#endif
++
++#ifndef CONFIG_SPD_EEPROM
++/*************************************************************************
++ * fixed sdram init -- doesn't use serial presence detect.
++ ************************************************************************/
++int fixed_sdram(void)
++{
++ volatile immap_t *im = (immap_t *) CFG_IMMR;
++ u32 ddr_size; /* The size of RAM, in bytes */
++ u32 ddr_size_log2 = 0;
++
++ for (ddr_size = CFG_DDR_SIZE * 0x100000; ddr_size > 1; ddr_size >>= 1) {
++ if (ddr_size & 1) {
++ return -1;
++ }
++ ddr_size_log2++;
++ }
++
++ im->sysconf.ddrlaw[0].ar =
++ LAWAR_EN | ((ddr_size_log2 - 1) & LAWAR_SIZE);
++ im->sysconf.ddrlaw[0].bar = (CFG_DDR_SDRAM_BASE >> 12) & 0xfffff;
++
++ /* Only one CS0 for DDR */
++ im->ddr.csbnds[0].csbnds = 0x0000000f;
++ im->ddr.cs_config[0] = CFG_DDR_CONFIG;
++
++ debug("cs0_bnds = 0x%08x\n", im->ddr.csbnds[0].csbnds);
++ debug("cs0_config = 0x%08x\n", im->ddr.cs_config[0]);
++
++ debug("DDR:bar=0x%08x\n", im->sysconf.ddrlaw[0].bar);
++ debug("DDR:ar=0x%08x\n", im->sysconf.ddrlaw[0].ar);
++
++ im->ddr.timing_cfg_1 = CFG_DDR_TIMING_1;
++ im->ddr.timing_cfg_2 = CFG_DDR_TIMING_2;/* Was "2 << TIMING_CFG2_WR_DATA_DELAY_SHIFT" */
++ im->ddr.sdram_cfg = SDRAM_CFG_SREN | SDRAM_CFG_SDRAM_TYPE_DDR;
++ im->ddr.sdram_mode =
++ (0x0000 << SDRAM_MODE_ESD_SHIFT) | (0x0032 << SDRAM_MODE_SD_SHIFT);
++ im->ddr.sdram_interval =
++ (0x0410 << SDRAM_INTERVAL_REFINT_SHIFT) | (0x0100 <<
++ SDRAM_INTERVAL_BSTOPRE_SHIFT);
++ im->ddr.sdram_clk_cntl =
++ DDR_SDRAM_CLK_CNTL_SS_EN | DDR_SDRAM_CLK_CNTL_CLK_ADJUST_05;
++
++ udelay(200);
++
++ im->ddr.sdram_cfg |= SDRAM_CFG_MEM_EN;
++
++ debug("DDR:timing_cfg_1=0x%08x\n", im->ddr.timing_cfg_1);
++ debug("DDR:timing_cfg_2=0x%08x\n", im->ddr.timing_cfg_2);
++ debug("DDR:sdram_mode=0x%08x\n", im->ddr.sdram_mode);
++ debug("DDR:sdram_interval=0x%08x\n", im->ddr.sdram_interval);
++ debug("DDR:sdram_cfg=0x%08x\n", im->ddr.sdram_cfg);
++
++ return CFG_DDR_SIZE;
++}
++#endif
++
++#ifdef CONFIG_PCI
++/*
++ * Initialize PCI Devices, report devices found
++ */
++#ifndef CONFIG_PCI_PNP
++static struct pci_config_table pci_mpc83xxmitx_config_table[] = {
++ {
++ PCI_ANY_ID,
++ PCI_ANY_ID,
++ PCI_ANY_ID,
++ PCI_ANY_ID,
++ 0x0f,
++ PCI_ANY_ID,
++ pci_cfgfunc_config_device,
++ {
++ PCI_ENET0_IOADDR,
++ PCI_ENET0_MEMADDR,
++ PCI_COMMAND_MEMORY | PCI_COMMAND_MASTER}
++ },
++ {}
++}
++#endif
++
++volatile static struct pci_controller hose[] = {
++ {
++#ifndef CONFIG_PCI_PNP
++ config_table:pci_mpc83xxmitx_config_table,
++#endif
++ },
++ {
++#ifndef CONFIG_PCI_PNP
++ config_table:pci_mpc83xxmitx_config_table,
++#endif
++ }
++};
++#endif /* CONFIG_PCI */
++
++/* If MPC8349E-mITX is soldered with SDRAM, then initialize it. */
++
++void sdram_init(void)
++{
++ volatile immap_t *immap = (immap_t *) CFG_IMMR;
++ volatile lbus83xx_t *lbc = &immap->lbus;
++
++#if defined(CFG_BR2_PRELIM) \
++ && defined(CFG_OR2_PRELIM) \
++ && defined(CFG_LBLAWBAR2_PRELIM) \
++ && defined(CFG_LBLAWAR2_PRELIM) \
++ && !defined(CONFIG_COMPACT_FLASH)
++
++ uint *sdram_addr = (uint *) CFG_LBC_SDRAM_BASE;
++
++ puts("\n SDRAM on Local Bus: ");
++ print_size(CFG_LBC_SDRAM_SIZE * 1024 * 1024, "\n");
++
++ /*
++ * Setup SDRAM Base and Option Registers, already done in cpu_init.c
++ */
++
++ /*setup mtrpt, lsrt and lbcr for LB bus */
++ lbc->lbcr = CFG_LBC_LBCR;
++ lbc->mrtpr = CFG_LBC_MRTPR;
++ lbc->lsrt = CFG_LBC_LSRT;
++ asm("sync");
++
++ /*
++ * Configure the SDRAM controller Machine Mode register.
++ */
++ lbc->lsdmr = CFG_LBC_LSDMR_5; /* 0x40636733; normal operation */
++
++ lbc->lsdmr = CFG_LBC_LSDMR_1; /*0x68636733; precharge all the banks */
++ asm("sync");
++ *sdram_addr = 0xff;
++ udelay(100);
++
++ lbc->lsdmr = CFG_LBC_LSDMR_2; /*0x48636733; auto refresh */
++ asm("sync");
++ *sdram_addr = 0xff; /*1 time*/
++ udelay(100);
++ *sdram_addr = 0xff; /*2 times*/
++ udelay(100);
++ *sdram_addr = 0xff; /*3 times*/
++ udelay(100);
++ *sdram_addr = 0xff; /*4 times*/
++ udelay(100);
++ *sdram_addr = 0xff; /*5 times*/
++ udelay(100);
++ *sdram_addr = 0xff; /*6 times*/
++ udelay(100);
++ *sdram_addr = 0xff; /*7 times*/
++ udelay(100);
++ *sdram_addr = 0xff; /*8 times*/
++ udelay(100);
++
++ lbc->lsdmr = CFG_LBC_LSDMR_4; /*0x58636733;mode register write operation */
++ asm("sync");
++ *sdram_addr = 0xff;
++ udelay(100);
++
++ lbc->lsdmr = CFG_LBC_LSDMR_5; /*0x40636733;normal operation */
++ asm("sync");
++ *sdram_addr = 0xff;
++ udelay(100);
++
++#else
++ puts("SDRAM on Local Bus is NOT available!\n");
++
++#ifdef CFG_BR2_PRELIM
++ lbc->bank[2].br = CFG_BR2_PRELIM;
++ lbc->bank[2].or = CFG_OR2_PRELIM;
++#endif
++
++#ifdef CFG_BR3_PRELIM
++ lbc->bank[3].br = CFG_BR3_PRELIM;
++ lbc->bank[3].or = CFG_OR3_PRELIM;
++#endif
++#endif
++}
++
++long int initdram(int board_type)
++{
++ volatile immap_t *im = (immap_t *) CFG_IMMR;
++ u32 msize = 0;
++#ifdef CONFIG_DDR_ECC
++ volatile ddr83xx_t *ddr = &im->ddr;
++#endif
++
++ if ((im->sysconf.immrbar & IMMRBAR_BASE_ADDR) != (u32) im)
++ return -1;
++
++ /* DDR SDRAM - Main SODIMM */
++ im->sysconf.ddrlaw[0].bar = CFG_DDR_BASE & LAWBAR_BAR;
++#ifdef CONFIG_SPD_EEPROM
++ msize = spd_sdram();
++#else
++ msize = fixed_sdram();
++#endif
++
++#ifdef CONFIG_DDR_ECC
++ if (ddr->sdram_cfg & SDRAM_CFG_ECC_EN)
++ /* Unlike every other board, on the 83xx spd_sdram() returns
++ megabytes instead of just bytes. That's why we need to
++ multiple by 1MB when calling ddr_enable_ecc(). */
++ ddr_enable_ecc(msize * 1048576);
++#endif
++
++ /*
++ * Initialize SDRAM if it is on local bus.
++ */
++ sdram_init();
++ puts(" DDR RAM: ");
++ /* return total bus SDRAM size(bytes) -- DDR */
++ return msize * 1024 * 1024;
++}
++
++int checkboard(void)
++{
++ puts("Board: Freescale MPC8349E-mITX\n");
++
++ return 0;
++}
++
++/*
++ * Implement a work-around for a hardware problem with compact
++ * flash.
++ *
++ * Program the UPM if compact flash is enabled.
++ */
++int misc_init_f(void)
++{
++ volatile u32 *vsc7385_cpuctrl;
++
++ /* 0x1c0c0 is the VSC7385 CPU Control (CPUCTRL) Register. The power up
++ default of VSC7385 L1_IRQ and L2_IRQ requests are active high. That
++ means it is 0 when the IRQ is not active. This makes the wire-AND
++ logic always assert IRQ7 to CPU even if there is no request from the
++ switch. Since the compact flash and the switch share the same IRQ,
++ the Linux kernel will think that the compact flash is requesting irq
++ and get stuck when it tries to clear the IRQ. Thus we need to set
++ the L2_IRQ0 and L2_IRQ1 to active low.
++
++ The following code sets the L1_IRQ and L2_IRQ polarity to active low.
++ Without this code, compact flash will not work in Linux because
++ unlike U-Boot, Linux uses the IRQ, so this code is necessary if we
++ don't enable compact flash for U-Boot.
++ */
++
++ vsc7385_cpuctrl = (volatile u32 *)(CFG_VSC7385_BASE + 0x1c0c0);
++ *vsc7385_cpuctrl |= 0x0c;
++
++#ifdef CONFIG_COMPACT_FLASH
++ /* UPM Table Configuration Code */
++ static uint UPMATable[] = {
++ 0xcffffc00, 0x0fffff00, 0x0fafff00, 0x0fafff00,
++ 0x0faffd00, 0x0faffc04, 0x0ffffc00, 0x3ffffc01,
++ 0xfffffc00, 0xfffffc00, 0xfffffc00, 0xfffffc00,
++ 0xfffffc00, 0xfffffc00, 0xfffffc00, 0xfffffc00,
++ 0xfffffc00, 0xfffffc00, 0xfffffc00, 0xfff7fc00,
++ 0xfffffc00, 0xfffffc00, 0xfffffc00, 0xfffffc01,
++ 0xcffffc00, 0x0fffff00, 0x0ff3ff00, 0x0ff3ff00,
++ 0x0ff3fe00, 0x0ffffc00, 0x3ffffc05, 0xfffffc00,
++ 0xfffffc00, 0xfffffc00, 0xfffffc00, 0xfffffc00,
++ 0xfffffc00, 0xfffffc00, 0xfffffc00, 0xfffffc00,
++ 0xfffffc00, 0xfffffc00, 0xfffffc00, 0xfffffc00,
++ 0xfffffc00, 0xfffffc00, 0xfffffc00, 0xfffffc01,
++ 0xfffffc00, 0xfffffc00, 0xfffffc00, 0xfffffc00,
++ 0xfffffc00, 0xfffffc00, 0xfffffc00, 0xfffffc00,
++ 0xfffffc00, 0xfffffc00, 0xfffffc00, 0xfffffc01,
++ 0xfffffc00, 0xfffffc00, 0xfffffc00, 0xfffffc01
++ };
++ volatile immap_t *immap = (immap_t *) CFG_IMMR;
++ volatile lbus83xx_t *lbus = &immap->lbus;
++
++ lbus->bank[3].br = CFG_BR3_PRELIM;
++ lbus->bank[3].or = CFG_OR3_PRELIM;
++
++ /* Program the MAMR. RFEN=0, OP=00, UWPL=1, AM=000, DS=01, G0CL=000,
++ GPL4=0, RLF=0001, WLF=0001, TLF=0001, MAD=000000
++ */
++ lbus->mamr = 0x08404440;
++
++ upmconfig(0, UPMATable, sizeof(UPMATable) / sizeof(UPMATable[0]));
++
++ puts("UPMA: Configured for compact flash\n");
++#endif
++
++ return 0;
++}
++
++/*
++ * Make sure the EEPROM has the HRCW correctly programmed.
++ * Make sure the RTC is correctly programmed.
++ *
++ * The MPC8349E-mITX can be configured to load the HRCW from
++ * EEPROM instead of flash. This is controlled via jumpers
++ * LGPL0, 1, and 3. Normally, these jumpers are set to 000 (all
++ * jumpered), but if they're set to 001 or 010, then the HRCW is
++ * read from the "I2C EEPROM".
++ *
++ * This function makes sure that the I2C EEPROM is programmed
++ * correctly.
++ */
++int misc_init_r(void)
++{
++ int rc = 0;
++
++#ifdef CONFIG_HARD_I2C
++
++ unsigned int orig_bus = i2c_get_bus_num();;
++ u8 i2c_data;
++
++#ifdef CFG_I2C_RTC_ADDR
++ u8 ds1339_data[17];
++#endif
++
++#ifdef CFG_I2C_EEPROM_ADDR
++ static u8 eeprom_data[] = /* HRCW data */
++ {
++ 0xaa, 0x55, 0xaa,
++ 0x7c, 0x02, 0x40, 0x05, 0x04, 0x00, 0x00,
++ 0x7c, 0x02, 0x41, 0xb4, 0x60, 0xa0, 0x00,
++ };
++
++ u8 data[sizeof(eeprom_data)];
++#endif
++
++ printf("Board revision: ");
++ i2c_set_bus_num(1);
++ if (i2c_read(CFG_I2C_8574A_ADDR2, 0, 0, &i2c_data, sizeof(i2c_data)) == 0)
++ printf("%u.%u (PCF8475A)\n", (i2c_data & 0x02) >> 1, i2c_data & 0x01);
++ else if (i2c_read(CFG_I2C_8574_ADDR2, 0, 0, &i2c_data, sizeof(i2c_data)) == 0)
++ printf("%u.%u (PCF8475)\n", (i2c_data & 0x02) >> 1, i2c_data & 0x01);
++ else {
++ printf("Unknown\n");
++ rc = 1;
++ }
++
++#ifdef CFG_I2C_EEPROM_ADDR
++ i2c_set_bus_num(0);
++
++ if (i2c_read(CFG_I2C_EEPROM_ADDR, 0, 2, data, sizeof(data)) == 0) {
++ if (memcmp(data, eeprom_data, sizeof(data)) != 0) {
++ if (i2c_write
++ (CFG_I2C_EEPROM_ADDR, 0, 2, eeprom_data,
++ sizeof(eeprom_data)) != 0) {
++ puts("Failure writing the HRCW to EEPROM via I2C.\n");
++ rc = 1;
++ }
++ }
++ } else {
++ puts("Failure reading the HRCW from EEPROM via I2C.\n");
++ rc = 1;
++ }
++#endif
++
++#ifdef CFG_I2C_RTC_ADDR
++ i2c_set_bus_num(1);
++
++ if (i2c_read(CFG_I2C_RTC_ADDR, 0, 1, ds1339_data, sizeof(ds1339_data))
++ == 0) {
++
++ /* Work-around for MPC8349E-mITX bug #13601.
++ If the RTC does not contain valid register values, the DS1339
++ Linux driver will not work.
++ */
++
++ /* Make sure status register bits 6-2 are zero */
++ ds1339_data[0x0f] &= ~0x7c;
++
++ /* Check for a valid day register value */
++ ds1339_data[0x03] &= ~0xf8;
++ if (ds1339_data[0x03] == 0) {
++ ds1339_data[0x03] = 1;
++ }
++
++ /* Check for a valid date register value */
++ ds1339_data[0x04] &= ~0xc0;
++ if ((ds1339_data[0x04] == 0) ||
++ ((ds1339_data[0x04] & 0x0f) > 9) ||
++ (ds1339_data[0x04] >= 0x32)) {
++ ds1339_data[0x04] = 1;
++ }
++
++ /* Check for a valid month register value */
++ ds1339_data[0x05] &= ~0x60;
++
++ if ((ds1339_data[0x05] == 0) ||
++ ((ds1339_data[0x05] & 0x0f) > 9) ||
++ ((ds1339_data[0x05] >= 0x13)
++ && (ds1339_data[0x05] <= 0x19))) {
++ ds1339_data[0x05] = 1;
++ }
++
++ /* Enable Oscillator and rate select */
++ ds1339_data[0x0e] = 0x1c;
++
++ /* Work-around for MPC8349E-mITX bug #13330.
++ Ensure that the RTC control register contains the value 0x1c.
++ This affects SATA performance.
++ */
++
++ if (i2c_write
++ (CFG_I2C_RTC_ADDR, 0, 1, ds1339_data,
++ sizeof(ds1339_data))) {
++ puts("Failure writing to the RTC via I2C.\n");
++ rc = 1;
++ }
++ } else {
++ puts("Failure reading from the RTC via I2C.\n");
++ rc = 1;
++ }
++#endif
++
++ i2c_set_bus_num(orig_bus);
++#endif
++
++ return rc;
++}
++
++#if defined(CONFIG_OF_FLAT_TREE) && defined(CONFIG_OF_BOARD_SETUP)
++void
++ft_board_setup(void *blob, bd_t *bd)
++{
++ u32 *p;
++ int len;
++
++#ifdef CONFIG_PCI
++ ft_pci_setup(blob, bd);
++#endif
++ ft_cpu_setup(blob, bd);
++
++ p = ft_get_prop(blob, "/memory/reg", &len);
++ if (p != NULL) {
++ *p++ = cpu_to_be32(bd->bi_memstart);
++ *p = cpu_to_be32(bd->bi_memsize);
++ }
++}
++#endif
+diff -Naupr u-boot-1.1.6/board/mpc8349itx/pci.c u-boot-1.1.6-fsl-1/board/mpc8349itx/pci.c
+--- u-boot-1.1.6/board/mpc8349itx/pci.c 1969-12-31 18:00:00.000000000 -0600
++++ u-boot-1.1.6-fsl-1/board/mpc8349itx/pci.c 2006-11-10 11:24:28.000000000 -0600
+@@ -0,0 +1,357 @@
++/*
++ * Copyright (C) Freescale Semiconductor, Inc. 2006. All rights reserved.
++ *
++ * See file CREDITS for list of people who contributed to this
++ * project.
++ *
++ * 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
++ */
++
++#include <common.h>
++
++#ifdef CONFIG_PCI
++
++#include <asm/mmu.h>
++#include <asm/global_data.h>
++#include <pci.h>
++#include <asm/mpc8349_pci.h>
++#include <i2c.h>
++#if defined(CONFIG_OF_FLAT_TREE)
++#include <ft_build.h>
++#endif
++
++DECLARE_GLOBAL_DATA_PTR;
++
++/* System RAM mapped to PCI space */
++#define CONFIG_PCI_SYS_MEM_BUS CFG_SDRAM_BASE
++#define CONFIG_PCI_SYS_MEM_PHYS CFG_SDRAM_BASE
++
++#ifndef CONFIG_PCI_PNP
++static struct pci_config_table pci_mpc8349itx_config_table[] = {
++ {
++ PCI_ANY_ID,
++ PCI_ANY_ID,
++ PCI_ANY_ID,
++ PCI_ANY_ID,
++ PCI_IDSEL_NUMBER,
++ PCI_ANY_ID,
++ pci_cfgfunc_config_device,
++ {
++ PCI_ENET0_IOADDR,
++ PCI_ENET0_MEMADDR,
++ PCI_COMMAND_MEMORY | PCI_COMMAND_MASTER}
++ },
++ {}
++};
++#endif
++
++static struct pci_controller pci_hose[] = {
++ {
++#ifndef CONFIG_PCI_PNP
++ config_table:pci_mpc8349itx_config_table,
++#endif
++ },
++ {
++#ifndef CONFIG_PCI_PNP
++ config_table:pci_mpc8349itx_config_table,
++#endif
++ }
++};
++
++/**************************************************************************
++ * pci_init_board()
++ *
++ * NOTICE: PCI2 is not currently supported
++ *
++ */
++void pci_init_board(void)
++{
++ volatile immap_t *immr;
++ volatile clk83xx_t *clk;
++ volatile law83xx_t *pci_law;
++ volatile pot83xx_t *pci_pot;
++ volatile pcictrl83xx_t *pci_ctrl;
++ volatile pciconf83xx_t *pci_conf;
++ u8 reg8;
++ u16 reg16;
++ u32 reg32;
++ u32 dev;
++ struct pci_controller *hose;
++
++ immr = (immap_t *) CFG_IMMR;
++ clk = (clk83xx_t *) & immr->clk;
++ pci_law = immr->sysconf.pcilaw;
++ pci_pot = immr->ios.pot;
++ pci_ctrl = immr->pci_ctrl;
++ pci_conf = immr->pci_conf;
++
++ hose = &pci_hose[0];
++
++ /*
++ * Configure PCI controller and PCI_CLK_OUTPUT both in 66M mode
++ */
++
++ reg32 = clk->occr;
++ udelay(2000);
++
++#ifdef CONFIG_HARD_I2C
++ i2c_set_bus_num(1);
++ /* Read the PCI_M66EN jumper setting */
++ if ((i2c_read(CFG_I2C_8574_ADDR2, 0, 0, &reg8, sizeof(reg8)) == 0) ||
++ (i2c_read(CFG_I2C_8574A_ADDR2, 0, 0, &reg8, sizeof(reg8)) == 0)) {
++ if (reg8 & I2C_8574_PCI66)
++ clk->occr = 0xff000000; /* 66 MHz PCI */
++ else
++ clk->occr = 0xff600001; /* 33 MHz PCI */
++ } else {
++ clk->occr = 0xff600001; /* 33 MHz PCI */
++ }
++#else
++ clk->occr = 0xff000000; /* 66 MHz PCI */
++#endif
++
++ udelay(2000);
++
++ /*
++ * Release PCI RST Output signal
++ */
++ pci_ctrl[0].gcr = 0;
++ udelay(2000);
++ pci_ctrl[0].gcr = 1;
++
++#ifdef CONFIG_MPC83XX_PCI2
++ pci_ctrl[1].gcr = 0;
++ udelay(2000);
++ pci_ctrl[1].gcr = 1;
++#endif
++
++ /* We need to wait at least a 1sec based on PCI specs */
++ {
++ int i;
++
++ for (i = 0; i < 1000; i++)
++ udelay(1000);
++ }
++
++ /*
++ * Configure PCI Local Access Windows
++ */
++ pci_law[0].bar = CFG_PCI1_MEM_PHYS & LAWBAR_BAR;
++ pci_law[0].ar = LAWAR_EN | LAWAR_SIZE_1G;
++
++ pci_law[1].bar = CFG_PCI1_IO_PHYS & LAWBAR_BAR;
++ pci_law[1].ar = LAWAR_EN | LAWAR_SIZE_32M;
++
++ /*
++ * Configure PCI Outbound Translation Windows
++ */
++
++ /* PCI1 mem space - prefetch */
++ pci_pot[0].potar = (CFG_PCI1_MEM_BASE >> 12) & POTAR_TA_MASK;
++ pci_pot[0].pobar = (CFG_PCI1_MEM_PHYS >> 12) & POBAR_BA_MASK;
++ pci_pot[0].pocmr = POCMR_EN | POCMR_PREFETCH_EN | POCMR_CM_256M;
++
++ /* PCI1 IO space */
++ pci_pot[1].potar = (CFG_PCI1_IO_BASE >> 12) & POTAR_TA_MASK;
++ pci_pot[1].pobar = (CFG_PCI1_IO_PHYS >> 12) & POBAR_BA_MASK;
++ pci_pot[1].pocmr = POCMR_EN | POCMR_IO | POCMR_CM_16M;
++
++ /* PCI1 mmio - non-prefetch mem space */
++ pci_pot[2].potar = (CFG_PCI1_MMIO_BASE >> 12) & POTAR_TA_MASK;
++ pci_pot[2].pobar = (CFG_PCI1_MMIO_PHYS >> 12) & POBAR_BA_MASK;
++ pci_pot[2].pocmr = POCMR_EN | POCMR_CM_256M;
++
++ /*
++ * Configure PCI Inbound Translation Windows
++ */
++
++ /* we need RAM mapped to PCI space for the devices to
++ * access main memory */
++ pci_ctrl[0].pitar1 = 0x0;
++ pci_ctrl[0].pibar1 = 0x0;
++ pci_ctrl[0].piebar1 = 0x0;
++ pci_ctrl[0].piwar1 = PIWAR_EN | PIWAR_PF | PIWAR_RTT_SNOOP |
++ PIWAR_WTT_SNOOP | (__ilog2(gd->ram_size) - 1);
++
++ hose->first_busno = 0;
++ hose->last_busno = 0xff;
++
++ /* PCI memory prefetch space */
++ pci_set_region(hose->regions + 0,
++ CFG_PCI1_MEM_BASE,
++ CFG_PCI1_MEM_PHYS,
++ CFG_PCI1_MEM_SIZE, PCI_REGION_MEM | PCI_REGION_PREFETCH);
++
++ /* PCI memory space */
++ pci_set_region(hose->regions + 1,
++ CFG_PCI1_MMIO_BASE,
++ CFG_PCI1_MMIO_PHYS, CFG_PCI1_MMIO_SIZE, PCI_REGION_MEM);
++
++ /* PCI IO space */
++ pci_set_region(hose->regions + 2,
++ CFG_PCI1_IO_BASE,
++ CFG_PCI1_IO_PHYS, CFG_PCI1_IO_SIZE, PCI_REGION_IO);
++
++ /* System memory space */
++ pci_set_region(hose->regions + 3,
++ CONFIG_PCI_SYS_MEM_BUS,
++ CONFIG_PCI_SYS_MEM_PHYS,
++ gd->ram_size, PCI_REGION_MEM | PCI_REGION_MEMORY);
++
++ hose->region_count = 4;
++
++ pci_setup_indirect(hose,
++ (CFG_IMMR + 0x8300), (CFG_IMMR + 0x8304));
++
++ pci_register_hose(hose);
++
++ /*
++ * Write to Command register
++ */
++ reg16 = 0xff;
++ dev = PCI_BDF(hose->first_busno, 0, 0);
++ pci_hose_read_config_word(hose, dev, PCI_COMMAND, &reg16);
++ reg16 |= PCI_COMMAND_SERR | PCI_COMMAND_MASTER | PCI_COMMAND_MEMORY;
++ pci_hose_write_config_word(hose, dev, PCI_COMMAND, reg16);
++
++ /*
++ * Clear non-reserved bits in status register.
++ */
++ pci_hose_write_config_word(hose, dev, PCI_STATUS, 0xffff);
++ pci_hose_write_config_byte(hose, dev, PCI_LATENCY_TIMER, 0x80);
++ pci_hose_write_config_byte(hose, dev, PCI_CACHE_LINE_SIZE, 0x08);
++
++#ifdef CONFIG_PCI_SCAN_SHOW
++ printf("PCI: Bus Dev VenId DevId Class Int\n");
++#endif
++ /*
++ * Hose scan.
++ */
++ hose->last_busno = pci_hose_scan(hose);
++
++#ifdef CONFIG_MPC83XX_PCI2
++ hose = &pci_hose[1];
++
++ /*
++ * Configure PCI Outbound Translation Windows
++ */
++
++ /* PCI2 mem space - prefetch */
++ pci_pot[3].potar = (CFG_PCI2_MEM_BASE >> 12) & POTAR_TA_MASK;
++ pci_pot[3].pobar = (CFG_PCI2_MEM_PHYS >> 12) & POBAR_BA_MASK;
++ pci_pot[3].pocmr = POCMR_EN | POCMR_PCI2 | POCMR_PREFETCH_EN | POCMR_CM_256M;
++
++ /* PCI2 IO space */
++ pci_pot[4].potar = (CFG_PCI2_IO_BASE >> 12) & POTAR_TA_MASK;
++ pci_pot[4].pobar = (CFG_PCI2_IO_PHYS >> 12) & POBAR_BA_MASK;
++ pci_pot[4].pocmr = POCMR_EN | POCMR_PCI2 | POCMR_IO | POCMR_CM_16M;
++
++ /* PCI2 mmio - non-prefetch mem space */
++ pci_pot[5].potar = (CFG_PCI2_MMIO_BASE >> 12) & POTAR_TA_MASK;
++ pci_pot[5].pobar = (CFG_PCI2_MMIO_PHYS >> 12) & POBAR_BA_MASK;
++ pci_pot[5].pocmr = POCMR_EN | POCMR_PCI2 | POCMR_CM_256M;
++
++ /*
++ * Configure PCI Inbound Translation Windows
++ */
++
++ /* we need RAM mapped to PCI space for the devices to
++ * access main memory */
++ pci_ctrl[1].pitar1 = 0x0;
++ pci_ctrl[1].pibar1 = 0x0;
++ pci_ctrl[1].piebar1 = 0x0;
++ pci_ctrl[1].piwar1 =
++ PIWAR_EN | PIWAR_PF | PIWAR_RTT_SNOOP | PIWAR_WTT_SNOOP |
++ (__ilog2(gd->ram_size) - 1);
++
++ hose->first_busno = pci_hose[0].last_busno + 1;
++ hose->last_busno = 0xff;
++
++ /* PCI memory prefetch space */
++ pci_set_region(hose->regions + 0,
++ CFG_PCI2_MEM_BASE,
++ CFG_PCI2_MEM_PHYS,
++ CFG_PCI2_MEM_SIZE, PCI_REGION_MEM | PCI_REGION_PREFETCH);
++
++ /* PCI memory space */
++ pci_set_region(hose->regions + 1,
++ CFG_PCI2_MMIO_BASE,
++ CFG_PCI2_MMIO_PHYS, CFG_PCI2_MMIO_SIZE, PCI_REGION_MEM);
++
++ /* PCI IO space */
++ pci_set_region(hose->regions + 2,
++ CFG_PCI2_IO_BASE,
++ CFG_PCI2_IO_PHYS, CFG_PCI2_IO_SIZE, PCI_REGION_IO);
++
++ /* System memory space */
++ pci_set_region(hose->regions + 3,
++ CONFIG_PCI_SYS_MEM_BUS,
++ CONFIG_PCI_SYS_MEM_PHYS,
++ gd->ram_size, PCI_REGION_MEM | PCI_REGION_MEMORY);
++
++ hose->region_count = 4;
++
++ pci_setup_indirect(hose,
++ (CFG_IMMR + 0x8380), (CFG_IMMR + 0x8384));
++
++ pci_register_hose(hose);
++
++ /*
++ * Write to Command register
++ */
++ reg16 = 0xff;
++ dev = PCI_BDF(hose->first_busno, 0, 0);
++ pci_hose_read_config_word(hose, dev, PCI_COMMAND, &reg16);
++ reg16 |= PCI_COMMAND_SERR | PCI_COMMAND_MASTER | PCI_COMMAND_MEMORY;
++ pci_hose_write_config_word(hose, dev, PCI_COMMAND, reg16);
++
++ /*
++ * Clear non-reserved bits in status register.
++ */
++ pci_hose_write_config_word(hose, dev, PCI_STATUS, 0xffff);
++ pci_hose_write_config_byte(hose, dev, PCI_LATENCY_TIMER, 0x80);
++ pci_hose_write_config_byte(hose, dev, PCI_CACHE_LINE_SIZE, 0x08);
++
++ /*
++ * Hose scan.
++ */
++ hose->last_busno = pci_hose_scan(hose);
++#endif
++}
++
++#endif /* CONFIG_PCI */
++#ifdef CONFIG_OF_FLAT_TREE
++void
++ft_pci_setup(void *blob, bd_t *bd)
++{
++ u32 *p;
++ int len;
++
++ p = (u32 *)ft_get_prop(blob, "/" OF_SOC "/pci@8500/bus-range", &len);
++ if (p != NULL) {
++ p[0] = pci_hose[0].first_busno;
++ p[1] = pci_hose[0].last_busno;
++ }
++
++#ifdef CONFIG_MPC83XX_PCI2
++ p = (u32 *)ft_get_prop(blob, "/" OF_SOC "/pci@8600/bus-range", &len);
++ if (p != NULL) {
++ p[0] = pci_hose[1].first_busno;
++ p[1] = pci_hose[1].last_busno;
++ }
++#endif
++}
++#endif /* CONFIG_OF_FLAT_TREE */
+diff -Naupr u-boot-1.1.6/board/mpc8349itx/u-boot.lds u-boot-1.1.6-fsl-1/board/mpc8349itx/u-boot.lds
+--- u-boot-1.1.6/board/mpc8349itx/u-boot.lds 1969-12-31 18:00:00.000000000 -0600
++++ u-boot-1.1.6-fsl-1/board/mpc8349itx/u-boot.lds 2006-11-10 11:24:28.000000000 -0600
+@@ -0,0 +1,120 @@
++/*
++ * Copyright (C) Freescale Semiconductor, Inc. 2006. All rights reserved.
++ *
++ * See file CREDITS for list of people who contributed to this
++ * project.
++ *
++ * 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
++ */
++
++OUTPUT_ARCH(powerpc)
++SECTIONS
++{
++ /* Read-only sections, merged into text segment: */
++ . = + SIZEOF_HEADERS;
++ .interp : { *(.interp) }
++ .hash : { *(.hash) }
++ .dynsym : { *(.dynsym) }
++ .dynstr : { *(.dynstr) }
++ .rel.text : { *(.rel.text) }
++ .rela.text : { *(.rela.text) }
++ .rel.data : { *(.rel.data) }
++ .rela.data : { *(.rela.data) }
++ .rel.rodata : { *(.rel.rodata) }
++ .rela.rodata : { *(.rela.rodata) }
++ .rel.got : { *(.rel.got) }
++ .rela.got : { *(.rela.got) }
++ .rel.ctors : { *(.rel.ctors) }
++ .rela.ctors : { *(.rela.ctors) }
++ .rel.dtors : { *(.rel.dtors) }
++ .rela.dtors : { *(.rela.dtors) }
++ .rel.bss : { *(.rel.bss) }
++ .rela.bss : { *(.rela.bss) }
++ .rel.plt : { *(.rel.plt) }
++ .rela.plt : { *(.rela.plt) }
++ .init : { *(.init) }
++ .plt : { *(.plt) }
++ .text :
++ {
++ cpu/mpc83xx/start.o (.text)
++ *(.text)
++ *(.fixup)
++ *(.got1)
++ . = ALIGN(16);
++ *(.rodata)
++ *(.rodata1)
++ *(.rodata.str1.4)
++ }
++ .fini : { *(.fini) } =0
++ .ctors : { *(.ctors) }
++ .dtors : { *(.dtors) }
++
++ /* Read-write section, merged into data segment: */
++ . = (. + 0x0FFF) & 0xFFFFF000;
++ _erotext = .;
++ PROVIDE (erotext = .);
++ .reloc :
++ {
++ *(.got)
++ _GOT2_TABLE_ = .;
++ *(.got2)
++ _FIXUP_TABLE_ = .;
++ *(.fixup)
++ }
++ __got2_entries = (_FIXUP_TABLE_ - _GOT2_TABLE_) >> 2;
++ __fixup_entries = (. - _FIXUP_TABLE_) >> 2;
++
++ .data :
++ {
++ *(.data)
++ *(.data1)
++ *(.sdata)
++ *(.sdata2)
++ *(.dynamic)
++ CONSTRUCTORS
++ }
++ _edata = .;
++ PROVIDE (edata = .);
++
++ . = .;
++ __u_boot_cmd_start = .;
++ .u_boot_cmd : { *(.u_boot_cmd) }
++ __u_boot_cmd_end = .;
++
++ . = .;
++ __start___ex_table = .;
++ __ex_table : { *(__ex_table) }
++ __stop___ex_table = .;
++
++ . = ALIGN(4096);
++ __init_begin = .;
++ .text.init : { *(.text.init) }
++ .data.init : { *(.data.init) }
++ . = ALIGN(4096);
++ __init_end = .;
++
++ __bss_start = .;
++ .bss :
++ {
++ *(.sbss) *(.scommon)
++ *(.dynbss)
++ *(.bss)
++ *(COMMON)
++ }
++ _end = . ;
++ PROVIDE (end = .);
++}
++ENTRY(_start)
+diff -Naupr u-boot-1.1.6/board/mpc8360emds/config.mk u-boot-1.1.6-fsl-1/board/mpc8360emds/config.mk
+--- u-boot-1.1.6/board/mpc8360emds/config.mk 1969-12-31 18:00:00.000000000 -0600
++++ u-boot-1.1.6-fsl-1/board/mpc8360emds/config.mk 2006-11-10 11:24:28.000000000 -0600
+@@ -0,0 +1,28 @@
++#
++# (C) Copyright 2006
++# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
++#
++# See file CREDITS for list of people who contributed to this
++# project.
++#
++# 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
++#
++
++#
++# MPC8360EMDS
++#
++
++TEXT_BASE = 0xFE000000
+diff -Naupr u-boot-1.1.6/board/mpc8360emds/Makefile u-boot-1.1.6-fsl-1/board/mpc8360emds/Makefile
+--- u-boot-1.1.6/board/mpc8360emds/Makefile 1969-12-31 18:00:00.000000000 -0600
++++ u-boot-1.1.6-fsl-1/board/mpc8360emds/Makefile 2006-11-10 11:24:28.000000000 -0600
+@@ -0,0 +1,50 @@
++#
++# (C) Copyright 2006
++# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
++#
++# See file CREDITS for list of people who contributed to this
++# project.
++#
++# 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
++#
++
++include $(TOPDIR)/config.mk
++
++LIB = $(obj)lib$(BOARD).a
++
++COBJS := $(BOARD).o pci.o
++
++SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
++OBJS := $(addprefix $(obj),$(COBJS))
++SOBJS := $(addprefix $(obj),$(SOBJS))
++
++$(LIB): $(obj).depend $(OBJS)
++ $(AR) $(ARFLAGS) $@ $(OBJS)
++
++clean:
++ rm -f $(SOBJS) $(OBJS)
++
++distclean: clean
++ rm -f $(LIB) core *.bak .depend
++
++#########################################################################
++
++# defines $(obj).depend target
++include $(SRCTREE)/rules.mk
++
++sinclude $(obj).depend
++
++#########################################################################
+diff -Naupr u-boot-1.1.6/board/mpc8360emds/mpc8360emds.c u-boot-1.1.6-fsl-1/board/mpc8360emds/mpc8360emds.c
+--- u-boot-1.1.6/board/mpc8360emds/mpc8360emds.c 1969-12-31 18:00:00.000000000 -0600
++++ u-boot-1.1.6-fsl-1/board/mpc8360emds/mpc8360emds.c 2006-11-10 11:24:28.000000000 -0600
+@@ -0,0 +1,657 @@
++/*
++ * Copyright (C) 2006 Freescale Semiconductor, Inc.
++ *
++ * Dave Liu <daveliu@freescale.com>
++ * based on board/mpc8349emds/mpc8349emds.c
++ *
++ * See file CREDITS for list of people who contributed to this
++ * project.
++ *
++ * 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.
++ */
++
++#include <common.h>
++#include <ioports.h>
++#include <mpc83xx.h>
++#include <i2c.h>
++#include <spd.h>
++#include <miiphy.h>
++#include <command.h>
++#if defined(CONFIG_PCI)
++#include <pci.h>
++#endif
++#if defined(CONFIG_SPD_EEPROM)
++#include <spd_sdram.h>
++#else
++#include <asm/mmu.h>
++#endif
++#if defined(CONFIG_OF_FLAT_TREE)
++#include <ft_build.h>
++#endif
++
++const qe_iop_conf_t qe_iop_conf_tab[] = {
++ /* GETH1 */
++ {0, 3, 1, 0, 1}, /* TxD0 */
++ {0, 4, 1, 0, 1}, /* TxD1 */
++ {0, 5, 1, 0, 1}, /* TxD2 */
++ {0, 6, 1, 0, 1}, /* TxD3 */
++ {1, 6, 1, 0, 3}, /* TxD4 */
++ {1, 7, 1, 0, 1}, /* TxD5 */
++ {1, 9, 1, 0, 2}, /* TxD6 */
++ {1, 10, 1, 0, 2}, /* TxD7 */
++ {0, 9, 2, 0, 1}, /* RxD0 */
++ {0, 10, 2, 0, 1}, /* RxD1 */
++ {0, 11, 2, 0, 1}, /* RxD2 */
++ {0, 12, 2, 0, 1}, /* RxD3 */
++ {0, 13, 2, 0, 1}, /* RxD4 */
++ {1, 1, 2, 0, 2}, /* RxD5 */
++ {1, 0, 2, 0, 2}, /* RxD6 */
++ {1, 4, 2, 0, 2}, /* RxD7 */
++ {0, 7, 1, 0, 1}, /* TX_EN */
++ {0, 8, 1, 0, 1}, /* TX_ER */
++ {0, 15, 2, 0, 1}, /* RX_DV */
++ {0, 16, 2, 0, 1}, /* RX_ER */
++ {0, 0, 2, 0, 1}, /* RX_CLK */
++ {2, 9, 1, 0, 3}, /* GTX_CLK - CLK10 */
++ {2, 8, 2, 0, 1}, /* GTX125 - CLK9 */
++ /* GETH2 */
++ {0, 17, 1, 0, 1}, /* TxD0 */
++ {0, 18, 1, 0, 1}, /* TxD1 */
++ {0, 19, 1, 0, 1}, /* TxD2 */
++ {0, 20, 1, 0, 1}, /* TxD3 */
++ {1, 2, 1, 0, 1}, /* TxD4 */
++ {1, 3, 1, 0, 2}, /* TxD5 */
++ {1, 5, 1, 0, 3}, /* TxD6 */
++ {1, 8, 1, 0, 3}, /* TxD7 */
++ {0, 23, 2, 0, 1}, /* RxD0 */
++ {0, 24, 2, 0, 1}, /* RxD1 */
++ {0, 25, 2, 0, 1}, /* RxD2 */
++ {0, 26, 2, 0, 1}, /* RxD3 */
++ {0, 27, 2, 0, 1}, /* RxD4 */
++ {1, 12, 2, 0, 2}, /* RxD5 */
++ {1, 13, 2, 0, 3}, /* RxD6 */
++ {1, 11, 2, 0, 2}, /* RxD7 */
++ {0, 21, 1, 0, 1}, /* TX_EN */
++ {0, 22, 1, 0, 1}, /* TX_ER */
++ {0, 29, 2, 0, 1}, /* RX_DV */
++ {0, 30, 2, 0, 1}, /* RX_ER */
++ {0, 31, 2, 0, 1}, /* RX_CLK */
++ {2, 2, 1, 0, 2}, /* GTX_CLK = CLK10 */
++ {2, 3, 2, 0, 1}, /* GTX125 - CLK4 */
++
++ {0, 1, 3, 0, 2}, /* MDIO */
++ {0, 2, 1, 0, 1}, /* MDC */
++
++ {0, 0, 0, 0, QE_IOP_TAB_END}, /* END of table */
++};
++
++int board_early_init_f(void)
++{
++ volatile u8 *bcsr = (volatile u8 *)CFG_BCSR;
++
++ /* Enable flash write */
++ bcsr[0xa] &= ~0x04;
++
++ return 0;
++}
++
++#if defined(CONFIG_DDR_ECC) && !defined(CONFIG_ECC_INIT_VIA_DDRC)
++extern void ddr_enable_ecc(unsigned int dram_size);
++#endif
++int fixed_sdram(void);
++void sdram_init(void);
++
++long int initdram(int board_type)
++{
++ volatile immap_t *im = (immap_t *) CFG_IMMR;
++ u32 msize = 0;
++
++ if ((im->sysconf.immrbar & IMMRBAR_BASE_ADDR) != (u32) im)
++ return -1;
++
++ /* DDR SDRAM - Main SODIMM */
++ im->sysconf.ddrlaw[0].bar = CFG_DDR_BASE & LAWBAR_BAR;
++#if defined(CONFIG_SPD_EEPROM)
++ msize = spd_sdram();
++#else
++ msize = fixed_sdram();
++#endif
++
++#if defined(CONFIG_DDR_ECC) && !defined(CONFIG_ECC_INIT_VIA_DDRC)
++ /*
++ * Initialize DDR ECC byte
++ */
++ ddr_enable_ecc(msize * 1024 * 1024);
++#endif
++ /*
++ * Initialize SDRAM if it is on local bus.
++ */
++ sdram_init();
++ puts(" DDR RAM: ");
++ /* return total bus SDRAM size(bytes) -- DDR */
++ return (msize * 1024 * 1024);
++}
++
++#if !defined(CONFIG_SPD_EEPROM)
++/*************************************************************************
++ * fixed sdram init -- doesn't use serial presence detect.
++ ************************************************************************/
++int fixed_sdram(void)
++{
++ volatile immap_t *im = (immap_t *) CFG_IMMR;
++ u32 msize = 0;
++ u32 ddr_size;
++ u32 ddr_size_log2;
++
++ msize = CFG_DDR_SIZE;
++ for (ddr_size = msize << 20, ddr_size_log2 = 0;
++ (ddr_size > 1); ddr_size = ddr_size >> 1, ddr_size_log2++) {
++ if (ddr_size & 1) {
++ return -1;
++ }
++ }
++ im->sysconf.ddrlaw[0].ar =
++ LAWAR_EN | ((ddr_size_log2 - 1) & LAWAR_SIZE);
++#if (CFG_DDR_SIZE != 256)
++#warning Currenly any ddr size other than 256 is not supported
++#endif
++ im->ddr.csbnds[0].csbnds = 0x00000007;
++ im->ddr.csbnds[1].csbnds = 0x0008000f;
++
++ im->ddr.cs_config[0] = CFG_DDR_CONFIG;
++ im->ddr.cs_config[1] = CFG_DDR_CONFIG;
++
++ im->ddr.timing_cfg_1 = CFG_DDR_TIMING_1;
++ im->ddr.timing_cfg_2 = CFG_DDR_TIMING_2;
++ im->ddr.sdram_cfg = CFG_DDR_CONTROL;
++
++ im->ddr.sdram_mode = CFG_DDR_MODE;
++ im->ddr.sdram_interval = CFG_DDR_INTERVAL;
++ udelay(200);
++ im->ddr.sdram_cfg |= SDRAM_CFG_MEM_EN;
++
++ return msize;
++}
++#endif /*!CFG_SPD_EEPROM */
++
++int checkboard(void)
++{
++ puts("Board: Freescale MPC8360EMDS\n");
++ return 0;
++}
++
++/*
++ * if MPC8360EMDS is soldered with SDRAM
++ */
++#if defined(CFG_BR2_PRELIM) \
++ && defined(CFG_OR2_PRELIM) \
++ && defined(CFG_LBLAWBAR2_PRELIM) \
++ && defined(CFG_LBLAWAR2_PRELIM)
++/*
++ * Initialize SDRAM memory on the Local Bus.
++ */
++
++void sdram_init(void)
++{
++ volatile immap_t *immap = (immap_t *) CFG_IMMR;
++ volatile lbus83xx_t *lbc = &immap->lbus;
++ uint *sdram_addr = (uint *) CFG_LBC_SDRAM_BASE;
++
++ puts("\n SDRAM on Local Bus: ");
++ print_size(CFG_LBC_SDRAM_SIZE * 1024 * 1024, "\n");
++ /*
++ * Setup SDRAM Base and Option Registers, already done in cpu_init.c
++ */
++ /*setup mtrpt, lsrt and lbcr for LB bus */
++ lbc->lbcr = CFG_LBC_LBCR;
++ lbc->mrtpr = CFG_LBC_MRTPR;
++ lbc->lsrt = CFG_LBC_LSRT;
++ asm("sync");
++
++ /*
++ * Configure the SDRAM controller Machine Mode Register.
++ */
++ lbc->lsdmr = CFG_LBC_LSDMR_5; /* Normal Operation */
++ lbc->lsdmr = CFG_LBC_LSDMR_1; /* Precharge All Banks */
++ asm("sync");
++ *sdram_addr = 0xff;
++ udelay(100);
++
++ /*
++ * We need do 8 times auto refresh operation.
++ */
++ lbc->lsdmr = CFG_LBC_LSDMR_2;
++ asm("sync");
++ *sdram_addr = 0xff; /* 1 times */
++ udelay(100);
++ *sdram_addr = 0xff; /* 2 times */
++ udelay(100);
++ *sdram_addr = 0xff; /* 3 times */
++ udelay(100);
++ *sdram_addr = 0xff; /* 4 times */
++ udelay(100);
++ *sdram_addr = 0xff; /* 5 times */
++ udelay(100);
++ *sdram_addr = 0xff; /* 6 times */
++ udelay(100);
++ *sdram_addr = 0xff; /* 7 times */
++ udelay(100);
++ *sdram_addr = 0xff; /* 8 times */
++ udelay(100);
++
++ /* Mode register write operation */
++ lbc->lsdmr = CFG_LBC_LSDMR_4;
++ asm("sync");
++ *(sdram_addr + 0xcc) = 0xff;
++ udelay(100);
++
++ /* Normal operation */
++ lbc->lsdmr = CFG_LBC_LSDMR_5 | 0x40000000;
++ asm("sync");
++ *sdram_addr = 0xff;
++ udelay(100);
++}
++#else
++void sdram_init(void)
++{
++ puts("SDRAM on Local Bus is NOT available!\n");
++}
++#endif
++
++#if defined(CONFIG_DDR_ECC) && defined(CONFIG_DDR_ECC_CMD)
++/*
++ * ECC user commands
++ */
++void ecc_print_status(void)
++{
++ volatile immap_t *immap = (immap_t *) CFG_IMMR;
++ volatile ddr83xx_t *ddr = &immap->ddr;
++
++ printf("\nECC mode: %s\n\n",
++ (ddr->sdram_cfg & SDRAM_CFG_ECC_EN) ? "ON" : "OFF");
++
++ /* Interrupts */
++ printf("Memory Error Interrupt Enable:\n");
++ printf(" Multiple-Bit Error Interrupt Enable: %d\n",
++ (ddr->err_int_en & ECC_ERR_INT_EN_MBEE) ? 1 : 0);
++ printf(" Single-Bit Error Interrupt Enable: %d\n",
++ (ddr->err_int_en & ECC_ERR_INT_EN_SBEE) ? 1 : 0);
++ printf(" Memory Select Error Interrupt Enable: %d\n\n",
++ (ddr->err_int_en & ECC_ERR_INT_EN_MSEE) ? 1 : 0);
++
++ /* Error disable */
++ printf("Memory Error Disable:\n");
++ printf(" Multiple-Bit Error Disable: %d\n",
++ (ddr->err_disable & ECC_ERROR_DISABLE_MBED) ? 1 : 0);
++ printf(" Sinle-Bit Error Disable: %d\n",
++ (ddr->err_disable & ECC_ERROR_DISABLE_SBED) ? 1 : 0);
++ printf(" Memory Select Error Disable: %d\n\n",
++ (ddr->err_disable & ECC_ERROR_DISABLE_MSED) ? 1 : 0);
++
++ /* Error injection */
++ printf("Memory Data Path Error Injection Mask High/Low: %08lx %08lx\n",
++ ddr->data_err_inject_hi, ddr->data_err_inject_lo);
++
++ printf("Memory Data Path Error Injection Mask ECC:\n");
++ printf(" ECC Mirror Byte: %d\n",
++ (ddr->ecc_err_inject & ECC_ERR_INJECT_EMB) ? 1 : 0);
++ printf(" ECC Injection Enable: %d\n",
++ (ddr->ecc_err_inject & ECC_ERR_INJECT_EIEN) ? 1 : 0);
++ printf(" ECC Error Injection Mask: 0x%02x\n\n",
++ ddr->ecc_err_inject & ECC_ERR_INJECT_EEIM);
++
++ /* SBE counter/threshold */
++ printf("Memory Single-Bit Error Management (0..255):\n");
++ printf(" Single-Bit Error Threshold: %d\n",
++ (ddr->err_sbe & ECC_ERROR_MAN_SBET) >> ECC_ERROR_MAN_SBET_SHIFT);
++ printf(" Single-Bit Error Counter: %d\n\n",
++ (ddr->err_sbe & ECC_ERROR_MAN_SBEC) >> ECC_ERROR_MAN_SBEC_SHIFT);
++
++ /* Error detect */
++ printf("Memory Error Detect:\n");
++ printf(" Multiple Memory Errors: %d\n",
++ (ddr->err_detect & ECC_ERROR_DETECT_MME) ? 1 : 0);
++ printf(" Multiple-Bit Error: %d\n",
++ (ddr->err_detect & ECC_ERROR_DETECT_MBE) ? 1 : 0);
++ printf(" Single-Bit Error: %d\n",
++ (ddr->err_detect & ECC_ERROR_DETECT_SBE) ? 1 : 0);
++ printf(" Memory Select Error: %d\n\n",
++ (ddr->err_detect & ECC_ERROR_DETECT_MSE) ? 1 : 0);
++
++ /* Capture data */
++ printf("Memory Error Address Capture: 0x%08lx\n", ddr->capture_address);
++ printf("Memory Data Path Read Capture High/Low: %08lx %08lx\n",
++ ddr->capture_data_hi, ddr->capture_data_lo);
++ printf("Memory Data Path Read Capture ECC: 0x%02x\n\n",
++ ddr->capture_ecc & CAPTURE_ECC_ECE);
++
++ printf("Memory Error Attributes Capture:\n");
++ printf(" Data Beat Number: %d\n",
++ (ddr->capture_attributes & ECC_CAPT_ATTR_BNUM) >>
++ ECC_CAPT_ATTR_BNUM_SHIFT);
++ printf(" Transaction Size: %d\n",
++ (ddr->capture_attributes & ECC_CAPT_ATTR_TSIZ) >>
++ ECC_CAPT_ATTR_TSIZ_SHIFT);
++ printf(" Transaction Source: %d\n",
++ (ddr->capture_attributes & ECC_CAPT_ATTR_TSRC) >>
++ ECC_CAPT_ATTR_TSRC_SHIFT);
++ printf(" Transaction Type: %d\n",
++ (ddr->capture_attributes & ECC_CAPT_ATTR_TTYP) >>
++ ECC_CAPT_ATTR_TTYP_SHIFT);
++ printf(" Error Information Valid: %d\n\n",
++ ddr->capture_attributes & ECC_CAPT_ATTR_VLD);
++}
++
++int do_ecc(cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
++{
++ volatile immap_t *immap = (immap_t *) CFG_IMMR;
++ volatile ddr83xx_t *ddr = &immap->ddr;
++ volatile u32 val;
++ u64 *addr;
++ u32 count;
++ register u64 *i;
++ u32 ret[2];
++ u32 pattern[2];
++ u32 writeback[2];
++
++ /* The pattern is written into memory to generate error */
++ pattern[0] = 0xfedcba98UL;
++ pattern[1] = 0x76543210UL;
++
++ /* After injecting error, re-initialize the memory with the value */
++ writeback[0] = 0x01234567UL;
++ writeback[1] = 0x89abcdefUL;
++
++ if (argc > 4) {
++ printf("Usage:\n%s\n", cmdtp->usage);
++ return 1;
++ }
++
++ if (argc == 2) {
++ if (strcmp(argv[1], "status") == 0) {
++ ecc_print_status();
++ return 0;
++ } else if (strcmp(argv[1], "captureclear") == 0) {
++ ddr->capture_address = 0;
++ ddr->capture_data_hi = 0;
++ ddr->capture_data_lo = 0;
++ ddr->capture_ecc = 0;
++ ddr->capture_attributes = 0;
++ return 0;
++ }
++ }
++ if (argc == 3) {
++ if (strcmp(argv[1], "sbecnt") == 0) {
++ val = simple_strtoul(argv[2], NULL, 10);
++ if (val > 255) {
++ printf("Incorrect Counter value, "
++ "should be 0..255\n");
++ return 1;
++ }
++
++ val = (val << ECC_ERROR_MAN_SBEC_SHIFT);
++ val |= (ddr->err_sbe & ECC_ERROR_MAN_SBET);
++
++ ddr->err_sbe = val;
++ return 0;
++ } else if (strcmp(argv[1], "sbethr") == 0) {
++ val = simple_strtoul(argv[2], NULL, 10);
++ if (val > 255) {
++ printf("Incorrect Counter value, "
++ "should be 0..255\n");
++ return 1;
++ }
++
++ val = (val << ECC_ERROR_MAN_SBET_SHIFT);
++ val |= (ddr->err_sbe & ECC_ERROR_MAN_SBEC);
++
++ ddr->err_sbe = val;
++ return 0;
++ } else if (strcmp(argv[1], "errdisable") == 0) {
++ val = ddr->err_disable;
++
++ if (strcmp(argv[2], "+sbe") == 0) {
++ val |= ECC_ERROR_DISABLE_SBED;
++ } else if (strcmp(argv[2], "+mbe") == 0) {
++ val |= ECC_ERROR_DISABLE_MBED;
++ } else if (strcmp(argv[2], "+mse") == 0) {
++ val |= ECC_ERROR_DISABLE_MSED;
++ } else if (strcmp(argv[2], "+all") == 0) {
++ val |= (ECC_ERROR_DISABLE_SBED |
++ ECC_ERROR_DISABLE_MBED |
++ ECC_ERROR_DISABLE_MSED);
++ } else if (strcmp(argv[2], "-sbe") == 0) {
++ val &= ~ECC_ERROR_DISABLE_SBED;
++ } else if (strcmp(argv[2], "-mbe") == 0) {
++ val &= ~ECC_ERROR_DISABLE_MBED;
++ } else if (strcmp(argv[2], "-mse") == 0) {
++ val &= ~ECC_ERROR_DISABLE_MSED;
++ } else if (strcmp(argv[2], "-all") == 0) {
++ val &= ~(ECC_ERROR_DISABLE_SBED |
++ ECC_ERROR_DISABLE_MBED |
++ ECC_ERROR_DISABLE_MSED);
++ } else {
++ printf("Incorrect err_disable field\n");
++ return 1;
++ }
++
++ ddr->err_disable = val;
++ __asm__ __volatile__("sync");
++ __asm__ __volatile__("isync");
++ return 0;
++ } else if (strcmp(argv[1], "errdetectclr") == 0) {
++ val = ddr->err_detect;
++
++ if (strcmp(argv[2], "mme") == 0) {
++ val |= ECC_ERROR_DETECT_MME;
++ } else if (strcmp(argv[2], "sbe") == 0) {
++ val |= ECC_ERROR_DETECT_SBE;
++ } else if (strcmp(argv[2], "mbe") == 0) {
++ val |= ECC_ERROR_DETECT_MBE;
++ } else if (strcmp(argv[2], "mse") == 0) {
++ val |= ECC_ERROR_DETECT_MSE;
++ } else if (strcmp(argv[2], "all") == 0) {
++ val |= (ECC_ERROR_DETECT_MME |
++ ECC_ERROR_DETECT_MBE |
++ ECC_ERROR_DETECT_SBE |
++ ECC_ERROR_DETECT_MSE);
++ } else {
++ printf("Incorrect err_detect field\n");
++ return 1;
++ }
++
++ ddr->err_detect = val;
++ return 0;
++ } else if (strcmp(argv[1], "injectdatahi") == 0) {
++ val = simple_strtoul(argv[2], NULL, 16);
++
++ ddr->data_err_inject_hi = val;
++ return 0;
++ } else if (strcmp(argv[1], "injectdatalo") == 0) {
++ val = simple_strtoul(argv[2], NULL, 16);
++
++ ddr->data_err_inject_lo = val;
++ return 0;
++ } else if (strcmp(argv[1], "injectecc") == 0) {
++ val = simple_strtoul(argv[2], NULL, 16);
++ if (val > 0xff) {
++ printf("Incorrect ECC inject mask, "
++ "should be 0x00..0xff\n");
++ return 1;
++ }
++ val |= (ddr->ecc_err_inject & ~ECC_ERR_INJECT_EEIM);
++
++ ddr->ecc_err_inject = val;
++ return 0;
++ } else if (strcmp(argv[1], "inject") == 0) {
++ val = ddr->ecc_err_inject;
++
++ if (strcmp(argv[2], "en") == 0)
++ val |= ECC_ERR_INJECT_EIEN;
++ else if (strcmp(argv[2], "dis") == 0)
++ val &= ~ECC_ERR_INJECT_EIEN;
++ else
++ printf("Incorrect command\n");
++
++ ddr->ecc_err_inject = val;
++ __asm__ __volatile__("sync");
++ __asm__ __volatile__("isync");
++ return 0;
++ } else if (strcmp(argv[1], "mirror") == 0) {
++ val = ddr->ecc_err_inject;
++
++ if (strcmp(argv[2], "en") == 0)
++ val |= ECC_ERR_INJECT_EMB;
++ else if (strcmp(argv[2], "dis") == 0)
++ val &= ~ECC_ERR_INJECT_EMB;
++ else
++ printf("Incorrect command\n");
++
++ ddr->ecc_err_inject = val;
++ return 0;
++ }
++ }
++ if (argc == 4) {
++ if (strcmp(argv[1], "testdw") == 0) {
++ addr = (u64 *) simple_strtoul(argv[2], NULL, 16);
++ count = simple_strtoul(argv[3], NULL, 16);
++
++ if ((u32) addr % 8) {
++ printf("Address not alligned on "
++ "double word boundary\n");
++ return 1;
++ }
++ disable_interrupts();
++
++ for (i = addr; i < addr + count; i++) {
++
++ /* enable injects */
++ ddr->ecc_err_inject |= ECC_ERR_INJECT_EIEN;
++ __asm__ __volatile__("sync");
++ __asm__ __volatile__("isync");
++
++ /* write memory location injecting errors */
++ ppcDWstore((u32 *) i, pattern);
++ __asm__ __volatile__("sync");
++
++ /* disable injects */
++ ddr->ecc_err_inject &= ~ECC_ERR_INJECT_EIEN;
++ __asm__ __volatile__("sync");
++ __asm__ __volatile__("isync");
++
++ /* read data, this generates ECC error */
++ ppcDWload((u32 *) i, ret);
++ __asm__ __volatile__("sync");
++
++ /* re-initialize memory, double word write the location again,
++ * generates new ECC code this time */
++ ppcDWstore((u32 *) i, writeback);
++ __asm__ __volatile__("sync");
++ }
++ enable_interrupts();
++ return 0;
++ }
++ if (strcmp(argv[1], "testword") == 0) {
++ addr = (u64 *) simple_strtoul(argv[2], NULL, 16);
++ count = simple_strtoul(argv[3], NULL, 16);
++
++ if ((u32) addr % 8) {
++ printf("Address not alligned on "
++ "double word boundary\n");
++ return 1;
++ }
++ disable_interrupts();
++
++ for (i = addr; i < addr + count; i++) {
++
++ /* enable injects */
++ ddr->ecc_err_inject |= ECC_ERR_INJECT_EIEN;
++ __asm__ __volatile__("sync");
++ __asm__ __volatile__("isync");
++
++ /* write memory location injecting errors */
++ *(u32 *) i = 0xfedcba98UL;
++ __asm__ __volatile__("sync");
++
++ /* sub double word write,
++ * bus will read-modify-write,
++ * generates ECC error */
++ *((u32 *) i + 1) = 0x76543210UL;
++ __asm__ __volatile__("sync");
++
++ /* disable injects */
++ ddr->ecc_err_inject &= ~ECC_ERR_INJECT_EIEN;
++ __asm__ __volatile__("sync");
++ __asm__ __volatile__("isync");
++
++ /* re-initialize memory,
++ * double word write the location again,
++ * generates new ECC code this time */
++ ppcDWstore((u32 *) i, writeback);
++ __asm__ __volatile__("sync");
++ }
++ enable_interrupts();
++ return 0;
++ }
++ }
++ printf("Usage:\n%s\n", cmdtp->usage);
++ return 1;
++}
++
++U_BOOT_CMD(ecc, 4, 0, do_ecc,
++ "ecc - support for DDR ECC features\n",
++ "status - print out status info\n"
++ "ecc captureclear - clear capture regs data\n"
++ "ecc sbecnt <val> - set Single-Bit Error counter\n"
++ "ecc sbethr <val> - set Single-Bit Threshold\n"
++ "ecc errdisable <flag> - clear/set disable Memory Error Disable, flag:\n"
++ " [-|+]sbe - Single-Bit Error\n"
++ " [-|+]mbe - Multiple-Bit Error\n"
++ " [-|+]mse - Memory Select Error\n"
++ " [-|+]all - all errors\n"
++ "ecc errdetectclr <flag> - clear Memory Error Detect, flag:\n"
++ " mme - Multiple Memory Errors\n"
++ " sbe - Single-Bit Error\n"
++ " mbe - Multiple-Bit Error\n"
++ " mse - Memory Select Error\n"
++ " all - all errors\n"
++ "ecc injectdatahi <hi> - set Memory Data Path Error Injection Mask High\n"
++ "ecc injectdatalo <lo> - set Memory Data Path Error Injection Mask Low\n"
++ "ecc injectecc <ecc> - set ECC Error Injection Mask\n"
++ "ecc inject <en|dis> - enable/disable error injection\n"
++ "ecc mirror <en|dis> - enable/disable mirror byte\n"
++ "ecc testdw <addr> <cnt> - test mem region with double word access:\n"
++ " - enables injects\n"
++ " - writes pattern injecting errors with double word access\n"
++ " - disables injects\n"
++ " - reads pattern back with double word access, generates error\n"
++ " - re-inits memory\n"
++ "ecc testword <addr> <cnt> - test mem region with word access:\n"
++ " - enables injects\n"
++ " - writes pattern injecting errors with word access\n"
++ " - writes pattern with word access, generates error\n"
++ " - disables injects\n" " - re-inits memory");
++#endif /* if defined(CONFIG_DDR_ECC) && defined(CONFIG_DDR_ECC_CMD) */
++
++#if defined(CONFIG_OF_FLAT_TREE) && defined(CONFIG_OF_BOARD_SETUP)
++void
++ft_board_setup(void *blob, bd_t *bd)
++{
++ u32 *p;
++ int len;
++
++#ifdef CONFIG_PCI
++ ft_pci_setup(blob, bd);
++#endif
++ ft_cpu_setup(blob, bd);
++
++ p = ft_get_prop(blob, "/memory/reg", &len);
++ if (p != NULL) {
++ *p++ = cpu_to_be32(bd->bi_memstart);
++ *p = cpu_to_be32(bd->bi_memsize);
++ }
++}
++#endif
+diff -Naupr u-boot-1.1.6/board/mpc8360emds/pci.c u-boot-1.1.6-fsl-1/board/mpc8360emds/pci.c
+--- u-boot-1.1.6/board/mpc8360emds/pci.c 1969-12-31 18:00:00.000000000 -0600
++++ u-boot-1.1.6-fsl-1/board/mpc8360emds/pci.c 2006-11-10 11:24:28.000000000 -0600
+@@ -0,0 +1,313 @@
++/*
++ * Copyright (C) 2006 Freescale Semiconductor, Inc.
++ *
++ * See file CREDITS for list of people who contributed to this
++ * project.
++ *
++ * 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.
++ */
++
++/*
++ * PCI Configuration space access support for MPC83xx PCI Bridge
++ */
++#include <asm/mmu.h>
++#include <asm/io.h>
++#include <common.h>
++#include <pci.h>
++#include <i2c.h>
++
++#include <asm/fsl_i2c.h>
++
++DECLARE_GLOBAL_DATA_PTR;
++
++#if defined(CONFIG_PCI)
++#define PCI_FUNCTION_CONFIG 0x44
++#define PCI_FUNCTION_CFG_LOCK 0x20
++
++/*
++ * Initialize PCI Devices, report devices found
++ */
++#ifndef CONFIG_PCI_PNP
++static struct pci_config_table pci_mpc83xxemds_config_table[] = {
++ {
++ PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID,
++ pci_cfgfunc_config_device,
++ {PCI_ENET0_IOADDR,
++ PCI_ENET0_MEMADDR,
++ PCI_COMMON_MEMORY | PCI_COMMAND_MASTER}
++ },
++ {}
++}
++#endif
++static struct pci_controller hose[] = {
++ {
++#ifndef CONFIG_PCI_PNP
++ config_table:pci_mpc83xxemds_config_table,
++#endif
++ },
++};
++
++/**********************************************************************
++ * pci_init_board()
++ *********************************************************************/
++void pci_init_board(void)
++#ifdef CONFIG_PCISLAVE
++{
++ u16 reg16;
++ volatile immap_t *immr;
++ volatile law83xx_t *pci_law;
++ volatile pot83xx_t *pci_pot;
++ volatile pcictrl83xx_t *pci_ctrl;
++ volatile pciconf83xx_t *pci_conf;
++
++ immr = (immap_t *) CFG_IMMR;
++ pci_law = immr->sysconf.pcilaw;
++ pci_pot = immr->ios.pot;
++ pci_ctrl = immr->pci_ctrl;
++ pci_conf = immr->pci_conf;
++ /*
++ * Configure PCI Inbound Translation Windows
++ */
++ pci_ctrl[0].pitar0 = 0x0;
++ pci_ctrl[0].pibar0 = 0x0;
++ pci_ctrl[0].piwar0 = PIWAR_EN | PIWAR_RTT_SNOOP |
++ PIWAR_WTT_SNOOP | PIWAR_IWS_4K;
++
++ pci_ctrl[0].pitar1 = 0x0;
++ pci_ctrl[0].pibar1 = 0x0;
++ pci_ctrl[0].piebar1 = 0x0;
++ pci_ctrl[0].piwar1 &= ~PIWAR_EN;
++
++ pci_ctrl[0].pitar2 = 0x0;
++ pci_ctrl[0].pibar2 = 0x0;
++ pci_ctrl[0].piebar2 = 0x0;
++ pci_ctrl[0].piwar2 &= ~PIWAR_EN;
++
++ hose[0].first_busno = 0;
++ hose[0].last_busno = 0xff;
++ pci_setup_indirect(&hose[0],
++ (CFG_IMMR + 0x8300), (CFG_IMMR + 0x8304));
++ reg16 = 0xff;
++
++ pci_hose_read_config_word(&hose[0], PCI_BDF(0, 0, 0),
++ PCI_COMMAND, &reg16);
++ reg16 |= PCI_COMMAND_SERR | PCI_COMMAND_MEMORY;
++ pci_hose_write_config_word(&hose[0], PCI_BDF(0, 0, 0),
++ PCI_COMMAND, reg16);
++
++ /*
++ * Clear non-reserved bits in status register.
++ */
++ pci_hose_write_config_word(&hose[0], PCI_BDF(0, 0, 0),
++ PCI_STATUS, 0xffff);
++ pci_hose_write_config_byte(&hose[0], PCI_BDF(0, 0, 0),
++ PCI_LATENCY_TIMER, 0x80);
++
++ /*
++ * Unlock configuration lock in PCI function configuration register.
++ */
++ pci_hose_read_config_word(&hose[0], PCI_BDF(0, 0, 0),
++ PCI_FUNCTION_CONFIG, &reg16);
++ reg16 &= ~(PCI_FUNCTION_CFG_LOCK);
++ pci_hose_write_config_word(&hose[0], PCI_BDF(0, 0, 0),
++ PCI_FUNCTION_CONFIG, reg16);
++
++ printf("Enabled PCI 32bit Agent Mode\n");
++}
++#else
++{
++ volatile immap_t *immr;
++ volatile clk83xx_t *clk;
++ volatile law83xx_t *pci_law;
++ volatile pot83xx_t *pci_pot;
++ volatile pcictrl83xx_t *pci_ctrl;
++ volatile pciconf83xx_t *pci_conf;
++
++ u8 val8, orig_i2c_bus;
++ u16 reg16;
++ u32 val32;
++ u32 dev;
++
++ immr = (immap_t *) CFG_IMMR;
++ clk = (clk83xx_t *) & immr->clk;
++ pci_law = immr->sysconf.pcilaw;
++ pci_pot = immr->ios.pot;
++ pci_ctrl = immr->pci_ctrl;
++ pci_conf = immr->pci_conf;
++ /*
++ * Configure PCI controller and PCI_CLK_OUTPUT both in 66M mode
++ */
++ val32 = clk->occr;
++ udelay(2000);
++#if defined(PCI_66M)
++ clk->occr = OCCR_PCICOE0 | OCCR_PCICOE1 | OCCR_PCICOE2;
++ printf("PCI clock is 66MHz\n");
++#elif defined(PCI_33M)
++ clk->occr = OCCR_PCICOE0 | OCCR_PCICOE1 | OCCR_PCICOE2 |
++ OCCR_PCICD0 | OCCR_PCICD1 | OCCR_PCICD2 | OCCR_PCICR;
++ printf("PCI clock is 33MHz\n");
++#else
++ clk->occr = OCCR_PCICOE0 | OCCR_PCICOE1 | OCCR_PCICOE2;
++ printf("PCI clock is 66MHz\n");
++#endif
++ udelay(2000);
++
++ /*
++ * Configure PCI Local Access Windows
++ */
++ pci_law[0].bar = CFG_PCI_MEM_PHYS & LAWBAR_BAR;
++ pci_law[0].ar = LAWAR_EN | LAWAR_SIZE_512M;
++
++ pci_law[1].bar = CFG_PCI_IO_PHYS & LAWBAR_BAR;
++ pci_law[1].ar = LAWAR_EN | LAWAR_SIZE_1M;
++
++ /*
++ * Configure PCI Outbound Translation Windows
++ */
++
++ /* PCI mem space - prefetch */
++ pci_pot[0].potar = (CFG_PCI_MEM_BASE >> 12) & POTAR_TA_MASK;
++ pci_pot[0].pobar = (CFG_PCI_MEM_PHYS >> 12) & POBAR_BA_MASK;
++ pci_pot[0].pocmr =
++ POCMR_EN | POCMR_SE | (POCMR_CM_256M & POCMR_CM_MASK);
++
++ /* PCI mmio - non-prefetch mem space */
++ pci_pot[1].potar = (CFG_PCI_MMIO_BASE >> 12) & POTAR_TA_MASK;
++ pci_pot[1].pobar = (CFG_PCI_MMIO_PHYS >> 12) & POBAR_BA_MASK;
++ pci_pot[1].pocmr = POCMR_EN | (POCMR_CM_256M & POCMR_CM_MASK);
++
++ /* PCI IO space */
++ pci_pot[2].potar = (CFG_PCI_IO_BASE >> 12) & POTAR_TA_MASK;
++ pci_pot[2].pobar = (CFG_PCI_IO_PHYS >> 12) & POBAR_BA_MASK;
++ pci_pot[2].pocmr = POCMR_EN | POCMR_IO | (POCMR_CM_1M & POCMR_CM_MASK);
++
++ /*
++ * Configure PCI Inbound Translation Windows
++ */
++ pci_ctrl[0].pitar1 = (CFG_PCI_SLV_MEM_LOCAL >> 12) & PITAR_TA_MASK;
++ pci_ctrl[0].pibar1 = (CFG_PCI_SLV_MEM_BUS >> 12) & PIBAR_MASK;
++ pci_ctrl[0].piebar1 = 0x0;
++ pci_ctrl[0].piwar1 =
++ PIWAR_EN | PIWAR_PF | PIWAR_RTT_SNOOP | PIWAR_WTT_SNOOP |
++ PIWAR_IWS_2G;
++
++ /*
++ * Assign PIB PMC slot to desired PCI bus
++ */
++
++ /* Switch temporarily to I2C bus #2 */
++ orig_i2c_bus = i2c_get_bus_num();
++ i2c_set_bus_num(1);
++
++ val8 = 0;
++ i2c_write(0x23, 0x6, 1, &val8, 1);
++ i2c_write(0x23, 0x7, 1, &val8, 1);
++ val8 = 0xff;
++ i2c_write(0x23, 0x2, 1, &val8, 1);
++ i2c_write(0x23, 0x3, 1, &val8, 1);
++
++ val8 = 0;
++ i2c_write(0x26, 0x6, 1, &val8, 1);
++ val8 = 0x34;
++ i2c_write(0x26, 0x7, 1, &val8, 1);
++
++ val8 = 0xf3; /*PMC1, PMC2, PMC3 slot to PCI bus */
++ i2c_write(0x26, 0x2, 1, &val8, 1);
++ val8 = 0xff;
++ i2c_write(0x26, 0x3, 1, &val8, 1);
++
++ val8 = 0;
++ i2c_write(0x27, 0x6, 1, &val8, 1);
++ i2c_write(0x27, 0x7, 1, &val8, 1);
++ val8 = 0xff;
++ i2c_write(0x27, 0x2, 1, &val8, 1);
++ val8 = 0xef;
++ i2c_write(0x27, 0x3, 1, &val8, 1);
++ asm("eieio");
++
++ /* Reset to original I2C bus */
++ i2c_set_bus_num(orig_i2c_bus);
++
++ /*
++ * Release PCI RST Output signal
++ */
++ udelay(2000);
++ pci_ctrl[0].gcr = 1;
++ udelay(2000);
++
++ hose[0].first_busno = 0;
++ hose[0].last_busno = 0xff;
++
++ /* PCI memory prefetch space */
++ pci_set_region(hose[0].regions + 0,
++ CFG_PCI_MEM_BASE,
++ CFG_PCI_MEM_PHYS,
++ CFG_PCI_MEM_SIZE, PCI_REGION_MEM | PCI_REGION_PREFETCH);
++
++ /* PCI memory space */
++ pci_set_region(hose[0].regions + 1,
++ CFG_PCI_MMIO_BASE,
++ CFG_PCI_MMIO_PHYS, CFG_PCI_MMIO_SIZE, PCI_REGION_MEM);
++
++ /* PCI IO space */
++ pci_set_region(hose[0].regions + 2,
++ CFG_PCI_IO_BASE,
++ CFG_PCI_IO_PHYS, CFG_PCI_IO_SIZE, PCI_REGION_IO);
++
++ /* System memory space */
++ pci_set_region(hose[0].regions + 3,
++ CFG_PCI_SLV_MEM_LOCAL,
++ CFG_PCI_SLV_MEM_BUS,
++ CFG_PCI_SLV_MEM_SIZE,
++ PCI_REGION_MEM | PCI_REGION_MEMORY);
++
++ hose[0].region_count = 4;
++
++ pci_setup_indirect(&hose[0],
++ (CFG_IMMR + 0x8300), (CFG_IMMR + 0x8304));
++
++ pci_register_hose(hose);
++
++ /*
++ * Write command register
++ */
++ reg16 = 0xff;
++ dev = PCI_BDF(0, 0, 0);
++ pci_hose_read_config_word(&hose[0], dev, PCI_COMMAND, &reg16);
++ reg16 |= PCI_COMMAND_SERR | PCI_COMMAND_MASTER | PCI_COMMAND_MEMORY;
++ pci_hose_write_config_word(&hose[0], dev, PCI_COMMAND, reg16);
++
++ /*
++ * Clear non-reserved bits in status register.
++ */
++ pci_hose_write_config_word(&hose[0], dev, PCI_STATUS, 0xffff);
++ pci_hose_write_config_byte(&hose[0], dev, PCI_LATENCY_TIMER, 0x80);
++ pci_hose_write_config_byte(&hose[0], dev, PCI_CACHE_LINE_SIZE, 0x08);
++
++ printf("PCI 32bit bus on PMC1 & PMC2 & PMC3\n");
++
++ /*
++ * Hose scan.
++ */
++ hose->last_busno = pci_hose_scan(hose);
++}
++#endif /* CONFIG_PCISLAVE */
++
++#ifdef CONFIG_OF_FLAT_TREE
++void
++ft_pci_setup(void *blob, bd_t *bd)
++{
++ u32 *p;
++ int len;
++
++ p = (u32 *)ft_get_prop(blob, "/" OF_SOC "/pci@8500/bus-range", &len);
++ if (p != NULL) {
++ p[0] = hose[0].first_busno;
++ p[1] = hose[0].last_busno;
++ }
++}
++#endif /* CONFIG_OF_FLAT_TREE */
++#endif /* CONFIG_PCI */
+diff -Naupr u-boot-1.1.6/board/mpc8360emds/u-boot.lds u-boot-1.1.6-fsl-1/board/mpc8360emds/u-boot.lds
+--- u-boot-1.1.6/board/mpc8360emds/u-boot.lds 1969-12-31 18:00:00.000000000 -0600
++++ u-boot-1.1.6-fsl-1/board/mpc8360emds/u-boot.lds 2006-11-10 11:24:28.000000000 -0600
+@@ -0,0 +1,123 @@
++/*
++ * (C) Copyright 2006
++ * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
++ *
++ * See file CREDITS for list of people who contributed to this
++ * project.
++ *
++ * 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
++ */
++
++OUTPUT_ARCH(powerpc)
++SECTIONS
++{
++ /* Read-only sections, merged into text segment: */
++ . = + SIZEOF_HEADERS;
++ .interp : { *(.interp) }
++ .hash : { *(.hash) }
++ .dynsym : { *(.dynsym) }
++ .dynstr : { *(.dynstr) }
++ .rel.text : { *(.rel.text) }
++ .rela.text : { *(.rela.text) }
++ .rel.data : { *(.rel.data) }
++ .rela.data : { *(.rela.data) }
++ .rel.rodata : { *(.rel.rodata) }
++ .rela.rodata : { *(.rela.rodata) }
++ .rel.got : { *(.rel.got) }
++ .rela.got : { *(.rela.got) }
++ .rel.ctors : { *(.rel.ctors) }
++ .rela.ctors : { *(.rela.ctors) }
++ .rel.dtors : { *(.rel.dtors) }
++ .rela.dtors : { *(.rela.dtors) }
++ .rel.bss : { *(.rel.bss) }
++ .rela.bss : { *(.rela.bss) }
++ .rel.plt : { *(.rel.plt) }
++ .rela.plt : { *(.rela.plt) }
++ .init : { *(.init) }
++ .plt : { *(.plt) }
++ .text :
++ {
++ cpu/mpc83xx/start.o (.text)
++ *(.text)
++ *(.fixup)
++ *(.got1)
++ . = ALIGN(16);
++ *(.rodata)
++ *(.rodata1)
++ *(.rodata.str1.4)
++ *(.eh_frame)
++ }
++ .fini : { *(.fini) } =0
++ .ctors : { *(.ctors) }
++ .dtors : { *(.dtors) }
++
++ /* Read-write section, merged into data segment: */
++ . = (. + 0x0FFF) & 0xFFFFF000;
++ _erotext = .;
++ PROVIDE (erotext = .);
++ .reloc :
++ {
++ *(.got)
++ _GOT2_TABLE_ = .;
++ *(.got2)
++ _FIXUP_TABLE_ = .;
++ *(.fixup)
++ }
++ __got2_entries = (_FIXUP_TABLE_ - _GOT2_TABLE_) >> 2;
++ __fixup_entries = (. - _FIXUP_TABLE_) >> 2;
++
++ .data :
++ {
++ *(.data)
++ *(.data1)
++ *(.sdata)
++ *(.sdata2)
++ *(.dynamic)
++ CONSTRUCTORS
++ }
++ _edata = .;
++ PROVIDE (edata = .);
++
++ . = .;
++ __u_boot_cmd_start = .;
++ .u_boot_cmd : { *(.u_boot_cmd) }
++ __u_boot_cmd_end = .;
++
++
++ . = .;
++ __start___ex_table = .;
++ __ex_table : { *(__ex_table) }
++ __stop___ex_table = .;
++
++ . = ALIGN(4096);
++ __init_begin = .;
++ .text.init : { *(.text.init) }
++ .data.init : { *(.data.init) }
++ . = ALIGN(4096);
++ __init_end = .;
++
++ __bss_start = .;
++ .bss :
++ {
++ *(.sbss) *(.scommon)
++ *(.dynbss)
++ *(.bss)
++ *(COMMON)
++ }
++ _end = . ;
++ PROVIDE (end = .);
++}
++ENTRY(_start)
+diff -Naupr u-boot-1.1.6/board/prodrive/alpr/alpr.c u-boot-1.1.6-fsl-1/board/prodrive/alpr/alpr.c
+--- u-boot-1.1.6/board/prodrive/alpr/alpr.c 1969-12-31 18:00:00.000000000 -0600
++++ u-boot-1.1.6-fsl-1/board/prodrive/alpr/alpr.c 2006-11-30 12:34:13.000000000 -0600
+@@ -0,0 +1,328 @@
++/*
++ * (C) Copyright 2006
++ * Stefan Roese, DENX Software Engineering, sr@denx.de.
++ *
++ * See file CREDITS for list of people who contributed to this
++ * project.
++ *
++ * 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
++ */
++
++
++#include <common.h>
++#include <asm/processor.h>
++#include <spd_sdram.h>
++#include <ppc4xx_enet.h>
++#include <miiphy.h>
++
++DECLARE_GLOBAL_DATA_PTR;
++
++extern int alpr_fpga_init(void);
++
++int board_early_init_f (void)
++{
++ /*-------------------------------------------------------------------------
++ * Initialize EBC CONFIG
++ *-------------------------------------------------------------------------*/
++ mtebc(xbcfg, EBC_CFG_LE_UNLOCK |
++ EBC_CFG_PTD_DISABLE | EBC_CFG_RTC_64PERCLK |
++ EBC_CFG_ATC_PREVIOUS | EBC_CFG_DTC_PREVIOUS |
++ EBC_CFG_CTC_PREVIOUS | EBC_CFG_EMC_NONDEFAULT |
++ EBC_CFG_PME_DISABLE | EBC_CFG_PR_32);
++
++ /*--------------------------------------------------------------------
++ * Setup the interrupt controller polarities, triggers, etc.
++ *-------------------------------------------------------------------*/
++ mtdcr (uic0sr, 0xffffffff); /* clear all */
++ mtdcr (uic0er, 0x00000000); /* disable all */
++ mtdcr (uic0cr, 0x00000009); /* SMI & UIC1 crit are critical */
++ mtdcr (uic0pr, 0xfffffe03); /* per manual */
++ mtdcr (uic0tr, 0x01c00000); /* per manual */
++ mtdcr (uic0vr, 0x00000001); /* int31 highest, base=0x000 */
++ mtdcr (uic0sr, 0xffffffff); /* clear all */
++
++ mtdcr (uic1sr, 0xffffffff); /* clear all */
++ mtdcr (uic1er, 0x00000000); /* disable all */
++ mtdcr (uic1cr, 0x00000000); /* all non-critical */
++ mtdcr (uic1pr, 0xffffe0ff); /* per ref-board manual */
++ mtdcr (uic1tr, 0x00ffc000); /* per ref-board manual */
++ mtdcr (uic1vr, 0x00000001); /* int31 highest, base=0x000 */
++ mtdcr (uic1sr, 0xffffffff); /* clear all */
++
++ mtdcr (uic2sr, 0xffffffff); /* clear all */
++ mtdcr (uic2er, 0x00000000); /* disable all */
++ mtdcr (uic2cr, 0x00000000); /* all non-critical */
++ mtdcr (uic2pr, 0xffffffff); /* per ref-board manual */
++ mtdcr (uic2tr, 0x00ff8c0f); /* per ref-board manual */
++ mtdcr (uic2vr, 0x00000001); /* int31 highest, base=0x000 */
++ mtdcr (uic2sr, 0xffffffff); /* clear all */
++
++ mtdcr (uicb0sr, 0xfc000000); /* clear all */
++ mtdcr (uicb0er, 0x00000000); /* disable all */
++ mtdcr (uicb0cr, 0x00000000); /* all non-critical */
++ mtdcr (uicb0pr, 0xfc000000); /* */
++ mtdcr (uicb0tr, 0x00000000); /* */
++ mtdcr (uicb0vr, 0x00000001); /* */
++
++ /* Setup GPIO/IRQ multiplexing */
++ mtsdr(sdr_pfc0, 0x01a03e00);
++
++ return 0;
++}
++
++int last_stage_init(void)
++{
++ unsigned short reg;
++
++ /*
++ * Configure LED's of both Marvell 88E1111 PHY's
++ *
++ * This has to be done after the 4xx ethernet driver is loaded,
++ * so "last_stage_init()" is the right place.
++ */
++ miiphy_read("ppc_4xx_eth2", CONFIG_PHY2_ADDR, 0x18, &reg);
++ reg |= 0x0001;
++ miiphy_write("ppc_4xx_eth2", CONFIG_PHY2_ADDR, 0x18, reg);
++ miiphy_read("ppc_4xx_eth3", CONFIG_PHY3_ADDR, 0x18, &reg);
++ reg |= 0x0001;
++ miiphy_write("ppc_4xx_eth3", CONFIG_PHY3_ADDR, 0x18, reg);
++
++ return 0;
++}
++
++static int board_rev(void)
++{
++ int rev;
++ u32 pfc0;
++
++ /* Setup GPIO14 & 15 as GPIO */
++ mfsdr(sdr_pfc0, pfc0);
++ pfc0 |= CFG_GPIO_REV0 | CFG_GPIO_REV1;
++ mtsdr(sdr_pfc0, pfc0);
++
++ /* Setup as input */
++ out32(GPIO0_TCR, in32(GPIO0_TCR) & ~(CFG_GPIO_REV0 | CFG_GPIO_REV0));
++ out32(GPIO0_ODR, in32(GPIO0_ODR) & ~(CFG_GPIO_REV0 | CFG_GPIO_REV0));
++
++ rev = (in32(GPIO0_IR) >> 16) & 0x3;
++
++ /* Setup GPIO14 & 15 as non GPIO again */
++ mfsdr(sdr_pfc0, pfc0);
++ pfc0 &= ~(CFG_GPIO_REV0 | CFG_GPIO_REV1);
++ mtsdr(sdr_pfc0, pfc0);
++
++ return rev;
++}
++
++int checkboard (void)
++{
++ char *s = getenv ("serial#");
++
++ printf ("Board: ALPR");
++ if (s != NULL) {
++ puts (", serial# ");
++ puts (s);
++ }
++ printf(" (Rev. %d)\n", board_rev());
++
++ return (0);
++}
++
++#if defined(CFG_DRAM_TEST)
++int testdram (void)
++{
++ uint *pstart = (uint *) 0x00000000;
++ uint *pend = (uint *) 0x08000000;
++ uint *p;
++
++ for (p = pstart; p < pend; p++)
++ *p = 0xaaaaaaaa;
++
++ for (p = pstart; p < pend; p++) {
++ if (*p != 0xaaaaaaaa) {
++ printf ("SDRAM test fails at: %08x\n", (uint) p);
++ return 1;
++ }
++ }
++
++ for (p = pstart; p < pend; p++)
++ *p = 0x55555555;
++
++ for (p = pstart; p < pend; p++) {
++ if (*p != 0x55555555) {
++ printf ("SDRAM test fails at: %08x\n", (uint) p);
++ return 1;
++ }
++ }
++ return 0;
++}
++#endif
++
++/*************************************************************************
++ * pci_pre_init
++ *
++ * This routine is called just prior to registering the hose and gives
++ * the board the opportunity to check things. Returning a value of zero
++ * indicates that things are bad & PCI initialization should be aborted.
++ *
++ * Different boards may wish to customize the pci controller structure
++ * (add regions, override default access routines, etc) or perform
++ * certain pre-initialization actions.
++ *
++ ************************************************************************/
++#if defined(CONFIG_PCI) && defined(CFG_PCI_PRE_INIT)
++int pci_pre_init(struct pci_controller * hose )
++{
++ unsigned long strap;
++
++ /*--------------------------------------------------------------------------+
++ * The ocotea board is always configured as the host & requires the
++ * PCI arbiter to be enabled.
++ *--------------------------------------------------------------------------*/
++ mfsdr(sdr_sdstp1, strap);
++ if( (strap & SDR0_SDSTP1_PAE_MASK) == 0 ){
++ printf("PCI: SDR0_STRP1[%08lX] - PCI Arbiter disabled.\n",strap);
++ return 0;
++ }
++
++ /* FPGA Init */
++ alpr_fpga_init ();
++
++ return 1;
++}
++#endif /* defined(CONFIG_PCI) && defined(CFG_PCI_PRE_INIT) */
++
++/*************************************************************************
++ * pci_target_init
++ *
++ * The bootstrap configuration provides default settings for the pci
++ * inbound map (PIM). But the bootstrap config choices are limited and
++ * may not be sufficient for a given board.
++ *
++ ************************************************************************/
++#if defined(CONFIG_PCI) && defined(CFG_PCI_TARGET_INIT)
++void pci_target_init(struct pci_controller * hose )
++{
++ /*--------------------------------------------------------------------------+
++ * Disable everything
++ *--------------------------------------------------------------------------*/
++ out32r( PCIX0_PIM0SA, 0 ); /* disable */
++ out32r( PCIX0_PIM1SA, 0 ); /* disable */
++ out32r( PCIX0_PIM2SA, 0 ); /* disable */
++ out32r( PCIX0_EROMBA, 0 ); /* disable expansion rom */
++
++ /*--------------------------------------------------------------------------+
++ * Map all of SDRAM to PCI address 0x0000_0000. Note that the 440 strapping
++ * options to not support sizes such as 128/256 MB.
++ *--------------------------------------------------------------------------*/
++ out32r( PCIX0_PIM0LAL, CFG_SDRAM_BASE );
++ out32r( PCIX0_PIM0LAH, 0 );
++ out32r( PCIX0_PIM0SA, ~(gd->ram_size - 1) | 1 );
++
++ out32r( PCIX0_BAR0, 0 );
++
++ /*--------------------------------------------------------------------------+
++ * Program the board's subsystem id/vendor id
++ *--------------------------------------------------------------------------*/
++ out16r( PCIX0_SBSYSVID, CFG_PCI_SUBSYS_VENDORID );
++ out16r( PCIX0_SBSYSID, CFG_PCI_SUBSYS_DEVICEID );
++
++ out16r( PCIX0_CMD, in16r(PCIX0_CMD) | PCI_COMMAND_MEMORY | PCI_COMMAND_MASTER);
++}
++#endif /* defined(CONFIG_PCI) && defined(CFG_PCI_TARGET_INIT) */
++
++/*************************************************************************
++ * is_pci_host
++ *
++ * This routine is called to determine if a pci scan should be
++ * performed. With various hardware environments (especially cPCI and
++ * PPMC) it's insufficient to depend on the state of the arbiter enable
++ * bit in the strap register, or generic host/adapter assumptions.
++ *
++ * Rather than hard-code a bad assumption in the general 440 code, the
++ * 440 pci code requires the board to decide at runtime.
++ *
++ * Return 0 for adapter mode, non-zero for host (monarch) mode.
++ *
++ *
++ ************************************************************************/
++#if defined(CONFIG_PCI)
++
++static void wait_for_pci_ready(void)
++{
++ /*
++ * Configure EREADY as input
++ */
++ out32(GPIO0_TCR, in32(GPIO0_TCR) & ~CFG_GPIO_EREADY);
++ udelay(1000);
++
++ for (;;) {
++ if (in32(GPIO0_IR) & CFG_GPIO_EREADY)
++ return;
++ }
++
++}
++
++int is_pci_host(struct pci_controller *hose)
++{
++ wait_for_pci_ready();
++ return 1; /* return 1 for host controller */
++}
++#endif /* defined(CONFIG_PCI) */
++
++/*************************************************************************
++ * pci_master_init
++ *
++ ************************************************************************/
++#if defined(CONFIG_PCI) && defined(CFG_PCI_MASTER_INIT)
++void pci_master_init(struct pci_controller *hose)
++{
++ /*--------------------------------------------------------------------------+
++ | PowerPC440 PCI Master configuration.
++ | Map PLB/processor addresses to PCI memory space.
++ | PLB address 0xA0000000-0xCFFFFFFF ==> PCI address 0x80000000-0xCFFFFFFF
++ | Use byte reversed out routines to handle endianess.
++ | Make this region non-prefetchable.
++ +--------------------------------------------------------------------------*/
++ out32r( PCIX0_POM0SA, 0 ); /* disable */
++ out32r( PCIX0_POM1SA, 0 ); /* disable */
++ out32r( PCIX0_POM2SA, 0 ); /* disable */
++
++ out32r(PCIX0_POM0LAL, CFG_PCI_MEMBASE); /* PMM0 Local Address */
++ out32r(PCIX0_POM0LAH, 0x00000003); /* PMM0 Local Address */
++ out32r(PCIX0_POM0PCIAL, CFG_PCI_MEMBASE); /* PMM0 PCI Low Address */
++ out32r(PCIX0_POM0PCIAH, 0x00000000); /* PMM0 PCI High Address */
++ out32r(PCIX0_POM0SA, ~(0x10000000 - 1) | 1); /* 256MB + enable region */
++
++ out32r(PCIX0_POM1LAL, CFG_PCI_MEMBASE2); /* PMM0 Local Address */
++ out32r(PCIX0_POM1LAH, 0x00000003); /* PMM0 Local Address */
++ out32r(PCIX0_POM1PCIAL, CFG_PCI_MEMBASE2); /* PMM0 PCI Low Address */
++ out32r(PCIX0_POM1PCIAH, 0x00000000); /* PMM0 PCI High Address */
++ out32r(PCIX0_POM1SA, ~(0x10000000 - 1) | 1); /* 256MB + enable region */
++}
++#endif /* defined(CONFIG_PCI) && defined(CFG_PCI_MASTER_INIT) */
++
++#ifdef CONFIG_POST
++/*
++ * Returns 1 if keys pressed to start the power-on long-running tests
++ * Called from board_init_f().
++ */
++int post_hotkeys_pressed(void)
++{
++
++ return (ctrlc());
++}
++#endif
+diff -Naupr u-boot-1.1.6/board/prodrive/alpr/config.mk u-boot-1.1.6-fsl-1/board/prodrive/alpr/config.mk
+--- u-boot-1.1.6/board/prodrive/alpr/config.mk 1969-12-31 18:00:00.000000000 -0600
++++ u-boot-1.1.6-fsl-1/board/prodrive/alpr/config.mk 2006-11-30 12:34:13.000000000 -0600
+@@ -0,0 +1,44 @@
++#
++# (C) Copyright 2004
++# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
++#
++# See file CREDITS for list of people who contributed to this
++# project.
++#
++# 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
++#
++
++#
++# AMCC 440GX Reference Platform (Ocotea) board
++#
++
++#TEXT_BASE = 0xFFFE0000
++
++ifeq ($(ramsym),1)
++TEXT_BASE = 0x07FD0000
++else
++TEXT_BASE = 0xFFFC0000
++endif
++
++PLATFORM_CPPFLAGS += -DCONFIG_440=1
++
++ifeq ($(debug),1)
++PLATFORM_CPPFLAGS += -DDEBUG
++endif
++
++ifeq ($(dbcr),1)
++PLATFORM_CPPFLAGS += -DCFG_INIT_DBCR=0x8cff0000
++endif
+diff -Naupr u-boot-1.1.6/board/prodrive/alpr/fpga.c u-boot-1.1.6-fsl-1/board/prodrive/alpr/fpga.c
+--- u-boot-1.1.6/board/prodrive/alpr/fpga.c 1969-12-31 18:00:00.000000000 -0600
++++ u-boot-1.1.6-fsl-1/board/prodrive/alpr/fpga.c 2006-11-30 12:34:13.000000000 -0600
+@@ -0,0 +1,257 @@
++/*
++ * (C) Copyright 2006
++ * Heiko Schocher, DENX Software Engineering, hs@denx.de
++ *
++ * See file CREDITS for list of people who contributed to this
++ * project.
++ *
++ * 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
++ *
++ */
++
++/*
++ * Altera FPGA configuration support for the ALPR computer from prodrive
++ */
++
++#include <common.h>
++#include <altera.h>
++#include <ACEX1K.h>
++#include <command.h>
++#include <asm-ppc/processor.h>
++#include <ppc440.h>
++#include "fpga.h"
++
++DECLARE_GLOBAL_DATA_PTR;
++
++#if defined(CONFIG_FPGA)
++
++#ifdef FPGA_DEBUG
++#define PRINTF(fmt,args...) printf (fmt ,##args)
++#else
++#define PRINTF(fmt,args...)
++#endif
++
++static unsigned long regval;
++
++#define SET_GPIO_REG_0(reg, bit) { \
++ regval = in32(reg); \
++ regval &= ~(0x80000000 >> bit); \
++ out32(reg, regval); \
++ }
++
++#define SET_GPIO_REG_1(reg, bit) { \
++ regval = in32(reg); \
++ regval |= (0x80000000 >> bit); \
++ out32(reg, regval); \
++ }
++
++#define SET_GPIO_0(bit) SET_GPIO_REG_0(GPIO0_OR, bit)
++#define SET_GPIO_1(bit) SET_GPIO_REG_1(GPIO0_OR, bit)
++
++#define FPGA_PRG (0x80000000 >> CFG_GPIO_PROG_EN)
++#define FPGA_CONFIG (0x80000000 >> CFG_GPIO_CONFIG)
++#define FPGA_DATA (0x80000000 >> CFG_GPIO_DATA)
++#define FPGA_CLK (0x80000000 >> CFG_GPIO_CLK)
++#define OLD_VAL (FPGA_PRG | FPGA_CONFIG)
++
++#define SET_FPGA(data) out32(GPIO0_OR, data)
++
++#define FPGA_WRITE_1 { \
++ SET_FPGA(OLD_VAL | 0 | FPGA_DATA); /* set data to 1 */ \
++ SET_FPGA(OLD_VAL | FPGA_CLK | FPGA_DATA);} /* set data to 1 */
++
++#define FPGA_WRITE_0 { \
++ SET_FPGA(OLD_VAL | 0 | 0 ); /* set data to 0 */ \
++ SET_FPGA(OLD_VAL | FPGA_CLK | 0 );} /* set data to 1 */
++
++/* Plattforminitializations */
++/* Here we have to set the FPGA Chain */
++/* PROGRAM_PROG_EN = HIGH */
++/* PROGRAM_SEL_DPR = LOW */
++int fpga_pre_fn (int cookie)
++{
++ unsigned long reg;
++
++ reg = in32(GPIO0_IR);
++ /* Enable the FPGA Chain */
++ SET_GPIO_REG_1(GPIO0_TCR, CFG_GPIO_PROG_EN);
++ SET_GPIO_REG_0(GPIO0_ODR, CFG_GPIO_PROG_EN);
++ SET_GPIO_1(CFG_GPIO_PROG_EN);
++ SET_GPIO_REG_1(GPIO0_TCR, CFG_GPIO_SEL_DPR);
++ SET_GPIO_REG_0(GPIO0_ODR, CFG_GPIO_SEL_DPR);
++ SET_GPIO_0((CFG_GPIO_SEL_DPR));
++
++ /* initialize the GPIO Pins */
++ /* output */
++ SET_GPIO_0(CFG_GPIO_CLK);
++ SET_GPIO_REG_1(GPIO0_TCR, CFG_GPIO_CLK);
++ SET_GPIO_REG_0(GPIO0_ODR, CFG_GPIO_CLK);
++
++ /* output */
++ SET_GPIO_0(CFG_GPIO_DATA);
++ SET_GPIO_REG_1(GPIO0_TCR, CFG_GPIO_DATA);
++ SET_GPIO_REG_0(GPIO0_ODR, CFG_GPIO_DATA);
++
++ /* First we set STATUS to 0 then as an input */
++ SET_GPIO_REG_1(GPIO0_TCR, CFG_GPIO_STATUS);
++ SET_GPIO_REG_0(GPIO0_ODR, CFG_GPIO_STATUS);
++ SET_GPIO_0(CFG_GPIO_STATUS);
++ SET_GPIO_REG_0(GPIO0_TCR, CFG_GPIO_STATUS);
++ SET_GPIO_REG_0(GPIO0_ODR, CFG_GPIO_STATUS);
++
++ /* output */
++ SET_GPIO_REG_1(GPIO0_TCR, CFG_GPIO_CONFIG);
++ SET_GPIO_REG_0(GPIO0_ODR, CFG_GPIO_CONFIG);
++ SET_GPIO_0(CFG_GPIO_CONFIG);
++
++ /* input */
++ SET_GPIO_0(CFG_GPIO_CON_DON);
++ SET_GPIO_REG_0(GPIO0_TCR, CFG_GPIO_CON_DON);
++ SET_GPIO_REG_0(GPIO0_ODR, CFG_GPIO_CON_DON);
++
++ /* CONFIG = 0 STATUS = 0 -> FPGA in reset state */
++ SET_GPIO_0(CFG_GPIO_CONFIG);
++ return FPGA_SUCCESS;
++}
++
++/* Set the state of CONFIG Pin */
++int fpga_config_fn (int assert_config, int flush, int cookie)
++{
++ if (assert_config) {
++ SET_GPIO_1(CFG_GPIO_CONFIG);
++ } else {
++ SET_GPIO_0(CFG_GPIO_CONFIG);
++ }
++ return FPGA_SUCCESS;
++}
++
++/* Returns the state of STATUS Pin */
++int fpga_status_fn (int cookie)
++{
++ unsigned long reg;
++
++ reg = in32(GPIO0_IR);
++ if (reg &= (0x80000000 >> CFG_GPIO_STATUS)) {
++ PRINTF("STATUS = HIGH\n");
++ return FPGA_FAIL;
++ }
++ PRINTF("STATUS = LOW\n");
++ return FPGA_SUCCESS;
++}
++
++/* Returns the state of CONF_DONE Pin */
++int fpga_done_fn (int cookie)
++{
++ unsigned long reg;
++ reg = in32(GPIO0_IR);
++ if (reg &= (0x80000000 >> CFG_GPIO_CON_DON)) {
++ PRINTF("CONF_DON = HIGH\n");
++ return FPGA_FAIL;
++ }
++ PRINTF("CONF_DON = LOW\n");
++ return FPGA_SUCCESS;
++}
++
++/* writes the complete buffer to the FPGA
++ writing the complete buffer in one function is much faster,
++ then calling it for every bit */
++int fpga_write_fn (void *buf, size_t len, int flush, int cookie)
++{
++ size_t bytecount = 0;
++ unsigned char *data = (unsigned char *) buf;
++ unsigned char val=0;
++ int i;
++ int len_40 = len / 40;
++
++ while (bytecount < len) {
++ val = data[bytecount++];
++ i = 8;
++ do {
++ if (val & 0x01) {
++ FPGA_WRITE_1;
++ } else {
++ FPGA_WRITE_0;
++ }
++ val >>= 1;
++ i --;
++ } while (i > 0);
++
++#ifdef CFG_FPGA_PROG_FEEDBACK
++ if (bytecount % len_40 == 0) {
++ putc ('.'); /* let them know we are alive */
++#ifdef CFG_FPGA_CHECK_CTRLC
++ if (ctrlc ())
++ return FPGA_FAIL;
++#endif
++ }
++#endif
++ }
++ return FPGA_SUCCESS;
++}
++
++/* called, when programming is aborted */
++int fpga_abort_fn (int cookie)
++{
++ SET_GPIO_1((CFG_GPIO_SEL_DPR));
++ return FPGA_SUCCESS;
++}
++
++/* called, when programming was succesful */
++int fpga_post_fn (int cookie)
++{
++ return fpga_abort_fn (cookie);
++}
++
++/* Note that these are pointers to code that is in Flash. They will be
++ * relocated at runtime.
++ */
++Altera_CYC2_Passive_Serial_fns fpga_fns = {
++ fpga_pre_fn,
++ fpga_config_fn,
++ fpga_status_fn,
++ fpga_done_fn,
++ fpga_write_fn,
++ fpga_abort_fn,
++ fpga_post_fn
++};
++
++Altera_desc fpga[CONFIG_FPGA_COUNT] = {
++ {Altera_CYC2,
++ passive_serial,
++ Altera_EP2C35_SIZE,
++ (void *) &fpga_fns,
++ NULL,
++ 0}
++};
++
++/*
++ * Initialize the fpga. Return 1 on success, 0 on failure.
++ */
++int alpr_fpga_init (void)
++{
++ int i;
++
++ PRINTF ("%s:%d: Initialize FPGA interface (relocation offset = 0x%.8lx)\n", __FUNCTION__, __LINE__, gd->reloc_off);
++ fpga_init (gd->reloc_off);
++
++ for (i = 0; i < CONFIG_FPGA_COUNT; i++) {
++ PRINTF ("%s:%d: Adding fpga %d\n", __FUNCTION__, __LINE__, i);
++ fpga_add (fpga_altera, &fpga[i]);
++ }
++ return 1;
++}
++
++#endif
+diff -Naupr u-boot-1.1.6/board/prodrive/alpr/init.S u-boot-1.1.6-fsl-1/board/prodrive/alpr/init.S
+--- u-boot-1.1.6/board/prodrive/alpr/init.S 1969-12-31 18:00:00.000000000 -0600
++++ u-boot-1.1.6-fsl-1/board/prodrive/alpr/init.S 2006-11-30 12:34:13.000000000 -0600
+@@ -0,0 +1,103 @@
++/*
++ * (C) Copyright 2006
++ * Stefan Roese, DENX Software Engineering, sr@denx.de.
++ *
++ * See file CREDITS for list of people who contributed to this
++ * project.
++ *
++ * 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
++ */
++
++#include <ppc_asm.tmpl>
++#include <config.h>
++
++/* General */
++#define TLB_VALID 0x00000200
++
++/* Supported page sizes */
++#define SZ_1K 0x00000000
++#define SZ_4K 0x00000010
++#define SZ_16K 0x00000020
++#define SZ_64K 0x00000030
++#define SZ_256K 0x00000040
++#define SZ_1M 0x00000050
++#define SZ_16M 0x00000070
++#define SZ_256M 0x00000090
++
++/* Storage attributes */
++#define SA_W 0x00000800 /* Write-through */
++#define SA_I 0x00000400 /* Caching inhibited */
++#define SA_M 0x00000200 /* Memory coherence */
++#define SA_G 0x00000100 /* Guarded */
++#define SA_E 0x00000080 /* Endian */
++
++/* Access control */
++#define AC_X 0x00000024 /* Execute */
++#define AC_W 0x00000012 /* Write */
++#define AC_R 0x00000009 /* Read */
++
++/* Some handy macros */
++
++#define EPN(e) ((e) & 0xfffffc00)
++#define TLB0(epn,sz) ( (EPN((epn)) | (sz) | TLB_VALID ) )
++#define TLB1(rpn,erpn) ( ((rpn)&0xfffffc00) | (erpn) )
++#define TLB2(a) ( (a)&0x00000fbf )
++
++#define tlbtab_start\
++ mflr r1 ;\
++ bl 0f ;
++
++#define tlbtab_end\
++ .long 0, 0, 0 ; \
++0: mflr r0 ; \
++ mtlr r1 ; \
++ blr ;
++
++#define tlbentry(epn,sz,rpn,erpn,attr)\
++ .long TLB0(epn,sz),TLB1(rpn,erpn),TLB2(attr)
++
++
++/**************************************************************************
++ * TLB TABLE
++ *
++ * This table is used by the cpu boot code to setup the initial tlb
++ * entries. Rather than make broad assumptions in the cpu source tree,
++ * this table lets each board set things up however they like.
++ *
++ * Pointer to the table is returned in r1
++ *
++ *************************************************************************/
++
++ .section .bootpg,"ax"
++ .globl tlbtab
++
++tlbtab:
++ tlbtab_start
++ tlbentry( 0xff000000, SZ_16M, 0xff000000, 1, AC_R|AC_W|AC_X|SA_G|SA_I )
++ tlbentry( CFG_PERIPHERAL_BASE, SZ_256M, 0x40000000, 1, AC_R|AC_W|SA_G|SA_I )
++ tlbentry( CFG_ISRAM_BASE, SZ_4K, 0x80000000, 0, AC_R|AC_W|AC_X )
++ tlbentry( CFG_ISRAM_BASE + 0x1000, SZ_4K, 0x80001000, 0, AC_R|AC_W|AC_X )
++ tlbentry( CFG_SDRAM_BASE, SZ_256M, 0x00000000, 0, AC_R|AC_W|AC_X|SA_G|SA_I )
++ tlbentry( CFG_PCI_BASE, SZ_256M, 0x00000000, 2, AC_R|AC_W|SA_G|SA_I )
++
++ /* PCI */
++ tlbentry( CFG_PCI_MEMBASE, SZ_256M, CFG_PCI_MEMBASE, 3, AC_R|AC_W|SA_G|SA_I )
++ tlbentry( CFG_PCI_MEMBASE1, SZ_256M, CFG_PCI_MEMBASE1, 3, AC_R|AC_W|SA_G|SA_I )
++ tlbentry( CFG_PCI_MEMBASE2, SZ_256M, CFG_PCI_MEMBASE2, 3, AC_R|AC_W|SA_G|SA_I )
++
++ /* NAND */
++ tlbentry( CFG_NAND_BASE, SZ_4K, CFG_NAND_BASE, 1, AC_R|AC_W|AC_X|SA_G|SA_I )
++ tlbtab_end
+diff -Naupr u-boot-1.1.6/board/prodrive/alpr/Makefile u-boot-1.1.6-fsl-1/board/prodrive/alpr/Makefile
+--- u-boot-1.1.6/board/prodrive/alpr/Makefile 1969-12-31 18:00:00.000000000 -0600
++++ u-boot-1.1.6-fsl-1/board/prodrive/alpr/Makefile 2006-11-30 12:34:13.000000000 -0600
+@@ -0,0 +1,51 @@
++#
++# (C) Copyright 2006
++# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
++#
++# See file CREDITS for list of people who contributed to this
++# project.
++#
++# 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
++#
++
++include $(TOPDIR)/config.mk
++
++LIB = $(obj)lib$(BOARD).a
++
++COBJS = $(BOARD).o fpga.o nand.o
++SOBJS = init.o
++
++SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
++OBJS := $(addprefix $(obj),$(COBJS))
++SOBJS := $(addprefix $(obj),$(SOBJS))
++
++$(LIB): $(OBJS) $(SOBJS)
++ $(AR) $(ARFLAGS) $@ $(OBJS)
++
++clean:
++ rm -f $(SOBJS) $(OBJS)
++
++distclean: clean
++ rm -f $(LIB) core *.bak .depend *~
++
++#########################################################################
++
++# defines $(obj).depend target
++include $(SRCTREE)/rules.mk
++
++sinclude $(obj).depend
++
++#########################################################################
+diff -Naupr u-boot-1.1.6/board/prodrive/alpr/nand.c u-boot-1.1.6-fsl-1/board/prodrive/alpr/nand.c
+--- u-boot-1.1.6/board/prodrive/alpr/nand.c 1969-12-31 18:00:00.000000000 -0600
++++ u-boot-1.1.6-fsl-1/board/prodrive/alpr/nand.c 2006-11-30 12:34:13.000000000 -0600
+@@ -0,0 +1,173 @@
++/*
++ * (C) Copyright 2006
++ * Heiko Schocher, DENX Software Engineering, hs@denx.de
++ *
++ * (C) Copyright 2006
++ * Stefan Roese, DENX Software Engineering, sr@denx.de.
++ *
++ * See file CREDITS for list of people who contributed to this
++ * project.
++ *
++ * 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
++ */
++
++#include <common.h>
++
++#if (CONFIG_COMMANDS & CFG_CMD_NAND)
++
++#include <asm/processor.h>
++#include <nand.h>
++
++struct alpr_ndfc_regs {
++ u8 cmd[4];
++ u8 addr_wait;
++ u8 term;
++ u8 dummy;
++ u8 dummy2;
++ u8 data;
++};
++
++static u8 hwctl;
++static struct alpr_ndfc_regs *alpr_ndfc = NULL;
++
++#define readb(addr) (u8)(*(volatile u8 *)(addr))
++#define writeb(d,addr) *(volatile u8 *)(addr) = ((u8)(d))
++
++/*
++ * The ALPR has a NAND Flash Controller (NDFC) that handles all accesses to
++ * the NAND devices. The NDFC has command, address and data registers that
++ * when accessed will set up the NAND flash pins appropriately. We'll use the
++ * hwcontrol function to save the configuration in a global variable.
++ * We can then use this information in the read and write functions to
++ * determine which NDFC register to access.
++ *
++ * There are 2 NAND devices on the board, a Hynix HY27US08561A (1 GByte).
++ */
++static void alpr_nand_hwcontrol(struct mtd_info *mtd, int cmd)
++{
++ switch (cmd) {
++ case NAND_CTL_SETCLE:
++ hwctl |= 0x1;
++ break;
++ case NAND_CTL_CLRCLE:
++ hwctl &= ~0x1;
++ break;
++ case NAND_CTL_SETALE:
++ hwctl |= 0x2;
++ break;
++ case NAND_CTL_CLRALE:
++ hwctl &= ~0x2;
++ break;
++ case NAND_CTL_SETNCE:
++ break;
++ case NAND_CTL_CLRNCE:
++ writeb(0x00, &(alpr_ndfc->term));
++ break;
++ }
++}
++
++static void alpr_nand_write_byte(struct mtd_info *mtd, u_char byte)
++{
++ struct nand_chip *nand = mtd->priv;
++
++ if (hwctl & 0x1)
++ /*
++ * IO_ADDR_W used as CMD[i] reg to support multiple NAND
++ * chips.
++ */
++ writeb(byte, nand->IO_ADDR_W);
++ else if (hwctl & 0x2) {
++ writeb(byte, &(alpr_ndfc->addr_wait));
++ } else
++ writeb(byte, &(alpr_ndfc->data));
++}
++
++static u_char alpr_nand_read_byte(struct mtd_info *mtd)
++{
++ return readb(&(alpr_ndfc->data));
++}
++
++static void alpr_nand_write_buf(struct mtd_info *mtd, const u_char *buf, int len)
++{
++ struct nand_chip *nand = mtd->priv;
++ int i;
++
++ for (i = 0; i < len; i++) {
++ if (hwctl & 0x1)
++ /*
++ * IO_ADDR_W used as CMD[i] reg to support multiple NAND
++ * chips.
++ */
++ writeb(buf[i], nand->IO_ADDR_W);
++ else if (hwctl & 0x2)
++ writeb(buf[i], &(alpr_ndfc->addr_wait));
++ else
++ writeb(buf[i], &(alpr_ndfc->data));
++ }
++}
++
++static void alpr_nand_read_buf(struct mtd_info *mtd, u_char *buf, int len)
++{
++ int i;
++
++ for (i = 0; i < len; i++) {
++ buf[i] = readb(&(alpr_ndfc->data));
++ }
++}
++
++static int alpr_nand_verify_buf(struct mtd_info *mtd, const u_char *buf, int len)
++{
++ int i;
++
++ for (i = 0; i < len; i++)
++ if (buf[i] != readb(&(alpr_ndfc->data)))
++ return i;
++
++ return 0;
++}
++
++static int alpr_nand_dev_ready(struct mtd_info *mtd)
++{
++ volatile u_char val;
++
++ /*
++ * Blocking read to wait for NAND to be ready
++ */
++ val = readb(&(alpr_ndfc->addr_wait));
++
++ /*
++ * Return always true
++ */
++ return 1;
++}
++
++void board_nand_init(struct nand_chip *nand)
++{
++ alpr_ndfc = (struct alpr_ndfc_regs *)CFG_NAND_BASE;
++
++ nand->eccmode = NAND_ECC_SOFT;
++
++ /* Reference hardware control function */
++ nand->hwcontrol = alpr_nand_hwcontrol;
++ /* Set command delay time */
++ nand->write_byte = alpr_nand_write_byte;
++ nand->read_byte = alpr_nand_read_byte;
++ nand->write_buf = alpr_nand_write_buf;
++ nand->read_buf = alpr_nand_read_buf;
++ nand->verify_buf = alpr_nand_verify_buf;
++ nand->dev_ready = alpr_nand_dev_ready;
++}
++#endif
+diff -Naupr u-boot-1.1.6/board/prodrive/alpr/u-boot.lds u-boot-1.1.6-fsl-1/board/prodrive/alpr/u-boot.lds
+--- u-boot-1.1.6/board/prodrive/alpr/u-boot.lds 1969-12-31 18:00:00.000000000 -0600
++++ u-boot-1.1.6-fsl-1/board/prodrive/alpr/u-boot.lds 2006-11-30 12:34:13.000000000 -0600
+@@ -0,0 +1,157 @@
++/*
++ * (C) Copyright 2004
++ * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
++ *
++ * See file CREDITS for list of people who contributed to this
++ * project.
++ *
++ * 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
++ */
++
++OUTPUT_ARCH(powerpc)
++SEARCH_DIR(/lib); SEARCH_DIR(/usr/lib); SEARCH_DIR(/usr/local/lib); SEARCH_DIR(/usr/local/powerpc-any-elf/lib);
++/* Do we need any of these for elf?
++ __DYNAMIC = 0; */
++SECTIONS
++{
++ .resetvec 0xFFFFFFFC :
++ {
++ *(.resetvec)
++ } = 0xffff
++
++ .bootpg 0xFFFFF000 :
++ {
++ cpu/ppc4xx/start.o (.bootpg)
++ } = 0xffff
++
++ /* Read-only sections, merged into text segment: */
++ . = + SIZEOF_HEADERS;
++ .interp : { *(.interp) }
++ .hash : { *(.hash) }
++ .dynsym : { *(.dynsym) }
++ .dynstr : { *(.dynstr) }
++ .rel.text : { *(.rel.text) }
++ .rela.text : { *(.rela.text) }
++ .rel.data : { *(.rel.data) }
++ .rela.data : { *(.rela.data) }
++ .rel.rodata : { *(.rel.rodata) }
++ .rela.rodata : { *(.rela.rodata) }
++ .rel.got : { *(.rel.got) }
++ .rela.got : { *(.rela.got) }
++ .rel.ctors : { *(.rel.ctors) }
++ .rela.ctors : { *(.rela.ctors) }
++ .rel.dtors : { *(.rel.dtors) }
++ .rela.dtors : { *(.rela.dtors) }
++ .rel.bss : { *(.rel.bss) }
++ .rela.bss : { *(.rela.bss) }
++ .rel.plt : { *(.rel.plt) }
++ .rela.plt : { *(.rela.plt) }
++ .init : { *(.init) }
++ .plt : { *(.plt) }
++ .text :
++ {
++ /* WARNING - the following is hand-optimized to fit within */
++ /* the sector layout of our flash chips! XXX FIXME XXX */
++
++ cpu/ppc4xx/start.o (.text)
++ board/prodrive/alpr/init.o (.text)
++ cpu/ppc4xx/kgdb.o (.text)
++ cpu/ppc4xx/traps.o (.text)
++ cpu/ppc4xx/interrupts.o (.text)
++ cpu/ppc4xx/serial.o (.text)
++ cpu/ppc4xx/cpu_init.o (.text)
++ cpu/ppc4xx/speed.o (.text)
++ common/dlmalloc.o (.text)
++ lib_generic/crc32.o (.text)
++ lib_ppc/extable.o (.text)
++ lib_generic/zlib.o (.text)
++
++/* . = env_offset;*/
++/* common/environment.o(.text)*/
++
++ *(.text)
++ *(.fixup)
++ *(.got1)
++ }
++ _etext = .;
++ PROVIDE (etext = .);
++ .rodata :
++ {
++ *(.rodata)
++ *(.rodata1)
++ *(.rodata.str1.4)
++ *(.eh_frame)
++ }
++ .fini : { *(.fini) } =0
++ .ctors : { *(.ctors) }
++ .dtors : { *(.dtors) }
++
++ /* Read-write section, merged into data segment: */
++ . = (. + 0x00FF) & 0xFFFFFF00;
++ _erotext = .;
++ PROVIDE (erotext = .);
++ .reloc :
++ {
++ *(.got)
++ _GOT2_TABLE_ = .;
++ *(.got2)
++ _FIXUP_TABLE_ = .;
++ *(.fixup)
++ }
++ __got2_entries = (_FIXUP_TABLE_ - _GOT2_TABLE_) >>2;
++ __fixup_entries = (. - _FIXUP_TABLE_)>>2;
++
++ .data :
++ {
++ *(.data)
++ *(.data1)
++ *(.sdata)
++ *(.sdata2)
++ *(.dynamic)
++ CONSTRUCTORS
++ }
++ _edata = .;
++ PROVIDE (edata = .);
++
++ . = .;
++ __u_boot_cmd_start = .;
++ .u_boot_cmd : { *(.u_boot_cmd) }
++ __u_boot_cmd_end = .;
++
++
++ . = .;
++ __start___ex_table = .;
++ __ex_table : { *(__ex_table) }
++ __stop___ex_table = .;
++
++ . = ALIGN(256);
++ __init_begin = .;
++ .text.init : { *(.text.init) }
++ .data.init : { *(.data.init) }
++ . = ALIGN(256);
++ __init_end = .;
++
++ __bss_start = .;
++ .bss :
++ {
++ *(.sbss) *(.scommon)
++ *(.dynbss)
++ *(.bss)
++ *(COMMON)
++ }
++ _end = . ;
++ PROVIDE (end = .);
++}
+diff -Naupr u-boot-1.1.6/board/prodrive/common/flash.c u-boot-1.1.6-fsl-1/board/prodrive/common/flash.c
+--- u-boot-1.1.6/board/prodrive/common/flash.c 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/board/prodrive/common/flash.c 2006-11-30 12:34:13.000000000 -0600
+@@ -48,6 +48,7 @@ void flash_print_info(flash_info_t *info
+ case FLASH_MAN_AMD: printf ("AMD "); break;
+ case FLASH_MAN_FUJ: printf ("FUJITSU "); break;
+ case FLASH_MAN_SST: printf ("SST "); break;
++ case FLASH_MAN_STM: printf ("ST "); break;
+ case FLASH_MAN_EXCEL: printf ("Excel Semiconductor "); break;
+ default: printf ("Unknown Vendor "); break;
+ }
+@@ -156,6 +157,9 @@ static ulong flash_get_size(vu_long *add
+ case (CFG_FLASH_WORD_SIZE)SST_MANUFACT:
+ info->flash_id = FLASH_MAN_SST;
+ break;
++ case (CFG_FLASH_WORD_SIZE)STM_MANUFACT:
++ info->flash_id = FLASH_MAN_STM;
++ break;
+ case (CFG_FLASH_WORD_SIZE)EXCEL_MANUFACT:
+ info->flash_id = FLASH_MAN_EXCEL;
+ break;
+diff -Naupr u-boot-1.1.6/board/prodrive/p3mx/64460.h u-boot-1.1.6-fsl-1/board/prodrive/p3mx/64460.h
+--- u-boot-1.1.6/board/prodrive/p3mx/64460.h 1969-12-31 18:00:00.000000000 -0600
++++ u-boot-1.1.6-fsl-1/board/prodrive/p3mx/64460.h 2006-12-06 10:33:49.000000000 -0600
+@@ -0,0 +1,52 @@
++/*
++ * (C) Copyright 2003
++ * Ingo Assmus <ingo.assmus@keymile.com>
++ *
++ * See file CREDITS for list of people who contributed to this
++ * project.
++ *
++ * 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
++ */
++
++/*
++ * main board support/init for the Galileo Eval board DB64460.
++ */
++
++#ifndef __64460_H__
++#define __64460_H__
++
++/* CPU Configuration bits */
++#define CPU_CONF_ADDR_MISS_EN (1 << 8)
++#define CPU_CONF_SINGLE_CPU (1 << 11)
++#define CPU_CONF_ENDIANESS (1 << 12)
++#define CPU_CONF_PIPELINE (1 << 13)
++#define CPU_CONF_STOP_RETRY (1 << 17)
++#define CPU_CONF_MULTI_DECODE (1 << 18)
++#define CPU_CONF_DP_VALID (1 << 19)
++#define CPU_CONF_PERR_PROP (1 << 22)
++#define CPU_CONF_AACK_DELAY_2 (1 << 25)
++#define CPU_CONF_AP_VALID (1 << 26)
++#define CPU_CONF_REMAP_WR_DIS (1 << 27)
++
++/* CPU Master Control bits */
++#define CPU_MAST_CTL_ARB_EN (1 << 8)
++#define CPU_MAST_CTL_MASK_BR_1 (1 << 9)
++#define CPU_MAST_CTL_M_WR_TRIG (1 << 10)
++#define CPU_MAST_CTL_M_RD_TRIG (1 << 11)
++#define CPU_MAST_CTL_CLEAN_BLK (1 << 12)
++#define CPU_MAST_CTL_FLUSH_BLK (1 << 13)
++
++#endif /* __64460_H__ */
+diff -Naupr u-boot-1.1.6/board/prodrive/p3mx/config.mk u-boot-1.1.6-fsl-1/board/prodrive/p3mx/config.mk
+--- u-boot-1.1.6/board/prodrive/p3mx/config.mk 1969-12-31 18:00:00.000000000 -0600
++++ u-boot-1.1.6-fsl-1/board/prodrive/p3mx/config.mk 2006-12-06 10:33:49.000000000 -0600
+@@ -0,0 +1,28 @@
++#
++# (C) Copyright 2002-2006
++# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
++#
++# See file CREDITS for list of people who contributed to this
++# project.
++#
++# 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
++#
++
++#
++# p3mx boards (P3M750 & P3M7448)
++#
++
++TEXT_BASE = 0xfff00000
+diff -Naupr u-boot-1.1.6/board/prodrive/p3mx/eth.h u-boot-1.1.6-fsl-1/board/prodrive/p3mx/eth.h
+--- u-boot-1.1.6/board/prodrive/p3mx/eth.h 1969-12-31 18:00:00.000000000 -0600
++++ u-boot-1.1.6-fsl-1/board/prodrive/p3mx/eth.h 2006-12-06 10:33:49.000000000 -0600
+@@ -0,0 +1,43 @@
++/*
++ * (C) Copyright 2001
++ * Josh Huber <huber@mclx.com>, Mission Critical Linux, Inc.
++ *
++ * See file CREDITS for list of people who contributed to this
++ * project.
++ *
++ * 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
++ */
++
++/*
++ * eth.h - header file for the polled mode GT ethernet driver
++ */
++
++#ifndef __EVB64360_ETH_H__
++#define __EVB64360_ETH_H__
++
++#include <asm/types.h>
++#include <asm/io.h>
++#include <asm/byteorder.h>
++#include <common.h>
++
++
++int db64360_eth0_poll(void);
++int db64360_eth0_transmit(unsigned int s, volatile char *p);
++void db64360_eth0_disable(void);
++bool network_start(bd_t *bis);
++
++
++#endif /* __EVB64360_ETH_H__ */
+diff -Naupr u-boot-1.1.6/board/prodrive/p3mx/Makefile u-boot-1.1.6-fsl-1/board/prodrive/p3mx/Makefile
+--- u-boot-1.1.6/board/prodrive/p3mx/Makefile 1969-12-31 18:00:00.000000000 -0600
++++ u-boot-1.1.6-fsl-1/board/prodrive/p3mx/Makefile 2006-12-06 10:33:49.000000000 -0600
+@@ -0,0 +1,55 @@
++#
++# (C) Copyright 2002-2006
++# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
++#
++# See file CREDITS for list of people who contributed to this
++# project.
++#
++# 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
++#
++
++include $(TOPDIR)/config.mk
++ifneq ($(OBJTREE),$(SRCTREE))
++$(shell mkdir -p $(obj)../../Marvell/common)
++endif
++
++LIB = $(obj)lib$(BOARD).a
++
++SOBJS = misc.o
++COBJS = $(BOARD).o mpsc.o mv_eth.o pci.o sdram_init.o serial.o \
++ ../../Marvell/common/i2c.o ../../Marvell/common/memory.o
++
++SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
++OBJS := $(addprefix $(obj),$(COBJS))
++SOBJS := $(addprefix $(obj),$(SOBJS))
++
++$(LIB): $(obj).depend $(OBJS) $(SOBJS)
++ $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
++
++clean:
++ rm -f $(SOBJS) $(OBJS)
++
++distclean: clean
++ rm -f $(LIB) core *.bak .depend *~
++
++#########################################################################
++
++# defines $(obj).depend target
++include $(SRCTREE)/rules.mk
++
++sinclude $(obj).depend
++
++#########################################################################
+diff -Naupr u-boot-1.1.6/board/prodrive/p3mx/misc.S u-boot-1.1.6-fsl-1/board/prodrive/p3mx/misc.S
+--- u-boot-1.1.6/board/prodrive/p3mx/misc.S 1969-12-31 18:00:00.000000000 -0600
++++ u-boot-1.1.6-fsl-1/board/prodrive/p3mx/misc.S 2006-12-06 10:33:49.000000000 -0600
+@@ -0,0 +1,245 @@
++#include <config.h>
++#include <74xx_7xx.h>
++#include "version.h"
++
++#include <ppc_asm.tmpl>
++#include <ppc_defs.h>
++
++#include <asm/cache.h>
++#include <asm/mmu.h>
++
++#include "../../Marvell/include/mv_gen_reg.h"
++
++#ifdef CONFIG_ECC
++ /* Galileo specific asm code for initializing ECC */
++ .globl board_relocate_rom
++board_relocate_rom:
++ mflr r7
++ /* update the location of the GT registers */
++ lis r11, CFG_GT_REGS@h
++ /* if we're using ECC, we must use the DMA engine to copy ourselves */
++ bl start_idma_transfer_0
++ bl wait_for_idma_0
++ bl stop_idma_engine_0
++
++ mtlr r7
++ blr
++
++ .globl board_init_ecc
++board_init_ecc:
++ mflr r7
++ /* NOTE: r10 still contains the location we've been relocated to
++ * which happens to be TOP_OF_RAM - CFG_MONITOR_LEN */
++
++ /* now that we're running from ram, init the rest of main memory
++ * for ECC use */
++ lis r8, CFG_MONITOR_LEN@h
++ ori r8, r8, CFG_MONITOR_LEN@l
++
++ divw r3, r10, r8
++
++ /* set up the counter, and init the starting address */
++ mtctr r3
++ li r12, 0
++
++ /* bytes per transfer */
++ mr r5, r8
++about_to_init_ecc:
++1: mr r3, r12
++ mr r4, r12
++ bl start_idma_transfer_0
++ bl wait_for_idma_0
++ bl stop_idma_engine_0
++ add r12, r12, r8
++ bdnz 1b
++
++ mtlr r7
++ blr
++
++ /* r3: dest addr
++ * r4: source addr
++ * r5: byte count
++ * r11: gt regbase
++ * trashes: r6, r5
++ */
++start_idma_transfer_0:
++ /* set the byte count, including the OWN bit */
++ mr r6, r11
++ ori r6, r6, CHANNEL0_DMA_BYTE_COUNT
++ stwbrx r5, 0, (r6)
++
++ /* set the source address */
++ mr r6, r11
++ ori r6, r6, CHANNEL0_DMA_SOURCE_ADDRESS
++ stwbrx r4, 0, (r6)
++
++ /* set the dest address */
++ mr r6, r11
++ ori r6, r6, CHANNEL0_DMA_DESTINATION_ADDRESS
++ stwbrx r3, 0, (r6)
++
++ /* set the next record pointer */
++ li r5, 0
++ mr r6, r11
++ ori r6, r6, CHANNEL0NEXT_RECORD_POINTER
++ stwbrx r5, 0, (r6)
++
++ /* set the low control register */
++ /* bit 9 is NON chained mode, bit 31 is new style descriptors.
++ bit 12 is channel enable */
++ ori r5, r5, (1 << 12) | (1 << 12) | (1 << 11)
++ /* 15 shifted by 16 (oris) == bit 31 */
++ oris r5, r5, (1 << 15)
++ mr r6, r11
++ ori r6, r6, CHANNEL0CONTROL
++ stwbrx r5, 0, (r6)
++
++ blr
++
++ /* this waits for the bytecount to return to zero, indicating
++ * that the trasfer is complete */
++wait_for_idma_0:
++ mr r5, r11
++ lis r6, 0xff
++ ori r6, r6, 0xffff
++ ori r5, r5, CHANNEL0_DMA_BYTE_COUNT
++1: lwbrx r4, 0, (r5)
++ and. r4, r4, r6
++ bne 1b
++
++ blr
++
++ /* this turns off channel 0 of the idma engine */
++stop_idma_engine_0:
++ /* shut off the DMA engine */
++ li r5, 0
++ mr r6, r11
++ ori r6, r6, CHANNEL0CONTROL
++ stwbrx r5, 0, (r6)
++
++ blr
++#endif
++
++#ifdef CFG_BOARD_ASM_INIT
++ /* NOTE: trashes r3-r7 */
++ .globl board_asm_init
++board_asm_init:
++ /* just move the GT registers to where they belong */
++ lis r3, CFG_DFL_GT_REGS@h
++ ori r3, r3, CFG_DFL_GT_REGS@l
++ lis r4, CFG_GT_REGS@h
++ ori r4, r4, CFG_GT_REGS@l
++ li r5, INTERNAL_SPACE_DECODE
++
++ /* test to see if we've already moved */
++ lwbrx r6, r5, r4
++ andi. r6, r6, 0xffff
++ /* check loading of R7 is: 0x0F80 should: 0xf800: DONE */
++/* rlwinm r7, r4, 8, 16, 31
++ rlwinm r7, r4, 12, 16, 31 */ /* original */
++ rlwinm r7, r4, 16, 16, 31
++ /* -----------------------------------------------------*/
++ cmp cr0, r7, r6
++ beqlr
++
++ /* nope, have to move the registers */
++ lwbrx r6, r5, r3
++ andis. r6, r6, 0xffff
++ or r6, r6, r7
++ stwbrx r6, r5, r3
++
++ /* now, poll for the change */
++1: lwbrx r7, r5, r4
++ cmp cr0, r7, r6
++ bne 1b
++
++ lis r3, CFG_INT_SRAM_BASE@h
++ ori r3, r3, CFG_INT_SRAM_BASE@l
++ rlwinm r3, r3, 16, 16, 31
++ lis r4, CFG_GT_REGS@h
++ ori r4, r4, CFG_GT_REGS@l
++ li r5, INTEGRATED_SRAM_BASE_ADDR
++ stwbrx r3, r5, r4
++
++2: lwbrx r6, r5, r4
++ cmp cr0, r3, r6
++ bne 2b
++
++ /* done! */
++ blr
++#endif
++
++/* For use of the debug LEDs */
++ .global led_on0_relocated
++led_on0_relocated:
++ xor r21, r21, r21
++ xor r18, r18, r18
++ lis r18, 0xFC80
++ ori r18, r18, 0x8000
++/* stw r21, 0x0(r18) */
++ sync
++ blr
++
++ .global led_off0_relocated
++led_off0_relocated:
++ xor r21, r21, r21
++ xor r18, r18, r18
++ lis r18, 0xFC81
++ ori r18, r18, 0x4000
++/* stw r21, 0x0(r18) */
++ sync
++ blr
++
++ .global led_on0
++led_on0:
++ xor r18, r18, r18
++ lis r18, 0x1c80
++ ori r18, r18, 0x8000
++/* stw r18, 0x0(r18) */
++ sync
++ blr
++
++ .global led_off0
++led_off0:
++ xor r18, r18, r18
++ lis r18, 0x1c81
++ ori r18, r18, 0x4000
++/* stw r18, 0x0(r18) */
++ sync
++ blr
++
++ .global led_on1
++led_on1:
++ xor r18, r18, r18
++ lis r18, 0x1c80
++ ori r18, r18, 0xc000
++/* stw r18, 0x0(r18) */
++ sync
++ blr
++
++ .global led_off1
++led_off1:
++ xor r18, r18, r18
++ lis r18, 0x1c81
++ ori r18, r18, 0x8000
++/* stw r18, 0x0(r18) */
++ sync
++ blr
++
++ .global led_on2
++led_on2:
++ xor r18, r18, r18
++ lis r18, 0x1c81
++ ori r18, r18, 0x0000
++/* stw r18, 0x0(r18) */
++ sync
++ blr
++
++ .global led_off2
++led_off2:
++ xor r18, r18, r18
++ lis r18, 0x1c81
++ ori r18, r18, 0xc000
++/* stw r18, 0x0(r18) */
++ sync
++ blr
+diff -Naupr u-boot-1.1.6/board/prodrive/p3mx/mpsc.c u-boot-1.1.6-fsl-1/board/prodrive/p3mx/mpsc.c
+--- u-boot-1.1.6/board/prodrive/p3mx/mpsc.c 1969-12-31 18:00:00.000000000 -0600
++++ u-boot-1.1.6-fsl-1/board/prodrive/p3mx/mpsc.c 2006-12-06 10:33:49.000000000 -0600
+@@ -0,0 +1,1013 @@
++/*
++ * (C) Copyright 2001
++ * John Clemens <clemens@mclx.com>, Mission Critical Linux, Inc.
++ *
++ * See file CREDITS for list of people who contributed to this
++ * project.
++ *
++ * 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
++ */
++
++/*************************************************************************
++ * changes for Marvell DB64460 eval board 2003 by Ingo Assmus <ingo.assmus@keymile.com>
++ *
++ ************************************************************************/
++
++/*
++ * mpsc.c - driver for console over the MPSC.
++ */
++
++
++#include <common.h>
++#include <config.h>
++#include <asm/cache.h>
++
++#include <malloc.h>
++#include "mpsc.h"
++
++#include "mv_regs.h"
++
++#include "../../Marvell/include/memory.h"
++
++DECLARE_GLOBAL_DATA_PTR;
++
++/* Define this if you wish to use the MPSC as a register based UART.
++ * This will force the serial port to not use the SDMA engine at all.
++ */
++#undef CONFIG_MPSC_DEBUG_PORT
++
++
++int (*mpsc_putchar) (char ch) = mpsc_putchar_early;
++char (*mpsc_getchar) (void) = mpsc_getchar_debug;
++int (*mpsc_test_char) (void) = mpsc_test_char_debug;
++
++
++static volatile unsigned int *rx_desc_base = NULL;
++static unsigned int rx_desc_index = 0;
++static volatile unsigned int *tx_desc_base = NULL;
++static unsigned int tx_desc_index = 0;
++
++/* local function declarations */
++static int galmpsc_connect (int channel, int connect);
++static int galmpsc_route_rx_clock (int channel, int brg);
++static int galmpsc_route_tx_clock (int channel, int brg);
++static int galmpsc_write_config_regs (int mpsc, int mode);
++static int galmpsc_config_channel_regs (int mpsc);
++static int galmpsc_set_char_length (int mpsc, int value);
++static int galmpsc_set_stop_bit_length (int mpsc, int value);
++static int galmpsc_set_parity (int mpsc, int value);
++static int galmpsc_enter_hunt (int mpsc);
++static int galmpsc_set_brkcnt (int mpsc, int value);
++static int galmpsc_set_tcschar (int mpsc, int value);
++static int galmpsc_set_snoop (int mpsc, int value);
++static int galmpsc_shutdown (int mpsc);
++
++static int galsdma_set_RFT (int channel);
++static int galsdma_set_SFM (int channel);
++static int galsdma_set_rxle (int channel);
++static int galsdma_set_txle (int channel);
++static int galsdma_set_burstsize (int channel, unsigned int value);
++static int galsdma_set_RC (int channel, unsigned int value);
++
++static int galbrg_set_CDV (int channel, int value);
++static int galbrg_enable (int channel);
++static int galbrg_disable (int channel);
++static int galbrg_set_clksrc (int channel, int value);
++static int galbrg_set_CUV (int channel, int value);
++
++static void galsdma_enable_rx (void);
++static int galsdma_set_mem_space (unsigned int memSpace,
++ unsigned int memSpaceTarget,
++ unsigned int memSpaceAttr,
++ unsigned int baseAddress,
++ unsigned int size);
++
++
++#define SOFTWARE_CACHE_MANAGEMENT
++
++#ifdef SOFTWARE_CACHE_MANAGEMENT
++#define FLUSH_DCACHE(a,b) if(dcache_status()){clean_dcache_range((u32)(a),(u32)(b));}
++#define FLUSH_AND_INVALIDATE_DCACHE(a,b) if(dcache_status()){flush_dcache_range((u32)(a),(u32)(b));}
++#define INVALIDATE_DCACHE(a,b) if(dcache_status()){invalidate_dcache_range((u32)(a),(u32)(b));}
++#else
++#define FLUSH_DCACHE(a,b)
++#define FLUSH_AND_INVALIDATE_DCACHE(a,b)
++#define INVALIDATE_DCACHE(a,b)
++#endif
++
++#ifdef CONFIG_MPSC_DEBUG_PORT
++static void mpsc_debug_init (void)
++{
++
++ volatile unsigned int temp;
++
++ /* Clear the CFR (CHR4) */
++ /* Write random 'Z' bit (bit 29) of CHR4 to enable debug uart *UNDOCUMENTED FEATURE* */
++ temp = GTREGREAD (GALMPSC_CHANNELREG_4 + (CHANNEL * GALMPSC_REG_GAP));
++ temp &= 0xffffff00;
++ temp |= BIT29;
++ GT_REG_WRITE (GALMPSC_CHANNELREG_4 + (CHANNEL * GALMPSC_REG_GAP),
++ temp);
++
++ /* Set the Valid bit 'V' (bit 12) and int generation bit 'INT' (bit 15) */
++ temp = GTREGREAD (GALMPSC_CHANNELREG_5 + (CHANNEL * GALMPSC_REG_GAP));
++ temp |= (BIT12 | BIT15);
++ GT_REG_WRITE (GALMPSC_CHANNELREG_5 + (CHANNEL * GALMPSC_REG_GAP),
++ temp);
++
++ /* Set int mask */
++ temp = GTREGREAD (GALMPSC_0_INT_MASK);
++ temp |= BIT6;
++ GT_REG_WRITE (GALMPSC_0_INT_MASK, temp);
++}
++#endif
++
++char mpsc_getchar_debug (void)
++{
++ volatile int temp;
++ volatile unsigned int cause;
++
++ cause = GTREGREAD (GALMPSC_0_INT_CAUSE);
++ while ((cause & BIT6) == 0) {
++ cause = GTREGREAD (GALMPSC_0_INT_CAUSE);
++ }
++
++ temp = GTREGREAD (GALMPSC_CHANNELREG_10 +
++ (CHANNEL * GALMPSC_REG_GAP));
++ /* By writing 1's to the set bits, the register is cleared */
++ GT_REG_WRITE (GALMPSC_CHANNELREG_10 + (CHANNEL * GALMPSC_REG_GAP),
++ temp);
++ GT_REG_WRITE (GALMPSC_0_INT_CAUSE, cause & ~BIT6);
++ return (temp >> 16) & 0xff;
++}
++
++/* special function for running out of flash. doesn't modify any
++ * global variables [josh] */
++int mpsc_putchar_early (char ch)
++{
++ int mpsc = CHANNEL;
++ int temp =
++ GTREGREAD (GALMPSC_CHANNELREG_2 + (mpsc * GALMPSC_REG_GAP));
++ galmpsc_set_tcschar (mpsc, ch);
++ GT_REG_WRITE (GALMPSC_CHANNELREG_2 + (mpsc * GALMPSC_REG_GAP),
++ temp | 0x200);
++
++#define MAGIC_FACTOR (10*1000000)
++
++ udelay (MAGIC_FACTOR / gd->baudrate);
++ return 0;
++}
++
++/* This is used after relocation, see serial.c and mpsc_init2 */
++static int mpsc_putchar_sdma (char ch)
++{
++ volatile unsigned int *p;
++ unsigned int temp;
++
++
++ /* align the descriptor */
++ p = tx_desc_base;
++ memset ((void *) p, 0, 8 * sizeof (unsigned int));
++
++ /* fill one 64 bit buffer */
++ /* word swap, pad with 0 */
++ p[4] = 0; /* x */
++ p[5] = (unsigned int) ch; /* x */
++
++ /* CHANGED completely according to GT64260A dox - NTL */
++ p[0] = 0x00010001; /* 0 */
++ p[1] = DESC_OWNER_BIT | DESC_FIRST | DESC_LAST; /* 4 */
++ p[2] = 0; /* 8 */
++ p[3] = (unsigned int) &p[4]; /* c */
++
++#if 0
++ p[9] = DESC_FIRST | DESC_LAST;
++ p[10] = (unsigned int) &p[0];
++ p[11] = (unsigned int) &p[12];
++#endif
++
++ FLUSH_DCACHE (&p[0], &p[8]);
++
++ GT_REG_WRITE (GALSDMA_0_CUR_TX_PTR + (CHANNEL * GALSDMA_REG_DIFF),
++ (unsigned int) &p[0]);
++ GT_REG_WRITE (GALSDMA_0_FIR_TX_PTR + (CHANNEL * GALSDMA_REG_DIFF),
++ (unsigned int) &p[0]);
++
++ temp = GTREGREAD (GALSDMA_0_COM_REG + (CHANNEL * GALSDMA_REG_DIFF));
++ temp |= (TX_DEMAND | TX_STOP);
++ GT_REG_WRITE (GALSDMA_0_COM_REG + (CHANNEL * GALSDMA_REG_DIFF), temp);
++
++ INVALIDATE_DCACHE (&p[1], &p[2]);
++
++ while (p[1] & DESC_OWNER_BIT) {
++ udelay (100);
++ INVALIDATE_DCACHE (&p[1], &p[2]);
++ }
++ return 0;
++}
++
++char mpsc_getchar_sdma (void)
++{
++ static unsigned int done = 0;
++ volatile char ch;
++ unsigned int len = 0, idx = 0, temp;
++
++ volatile unsigned int *p;
++
++
++ do {
++ p = &rx_desc_base[rx_desc_index * 8];
++
++ INVALIDATE_DCACHE (&p[0], &p[1]);
++ /* Wait for character */
++ while (p[1] & DESC_OWNER_BIT) {
++ udelay (100);
++ INVALIDATE_DCACHE (&p[0], &p[1]);
++ }
++
++ /* Handle error case */
++ if (p[1] & (1 << 15)) {
++ printf ("oops, error: %08x\n", p[1]);
++
++ temp = GTREGREAD (GALMPSC_CHANNELREG_2 +
++ (CHANNEL * GALMPSC_REG_GAP));
++ temp |= (1 << 23);
++ GT_REG_WRITE (GALMPSC_CHANNELREG_2 +
++ (CHANNEL * GALMPSC_REG_GAP), temp);
++
++ /* Can't poll on abort bit, so we just wait. */
++ udelay (100);
++
++ galsdma_enable_rx ();
++ }
++
++ /* Number of bytes left in this descriptor */
++ len = p[0] & 0xffff;
++
++ if (len) {
++ /* Where to look */
++ idx = 5;
++ if (done > 3)
++ idx = 4;
++ if (done > 7)
++ idx = 7;
++ if (done > 11)
++ idx = 6;
++
++ INVALIDATE_DCACHE (&p[idx], &p[idx + 1]);
++ ch = p[idx] & 0xff;
++ done++;
++ }
++
++ if (done < len) {
++ /* this descriptor has more bytes still
++ * shift down the char we just read, and leave the
++ * buffer in place for the next time around
++ */
++ p[idx] = p[idx] >> 8;
++ FLUSH_DCACHE (&p[idx], &p[idx + 1]);
++ }
++
++ if (done == len) {
++ /* nothing left in this descriptor.
++ * go to next one
++ */
++ p[1] = DESC_OWNER_BIT | DESC_FIRST | DESC_LAST;
++ p[0] = 0x00100000;
++ FLUSH_DCACHE (&p[0], &p[1]);
++ /* Next descriptor */
++ rx_desc_index = (rx_desc_index + 1) % RX_DESC;
++ done = 0;
++ }
++ } while (len == 0); /* galileo bug.. len might be zero */
++
++ return ch;
++}
++
++
++int mpsc_test_char_debug (void)
++{
++ if ((GTREGREAD (GALMPSC_0_INT_CAUSE) & BIT6) == 0)
++ return 0;
++ else {
++ return 1;
++ }
++}
++
++
++int mpsc_test_char_sdma (void)
++{
++ volatile unsigned int *p = &rx_desc_base[rx_desc_index * 8];
++
++ INVALIDATE_DCACHE (&p[1], &p[2]);
++
++ if (p[1] & DESC_OWNER_BIT)
++ return 0;
++ else
++ return 1;
++}
++
++int mpsc_init (int baud)
++{
++ /* BRG CONFIG */
++ galbrg_set_baudrate (CHANNEL, baud);
++ galbrg_set_clksrc (CHANNEL, 8); /* set source=Tclk */
++ galbrg_set_CUV (CHANNEL, 0); /* set up CountUpValue */
++ galbrg_enable (CHANNEL); /* Enable BRG */
++
++ /* Set up clock routing */
++ galmpsc_connect (CHANNEL, GALMPSC_CONNECT); /* connect it */
++
++ galmpsc_route_rx_clock (CHANNEL, CHANNEL); /* chosse BRG0 for Rx */
++ galmpsc_route_tx_clock (CHANNEL, CHANNEL); /* chose BRG0 for Tx */
++
++ /* reset MPSC state */
++ galmpsc_shutdown (CHANNEL);
++
++ /* SDMA CONFIG */
++ galsdma_set_burstsize (CHANNEL, L1_CACHE_BYTES / 8); /* in 64 bit words (8 bytes) */
++ galsdma_set_txle (CHANNEL);
++ galsdma_set_rxle (CHANNEL);
++ galsdma_set_RC (CHANNEL, 0xf);
++ galsdma_set_SFM (CHANNEL);
++ galsdma_set_RFT (CHANNEL);
++
++ /* MPSC CONFIG */
++ galmpsc_write_config_regs (CHANNEL, GALMPSC_UART);
++ galmpsc_config_channel_regs (CHANNEL);
++ galmpsc_set_char_length (CHANNEL, GALMPSC_CHAR_LENGTH_8); /* 8 */
++ galmpsc_set_parity (CHANNEL, GALMPSC_PARITY_NONE); /* N */
++ galmpsc_set_stop_bit_length (CHANNEL, GALMPSC_STOP_BITS_1); /* 1 */
++
++#ifdef CONFIG_MPSC_DEBUG_PORT
++ mpsc_debug_init ();
++#endif
++
++ /* COMM_MPSC CONFIG */
++#ifdef SOFTWARE_CACHE_MANAGEMENT
++ galmpsc_set_snoop (CHANNEL, 0); /* disable snoop */
++#else
++ galmpsc_set_snoop (CHANNEL, 1); /* enable snoop */
++#endif
++
++ return 0;
++}
++
++
++void mpsc_sdma_init (void)
++{
++ /* Setup SDMA channel0 SDMA_CONFIG_REG*/
++ GT_REG_WRITE (SDMA_CONFIG_REG (0), 0x000020ff);
++
++ /* Enable MPSC-Window0 for DRAM Bank 0 */
++ if (galsdma_set_mem_space (MV64460_CUNIT_BASE_ADDR_WIN_0_BIT,
++ MV64460_SDMA_DRAM_CS_0_TARGET,
++ 0,
++ memoryGetBankBaseAddress(0),
++ memoryGetBankSize(0)) != true)
++ printf ("%s: SDMA_Window0 memory setup failed !!! \n",
++ __FUNCTION__);
++
++
++ /* Enable MPSC-Window1 for DRAM Bank 1 */
++ if (galsdma_set_mem_space (MV64460_CUNIT_BASE_ADDR_WIN_1_BIT,
++ MV64460_SDMA_DRAM_CS_1_TARGET,
++ 0,
++ memoryGetBankBaseAddress(1),
++ memoryGetBankSize(1)) != true)
++ printf ("%s: SDMA_Window1 memory setup failed !!! \n",
++ __FUNCTION__);
++
++
++ /* Disable MPSC-Window2 */
++ if (galsdma_set_mem_space (MV64460_CUNIT_BASE_ADDR_WIN_2_BIT,
++ MV64460_SDMA_DRAM_CS_2_TARGET,
++ 0,
++ memoryGetBankBaseAddress(2),
++ memoryGetBankSize(2)) != true)
++ printf ("%s: SDMA_Window2 memory setup failed !!! \n",
++ __FUNCTION__);
++
++
++ /* Disable MPSC-Window3 */
++ if (galsdma_set_mem_space (MV64460_CUNIT_BASE_ADDR_WIN_3_BIT,
++ MV64460_SDMA_DRAM_CS_3_TARGET,
++ 0,
++ memoryGetBankBaseAddress(3),
++ memoryGetBankSize(3)) != true)
++ printf ("%s: SDMA_Window3 memory setup failed !!! \n",
++ __FUNCTION__);
++
++ /* Setup MPSC0 access mode Window0 full access */
++ GT_SET_REG_BITS (MPSC0_ACCESS_PROTECTION_REG,
++ (MV64460_SDMA_WIN_ACCESS_FULL <<
++ (MV64460_CUNIT_BASE_ADDR_WIN_0_BIT * 2)));
++
++ /* Setup MPSC1 access mode Window1 full access */
++ GT_SET_REG_BITS (MPSC1_ACCESS_PROTECTION_REG,
++ (MV64460_SDMA_WIN_ACCESS_FULL <<
++ (MV64460_CUNIT_BASE_ADDR_WIN_0_BIT * 2)));
++
++ /* Setup MPSC internal address space base address */
++ GT_REG_WRITE (CUNIT_INTERNAL_SPACE_BASE_ADDR_REG, CFG_GT_REGS);
++
++ /* no high address remap*/
++ GT_REG_WRITE (CUNIT_HIGH_ADDR_REMAP_REG0, 0x00);
++ GT_REG_WRITE (CUNIT_HIGH_ADDR_REMAP_REG1, 0x00);
++
++ /* clear interrupt cause register for MPSC (fault register)*/
++ GT_REG_WRITE (CUNIT_INTERRUPT_CAUSE_REG, 0x00);
++}
++
++
++void mpsc_init2 (void)
++{
++ int i;
++
++#ifndef CONFIG_MPSC_DEBUG_PORT
++ mpsc_putchar = mpsc_putchar_sdma;
++ mpsc_getchar = mpsc_getchar_sdma;
++ mpsc_test_char = mpsc_test_char_sdma;
++#endif
++ /* RX descriptors */
++ rx_desc_base = (unsigned int *) malloc (((RX_DESC + 1) * 8) *
++ sizeof (unsigned int));
++
++ /* align descriptors */
++ rx_desc_base = (unsigned int *)
++ (((unsigned int) rx_desc_base + 32) & 0xFFFFFFF0);
++
++ rx_desc_index = 0;
++
++ memset ((void *) rx_desc_base, 0,
++ (RX_DESC * 8) * sizeof (unsigned int));
++
++ for (i = 0; i < RX_DESC; i++) {
++ rx_desc_base[i * 8 + 3] = (unsigned int) &rx_desc_base[i * 8 + 4]; /* Buffer */
++ rx_desc_base[i * 8 + 2] = (unsigned int) &rx_desc_base[(i + 1) * 8]; /* Next descriptor */
++ rx_desc_base[i * 8 + 1] = DESC_OWNER_BIT | DESC_FIRST | DESC_LAST; /* Command & control */
++ rx_desc_base[i * 8] = 0x00100000;
++ }
++ rx_desc_base[(i - 1) * 8 + 2] = (unsigned int) &rx_desc_base[0];
++
++ FLUSH_DCACHE (&rx_desc_base[0], &rx_desc_base[RX_DESC * 8]);
++ GT_REG_WRITE (GALSDMA_0_CUR_RX_PTR + (CHANNEL * GALSDMA_REG_DIFF),
++ (unsigned int) &rx_desc_base[0]);
++
++ /* TX descriptors */
++ tx_desc_base = (unsigned int *) malloc (((TX_DESC + 1) * 8) *
++ sizeof (unsigned int));
++
++ /* align descriptors */
++ tx_desc_base = (unsigned int *)
++ (((unsigned int) tx_desc_base + 32) & 0xFFFFFFF0);
++
++ tx_desc_index = -1;
++
++ memset ((void *) tx_desc_base, 0,
++ (TX_DESC * 8) * sizeof (unsigned int));
++
++ for (i = 0; i < TX_DESC; i++) {
++ tx_desc_base[i * 8 + 5] = (unsigned int) 0x23232323;
++ tx_desc_base[i * 8 + 4] = (unsigned int) 0x23232323;
++ tx_desc_base[i * 8 + 3] =
++ (unsigned int) &tx_desc_base[i * 8 + 4];
++ tx_desc_base[i * 8 + 2] =
++ (unsigned int) &tx_desc_base[(i + 1) * 8];
++ tx_desc_base[i * 8 + 1] =
++ DESC_OWNER_BIT | DESC_FIRST | DESC_LAST;
++
++ /* set sbytecnt and shadow byte cnt to 1 */
++ tx_desc_base[i * 8] = 0x00010001;
++ }
++ tx_desc_base[(i - 1) * 8 + 2] = (unsigned int) &tx_desc_base[0];
++
++ FLUSH_DCACHE (&tx_desc_base[0], &tx_desc_base[TX_DESC * 8]);
++
++ udelay (100);
++
++ galsdma_enable_rx ();
++
++ return;
++}
++
++int galbrg_set_baudrate (int channel, int rate)
++{
++ int clock;
++
++ galbrg_disable (channel); /*ok */
++
++#ifdef ZUMA_NTL
++ /* from tclk */
++ clock = (CFG_TCLK / (16 * rate)) - 1;
++#else
++ clock = (CFG_TCLK / (16 * rate)) - 1;
++#endif
++
++ galbrg_set_CDV (channel, clock); /* set timer Reg. for BRG */
++
++ galbrg_enable (channel);
++
++ gd->baudrate = rate;
++
++ return 0;
++}
++
++/* ------------------------------------------------------------------ */
++
++/* Below are all the private functions that no one else needs */
++
++static int galbrg_set_CDV (int channel, int value)
++{
++ unsigned int temp;
++
++ temp = GTREGREAD (GALBRG_0_CONFREG + (channel * GALBRG_REG_GAP));
++ temp &= 0xFFFF0000;
++ temp |= (value & 0x0000FFFF);
++ GT_REG_WRITE (GALBRG_0_CONFREG + (channel * GALBRG_REG_GAP), temp);
++
++ return 0;
++}
++
++static int galbrg_enable (int channel)
++{
++ unsigned int temp;
++
++ temp = GTREGREAD (GALBRG_0_CONFREG + (channel * GALBRG_REG_GAP));
++ temp |= 0x00010000;
++ GT_REG_WRITE (GALBRG_0_CONFREG + (channel * GALBRG_REG_GAP), temp);
++
++ return 0;
++}
++
++static int galbrg_disable (int channel)
++{
++ unsigned int temp;
++
++ temp = GTREGREAD (GALBRG_0_CONFREG + (channel * GALBRG_REG_GAP));
++ temp &= 0xFFFEFFFF;
++ GT_REG_WRITE (GALBRG_0_CONFREG + (channel * GALBRG_REG_GAP), temp);
++
++ return 0;
++}
++
++static int galbrg_set_clksrc (int channel, int value)
++{
++ unsigned int temp;
++
++ temp = GTREGREAD (GALBRG_0_CONFREG + (channel * GALBRG_REG_GAP));
++ temp &= 0xFFC3FFFF; /* Bit 18 - 21 (MV 64260 18-22) */
++ temp |= (value << 18);
++ GT_REG_WRITE (GALBRG_0_CONFREG + (channel * GALBRG_REG_GAP), temp);
++ return 0;
++}
++
++static int galbrg_set_CUV (int channel, int value)
++{
++ /* set CountUpValue */
++ GT_REG_WRITE (GALBRG_0_BTREG + (channel * GALBRG_REG_GAP), value);
++
++ return 0;
++}
++
++#if 0
++static int galbrg_reset (int channel)
++{
++ unsigned int temp;
++
++ temp = GTREGREAD (GALBRG_0_CONFREG + (channel * GALBRG_REG_GAP));
++ temp |= 0x20000;
++ GT_REG_WRITE (GALBRG_0_CONFREG + (channel * GALBRG_REG_GAP), temp);
++
++ return 0;
++}
++#endif
++
++static int galsdma_set_RFT (int channel)
++{
++ unsigned int temp;
++
++ temp = GTREGREAD (GALSDMA_0_CONF_REG + (channel * GALSDMA_REG_DIFF));
++ temp |= 0x00000001;
++ GT_REG_WRITE (GALSDMA_0_CONF_REG + (channel * GALSDMA_REG_DIFF),
++ temp);
++
++ return 0;
++}
++
++static int galsdma_set_SFM (int channel)
++{
++ unsigned int temp;
++
++ temp = GTREGREAD (GALSDMA_0_CONF_REG + (channel * GALSDMA_REG_DIFF));
++ temp |= 0x00000002;
++ GT_REG_WRITE (GALSDMA_0_CONF_REG + (channel * GALSDMA_REG_DIFF),
++ temp);
++
++ return 0;
++}
++
++static int galsdma_set_rxle (int channel)
++{
++ unsigned int temp;
++
++ temp = GTREGREAD (GALSDMA_0_CONF_REG + (channel * GALSDMA_REG_DIFF));
++ temp |= 0x00000040;
++ GT_REG_WRITE (GALSDMA_0_CONF_REG + (channel * GALSDMA_REG_DIFF),
++ temp);
++
++ return 0;
++}
++
++static int galsdma_set_txle (int channel)
++{
++ unsigned int temp;
++
++ temp = GTREGREAD (GALSDMA_0_CONF_REG + (channel * GALSDMA_REG_DIFF));
++ temp |= 0x00000080;
++ GT_REG_WRITE (GALSDMA_0_CONF_REG + (channel * GALSDMA_REG_DIFF),
++ temp);
++
++ return 0;
++}
++
++static int galsdma_set_RC (int channel, unsigned int value)
++{
++ unsigned int temp;
++
++ temp = GTREGREAD (GALSDMA_0_CONF_REG + (channel * GALSDMA_REG_DIFF));
++ temp &= ~0x0000003c;
++ temp |= (value << 2);
++ GT_REG_WRITE (GALSDMA_0_CONF_REG + (channel * GALSDMA_REG_DIFF),
++ temp);
++
++ return 0;
++}
++
++static int galsdma_set_burstsize (int channel, unsigned int value)
++{
++ unsigned int temp;
++
++ temp = GTREGREAD (GALSDMA_0_CONF_REG + (channel * GALSDMA_REG_DIFF));
++ temp &= 0xFFFFCFFF;
++ switch (value) {
++ case 8:
++ GT_REG_WRITE (GALSDMA_0_CONF_REG +
++ (channel * GALSDMA_REG_DIFF),
++ (temp | (0x3 << 12)));
++ break;
++
++ case 4:
++ GT_REG_WRITE (GALSDMA_0_CONF_REG +
++ (channel * GALSDMA_REG_DIFF),
++ (temp | (0x2 << 12)));
++ break;
++
++ case 2:
++ GT_REG_WRITE (GALSDMA_0_CONF_REG +
++ (channel * GALSDMA_REG_DIFF),
++ (temp | (0x1 << 12)));
++ break;
++
++ case 1:
++ GT_REG_WRITE (GALSDMA_0_CONF_REG +
++ (channel * GALSDMA_REG_DIFF),
++ (temp | (0x0 << 12)));
++ break;
++
++ default:
++ return -1;
++ break;
++ }
++
++ return 0;
++}
++
++static int galmpsc_connect (int channel, int connect)
++{
++ unsigned int temp;
++
++ temp = GTREGREAD (GALMPSC_ROUTING_REGISTER);
++
++ if ((channel == 0) && connect)
++ temp &= ~0x00000007;
++ else if ((channel == 1) && connect)
++ temp &= ~(0x00000007 << 6);
++ else if ((channel == 0) && !connect)
++ temp |= 0x00000007;
++ else
++ temp |= (0x00000007 << 6);
++
++ /* Just in case... */
++ temp &= 0x3fffffff;
++
++ GT_REG_WRITE (GALMPSC_ROUTING_REGISTER, temp);
++
++ return 0;
++}
++
++static int galmpsc_route_rx_clock (int channel, int brg)
++{
++ unsigned int temp;
++
++ temp = GTREGREAD (GALMPSC_RxC_ROUTE);
++
++ if (channel == 0) {
++ temp &= ~0x0000000F;
++ temp |= brg;
++ } else {
++ temp &= ~0x00000F00;
++ temp |= (brg << 8);
++ }
++
++ GT_REG_WRITE (GALMPSC_RxC_ROUTE, temp);
++
++ return 0;
++}
++
++static int galmpsc_route_tx_clock (int channel, int brg)
++{
++ unsigned int temp;
++
++ temp = GTREGREAD (GALMPSC_TxC_ROUTE);
++
++ if (channel == 0) {
++ temp &= ~0x0000000F;
++ temp |= brg;
++ } else {
++ temp &= ~0x00000F00;
++ temp |= (brg << 8);
++ }
++
++ GT_REG_WRITE (GALMPSC_TxC_ROUTE, temp);
++
++ return 0;
++}
++
++static int galmpsc_write_config_regs (int mpsc, int mode)
++{
++ if (mode == GALMPSC_UART) {
++ /* Main config reg Low (Null modem, Enable Tx/Rx, UART mode) */
++ GT_REG_WRITE (GALMPSC_MCONF_LOW + (mpsc * GALMPSC_REG_GAP),
++ 0x000004c4);
++
++ /* Main config reg High (32x Rx/Tx clock mode, width=8bits */
++ GT_REG_WRITE (GALMPSC_MCONF_HIGH + (mpsc * GALMPSC_REG_GAP),
++ 0x024003f8);
++ /* 22 2222 1111 */
++ /* 54 3210 9876 */
++ /* 0000 0010 0000 0000 */
++ /* 1 */
++ /* 098 7654 3210 */
++ /* 0000 0011 1111 1000 */
++ } else
++ return -1;
++
++ return 0;
++}
++
++static int galmpsc_config_channel_regs (int mpsc)
++{
++ GT_REG_WRITE (GALMPSC_CHANNELREG_1 + (mpsc * GALMPSC_REG_GAP), 0);
++ GT_REG_WRITE (GALMPSC_CHANNELREG_2 + (mpsc * GALMPSC_REG_GAP), 0);
++ GT_REG_WRITE (GALMPSC_CHANNELREG_3 + (mpsc * GALMPSC_REG_GAP), 1);
++ GT_REG_WRITE (GALMPSC_CHANNELREG_4 + (mpsc * GALMPSC_REG_GAP), 0);
++ GT_REG_WRITE (GALMPSC_CHANNELREG_5 + (mpsc * GALMPSC_REG_GAP), 0);
++ GT_REG_WRITE (GALMPSC_CHANNELREG_6 + (mpsc * GALMPSC_REG_GAP), 0);
++ GT_REG_WRITE (GALMPSC_CHANNELREG_7 + (mpsc * GALMPSC_REG_GAP), 0);
++ GT_REG_WRITE (GALMPSC_CHANNELREG_8 + (mpsc * GALMPSC_REG_GAP), 0);
++ GT_REG_WRITE (GALMPSC_CHANNELREG_9 + (mpsc * GALMPSC_REG_GAP), 0);
++ GT_REG_WRITE (GALMPSC_CHANNELREG_10 + (mpsc * GALMPSC_REG_GAP), 0);
++
++ galmpsc_set_brkcnt (mpsc, 0x3);
++ galmpsc_set_tcschar (mpsc, 0xab);
++
++ return 0;
++}
++
++static int galmpsc_set_brkcnt (int mpsc, int value)
++{
++ unsigned int temp;
++
++ temp = GTREGREAD (GALMPSC_CHANNELREG_1 + (mpsc * GALMPSC_REG_GAP));
++ temp &= 0x0000FFFF;
++ temp |= (value << 16);
++ GT_REG_WRITE (GALMPSC_CHANNELREG_1 + (mpsc * GALMPSC_REG_GAP), temp);
++
++ return 0;
++}
++
++static int galmpsc_set_tcschar (int mpsc, int value)
++{
++ unsigned int temp;
++
++ temp = GTREGREAD (GALMPSC_CHANNELREG_1 + (mpsc * GALMPSC_REG_GAP));
++ temp &= 0xFFFF0000;
++ temp |= value;
++ GT_REG_WRITE (GALMPSC_CHANNELREG_1 + (mpsc * GALMPSC_REG_GAP), temp);
++
++ return 0;
++}
++
++static int galmpsc_set_char_length (int mpsc, int value)
++{
++ unsigned int temp;
++
++ temp = GTREGREAD (GALMPSC_PROTOCONF_REG + (mpsc * GALMPSC_REG_GAP));
++ temp &= 0xFFFFCFFF;
++ temp |= (value << 12);
++ GT_REG_WRITE (GALMPSC_PROTOCONF_REG + (mpsc * GALMPSC_REG_GAP), temp);
++
++ return 0;
++}
++
++static int galmpsc_set_stop_bit_length (int mpsc, int value)
++{
++ unsigned int temp;
++
++ temp = GTREGREAD (GALMPSC_PROTOCONF_REG + (mpsc * GALMPSC_REG_GAP));
++ temp &= 0xFFFFBFFF;
++ temp |= (value << 14);
++ GT_REG_WRITE (GALMPSC_PROTOCONF_REG + (mpsc * GALMPSC_REG_GAP), temp);
++
++ return 0;
++}
++
++static int galmpsc_set_parity (int mpsc, int value)
++{
++ unsigned int temp;
++
++ temp = GTREGREAD (GALMPSC_CHANNELREG_2 + (mpsc * GALMPSC_REG_GAP));
++ if (value != -1) {
++ temp &= 0xFFF3FFF3;
++ temp |= ((value << 18) | (value << 2));
++ temp |= ((value << 17) | (value << 1));
++ } else {
++ temp &= 0xFFF1FFF1;
++ }
++
++ GT_REG_WRITE (GALMPSC_CHANNELREG_2 + (mpsc * GALMPSC_REG_GAP), temp);
++
++ return 0;
++}
++
++static int galmpsc_enter_hunt (int mpsc)
++{
++ int temp;
++
++ temp = GTREGREAD (GALMPSC_CHANNELREG_2 + (mpsc * GALMPSC_REG_GAP));
++ temp |= 0x80000000;
++ GT_REG_WRITE (GALMPSC_CHANNELREG_2 + (mpsc * GALMPSC_REG_GAP), temp);
++
++ while (GTREGREAD (GALMPSC_CHANNELREG_2 + (mpsc * GALMPSC_REG_GAP)) &
++ MPSC_ENTER_HUNT) {
++ udelay (1);
++ }
++ return 0;
++}
++
++
++static int galmpsc_shutdown (int mpsc)
++{
++ unsigned int temp;
++
++ /* cause RX abort (clears RX) */
++ temp = GTREGREAD (GALMPSC_CHANNELREG_2 + (mpsc * GALMPSC_REG_GAP));
++ temp |= MPSC_RX_ABORT | MPSC_TX_ABORT;
++ temp &= ~MPSC_ENTER_HUNT;
++ GT_REG_WRITE (GALMPSC_CHANNELREG_2 + (mpsc * GALMPSC_REG_GAP), temp);
++
++ GT_REG_WRITE (GALSDMA_0_COM_REG, 0);
++ GT_REG_WRITE (GALSDMA_0_COM_REG, SDMA_TX_ABORT | SDMA_RX_ABORT);
++
++ /* shut down the MPSC */
++ GT_REG_WRITE (GALMPSC_MCONF_LOW, 0);
++ GT_REG_WRITE (GALMPSC_MCONF_HIGH, 0);
++ GT_REG_WRITE (GALMPSC_PROTOCONF_REG + (mpsc * GALMPSC_REG_GAP), 0);
++
++ udelay (100);
++
++ /* shut down the sdma engines. */
++ /* reset config to default */
++ GT_REG_WRITE (GALSDMA_0_CONF_REG, 0x000000fc);
++
++ udelay (100);
++
++ /* clear the SDMA current and first TX and RX pointers */
++ GT_REG_WRITE (GALSDMA_0_CUR_RX_PTR, 0);
++ GT_REG_WRITE (GALSDMA_0_CUR_TX_PTR, 0);
++ GT_REG_WRITE (GALSDMA_0_FIR_TX_PTR, 0);
++
++ udelay (100);
++
++ return 0;
++}
++
++static void galsdma_enable_rx (void)
++{
++ int temp;
++
++ /* Enable RX processing */
++ temp = GTREGREAD (GALSDMA_0_COM_REG + (CHANNEL * GALSDMA_REG_DIFF));
++ temp |= RX_ENABLE;
++ GT_REG_WRITE (GALSDMA_0_COM_REG + (CHANNEL * GALSDMA_REG_DIFF), temp);
++
++ galmpsc_enter_hunt (CHANNEL);
++}
++
++static int galmpsc_set_snoop (int mpsc, int value)
++{
++ int reg =
++ mpsc ? MPSC_1_ADDRESS_CONTROL_LOW :
++ MPSC_0_ADDRESS_CONTROL_LOW;
++ int temp = GTREGREAD (reg);
++
++ if (value)
++ temp |= (1 << 6) | (1 << 14) | (1 << 22) | (1 << 30);
++ else
++ temp &= ~((1 << 6) | (1 << 14) | (1 << 22) | (1 << 30));
++ GT_REG_WRITE (reg, temp);
++ return 0;
++}
++
++/*******************************************************************************
++* galsdma_set_mem_space - Set MV64460 IDMA memory decoding map.
++*
++* DESCRIPTION:
++* the MV64460 SDMA has its own address decoding map that is de-coupled
++* from the CPU interface address decoding windows. The SDMA channels
++* share four address windows. Each region can be individually configured
++* by this function by associating it to a target interface and setting
++* base and size values.
++*
++* NOTE!!!
++* The size must be in 64Kbyte granularity.
++* The base address must be aligned to the size.
++* The size must be a series of 1s followed by a series of zeros
++*
++* OUTPUT:
++* None.
++*
++* RETURN:
++* True for success, false otherwise.
++*
++*******************************************************************************/
++
++static int galsdma_set_mem_space (unsigned int memSpace,
++ unsigned int memSpaceTarget,
++ unsigned int memSpaceAttr,
++ unsigned int baseAddress, unsigned int size)
++{
++ unsigned int temp;
++
++ if (size == 0) {
++ GT_RESET_REG_BITS (MV64460_CUNIT_BASE_ADDR_ENABLE_REG,
++ 1 << memSpace);
++ return true;
++ }
++
++ /* The base address must be aligned to the size. */
++ if (baseAddress % size != 0) {
++ return false;
++ }
++ if (size < 0x10000) {
++ return false;
++ }
++
++ /* Align size and base to 64K */
++ baseAddress &= 0xffff0000;
++ size &= 0xffff0000;
++ temp = size >> 16;
++
++ /* Checking that the size is a sequence of '1' followed by a
++ sequence of '0' starting from LSB to MSB. */
++ while ((temp > 0) && (temp & 0x1)) {
++ temp = temp >> 1;
++ }
++
++ if (temp != 0) {
++ GT_REG_WRITE (MV64460_CUNIT_BASE_ADDR_REG0 + memSpace * 8,
++ (baseAddress | memSpaceTarget | memSpaceAttr));
++ GT_REG_WRITE ((MV64460_CUNIT_SIZE0 + memSpace * 8),
++ (size - 1) & 0xffff0000);
++ GT_RESET_REG_BITS (MV64460_CUNIT_BASE_ADDR_ENABLE_REG,
++ 1 << memSpace);
++ } else {
++ /* An invalid size was specified */
++ return false;
++ }
++ return true;
++}
+diff -Naupr u-boot-1.1.6/board/prodrive/p3mx/mpsc.h u-boot-1.1.6-fsl-1/board/prodrive/p3mx/mpsc.h
+--- u-boot-1.1.6/board/prodrive/p3mx/mpsc.h 1969-12-31 18:00:00.000000000 -0600
++++ u-boot-1.1.6-fsl-1/board/prodrive/p3mx/mpsc.h 2006-12-06 10:33:49.000000000 -0600
+@@ -0,0 +1,156 @@
++/*
++ * (C) Copyright 2001
++ * John Clemens <clemens@mclx.com>, Mission Critical Linux, Inc.
++ *
++ * See file CREDITS for list of people who contributed to this
++ * project.
++ *
++ * 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
++ */
++
++/*************************************************************************
++ * changes for Marvell DB64360 eval board 2003 by Ingo Assmus <ingo.assmus@keymile.com>
++ *
++ ************************************************************************/
++
++
++/*
++ * mpsc.h - header file for MPSC in uart mode (console driver)
++ */
++
++#ifndef __MPSC_H__
++#define __MPSC_H__
++
++/* include actual Galileo defines */
++#include "../../Marvell/include/mv_gen_reg.h"
++
++/* driver related defines */
++
++int mpsc_init(int baud);
++void mpsc_sdma_init(void);
++void mpsc_init2(void);
++int galbrg_set_baudrate(int channel, int rate);
++
++int mpsc_putchar_early(char ch);
++char mpsc_getchar_debug(void);
++int mpsc_test_char_debug(void);
++
++int mpsc_test_char_sdma(void);
++
++extern int (*mpsc_putchar)(char ch);
++extern char (*mpsc_getchar)(void);
++extern int (*mpsc_test_char)(void);
++
++#define CHANNEL CONFIG_MPSC_PORT
++
++#define TX_DESC 5
++#define RX_DESC 20
++
++#define DESC_FIRST 0x00010000
++#define DESC_LAST 0x00020000
++#define DESC_OWNER_BIT 0x80000000
++
++#define TX_DEMAND 0x00800000
++#define TX_STOP 0x00010000
++#define RX_ENABLE 0x00000080
++
++#define SDMA_RX_ABORT (1 << 15)
++#define SDMA_TX_ABORT (1 << 31)
++#define MPSC_TX_ABORT (1 << 7)
++#define MPSC_RX_ABORT (1 << 23)
++#define MPSC_ENTER_HUNT (1 << 31)
++
++/* MPSC defines */
++
++#define GALMPSC_CONNECT 0x1
++#define GALMPSC_DISCONNECT 0x0
++
++#define GALMPSC_UART 0x1
++
++#define GALMPSC_STOP_BITS_1 0x0
++#define GALMPSC_STOP_BITS_2 0x1
++#define GALMPSC_CHAR_LENGTH_8 0x3
++#define GALMPSC_CHAR_LENGTH_7 0x2
++
++#define GALMPSC_PARITY_ODD 0x0
++#define GALMPSC_PARITY_EVEN 0x2
++#define GALMPSC_PARITY_MARK 0x3
++#define GALMPSC_PARITY_SPACE 0x1
++#define GALMPSC_PARITY_NONE -1
++
++#define GALMPSC_SERIAL_MULTIPLEX SERIAL_PORT_MULTIPLEX /* 0xf010 */
++#define GALMPSC_ROUTING_REGISTER MAIN_ROUTING_REGISTER /* 0xb400 */
++#define GALMPSC_RxC_ROUTE RECEIVE_CLOCK_ROUTING_REGISTER /* 0xb404 */
++#define GALMPSC_TxC_ROUTE TRANSMIT_CLOCK_ROUTING_REGISTER /* 0xb408 */
++#define GALMPSC_MCONF_LOW MPSC0_MAIN_CONFIGURATION_LOW /* 0x8000 */
++#define GALMPSC_MCONF_HIGH MPSC0_MAIN_CONFIGURATION_HIGH /* 0x8004 */
++#define GALMPSC_PROTOCONF_REG MPSC0_PROTOCOL_CONFIGURATION /* 0x8008 */
++
++#define GALMPSC_REG_GAP 0x1000
++
++#define GALMPSC_MCONF_CHREG_BASE CHANNEL0_REGISTER1 /* 0x800c */
++#define GALMPSC_CHANNELREG_1 CHANNEL0_REGISTER1 /* 0x800c */
++#define GALMPSC_CHANNELREG_2 CHANNEL0_REGISTER2 /* 0x8010 */
++#define GALMPSC_CHANNELREG_3 CHANNEL0_REGISTER3 /* 0x8014 */
++#define GALMPSC_CHANNELREG_4 CHANNEL0_REGISTER4 /* 0x8018 */
++#define GALMPSC_CHANNELREG_5 CHANNEL0_REGISTER5 /* 0x801c */
++#define GALMPSC_CHANNELREG_6 CHANNEL0_REGISTER6 /* 0x8020 */
++#define GALMPSC_CHANNELREG_7 CHANNEL0_REGISTER7 /* 0x8024 */
++#define GALMPSC_CHANNELREG_8 CHANNEL0_REGISTER8 /* 0x8028 */
++#define GALMPSC_CHANNELREG_9 CHANNEL0_REGISTER9 /* 0x802c */
++#define GALMPSC_CHANNELREG_10 CHANNEL0_REGISTER10 /* 0x8030 */
++#define GALMPSC_CHANNELREG_11 CHANNEL0_REGISTER11 /* 0x8034 */
++
++#define GALSDMA_COMMAND_FIRST (1 << 16)
++#define GALSDMA_COMMAND_LAST (1 << 17)
++#define GALSDMA_COMMAND_ENABLEINT (1 << 23)
++#define GALSDMA_COMMAND_AUTO (1 << 30)
++#define GALSDMA_COMMAND_OWNER (1 << 31)
++
++#define GALSDMA_RX 0
++#define GALSDMA_TX 1
++
++/* CHANNEL2 should be CHANNEL1, according to documentation,
++ * but to work with the current GTREGS file...
++ */
++#define GALSDMA_0_CONF_REG CHANNEL0_CONFIGURATION_REGISTER /* 0x4000 */
++#define GALSDMA_1_CONF_REG CHANNEL2_CONFIGURATION_REGISTER /* 0x6000 */
++#define GALSDMA_0_COM_REG CHANNEL0_COMMAND_REGISTER /* 0x4008 */
++#define GALSDMA_1_COM_REG CHANNEL2_COMMAND_REGISTER /* 0x6008 */
++#define GALSDMA_0_CUR_RX_PTR CHANNEL0_CURRENT_RX_DESCRIPTOR_POINTER /* 0x4810 */
++#define GALSDMA_0_CUR_TX_PTR CHANNEL0_CURRENT_TX_DESCRIPTOR_POINTER /* 0x4c10 */
++#define GALSDMA_0_FIR_TX_PTR CHANNEL0_FIRST_TX_DESCRIPTOR_POINTER /* 0x4c14 */
++#define GALSDMA_1_CUR_RX_PTR CHANNEL2_CURRENT_RX_DESCRIPTOR_POINTER /* 0x6810 */
++#define GALSDMA_1_CUR_TX_PTR CHANNEL2_CURRENT_TX_DESCRIPTOR_POINTER /* 0x6c10 */
++#define GALSDMA_1_FIR_TX_PTR CHANNEL2_FIRST_TX_DESCRIPTOR_POINTER /* 0x6c14 */
++#define GALSDMA_REG_DIFF 0x2000
++
++/* WRONG in gt64260R.h */
++#define GALSDMA_INT_CAUSE 0xb800 /* SDMA_CAUSE */
++#define GALSDMA_INT_MASK 0xb880 /* SDMA_MASK */
++#define GALMPSC_0_INT_CAUSE 0xb804
++#define GALMPSC_0_INT_MASK 0xb884
++
++#define GALSDMA_MODE_UART 0
++#define GALSDMA_MODE_BISYNC 1
++#define GALSDMA_MODE_HDLC 2
++#define GALSDMA_MODE_TRANSPARENT 3
++
++#define GALBRG_0_CONFREG BRG0_CONFIGURATION_REGISTER /* 0xb200 */
++#define GALBRG_REG_GAP 0x0008
++#define GALBRG_0_BTREG BRG0_BAUDE_TUNING_REGISTER /* 0xb204 */
++
++#endif /* __MPSC_H__ */
+diff -Naupr u-boot-1.1.6/board/prodrive/p3mx/mv_eth.c u-boot-1.1.6-fsl-1/board/prodrive/p3mx/mv_eth.c
+--- u-boot-1.1.6/board/prodrive/p3mx/mv_eth.c 1969-12-31 18:00:00.000000000 -0600
++++ u-boot-1.1.6-fsl-1/board/prodrive/p3mx/mv_eth.c 2006-12-06 10:33:49.000000000 -0600
+@@ -0,0 +1,3344 @@
++/*
++ * (C) Copyright 2003
++ * Ingo Assmus <ingo.assmus@keymile.com>
++ *
++ * based on - Driver for MV64460X ethernet ports
++ * Copyright (C) 2002 rabeeh@galileo.co.il
++ *
++ * See file CREDITS for list of people who contributed to this
++ * project.
++ *
++ * 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
++ 3 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
++ */
++
++/*
++ * mv_eth.c - header file for the polled mode GT ethernet driver
++ */
++#include <common.h>
++#include <net.h>
++#include <malloc.h>
++#include <miiphy.h>
++
++#include "mv_eth.h"
++
++/* enable Debug outputs */
++
++#undef DEBUG_MV_ETH
++
++#ifdef DEBUG_MV_ETH
++#define DEBUG
++#define DP(x) x
++#else
++#define DP(x)
++#endif
++
++/* PHY DFCDL Registers */
++#define ETH_PHY_DFCDL_CONFIG0_REG 0x2100
++#define ETH_PHY_DFCDL_CONFIG1_REG 0x2104
++#define ETH_PHY_DFCDL_ADDR_REG 0x2110
++#define ETH_PHY_DFCDL_DATA0_REG 0x2114
++
++#define PHY_AUTONEGOTIATE_TIMEOUT 4000 /* 4000 ms autonegotiate timeout */
++#define PHY_UPDATE_TIMEOUT 10000
++
++#undef MV64460_CHECKSUM_OFFLOAD
++/*************************************************************************
++* The first part is the high level driver of the gigE ethernet ports. *
++*************************************************************************/
++
++/* Definition for configuring driver */
++/* #define UPDATE_STATS_BY_SOFTWARE */
++#undef MV64460_RX_QUEUE_FILL_ON_TASK
++
++/* Constants */
++#define MAGIC_ETH_RUNNING 8031971
++#define MV64460_INTERNAL_SRAM_SIZE _256K
++#define EXTRA_BYTES 32
++#define WRAP ETH_HLEN + 2 + 4 + 16
++#define BUFFER_MTU dev->mtu + WRAP
++#define INT_CAUSE_UNMASK_ALL 0x0007ffff
++#define INT_CAUSE_UNMASK_ALL_EXT 0x0011ffff
++#ifdef MV64460_RX_FILL_ON_TASK
++#define INT_CAUSE_MASK_ALL 0x00000000
++#define INT_CAUSE_CHECK_BITS INT_CAUSE_UNMASK_ALL
++#define INT_CAUSE_CHECK_BITS_EXT INT_CAUSE_UNMASK_ALL_EXT
++#endif
++
++/* Read/Write to/from MV64460 internal registers */
++#define MV_REG_READ(offset) my_le32_to_cpu(* (volatile unsigned int *) (INTERNAL_REG_BASE_ADDR + offset))
++#define MV_REG_WRITE(offset,data) *(volatile unsigned int *) (INTERNAL_REG_BASE_ADDR + offset) = my_cpu_to_le32 (data)
++#define MV_SET_REG_BITS(regOffset,bits) ((*((volatile unsigned int*)((INTERNAL_REG_BASE_ADDR) + (regOffset)))) |= ((unsigned int)my_cpu_to_le32(bits)))
++#define MV_RESET_REG_BITS(regOffset,bits) ((*((volatile unsigned int*)((INTERNAL_REG_BASE_ADDR) + (regOffset)))) &= ~((unsigned int)my_cpu_to_le32(bits)))
++
++#define my_cpu_to_le32(x) my_le32_to_cpu((x))
++
++/* Static function declarations */
++static int mv64460_eth_real_open (struct eth_device *eth);
++static int mv64460_eth_real_stop (struct eth_device *eth);
++static struct net_device_stats *mv64460_eth_get_stats (struct eth_device
++ *dev);
++static void eth_port_init_mac_tables (ETH_PORT eth_port_num);
++static void mv64460_eth_update_stat (struct eth_device *dev);
++bool db64460_eth_start (struct eth_device *eth);
++unsigned int eth_read_mib_counter (ETH_PORT eth_port_num,
++ unsigned int mib_offset);
++int mv64460_eth_receive (struct eth_device *dev);
++
++int mv64460_eth_xmit (struct eth_device *, volatile void *packet, int length);
++
++int mv_miiphy_read(char *devname, unsigned char phy_addr,
++ unsigned char phy_reg, unsigned short *value);
++int mv_miiphy_write(char *devname, unsigned char phy_addr,
++ unsigned char phy_reg, unsigned short value);
++
++int phy_setup_aneg (char *devname, unsigned char addr);
++
++#ifndef UPDATE_STATS_BY_SOFTWARE
++static void mv64460_eth_print_stat (struct eth_device *dev);
++#endif
++/* Processes a received packet */
++extern void NetReceive (volatile uchar *, int);
++
++extern unsigned int INTERNAL_REG_BASE_ADDR;
++
++unsigned long my_le32_to_cpu (unsigned long x)
++{
++ return (((x & 0x000000ffU) << 24) |
++ ((x & 0x0000ff00U) << 8) |
++ ((x & 0x00ff0000U) >> 8) | ((x & 0xff000000U) >> 24));
++}
++
++/*************************************************
++ *Helper functions - used inside the driver only *
++ *************************************************/
++#ifdef DEBUG_MV_ETH
++void print_globals (struct eth_device *dev)
++{
++ printf ("Ethernet PRINT_Globals-Debug function\n");
++ printf ("Base Address for ETH_PORT_INFO: %08x\n",
++ (unsigned int) dev->priv);
++ printf ("Base Address for mv64460_eth_priv: %08x\n",
++ (unsigned int) &(((ETH_PORT_INFO *) dev->priv)->
++ port_private));
++
++ printf ("GT Internal Base Address: %08x\n",
++ INTERNAL_REG_BASE_ADDR);
++ printf ("Base Address for TX-DESCs: %08x Number of allocated Buffers %d\n",
++ (unsigned int) ((ETH_PORT_INFO *) dev->priv)->p_tx_desc_area_base[0], MV64460_TX_QUEUE_SIZE);
++ printf ("Base Address for RX-DESCs: %08x Number of allocated Buffers %d\n",
++ (unsigned int) ((ETH_PORT_INFO *) dev->priv)->p_rx_desc_area_base[0], MV64460_RX_QUEUE_SIZE);
++ printf ("Base Address for RX-Buffer: %08x allocated Bytes %d\n",
++ (unsigned int) ((ETH_PORT_INFO *) dev->priv)->
++ p_rx_buffer_base[0],
++ (MV64460_RX_QUEUE_SIZE * MV64460_RX_BUFFER_SIZE) + 32);
++ printf ("Base Address for TX-Buffer: %08x allocated Bytes %d\n",
++ (unsigned int) ((ETH_PORT_INFO *) dev->priv)->
++ p_tx_buffer_base[0],
++ (MV64460_TX_QUEUE_SIZE * MV64460_TX_BUFFER_SIZE) + 32);
++}
++#endif
++
++/**********************************************************************
++ * mv64460_eth_print_phy_status
++ *
++ * Prints gigabit ethenret phy status
++ *
++ * Input : pointer to ethernet interface network device structure
++ * Output : N/A
++ **********************************************************************/
++void mv64460_eth_print_phy_status (struct eth_device *dev)
++{
++ struct mv64460_eth_priv *port_private;
++ unsigned int port_num;
++ ETH_PORT_INFO *ethernet_private = (ETH_PORT_INFO *) dev->priv;
++ unsigned int port_status, phy_reg_data;
++
++ port_private =
++ (struct mv64460_eth_priv *) ethernet_private->port_private;
++ port_num = port_private->port_num;
++
++ /* Check Link status on phy */
++ eth_port_read_smi_reg (port_num, 1, &phy_reg_data);
++ if (!(phy_reg_data & 0x20)) {
++ printf ("Ethernet port changed link status to DOWN\n");
++ } else {
++ port_status =
++ MV_REG_READ (MV64460_ETH_PORT_STATUS_REG (port_num));
++ printf ("Ethernet status port %d: Link up", port_num);
++ printf (", %s",
++ (port_status & BIT2) ? "Full Duplex" : "Half Duplex");
++ if (port_status & BIT4)
++ printf (", Speed 1 Gbps");
++ else
++ printf (", %s",
++ (port_status & BIT5) ? "Speed 100 Mbps" :
++ "Speed 10 Mbps");
++ printf ("\n");
++ }
++}
++
++/**********************************************************************
++ * u-boot entry functions for mv64460_eth
++ *
++ **********************************************************************/
++int db64460_eth_probe (struct eth_device *dev)
++{
++ return ((int) db64460_eth_start (dev));
++}
++
++int db64460_eth_poll (struct eth_device *dev)
++{
++ return mv64460_eth_receive (dev);
++}
++
++int db64460_eth_transmit (struct eth_device *dev, volatile void *packet,
++ int length)
++{
++ mv64460_eth_xmit (dev, packet, length);
++ return 0;
++}
++
++void db64460_eth_disable (struct eth_device *dev)
++{
++ mv64460_eth_stop (dev);
++}
++
++#define DFCDL(write,read) ((write << 6) | read)
++unsigned int ethDfcdls[] = {
++ DFCDL(0,0), DFCDL(1,1), DFCDL(2,2), DFCDL(3,3),
++ DFCDL(4,4), DFCDL(5,5), DFCDL(6,6), DFCDL(7,7),
++ DFCDL(8,8), DFCDL(9,9), DFCDL(10,10), DFCDL(11,11),
++ DFCDL(12,12), DFCDL(13,13), DFCDL(14,14), DFCDL(15,15),
++ DFCDL(16,16), DFCDL(17,17), DFCDL(18,18), DFCDL(19,19),
++ DFCDL(20,20), DFCDL(21,21), DFCDL(22,22), DFCDL(23,23),
++ DFCDL(24,24), DFCDL(25,25), DFCDL(26,26), DFCDL(27,27),
++ DFCDL(28,28), DFCDL(29,29), DFCDL(30,30), DFCDL(31,31),
++ DFCDL(32,32), DFCDL(33,33), DFCDL(34,34), DFCDL(35,35),
++ DFCDL(36,36), DFCDL(37,37), DFCDL(38,38), DFCDL(39,39),
++ DFCDL(40,40), DFCDL(41,41), DFCDL(42,42), DFCDL(43,43),
++ DFCDL(44,44), DFCDL(45,45), DFCDL(46,46), DFCDL(47,47),
++ DFCDL(48,48), DFCDL(49,49), DFCDL(50,50), DFCDL(51,51),
++ DFCDL(52,52), DFCDL(53,53), DFCDL(54,54), DFCDL(55,55),
++ DFCDL(56,56), DFCDL(57,57), DFCDL(58,58), DFCDL(59,59),
++ DFCDL(60,60), DFCDL(61,61), DFCDL(62,62), DFCDL(63,63),
++};
++
++void mv_eth_phy_init (void)
++{
++ int i;
++
++ MV_REG_WRITE (ETH_PHY_DFCDL_ADDR_REG, 0);
++
++ for (i = 0; i < 64; i++) {
++ MV_REG_WRITE (ETH_PHY_DFCDL_DATA0_REG, ethDfcdls[i]);
++ }
++
++ MV_REG_WRITE (ETH_PHY_DFCDL_CONFIG0_REG, 0x300000);
++}
++
++void mv6446x_eth_initialize (bd_t * bis)
++{
++ struct eth_device *dev;
++ ETH_PORT_INFO *ethernet_private;
++ struct mv64460_eth_priv *port_private;
++ int devnum, x, temp;
++ char *s, *e, buf[64];
++
++ /* P3M750 only
++ * Set RGMII clock drives strength
++ */
++ temp = MV_REG_READ(0x20A0);
++ temp |= 0x04000080;
++ MV_REG_WRITE(0x20A0, temp);
++
++ mv_eth_phy_init();
++
++ for (devnum = 0; devnum < MV_ETH_DEVS; devnum++) {
++ dev = calloc (sizeof (*dev), 1);
++ if (!dev) {
++ printf ("%s: mv_enet%d allocation failure, %s\n",
++ __FUNCTION__, devnum, "eth_device structure");
++ return;
++ }
++
++ /* must be less than NAMESIZE (16) */
++ sprintf (dev->name, "mv_enet%d", devnum);
++
++#ifdef DEBUG
++ printf ("Initializing %s\n", dev->name);
++#endif
++
++ /* Extract the MAC address from the environment */
++ switch (devnum) {
++ case 0:
++ s = "ethaddr";
++ break;
++ case 1:
++ s = "eth1addr";
++ break;
++ case 2:
++ s = "eth2addr";
++ break;
++ default: /* this should never happen */
++ printf ("%s: Invalid device number %d\n",
++ __FUNCTION__, devnum);
++ return;
++ }
++
++ temp = getenv_r (s, buf, sizeof (buf));
++ s = (temp > 0) ? buf : NULL;
++
++#ifdef DEBUG
++ printf ("Setting MAC %d to %s\n", devnum, s);
++#endif
++ for (x = 0; x < 6; ++x) {
++ dev->enetaddr[x] = s ? simple_strtoul (s, &e, 16) : 0;
++ if (s)
++ s = (*e) ? e + 1 : e;
++ }
++ /* ronen - set the MAC addr in the HW */
++ eth_port_uc_addr_set (devnum, dev->enetaddr, 0);
++
++ dev->init = (void *) db64460_eth_probe;
++ dev->halt = (void *) ethernet_phy_reset;
++ dev->send = (void *) db64460_eth_transmit;
++ dev->recv = (void *) db64460_eth_poll;
++
++ ethernet_private = calloc (sizeof (*ethernet_private), 1);
++ dev->priv = (void *)ethernet_private;
++ if (!ethernet_private) {
++ printf ("%s: %s allocation failure, %s\n",
++ __FUNCTION__, dev->name,
++ "Private Device Structure");
++ free (dev);
++ return;
++ }
++ /* start with an zeroed ETH_PORT_INFO */
++ memset (ethernet_private, 0, sizeof (ETH_PORT_INFO));
++ memcpy (ethernet_private->port_mac_addr, dev->enetaddr, 6);
++
++ /* set pointer to memory for stats data structure etc... */
++ port_private = calloc (sizeof (*ethernet_private), 1);
++ ethernet_private->port_private = (void *)port_private;
++ if (!port_private) {
++ printf ("%s: %s allocation failure, %s\n",
++ __FUNCTION__, dev->name,
++ "Port Private Device Structure");
++
++ free (ethernet_private);
++ free (dev);
++ return;
++ }
++
++ port_private->stats =
++ calloc (sizeof (struct net_device_stats), 1);
++ if (!port_private->stats) {
++ printf ("%s: %s allocation failure, %s\n",
++ __FUNCTION__, dev->name,
++ "Net stat Structure");
++
++ free (port_private);
++ free (ethernet_private);
++ free (dev);
++ return;
++ }
++ memset (ethernet_private->port_private, 0,
++ sizeof (struct mv64460_eth_priv));
++ switch (devnum) {
++ case 0:
++ ethernet_private->port_num = ETH_0;
++ break;
++ case 1:
++ ethernet_private->port_num = ETH_1;
++ break;
++ case 2:
++ ethernet_private->port_num = ETH_2;
++ break;
++ default:
++ printf ("Invalid device number %d\n", devnum);
++ break;
++ };
++
++ port_private->port_num = devnum;
++ /*
++ * Read MIB counter on the GT in order to reset them,
++ * then zero all the stats fields in memory
++ */
++ mv64460_eth_update_stat (dev);
++ memset (port_private->stats, 0,
++ sizeof (struct net_device_stats));
++ /* Extract the MAC address from the environment */
++ switch (devnum) {
++ case 0:
++ s = "ethaddr";
++ break;
++ case 1:
++ s = "eth1addr";
++ break;
++ case 2:
++ s = "eth2addr";
++ break;
++ default: /* this should never happen */
++ printf ("%s: Invalid device number %d\n",
++ __FUNCTION__, devnum);
++ return;
++ }
++
++ temp = getenv_r (s, buf, sizeof (buf));
++ s = (temp > 0) ? buf : NULL;
++
++#ifdef DEBUG
++ printf ("Setting MAC %d to %s\n", devnum, s);
++#endif
++ for (x = 0; x < 6; ++x) {
++ dev->enetaddr[x] = s ? simple_strtoul (s, &e, 16) : 0;
++ if (s)
++ s = (*e) ? e + 1 : e;
++ }
++
++ DP (printf ("Allocating descriptor and buffer rings\n"));
++
++ ethernet_private->p_rx_desc_area_base[0] =
++ (ETH_RX_DESC *) memalign (16,
++ RX_DESC_ALIGNED_SIZE *
++ MV64460_RX_QUEUE_SIZE + 1);
++ ethernet_private->p_tx_desc_area_base[0] =
++ (ETH_TX_DESC *) memalign (16,
++ TX_DESC_ALIGNED_SIZE *
++ MV64460_TX_QUEUE_SIZE + 1);
++
++ ethernet_private->p_rx_buffer_base[0] =
++ (char *) memalign (16,
++ MV64460_RX_QUEUE_SIZE *
++ MV64460_TX_BUFFER_SIZE + 1);
++ ethernet_private->p_tx_buffer_base[0] =
++ (char *) memalign (16,
++ MV64460_RX_QUEUE_SIZE *
++ MV64460_TX_BUFFER_SIZE + 1);
++
++#ifdef DEBUG_MV_ETH
++ /* DEBUG OUTPUT prints adresses of globals */
++ print_globals (dev);
++#endif
++ eth_register (dev);
++
++ miiphy_register(dev->name, mv_miiphy_read, mv_miiphy_write);
++ }
++ DP (printf ("%s: exit\n", __FUNCTION__));
++
++}
++
++/**********************************************************************
++ * mv64460_eth_open
++ *
++ * This function is called when openning the network device. The function
++ * should initialize all the hardware, initialize cyclic Rx/Tx
++ * descriptors chain and buffers and allocate an IRQ to the network
++ * device.
++ *
++ * Input : a pointer to the network device structure
++ * / / ronen - changed the output to match net/eth.c needs
++ * Output : nonzero of success , zero if fails.
++ * under construction
++ **********************************************************************/
++
++int mv64460_eth_open (struct eth_device *dev)
++{
++ return (mv64460_eth_real_open (dev));
++}
++
++/* Helper function for mv64460_eth_open */
++static int mv64460_eth_real_open (struct eth_device *dev)
++{
++
++ unsigned int queue;
++ ETH_PORT_INFO *ethernet_private;
++ struct mv64460_eth_priv *port_private;
++ unsigned int port_num;
++ u32 port_status;
++ ushort reg_short;
++ int speed;
++ int duplex;
++ int i;
++ int reg;
++
++ ethernet_private = (ETH_PORT_INFO *) dev->priv;
++ /* ronen - when we update the MAC env params we only update dev->enetaddr
++ see ./net/eth.c eth_set_enetaddr() */
++ memcpy (ethernet_private->port_mac_addr, dev->enetaddr, 6);
++
++ port_private = (struct mv64460_eth_priv *) ethernet_private->port_private;
++ port_num = port_private->port_num;
++
++ /* Stop RX Queues */
++ MV_REG_WRITE (MV64460_ETH_RECEIVE_QUEUE_COMMAND_REG (port_num), 0x0000ff00);
++
++ /* Clear the ethernet port interrupts */
++ MV_REG_WRITE (MV64460_ETH_INTERRUPT_CAUSE_REG (port_num), 0);
++ MV_REG_WRITE (MV64460_ETH_INTERRUPT_CAUSE_EXTEND_REG (port_num), 0);
++
++ /* Unmask RX buffer and TX end interrupt */
++ MV_REG_WRITE (MV64460_ETH_INTERRUPT_MASK_REG (port_num),
++ INT_CAUSE_UNMASK_ALL);
++
++ /* Unmask phy and link status changes interrupts */
++ MV_REG_WRITE (MV64460_ETH_INTERRUPT_EXTEND_MASK_REG (port_num),
++ INT_CAUSE_UNMASK_ALL_EXT);
++
++ /* Set phy address of the port */
++ ethernet_private->port_phy_addr = 0x1 + (port_num << 1);
++ reg = ethernet_private->port_phy_addr;
++
++ /* Activate the DMA channels etc */
++ eth_port_init (ethernet_private);
++
++ /* "Allocate" setup TX rings */
++
++ for (queue = 0; queue < MV64460_TX_QUEUE_NUM; queue++) {
++ unsigned int size;
++
++ port_private->tx_ring_size[queue] = MV64460_TX_QUEUE_SIZE;
++ size = (port_private->tx_ring_size[queue] * TX_DESC_ALIGNED_SIZE); /*size = no of DESCs times DESC-size */
++ ethernet_private->tx_desc_area_size[queue] = size;
++
++ /* first clear desc area completely */
++ memset ((void *) ethernet_private->p_tx_desc_area_base[queue],
++ 0, ethernet_private->tx_desc_area_size[queue]);
++
++ /* initialize tx desc ring with low level driver */
++ if (ether_init_tx_desc_ring
++ (ethernet_private, ETH_Q0,
++ port_private->tx_ring_size[queue],
++ MV64460_TX_BUFFER_SIZE /* Each Buffer is 1600 Byte */ ,
++ (unsigned int) ethernet_private->
++ p_tx_desc_area_base[queue],
++ (unsigned int) ethernet_private->
++ p_tx_buffer_base[queue]) == false)
++ printf ("### Error initializing TX Ring\n");
++ }
++
++ /* "Allocate" setup RX rings */
++ for (queue = 0; queue < MV64460_RX_QUEUE_NUM; queue++) {
++ unsigned int size;
++
++ /* Meantime RX Ring are fixed - but must be configurable by user */
++ port_private->rx_ring_size[queue] = MV64460_RX_QUEUE_SIZE;
++ size = (port_private->rx_ring_size[queue] *
++ RX_DESC_ALIGNED_SIZE);
++ ethernet_private->rx_desc_area_size[queue] = size;
++
++ /* first clear desc area completely */
++ memset ((void *) ethernet_private->p_rx_desc_area_base[queue],
++ 0, ethernet_private->rx_desc_area_size[queue]);
++ if ((ether_init_rx_desc_ring
++ (ethernet_private, ETH_Q0,
++ port_private->rx_ring_size[queue],
++ MV64460_RX_BUFFER_SIZE /* Each Buffer is 1600 Byte */ ,
++ (unsigned int) ethernet_private->
++ p_rx_desc_area_base[queue],
++ (unsigned int) ethernet_private->
++ p_rx_buffer_base[queue])) == false)
++ printf ("### Error initializing RX Ring\n");
++ }
++
++ eth_port_start (ethernet_private);
++
++ /* Set maximum receive buffer to 9700 bytes */
++ MV_REG_WRITE (MV64460_ETH_PORT_SERIAL_CONTROL_REG (port_num),
++ (0x5 << 17) |
++ (MV_REG_READ
++ (MV64460_ETH_PORT_SERIAL_CONTROL_REG (port_num))
++ & 0xfff1ffff));
++
++ /*
++ * Set ethernet MTU for leaky bucket mechanism to 0 - this will
++ * disable the leaky bucket mechanism .
++ */
++
++ MV_REG_WRITE (MV64460_ETH_MAXIMUM_TRANSMIT_UNIT (port_num), 0);
++ port_status = MV_REG_READ (MV64460_ETH_PORT_STATUS_REG (port_num));
++
++#if defined(CONFIG_PHY_RESET)
++ /*
++ * Reset the phy, only if its the first time through
++ * otherwise, just check the speeds & feeds
++ */
++ if (port_private->first_init == 0) {
++ port_private->first_init = 1;
++ ethernet_phy_reset (port_num);
++
++ /* Start/Restart autonegotiation */
++ phy_setup_aneg (dev->name, reg);
++ udelay (1000);
++ }
++#endif /* defined(CONFIG_PHY_RESET) */
++
++ miiphy_read (dev->name, reg, PHY_BMSR, &reg_short);
++
++ /*
++ * Wait if PHY is capable of autonegotiation and autonegotiation is not complete
++ */
++ if ((reg_short & PHY_BMSR_AUTN_ABLE)
++ && !(reg_short & PHY_BMSR_AUTN_COMP)) {
++ puts ("Waiting for PHY auto negotiation to complete");
++ i = 0;
++ while (!(reg_short & PHY_BMSR_AUTN_COMP)) {
++ /*
++ * Timeout reached ?
++ */
++ if (i > PHY_AUTONEGOTIATE_TIMEOUT) {
++ puts (" TIMEOUT !\n");
++ break;
++ }
++
++ if ((i++ % 1000) == 0) {
++ putc ('.');
++ }
++ udelay (1000); /* 1 ms */
++ miiphy_read (dev->name, reg, PHY_BMSR, &reg_short);
++
++ }
++ puts (" done\n");
++ udelay (500000); /* another 500 ms (results in faster booting) */
++ }
++
++ speed = miiphy_speed (dev->name, reg);
++ duplex = miiphy_duplex (dev->name, reg);
++
++ printf ("ENET Speed is %d Mbps - %s duplex connection\n",
++ (int) speed, (duplex == HALF) ? "HALF" : "FULL");
++
++ port_private->eth_running = MAGIC_ETH_RUNNING;
++ return 1;
++}
++
++static int mv64460_eth_free_tx_rings (struct eth_device *dev)
++{
++ unsigned int queue;
++ ETH_PORT_INFO *ethernet_private;
++ struct mv64460_eth_priv *port_private;
++ unsigned int port_num;
++ volatile ETH_TX_DESC *p_tx_curr_desc;
++
++ ethernet_private = (ETH_PORT_INFO *) dev->priv;
++ port_private =
++ (struct mv64460_eth_priv *) ethernet_private->port_private;
++ port_num = port_private->port_num;
++
++ /* Stop Tx Queues */
++ MV_REG_WRITE (MV64460_ETH_TRANSMIT_QUEUE_COMMAND_REG (port_num),
++ 0x0000ff00);
++
++ /* Free TX rings */
++ DP (printf ("Clearing previously allocated TX queues... "));
++ for (queue = 0; queue < MV64460_TX_QUEUE_NUM; queue++) {
++ /* Free on TX rings */
++ for (p_tx_curr_desc =
++ ethernet_private->p_tx_desc_area_base[queue];
++ ((unsigned int) p_tx_curr_desc <= (unsigned int)
++ ethernet_private->p_tx_desc_area_base[queue] +
++ ethernet_private->tx_desc_area_size[queue]);
++ p_tx_curr_desc =
++ (ETH_TX_DESC *) ((unsigned int) p_tx_curr_desc +
++ TX_DESC_ALIGNED_SIZE)) {
++ /* this is inside for loop */
++ if (p_tx_curr_desc->return_info != 0) {
++ p_tx_curr_desc->return_info = 0;
++ DP (printf ("freed\n"));
++ }
++ }
++ DP (printf ("Done\n"));
++ }
++ return 0;
++}
++
++static int mv64460_eth_free_rx_rings (struct eth_device *dev)
++{
++ unsigned int queue;
++ ETH_PORT_INFO *ethernet_private;
++ struct mv64460_eth_priv *port_private;
++ unsigned int port_num;
++ volatile ETH_RX_DESC *p_rx_curr_desc;
++
++ ethernet_private = (ETH_PORT_INFO *) dev->priv;
++ port_private =
++ (struct mv64460_eth_priv *) ethernet_private->port_private;
++ port_num = port_private->port_num;
++
++ /* Stop RX Queues */
++ MV_REG_WRITE (MV64460_ETH_RECEIVE_QUEUE_COMMAND_REG (port_num),
++ 0x0000ff00);
++
++ /* Free RX rings */
++ DP (printf ("Clearing previously allocated RX queues... "));
++ for (queue = 0; queue < MV64460_RX_QUEUE_NUM; queue++) {
++ /* Free preallocated skb's on RX rings */
++ for (p_rx_curr_desc =
++ ethernet_private->p_rx_desc_area_base[queue];
++ (((unsigned int) p_rx_curr_desc <
++ ((unsigned int) ethernet_private->
++ p_rx_desc_area_base[queue] +
++ ethernet_private->rx_desc_area_size[queue])));
++ p_rx_curr_desc =
++ (ETH_RX_DESC *) ((unsigned int) p_rx_curr_desc +
++ RX_DESC_ALIGNED_SIZE)) {
++ if (p_rx_curr_desc->return_info != 0) {
++ p_rx_curr_desc->return_info = 0;
++ DP (printf ("freed\n"));
++ }
++ }
++ DP (printf ("Done\n"));
++ }
++ return 0;
++}
++
++/**********************************************************************
++ * mv64460_eth_stop
++ *
++ * This function is used when closing the network device.
++ * It updates the hardware,
++ * release all memory that holds buffers and descriptors and release the IRQ.
++ * Input : a pointer to the device structure
++ * Output : zero if success , nonzero if fails
++ *********************************************************************/
++
++int mv64460_eth_stop (struct eth_device *dev)
++{
++ ETH_PORT_INFO *ethernet_private;
++ struct mv64460_eth_priv *port_private;
++ unsigned int port_num;
++
++ ethernet_private = (ETH_PORT_INFO *) dev->priv;
++ port_private =
++ (struct mv64460_eth_priv *) ethernet_private->port_private;
++ port_num = port_private->port_num;
++
++ /* Disable all gigE address decoder */
++ MV_REG_WRITE (MV64460_ETH_BASE_ADDR_ENABLE_REG, 0x3f);
++ DP (printf ("%s Ethernet stop called ... \n", __FUNCTION__));
++ mv64460_eth_real_stop (dev);
++
++ return 0;
++};
++
++/* Helper function for mv64460_eth_stop */
++
++static int mv64460_eth_real_stop (struct eth_device *dev)
++{
++ ETH_PORT_INFO *ethernet_private;
++ struct mv64460_eth_priv *port_private;
++ unsigned int port_num;
++
++ ethernet_private = (ETH_PORT_INFO *) dev->priv;
++ port_private =
++ (struct mv64460_eth_priv *) ethernet_private->port_private;
++ port_num = port_private->port_num;
++
++ mv64460_eth_free_tx_rings (dev);
++ mv64460_eth_free_rx_rings (dev);
++
++ eth_port_reset (ethernet_private->port_num);
++ /* Disable ethernet port interrupts */
++ MV_REG_WRITE (MV64460_ETH_INTERRUPT_CAUSE_REG (port_num), 0);
++ MV_REG_WRITE (MV64460_ETH_INTERRUPT_CAUSE_EXTEND_REG (port_num), 0);
++ /* Mask RX buffer and TX end interrupt */
++ MV_REG_WRITE (MV64460_ETH_INTERRUPT_MASK_REG (port_num), 0);
++ /* Mask phy and link status changes interrupts */
++ MV_REG_WRITE (MV64460_ETH_INTERRUPT_EXTEND_MASK_REG (port_num), 0);
++ MV_RESET_REG_BITS (MV64460_CPU_INTERRUPT0_MASK_HIGH,
++ BIT0 << port_num);
++ /* Print Network statistics */
++#ifndef UPDATE_STATS_BY_SOFTWARE
++ /*
++ * Print statistics (only if ethernet is running),
++ * then zero all the stats fields in memory
++ */
++ if (port_private->eth_running == MAGIC_ETH_RUNNING) {
++ port_private->eth_running = 0;
++ mv64460_eth_print_stat (dev);
++ }
++ memset (port_private->stats, 0, sizeof (struct net_device_stats));
++#endif
++ DP (printf ("\nEthernet stopped ... \n"));
++ return 0;
++}
++
++/**********************************************************************
++ * mv64460_eth_start_xmit
++ *
++ * This function is queues a packet in the Tx descriptor for
++ * required port.
++ *
++ * Input : skb - a pointer to socket buffer
++ * dev - a pointer to the required port
++ *
++ * Output : zero upon success
++ **********************************************************************/
++
++int mv64460_eth_xmit (struct eth_device *dev, volatile void *dataPtr,
++ int dataSize)
++{
++ ETH_PORT_INFO *ethernet_private;
++ struct mv64460_eth_priv *port_private;
++ unsigned int port_num;
++ PKT_INFO pkt_info;
++ ETH_FUNC_RET_STATUS status;
++ struct net_device_stats *stats;
++ ETH_FUNC_RET_STATUS release_result;
++
++ ethernet_private = (ETH_PORT_INFO *) dev->priv;
++ port_private =
++ (struct mv64460_eth_priv *) ethernet_private->port_private;
++ port_num = port_private->port_num;
++
++ stats = port_private->stats;
++
++ /* Update packet info data structure */
++ pkt_info.cmd_sts = ETH_TX_FIRST_DESC | ETH_TX_LAST_DESC; /* DMA owned, first last */
++ pkt_info.byte_cnt = dataSize;
++ pkt_info.buf_ptr = (unsigned int) dataPtr;
++ pkt_info.return_info = 0;
++
++ status = eth_port_send (ethernet_private, ETH_Q0, &pkt_info);
++ if ((status == ETH_ERROR) || (status == ETH_QUEUE_FULL)) {
++ printf ("Error on transmitting packet ..");
++ if (status == ETH_QUEUE_FULL)
++ printf ("ETH Queue is full. \n");
++ if (status == ETH_QUEUE_LAST_RESOURCE)
++ printf ("ETH Queue: using last available resource. \n");
++ return 1;
++ }
++
++ /* Update statistics and start of transmittion time */
++ stats->tx_bytes += dataSize;
++ stats->tx_packets++;
++
++ /* Check if packet(s) is(are) transmitted correctly (release everything) */
++ do {
++ release_result =
++ eth_tx_return_desc (ethernet_private, ETH_Q0,
++ &pkt_info);
++ switch (release_result) {
++ case ETH_OK:
++ DP (printf ("descriptor released\n"));
++ if (pkt_info.cmd_sts & BIT0) {
++ printf ("Error in TX\n");
++ stats->tx_errors++;
++ }
++ break;
++ case ETH_RETRY:
++ DP (printf ("transmission still in process\n"));
++ break;
++
++ case ETH_ERROR:
++ printf ("routine can not access Tx desc ring\n");
++ break;
++
++ case ETH_END_OF_JOB:
++ DP (printf ("the routine has nothing to release\n"));
++ break;
++ default: /* should not happen */
++ break;
++ }
++ } while (release_result == ETH_OK);
++
++ return 0; /* success */
++}
++
++/**********************************************************************
++ * mv64460_eth_receive
++ *
++ * This function is forward packets that are received from the port's
++ * queues toward kernel core or FastRoute them to another interface.
++ *
++ * Input : dev - a pointer to the required interface
++ * max - maximum number to receive (0 means unlimted)
++ *
++ * Output : number of served packets
++ **********************************************************************/
++
++int mv64460_eth_receive (struct eth_device *dev)
++{
++ ETH_PORT_INFO *ethernet_private;
++ struct mv64460_eth_priv *port_private;
++ unsigned int port_num;
++ PKT_INFO pkt_info;
++ struct net_device_stats *stats;
++
++ ethernet_private = (ETH_PORT_INFO *) dev->priv;
++ port_private = (struct mv64460_eth_priv *) ethernet_private->port_private;
++ port_num = port_private->port_num;
++ stats = port_private->stats;
++
++ while ((eth_port_receive (ethernet_private, ETH_Q0, &pkt_info) == ETH_OK)) {
++#ifdef DEBUG_MV_ETH
++ if (pkt_info.byte_cnt != 0) {
++ printf ("%s: Received %d byte Packet @ 0x%x\n",
++ __FUNCTION__, pkt_info.byte_cnt,
++ pkt_info.buf_ptr);
++ if(pkt_info.buf_ptr != 0){
++ for(i=0; i < pkt_info.byte_cnt; i++){
++ if((i % 4) == 0){
++ printf("\n0x");
++ }
++ printf("%02x", ((char*)pkt_info.buf_ptr)[i]);
++ }
++ printf("\n");
++ }
++ }
++#endif
++ /* Update statistics. Note byte count includes 4 byte CRC count */
++ stats->rx_packets++;
++ stats->rx_bytes += pkt_info.byte_cnt;
++
++ /*
++ * In case received a packet without first / last bits on OR the error
++ * summary bit is on, the packets needs to be dropeed.
++ */
++ if (((pkt_info.
++ cmd_sts & (ETH_RX_FIRST_DESC | ETH_RX_LAST_DESC)) !=
++ (ETH_RX_FIRST_DESC | ETH_RX_LAST_DESC))
++ || (pkt_info.cmd_sts & ETH_ERROR_SUMMARY)) {
++ stats->rx_dropped++;
++
++ printf ("Received packet spread on multiple descriptors\n");
++
++ /* Is this caused by an error ? */
++ if (pkt_info.cmd_sts & ETH_ERROR_SUMMARY) {
++ stats->rx_errors++;
++ }
++
++ /* free these descriptors again without forwarding them to the higher layers */
++ pkt_info.buf_ptr &= ~0x7; /* realign buffer again */
++ pkt_info.byte_cnt = 0x0000; /* Reset Byte count */
++
++ if (eth_rx_return_buff
++ (ethernet_private, ETH_Q0, &pkt_info) != ETH_OK) {
++ printf ("Error while returning the RX Desc to Ring\n");
++ } else {
++ DP (printf ("RX Desc returned to Ring\n"));
++ }
++ /* /free these descriptors again */
++ } else {
++
++/* !!! call higher layer processing */
++#ifdef DEBUG_MV_ETH
++ printf ("\nNow send it to upper layer protocols (NetReceive) ...\n");
++#endif
++ /* let the upper layer handle the packet */
++ NetReceive ((uchar *) pkt_info.buf_ptr,
++ (int) pkt_info.byte_cnt);
++
++/* **************************************************************** */
++/* free descriptor */
++ pkt_info.buf_ptr &= ~0x7; /* realign buffer again */
++ pkt_info.byte_cnt = 0x0000; /* Reset Byte count */
++ DP (printf ("RX: pkt_info.buf_ptr = %x\n", pkt_info.buf_ptr));
++ if (eth_rx_return_buff
++ (ethernet_private, ETH_Q0, &pkt_info) != ETH_OK) {
++ printf ("Error while returning the RX Desc to Ring\n");
++ } else {
++ DP (printf ("RX: Desc returned to Ring\n"));
++ }
++
++/* **************************************************************** */
++
++ }
++ }
++ mv64460_eth_get_stats (dev); /* update statistics */
++ return 1;
++}
++
++/**********************************************************************
++ * mv64460_eth_get_stats
++ *
++ * Returns a pointer to the interface statistics.
++ *
++ * Input : dev - a pointer to the required interface
++ *
++ * Output : a pointer to the interface's statistics
++ **********************************************************************/
++
++static struct net_device_stats *mv64460_eth_get_stats (struct eth_device *dev)
++{
++ ETH_PORT_INFO *ethernet_private;
++ struct mv64460_eth_priv *port_private;
++ unsigned int port_num;
++
++ ethernet_private = (ETH_PORT_INFO *) dev->priv;
++ port_private =
++ (struct mv64460_eth_priv *) ethernet_private->port_private;
++ port_num = port_private->port_num;
++
++ mv64460_eth_update_stat (dev);
++
++ return port_private->stats;
++}
++
++/**********************************************************************
++ * mv64460_eth_update_stat
++ *
++ * Update the statistics structure in the private data structure
++ *
++ * Input : pointer to ethernet interface network device structure
++ * Output : N/A
++ **********************************************************************/
++
++static void mv64460_eth_update_stat (struct eth_device *dev)
++{
++ ETH_PORT_INFO *ethernet_private;
++ struct mv64460_eth_priv *port_private;
++ struct net_device_stats *stats;
++ unsigned int port_num;
++ volatile unsigned int dummy;
++
++ ethernet_private = (ETH_PORT_INFO *) dev->priv;
++ port_private =
++ (struct mv64460_eth_priv *) ethernet_private->port_private;
++ port_num = port_private->port_num;
++ stats = port_private->stats;
++
++ /* These are false updates */
++ stats->rx_packets += (unsigned long)
++ eth_read_mib_counter (ethernet_private->port_num,
++ ETH_MIB_GOOD_FRAMES_RECEIVED);
++ stats->tx_packets += (unsigned long)
++ eth_read_mib_counter (ethernet_private->port_num,
++ ETH_MIB_GOOD_FRAMES_SENT);
++ stats->rx_bytes += (unsigned long)
++ eth_read_mib_counter (ethernet_private->port_num,
++ ETH_MIB_GOOD_OCTETS_RECEIVED_LOW);
++ /*
++ * Ideally this should be as follows -
++ *
++ * stats->rx_bytes += stats->rx_bytes +
++ * ((unsigned long) ethReadMibCounter (ethernet_private->port_num ,
++ * ETH_MIB_GOOD_OCTETS_RECEIVED_HIGH) << 32);
++ *
++ * But the unsigned long in PowerPC and MIPS are 32bit. So the next read
++ * is just a dummy read for proper work of the GigE port
++ */
++ dummy = eth_read_mib_counter (ethernet_private->port_num,
++ ETH_MIB_GOOD_OCTETS_RECEIVED_HIGH);
++ stats->tx_bytes += (unsigned long)
++ eth_read_mib_counter (ethernet_private->port_num,
++ ETH_MIB_GOOD_OCTETS_SENT_LOW);
++ dummy = eth_read_mib_counter (ethernet_private->port_num,
++ ETH_MIB_GOOD_OCTETS_SENT_HIGH);
++ stats->rx_errors += (unsigned long)
++ eth_read_mib_counter (ethernet_private->port_num,
++ ETH_MIB_MAC_RECEIVE_ERROR);
++
++ /* Rx dropped is for received packet with CRC error */
++ stats->rx_dropped +=
++ (unsigned long) eth_read_mib_counter (ethernet_private->
++ port_num,
++ ETH_MIB_BAD_CRC_EVENT);
++ stats->multicast += (unsigned long)
++ eth_read_mib_counter (ethernet_private->port_num,
++ ETH_MIB_MULTICAST_FRAMES_RECEIVED);
++ stats->collisions +=
++ (unsigned long) eth_read_mib_counter (ethernet_private->
++ port_num,
++ ETH_MIB_COLLISION) +
++ (unsigned long) eth_read_mib_counter (ethernet_private->
++ port_num,
++ ETH_MIB_LATE_COLLISION);
++ /* detailed rx errors */
++ stats->rx_length_errors +=
++ (unsigned long) eth_read_mib_counter (ethernet_private->
++ port_num,
++ ETH_MIB_UNDERSIZE_RECEIVED)
++ +
++ (unsigned long) eth_read_mib_counter (ethernet_private->
++ port_num,
++ ETH_MIB_OVERSIZE_RECEIVED);
++ /* detailed tx errors */
++}
++
++#ifndef UPDATE_STATS_BY_SOFTWARE
++/**********************************************************************
++ * mv64460_eth_print_stat
++ *
++ * Update the statistics structure in the private data structure
++ *
++ * Input : pointer to ethernet interface network device structure
++ * Output : N/A
++ **********************************************************************/
++
++static void mv64460_eth_print_stat (struct eth_device *dev)
++{
++ ETH_PORT_INFO *ethernet_private;
++ struct mv64460_eth_priv *port_private;
++ struct net_device_stats *stats;
++ unsigned int port_num;
++
++ ethernet_private = (ETH_PORT_INFO *) dev->priv;
++ port_private =
++ (struct mv64460_eth_priv *) ethernet_private->port_private;
++ port_num = port_private->port_num;
++ stats = port_private->stats;
++
++ /* These are false updates */
++ printf ("\n### Network statistics: ###\n");
++ printf ("--------------------------\n");
++ printf (" Packets received: %ld\n", stats->rx_packets);
++ printf (" Packets send: %ld\n", stats->tx_packets);
++ printf (" Received bytes: %ld\n", stats->rx_bytes);
++ printf (" Send bytes: %ld\n", stats->tx_bytes);
++ if (stats->rx_errors != 0)
++ printf (" Rx Errors: %ld\n",
++ stats->rx_errors);
++ if (stats->rx_dropped != 0)
++ printf (" Rx dropped (CRC Errors): %ld\n",
++ stats->rx_dropped);
++ if (stats->multicast != 0)
++ printf (" Rx mulicast frames: %ld\n",
++ stats->multicast);
++ if (stats->collisions != 0)
++ printf (" No. of collisions: %ld\n",
++ stats->collisions);
++ if (stats->rx_length_errors != 0)
++ printf (" Rx length errors: %ld\n",
++ stats->rx_length_errors);
++}
++#endif
++
++/**************************************************************************
++ *network_start - Network Kick Off Routine UBoot
++ *Inputs :
++ *Outputs :
++ **************************************************************************/
++
++bool db64460_eth_start (struct eth_device *dev)
++{
++ return (mv64460_eth_open (dev)); /* calls real open */
++}
++
++/*************************************************************************
++**************************************************************************
++**************************************************************************
++* The second part is the low level driver of the gigE ethernet ports. *
++**************************************************************************
++**************************************************************************
++*************************************************************************/
++/*
++ * based on Linux code
++ * arch/ppc/galileo/EVB64460/mv64460_eth.c - Driver for MV64460X ethernet ports
++ * Copyright (C) 2002 rabeeh@galileo.co.il
++
++ * 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.
++ *
++ */
++
++/********************************************************************************
++ * Marvell's Gigabit Ethernet controller low level driver
++ *
++ * DESCRIPTION:
++ * This file introduce low level API to Marvell's Gigabit Ethernet
++ * controller. This Gigabit Ethernet Controller driver API controls
++ * 1) Operations (i.e. port init, start, reset etc').
++ * 2) Data flow (i.e. port send, receive etc').
++ * Each Gigabit Ethernet port is controlled via ETH_PORT_INFO
++ * struct.
++ * This struct includes user configuration information as well as
++ * driver internal data needed for its operations.
++ *
++ * Supported Features:
++ * - This low level driver is OS independent. Allocating memory for
++ * the descriptor rings and buffers are not within the scope of
++ * this driver.
++ * - The user is free from Rx/Tx queue managing.
++ * - This low level driver introduce functionality API that enable
++ * the to operate Marvell's Gigabit Ethernet Controller in a
++ * convenient way.
++ * - Simple Gigabit Ethernet port operation API.
++ * - Simple Gigabit Ethernet port data flow API.
++ * - Data flow and operation API support per queue functionality.
++ * - Support cached descriptors for better performance.
++ * - Enable access to all four DRAM banks and internal SRAM memory
++ * spaces.
++ * - PHY access and control API.
++ * - Port control register configuration API.
++ * - Full control over Unicast and Multicast MAC configurations.
++ *
++ * Operation flow:
++ *
++ * Initialization phase
++ * This phase complete the initialization of the ETH_PORT_INFO
++ * struct.
++ * User information regarding port configuration has to be set
++ * prior to calling the port initialization routine. For example,
++ * the user has to assign the port_phy_addr field which is board
++ * depended parameter.
++ * In this phase any port Tx/Rx activity is halted, MIB counters
++ * are cleared, PHY address is set according to user parameter and
++ * access to DRAM and internal SRAM memory spaces.
++ *
++ * Driver ring initialization
++ * Allocating memory for the descriptor rings and buffers is not
++ * within the scope of this driver. Thus, the user is required to
++ * allocate memory for the descriptors ring and buffers. Those
++ * memory parameters are used by the Rx and Tx ring initialization
++ * routines in order to curve the descriptor linked list in a form
++ * of a ring.
++ * Note: Pay special attention to alignment issues when using
++ * cached descriptors/buffers. In this phase the driver store
++ * information in the ETH_PORT_INFO struct regarding each queue
++ * ring.
++ *
++ * Driver start
++ * This phase prepares the Ethernet port for Rx and Tx activity.
++ * It uses the information stored in the ETH_PORT_INFO struct to
++ * initialize the various port registers.
++ *
++ * Data flow:
++ * All packet references to/from the driver are done using PKT_INFO
++ * struct.
++ * This struct is a unified struct used with Rx and Tx operations.
++ * This way the user is not required to be familiar with neither
++ * Tx nor Rx descriptors structures.
++ * The driver's descriptors rings are management by indexes.
++ * Those indexes controls the ring resources and used to indicate
++ * a SW resource error:
++ * 'current'
++ * This index points to the current available resource for use. For
++ * example in Rx process this index will point to the descriptor
++ * that will be passed to the user upon calling the receive routine.
++ * In Tx process, this index will point to the descriptor
++ * that will be assigned with the user packet info and transmitted.
++ * 'used'
++ * This index points to the descriptor that need to restore its
++ * resources. For example in Rx process, using the Rx buffer return
++ * API will attach the buffer returned in packet info to the
++ * descriptor pointed by 'used'. In Tx process, using the Tx
++ * descriptor return will merely return the user packet info with
++ * the command status of the transmitted buffer pointed by the
++ * 'used' index. Nevertheless, it is essential to use this routine
++ * to update the 'used' index.
++ * 'first'
++ * This index supports Tx Scatter-Gather. It points to the first
++ * descriptor of a packet assembled of multiple buffers. For example
++ * when in middle of Such packet we have a Tx resource error the
++ * 'curr' index get the value of 'first' to indicate that the ring
++ * returned to its state before trying to transmit this packet.
++ *
++ * Receive operation:
++ * The eth_port_receive API set the packet information struct,
++ * passed by the caller, with received information from the
++ * 'current' SDMA descriptor.
++ * It is the user responsibility to return this resource back
++ * to the Rx descriptor ring to enable the reuse of this source.
++ * Return Rx resource is done using the eth_rx_return_buff API.
++ *
++ * Transmit operation:
++ * The eth_port_send API supports Scatter-Gather which enables to
++ * send a packet spanned over multiple buffers. This means that
++ * for each packet info structure given by the user and put into
++ * the Tx descriptors ring, will be transmitted only if the 'LAST'
++ * bit will be set in the packet info command status field. This
++ * API also consider restriction regarding buffer alignments and
++ * sizes.
++ * The user must return a Tx resource after ensuring the buffer
++ * has been transmitted to enable the Tx ring indexes to update.
++ *
++ * BOARD LAYOUT
++ * This device is on-board. No jumper diagram is necessary.
++ *
++ * EXTERNAL INTERFACE
++ *
++ * Prior to calling the initialization routine eth_port_init() the user
++ * must set the following fields under ETH_PORT_INFO struct:
++ * port_num User Ethernet port number.
++ * port_phy_addr User PHY address of Ethernet port.
++ * port_mac_addr[6] User defined port MAC address.
++ * port_config User port configuration value.
++ * port_config_extend User port config extend value.
++ * port_sdma_config User port SDMA config value.
++ * port_serial_control User port serial control value.
++ * *port_virt_to_phys () User function to cast virtual addr to CPU bus addr.
++ * *port_private User scratch pad for user specific data structures.
++ *
++ * This driver introduce a set of default values:
++ * PORT_CONFIG_VALUE Default port configuration value
++ * PORT_CONFIG_EXTEND_VALUE Default port extend configuration value
++ * PORT_SDMA_CONFIG_VALUE Default sdma control value
++ * PORT_SERIAL_CONTROL_VALUE Default port serial control value
++ *
++ * This driver data flow is done using the PKT_INFO struct which is
++ * a unified struct for Rx and Tx operations:
++ * byte_cnt Tx/Rx descriptor buffer byte count.
++ * l4i_chk CPU provided TCP Checksum. For Tx operation only.
++ * cmd_sts Tx/Rx descriptor command status.
++ * buf_ptr Tx/Rx descriptor buffer pointer.
++ * return_info Tx/Rx user resource return information.
++ *
++ *
++ * EXTERNAL SUPPORT REQUIREMENTS
++ *
++ * This driver requires the following external support:
++ *
++ * D_CACHE_FLUSH_LINE (address, address offset)
++ *
++ * This macro applies assembly code to flush and invalidate cache
++ * line.
++ * address - address base.
++ * address offset - address offset
++ *
++ *
++ * CPU_PIPE_FLUSH
++ *
++ * This macro applies assembly code to flush the CPU pipeline.
++ *
++ *******************************************************************************/
++/* includes */
++
++/* defines */
++/* SDMA command macros */
++#define ETH_ENABLE_TX_QUEUE(tx_queue, eth_port) \
++ MV_REG_WRITE(MV64460_ETH_TRANSMIT_QUEUE_COMMAND_REG(eth_port), (1 << tx_queue))
++
++#define ETH_DISABLE_TX_QUEUE(tx_queue, eth_port) \
++ MV_REG_WRITE(MV64460_ETH_TRANSMIT_QUEUE_COMMAND_REG(eth_port),\
++ (1 << (8 + tx_queue)))
++
++#define ETH_ENABLE_RX_QUEUE(rx_queue, eth_port) \
++MV_REG_WRITE(MV64460_ETH_RECEIVE_QUEUE_COMMAND_REG(eth_port), (1 << rx_queue))
++
++#define ETH_DISABLE_RX_QUEUE(rx_queue, eth_port) \
++MV_REG_WRITE(MV64460_ETH_RECEIVE_QUEUE_COMMAND_REG(eth_port), (1 << (8 + rx_queue)))
++
++#define CURR_RFD_GET(p_curr_desc, queue) \
++ ((p_curr_desc) = p_eth_port_ctrl->p_rx_curr_desc_q[queue])
++
++#define CURR_RFD_SET(p_curr_desc, queue) \
++ (p_eth_port_ctrl->p_rx_curr_desc_q[queue] = (p_curr_desc))
++
++#define USED_RFD_GET(p_used_desc, queue) \
++ ((p_used_desc) = p_eth_port_ctrl->p_rx_used_desc_q[queue])
++
++#define USED_RFD_SET(p_used_desc, queue)\
++(p_eth_port_ctrl->p_rx_used_desc_q[queue] = (p_used_desc))
++
++
++#define CURR_TFD_GET(p_curr_desc, queue) \
++ ((p_curr_desc) = p_eth_port_ctrl->p_tx_curr_desc_q[queue])
++
++#define CURR_TFD_SET(p_curr_desc, queue) \
++ (p_eth_port_ctrl->p_tx_curr_desc_q[queue] = (p_curr_desc))
++
++#define USED_TFD_GET(p_used_desc, queue) \
++ ((p_used_desc) = p_eth_port_ctrl->p_tx_used_desc_q[queue])
++
++#define USED_TFD_SET(p_used_desc, queue) \
++ (p_eth_port_ctrl->p_tx_used_desc_q[queue] = (p_used_desc))
++
++#define FIRST_TFD_GET(p_first_desc, queue) \
++ ((p_first_desc) = p_eth_port_ctrl->p_tx_first_desc_q[queue])
++
++#define FIRST_TFD_SET(p_first_desc, queue) \
++ (p_eth_port_ctrl->p_tx_first_desc_q[queue] = (p_first_desc))
++
++
++/* Macros that save access to desc in order to find next desc pointer */
++#define RX_NEXT_DESC_PTR(p_rx_desc, queue) (ETH_RX_DESC*)(((((unsigned int)p_rx_desc - (unsigned int)p_eth_port_ctrl->p_rx_desc_area_base[queue]) + RX_DESC_ALIGNED_SIZE) % p_eth_port_ctrl->rx_desc_area_size[queue]) + (unsigned int)p_eth_port_ctrl->p_rx_desc_area_base[queue])
++
++#define TX_NEXT_DESC_PTR(p_tx_desc, queue) (ETH_TX_DESC*)(((((unsigned int)p_tx_desc - (unsigned int)p_eth_port_ctrl->p_tx_desc_area_base[queue]) + TX_DESC_ALIGNED_SIZE) % p_eth_port_ctrl->tx_desc_area_size[queue]) + (unsigned int)p_eth_port_ctrl->p_tx_desc_area_base[queue])
++
++#define LINK_UP_TIMEOUT 100000
++#define PHY_BUSY_TIMEOUT 10000000
++
++/* locals */
++
++/* PHY routines */
++static void ethernet_phy_set (ETH_PORT eth_port_num, int phy_addr);
++static int ethernet_phy_get (ETH_PORT eth_port_num);
++
++/* Ethernet Port routines */
++static void eth_set_access_control (ETH_PORT eth_port_num,
++ ETH_WIN_PARAM * param);
++static bool eth_port_uc_addr (ETH_PORT eth_port_num, unsigned char uc_nibble,
++ ETH_QUEUE queue, int option);
++#if 0 /* FIXME */
++static bool eth_port_smc_addr (ETH_PORT eth_port_num,
++ unsigned char mc_byte,
++ ETH_QUEUE queue, int option);
++static bool eth_port_omc_addr (ETH_PORT eth_port_num,
++ unsigned char crc8,
++ ETH_QUEUE queue, int option);
++#endif
++
++static void eth_b_copy (unsigned int src_addr, unsigned int dst_addr,
++ int byte_count);
++
++void eth_dbg (ETH_PORT_INFO * p_eth_port_ctrl);
++
++
++typedef enum _memory_bank { BANK0, BANK1, BANK2, BANK3 } MEMORY_BANK;
++u32 mv_get_dram_bank_base_addr (MEMORY_BANK bank)
++{
++ u32 result = 0;
++ u32 enable = MV_REG_READ (MV64460_BASE_ADDR_ENABLE);
++
++ if (enable & (1 << bank))
++ return 0;
++ if (bank == BANK0)
++ result = MV_REG_READ (MV64460_CS_0_BASE_ADDR);
++ if (bank == BANK1)
++ result = MV_REG_READ (MV64460_CS_1_BASE_ADDR);
++ if (bank == BANK2)
++ result = MV_REG_READ (MV64460_CS_2_BASE_ADDR);
++ if (bank == BANK3)
++ result = MV_REG_READ (MV64460_CS_3_BASE_ADDR);
++ result &= 0x0000ffff;
++ result = result << 16;
++ return result;
++}
++
++u32 mv_get_dram_bank_size (MEMORY_BANK bank)
++{
++ u32 result = 0;
++ u32 enable = MV_REG_READ (MV64460_BASE_ADDR_ENABLE);
++
++ if (enable & (1 << bank))
++ return 0;
++ if (bank == BANK0)
++ result = MV_REG_READ (MV64460_CS_0_SIZE);
++ if (bank == BANK1)
++ result = MV_REG_READ (MV64460_CS_1_SIZE);
++ if (bank == BANK2)
++ result = MV_REG_READ (MV64460_CS_2_SIZE);
++ if (bank == BANK3)
++ result = MV_REG_READ (MV64460_CS_3_SIZE);
++ result += 1;
++ result &= 0x0000ffff;
++ result = result << 16;
++ return result;
++}
++
++u32 mv_get_internal_sram_base (void)
++{
++ u32 result;
++
++ result = MV_REG_READ (MV64460_INTEGRATED_SRAM_BASE_ADDR);
++ result &= 0x0000ffff;
++ result = result << 16;
++ return result;
++}
++
++/*******************************************************************************
++* eth_port_init - Initialize the Ethernet port driver
++*
++* DESCRIPTION:
++* This function prepares the ethernet port to start its activity:
++* 1) Completes the ethernet port driver struct initialization toward port
++* start routine.
++* 2) Resets the device to a quiescent state in case of warm reboot.
++* 3) Enable SDMA access to all four DRAM banks as well as internal SRAM.
++* 4) Clean MAC tables. The reset status of those tables is unknown.
++* 5) Set PHY address.
++* Note: Call this routine prior to eth_port_start routine and after setting
++* user values in the user fields of Ethernet port control struct (i.e.
++* port_phy_addr).
++*
++* INPUT:
++* ETH_PORT_INFO *p_eth_port_ctrl Ethernet port control struct
++*
++* OUTPUT:
++* See description.
++*
++* RETURN:
++* None.
++*
++*******************************************************************************/
++static void eth_port_init (ETH_PORT_INFO * p_eth_port_ctrl)
++{
++ int queue;
++ ETH_WIN_PARAM win_param;
++
++ p_eth_port_ctrl->port_config = PORT_CONFIG_VALUE;
++ p_eth_port_ctrl->port_config_extend = PORT_CONFIG_EXTEND_VALUE;
++ p_eth_port_ctrl->port_sdma_config = PORT_SDMA_CONFIG_VALUE;
++ p_eth_port_ctrl->port_serial_control = PORT_SERIAL_CONTROL_VALUE;
++
++ p_eth_port_ctrl->port_rx_queue_command = 0;
++ p_eth_port_ctrl->port_tx_queue_command = 0;
++
++ /* Zero out SW structs */
++ for (queue = 0; queue < MAX_RX_QUEUE_NUM; queue++) {
++ CURR_RFD_SET ((ETH_RX_DESC *) 0x00000000, queue);
++ USED_RFD_SET ((ETH_RX_DESC *) 0x00000000, queue);
++ p_eth_port_ctrl->rx_resource_err[queue] = false;
++ }
++
++ for (queue = 0; queue < MAX_TX_QUEUE_NUM; queue++) {
++ CURR_TFD_SET ((ETH_TX_DESC *) 0x00000000, queue);
++ USED_TFD_SET ((ETH_TX_DESC *) 0x00000000, queue);
++ FIRST_TFD_SET ((ETH_TX_DESC *) 0x00000000, queue);
++ p_eth_port_ctrl->tx_resource_err[queue] = false;
++ }
++
++ eth_port_reset (p_eth_port_ctrl->port_num);
++
++ /* Set access parameters for DRAM bank 0 */
++ win_param.win = ETH_WIN0; /* Use Ethernet window 0 */
++ win_param.target = ETH_TARGET_DRAM; /* Window target - DDR */
++ win_param.attributes = EBAR_ATTR_DRAM_CS0; /* Enable DRAM bank */
++#ifndef CONFIG_NOT_COHERENT_CACHE
++ win_param.attributes |= EBAR_ATTR_DRAM_CACHE_COHERENCY_WB;
++#endif
++ win_param.high_addr = 0;
++ /* Get bank base */
++ win_param.base_addr = mv_get_dram_bank_base_addr (BANK0);
++ win_param.size = mv_get_dram_bank_size (BANK0); /* Get bank size */
++ if (win_param.size == 0)
++ win_param.enable = 0;
++ else
++ win_param.enable = 1; /* Enable the access */
++ win_param.access_ctrl = EWIN_ACCESS_FULL; /* Enable full access */
++
++ /* Set the access control for address window (EPAPR) READ & WRITE */
++ eth_set_access_control (p_eth_port_ctrl->port_num, &win_param);
++
++ /* Set access parameters for DRAM bank 1 */
++ win_param.win = ETH_WIN1; /* Use Ethernet window 1 */
++ win_param.target = ETH_TARGET_DRAM; /* Window target - DDR */
++ win_param.attributes = EBAR_ATTR_DRAM_CS1; /* Enable DRAM bank */
++#ifndef CONFIG_NOT_COHERENT_CACHE
++ win_param.attributes |= EBAR_ATTR_DRAM_CACHE_COHERENCY_WB;
++#endif
++ win_param.high_addr = 0;
++ /* Get bank base */
++ win_param.base_addr = mv_get_dram_bank_base_addr (BANK1);
++ win_param.size = mv_get_dram_bank_size (BANK1); /* Get bank size */
++ if (win_param.size == 0)
++ win_param.enable = 0;
++ else
++ win_param.enable = 1; /* Enable the access */
++ win_param.access_ctrl = EWIN_ACCESS_FULL; /* Enable full access */
++
++ /* Set the access control for address window (EPAPR) READ & WRITE */
++ eth_set_access_control (p_eth_port_ctrl->port_num, &win_param);
++
++ /* Set access parameters for DRAM bank 2 */
++ win_param.win = ETH_WIN2; /* Use Ethernet window 2 */
++ win_param.target = ETH_TARGET_DRAM; /* Window target - DDR */
++ win_param.attributes = EBAR_ATTR_DRAM_CS2; /* Enable DRAM bank */
++#ifndef CONFIG_NOT_COHERENT_CACHE
++ win_param.attributes |= EBAR_ATTR_DRAM_CACHE_COHERENCY_WB;
++#endif
++ win_param.high_addr = 0;
++ /* Get bank base */
++ win_param.base_addr = mv_get_dram_bank_base_addr (BANK2);
++ win_param.size = mv_get_dram_bank_size (BANK2); /* Get bank size */
++ if (win_param.size == 0)
++ win_param.enable = 0;
++ else
++ win_param.enable = 1; /* Enable the access */
++ win_param.access_ctrl = EWIN_ACCESS_FULL; /* Enable full access */
++
++ /* Set the access control for address window (EPAPR) READ & WRITE */
++ eth_set_access_control (p_eth_port_ctrl->port_num, &win_param);
++
++ /* Set access parameters for DRAM bank 3 */
++ win_param.win = ETH_WIN3; /* Use Ethernet window 3 */
++ win_param.target = ETH_TARGET_DRAM; /* Window target - DDR */
++ win_param.attributes = EBAR_ATTR_DRAM_CS3; /* Enable DRAM bank */
++#ifndef CONFIG_NOT_COHERENT_CACHE
++ win_param.attributes |= EBAR_ATTR_DRAM_CACHE_COHERENCY_WB;
++#endif
++ win_param.high_addr = 0;
++ /* Get bank base */
++ win_param.base_addr = mv_get_dram_bank_base_addr (BANK3);
++ win_param.size = mv_get_dram_bank_size (BANK3); /* Get bank size */
++ if (win_param.size == 0)
++ win_param.enable = 0;
++ else
++ win_param.enable = 1; /* Enable the access */
++ win_param.access_ctrl = EWIN_ACCESS_FULL; /* Enable full access */
++
++ /* Set the access control for address window (EPAPR) READ & WRITE */
++ eth_set_access_control (p_eth_port_ctrl->port_num, &win_param);
++
++ /* Set access parameters for Internal SRAM */
++ win_param.win = ETH_WIN4; /* Use Ethernet window 0 */
++ win_param.target = EBAR_TARGET_CBS; /* Target - Internal SRAM */
++ win_param.attributes = EBAR_ATTR_CBS_SRAM | EBAR_ATTR_CBS_SRAM_BLOCK0;
++ win_param.high_addr = 0;
++ win_param.base_addr = mv_get_internal_sram_base (); /* Get base addr */
++ win_param.size = MV64460_INTERNAL_SRAM_SIZE; /* Get bank size */
++ win_param.enable = 1; /* Enable the access */
++ win_param.access_ctrl = EWIN_ACCESS_FULL; /* Enable full access */
++
++ /* Set the access control for address window (EPAPR) READ & WRITE */
++ eth_set_access_control (p_eth_port_ctrl->port_num, &win_param);
++
++ eth_port_init_mac_tables (p_eth_port_ctrl->port_num);
++
++ ethernet_phy_set (p_eth_port_ctrl->port_num,
++ p_eth_port_ctrl->port_phy_addr);
++
++ return;
++
++}
++
++/*******************************************************************************
++* eth_port_start - Start the Ethernet port activity.
++*
++* DESCRIPTION:
++* This routine prepares the Ethernet port for Rx and Tx activity:
++* 1. Initialize Tx and Rx Current Descriptor Pointer for each queue that
++* has been initialized a descriptor's ring (using ether_init_tx_desc_ring
++* for Tx and ether_init_rx_desc_ring for Rx)
++* 2. Initialize and enable the Ethernet configuration port by writing to
++* the port's configuration and command registers.
++* 3. Initialize and enable the SDMA by writing to the SDMA's
++* configuration and command registers.
++* After completing these steps, the ethernet port SDMA can starts to
++* perform Rx and Tx activities.
++*
++* Note: Each Rx and Tx queue descriptor's list must be initialized prior
++* to calling this function (use ether_init_tx_desc_ring for Tx queues and
++* ether_init_rx_desc_ring for Rx queues).
++*
++* INPUT:
++* ETH_PORT_INFO *p_eth_port_ctrl Ethernet port control struct
++*
++* OUTPUT:
++* Ethernet port is ready to receive and transmit.
++*
++* RETURN:
++* false if the port PHY is not up.
++* true otherwise.
++*
++*******************************************************************************/
++static bool eth_port_start (ETH_PORT_INFO * p_eth_port_ctrl)
++{
++ int queue;
++ volatile ETH_TX_DESC *p_tx_curr_desc;
++ volatile ETH_RX_DESC *p_rx_curr_desc;
++ unsigned int phy_reg_data;
++ ETH_PORT eth_port_num = p_eth_port_ctrl->port_num;
++
++ /* Assignment of Tx CTRP of given queue */
++ for (queue = 0; queue < MAX_TX_QUEUE_NUM; queue++) {
++ CURR_TFD_GET (p_tx_curr_desc, queue);
++ MV_REG_WRITE ((MV64460_ETH_TX_CURRENT_QUEUE_DESC_PTR_0
++ (eth_port_num)
++ + (4 * queue)),
++ ((unsigned int) p_tx_curr_desc));
++
++ }
++
++ /* Assignment of Rx CRDP of given queue */
++ for (queue = 0; queue < MAX_RX_QUEUE_NUM; queue++) {
++ CURR_RFD_GET (p_rx_curr_desc, queue);
++ MV_REG_WRITE ((MV64460_ETH_RX_CURRENT_QUEUE_DESC_PTR_0
++ (eth_port_num)
++ + (4 * queue)),
++ ((unsigned int) p_rx_curr_desc));
++
++ if (p_rx_curr_desc != NULL)
++ /* Add the assigned Ethernet address to the port's address table */
++ eth_port_uc_addr_set (p_eth_port_ctrl->port_num,
++ p_eth_port_ctrl->port_mac_addr,
++ queue);
++ }
++
++ /* Assign port configuration and command. */
++ MV_REG_WRITE (MV64460_ETH_PORT_CONFIG_REG (eth_port_num),
++ p_eth_port_ctrl->port_config);
++
++ MV_REG_WRITE (MV64460_ETH_PORT_CONFIG_EXTEND_REG (eth_port_num),
++ p_eth_port_ctrl->port_config_extend);
++
++ MV_REG_WRITE (MV64460_ETH_PORT_SERIAL_CONTROL_REG (eth_port_num),
++ p_eth_port_ctrl->port_serial_control);
++
++ MV_SET_REG_BITS (MV64460_ETH_PORT_SERIAL_CONTROL_REG (eth_port_num),
++ ETH_SERIAL_PORT_ENABLE);
++
++ /* Assign port SDMA configuration */
++ MV_REG_WRITE (MV64460_ETH_SDMA_CONFIG_REG (eth_port_num),
++ p_eth_port_ctrl->port_sdma_config);
++
++ MV_REG_WRITE (MV64460_ETH_TX_QUEUE_0_TOKEN_BUCKET_COUNT
++ (eth_port_num), 0x3fffffff);
++ MV_REG_WRITE (MV64460_ETH_TX_QUEUE_0_TOKEN_BUCKET_CONFIG
++ (eth_port_num), 0x03fffcff);
++ /* Turn off the port/queue bandwidth limitation */
++ MV_REG_WRITE (MV64460_ETH_MAXIMUM_TRANSMIT_UNIT (eth_port_num), 0x0);
++
++ /* Enable port Rx. */
++ MV_REG_WRITE (MV64460_ETH_RECEIVE_QUEUE_COMMAND_REG (eth_port_num),
++ p_eth_port_ctrl->port_rx_queue_command);
++
++ /* Check if link is up */
++ eth_port_read_smi_reg (eth_port_num, 1, &phy_reg_data);
++
++ if (!(phy_reg_data & 0x20))
++ return false;
++
++ return true;
++}
++
++/*******************************************************************************
++* eth_port_uc_addr_set - This function Set the port Unicast address.
++*
++* DESCRIPTION:
++* This function Set the port Ethernet MAC address.
++*
++* INPUT:
++* ETH_PORT eth_port_num Port number.
++* char * p_addr Address to be set
++* ETH_QUEUE queue Rx queue number for this MAC address.
++*
++* OUTPUT:
++* Set MAC address low and high registers. also calls eth_port_uc_addr()
++* To set the unicast table with the proper information.
++*
++* RETURN:
++* N/A.
++*
++*******************************************************************************/
++static void eth_port_uc_addr_set (ETH_PORT eth_port_num,
++ unsigned char *p_addr, ETH_QUEUE queue)
++{
++ unsigned int mac_h;
++ unsigned int mac_l;
++
++ mac_l = (p_addr[4] << 8) | (p_addr[5]);
++ mac_h = (p_addr[0] << 24) | (p_addr[1] << 16) |
++ (p_addr[2] << 8) | (p_addr[3] << 0);
++
++ MV_REG_WRITE (MV64460_ETH_MAC_ADDR_LOW (eth_port_num), mac_l);
++ MV_REG_WRITE (MV64460_ETH_MAC_ADDR_HIGH (eth_port_num), mac_h);
++
++ /* Accept frames of this address */
++ eth_port_uc_addr (eth_port_num, p_addr[5], queue, ACCEPT_MAC_ADDR);
++
++ return;
++}
++
++/*******************************************************************************
++* eth_port_uc_addr - This function Set the port unicast address table
++*
++* DESCRIPTION:
++* This function locates the proper entry in the Unicast table for the
++* specified MAC nibble and sets its properties according to function
++* parameters.
++*
++* INPUT:
++* ETH_PORT eth_port_num Port number.
++* unsigned char uc_nibble Unicast MAC Address last nibble.
++* ETH_QUEUE queue Rx queue number for this MAC address.
++* int option 0 = Add, 1 = remove address.
++*
++* OUTPUT:
++* This function add/removes MAC addresses from the port unicast address
++* table.
++*
++* RETURN:
++* true is output succeeded.
++* false if option parameter is invalid.
++*
++*******************************************************************************/
++static bool eth_port_uc_addr (ETH_PORT eth_port_num,
++ unsigned char uc_nibble,
++ ETH_QUEUE queue, int option)
++{
++ unsigned int unicast_reg;
++ unsigned int tbl_offset;
++ unsigned int reg_offset;
++
++ /* Locate the Unicast table entry */
++ uc_nibble = (0xf & uc_nibble);
++ tbl_offset = (uc_nibble / 4) * 4; /* Register offset from unicast table base */
++ reg_offset = uc_nibble % 4; /* Entry offset within the above register */
++
++ switch (option) {
++ case REJECT_MAC_ADDR:
++ /* Clear accepts frame bit at specified unicast DA table entry */
++ unicast_reg =
++ MV_REG_READ ((MV64460_ETH_DA_FILTER_UNICAST_TABLE_BASE
++ (eth_port_num)
++ + tbl_offset));
++
++ unicast_reg &= (0x0E << (8 * reg_offset));
++
++ MV_REG_WRITE ((MV64460_ETH_DA_FILTER_UNICAST_TABLE_BASE
++ (eth_port_num)
++ + tbl_offset), unicast_reg);
++ break;
++
++ case ACCEPT_MAC_ADDR:
++ /* Set accepts frame bit at unicast DA filter table entry */
++ unicast_reg =
++ MV_REG_READ ((MV64460_ETH_DA_FILTER_UNICAST_TABLE_BASE
++ (eth_port_num)
++ + tbl_offset));
++
++ unicast_reg |= ((0x01 | queue) << (8 * reg_offset));
++
++ MV_REG_WRITE ((MV64460_ETH_DA_FILTER_UNICAST_TABLE_BASE
++ (eth_port_num)
++ + tbl_offset), unicast_reg);
++
++ break;
++
++ default:
++ return false;
++ }
++ return true;
++}
++
++#if 0 /* FIXME */
++/*******************************************************************************
++* eth_port_mc_addr - Multicast address settings.
++*
++* DESCRIPTION:
++* This API controls the MV device MAC multicast support.
++* The MV device supports multicast using two tables:
++* 1) Special Multicast Table for MAC addresses of the form
++* 0x01-00-5E-00-00-XX (where XX is between 0x00 and 0x_fF).
++* The MAC DA[7:0] bits are used as a pointer to the Special Multicast
++* Table entries in the DA-Filter table.
++* In this case, the function calls eth_port_smc_addr() routine to set the
++* Special Multicast Table.
++* 2) Other Multicast Table for multicast of another type. A CRC-8bit
++* is used as an index to the Other Multicast Table entries in the
++* DA-Filter table.
++* In this case, the function calculates the CRC-8bit value and calls
++* eth_port_omc_addr() routine to set the Other Multicast Table.
++* INPUT:
++* ETH_PORT eth_port_num Port number.
++* unsigned char *p_addr Unicast MAC Address.
++* ETH_QUEUE queue Rx queue number for this MAC address.
++* int option 0 = Add, 1 = remove address.
++*
++* OUTPUT:
++* See description.
++*
++* RETURN:
++* true is output succeeded.
++* false if add_address_table_entry( ) failed.
++*
++*******************************************************************************/
++static void eth_port_mc_addr (ETH_PORT eth_port_num,
++ unsigned char *p_addr,
++ ETH_QUEUE queue, int option)
++{
++ unsigned int mac_h;
++ unsigned int mac_l;
++ unsigned char crc_result = 0;
++ int mac_array[48];
++ int crc[8];
++ int i;
++
++ if ((p_addr[0] == 0x01) &&
++ (p_addr[1] == 0x00) &&
++ (p_addr[2] == 0x5E) && (p_addr[3] == 0x00) && (p_addr[4] == 0x00)) {
++
++ eth_port_smc_addr (eth_port_num, p_addr[5], queue, option);
++ } else {
++ /* Calculate CRC-8 out of the given address */
++ mac_h = (p_addr[0] << 8) | (p_addr[1]);
++ mac_l = (p_addr[2] << 24) | (p_addr[3] << 16) |
++ (p_addr[4] << 8) | (p_addr[5] << 0);
++
++ for (i = 0; i < 32; i++)
++ mac_array[i] = (mac_l >> i) & 0x1;
++ for (i = 32; i < 48; i++)
++ mac_array[i] = (mac_h >> (i - 32)) & 0x1;
++
++ crc[0] = mac_array[45] ^ mac_array[43] ^ mac_array[40] ^
++ mac_array[39] ^ mac_array[35] ^ mac_array[34] ^
++ mac_array[31] ^ mac_array[30] ^ mac_array[28] ^
++ mac_array[23] ^ mac_array[21] ^ mac_array[19] ^
++ mac_array[18] ^ mac_array[16] ^ mac_array[14] ^
++ mac_array[12] ^ mac_array[8] ^ mac_array[7] ^
++ mac_array[6] ^ mac_array[0];
++
++ crc[1] = mac_array[46] ^ mac_array[45] ^ mac_array[44] ^
++ mac_array[43] ^ mac_array[41] ^ mac_array[39] ^
++ mac_array[36] ^ mac_array[34] ^ mac_array[32] ^
++ mac_array[30] ^ mac_array[29] ^ mac_array[28] ^
++ mac_array[24] ^ mac_array[23] ^ mac_array[22] ^
++ mac_array[21] ^ mac_array[20] ^ mac_array[18] ^
++ mac_array[17] ^ mac_array[16] ^ mac_array[15] ^
++ mac_array[14] ^ mac_array[13] ^ mac_array[12] ^
++ mac_array[9] ^ mac_array[6] ^ mac_array[1] ^
++ mac_array[0];
++
++ crc[2] = mac_array[47] ^ mac_array[46] ^ mac_array[44] ^
++ mac_array[43] ^ mac_array[42] ^ mac_array[39] ^
++ mac_array[37] ^ mac_array[34] ^ mac_array[33] ^
++ mac_array[29] ^ mac_array[28] ^ mac_array[25] ^
++ mac_array[24] ^ mac_array[22] ^ mac_array[17] ^
++ mac_array[15] ^ mac_array[13] ^ mac_array[12] ^
++ mac_array[10] ^ mac_array[8] ^ mac_array[6] ^
++ mac_array[2] ^ mac_array[1] ^ mac_array[0];
++
++ crc[3] = mac_array[47] ^ mac_array[45] ^ mac_array[44] ^
++ mac_array[43] ^ mac_array[40] ^ mac_array[38] ^
++ mac_array[35] ^ mac_array[34] ^ mac_array[30] ^
++ mac_array[29] ^ mac_array[26] ^ mac_array[25] ^
++ mac_array[23] ^ mac_array[18] ^ mac_array[16] ^
++ mac_array[14] ^ mac_array[13] ^ mac_array[11] ^
++ mac_array[9] ^ mac_array[7] ^ mac_array[3] ^
++ mac_array[2] ^ mac_array[1];
++
++ crc[4] = mac_array[46] ^ mac_array[45] ^ mac_array[44] ^
++ mac_array[41] ^ mac_array[39] ^ mac_array[36] ^
++ mac_array[35] ^ mac_array[31] ^ mac_array[30] ^
++ mac_array[27] ^ mac_array[26] ^ mac_array[24] ^
++ mac_array[19] ^ mac_array[17] ^ mac_array[15] ^
++ mac_array[14] ^ mac_array[12] ^ mac_array[10] ^
++ mac_array[8] ^ mac_array[4] ^ mac_array[3] ^
++ mac_array[2];
++
++ crc[5] = mac_array[47] ^ mac_array[46] ^ mac_array[45] ^
++ mac_array[42] ^ mac_array[40] ^ mac_array[37] ^
++ mac_array[36] ^ mac_array[32] ^ mac_array[31] ^
++ mac_array[28] ^ mac_array[27] ^ mac_array[25] ^
++ mac_array[20] ^ mac_array[18] ^ mac_array[16] ^
++ mac_array[15] ^ mac_array[13] ^ mac_array[11] ^
++ mac_array[9] ^ mac_array[5] ^ mac_array[4] ^
++ mac_array[3];
++
++ crc[6] = mac_array[47] ^ mac_array[46] ^ mac_array[43] ^
++ mac_array[41] ^ mac_array[38] ^ mac_array[37] ^
++ mac_array[33] ^ mac_array[32] ^ mac_array[29] ^
++ mac_array[28] ^ mac_array[26] ^ mac_array[21] ^
++ mac_array[19] ^ mac_array[17] ^ mac_array[16] ^
++ mac_array[14] ^ mac_array[12] ^ mac_array[10] ^
++ mac_array[6] ^ mac_array[5] ^ mac_array[4];
++
++ crc[7] = mac_array[47] ^ mac_array[44] ^ mac_array[42] ^
++ mac_array[39] ^ mac_array[38] ^ mac_array[34] ^
++ mac_array[33] ^ mac_array[30] ^ mac_array[29] ^
++ mac_array[27] ^ mac_array[22] ^ mac_array[20] ^
++ mac_array[18] ^ mac_array[17] ^ mac_array[15] ^
++ mac_array[13] ^ mac_array[11] ^ mac_array[7] ^
++ mac_array[6] ^ mac_array[5];
++
++ for (i = 0; i < 8; i++)
++ crc_result = crc_result | (crc[i] << i);
++
++ eth_port_omc_addr (eth_port_num, crc_result, queue, option);
++ }
++ return;
++}
++
++/*******************************************************************************
++* eth_port_smc_addr - Special Multicast address settings.
++*
++* DESCRIPTION:
++* This routine controls the MV device special MAC multicast support.
++* The Special Multicast Table for MAC addresses supports MAC of the form
++* 0x01-00-5E-00-00-XX (where XX is between 0x00 and 0x_fF).
++* The MAC DA[7:0] bits are used as a pointer to the Special Multicast
++* Table entries in the DA-Filter table.
++* This function set the Special Multicast Table appropriate entry
++* according to the argument given.
++*
++* INPUT:
++* ETH_PORT eth_port_num Port number.
++* unsigned char mc_byte Multicast addr last byte (MAC DA[7:0] bits).
++* ETH_QUEUE queue Rx queue number for this MAC address.
++* int option 0 = Add, 1 = remove address.
++*
++* OUTPUT:
++* See description.
++*
++* RETURN:
++* true is output succeeded.
++* false if option parameter is invalid.
++*
++*******************************************************************************/
++static bool eth_port_smc_addr (ETH_PORT eth_port_num,
++ unsigned char mc_byte,
++ ETH_QUEUE queue, int option)
++{
++ unsigned int smc_table_reg;
++ unsigned int tbl_offset;
++ unsigned int reg_offset;
++
++ /* Locate the SMC table entry */
++ tbl_offset = (mc_byte / 4) * 4; /* Register offset from SMC table base */
++ reg_offset = mc_byte % 4; /* Entry offset within the above register */
++ queue &= 0x7;
++
++ switch (option) {
++ case REJECT_MAC_ADDR:
++ /* Clear accepts frame bit at specified Special DA table entry */
++ smc_table_reg =
++ MV_REG_READ ((MV64460_ETH_DA_FILTER_SPECIAL_MULTICAST_TABLE_BASE (eth_port_num) + tbl_offset));
++ smc_table_reg &= (0x0E << (8 * reg_offset));
++
++ MV_REG_WRITE ((MV64460_ETH_DA_FILTER_SPECIAL_MULTICAST_TABLE_BASE (eth_port_num) + tbl_offset), smc_table_reg);
++ break;
++
++ case ACCEPT_MAC_ADDR:
++ /* Set accepts frame bit at specified Special DA table entry */
++ smc_table_reg =
++ MV_REG_READ ((MV64460_ETH_DA_FILTER_SPECIAL_MULTICAST_TABLE_BASE (eth_port_num) + tbl_offset));
++ smc_table_reg |= ((0x01 | queue) << (8 * reg_offset));
++
++ MV_REG_WRITE ((MV64460_ETH_DA_FILTER_SPECIAL_MULTICAST_TABLE_BASE (eth_port_num) + tbl_offset), smc_table_reg);
++ break;
++
++ default:
++ return false;
++ }
++ return true;
++}
++
++/*******************************************************************************
++* eth_port_omc_addr - Multicast address settings.
++*
++* DESCRIPTION:
++* This routine controls the MV device Other MAC multicast support.
++* The Other Multicast Table is used for multicast of another type.
++* A CRC-8bit is used as an index to the Other Multicast Table entries
++* in the DA-Filter table.
++* The function gets the CRC-8bit value from the calling routine and
++* set the Other Multicast Table appropriate entry according to the
++* CRC-8 argument given.
++*
++* INPUT:
++* ETH_PORT eth_port_num Port number.
++* unsigned char crc8 A CRC-8bit (Polynomial: x^8+x^2+x^1+1).
++* ETH_QUEUE queue Rx queue number for this MAC address.
++* int option 0 = Add, 1 = remove address.
++*
++* OUTPUT:
++* See description.
++*
++* RETURN:
++* true is output succeeded.
++* false if option parameter is invalid.
++*
++*******************************************************************************/
++static bool eth_port_omc_addr (ETH_PORT eth_port_num,
++ unsigned char crc8,
++ ETH_QUEUE queue, int option)
++{
++ unsigned int omc_table_reg;
++ unsigned int tbl_offset;
++ unsigned int reg_offset;
++
++ /* Locate the OMC table entry */
++ tbl_offset = (crc8 / 4) * 4; /* Register offset from OMC table base */
++ reg_offset = crc8 % 4; /* Entry offset within the above register */
++ queue &= 0x7;
++
++ switch (option) {
++ case REJECT_MAC_ADDR:
++ /* Clear accepts frame bit at specified Other DA table entry */
++ omc_table_reg =
++ MV_REG_READ ((MV64460_ETH_DA_FILTER_OTHER_MULTICAST_TABLE_BASE (eth_port_num) + tbl_offset));
++ omc_table_reg &= (0x0E << (8 * reg_offset));
++
++ MV_REG_WRITE ((MV64460_ETH_DA_FILTER_OTHER_MULTICAST_TABLE_BASE (eth_port_num) + tbl_offset), omc_table_reg);
++ break;
++
++ case ACCEPT_MAC_ADDR:
++ /* Set accepts frame bit at specified Other DA table entry */
++ omc_table_reg =
++ MV_REG_READ ((MV64460_ETH_DA_FILTER_OTHER_MULTICAST_TABLE_BASE (eth_port_num) + tbl_offset));
++ omc_table_reg |= ((0x01 | queue) << (8 * reg_offset));
++
++ MV_REG_WRITE ((MV64460_ETH_DA_FILTER_OTHER_MULTICAST_TABLE_BASE (eth_port_num) + tbl_offset), omc_table_reg);
++ break;
++
++ default:
++ return false;
++ }
++ return true;
++}
++#endif
++
++/*******************************************************************************
++* eth_port_init_mac_tables - Clear all entrance in the UC, SMC and OMC tables
++*
++* DESCRIPTION:
++* Go through all the DA filter tables (Unicast, Special Multicast & Other
++* Multicast) and set each entry to 0.
++*
++* INPUT:
++* ETH_PORT eth_port_num Ethernet Port number. See ETH_PORT enum.
++*
++* OUTPUT:
++* Multicast and Unicast packets are rejected.
++*
++* RETURN:
++* None.
++*
++*******************************************************************************/
++static void eth_port_init_mac_tables (ETH_PORT eth_port_num)
++{
++ int table_index;
++
++ /* Clear DA filter unicast table (Ex_dFUT) */
++ for (table_index = 0; table_index <= 0xC; table_index += 4)
++ MV_REG_WRITE ((MV64460_ETH_DA_FILTER_UNICAST_TABLE_BASE
++ (eth_port_num) + table_index), 0);
++
++ for (table_index = 0; table_index <= 0xFC; table_index += 4) {
++ /* Clear DA filter special multicast table (Ex_dFSMT) */
++ MV_REG_WRITE ((MV64460_ETH_DA_FILTER_SPECIAL_MULTICAST_TABLE_BASE (eth_port_num) + table_index), 0);
++ /* Clear DA filter other multicast table (Ex_dFOMT) */
++ MV_REG_WRITE ((MV64460_ETH_DA_FILTER_OTHER_MULTICAST_TABLE_BASE (eth_port_num) + table_index), 0);
++ }
++}
++
++/*******************************************************************************
++* eth_clear_mib_counters - Clear all MIB counters
++*
++* DESCRIPTION:
++* This function clears all MIB counters of a specific ethernet port.
++* A read from the MIB counter will reset the counter.
++*
++* INPUT:
++* ETH_PORT eth_port_num Ethernet Port number. See ETH_PORT enum.
++*
++* OUTPUT:
++* After reading all MIB counters, the counters resets.
++*
++* RETURN:
++* MIB counter value.
++*
++*******************************************************************************/
++static void eth_clear_mib_counters (ETH_PORT eth_port_num)
++{
++ int i;
++ unsigned int dummy;
++
++ /* Perform dummy reads from MIB counters */
++ for (i = ETH_MIB_GOOD_OCTETS_RECEIVED_LOW; i < ETH_MIB_LATE_COLLISION;
++ i += 4)
++ dummy = MV_REG_READ ((MV64460_ETH_MIB_COUNTERS_BASE
++ (eth_port_num) + i));
++
++ return;
++}
++
++/*******************************************************************************
++* eth_read_mib_counter - Read a MIB counter
++*
++* DESCRIPTION:
++* This function reads a MIB counter of a specific ethernet port.
++* NOTE - If read from ETH_MIB_GOOD_OCTETS_RECEIVED_LOW, then the
++* following read must be from ETH_MIB_GOOD_OCTETS_RECEIVED_HIGH
++* register. The same applies for ETH_MIB_GOOD_OCTETS_SENT_LOW and
++* ETH_MIB_GOOD_OCTETS_SENT_HIGH
++*
++* INPUT:
++* ETH_PORT eth_port_num Ethernet Port number. See ETH_PORT enum.
++* unsigned int mib_offset MIB counter offset (use ETH_MIB_... macros).
++*
++* OUTPUT:
++* After reading the MIB counter, the counter resets.
++*
++* RETURN:
++* MIB counter value.
++*
++*******************************************************************************/
++unsigned int eth_read_mib_counter (ETH_PORT eth_port_num,
++ unsigned int mib_offset)
++{
++ return (MV_REG_READ (MV64460_ETH_MIB_COUNTERS_BASE (eth_port_num)
++ + mib_offset));
++}
++
++/*******************************************************************************
++* ethernet_phy_set - Set the ethernet port PHY address.
++*
++* DESCRIPTION:
++* This routine set the ethernet port PHY address according to given
++* parameter.
++*
++* INPUT:
++* ETH_PORT eth_port_num Ethernet Port number. See ETH_PORT enum.
++*
++* OUTPUT:
++* Set PHY Address Register with given PHY address parameter.
++*
++* RETURN:
++* None.
++*
++*******************************************************************************/
++static void ethernet_phy_set (ETH_PORT eth_port_num, int phy_addr)
++{
++ unsigned int reg_data;
++
++ reg_data = MV_REG_READ (MV64460_ETH_PHY_ADDR_REG);
++
++ reg_data &= ~(0x1F << (5 * eth_port_num));
++ reg_data |= (phy_addr << (5 * eth_port_num));
++
++ MV_REG_WRITE (MV64460_ETH_PHY_ADDR_REG, reg_data);
++
++ return;
++}
++
++/*******************************************************************************
++ * ethernet_phy_get - Get the ethernet port PHY address.
++ *
++ * DESCRIPTION:
++ * This routine returns the given ethernet port PHY address.
++ *
++ * INPUT:
++ * ETH_PORT eth_port_num Ethernet Port number. See ETH_PORT enum.
++ *
++ * OUTPUT:
++ * None.
++ *
++ * RETURN:
++ * PHY address.
++ *
++ *******************************************************************************/
++static int ethernet_phy_get (ETH_PORT eth_port_num)
++{
++ unsigned int reg_data;
++
++ reg_data = MV_REG_READ (MV64460_ETH_PHY_ADDR_REG);
++
++ return ((reg_data >> (5 * eth_port_num)) & 0x1f);
++}
++
++/***********************************************************/
++/* (Re)start autonegotiation */
++/***********************************************************/
++int phy_setup_aneg (char *devname, unsigned char addr)
++{
++ unsigned short ctl, adv;
++
++ /* Setup standard advertise */
++ miiphy_read (devname, addr, PHY_ANAR, &adv);
++ adv |= (PHY_ANLPAR_ACK | PHY_ANLPAR_RF | PHY_ANLPAR_T4 |
++ PHY_ANLPAR_TXFD | PHY_ANLPAR_TX | PHY_ANLPAR_10FD |
++ PHY_ANLPAR_10);
++ miiphy_write (devname, addr, PHY_ANAR, adv);
++
++ miiphy_read (devname, addr, PHY_1000BTCR, &adv);
++ adv |= (0x0300);
++ miiphy_write (devname, addr, PHY_1000BTCR, adv);
++
++ /* Start/Restart aneg */
++ miiphy_read (devname, addr, PHY_BMCR, &ctl);
++ ctl |= (PHY_BMCR_AUTON | PHY_BMCR_RST_NEG);
++ miiphy_write (devname, addr, PHY_BMCR, ctl);
++
++ return 0;
++}
++
++/*******************************************************************************
++ * ethernet_phy_reset - Reset Ethernet port PHY.
++ *
++ * DESCRIPTION:
++ * This routine utilize the SMI interface to reset the ethernet port PHY.
++ * The routine waits until the link is up again or link up is timeout.
++ *
++ * INPUT:
++ * ETH_PORT eth_port_num Ethernet Port number. See ETH_PORT enum.
++ *
++ * OUTPUT:
++ * The ethernet port PHY renew its link.
++ *
++ * RETURN:
++ * None.
++ *
++ *******************************************************************************/
++static bool ethernet_phy_reset (ETH_PORT eth_port_num)
++{
++ unsigned int time_out = 50;
++ unsigned int phy_reg_data;
++
++ eth_port_read_smi_reg (eth_port_num, 20, &phy_reg_data);
++ phy_reg_data |= 0x0083; /* Set bit 7 to 1 for different RGMII timing */
++ eth_port_write_smi_reg (eth_port_num, 20, phy_reg_data);
++
++ /* Reset the PHY */
++ eth_port_read_smi_reg (eth_port_num, 0, &phy_reg_data);
++ phy_reg_data |= 0x8000; /* Set bit 15 to reset the PHY */
++ eth_port_write_smi_reg (eth_port_num, 0, phy_reg_data);
++
++ /* Poll on the PHY LINK */
++ do {
++ eth_port_read_smi_reg (eth_port_num, 1, &phy_reg_data);
++
++ if (time_out-- == 0)
++ return false;
++ }
++ while (!(phy_reg_data & 0x20));
++
++ return true;
++}
++
++/*******************************************************************************
++ * eth_port_reset - Reset Ethernet port
++ *
++ * DESCRIPTION:
++ * This routine resets the chip by aborting any SDMA engine activity and
++ * clearing the MIB counters. The Receiver and the Transmit unit are in
++ * idle state after this command is performed and the port is disabled.
++ *
++ * INPUT:
++ * ETH_PORT eth_port_num Ethernet Port number. See ETH_PORT enum.
++ *
++ * OUTPUT:
++ * Channel activity is halted.
++ *
++ * RETURN:
++ * None.
++ *
++ *******************************************************************************/
++static void eth_port_reset (ETH_PORT eth_port_num)
++{
++ unsigned int reg_data;
++
++ /* Stop Tx port activity. Check port Tx activity. */
++ reg_data =
++ MV_REG_READ (MV64460_ETH_TRANSMIT_QUEUE_COMMAND_REG
++ (eth_port_num));
++
++ if (reg_data & 0xFF) {
++ /* Issue stop command for active channels only */
++ MV_REG_WRITE (MV64460_ETH_TRANSMIT_QUEUE_COMMAND_REG
++ (eth_port_num), (reg_data << 8));
++
++ /* Wait for all Tx activity to terminate. */
++ do {
++ /* Check port cause register that all Tx queues are stopped */
++ reg_data =
++ MV_REG_READ
++ (MV64460_ETH_TRANSMIT_QUEUE_COMMAND_REG
++ (eth_port_num));
++ }
++ while (reg_data & 0xFF);
++ }
++
++ /* Stop Rx port activity. Check port Rx activity. */
++ reg_data =
++ MV_REG_READ (MV64460_ETH_RECEIVE_QUEUE_COMMAND_REG
++ (eth_port_num));
++
++ if (reg_data & 0xFF) {
++ /* Issue stop command for active channels only */
++ MV_REG_WRITE (MV64460_ETH_RECEIVE_QUEUE_COMMAND_REG
++ (eth_port_num), (reg_data << 8));
++
++ /* Wait for all Rx activity to terminate. */
++ do {
++ /* Check port cause register that all Rx queues are stopped */
++ reg_data =
++ MV_REG_READ
++ (MV64460_ETH_RECEIVE_QUEUE_COMMAND_REG
++ (eth_port_num));
++ }
++ while (reg_data & 0xFF);
++ }
++
++ /* Clear all MIB counters */
++ eth_clear_mib_counters (eth_port_num);
++
++ /* Reset the Enable bit in the Configuration Register */
++ reg_data =
++ MV_REG_READ (MV64460_ETH_PORT_SERIAL_CONTROL_REG
++ (eth_port_num));
++ reg_data &= ~ETH_SERIAL_PORT_ENABLE;
++ MV_REG_WRITE (MV64460_ETH_PORT_SERIAL_CONTROL_REG (eth_port_num),
++ reg_data);
++
++ return;
++}
++
++#if 0 /* Not needed here */
++/*******************************************************************************
++ * ethernet_set_config_reg - Set specified bits in configuration register.
++ *
++ * DESCRIPTION:
++ * This function sets specified bits in the given ethernet
++ * configuration register.
++ *
++ * INPUT:
++ * ETH_PORT eth_port_num Ethernet Port number. See ETH_PORT enum.
++ * unsigned int value 32 bit value.
++ *
++ * OUTPUT:
++ * The set bits in the value parameter are set in the configuration
++ * register.
++ *
++ * RETURN:
++ * None.
++ *
++ *******************************************************************************/
++static void ethernet_set_config_reg (ETH_PORT eth_port_num,
++ unsigned int value)
++{
++ unsigned int eth_config_reg;
++
++ eth_config_reg =
++ MV_REG_READ (MV64460_ETH_PORT_CONFIG_REG (eth_port_num));
++ eth_config_reg |= value;
++ MV_REG_WRITE (MV64460_ETH_PORT_CONFIG_REG (eth_port_num),
++ eth_config_reg);
++
++ return;
++}
++#endif
++
++#if 0 /* FIXME */
++/*******************************************************************************
++ * ethernet_reset_config_reg - Reset specified bits in configuration register.
++ *
++ * DESCRIPTION:
++ * This function resets specified bits in the given Ethernet
++ * configuration register.
++ *
++ * INPUT:
++ * ETH_PORT eth_port_num Ethernet Port number. See ETH_PORT enum.
++ * unsigned int value 32 bit value.
++ *
++ * OUTPUT:
++ * The set bits in the value parameter are reset in the configuration
++ * register.
++ *
++ * RETURN:
++ * None.
++ *
++ *******************************************************************************/
++static void ethernet_reset_config_reg (ETH_PORT eth_port_num,
++ unsigned int value)
++{
++ unsigned int eth_config_reg;
++
++ eth_config_reg = MV_REG_READ (MV64460_ETH_PORT_CONFIG_EXTEND_REG
++ (eth_port_num));
++ eth_config_reg &= ~value;
++ MV_REG_WRITE (MV64460_ETH_PORT_CONFIG_EXTEND_REG (eth_port_num),
++ eth_config_reg);
++
++ return;
++}
++#endif
++
++#if 0 /* Not needed here */
++/*******************************************************************************
++ * ethernet_get_config_reg - Get the port configuration register
++ *
++ * DESCRIPTION:
++ * This function returns the configuration register value of the given
++ * ethernet port.
++ *
++ * INPUT:
++ * ETH_PORT eth_port_num Ethernet Port number. See ETH_PORT enum.
++ *
++ * OUTPUT:
++ * None.
++ *
++ * RETURN:
++ * Port configuration register value.
++ *
++ *******************************************************************************/
++static unsigned int ethernet_get_config_reg (ETH_PORT eth_port_num)
++{
++ unsigned int eth_config_reg;
++
++ eth_config_reg = MV_REG_READ (MV64460_ETH_PORT_CONFIG_EXTEND_REG
++ (eth_port_num));
++ return eth_config_reg;
++}
++
++#endif
++
++/*******************************************************************************
++ * eth_port_read_smi_reg - Read PHY registers
++ *
++ * DESCRIPTION:
++ * This routine utilize the SMI interface to interact with the PHY in
++ * order to perform PHY register read.
++ *
++ * INPUT:
++ * ETH_PORT eth_port_num Ethernet Port number. See ETH_PORT enum.
++ * unsigned int phy_reg PHY register address offset.
++ * unsigned int *value Register value buffer.
++ *
++ * OUTPUT:
++ * Write the value of a specified PHY register into given buffer.
++ *
++ * RETURN:
++ * false if the PHY is busy or read data is not in valid state.
++ * true otherwise.
++ *
++ *******************************************************************************/
++static bool eth_port_read_smi_reg (ETH_PORT eth_port_num,
++ unsigned int phy_reg, unsigned int *value)
++{
++ unsigned int reg_value;
++ unsigned int time_out = PHY_BUSY_TIMEOUT;
++ int phy_addr;
++
++ phy_addr = ethernet_phy_get (eth_port_num);
++
++ /* first check that it is not busy */
++ do {
++ reg_value = MV_REG_READ (MV64460_ETH_SMI_REG);
++ if (time_out-- == 0) {
++ return false;
++ }
++ }
++ while (reg_value & ETH_SMI_BUSY);
++
++ /* not busy */
++
++ MV_REG_WRITE (MV64460_ETH_SMI_REG,
++ (phy_addr << 16) | (phy_reg << 21) |
++ ETH_SMI_OPCODE_READ);
++
++ time_out = PHY_BUSY_TIMEOUT; /* initialize the time out var again */
++
++ do {
++ reg_value = MV_REG_READ (MV64460_ETH_SMI_REG);
++ if (time_out-- == 0) {
++ return false;
++ }
++ }
++ while ((reg_value & ETH_SMI_READ_VALID) != ETH_SMI_READ_VALID); /* Bit set equ operation done */
++
++ /* Wait for the data to update in the SMI register */
++#define PHY_UPDATE_TIMEOUT 10000
++ for (time_out = 0; time_out < PHY_UPDATE_TIMEOUT; time_out++);
++
++ reg_value = MV_REG_READ (MV64460_ETH_SMI_REG);
++
++ *value = reg_value & 0xffff;
++
++ return true;
++}
++
++int mv_miiphy_read(char *devname, unsigned char phy_addr,
++ unsigned char phy_reg, unsigned short *value)
++{
++ unsigned int reg_value;
++ unsigned int time_out = PHY_BUSY_TIMEOUT;
++
++ /* first check that it is not busy */
++ do {
++ reg_value = MV_REG_READ (MV64460_ETH_SMI_REG);
++ if (time_out-- == 0) {
++ return false;
++ }
++ }
++ while (reg_value & ETH_SMI_BUSY);
++
++ /* not busy */
++ MV_REG_WRITE (MV64460_ETH_SMI_REG,
++ (phy_addr << 16) | (phy_reg << 21) |
++ ETH_SMI_OPCODE_READ);
++
++ time_out = PHY_BUSY_TIMEOUT; /* initialize the time out var again */
++
++ do {
++ reg_value = MV_REG_READ (MV64460_ETH_SMI_REG);
++ if (time_out-- == 0) {
++ return false;
++ }
++ }
++ while ((reg_value & ETH_SMI_READ_VALID) != ETH_SMI_READ_VALID); /* Bit set equ operation done */
++
++ /* Wait for the data to update in the SMI register */
++ for (time_out = 0; time_out < PHY_UPDATE_TIMEOUT; time_out++);
++
++ reg_value = MV_REG_READ (MV64460_ETH_SMI_REG);
++
++ *value = reg_value & 0xffff;
++
++ return 0;
++}
++
++/*******************************************************************************
++ * eth_port_write_smi_reg - Write to PHY registers
++ *
++ * DESCRIPTION:
++ * This routine utilize the SMI interface to interact with the PHY in
++ * order to perform writes to PHY registers.
++ *
++ * INPUT:
++ * ETH_PORT eth_port_num Ethernet Port number. See ETH_PORT enum.
++ * unsigned int phy_reg PHY register address offset.
++ * unsigned int value Register value.
++ *
++ * OUTPUT:
++ * Write the given value to the specified PHY register.
++ *
++ * RETURN:
++ * false if the PHY is busy.
++ * true otherwise.
++ *
++ *******************************************************************************/
++static bool eth_port_write_smi_reg (ETH_PORT eth_port_num,
++ unsigned int phy_reg, unsigned int value)
++{
++ unsigned int reg_value;
++ unsigned int time_out = PHY_BUSY_TIMEOUT;
++ int phy_addr;
++
++ phy_addr = ethernet_phy_get (eth_port_num);
++
++ /* first check that it is not busy */
++ do {
++ reg_value = MV_REG_READ (MV64460_ETH_SMI_REG);
++ if (time_out-- == 0) {
++ return false;
++ }
++ }
++ while (reg_value & ETH_SMI_BUSY);
++
++ /* not busy */
++ MV_REG_WRITE (MV64460_ETH_SMI_REG,
++ (phy_addr << 16) | (phy_reg << 21) |
++ ETH_SMI_OPCODE_WRITE | (value & 0xffff));
++ return true;
++}
++
++int mv_miiphy_write(char *devname, unsigned char phy_addr,
++ unsigned char phy_reg, unsigned short value)
++{
++ unsigned int reg_value;
++ unsigned int time_out = PHY_BUSY_TIMEOUT;
++
++ /* first check that it is not busy */
++ do {
++ reg_value = MV_REG_READ (MV64460_ETH_SMI_REG);
++ if (time_out-- == 0) {
++ return false;
++ }
++ }
++ while (reg_value & ETH_SMI_BUSY);
++
++ /* not busy */
++ MV_REG_WRITE (MV64460_ETH_SMI_REG,
++ (phy_addr << 16) | (phy_reg << 21) |
++ ETH_SMI_OPCODE_WRITE | (value & 0xffff));
++ return 0;
++}
++
++/*******************************************************************************
++ * eth_set_access_control - Config address decode parameters for Ethernet unit
++ *
++ * DESCRIPTION:
++ * This function configures the address decode parameters for the Gigabit
++ * Ethernet Controller according the given parameters struct.
++ *
++ * INPUT:
++ * ETH_PORT eth_port_num Ethernet Port number. See ETH_PORT enum.
++ * ETH_WIN_PARAM *param Address decode parameter struct.
++ *
++ * OUTPUT:
++ * An access window is opened using the given access parameters.
++ *
++ * RETURN:
++ * None.
++ *
++ *******************************************************************************/
++static void eth_set_access_control (ETH_PORT eth_port_num,
++ ETH_WIN_PARAM * param)
++{
++ unsigned int access_prot_reg;
++
++ /* Set access control register */
++ access_prot_reg = MV_REG_READ (MV64460_ETH_ACCESS_PROTECTION_REG
++ (eth_port_num));
++ access_prot_reg &= (~(3 << (param->win * 2))); /* clear window permission */
++ access_prot_reg |= (param->access_ctrl << (param->win * 2));
++ MV_REG_WRITE (MV64460_ETH_ACCESS_PROTECTION_REG (eth_port_num),
++ access_prot_reg);
++
++ /* Set window Size reg (SR) */
++ MV_REG_WRITE ((MV64460_ETH_SIZE_REG_0 +
++ (ETH_SIZE_REG_GAP * param->win)),
++ (((param->size / 0x10000) - 1) << 16));
++
++ /* Set window Base address reg (BA) */
++ MV_REG_WRITE ((MV64460_ETH_BAR_0 + (ETH_BAR_GAP * param->win)),
++ (param->target | param->attributes | param->base_addr));
++ /* High address remap reg (HARR) */
++ if (param->win < 4)
++ MV_REG_WRITE ((MV64460_ETH_HIGH_ADDR_REMAP_REG_0 +
++ (ETH_HIGH_ADDR_REMAP_REG_GAP * param->win)),
++ param->high_addr);
++
++ /* Base address enable reg (BARER) */
++ if (param->enable == 1)
++ MV_RESET_REG_BITS (MV64460_ETH_BASE_ADDR_ENABLE_REG,
++ (1 << param->win));
++ else
++ MV_SET_REG_BITS (MV64460_ETH_BASE_ADDR_ENABLE_REG,
++ (1 << param->win));
++}
++
++/*******************************************************************************
++ * ether_init_rx_desc_ring - Curve a Rx chain desc list and buffer in memory.
++ *
++ * DESCRIPTION:
++ * This function prepares a Rx chained list of descriptors and packet
++ * buffers in a form of a ring. The routine must be called after port
++ * initialization routine and before port start routine.
++ * The Ethernet SDMA engine uses CPU bus addresses to access the various
++ * devices in the system (i.e. DRAM). This function uses the ethernet
++ * struct 'virtual to physical' routine (set by the user) to set the ring
++ * with physical addresses.
++ *
++ * INPUT:
++ * ETH_PORT_INFO *p_eth_port_ctrl Ethernet Port Control srtuct.
++ * ETH_QUEUE rx_queue Number of Rx queue.
++ * int rx_desc_num Number of Rx descriptors
++ * int rx_buff_size Size of Rx buffer
++ * unsigned int rx_desc_base_addr Rx descriptors memory area base addr.
++ * unsigned int rx_buff_base_addr Rx buffer memory area base addr.
++ *
++ * OUTPUT:
++ * The routine updates the Ethernet port control struct with information
++ * regarding the Rx descriptors and buffers.
++ *
++ * RETURN:
++ * false if the given descriptors memory area is not aligned according to
++ * Ethernet SDMA specifications.
++ * true otherwise.
++ *
++ *******************************************************************************/
++static bool ether_init_rx_desc_ring (ETH_PORT_INFO * p_eth_port_ctrl,
++ ETH_QUEUE rx_queue,
++ int rx_desc_num,
++ int rx_buff_size,
++ unsigned int rx_desc_base_addr,
++ unsigned int rx_buff_base_addr)
++{
++ ETH_RX_DESC *p_rx_desc;
++ ETH_RX_DESC *p_rx_prev_desc; /* pointer to link with the last descriptor */
++ unsigned int buffer_addr;
++ int ix; /* a counter */
++
++ p_rx_desc = (ETH_RX_DESC *) rx_desc_base_addr;
++ p_rx_prev_desc = p_rx_desc;
++ buffer_addr = rx_buff_base_addr;
++
++ /* Rx desc Must be 4LW aligned (i.e. Descriptor_Address[3:0]=0000). */
++ if (rx_buff_base_addr & 0xF)
++ return false;
++
++ /* Rx buffers are limited to 64K bytes and Minimum size is 8 bytes */
++ if ((rx_buff_size < 8) || (rx_buff_size > RX_BUFFER_MAX_SIZE))
++ return false;
++
++ /* Rx buffers must be 64-bit aligned. */
++ if ((rx_buff_base_addr + rx_buff_size) & 0x7)
++ return false;
++
++ /* initialize the Rx descriptors ring */
++ for (ix = 0; ix < rx_desc_num; ix++) {
++ p_rx_desc->buf_size = rx_buff_size;
++ p_rx_desc->byte_cnt = 0x0000;
++ p_rx_desc->cmd_sts =
++ ETH_BUFFER_OWNED_BY_DMA | ETH_RX_ENABLE_INTERRUPT;
++ p_rx_desc->next_desc_ptr =
++ ((unsigned int) p_rx_desc) + RX_DESC_ALIGNED_SIZE;
++ p_rx_desc->buf_ptr = buffer_addr;
++ p_rx_desc->return_info = 0x00000000;
++ D_CACHE_FLUSH_LINE (p_rx_desc, 0);
++ buffer_addr += rx_buff_size;
++ p_rx_prev_desc = p_rx_desc;
++ p_rx_desc = (ETH_RX_DESC *)
++ ((unsigned int) p_rx_desc + RX_DESC_ALIGNED_SIZE);
++ }
++
++ /* Closing Rx descriptors ring */
++ p_rx_prev_desc->next_desc_ptr = (rx_desc_base_addr);
++ D_CACHE_FLUSH_LINE (p_rx_prev_desc, 0);
++
++ /* Save Rx desc pointer to driver struct. */
++ CURR_RFD_SET ((ETH_RX_DESC *) rx_desc_base_addr, rx_queue);
++ USED_RFD_SET ((ETH_RX_DESC *) rx_desc_base_addr, rx_queue);
++
++ p_eth_port_ctrl->p_rx_desc_area_base[rx_queue] =
++ (ETH_RX_DESC *) rx_desc_base_addr;
++ p_eth_port_ctrl->rx_desc_area_size[rx_queue] =
++ rx_desc_num * RX_DESC_ALIGNED_SIZE;
++
++ p_eth_port_ctrl->port_rx_queue_command |= (1 << rx_queue);
++
++ return true;
++}
++
++/*******************************************************************************
++ * ether_init_tx_desc_ring - Curve a Tx chain desc list and buffer in memory.
++ *
++ * DESCRIPTION:
++ * This function prepares a Tx chained list of descriptors and packet
++ * buffers in a form of a ring. The routine must be called after port
++ * initialization routine and before port start routine.
++ * The Ethernet SDMA engine uses CPU bus addresses to access the various
++ * devices in the system (i.e. DRAM). This function uses the ethernet
++ * struct 'virtual to physical' routine (set by the user) to set the ring
++ * with physical addresses.
++ *
++ * INPUT:
++ * ETH_PORT_INFO *p_eth_port_ctrl Ethernet Port Control srtuct.
++ * ETH_QUEUE tx_queue Number of Tx queue.
++ * int tx_desc_num Number of Tx descriptors
++ * int tx_buff_size Size of Tx buffer
++ * unsigned int tx_desc_base_addr Tx descriptors memory area base addr.
++ * unsigned int tx_buff_base_addr Tx buffer memory area base addr.
++ *
++ * OUTPUT:
++ * The routine updates the Ethernet port control struct with information
++ * regarding the Tx descriptors and buffers.
++ *
++ * RETURN:
++ * false if the given descriptors memory area is not aligned according to
++ * Ethernet SDMA specifications.
++ * true otherwise.
++ *
++ *******************************************************************************/
++static bool ether_init_tx_desc_ring (ETH_PORT_INFO * p_eth_port_ctrl,
++ ETH_QUEUE tx_queue,
++ int tx_desc_num,
++ int tx_buff_size,
++ unsigned int tx_desc_base_addr,
++ unsigned int tx_buff_base_addr)
++{
++
++ ETH_TX_DESC *p_tx_desc;
++ ETH_TX_DESC *p_tx_prev_desc;
++ unsigned int buffer_addr;
++ int ix; /* a counter */
++
++ /* save the first desc pointer to link with the last descriptor */
++ p_tx_desc = (ETH_TX_DESC *) tx_desc_base_addr;
++ p_tx_prev_desc = p_tx_desc;
++ buffer_addr = tx_buff_base_addr;
++
++ /* Tx desc Must be 4LW aligned (i.e. Descriptor_Address[3:0]=0000). */
++ if (tx_buff_base_addr & 0xF)
++ return false;
++
++ /* Tx buffers are limited to 64K bytes and Minimum size is 8 bytes */
++ if ((tx_buff_size > TX_BUFFER_MAX_SIZE)
++ || (tx_buff_size < TX_BUFFER_MIN_SIZE))
++ return false;
++
++ /* Initialize the Tx descriptors ring */
++ for (ix = 0; ix < tx_desc_num; ix++) {
++ p_tx_desc->byte_cnt = 0x0000;
++ p_tx_desc->l4i_chk = 0x0000;
++ p_tx_desc->cmd_sts = 0x00000000;
++ p_tx_desc->next_desc_ptr =
++ ((unsigned int) p_tx_desc) + TX_DESC_ALIGNED_SIZE;
++
++ p_tx_desc->buf_ptr = buffer_addr;
++ p_tx_desc->return_info = 0x00000000;
++ D_CACHE_FLUSH_LINE (p_tx_desc, 0);
++ buffer_addr += tx_buff_size;
++ p_tx_prev_desc = p_tx_desc;
++ p_tx_desc = (ETH_TX_DESC *)
++ ((unsigned int) p_tx_desc + TX_DESC_ALIGNED_SIZE);
++
++ }
++ /* Closing Tx descriptors ring */
++ p_tx_prev_desc->next_desc_ptr = tx_desc_base_addr;
++ D_CACHE_FLUSH_LINE (p_tx_prev_desc, 0);
++ /* Set Tx desc pointer in driver struct. */
++ CURR_TFD_SET ((ETH_TX_DESC *) tx_desc_base_addr, tx_queue);
++ USED_TFD_SET ((ETH_TX_DESC *) tx_desc_base_addr, tx_queue);
++
++ /* Init Tx ring base and size parameters */
++ p_eth_port_ctrl->p_tx_desc_area_base[tx_queue] =
++ (ETH_TX_DESC *) tx_desc_base_addr;
++ p_eth_port_ctrl->tx_desc_area_size[tx_queue] =
++ (tx_desc_num * TX_DESC_ALIGNED_SIZE);
++
++ /* Add the queue to the list of Tx queues of this port */
++ p_eth_port_ctrl->port_tx_queue_command |= (1 << tx_queue);
++
++ return true;
++}
++
++/*******************************************************************************
++ * eth_port_send - Send an Ethernet packet
++ *
++ * DESCRIPTION:
++ * This routine send a given packet described by p_pktinfo parameter. It
++ * supports transmitting of a packet spaned over multiple buffers. The
++ * routine updates 'curr' and 'first' indexes according to the packet
++ * segment passed to the routine. In case the packet segment is first,
++ * the 'first' index is update. In any case, the 'curr' index is updated.
++ * If the routine get into Tx resource error it assigns 'curr' index as
++ * 'first'. This way the function can abort Tx process of multiple
++ * descriptors per packet.
++ *
++ * INPUT:
++ * ETH_PORT_INFO *p_eth_port_ctrl Ethernet Port Control srtuct.
++ * ETH_QUEUE tx_queue Number of Tx queue.
++ * PKT_INFO *p_pkt_info User packet buffer.
++ *
++ * OUTPUT:
++ * Tx ring 'curr' and 'first' indexes are updated.
++ *
++ * RETURN:
++ * ETH_QUEUE_FULL in case of Tx resource error.
++ * ETH_ERROR in case the routine can not access Tx desc ring.
++ * ETH_QUEUE_LAST_RESOURCE if the routine uses the last Tx resource.
++ * ETH_OK otherwise.
++ *
++ *******************************************************************************/
++static ETH_FUNC_RET_STATUS eth_port_send (ETH_PORT_INFO * p_eth_port_ctrl,
++ ETH_QUEUE tx_queue,
++ PKT_INFO * p_pkt_info)
++{
++ volatile ETH_TX_DESC *p_tx_desc_first;
++ volatile ETH_TX_DESC *p_tx_desc_curr;
++ volatile ETH_TX_DESC *p_tx_next_desc_curr;
++ volatile ETH_TX_DESC *p_tx_desc_used;
++ unsigned int command_status;
++
++ /* Do not process Tx ring in case of Tx ring resource error */
++ if (p_eth_port_ctrl->tx_resource_err[tx_queue] == true)
++ return ETH_QUEUE_FULL;
++
++ /* Get the Tx Desc ring indexes */
++ CURR_TFD_GET (p_tx_desc_curr, tx_queue);
++ USED_TFD_GET (p_tx_desc_used, tx_queue);
++
++ if (p_tx_desc_curr == NULL)
++ return ETH_ERROR;
++
++ /* The following parameters are used to save readings from memory */
++ p_tx_next_desc_curr = TX_NEXT_DESC_PTR (p_tx_desc_curr, tx_queue);
++ command_status = p_pkt_info->cmd_sts | ETH_ZERO_PADDING | ETH_GEN_CRC;
++
++ if (command_status & (ETH_TX_FIRST_DESC)) {
++ /* Update first desc */
++ FIRST_TFD_SET (p_tx_desc_curr, tx_queue);
++ p_tx_desc_first = p_tx_desc_curr;
++ } else {
++ FIRST_TFD_GET (p_tx_desc_first, tx_queue);
++ command_status |= ETH_BUFFER_OWNED_BY_DMA;
++ }
++
++ /* Buffers with a payload smaller than 8 bytes must be aligned to 64-bit */
++ /* boundary. We use the memory allocated for Tx descriptor. This memory */
++ /* located in TX_BUF_OFFSET_IN_DESC offset within the Tx descriptor. */
++ if (p_pkt_info->byte_cnt <= 8) {
++ printf ("You have failed in the < 8 bytes errata - fixme\n"); /* RABEEH - TBD */
++ return ETH_ERROR;
++
++ p_tx_desc_curr->buf_ptr =
++ (unsigned int) p_tx_desc_curr + TX_BUF_OFFSET_IN_DESC;
++ eth_b_copy (p_pkt_info->buf_ptr, p_tx_desc_curr->buf_ptr,
++ p_pkt_info->byte_cnt);
++ } else
++ p_tx_desc_curr->buf_ptr = p_pkt_info->buf_ptr;
++
++ p_tx_desc_curr->byte_cnt = p_pkt_info->byte_cnt;
++ p_tx_desc_curr->return_info = p_pkt_info->return_info;
++
++ if (p_pkt_info->cmd_sts & (ETH_TX_LAST_DESC)) {
++ /* Set last desc with DMA ownership and interrupt enable. */
++ p_tx_desc_curr->cmd_sts = command_status |
++ ETH_BUFFER_OWNED_BY_DMA | ETH_TX_ENABLE_INTERRUPT;
++
++ if (p_tx_desc_curr != p_tx_desc_first)
++ p_tx_desc_first->cmd_sts |= ETH_BUFFER_OWNED_BY_DMA;
++
++ /* Flush CPU pipe */
++
++ D_CACHE_FLUSH_LINE ((unsigned int) p_tx_desc_curr, 0);
++ D_CACHE_FLUSH_LINE ((unsigned int) p_tx_desc_first, 0);
++ CPU_PIPE_FLUSH;
++
++ /* Apply send command */
++ ETH_ENABLE_TX_QUEUE (tx_queue, p_eth_port_ctrl->port_num);
++
++ /* Finish Tx packet. Update first desc in case of Tx resource error */
++ p_tx_desc_first = p_tx_next_desc_curr;
++ FIRST_TFD_SET (p_tx_desc_first, tx_queue);
++
++ } else {
++ p_tx_desc_curr->cmd_sts = command_status;
++ D_CACHE_FLUSH_LINE ((unsigned int) p_tx_desc_curr, 0);
++ }
++
++ /* Check for ring index overlap in the Tx desc ring */
++ if (p_tx_next_desc_curr == p_tx_desc_used) {
++ /* Update the current descriptor */
++ CURR_TFD_SET (p_tx_desc_first, tx_queue);
++
++ p_eth_port_ctrl->tx_resource_err[tx_queue] = true;
++ return ETH_QUEUE_LAST_RESOURCE;
++ } else {
++ /* Update the current descriptor */
++ CURR_TFD_SET (p_tx_next_desc_curr, tx_queue);
++ return ETH_OK;
++ }
++}
++
++/*******************************************************************************
++ * eth_tx_return_desc - Free all used Tx descriptors
++ *
++ * DESCRIPTION:
++ * This routine returns the transmitted packet information to the caller.
++ * It uses the 'first' index to support Tx desc return in case a transmit
++ * of a packet spanned over multiple buffer still in process.
++ * In case the Tx queue was in "resource error" condition, where there are
++ * no available Tx resources, the function resets the resource error flag.
++ *
++ * INPUT:
++ * ETH_PORT_INFO *p_eth_port_ctrl Ethernet Port Control srtuct.
++ * ETH_QUEUE tx_queue Number of Tx queue.
++ * PKT_INFO *p_pkt_info User packet buffer.
++ *
++ * OUTPUT:
++ * Tx ring 'first' and 'used' indexes are updated.
++ *
++ * RETURN:
++ * ETH_ERROR in case the routine can not access Tx desc ring.
++ * ETH_RETRY in case there is transmission in process.
++ * ETH_END_OF_JOB if the routine has nothing to release.
++ * ETH_OK otherwise.
++ *
++ *******************************************************************************/
++static ETH_FUNC_RET_STATUS eth_tx_return_desc (ETH_PORT_INFO *
++ p_eth_port_ctrl,
++ ETH_QUEUE tx_queue,
++ PKT_INFO * p_pkt_info)
++{
++ volatile ETH_TX_DESC *p_tx_desc_used = NULL;
++ volatile ETH_TX_DESC *p_tx_desc_first = NULL;
++ unsigned int command_status;
++
++ /* Get the Tx Desc ring indexes */
++ USED_TFD_GET (p_tx_desc_used, tx_queue);
++ FIRST_TFD_GET (p_tx_desc_first, tx_queue);
++
++ /* Sanity check */
++ if (p_tx_desc_used == NULL)
++ return ETH_ERROR;
++
++ command_status = p_tx_desc_used->cmd_sts;
++
++ /* Still transmitting... */
++ if (command_status & (ETH_BUFFER_OWNED_BY_DMA)) {
++ D_CACHE_FLUSH_LINE ((unsigned int) p_tx_desc_used, 0);
++ return ETH_RETRY;
++ }
++
++ /* Stop release. About to overlap the current available Tx descriptor */
++ if ((p_tx_desc_used == p_tx_desc_first) &&
++ (p_eth_port_ctrl->tx_resource_err[tx_queue] == false)) {
++ D_CACHE_FLUSH_LINE ((unsigned int) p_tx_desc_used, 0);
++ return ETH_END_OF_JOB;
++ }
++
++ /* Pass the packet information to the caller */
++ p_pkt_info->cmd_sts = command_status;
++ p_pkt_info->return_info = p_tx_desc_used->return_info;
++ p_tx_desc_used->return_info = 0;
++
++ /* Update the next descriptor to release. */
++ USED_TFD_SET (TX_NEXT_DESC_PTR (p_tx_desc_used, tx_queue), tx_queue);
++
++ /* Any Tx return cancels the Tx resource error status */
++ if (p_eth_port_ctrl->tx_resource_err[tx_queue] == true)
++ p_eth_port_ctrl->tx_resource_err[tx_queue] = false;
++
++ D_CACHE_FLUSH_LINE ((unsigned int) p_tx_desc_used, 0);
++
++ return ETH_OK;
++
++}
++
++/*******************************************************************************
++ * eth_port_receive - Get received information from Rx ring.
++ *
++ * DESCRIPTION:
++ * This routine returns the received data to the caller. There is no
++ * data copying during routine operation. All information is returned
++ * using pointer to packet information struct passed from the caller.
++ * If the routine exhausts Rx ring resources then the resource error flag
++ * is set.
++ *
++ * INPUT:
++ * ETH_PORT_INFO *p_eth_port_ctrl Ethernet Port Control srtuct.
++ * ETH_QUEUE rx_queue Number of Rx queue.
++ * PKT_INFO *p_pkt_info User packet buffer.
++ *
++ * OUTPUT:
++ * Rx ring current and used indexes are updated.
++ *
++ * RETURN:
++ * ETH_ERROR in case the routine can not access Rx desc ring.
++ * ETH_QUEUE_FULL if Rx ring resources are exhausted.
++ * ETH_END_OF_JOB if there is no received data.
++ * ETH_OK otherwise.
++ *
++ *******************************************************************************/
++static ETH_FUNC_RET_STATUS eth_port_receive (ETH_PORT_INFO * p_eth_port_ctrl,
++ ETH_QUEUE rx_queue,
++ PKT_INFO * p_pkt_info)
++{
++ volatile ETH_RX_DESC *p_rx_curr_desc;
++ volatile ETH_RX_DESC *p_rx_next_curr_desc;
++ volatile ETH_RX_DESC *p_rx_used_desc;
++ unsigned int command_status;
++
++ /* Do not process Rx ring in case of Rx ring resource error */
++ if (p_eth_port_ctrl->rx_resource_err[rx_queue] == true) {
++ printf ("\nRx Queue is full ...\n");
++ return ETH_QUEUE_FULL;
++ }
++
++ /* Get the Rx Desc ring 'curr and 'used' indexes */
++ CURR_RFD_GET (p_rx_curr_desc, rx_queue);
++ USED_RFD_GET (p_rx_used_desc, rx_queue);
++
++ /* Sanity check */
++ if (p_rx_curr_desc == NULL)
++ return ETH_ERROR;
++
++ /* The following parameters are used to save readings from memory */
++ p_rx_next_curr_desc = RX_NEXT_DESC_PTR (p_rx_curr_desc, rx_queue);
++ command_status = p_rx_curr_desc->cmd_sts;
++
++ /* Nothing to receive... */
++ if (command_status & (ETH_BUFFER_OWNED_BY_DMA)) {
++/* DP(printf("Rx: command_status: %08x\n", command_status)); */
++ D_CACHE_FLUSH_LINE ((unsigned int) p_rx_curr_desc, 0);
++/* DP(printf("\nETH_END_OF_JOB ...\n"));*/
++ return ETH_END_OF_JOB;
++ }
++
++ p_pkt_info->byte_cnt = (p_rx_curr_desc->byte_cnt) - RX_BUF_OFFSET;
++ p_pkt_info->cmd_sts = command_status;
++ p_pkt_info->buf_ptr = (p_rx_curr_desc->buf_ptr) + RX_BUF_OFFSET;
++ p_pkt_info->return_info = p_rx_curr_desc->return_info;
++ p_pkt_info->l4i_chk = p_rx_curr_desc->buf_size; /* IP fragment indicator */
++
++ /* Clean the return info field to indicate that the packet has been */
++ /* moved to the upper layers */
++ p_rx_curr_desc->return_info = 0;
++
++ /* Update 'curr' in data structure */
++ CURR_RFD_SET (p_rx_next_curr_desc, rx_queue);
++
++ /* Rx descriptors resource exhausted. Set the Rx ring resource error flag */
++ if (p_rx_next_curr_desc == p_rx_used_desc)
++ p_eth_port_ctrl->rx_resource_err[rx_queue] = true;
++
++ D_CACHE_FLUSH_LINE ((unsigned int) p_rx_curr_desc, 0);
++ CPU_PIPE_FLUSH;
++
++ return ETH_OK;
++}
++
++/*******************************************************************************
++ * eth_rx_return_buff - Returns a Rx buffer back to the Rx ring.
++ *
++ * DESCRIPTION:
++ * This routine returns a Rx buffer back to the Rx ring. It retrieves the
++ * next 'used' descriptor and attached the returned buffer to it.
++ * In case the Rx ring was in "resource error" condition, where there are
++ * no available Rx resources, the function resets the resource error flag.
++ *
++ * INPUT:
++ * ETH_PORT_INFO *p_eth_port_ctrl Ethernet Port Control srtuct.
++ * ETH_QUEUE rx_queue Number of Rx queue.
++ * PKT_INFO *p_pkt_info Information on the returned buffer.
++ *
++ * OUTPUT:
++ * New available Rx resource in Rx descriptor ring.
++ *
++ * RETURN:
++ * ETH_ERROR in case the routine can not access Rx desc ring.
++ * ETH_OK otherwise.
++ *
++ *******************************************************************************/
++static ETH_FUNC_RET_STATUS eth_rx_return_buff (ETH_PORT_INFO *
++ p_eth_port_ctrl,
++ ETH_QUEUE rx_queue,
++ PKT_INFO * p_pkt_info)
++{
++ volatile ETH_RX_DESC *p_used_rx_desc; /* Where to return Rx resource */
++
++ /* Get 'used' Rx descriptor */
++ USED_RFD_GET (p_used_rx_desc, rx_queue);
++
++ /* Sanity check */
++ if (p_used_rx_desc == NULL)
++ return ETH_ERROR;
++
++ p_used_rx_desc->buf_ptr = p_pkt_info->buf_ptr;
++ p_used_rx_desc->return_info = p_pkt_info->return_info;
++ p_used_rx_desc->byte_cnt = p_pkt_info->byte_cnt;
++ p_used_rx_desc->buf_size = MV64460_RX_BUFFER_SIZE; /* Reset Buffer size */
++
++ /* Flush the write pipe */
++ CPU_PIPE_FLUSH;
++
++ /* Return the descriptor to DMA ownership */
++ p_used_rx_desc->cmd_sts =
++ ETH_BUFFER_OWNED_BY_DMA | ETH_RX_ENABLE_INTERRUPT;
++
++ /* Flush descriptor and CPU pipe */
++ D_CACHE_FLUSH_LINE ((unsigned int) p_used_rx_desc, 0);
++ CPU_PIPE_FLUSH;
++
++ /* Move the used descriptor pointer to the next descriptor */
++ USED_RFD_SET (RX_NEXT_DESC_PTR (p_used_rx_desc, rx_queue), rx_queue);
++
++ /* Any Rx return cancels the Rx resource error status */
++ if (p_eth_port_ctrl->rx_resource_err[rx_queue] == true)
++ p_eth_port_ctrl->rx_resource_err[rx_queue] = false;
++
++ return ETH_OK;
++}
++
++/*******************************************************************************
++ * eth_port_set_rx_coal - Sets coalescing interrupt mechanism on RX path
++ *
++ * DESCRIPTION:
++ * This routine sets the RX coalescing interrupt mechanism parameter.
++ * This parameter is a timeout counter, that counts in 64 t_clk
++ * chunks ; that when timeout event occurs a maskable interrupt
++ * occurs.
++ * The parameter is calculated using the tClk of the MV-643xx chip
++ * , and the required delay of the interrupt in usec.
++ *
++ * INPUT:
++ * ETH_PORT eth_port_num Ethernet port number
++ * unsigned int t_clk t_clk of the MV-643xx chip in HZ units
++ * unsigned int delay Delay in usec
++ *
++ * OUTPUT:
++ * Interrupt coalescing mechanism value is set in MV-643xx chip.
++ *
++ * RETURN:
++ * The interrupt coalescing value set in the gigE port.
++ *
++ *******************************************************************************/
++#if 0 /* FIXME */
++static unsigned int eth_port_set_rx_coal (ETH_PORT eth_port_num,
++ unsigned int t_clk,
++ unsigned int delay)
++{
++ unsigned int coal;
++
++ coal = ((t_clk / 1000000) * delay) / 64;
++ /* Set RX Coalescing mechanism */
++ MV_REG_WRITE (MV64460_ETH_SDMA_CONFIG_REG (eth_port_num),
++ ((coal & 0x3fff) << 8) |
++ (MV_REG_READ
++ (MV64460_ETH_SDMA_CONFIG_REG (eth_port_num))
++ & 0xffc000ff));
++ return coal;
++}
++
++#endif
++/*******************************************************************************
++ * eth_port_set_tx_coal - Sets coalescing interrupt mechanism on TX path
++ *
++ * DESCRIPTION:
++ * This routine sets the TX coalescing interrupt mechanism parameter.
++ * This parameter is a timeout counter, that counts in 64 t_clk
++ * chunks ; that when timeout event occurs a maskable interrupt
++ * occurs.
++ * The parameter is calculated using the t_cLK frequency of the
++ * MV-643xx chip and the required delay in the interrupt in uSec
++ *
++ * INPUT:
++ * ETH_PORT eth_port_num Ethernet port number
++ * unsigned int t_clk t_clk of the MV-643xx chip in HZ units
++ * unsigned int delay Delay in uSeconds
++ *
++ * OUTPUT:
++ * Interrupt coalescing mechanism value is set in MV-643xx chip.
++ *
++ * RETURN:
++ * The interrupt coalescing value set in the gigE port.
++ *
++ *******************************************************************************/
++#if 0 /* FIXME */
++static unsigned int eth_port_set_tx_coal (ETH_PORT eth_port_num,
++ unsigned int t_clk,
++ unsigned int delay)
++{
++ unsigned int coal;
++
++ coal = ((t_clk / 1000000) * delay) / 64;
++ /* Set TX Coalescing mechanism */
++ MV_REG_WRITE (MV64460_ETH_TX_FIFO_URGENT_THRESHOLD_REG (eth_port_num),
++ coal << 4);
++ return coal;
++}
++#endif
++
++/*******************************************************************************
++ * eth_b_copy - Copy bytes from source to destination
++ *
++ * DESCRIPTION:
++ * This function supports the eight bytes limitation on Tx buffer size.
++ * The routine will zero eight bytes starting from the destination address
++ * followed by copying bytes from the source address to the destination.
++ *
++ * INPUT:
++ * unsigned int src_addr 32 bit source address.
++ * unsigned int dst_addr 32 bit destination address.
++ * int byte_count Number of bytes to copy.
++ *
++ * OUTPUT:
++ * See description.
++ *
++ * RETURN:
++ * None.
++ *
++ *******************************************************************************/
++static void eth_b_copy (unsigned int src_addr, unsigned int dst_addr,
++ int byte_count)
++{
++ /* Zero the dst_addr area */
++ *(unsigned int *) dst_addr = 0x0;
++
++ while (byte_count != 0) {
++ *(char *) dst_addr = *(char *) src_addr;
++ dst_addr++;
++ src_addr++;
++ byte_count--;
++ }
++}
+diff -Naupr u-boot-1.1.6/board/prodrive/p3mx/mv_eth.h u-boot-1.1.6-fsl-1/board/prodrive/p3mx/mv_eth.h
+--- u-boot-1.1.6/board/prodrive/p3mx/mv_eth.h 1969-12-31 18:00:00.000000000 -0600
++++ u-boot-1.1.6-fsl-1/board/prodrive/p3mx/mv_eth.h 2006-12-06 10:33:49.000000000 -0600
+@@ -0,0 +1,840 @@
++/*
++ * (C) Copyright 2003
++ * Ingo Assmus <ingo.assmus@keymile.com>
++ *
++ * based on - Driver for MV64460X ethernet ports
++ * Copyright (C) 2002 rabeeh@galileo.co.il
++ *
++ * See file CREDITS for list of people who contributed to this
++ * project.
++ *
++ * 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
++ */
++
++/*
++ * mv_eth.h - header file for the polled mode GT ethernet driver
++ */
++
++#ifndef __DB64460_ETH_H__
++#define __DB64460_ETH_H__
++
++#include <asm/types.h>
++#include <asm/io.h>
++#include <asm/byteorder.h>
++#include <common.h>
++#include <net.h>
++#include "mv_regs.h"
++#include "ppc_error_no.h"
++#include "../../Marvell/include/core.h"
++
++/*************************************************************************
++**************************************************************************
++**************************************************************************
++* The first part is the high level driver of the gigE ethernet ports. *
++**************************************************************************
++**************************************************************************
++*************************************************************************/
++#ifndef TRUE
++#define TRUE 1
++#endif
++#ifndef FALSE
++#define FALSE 0
++#endif
++
++/* In case not using SG on Tx, define MAX_SKB_FRAGS as 0 */
++#ifndef MAX_SKB_FRAGS
++#define MAX_SKB_FRAGS 0
++#endif
++
++/* Port attributes */
++/*#define MAX_RX_QUEUE_NUM 8*/
++/*#define MAX_TX_QUEUE_NUM 8*/
++#define MAX_RX_QUEUE_NUM 1
++#define MAX_TX_QUEUE_NUM 1
++
++
++/* Use one TX queue and one RX queue */
++#define MV64460_TX_QUEUE_NUM 1
++#define MV64460_RX_QUEUE_NUM 1
++
++/*
++ * Number of RX / TX descriptors on RX / TX rings.
++ * Note that allocating RX descriptors is done by allocating the RX
++ * ring AND a preallocated RX buffers (skb's) for each descriptor.
++ * The TX descriptors only allocates the TX descriptors ring,
++ * with no pre allocated TX buffers (skb's are allocated by higher layers.
++ */
++
++/* Default TX ring size is 10 descriptors */
++#ifdef CONFIG_MV64460_ETH_TXQUEUE_SIZE
++#define MV64460_TX_QUEUE_SIZE CONFIG_MV64460_ETH_TXQUEUE_SIZE
++#else
++#define MV64460_TX_QUEUE_SIZE 4
++#endif
++
++/* Default RX ring size is 4 descriptors */
++#ifdef CONFIG_MV64460_ETH_RXQUEUE_SIZE
++#define MV64460_RX_QUEUE_SIZE CONFIG_MV64460_ETH_RXQUEUE_SIZE
++#else
++#define MV64460_RX_QUEUE_SIZE 4
++#endif
++
++#ifdef CONFIG_RX_BUFFER_SIZE
++#define MV64460_RX_BUFFER_SIZE CONFIG_RX_BUFFER_SIZE
++#else
++#define MV64460_RX_BUFFER_SIZE 1600
++#endif
++
++#ifdef CONFIG_TX_BUFFER_SIZE
++#define MV64460_TX_BUFFER_SIZE CONFIG_TX_BUFFER_SIZE
++#else
++#define MV64460_TX_BUFFER_SIZE 1600
++#endif
++
++/*
++ * Network device statistics. Akin to the 2.0 ether stats but
++ * with byte counters.
++ */
++
++struct net_device_stats
++{
++ unsigned long rx_packets; /* total packets received */
++ unsigned long tx_packets; /* total packets transmitted */
++ unsigned long rx_bytes; /* total bytes received */
++ unsigned long tx_bytes; /* total bytes transmitted */
++ unsigned long rx_errors; /* bad packets received */
++ unsigned long tx_errors; /* packet transmit problems */
++ unsigned long rx_dropped; /* no space in linux buffers */
++ unsigned long tx_dropped; /* no space available in linux */
++ unsigned long multicast; /* multicast packets received */
++ unsigned long collisions;
++
++ /* detailed rx_errors: */
++ unsigned long rx_length_errors;
++ unsigned long rx_over_errors; /* receiver ring buff overflow */
++ unsigned long rx_crc_errors; /* recved pkt with crc error */
++ unsigned long rx_frame_errors; /* recv'd frame alignment error */
++ unsigned long rx_fifo_errors; /* recv'r fifo overrun */
++ unsigned long rx_missed_errors; /* receiver missed packet */
++
++ /* detailed tx_errors */
++ unsigned long tx_aborted_errors;
++ unsigned long tx_carrier_errors;
++ unsigned long tx_fifo_errors;
++ unsigned long tx_heartbeat_errors;
++ unsigned long tx_window_errors;
++
++ /* for cslip etc */
++ unsigned long rx_compressed;
++ unsigned long tx_compressed;
++};
++
++
++/* Private data structure used for ethernet device */
++struct mv64460_eth_priv {
++ unsigned int port_num;
++ struct net_device_stats *stats;
++
++ /* to buffer area aligned */
++ char * p_eth_tx_buffer[MV64460_TX_QUEUE_SIZE+1]; /*pointers to alligned tx buffs in memory space */
++ char * p_eth_rx_buffer[MV64460_RX_QUEUE_SIZE+1]; /*pointers to allinged rx buffs in memory space */
++
++ /* Size of Tx Ring per queue */
++ unsigned int tx_ring_size [MAX_TX_QUEUE_NUM];
++
++ /* Size of Rx Ring per queue */
++ unsigned int rx_ring_size [MAX_RX_QUEUE_NUM];
++
++ /* Magic Number for Ethernet running */
++ unsigned int eth_running;
++
++ int first_init;
++};
++
++int mv64460_eth_init (struct eth_device *dev);
++int mv64460_eth_stop (struct eth_device *dev);
++int mv64460_eth_start_xmit (struct eth_device*, volatile void* packet, int length);
++/* return db64460_eth0_poll(); */
++
++int mv64460_eth_open (struct eth_device *dev);
++
++
++/*************************************************************************
++**************************************************************************
++**************************************************************************
++* The second part is the low level driver of the gigE ethernet ports. *
++**************************************************************************
++**************************************************************************
++*************************************************************************/
++
++
++/********************************************************************************
++ * Header File for : MV-643xx network interface header
++ *
++ * DESCRIPTION:
++ * This header file contains macros typedefs and function declaration for
++ * the Marvell Gig Bit Ethernet Controller.
++ *
++ * DEPENDENCIES:
++ * None.
++ *
++ *******************************************************************************/
++
++
++#ifdef CONFIG_SPECIAL_CONSISTENT_MEMORY
++#ifdef CONFIG_MV64460_SRAM_CACHEABLE
++/* In case SRAM is cacheable but not cache coherent */
++#define D_CACHE_FLUSH_LINE(addr, offset) \
++{ \
++ __asm__ __volatile__ ("dcbf %0,%1" : : "r" (addr), "r" (offset)); \
++}
++#else
++/* In case SRAM is cache coherent or non-cacheable */
++#define D_CACHE_FLUSH_LINE(addr, offset) ;
++#endif
++#else
++#ifdef CONFIG_NOT_COHERENT_CACHE
++/* In case of descriptors on DDR but not cache coherent */
++#define D_CACHE_FLUSH_LINE(addr, offset) \
++{ \
++ __asm__ __volatile__ ("dcbf %0,%1" : : "r" (addr), "r" (offset)); \
++}
++#else
++/* In case of descriptors on DDR and cache coherent */
++#define D_CACHE_FLUSH_LINE(addr, offset) ;
++#endif /* CONFIG_NOT_COHERENT_CACHE */
++#endif /* CONFIG_SPECIAL_CONSISTENT_MEMORY */
++
++
++#define CPU_PIPE_FLUSH \
++{ \
++ __asm__ __volatile__ ("eieio"); \
++}
++
++
++/* defines */
++
++/* Default port configuration value */
++#define PORT_CONFIG_VALUE \
++ ETH_UNICAST_NORMAL_MODE | \
++ ETH_DEFAULT_RX_QUEUE_0 | \
++ ETH_DEFAULT_RX_ARP_QUEUE_0 | \
++ ETH_RECEIVE_BC_IF_NOT_IP_OR_ARP | \
++ ETH_RECEIVE_BC_IF_IP | \
++ ETH_RECEIVE_BC_IF_ARP | \
++ ETH_CAPTURE_TCP_FRAMES_DIS | \
++ ETH_CAPTURE_UDP_FRAMES_DIS | \
++ ETH_DEFAULT_RX_TCP_QUEUE_0 | \
++ ETH_DEFAULT_RX_UDP_QUEUE_0 | \
++ ETH_DEFAULT_RX_BPDU_QUEUE_0
++
++/* Default port extend configuration value */
++#define PORT_CONFIG_EXTEND_VALUE \
++ ETH_SPAN_BPDU_PACKETS_AS_NORMAL | \
++ ETH_PARTITION_DISABLE
++
++
++/* Default sdma control value */
++#ifdef CONFIG_NOT_COHERENT_CACHE
++#define PORT_SDMA_CONFIG_VALUE \
++ ETH_RX_BURST_SIZE_16_64BIT | \
++ GT_ETH_IPG_INT_RX(0) | \
++ ETH_TX_BURST_SIZE_16_64BIT;
++#else
++#define PORT_SDMA_CONFIG_VALUE \
++ ETH_RX_BURST_SIZE_4_64BIT | \
++ GT_ETH_IPG_INT_RX(0) | \
++ ETH_TX_BURST_SIZE_4_64BIT;
++#endif
++
++#define GT_ETH_IPG_INT_RX(value) \
++ ((value & 0x3fff) << 8)
++
++/* Default port serial control value */
++#define PORT_SERIAL_CONTROL_VALUE \
++ ETH_FORCE_LINK_PASS | \
++ ETH_ENABLE_AUTO_NEG_FOR_DUPLX | \
++ ETH_DISABLE_AUTO_NEG_FOR_FLOW_CTRL | \
++ ETH_ADV_SYMMETRIC_FLOW_CTRL | \
++ ETH_FORCE_FC_MODE_NO_PAUSE_DIS_TX | \
++ ETH_FORCE_BP_MODE_NO_JAM | \
++ BIT9 | \
++ ETH_DO_NOT_FORCE_LINK_FAIL | \
++ ETH_RETRANSMIT_16_ETTEMPTS | \
++ ETH_ENABLE_AUTO_NEG_SPEED_GMII | \
++ ETH_DTE_ADV_0 | \
++ ETH_DISABLE_AUTO_NEG_BYPASS | \
++ ETH_AUTO_NEG_NO_CHANGE | \
++ ETH_MAX_RX_PACKET_1552BYTE | \
++ ETH_CLR_EXT_LOOPBACK | \
++ ETH_SET_FULL_DUPLEX_MODE | \
++ ETH_ENABLE_FLOW_CTRL_TX_RX_IN_FULL_DUPLEX;
++
++#define RX_BUFFER_MAX_SIZE 0xFFFF
++#define TX_BUFFER_MAX_SIZE 0xFFFF /* Buffer are limited to 64k */
++
++#define RX_BUFFER_MIN_SIZE 0x8
++#define TX_BUFFER_MIN_SIZE 0x8
++
++/* Tx WRR confoguration macros */
++#define PORT_MAX_TRAN_UNIT 0x24 /* MTU register (default) 9KByte */
++#define PORT_MAX_TOKEN_BUCKET_SIZE 0x_fFFF /* PMTBS register (default) */
++#define PORT_TOKEN_RATE 1023 /* PTTBRC register (default) */
++
++/* MAC accepet/reject macros */
++#define ACCEPT_MAC_ADDR 0
++#define REJECT_MAC_ADDR 1
++
++/* Size of a Tx/Rx descriptor used in chain list data structure */
++#define RX_DESC_ALIGNED_SIZE 0x20
++#define TX_DESC_ALIGNED_SIZE 0x20
++
++/* An offest in Tx descriptors to store data for buffers less than 8 Bytes */
++#define TX_BUF_OFFSET_IN_DESC 0x18
++/* Buffer offset from buffer pointer */
++#define RX_BUF_OFFSET 0x2
++
++/* Gap define */
++#define ETH_BAR_GAP 0x8
++#define ETH_SIZE_REG_GAP 0x8
++#define ETH_HIGH_ADDR_REMAP_REG_GAP 0x4
++#define ETH_PORT_ACCESS_CTRL_GAP 0x4
++
++/* Gigabit Ethernet Unit Global Registers */
++
++/* MIB Counters register definitions */
++#define ETH_MIB_GOOD_OCTETS_RECEIVED_LOW 0x0
++#define ETH_MIB_GOOD_OCTETS_RECEIVED_HIGH 0x4
++#define ETH_MIB_BAD_OCTETS_RECEIVED 0x8
++#define ETH_MIB_INTERNAL_MAC_TRANSMIT_ERR 0xc
++#define ETH_MIB_GOOD_FRAMES_RECEIVED 0x10
++#define ETH_MIB_BAD_FRAMES_RECEIVED 0x14
++#define ETH_MIB_BROADCAST_FRAMES_RECEIVED 0x18
++#define ETH_MIB_MULTICAST_FRAMES_RECEIVED 0x1c
++#define ETH_MIB_FRAMES_64_OCTETS 0x20
++#define ETH_MIB_FRAMES_65_TO_127_OCTETS 0x24
++#define ETH_MIB_FRAMES_128_TO_255_OCTETS 0x28
++#define ETH_MIB_FRAMES_256_TO_511_OCTETS 0x2c
++#define ETH_MIB_FRAMES_512_TO_1023_OCTETS 0x30
++#define ETH_MIB_FRAMES_1024_TO_MAX_OCTETS 0x34
++#define ETH_MIB_GOOD_OCTETS_SENT_LOW 0x38
++#define ETH_MIB_GOOD_OCTETS_SENT_HIGH 0x3c
++#define ETH_MIB_GOOD_FRAMES_SENT 0x40
++#define ETH_MIB_EXCESSIVE_COLLISION 0x44
++#define ETH_MIB_MULTICAST_FRAMES_SENT 0x48
++#define ETH_MIB_BROADCAST_FRAMES_SENT 0x4c
++#define ETH_MIB_UNREC_MAC_CONTROL_RECEIVED 0x50
++#define ETH_MIB_FC_SENT 0x54
++#define ETH_MIB_GOOD_FC_RECEIVED 0x58
++#define ETH_MIB_BAD_FC_RECEIVED 0x5c
++#define ETH_MIB_UNDERSIZE_RECEIVED 0x60
++#define ETH_MIB_FRAGMENTS_RECEIVED 0x64
++#define ETH_MIB_OVERSIZE_RECEIVED 0x68
++#define ETH_MIB_JABBER_RECEIVED 0x6c
++#define ETH_MIB_MAC_RECEIVE_ERROR 0x70
++#define ETH_MIB_BAD_CRC_EVENT 0x74
++#define ETH_MIB_COLLISION 0x78
++#define ETH_MIB_LATE_COLLISION 0x7c
++
++/* Port serial status reg (PSR) */
++#define ETH_INTERFACE_GMII_MII 0
++#define ETH_INTERFACE_PCM BIT0
++#define ETH_LINK_IS_DOWN 0
++#define ETH_LINK_IS_UP BIT1
++#define ETH_PORT_AT_HALF_DUPLEX 0
++#define ETH_PORT_AT_FULL_DUPLEX BIT2
++#define ETH_RX_FLOW_CTRL_DISABLED 0
++#define ETH_RX_FLOW_CTRL_ENBALED BIT3
++#define ETH_GMII_SPEED_100_10 0
++#define ETH_GMII_SPEED_1000 BIT4
++#define ETH_MII_SPEED_10 0
++#define ETH_MII_SPEED_100 BIT5
++#define ETH_NO_TX 0
++#define ETH_TX_IN_PROGRESS BIT7
++#define ETH_BYPASS_NO_ACTIVE 0
++#define ETH_BYPASS_ACTIVE BIT8
++#define ETH_PORT_NOT_AT_PARTITION_STATE 0
++#define ETH_PORT_AT_PARTITION_STATE BIT9
++#define ETH_PORT_TX_FIFO_NOT_EMPTY 0
++#define ETH_PORT_TX_FIFO_EMPTY BIT10
++
++
++/* These macros describes the Port configuration reg (Px_cR) bits */
++#define ETH_UNICAST_NORMAL_MODE 0
++#define ETH_UNICAST_PROMISCUOUS_MODE BIT0
++#define ETH_DEFAULT_RX_QUEUE_0 0
++#define ETH_DEFAULT_RX_QUEUE_1 BIT1
++#define ETH_DEFAULT_RX_QUEUE_2 BIT2
++#define ETH_DEFAULT_RX_QUEUE_3 (BIT2 | BIT1)
++#define ETH_DEFAULT_RX_QUEUE_4 BIT3
++#define ETH_DEFAULT_RX_QUEUE_5 (BIT3 | BIT1)
++#define ETH_DEFAULT_RX_QUEUE_6 (BIT3 | BIT2)
++#define ETH_DEFAULT_RX_QUEUE_7 (BIT3 | BIT2 | BIT1)
++#define ETH_DEFAULT_RX_ARP_QUEUE_0 0
++#define ETH_DEFAULT_RX_ARP_QUEUE_1 BIT4
++#define ETH_DEFAULT_RX_ARP_QUEUE_2 BIT5
++#define ETH_DEFAULT_RX_ARP_QUEUE_3 (BIT5 | BIT4)
++#define ETH_DEFAULT_RX_ARP_QUEUE_4 BIT6
++#define ETH_DEFAULT_RX_ARP_QUEUE_5 (BIT6 | BIT4)
++#define ETH_DEFAULT_RX_ARP_QUEUE_6 (BIT6 | BIT5)
++#define ETH_DEFAULT_RX_ARP_QUEUE_7 (BIT6 | BIT5 | BIT4)
++#define ETH_RECEIVE_BC_IF_NOT_IP_OR_ARP 0
++#define ETH_REJECT_BC_IF_NOT_IP_OR_ARP BIT7
++#define ETH_RECEIVE_BC_IF_IP 0
++#define ETH_REJECT_BC_IF_IP BIT8
++#define ETH_RECEIVE_BC_IF_ARP 0
++#define ETH_REJECT_BC_IF_ARP BIT9
++#define ETH_TX_AM_NO_UPDATE_ERROR_SUMMARY BIT12
++#define ETH_CAPTURE_TCP_FRAMES_DIS 0
++#define ETH_CAPTURE_TCP_FRAMES_EN BIT14
++#define ETH_CAPTURE_UDP_FRAMES_DIS 0
++#define ETH_CAPTURE_UDP_FRAMES_EN BIT15
++#define ETH_DEFAULT_RX_TCP_QUEUE_0 0
++#define ETH_DEFAULT_RX_TCP_QUEUE_1 BIT16
++#define ETH_DEFAULT_RX_TCP_QUEUE_2 BIT17
++#define ETH_DEFAULT_RX_TCP_QUEUE_3 (BIT17 | BIT16)
++#define ETH_DEFAULT_RX_TCP_QUEUE_4 BIT18
++#define ETH_DEFAULT_RX_TCP_QUEUE_5 (BIT18 | BIT16)
++#define ETH_DEFAULT_RX_TCP_QUEUE_6 (BIT18 | BIT17)
++#define ETH_DEFAULT_RX_TCP_QUEUE_7 (BIT18 | BIT17 | BIT16)
++#define ETH_DEFAULT_RX_UDP_QUEUE_0 0
++#define ETH_DEFAULT_RX_UDP_QUEUE_1 BIT19
++#define ETH_DEFAULT_RX_UDP_QUEUE_2 BIT20
++#define ETH_DEFAULT_RX_UDP_QUEUE_3 (BIT20 | BIT19)
++#define ETH_DEFAULT_RX_UDP_QUEUE_4 (BIT21
++#define ETH_DEFAULT_RX_UDP_QUEUE_5 (BIT21 | BIT19)
++#define ETH_DEFAULT_RX_UDP_QUEUE_6 (BIT21 | BIT20)
++#define ETH_DEFAULT_RX_UDP_QUEUE_7 (BIT21 | BIT20 | BIT19)
++#define ETH_DEFAULT_RX_BPDU_QUEUE_0 0
++#define ETH_DEFAULT_RX_BPDU_QUEUE_1 BIT22
++#define ETH_DEFAULT_RX_BPDU_QUEUE_2 BIT23
++#define ETH_DEFAULT_RX_BPDU_QUEUE_3 (BIT23 | BIT22)
++#define ETH_DEFAULT_RX_BPDU_QUEUE_4 BIT24
++#define ETH_DEFAULT_RX_BPDU_QUEUE_5 (BIT24 | BIT22)
++#define ETH_DEFAULT_RX_BPDU_QUEUE_6 (BIT24 | BIT23)
++#define ETH_DEFAULT_RX_BPDU_QUEUE_7 (BIT24 | BIT23 | BIT22)
++
++
++/* These macros describes the Port configuration extend reg (Px_cXR) bits*/
++#define ETH_CLASSIFY_EN BIT0
++#define ETH_SPAN_BPDU_PACKETS_AS_NORMAL 0
++#define ETH_SPAN_BPDU_PACKETS_TO_RX_QUEUE_7 BIT1
++#define ETH_PARTITION_DISABLE 0
++#define ETH_PARTITION_ENABLE BIT2
++
++
++/* Tx/Rx queue command reg (RQCR/TQCR)*/
++#define ETH_QUEUE_0_ENABLE BIT0
++#define ETH_QUEUE_1_ENABLE BIT1
++#define ETH_QUEUE_2_ENABLE BIT2
++#define ETH_QUEUE_3_ENABLE BIT3
++#define ETH_QUEUE_4_ENABLE BIT4
++#define ETH_QUEUE_5_ENABLE BIT5
++#define ETH_QUEUE_6_ENABLE BIT6
++#define ETH_QUEUE_7_ENABLE BIT7
++#define ETH_QUEUE_0_DISABLE BIT8
++#define ETH_QUEUE_1_DISABLE BIT9
++#define ETH_QUEUE_2_DISABLE BIT10
++#define ETH_QUEUE_3_DISABLE BIT11
++#define ETH_QUEUE_4_DISABLE BIT12
++#define ETH_QUEUE_5_DISABLE BIT13
++#define ETH_QUEUE_6_DISABLE BIT14
++#define ETH_QUEUE_7_DISABLE BIT15
++
++/* These macros describes the Port Sdma configuration reg (SDCR) bits */
++#define ETH_RIFB BIT0
++#define ETH_RX_BURST_SIZE_1_64BIT 0
++#define ETH_RX_BURST_SIZE_2_64BIT BIT1
++#define ETH_RX_BURST_SIZE_4_64BIT BIT2
++#define ETH_RX_BURST_SIZE_8_64BIT (BIT2 | BIT1)
++#define ETH_RX_BURST_SIZE_16_64BIT BIT3
++#define ETH_BLM_RX_NO_SWAP BIT4
++#define ETH_BLM_RX_BYTE_SWAP 0
++#define ETH_BLM_TX_NO_SWAP BIT5
++#define ETH_BLM_TX_BYTE_SWAP 0
++#define ETH_DESCRIPTORS_BYTE_SWAP BIT6
++#define ETH_DESCRIPTORS_NO_SWAP 0
++#define ETH_TX_BURST_SIZE_1_64BIT 0
++#define ETH_TX_BURST_SIZE_2_64BIT BIT22
++#define ETH_TX_BURST_SIZE_4_64BIT BIT23
++#define ETH_TX_BURST_SIZE_8_64BIT (BIT23 | BIT22)
++#define ETH_TX_BURST_SIZE_16_64BIT BIT24
++
++/* These macros describes the Port serial control reg (PSCR) bits */
++#define ETH_SERIAL_PORT_DISABLE 0
++#define ETH_SERIAL_PORT_ENABLE BIT0
++#define ETH_FORCE_LINK_PASS BIT1
++#define ETH_DO_NOT_FORCE_LINK_PASS 0
++#define ETH_ENABLE_AUTO_NEG_FOR_DUPLX 0
++#define ETH_DISABLE_AUTO_NEG_FOR_DUPLX BIT2
++#define ETH_ENABLE_AUTO_NEG_FOR_FLOW_CTRL 0
++#define ETH_DISABLE_AUTO_NEG_FOR_FLOW_CTRL BIT3
++#define ETH_ADV_NO_FLOW_CTRL 0
++#define ETH_ADV_SYMMETRIC_FLOW_CTRL BIT4
++#define ETH_FORCE_FC_MODE_NO_PAUSE_DIS_TX 0
++#define ETH_FORCE_FC_MODE_TX_PAUSE_DIS BIT5
++#define ETH_FORCE_BP_MODE_NO_JAM 0
++#define ETH_FORCE_BP_MODE_JAM_TX BIT7
++#define ETH_FORCE_BP_MODE_JAM_TX_ON_RX_ERR BIT8
++#define ETH_FORCE_LINK_FAIL 0
++#define ETH_DO_NOT_FORCE_LINK_FAIL BIT10
++#define ETH_RETRANSMIT_16_ETTEMPTS 0
++#define ETH_RETRANSMIT_FOREVER BIT11
++#define ETH_DISABLE_AUTO_NEG_SPEED_GMII BIT13
++#define ETH_ENABLE_AUTO_NEG_SPEED_GMII 0
++#define ETH_DTE_ADV_0 0
++#define ETH_DTE_ADV_1 BIT14
++#define ETH_DISABLE_AUTO_NEG_BYPASS 0
++#define ETH_ENABLE_AUTO_NEG_BYPASS BIT15
++#define ETH_AUTO_NEG_NO_CHANGE 0
++#define ETH_RESTART_AUTO_NEG BIT16
++#define ETH_MAX_RX_PACKET_1518BYTE 0
++#define ETH_MAX_RX_PACKET_1522BYTE BIT17
++#define ETH_MAX_RX_PACKET_1552BYTE BIT18
++#define ETH_MAX_RX_PACKET_9022BYTE (BIT18 | BIT17)
++#define ETH_MAX_RX_PACKET_9192BYTE BIT19
++#define ETH_MAX_RX_PACKET_9700BYTE (BIT19 | BIT17)
++#define ETH_SET_EXT_LOOPBACK BIT20
++#define ETH_CLR_EXT_LOOPBACK 0
++#define ETH_SET_FULL_DUPLEX_MODE BIT21
++#define ETH_SET_HALF_DUPLEX_MODE 0
++#define ETH_ENABLE_FLOW_CTRL_TX_RX_IN_FULL_DUPLEX BIT22
++#define ETH_DISABLE_FLOW_CTRL_TX_RX_IN_FULL_DUPLEX 0
++#define ETH_SET_GMII_SPEED_TO_10_100 0
++#define ETH_SET_GMII_SPEED_TO_1000 BIT23
++#define ETH_SET_MII_SPEED_TO_10 0
++#define ETH_SET_MII_SPEED_TO_100 BIT24
++
++
++/* SMI reg */
++#define ETH_SMI_BUSY BIT28 /* 0 - Write, 1 - Read */
++#define ETH_SMI_READ_VALID BIT27 /* 0 - Write, 1 - Read */
++#define ETH_SMI_OPCODE_WRITE 0 /* Completion of Read operation */
++#define ETH_SMI_OPCODE_READ BIT26 /* Operation is in progress */
++
++/* SDMA command status fields macros */
++
++/* Tx & Rx descriptors status */
++#define ETH_ERROR_SUMMARY (BIT0)
++
++/* Tx & Rx descriptors command */
++#define ETH_BUFFER_OWNED_BY_DMA (BIT31)
++
++/* Tx descriptors status */
++#define ETH_LC_ERROR (0 )
++#define ETH_UR_ERROR (BIT1 )
++#define ETH_RL_ERROR (BIT2 )
++#define ETH_LLC_SNAP_FORMAT (BIT9 )
++
++/* Rx descriptors status */
++#define ETH_CRC_ERROR (0 )
++#define ETH_OVERRUN_ERROR (BIT1 )
++#define ETH_MAX_FRAME_LENGTH_ERROR (BIT2 )
++#define ETH_RESOURCE_ERROR ((BIT2 | BIT1))
++#define ETH_VLAN_TAGGED (BIT19)
++#define ETH_BPDU_FRAME (BIT20)
++#define ETH_TCP_FRAME_OVER_IP_V_4 (0 )
++#define ETH_UDP_FRAME_OVER_IP_V_4 (BIT21)
++#define ETH_OTHER_FRAME_TYPE (BIT22)
++#define ETH_LAYER_2_IS_ETH_V_2 (BIT23)
++#define ETH_FRAME_TYPE_IP_V_4 (BIT24)
++#define ETH_FRAME_HEADER_OK (BIT25)
++#define ETH_RX_LAST_DESC (BIT26)
++#define ETH_RX_FIRST_DESC (BIT27)
++#define ETH_UNKNOWN_DESTINATION_ADDR (BIT28)
++#define ETH_RX_ENABLE_INTERRUPT (BIT29)
++#define ETH_LAYER_4_CHECKSUM_OK (BIT30)
++
++/* Rx descriptors byte count */
++#define ETH_FRAME_FRAGMENTED (BIT2)
++
++/* Tx descriptors command */
++#define ETH_LAYER_4_CHECKSUM_FIRST_DESC (BIT10)
++#define ETH_FRAME_SET_TO_VLAN (BIT15)
++#define ETH_TCP_FRAME (0 )
++#define ETH_UDP_FRAME (BIT16)
++#define ETH_GEN_TCP_UDP_CHECKSUM (BIT17)
++#define ETH_GEN_IP_V_4_CHECKSUM (BIT18)
++#define ETH_ZERO_PADDING (BIT19)
++#define ETH_TX_LAST_DESC (BIT20)
++#define ETH_TX_FIRST_DESC (BIT21)
++#define ETH_GEN_CRC (BIT22)
++#define ETH_TX_ENABLE_INTERRUPT (BIT23)
++#define ETH_AUTO_MODE (BIT30)
++
++/* Address decode parameters */
++/* Ethernet Base Address Register bits */
++#define EBAR_TARGET_DRAM 0x00000000
++#define EBAR_TARGET_DEVICE 0x00000001
++#define EBAR_TARGET_CBS 0x00000002
++#define EBAR_TARGET_PCI0 0x00000003
++#define EBAR_TARGET_PCI1 0x00000004
++#define EBAR_TARGET_CUNIT 0x00000005
++#define EBAR_TARGET_AUNIT 0x00000006
++#define EBAR_TARGET_GUNIT 0x00000007
++
++/* Window attributes */
++#define EBAR_ATTR_DRAM_CS0 0x00000E00
++#define EBAR_ATTR_DRAM_CS1 0x00000D00
++#define EBAR_ATTR_DRAM_CS2 0x00000B00
++#define EBAR_ATTR_DRAM_CS3 0x00000700
++
++/* DRAM Target interface */
++#define EBAR_ATTR_DRAM_NO_CACHE_COHERENCY 0x00000000
++#define EBAR_ATTR_DRAM_CACHE_COHERENCY_WT 0x00001000
++#define EBAR_ATTR_DRAM_CACHE_COHERENCY_WB 0x00002000
++
++/* Device Bus Target interface */
++#define EBAR_ATTR_DEVICE_DEVCS0 0x00001E00
++#define EBAR_ATTR_DEVICE_DEVCS1 0x00001D00
++#define EBAR_ATTR_DEVICE_DEVCS2 0x00001B00
++#define EBAR_ATTR_DEVICE_DEVCS3 0x00001700
++#define EBAR_ATTR_DEVICE_BOOTCS3 0x00000F00
++
++/* PCI Target interface */
++#define EBAR_ATTR_PCI_BYTE_SWAP 0x00000000
++#define EBAR_ATTR_PCI_NO_SWAP 0x00000100
++#define EBAR_ATTR_PCI_BYTE_WORD_SWAP 0x00000200
++#define EBAR_ATTR_PCI_WORD_SWAP 0x00000300
++#define EBAR_ATTR_PCI_NO_SNOOP_NOT_ASSERT 0x00000000
++#define EBAR_ATTR_PCI_NO_SNOOP_ASSERT 0x00000400
++#define EBAR_ATTR_PCI_IO_SPACE 0x00000000
++#define EBAR_ATTR_PCI_MEMORY_SPACE 0x00000800
++#define EBAR_ATTR_PCI_REQ64_FORCE 0x00000000
++#define EBAR_ATTR_PCI_REQ64_SIZE 0x00001000
++
++/* CPU 60x bus or internal SRAM interface */
++#define EBAR_ATTR_CBS_SRAM_BLOCK0 0x00000000
++#define EBAR_ATTR_CBS_SRAM_BLOCK1 0x00000100
++#define EBAR_ATTR_CBS_SRAM 0x00000000
++#define EBAR_ATTR_CBS_CPU_BUS 0x00000800
++
++/* Window access control */
++#define EWIN_ACCESS_NOT_ALLOWED 0
++#define EWIN_ACCESS_READ_ONLY BIT0
++#define EWIN_ACCESS_FULL (BIT1 | BIT0)
++#define EWIN0_ACCESS_MASK 0x0003
++#define EWIN1_ACCESS_MASK 0x000C
++#define EWIN2_ACCESS_MASK 0x0030
++#define EWIN3_ACCESS_MASK 0x00C0
++
++/* typedefs */
++
++typedef enum _eth_port
++{
++ ETH_0 = 0,
++ ETH_1 = 1,
++ ETH_2 = 2
++}ETH_PORT;
++
++typedef enum _eth_func_ret_status
++{
++ ETH_OK, /* Returned as expected. */
++ ETH_ERROR, /* Fundamental error. */
++ ETH_RETRY, /* Could not process request. Try later. */
++ ETH_END_OF_JOB, /* Ring has nothing to process. */
++ ETH_QUEUE_FULL, /* Ring resource error. */
++ ETH_QUEUE_LAST_RESOURCE /* Ring resources about to exhaust. */
++}ETH_FUNC_RET_STATUS;
++
++typedef enum _eth_queue
++{
++ ETH_Q0 = 0,
++ ETH_Q1 = 1,
++ ETH_Q2 = 2,
++ ETH_Q3 = 3,
++ ETH_Q4 = 4,
++ ETH_Q5 = 5,
++ ETH_Q6 = 6,
++ ETH_Q7 = 7
++} ETH_QUEUE;
++
++typedef enum _addr_win
++{
++ ETH_WIN0,
++ ETH_WIN1,
++ ETH_WIN2,
++ ETH_WIN3,
++ ETH_WIN4,
++ ETH_WIN5
++} ETH_ADDR_WIN;
++
++typedef enum _eth_target
++{
++ ETH_TARGET_DRAM ,
++ ETH_TARGET_DEVICE,
++ ETH_TARGET_CBS ,
++ ETH_TARGET_PCI0 ,
++ ETH_TARGET_PCI1
++}ETH_TARGET;
++
++typedef struct _eth_rx_desc
++{
++ unsigned short byte_cnt ; /* Descriptor buffer byte count */
++ unsigned short buf_size ; /* Buffer size */
++ unsigned int cmd_sts ; /* Descriptor command status */
++ unsigned int next_desc_ptr; /* Next descriptor pointer */
++ unsigned int buf_ptr ; /* Descriptor buffer pointer */
++ unsigned int return_info ; /* User resource return information */
++} ETH_RX_DESC;
++
++
++typedef struct _eth_tx_desc
++{
++ unsigned short byte_cnt ; /* Descriptor buffer byte count */
++ unsigned short l4i_chk ; /* CPU provided TCP Checksum */
++ unsigned int cmd_sts ; /* Descriptor command status */
++ unsigned int next_desc_ptr; /* Next descriptor pointer */
++ unsigned int buf_ptr ; /* Descriptor buffer pointer */
++ unsigned int return_info ; /* User resource return information */
++} ETH_TX_DESC;
++
++/* Unified struct for Rx and Tx operations. The user is not required to */
++/* be familier with neither Tx nor Rx descriptors. */
++typedef struct _pkt_info
++{
++ unsigned short byte_cnt ; /* Descriptor buffer byte count */
++ unsigned short l4i_chk ; /* Tx CPU provided TCP Checksum */
++ unsigned int cmd_sts ; /* Descriptor command status */
++ unsigned int buf_ptr ; /* Descriptor buffer pointer */
++ unsigned int return_info ; /* User resource return information */
++} PKT_INFO;
++
++
++typedef struct _eth_win_param
++{
++ ETH_ADDR_WIN win; /* Window number. See ETH_ADDR_WIN enum */
++ ETH_TARGET target; /* System targets. See ETH_TARGET enum */
++ unsigned short attributes; /* BAR attributes. See above macros. */
++ unsigned int base_addr; /* Window base address in unsigned int form */
++ unsigned int high_addr; /* Window high address in unsigned int form */
++ unsigned int size; /* Size in MBytes. Must be % 64Kbyte. */
++ bool enable; /* Enable/disable access to the window. */
++ unsigned short access_ctrl; /* Access ctrl register. see above macros */
++} ETH_WIN_PARAM;
++
++
++/* Ethernet port specific infomation */
++
++typedef struct _eth_port_ctrl
++{
++ ETH_PORT port_num; /* User Ethernet port number */
++ int port_phy_addr; /* User phy address of Ethrnet port */
++ unsigned char port_mac_addr[6]; /* User defined port MAC address. */
++ unsigned int port_config; /* User port configuration value */
++ unsigned int port_config_extend; /* User port config extend value */
++ unsigned int port_sdma_config; /* User port SDMA config value */
++ unsigned int port_serial_control; /* User port serial control value */
++ unsigned int port_tx_queue_command; /* Port active Tx queues summary */
++ unsigned int port_rx_queue_command; /* Port active Rx queues summary */
++
++ /* User function to cast virtual address to CPU bus address */
++ unsigned int (*port_virt_to_phys)(unsigned int addr);
++ /* User scratch pad for user specific data structures */
++ void *port_private;
++
++ bool rx_resource_err[MAX_RX_QUEUE_NUM]; /* Rx ring resource error flag */
++ bool tx_resource_err[MAX_TX_QUEUE_NUM]; /* Tx ring resource error flag */
++
++ /* Tx/Rx rings managment indexes fields. For driver use */
++
++ /* Next available Rx resource */
++ volatile ETH_RX_DESC *p_rx_curr_desc_q[MAX_RX_QUEUE_NUM];
++ /* Returning Rx resource */
++ volatile ETH_RX_DESC *p_rx_used_desc_q[MAX_RX_QUEUE_NUM];
++
++ /* Next available Tx resource */
++ volatile ETH_TX_DESC *p_tx_curr_desc_q[MAX_TX_QUEUE_NUM];
++ /* Returning Tx resource */
++ volatile ETH_TX_DESC *p_tx_used_desc_q[MAX_TX_QUEUE_NUM];
++ /* An extra Tx index to support transmit of multiple buffers per packet */
++ volatile ETH_TX_DESC *p_tx_first_desc_q[MAX_TX_QUEUE_NUM];
++
++ /* Tx/Rx rings size and base variables fields. For driver use */
++
++ volatile ETH_RX_DESC *p_rx_desc_area_base[MAX_RX_QUEUE_NUM];
++ unsigned int rx_desc_area_size[MAX_RX_QUEUE_NUM];
++ char *p_rx_buffer_base[MAX_RX_QUEUE_NUM];
++
++ volatile ETH_TX_DESC *p_tx_desc_area_base[MAX_TX_QUEUE_NUM];
++ unsigned int tx_desc_area_size[MAX_TX_QUEUE_NUM];
++ char *p_tx_buffer_base[MAX_TX_QUEUE_NUM];
++
++} ETH_PORT_INFO;
++
++
++/* ethernet.h API list */
++
++/* Port operation control routines */
++static void eth_port_init (ETH_PORT_INFO *p_eth_port_ctrl);
++static void eth_port_reset(ETH_PORT eth_port_num);
++static bool eth_port_start(ETH_PORT_INFO *p_eth_port_ctrl);
++
++
++/* Port MAC address routines */
++static void eth_port_uc_addr_set (ETH_PORT eth_port_num,
++ unsigned char *p_addr,
++ ETH_QUEUE queue);
++#if 0 /* FIXME */
++static void eth_port_mc_addr (ETH_PORT eth_port_num,
++ unsigned char *p_addr,
++ ETH_QUEUE queue,
++ int option);
++#endif
++
++/* PHY and MIB routines */
++static bool ethernet_phy_reset(ETH_PORT eth_port_num);
++
++static bool eth_port_write_smi_reg(ETH_PORT eth_port_num,
++ unsigned int phy_reg,
++ unsigned int value);
++
++static bool eth_port_read_smi_reg(ETH_PORT eth_port_num,
++ unsigned int phy_reg,
++ unsigned int* value);
++
++static void eth_clear_mib_counters(ETH_PORT eth_port_num);
++
++/* Port data flow control routines */
++static ETH_FUNC_RET_STATUS eth_port_send (ETH_PORT_INFO *p_eth_port_ctrl,
++ ETH_QUEUE tx_queue,
++ PKT_INFO *p_pkt_info);
++static ETH_FUNC_RET_STATUS eth_tx_return_desc(ETH_PORT_INFO *p_eth_port_ctrl,
++ ETH_QUEUE tx_queue,
++ PKT_INFO *p_pkt_info);
++static ETH_FUNC_RET_STATUS eth_port_receive (ETH_PORT_INFO *p_eth_port_ctrl,
++ ETH_QUEUE rx_queue,
++ PKT_INFO *p_pkt_info);
++static ETH_FUNC_RET_STATUS eth_rx_return_buff(ETH_PORT_INFO *p_eth_port_ctrl,
++ ETH_QUEUE rx_queue,
++ PKT_INFO *p_pkt_info);
++
++
++static bool ether_init_tx_desc_ring(ETH_PORT_INFO *p_eth_port_ctrl,
++ ETH_QUEUE tx_queue,
++ int tx_desc_num,
++ int tx_buff_size,
++ unsigned int tx_desc_base_addr,
++ unsigned int tx_buff_base_addr);
++
++static bool ether_init_rx_desc_ring(ETH_PORT_INFO *p_eth_port_ctrl,
++ ETH_QUEUE rx_queue,
++ int rx_desc_num,
++ int rx_buff_size,
++ unsigned int rx_desc_base_addr,
++ unsigned int rx_buff_base_addr);
++
++#endif /* MV64460_ETH_ */
+diff -Naupr u-boot-1.1.6/board/prodrive/p3mx/mv_regs.h u-boot-1.1.6-fsl-1/board/prodrive/p3mx/mv_regs.h
+--- u-boot-1.1.6/board/prodrive/p3mx/mv_regs.h 1969-12-31 18:00:00.000000000 -0600
++++ u-boot-1.1.6-fsl-1/board/prodrive/p3mx/mv_regs.h 2006-12-06 10:33:49.000000000 -0600
+@@ -0,0 +1,1125 @@
++/*
++ * (C) Copyright 2003
++ * Ingo Assmus <ingo.assmus@keymile.com>
++ *
++ * based on - Driver for MV64460X ethernet ports
++ * Copyright (C) 2002 rabeeh@galileo.co.il
++ *
++ * See file CREDITS for list of people who contributed to this
++ * project.
++ *
++ * 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
++ */
++
++/********************************************************************************
++* gt64460r.h - GT-64460 Internal registers definition file.
++*
++* DESCRIPTION:
++* None.
++*
++* DEPENDENCIES:
++* None.
++*
++*******************************************************************************/
++
++#ifndef __INCmv_regsh
++#define __INCmv_regsh
++
++#define MV64460
++
++/* Supported by the Atlantis */
++#define MV64460_INCLUDE_PCI_1
++#define MV64460_INCLUDE_PCI_0_ARBITER
++#define MV64460_INCLUDE_PCI_1_ARBITER
++#define MV64460_INCLUDE_SNOOP_SUPPORT
++#define MV64460_INCLUDE_P2P
++#define MV64460_INCLUDE_ETH_PORT_2
++#define MV64460_INCLUDE_CPU_MAPPING
++#define MV64460_INCLUDE_MPSC
++
++/* Not supported features */
++#undef INCLUDE_CNTMR_4_7
++#undef INCLUDE_DMA_4_7
++
++/****************************************/
++/* Processor Address Space */
++/****************************************/
++
++/* DDR SDRAM BAR and size registers */
++
++#define MV64460_CS_0_BASE_ADDR 0x008
++#define MV64460_CS_0_SIZE 0x010
++#define MV64460_CS_1_BASE_ADDR 0x208
++#define MV64460_CS_1_SIZE 0x210
++#define MV64460_CS_2_BASE_ADDR 0x018
++#define MV64460_CS_2_SIZE 0x020
++#define MV64460_CS_3_BASE_ADDR 0x218
++#define MV64460_CS_3_SIZE 0x220
++
++/* Devices BAR and size registers */
++
++#define MV64460_DEV_CS0_BASE_ADDR 0x028
++#define MV64460_DEV_CS0_SIZE 0x030
++#define MV64460_DEV_CS1_BASE_ADDR 0x228
++#define MV64460_DEV_CS1_SIZE 0x230
++#define MV64460_DEV_CS2_BASE_ADDR 0x248
++#define MV64460_DEV_CS2_SIZE 0x250
++#define MV64460_DEV_CS3_BASE_ADDR 0x038
++#define MV64460_DEV_CS3_SIZE 0x040
++#define MV64460_BOOTCS_BASE_ADDR 0x238
++#define MV64460_BOOTCS_SIZE 0x240
++
++/* PCI 0 BAR and size registers */
++
++#define MV64460_PCI_0_IO_BASE_ADDR 0x048
++#define MV64460_PCI_0_IO_SIZE 0x050
++#define MV64460_PCI_0_MEMORY0_BASE_ADDR 0x058
++#define MV64460_PCI_0_MEMORY0_SIZE 0x060
++#define MV64460_PCI_0_MEMORY1_BASE_ADDR 0x080
++#define MV64460_PCI_0_MEMORY1_SIZE 0x088
++#define MV64460_PCI_0_MEMORY2_BASE_ADDR 0x258
++#define MV64460_PCI_0_MEMORY2_SIZE 0x260
++#define MV64460_PCI_0_MEMORY3_BASE_ADDR 0x280
++#define MV64460_PCI_0_MEMORY3_SIZE 0x288
++
++/* PCI 1 BAR and size registers */
++#define MV64460_PCI_1_IO_BASE_ADDR 0x090
++#define MV64460_PCI_1_IO_SIZE 0x098
++#define MV64460_PCI_1_MEMORY0_BASE_ADDR 0x0a0
++#define MV64460_PCI_1_MEMORY0_SIZE 0x0a8
++#define MV64460_PCI_1_MEMORY1_BASE_ADDR 0x0b0
++#define MV64460_PCI_1_MEMORY1_SIZE 0x0b8
++#define MV64460_PCI_1_MEMORY2_BASE_ADDR 0x2a0
++#define MV64460_PCI_1_MEMORY2_SIZE 0x2a8
++#define MV64460_PCI_1_MEMORY3_BASE_ADDR 0x2b0
++#define MV64460_PCI_1_MEMORY3_SIZE 0x2b8
++
++/* SRAM base address */
++#define MV64460_INTEGRATED_SRAM_BASE_ADDR 0x268
++
++/* internal registers space base address */
++#define MV64460_INTERNAL_SPACE_BASE_ADDR 0x068
++
++/* Enables the CS , DEV_CS , PCI 0 and PCI 1
++ windows above */
++#define MV64460_BASE_ADDR_ENABLE 0x278
++
++/****************************************/
++/* PCI remap registers */
++/****************************************/
++ /* PCI 0 */
++#define MV64460_PCI_0_IO_ADDR_REMAP 0x0f0
++#define MV64460_PCI_0_MEMORY0_LOW_ADDR_REMAP 0x0f8
++#define MV64460_PCI_0_MEMORY0_HIGH_ADDR_REMAP 0x320
++#define MV64460_PCI_0_MEMORY1_LOW_ADDR_REMAP 0x100
++#define MV64460_PCI_0_MEMORY1_HIGH_ADDR_REMAP 0x328
++#define MV64460_PCI_0_MEMORY2_LOW_ADDR_REMAP 0x2f8
++#define MV64460_PCI_0_MEMORY2_HIGH_ADDR_REMAP 0x330
++#define MV64460_PCI_0_MEMORY3_LOW_ADDR_REMAP 0x300
++#define MV64460_PCI_0_MEMORY3_HIGH_ADDR_REMAP 0x338
++ /* PCI 1 */
++#define MV64460_PCI_1_IO_ADDR_REMAP 0x108
++#define MV64460_PCI_1_MEMORY0_LOW_ADDR_REMAP 0x110
++#define MV64460_PCI_1_MEMORY0_HIGH_ADDR_REMAP 0x340
++#define MV64460_PCI_1_MEMORY1_LOW_ADDR_REMAP 0x118
++#define MV64460_PCI_1_MEMORY1_HIGH_ADDR_REMAP 0x348
++#define MV64460_PCI_1_MEMORY2_LOW_ADDR_REMAP 0x310
++#define MV64460_PCI_1_MEMORY2_HIGH_ADDR_REMAP 0x350
++#define MV64460_PCI_1_MEMORY3_LOW_ADDR_REMAP 0x318
++#define MV64460_PCI_1_MEMORY3_HIGH_ADDR_REMAP 0x358
++
++#define MV64460_CPU_PCI_0_HEADERS_RETARGET_CONTROL 0x3b0
++#define MV64460_CPU_PCI_0_HEADERS_RETARGET_BASE 0x3b8
++#define MV64460_CPU_PCI_1_HEADERS_RETARGET_CONTROL 0x3c0
++#define MV64460_CPU_PCI_1_HEADERS_RETARGET_BASE 0x3c8
++#define MV64460_CPU_GE_HEADERS_RETARGET_CONTROL 0x3d0
++#define MV64460_CPU_GE_HEADERS_RETARGET_BASE 0x3d8
++#define MV64460_CPU_IDMA_HEADERS_RETARGET_CONTROL 0x3e0
++#define MV64460_CPU_IDMA_HEADERS_RETARGET_BASE 0x3e8
++
++/****************************************/
++/* CPU Control Registers */
++/****************************************/
++
++#define MV64460_CPU_CONFIG 0x000
++#define MV64460_CPU_MODE 0x120
++#define MV64460_CPU_MASTER_CONTROL 0x160
++#define MV64460_CPU_CROSS_BAR_CONTROL_LOW 0x150
++#define MV64460_CPU_CROSS_BAR_CONTROL_HIGH 0x158
++#define MV64460_CPU_CROSS_BAR_TIMEOUT 0x168
++
++/****************************************/
++/* SMP RegisterS */
++/****************************************/
++
++#define MV64460_SMP_WHO_AM_I 0x200
++#define MV64460_SMP_CPU0_DOORBELL 0x214
++#define MV64460_SMP_CPU0_DOORBELL_CLEAR 0x21C
++#define MV64460_SMP_CPU1_DOORBELL 0x224
++#define MV64460_SMP_CPU1_DOORBELL_CLEAR 0x22C
++#define MV64460_SMP_CPU0_DOORBELL_MASK 0x234
++#define MV64460_SMP_CPU1_DOORBELL_MASK 0x23C
++#define MV64460_SMP_SEMAPHOR0 0x244
++#define MV64460_SMP_SEMAPHOR1 0x24c
++#define MV64460_SMP_SEMAPHOR2 0x254
++#define MV64460_SMP_SEMAPHOR3 0x25c
++#define MV64460_SMP_SEMAPHOR4 0x264
++#define MV64460_SMP_SEMAPHOR5 0x26c
++#define MV64460_SMP_SEMAPHOR6 0x274
++#define MV64460_SMP_SEMAPHOR7 0x27c
++
++/****************************************/
++/* CPU Sync Barrier Register */
++/****************************************/
++
++#define MV64460_CPU_0_SYNC_BARRIER_TRIGGER 0x0c0
++#define MV64460_CPU_0_SYNC_BARRIER_VIRTUAL 0x0c8
++#define MV64460_CPU_1_SYNC_BARRIER_TRIGGER 0x0d0
++#define MV64460_CPU_1_SYNC_BARRIER_VIRTUAL 0x0d8
++
++/****************************************/
++/* CPU Access Protect */
++/****************************************/
++
++#define MV64460_CPU_PROTECT_WINDOW_0_BASE_ADDR 0x180
++#define MV64460_CPU_PROTECT_WINDOW_0_SIZE 0x188
++#define MV64460_CPU_PROTECT_WINDOW_1_BASE_ADDR 0x190
++#define MV64460_CPU_PROTECT_WINDOW_1_SIZE 0x198
++#define MV64460_CPU_PROTECT_WINDOW_2_BASE_ADDR 0x1a0
++#define MV64460_CPU_PROTECT_WINDOW_2_SIZE 0x1a8
++#define MV64460_CPU_PROTECT_WINDOW_3_BASE_ADDR 0x1b0
++#define MV64460_CPU_PROTECT_WINDOW_3_SIZE 0x1b8
++
++
++/****************************************/
++/* CPU Error Report */
++/****************************************/
++
++#define MV64460_CPU_ERROR_ADDR_LOW 0x070
++#define MV64460_CPU_ERROR_ADDR_HIGH 0x078
++#define MV64460_CPU_ERROR_DATA_LOW 0x128
++#define MV64460_CPU_ERROR_DATA_HIGH 0x130
++#define MV64460_CPU_ERROR_PARITY 0x138
++#define MV64460_CPU_ERROR_CAUSE 0x140
++#define MV64460_CPU_ERROR_MASK 0x148
++
++/****************************************/
++/* CPU Interface Debug Registers */
++/****************************************/
++
++#define MV64460_PUNIT_SLAVE_DEBUG_LOW 0x360
++#define MV64460_PUNIT_SLAVE_DEBUG_HIGH 0x368
++#define MV64460_PUNIT_MASTER_DEBUG_LOW 0x370
++#define MV64460_PUNIT_MASTER_DEBUG_HIGH 0x378
++#define MV64460_PUNIT_MMASK 0x3e4
++
++/****************************************/
++/* Integrated SRAM Registers */
++/****************************************/
++
++#define MV64460_SRAM_CONFIG 0x380
++#define MV64460_SRAM_TEST_MODE 0X3F4
++#define MV64460_SRAM_ERROR_CAUSE 0x388
++#define MV64460_SRAM_ERROR_ADDR 0x390
++#define MV64460_SRAM_ERROR_ADDR_HIGH 0X3F8
++#define MV64460_SRAM_ERROR_DATA_LOW 0x398
++#define MV64460_SRAM_ERROR_DATA_HIGH 0x3a0
++#define MV64460_SRAM_ERROR_DATA_PARITY 0x3a8
++
++/****************************************/
++/* SDRAM Configuration */
++/****************************************/
++
++#define MV64460_SDRAM_CONFIG 0x1400
++#define MV64460_D_UNIT_CONTROL_LOW 0x1404
++#define MV64460_D_UNIT_CONTROL_HIGH 0x1424
++#define MV64460_D_UNIT_MMASK 0x14B0
++#define MV64460_SDRAM_TIMING_CONTROL_LOW 0x1408
++#define MV64460_SDRAM_TIMING_CONTROL_HIGH 0x140c
++#define MV64460_SDRAM_ADDR_CONTROL 0x1410
++#define MV64460_SDRAM_OPEN_PAGES_CONTROL 0x1414
++#define MV64460_SDRAM_OPERATION 0x1418
++#define MV64460_SDRAM_MODE 0x141c
++#define MV64460_EXTENDED_DRAM_MODE 0x1420
++#define MV64460_SDRAM_CROSS_BAR_CONTROL_LOW 0x1430
++#define MV64460_SDRAM_CROSS_BAR_CONTROL_HIGH 0x1434
++#define MV64460_SDRAM_CROSS_BAR_TIMEOUT 0x1438
++#define MV64460_SDRAM_ADDR_CTRL_PADS_CALIBRATION 0x14c0
++#define MV64460_SDRAM_DATA_PADS_CALIBRATION 0x14c4
++
++/****************************************/
++/* SDRAM Error Report */
++/****************************************/
++
++#define MV64460_SDRAM_ERROR_DATA_LOW 0x1444
++#define MV64460_SDRAM_ERROR_DATA_HIGH 0x1440
++#define MV64460_SDRAM_ERROR_ADDR 0x1450
++#define MV64460_SDRAM_RECEIVED_ECC 0x1448
++#define MV64460_SDRAM_CALCULATED_ECC 0x144c
++#define MV64460_SDRAM_ECC_CONTROL 0x1454
++#define MV64460_SDRAM_ECC_ERROR_COUNTER 0x1458
++
++/******************************************/
++/* Controlled Delay Line (CDL) Registers */
++/******************************************/
++
++#define MV64460_DFCDL_CONFIG0 0x1480
++#define MV64460_DFCDL_CONFIG1 0x1484
++#define MV64460_DLL_WRITE 0x1488
++#define MV64460_DLL_READ 0x148c
++#define MV64460_SRAM_ADDR 0x1490
++#define MV64460_SRAM_DATA0 0x1494
++#define MV64460_SRAM_DATA1 0x1498
++#define MV64460_SRAM_DATA2 0x149c
++#define MV64460_DFCL_PROBE 0x14a0
++
++/******************************************/
++/* Debug Registers */
++/******************************************/
++
++#define MV64460_DUNIT_DEBUG_LOW 0x1460
++#define MV64460_DUNIT_DEBUG_HIGH 0x1464
++#define MV64460_DUNIT_MMASK 0X1b40
++
++/****************************************/
++/* Device Parameters */
++/****************************************/
++
++#define MV64460_DEVICE_BANK0_PARAMETERS 0x45c
++#define MV64460_DEVICE_BANK1_PARAMETERS 0x460
++#define MV64460_DEVICE_BANK2_PARAMETERS 0x464
++#define MV64460_DEVICE_BANK3_PARAMETERS 0x468
++#define MV64460_DEVICE_BOOT_BANK_PARAMETERS 0x46c
++#define MV64460_DEVICE_INTERFACE_CONTROL 0x4c0
++#define MV64460_DEVICE_INTERFACE_CROSS_BAR_CONTROL_LOW 0x4c8
++#define MV64460_DEVICE_INTERFACE_CROSS_BAR_CONTROL_HIGH 0x4cc
++#define MV64460_DEVICE_INTERFACE_CROSS_BAR_TIMEOUT 0x4c4
++
++/****************************************/
++/* Device interrupt registers */
++/****************************************/
++
++#define MV64460_DEVICE_INTERRUPT_CAUSE 0x4d0
++#define MV64460_DEVICE_INTERRUPT_MASK 0x4d4
++#define MV64460_DEVICE_ERROR_ADDR 0x4d8
++#define MV64460_DEVICE_ERROR_DATA 0x4dc
++#define MV64460_DEVICE_ERROR_PARITY 0x4e0
++
++/****************************************/
++/* Device debug registers */
++/****************************************/
++
++#define MV64460_DEVICE_DEBUG_LOW 0x4e4
++#define MV64460_DEVICE_DEBUG_HIGH 0x4e8
++#define MV64460_RUNIT_MMASK 0x4f0
++
++/****************************************/
++/* PCI Slave Address Decoding registers */
++/****************************************/
++
++#define MV64460_PCI_0_CS_0_BANK_SIZE 0xc08
++#define MV64460_PCI_1_CS_0_BANK_SIZE 0xc88
++#define MV64460_PCI_0_CS_1_BANK_SIZE 0xd08
++#define MV64460_PCI_1_CS_1_BANK_SIZE 0xd88
++#define MV64460_PCI_0_CS_2_BANK_SIZE 0xc0c
++#define MV64460_PCI_1_CS_2_BANK_SIZE 0xc8c
++#define MV64460_PCI_0_CS_3_BANK_SIZE 0xd0c
++#define MV64460_PCI_1_CS_3_BANK_SIZE 0xd8c
++#define MV64460_PCI_0_DEVCS_0_BANK_SIZE 0xc10
++#define MV64460_PCI_1_DEVCS_0_BANK_SIZE 0xc90
++#define MV64460_PCI_0_DEVCS_1_BANK_SIZE 0xd10
++#define MV64460_PCI_1_DEVCS_1_BANK_SIZE 0xd90
++#define MV64460_PCI_0_DEVCS_2_BANK_SIZE 0xd18
++#define MV64460_PCI_1_DEVCS_2_BANK_SIZE 0xd98
++#define MV64460_PCI_0_DEVCS_3_BANK_SIZE 0xc14
++#define MV64460_PCI_1_DEVCS_3_BANK_SIZE 0xc94
++#define MV64460_PCI_0_DEVCS_BOOT_BANK_SIZE 0xd14
++#define MV64460_PCI_1_DEVCS_BOOT_BANK_SIZE 0xd94
++#define MV64460_PCI_0_P2P_MEM0_BAR_SIZE 0xd1c
++#define MV64460_PCI_1_P2P_MEM0_BAR_SIZE 0xd9c
++#define MV64460_PCI_0_P2P_MEM1_BAR_SIZE 0xd20
++#define MV64460_PCI_1_P2P_MEM1_BAR_SIZE 0xda0
++#define MV64460_PCI_0_P2P_I_O_BAR_SIZE 0xd24
++#define MV64460_PCI_1_P2P_I_O_BAR_SIZE 0xda4
++#define MV64460_PCI_0_CPU_BAR_SIZE 0xd28
++#define MV64460_PCI_1_CPU_BAR_SIZE 0xda8
++#define MV64460_PCI_0_INTERNAL_SRAM_BAR_SIZE 0xe00
++#define MV64460_PCI_1_INTERNAL_SRAM_BAR_SIZE 0xe80
++#define MV64460_PCI_0_EXPANSION_ROM_BAR_SIZE 0xd2c
++#define MV64460_PCI_1_EXPANSION_ROM_BAR_SIZE 0xd9c
++#define MV64460_PCI_0_BASE_ADDR_REG_ENABLE 0xc3c
++#define MV64460_PCI_1_BASE_ADDR_REG_ENABLE 0xcbc
++#define MV64460_PCI_0_CS_0_BASE_ADDR_REMAP 0xc48
++#define MV64460_PCI_1_CS_0_BASE_ADDR_REMAP 0xcc8
++#define MV64460_PCI_0_CS_1_BASE_ADDR_REMAP 0xd48
++#define MV64460_PCI_1_CS_1_BASE_ADDR_REMAP 0xdc8
++#define MV64460_PCI_0_CS_2_BASE_ADDR_REMAP 0xc4c
++#define MV64460_PCI_1_CS_2_BASE_ADDR_REMAP 0xccc
++#define MV64460_PCI_0_CS_3_BASE_ADDR_REMAP 0xd4c
++#define MV64460_PCI_1_CS_3_BASE_ADDR_REMAP 0xdcc
++#define MV64460_PCI_0_CS_0_BASE_HIGH_ADDR_REMAP 0xF04
++#define MV64460_PCI_1_CS_0_BASE_HIGH_ADDR_REMAP 0xF84
++#define MV64460_PCI_0_CS_1_BASE_HIGH_ADDR_REMAP 0xF08
++#define MV64460_PCI_1_CS_1_BASE_HIGH_ADDR_REMAP 0xF88
++#define MV64460_PCI_0_CS_2_BASE_HIGH_ADDR_REMAP 0xF0C
++#define MV64460_PCI_1_CS_2_BASE_HIGH_ADDR_REMAP 0xF8C
++#define MV64460_PCI_0_CS_3_BASE_HIGH_ADDR_REMAP 0xF10
++#define MV64460_PCI_1_CS_3_BASE_HIGH_ADDR_REMAP 0xF90
++#define MV64460_PCI_0_DEVCS_0_BASE_ADDR_REMAP 0xc50
++#define MV64460_PCI_1_DEVCS_0_BASE_ADDR_REMAP 0xcd0
++#define MV64460_PCI_0_DEVCS_1_BASE_ADDR_REMAP 0xd50
++#define MV64460_PCI_1_DEVCS_1_BASE_ADDR_REMAP 0xdd0
++#define MV64460_PCI_0_DEVCS_2_BASE_ADDR_REMAP 0xd58
++#define MV64460_PCI_1_DEVCS_2_BASE_ADDR_REMAP 0xdd8
++#define MV64460_PCI_0_DEVCS_3_BASE_ADDR_REMAP 0xc54
++#define MV64460_PCI_1_DEVCS_3_BASE_ADDR_REMAP 0xcd4
++#define MV64460_PCI_0_DEVCS_BOOTCS_BASE_ADDR_REMAP 0xd54
++#define MV64460_PCI_1_DEVCS_BOOTCS_BASE_ADDR_REMAP 0xdd4
++#define MV64460_PCI_0_P2P_MEM0_BASE_ADDR_REMAP_LOW 0xd5c
++#define MV64460_PCI_1_P2P_MEM0_BASE_ADDR_REMAP_LOW 0xddc
++#define MV64460_PCI_0_P2P_MEM0_BASE_ADDR_REMAP_HIGH 0xd60
++#define MV64460_PCI_1_P2P_MEM0_BASE_ADDR_REMAP_HIGH 0xde0
++#define MV64460_PCI_0_P2P_MEM1_BASE_ADDR_REMAP_LOW 0xd64
++#define MV64460_PCI_1_P2P_MEM1_BASE_ADDR_REMAP_LOW 0xde4
++#define MV64460_PCI_0_P2P_MEM1_BASE_ADDR_REMAP_HIGH 0xd68
++#define MV64460_PCI_1_P2P_MEM1_BASE_ADDR_REMAP_HIGH 0xde8
++#define MV64460_PCI_0_P2P_I_O_BASE_ADDR_REMAP 0xd6c
++#define MV64460_PCI_1_P2P_I_O_BASE_ADDR_REMAP 0xdec
++#define MV64460_PCI_0_CPU_BASE_ADDR_REMAP_LOW 0xd70
++#define MV64460_PCI_1_CPU_BASE_ADDR_REMAP_LOW 0xdf0
++#define MV64460_PCI_0_CPU_BASE_ADDR_REMAP_HIGH 0xd74
++#define MV64460_PCI_1_CPU_BASE_ADDR_REMAP_HIGH 0xdf4
++#define MV64460_PCI_0_INTEGRATED_SRAM_BASE_ADDR_REMAP 0xf00
++#define MV64460_PCI_1_INTEGRATED_SRAM_BASE_ADDR_REMAP 0xf80
++#define MV64460_PCI_0_EXPANSION_ROM_BASE_ADDR_REMAP 0xf38
++#define MV64460_PCI_1_EXPANSION_ROM_BASE_ADDR_REMAP 0xfb8
++#define MV64460_PCI_0_ADDR_DECODE_CONTROL 0xd3c
++#define MV64460_PCI_1_ADDR_DECODE_CONTROL 0xdbc
++#define MV64460_PCI_0_HEADERS_RETARGET_CONTROL 0xF40
++#define MV64460_PCI_1_HEADERS_RETARGET_CONTROL 0xFc0
++#define MV64460_PCI_0_HEADERS_RETARGET_BASE 0xF44
++#define MV64460_PCI_1_HEADERS_RETARGET_BASE 0xFc4
++#define MV64460_PCI_0_HEADERS_RETARGET_HIGH 0xF48
++#define MV64460_PCI_1_HEADERS_RETARGET_HIGH 0xFc8
++
++/***********************************/
++/* PCI Control Register Map */
++/***********************************/
++
++#define MV64460_PCI_0_DLL_STATUS_AND_COMMAND 0x1d20
++#define MV64460_PCI_1_DLL_STATUS_AND_COMMAND 0x1da0
++#define MV64460_PCI_0_MPP_PADS_DRIVE_CONTROL 0x1d1C
++#define MV64460_PCI_1_MPP_PADS_DRIVE_CONTROL 0x1d9C
++#define MV64460_PCI_0_COMMAND 0xc00
++#define MV64460_PCI_1_COMMAND 0xc80
++#define MV64460_PCI_0_MODE 0xd00
++#define MV64460_PCI_1_MODE 0xd80
++#define MV64460_PCI_0_RETRY 0xc04
++#define MV64460_PCI_1_RETRY 0xc84
++#define MV64460_PCI_0_READ_BUFFER_DISCARD_TIMER 0xd04
++#define MV64460_PCI_1_READ_BUFFER_DISCARD_TIMER 0xd84
++#define MV64460_PCI_0_MSI_TRIGGER_TIMER 0xc38
++#define MV64460_PCI_1_MSI_TRIGGER_TIMER 0xcb8
++#define MV64460_PCI_0_ARBITER_CONTROL 0x1d00
++#define MV64460_PCI_1_ARBITER_CONTROL 0x1d80
++#define MV64460_PCI_0_CROSS_BAR_CONTROL_LOW 0x1d08
++#define MV64460_PCI_1_CROSS_BAR_CONTROL_LOW 0x1d88
++#define MV64460_PCI_0_CROSS_BAR_CONTROL_HIGH 0x1d0c
++#define MV64460_PCI_1_CROSS_BAR_CONTROL_HIGH 0x1d8c
++#define MV64460_PCI_0_CROSS_BAR_TIMEOUT 0x1d04
++#define MV64460_PCI_1_CROSS_BAR_TIMEOUT 0x1d84
++#define MV64460_PCI_0_SYNC_BARRIER_TRIGGER_REG 0x1D18
++#define MV64460_PCI_1_SYNC_BARRIER_TRIGGER_REG 0x1D98
++#define MV64460_PCI_0_SYNC_BARRIER_VIRTUAL_REG 0x1d10
++#define MV64460_PCI_1_SYNC_BARRIER_VIRTUAL_REG 0x1d90
++#define MV64460_PCI_0_P2P_CONFIG 0x1d14
++#define MV64460_PCI_1_P2P_CONFIG 0x1d94
++
++#define MV64460_PCI_0_ACCESS_CONTROL_BASE_0_LOW 0x1e00
++#define MV64460_PCI_0_ACCESS_CONTROL_BASE_0_HIGH 0x1e04
++#define MV64460_PCI_0_ACCESS_CONTROL_SIZE_0 0x1e08
++#define MV64460_PCI_0_ACCESS_CONTROL_BASE_1_LOW 0x1e10
++#define MV64460_PCI_0_ACCESS_CONTROL_BASE_1_HIGH 0x1e14
++#define MV64460_PCI_0_ACCESS_CONTROL_SIZE_1 0x1e18
++#define MV64460_PCI_0_ACCESS_CONTROL_BASE_2_LOW 0x1e20
++#define MV64460_PCI_0_ACCESS_CONTROL_BASE_2_HIGH 0x1e24
++#define MV64460_PCI_0_ACCESS_CONTROL_SIZE_2 0x1e28
++#define MV64460_PCI_0_ACCESS_CONTROL_BASE_3_LOW 0x1e30
++#define MV64460_PCI_0_ACCESS_CONTROL_BASE_3_HIGH 0x1e34
++#define MV64460_PCI_0_ACCESS_CONTROL_SIZE_3 0x1e38
++#define MV64460_PCI_0_ACCESS_CONTROL_BASE_4_LOW 0x1e40
++#define MV64460_PCI_0_ACCESS_CONTROL_BASE_4_HIGH 0x1e44
++#define MV64460_PCI_0_ACCESS_CONTROL_SIZE_4 0x1e48
++#define MV64460_PCI_0_ACCESS_CONTROL_BASE_5_LOW 0x1e50
++#define MV64460_PCI_0_ACCESS_CONTROL_BASE_5_HIGH 0x1e54
++#define MV64460_PCI_0_ACCESS_CONTROL_SIZE_5 0x1e58
++
++#define MV64460_PCI_1_ACCESS_CONTROL_BASE_0_LOW 0x1e80
++#define MV64460_PCI_1_ACCESS_CONTROL_BASE_0_HIGH 0x1e84
++#define MV64460_PCI_1_ACCESS_CONTROL_SIZE_0 0x1e88
++#define MV64460_PCI_1_ACCESS_CONTROL_BASE_1_LOW 0x1e90
++#define MV64460_PCI_1_ACCESS_CONTROL_BASE_1_HIGH 0x1e94
++#define MV64460_PCI_1_ACCESS_CONTROL_SIZE_1 0x1e98
++#define MV64460_PCI_1_ACCESS_CONTROL_BASE_2_LOW 0x1ea0
++#define MV64460_PCI_1_ACCESS_CONTROL_BASE_2_HIGH 0x1ea4
++#define MV64460_PCI_1_ACCESS_CONTROL_SIZE_2 0x1ea8
++#define MV64460_PCI_1_ACCESS_CONTROL_BASE_3_LOW 0x1eb0
++#define MV64460_PCI_1_ACCESS_CONTROL_BASE_3_HIGH 0x1eb4
++#define MV64460_PCI_1_ACCESS_CONTROL_SIZE_3 0x1eb8
++#define MV64460_PCI_1_ACCESS_CONTROL_BASE_4_LOW 0x1ec0
++#define MV64460_PCI_1_ACCESS_CONTROL_BASE_4_HIGH 0x1ec4
++#define MV64460_PCI_1_ACCESS_CONTROL_SIZE_4 0x1ec8
++#define MV64460_PCI_1_ACCESS_CONTROL_BASE_5_LOW 0x1ed0
++#define MV64460_PCI_1_ACCESS_CONTROL_BASE_5_HIGH 0x1ed4
++#define MV64460_PCI_1_ACCESS_CONTROL_SIZE_5 0x1ed8
++
++/****************************************/
++/* PCI Configuration Access Registers */
++/****************************************/
++
++#define MV64460_PCI_0_CONFIG_ADDR 0xcf8
++#define MV64460_PCI_0_CONFIG_DATA_VIRTUAL_REG 0xcfc
++#define MV64460_PCI_1_CONFIG_ADDR 0xc78
++#define MV64460_PCI_1_CONFIG_DATA_VIRTUAL_REG 0xc7c
++#define MV64460_PCI_0_INTERRUPT_ACKNOWLEDGE_VIRTUAL_REG 0xc34
++#define MV64460_PCI_1_INTERRUPT_ACKNOWLEDGE_VIRTUAL_REG 0xcb4
++
++/****************************************/
++/* PCI Error Report Registers */
++/****************************************/
++
++#define MV64460_PCI_0_SERR_MASK 0xc28
++#define MV64460_PCI_1_SERR_MASK 0xca8
++#define MV64460_PCI_0_ERROR_ADDR_LOW 0x1d40
++#define MV64460_PCI_1_ERROR_ADDR_LOW 0x1dc0
++#define MV64460_PCI_0_ERROR_ADDR_HIGH 0x1d44
++#define MV64460_PCI_1_ERROR_ADDR_HIGH 0x1dc4
++#define MV64460_PCI_0_ERROR_ATTRIBUTE 0x1d48
++#define MV64460_PCI_1_ERROR_ATTRIBUTE 0x1dc8
++#define MV64460_PCI_0_ERROR_COMMAND 0x1d50
++#define MV64460_PCI_1_ERROR_COMMAND 0x1dd0
++#define MV64460_PCI_0_ERROR_CAUSE 0x1d58
++#define MV64460_PCI_1_ERROR_CAUSE 0x1dd8
++#define MV64460_PCI_0_ERROR_MASK 0x1d5c
++#define MV64460_PCI_1_ERROR_MASK 0x1ddc
++
++/****************************************/
++/* PCI Debug Registers */
++/****************************************/
++
++#define MV64460_PCI_0_MMASK 0X1D24
++#define MV64460_PCI_1_MMASK 0X1DA4
++
++/*********************************************/
++/* PCI Configuration, Function 0, Registers */
++/*********************************************/
++
++#define MV64460_PCI_DEVICE_AND_VENDOR_ID 0x000
++#define MV64460_PCI_STATUS_AND_COMMAND 0x004
++#define MV64460_PCI_CLASS_CODE_AND_REVISION_ID 0x008
++#define MV64460_PCI_BIST_HEADER_TYPE_LATENCY_TIMER_CACHE_LINE 0x00C
++
++#define MV64460_PCI_SCS_0_BASE_ADDR_LOW 0x010
++#define MV64460_PCI_SCS_0_BASE_ADDR_HIGH 0x014
++#define MV64460_PCI_SCS_1_BASE_ADDR_LOW 0x018
++#define MV64460_PCI_SCS_1_BASE_ADDR_HIGH 0x01C
++#define MV64460_PCI_INTERNAL_REG_MEM_MAPPED_BASE_ADDR_LOW 0x020
++#define MV64460_PCI_INTERNAL_REG_MEM_MAPPED_BASE_ADDR_HIGH 0x024
++#define MV64460_PCI_SUBSYSTEM_ID_AND_SUBSYSTEM_VENDOR_ID 0x02c
++#define MV64460_PCI_EXPANSION_ROM_BASE_ADDR_REG 0x030
++#define MV64460_PCI_CAPABILTY_LIST_POINTER 0x034
++#define MV64460_PCI_INTERRUPT_PIN_AND_LINE 0x03C
++ /* capability list */
++#define MV64460_PCI_POWER_MANAGEMENT_CAPABILITY 0x040
++#define MV64460_PCI_POWER_MANAGEMENT_STATUS_AND_CONTROL 0x044
++#define MV64460_PCI_VPD_ADDR 0x048
++#define MV64460_PCI_VPD_DATA 0x04c
++#define MV64460_PCI_MSI_MESSAGE_CONTROL 0x050
++#define MV64460_PCI_MSI_MESSAGE_ADDR 0x054
++#define MV64460_PCI_MSI_MESSAGE_UPPER_ADDR 0x058
++#define MV64460_PCI_MSI_MESSAGE_DATA 0x05c
++#define MV64460_PCI_X_COMMAND 0x060
++#define MV64460_PCI_X_STATUS 0x064
++#define MV64460_PCI_COMPACT_PCI_HOT_SWAP 0x068
++
++/***********************************************/
++/* PCI Configuration, Function 1, Registers */
++/***********************************************/
++
++#define MV64460_PCI_SCS_2_BASE_ADDR_LOW 0x110
++#define MV64460_PCI_SCS_2_BASE_ADDR_HIGH 0x114
++#define MV64460_PCI_SCS_3_BASE_ADDR_LOW 0x118
++#define MV64460_PCI_SCS_3_BASE_ADDR_HIGH 0x11c
++#define MV64460_PCI_INTERNAL_SRAM_BASE_ADDR_LOW 0x120
++#define MV64460_PCI_INTERNAL_SRAM_BASE_ADDR_HIGH 0x124
++
++/***********************************************/
++/* PCI Configuration, Function 2, Registers */
++/***********************************************/
++
++#define MV64460_PCI_DEVCS_0_BASE_ADDR_LOW 0x210
++#define MV64460_PCI_DEVCS_0_BASE_ADDR_HIGH 0x214
++#define MV64460_PCI_DEVCS_1_BASE_ADDR_LOW 0x218
++#define MV64460_PCI_DEVCS_1_BASE_ADDR_HIGH 0x21c
++#define MV64460_PCI_DEVCS_2_BASE_ADDR_LOW 0x220
++#define MV64460_PCI_DEVCS_2_BASE_ADDR_HIGH 0x224
++
++/***********************************************/
++/* PCI Configuration, Function 3, Registers */
++/***********************************************/
++
++#define MV64460_PCI_DEVCS_3_BASE_ADDR_LOW 0x310
++#define MV64460_PCI_DEVCS_3_BASE_ADDR_HIGH 0x314
++#define MV64460_PCI_BOOT_CS_BASE_ADDR_LOW 0x318
++#define MV64460_PCI_BOOT_CS_BASE_ADDR_HIGH 0x31c
++#define MV64460_PCI_CPU_BASE_ADDR_LOW 0x220
++#define MV64460_PCI_CPU_BASE_ADDR_HIGH 0x224
++
++/***********************************************/
++/* PCI Configuration, Function 4, Registers */
++/***********************************************/
++
++#define MV64460_PCI_P2P_MEM0_BASE_ADDR_LOW 0x410
++#define MV64460_PCI_P2P_MEM0_BASE_ADDR_HIGH 0x414
++#define MV64460_PCI_P2P_MEM1_BASE_ADDR_LOW 0x418
++#define MV64460_PCI_P2P_MEM1_BASE_ADDR_HIGH 0x41c
++#define MV64460_PCI_P2P_I_O_BASE_ADDR 0x420
++#define MV64460_PCI_INTERNAL_REGS_I_O_MAPPED_BASE_ADDR 0x424
++
++/****************************************/
++/* Messaging Unit Registers (I20) */
++/****************************************/
++
++#define MV64460_I2O_INBOUND_MESSAGE_REG0_PCI_0_SIDE 0x010
++#define MV64460_I2O_INBOUND_MESSAGE_REG1_PCI_0_SIDE 0x014
++#define MV64460_I2O_OUTBOUND_MESSAGE_REG0_PCI_0_SIDE 0x018
++#define MV64460_I2O_OUTBOUND_MESSAGE_REG1_PCI_0_SIDE 0x01C
++#define MV64460_I2O_INBOUND_DOORBELL_REG_PCI_0_SIDE 0x020
++#define MV64460_I2O_INBOUND_INTERRUPT_CAUSE_REG_PCI_0_SIDE 0x024
++#define MV64460_I2O_INBOUND_INTERRUPT_MASK_REG_PCI_0_SIDE 0x028
++#define MV64460_I2O_OUTBOUND_DOORBELL_REG_PCI_0_SIDE 0x02C
++#define MV64460_I2O_OUTBOUND_INTERRUPT_CAUSE_REG_PCI_0_SIDE 0x030
++#define MV64460_I2O_OUTBOUND_INTERRUPT_MASK_REG_PCI_0_SIDE 0x034
++#define MV64460_I2O_INBOUND_QUEUE_PORT_VIRTUAL_REG_PCI_0_SIDE 0x040
++#define MV64460_I2O_OUTBOUND_QUEUE_PORT_VIRTUAL_REG_PCI_0_SIDE 0x044
++#define MV64460_I2O_QUEUE_CONTROL_REG_PCI_0_SIDE 0x050
++#define MV64460_I2O_QUEUE_BASE_ADDR_REG_PCI_0_SIDE 0x054
++#define MV64460_I2O_INBOUND_FREE_HEAD_POINTER_REG_PCI_0_SIDE 0x060
++#define MV64460_I2O_INBOUND_FREE_TAIL_POINTER_REG_PCI_0_SIDE 0x064
++#define MV64460_I2O_INBOUND_POST_HEAD_POINTER_REG_PCI_0_SIDE 0x068
++#define MV64460_I2O_INBOUND_POST_TAIL_POINTER_REG_PCI_0_SIDE 0x06C
++#define MV64460_I2O_OUTBOUND_FREE_HEAD_POINTER_REG_PCI_0_SIDE 0x070
++#define MV64460_I2O_OUTBOUND_FREE_TAIL_POINTER_REG_PCI_0_SIDE 0x074
++#define MV64460_I2O_OUTBOUND_POST_HEAD_POINTER_REG_PCI_0_SIDE 0x0F8
++#define MV64460_I2O_OUTBOUND_POST_TAIL_POINTER_REG_PCI_0_SIDE 0x0FC
++
++#define MV64460_I2O_INBOUND_MESSAGE_REG0_PCI_1_SIDE 0x090
++#define MV64460_I2O_INBOUND_MESSAGE_REG1_PCI_1_SIDE 0x094
++#define MV64460_I2O_OUTBOUND_MESSAGE_REG0_PCI_1_SIDE 0x098
++#define MV64460_I2O_OUTBOUND_MESSAGE_REG1_PCI_1_SIDE 0x09C
++#define MV64460_I2O_INBOUND_DOORBELL_REG_PCI_1_SIDE 0x0A0
++#define MV64460_I2O_INBOUND_INTERRUPT_CAUSE_REG_PCI_1_SIDE 0x0A4
++#define MV64460_I2O_INBOUND_INTERRUPT_MASK_REG_PCI_1_SIDE 0x0A8
++#define MV64460_I2O_OUTBOUND_DOORBELL_REG_PCI_1_SIDE 0x0AC
++#define MV64460_I2O_OUTBOUND_INTERRUPT_CAUSE_REG_PCI_1_SIDE 0x0B0
++#define MV64460_I2O_OUTBOUND_INTERRUPT_MASK_REG_PCI_1_SIDE 0x0B4
++#define MV64460_I2O_INBOUND_QUEUE_PORT_VIRTUAL_REG_PCI_1_SIDE 0x0C0
++#define MV64460_I2O_OUTBOUND_QUEUE_PORT_VIRTUAL_REG_PCI_1_SIDE 0x0C4
++#define MV64460_I2O_QUEUE_CONTROL_REG_PCI_1_SIDE 0x0D0
++#define MV64460_I2O_QUEUE_BASE_ADDR_REG_PCI_1_SIDE 0x0D4
++#define MV64460_I2O_INBOUND_FREE_HEAD_POINTER_REG_PCI_1_SIDE 0x0E0
++#define MV64460_I2O_INBOUND_FREE_TAIL_POINTER_REG_PCI_1_SIDE 0x0E4
++#define MV64460_I2O_INBOUND_POST_HEAD_POINTER_REG_PCI_1_SIDE 0x0E8
++#define MV64460_I2O_INBOUND_POST_TAIL_POINTER_REG_PCI_1_SIDE 0x0EC
++#define MV64460_I2O_OUTBOUND_FREE_HEAD_POINTER_REG_PCI_1_SIDE 0x0F0
++#define MV64460_I2O_OUTBOUND_FREE_TAIL_POINTER_REG_PCI_1_SIDE 0x0F4
++#define MV64460_I2O_OUTBOUND_POST_HEAD_POINTER_REG_PCI_1_SIDE 0x078
++#define MV64460_I2O_OUTBOUND_POST_TAIL_POINTER_REG_PCI_1_SIDE 0x07C
++
++#define MV64460_I2O_INBOUND_MESSAGE_REG0_CPU0_SIDE 0x1C10
++#define MV64460_I2O_INBOUND_MESSAGE_REG1_CPU0_SIDE 0x1C14
++#define MV64460_I2O_OUTBOUND_MESSAGE_REG0_CPU0_SIDE 0x1C18
++#define MV64460_I2O_OUTBOUND_MESSAGE_REG1_CPU0_SIDE 0x1C1C
++#define MV64460_I2O_INBOUND_DOORBELL_REG_CPU0_SIDE 0x1C20
++#define MV64460_I2O_INBOUND_INTERRUPT_CAUSE_REG_CPU0_SIDE 0x1C24
++#define MV64460_I2O_INBOUND_INTERRUPT_MASK_REG_CPU0_SIDE 0x1C28
++#define MV64460_I2O_OUTBOUND_DOORBELL_REG_CPU0_SIDE 0x1C2C
++#define MV64460_I2O_OUTBOUND_INTERRUPT_CAUSE_REG_CPU0_SIDE 0x1C30
++#define MV64460_I2O_OUTBOUND_INTERRUPT_MASK_REG_CPU0_SIDE 0x1C34
++#define MV64460_I2O_INBOUND_QUEUE_PORT_VIRTUAL_REG_CPU0_SIDE 0x1C40
++#define MV64460_I2O_OUTBOUND_QUEUE_PORT_VIRTUAL_REG_CPU0_SIDE 0x1C44
++#define MV64460_I2O_QUEUE_CONTROL_REG_CPU0_SIDE 0x1C50
++#define MV64460_I2O_QUEUE_BASE_ADDR_REG_CPU0_SIDE 0x1C54
++#define MV64460_I2O_INBOUND_FREE_HEAD_POINTER_REG_CPU0_SIDE 0x1C60
++#define MV64460_I2O_INBOUND_FREE_TAIL_POINTER_REG_CPU0_SIDE 0x1C64
++#define MV64460_I2O_INBOUND_POST_HEAD_POINTER_REG_CPU0_SIDE 0x1C68
++#define MV64460_I2O_INBOUND_POST_TAIL_POINTER_REG_CPU0_SIDE 0x1C6C
++#define MV64460_I2O_OUTBOUND_FREE_HEAD_POINTER_REG_CPU0_SIDE 0x1C70
++#define MV64460_I2O_OUTBOUND_FREE_TAIL_POINTER_REG_CPU0_SIDE 0x1C74
++#define MV64460_I2O_OUTBOUND_POST_HEAD_POINTER_REG_CPU0_SIDE 0x1CF8
++#define MV64460_I2O_OUTBOUND_POST_TAIL_POINTER_REG_CPU0_SIDE 0x1CFC
++#define MV64460_I2O_INBOUND_MESSAGE_REG0_CPU1_SIDE 0x1C90
++#define MV64460_I2O_INBOUND_MESSAGE_REG1_CPU1_SIDE 0x1C94
++#define MV64460_I2O_OUTBOUND_MESSAGE_REG0_CPU1_SIDE 0x1C98
++#define MV64460_I2O_OUTBOUND_MESSAGE_REG1_CPU1_SIDE 0x1C9C
++#define MV64460_I2O_INBOUND_DOORBELL_REG_CPU1_SIDE 0x1CA0
++#define MV64460_I2O_INBOUND_INTERRUPT_CAUSE_REG_CPU1_SIDE 0x1CA4
++#define MV64460_I2O_INBOUND_INTERRUPT_MASK_REG_CPU1_SIDE 0x1CA8
++#define MV64460_I2O_OUTBOUND_DOORBELL_REG_CPU1_SIDE 0x1CAC
++#define MV64460_I2O_OUTBOUND_INTERRUPT_CAUSE_REG_CPU1_SIDE 0x1CB0
++#define MV64460_I2O_OUTBOUND_INTERRUPT_MASK_REG_CPU1_SIDE 0x1CB4
++#define MV64460_I2O_INBOUND_QUEUE_PORT_VIRTUAL_REG_CPU1_SIDE 0x1CC0
++#define MV64460_I2O_OUTBOUND_QUEUE_PORT_VIRTUAL_REG_CPU1_SIDE 0x1CC4
++#define MV64460_I2O_QUEUE_CONTROL_REG_CPU1_SIDE 0x1CD0
++#define MV64460_I2O_QUEUE_BASE_ADDR_REG_CPU1_SIDE 0x1CD4
++#define MV64460_I2O_INBOUND_FREE_HEAD_POINTER_REG_CPU1_SIDE 0x1CE0
++#define MV64460_I2O_INBOUND_FREE_TAIL_POINTER_REG_CPU1_SIDE 0x1CE4
++#define MV64460_I2O_INBOUND_POST_HEAD_POINTER_REG_CPU1_SIDE 0x1CE8
++#define MV64460_I2O_INBOUND_POST_TAIL_POINTER_REG_CPU1_SIDE 0x1CEC
++#define MV64460_I2O_OUTBOUND_FREE_HEAD_POINTER_REG_CPU1_SIDE 0x1CF0
++#define MV64460_I2O_OUTBOUND_FREE_TAIL_POINTER_REG_CPU1_SIDE 0x1CF4
++#define MV64460_I2O_OUTBOUND_POST_HEAD_POINTER_REG_CPU1_SIDE 0x1C78
++#define MV64460_I2O_OUTBOUND_POST_TAIL_POINTER_REG_CPU1_SIDE 0x1C7C
++
++/****************************************/
++/* Ethernet Unit Registers */
++/****************************************/
++
++#define MV64460_ETH_PHY_ADDR_REG 0x2000
++#define MV64460_ETH_SMI_REG 0x2004
++#define MV64460_ETH_UNIT_DEFAULT_ADDR_REG 0x2008
++#define MV64460_ETH_UNIT_DEFAULTID_REG 0x200c
++#define MV64460_ETH_UNIT_INTERRUPT_CAUSE_REG 0x2080
++#define MV64460_ETH_UNIT_INTERRUPT_MASK_REG 0x2084
++#define MV64460_ETH_UNIT_INTERNAL_USE_REG 0x24fc
++#define MV64460_ETH_UNIT_ERROR_ADDR_REG 0x2094
++#define MV64460_ETH_BAR_0 0x2200
++#define MV64460_ETH_BAR_1 0x2208
++#define MV64460_ETH_BAR_2 0x2210
++#define MV64460_ETH_BAR_3 0x2218
++#define MV64460_ETH_BAR_4 0x2220
++#define MV64460_ETH_BAR_5 0x2228
++#define MV64460_ETH_SIZE_REG_0 0x2204
++#define MV64460_ETH_SIZE_REG_1 0x220c
++#define MV64460_ETH_SIZE_REG_2 0x2214
++#define MV64460_ETH_SIZE_REG_3 0x221c
++#define MV64460_ETH_SIZE_REG_4 0x2224
++#define MV64460_ETH_SIZE_REG_5 0x222c
++#define MV64460_ETH_HEADERS_RETARGET_BASE_REG 0x2230
++#define MV64460_ETH_HEADERS_RETARGET_CONTROL_REG 0x2234
++#define MV64460_ETH_HIGH_ADDR_REMAP_REG_0 0x2280
++#define MV64460_ETH_HIGH_ADDR_REMAP_REG_1 0x2284
++#define MV64460_ETH_HIGH_ADDR_REMAP_REG_2 0x2288
++#define MV64460_ETH_HIGH_ADDR_REMAP_REG_3 0x228c
++#define MV64460_ETH_BASE_ADDR_ENABLE_REG 0x2290
++#define MV64460_ETH_ACCESS_PROTECTION_REG(port) (0x2294 + (port<<2))
++#define MV64460_ETH_MIB_COUNTERS_BASE(port) (0x3000 + (port<<7))
++#define MV64460_ETH_PORT_CONFIG_REG(port) (0x2400 + (port<<10))
++#define MV64460_ETH_PORT_CONFIG_EXTEND_REG(port) (0x2404 + (port<<10))
++#define MV64460_ETH_MII_SERIAL_PARAMETRS_REG(port) (0x2408 + (port<<10))
++#define MV64460_ETH_GMII_SERIAL_PARAMETRS_REG(port) (0x240c + (port<<10))
++#define MV64460_ETH_VLAN_ETHERTYPE_REG(port) (0x2410 + (port<<10))
++#define MV64460_ETH_MAC_ADDR_LOW(port) (0x2414 + (port<<10))
++#define MV64460_ETH_MAC_ADDR_HIGH(port) (0x2418 + (port<<10))
++#define MV64460_ETH_SDMA_CONFIG_REG(port) (0x241c + (port<<10))
++#define MV64460_ETH_DSCP_0(port) (0x2420 + (port<<10))
++#define MV64460_ETH_DSCP_1(port) (0x2424 + (port<<10))
++#define MV64460_ETH_DSCP_2(port) (0x2428 + (port<<10))
++#define MV64460_ETH_DSCP_3(port) (0x242c + (port<<10))
++#define MV64460_ETH_DSCP_4(port) (0x2430 + (port<<10))
++#define MV64460_ETH_DSCP_5(port) (0x2434 + (port<<10))
++#define MV64460_ETH_DSCP_6(port) (0x2438 + (port<<10))
++#define MV64460_ETH_PORT_SERIAL_CONTROL_REG(port) (0x243c + (port<<10))
++#define MV64460_ETH_VLAN_PRIORITY_TAG_TO_PRIORITY(port) (0x2440 + (port<<10))
++#define MV64460_ETH_PORT_STATUS_REG(port) (0x2444 + (port<<10))
++#define MV64460_ETH_TRANSMIT_QUEUE_COMMAND_REG(port) (0x2448 + (port<<10))
++#define MV64460_ETH_TX_QUEUE_FIXED_PRIORITY(port) (0x244c + (port<<10))
++#define MV64460_ETH_PORT_TX_TOKEN_BUCKET_RATE_CONFIG(port) (0x2450 + (port<<10))
++#define MV64460_ETH_MAXIMUM_TRANSMIT_UNIT(port) (0x2458 + (port<<10))
++#define MV64460_ETH_PORT_MAXIMUM_TOKEN_BUCKET_SIZE(port) (0x245c + (port<<10))
++#define MV64460_ETH_INTERRUPT_CAUSE_REG(port) (0x2460 + (port<<10))
++#define MV64460_ETH_INTERRUPT_CAUSE_EXTEND_REG(port) (0x2464 + (port<<10))
++#define MV64460_ETH_INTERRUPT_MASK_REG(port) (0x2468 + (port<<10))
++#define MV64460_ETH_INTERRUPT_EXTEND_MASK_REG(port) (0x246c + (port<<10))
++#define MV64460_ETH_RX_FIFO_URGENT_THRESHOLD_REG(port) (0x2470 + (port<<10))
++#define MV64460_ETH_TX_FIFO_URGENT_THRESHOLD_REG(port) (0x2474 + (port<<10))
++#define MV64460_ETH_RX_MINIMAL_FRAME_SIZE_REG(port) (0x247c + (port<<10))
++#define MV64460_ETH_RX_DISCARDED_FRAMES_COUNTER(port) (0x2484 + (port<<10)
++#define MV64460_ETH_PORT_DEBUG_0_REG(port) (0x248c + (port<<10))
++#define MV64460_ETH_PORT_DEBUG_1_REG(port) (0x2490 + (port<<10))
++#define MV64460_ETH_PORT_INTERNAL_ADDR_ERROR_REG(port) (0x2494 + (port<<10))
++#define MV64460_ETH_INTERNAL_USE_REG(port) (0x24fc + (port<<10))
++#define MV64460_ETH_RECEIVE_QUEUE_COMMAND_REG(port) (0x2680 + (port<<10))
++#define MV64460_ETH_CURRENT_SERVED_TX_DESC_PTR(port) (0x2684 + (port<<10))
++#define MV64460_ETH_RX_CURRENT_QUEUE_DESC_PTR_0(port) (0x260c + (port<<10))
++#define MV64460_ETH_RX_CURRENT_QUEUE_DESC_PTR_1(port) (0x261c + (port<<10))
++#define MV64460_ETH_RX_CURRENT_QUEUE_DESC_PTR_2(port) (0x262c + (port<<10))
++#define MV64460_ETH_RX_CURRENT_QUEUE_DESC_PTR_3(port) (0x263c + (port<<10))
++#define MV64460_ETH_RX_CURRENT_QUEUE_DESC_PTR_4(port) (0x264c + (port<<10))
++#define MV64460_ETH_RX_CURRENT_QUEUE_DESC_PTR_5(port) (0x265c + (port<<10))
++#define MV64460_ETH_RX_CURRENT_QUEUE_DESC_PTR_6(port) (0x266c + (port<<10))
++#define MV64460_ETH_RX_CURRENT_QUEUE_DESC_PTR_7(port) (0x267c + (port<<10))
++#define MV64460_ETH_TX_CURRENT_QUEUE_DESC_PTR_0(port) (0x26c0 + (port<<10))
++#define MV64460_ETH_TX_CURRENT_QUEUE_DESC_PTR_1(port) (0x26c4 + (port<<10))
++#define MV64460_ETH_TX_CURRENT_QUEUE_DESC_PTR_2(port) (0x26c8 + (port<<10))
++#define MV64460_ETH_TX_CURRENT_QUEUE_DESC_PTR_3(port) (0x26cc + (port<<10))
++#define MV64460_ETH_TX_CURRENT_QUEUE_DESC_PTR_4(port) (0x26d0 + (port<<10))
++#define MV64460_ETH_TX_CURRENT_QUEUE_DESC_PTR_5(port) (0x26d4 + (port<<10))
++#define MV64460_ETH_TX_CURRENT_QUEUE_DESC_PTR_6(port) (0x26d8 + (port<<10))
++#define MV64460_ETH_TX_CURRENT_QUEUE_DESC_PTR_7(port) (0x26dc + (port<<10))
++#define MV64460_ETH_TX_QUEUE_0_TOKEN_BUCKET_COUNT(port) (0x2700 + (port<<10))
++#define MV64460_ETH_TX_QUEUE_1_TOKEN_BUCKET_COUNT(port) (0x2710 + (port<<10))
++#define MV64460_ETH_TX_QUEUE_2_TOKEN_BUCKET_COUNT(port) (0x2720 + (port<<10))
++#define MV64460_ETH_TX_QUEUE_3_TOKEN_BUCKET_COUNT(port) (0x2730 + (port<<10))
++#define MV64460_ETH_TX_QUEUE_4_TOKEN_BUCKET_COUNT(port) (0x2740 + (port<<10))
++#define MV64460_ETH_TX_QUEUE_5_TOKEN_BUCKET_COUNT(port) (0x2750 + (port<<10))
++#define MV64460_ETH_TX_QUEUE_6_TOKEN_BUCKET_COUNT(port) (0x2760 + (port<<10))
++#define MV64460_ETH_TX_QUEUE_7_TOKEN_BUCKET_COUNT(port) (0x2770 + (port<<10))
++#define MV64460_ETH_TX_QUEUE_0_TOKEN_BUCKET_CONFIG(port) (0x2704 + (port<<10))
++#define MV64460_ETH_TX_QUEUE_1_TOKEN_BUCKET_CONFIG(port) (0x2714 + (port<<10))
++#define MV64460_ETH_TX_QUEUE_2_TOKEN_BUCKET_CONFIG(port) (0x2724 + (port<<10))
++#define MV64460_ETH_TX_QUEUE_3_TOKEN_BUCKET_CONFIG(port) (0x2734 + (port<<10))
++#define MV64460_ETH_TX_QUEUE_4_TOKEN_BUCKET_CONFIG(port) (0x2744 + (port<<10))
++#define MV64460_ETH_TX_QUEUE_5_TOKEN_BUCKET_CONFIG(port) (0x2754 + (port<<10))
++#define MV64460_ETH_TX_QUEUE_6_TOKEN_BUCKET_CONFIG(port) (0x2764 + (port<<10))
++#define MV64460_ETH_TX_QUEUE_7_TOKEN_BUCKET_CONFIG(port) (0x2774 + (port<<10))
++#define MV64460_ETH_TX_QUEUE_0_ARBITER_CONFIG(port) (0x2708 + (port<<10))
++#define MV64460_ETH_TX_QUEUE_1_ARBITER_CONFIG(port) (0x2718 + (port<<10))
++#define MV64460_ETH_TX_QUEUE_2_ARBITER_CONFIG(port) (0x2728 + (port<<10))
++#define MV64460_ETH_TX_QUEUE_3_ARBITER_CONFIG(port) (0x2738 + (port<<10))
++#define MV64460_ETH_TX_QUEUE_4_ARBITER_CONFIG(port) (0x2748 + (port<<10))
++#define MV64460_ETH_TX_QUEUE_5_ARBITER_CONFIG(port) (0x2758 + (port<<10))
++#define MV64460_ETH_TX_QUEUE_6_ARBITER_CONFIG(port) (0x2768 + (port<<10))
++#define MV64460_ETH_TX_QUEUE_7_ARBITER_CONFIG(port) (0x2778 + (port<<10))
++#define MV64460_ETH_PORT_TX_TOKEN_BUCKET_COUNT(port) (0x2780 + (port<<10))
++#define MV64460_ETH_DA_FILTER_SPECIAL_MULTICAST_TABLE_BASE(port) (0x3400 + (port<<10))
++#define MV64460_ETH_DA_FILTER_OTHER_MULTICAST_TABLE_BASE(port) (0x3500 + (port<<10))
++#define MV64460_ETH_DA_FILTER_UNICAST_TABLE_BASE(port) (0x3600 + (port<<10))
++
++/*******************************************/
++/* CUNIT Registers */
++/*******************************************/
++
++ /* Address Decoding Register Map */
++
++#define MV64460_CUNIT_BASE_ADDR_REG0 0xf200
++#define MV64460_CUNIT_BASE_ADDR_REG1 0xf208
++#define MV64460_CUNIT_BASE_ADDR_REG2 0xf210
++#define MV64460_CUNIT_BASE_ADDR_REG3 0xf218
++#define MV64460_CUNIT_SIZE0 0xf204
++#define MV64460_CUNIT_SIZE1 0xf20c
++#define MV64460_CUNIT_SIZE2 0xf214
++#define MV64460_CUNIT_SIZE3 0xf21c
++#define MV64460_CUNIT_HIGH_ADDR_REMAP_REG0 0xf240
++#define MV64460_CUNIT_HIGH_ADDR_REMAP_REG1 0xf244
++#define MV64460_CUNIT_BASE_ADDR_ENABLE_REG 0xf250
++#define MV64460_MPSC0_ACCESS_PROTECTION_REG 0xf254
++#define MV64460_MPSC1_ACCESS_PROTECTION_REG 0xf258
++#define MV64460_CUNIT_INTERNAL_SPACE_BASE_ADDR_REG 0xf25C
++
++ /* Error Report Registers */
++
++#define MV64460_CUNIT_INTERRUPT_CAUSE_REG 0xf310
++#define MV64460_CUNIT_INTERRUPT_MASK_REG 0xf314
++#define MV64460_CUNIT_ERROR_ADDR 0xf318
++
++ /* Cunit Control Registers */
++
++#define MV64460_CUNIT_ARBITER_CONTROL_REG 0xf300
++#define MV64460_CUNIT_CONFIG_REG 0xb40c
++#define MV64460_CUNIT_CRROSBAR_TIMEOUT_REG 0xf304
++
++ /* Cunit Debug Registers */
++
++#define MV64460_CUNIT_DEBUG_LOW 0xf340
++#define MV64460_CUNIT_DEBUG_HIGH 0xf344
++#define MV64460_CUNIT_MMASK 0xf380
++
++ /* Cunit Base Address Enable Window Bits*/
++#define MV64460_CUNIT_BASE_ADDR_WIN_0_BIT 0x0
++#define MV64460_CUNIT_BASE_ADDR_WIN_1_BIT 0x1
++#define MV64460_CUNIT_BASE_ADDR_WIN_2_BIT 0x2
++#define MV64460_CUNIT_BASE_ADDR_WIN_3_BIT 0x3
++
++ /* MPSCs Clocks Routing Registers */
++
++#define MV64460_MPSC_ROUTING_REG 0xb400
++#define MV64460_MPSC_RX_CLOCK_ROUTING_REG 0xb404
++#define MV64460_MPSC_TX_CLOCK_ROUTING_REG 0xb408
++
++ /* MPSCs Interrupts Registers */
++
++#define MV64460_MPSC_CAUSE_REG(port) (0xb804 + (port<<3))
++#define MV64460_MPSC_MASK_REG(port) (0xb884 + (port<<3))
++
++#define MV64460_MPSC_MAIN_CONFIG_LOW(port) (0x8000 + (port<<12))
++#define MV64460_MPSC_MAIN_CONFIG_HIGH(port) (0x8004 + (port<<12))
++#define MV64460_MPSC_PROTOCOL_CONFIG(port) (0x8008 + (port<<12))
++#define MV64460_MPSC_CHANNEL_REG1(port) (0x800c + (port<<12))
++#define MV64460_MPSC_CHANNEL_REG2(port) (0x8010 + (port<<12))
++#define MV64460_MPSC_CHANNEL_REG3(port) (0x8014 + (port<<12))
++#define MV64460_MPSC_CHANNEL_REG4(port) (0x8018 + (port<<12))
++#define MV64460_MPSC_CHANNEL_REG5(port) (0x801c + (port<<12))
++#define MV64460_MPSC_CHANNEL_REG6(port) (0x8020 + (port<<12))
++#define MV64460_MPSC_CHANNEL_REG7(port) (0x8024 + (port<<12))
++#define MV64460_MPSC_CHANNEL_REG8(port) (0x8028 + (port<<12))
++#define MV64460_MPSC_CHANNEL_REG9(port) (0x802c + (port<<12))
++#define MV64460_MPSC_CHANNEL_REG10(port) (0x8030 + (port<<12))
++
++ /* MPSC0 Registers */
++
++
++/***************************************/
++/* SDMA Registers */
++/***************************************/
++
++#define MV64460_SDMA_CONFIG_REG(channel) (0x4000 + (channel<<13))
++#define MV64460_SDMA_COMMAND_REG(channel) (0x4008 + (channel<<13))
++#define MV64460_SDMA_CURRENT_RX_DESCRIPTOR_POINTER(channel) (0x4810 + (channel<<13))
++#define MV64460_SDMA_CURRENT_TX_DESCRIPTOR_POINTER(channel) (0x4c10 + (channel<<13))
++#define MV64460_SDMA_FIRST_TX_DESCRIPTOR_POINTER(channel) (0x4c14 + (channel<<13))
++
++#define MV64460_SDMA_CAUSE_REG 0xb800
++#define MV64460_SDMA_MASK_REG 0xb880
++
++
++/****************************************/
++/* SDMA Address Space Targets */
++/****************************************/
++
++#define MV64460_SDMA_DRAM_CS_0_TARGET 0x0e00
++#define MV64460_SDMA_DRAM_CS_1_TARGET 0x0d00
++#define MV64460_SDMA_DRAM_CS_2_TARGET 0x0b00
++#define MV64460_SDMA_DRAM_CS_3_TARGET 0x0700
++
++#define MV64460_SDMA_DEV_CS_0_TARGET 0x1e01
++#define MV64460_SDMA_DEV_CS_1_TARGET 0x1d01
++#define MV64460_SDMA_DEV_CS_2_TARGET 0x1b01
++#define MV64460_SDMA_DEV_CS_3_TARGET 0x1701
++
++#define MV64460_SDMA_BOOT_CS_TARGET 0x0f00
++
++#define MV64460_SDMA_SRAM_TARGET 0x0003
++#define MV64460_SDMA_60X_BUS_TARGET 0x4003
++
++#define MV64460_PCI_0_TARGET 0x0003
++#define MV64460_PCI_1_TARGET 0x0004
++
++
++/* Devices BAR and size registers */
++
++#define MV64460_DEV_CS0_BASE_ADDR 0x028
++#define MV64460_DEV_CS0_SIZE 0x030
++#define MV64460_DEV_CS1_BASE_ADDR 0x228
++#define MV64460_DEV_CS1_SIZE 0x230
++#define MV64460_DEV_CS2_BASE_ADDR 0x248
++#define MV64460_DEV_CS2_SIZE 0x250
++#define MV64460_DEV_CS3_BASE_ADDR 0x038
++#define MV64460_DEV_CS3_SIZE 0x040
++#define MV64460_BOOTCS_BASE_ADDR 0x238
++#define MV64460_BOOTCS_SIZE 0x240
++
++/* SDMA Window access protection */
++#define MV64460_SDMA_WIN_ACCESS_NOT_ALLOWED 0
++#define MV64460_SDMA_WIN_ACCESS_READ_ONLY 1
++#define MV64460_SDMA_WIN_ACCESS_FULL 2
++
++/* BRG Interrupts */
++
++#define MV64460_BRG_CONFIG_REG(brg) (0xb200 + (brg<<3))
++#define MV64460_BRG_BAUDE_TUNING_REG(brg) (0xb204 + (brg<<3))
++#define MV64460_BRG_CAUSE_REG 0xb834
++#define MV64460_BRG_MASK_REG 0xb8b4
++
++/****************************************/
++/* DMA Channel Control */
++/****************************************/
++
++#define MV64460_DMA_CHANNEL0_CONTROL 0x840
++#define MV64460_DMA_CHANNEL0_CONTROL_HIGH 0x880
++#define MV64460_DMA_CHANNEL1_CONTROL 0x844
++#define MV64460_DMA_CHANNEL1_CONTROL_HIGH 0x884
++#define MV64460_DMA_CHANNEL2_CONTROL 0x848
++#define MV64460_DMA_CHANNEL2_CONTROL_HIGH 0x888
++#define MV64460_DMA_CHANNEL3_CONTROL 0x84C
++#define MV64460_DMA_CHANNEL3_CONTROL_HIGH 0x88C
++
++
++/****************************************/
++/* IDMA Registers */
++/****************************************/
++
++#define MV64460_DMA_CHANNEL0_BYTE_COUNT 0x800
++#define MV64460_DMA_CHANNEL1_BYTE_COUNT 0x804
++#define MV64460_DMA_CHANNEL2_BYTE_COUNT 0x808
++#define MV64460_DMA_CHANNEL3_BYTE_COUNT 0x80C
++#define MV64460_DMA_CHANNEL0_SOURCE_ADDR 0x810
++#define MV64460_DMA_CHANNEL1_SOURCE_ADDR 0x814
++#define MV64460_DMA_CHANNEL2_SOURCE_ADDR 0x818
++#define MV64460_DMA_CHANNEL3_SOURCE_ADDR 0x81c
++#define MV64460_DMA_CHANNEL0_DESTINATION_ADDR 0x820
++#define MV64460_DMA_CHANNEL1_DESTINATION_ADDR 0x824
++#define MV64460_DMA_CHANNEL2_DESTINATION_ADDR 0x828
++#define MV64460_DMA_CHANNEL3_DESTINATION_ADDR 0x82C
++#define MV64460_DMA_CHANNEL0_NEXT_DESCRIPTOR_POINTER 0x830
++#define MV64460_DMA_CHANNEL1_NEXT_DESCRIPTOR_POINTER 0x834
++#define MV64460_DMA_CHANNEL2_NEXT_DESCRIPTOR_POINTER 0x838
++#define MV64460_DMA_CHANNEL3_NEXT_DESCRIPTOR_POINTER 0x83C
++#define MV64460_DMA_CHANNEL0_CURRENT_DESCRIPTOR_POINTER 0x870
++#define MV64460_DMA_CHANNEL1_CURRENT_DESCRIPTOR_POINTER 0x874
++#define MV64460_DMA_CHANNEL2_CURRENT_DESCRIPTOR_POINTER 0x878
++#define MV64460_DMA_CHANNEL3_CURRENT_DESCRIPTOR_POINTER 0x87C
++
++ /* IDMA Address Decoding Base Address Registers */
++
++#define MV64460_DMA_BASE_ADDR_REG0 0xa00
++#define MV64460_DMA_BASE_ADDR_REG1 0xa08
++#define MV64460_DMA_BASE_ADDR_REG2 0xa10
++#define MV64460_DMA_BASE_ADDR_REG3 0xa18
++#define MV64460_DMA_BASE_ADDR_REG4 0xa20
++#define MV64460_DMA_BASE_ADDR_REG5 0xa28
++#define MV64460_DMA_BASE_ADDR_REG6 0xa30
++#define MV64460_DMA_BASE_ADDR_REG7 0xa38
++
++ /* IDMA Address Decoding Size Address Register */
++
++#define MV64460_DMA_SIZE_REG0 0xa04
++#define MV64460_DMA_SIZE_REG1 0xa0c
++#define MV64460_DMA_SIZE_REG2 0xa14
++#define MV64460_DMA_SIZE_REG3 0xa1c
++#define MV64460_DMA_SIZE_REG4 0xa24
++#define MV64460_DMA_SIZE_REG5 0xa2c
++#define MV64460_DMA_SIZE_REG6 0xa34
++#define MV64460_DMA_SIZE_REG7 0xa3C
++
++ /* IDMA Address Decoding High Address Remap and Access
++ Protection Registers */
++
++#define MV64460_DMA_HIGH_ADDR_REMAP_REG0 0xa60
++#define MV64460_DMA_HIGH_ADDR_REMAP_REG1 0xa64
++#define MV64460_DMA_HIGH_ADDR_REMAP_REG2 0xa68
++#define MV64460_DMA_HIGH_ADDR_REMAP_REG3 0xa6C
++#define MV64460_DMA_BASE_ADDR_ENABLE_REG 0xa80
++#define MV64460_DMA_CHANNEL0_ACCESS_PROTECTION_REG 0xa70
++#define MV64460_DMA_CHANNEL1_ACCESS_PROTECTION_REG 0xa74
++#define MV64460_DMA_CHANNEL2_ACCESS_PROTECTION_REG 0xa78
++#define MV64460_DMA_CHANNEL3_ACCESS_PROTECTION_REG 0xa7c
++#define MV64460_DMA_ARBITER_CONTROL 0x860
++#define MV64460_DMA_CROSS_BAR_TIMEOUT 0x8d0
++
++ /* IDMA Headers Retarget Registers */
++
++#define MV64460_DMA_HEADERS_RETARGET_CONTROL 0xa84
++#define MV64460_DMA_HEADERS_RETARGET_BASE 0xa88
++
++ /* IDMA Interrupt Register */
++
++#define MV64460_DMA_INTERRUPT_CAUSE_REG 0x8c0
++#define MV64460_DMA_INTERRUPT_CAUSE_MASK 0x8c4
++#define MV64460_DMA_ERROR_ADDR 0x8c8
++#define MV64460_DMA_ERROR_SELECT 0x8cc
++
++ /* IDMA Debug Register ( for internal use ) */
++
++#define MV64460_DMA_DEBUG_LOW 0x8e0
++#define MV64460_DMA_DEBUG_HIGH 0x8e4
++#define MV64460_DMA_SPARE 0xA8C
++
++/****************************************/
++/* Timer_Counter */
++/****************************************/
++
++#define MV64460_TIMER_COUNTER0 0x850
++#define MV64460_TIMER_COUNTER1 0x854
++#define MV64460_TIMER_COUNTER2 0x858
++#define MV64460_TIMER_COUNTER3 0x85C
++#define MV64460_TIMER_COUNTER_0_3_CONTROL 0x864
++#define MV64460_TIMER_COUNTER_0_3_INTERRUPT_CAUSE 0x868
++#define MV64460_TIMER_COUNTER_0_3_INTERRUPT_MASK 0x86c
++
++/****************************************/
++/* Watchdog registers */
++/****************************************/
++
++#define MV64460_WATCHDOG_CONFIG_REG 0xb410
++#define MV64460_WATCHDOG_VALUE_REG 0xb414
++
++/****************************************/
++/* I2C Registers */
++/****************************************/
++
++#define MV64460_I2C_SLAVE_ADDR 0xc000
++#define MV64460_I2C_EXTENDED_SLAVE_ADDR 0xc010
++#define MV64460_I2C_DATA 0xc004
++#define MV64460_I2C_CONTROL 0xc008
++#define MV64460_I2C_STATUS_BAUDE_RATE 0xc00C
++#define MV64460_I2C_SOFT_RESET 0xc01c
++
++/****************************************/
++/* GPP Interface Registers */
++/****************************************/
++
++#define MV64460_GPP_IO_CONTROL 0xf100
++#define MV64460_GPP_LEVEL_CONTROL 0xf110
++#define MV64460_GPP_VALUE 0xf104
++#define MV64460_GPP_INTERRUPT_CAUSE 0xf108
++#define MV64460_GPP_INTERRUPT_MASK0 0xf10c
++#define MV64460_GPP_INTERRUPT_MASK1 0xf114
++#define MV64460_GPP_VALUE_SET 0xf118
++#define MV64460_GPP_VALUE_CLEAR 0xf11c
++
++/****************************************/
++/* Interrupt Controller Registers */
++/****************************************/
++
++/****************************************/
++/* Interrupts */
++/****************************************/
++
++#define MV64460_MAIN_INTERRUPT_CAUSE_LOW 0x004
++#define MV64460_MAIN_INTERRUPT_CAUSE_HIGH 0x00c
++#define MV64460_CPU_INTERRUPT0_MASK_LOW 0x014
++#define MV64460_CPU_INTERRUPT0_MASK_HIGH 0x01c
++#define MV64460_CPU_INTERRUPT0_SELECT_CAUSE 0x024
++#define MV64460_CPU_INTERRUPT1_MASK_LOW 0x034
++#define MV64460_CPU_INTERRUPT1_MASK_HIGH 0x03c
++#define MV64460_CPU_INTERRUPT1_SELECT_CAUSE 0x044
++#define MV64460_INTERRUPT0_MASK_0_LOW 0x054
++#define MV64460_INTERRUPT0_MASK_0_HIGH 0x05c
++#define MV64460_INTERRUPT0_SELECT_CAUSE 0x064
++#define MV64460_INTERRUPT1_MASK_0_LOW 0x074
++#define MV64460_INTERRUPT1_MASK_0_HIGH 0x07c
++#define MV64460_INTERRUPT1_SELECT_CAUSE 0x084
++
++/****************************************/
++/* MPP Interface Registers */
++/****************************************/
++
++#define MV64460_MPP_CONTROL0 0xf000
++#define MV64460_MPP_CONTROL1 0xf004
++#define MV64460_MPP_CONTROL2 0xf008
++#define MV64460_MPP_CONTROL3 0xf00c
++
++/****************************************/
++/* Serial Initialization registers */
++/****************************************/
++
++#define MV64460_SERIAL_INIT_LAST_DATA 0xf324
++#define MV64460_SERIAL_INIT_CONTROL 0xf328
++#define MV64460_SERIAL_INIT_STATUS 0xf32c
++
++
++#endif /* __INCgt64460rh */
+diff -Naupr u-boot-1.1.6/board/prodrive/p3mx/p3mx.c u-boot-1.1.6-fsl-1/board/prodrive/p3mx/p3mx.c
+--- u-boot-1.1.6/board/prodrive/p3mx/p3mx.c 1969-12-31 18:00:00.000000000 -0600
++++ u-boot-1.1.6-fsl-1/board/prodrive/p3mx/p3mx.c 2006-12-06 10:33:49.000000000 -0600
+@@ -0,0 +1,809 @@
++/*
++ * (C) Copyright 2006
++ * Stefan Roese, DENX Software Engineering, sr@denx.de.
++ *
++ * Based on original work by
++ * Roel Loeffen, (C) Copyright 2006 Prodrive B.V.
++ * Josh Huber, (C) Copyright 2001 Mission Critical Linux, Inc.
++ *
++ * See file CREDITS for list of people who contributed to this
++ * project.
++ *
++ * 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
++ *
++ * modifications for the DB64360 eval board based by Ingo.Assmus@keymile.com
++ * modifications for the cpci750 by reinhard.arlt@esd-electronics.com
++ * modifications for the P3M750 by roel.loeffen@prodrive.nl
++ */
++
++/*
++ * p3m750.c - main board support/init for the Prodrive p3m750/p3m7448.
++ */
++
++#include <common.h>
++#include <74xx_7xx.h>
++#include "../../Marvell/include/memory.h"
++#include "../../Marvell/include/pci.h"
++#include "../../Marvell/include/mv_gen_reg.h"
++#include <net.h>
++#include <i2c.h>
++
++#include "eth.h"
++#include "mpsc.h"
++#include "64460.h"
++#include "mv_regs.h"
++
++DECLARE_GLOBAL_DATA_PTR;
++
++#undef DEBUG
++/*#define DEBUG */
++
++#ifdef CONFIG_PCI
++#define MAP_PCI
++#endif /* of CONFIG_PCI */
++
++#ifdef DEBUG
++#define DP(x) x
++#else
++#define DP(x)
++#endif
++
++extern void flush_data_cache (void);
++extern void invalidate_l1_instruction_cache (void);
++extern flash_info_t flash_info[];
++
++/* ------------------------------------------------------------------------- */
++
++/* this is the current GT register space location */
++/* it starts at CFG_DFL_GT_REGS but moves later to CFG_GT_REGS */
++
++/* Unfortunately, we cant change it while we are in flash, so we initialize it
++ * to the "final" value. This means that any debug_led calls before
++ * board_early_init_f wont work right (like in cpu_init_f).
++ * See also my_remap_gt_regs below. (NTL)
++ */
++
++void board_prebootm_init (void);
++unsigned int INTERNAL_REG_BASE_ADDR = CFG_GT_REGS;
++int display_mem_map (void);
++
++/* ------------------------------------------------------------------------- */
++
++/*
++ * This is a version of the GT register space remapping function that
++ * doesn't touch globals (meaning, it's ok to run from flash.)
++ *
++ * Unfortunately, this has the side effect that a writable
++ * INTERNAL_REG_BASE_ADDR is impossible. Oh well.
++ */
++
++void my_remap_gt_regs (u32 cur_loc, u32 new_loc)
++{
++ u32 temp;
++
++ /* check and see if it's already moved */
++ temp = in_le32 ((u32 *) (new_loc + INTERNAL_SPACE_DECODE));
++ if ((temp & 0xffff) == new_loc >> 16)
++ return;
++
++ temp = (in_le32 ((u32 *) (cur_loc + INTERNAL_SPACE_DECODE)) &
++ 0xffff0000) | (new_loc >> 16);
++
++ out_le32 ((u32 *) (cur_loc + INTERNAL_SPACE_DECODE), temp);
++
++ while (GTREGREAD (INTERNAL_SPACE_DECODE) != temp);
++}
++
++#ifdef CONFIG_PCI
++
++static void gt_pci_config (void)
++{
++ unsigned int stat;
++ unsigned int val = 0x00fff864; /* DINK32: BusNum 23:16, DevNum 15:11, */
++ /* FuncNum 10:8, RegNum 7:2 */
++
++ /*
++ * In PCIX mode devices provide their own bus and device numbers.
++ * We query the Discovery II's
++ * config registers by writing ones to the bus and device.
++ * We then update the Virtual register with the correct value for the
++ * bus and device.
++ */
++ if ((GTREGREAD (PCI_0_MODE) & (BIT4 | BIT5)) != 0) { /* if PCI-X */
++ GT_REG_WRITE (PCI_0_CONFIG_ADDR, BIT31 | val);
++
++ GT_REG_READ (PCI_0_CONFIG_DATA_VIRTUAL_REG, &stat);
++
++ GT_REG_WRITE (PCI_0_CONFIG_ADDR, BIT31 | val);
++ GT_REG_WRITE (PCI_0_CONFIG_DATA_VIRTUAL_REG,
++ (stat & 0xffff0000) | CFG_PCI_IDSEL);
++
++ }
++ if ((GTREGREAD (PCI_1_MODE) & (BIT4 | BIT5)) != 0) { /* if PCI-X */
++ GT_REG_WRITE (PCI_1_CONFIG_ADDR, BIT31 | val);
++ GT_REG_READ (PCI_1_CONFIG_DATA_VIRTUAL_REG, &stat);
++
++ GT_REG_WRITE (PCI_1_CONFIG_ADDR, BIT31 | val);
++ GT_REG_WRITE (PCI_1_CONFIG_DATA_VIRTUAL_REG,
++ (stat & 0xffff0000) | CFG_PCI_IDSEL);
++ }
++
++ /* Enable master */
++ PCI_MASTER_ENABLE (0, SELF);
++ PCI_MASTER_ENABLE (1, SELF);
++
++ /* Enable PCI0/1 Mem0 and IO 0 disable all others */
++ GT_REG_READ (BASE_ADDR_ENABLE, &stat);
++ stat |= (1 << 11) | (1 << 12) | (1 << 13) | (1 << 16) | (1 << 17) |
++ (1 << 18);
++ stat &= ~((1 << 9) | (1 << 10) | (1 << 14) | (1 << 15));
++ GT_REG_WRITE (BASE_ADDR_ENABLE, stat);
++
++ /* ronen:
++ * add write to pci remap registers for 64460.
++ * in 64360 when writing to pci base go and overide remap automaticaly,
++ * in 64460 it doesn't
++ */
++ GT_REG_WRITE (PCI_0_IO_BASE_ADDR, CFG_PCI0_IO_SPACE >> 16);
++ GT_REG_WRITE (PCI_0I_O_ADDRESS_REMAP, CFG_PCI0_IO_SPACE_PCI >> 16);
++ GT_REG_WRITE (PCI_0_IO_SIZE, (CFG_PCI0_IO_SIZE - 1) >> 16);
++
++ GT_REG_WRITE (PCI_0_MEMORY0_BASE_ADDR, CFG_PCI0_MEM_BASE >> 16);
++ GT_REG_WRITE (PCI_0MEMORY0_ADDRESS_REMAP, CFG_PCI0_MEM_BASE >> 16);
++ GT_REG_WRITE (PCI_0_MEMORY0_SIZE, (CFG_PCI0_MEM_SIZE - 1) >> 16);
++
++ GT_REG_WRITE (PCI_1_IO_BASE_ADDR, CFG_PCI1_IO_SPACE >> 16);
++ GT_REG_WRITE (PCI_1I_O_ADDRESS_REMAP, CFG_PCI1_IO_SPACE_PCI >> 16);
++ GT_REG_WRITE (PCI_1_IO_SIZE, (CFG_PCI1_IO_SIZE - 1) >> 16);
++
++ GT_REG_WRITE (PCI_1_MEMORY0_BASE_ADDR, CFG_PCI1_MEM_BASE >> 16);
++ GT_REG_WRITE (PCI_1MEMORY0_ADDRESS_REMAP, CFG_PCI1_MEM_BASE >> 16);
++ GT_REG_WRITE (PCI_1_MEMORY0_SIZE, (CFG_PCI1_MEM_SIZE - 1) >> 16);
++
++ /* PCI interface settings */
++ /* Timeout set to retry forever */
++ GT_REG_WRITE (PCI_0TIMEOUT_RETRY, 0x0);
++ GT_REG_WRITE (PCI_1TIMEOUT_RETRY, 0x0);
++
++ /* ronen - enable only CS0 and Internal reg!! */
++ GT_REG_WRITE (PCI_0BASE_ADDRESS_REGISTERS_ENABLE, 0xfffffdfe);
++ GT_REG_WRITE (PCI_1BASE_ADDRESS_REGISTERS_ENABLE, 0xfffffdfe);
++
++ /* ronen:
++ * update the pci internal registers base address.
++ */
++#ifdef MAP_PCI
++ for (stat = 0; stat <= PCI_HOST1; stat++)
++ pciWriteConfigReg (stat,
++ PCI_INTERNAL_REGISTERS_MEMORY_MAPPED_BASE_ADDRESS,
++ SELF, CFG_GT_REGS);
++#endif
++
++}
++#endif
++
++/* Setup CPU interface paramaters */
++static void gt_cpu_config (void)
++{
++ cpu_t cpu = get_cpu_type ();
++ ulong tmp;
++
++ /* cpu configuration register */
++ tmp = GTREGREAD (CPU_CONFIGURATION);
++ /* set the SINGLE_CPU bit see MV64460 */
++#ifndef CFG_GT_DUAL_CPU /* SINGLE_CPU seems to cause JTAG problems */
++ tmp |= CPU_CONF_SINGLE_CPU;
++#endif
++ tmp &= ~CPU_CONF_AACK_DELAY_2;
++ tmp |= CPU_CONF_DP_VALID;
++ tmp |= CPU_CONF_AP_VALID;
++ tmp |= CPU_CONF_PIPELINE;
++ GT_REG_WRITE (CPU_CONFIGURATION, tmp); /* Marvell (VXWorks) writes 0x20220FF */
++
++ /* CPU master control register */
++ tmp = GTREGREAD (CPU_MASTER_CONTROL);
++ tmp |= CPU_MAST_CTL_ARB_EN;
++
++ if ((cpu == CPU_7400) ||
++ (cpu == CPU_7410) || (cpu == CPU_7455) || (cpu == CPU_7450)) {
++
++ tmp |= CPU_MAST_CTL_CLEAN_BLK;
++ tmp |= CPU_MAST_CTL_FLUSH_BLK;
++
++ } else {
++ /* cleanblock must be cleared for CPUs
++ * that do not support this command (603e, 750)
++ * see Res#1 */
++ tmp &= ~CPU_MAST_CTL_CLEAN_BLK;
++ tmp &= ~CPU_MAST_CTL_FLUSH_BLK;
++ }
++ GT_REG_WRITE (CPU_MASTER_CONTROL, tmp);
++}
++
++/*
++ * board_early_init_f.
++ *
++ * set up gal. device mappings, etc.
++ */
++int board_early_init_f (void)
++{
++ /* set up the GT the way the kernel wants it
++ * the call to move the GT register space will obviously
++ * fail if it has already been done, but we're going to assume
++ * that if it's not at the power-on location, it's where we put
++ * it last time. (huber)
++ */
++
++ my_remap_gt_regs (CFG_DFL_GT_REGS, CFG_GT_REGS);
++
++#ifdef CONFIG_PCI
++ gt_pci_config ();
++#endif
++ /* mask all external interrupt sources */
++ GT_REG_WRITE (CPU_INTERRUPT_MASK_REGISTER_LOW, 0);
++ GT_REG_WRITE (CPU_INTERRUPT_MASK_REGISTER_HIGH, 0);
++ /* new in >MV6436x */
++ GT_REG_WRITE (CPU_INTERRUPT_1_MASK_REGISTER_LOW, 0);
++ GT_REG_WRITE (CPU_INTERRUPT_1_MASK_REGISTER_HIGH, 0);
++ /* --------------------- */
++ GT_REG_WRITE (PCI_0INTERRUPT_CAUSE_MASK_REGISTER_LOW, 0);
++ GT_REG_WRITE (PCI_0INTERRUPT_CAUSE_MASK_REGISTER_HIGH, 0);
++ GT_REG_WRITE (PCI_1INTERRUPT_CAUSE_MASK_REGISTER_LOW, 0);
++ GT_REG_WRITE (PCI_1INTERRUPT_CAUSE_MASK_REGISTER_HIGH, 0);
++
++ /* Device and Boot bus settings
++ */
++ memoryMapDeviceSpace(DEVICE0, 0, 0);
++ GT_REG_WRITE(DEVICE_BANK0PARAMETERS, 0);
++ memoryMapDeviceSpace(DEVICE1, 0, 0);
++ GT_REG_WRITE(DEVICE_BANK1PARAMETERS, 0);
++ memoryMapDeviceSpace(DEVICE2, 0, 0);
++ GT_REG_WRITE(DEVICE_BANK2PARAMETERS, 0);
++ memoryMapDeviceSpace(DEVICE3, 0, 0);
++ GT_REG_WRITE(DEVICE_BANK3PARAMETERS, 0);
++
++ GT_REG_WRITE(DEVICE_BOOT_BANK_PARAMETERS, CFG_BOOT_PAR);
++
++ gt_cpu_config();
++
++ /* MPP setup */
++ GT_REG_WRITE (MPP_CONTROL0, CFG_MPP_CONTROL_0);
++ GT_REG_WRITE (MPP_CONTROL1, CFG_MPP_CONTROL_1);
++ GT_REG_WRITE (MPP_CONTROL2, CFG_MPP_CONTROL_2);
++ GT_REG_WRITE (MPP_CONTROL3, CFG_MPP_CONTROL_3);
++
++ GT_REG_WRITE (GPP_LEVEL_CONTROL, CFG_GPP_LEVEL_CONTROL);
++
++ return 0;
++}
++
++/* various things to do after relocation */
++
++int misc_init_r ()
++{
++ u8 val;
++
++ icache_enable ();
++#ifdef CFG_L2
++ l2cache_enable ();
++#endif
++#ifdef CONFIG_MPSC
++ mpsc_sdma_init ();
++ mpsc_init2 ();
++#endif
++
++ /*
++ * Enable trickle changing in RTC upon powerup
++ * No diode, 250 ohm series resistor
++ */
++ val = 0xa5;
++ i2c_write(CFG_I2C_RTC_ADDR, 8, 1, &val, 1);
++
++ return 0;
++}
++
++int board_early_init_r(void)
++{
++ /* now relocate the debug serial driver */
++ mpsc_putchar += gd->reloc_off;
++ mpsc_getchar += gd->reloc_off;
++ mpsc_test_char += gd->reloc_off;
++
++ return 0;
++}
++
++void after_reloc (ulong dest_addr, gd_t * gd)
++{
++ memoryMapDeviceSpace (BOOT_DEVICE, CFG_BOOT_SPACE, CFG_BOOT_SIZE);
++
++/* display_mem_map(); */
++
++ /* now, jump to the main U-Boot board init code */
++ board_init_r (gd, dest_addr);
++ /* NOTREACHED */
++}
++
++/*
++ * Check Board Identity:
++ * right now, assume borad type. (there is just one...after all)
++ */
++
++int checkboard (void)
++{
++ char *s = getenv("serial#");
++
++ printf("Board: %s", CFG_BOARD_NAME);
++
++ if (s != NULL) {
++ puts(", serial# ");
++ puts(s);
++ }
++ putc('\n');
++
++ return (0);
++}
++
++/* utility functions */
++void debug_led (int led, int mode)
++{
++}
++
++int display_mem_map (void)
++{
++ int i, j;
++ unsigned int base, size, width;
++
++ /* SDRAM */
++ printf ("SD (DDR) RAM\n");
++ for (i = 0; i <= BANK3; i++) {
++ base = memoryGetBankBaseAddress (i);
++ size = memoryGetBankSize (i);
++ if (size != 0)
++ printf ("BANK%d: base - 0x%08x\tsize - %dM bytes\n",
++ i, base, size >> 20);
++ }
++#ifdef CONFIG_PCI
++ /* CPU's PCI windows */
++ for (i = 0; i <= PCI_HOST1; i++) {
++ printf ("\nCPU's PCI %d windows\n", i);
++ base = pciGetSpaceBase (i, PCI_IO);
++ size = pciGetSpaceSize (i, PCI_IO);
++ printf (" IO: base - 0x%08x\tsize - %dM bytes\n", base,
++ size >> 20);
++ /* ronen currently only first PCI MEM is used 3 */
++ for (j = 0; j <= PCI_REGION0; j++) {
++ base = pciGetSpaceBase (i, j);
++ size = pciGetSpaceSize (i, j);
++ printf ("MEMORY %d: base - 0x%08x\tsize - %dM bytes\n",
++ j, base, size >> 20);
++ }
++ }
++#endif /* of CONFIG_PCI */
++
++ /* Bootrom */
++ base = memoryGetDeviceBaseAddress (BOOT_DEVICE); /* Boot */
++ size = memoryGetDeviceSize (BOOT_DEVICE);
++ width = memoryGetDeviceWidth (BOOT_DEVICE) * 8;
++ printf (" BOOT: base - 0x%08x size - %dM bytes\twidth - %d bits\t- FLASH\n",
++ base, size >> 20, width);
++
++ return (0);
++}
++
++/* DRAM check routines copied from gw8260 */
++
++#if defined (CFG_DRAM_TEST)
++
++/*********************************************************************/
++/* NAME: move64() - moves a double word (64-bit) */
++/* */
++/* DESCRIPTION: */
++/* this function performs a double word move from the data at */
++/* the source pointer to the location at the destination pointer. */
++/* */
++/* INPUTS: */
++/* unsigned long long *src - pointer to data to move */
++/* */
++/* OUTPUTS: */
++/* unsigned long long *dest - pointer to locate to move data */
++/* */
++/* RETURNS: */
++/* None */
++/* */
++/* RESTRICTIONS/LIMITATIONS: */
++/* May cloober fr0. */
++/* */
++/*********************************************************************/
++static void move64 (unsigned long long *src, unsigned long long *dest)
++{
++ asm ("lfd 0, 0(3)\n\t" /* fpr0 = *scr */
++ "stfd 0, 0(4)" /* *dest = fpr0 */
++ : : : "fr0"); /* Clobbers fr0 */
++ return;
++}
++
++
++#if defined (CFG_DRAM_TEST_DATA)
++
++unsigned long long pattern[] = {
++ 0xaaaaaaaaaaaaaaaaULL,
++ 0xccccccccccccccccULL,
++ 0xf0f0f0f0f0f0f0f0ULL,
++ 0xff00ff00ff00ff00ULL,
++ 0xffff0000ffff0000ULL,
++ 0xffffffff00000000ULL,
++ 0x00000000ffffffffULL,
++ 0x0000ffff0000ffffULL,
++ 0x00ff00ff00ff00ffULL,
++ 0x0f0f0f0f0f0f0f0fULL,
++ 0x3333333333333333ULL,
++ 0x5555555555555555ULL
++};
++
++/*********************************************************************/
++/* NAME: mem_test_data() - test data lines for shorts and opens */
++/* */
++/* DESCRIPTION: */
++/* Tests data lines for shorts and opens by forcing adjacent data */
++/* to opposite states. Because the data lines could be routed in */
++/* an arbitrary manner the must ensure test patterns ensure that */
++/* every case is tested. By using the following series of binary */
++/* patterns every combination of adjacent bits is test regardless */
++/* of routing. */
++/* */
++/* ...101010101010101010101010 */
++/* ...110011001100110011001100 */
++/* ...111100001111000011110000 */
++/* ...111111110000000011111111 */
++/* */
++/* Carrying this out, gives us six hex patterns as follows: */
++/* */
++/* 0xaaaaaaaaaaaaaaaa */
++/* 0xcccccccccccccccc */
++/* 0xf0f0f0f0f0f0f0f0 */
++/* 0xff00ff00ff00ff00 */
++/* 0xffff0000ffff0000 */
++/* 0xffffffff00000000 */
++/* */
++/* The number test patterns will always be given by: */
++/* */
++/* log(base 2)(number data bits) = log2 (64) = 6 */
++/* */
++/* To test for short and opens to other signals on our boards. we */
++/* simply */
++/* test with the 1's complemnt of the paterns as well. */
++/* */
++/* OUTPUTS: */
++/* Displays failing test pattern */
++/* */
++/* RETURNS: */
++/* 0 - Passed test */
++/* 1 - Failed test */
++/* */
++/* RESTRICTIONS/LIMITATIONS: */
++/* Assumes only one one SDRAM bank */
++/* */
++/*********************************************************************/
++int mem_test_data (void)
++{
++ unsigned long long *pmem = (unsigned long long *) CFG_MEMTEST_START;
++ unsigned long long temp64 = 0;
++ int num_patterns = sizeof (pattern) / sizeof (pattern[0]);
++ int i;
++ unsigned int hi, lo;
++
++ for (i = 0; i < num_patterns; i++) {
++ move64 (&(pattern[i]), pmem);
++ move64 (pmem, &temp64);
++
++ /* hi = (temp64>>32) & 0xffffffff; */
++ /* lo = temp64 & 0xffffffff; */
++ /* printf("\ntemp64 = 0x%08x%08x", hi, lo); */
++
++ hi = (pattern[i] >> 32) & 0xffffffff;
++ lo = pattern[i] & 0xffffffff;
++ /* printf("\npattern[%d] = 0x%08x%08x", i, hi, lo); */
++
++ if (temp64 != pattern[i]) {
++ printf ("\n Data Test Failed, pattern 0x%08x%08x",
++ hi, lo);
++ return 1;
++ }
++ }
++
++ return 0;
++}
++#endif /* CFG_DRAM_TEST_DATA */
++
++#if defined (CFG_DRAM_TEST_ADDRESS)
++/*********************************************************************/
++/* NAME: mem_test_address() - test address lines */
++/* */
++/* DESCRIPTION: */
++/* This function performs a test to verify that each word im */
++/* memory is uniquly addressable. The test sequence is as follows: */
++/* */
++/* 1) write the address of each word to each word. */
++/* 2) verify that each location equals its address */
++/* */
++/* OUTPUTS: */
++/* Displays failing test pattern and address */
++/* */
++/* RETURNS: */
++/* 0 - Passed test */
++/* 1 - Failed test */
++/* */
++/* RESTRICTIONS/LIMITATIONS: */
++/* */
++/* */
++/*********************************************************************/
++int mem_test_address (void)
++{
++ volatile unsigned int *pmem =
++ (volatile unsigned int *) CFG_MEMTEST_START;
++ const unsigned int size = (CFG_MEMTEST_END - CFG_MEMTEST_START) / 4;
++ unsigned int i;
++
++ /* write address to each location */
++ for (i = 0; i < size; i++)
++ pmem[i] = i;
++
++ /* verify each loaction */
++ for (i = 0; i < size; i++) {
++ if (pmem[i] != i) {
++ printf ("\n Address Test Failed at 0x%x", i);
++ return 1;
++ }
++ }
++ return 0;
++}
++#endif /* CFG_DRAM_TEST_ADDRESS */
++
++#if defined (CFG_DRAM_TEST_WALK)
++/*********************************************************************/
++/* NAME: mem_march() - memory march */
++/* */
++/* DESCRIPTION: */
++/* Marches up through memory. At each location verifies rmask if */
++/* read = 1. At each location write wmask if write = 1. Displays */
++/* failing address and pattern. */
++/* */
++/* INPUTS: */
++/* volatile unsigned long long * base - start address of test */
++/* unsigned int size - number of dwords(64-bit) to test */
++/* unsigned long long rmask - read verify mask */
++/* unsigned long long wmask - wrtie verify mask */
++/* short read - verifies rmask if read = 1 */
++/* short write - writes wmask if write = 1 */
++/* */
++/* OUTPUTS: */
++/* Displays failing test pattern and address */
++/* */
++/* RETURNS: */
++/* 0 - Passed test */
++/* 1 - Failed test */
++/* */
++/* RESTRICTIONS/LIMITATIONS: */
++/* */
++/* */
++/*********************************************************************/
++int mem_march (volatile unsigned long long *base,
++ unsigned int size,
++ unsigned long long rmask,
++ unsigned long long wmask, short read, short write)
++{
++ unsigned int i;
++ unsigned long long temp = 0;
++ unsigned int hitemp, lotemp, himask, lomask;
++
++ for (i = 0; i < size; i++) {
++ if (read != 0) {
++ /* temp = base[i]; */
++ move64 ((unsigned long long *) &(base[i]), &temp);
++ if (rmask != temp) {
++ hitemp = (temp >> 32) & 0xffffffff;
++ lotemp = temp & 0xffffffff;
++ himask = (rmask >> 32) & 0xffffffff;
++ lomask = rmask & 0xffffffff;
++
++ printf ("\n Walking one's test failed: address = 0x%08x," "\n\texpected 0x%08x%08x, found 0x%08x%08x", i << 3, himask, lomask, hitemp, lotemp);
++ return 1;
++ }
++ }
++ if (write != 0) {
++ /* base[i] = wmask; */
++ move64 (&wmask, (unsigned long long *) &(base[i]));
++ }
++ }
++ return 0;
++}
++#endif /* CFG_DRAM_TEST_WALK */
++
++/*********************************************************************/
++/* NAME: mem_test_walk() - a simple walking ones test */
++/* */
++/* DESCRIPTION: */
++/* Performs a walking ones through entire physical memory. The */
++/* test uses as series of memory marches, mem_march(), to verify */
++/* and write the test patterns to memory. The test sequence is as */
++/* follows: */
++/* 1) march writing 0000...0001 */
++/* 2) march verifying 0000...0001 , writing 0000...0010 */
++/* 3) repeat step 2 shifting masks left 1 bit each time unitl */
++/* the write mask equals 1000...0000 */
++/* 4) march verifying 1000...0000 */
++/* The test fails if any of the memory marches return a failure. */
++/* */
++/* OUTPUTS: */
++/* Displays which pass on the memory test is executing */
++/* */
++/* RETURNS: */
++/* 0 - Passed test */
++/* 1 - Failed test */
++/* */
++/* RESTRICTIONS/LIMITATIONS: */
++/* */
++/* */
++/*********************************************************************/
++int mem_test_walk (void)
++{
++ unsigned long long mask;
++ volatile unsigned long long *pmem =
++ (volatile unsigned long long *) CFG_MEMTEST_START;
++ const unsigned long size = (CFG_MEMTEST_END - CFG_MEMTEST_START) / 8;
++
++ unsigned int i;
++
++ mask = 0x01;
++
++ printf ("Initial Pass");
++ mem_march (pmem, size, 0x0, 0x1, 0, 1);
++
++ printf ("\b\b\b\b\b\b\b\b\b\b\b\b");
++ printf (" ");
++ printf (" ");
++ printf ("\b\b\b\b\b\b\b\b\b\b\b\b");
++
++ for (i = 0; i < 63; i++) {
++ printf ("Pass %2d", i + 2);
++ if (mem_march (pmem, size, mask, mask << 1, 1, 1) != 0) {
++ /*printf("mask: 0x%x, pass: %d, ", mask, i); */
++ return 1;
++ }
++ mask = mask << 1;
++ printf ("\b\b\b\b\b\b\b");
++ }
++
++ printf ("Last Pass");
++ if (mem_march (pmem, size, 0, mask, 0, 1) != 0) {
++ /* printf("mask: 0x%x", mask); */
++ return 1;
++ }
++ printf ("\b\b\b\b\b\b\b\b\b");
++ printf (" ");
++ printf ("\b\b\b\b\b\b\b\b\b");
++
++ return 0;
++}
++
++/*********************************************************************/
++/* NAME: testdram() - calls any enabled memory tests */
++/* */
++/* DESCRIPTION: */
++/* Runs memory tests if the environment test variables are set to */
++/* 'y'. */
++/* */
++/* INPUTS: */
++/* testdramdata - If set to 'y', data test is run. */
++/* testdramaddress - If set to 'y', address test is run. */
++/* testdramwalk - If set to 'y', walking ones test is run */
++/* */
++/* OUTPUTS: */
++/* None */
++/* */
++/* RETURNS: */
++/* 0 - Passed test */
++/* 1 - Failed test */
++/* */
++/* RESTRICTIONS/LIMITATIONS: */
++/* */
++/* */
++/*********************************************************************/
++int testdram (void)
++{
++ char *s;
++ int rundata = 0;
++ int runaddress = 0;
++ int runwalk = 0;
++
++#ifdef CFG_DRAM_TEST_DATA
++ s = getenv ("testdramdata");
++ rundata = (s && (*s == 'y')) ? 1 : 0;
++#endif
++#ifdef CFG_DRAM_TEST_ADDRESS
++ s = getenv ("testdramaddress");
++ runaddress = (s && (*s == 'y')) ? 1 : 0;
++#endif
++#ifdef CFG_DRAM_TEST_WALK
++ s = getenv ("testdramwalk");
++ runwalk = (s && (*s == 'y')) ? 1 : 0;
++#endif
++
++ if ((rundata == 1) || (runaddress == 1) || (runwalk == 1))
++ printf ("Testing RAM from 0x%08x to 0x%08x ... "
++ "(don't panic... that will take a moment !!!!)\n",
++ CFG_MEMTEST_START, CFG_MEMTEST_END);
++#ifdef CFG_DRAM_TEST_DATA
++ if (rundata == 1) {
++ printf ("Test DATA ... ");
++ if (mem_test_data () == 1) {
++ printf ("failed \n");
++ return 1;
++ } else
++ printf ("ok \n");
++ }
++#endif
++#ifdef CFG_DRAM_TEST_ADDRESS
++ if (runaddress == 1) {
++ printf ("Test ADDRESS ... ");
++ if (mem_test_address () == 1) {
++ printf ("failed \n");
++ return 1;
++ } else
++ printf ("ok \n");
++ }
++#endif
++#ifdef CFG_DRAM_TEST_WALK
++ if (runwalk == 1) {
++ printf ("Test WALKING ONEs ... ");
++ if (mem_test_walk () == 1) {
++ printf ("failed \n");
++ return 1;
++ } else
++ printf ("ok \n");
++ }
++#endif
++ if ((rundata == 1) || (runaddress == 1) || (runwalk == 1))
++ printf ("passed\n");
++ return 0;
++
++}
++#endif /* CFG_DRAM_TEST */
++
++/* ronen - the below functions are used by the bootm function */
++/* - we map the base register to fbe00000 (same mapping as in the LSP) */
++/* - we turn off the RX gig dmas - to prevent the dma from overunning */
++/* the kernel data areas. */
++/* - we diable and invalidate the icache and dcache. */
++void my_remap_gt_regs_bootm (u32 cur_loc, u32 new_loc)
++{
++ u32 temp;
++
++ temp = in_le32 ((u32 *) (new_loc + INTERNAL_SPACE_DECODE));
++ if ((temp & 0xffff) == new_loc >> 16)
++ return;
++
++ temp = (in_le32 ((u32 *) (cur_loc + INTERNAL_SPACE_DECODE)) &
++ 0xffff0000) | (new_loc >> 16);
++
++ out_le32 ((u32 *) (cur_loc + INTERNAL_SPACE_DECODE), temp);
++
++ while ((WORD_SWAP (*((volatile unsigned int *) (NONE_CACHEABLE |
++ new_loc |
++ (INTERNAL_SPACE_DECODE)))))
++ != temp);
++
++}
+diff -Naupr u-boot-1.1.6/board/prodrive/p3mx/pci.c u-boot-1.1.6-fsl-1/board/prodrive/p3mx/pci.c
+--- u-boot-1.1.6/board/prodrive/p3mx/pci.c 1969-12-31 18:00:00.000000000 -0600
++++ u-boot-1.1.6-fsl-1/board/prodrive/p3mx/pci.c 2006-12-06 10:33:49.000000000 -0600
+@@ -0,0 +1,1025 @@
++/*
++ * (C) Copyright 2000
++ * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
++ *
++ * See file CREDITS for list of people who contributed to this
++ * project.
++ *
++ * 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
++ *
++ */
++/* PCI.c - PCI functions */
++
++
++#include <common.h>
++#ifdef CONFIG_PCI
++#include <pci.h>
++
++#ifdef CONFIG_PCI_PNP
++void pciauto_config_init(struct pci_controller *hose);
++int pciauto_region_allocate(struct pci_region* res, unsigned int size, unsigned int *bar);
++#endif
++
++#include "../../Marvell/include/pci.h"
++
++#undef DEBUG
++#undef IDE_SET_NATIVE_MODE
++static unsigned int local_buses[] = { 0, 0 };
++
++static const unsigned char pci_irq_swizzle[2][PCI_MAX_DEVICES] = {
++ {0, 0, 0, 0, 0, 0, 0, 27, 27, [9 ... PCI_MAX_DEVICES - 1] = 0 },
++ {0, 0, 0, 0, 0, 0, 0, 29, 29, [9 ... PCI_MAX_DEVICES - 1] = 0 },
++};
++
++#ifdef CONFIG_USE_CPCIDVI
++typedef struct {
++ unsigned int base;
++ unsigned int init;
++} GT_CPCIDVI_ROM_T;
++
++static GT_CPCIDVI_ROM_T gt_cpcidvi_rom = {0, 0};
++#endif
++
++#ifdef DEBUG
++static const unsigned int pci_bus_list[] = { PCI_0_MODE, PCI_1_MODE };
++static void gt_pci_bus_mode_display (PCI_HOST host)
++{
++ unsigned int mode;
++
++
++ mode = (GTREGREAD (pci_bus_list[host]) & (BIT4 | BIT5)) >> 4;
++ switch (mode) {
++ case 0:
++ printf ("PCI %d bus mode: Conventional PCI\n", host);
++ break;
++ case 1:
++ printf ("PCI %d bus mode: 66 Mhz PCIX\n", host);
++ break;
++ case 2:
++ printf ("PCI %d bus mode: 100 Mhz PCIX\n", host);
++ break;
++ case 3:
++ printf ("PCI %d bus mode: 133 Mhz PCIX\n", host);
++ break;
++ default:
++ printf ("Unknown BUS %d\n", mode);
++ }
++}
++#endif
++
++static const unsigned int pci_p2p_configuration_reg[] = {
++ PCI_0P2P_CONFIGURATION, PCI_1P2P_CONFIGURATION
++};
++
++static const unsigned int pci_configuration_address[] = {
++ PCI_0CONFIGURATION_ADDRESS, PCI_1CONFIGURATION_ADDRESS
++};
++
++static const unsigned int pci_configuration_data[] = {
++ PCI_0CONFIGURATION_DATA_VIRTUAL_REGISTER,
++ PCI_1CONFIGURATION_DATA_VIRTUAL_REGISTER
++};
++
++static const unsigned int pci_error_cause_reg[] = {
++ PCI_0ERROR_CAUSE, PCI_1ERROR_CAUSE
++};
++
++static const unsigned int pci_arbiter_control[] = {
++ PCI_0ARBITER_CONTROL, PCI_1ARBITER_CONTROL
++};
++
++static const unsigned int pci_address_space_en[] = {
++ PCI_0_BASE_ADDR_REG_ENABLE, PCI_1_BASE_ADDR_REG_ENABLE
++};
++
++static const unsigned int pci_snoop_control_base_0_low[] = {
++ PCI_0SNOOP_CONTROL_BASE_0_LOW, PCI_1SNOOP_CONTROL_BASE_0_LOW
++};
++static const unsigned int pci_snoop_control_top_0[] = {
++ PCI_0SNOOP_CONTROL_TOP_0, PCI_1SNOOP_CONTROL_TOP_0
++};
++
++static const unsigned int pci_access_control_base_0_low[] = {
++ PCI_0ACCESS_CONTROL_BASE_0_LOW, PCI_1ACCESS_CONTROL_BASE_0_LOW
++};
++static const unsigned int pci_access_control_top_0[] = {
++ PCI_0ACCESS_CONTROL_TOP_0, PCI_1ACCESS_CONTROL_TOP_0
++};
++
++static const unsigned int pci_scs_bank_size[2][4] = {
++ {PCI_0SCS_0_BANK_SIZE, PCI_0SCS_1_BANK_SIZE,
++ PCI_0SCS_2_BANK_SIZE, PCI_0SCS_3_BANK_SIZE},
++ {PCI_1SCS_0_BANK_SIZE, PCI_1SCS_1_BANK_SIZE,
++ PCI_1SCS_2_BANK_SIZE, PCI_1SCS_3_BANK_SIZE}
++};
++
++static const unsigned int pci_p2p_configuration[] = {
++ PCI_0P2P_CONFIGURATION, PCI_1P2P_CONFIGURATION
++};
++
++
++/********************************************************************
++* pciWriteConfigReg - Write to a PCI configuration register
++* - Make sure the GT is configured as a master before writing
++* to another device on the PCI.
++* - The function takes care of Big/Little endian conversion.
++*
++*
++* Inputs: unsigned int regOffset: The register offset as it apears in the GT spec
++* (or any other PCI device spec)
++* pciDevNum: The device number needs to be addressed.
++*
++* Configuration Address 0xCF8:
++*
++* 31 30 24 23 16 15 11 10 8 7 2 0 <=bit Number
++* |congif|Reserved| Bus |Device|Function|Register|00|
++* |Enable| |Number|Number| Number | Number | | <=field Name
++*
++*********************************************************************/
++void pciWriteConfigReg (PCI_HOST host, unsigned int regOffset,
++ unsigned int pciDevNum, unsigned int data)
++{
++ volatile unsigned int DataForAddrReg;
++ unsigned int functionNum;
++ unsigned int busNum = 0;
++ unsigned int addr;
++
++ if (pciDevNum > 32) /* illegal device Number */
++ return;
++ if (pciDevNum == SELF) { /* configure our configuration space. */
++ pciDevNum =
++ (GTREGREAD (pci_p2p_configuration_reg[host]) >> 24) &
++ 0x1f;
++ busNum = GTREGREAD (pci_p2p_configuration_reg[host]) &
++ 0xff0000;
++ }
++ functionNum = regOffset & 0x00000700;
++ pciDevNum = pciDevNum << 11;
++ regOffset = regOffset & 0xfc;
++ DataForAddrReg =
++ (regOffset | pciDevNum | functionNum | busNum) | BIT31;
++ GT_REG_WRITE (pci_configuration_address[host], DataForAddrReg);
++ GT_REG_READ (pci_configuration_address[host], &addr);
++ if (addr != DataForAddrReg)
++ return;
++ GT_REG_WRITE (pci_configuration_data[host], data);
++}
++
++/********************************************************************
++* pciReadConfigReg - Read from a PCI0 configuration register
++* - Make sure the GT is configured as a master before reading
++* from another device on the PCI.
++* - The function takes care of Big/Little endian conversion.
++* INPUTS: regOffset: The register offset as it apears in the GT spec (or PCI
++* spec)
++* pciDevNum: The device number needs to be addressed.
++* RETURNS: data , if the data == 0xffffffff check the master abort bit in the
++* cause register to make sure the data is valid
++*
++* Configuration Address 0xCF8:
++*
++* 31 30 24 23 16 15 11 10 8 7 2 0 <=bit Number
++* |congif|Reserved| Bus |Device|Function|Register|00|
++* |Enable| |Number|Number| Number | Number | | <=field Name
++*
++*********************************************************************/
++unsigned int pciReadConfigReg (PCI_HOST host, unsigned int regOffset,
++ unsigned int pciDevNum)
++{
++ volatile unsigned int DataForAddrReg;
++ unsigned int data;
++ unsigned int functionNum;
++ unsigned int busNum = 0;
++
++ if (pciDevNum > 32) /* illegal device Number */
++ return 0xffffffff;
++ if (pciDevNum == SELF) { /* configure our configuration space. */
++ pciDevNum =
++ (GTREGREAD (pci_p2p_configuration_reg[host]) >> 24) &
++ 0x1f;
++ busNum = GTREGREAD (pci_p2p_configuration_reg[host]) &
++ 0xff0000;
++ }
++ functionNum = regOffset & 0x00000700;
++ pciDevNum = pciDevNum << 11;
++ regOffset = regOffset & 0xfc;
++ DataForAddrReg =
++ (regOffset | pciDevNum | functionNum | busNum) | BIT31;
++ GT_REG_WRITE (pci_configuration_address[host], DataForAddrReg);
++ GT_REG_READ (pci_configuration_address[host], &data);
++ if (data != DataForAddrReg)
++ return 0xffffffff;
++ GT_REG_READ (pci_configuration_data[host], &data);
++ return data;
++}
++
++/********************************************************************
++* pciOverBridgeWriteConfigReg - Write to a PCI configuration register where
++* the agent is placed on another Bus. For more
++* information read P2P in the PCI spec.
++*
++* Inputs: unsigned int regOffset - The register offset as it apears in the
++* GT spec (or any other PCI device spec).
++* unsigned int pciDevNum - The device number needs to be addressed.
++* unsigned int busNum - On which bus does the Target agent connect
++* to.
++* unsigned int data - data to be written.
++*
++* Configuration Address 0xCF8:
++*
++* 31 30 24 23 16 15 11 10 8 7 2 0 <=bit Number
++* |congif|Reserved| Bus |Device|Function|Register|01|
++* |Enable| |Number|Number| Number | Number | | <=field Name
++*
++* The configuration Address is configure as type-I (bits[1:0] = '01') due to
++* PCI spec referring to P2P.
++*
++*********************************************************************/
++void pciOverBridgeWriteConfigReg (PCI_HOST host,
++ unsigned int regOffset,
++ unsigned int pciDevNum,
++ unsigned int busNum, unsigned int data)
++{
++ unsigned int DataForReg;
++ unsigned int functionNum;
++
++ functionNum = regOffset & 0x00000700;
++ pciDevNum = pciDevNum << 11;
++ regOffset = regOffset & 0xff;
++ busNum = busNum << 16;
++ if (pciDevNum == SELF) { /* This board */
++ DataForReg = (regOffset | pciDevNum | functionNum) | BIT0;
++ } else {
++ DataForReg = (regOffset | pciDevNum | functionNum | busNum) |
++ BIT31 | BIT0;
++ }
++ GT_REG_WRITE (pci_configuration_address[host], DataForReg);
++ GT_REG_WRITE (pci_configuration_data[host], data);
++}
++
++
++/********************************************************************
++* pciOverBridgeReadConfigReg - Read from a PCIn configuration register where
++* the agent target locate on another PCI bus.
++* - Make sure the GT is configured as a master
++* before reading from another device on the PCI.
++* - The function takes care of Big/Little endian
++* conversion.
++* INPUTS: regOffset: The register offset as it apears in the GT spec (or PCI
++* spec). (configuration register offset.)
++* pciDevNum: The device number needs to be addressed.
++* busNum: the Bus number where the agent is place.
++* RETURNS: data , if the data == 0xffffffff check the master abort bit in the
++* cause register to make sure the data is valid
++*
++* Configuration Address 0xCF8:
++*
++* 31 30 24 23 16 15 11 10 8 7 2 0 <=bit Number
++* |congif|Reserved| Bus |Device|Function|Register|01|
++* |Enable| |Number|Number| Number | Number | | <=field Name
++*
++*********************************************************************/
++unsigned int pciOverBridgeReadConfigReg (PCI_HOST host,
++ unsigned int regOffset,
++ unsigned int pciDevNum,
++ unsigned int busNum)
++{
++ unsigned int DataForReg;
++ unsigned int data;
++ unsigned int functionNum;
++
++ functionNum = regOffset & 0x00000700;
++ pciDevNum = pciDevNum << 11;
++ regOffset = regOffset & 0xff;
++ busNum = busNum << 16;
++ if (pciDevNum == SELF) { /* This board */
++ DataForReg = (regOffset | pciDevNum | functionNum) | BIT31;
++ } else { /* agent on another bus */
++
++ DataForReg = (regOffset | pciDevNum | functionNum | busNum) |
++ BIT0 | BIT31;
++ }
++ GT_REG_WRITE (pci_configuration_address[host], DataForReg);
++ GT_REG_READ (pci_configuration_data[host], &data);
++ return data;
++}
++
++
++/********************************************************************
++* pciGetRegOffset - Gets the register offset for this region config.
++*
++* INPUT: Bus, Region - The bus and region we ask for its base address.
++* OUTPUT: N/A
++* RETURNS: PCI register base address
++*********************************************************************/
++static unsigned int pciGetRegOffset (PCI_HOST host, PCI_REGION region)
++{
++ switch (host) {
++ case PCI_HOST0:
++ switch (region) {
++ case PCI_IO:
++ return PCI_0I_O_LOW_DECODE_ADDRESS;
++ case PCI_REGION0:
++ return PCI_0MEMORY0_LOW_DECODE_ADDRESS;
++ case PCI_REGION1:
++ return PCI_0MEMORY1_LOW_DECODE_ADDRESS;
++ case PCI_REGION2:
++ return PCI_0MEMORY2_LOW_DECODE_ADDRESS;
++ case PCI_REGION3:
++ return PCI_0MEMORY3_LOW_DECODE_ADDRESS;
++ }
++ case PCI_HOST1:
++ switch (region) {
++ case PCI_IO:
++ return PCI_1I_O_LOW_DECODE_ADDRESS;
++ case PCI_REGION0:
++ return PCI_1MEMORY0_LOW_DECODE_ADDRESS;
++ case PCI_REGION1:
++ return PCI_1MEMORY1_LOW_DECODE_ADDRESS;
++ case PCI_REGION2:
++ return PCI_1MEMORY2_LOW_DECODE_ADDRESS;
++ case PCI_REGION3:
++ return PCI_1MEMORY3_LOW_DECODE_ADDRESS;
++ }
++ }
++ return PCI_0MEMORY0_LOW_DECODE_ADDRESS;
++}
++
++static unsigned int pciGetRemapOffset (PCI_HOST host, PCI_REGION region)
++{
++ switch (host) {
++ case PCI_HOST0:
++ switch (region) {
++ case PCI_IO:
++ return PCI_0I_O_ADDRESS_REMAP;
++ case PCI_REGION0:
++ return PCI_0MEMORY0_ADDRESS_REMAP;
++ case PCI_REGION1:
++ return PCI_0MEMORY1_ADDRESS_REMAP;
++ case PCI_REGION2:
++ return PCI_0MEMORY2_ADDRESS_REMAP;
++ case PCI_REGION3:
++ return PCI_0MEMORY3_ADDRESS_REMAP;
++ }
++ case PCI_HOST1:
++ switch (region) {
++ case PCI_IO:
++ return PCI_1I_O_ADDRESS_REMAP;
++ case PCI_REGION0:
++ return PCI_1MEMORY0_ADDRESS_REMAP;
++ case PCI_REGION1:
++ return PCI_1MEMORY1_ADDRESS_REMAP;
++ case PCI_REGION2:
++ return PCI_1MEMORY2_ADDRESS_REMAP;
++ case PCI_REGION3:
++ return PCI_1MEMORY3_ADDRESS_REMAP;
++ }
++ }
++ return PCI_0MEMORY0_ADDRESS_REMAP;
++}
++
++/********************************************************************
++* pciGetBaseAddress - Gets the base address of a PCI.
++* - If the PCI size is 0 then this base address has no meaning!!!
++*
++*
++* INPUT: Bus, Region - The bus and region we ask for its base address.
++* OUTPUT: N/A
++* RETURNS: PCI base address.
++*********************************************************************/
++unsigned int pciGetBaseAddress (PCI_HOST host, PCI_REGION region)
++{
++ unsigned int regBase;
++ unsigned int regEnd;
++ unsigned int regOffset = pciGetRegOffset (host, region);
++
++ GT_REG_READ (regOffset, &regBase);
++ GT_REG_READ (regOffset + 8, &regEnd);
++
++ if (regEnd <= regBase)
++ return 0xffffffff; /* ERROR !!! */
++
++ regBase = regBase << 16;
++ return regBase;
++}
++
++bool pciMapSpace (PCI_HOST host, PCI_REGION region, unsigned int remapBase,
++ unsigned int bankBase, unsigned int bankLength)
++{
++ unsigned int low = 0xfff;
++ unsigned int high = 0x0;
++ unsigned int regOffset = pciGetRegOffset (host, region);
++ unsigned int remapOffset = pciGetRemapOffset (host, region);
++
++ if (bankLength != 0) {
++ low = (bankBase >> 16) & 0xffff;
++ high = ((bankBase + bankLength) >> 16) - 1;
++ }
++
++ GT_REG_WRITE (regOffset, low | (1 << 24)); /* no swapping */
++ GT_REG_WRITE (regOffset + 8, high);
++
++ if (bankLength != 0) { /* must do AFTER writing maps */
++ GT_REG_WRITE (remapOffset, remapBase >> 16); /* sorry, 32 bits only.
++ dont support upper 32
++ in this driver */
++ }
++ return true;
++}
++
++unsigned int pciGetSpaceBase (PCI_HOST host, PCI_REGION region)
++{
++ unsigned int low;
++ unsigned int regOffset = pciGetRegOffset (host, region);
++
++ GT_REG_READ (regOffset, &low);
++ return (low & 0xffff) << 16;
++}
++
++unsigned int pciGetSpaceSize (PCI_HOST host, PCI_REGION region)
++{
++ unsigned int low, high;
++ unsigned int regOffset = pciGetRegOffset (host, region);
++
++ GT_REG_READ (regOffset, &low);
++ GT_REG_READ (regOffset + 8, &high);
++ return ((high & 0xffff) + 1) << 16;
++}
++
++
++/* ronen - 7/Dec/03*/
++/********************************************************************
++* gtPciDisable/EnableInternalBAR - This function enable/disable PCI BARS.
++* Inputs: one of the PCI BAR
++*********************************************************************/
++void gtPciEnableInternalBAR (PCI_HOST host, PCI_INTERNAL_BAR pciBAR)
++{
++ RESET_REG_BITS (pci_address_space_en[host], BIT0 << pciBAR);
++}
++
++void gtPciDisableInternalBAR (PCI_HOST host, PCI_INTERNAL_BAR pciBAR)
++{
++ SET_REG_BITS (pci_address_space_en[host], BIT0 << pciBAR);
++}
++
++/********************************************************************
++* pciMapMemoryBank - Maps PCI_host memory bank "bank" for the slave.
++*
++* Inputs: base and size of PCI SCS
++*********************************************************************/
++void pciMapMemoryBank (PCI_HOST host, MEMORY_BANK bank,
++ unsigned int pciDramBase, unsigned int pciDramSize)
++{
++ /*ronen different function for 3rd bank. */
++ unsigned int offset = (bank < 2) ? bank * 8 : 0x100 + (bank - 2) * 8;
++
++ pciDramBase = pciDramBase & 0xfffff000;
++ pciDramBase = pciDramBase | (pciReadConfigReg (host,
++ PCI_SCS_0_BASE_ADDRESS
++ + offset,
++ SELF) & 0x00000fff);
++ pciWriteConfigReg (host, PCI_SCS_0_BASE_ADDRESS + offset, SELF,
++ pciDramBase);
++ if (pciDramSize == 0)
++ pciDramSize++;
++ GT_REG_WRITE (pci_scs_bank_size[host][bank], pciDramSize - 1);
++ gtPciEnableInternalBAR (host, bank);
++}
++
++/********************************************************************
++* pciSetRegionFeatures - This function modifys one of the 8 regions with
++* feature bits given as an input.
++* - Be advised to check the spec before modifying them.
++* Inputs: PCI_PROTECT_REGION region - one of the eight regions.
++* unsigned int features - See file: pci.h there are defintion for those
++* region features.
++* unsigned int baseAddress - The region base Address.
++* unsigned int topAddress - The region top Address.
++* Returns: false if one of the parameters is erroneous true otherwise.
++*********************************************************************/
++bool pciSetRegionFeatures (PCI_HOST host, PCI_ACCESS_REGIONS region,
++ unsigned int features, unsigned int baseAddress,
++ unsigned int regionLength)
++{
++ unsigned int accessLow;
++ unsigned int accessHigh;
++ unsigned int accessTop = baseAddress + regionLength;
++
++ if (regionLength == 0) { /* close the region. */
++ pciDisableAccessRegion (host, region);
++ return true;
++ }
++ /* base Address is store is bits [11:0] */
++ accessLow = (baseAddress & 0xfff00000) >> 20;
++ /* All the features are update according to the defines in pci.h (to be on
++ the safe side we disable bits: [11:0] */
++ accessLow = accessLow | (features & 0xfffff000);
++ /* write to the Low Access Region register */
++ GT_REG_WRITE (pci_access_control_base_0_low[host] + 0x10 * region,
++ accessLow);
++
++ accessHigh = (accessTop & 0xfff00000) >> 20;
++
++ /* write to the High Access Region register */
++ GT_REG_WRITE (pci_access_control_top_0[host] + 0x10 * region,
++ accessHigh - 1);
++ return true;
++}
++
++/********************************************************************
++* pciDisableAccessRegion - Disable The given Region by writing MAX size
++* to its low Address and MIN size to its high Address.
++*
++* Inputs: PCI_ACCESS_REGIONS region - The region we to be Disabled.
++* Returns: N/A.
++*********************************************************************/
++void pciDisableAccessRegion (PCI_HOST host, PCI_ACCESS_REGIONS region)
++{
++ /* writing back the registers default values. */
++ GT_REG_WRITE (pci_access_control_base_0_low[host] + 0x10 * region,
++ 0x01001fff);
++ GT_REG_WRITE (pci_access_control_top_0[host] + 0x10 * region, 0);
++}
++
++/********************************************************************
++* pciArbiterEnable - Enables PCI-0`s Arbitration mechanism.
++*
++* Inputs: N/A
++* Returns: true.
++*********************************************************************/
++bool pciArbiterEnable (PCI_HOST host)
++{
++ unsigned int regData;
++
++ GT_REG_READ (pci_arbiter_control[host], &regData);
++ GT_REG_WRITE (pci_arbiter_control[host], regData | BIT31);
++ return true;
++}
++
++/********************************************************************
++* pciArbiterDisable - Disable PCI-0`s Arbitration mechanism.
++*
++* Inputs: N/A
++* Returns: true
++*********************************************************************/
++bool pciArbiterDisable (PCI_HOST host)
++{
++ unsigned int regData;
++
++ GT_REG_READ (pci_arbiter_control[host], &regData);
++ GT_REG_WRITE (pci_arbiter_control[host], regData & 0x7fffffff);
++ return true;
++}
++
++/********************************************************************
++* pciSetArbiterAgentsPriority - Priority setup for the PCI agents (Hi or Low)
++*
++* Inputs: PCI_AGENT_PRIO internalAgent - priotity for internal agent.
++* PCI_AGENT_PRIO externalAgent0 - priotity for external#0 agent.
++* PCI_AGENT_PRIO externalAgent1 - priotity for external#1 agent.
++* PCI_AGENT_PRIO externalAgent2 - priotity for external#2 agent.
++* PCI_AGENT_PRIO externalAgent3 - priotity for external#3 agent.
++* PCI_AGENT_PRIO externalAgent4 - priotity for external#4 agent.
++* PCI_AGENT_PRIO externalAgent5 - priotity for external#5 agent.
++* Returns: true
++*********************************************************************/
++bool pciSetArbiterAgentsPriority (PCI_HOST host, PCI_AGENT_PRIO internalAgent,
++ PCI_AGENT_PRIO externalAgent0,
++ PCI_AGENT_PRIO externalAgent1,
++ PCI_AGENT_PRIO externalAgent2,
++ PCI_AGENT_PRIO externalAgent3,
++ PCI_AGENT_PRIO externalAgent4,
++ PCI_AGENT_PRIO externalAgent5)
++{
++ unsigned int regData;
++ unsigned int writeData;
++
++ GT_REG_READ (pci_arbiter_control[host], &regData);
++ writeData = (internalAgent << 7) + (externalAgent0 << 8) +
++ (externalAgent1 << 9) + (externalAgent2 << 10) +
++ (externalAgent3 << 11) + (externalAgent4 << 12) +
++ (externalAgent5 << 13);
++ regData = (regData & 0xffffc07f) | writeData;
++ GT_REG_WRITE (pci_arbiter_control[host], regData & regData);
++ return true;
++}
++
++/********************************************************************
++* pciParkingDisable - Park on last option disable, with this function you can
++* disable the park on last mechanism for each agent.
++* disabling this option for all agents results parking
++* on the internal master.
++*
++* Inputs: PCI_AGENT_PARK internalAgent - parking Disable for internal agent.
++* PCI_AGENT_PARK externalAgent0 - parking Disable for external#0 agent.
++* PCI_AGENT_PARK externalAgent1 - parking Disable for external#1 agent.
++* PCI_AGENT_PARK externalAgent2 - parking Disable for external#2 agent.
++* PCI_AGENT_PARK externalAgent3 - parking Disable for external#3 agent.
++* PCI_AGENT_PARK externalAgent4 - parking Disable for external#4 agent.
++* PCI_AGENT_PARK externalAgent5 - parking Disable for external#5 agent.
++* Returns: true
++*********************************************************************/
++bool pciParkingDisable (PCI_HOST host, PCI_AGENT_PARK internalAgent,
++ PCI_AGENT_PARK externalAgent0,
++ PCI_AGENT_PARK externalAgent1,
++ PCI_AGENT_PARK externalAgent2,
++ PCI_AGENT_PARK externalAgent3,
++ PCI_AGENT_PARK externalAgent4,
++ PCI_AGENT_PARK externalAgent5)
++{
++ unsigned int regData;
++ unsigned int writeData;
++
++ GT_REG_READ (pci_arbiter_control[host], &regData);
++ writeData = (internalAgent << 14) + (externalAgent0 << 15) +
++ (externalAgent1 << 16) + (externalAgent2 << 17) +
++ (externalAgent3 << 18) + (externalAgent4 << 19) +
++ (externalAgent5 << 20);
++ regData = (regData & ~(0x7f << 14)) | writeData;
++ GT_REG_WRITE (pci_arbiter_control[host], regData);
++ return true;
++}
++
++/********************************************************************
++* pciEnableBrokenAgentDetection - A master is said to be broken if it fails to
++* respond to grant assertion within a window specified in
++* the input value: 'brokenValue'.
++*
++* Inputs: unsigned char brokenValue - A value which limits the Master to hold the
++* grant without asserting frame.
++* Returns: Error for illegal broken value otherwise true.
++*********************************************************************/
++bool pciEnableBrokenAgentDetection (PCI_HOST host, unsigned char brokenValue)
++{
++ unsigned int data;
++ unsigned int regData;
++
++ if (brokenValue > 0xf)
++ return false; /* brokenValue must be 4 bit */
++ data = brokenValue << 3;
++ GT_REG_READ (pci_arbiter_control[host], &regData);
++ regData = (regData & 0xffffff87) | data;
++ GT_REG_WRITE (pci_arbiter_control[host], regData | BIT1);
++ return true;
++}
++
++/********************************************************************
++* pciDisableBrokenAgentDetection - This function disable the Broken agent
++* Detection mechanism.
++* NOTE: This operation may cause a dead lock on the
++* pci0 arbitration.
++*
++* Inputs: N/A
++* Returns: true.
++*********************************************************************/
++bool pciDisableBrokenAgentDetection (PCI_HOST host)
++{
++ unsigned int regData;
++
++ GT_REG_READ (pci_arbiter_control[host], &regData);
++ regData = regData & 0xfffffffd;
++ GT_REG_WRITE (pci_arbiter_control[host], regData);
++ return true;
++}
++
++/********************************************************************
++* pciP2PConfig - This function set the PCI_n P2P configurate.
++* For more information on the P2P read PCI spec.
++*
++* Inputs: unsigned int SecondBusLow - Secondery PCI interface Bus Range Lower
++* Boundry.
++* unsigned int SecondBusHigh - Secondry PCI interface Bus Range upper
++* Boundry.
++* unsigned int busNum - The CPI bus number to which the PCI interface
++* is connected.
++* unsigned int devNum - The PCI interface's device number.
++*
++* Returns: true.
++*********************************************************************/
++bool pciP2PConfig (PCI_HOST host, unsigned int SecondBusLow,
++ unsigned int SecondBusHigh,
++ unsigned int busNum, unsigned int devNum)
++{
++ unsigned int regData;
++
++ regData = (SecondBusLow & 0xff) | ((SecondBusHigh & 0xff) << 8) |
++ ((busNum & 0xff) << 16) | ((devNum & 0x1f) << 24);
++ GT_REG_WRITE (pci_p2p_configuration[host], regData);
++ return true;
++}
++
++/********************************************************************
++* pciSetRegionSnoopMode - This function modifys one of the 4 regions which
++* supports Cache Coherency in the PCI_n interface.
++* Inputs: region - One of the four regions.
++* snoopType - There is four optional Types:
++* 1. No Snoop.
++* 2. Snoop to WT region.
++* 3. Snoop to WB region.
++* 4. Snoop & Invalidate to WB region.
++* baseAddress - Base Address of this region.
++* regionLength - Region length.
++* Returns: false if one of the parameters is wrong otherwise return true.
++*********************************************************************/
++bool pciSetRegionSnoopMode (PCI_HOST host, PCI_SNOOP_REGION region,
++ PCI_SNOOP_TYPE snoopType,
++ unsigned int baseAddress,
++ unsigned int regionLength)
++{
++ unsigned int snoopXbaseAddress;
++ unsigned int snoopXtopAddress;
++ unsigned int data;
++ unsigned int snoopHigh = baseAddress + regionLength;
++
++ if ((region > PCI_SNOOP_REGION3) || (snoopType > PCI_SNOOP_WB))
++ return false;
++ snoopXbaseAddress =
++ pci_snoop_control_base_0_low[host] + 0x10 * region;
++ snoopXtopAddress = pci_snoop_control_top_0[host] + 0x10 * region;
++ if (regionLength == 0) { /* closing the region */
++ GT_REG_WRITE (snoopXbaseAddress, 0x0000ffff);
++ GT_REG_WRITE (snoopXtopAddress, 0);
++ return true;
++ }
++ baseAddress = baseAddress & 0xfff00000; /* Granularity of 1MByte */
++ data = (baseAddress >> 20) | snoopType << 12;
++ GT_REG_WRITE (snoopXbaseAddress, data);
++ snoopHigh = (snoopHigh & 0xfff00000) >> 20;
++ GT_REG_WRITE (snoopXtopAddress, snoopHigh - 1);
++ return true;
++}
++
++static int gt_read_config_dword (struct pci_controller *hose,
++ pci_dev_t dev, int offset, u32 * value)
++{
++ int bus = PCI_BUS (dev);
++
++ if ((bus == local_buses[0]) || (bus == local_buses[1])) {
++ *value = pciReadConfigReg ((PCI_HOST) hose->cfg_addr, offset,
++ PCI_DEV (dev));
++ } else {
++ *value = pciOverBridgeReadConfigReg ((PCI_HOST) hose->
++ cfg_addr, offset,
++ PCI_DEV (dev), bus);
++ }
++
++ return 0;
++}
++
++static int gt_write_config_dword (struct pci_controller *hose,
++ pci_dev_t dev, int offset, u32 value)
++{
++ int bus = PCI_BUS (dev);
++
++ if ((bus == local_buses[0]) || (bus == local_buses[1])) {
++ pciWriteConfigReg ((PCI_HOST) hose->cfg_addr, offset,
++ PCI_DEV (dev), value);
++ } else {
++ pciOverBridgeWriteConfigReg ((PCI_HOST) hose->cfg_addr,
++ offset, PCI_DEV (dev), bus,
++ value);
++ }
++ return 0;
++}
++
++
++static void gt_setup_ide (struct pci_controller *hose,
++ pci_dev_t dev, struct pci_config_table *entry)
++{
++ static const int ide_bar[] = { 8, 4, 8, 4, 0, 0 };
++ u32 bar_response, bar_value;
++ int bar;
++
++ for (bar = 0; bar < 6; bar++) {
++ /*ronen different function for 3rd bank. */
++ unsigned int offset =
++ (bar < 2) ? bar * 8 : 0x100 + (bar - 2) * 8;
++
++ pci_hose_write_config_dword (hose, dev, PCI_BASE_ADDRESS_0 + offset,
++ 0x0);
++ pci_hose_read_config_dword (hose, dev, PCI_BASE_ADDRESS_0 + offset,
++ &bar_response);
++
++ pciauto_region_allocate (bar_response &
++ PCI_BASE_ADDRESS_SPACE_IO ? hose->
++ pci_io : hose->pci_mem, ide_bar[bar],
++ &bar_value);
++
++ pci_hose_write_config_dword (hose, dev, PCI_BASE_ADDRESS_0 + bar * 4,
++ bar_value);
++ }
++}
++
++#ifdef CONFIG_USE_CPCIDVI
++static void gt_setup_cpcidvi (struct pci_controller *hose,
++ pci_dev_t dev, struct pci_config_table *entry)
++{
++ u32 bar_value, pci_response;
++
++ pci_hose_read_config_dword (hose, dev, PCI_COMMAND, &pci_response);
++ pci_hose_write_config_dword (hose, dev, PCI_BASE_ADDRESS_0, 0xffffffff);
++ pci_hose_read_config_dword (hose, dev, PCI_BASE_ADDRESS_0, &pci_response);
++ pciauto_region_allocate (hose->pci_mem, 0x01000000, &bar_value);
++ pci_hose_write_config_dword (hose, dev, PCI_BASE_ADDRESS_0, (bar_value & 0xffffff00));
++ pci_hose_write_config_dword (hose, dev, PCI_ROM_ADDRESS, 0x0);
++ pciauto_region_allocate (hose->pci_mem, 0x40000, &bar_value);
++ pci_hose_write_config_dword (hose, dev, PCI_ROM_ADDRESS, (bar_value & 0xffffff00) | 0x01);
++ gt_cpcidvi_rom.base = bar_value & 0xffffff00;
++ gt_cpcidvi_rom.init = 1;
++}
++
++unsigned char gt_cpcidvi_in8(unsigned int offset)
++{
++ unsigned char data;
++
++ if (gt_cpcidvi_rom.init == 0) {
++ return(0);
++ }
++ data = in8((offset & 0x04) + 0x3f000 + gt_cpcidvi_rom.base);
++ return(data);
++}
++
++void gt_cpcidvi_out8(unsigned int offset, unsigned char data)
++{
++ unsigned int off;
++
++ if (gt_cpcidvi_rom.init == 0) {
++ return;
++ }
++ off = data;
++ off = ((off << 3) & 0x7f8) + (offset & 0x4) + 0x3e000 + gt_cpcidvi_rom.base;
++ in8(off);
++ return;
++}
++#endif
++
++/* TODO BJW: Change this for DB64360. This was pulled from the EV64260 */
++/* and is curently not called *. */
++#if 0
++static void gt_fixup_irq (struct pci_controller *hose, pci_dev_t dev)
++{
++ unsigned char pin, irq;
++
++ pci_read_config_byte (dev, PCI_INTERRUPT_PIN, &pin);
++
++ if (pin == 1) { /* only allow INT A */
++ irq = pci_irq_swizzle[(PCI_HOST) hose->
++ cfg_addr][PCI_DEV (dev)];
++ if (irq)
++ pci_write_config_byte (dev, PCI_INTERRUPT_LINE, irq);
++ }
++}
++#endif
++
++struct pci_config_table gt_config_table[] = {
++#ifdef CONFIG_USE_CPCIDVI
++ {PCI_VENDOR_ID_CT, PCI_DEVICE_ID_CT_69030, PCI_CLASS_DISPLAY_VGA,
++ PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, gt_setup_cpcidvi},
++#endif
++ {PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_STORAGE_IDE,
++ PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, gt_setup_ide},
++ {}
++};
++
++struct pci_controller pci0_hose = {
++/* fixup_irq: gt_fixup_irq, */
++ config_table:gt_config_table,
++};
++
++struct pci_controller pci1_hose = {
++/* fixup_irq: gt_fixup_irq, */
++ config_table:gt_config_table,
++};
++
++void pci_init_board (void)
++{
++ unsigned int command;
++#ifdef CONFIG_PCI_PNP
++ unsigned int bar;
++#endif
++#ifdef DEBUG
++ gt_pci_bus_mode_display (PCI_HOST0);
++#endif
++#ifdef CONFIG_USE_CPCIDVI
++ gt_cpcidvi_rom.init = 0;
++ gt_cpcidvi_rom.base = 0;
++#endif
++
++ pci0_hose.config_table = gt_config_table;
++ pci1_hose.config_table = gt_config_table;
++
++#ifdef CONFIG_USE_CPCIDVI
++ gt_config_table[0].config_device = gt_setup_cpcidvi;
++#endif
++ gt_config_table[1].config_device = gt_setup_ide;
++
++ pci0_hose.first_busno = 0;
++ pci0_hose.last_busno = 0xff;
++ local_buses[0] = pci0_hose.first_busno;
++
++ /* PCI memory space */
++ pci_set_region (pci0_hose.regions + 0,
++ CFG_PCI0_0_MEM_SPACE,
++ CFG_PCI0_0_MEM_SPACE,
++ CFG_PCI0_MEM_SIZE, PCI_REGION_MEM);
++
++ /* PCI I/O space */
++ pci_set_region (pci0_hose.regions + 1,
++ CFG_PCI0_IO_SPACE_PCI,
++ CFG_PCI0_IO_SPACE, CFG_PCI0_IO_SIZE, PCI_REGION_IO);
++
++ pci_set_ops (&pci0_hose,
++ pci_hose_read_config_byte_via_dword,
++ pci_hose_read_config_word_via_dword,
++ gt_read_config_dword,
++ pci_hose_write_config_byte_via_dword,
++ pci_hose_write_config_word_via_dword,
++ gt_write_config_dword);
++ pci0_hose.region_count = 2;
++
++ pci0_hose.cfg_addr = (unsigned int *) PCI_HOST0;
++
++ pci_register_hose (&pci0_hose);
++ pciArbiterDisable(PCI_HOST0); /* on PMC modules no arbiter is used */
++ pciParkingDisable (PCI_HOST0, 1, 1, 1, 1, 1, 1, 1);
++ command = pciReadConfigReg (PCI_HOST0, PCI_COMMAND, SELF);
++ command |= PCI_COMMAND_MASTER;
++ pciWriteConfigReg (PCI_HOST0, PCI_COMMAND, SELF, command);
++ command = pciReadConfigReg (PCI_HOST0, PCI_COMMAND, SELF);
++ command |= PCI_COMMAND_MEMORY;
++ pciWriteConfigReg (PCI_HOST0, PCI_COMMAND, SELF, command);
++
++#ifdef CONFIG_PCI_PNP
++ pciauto_config_init(&pci0_hose);
++ pciauto_region_allocate(pci0_hose.pci_io, 0x400, &bar);
++#endif
++#ifdef CONFIG_PCI_SCAN_SHOW
++ printf("PCI: Bus Dev VenId DevId Class Int\n");
++#endif
++ pci0_hose.last_busno = pci_hose_scan_bus (&pci0_hose, pci0_hose.first_busno);
++
++#ifdef DEBUG
++ gt_pci_bus_mode_display (PCI_HOST1);
++#endif
++ pci1_hose.first_busno = pci0_hose.last_busno + 1;
++ pci1_hose.last_busno = 0xff;
++ pci1_hose.current_busno = pci1_hose.first_busno;
++ local_buses[1] = pci1_hose.first_busno;
++
++ /* PCI memory space */
++ pci_set_region (pci1_hose.regions + 0,
++ CFG_PCI1_0_MEM_SPACE,
++ CFG_PCI1_0_MEM_SPACE,
++ CFG_PCI1_MEM_SIZE, PCI_REGION_MEM);
++
++ /* PCI I/O space */
++ pci_set_region (pci1_hose.regions + 1,
++ CFG_PCI1_IO_SPACE_PCI,
++ CFG_PCI1_IO_SPACE, CFG_PCI1_IO_SIZE, PCI_REGION_IO);
++
++ pci_set_ops (&pci1_hose,
++ pci_hose_read_config_byte_via_dword,
++ pci_hose_read_config_word_via_dword,
++ gt_read_config_dword,
++ pci_hose_write_config_byte_via_dword,
++ pci_hose_write_config_word_via_dword,
++ gt_write_config_dword);
++
++ pci1_hose.region_count = 2;
++
++ pci1_hose.cfg_addr = (unsigned int *) PCI_HOST1;
++
++ pci_register_hose (&pci1_hose);
++
++ pciArbiterEnable (PCI_HOST1);
++ pciParkingDisable (PCI_HOST1, 1, 1, 1, 1, 1, 1, 1);
++
++ command = pciReadConfigReg (PCI_HOST1, PCI_COMMAND, SELF);
++ command |= PCI_COMMAND_MASTER;
++ pciWriteConfigReg (PCI_HOST1, PCI_COMMAND, SELF, command);
++
++#ifdef CONFIG_PCI_PNP
++ pciauto_config_init(&pci1_hose);
++ pciauto_region_allocate(pci1_hose.pci_io, 0x400, &bar);
++#endif
++ pci1_hose.last_busno = pci_hose_scan_bus (&pci1_hose, pci1_hose.first_busno);
++
++ command = pciReadConfigReg (PCI_HOST1, PCI_COMMAND, SELF);
++ command |= PCI_COMMAND_MEMORY;
++ pciWriteConfigReg (PCI_HOST1, PCI_COMMAND, SELF, command);
++
++}
++#endif /* of CONFIG_PCI */
+diff -Naupr u-boot-1.1.6/board/prodrive/p3mx/ppc_error_no.h u-boot-1.1.6-fsl-1/board/prodrive/p3mx/ppc_error_no.h
+--- u-boot-1.1.6/board/prodrive/p3mx/ppc_error_no.h 1969-12-31 18:00:00.000000000 -0600
++++ u-boot-1.1.6-fsl-1/board/prodrive/p3mx/ppc_error_no.h 2006-12-06 10:33:49.000000000 -0600
+@@ -0,0 +1,164 @@
++/*
++ * (C) Copyright 2003
++ * Ingo Assmus <ingo.assmus@keymile.com>
++ *
++ * See file CREDITS for list of people who contributed to this
++ * project.
++ *
++ * 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
++ */
++
++/*
++ * BK Id: SCCS/s.errno.h 1.9 06/05/01 21:45:21 paulus
++ */
++#ifndef _MV_PPC_ERRNO_H
++#define _MV_PPC_ERRNO_H
++
++#define EPERM 1 /* Operation not permitted */
++#define ENOENT 2 /* No such file or directory */
++#define ESRCH 3 /* No such process */
++#define EINTR 4 /* Interrupted system call */
++#define EIO 5 /* I/O error */
++#define ENXIO 6 /* No such device or address */
++#define E2BIG 7 /* Arg list too long */
++#define ENOEXEC 8 /* Exec format error */
++#define EBADF 9 /* Bad file number */
++#define ECHILD 10 /* No child processes */
++#define EAGAIN 11 /* Try again */
++#define ENOMEM 12 /* Out of memory */
++#define EACCES 13 /* Permission denied */
++#define EFAULT 14 /* Bad address */
++#define ENOTBLK 15 /* Block device required */
++#define EBUSY 16 /* Device or resource busy */
++#define EEXIST 17 /* File exists */
++#define EXDEV 18 /* Cross-device link */
++#define ENODEV 19 /* No such device */
++#define ENOTDIR 20 /* Not a directory */
++#define EISDIR 21 /* Is a directory */
++#define EINVAL 22 /* Invalid argument */
++#define ENFILE 23 /* File table overflow */
++#define EMFILE 24 /* Too many open files */
++#define ENOTTY 25 /* Not a typewriter */
++#define ETXTBSY 26 /* Text file busy */
++#define EFBIG 27 /* File too large */
++#define ENOSPC 28 /* No space left on device */
++#define ESPIPE 29 /* Illegal seek */
++#define EROFS 30 /* Read-only file system */
++#define EMLINK 31 /* Too many links */
++#define EPIPE 32 /* Broken pipe */
++#define EDOM 33 /* Math argument out of domain of func */
++#define ERANGE 34 /* Math result not representable */
++#define EDEADLK 35 /* Resource deadlock would occur */
++#define ENAMETOOLONG 36 /* File name too long */
++#define ENOLCK 37 /* No record locks available */
++#define ENOSYS 38 /* Function not implemented */
++#define ENOTEMPTY 39 /* Directory not empty */
++#define ELOOP 40 /* Too many symbolic links encountered */
++#define EWOULDBLOCK EAGAIN /* Operation would block */
++#define ENOMSG 42 /* No message of desired type */
++#define EIDRM 43 /* Identifier removed */
++#define ECHRNG 44 /* Channel number out of range */
++#define EL2NSYNC 45 /* Level 2 not synchronized */
++#define EL3HLT 46 /* Level 3 halted */
++#define EL3RST 47 /* Level 3 reset */
++#define ELNRNG 48 /* Link number out of range */
++#define EUNATCH 49 /* Protocol driver not attached */
++#define ENOCSI 50 /* No CSI structure available */
++#define EL2HLT 51 /* Level 2 halted */
++#define EBADE 52 /* Invalid exchange */
++#define EBADR 53 /* Invalid request descriptor */
++#define EXFULL 54 /* Exchange full */
++#define ENOANO 55 /* No anode */
++#define EBADRQC 56 /* Invalid request code */
++#define EBADSLT 57 /* Invalid slot */
++#define EDEADLOCK 58 /* File locking deadlock error */
++#define EBFONT 59 /* Bad font file format */
++#define ENOSTR 60 /* Device not a stream */
++#define ENODATA 61 /* No data available */
++#define ETIME 62 /* Timer expired */
++#define ENOSR 63 /* Out of streams resources */
++#define ENONET 64 /* Machine is not on the network */
++#define ENOPKG 65 /* Package not installed */
++#define EREMOTE 66 /* Object is remote */
++#define ENOLINK 67 /* Link has been severed */
++#define EADV 68 /* Advertise error */
++#define ESRMNT 69 /* Srmount error */
++#define ECOMM 70 /* Communication error on send */
++#define EPROTO 71 /* Protocol error */
++#define EMULTIHOP 72 /* Multihop attempted */
++#define EDOTDOT 73 /* RFS specific error */
++#define EBADMSG 74 /* Not a data message */
++#define EOVERFLOW 75 /* Value too large for defined data type */
++#define ENOTUNIQ 76 /* Name not unique on network */
++#define EBADFD 77 /* File descriptor in bad state */
++#define EREMCHG 78 /* Remote address changed */
++#define ELIBACC 79 /* Can not access a needed shared library */
++#define ELIBBAD 80 /* Accessing a corrupted shared library */
++#define ELIBSCN 81 /* .lib section in a.out corrupted */
++#define ELIBMAX 82 /* Attempting to link in too many shared libraries */
++#define ELIBEXEC 83 /* Cannot exec a shared library directly */
++#define EILSEQ 84 /* Illegal byte sequence */
++#define ERESTART 85 /* Interrupted system call should be restarted */
++#define ESTRPIPE 86 /* Streams pipe error */
++#define EUSERS 87 /* Too many users */
++#define ENOTSOCK 88 /* Socket operation on non-socket */
++#define EDESTADDRREQ 89 /* Destination address required */
++#define EMSGSIZE 90 /* Message too long */
++#define EPROTOTYPE 91 /* Protocol wrong type for socket */
++#define ENOPROTOOPT 92 /* Protocol not available */
++#define EPROTONOSUPPORT 93 /* Protocol not supported */
++#define ESOCKTNOSUPPORT 94 /* Socket type not supported */
++#define EOPNOTSUPP 95 /* Operation not supported on transport endpoint */
++#define EPFNOSUPPORT 96 /* Protocol family not supported */
++#define EAFNOSUPPORT 97 /* Address family not supported by protocol */
++#define EADDRINUSE 98 /* Address already in use */
++#define EADDRNOTAVAIL 99 /* Cannot assign requested address */
++#define ENETDOWN 100 /* Network is down */
++#define ENETUNREACH 101 /* Network is unreachable */
++#define ENETRESET 102 /* Network dropped connection because of reset */
++#define ECONNABORTED 103 /* Software caused connection abort */
++#define ECONNRESET 104 /* Connection reset by peer */
++#define ENOBUFS 105 /* No buffer space available */
++#define EISCONN 106 /* Transport endpoint is already connected */
++#define ENOTCONN 107 /* Transport endpoint is not connected */
++#define ESHUTDOWN 108 /* Cannot send after transport endpoint shutdown */
++#define ETOOMANYREFS 109 /* Too many references: cannot splice */
++#define ETIMEDOUT 110 /* Connection timed out */
++#define ECONNREFUSED 111 /* Connection refused */
++#define EHOSTDOWN 112 /* Host is down */
++#define EHOSTUNREACH 113 /* No route to host */
++#define EALREADY 114 /* Operation already in progress */
++#define EINPROGRESS 115 /* Operation now in progress */
++#define ESTALE 116 /* Stale NFS file handle */
++#define EUCLEAN 117 /* Structure needs cleaning */
++#define ENOTNAM 118 /* Not a XENIX named type file */
++#define ENAVAIL 119 /* No XENIX semaphores available */
++#define EISNAM 120 /* Is a named type file */
++#define EREMOTEIO 121 /* Remote I/O error */
++#define EDQUOT 122 /* Quota exceeded */
++
++#define ENOMEDIUM 123 /* No medium found */
++#define EMEDIUMTYPE 124 /* Wrong medium type */
++
++/* Should never be seen by user programs */
++#define ERESTARTSYS 512
++#define ERESTARTNOINTR 513
++#define ERESTARTNOHAND 514 /* restart if no handler.. */
++#define ENOIOCTLCMD 515 /* No ioctl command */
++
++#define _LAST_ERRNO 515
++
++#endif
+diff -Naupr u-boot-1.1.6/board/prodrive/p3mx/sdram_init.c u-boot-1.1.6-fsl-1/board/prodrive/p3mx/sdram_init.c
+--- u-boot-1.1.6/board/prodrive/p3mx/sdram_init.c 1969-12-31 18:00:00.000000000 -0600
++++ u-boot-1.1.6-fsl-1/board/prodrive/p3mx/sdram_init.c 2006-12-06 10:33:49.000000000 -0600
+@@ -0,0 +1,434 @@
++/*
++ * (C) Copyright 2001
++ * Josh Huber <huber@mclx.com>, Mission Critical Linux, Inc.
++ *
++ * See file CREDITS for list of people who contributed to this
++ * project.
++ *
++ * 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
++ */
++
++/*************************************************************************
++ * adaption for the Marvell DB64460 Board
++ * Ingo Assmus (ingo.assmus@keymile.com)
++ *************************************************************************/
++
++/* sdram_init.c - automatic memory sizing */
++
++#include <common.h>
++#include <74xx_7xx.h>
++#include "../../Marvell/include/memory.h"
++#include "../../Marvell/include/pci.h"
++#include "../../Marvell/include/mv_gen_reg.h"
++#include <net.h>
++
++#include "eth.h"
++#include "mpsc.h"
++#include "../../Marvell/common/i2c.h"
++#include "64460.h"
++#include "mv_regs.h"
++
++DECLARE_GLOBAL_DATA_PTR;
++
++#undef DEBUG
++#define MAP_PCI
++
++#ifdef DEBUG
++#define DP(x) x
++#else
++#define DP(x)
++#endif
++
++int set_dfcdlInit (void); /* setup delay line of Mv64460 */
++int mvDmaIsChannelActive (int);
++int mvDmaSetMemorySpace (ulong, ulong, ulong, ulong, ulong);
++int mvDmaTransfer (int, ulong, ulong, ulong, ulong);
++
++#define D_CACHE_FLUSH_LINE(addr, offset) \
++ { \
++ __asm__ __volatile__ ("dcbf %0,%1" : : "r" (addr), "r" (offset)); \
++ }
++
++int memory_map_bank (unsigned int bankNo,
++ unsigned int bankBase, unsigned int bankLength)
++{
++#ifdef MAP_PCI
++ PCI_HOST host;
++#endif
++
++#ifdef DEBUG
++ if (bankLength > 0) {
++ printf ("mapping bank %d at %08x - %08x\n",
++ bankNo, bankBase, bankBase + bankLength - 1);
++ } else {
++ printf ("unmapping bank %d\n", bankNo);
++ }
++#endif
++
++ memoryMapBank (bankNo, bankBase, bankLength);
++
++#ifdef MAP_PCI
++ for (host = PCI_HOST0; host <= PCI_HOST1; host++) {
++ const int features =
++ PREFETCH_ENABLE |
++ DELAYED_READ_ENABLE |
++ AGGRESSIVE_PREFETCH |
++ READ_LINE_AGGRESSIVE_PREFETCH |
++ READ_MULTI_AGGRESSIVE_PREFETCH |
++ MAX_BURST_4 | PCI_NO_SWAP;
++
++ pciMapMemoryBank (host, bankNo, bankBase, bankLength);
++
++ pciSetRegionSnoopMode (host, bankNo, PCI_SNOOP_WB, bankBase,
++ bankLength);
++
++ pciSetRegionFeatures (host, bankNo, features, bankBase,
++ bankLength);
++ }
++#endif
++
++ return 0;
++}
++
++/*
++ * Check memory range for valid RAM. A simple memory test determines
++ * the actually available RAM size between addresses `base' and
++ * `base + maxsize'. Some (not all) hardware errors are detected:
++ * - short between address lines
++ * - short between data lines
++ */
++long int dram_size (long int *base, long int maxsize)
++{
++ volatile long int *addr, *b = base;
++ long int cnt, val, save1, save2;
++
++#define STARTVAL (1<<20) /* start test at 1M */
++ for (cnt = STARTVAL / sizeof (long); cnt < maxsize / sizeof (long);
++ cnt <<= 1) {
++ addr = base + cnt; /* pointer arith! */
++
++ save1 = *addr; /* save contents of addr */
++ save2 = *b; /* save contents of base */
++
++ *addr = cnt; /* write cnt to addr */
++ *b = 0; /* put null at base */
++
++ /* check at base address */
++ if ((*b) != 0) {
++ *addr = save1; /* restore *addr */
++ *b = save2; /* restore *b */
++ return (0);
++ }
++ val = *addr; /* read *addr */
++ val = *addr; /* read *addr */
++
++ *addr = save1;
++ *b = save2;
++
++ if (val != cnt) {
++ DP (printf
++ ("Found %08x at Address %08x (failure)\n",
++ (unsigned int) val, (unsigned int) addr));
++ /* fix boundary condition.. STARTVAL means zero */
++ if (cnt == STARTVAL / sizeof (long))
++ cnt = 0;
++ return (cnt * sizeof (long));
++ }
++ }
++
++ return maxsize;
++}
++
++#define SDRAM_NORMAL 0x0
++#define SDRAM_PRECHARGE_ALL 0x1
++#define SDRAM_REFRESH_ALL 0x2
++#define SDRAM_MODE_REG_SETUP 0x3
++#define SDRAM_XTEN_MODE_REG_SETUP 0x4
++#define SDRAM_NOP 0x5
++#define SDRAM_SELF_REFRESH 0x7
++
++long int initdram (int board_type)
++{
++ int tmp;
++ int start;
++ ulong size;
++ ulong memSpaceAttr;
++ ulong dest;
++
++ /* first disable all banks */
++ memory_map_bank(0, 0, 0);
++ memory_map_bank(1, 0, 0);
++ memory_map_bank(2, 0, 0);
++ memory_map_bank(3, 0, 0);
++
++ /* calibrate delay lines */
++ set_dfcdlInit();
++
++ GT_REG_WRITE(MV64460_SDRAM_OPERATION, SDRAM_NOP); /* 0x1418 */
++ do {
++ tmp = GTREGREAD(MV64460_SDRAM_OPERATION);
++ } while(tmp != 0x0);
++
++ /* SDRAM controller configuration */
++#ifdef CONFIG_MV64460_ECC
++ GT_REG_WRITE(MV64460_SDRAM_CONFIG, 0x58201400); /* 0x1400 */
++#else
++ GT_REG_WRITE(MV64460_SDRAM_CONFIG, 0x58200400); /* 0x1400 */
++#endif
++ GT_REG_WRITE(MV64460_D_UNIT_CONTROL_LOW, 0xC3000540); /* 0x1404 */
++ GT_REG_WRITE(MV64460_D_UNIT_CONTROL_HIGH, 0x0300F777); /* 0x1424 */
++ GT_REG_WRITE(MV64460_SDRAM_TIMING_CONTROL_LOW, 0x01712220); /* 0x1408 */
++ GT_REG_WRITE(MV64460_SDRAM_TIMING_CONTROL_HIGH, 0x0000005D); /* 0x140C */
++ GT_REG_WRITE(MV64460_SDRAM_ADDR_CONTROL, 0x00000012); /* 0x1410 */
++ GT_REG_WRITE(MV64460_SDRAM_OPEN_PAGES_CONTROL, 0x00000001); /* 0x1414 */
++
++ /* SDRAM drive strength */
++ GT_REG_WRITE(MV64460_SDRAM_ADDR_CTRL_PADS_CALIBRATION, 0x80000000); /* 0x14C0 */
++ GT_REG_WRITE(MV64460_SDRAM_ADDR_CTRL_PADS_CALIBRATION, 0x80000008); /* 0x14C0 */
++ GT_REG_WRITE(MV64460_SDRAM_DATA_PADS_CALIBRATION, 0x80000000); /* 0x14C4 */
++ GT_REG_WRITE(MV64460_SDRAM_DATA_PADS_CALIBRATION, 0x80000008); /* 0x14C4 */
++
++ /* setup SDRAM device registers */
++
++ /* precharge all */
++ GT_REG_WRITE(MV64460_SDRAM_OPERATION, SDRAM_PRECHARGE_ALL); /* 0x1418 */
++ do {
++ tmp = GTREGREAD(MV64460_SDRAM_OPERATION);
++ } while(tmp != 0x0);
++
++ /* enable DLL */
++ GT_REG_WRITE(MV64460_EXTENDED_DRAM_MODE, 0x00000000); /* 0x1420 */
++ GT_REG_WRITE(MV64460_SDRAM_OPERATION, SDRAM_XTEN_MODE_REG_SETUP); /* 0x1418 */
++ do {
++ tmp = GTREGREAD(MV64460_SDRAM_OPERATION);
++ } while(tmp != 0x0);
++
++ /* reset DLL */
++ GT_REG_WRITE(MV64460_SDRAM_MODE, 0x00000132); /* 0x141C */
++ GT_REG_WRITE(MV64460_SDRAM_OPERATION, SDRAM_MODE_REG_SETUP); /* 0x1418 */
++ do {
++ tmp = GTREGREAD(MV64460_SDRAM_OPERATION);
++ } while(tmp != 0x0);
++
++ /* precharge all */
++ GT_REG_WRITE(MV64460_SDRAM_OPERATION, SDRAM_PRECHARGE_ALL); /* 0x1418 */
++ do {
++ tmp = GTREGREAD(MV64460_SDRAM_OPERATION);
++ } while(tmp != 0x0);
++
++ /* wait for 2 auto refresh commands */
++ udelay(20);
++
++ /* un-reset DLL */
++ GT_REG_WRITE(MV64460_SDRAM_MODE, 0x00000032); /* 0x141C */
++ GT_REG_WRITE(MV64460_SDRAM_OPERATION, SDRAM_MODE_REG_SETUP); /* 0x1418 */
++ do {
++ tmp = GTREGREAD(MV64460_SDRAM_OPERATION);
++ } while(tmp != 0x0);
++
++ /* wait 200 cycles */
++ udelay(2); /* FIXME make this dynamic for the system clock */
++
++ /* SDRAM init done */
++ memory_map_bank(0, CFG_SDRAM_BASE, (256 << 20));
++#ifdef CFG_SDRAM1_BASE
++ memory_map_bank(1, CFG_SDRAM1_BASE, (256 << 20));
++#endif
++
++ /* DUNIT_MMASK: enable SnoopHitEn bit to avoid errata CPU-#4
++ */
++ tmp = GTREGREAD(MV64460_D_UNIT_MMASK); /* 0x14B0 */
++ GT_REG_WRITE(MV64460_D_UNIT_MMASK, tmp | 0x2);
++
++ start = (0 << 20);
++#ifdef CONFIG_P3M750
++ size = (512 << 20);
++#elif defined (CONFIG_P3M7448)
++ size = (128 << 20);
++#endif
++
++#ifdef CONFIG_MV64460_ECC
++ memSpaceAttr = ((~(BIT0 << 0)) & 0xf) << 8;
++ mvDmaSetMemorySpace (0, 0, memSpaceAttr, start, size);
++ for (dest = start; dest < start + size; dest += _8M) {
++ mvDmaTransfer (0, start, dest, _8M,
++ BIT8 /*DMA_DTL_128BYTES */ |
++ BIT3 /*DMA_HOLD_SOURCE_ADDR */ |
++ BIT11 /*DMA_BLOCK_TRANSFER_MODE */ );
++ while (mvDmaIsChannelActive (0));
++ }
++#endif
++
++ return (size);
++}
++
++void board_add_ram_info(int use_default)
++{
++ u32 val;
++
++ puts(" (CL=");
++ switch ((GTREGREAD(MV64460_SDRAM_MODE) >> 4) & 0x7) {
++ case 0x2:
++ puts("2");
++ break;
++ case 0x3:
++ puts("3");
++ break;
++ case 0x5:
++ puts("1.5");
++ break;
++ case 0x6:
++ puts("2.5");
++ break;
++ }
++
++ val = GTREGREAD(MV64460_SDRAM_CONFIG);
++
++ puts(", ECC ");
++ if (val & 0x00001000)
++ puts("enabled)");
++ else
++ puts("not enabled)");
++}
++
++/*
++ * mvDmaIsChannelActive - Check if IDMA channel is active
++ *
++ * channel = IDMA channel number from 0 to 7
++ */
++int mvDmaIsChannelActive (int channel)
++{
++ ulong data;
++
++ data = GTREGREAD (MV64460_DMA_CHANNEL0_CONTROL + 4 * channel);
++ if (data & BIT14) /* activity status */
++ return 1;
++
++ return 0;
++}
++
++/*
++ * mvDmaSetMemorySpace - Set a DMA memory window for the DMA's address decoding
++ * map.
++ *
++ * memSpace = IDMA memory window number from 0 to 7
++ * trg_if = Target interface:
++ * 0x0 DRAM
++ * 0x1 Device Bus
++ * 0x2 Integrated SDRAM (or CPU bus 60x only)
++ * 0x3 PCI0
++ * 0x4 PCI1
++ * attr = IDMA attributes (see MV datasheet)
++ * base_addr = Sets up memory window for transfers
++ *
++ */
++int mvDmaSetMemorySpace (ulong memSpace,
++ ulong trg_if,
++ ulong attr, ulong base_addr, ulong size)
++{
++ ulong temp;
++
++ /* The base address must be aligned to the size. */
++ if (base_addr % size != 0)
++ return 0;
++
++ if (size >= 0x10000) { /* 64K */
++ size &= 0xffff0000;
++ base_addr = (base_addr & 0xffff0000);
++ /* Set the new attributes */
++ GT_REG_WRITE (MV64460_DMA_BASE_ADDR_REG0 + memSpace * 8,
++ (base_addr | trg_if | attr));
++ GT_REG_WRITE ((MV64460_DMA_SIZE_REG0 + memSpace * 8),
++ (size - 1) & 0xffff0000);
++ temp = GTREGREAD (MV64460_DMA_BASE_ADDR_ENABLE_REG);
++ GT_REG_WRITE (DMA_BASE_ADDR_ENABLE_REG,
++ (temp & ~(BIT0 << memSpace)));
++ return 1;
++ }
++
++ return 0;
++}
++
++/*
++ * mvDmaTransfer - Transfer data from src_addr to dst_addr on one of the 4
++ * DMA channels.
++ *
++ * channel = IDMA channel number from 0 to 3
++ * destAddr = Destination address
++ * sourceAddr = Source address
++ * size = Size in bytes
++ * command = See MV datasheet
++ *
++ */
++int mvDmaTransfer (int channel, ulong sourceAddr,
++ ulong destAddr, ulong size, ulong command)
++{
++ ulong engOffReg = 0; /* Engine Offset Register */
++
++ if (size > 0xffff)
++ command = command | BIT31; /* DMA_16M_DESCRIPTOR_MODE */
++ command = command | ((command >> 6) & 0x7);
++ engOffReg = channel * 4;
++ GT_REG_WRITE (MV64460_DMA_CHANNEL0_BYTE_COUNT + engOffReg, size);
++ GT_REG_WRITE (MV64460_DMA_CHANNEL0_SOURCE_ADDR + engOffReg, sourceAddr);
++ GT_REG_WRITE (MV64460_DMA_CHANNEL0_DESTINATION_ADDR + engOffReg, destAddr);
++ command = command |
++ BIT12 | /* DMA_CHANNEL_ENABLE */
++ BIT9; /* DMA_NON_CHAIN_MODE */
++ /* Activate DMA channel By writting to mvDmaControlRegister */
++ GT_REG_WRITE (MV64460_DMA_CHANNEL0_CONTROL + engOffReg, command);
++ return 1;
++}
++
++/****************************************************************************************
++ * SDRAM INIT *
++ * This procedure detect all Sdram types: 64, 128, 256, 512 Mbit, 1Gbit and 2Gb *
++ * This procedure fits only the Atlantis *
++ * *
++ ***************************************************************************************/
++
++/****************************************************************************************
++ * DFCDL initialize MV643xx Design Considerations *
++ * *
++ ***************************************************************************************/
++int set_dfcdlInit (void)
++{
++ int i;
++
++ /* Values from MV64460 User Manual */
++ unsigned int dfcdl_tbl[] = { 0x00000000, 0x00000001, 0x00000042, 0x00000083,
++ 0x000000c4, 0x00000105, 0x00000146, 0x00000187,
++ 0x000001c8, 0x00000209, 0x0000024a, 0x0000028b,
++ 0x000002cc, 0x0000030d, 0x0000034e, 0x0000038f,
++ 0x000003d0, 0x00000411, 0x00000452, 0x00000493,
++ 0x000004d4, 0x00000515, 0x00000556, 0x00000597,
++ 0x000005d8, 0x00000619, 0x0000065a, 0x0000069b,
++ 0x000006dc, 0x0000071d, 0x0000075e, 0x0000079f,
++ 0x000007e0, 0x00000821, 0x00000862, 0x000008a3,
++ 0x000008e4, 0x00000925, 0x00000966, 0x000009a7,
++ 0x000009e8, 0x00000a29, 0x00000a6a, 0x00000aab,
++ 0x00000aec, 0x00000b2d, 0x00000b6e, 0x00000baf,
++ 0x00000bf0, 0x00000c31, 0x00000c72, 0x00000cb3,
++ 0x00000cf4, 0x00000d35, 0x00000d76, 0x00000db7,
++ 0x00000df8, 0x00000e39, 0x00000e7a, 0x00000ebb,
++ 0x00000efc, 0x00000f3d, 0x00000f7e, 0x00000fbf };
++
++ for (i = 0; i < 64; i++)
++ GT_REG_WRITE (SRAM_DATA0, dfcdl_tbl[i]);
++ GT_REG_WRITE (DFCDL_CONFIG0, 0x00300000); /* enable dynamic delay line updating */
++
++ return (0);
++}
+diff -Naupr u-boot-1.1.6/board/prodrive/p3mx/serial.c u-boot-1.1.6-fsl-1/board/prodrive/p3mx/serial.c
+--- u-boot-1.1.6/board/prodrive/p3mx/serial.c 1969-12-31 18:00:00.000000000 -0600
++++ u-boot-1.1.6-fsl-1/board/prodrive/p3mx/serial.c 2006-12-06 10:33:49.000000000 -0600
+@@ -0,0 +1,107 @@
++/*
++ * (C) Copyright 2001
++ * Josh Huber <huber@mclx.com>, Mission Critical Linux, Inc.
++ *
++ * modified for marvell db64360 eval board by
++ * Ingo Assmus <ingo.assmus@keymile.com>
++ *
++ * modified for cpci750 board by
++ * Reinhard Arlt <reinhard.arlt@esd-electronics.com>
++ *
++ * See file CREDITS for list of people who contributed to this
++ * project.
++ *
++ * 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
++ */
++
++/*
++ * serial.c - serial support for esd cpci750 board
++ */
++
++/* supports the MPSC */
++
++#include <common.h>
++#include <command.h>
++#include "../../Marvell/include/memory.h"
++#include "serial.h"
++
++#include "mpsc.h"
++
++DECLARE_GLOBAL_DATA_PTR;
++
++int serial_init (void)
++{
++ mpsc_init (gd->baudrate);
++
++ return (0);
++}
++
++void serial_putc (const char c)
++{
++ if (c == '\n')
++ mpsc_putchar ('\r');
++
++ mpsc_putchar (c);
++}
++
++int serial_getc (void)
++{
++ return mpsc_getchar ();
++}
++
++int serial_tstc (void)
++{
++ return mpsc_test_char ();
++}
++
++void serial_setbrg (void)
++{
++ galbrg_set_baudrate (CONFIG_MPSC_PORT, gd->baudrate);
++}
++
++
++void serial_puts (const char *s)
++{
++ while (*s) {
++ serial_putc (*s++);
++ }
++}
++
++#if (CONFIG_COMMANDS & CFG_CMD_KGDB)
++void kgdb_serial_init (void)
++{
++}
++
++void putDebugChar (int c)
++{
++ serial_putc (c);
++}
++
++void putDebugStr (const char *str)
++{
++ serial_puts (str);
++}
++
++int getDebugChar (void)
++{
++ return serial_getc ();
++}
++
++void kgdb_interruptible (int yes)
++{
++ return;
++}
++#endif /* CFG_CMD_KGDB */
+diff -Naupr u-boot-1.1.6/board/prodrive/p3mx/serial.h u-boot-1.1.6-fsl-1/board/prodrive/p3mx/serial.h
+--- u-boot-1.1.6/board/prodrive/p3mx/serial.h 1969-12-31 18:00:00.000000000 -0600
++++ u-boot-1.1.6-fsl-1/board/prodrive/p3mx/serial.h 2006-12-06 10:33:49.000000000 -0600
+@@ -0,0 +1,89 @@
++/*
++ * (C) Copyright 2001
++ * Josh Huber <huber@mclx.com>, Mission Critical Linux, Inc.
++ *
++ * modified for marvell db64360 eval board by
++ * Ingo Assmus <ingo.assmus@keymile.com>
++ *
++ * See file CREDITS for list of people who contributed to this
++ * project.
++ *
++ * 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
++ */
++
++/* serial.h - mostly useful for DUART serial_init in serial.c */
++
++#ifndef __SERIAL_H__
++#define __SERIAL_H__
++
++#if 0
++
++#define B230400 1
++#define B115200 2
++#define B57600 4
++#define B38400 82
++#define B19200 163
++#define B9600 24
++#define B4800 651
++#define B2400 1302
++#define B1200 2604
++#define B600 5208
++#define B300 10417
++#define B150 20833
++#define B110 28409
++#define BDEFAULT B115200
++
++ /* this stuff is important to initialize
++ the DUART channels */
++
++#define Scale 0x01L /* distance between port addresses */
++#define COM1 0x000003f8 /* Keyboard */
++#define COM2 0x000002f8 /* Host */
++
++
++/* Port Definitions relative to base COM port addresses */
++#define DataIn (0x00*Scale) /* data input port */
++#define DataOut (0x00*Scale) /* data output port */
++#define BaudLsb (0x00*Scale) /* baud rate divisor least significant byte */
++#define BaudMsb (0x01*Scale) /* baud rate divisor most significant byte */
++#define Ier (0x01*Scale) /* interrupt enable register */
++#define Iir (0x02*Scale) /* interrupt identification register */
++#define Lcr (0x03*Scale) /* line control register */
++#define Mcr (0x04*Scale) /* modem control register */
++#define Lsr (0x05*Scale) /* line status register */
++#define Msr (0x06*Scale) /* modem status register */
++
++/* Bit Definitions for above ports */
++#define LcrDlab 0x80 /* b7: enable baud rate divisor registers */
++#define LcrDflt 0x03 /* b6-0: no parity, 1 stop, 8 data */
++
++#define McrRts 0x02 /* b1: request to send (I am ready to xmit) */
++#define McrDtr 0x01 /* b0: data terminal ready (I am alive ready to rcv) */
++#define McrDflt (McrRts|McrDtr)
++
++#define LsrTxD 0x6000 /* b5: transmit holding register empty (i.e. xmit OK!)*/
++ /* b6: transmitter empty */
++#define LsrRxD 0x0100 /* b0: received data ready (i.e. got a byte!) */
++
++#define MsrRi 0x0040 /* b6: ring indicator (other guy is ready to rcv) */
++#define MsrDsr 0x0020 /* b5: data set ready (other guy is alive ready to rcv */
++#define MsrCts 0x0010 /* b4: clear to send (other guy is ready to rcv) */
++
++#define IerRda 0xf /* b0: Enable received data available interrupt */
++
++#endif
++
++#endif /* __SERIAL_H__ */
+diff -Naupr u-boot-1.1.6/board/prodrive/p3mx/u-boot.lds u-boot-1.1.6-fsl-1/board/prodrive/p3mx/u-boot.lds
+--- u-boot-1.1.6/board/prodrive/p3mx/u-boot.lds 1969-12-31 18:00:00.000000000 -0600
++++ u-boot-1.1.6-fsl-1/board/prodrive/p3mx/u-boot.lds 2006-12-06 10:33:49.000000000 -0600
+@@ -0,0 +1,138 @@
++/*
++ * (C) Copyright 2001
++ * Josh Huber <huber@mclx.com>, Mission Critical Linux, Inc.
++ *
++ * See file CREDITS for list of people who contributed to this
++ * project.
++ *
++ * 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
++ */
++
++/*
++ * u-boot.lds - linker script for U-Boot on the Galileo Eval Board.
++ */
++
++OUTPUT_ARCH(powerpc)
++SEARCH_DIR(/lib); SEARCH_DIR(/usr/lib); SEARCH_DIR(/usr/local/lib); SEARCH_DIR(/usr/local/powerpc-any-elf/lib);
++/* Do we need any of these for elf?
++ __DYNAMIC = 0; */
++SECTIONS
++{
++ /* Read-only sections, merged into text segment: */
++ . = + SIZEOF_HEADERS;
++ .interp : { *(.interp) }
++ .hash : { *(.hash) }
++ .dynsym : { *(.dynsym) }
++ .dynstr : { *(.dynstr) }
++ .rel.text : { *(.rel.text) }
++ .rela.text : { *(.rela.text) }
++ .rel.data : { *(.rel.data) }
++ .rela.data : { *(.rela.data) }
++ .rel.rodata : { *(.rel.rodata) }
++ .rela.rodata : { *(.rela.rodata) }
++ .rel.got : { *(.rel.got) }
++ .rela.got : { *(.rela.got) }
++ .rel.ctors : { *(.rel.ctors) }
++ .rela.ctors : { *(.rela.ctors) }
++ .rel.dtors : { *(.rel.dtors) }
++ .rela.dtors : { *(.rela.dtors) }
++ .rel.bss : { *(.rel.bss) }
++ .rela.bss : { *(.rela.bss) }
++ .rel.plt : { *(.rel.plt) }
++ .rela.plt : { *(.rela.plt) }
++ .init : { *(.init) }
++ .plt : { *(.plt) }
++ .text :
++ {
++ cpu/74xx_7xx/start.o (.text)
++
++/* store the environment in a seperate sector in the boot flash */
++/* . = env_offset; */
++/* common/environment.o(.text) */
++
++ *(.text)
++ *(.fixup)
++ *(.got1)
++ }
++ _etext = .;
++ PROVIDE (etext = .);
++ .rodata :
++ {
++ *(.rodata)
++ *(.rodata1)
++ *(.rodata.str1.4)
++ *(.eh_frame)
++ }
++ .fini : { *(.fini) } =0
++ .ctors : { *(.ctors) }
++ .dtors : { *(.dtors) }
++
++ /* Read-write section, merged into data segment: */
++ . = (. + 0x00FF) & 0xFFFFFF00;
++ _erotext = .;
++ PROVIDE (erotext = .);
++ .reloc :
++ {
++ *(.got)
++ _GOT2_TABLE_ = .;
++ *(.got2)
++ _FIXUP_TABLE_ = .;
++ *(.fixup)
++ }
++ __got2_entries = (_FIXUP_TABLE_ - _GOT2_TABLE_) >>2;
++ __fixup_entries = (. - _FIXUP_TABLE_)>>2;
++
++ .data :
++ {
++ *(.data)
++ *(.data1)
++ *(.sdata)
++ *(.sdata2)
++ *(.dynamic)
++ CONSTRUCTORS
++ }
++ _edata = .;
++ PROVIDE (edata = .);
++
++ . = .;
++ __u_boot_cmd_start = .;
++ .u_boot_cmd : { *(.u_boot_cmd) }
++ __u_boot_cmd_end = .;
++
++
++ . = .;
++ __start___ex_table = .;
++ __ex_table : { *(__ex_table) }
++ __stop___ex_table = .;
++
++ . = ALIGN(256);
++ __init_begin = .;
++ .text.init : { *(.text.init) }
++ .data.init : { *(.data.init) }
++ . = ALIGN(256);
++ __init_end = .;
++
++ __bss_start = .;
++ .bss :
++ {
++ *(.sbss) *(.scommon)
++ *(.dynbss)
++ *(.bss)
++ *(COMMON)
++ }
++ _end = . ;
++ PROVIDE (end = .);
++}
+diff -Naupr u-boot-1.1.6/board/tqm5200/cam5200_flash.c u-boot-1.1.6-fsl-1/board/tqm5200/cam5200_flash.c
+--- u-boot-1.1.6/board/tqm5200/cam5200_flash.c 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/board/tqm5200/cam5200_flash.c 2006-11-30 12:34:13.000000000 -0600
+@@ -759,7 +759,7 @@ unsigned long flash_init(void)
+
+ if (flash_info[i].flash_id == FLASH_UNKNOWN) {
+ printf("## Unknown FLASH on Bank %d - Size = 0x%08lx = %ld MB\n",
+- i, size_b[i], size_b[i] << 20);
++ i+1, size_b[i], size_b[i] << 20);
+ flash_info[i].sector_count = -1;
+ flash_info[i].size = 0;
+ }
+diff -Naupr u-boot-1.1.6/board/tqm5200/tqm5200.c u-boot-1.1.6-fsl-1/board/tqm5200/tqm5200.c
+--- u-boot-1.1.6/board/tqm5200/tqm5200.c 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/board/tqm5200/tqm5200.c 2006-11-30 12:34:13.000000000 -0600
+@@ -289,7 +289,7 @@ int checkboard (void)
+ #elif defined(CONFIG_TB5200)
+ # define CARRIER_NAME "TB5200"
+ #elif defined(CONFIG_CAM5200)
+-# define CARRIER_NAME "Cam5200"
++# define CARRIER_NAME "CAM5200"
+ #elif defined(CONFIG_FO300)
+ # define CARRIER_NAME "FO300"
+ #else
+@@ -341,9 +341,7 @@ void pci_init_board(void)
+ #define SM501_GPIO_DATA_DIR_HIGH 0x0001000CUL
+ #define SM501_GPIO_DATA_HIGH 0x00010004UL
+ #define SM501_GPIO_51 0x00080000UL
+-#else
+-#define GPIO_PSC1_4 0x01000000UL
+-#endif
++#endif /* CONFIG MINIFAP */
+
+ void init_ide_reset (void)
+ {
+@@ -381,9 +379,9 @@ void ide_set_reset (int idereset)
+ }
+ #else
+ if (idereset) {
+- *(vu_long *) MPC5XXX_WU_GPIO_DATA &= ~GPIO_PSC1_4;
++ *(vu_long *) MPC5XXX_WU_GPIO_DATA_O &= ~GPIO_PSC1_4;
+ } else {
+- *(vu_long *) MPC5XXX_WU_GPIO_DATA |= GPIO_PSC1_4;
++ *(vu_long *) MPC5XXX_WU_GPIO_DATA_O |= GPIO_PSC1_4;
+ }
+ #endif
+ }
+diff -Naupr u-boot-1.1.6/board/tqm834x/pci.c u-boot-1.1.6-fsl-1/board/tqm834x/pci.c
+--- u-boot-1.1.6/board/tqm834x/pci.c 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/board/tqm834x/pci.c 2006-11-10 11:24:29.000000000 -0600
+@@ -69,17 +69,17 @@ void
+ pci_init_board(void)
+ {
+ volatile immap_t * immr;
+- volatile clk8349_t * clk;
+- volatile law8349_t * pci_law;
+- volatile pot8349_t * pci_pot;
+- volatile pcictrl8349_t * pci_ctrl;
+- volatile pciconf8349_t * pci_conf;
++ volatile clk83xx_t * clk;
++ volatile law83xx_t * pci_law;
++ volatile pot83xx_t * pci_pot;
++ volatile pcictrl83xx_t * pci_ctrl;
++ volatile pciconf83xx_t * pci_conf;
+ u16 reg16;
+ u32 reg32;
+ struct pci_controller * hose;
+
+- immr = (immap_t *)CFG_IMMRBAR;
+- clk = (clk8349_t *)&immr->clk;
++ immr = (immap_t *)CFG_IMMR;
++ clk = (clk83xx_t *)&immr->clk;
+ pci_law = immr->sysconf.pcilaw;
+ pci_pot = immr->ios.pot;
+ pci_ctrl = immr->pci_ctrl;
+@@ -186,8 +186,8 @@ pci_init_board(void)
+ hose->region_count = 3;
+
+ pci_setup_indirect(hose,
+- (CFG_IMMRBAR+0x8300),
+- (CFG_IMMRBAR+0x8304));
++ (CFG_IMMR+0x8300),
++ (CFG_IMMR+0x8304));
+
+ pci_register_hose(hose);
+
+diff -Naupr u-boot-1.1.6/board/tqm834x/tqm834x.c u-boot-1.1.6-fsl-1/board/tqm834x/tqm834x.c
+--- u-boot-1.1.6/board/tqm834x/tqm834x.c 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/board/tqm834x/tqm834x.c 2006-11-10 11:24:29.000000000 -0600
+@@ -69,7 +69,7 @@ static void set_cs_config(short cs, long
+ static void set_ddr_config(void);
+
+ /* Local variable */
+-static volatile immap_t *im = (immap_t *)CFG_IMMRBAR;
++static volatile immap_t *im = (immap_t *)CFG_IMMR;
+
+ /**************************************************************************
+ * Board initialzation after relocation to RAM. Used to detect the number
+@@ -147,7 +147,7 @@ int checkboard (void)
+ volatile immap_t * immr;
+ u32 w, f;
+
+- immr = (immap_t *)CFG_IMMRBAR;
++ immr = (immap_t *)CFG_IMMR;
+ if (!(immr->reset.rcwh & RCWH_PCIHOST)) {
+ printf("PCI: NOT in host mode..?!\n");
+ return 0;
+diff -Naupr u-boot-1.1.6/board/v38b/ethaddr.c u-boot-1.1.6-fsl-1/board/v38b/ethaddr.c
+--- u-boot-1.1.6/board/v38b/ethaddr.c 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/board/v38b/ethaddr.c 2006-11-10 11:24:29.000000000 -0600
+@@ -1,5 +1,4 @@
+ /*
+- *
+ * (C) Copyright 2006
+ * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
+ *
+@@ -25,48 +24,13 @@
+ #include <common.h>
+ #include <mpc5xxx.h>
+
+-#define GPIO_ENABLE (MPC5XXX_WU_GPIO)
+-
+-/* Open Drain Emulation Register */
+-#define GPIO_ODR (MPC5XXX_WU_GPIO + 0x04)
+-
+-/* Data Direction Register */
+-#define GPIO_DDR (MPC5XXX_WU_GPIO + 0x08)
+-
+-/* Data Value Out Register */
+-#define GPIO_DVOR (MPC5XXX_WU_GPIO + 0x0C)
+-
+-/* Interrupt Enable Register */
+-#define GPIO_IER (MPC5XXX_WU_GPIO + 0x10)
+-
+-/* Individual Interrupt Enable Register */
+-#define GPIO_IIER (MPC5XXX_WU_GPIO + 0x14)
+-
+-/* Interrupt Type Register */
+-#define GPIO_ITR (MPC5XXX_WU_GPIO + 0x18)
+-
+-/* Master Enable Register */
+-#define GPIO_MER (MPC5XXX_WU_GPIO + 0x1C)
+-
+-/* Data Input Value Register */
+-#define GPIO_DIVR (MPC5XXX_WU_GPIO + 0x20)
+-
+-/* Status Register */
+-#define GPIO_SR (MPC5XXX_WU_GPIO + 0x24)
+-
+-#define PSC6_0 0x10000000
+-#define WKUP_7 0x80000000
+-
+-/* For NS4 A/B board define WKUP_7, for V38B board PSC_6 */
+-#define GPIO_PIN PSC6_0
++/* For the V38B board the pin is GPIO_PSC_6 */
++#define GPIO_PIN GPIO_PSC6_0
+
+ #define NO_ERROR 0
+ #define ERR_NO_NUMBER 1
+ #define ERR_BAD_NUMBER 2
+
+-typedef volatile unsigned long GPIO_REG;
+-typedef GPIO_REG *GPIO_REG_PTR;
+-
+ static int is_high(void);
+ static int check_device(void);
+ static void io_out(int value);
+@@ -79,33 +43,34 @@ static void write_byte(unsigned char com
+ void read_2501_memory(unsigned char *psernum, unsigned char *perr);
+ void board_get_enetaddr(uchar *enetaddr);
+
++
+ static int is_high()
+ {
+- return (* ((vu_long *) GPIO_DIVR) & GPIO_PIN);
++ return (*((vu_long *) MPC5XXX_WU_GPIO_DATA_I) & GPIO_PIN);
+ }
+
+ static void io_out(int value)
+ {
+ if (value)
+- *((vu_long *) GPIO_DVOR) |= GPIO_PIN;
++ *((vu_long *) MPC5XXX_WU_GPIO_DATA_O) |= GPIO_PIN;
+ else
+- *((vu_long *) GPIO_DVOR) &= ~GPIO_PIN;
++ *((vu_long *) MPC5XXX_WU_GPIO_DATA_O) &= ~GPIO_PIN;
+ }
+
+ static void io_input()
+ {
+- *((vu_long *) GPIO_DDR) &= ~GPIO_PIN;
++ *((vu_long *) MPC5XXX_WU_GPIO_DIR) &= ~GPIO_PIN;
+ udelay(3); /* allow input to settle */
+ }
+
+ static void io_output()
+ {
+- *((vu_long *) GPIO_DDR) |= GPIO_PIN;
++ *((vu_long *) MPC5XXX_WU_GPIO_DIR) |= GPIO_PIN;
+ }
+
+ static void init_gpio()
+ {
+- *((vu_long *) GPIO_ENABLE) |= GPIO_PIN; /* Enable appropriate pin */
++ *((vu_long *) MPC5XXX_WU_GPIO_ENABLE) |= GPIO_PIN; /* Enable appropriate pin */
+ }
+
+ void read_2501_memory(unsigned char *psernum, unsigned char *perr)
+@@ -117,8 +82,8 @@ void read_2501_memory(unsigned char *pse
+ *perr = 0;
+ crcval = 0;
+
+- for (i=0; i<NBYTES; i++)
+-
++ for (i = 0; i < NBYTES; i++)
++ buf[i] = 0;
+
+ if (!check_device())
+ *perr = ERR_NO_NUMBER;
+@@ -130,10 +95,10 @@ void read_2501_memory(unsigned char *pse
+ write_byte(0x00);
+ read_byte(&crcval); /* Read CRC of address and command */
+
+- for (i=0; i<NBYTES; i++)
+- read_byte( &buf[i] );
++ for (i = 0; i < NBYTES; i++)
++ read_byte(&buf[i]);
+ }
+- if (strncmp((const char*) &buf[11], "MAREL IEEE 802.3", 16)) {
++ if (strncmp((const char *) &buf[11], "MAREL IEEE 802.3", 16)) {
+ *perr = ERR_BAD_NUMBER;
+ psernum[0] = 0x00;
+ psernum[1] = 0xE0;
+@@ -141,8 +106,7 @@ void read_2501_memory(unsigned char *pse
+ psernum[3] = 0xFF;
+ psernum[4] = 0xFF;
+ psernum[5] = 0xFF;
+- }
+- else {
++ } else {
+ psernum[0] = 0x00;
+ psernum[1] = 0xE0;
+ psernum[2] = 0xEE;
+@@ -173,27 +137,23 @@ static void write_byte(unsigned char com
+ {
+ char i;
+
+- for (i=0; i<8; i++) {
++ for (i = 0; i < 8; i++) {
+ /* 1 us to 15 us low pulse starts bit slot */
+ /* Start with high pulse for 3 us */
+ io_input();
+-
+ udelay(3);
+
+ io_out(0);
+ io_output();
+-
+ udelay(3);
+
+ if (command & 0x01) {
+ /* 60 us high for 1-bit */
+ io_input();
+ udelay(60);
+- }
+- else {
++ } else
+ /* 60 us low for 0-bit */
+ udelay(60);
+- }
+ /* Leave pin as input */
+ io_input();
+
+@@ -201,11 +161,11 @@ static void write_byte(unsigned char com
+ }
+ }
+
+-static void read_byte(unsigned char *data)
++static void read_byte(unsigned char *data)
+ {
+ unsigned char i, rdat = 0;
+
+- for (i=0; i<8; i++) {
++ for (i = 0; i < 8; i++) {
+ /* read one bit from one-wire device */
+
+ /* 1 - 15 us low starts bit slot */
+@@ -233,22 +193,21 @@ static void read_byte(unsigned char *da
+
+ void board_get_enetaddr(uchar *enetaddr)
+ {
+- unsigned char sn[6], err=NO_ERROR;
++ unsigned char sn[6], err = NO_ERROR;
+
+ init_gpio();
+
+ read_2501_memory(sn, &err);
+
+ if (err == NO_ERROR) {
+- sprintf(enetaddr, "%02x:%02x:%02x:%02x:%02x:%02x",
++ sprintf((char *)enetaddr, "%02x:%02x:%02x:%02x:%02x:%02x",
+ sn[0], sn[1], sn[2], sn[3], sn[4], sn[5]);
+ printf("MAC address: %s\n", enetaddr);
+- setenv("ethaddr", enetaddr);
+- }
+- else {
+- sprintf(enetaddr, "00:01:02:03:04:05");
++ setenv("ethaddr", (char *)enetaddr);
++ } else {
++ sprintf((char *)enetaddr, "00:01:02:03:04:05");
+ printf("Error reading MAC address.\n");
+ printf("Setting default to %s\n", enetaddr);
+- setenv("ethaddr", enetaddr);
++ setenv("ethaddr", (char *)enetaddr);
+ }
+ }
+diff -Naupr u-boot-1.1.6/board/v38b/u-boot.lds u-boot-1.1.6-fsl-1/board/v38b/u-boot.lds
+--- u-boot-1.1.6/board/v38b/u-boot.lds 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/board/v38b/u-boot.lds 2006-11-10 11:24:29.000000000 -0600
+@@ -61,6 +61,7 @@ SECTIONS
+ *(.rodata)
+ *(.rodata1)
+ *(.rodata.str1.4)
++ *(.eh_frame)
+ }
+ .fini : { *(.fini) } =0
+ .ctors : { *(.ctors) }
+@@ -93,11 +94,13 @@ SECTIONS
+ _edata = .;
+ PROVIDE (edata = .);
+
++ . = .;
+ __u_boot_cmd_start = .;
+ .u_boot_cmd : { *(.u_boot_cmd) }
+ __u_boot_cmd_end = .;
+
+
++ . = .;
+ __start___ex_table = .;
+ __ex_table : { *(__ex_table) }
+ __stop___ex_table = .;
+diff -Naupr u-boot-1.1.6/board/v38b/v38b.c u-boot-1.1.6-fsl-1/board/v38b/v38b.c
+--- u-boot-1.1.6/board/v38b/v38b.c 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/board/v38b/v38b.c 2006-11-10 11:24:29.000000000 -0600
+@@ -28,43 +28,44 @@
+ #include <mpc5xxx.h>
+ #include <asm/processor.h>
+
++
+ #ifndef CFG_RAMBOOT
+ static void sdram_start(int hi_addr)
+ {
+ long hi_addr_bit = hi_addr ? 0x01000000 : 0;
+
+ /* unlock mode register */
+- *(vu_long *)MPC5XXX_SDRAM_CTRL = SDRAM_CONTROL | 0x80000000 | hi_addr_bit;
++ *(vu_long *) MPC5XXX_SDRAM_CTRL = SDRAM_CONTROL | 0x80000000 | hi_addr_bit;
+ __asm__ volatile ("sync");
+
+ /* precharge all banks */
+- *(vu_long *)MPC5XXX_SDRAM_CTRL = SDRAM_CONTROL | 0x80000002 | hi_addr_bit;
++ *(vu_long *) MPC5XXX_SDRAM_CTRL = SDRAM_CONTROL | 0x80000002 | hi_addr_bit;
+ __asm__ volatile ("sync");
+
+ #if SDRAM_DDR
+ /* set mode register: extended mode */
+- *(vu_long *)MPC5XXX_SDRAM_MODE = SDRAM_EMODE;
++ *(vu_long *) MPC5XXX_SDRAM_MODE = SDRAM_EMODE;
+ __asm__ volatile ("sync");
+
+ /* set mode register: reset DLL */
+- *(vu_long *)MPC5XXX_SDRAM_MODE = SDRAM_MODE | 0x04000000;
++ *(vu_long *) MPC5XXX_SDRAM_MODE = SDRAM_MODE | 0x04000000;
+ __asm__ volatile ("sync");
+ #endif /* SDRAM_DDR */
+
+ /* precharge all banks */
+- *(vu_long *)MPC5XXX_SDRAM_CTRL = SDRAM_CONTROL | 0x80000002 | hi_addr_bit;
++ *(vu_long *) MPC5XXX_SDRAM_CTRL = SDRAM_CONTROL | 0x80000002 | hi_addr_bit;
+ __asm__ volatile ("sync");
+
+ /* auto refresh */
+- *(vu_long *)MPC5XXX_SDRAM_CTRL = SDRAM_CONTROL | 0x80000004 | hi_addr_bit;
++ *(vu_long *) MPC5XXX_SDRAM_CTRL = SDRAM_CONTROL | 0x80000004 | hi_addr_bit;
+ __asm__ volatile ("sync");
+
+ /* set mode register */
+- *(vu_long *)MPC5XXX_SDRAM_MODE = SDRAM_MODE;
++ *(vu_long *) MPC5XXX_SDRAM_MODE = SDRAM_MODE;
+ __asm__ volatile ("sync");
+
+ /* normal operation */
+- *(vu_long *)MPC5XXX_SDRAM_CTRL = SDRAM_CONTROL | hi_addr_bit;
++ *(vu_long *) MPC5XXX_SDRAM_CTRL = SDRAM_CONTROL | hi_addr_bit;
+ __asm__ volatile ("sync");
+ }
+ #endif /* !CFG_RAMBOOT */
+@@ -80,18 +81,18 @@ long int initdram(int board_type)
+ ulong test1, test2;
+
+ /* setup SDRAM chip selects */
+- *(vu_long *)MPC5XXX_SDRAM_CS0CFG = 0x0000001e; /* 2G at 0x0 */
+- *(vu_long *)MPC5XXX_SDRAM_CS1CFG = 0x80000000; /* disabled */
++ *(vu_long *) MPC5XXX_SDRAM_CS0CFG = 0x0000001e; /* 2G at 0x0 */
++ *(vu_long *) MPC5XXX_SDRAM_CS1CFG = 0x80000000; /* disabled */
+ __asm__ volatile ("sync");
+
+ /* setup config registers */
+- *(vu_long *)MPC5XXX_SDRAM_CONFIG1 = SDRAM_CONFIG1;
+- *(vu_long *)MPC5XXX_SDRAM_CONFIG2 = SDRAM_CONFIG2;
++ *(vu_long *) MPC5XXX_SDRAM_CONFIG1 = SDRAM_CONFIG1;
++ *(vu_long *) MPC5XXX_SDRAM_CONFIG2 = SDRAM_CONFIG2;
+ __asm__ volatile ("sync");
+
+ #if SDRAM_DDR
+ /* set tap delay */
+- *(vu_long *)MPC5XXX_CDM_PORCFG = SDRAM_TAPDELAY;
++ *(vu_long *) MPC5XXX_CDM_PORCFG = SDRAM_TAPDELAY;
+ __asm__ volatile ("sync");
+ #endif /* SDRAM_DDR */
+
+@@ -112,20 +113,20 @@ long int initdram(int board_type)
+
+ /* set SDRAM CS0 size according to the amount of RAM found */
+ if (dramsize > 0)
+- *(vu_long *)MPC5XXX_SDRAM_CS0CFG = 0x13 + __builtin_ffs(dramsize >> 20) - 1;
++ *(vu_long *) MPC5XXX_SDRAM_CS0CFG = 0x13 + __builtin_ffs(dramsize >> 20) - 1;
+ else
+- *(vu_long *)MPC5XXX_SDRAM_CS0CFG = 0; /* disabled */
++ *(vu_long *) MPC5XXX_SDRAM_CS0CFG = 0; /* disabled */
+
+ /* let SDRAM CS1 start right after CS0 */
+- *(vu_long *)MPC5XXX_SDRAM_CS1CFG = dramsize + 0x0000001e;/* 2G */
++ *(vu_long *) MPC5XXX_SDRAM_CS1CFG = dramsize + 0x0000001e;/* 2G */
+
+ /* find RAM size using SDRAM CS1 only */
+ if (!dramsize)
+ sdram_start(0);
+- test2 = test1 = get_ram_size((long *)(CFG_SDRAM_BASE + dramsize), 0x80000000);
++ test2 = test1 = get_ram_size((long *) (CFG_SDRAM_BASE + dramsize), 0x80000000);
+ if (!dramsize) {
+ sdram_start(1);
+- test2 = get_ram_size((long *)(CFG_SDRAM_BASE + dramsize), 0x80000000);
++ test2 = get_ram_size((long *) (CFG_SDRAM_BASE + dramsize), 0x80000000);
+ }
+ if (test1 > test2) {
+ sdram_start(0);
+@@ -139,22 +140,22 @@ long int initdram(int board_type)
+
+ /* set SDRAM CS1 size according to the amount of RAM found */
+ if (dramsize2 > 0)
+- *(vu_long *)MPC5XXX_SDRAM_CS1CFG = dramsize
++ *(vu_long *) MPC5XXX_SDRAM_CS1CFG = dramsize
+ | (0x13 + __builtin_ffs(dramsize2 >> 20) - 1);
+ else
+- *(vu_long *)MPC5XXX_SDRAM_CS1CFG = dramsize; /* disabled */
++ *(vu_long *) MPC5XXX_SDRAM_CS1CFG = dramsize; /* disabled */
+
+ #else /* CFG_RAMBOOT */
+
+ /* retrieve size of memory connected to SDRAM CS0 */
+- dramsize = *(vu_long *)MPC5XXX_SDRAM_CS0CFG & 0xFF;
++ dramsize = *(vu_long *) MPC5XXX_SDRAM_CS0CFG & 0xFF;
+ if (dramsize >= 0x13)
+ dramsize = (1 << (dramsize - 0x13)) << 20;
+ else
+ dramsize = 0;
+
+ /* retrieve size of memory connected to SDRAM CS1 */
+- dramsize2 = *(vu_long *)MPC5XXX_SDRAM_CS1CFG & 0xFF;
++ dramsize2 = *(vu_long *) MPC5XXX_SDRAM_CS1CFG & 0xFF;
+ if (dramsize2 >= 0x13)
+ dramsize2 = (1 << (dramsize2 - 0x13)) << 20;
+ else
+@@ -176,7 +177,7 @@ long int initdram(int board_type)
+ if ((SVR_MJREV(svr) >= 2) &&
+ (PVR_MAJ(pvr) == 1) && (PVR_MIN(pvr) == 4)) {
+
+- *(vu_long *)MPC5XXX_SDRAM_SDELAY = 0x04;
++ *(vu_long *) MPC5XXX_SDRAM_SDELAY = 0x04;
+ __asm__ volatile ("sync");
+ }
+
+@@ -194,27 +195,42 @@ int checkboard (void)
+ int board_early_init_r(void)
+ {
+ /*
+- * Now, when we are in RAM, enable flash write access for detection process.
+- * Note that CS_BOOT cannot be cleared when executing in flash.
++ * Now, when we are in RAM, enable flash write access for the
++ * detection process. Note that CS_BOOT cannot be cleared when
++ * executing in flash.
++ */
++ *(vu_long *) MPC5XXX_BOOTCS_CFG &= ~0x1; /* clear RO */
++
++#ifdef CONFIG_HW_WATCHDOG
++ /*
++ * Enable and configure the direction (output) of PSC3_9 - watchdog
++ * reset input. Refer to 7.3.2.2.[1,3,4] of the MPC5200B User's
++ * Manual.
++ */
++ *(vu_long *) MPC5XXX_WU_GPIO_ENABLE |= GPIO_PSC3_9;
++ *(vu_long *) MPC5XXX_WU_GPIO_DIR |= GPIO_PSC3_9;
++#endif /* CONFIG_HW_WATCHDOG */
++
++ /*
++ * Enable GPIO_WKUP_7 to "read the status of the actual power
++ * situation". Default direction is input, so no need to set it
++ * explicitly.
+ */
+- *(vu_long *)MPC5XXX_BOOTCS_CFG &= ~0x1; /* clear RO */
++ *(vu_long *) MPC5XXX_WU_GPIO_ENABLE |= GPIO_WKUP_7;
+ return 0;
+ }
+
+
+ #if defined (CFG_CMD_IDE) && defined (CONFIG_IDE_RESET)
+-
+-#define GPIO_PSC1_4 0x01000000UL
+-
+ void init_ide_reset(void)
+ {
+ debug("init_ide_reset\n");
+
+ /* Configure PSC1_4 as GPIO output for ATA reset */
+ *(vu_long *) MPC5XXX_WU_GPIO_ENABLE |= GPIO_PSC1_4;
+- *(vu_long *) MPC5XXX_WU_GPIO_DIR |= GPIO_PSC1_4;
++ *(vu_long *) MPC5XXX_WU_GPIO_DIR |= GPIO_PSC1_4;
+ /* Deassert reset */
+- *(vu_long *) MPC5XXX_WU_GPIO_DATA |= GPIO_PSC1_4;
++ *(vu_long *) MPC5XXX_WU_GPIO_DATA_O |= GPIO_PSC1_4;
+ }
+
+
+@@ -223,30 +239,22 @@ void ide_set_reset(int idereset)
+ debug("ide_reset(%d)\n", idereset);
+
+ if (idereset) {
+- *(vu_long *) MPC5XXX_WU_GPIO_DATA &= ~GPIO_PSC1_4;
++ *(vu_long *) MPC5XXX_WU_GPIO_DATA_O &= ~GPIO_PSC1_4;
+ /* Make a delay. MPC5200 spec says 25 usec min */
+ udelay(500000);
+ } else
+- *(vu_long *) MPC5XXX_WU_GPIO_DATA |= GPIO_PSC1_4;
++ *(vu_long *) MPC5XXX_WU_GPIO_DATA_O |= GPIO_PSC1_4;
+ }
+ #endif /* defined (CFG_CMD_IDE) && defined (CONFIG_IDE_RESET) */
+
+
+-void led_d4_on(void)
+-{
+- /* TIMER7 as GPIO output low */
+- *(vu_long *) (MPC5XXX_GPT + 0x70) |= 0x24;
+-}
+-
+-
+-void led_d4_off(void)
+-{
+- /* TIMER7 as GPIO output high */
+- *(vu_long *) (MPC5XXX_GPT + 0x70) |= 0x34;
+-}
+-
+-
++#ifdef CONFIG_HW_WATCHDOG
+ void hw_watchdog_reset(void)
+ {
+-/* TODO fill this in */
++ /*
++ * MarelV38B has a TPS3705 watchdog. Spec says that to kick the dog
++ * we need a positive or negative transition on WDI i.e., our PSC3_9.
++ */
++ *(vu_long *) MPC5XXX_WU_GPIO_DATA_O ^= GPIO_PSC3_9;
+ }
++#endif /* CONFIG_HW_WATCHDOG */
+diff -Naupr u-boot-1.1.6/CHANGELOG u-boot-1.1.6-fsl-1/CHANGELOG
+--- u-boot-1.1.6/CHANGELOG 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/CHANGELOG 2006-12-06 10:33:48.000000000 -0600
+@@ -1,3 +1,737 @@
++commit 8d9a8610b8256331132227e9e6585c6bd5742787
++Author: Wolfgang Denk <wd@pollux.denx.de>
++Date: Thu Nov 30 01:54:07 2006 +0100
++
++ Code cleanup. Update CHANGELOG.
++
++commit 726e90aacf0b1ecb0e7055be574622fbe3e450ba
++Author: Grant Likely <grant.likely@secretlab.ca>
++Date: Wed Nov 29 16:23:42 2006 +0100
++
++ [PATCH] [MPC52xx] Use IPB bus frequency for SOC peripherals
++
++ The soc node of the mpc52xx needs to be loaded with the IPB bus frequency,
++ not the XLB frequency.
++
++ This patch depends on the previous patches for MPC52xx device tree support
++
++ Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
++ Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
++
++commit 1eac2a71417b6675b11aace72102a2e7fde8f5c6
++Author: Stefan Roese <sr@denx.de>
++Date: Wed Nov 29 15:42:37 2006 +0100
++
++ [PATCH] Add support for Prodrive P3M750 & P3M7448 (P3Mx) boards
++
++ This patch adds support for the Prodrive P3M750 (PPC750 & MV64460)
++ and the P3M7448 (MPC7448 & MV64460) PMC modules. Both modules are
++ quite similar and share the same board directory "prodrive/p3mx"
++ and the same config file "p3mx.h".
++
++ Signed-off-by: Stefan Roese <sr@denx.de>
++
++commit 1bdd46832aeb569f5e04b1f20f64318525b6525a
++Author: Stefan Roese <sr@denx.de>
++Date: Wed Nov 29 12:53:15 2006 +0100
++
++ [PATCH] common/cmd_elf.c: Enable loadaddr as parameter in bootvx command
++
++ In the bootvx command the load address was only read from the env
++ variable "loadaddr" and not optionally passed as paramter as described
++ in the help. This is fixed with this patch. The behaviour is now the
++ same as in the bootelf command.
++
++ Signed-off-by: Stefan Roese <sr@denx.de>
++
++commit 4e26f1074c3ac1bd8fd094f0dc4a1c4a0b15a592
++Author: Stefan Roese <sr@denx.de>
++Date: Wed Nov 29 12:03:57 2006 +0100
++
++ [PATCH] include/ppc440.h minor error affecting interrupts
++
++ Fixed include/ppc440.c for UIC address Bug
++
++ Corrects bug affecting the addresses for the universal interrupt
++ controller UIC2 and UIC3 on the PPC440 Epx, GRx, and SPE chips.
++
++ Signed-off-by: Jeff Mann <mannj@embeddedplanet.com>
++ Signed-off-by: Stefan Roese <sr@denx.de>
++
++commit 1939d969443ccf316cab2bf32ab1027d4db5ba1a
++Author: Joakim Tjernlund <Joakim.Tjernlund@transmode.se>
++Date: Tue Nov 28 16:17:27 2006 -0600
++
++ Make fsl-i2c not conflict with SOFT I2C
++
++ Signed-off-by: Timur Tabi <timur@freescale.com>
++
++commit 14198bf768fdc958e3c1afd2404e5262208e98d7
++Author: Joakim Tjernlund <Joakim.Tjernlund@transmode.se>
++Date: Tue Nov 28 16:17:18 2006 -0600
++
++ Fix I2C master address initialization.
++
++ Signed-off-by: Timur Tabi <timur@freescale.com>
++
++commit cf3d045e51ca8dcc6cf759827140861d6ac25c04
++Author: Kim Phillips <kim.phillips@freescale.com>
++Date: Tue Nov 28 23:31:19 2006 -0600
++
++ Assign maintainers for mpc8349emds and mpc8360emds
++
++ Dave for mpc8360emds, and me for mpc8349emds.
++
++commit 1aa934c81b77f2080d3ca4b226eab67b17a33961
++Author: Kim Phillips <kim.phillips@freescale.com>
++Date: Tue Nov 28 23:28:33 2006 -0600
++
++ Eliminate gcc 4 'used uninitialized' warnings in drivers/qe/uccf.c
++
++ give initial values for reg_num, shift, p_cmxucr in ucc_set_clk_src
++ since they are passed by reference to ucc_get_cmxucr_reg and assigned.
++
++commit e857a5bdb3954b896c0920cb9d8d2b1b9c107ce5
++Author: Timur Tabi <timur@freescale.com>
++Date: Tue Nov 28 12:09:35 2006 -0600
++
++ mpc83xx: Miscellaneous code style fixes
++
++ Implement various code style fixes and similar changes.
++
++ Signed-off-by: Timur Tabi <timur@freescale.com>
++
++commit e59581c56ab5d6e0207ddac3b2c1d55cb36ec706
++Author: Stefan Roese <sr@denx.de>
++Date: Tue Nov 28 17:55:49 2006 +0100
++
++ [PATCH] Enable the IceCube/lite5200 variants to pass a device tree to Linux.
++
++ This patch adds the code and configuration necessary to boot with an
++ arch/powerpc Linux kernel.
++
++ Signed-off-by: Grant Likely <grant.likely@gmail.com>
++ Acked-by: Jon Loeliger <jdl@freescale.com>
++
++commit e732faec95a83cb468b4850ae807c8301dde8f6a
++Author: Stefan Roese <sr@denx.de>
++Date: Tue Nov 28 16:09:24 2006 +0100
++
++ [PATCH] PPC4xx: 440SP Rev. C detection added
++
++ Signed-off-by: Stefan Roese <sr@denx.de>
++
++commit e7f3e9ff01fbd7fa72eb42a9675fbed6bc4736b0
++Author: Stefan Roese <sr@denx.de>
++Date: Tue Nov 28 11:04:45 2006 +0100
++
++ [PATCH] nand: Fix patch merge problem
++
++ Signed-off-by: Stefan Roese <sr@denx.de>
++
++commit 4f4b602ec7524a032bdf3c6d28c7f525a4a67eaa
++Author: Wolfgang Denk <wd@pollux.denx.de>
++Date: Mon Nov 27 22:53:53 2006 +0100
++
++ Update CHANGELOG
++
++commit f6e495f54cdb8fe340b9c03deab40ad746d52fae
++Author: Stefan Roese <sr@denx.de>
++Date: Mon Nov 27 17:43:25 2006 +0100
++
++ [PATCH] 4xx_enet.c: Correct the setting of zmiifer register
++
++ Patch below corrects the setting of the zmiifer register, it was
++ overwritting the register rather than ORing the settings.
++
++ Signed-off-by: Neil Wilson <NWilson@airspan.com>
++ Signed-off-by: Stefan Roese <sr@denx.de>
++
++commit d1a72545296800b7e219f93104ad5836f0003d66
++Author: Stefan Roese <sr@denx.de>
++Date: Mon Nov 27 17:34:10 2006 +0100
++
++ [PATCH] Select NAND embedded environment from board configuration
++
++ The current NAND Bootloader setup forces the environment
++ variables to be in line with the bootloader. This change
++ enables the configuration to be made in the board include
++ file instead so that it can be individually enabled.
++
++ Signed-off-by: Nick Spence <nick.spence@freescale.com>
++ Signed-off-by: Stefan Roese <sr@denx.de>
++
++commit 15784862857c3c2214498defcfed84ff137fb81e
++Author: Stefan Roese <sr@denx.de>
++Date: Mon Nov 27 17:22:19 2006 +0100
++
++ [PATCH] nand_wait() timeout fixes
++
++ Two fixes for the nand_wait() function in
++ drivers/nand/nand_base.c:
++
++ 1. Use correct timeouts. The original timeouts in Linux
++ source are 400ms and 20ms not 40s and 20s
++
++ 2. Return correct error value in case of timeout. 0 is
++ interpreted as OK.
++
++ Signed-off-by: Rui Sousa <rui.sousa@laposte.net>
++ Signed-off-by: Stefan Roese <sr@denx.de>
++
++commit da5553b095bf04f4f109ad7e565dae3aba47b230
++Author: Stefan Roese <sr@denx.de>
++Date: Mon Nov 27 17:04:06 2006 +0100
++
++ [PATCH] Allow CONFIG_OF_FLAT_TREE to boot a non-arch/powerpc kernel
++
++ This patch allows an arch/ppc kernel to be booted by just passing 1 or 2
++ arguments to bootm. It removes the getenv("disable_of") test that used
++ to be used for this purpose.
++
++ Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
++ Acked-by: Jon Loeliger <jdl@freescale.com>
++
++commit a9398e018593782c5fa7d0741955fc1256b34c1e
++Author: Wolfgang Denk <wd@pollux.denx.de>
++Date: Mon Nov 27 15:32:42 2006 +0100
++
++ Minor code cleanup. Update CHANGELOG.
++
++commit 1729b92cde575476684bffe819d0b7791b57bff2
++Author: Stefan Roese <sr@denx.de>
++Date: Mon Nov 27 14:52:04 2006 +0100
++
++ [PATCH] 4xx: Fix problem with board specific reset code (now for real)
++
++ Signed-off-by: Stefan Roese <sr@denx.de>
++
++commit cc5ee8a92a0e3ca6f727af71b8fd206460c7afd7
++Author: Stefan Roese <sr@denx.de>
++Date: Mon Nov 27 14:49:51 2006 +0100
++
++ [PATCH] alpr: remove unused board specific flash driver
++
++ Signed-off-by: Stefan Roese <sr@denx.de>
++
++commit 1f94d162e2b5f0edc28d9fb11482502c44d218e1
++Author: Stefan Roese <sr@denx.de>
++Date: Mon Nov 27 14:48:41 2006 +0100
++
++ [PATCH] 4xx: Fix problem with board specific reset code
++
++ Signed-off-by: Stefan Roese <sr@denx.de>
++
++commit ec0c2ec725aec9524a177a77ce75559e644a931a
++Author: Stefan Roese <sr@denx.de>
++Date: Mon Nov 27 14:46:06 2006 +0100
++
++ [PATCH] Remove testing 4xx enet PHY setup
++
++ Signed-off-by: Stefan Roese <sr@denx.de>
++
++commit 1c2ce2262069510f31c7d3fd7efd3d58b8c0c148
++Author: Stefan Roese <sr@denx.de>
++Date: Mon Nov 27 14:12:17 2006 +0100
++
++ [PATCH] Update Prodrive ALPR board support (440GX)
++
++ Signed-off-by: Stefan Roese <sr@denx.de>
++
++commit 78d620ebb5871d252270dedfad60c6568993b780
++Author: Wolfgang Denk <wd@atlas.denx.de>
++Date: Thu Nov 23 22:58:58 2006 +0100
++
++ Updates for TQM5200 modules:
++ - fix off-by-one error in board/tqm5200/cam5200_flash.c error message
++ - simplify "udate" definitions
++
++commit 2053283304eeddf250d109e6791eb6fa4cad14f7
++Author: Stefan Roese <sr@denx.de>
++Date: Wed Nov 22 13:20:50 2006 +0100
++
++ [PATCH] PPC4xx start.S: Fix for processor errata
++
++ Fixed cpu/ppc4xx/start.S for 440EPx Errata: further corrects PPC440EPx
++ errata 1.12: 440_33 by moving patch up in code.
++
++ Signed-off-by: Jeff Mann <mannj@embeddedplanet.com>
++ Signed-off-by: Stefan Roese <sr@denx.de>
++
++commit 4ef6251403f637841000e0fef9e832aa01339822
++Author: Stefan Roese <sr@denx.de>
++Date: Mon Nov 20 20:39:52 2006 +0100
++
++ [PATCH] Update AMCC Sequoia config file to support 64MByte NOR FLASH
++
++ Signed-off-by: Stefan Roese <sr@denx.de>
++
++commit e4bbd8da164b976d38616bd9c69c5e86e193cdf0
++Author: Wolfgang Denk <wd@pollux.denx.de>
++Date: Mon Nov 20 10:28:30 2006 +0100
++
++ Update CHANGELOG
++
++commit 260421a21e934a68d31fb6125b0fbd2631a8ca20
++Author: Stefan Roese <sr@denx.de>
++Date: Mon Nov 13 13:55:24 2006 +0100
++
++ [PATCH] CFI driver AMD Command Set Top boot geometry reversal, etc. [Updated]
++
++ * Adds support for AMD command set Top Boot flash geometry reversal
++ * Adds support for reading JEDEC Manufacturer ID and Device ID
++ * Adds support for displaying command set, manufacturer id and
++ device ids (flinfo)
++ * Makes flinfo output to be consistent when CFG_FLASH_EMPTY_INFO defined
++ * Removes outdated change history (refer to git log instead)
++
++ Signed-off-by: Tolunay Orkun <listmember@orkun.us>
++ Signed-off-by: Stefan Roese <sr@denx.de>
++
++commit b21b511d4c50408f4853f46f06b601272196223f
++Author: Wolfgang Denk <wd@pollux.denx.de>
++Date: Sun Nov 12 21:13:23 2006 +0100
++
++ Update CHANGELOG
++
++commit ce3f1a40c507afbab06c5eb58ccdc6713eda3245
++Author: Bartlomiej Sieka <tur@semihalf.com>
++Date: Sat Nov 11 22:48:22 2006 +0100
++
++ Disable the watchdog in the default config for the V38B board.
++
++commit 44a47e6db2694841211f1c8fdbafd36992e9cd1a
++Author: Bartlomiej Sieka <tur@semihalf.com>
++Date: Sat Nov 11 22:43:00 2006 +0100
++
++ Change the GPIO pin multiplexing configuration for V38B. The USB GPIO pin
++ group is enabled for USB earlier (in cpu_init_f() instead of
++ usb_lowlevel_init()).
++
++commit 91650b3e4de688038d4f71279c44858e3e2c6870
++Author: Wolfgang Denk <wd@pollux.denx.de>
++Date: Mon Nov 6 17:06:36 2006 +0100
++
++ Sequential accesses to non-existent memory must be synchronized,
++ at least on G2 cores.
++
++ This fixes get_ram_size() problems on MPC5200 Rev. B boards.
++
++commit be5e61815d5a1fac290ce9c0ef09cb6a8e4288fa
++Author: Timur Tabi <timur@freescale.com>
++Date: Fri Nov 3 19:15:00 2006 -0600
++
++ mpc83xx: Update 83xx to use fsl_i2c.c
++
++ Update the 83xx tree to use I2C support in drivers/fsl_i2c.c. Delete
++ cpu/mpc83xx/i2c.c, include/asm-ppc/i2c.h, and all references to those files.
++ Added multiple I2C bus support to fsl_i2c.c.
++
++ Signed-off-by: Timur Tabi <timur@freescale.com>
++
++commit d239d74b1c937984bc519083a8e7de373a390f06
++Author: Timur Tabi <timur@freescale.com>
++Date: Fri Nov 3 12:00:28 2006 -0600
++
++ mpc83xx: Replace CFG_IMMRBAR with CFG_IMMR
++
++ Replace all instances of CFG_IMMRBAR with CFG_IMMR, so that the 83xx
++ tree matches the other 8xxx trees.
++
++ Signed-off-by: Timur Tabi <timur@freescale.com>
++
++commit f7fb2e703ec9688541416962724adff70a7322cb
++Author: Kim Phillips <kim.phillips@freescale.com>
++Date: Thu Nov 2 19:47:11 2006 -0600
++
++ mpc83xx: Lindent and clean up cpu/mpc83xx/speed.c
++
++commit 90f30a710a3c619b5405860a686c4ddfc495d4b6
++Author: Dave Liu <daveliu@freescale.com>
++Date: Thu Nov 2 18:05:50 2006 -0600
++
++ mpc83xx: Fix the incorrect dcbz operation
++
++ The 834x rev1.x silicon has one CPU5 errata.
++
++ The issue is when the data cache locked with
++ HID0[DLOCK], the dcbz instruction looks like no-op inst.
++
++ The right behavior of the data cache is when the data cache
++ Locked with HID0[DLOCK], the dcbz instruction allocates
++ new tags in cache.
++
++ The 834x rev3.0 and later and 8360 have not this bug inside.
++
++ So, when 834x rev3.0/8360 are working with ECC, the dcbz
++ instruction will corrupt the stack in cache, the processor will
++ checkstop reset.
++
++ However, the 834x rev1.x can work with ECC with these code,
++ because the sillicon has this cache bug. The dcbz will not
++ corrupt the stack in cache.
++ Really, it is the fault code running on fault sillicon.
++
++ This patch fix the incorrect dcbz operation. Instead of
++ CPU FP writing to initialise the ECC.
++
++ CHANGELOG:
++ * Fix the incorrect dcbz operation instead of CPU FP
++ writing to initialise the ECC memory. Otherwise, it
++ will corrupt the stack in cache, The processor will checkstop
++ reset.
++
++ Signed-off-by: Dave Liu <daveliu@freescale.com>
++
++commit bf0b542d6773a5a1cbce77691f009b06d9aeb57d
++Author: Kim Phillips <kim.phillips@freescale.com>
++Date: Wed Nov 1 00:10:40 2006 -0600
++
++ mpc83xx: add OF_FLAT_TREE bits to 83xx boards
++
++ add ft_pci_setup, OF_CPU, OF_SOC, OF_TBCLK, and
++ STDOUT_PATH configuration bits to mpc8349emds,
++ mpc8349itx, and mpc8360emds board code.
++
++ redo environment to use bootm with the fdtaddr
++ for booting ARCH=powerpc kernels by default,
++ and provide default fdtaddr values.
++
++commit 48041365b3420589ad464ebc7752e0053538b729
++Author: Kim Phillips <kim.phillips@freescale.com>
++Date: Wed Nov 1 00:07:25 2006 -0600
++
++ mpc83xx: change ft code to modify local-mac-address property
++
++ Update 83xx OF code to update local-mac-address properties
++ for ethernet instead of the obsolete 'address' property.
++
++commit 9ca880a250870a7d55754291b5591d2b5fe89b54
++Author: Timur Tabi <timur@freescale.com>
++Date: Tue Oct 31 21:23:16 2006 -0600
++
++ mpc83xx: Fix dual I2C support for the MPC8349ITX, MPC8349EMDS, TQM834x, and MPC8360EMDS
++
++ This patch also adds an improved I2C set_speed(), which handles all clock
++ frequencies.
++
++ Signed-off-by: Timur Tabi <timur@freescale.com>
++
++commit ac4b5622ce050b5ee1e154b98df630d778661632
++Author: Dave Liu <daveliu@freescale.com>
++Date: Tue Oct 31 19:54:59 2006 -0600
++
++ mpc83xx: add the README.mpc8360emds
++
++ add doc/README.mpc8360emds to accompany the new board support
++
++commit 7737d5c658c606f999dfbe3e86b0fed49e5c50ef
++Author: Dave Liu <daveliu@freescale.com>
++Date: Fri Nov 3 12:11:15 2006 -0600
++
++ mpc83xx: add QE ethernet support
++
++ this patch adds support for the QUICC Engine based UCC gigabit ethernet device.
++
++commit 5f8204394e39bbe8cd9f08b8f8d145b6c01f7c73
++Author: Dave Liu <daveliu@freescale.com>
++Date: Fri Nov 3 19:33:44 2006 -0600
++
++ mpc83xx: Add MPC8360EMDS basic board support
++
++ Add support for the Freescale MPC8360EMDS board.
++ Includes DDR, DUART, Local Bus, PCI.
++
++commit 23892e49352de74f7fac36ff90bb1be143d195e3
++Author: Dave Liu <daveliu@freescale.com>
++Date: Tue Oct 31 19:30:40 2006 -0600
++
++ mpc83xx: add the QUICC Engine (QE) immap file
++
++ common QE immap file. Also required for 8360.
++
++commit b701652a4992bdcc62fb1a6038a85beef9e55da4
++Author: Dave Liu <daveliu@freescale.com>
++Date: Tue Oct 31 19:25:38 2006 -0600
++
++ mpc83xx: Add 8360 specifics to 83xx immap
++
++ Mainly add QE device dependencies, with appropriate 8360 protection.
++ Lindent also run.
++
++commit 988833324a7fda482c8ac3ca23eb539f8232e404
++Author: Timur Tabi <timur@freescale.com>
++Date: Tue Oct 31 19:14:41 2006 -0600
++
++ mpc83xx: Fix PCI, USB, bootargs for MPC8349E-mITX
++
++ PREREQUISITE PATCHES:
++
++ * This patch can only be applied after the following patches have been applied:
++
++ 1) DNX#2006092142000015 "Add support for the MPC8349E-mITX 1/2"
++ 2) DNX#2006092142000024 "Add support for the MPC8349E-mITX 2/2"
++
++ CHANGELOG:
++
++ * For the 8349E-mITX, fix some size values in pci_init_board(), enable
++ the clock for the 2nd USB board (Linux kernel will hang otherwise),
++ and fix the CONFIG_BOOTARGS macro.
++
++ Signed-off-by: Timur Tabi <timur@freescale.com>
++
++commit 2ad6b513b31070bd0c003792ed1c3e7f5d740357
++Author: Timur Tabi <timur@freescale.com>
++Date: Tue Oct 31 18:44:42 2006 -0600
++
++ mpc83xx: Add support for the MPC8349E-mITX
++
++ PREREQUISITE PATCHES:
++
++ * This patch can only be applied after the following patches have been applied:
++
++ 1) DNX#2006090742000024 "Add support for multiple I2C buses"
++ 2) DNX#2006090742000033 "Multi-bus I2C implementation of MPC834x"
++ 3) DNX#2006091242000041 "Additional MPC8349 support for multibus i2c"
++ 4) DNX#2006091242000078 "Add support for variable flash memory sizes on 83xx systems"
++ 5) DNX#2006091242000069 "Add support for Errata DDR6 on MPC 834x systems"
++
++ CHANGELOG:
++
++ * Add support for the Freescale MPC8349E-mITX reference design platform.
++ The second TSEC (Vitesse 7385 switch) is not supported at this time.
++
++ Signed-off-by: Timur Tabi <timur@freescale.com>
++
++commit 183da6d9b446cc12123455844ad1187e2375626f
++Author: Ben Warren <bwarren@qstreams.com>
++Date: Tue Sep 12 10:15:53 2006 -0400
++
++ Additional MPC8349 support for multibus i2c
++
++ Hello,
++
++ Here is a patch for a file that was accidentally left out of a previous
++ attempt.
++
++ It accompanies the patch with ticket DNX#2006090742000024
++
++ CHANGELOG:
++ Change PCI initialization to use new multi-bus I2C API.
++
++ regards,
++ Ben
++
++commit b24f119d672b709d153ff2ac091d4aa63ec6877d
++Author: Ben Warren <bwarren@qstreams.com>
++Date: Thu Sep 7 16:51:04 2006 -0400
++
++ Multi-bus I2C implementation of MPC834x
++
++ Hello,
++
++ Attached is a patch implementing multiple I2C buses on the MPC834x CPU
++ family and the MPC8349EMDS board in particular.
++ This patch requires Patch 1 (Add support for multiple I2C buses).
++ Testing was performed on a 533MHz board.
++
++ /*** Note: This patch replaces ticket DNX#2006083042000027 ***/
++
++ Signed-off-by: Ben Warren <bwarren@qstreams.com>
++
++ CHANGELOG:
++ Implemented driver-level code to support two I2C buses on the
++ MPC834x CPU family and the MPC8349EMDS board. Available I2C bus speeds
++ are 50kHz, 100kHz and 400kHz on each bus.
++
++ regards,
++ Ben
++
++commit bb99ad6d8257bf828f150d40f507b30d80a4a7ae
++Author: Ben Warren <bwarren@qstreams.com>
++Date: Thu Sep 7 16:50:54 2006 -0400
++
++ Add support for multiple I2C buses
++
++ Hello,
++
++ Attached is a patch providing support for multiple I2C buses at the
++ command level. The second part of the patch includes an implementation
++ for the MPC834x CPU and MPC8349EMDS board.
++
++ /*** Note: This patch replaces ticket DNX#2006083042000018 ***/
++
++ Signed-off-by: Ben Warren <bwarren@qstreams.com>
++
++ Overview:
++
++ 1. Include new 'i2c' command (based on USB implementation) using
++ CONFIG_I2C_CMD_TREE.
++
++ 2. Allow multiple buses by defining CONFIG_I2C_MULTI_BUS. Note that
++ the commands to change bus number and speed are only available under the
++ new 'i2c' command mentioned in the first bullet.
++
++ 3. The option CFG_I2C_NOPROBES has been expanded to work in multi-bus
++ systems. When CONFIG_I2C_MULTI_BUS is used, this option takes the form
++ of an array of bus-device pairs. Otherwise, it is an array of uchar.
++
++ CHANGELOG:
++ Added new 'i2c' master command for all I2C interaction. This is
++ conditionally compiled with CONFIG_I2C_CMD_TREE. New commands added for
++ setting I2C bus speed as well as changing the active bus if the board
++ has more than one (conditionally compiled with
++ CONFIG_I2C_MULTI_BUS). Updated NOPROBE logic to handle multiple buses.
++ Updated README.
++
++ regards,
++ Ben
++
++commit bed85caf872714ebf53013967a695c9d63acfc68
++Author: Timur Tabi <timur@freescale.com>
++Date: Tue Oct 31 18:13:36 2006 -0600
++
++ mpc83xx: Add support for Errata DDR6 on MPC 834x systems
++
++ CHANGELOG:
++
++ * Errata DDR6, which affects all current MPC 834x processors, lists changes
++ required to maintain compatibility with various types of DDR memory. This
++ patch implements those changes.
++
++ Signed-off-by: Timur Tabi <timur@freescale.com>
++
++commit afd6e470f639883002c7c59d562690a5cb0f4865
++Author: Timur Tabi <timur@freescale.com>
++Date: Wed Oct 25 18:45:23 2006 -0500
++
++ mpc83xx: fix TQM build by defining a CFG_FLASH_SIZE for it
++
++commit 31068b7c4abeefcb2c8fd4fbeccc8ec6c6d0475a
++Author: Timur Tabi <timur@freescale.com>
++Date: Tue Aug 22 17:07:00 2006 -0500
++
++ mpc83xx: Add support for variable flash memory sizes on 83xx systems
++
++ CHANGELOG:
++
++ * On 83xx systems, use the CFG_FLASH_SIZE macro to program the LBC local access
++ window registers, instead of using a hard-coded value of 8MB.
++
++ Signed-off-by: Timur Tabi <timur@freescale.com>
++
++commit 2fc34ae66e73fa7841d1a006dc1b5dcbc1f78965
++Author: Tanya Jiang <tanya.jiang@freescale.com>
++Date: Thu Aug 3 18:38:13 2006 +0800
++
++ mpc83xx: Unified TQM834x variable names with 83xx and consolidated macros
++
++ Unified TQM834x variable names with 83xx and consolidated macro
++ in preparation for the 8360 and other upcoming 83xx devices.
++
++ Signed-off-by: Tanya Jiang <tanya.jiang@freescale.com>
++
++commit f6eda7f80ccc13d658020268c507d7173cf2e8aa
++Author: Dave Liu <daveliu@freescale.com>
++Date: Wed Oct 25 14:41:21 2006 -0500
++
++ mpc83xx: Changed to unified mpx83xx names and added common 83xx changes
++
++ Incorporated the common unified variable names and the changes in preparation
++ for releasing mpc8360 patches.
++
++ Signed-off-by: Dave Liu <daveliu@freescale.com>
++
++commit 3894c46c27c64891f93ac04edde86a9fa9758d92
++Author: Tanya Jiang <tanya.jiang@freescale.com>
++Date: Thu Aug 3 18:36:02 2006 +0800
++
++ mpc83xx: Fix missing build for mpc8349emds pci.c
++
++ Make pci build for mpc8349emds
++
++ Signed-off-by: Tanya Jiang <tanya.jiang@freescale.com>
++
++commit 09a81ff740b29deea1e2ab08a3c2ac136c2e6219
++Author: Tanya Jiang <tanya.jiang@freescale.com>
++Date: Thu Aug 3 18:39:49 2006 +0800
++
++ mpc83xx: Removed unused file resetvec.S for mpc83xx cpu
++
++ Removed unused file resetvec.S for mpc83xx cpu
++
++ Signed-off-by: Tanya Jiang <tanya.jiang@freescale.com>
++
++commit 04f899fc465c3e44f2b55ecc70618f5696fc0ddf
++Author: Nick Spence <Nick.Spence@freescale.com>
++Date: Sat Sep 30 00:32:59 2006 -0700
++
++ NAND Flash verify across block boundaries
++
++ This patch addresses a problem when CONFIG_MTD_NAND_VERIFY_WRITE is
++ defined
++ and the write crosses a block boundary. The pointer to the verification
++ buffer (bufstart) is not being updated to reflect the starting of the
++ new
++ block so the verification of the second block fails.
++
++ CHANGELOG:
++
++ * Fix NAND FLASH page verification across block boundaries
++
++commit f484dc791a3932537213c43c654cc1295c64b84c
++Author: Nick Spence <nick.spence@freescale.com>
++Date: Thu Sep 7 07:39:46 2006 -0700
++
++ Added RGMII support to the TSECs and Marvell 881111 Phy
++
++ Added a phy initialization to adjust the RGMII RX and TX timing
++ Always set the R100 bit in 100 BaseT mode regardless of the TSEC mode
++
++ Signed-off-by: Nick Spence <nick.spence@freescale.com>
++
++commit c59200443072353044aa4bf737a5a60f9a9af231
++Author: Wolfgang Denk <wd@pollux.denx.de>
++Date: Thu Nov 2 15:15:01 2006 +0100
++
++ Release U-Boot 1.1.6
++
++commit 25721b5cec2be4bce79cfade17ec8f6aa1e67526
++Author: Bartlomiej Sieka <tur@semihalf.com>
++Date: Wed Nov 1 02:04:38 2006 +0100
++
++ Finish up support for MarelV38B board
++ - add watchdog support
++ - enable GPIO_WKUP_7 pin for input
++ - code cleanup
++
++commit ffa150bc90c943ca265170bd1be3f293674dd5c7
++Author: Bartlomiej Sieka <tur@semihalf.com>
++Date: Wed Nov 1 01:45:46 2006 +0100
++
++ - Fix issues related to the use of ELDK 4 when compiling for MarelV38B:
++ * remove warnings when compiling ethaddr.c
++ * adjust linker script (fixes a crash resulting from incorrect
++ definition of __u_boot_cmd_start)
++ - Some MarelV38B code cleanup.
++
++commit dae80f3caf9754a6dd3ddf3cf903d0c46cbd4385
++Author: Bartlomiej Sieka <tur@semihalf.com>
++Date: Wed Nov 1 01:38:16 2006 +0100
++
++ - Add MPC5XXX register definition MPC5XXX_WU_GPIO_DATA_I and change the
++ MPC5XXX_WU_GPIO_DATA macro to MPC5XXX_WU_GPIO_DATA_O (per MPC5200 User's
++ Manual). Replace the uses of MPC5XXX_WU_GPIO_DATA with
++ MPC5XXX_WU_GPIO_DATA_O for affected boards.
++
++ - Add defintions for some MPC5XXX GPIO pins.
++
++commit 82d9c9ec29a1bec1b03ba616425ebaed231072c8
++Author: Bartlomiej Sieka <tur@semihalf.com>
++Date: Wed Nov 1 01:34:29 2006 +0100
++
++ Changed MarelV38B board make target to lowercase. Config file cleanup.
++
+ commit 1954be6e9c9421b45d0a9d05b10356acc7563150
+ Author: Wolfgang Denk <wd@pollux.denx.de>
+ Date: Sun Oct 29 01:03:51 2006 +0200
+@@ -451,6 +1185,34 @@ Date: Tue Oct 10 17:02:22 2006 -0500
+
+ Fix whitespace and 80-col issues.
+
++commit 5c912cb1c31266c66ca59b36f9b6f87296421d75
++Author: Stefan Roese <sr@denx.de>
++Date: Sat Oct 7 11:36:51 2006 +0200
++
++ CFG_NAND_QUIET_TEST added to not warn upon missing NAND device
++ Patch by Stefan Roese, 07 Oct 2006
++
++commit 5bc528fa4da751d472397b308137238a6465afd2
++Author: Stefan Roese <sr@denx.de>
++Date: Sat Oct 7 11:35:25 2006 +0200
++
++ Update ALPR code (NAND support working now)
++ Patch by Stefan Roese, 07 Oct 2006
++
++commit 77d5034847d328753b80c46b83f960a14a26f40e
++Author: Stefan Roese <sr@denx.de>
++Date: Sat Oct 7 11:33:03 2006 +0200
++
++ Remove compile warnings in fpga code
++ Patch by Stefan Roese, 07 Oct 2006
++
++commit f3443867e90d2979a7dd1c65b0d537777e1f9850
++Author: Stefan Roese <sr@denx.de>
++Date: Sat Oct 7 11:30:52 2006 +0200
++
++ Add CONFIG_BOARD_RESET to configure board specific reset function
++ Patch by Stefan Roese, 07 Oct 2006
++
+ commit f55df18187e7a45cb73fec4370d12135e6691ae1
+ Author: John Traill <john.traill@freescale.com>
+ Date: Fri Sep 29 08:23:12 2006 +0100
+@@ -683,6 +1445,21 @@ Date: Wed Aug 16 10:54:09 2006 -0500
+
+ Signed-off-by: Matthew McClintock <msm@freescale.com>
+
++commit 899620c2d66d4eef3b2a0034d062e71d45d886c9
++Author: Stefan Roese <sr@denx.de>
++Date: Tue Aug 15 14:22:35 2006 +0200
++
++ Add initial support for the ALPR board from Prodrive
++ NAND needs some additional testing
++ Patch by Heiko Schocher, 15 Aug 2006
++
++commit f0ff4692ff3372dec55074a8eb444943ab095abb
++Author: Stefan Roese <sr@denx.de>
++Date: Tue Aug 15 14:15:51 2006 +0200
++
++ Add FPGA Altera Cyclone 2 support
++ Patch by Heiko Schocher, 15 Aug 2006
++
+ commit fecf1c7e4de1b2779edc18742b91c22bdc32b68b
+ Author: Jon Loeliger <jdl@freescale.com>
+ Date: Mon Aug 14 15:33:38 2006 -0500
+diff -Naupr u-boot-1.1.6/common/altera.c u-boot-1.1.6-fsl-1/common/altera.c
+--- u-boot-1.1.6/common/altera.c 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/common/altera.c 2006-11-30 12:34:13.000000000 -0600
+@@ -50,15 +50,20 @@ int altera_load( Altera_desc *desc, void
+ {
+ int ret_val = FPGA_FAIL; /* assume a failure */
+
+- if (!altera_validate (desc, __FUNCTION__)) {
++ if (!altera_validate (desc, (char *)__FUNCTION__)) {
+ printf ("%s: Invalid device descriptor\n", __FUNCTION__);
+ } else {
+ switch (desc->family) {
+ case Altera_ACEX1K:
++ case Altera_CYC2:
+ #if (CONFIG_FPGA & CFG_ACEX1K)
+ PRINTF ("%s: Launching the ACEX1K Loader...\n",
+ __FUNCTION__);
+ ret_val = ACEX1K_load (desc, buf, bsize);
++#elif (CONFIG_FPGA & CFG_CYCLON2)
++ PRINTF ("%s: Launching the CYCLON II Loader...\n",
++ __FUNCTION__);
++ ret_val = CYC2_load (desc, buf, bsize);
+ #else
+ printf ("%s: No support for ACEX1K devices.\n",
+ __FUNCTION__);
+@@ -78,7 +83,7 @@ int altera_dump( Altera_desc *desc, void
+ {
+ int ret_val = FPGA_FAIL; /* assume a failure */
+
+- if (!altera_validate (desc, __FUNCTION__)) {
++ if (!altera_validate (desc, (char *)__FUNCTION__)) {
+ printf ("%s: Invalid device descriptor\n", __FUNCTION__);
+ } else {
+ switch (desc->family) {
+@@ -106,13 +111,16 @@ int altera_info( Altera_desc *desc )
+ {
+ int ret_val = FPGA_FAIL;
+
+- if (altera_validate (desc, __FUNCTION__)) {
++ if (altera_validate (desc, (char *)__FUNCTION__)) {
+ printf ("Family: \t");
+ switch (desc->family) {
+ case Altera_ACEX1K:
+ printf ("ACEX1K\n");
+ break;
+ /* Add new family types here */
++ case Altera_CYC2:
++ printf ("CYCLON II\n");
++ break;
+ default:
+ printf ("Unknown family type, %d\n", desc->family);
+ }
+@@ -147,8 +155,11 @@ int altera_info( Altera_desc *desc )
+ printf ("Device Function Table @ 0x%p\n", desc->iface_fns);
+ switch (desc->family) {
+ case Altera_ACEX1K:
++ case Altera_CYC2:
+ #if (CONFIG_FPGA & CFG_ACEX1K)
+ ACEX1K_info (desc);
++#elif (CONFIG_FPGA & CFG_CYCLON2)
++ CYC2_info (desc);
+ #else
+ /* just in case */
+ printf ("%s: No support for ACEX1K devices.\n",
+@@ -176,7 +187,7 @@ int altera_reloc( Altera_desc *desc, ulo
+ {
+ int ret_val = FPGA_FAIL; /* assume a failure */
+
+- if (!altera_validate (desc, __FUNCTION__)) {
++ if (!altera_validate (desc, (char *)__FUNCTION__)) {
+ printf ("%s: Invalid device descriptor\n", __FUNCTION__);
+ } else {
+ switch (desc->family) {
+@@ -188,6 +199,14 @@ int altera_reloc( Altera_desc *desc, ulo
+ __FUNCTION__);
+ #endif
+ break;
++ case Altera_CYC2:
++#if (CONFIG_FPGA & CFG_CYCLON2)
++ ret_val = CYC2_reloc (desc, reloc_offset);
++#else
++ printf ("%s: No support for CYCLON II devices.\n",
++ __FUNCTION__);
++#endif
++ break;
+ /* Add new family types here */
+ default:
+ printf ("%s: Unsupported family type, %d\n",
+diff -Naupr u-boot-1.1.6/common/cmd_bootm.c u-boot-1.1.6-fsl-1/common/cmd_bootm.c
+--- u-boot-1.1.6/common/cmd_bootm.c 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/common/cmd_bootm.c 2006-11-30 12:34:13.000000000 -0600
+@@ -833,10 +833,6 @@ do_bootm_linux (cmd_tbl_t *cmdtp, int fl
+ printf ("ERROR: flat device tree size does not agree with image\n");
+ return;
+ }
+-
+- } else if (getenv("disable_of") == NULL) {
+- printf ("ERROR: bootm needs flat device tree as third argument\n");
+- return;
+ }
+ #endif
+ if (!data) {
+@@ -913,23 +909,11 @@ do_bootm_linux (cmd_tbl_t *cmdtp, int fl
+
+ SHOW_BOOT_PROGRESS (15);
+
+-#ifndef CONFIG_OF_FLAT_TREE
+-
+ #if defined(CFG_INIT_RAM_LOCK) && !defined(CONFIG_E500)
+ unlock_ram_in_cache();
+ #endif
+
+- /*
+- * Linux Kernel Parameters:
+- * r3: ptr to board info data
+- * r4: initrd_start or 0 if no initrd
+- * r5: initrd_end - unused if r4 is 0
+- * r6: Start of command line string
+- * r7: End of command line string
+- */
+- (*kernel) (kbd, initrd_start, initrd_end, cmd_start, cmd_end);
+-
+-#else /* CONFIG_OF_FLAT_TREE */
++#ifdef CONFIG_OF_FLAT_TREE
+ /* move of_flat_tree if needed */
+ if (of_data) {
+ ulong of_start, of_len;
+@@ -948,30 +932,36 @@ do_bootm_linux (cmd_tbl_t *cmdtp, int fl
+ of_start, of_start + of_len - 1);
+ memmove ((void *)of_start, (void *)of_data, of_len);
+ }
++#endif
+
+- ft_setup(of_flat_tree, kbd, initrd_start, initrd_end);
+- /* ft_dump_blob(of_flat_tree); */
+-
+-#if defined(CFG_INIT_RAM_LOCK) && !defined(CONFIG_E500)
+- unlock_ram_in_cache();
++ /*
++ * Linux Kernel Parameters (passing board info data):
++ * r3: ptr to board info data
++ * r4: initrd_start or 0 if no initrd
++ * r5: initrd_end - unused if r4 is 0
++ * r6: Start of command line string
++ * r7: End of command line string
++ */
++#ifdef CONFIG_OF_FLAT_TREE
++ if (!of_flat_tree) /* no device tree; boot old style */
+ #endif
++ (*kernel) (kbd, initrd_start, initrd_end, cmd_start, cmd_end);
++ /* does not return */
++
++#ifdef CONFIG_OF_FLAT_TREE
+ /*
+- * Linux Kernel Parameters:
++ * Linux Kernel Parameters (passing device tree):
+ * r3: ptr to OF flat tree, followed by the board info data
+ * r4: physical pointer to the kernel itself
+ * r5: NULL
+ * r6: NULL
+ * r7: NULL
+ */
+- if (getenv("disable_of") != NULL)
+- (*kernel) ((bd_t *)of_flat_tree, initrd_start, initrd_end,
+- cmd_start, cmd_end);
+- else {
+- ft_setup(of_flat_tree, kbd, initrd_start, initrd_end);
+- /* ft_dump_blob(of_flat_tree); */
+- (*kernel) ((bd_t *)of_flat_tree, (ulong)kernel, 0, 0, 0);
+- }
+-#endif /* CONFIG_OF_FLAT_TREE */
++ ft_setup(of_flat_tree, kbd, initrd_start, initrd_end);
++ /* ft_dump_blob(of_flat_tree); */
++
++ (*kernel) ((bd_t *)of_flat_tree, (ulong)kernel, 0, 0, 0);
++#endif
+ }
+ #endif /* CONFIG_PPC */
+
+diff -Naupr u-boot-1.1.6/common/cmd_elf.c u-boot-1.1.6-fsl-1/common/cmd_elf.c
+--- u-boot-1.1.6/common/cmd_elf.c 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/common/cmd_elf.c 2006-12-06 10:33:49.000000000 -0600
+@@ -79,7 +79,7 @@ int do_bootelf (cmd_tbl_t *cmdtp, int fl
+ * be either an ELF image or a raw binary. Will attempt to setup the
+ * bootline and other parameters correctly.
+ * ====================================================================== */
+-int do_bootvx ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
++int do_bootvx (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
+ {
+ unsigned long addr; /* Address of image */
+ unsigned long bootaddr; /* Address to put the bootline */
+@@ -96,12 +96,10 @@ int do_bootvx ( cmd_tbl_t *cmdtp, int fl
+ * If we don't know where the image is then we're done.
+ */
+
+- if ((tmp = getenv ("loadaddr")) != NULL) {
+- addr = simple_strtoul (tmp, NULL, 16);
+- } else {
+- puts ("No load address provided\n");
+- return 1;
+- }
++ if (argc < 2)
++ addr = load_addr;
++ else
++ addr = simple_strtoul (argv[1], NULL, 16);
+
+ #if (CONFIG_COMMANDS & CFG_CMD_NET)
+ /* Check to see if we need to tftp the image ourselves before starting */
+diff -Naupr u-boot-1.1.6/common/cmd_fpga.c u-boot-1.1.6-fsl-1/common/cmd_fpga.c
+--- u-boot-1.1.6/common/cmd_fpga.c 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/common/cmd_fpga.c 2006-11-30 12:34:13.000000000 -0600
+@@ -55,6 +55,7 @@ static int fpga_get_op (char *opstr);
+ #define FPGA_LOAD 1
+ #define FPGA_LOADB 2
+ #define FPGA_DUMP 3
++#define FPGA_LOADMK 4
+
+ /* Convert bitstream data and load into the fpga */
+ int fpga_loadbitstream(unsigned long dev, char* fpgadata, size_t size)
+@@ -251,6 +252,23 @@ int do_fpga (cmd_tbl_t * cmdtp, int flag
+ rc = fpga_loadbitstream(dev, fpga_data, data_size);
+ break;
+
++ case FPGA_LOADMK:
++ {
++ image_header_t header;
++ image_header_t *hdr = &header;
++ ulong data;
++
++ memmove (&header, (char *)fpga_data, sizeof(image_header_t));
++ if (ntohl(hdr->ih_magic) != IH_MAGIC) {
++ puts ("Bad Magic Number\n");
++ return 1;
++ }
++ data = ((ulong)fpga_data + sizeof(image_header_t));
++ data_size = ntohl(hdr->ih_size);
++ rc = fpga_load (dev, (void *)data, data_size);
++ }
++ break;
++
+ case FPGA_DUMP:
+ rc = fpga_dump (dev, fpga_data, data_size);
+ break;
+@@ -282,6 +300,8 @@ static int fpga_get_op (char *opstr)
+ op = FPGA_LOADB;
+ } else if (!strcmp ("load", opstr)) {
+ op = FPGA_LOAD;
++ } else if (!strcmp ("loadmk", opstr)) {
++ op = FPGA_LOADMK;
+ } else if (!strcmp ("dump", opstr)) {
+ op = FPGA_DUMP;
+ }
+@@ -299,5 +319,6 @@ U_BOOT_CMD (fpga, 6, 1, do_fpga,
+ "\tinfo\tlist known device information\n"
+ "\tload\tLoad device from memory buffer\n"
+ "\tloadb\tLoad device from bitstream buffer (Xilinx devices only)\n"
++ "\tloadmk\tLoad device generated with mkimage\n"
+ "\tdump\tLoad device to memory buffer\n");
+ #endif /* CONFIG_FPGA && CONFIG_COMMANDS & CFG_CMD_FPGA */
+diff -Naupr u-boot-1.1.6/common/cmd_i2c.c u-boot-1.1.6-fsl-1/common/cmd_i2c.c
+--- u-boot-1.1.6/common/cmd_i2c.c 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/common/cmd_i2c.c 2006-11-30 12:34:13.000000000 -0600
+@@ -101,8 +101,31 @@ static uchar i2c_mm_last_chip;
+ static uint i2c_mm_last_addr;
+ static uint i2c_mm_last_alen;
+
++/* If only one I2C bus is present, the list of devices to ignore when
++ * the probe command is issued is represented by a 1D array of addresses.
++ * When multiple buses are present, the list is an array of bus-address
++ * pairs. The following macros take care of this */
++
+ #if defined(CFG_I2C_NOPROBES)
++#if defined(CONFIG_I2C_MULTI_BUS)
++static struct
++{
++ uchar bus;
++ uchar addr;
++} i2c_no_probes[] = CFG_I2C_NOPROBES;
++#define GET_BUS_NUM i2c_get_bus_num()
++#define COMPARE_BUS(b,i) (i2c_no_probes[(i)].bus == (b))
++#define COMPARE_ADDR(a,i) (i2c_no_probes[(i)].addr == (a))
++#define NO_PROBE_ADDR(i) i2c_no_probes[(i)].addr
++#else /* single bus */
+ static uchar i2c_no_probes[] = CFG_I2C_NOPROBES;
++#define GET_BUS_NUM 0
++#define COMPARE_BUS(b,i) ((b) == 0) /* Make compiler happy */
++#define COMPARE_ADDR(a,i) (i2c_no_probes[(i)] == (a))
++#define NO_PROBE_ADDR(i) i2c_no_probes[(i)]
++#endif /* CONFIG_MULTI_BUS */
++
++#define NUM_ELEMENTS_NOPROBE (sizeof(i2c_no_probes)/sizeof(i2c_no_probes[0]))
+ #endif
+
+ static int
+@@ -151,7 +174,7 @@ int do_i2c_md ( cmd_tbl_t *cmdtp, int fl
+ */
+ addr = simple_strtoul(argv[2], NULL, 16);
+ alen = 1;
+- for(j = 0; j < 8; j++) {
++ for (j = 0; j < 8; j++) {
+ if (argv[2][j] == '.') {
+ alen = argv[2][j+1] - '0';
+ if (alen > 4) {
+@@ -159,9 +182,8 @@ int do_i2c_md ( cmd_tbl_t *cmdtp, int fl
+ return 1;
+ }
+ break;
+- } else if (argv[2][j] == '\0') {
++ } else if (argv[2][j] == '\0')
+ break;
+- }
+ }
+
+ /*
+@@ -185,9 +207,9 @@ int do_i2c_md ( cmd_tbl_t *cmdtp, int fl
+
+ linebytes = (nbytes > DISP_LINE_LEN) ? DISP_LINE_LEN : nbytes;
+
+- if(i2c_read(chip, addr, alen, linebuf, linebytes) != 0) {
++ if (i2c_read(chip, addr, alen, linebuf, linebytes) != 0)
+ puts ("Error reading the chip.\n");
+- } else {
++ else {
+ printf("%04x:", addr);
+ cp = linebuf;
+ for (j=0; j<linebytes; j++) {
+@@ -256,17 +278,16 @@ int do_i2c_mw ( cmd_tbl_t *cmdtp, int fl
+ */
+ addr = simple_strtoul(argv[2], NULL, 16);
+ alen = 1;
+- for(j = 0; j < 8; j++) {
++ for (j = 0; j < 8; j++) {
+ if (argv[2][j] == '.') {
+ alen = argv[2][j+1] - '0';
+- if(alen > 4) {
++ if (alen > 4) {
+ printf ("Usage:\n%s\n", cmdtp->usage);
+ return 1;
+ }
+ break;
+- } else if (argv[2][j] == '\0') {
++ } else if (argv[2][j] == '\0')
+ break;
+- }
+ }
+
+ /*
+@@ -277,16 +298,14 @@ int do_i2c_mw ( cmd_tbl_t *cmdtp, int fl
+ /*
+ * Optional count
+ */
+- if(argc == 5) {
++ if (argc == 5)
+ count = simple_strtoul(argv[4], NULL, 16);
+- } else {
++ else
+ count = 1;
+- }
+
+ while (count-- > 0) {
+- if(i2c_write(chip, addr++, alen, &byte, 1) != 0) {
++ if (i2c_write(chip, addr++, alen, &byte, 1) != 0)
+ puts ("Error writing the chip.\n");
+- }
+ /*
+ * Wait for the write to complete. The write can take
+ * up to 10mSec (we allow a little more time).
+@@ -303,9 +322,9 @@ int do_i2c_mw ( cmd_tbl_t *cmdtp, int fl
+ #endif
+
+ #if 0
+- for(timeout = 0; timeout < 10; timeout++) {
++ for (timeout = 0; timeout < 10; timeout++) {
+ udelay(2000);
+- if(i2c_probe(chip) == 0)
++ if (i2c_probe(chip) == 0)
+ break;
+ }
+ #endif
+@@ -346,17 +365,16 @@ int do_i2c_crc (cmd_tbl_t *cmdtp, int fl
+ */
+ addr = simple_strtoul(argv[2], NULL, 16);
+ alen = 1;
+- for(j = 0; j < 8; j++) {
++ for (j = 0; j < 8; j++) {
+ if (argv[2][j] == '.') {
+ alen = argv[2][j+1] - '0';
+- if(alen > 4) {
++ if (alen > 4) {
+ printf ("Usage:\n%s\n", cmdtp->usage);
+ return 1;
+ }
+ break;
+- } else if (argv[2][j] == '\0') {
++ } else if (argv[2][j] == '\0')
+ break;
+- }
+ }
+
+ /*
+@@ -371,19 +389,16 @@ int do_i2c_crc (cmd_tbl_t *cmdtp, int fl
+ */
+ crc = 0;
+ err = 0;
+- while(count-- > 0) {
+- if(i2c_read(chip, addr, alen, &byte, 1) != 0) {
++ while (count-- > 0) {
++ if (i2c_read(chip, addr, alen, &byte, 1) != 0)
+ err++;
+- }
+ crc = crc32 (crc, &byte, 1);
+ addr++;
+ }
+- if(err > 0)
+- {
++ if (err > 0)
+ puts ("Error reading the chip,\n");
+- } else {
++ else
+ printf ("%08lx\n", crc);
+- }
+
+ return 0;
+ }
+@@ -441,17 +456,16 @@ mod_i2c_mem(cmd_tbl_t *cmdtp, int incrfl
+ */
+ addr = simple_strtoul(argv[2], NULL, 16);
+ alen = 1;
+- for(j = 0; j < 8; j++) {
++ for (j = 0; j < 8; j++) {
+ if (argv[2][j] == '.') {
+ alen = argv[2][j+1] - '0';
+- if(alen > 4) {
++ if (alen > 4) {
+ printf ("Usage:\n%s\n", cmdtp->usage);
+ return 1;
+ }
+ break;
+- } else if (argv[2][j] == '\0') {
++ } else if (argv[2][j] == '\0')
+ break;
+- }
+ }
+ }
+
+@@ -461,17 +475,16 @@ mod_i2c_mem(cmd_tbl_t *cmdtp, int incrfl
+ */
+ do {
+ printf("%08lx:", addr);
+- if(i2c_read(chip, addr, alen, (uchar *)&data, size) != 0) {
++ if (i2c_read(chip, addr, alen, (uchar *)&data, size) != 0)
+ puts ("\nError reading the chip,\n");
+- } else {
++ else {
+ data = cpu_to_be32(data);
+- if(size == 1) {
++ if (size == 1)
+ printf(" %02lx", (data >> 24) & 0x000000FF);
+- } else if(size == 2) {
++ else if (size == 2)
+ printf(" %04lx", (data >> 16) & 0x0000FFFF);
+- } else {
++ else
+ printf(" %08lx", data);
+- }
+ }
+
+ nbytes = readline (" ? ");
+@@ -488,19 +501,17 @@ mod_i2c_mem(cmd_tbl_t *cmdtp, int incrfl
+ #endif
+ }
+ #ifdef CONFIG_BOOT_RETRY_TIME
+- else if (nbytes == -2) {
++ else if (nbytes == -2)
+ break; /* timed out, exit the command */
+- }
+ #endif
+ else {
+ char *endp;
+
+ data = simple_strtoul(console_buffer, &endp, 16);
+- if(size == 1) {
++ if (size == 1)
+ data = data << 24;
+- } else if(size == 2) {
++ else if (size == 2)
+ data = data << 16;
+- }
+ data = be32_to_cpu(data);
+ nbytes = endp - console_buffer;
+ if (nbytes) {
+@@ -510,9 +521,8 @@ mod_i2c_mem(cmd_tbl_t *cmdtp, int incrfl
+ */
+ reset_cmd_timeout();
+ #endif
+- if(i2c_write(chip, addr, alen, (uchar *)&data, size) != 0) {
++ if (i2c_write(chip, addr, alen, (uchar *)&data, size) != 0)
+ puts ("Error writing the chip.\n");
+- }
+ #ifdef CFG_EEPROM_PAGE_WRITE_DELAY_MS
+ udelay(CFG_EEPROM_PAGE_WRITE_DELAY_MS * 1000);
+ #endif
+@@ -538,14 +548,15 @@ int do_i2c_probe (cmd_tbl_t *cmdtp, int
+ int j;
+ #if defined(CFG_I2C_NOPROBES)
+ int k, skip;
+-#endif
++ uchar bus = GET_BUS_NUM;
++#endif /* NOPROBES */
+
+ puts ("Valid chip addresses:");
+- for(j = 0; j < 128; j++) {
++ for (j = 0; j < 128; j++) {
+ #if defined(CFG_I2C_NOPROBES)
+ skip = 0;
+- for (k = 0; k < sizeof(i2c_no_probes); k++){
+- if (j == i2c_no_probes[k]){
++ for (k=0; k < NUM_ELEMENTS_NOPROBE; k++) {
++ if (COMPARE_BUS(bus, k) && COMPARE_ADDR(j, k)) {
+ skip = 1;
+ break;
+ }
+@@ -553,16 +564,17 @@ int do_i2c_probe (cmd_tbl_t *cmdtp, int
+ if (skip)
+ continue;
+ #endif
+- if(i2c_probe(j) == 0) {
++ if (i2c_probe(j) == 0)
+ printf(" %02X", j);
+- }
+ }
+ putc ('\n');
+
+ #if defined(CFG_I2C_NOPROBES)
+ puts ("Excluded chip addresses:");
+- for( k = 0; k < sizeof(i2c_no_probes); k++ )
+- printf(" %02X", i2c_no_probes[k] );
++ for (k=0; k < NUM_ELEMENTS_NOPROBE; k++) {
++ if (COMPARE_BUS(bus,k))
++ printf(" %02X", NO_PROBE_ADDR(k));
++ }
+ putc ('\n');
+ #endif
+
+@@ -601,7 +613,7 @@ int do_i2c_loop(cmd_tbl_t *cmdtp, int fl
+ */
+ addr = simple_strtoul(argv[2], NULL, 16);
+ alen = 1;
+- for(j = 0; j < 8; j++) {
++ for (j = 0; j < 8; j++) {
+ if (argv[2][j] == '.') {
+ alen = argv[2][j+1] - '0';
+ if (alen > 4) {
+@@ -609,9 +621,8 @@ int do_i2c_loop(cmd_tbl_t *cmdtp, int fl
+ return 1;
+ }
+ break;
+- } else if (argv[2][j] == '\0') {
++ } else if (argv[2][j] == '\0')
+ break;
+- }
+ }
+
+ /*
+@@ -619,24 +630,21 @@ int do_i2c_loop(cmd_tbl_t *cmdtp, int fl
+ */
+ length = 1;
+ length = simple_strtoul(argv[3], NULL, 16);
+- if(length > sizeof(bytes)) {
++ if (length > sizeof(bytes))
+ length = sizeof(bytes);
+- }
+
+ /*
+ * The delay time (uSec) is optional.
+ */
+ delay = 1000;
+- if (argc > 3) {
++ if (argc > 3)
+ delay = simple_strtoul(argv[4], NULL, 10);
+- }
+ /*
+ * Run the loop...
+ */
+- while(1) {
+- if(i2c_read(chip, addr, alen, bytes, length) != 0) {
++ while (1) {
++ if (i2c_read(chip, addr, alen, bytes, length) != 0)
+ puts ("Error reading the chip.\n");
+- }
+ udelay(delay);
+ }
+
+@@ -671,7 +679,7 @@ int do_sdram ( cmd_tbl_t *cmdtp, int fl
+ */
+ chip = simple_strtoul(argv[1], NULL, 16);
+
+- if(i2c_read(chip, 0, 1, data, sizeof(data)) != 0) {
++ if (i2c_read(chip, 0, 1, data, sizeof(data)) != 0) {
+ puts ("No SDRAM Serial Presence Detect found.\n");
+ return 1;
+ }
+@@ -680,7 +688,7 @@ int do_sdram ( cmd_tbl_t *cmdtp, int fl
+ for (j = 0; j < 63; j++) {
+ cksum += data[j];
+ }
+- if(cksum != data[63]) {
++ if (cksum != data[63]) {
+ printf ("WARNING: Configuration data checksum failure:\n"
+ " is 0x%02x, calculated 0x%02x\n",
+ data[63], cksum);
+@@ -696,17 +704,15 @@ int do_sdram ( cmd_tbl_t *cmdtp, int fl
+ default: puts ("unknown\n"); break;
+ }
+ puts ("Row address bits ");
+- if((data[3] & 0x00F0) == 0) {
++ if ((data[3] & 0x00F0) == 0)
+ printf("%d\n", data[3] & 0x0F);
+- } else {
++ else
+ printf("%d/%d\n", data[3] & 0x0F, (data[3] >> 4) & 0x0F);
+- }
+ puts ("Column address bits ");
+- if((data[4] & 0x00F0) == 0) {
++ if ((data[4] & 0x00F0) == 0)
+ printf("%d\n", data[4] & 0x0F);
+- } else {
++ else
+ printf("%d/%d\n", data[4] & 0x0F, (data[4] >> 4) & 0x0F);
+- }
+ printf("Module rows %d\n", data[5]);
+ printf("Module data width %d bits\n", (data[7] << 8) | data[6]);
+ puts ("Interface signal levels ");
+@@ -729,11 +735,10 @@ int do_sdram ( cmd_tbl_t *cmdtp, int fl
+ case 2: puts ("ECC\n"); break;
+ default: puts ("unknown\n"); break;
+ }
+- if((data[12] & 0x80) == 0) {
++ if ((data[12] & 0x80) == 0)
+ puts ("No self refresh, rate ");
+- } else {
++ else
+ puts ("Self refresh, rate ");
+- }
+ switch(data[12] & 0x7F) {
+ case 0: puts ("15.625uS\n"); break;
+ case 1: puts ("3.9uS\n"); break;
+@@ -744,17 +749,16 @@ int do_sdram ( cmd_tbl_t *cmdtp, int fl
+ default: puts ("unknown\n"); break;
+ }
+ printf("SDRAM width (primary) %d\n", data[13] & 0x7F);
+- if((data[13] & 0x80) != 0) {
++ if ((data[13] & 0x80) != 0) {
+ printf(" (second bank) %d\n",
+ 2 * (data[13] & 0x7F));
+ }
+- if(data[14] != 0) {
++ if (data[14] != 0) {
+ printf("EDC width %d\n",
+ data[14] & 0x7F);
+- if((data[14] & 0x80) != 0) {
++ if ((data[14] & 0x80) != 0)
+ printf(" (second bank) %d\n",
+ 2 * (data[14] & 0x7F));
+- }
+ }
+ printf("Min clock delay, back-to-back random column addresses %d\n",
+ data[15]);
+@@ -852,18 +856,18 @@ int do_sdram ( cmd_tbl_t *cmdtp, int fl
+ (data[35] & 0x80) ? '-' : '+',
+ (data[35] >> 4) & 0x07, data[35] & 0x0F);
+ puts ("Manufacturer's JEDEC ID ");
+- for(j = 64; j <= 71; j++)
++ for (j = 64; j <= 71; j++)
+ printf("%02X ", data[j]);
+ putc ('\n');
+ printf("Manufacturing Location %02X\n", data[72]);
+ puts ("Manufacturer's Part Number ");
+- for(j = 73; j <= 90; j++)
++ for (j = 73; j <= 90; j++)
+ printf("%02X ", data[j]);
+ putc ('\n');
+ printf("Revision Code %02X %02X\n", data[91], data[92]);
+ printf("Manufacturing Date %02X %02X\n", data[93], data[94]);
+ puts ("Assembly Serial Number ");
+- for(j = 95; j <= 98; j++)
++ for (j = 95; j <= 98; j++)
+ printf("%02X ", data[j]);
+ putc ('\n');
+ printf("Speed rating PC%d\n",
+@@ -873,6 +877,74 @@ int do_sdram ( cmd_tbl_t *cmdtp, int fl
+ }
+ #endif /* CFG_CMD_SDRAM */
+
++#if defined(CONFIG_I2C_CMD_TREE)
++#if defined(CONFIG_I2C_MULTI_BUS)
++int do_i2c_bus_num(cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
++{
++ int bus_idx, ret=0;
++
++ if (argc == 1)
++ /* querying current setting */
++ printf("Current bus is %d\n", i2c_get_bus_num());
++ else {
++ bus_idx = simple_strtoul(argv[1], NULL, 10);
++ printf("Setting bus to %d\n", bus_idx);
++ ret = i2c_set_bus_num(bus_idx);
++ if (ret)
++ printf("Failure changing bus number (%d)\n", ret);
++ }
++ return ret;
++}
++#endif /* CONFIG_I2C_MULTI_BUS */
++
++int do_i2c_bus_speed(cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
++{
++ int speed, ret=0;
++
++ if (argc == 1)
++ /* querying current speed */
++ printf("Current bus speed=%d\n", i2c_get_bus_speed());
++ else {
++ speed = simple_strtoul(argv[1], NULL, 10);
++ printf("Setting bus speed to %d Hz\n", speed);
++ ret = i2c_set_bus_speed(speed);
++ if (ret)
++ printf("Failure changing bus speed (%d)\n", ret);
++ }
++ return ret;
++}
++
++int do_i2c(cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
++{
++#if defined(CONFIG_I2C_MULTI_BUS)
++ if (!strncmp(argv[1], "de", 2))
++ return do_i2c_bus_num(cmdtp, flag, --argc, ++argv);
++#endif /* CONFIG_I2C_MULTI_BUS */
++ if (!strncmp(argv[1], "sp", 2))
++ return do_i2c_bus_speed(cmdtp, flag, --argc, ++argv);
++ if (!strncmp(argv[1], "md", 2))
++ return do_i2c_md(cmdtp, flag, --argc, ++argv);
++ if (!strncmp(argv[1], "mm", 2))
++ return do_i2c_mm(cmdtp, flag, --argc, ++argv);
++ if (!strncmp(argv[1], "mw", 2))
++ return do_i2c_mw(cmdtp, flag, --argc, ++argv);
++ if (!strncmp(argv[1], "nm", 2))
++ return do_i2c_nm(cmdtp, flag, --argc, ++argv);
++ if (!strncmp(argv[1], "cr", 2))
++ return do_i2c_crc(cmdtp, flag, --argc, ++argv);
++ if (!strncmp(argv[1], "pr", 2))
++ return do_i2c_probe(cmdtp, flag, --argc, ++argv);
++ if (!strncmp(argv[1], "lo", 2))
++ return do_i2c_loop(cmdtp, flag, --argc, ++argv);
++#if (CONFIG_COMMANDS & CFG_CMD_SDRAM)
++ if (!strncmp(argv[1], "sd", 2))
++ return do_sdram(cmdtp, flag, --argc, ++argv);
++#endif /* CFG_CMD_SDRAM */
++ else
++ printf ("Usage:\n%s\n", cmdtp->usage);
++ return 0;
++}
++#endif /* CONFIG_I2C_CMD_TREE */
+
+ /***************************************************/
+
+@@ -930,4 +1002,26 @@ U_BOOT_CMD(
+ " (valid chip values 50..57)\n"
+ );
+ #endif
++
++#if defined(CONFIG_I2C_CMD_TREE)
++U_BOOT_CMD(
++ i2c, 6, 1, do_i2c,
++ "i2c - I2C sub-system\n",
++#if defined(CONFIG_I2C_MULTI_BUS)
++ "dev [dev] - show or set current I2C bus\n"
++#endif /* CONFIG_I2C_MULTI_BUS */
++ "i2c speed [speed] - show or set I2C bus speed\n"
++ "i2c md chip address[.0, .1, .2] [# of objects] - read from I2C device\n"
++ "i2c mm chip address[.0, .1, .2] - write to I2C device (auto-incrementing)\n"
++ "i2c mw chip address[.0, .1, .2] value [count] - write to I2C device (fill)\n"
++ "i2c nm chip address[.0, .1, .2] - write to I2C device (constant address)\n"
++ "i2c crc32 chip address[.0, .1, .2] count - compute CRC32 checksum\n"
++ "i2c probe - show devices on the I2C bus\n"
++ "i2c loop chip address[.0, .1, .2] [# of objects] - looping read of device\n"
++#if (CONFIG_COMMANDS & CFG_CMD_SDRAM)
++ "i2c sdram chip - print SDRAM configuration information\n"
++#endif /* CFG_CMD_SDRAM */
++);
++#endif /* CONFIG_I2C_CMD_TREE */
++
+ #endif /* CFG_CMD_I2C */
+diff -Naupr u-boot-1.1.6/common/cmd_nand.c u-boot-1.1.6-fsl-1/common/cmd_nand.c
+--- u-boot-1.1.6/common/cmd_nand.c 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/common/cmd_nand.c 2006-12-06 10:33:49.000000000 -0600
+@@ -684,178 +684,182 @@ extern int nand_write_oob(struct nand_ch
+ size_t len, size_t *retlen, const u_char *buf);
+
+
+-int do_nand (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
++int do_nand (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
+ {
+- int rcode = 0;
++ int rcode = 0;
+
+- switch (argc) {
+- case 0:
+- case 1:
+- printf ("Usage:\n%s\n", cmdtp->usage);
+- return 1;
+- case 2:
+- if (strcmp(argv[1],"info") == 0) {
+- int i;
+-
+- putc ('\n');
+-
+- for (i=0; i<CFG_MAX_NAND_DEVICE; ++i) {
+- if(nand_dev_desc[i].ChipID == NAND_ChipID_UNKNOWN)
+- continue; /* list only known devices */
+- printf ("Device %d: ", i);
+- nand_print(&nand_dev_desc[i]);
+- }
+- return 0;
++ switch (argc) {
++ case 0:
++ case 1:
++ printf ("Usage:\n%s\n", cmdtp->usage);
++ return 1;
++ case 2:
++ if (strcmp (argv[1], "info") == 0) {
++ int i;
+
+- } else if (strcmp(argv[1],"device") == 0) {
+- if ((curr_device < 0) || (curr_device >= CFG_MAX_NAND_DEVICE)) {
+- puts ("\nno devices available\n");
+- return 1;
+- }
+- printf ("\nDevice %d: ", curr_device);
+- nand_print(&nand_dev_desc[curr_device]);
+- return 0;
+-
+- } else if (strcmp(argv[1],"bad") == 0) {
+- if ((curr_device < 0) || (curr_device >= CFG_MAX_NAND_DEVICE)) {
+- puts ("\nno devices available\n");
+- return 1;
+- }
+- printf ("\nDevice %d bad blocks:\n", curr_device);
+- nand_print_bad(&nand_dev_desc[curr_device]);
+- return 0;
++ putc ('\n');
+
+- }
+- printf ("Usage:\n%s\n", cmdtp->usage);
+- return 1;
+- case 3:
+- if (strcmp(argv[1],"device") == 0) {
+- int dev = (int)simple_strtoul(argv[2], NULL, 10);
+-
+- printf ("\nDevice %d: ", dev);
+- if (dev >= CFG_MAX_NAND_DEVICE) {
+- puts ("unknown device\n");
+- return 1;
+- }
+- nand_print(&nand_dev_desc[dev]);
+- /*nand_print (dev);*/
++ for (i = 0; i < CFG_MAX_NAND_DEVICE; ++i) {
++ if (nand_dev_desc[i].ChipID ==
++ NAND_ChipID_UNKNOWN)
++ continue; /* list only known devices */
++ printf ("Device %d: ", i);
++ nand_print (&nand_dev_desc[i]);
++ }
++ return 0;
++
++ } else if (strcmp (argv[1], "device") == 0) {
++ if ((curr_device < 0)
++ || (curr_device >= CFG_MAX_NAND_DEVICE)) {
++ puts ("\nno devices available\n");
++ return 1;
++ }
++ printf ("\nDevice %d: ", curr_device);
++ nand_print (&nand_dev_desc[curr_device]);
++ return 0;
++
++ } else if (strcmp (argv[1], "bad") == 0) {
++ if ((curr_device < 0)
++ || (curr_device >= CFG_MAX_NAND_DEVICE)) {
++ puts ("\nno devices available\n");
++ return 1;
++ }
++ printf ("\nDevice %d bad blocks:\n", curr_device);
++ nand_print_bad (&nand_dev_desc[curr_device]);
++ return 0;
+
+- if (nand_dev_desc[dev].ChipID == NAND_ChipID_UNKNOWN) {
+- return 1;
+ }
++ printf ("Usage:\n%s\n", cmdtp->usage);
++ return 1;
++ case 3:
++ if (strcmp (argv[1], "device") == 0) {
++ int dev = (int) simple_strtoul (argv[2], NULL, 10);
+
+- curr_device = dev;
++ printf ("\nDevice %d: ", dev);
++ if (dev >= CFG_MAX_NAND_DEVICE) {
++ puts ("unknown device\n");
++ return 1;
++ }
++ nand_print (&nand_dev_desc[dev]);
++ /*nand_print (dev); */
+
+- puts ("... is now current device\n");
++ if (nand_dev_desc[dev].ChipID == NAND_ChipID_UNKNOWN) {
++ return 1;
++ }
+
+- return 0;
+- }
+- else if (strcmp(argv[1],"erase") == 0 && strcmp(argv[2], "clean") == 0) {
+- struct nand_chip* nand = &nand_dev_desc[curr_device];
+- ulong off = 0;
+- ulong size = nand->totlen;
+- int ret;
++ curr_device = dev;
+
+- printf ("\nNAND erase: device %d offset %ld, size %ld ... ",
+- curr_device, off, size);
++ puts ("... is now current device\n");
+
+- ret = nand_legacy_erase (nand, off, size, 1);
++ return 0;
++ } else if (strcmp (argv[1], "erase") == 0
++ && strcmp (argv[2], "clean") == 0) {
++ struct nand_chip *nand = &nand_dev_desc[curr_device];
++ ulong off = 0;
++ ulong size = nand->totlen;
++ int ret;
+
+- printf("%s\n", ret ? "ERROR" : "OK");
++ printf ("\nNAND erase: device %d offset %ld, size %ld ... ", curr_device, off, size);
+
+- return ret;
+- }
++ ret = nand_legacy_erase (nand, off, size, 1);
+
+- printf ("Usage:\n%s\n", cmdtp->usage);
+- return 1;
+- default:
+- /* at least 4 args */
+-
+- if (strncmp(argv[1], "read", 4) == 0 ||
+- strncmp(argv[1], "write", 5) == 0) {
+- ulong addr = simple_strtoul(argv[2], NULL, 16);
+- ulong off = simple_strtoul(argv[3], NULL, 16);
+- ulong size = simple_strtoul(argv[4], NULL, 16);
+- int cmd = (strncmp(argv[1], "read", 4) == 0) ?
+- NANDRW_READ : NANDRW_WRITE;
+- int ret, total;
+- char* cmdtail = strchr(argv[1], '.');
++ printf ("%s\n", ret ? "ERROR" : "OK");
+
+- if (cmdtail && !strncmp(cmdtail, ".oob", 2)) {
+- /* read out-of-band data */
+- if (cmd & NANDRW_READ) {
+- ret = nand_read_oob(nand_dev_desc + curr_device,
+- off, size, (size_t *)&total,
+- (u_char*)addr);
+- }
+- else {
+- ret = nand_write_oob(nand_dev_desc + curr_device,
+- off, size, (size_t *)&total,
+- (u_char*)addr);
+- }
+ return ret;
+ }
+- else if (cmdtail && !strncmp(cmdtail, ".jffs2", 2))
+- cmd |= NANDRW_JFFS2; /* skip bad blocks */
+- else if (cmdtail && !strncmp(cmdtail, ".jffs2s", 2)) {
+- cmd |= NANDRW_JFFS2; /* skip bad blocks (on read too) */
+- if (cmd & NANDRW_READ)
+- cmd |= NANDRW_JFFS2_SKIP; /* skip bad blocks (on read too) */
+- }
++
++ printf ("Usage:\n%s\n", cmdtp->usage);
++ return 1;
++ default:
++ /* at least 4 args */
++
++ if (strncmp (argv[1], "read", 4) == 0 ||
++ strncmp (argv[1], "write", 5) == 0) {
++ ulong addr = simple_strtoul (argv[2], NULL, 16);
++ ulong off = simple_strtoul (argv[3], NULL, 16);
++ ulong size = simple_strtoul (argv[4], NULL, 16);
++ int cmd = (strncmp (argv[1], "read", 4) == 0) ?
++ NANDRW_READ : NANDRW_WRITE;
++ int ret, total;
++ char *cmdtail = strchr (argv[1], '.');
++
++ if (cmdtail && !strncmp (cmdtail, ".oob", 2)) {
++ /* read out-of-band data */
++ if (cmd & NANDRW_READ) {
++ ret = nand_read_oob (nand_dev_desc + curr_device,
++ off, size, (size_t *) & total,
++ (u_char *) addr);
++ } else {
++ ret = nand_write_oob (nand_dev_desc + curr_device,
++ off, size, (size_t *) & total,
++ (u_char *) addr);
++ }
++ return ret;
++ } else if (cmdtail && !strncmp (cmdtail, ".jffs2", 2))
++ cmd |= NANDRW_JFFS2; /* skip bad blocks */
++ else if (cmdtail && !strncmp (cmdtail, ".jffs2s", 2)) {
++ cmd |= NANDRW_JFFS2; /* skip bad blocks (on read too) */
++ if (cmd & NANDRW_READ)
++ cmd |= NANDRW_JFFS2_SKIP; /* skip bad blocks (on read too) */
++ }
+ #ifdef SXNI855T
+- /* need ".e" same as ".j" for compatibility with older units */
+- else if (cmdtail && !strcmp(cmdtail, ".e"))
+- cmd |= NANDRW_JFFS2; /* skip bad blocks */
++ /* need ".e" same as ".j" for compatibility with older units */
++ else if (cmdtail && !strcmp (cmdtail, ".e"))
++ cmd |= NANDRW_JFFS2; /* skip bad blocks */
+ #endif
+ #ifdef CFG_NAND_SKIP_BAD_DOT_I
+- /* need ".i" same as ".jffs2s" for compatibility with older units (esd) */
+- /* ".i" for image -> read skips bad block (no 0xff) */
+- else if (cmdtail && !strcmp(cmdtail, ".i")) {
+- cmd |= NANDRW_JFFS2; /* skip bad blocks (on read too) */
+- if (cmd & NANDRW_READ)
+- cmd |= NANDRW_JFFS2_SKIP; /* skip bad blocks (on read too) */
+- }
++ /* need ".i" same as ".jffs2s" for compatibility with older units (esd) */
++ /* ".i" for image -> read skips bad block (no 0xff) */
++ else if (cmdtail && !strcmp (cmdtail, ".i")) {
++ cmd |= NANDRW_JFFS2; /* skip bad blocks (on read too) */
++ if (cmd & NANDRW_READ)
++ cmd |= NANDRW_JFFS2_SKIP; /* skip bad blocks (on read too) */
++ }
+ #endif /* CFG_NAND_SKIP_BAD_DOT_I */
+- else if (cmdtail) {
+- printf ("Usage:\n%s\n", cmdtp->usage);
+- return 1;
+- }
++ else if (cmdtail) {
++ printf ("Usage:\n%s\n", cmdtp->usage);
++ return 1;
++ }
+
+- printf ("\nNAND %s: device %d offset %ld, size %ld ...\n",
+- (cmd & NANDRW_READ) ? "read" : "write",
+- curr_device, off, size);
+-
+- ret = nand_legacy_rw(nand_dev_desc + curr_device, cmd, off, size,
+- (size_t *)&total, (u_char*)addr);
+-
+- printf (" %d bytes %s: %s\n", total,
+- (cmd & NANDRW_READ) ? "read" : "written",
+- ret ? "ERROR" : "OK");
+-
+- return ret;
+- } else if (strcmp(argv[1],"erase") == 0 &&
+- (argc == 4 || strcmp("clean", argv[2]) == 0)) {
+- int clean = argc == 5;
+- ulong off = simple_strtoul(argv[2 + clean], NULL, 16);
+- ulong size = simple_strtoul(argv[3 + clean], NULL, 16);
+- int ret;
+-
+- printf ("\nNAND erase: device %d offset %ld, size %ld ...\n",
+- curr_device, off, size);
++ printf ("\nNAND %s: device %d offset %ld, size %ld ...\n",
++ (cmd & NANDRW_READ) ? "read" : "write",
++ curr_device, off, size);
++
++ ret = nand_legacy_rw (nand_dev_desc + curr_device,
++ cmd, off, size,
++ (size_t *) & total,
++ (u_char *) addr);
++
++ printf (" %d bytes %s: %s\n", total,
++ (cmd & NANDRW_READ) ? "read" : "written",
++ ret ? "ERROR" : "OK");
+
+- ret = nand_legacy_erase (nand_dev_desc + curr_device,
+- off, size, clean);
++ return ret;
++ } else if (strcmp (argv[1], "erase") == 0 &&
++ (argc == 4 || strcmp ("clean", argv[2]) == 0)) {
++ int clean = argc == 5;
++ ulong off =
++ simple_strtoul (argv[2 + clean], NULL, 16);
++ ulong size =
++ simple_strtoul (argv[3 + clean], NULL, 16);
++ int ret;
+
+- printf("%s\n", ret ? "ERROR" : "OK");
++ printf ("\nNAND erase: device %d offset %ld, size %ld ...\n",
++ curr_device, off, size);
+
+- return ret;
+- } else {
+- printf ("Usage:\n%s\n", cmdtp->usage);
+- rcode = 1;
+- }
++ ret = nand_legacy_erase (nand_dev_desc + curr_device,
++ off, size, clean);
+
+- return rcode;
+- }
++ printf ("%s\n", ret ? "ERROR" : "OK");
++
++ return ret;
++ } else {
++ printf ("Usage:\n%s\n", cmdtp->usage);
++ rcode = 1;
++ }
++
++ return rcode;
++ }
+ }
+
+ U_BOOT_CMD(
+diff -Naupr u-boot-1.1.6/common/cyclon2.c u-boot-1.1.6-fsl-1/common/cyclon2.c
+--- u-boot-1.1.6/common/cyclon2.c 1969-12-31 18:00:00.000000000 -0600
++++ u-boot-1.1.6-fsl-1/common/cyclon2.c 2006-11-30 12:34:13.000000000 -0600
+@@ -0,0 +1,305 @@
++/*
++ * (C) Copyright 2006
++ * Heiko Schocher, hs@denx.de
++ * Based on ACE1XK.c
++ *
++ * See file CREDITS for list of people who contributed to this
++ * project.
++ *
++ * 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
++ *
++ */
++
++#include <common.h> /* core U-Boot definitions */
++#include <altera.h>
++#include <ACEX1K.h> /* ACEX device family */
++
++#if (CONFIG_FPGA & (CFG_ALTERA | CFG_CYCLON2))
++
++/* Define FPGA_DEBUG to get debug printf's */
++#ifdef FPGA_DEBUG
++#define PRINTF(fmt,args...) printf (fmt ,##args)
++#else
++#define PRINTF(fmt,args...)
++#endif
++
++/* Note: The assumption is that we cannot possibly run fast enough to
++ * overrun the device (the Slave Parallel mode can free run at 50MHz).
++ * If there is a need to operate slower, define CONFIG_FPGA_DELAY in
++ * the board config file to slow things down.
++ */
++#ifndef CONFIG_FPGA_DELAY
++#define CONFIG_FPGA_DELAY()
++#endif
++
++#ifndef CFG_FPGA_WAIT
++#define CFG_FPGA_WAIT CFG_HZ/10 /* 100 ms */
++#endif
++
++static int CYC2_ps_load( Altera_desc *desc, void *buf, size_t bsize );
++static int CYC2_ps_dump( Altera_desc *desc, void *buf, size_t bsize );
++/* static int CYC2_ps_info( Altera_desc *desc ); */
++static int CYC2_ps_reloc( Altera_desc *desc, ulong reloc_offset );
++
++/* ------------------------------------------------------------------------- */
++/* CYCLON2 Generic Implementation */
++int CYC2_load (Altera_desc * desc, void *buf, size_t bsize)
++{
++ int ret_val = FPGA_FAIL;
++
++ switch (desc->iface) {
++ case passive_serial:
++ PRINTF ("%s: Launching Passive Serial Loader\n", __FUNCTION__);
++ ret_val = CYC2_ps_load (desc, buf, bsize);
++ break;
++
++ /* Add new interface types here */
++
++ default:
++ printf ("%s: Unsupported interface type, %d\n",
++ __FUNCTION__, desc->iface);
++ }
++
++ return ret_val;
++}
++
++int CYC2_dump (Altera_desc * desc, void *buf, size_t bsize)
++{
++ int ret_val = FPGA_FAIL;
++
++ switch (desc->iface) {
++ case passive_serial:
++ PRINTF ("%s: Launching Passive Serial Dump\n", __FUNCTION__);
++ ret_val = CYC2_ps_dump (desc, buf, bsize);
++ break;
++
++ /* Add new interface types here */
++
++ default:
++ printf ("%s: Unsupported interface type, %d\n",
++ __FUNCTION__, desc->iface);
++ }
++
++ return ret_val;
++}
++
++int CYC2_info( Altera_desc *desc )
++{
++ return FPGA_SUCCESS;
++}
++
++int CYC2_reloc (Altera_desc * desc, ulong reloc_offset)
++{
++ int ret_val = FPGA_FAIL; /* assume a failure */
++
++ if (desc->family != Altera_CYC2) {
++ printf ("%s: Unsupported family type, %d\n",
++ __FUNCTION__, desc->family);
++ return FPGA_FAIL;
++ } else
++ switch (desc->iface) {
++ case passive_serial:
++ ret_val = CYC2_ps_reloc (desc, reloc_offset);
++ break;
++
++ /* Add new interface types here */
++
++ default:
++ printf ("%s: Unsupported interface type, %d\n",
++ __FUNCTION__, desc->iface);
++ }
++
++ return ret_val;
++}
++
++/* ------------------------------------------------------------------------- */
++/* CYCLON2 Passive Serial Generic Implementation */
++static int CYC2_ps_load (Altera_desc * desc, void *buf, size_t bsize)
++{
++ int ret_val = FPGA_FAIL; /* assume the worst */
++ Altera_CYC2_Passive_Serial_fns *fn = desc->iface_fns;
++ int ret = 0;
++
++ PRINTF ("%s: start with interface functions @ 0x%p\n",
++ __FUNCTION__, fn);
++
++ if (fn) {
++ int cookie = desc->cookie; /* make a local copy */
++ unsigned long ts; /* timestamp */
++
++ PRINTF ("%s: Function Table:\n"
++ "ptr:\t0x%p\n"
++ "struct: 0x%p\n"
++ "config:\t0x%p\n"
++ "status:\t0x%p\n"
++ "write:\t0x%p\n"
++ "done:\t0x%p\n\n",
++ __FUNCTION__, &fn, fn, fn->config, fn->status,
++ fn->write, fn->done);
++#ifdef CFG_FPGA_PROG_FEEDBACK
++ printf ("Loading FPGA Device %d...", cookie);
++#endif
++
++ /*
++ * Run the pre configuration function if there is one.
++ */
++ if (*fn->pre) {
++ (*fn->pre) (cookie);
++ }
++
++ /* Establish the initial state */
++ (*fn->config) (TRUE, TRUE, cookie); /* Assert nCONFIG */
++
++ udelay(2); /* T_cfg > 2us */
++
++ /* Wait for nSTATUS to be asserted */
++ ts = get_timer (0); /* get current time */
++ do {
++ CONFIG_FPGA_DELAY ();
++ if (get_timer (ts) > CFG_FPGA_WAIT) { /* check the time */
++ puts ("** Timeout waiting for STATUS to go high.\n");
++ (*fn->abort) (cookie);
++ return FPGA_FAIL;
++ }
++ } while (!(*fn->status) (cookie));
++
++ /* Get ready for the burn */
++ CONFIG_FPGA_DELAY ();
++
++ ret = (*fn->write) (buf, bsize, TRUE, cookie);
++ if (ret) {
++ puts ("** Write failed.\n");
++ (*fn->abort) (cookie);
++ return FPGA_FAIL;
++ }
++#ifdef CFG_FPGA_PROG_FEEDBACK
++ puts(" OK? ...");
++#endif
++
++ CONFIG_FPGA_DELAY ();
++
++#ifdef CFG_FPGA_PROG_FEEDBACK
++ putc (' '); /* terminate the dotted line */
++#endif
++
++ /*
++ * Checking FPGA's CONF_DONE signal - correctly booted ?
++ */
++
++ if ( ! (*fn->done) (cookie) ) {
++ puts ("** Booting failed! CONF_DONE is still deasserted.\n");
++ (*fn->abort) (cookie);
++ return (FPGA_FAIL);
++ }
++#ifdef CFG_FPGA_PROG_FEEDBACK
++ puts(" OK\n");
++#endif
++
++ ret_val = FPGA_SUCCESS;
++
++#ifdef CFG_FPGA_PROG_FEEDBACK
++ if (ret_val == FPGA_SUCCESS) {
++ puts ("Done.\n");
++ }
++ else {
++ puts ("Fail.\n");
++ }
++#endif
++ (*fn->post) (cookie);
++
++ } else {
++ printf ("%s: NULL Interface function table!\n", __FUNCTION__);
++ }
++
++ return ret_val;
++}
++
++static int CYC2_ps_dump (Altera_desc * desc, void *buf, size_t bsize)
++{
++ /* Readback is only available through the Slave Parallel and */
++ /* boundary-scan interfaces. */
++ printf ("%s: Passive Serial Dumping is unavailable\n",
++ __FUNCTION__);
++ return FPGA_FAIL;
++}
++
++static int CYC2_ps_reloc (Altera_desc * desc, ulong reloc_offset)
++{
++ int ret_val = FPGA_FAIL; /* assume the worst */
++ Altera_CYC2_Passive_Serial_fns *fn_r, *fn =
++ (Altera_CYC2_Passive_Serial_fns *) (desc->iface_fns);
++
++ if (fn) {
++ ulong addr;
++
++ /* Get the relocated table address */
++ addr = (ulong) fn + reloc_offset;
++ fn_r = (Altera_CYC2_Passive_Serial_fns *) addr;
++
++ if (!fn_r->relocated) {
++
++ if (memcmp (fn_r, fn,
++ sizeof (Altera_CYC2_Passive_Serial_fns))
++ == 0) {
++ /* good copy of the table, fix the descriptor pointer */
++ desc->iface_fns = fn_r;
++ } else {
++ PRINTF ("%s: Invalid function table at 0x%p\n",
++ __FUNCTION__, fn_r);
++ return FPGA_FAIL;
++ }
++
++ PRINTF ("%s: Relocating descriptor at 0x%p\n", __FUNCTION__,
++ desc);
++
++ addr = (ulong) (fn->pre) + reloc_offset;
++ fn_r->pre = (Altera_pre_fn) addr;
++
++ addr = (ulong) (fn->config) + reloc_offset;
++ fn_r->config = (Altera_config_fn) addr;
++
++ addr = (ulong) (fn->status) + reloc_offset;
++ fn_r->status = (Altera_status_fn) addr;
++
++ addr = (ulong) (fn->done) + reloc_offset;
++ fn_r->done = (Altera_done_fn) addr;
++
++ addr = (ulong) (fn->write) + reloc_offset;
++ fn_r->write = (Altera_write_fn) addr;
++
++ addr = (ulong) (fn->abort) + reloc_offset;
++ fn_r->abort = (Altera_abort_fn) addr;
++
++ addr = (ulong) (fn->post) + reloc_offset;
++ fn_r->post = (Altera_post_fn) addr;
++
++ fn_r->relocated = TRUE;
++
++ } else {
++ /* this table has already been moved */
++ /* XXX - should check to see if the descriptor is correct */
++ desc->iface_fns = fn_r;
++ }
++
++ ret_val = FPGA_SUCCESS;
++ } else {
++ printf ("%s: NULL Interface function table!\n", __FUNCTION__);
++ }
++
++ return ret_val;
++}
++
++#endif /* (CONFIG_FPGA & (CFG_ALTERA | CFG_CYCLON2)) */
+diff -Naupr u-boot-1.1.6/common/fpga.c u-boot-1.1.6-fsl-1/common/fpga.c
+--- u-boot-1.1.6/common/fpga.c 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/common/fpga.c 2006-11-30 12:34:13.000000000 -0600
+@@ -139,7 +139,7 @@ static int fpga_dev_info( int devnum )
+ printf( "Xilinx Device\nDescriptor @ 0x%p\n", desc );
+ ret_val = xilinx_info( desc->devdesc );
+ #else
+- fpga_no_sup( __FUNCTION__, "Xilinx devices" );
++ fpga_no_sup( (char *)__FUNCTION__, "Xilinx devices" );
+ #endif
+ break;
+ case fpga_altera:
+@@ -178,7 +178,7 @@ int fpga_reloc( fpga_type devtype, void
+ #if CONFIG_FPGA & CFG_FPGA_XILINX
+ ret_val = xilinx_reloc( desc, reloc_off );
+ #else
+- fpga_no_sup( __FUNCTION__, "Xilinx devices" );
++ fpga_no_sup( (char *)__FUNCTION__, "Xilinx devices" );
+ #endif
+ break;
+ case fpga_altera:
+@@ -271,7 +271,7 @@ int fpga_load( int devnum, void *buf, si
+ #if CONFIG_FPGA & CFG_FPGA_XILINX
+ ret_val = xilinx_load( desc->devdesc, buf, bsize );
+ #else
+- fpga_no_sup( __FUNCTION__, "Xilinx devices" );
++ fpga_no_sup( (char *)__FUNCTION__, "Xilinx devices" );
+ #endif
+ break;
+ case fpga_altera:
+@@ -304,7 +304,7 @@ int fpga_dump( int devnum, void *buf, si
+ #if CONFIG_FPGA & CFG_FPGA_XILINX
+ ret_val = xilinx_dump( desc->devdesc, buf, bsize );
+ #else
+- fpga_no_sup( __FUNCTION__, "Xilinx devices" );
++ fpga_no_sup( (char *)__FUNCTION__, "Xilinx devices" );
+ #endif
+ break;
+ case fpga_altera:
+diff -Naupr u-boot-1.1.6/common/Makefile u-boot-1.1.6-fsl-1/common/Makefile
+--- u-boot-1.1.6/common/Makefile 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/common/Makefile 2006-11-30 12:34:13.000000000 -0600
+@@ -41,7 +41,7 @@ COBJS = main.o ACEX1K.o altera.o bedbug.
+ cmd_pci.o cmd_pcmcia.o cmd_portio.o \
+ cmd_reginfo.o cmd_reiser.o cmd_scsi.o cmd_spi.o cmd_universe.o \
+ cmd_usb.o cmd_vfd.o \
+- command.o console.o devices.o dlmalloc.o docecc.o \
++ command.o console.o cyclon2.o devices.o dlmalloc.o docecc.o \
+ environment.o env_common.o \
+ env_nand.o env_dataflash.o env_flash.o env_eeprom.o \
+ env_nvram.o env_nowhere.o \
+diff -Naupr u-boot-1.1.6/common/memsize.c u-boot-1.1.6-fsl-1/common/memsize.c
+--- u-boot-1.1.6/common/memsize.c 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/common/memsize.c 2006-11-30 12:34:13.000000000 -0600
+@@ -21,6 +21,16 @@
+ * MA 02111-1307 USA
+ */
+
++#include <config.h>
++#ifdef __PPC__
++/*
++ * At least on G2 PowerPC cores, sequential accesses to non-existent
++ * memory must be synchronized.
++ */
++# include <asm/io.h> /* for sync() */
++#else
++# define sync() /* nothing */
++#endif
+
+ /*
+ * Check memory range for valid RAM. A simple memory test determines
+@@ -38,20 +48,27 @@ long get_ram_size(volatile long *base, l
+
+ for (cnt = (maxsize / sizeof (long)) >> 1; cnt > 0; cnt >>= 1) {
+ addr = base + cnt; /* pointer arith! */
++ sync ();
+ save[i++] = *addr;
++ sync ();
+ *addr = ~cnt;
+ }
+
+ addr = base;
++ sync ();
+ save[i] = *addr;
++ sync ();
+ *addr = 0;
+
++ sync ();
+ if ((val = *addr) != 0) {
+ /* Restore the original data before leaving the function.
+ */
++ sync ();
+ *addr = save[i];
+ for (cnt = 1; cnt < maxsize / sizeof(long); cnt <<= 1) {
+ addr = base + cnt;
++ sync ();
+ *addr = save[--i];
+ }
+ return (0);
+diff -Naupr u-boot-1.1.6/cpu/74xx_7xx/cpu.c u-boot-1.1.6-fsl-1/cpu/74xx_7xx/cpu.c
+--- u-boot-1.1.6/cpu/74xx_7xx/cpu.c 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/cpu/74xx_7xx/cpu.c 2006-12-06 10:33:49.000000000 -0600
+@@ -101,6 +101,10 @@ get_cpu_type(void)
+ type = CPU_7457;
+ break;
+
++ case 0x8004:
++ type = CPU_7448;
++ break;
++
+ default:
+ break;
+ }
+@@ -152,6 +156,10 @@ int checkcpu (void)
+ str = "MPC7410";
+ break;
+
++ case CPU_7448:
++ str = "MPC7448";
++ break;
++
+ case CPU_7450:
+ str = "MPC7450";
+ break;
+@@ -221,7 +229,7 @@ soft_restart(unsigned long addr)
+ void
+ do_reset (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
+ {
+- ulong addr;
++ ulong addr;
+ /* flush and disable I/D cache */
+ __asm__ __volatile__ ("mfspr 3, 1008" ::: "r3");
+ __asm__ __volatile__ ("ori 5, 5, 0xcc00" ::: "r5");
+diff -Naupr u-boot-1.1.6/cpu/74xx_7xx/cpu_init.c u-boot-1.1.6-fsl-1/cpu/74xx_7xx/cpu_init.c
+--- u-boot-1.1.6/cpu/74xx_7xx/cpu_init.c 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/cpu/74xx_7xx/cpu_init.c 2006-12-06 10:33:49.000000000 -0600
+@@ -43,6 +43,7 @@ cpu_init_f (void)
+ case CPU_7450:
+ case CPU_7455:
+ case CPU_7457:
++ case CPU_7448:
+ /* enable the timebase bit in HID0 */
+ set_hid0(get_hid0() | 0x4000000);
+ break;
+diff -Naupr u-boot-1.1.6/cpu/74xx_7xx/speed.c u-boot-1.1.6-fsl-1/cpu/74xx_7xx/speed.c
+--- u-boot-1.1.6/cpu/74xx_7xx/speed.c 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/cpu/74xx_7xx/speed.c 2006-12-06 10:33:49.000000000 -0600
+@@ -91,6 +91,7 @@ int get_clocks (void)
+
+ /* calculate the clock frequency based upon the CPU type */
+ switch (get_cpu_type()) {
++ case CPU_7448:
+ case CPU_7455:
+ case CPU_7457:
+ /*
+diff -Naupr u-boot-1.1.6/cpu/74xx_7xx/start.S u-boot-1.1.6-fsl-1/cpu/74xx_7xx/start.S
+--- u-boot-1.1.6/cpu/74xx_7xx/start.S 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/cpu/74xx_7xx/start.S 2006-12-06 10:33:49.000000000 -0600
+@@ -44,7 +44,8 @@
+
+ #if !defined(CONFIG_DB64360) && \
+ !defined(CONFIG_DB64460) && \
+- !defined(CONFIG_CPCI750)
++ !defined(CONFIG_CPCI750) && \
++ !defined(CONFIG_P3Mx)
+ #include <galileo/gt64260R.h>
+ #endif
+
+@@ -270,7 +271,7 @@ in_flash:
+ * gt-regs BAT can be reused after board_init_f calls
+ * board_early_init_f (EVB only).
+ */
+-#if !defined(CONFIG_BAB7xx) && !defined(CONFIG_ELPPC)
++#if !defined(CONFIG_BAB7xx) && !defined(CONFIG_ELPPC) && !defined(CONFIG_P3Mx)
+ /* enable address translation */
+ bl enable_addr_trans
+ sync
+@@ -757,7 +758,8 @@ in_ram:
+ defined(CONFIG_DB64360) || \
+ defined(CONFIG_DB64460) || \
+ defined(CONFIG_CPCI750) || \
+- defined(CONFIG_PPMC7XX)
++ defined(CONFIG_PPMC7XX) || \
++ defined(CONFIG_P3Mx)
+ mr r4, r9 /* Use RAM copy of the global data */
+ #endif
+ bl after_reloc
+diff -Naupr u-boot-1.1.6/cpu/mpc5xxx/cpu.c u-boot-1.1.6-fsl-1/cpu/mpc5xxx/cpu.c
+--- u-boot-1.1.6/cpu/mpc5xxx/cpu.c 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/cpu/mpc5xxx/cpu.c 2006-12-06 10:33:49.000000000 -0600
+@@ -31,6 +31,10 @@
+ #include <mpc5xxx.h>
+ #include <asm/processor.h>
+
++#if defined(CONFIG_OF_FLAT_TREE)
++#include <ft_build.h>
++#endif
++
+ DECLARE_GLOBAL_DATA_PTR;
+
+ int checkcpu (void)
+@@ -102,3 +106,26 @@ unsigned long get_tbclk (void)
+ }
+
+ /* ------------------------------------------------------------------------- */
++
++#ifdef CONFIG_OF_FLAT_TREE
++void
++ft_cpu_setup(void *blob, bd_t *bd)
++{
++ u32 *p;
++ int len;
++
++ /* Core XLB bus frequency */
++ p = ft_get_prop(blob, "/cpus/" OF_CPU "/bus-frequency", &len);
++ if (p != NULL)
++ *p = cpu_to_be32(bd->bi_busfreq);
++
++ /* SOC peripherals use the IPB bus frequency */
++ p = ft_get_prop(blob, "/" OF_SOC "/bus-frequency", &len);
++ if (p != NULL)
++ *p = cpu_to_be32(bd->bi_ipbfreq);
++
++ p = ft_get_prop(blob, "/" OF_SOC "/ethernet@3000/mac-address", &len);
++ if (p != NULL)
++ memcpy(p, bd->bi_enetaddr, 6);
++}
++#endif
+diff -Naupr u-boot-1.1.6/cpu/mpc83xx/cpu.c u-boot-1.1.6-fsl-1/cpu/mpc83xx/cpu.c
+--- u-boot-1.1.6/cpu/mpc83xx/cpu.c 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/cpu/mpc83xx/cpu.c 2006-11-30 12:34:13.000000000 -0600
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright 2004 Freescale Semiconductor, Inc.
++ * Copyright (C) 2004-2006 Freescale Semiconductor, Inc.
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+@@ -18,11 +18,6 @@
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+- *
+- * Change log:
+- *
+- * 20050101: Eran Liberty (liberty@freescale.com)
+- * Initial file creating (porting from 85XX & 8260)
+ */
+
+ /*
+@@ -43,35 +38,140 @@ DECLARE_GLOBAL_DATA_PTR;
+
+ int checkcpu(void)
+ {
++ volatile immap_t *immr;
+ ulong clock = gd->cpu_clk;
+ u32 pvr = get_pvr();
++ u32 spridr;
+ char buf[32];
+
++ immr = (immap_t *)CFG_IMMR;
++
+ if ((pvr & 0xFFFF0000) != PVR_83xx) {
+ puts("Not MPC83xx Family!!!\n");
+ return -1;
+ }
+
+- puts("CPU: MPC83xx, ");
+- switch(pvr) {
+- case PVR_8349_REV10:
++ spridr = immr->sysconf.spridr;
++ puts("CPU: ");
++ switch(spridr) {
++ case SPR_8349E_REV10:
++ case SPR_8349E_REV11:
++ puts("MPC8349E, ");
++ break;
++ case SPR_8349_REV10:
++ case SPR_8349_REV11:
++ puts("MPC8349, ");
++ break;
++ case SPR_8347E_REV10_TBGA:
++ case SPR_8347E_REV11_TBGA:
++ case SPR_8347E_REV10_PBGA:
++ case SPR_8347E_REV11_PBGA:
++ puts("MPC8347E, ");
++ break;
++ case SPR_8347_REV10_TBGA:
++ case SPR_8347_REV11_TBGA:
++ case SPR_8347_REV10_PBGA:
++ case SPR_8347_REV11_PBGA:
++ puts("MPC8347, ");
++ break;
++ case SPR_8343E_REV10:
++ case SPR_8343E_REV11:
++ puts("MPC8343E, ");
+ break;
+- case PVR_8349_REV11:
++ case SPR_8343_REV10:
++ case SPR_8343_REV11:
++ puts("MPC8343, ");
++ break;
++ case SPR_8360E_REV10:
++ case SPR_8360E_REV11:
++ case SPR_8360E_REV12:
++ puts("MPC8360E, ");
++ break;
++ case SPR_8360_REV10:
++ case SPR_8360_REV11:
++ case SPR_8360_REV12:
++ puts("MPC8360, ");
+ break;
+ default:
+ puts("Rev: Unknown\n");
+ return -1; /* Not sure what this is */
+ }
+- printf("Rev: %d.%d at %s MHz\n", (pvr & 0xf0) >> 4,
+- (pvr & 0x0f), strmhz(buf, clock));
+
++#if defined(CONFIG_MPC8349)
++ printf("Rev: %02x at %s MHz\n", (spridr & 0x0000FFFF)>>4 |(spridr & 0x0000000F), strmhz(buf, clock));
++#else
++ printf("Rev: %02x at %s MHz\n", spridr & 0x0000FFFF, strmhz(buf, clock));
++#endif
+ return 0;
+ }
+
+
++/*
++ * Program a UPM with the code supplied in the table.
++ *
++ * The 'dummy' variable is used to increment the MAD. 'dummy' is
++ * supposed to be a pointer to the memory of the device being
++ * programmed by the UPM. The data in the MDR is written into
++ * memory and the MAD is incremented every time there's a read
++ * from 'dummy'. Unfortunately, the current prototype for this
++ * function doesn't allow for passing the address of this
++ * device, and changing the prototype will break a number lots
++ * of other code, so we need to use a round-about way of finding
++ * the value for 'dummy'.
++ *
++ * The value can be extracted from the base address bits of the
++ * Base Register (BR) associated with the specific UPM. To find
++ * that BR, we need to scan all 8 BRs until we find the one that
++ * has its MSEL bits matching the UPM we want. Once we know the
++ * right BR, we can extract the base address bits from it.
++ *
++ * The MxMR and the BR and OR of the chosen bank should all be
++ * configured before calling this function.
++ *
++ * Parameters:
++ * upm: 0=UPMA, 1=UPMB, 2=UPMC
++ * table: Pointer to an array of values to program
++ * size: Number of elements in the array. Must be 64 or less.
++ */
+ void upmconfig (uint upm, uint *table, uint size)
+ {
+- hang(); /* FIXME: upconfig() needed? */
++#if defined(CONFIG_MPC834X)
++ volatile immap_t *immap = (immap_t *) CFG_IMMR;
++ volatile lbus83xx_t *lbus = &immap->lbus;
++ volatile uchar *dummy = NULL;
++ const u32 msel = (upm + 4) << BR_MSEL_SHIFT; /* What the MSEL field in BRn should be */
++ volatile u32 *mxmr = &lbus->mamr + upm; /* Pointer to mamr, mbmr, or mcmr */
++ uint i;
++
++ /* Scan all the banks to determine the base address of the device */
++ for (i = 0; i < 8; i++) {
++ if ((lbus->bank[i].br & BR_MSEL) == msel) {
++ dummy = (uchar *) (lbus->bank[i].br & BR_BA);
++ break;
++ }
++ }
++
++ if (!dummy) {
++ printf("Error: %s() could not find matching BR\n", __FUNCTION__);
++ hang();
++ }
++
++ /* Set the OP field in the MxMR to "write" and the MAD field to 000000 */
++ *mxmr = (*mxmr & 0xCFFFFFC0) | 0x10000000;
++
++ for (i = 0; i < size; i++) {
++ lbus->mdr = table[i];
++ __asm__ __volatile__ ("sync");
++ *dummy; /* Write the value to memory and increment MAD */
++ __asm__ __volatile__ ("sync");
++ }
++
++ /* Set the OP field in the MxMR to "normal" and the MAD field to 000000 */
++ *mxmr &= 0xCFFFFFC0;
++#else
++ printf("Error: %s() not defined for this configuration.\n", __FUNCTION__);
++ hang();
++#endif
+ }
+
+
+@@ -83,7 +183,7 @@ do_reset (cmd_tbl_t * cmdtp, int flag, i
+ ulong addr;
+ #endif
+
+- volatile immap_t *immap = (immap_t *) CFG_IMMRBAR;
++ volatile immap_t *immap = (immap_t *) CFG_IMMR;
+
+ #ifdef MPC83xx_RESET
+ /* Interrupts and MMU off */
+@@ -150,9 +250,21 @@ unsigned long get_tbclk(void)
+ #if defined(CONFIG_WATCHDOG)
+ void watchdog_reset (void)
+ {
+- hang(); /* FIXME: implement watchdog_reset()? */
++#ifdef CONFIG_MPC834X
++ int re_enable = disable_interrupts();
++
++ /* Reset the 83xx watchdog */
++ volatile immap_t *immr = (immap_t *) CFG_IMMR;
++ immr->wdt.swsrr = 0x556c;
++ immr->wdt.swsrr = 0xaa39;
++
++ if (re_enable)
++ enable_interrupts ();
++#else
++ hang();
++#endif
+ }
+-#endif /* CONFIG_WATCHDOG */
++#endif
+
+ #if defined(CONFIG_OF_FLAT_TREE)
+ void
+@@ -180,12 +292,12 @@ ft_cpu_setup(void *blob, bd_t *bd)
+ *p = cpu_to_be32(clock);
+
+ #ifdef CONFIG_MPC83XX_TSEC1
+- p = ft_get_prop(blob, "/" OF_SOC "/ethernet@24000/address", &len);
++ p = ft_get_prop(blob, "/" OF_SOC "/ethernet@24000/local-mac-address", &len);
+ memcpy(p, bd->bi_enetaddr, 6);
+ #endif
+
+ #ifdef CONFIG_MPC83XX_TSEC2
+- p = ft_get_prop(blob, "/" OF_SOC "/ethernet@25000/address", &len);
++ p = ft_get_prop(blob, "/" OF_SOC "/ethernet@25000/local-mac-address", &len);
+ memcpy(p, bd->bi_enet1addr, 6);
+ #endif
+ }
+@@ -194,8 +306,8 @@ ft_cpu_setup(void *blob, bd_t *bd)
+ #if defined(CONFIG_DDR_ECC)
+ void dma_init(void)
+ {
+- volatile immap_t *immap = (immap_t *)CFG_IMMRBAR;
+- volatile dma8349_t *dma = &immap->dma;
++ volatile immap_t *immap = (immap_t *)CFG_IMMR;
++ volatile dma83xx_t *dma = &immap->dma;
+ volatile u32 status = swab32(dma->dmasr0);
+ volatile u32 dmamr0 = swab32(dma->dmamr0);
+
+@@ -225,8 +337,8 @@ void dma_init(void)
+
+ uint dma_check(void)
+ {
+- volatile immap_t *immap = (immap_t *)CFG_IMMRBAR;
+- volatile dma8349_t *dma = &immap->dma;
++ volatile immap_t *immap = (immap_t *)CFG_IMMR;
++ volatile dma83xx_t *dma = &immap->dma;
+ volatile u32 status = swab32(dma->dmasr0);
+ volatile u32 byte_count = swab32(dma->dmabcr0);
+
+@@ -244,8 +356,8 @@ uint dma_check(void)
+
+ int dma_xfer(void *dest, u32 count, void *src)
+ {
+- volatile immap_t *immap = (immap_t *)CFG_IMMRBAR;
+- volatile dma8349_t *dma = &immap->dma;
++ volatile immap_t *immap = (immap_t *)CFG_IMMR;
++ volatile dma83xx_t *dma = &immap->dma;
+ volatile u32 dmamr0;
+
+ /* initialize DMASARn, DMADAR and DMAABCRn */
+diff -Naupr u-boot-1.1.6/cpu/mpc83xx/cpu_init.c u-boot-1.1.6-fsl-1/cpu/mpc83xx/cpu_init.c
+--- u-boot-1.1.6/cpu/mpc83xx/cpu_init.c 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/cpu/mpc83xx/cpu_init.c 2006-11-30 12:34:13.000000000 -0600
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright 2004 Freescale Semiconductor, Inc.
++ * Copyright (C) 2004-2006 Freescale Semiconductor, Inc.
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+@@ -18,11 +18,6 @@
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+- *
+- * Change log:
+- *
+- * 20050101: Eran Liberty (liberty@freescale.com)
+- * Initial file creating (porting from 85XX & 8260)
+ */
+
+ #include <common.h>
+@@ -31,6 +26,30 @@
+
+ DECLARE_GLOBAL_DATA_PTR;
+
++#ifdef CONFIG_QE
++extern qe_iop_conf_t qe_iop_conf_tab[];
++extern void qe_config_iopin(u8 port, u8 pin, int dir,
++ int open_drain, int assign);
++extern void qe_init(uint qe_base);
++extern void qe_reset(void);
++
++static void config_qe_ioports(void)
++{
++ u8 port, pin;
++ int dir, open_drain, assign;
++ int i;
++
++ for (i = 0; qe_iop_conf_tab[i].assign != QE_IOP_TAB_END; i++) {
++ port = qe_iop_conf_tab[i].port;
++ pin = qe_iop_conf_tab[i].pin;
++ dir = qe_iop_conf_tab[i].dir;
++ open_drain = qe_iop_conf_tab[i].open_drain;
++ assign = qe_iop_conf_tab[i].assign;
++ qe_config_iopin(port, pin, dir, open_drain, assign);
++ }
++}
++#endif
++
+ /*
+ * Breathe some life into the CPU...
+ *
+@@ -46,6 +65,37 @@ void cpu_init_f (volatile immap_t * im)
+ /* Clear initial global data */
+ memset ((void *) gd, 0, sizeof (gd_t));
+
++ /* system performance tweaking */
++
++#ifdef CFG_ACR_PIPE_DEP
++ /* Arbiter pipeline depth */
++ im->arbiter.acr = (im->arbiter.acr & ~ACR_PIPE_DEP) | (3 << ACR_PIPE_DEP_SHIFT);
++#endif
++
++#ifdef CFG_SPCR_TSEC1EP
++ /* TSEC1 Emergency priority */
++ im->sysconf.spcr = (im->sysconf.spcr & ~SPCR_TSEC1EP) | (3 << SPCR_TSEC1EP_SHIFT);
++#endif
++
++#ifdef CFG_SPCR_TSEC2EP
++ /* TSEC2 Emergency priority */
++ im->sysconf.spcr = (im->sysconf.spcr & ~SPCR_TSEC2EP) | (3 << SPCR_TSEC2EP_SHIFT);
++#endif
++
++#ifdef CFG_SCCR_TSEC1CM
++ /* TSEC1 clock mode */
++ im->clk.sccr = (im->clk.sccr & ~SCCR_TSEC1CM) | (1 << SCCR_TSEC1CM_SHIFT);
++#endif
++#ifdef CFG_SCCR_TSEC2CM
++ /* TSEC2 & I2C1 clock mode */
++ im->clk.sccr = (im->clk.sccr & ~SCCR_TSEC2CM) | (1 << SCCR_TSEC2CM_SHIFT);
++#endif
++
++#ifdef CFG_ACR_RPTCNT
++ /* Arbiter repeat count */
++ im->arbiter.acr = ((im->arbiter.acr & ~(ACR_RPTCNT)) | (3 << ACR_RPTCNT_SHIFT));
++#endif
++
+ /* RSR - Reset Status Register - clear all status (4.6.1.3) */
+ gd->reset_status = im->reset.rsr;
+ im->reset.rsr = ~(RSR_RES);
+@@ -69,6 +119,10 @@ void cpu_init_f (volatile immap_t * im)
+ #ifdef CFG_SICRL
+ im->sysconf.sicrl = CFG_SICRL;
+ #endif
++#ifdef CONFIG_QE
++ /* Config QE ioports */
++ config_qe_ioports();
++#endif
+
+ /*
+ * Memory Controller:
+@@ -157,12 +211,12 @@ void cpu_init_f (volatile immap_t * im)
+ #endif
+ }
+
+-
+-/*
+- * Initialize higher level parts of CPU like time base and timers.
+- */
+-
+ int cpu_init_r (void)
+ {
++#ifdef CONFIG_QE
++ uint qe_base = CFG_IMMR + 0x00100000; /* QE immr base */
++ qe_init(qe_base);
++ qe_reset();
++#endif
+ return 0;
+ }
+diff -Naupr u-boot-1.1.6/cpu/mpc83xx/i2c.c u-boot-1.1.6-fsl-1/cpu/mpc83xx/i2c.c
+--- u-boot-1.1.6/cpu/mpc83xx/i2c.c 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/cpu/mpc83xx/i2c.c 1969-12-31 18:00:00.000000000 -0600
+@@ -1,253 +0,0 @@
+-/*
+- * (C) Copyright 2003,Motorola Inc.
+- * Xianghua Xiao <x.xiao@motorola.com>
+- * Adapted for Motorola 85xx chip.
+- *
+- * (C) Copyright 2003
+- * Gleb Natapov <gnatapov@mrv.com>
+- * Some bits are taken from linux driver writen by adrian@humboldt.co.uk
+- *
+- * Hardware I2C driver for MPC107 PCI bridge.
+- *
+- * See file CREDITS for list of people who contributed to this
+- * project.
+- *
+- * 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
+- *
+- * Change log:
+- *
+- * 20050101: Eran Liberty (liberty@freescale.com)
+- * Initial file creating (porting from 85XX & 8260)
+- */
+-
+-#include <common.h>
+-#include <command.h>
+-#include <asm/io.h>
+-
+-#ifdef CONFIG_HARD_I2C
+-#include <i2c.h>
+-#include <asm/i2c.h>
+-
+-#if defined(CONFIG_MPC8349EMDS) || defined(CONFIG_TQM834X)
+-i2c_t * mpc8349_i2c = (i2c_t*)(CFG_IMMRBAR + CFG_I2C_OFFSET);
+-#endif
+-
+-void
+-i2c_init(int speed, int slaveadd)
+-{
+- /* stop I2C controller */
+- writeb(0x00 , &I2C->cr);
+-
+- /* set clock */
+- writeb(0x3f, &I2C->fdr);
+-
+- /* set default filter */
+- writeb(0x10,&I2C->dfsrr);
+-
+- /* write slave address */
+- writeb(slaveadd, &I2C->adr);
+-
+- /* clear status register */
+- writeb(0x00, &I2C->sr);
+-
+- /* start I2C controller */
+- writeb(I2C_CR_MEN, &I2C->cr);
+-}
+-
+-static __inline__ int
+-i2c_wait4bus (void)
+-{
+- ulong timeval = get_timer (0);
+- while (readb(&I2C->sr) & I2C_SR_MBB) {
+- if (get_timer (timeval) > I2C_TIMEOUT) {
+- return -1;
+- }
+- }
+- return 0;
+-}
+-
+-static __inline__ int
+-i2c_wait (int write)
+-{
+- u32 csr;
+- ulong timeval = get_timer(0);
+- do {
+- csr = readb(&I2C->sr);
+-
+- if (!(csr & I2C_SR_MIF))
+- continue;
+-
+- writeb(0x0, &I2C->sr);
+-
+- if (csr & I2C_SR_MAL) {
+- debug("i2c_wait: MAL\n");
+- return -1;
+- }
+-
+- if (!(csr & I2C_SR_MCF)) {
+- debug("i2c_wait: unfinished\n");
+- return -1;
+- }
+-
+- if (write == I2C_WRITE && (csr & I2C_SR_RXAK)) {
+- debug("i2c_wait: No RXACK\n");
+- return -1;
+- }
+-
+- return 0;
+- } while (get_timer (timeval) < I2C_TIMEOUT);
+-
+- debug("i2c_wait: timed out\n");
+- return -1;
+-}
+-
+-static __inline__ int
+-i2c_write_addr (u8 dev, u8 dir, int rsta)
+-{
+- writeb(I2C_CR_MEN | I2C_CR_MSTA | I2C_CR_MTX |
+- (rsta?I2C_CR_RSTA:0),
+- &I2C->cr);
+-
+- writeb((dev << 1) | dir, &I2C->dr);
+-
+- if (i2c_wait (I2C_WRITE) < 0)
+- return 0;
+- return 1;
+-}
+-
+-static __inline__ int
+-__i2c_write (u8 *data, int length)
+-{
+- int i;
+-
+- writeb(I2C_CR_MEN | I2C_CR_MSTA | I2C_CR_MTX,
+- &I2C->cr);
+-
+- for (i=0; i < length; i++) {
+- writeb(data[i], &I2C->dr);
+-
+- if (i2c_wait (I2C_WRITE) < 0)
+- break;
+- }
+- return i;
+-}
+-
+-static __inline__ int
+-__i2c_read (u8 *data, int length)
+-{
+- int i;
+-
+- writeb(I2C_CR_MEN | I2C_CR_MSTA |
+- ((length == 1) ? I2C_CR_TXAK : 0),
+- &I2C->cr);
+-
+- /* dummy read */
+- readb(&I2C->dr);
+-
+- for (i=0; i < length; i++) {
+- if (i2c_wait (I2C_READ) < 0)
+- break;
+-
+- /* Generate ack on last next to last byte */
+- if (i == length - 2)
+- writeb(I2C_CR_MEN | I2C_CR_MSTA |
+- I2C_CR_TXAK,
+- &I2C->cr);
+-
+- /* Generate stop on last byte */
+- if (i == length - 1)
+- writeb(I2C_CR_MEN | I2C_CR_TXAK, &I2C->cr);
+-
+- data[i] = readb(&I2C->dr);
+- }
+- return i;
+-}
+-
+-int
+-i2c_read (u8 dev, uint addr, int alen, u8 *data, int length)
+-{
+- int i = 0;
+- u8 *a = (u8*)&addr;
+-
+- if (i2c_wait4bus () < 0)
+- goto exit;
+-
+- if (i2c_write_addr (dev, I2C_WRITE, 0) == 0)
+- goto exit;
+-
+- if (__i2c_write (&a[4 - alen], alen) != alen)
+- goto exit;
+-
+- if (i2c_write_addr (dev, I2C_READ, 1) == 0)
+- goto exit;
+-
+- i = __i2c_read (data, length);
+-
+- exit:
+- writeb(I2C_CR_MEN, &I2C->cr);
+- return !(i == length);
+-}
+-
+-int
+-i2c_write (u8 dev, uint addr, int alen, u8 *data, int length)
+-{
+- int i = 0;
+- u8 *a = (u8*)&addr;
+-
+- if (i2c_wait4bus () < 0)
+- goto exit;
+-
+- if (i2c_write_addr (dev, I2C_WRITE, 0) == 0)
+- goto exit;
+-
+- if (__i2c_write (&a[4 - alen], alen) != alen)
+- goto exit;
+-
+- i = __i2c_write (data, length);
+-
+- exit:
+- writeb(I2C_CR_MEN, &I2C->cr);
+- return !(i == length);
+-}
+-
+-int i2c_probe (uchar chip)
+-{
+- int tmp;
+-
+- /*
+- * Try to read the first location of the chip. The underlying
+- * driver doesn't appear to support sending just the chip address
+- * and looking for an <ACK> back.
+- */
+- udelay(10000);
+- return i2c_read (chip, 0, 1, (uchar *)&tmp, 1);
+-}
+-
+-uchar i2c_reg_read (uchar i2c_addr, uchar reg)
+-{
+- uchar buf[1];
+-
+- i2c_read (i2c_addr, reg, 1, buf, 1);
+-
+- return (buf[0]);
+-}
+-
+-void i2c_reg_write (uchar i2c_addr, uchar reg, uchar val)
+-{
+- i2c_write (i2c_addr, reg, 1, &val, 1);
+-}
+-
+-#endif /* CONFIG_HARD_I2C */
+diff -Naupr u-boot-1.1.6/cpu/mpc83xx/interrupts.c u-boot-1.1.6-fsl-1/cpu/mpc83xx/interrupts.c
+--- u-boot-1.1.6/cpu/mpc83xx/interrupts.c 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/cpu/mpc83xx/interrupts.c 2006-11-30 12:34:13.000000000 -0600
+@@ -21,13 +21,6 @@
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+- *
+- * Change log:
+- *
+- * Hacked for MPC8260 by Murray.Jensen@cmst.csiro.au, 22-Oct-00
+- *
+- * 20050101: Eran Liberty (liberty@freescale.com)
+- * Initial file creating (porting from 85XX & 8260)
+ */
+
+ #include <common.h>
+@@ -45,7 +38,7 @@ struct irq_action {
+
+ int interrupt_init_cpu (unsigned *decrementer_count)
+ {
+- volatile immap_t *immr = (immap_t *) CFG_IMMRBAR;
++ volatile immap_t *immr = (immap_t *) CFG_IMMR;
+
+ *decrementer_count = (gd->bus_clk / 4) / CFG_HZ;
+
+diff -Naupr u-boot-1.1.6/cpu/mpc83xx/Makefile u-boot-1.1.6-fsl-1/cpu/mpc83xx/Makefile
+--- u-boot-1.1.6/cpu/mpc83xx/Makefile 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/cpu/mpc83xx/Makefile 2006-11-10 11:24:29.000000000 -0600
+@@ -27,9 +27,9 @@ include $(TOPDIR)/config.mk
+
+ LIB = $(obj)lib$(CPU).a
+
+-START = start.o resetvec.o
++START = start.o
+ COBJS = traps.o cpu.o cpu_init.o speed.o interrupts.o \
+- i2c.o spd_sdram.o
++ spd_sdram.o qe_io.o
+
+ SRCS := $(START:.o=.S) $(SOBJS:.o=.S) $(COBJS:.o=.c)
+ OBJS := $(addprefix $(obj),$(SOBJS) $(COBJS))
+diff -Naupr u-boot-1.1.6/cpu/mpc83xx/qe_io.c u-boot-1.1.6-fsl-1/cpu/mpc83xx/qe_io.c
+--- u-boot-1.1.6/cpu/mpc83xx/qe_io.c 1969-12-31 18:00:00.000000000 -0600
++++ u-boot-1.1.6-fsl-1/cpu/mpc83xx/qe_io.c 2006-11-10 11:24:29.000000000 -0600
+@@ -0,0 +1,85 @@
++/*
++ * Copyright (C) 2006 Freescale Semiconductor, Inc.
++ *
++ * Dave Liu <daveliu@freescale.com>
++ * based on source code of Shlomi Gridish
++ *
++ * 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
++ */
++
++#include "common.h"
++#include "asm/errno.h"
++#include "asm/io.h"
++#include "asm/immap_83xx.h"
++
++#if defined(CONFIG_QE)
++#define NUM_OF_PINS 32
++void qe_config_iopin(u8 port, u8 pin, int dir, int open_drain, int assign)
++{
++ u32 pin_2bit_mask;
++ u32 pin_2bit_dir;
++ u32 pin_2bit_assign;
++ u32 pin_1bit_mask;
++ u32 tmp_val;
++ volatile immap_t *im = (volatile immap_t *)CFG_IMMR;
++ volatile gpio83xx_t *par_io =(volatile gpio83xx_t *)&im->gpio;
++
++ /* Caculate pin location and 2bit mask and dir */
++ pin_2bit_mask = (u32)(0x3 << (NUM_OF_PINS-(pin%(NUM_OF_PINS/2)+1)*2));
++ pin_2bit_dir = (u32)(dir << (NUM_OF_PINS-(pin%(NUM_OF_PINS/2)+1)*2));
++
++ /* Setup the direction */
++ tmp_val = (pin > (NUM_OF_PINS/2) - 1) ? \
++ in_be32(&par_io->ioport[port].dir2) :
++ in_be32(&par_io->ioport[port].dir1);
++
++ if (pin > (NUM_OF_PINS/2) -1) {
++ out_be32(&par_io->ioport[port].dir2, ~pin_2bit_mask & tmp_val);
++ out_be32(&par_io->ioport[port].dir2, pin_2bit_dir | tmp_val);
++ } else {
++ out_be32(&par_io->ioport[port].dir1, ~pin_2bit_mask & tmp_val);
++ out_be32(&par_io->ioport[port].dir1, pin_2bit_dir | tmp_val);
++ }
++
++ /* Calculate pin location for 1bit mask */
++ pin_1bit_mask = (u32)(1 << (NUM_OF_PINS - (pin+1)));
++
++ /* Setup the open drain */
++ tmp_val = in_be32(&par_io->ioport[port].podr);
++ if (open_drain) {
++ out_be32(&par_io->ioport[port].podr, pin_1bit_mask | tmp_val);
++ } else {
++ out_be32(&par_io->ioport[port].podr, ~pin_1bit_mask & tmp_val);
++ }
++
++ /* Setup the assignment */
++ tmp_val = (pin > (NUM_OF_PINS/2) - 1) ?
++ in_be32(&par_io->ioport[port].ppar2):
++ in_be32(&par_io->ioport[port].ppar1);
++ pin_2bit_assign = (u32)(assign
++ << (NUM_OF_PINS - (pin%(NUM_OF_PINS/2)+1)*2));
++
++ /* Clear and set 2 bits mask */
++ if (pin > (NUM_OF_PINS/2) - 1) {
++ out_be32(&par_io->ioport[port].ppar2, ~pin_2bit_mask & tmp_val);
++ out_be32(&par_io->ioport[port].ppar2, pin_2bit_assign | tmp_val);
++ } else {
++ out_be32(&par_io->ioport[port].ppar1, ~pin_2bit_mask & tmp_val);
++ out_be32(&par_io->ioport[port].ppar1, pin_2bit_assign | tmp_val);
++ }
++}
++
++#endif /* CONFIG_QE */
+diff -Naupr u-boot-1.1.6/cpu/mpc83xx/resetvec.S u-boot-1.1.6-fsl-1/cpu/mpc83xx/resetvec.S
+--- u-boot-1.1.6/cpu/mpc83xx/resetvec.S 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/cpu/mpc83xx/resetvec.S 1969-12-31 18:00:00.000000000 -0600
+@@ -1,6 +0,0 @@
+- .section .resetvec,"ax"
+-#ifndef FIXME
+-#if 0
+- b _start_e500
+-#endif
+-#endif
+diff -Naupr u-boot-1.1.6/cpu/mpc83xx/spd_sdram.c u-boot-1.1.6-fsl-1/cpu/mpc83xx/spd_sdram.c
+--- u-boot-1.1.6/cpu/mpc83xx/spd_sdram.c 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/cpu/mpc83xx/spd_sdram.c 2006-12-06 10:33:49.000000000 -0600
+@@ -1,8 +1,10 @@
+ /*
++ * (C) Copyright 2006 Freescale Semiconductor, Inc.
++ *
+ * (C) Copyright 2006
+ * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
+ *
+- * Copyright 2004 Freescale Semiconductor.
++ * Copyright (C) 2004-2006 Freescale Semiconductor, Inc.
+ * (C) Copyright 2003 Motorola Inc.
+ * Xianghua Xiao (X.Xiao@motorola.com)
+ *
+@@ -23,11 +25,6 @@
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+- *
+- * Change log:
+- *
+- * 20050101: Eran Liberty (liberty@freescale.com)
+- * Initial file creating (porting from 85XX & 8260)
+ */
+
+ #include <common.h>
+@@ -39,7 +36,9 @@
+
+ #ifdef CONFIG_SPD_EEPROM
+
+-#if defined(CONFIG_DDR_ECC)
++DECLARE_GLOBAL_DATA_PTR;
++
++#if defined(CONFIG_DDR_ECC) && !defined(CONFIG_ECC_INIT_VIA_DDRC)
+ extern void dma_init(void);
+ extern uint dma_check(void);
+ extern int dma_xfer(void *dest, uint count, void *src);
+@@ -52,16 +51,16 @@ extern int dma_xfer(void *dest, uint cou
+ /*
+ * Convert picoseconds into clock cycles (rounding up if needed).
+ */
+-
+ int
+ picos_to_clk(int picos)
+ {
++ unsigned int ddr_bus_clk;
+ int clks;
+
+- clks = picos / (2000000000 / (get_bus_freq(0) / 1000));
+- if (picos % (2000000000 / (get_bus_freq(0) / 1000)) != 0) {
+- clks++;
+- }
++ ddr_bus_clk = gd->ddr_clk >> 1;
++ clks = picos / ((1000000000 / ddr_bus_clk) * 1000);
++ if (picos % ((1000000000 / ddr_bus_clk) * 1000) != 0)
++ clks++;
+
+ return clks;
+ }
+@@ -103,33 +102,72 @@ static void spd_debug(spd_eeprom_t *spd)
+
+ long int spd_sdram()
+ {
+- volatile immap_t *immap = (immap_t *)CFG_IMMRBAR;
+- volatile ddr8349_t *ddr = &immap->ddr;
+- volatile law8349_t *ecm = &immap->sysconf.ddrlaw[0];
++ volatile immap_t *immap = (immap_t *)CFG_IMMR;
++ volatile ddr83xx_t *ddr = &immap->ddr;
++ volatile law83xx_t *ecm = &immap->sysconf.ddrlaw[0];
+ spd_eeprom_t spd;
+- unsigned tmp, tmp1;
+ unsigned int memsize;
+ unsigned int law_size;
+- unsigned char caslat;
+- unsigned int trfc, trfc_clk, trfc_low;
++ unsigned char caslat, caslat_ctrl;
++ unsigned char burstlen;
++ unsigned int max_bus_clk;
++ unsigned int max_data_rate, effective_data_rate;
++ unsigned int ddrc_clk;
++ unsigned int refresh_clk;
++ unsigned sdram_cfg;
++ unsigned int ddrc_ecc_enable;
+
++ /* Read SPD parameters with I2C */
+ CFG_READ_SPD(SPD_EEPROM_ADDRESS, 0, 1, (uchar *) & spd, sizeof (spd));
+ #ifdef SPD_DEBUG
+ spd_debug(&spd);
+ #endif
++ /* Check the memory type */
++ if (spd.mem_type != SPD_MEMTYPE_DDR) {
++ printf("DDR: Module mem type is %02X\n", spd.mem_type);
++ return 0;
++ }
++
++ /* Check the number of physical bank */
+ if (spd.nrows > 2) {
+- puts("DDR:Only two chip selects are supported on ADS.\n");
++ printf("DDR: The number of physical bank is %02X\n", spd.nrows);
+ return 0;
+ }
+
+- if (spd.nrow_addr < 12
+- || spd.nrow_addr > 14
+- || spd.ncol_addr < 8
+- || spd.ncol_addr > 11) {
+- puts("DDR:Row or Col number unsupported.\n");
++ /* Check if the number of row of the module is in the range of DDRC */
++ if (spd.nrow_addr < 12 || spd.nrow_addr > 14) {
++ printf("DDR: Row number is out of range of DDRC, row=%02X\n",
++ spd.nrow_addr);
+ return 0;
+ }
+
++ /* Check if the number of col of the module is in the range of DDRC */
++ if (spd.ncol_addr < 8 || spd.ncol_addr > 11) {
++ printf("DDR: Col number is out of range of DDRC, col=%02X\n",
++ spd.ncol_addr);
++ return 0;
++ }
++ /* Setup DDR chip select register */
++#ifdef CFG_83XX_DDR_USES_CS0
++ ddr->csbnds[0].csbnds = (banksize(spd.row_dens) >> 24) - 1;
++ ddr->cs_config[0] = ( 1 << 31
++ | (spd.nrow_addr - 12) << 8
++ | (spd.ncol_addr - 8) );
++ debug("\n");
++ debug("cs0_bnds = 0x%08x\n",ddr->csbnds[0].csbnds);
++ debug("cs0_config = 0x%08x\n",ddr->cs_config[0]);
++
++ if (spd.nrows == 2) {
++ ddr->csbnds[1].csbnds = ( (banksize(spd.row_dens) >> 8)
++ | ((banksize(spd.row_dens) >> 23) - 1) );
++ ddr->cs_config[1] = ( 1<<31
++ | (spd.nrow_addr-12) << 8
++ | (spd.ncol_addr-8) );
++ debug("cs1_bnds = 0x%08x\n",ddr->csbnds[1].csbnds);
++ debug("cs1_config = 0x%08x\n",ddr->cs_config[1]);
++ }
++
++#else
+ ddr->csbnds[2].csbnds = (banksize(spd.row_dens) >> 24) - 1;
+ ddr->cs_config[2] = ( 1 << 31
+ | (spd.nrow_addr - 12) << 8
+@@ -147,6 +185,7 @@ long int spd_sdram()
+ debug("cs3_bnds = 0x%08x\n",ddr->csbnds[3].csbnds);
+ debug("cs3_config = 0x%08x\n",ddr->cs_config[3]);
+ }
++#endif
+
+ if (spd.mem_type != 0x07) {
+ puts("No DDR module found!\n");
+@@ -172,56 +211,136 @@ long int spd_sdram()
+ debug("DDR:ar=0x%08x\n", ecm->ar);
+
+ /*
+- * find the largest CAS
+- */
+- if(spd.cas_lat & 0x40) {
+- caslat = 7;
+- } else if (spd.cas_lat & 0x20) {
+- caslat = 6;
+- } else if (spd.cas_lat & 0x10) {
+- caslat = 5;
+- } else if (spd.cas_lat & 0x08) {
+- caslat = 4;
+- } else if (spd.cas_lat & 0x04) {
+- caslat = 3;
+- } else if (spd.cas_lat & 0x02) {
+- caslat = 2;
+- } else if (spd.cas_lat & 0x01) {
+- caslat = 1;
+- } else {
+- puts("DDR:no valid CAS Latency information.\n");
++ * Find the largest CAS by locating the highest 1 bit
++ * in the spd.cas_lat field. Translate it to a DDR
++ * controller field value:
++ *
++ * CAS Lat DDR I Ctrl
++ * Clocks SPD Bit Value
++ * -------+--------+---------
++ * 1.0 0 001
++ * 1.5 1 010
++ * 2.0 2 011
++ * 2.5 3 100
++ * 3.0 4 101
++ * 3.5 5 110
++ * 4.0 6 111
++ */
++ caslat = __ilog2(spd.cas_lat);
++
++ if (caslat > 6 ) {
++ printf("DDR: Invalid SPD CAS Latency, caslat=%02X\n",
++ spd.cas_lat);
+ return 0;
+ }
+-
+- tmp = 20000 / (((spd.clk_cycle & 0xF0) >> 4) * 10
+- + (spd.clk_cycle & 0x0f));
+- debug("DDR:Module maximum data rate is: %dMhz\n", tmp);
+-
+- tmp1 = get_bus_freq(0) / 1000000;
+- if (tmp1 < 230 && tmp1 >= 90 && tmp >= 230) {
+- /* 90~230 range, treated as DDR 200 */
+- if (spd.clk_cycle3 == 0xa0)
+- caslat -= 2;
+- else if(spd.clk_cycle2 == 0xa0)
+- caslat--;
+- } else if (tmp1 < 280 && tmp1 >= 230 && tmp >= 280) {
+- /* 230-280 range, treated as DDR 266 */
+- if (spd.clk_cycle3 == 0x75)
+- caslat -= 2;
+- else if (spd.clk_cycle2 == 0x75)
+- caslat--;
+- } else if (tmp1 < 350 && tmp1 >= 280 && tmp >= 350) {
+- /* 280~350 range, treated as DDR 333 */
+- if (spd.clk_cycle3 == 0x60)
+- caslat -= 2;
+- else if (spd.clk_cycle2 == 0x60)
+- caslat--;
+- } else if (tmp1 < 90 || tmp1 >= 350) {
+- /* DDR rate out-of-range */
+- puts("DDR:platform frequency is not fit for DDR rate\n");
+- return 0;
++ max_bus_clk = 1000 *10 / (((spd.clk_cycle & 0xF0) >> 4) * 10
++ + (spd.clk_cycle & 0x0f));
++ max_data_rate = max_bus_clk * 2;
++
++ debug("DDR:Module maximum data rate is: %dMhz\n", max_data_rate);
++
++ ddrc_clk = gd->ddr_clk / 1000000;
++
++ if (max_data_rate >= 390) { /* it is DDR 400 */
++ if (ddrc_clk <= 410 && ddrc_clk > 350) {
++ /* DDR controller clk at 350~410 */
++ effective_data_rate = 400; /* 5ns */
++ caslat = caslat;
++ } else if (ddrc_clk <= 350 && ddrc_clk > 280) {
++ /* DDR controller clk at 280~350 */
++ effective_data_rate = 333; /* 6ns */
++ if (spd.clk_cycle2 == 0x60)
++ caslat = caslat - 1;
++ else
++ caslat = caslat;
++ } else if (ddrc_clk <= 280 && ddrc_clk > 230) {
++ /* DDR controller clk at 230~280 */
++ effective_data_rate = 266; /* 7.5ns */
++ if (spd.clk_cycle3 == 0x75)
++ caslat = caslat - 2;
++ else if (spd.clk_cycle2 == 0x60)
++ caslat = caslat - 1;
++ else
++ caslat = caslat;
++ } else if (ddrc_clk <= 230 && ddrc_clk > 90) {
++ /* DDR controller clk at 90~230 */
++ effective_data_rate = 200; /* 10ns */
++ if (spd.clk_cycle3 == 0x75)
++ caslat = caslat - 2;
++ else if (spd.clk_cycle2 == 0x60)
++ caslat = caslat - 1;
++ else
++ caslat = caslat;
++ }
++ } else if (max_data_rate >= 323) { /* it is DDR 333 */
++ if (ddrc_clk <= 350 && ddrc_clk > 280) {
++ /* DDR controller clk at 280~350 */
++ effective_data_rate = 333; /* 6ns */
++ caslat = caslat;
++ } else if (ddrc_clk <= 280 && ddrc_clk > 230) {
++ /* DDR controller clk at 230~280 */
++ effective_data_rate = 266; /* 7.5ns */
++ if (spd.clk_cycle2 == 0x75)
++ caslat = caslat - 1;
++ else
++ caslat = caslat;
++ } else if (ddrc_clk <= 230 && ddrc_clk > 90) {
++ /* DDR controller clk at 90~230 */
++ effective_data_rate = 200; /* 10ns */
++ if (spd.clk_cycle3 == 0xa0)
++ caslat = caslat - 2;
++ else if (spd.clk_cycle2 == 0x75)
++ caslat = caslat - 1;
++ else
++ caslat = caslat;
++ }
++ } else if (max_data_rate >= 256) { /* it is DDR 266 */
++ if (ddrc_clk <= 350 && ddrc_clk > 280) {
++ /* DDR controller clk at 280~350 */
++ printf("DDR: DDR controller freq is more than "
++ "max data rate of the module\n");
++ return 0;
++ } else if (ddrc_clk <= 280 && ddrc_clk > 230) {
++ /* DDR controller clk at 230~280 */
++ effective_data_rate = 266; /* 7.5ns */
++ caslat = caslat;
++ } else if (ddrc_clk <= 230 && ddrc_clk > 90) {
++ /* DDR controller clk at 90~230 */
++ effective_data_rate = 200; /* 10ns */
++ if (spd.clk_cycle2 == 0xa0)
++ caslat = caslat - 1;
++ }
++ } else if (max_data_rate >= 190) { /* it is DDR 200 */
++ if (ddrc_clk <= 350 && ddrc_clk > 230) {
++ /* DDR controller clk at 230~350 */
++ printf("DDR: DDR controller freq is more than "
++ "max data rate of the module\n");
++ return 0;
++ } else if (ddrc_clk <= 230 && ddrc_clk > 90) {
++ /* DDR controller clk at 90~230 */
++ effective_data_rate = 200; /* 10ns */
++ caslat = caslat;
++ }
+ }
+
++ debug("DDR:Effective data rate is: %dMhz\n", effective_data_rate);
++ debug("DDR:The MSB 1 of CAS Latency is: %d\n", caslat);
++
++ /*
++ * Errata DDR6 work around: input enable 2 cycles earlier.
++ * including MPC834x Rev1.0/1.1 and MPC8360 Rev1.1/1.2.
++ */
++ if (caslat == 2)
++ ddr->debug_reg = 0x201c0000; /* CL=2 */
++ else if (caslat == 3)
++ ddr->debug_reg = 0x202c0000; /* CL=2.5 */
++ else if (caslat == 4)
++ ddr->debug_reg = 0x202c0000; /* CL=3.0 */
++
++ __asm__ __volatile__ ("sync");
++
++ debug("Errata DDR6 (debug_reg=0x%08x)\n", ddr->debug_reg);
++
+ /*
+ * note: caslat must also be programmed into ddr->sdram_mode
+ * register.
+@@ -229,16 +348,14 @@ long int spd_sdram()
+ * note: WRREC(Twr) and WRTORD(Twtr) are not in SPD,
+ * use conservative value here.
+ */
+- trfc = spd.trfc * 1000; /* up to ps */
+- trfc_clk = picos_to_clk(trfc);
+- trfc_low = (trfc_clk - 8) & 0xf;
++ caslat_ctrl = (caslat + 1) & 0x07; /* see as above */
+
+ ddr->timing_cfg_1 =
+ (((picos_to_clk(spd.trp * 250) & 0x07) << 28 ) |
+ ((picos_to_clk(spd.tras * 1000) & 0x0f ) << 24 ) |
+ ((picos_to_clk(spd.trcd * 250) & 0x07) << 20 ) |
+- ((caslat & 0x07) << 16 ) |
+- (trfc_low << 12 ) |
++ ((caslat_ctrl & 0x07) << 16 ) |
++ (((picos_to_clk(spd.trfc * 1000) - 8) & 0x0f) << 12 ) |
+ ( 0x300 ) |
+ ((picos_to_clk(spd.trrd * 250) & 0x07) << 4) | 1);
+
+@@ -246,144 +363,143 @@ long int spd_sdram()
+
+ debug("DDR:timing_cfg_1=0x%08x\n", ddr->timing_cfg_1);
+ debug("DDR:timing_cfg_2=0x%08x\n", ddr->timing_cfg_2);
++ /* Setup init value, but not enable */
++ ddr->sdram_cfg = 0x42000000;
+
+- /*
+- * Only DDR I is supported
+- * DDR I and II have different mode-register-set definition
+- */
+- switch(caslat) {
+- case 2:
+- tmp = 0x50; /* 1.5 */
+- break;
+- case 3:
+- tmp = 0x20; /* 2.0 */
+- break;
+- case 4:
+- tmp = 0x60; /* 2.5 */
+- break;
+- case 5:
+- tmp = 0x30; /* 3.0 */
+- break;
+- default:
+- puts("DDR:only CAS Latency 1.5, 2.0, 2.5, 3.0 is supported.\n");
+- return 0;
++ /* Check DIMM data bus width */
++ if (spd.dataw_lsb == 0x20) {
++ burstlen = 0x03; /* 32 bit data bus, burst len is 8 */
++ printf("\n DDR DIMM: data bus width is 32 bit");
++ } else {
++ burstlen = 0x02; /* Others act as 64 bit bus, burst len is 4 */
++ printf("\n DDR DIMM: data bus width is 64 bit");
++ }
++
++ /* Is this an ECC DDR chip? */
++ if (spd.config == 0x02)
++ printf(" with ECC\n");
++ else
++ printf(" without ECC\n");
++
++ /* Burst length is always 4 for 64 bit data bus, 8 for 32 bit data bus,
++ Burst type is sequential
++ */
++ switch (caslat) {
++ case 1:
++ ddr->sdram_mode = 0x50 | burstlen; /* CL=1.5 */
++ break;
++ case 2:
++ ddr->sdram_mode = 0x20 | burstlen; /* CL=2.0 */
++ break;
++ case 3:
++ ddr->sdram_mode = 0x60 | burstlen; /* CL=2.5 */
++ break;
++ case 4:
++ ddr->sdram_mode = 0x30 | burstlen; /* CL=3.0 */
++ break;
++ default:
++ printf("DDR:only CL 1.5, 2.0, 2.5, 3.0 is supported\n");
++ return 0;
+ }
+-#if defined (CONFIG_DDR_32BIT)
+- /* set burst length to 8 for 32-bit data path */
+- tmp |= 0x03;
+-#else
+- /* set burst length to 4 - default for 64-bit data path */
+- tmp |= 0x02;
+-#endif
+- ddr->sdram_mode = tmp;
+ debug("DDR:sdram_mode=0x%08x\n", ddr->sdram_mode);
+
+- switch(spd.refresh) {
+- case 0x00:
+- case 0x80:
+- tmp = picos_to_clk(15625000);
+- break;
+- case 0x01:
+- case 0x81:
+- tmp = picos_to_clk(3900000);
+- break;
+- case 0x02:
+- case 0x82:
+- tmp = picos_to_clk(7800000);
+- break;
+- case 0x03:
+- case 0x83:
+- tmp = picos_to_clk(31300000);
+- break;
+- case 0x04:
+- case 0x84:
+- tmp = picos_to_clk(62500000);
+- break;
+- case 0x05:
+- case 0x85:
+- tmp = picos_to_clk(125000000);
+- break;
+- default:
+- tmp = 0x512;
+- break;
++ switch (spd.refresh) {
++ case 0x00:
++ case 0x80:
++ refresh_clk = picos_to_clk(15625000);
++ break;
++ case 0x01:
++ case 0x81:
++ refresh_clk = picos_to_clk(3900000);
++ break;
++ case 0x02:
++ case 0x82:
++ refresh_clk = picos_to_clk(7800000);
++ break;
++ case 0x03:
++ case 0x83:
++ refresh_clk = picos_to_clk(31300000);
++ break;
++ case 0x04:
++ case 0x84:
++ refresh_clk = picos_to_clk(62500000);
++ break;
++ case 0x05:
++ case 0x85:
++ refresh_clk = picos_to_clk(125000000);
++ break;
++ default:
++ refresh_clk = 0x512;
++ break;
+ }
+
+ /*
+ * Set BSTOPRE to 0x100 for page mode
+ * If auto-charge is used, set BSTOPRE = 0
+ */
+- ddr->sdram_interval = ((tmp & 0x3fff) << 16) | 0x100;
++ ddr->sdram_interval = ((refresh_clk & 0x3fff) << 16) | 0x100;
+ debug("DDR:sdram_interval=0x%08x\n", ddr->sdram_interval);
+
+- /*
+- * Is this an ECC DDR chip?
++ /* SS_EN = 0, source synchronous disable
++ * CLK_ADJST = 0, MCK/MCK# is launched aligned with addr/cmd
+ */
+-#if defined(CONFIG_DDR_ECC)
+- if (spd.config == 0x02) {
+- /* disable error detection */
+- ddr->err_disable = ~ECC_ERROR_ENABLE;
++ ddr->sdram_clk_cntl = 0x00000000;
++ debug("DDR:sdram_clk_cntl=0x%08x\n", ddr->sdram_clk_cntl);
+
+- /* set single bit error threshold to maximum value,
+- * reset counter to zero */
+- ddr->err_sbe = (255 << ECC_ERROR_MAN_SBET_SHIFT) |
+- (0 << ECC_ERROR_MAN_SBEC_SHIFT);
+- }
+- debug("DDR:err_disable=0x%08x\n", ddr->err_disable);
+- debug("DDR:err_sbe=0x%08x\n", ddr->err_sbe);
+-#endif
+ asm("sync;isync");
+
+- udelay(500);
++ udelay(600);
+
+ /*
+- * SS_EN=1,
+- * CLK_ADJST = 2-MCK/MCK_B, is lauched 1/2 of one SDRAM
+- * clock cycle after address/command
+- */
+- /*ddr->sdram_clk_cntl = 0x82000000;*/
+- ddr->sdram_clk_cntl = (DDR_SDRAM_CLK_CNTL_SS_EN|DDR_SDRAM_CLK_CNTL_CLK_ADJUST_05);
+-
+- /*
+- * Figure out the settings for the sdram_cfg register. Build up
+- * the entire register in 'tmp' before writing since the write into
++ * Figure out the settings for the sdram_cfg register. Build up
++ * the value in 'sdram_cfg' before writing since the write into
+ * the register will actually enable the memory controller, and all
+ * settings must be done before enabling.
+ *
+ * sdram_cfg[0] = 1 (ddr sdram logic enable)
+ * sdram_cfg[1] = 1 (self-refresh-enable)
+ * sdram_cfg[6:7] = 2 (SDRAM type = DDR SDRAM)
++ * sdram_cfg[12] = 0 (32_BE =0 , 64 bit bus mode)
++ * sdram_cfg[13] = 0 (8_BE =0, 4-beat bursts)
+ */
+- tmp = 0xc2000000;
++ sdram_cfg = 0xC2000000;
+
+-#if defined (CONFIG_DDR_32BIT)
+- /* in 32-Bit mode burst len is 8 beats */
+- tmp |= (SDRAM_CFG_32_BE | SDRAM_CFG_8_BE);
+-#endif
+- /*
+- * sdram_cfg[3] = RD_EN - registered DIMM enable
+- * A value of 0x26 indicates micron registered DIMMS (micron.com)
+- */
+- if (spd.mod_attr == 0x26) {
+- tmp |= 0x10000000;
+- }
++ /* sdram_cfg[3] = RD_EN - registered DIMM enable */
++ if (spd.mod_attr & 0x02)
++ sdram_cfg |= 0x10000000;
++
++ /* The DIMM is 32bit width */
++ if (spd.dataw_lsb == 0x20)
++ sdram_cfg |= 0x000C0000;
++
++ ddrc_ecc_enable = 0;
+
+ #if defined(CONFIG_DDR_ECC)
+- /*
+- * If the user wanted ECC (enabled via sdram_cfg[2])
+- */
++ /* Enable ECC with sdram_cfg[2] */
+ if (spd.config == 0x02) {
+- tmp |= SDRAM_CFG_ECC_EN;
++ sdram_cfg |= 0x20000000;
++ ddrc_ecc_enable = 1;
++ /* disable error detection */
++ ddr->err_disable = ~ECC_ERROR_ENABLE;
++ /* set single bit error threshold to maximum value,
++ * reset counter to zero */
++ ddr->err_sbe = (255 << ECC_ERROR_MAN_SBET_SHIFT) |
++ (0 << ECC_ERROR_MAN_SBEC_SHIFT);
+ }
++
++ debug("DDR:err_disable=0x%08x\n", ddr->err_disable);
++ debug("DDR:err_sbe=0x%08x\n", ddr->err_sbe);
+ #endif
++ printf(" DDRC ECC mode: %s\n", ddrc_ecc_enable ? "ON":"OFF");
+
+ #if defined(CONFIG_DDR_2T_TIMING)
+ /*
+ * Enable 2T timing by setting sdram_cfg[16].
+ */
+- tmp |= SDRAM_CFG_2T_EN;
++ sdram_cfg |= SDRAM_CFG_2T_EN;
+ #endif
+-
+- ddr->sdram_cfg = tmp;
++ /* Enable controller, and GO! */
++ ddr->sdram_cfg = sdram_cfg;
+ asm("sync;isync");
+ udelay(500);
+
+@@ -392,8 +508,7 @@ long int spd_sdram()
+ }
+ #endif /* CONFIG_SPD_EEPROM */
+
+-
+-#if defined(CONFIG_DDR_ECC)
++#if defined(CONFIG_DDR_ECC) && !defined(CONFIG_ECC_INIT_VIA_DDRC)
+ /*
+ * Use timebase counter, get_timer() is not availabe
+ * at this point of initialization yet.
+@@ -429,74 +544,48 @@ static __inline__ unsigned long get_tbms
+ /* #define CONFIG_DDR_ECC_INIT_VIA_DMA */
+ void ddr_enable_ecc(unsigned int dram_size)
+ {
+- uint *p;
+- volatile immap_t *immap = (immap_t *)CFG_IMMRBAR;
+- volatile ddr8349_t *ddr = &immap->ddr;
++ volatile immap_t *immap = (immap_t *)CFG_IMMR;
++ volatile ddr83xx_t *ddr= &immap->ddr;
+ unsigned long t_start, t_end;
++ register u64 *p;
++ register uint size;
++ unsigned int pattern[2];
+ #if defined(CONFIG_DDR_ECC_INIT_VIA_DMA)
+ uint i;
+ #endif
+-
+- debug("Initialize a Cachline in DRAM\n");
+ icache_enable();
+-
+-#if defined(CONFIG_DDR_ECC_INIT_VIA_DMA)
+- /* Initialise DMA for direct Transfers */
+- dma_init();
+-#endif
+-
+ t_start = get_tbms();
++ pattern[0] = 0xdeadbeef;
++ pattern[1] = 0xdeadbeef;
+
+ #if !defined(CONFIG_DDR_ECC_INIT_VIA_DMA)
+- debug("DDR init: Cache flush method\n");
+- for (p = 0; p < (uint *)(dram_size); p++) {
+- if (((unsigned int)p & 0x1f) == 0) {
+- ppcDcbz((unsigned long) p);
+- }
+-
+- /* write pattern to cache and flush */
+- *p = (unsigned int)0xdeadbeef;
+-
+- if (((unsigned int)p & 0x1c) == 0x1c) {
+- ppcDcbf((unsigned long) p);
+- }
++ debug("ddr init: CPU FP write method\n");
++ size = dram_size;
++ for (p = 0; p < (u64*)(size); p++) {
++ ppcDWstore((u32*)p, pattern);
+ }
++ __asm__ __volatile__ ("sync");
+ #else
+- printf("DDR init: DMA method\n");
+- for (p = 0; p < (uint *)(8 * 1024); p++) {
+- /* zero one data cache line */
+- if (((unsigned int)p & 0x1f) == 0) {
+- ppcDcbz((unsigned long)p);
+- }
+-
+- /* write pattern to it and flush */
+- *p = (unsigned int)0xdeadbeef;
+-
+- if (((unsigned int)p & 0x1c) == 0x1c) {
+- ppcDcbf((unsigned long)p);
+- }
++ debug("ddr init: DMA method\n");
++ size = 0x2000;
++ for (p = 0; p < (u64*)(size); p++) {
++ ppcDWstore((u32*)p, pattern);
+ }
++ __asm__ __volatile__ ("sync");
+
+- /* 8K */
+- dma_xfer((uint *)0x2000, 0x2000, (uint *)0);
+- /* 16K */
+- dma_xfer((uint *)0x4000, 0x4000, (uint *)0);
+- /* 32K */
+- dma_xfer((uint *)0x8000, 0x8000, (uint *)0);
+- /* 64K */
+- dma_xfer((uint *)0x10000, 0x10000, (uint *)0);
+- /* 128k */
+- dma_xfer((uint *)0x20000, 0x20000, (uint *)0);
+- /* 256k */
+- dma_xfer((uint *)0x40000, 0x40000, (uint *)0);
+- /* 512k */
+- dma_xfer((uint *)0x80000, 0x80000, (uint *)0);
+- /* 1M */
+- dma_xfer((uint *)0x100000, 0x100000, (uint *)0);
+- /* 2M */
+- dma_xfer((uint *)0x200000, 0x200000, (uint *)0);
+- /* 4M */
+- dma_xfer((uint *)0x400000, 0x400000, (uint *)0);
++ /* Initialise DMA for direct transfer */
++ dma_init();
++ /* Start DMA to transfer */
++ dma_xfer((uint *)0x2000, 0x2000, (uint *)0); /* 8K */
++ dma_xfer((uint *)0x4000, 0x4000, (uint *)0); /* 16K */
++ dma_xfer((uint *)0x8000, 0x8000, (uint *)0); /* 32K */
++ dma_xfer((uint *)0x10000, 0x10000, (uint *)0); /* 64K */
++ dma_xfer((uint *)0x20000, 0x20000, (uint *)0); /* 128K */
++ dma_xfer((uint *)0x40000, 0x40000, (uint *)0); /* 256K */
++ dma_xfer((uint *)0x80000, 0x80000, (uint *)0); /* 512K */
++ dma_xfer((uint *)0x100000, 0x100000, (uint *)0); /* 1M */
++ dma_xfer((uint *)0x200000, 0x200000, (uint *)0); /* 2M */
++ dma_xfer((uint *)0x400000, 0x400000, (uint *)0); /* 4M */
+
+ for (i = 1; i < dram_size / 0x800000; i++) {
+ dma_xfer((uint *)(0x800000*i), 0x800000, (uint *)0);
+diff -Naupr u-boot-1.1.6/cpu/mpc83xx/speed.c u-boot-1.1.6-fsl-1/cpu/mpc83xx/speed.c
+--- u-boot-1.1.6/cpu/mpc83xx/speed.c 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/cpu/mpc83xx/speed.c 2006-11-30 12:34:13.000000000 -0600
+@@ -2,7 +2,7 @@
+ * (C) Copyright 2000-2002
+ * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
+ *
+- * Copyright 2004 Freescale Semiconductor, Inc.
++ * Copyright (C) 2004-2006 Freescale Semiconductor, Inc.
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+@@ -21,11 +21,6 @@
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+- *
+- * Change log:
+- *
+- * 20050101: Eran Liberty (liberty@freescale.com)
+- * Initial file creating (porting from 85XX & 8260)
+ */
+
+ #include <common.h>
+@@ -53,38 +48,38 @@ typedef enum {
+
+ typedef struct {
+ mult_t core_csb_ratio;
+- mult_t vco_divider;
++ mult_t vco_divider;
+ } corecnf_t;
+
+ corecnf_t corecnf_tab[] = {
+- { _byp, _byp}, /* 0x00 */
+- { _byp, _byp}, /* 0x01 */
+- { _byp, _byp}, /* 0x02 */
+- { _byp, _byp}, /* 0x03 */
+- { _byp, _byp}, /* 0x04 */
+- { _byp, _byp}, /* 0x05 */
+- { _byp, _byp}, /* 0x06 */
+- { _byp, _byp}, /* 0x07 */
+- { _1x, _x2}, /* 0x08 */
+- { _1x, _x4}, /* 0x09 */
+- { _1x, _x8}, /* 0x0A */
+- { _1x, _x8}, /* 0x0B */
+- {_1_5x, _x2}, /* 0x0C */
+- {_1_5x, _x4}, /* 0x0D */
+- {_1_5x, _x8}, /* 0x0E */
+- {_1_5x, _x8}, /* 0x0F */
+- { _2x, _x2}, /* 0x10 */
+- { _2x, _x4}, /* 0x11 */
+- { _2x, _x8}, /* 0x12 */
+- { _2x, _x8}, /* 0x13 */
+- {_2_5x, _x2}, /* 0x14 */
+- {_2_5x, _x4}, /* 0x15 */
+- {_2_5x, _x8}, /* 0x16 */
+- {_2_5x, _x8}, /* 0x17 */
+- { _3x, _x2}, /* 0x18 */
+- { _3x, _x4}, /* 0x19 */
+- { _3x, _x8}, /* 0x1A */
+- { _3x, _x8}, /* 0x1B */
++ {_byp, _byp}, /* 0x00 */
++ {_byp, _byp}, /* 0x01 */
++ {_byp, _byp}, /* 0x02 */
++ {_byp, _byp}, /* 0x03 */
++ {_byp, _byp}, /* 0x04 */
++ {_byp, _byp}, /* 0x05 */
++ {_byp, _byp}, /* 0x06 */
++ {_byp, _byp}, /* 0x07 */
++ {_1x, _x2}, /* 0x08 */
++ {_1x, _x4}, /* 0x09 */
++ {_1x, _x8}, /* 0x0A */
++ {_1x, _x8}, /* 0x0B */
++ {_1_5x, _x2}, /* 0x0C */
++ {_1_5x, _x4}, /* 0x0D */
++ {_1_5x, _x8}, /* 0x0E */
++ {_1_5x, _x8}, /* 0x0F */
++ {_2x, _x2}, /* 0x10 */
++ {_2x, _x4}, /* 0x11 */
++ {_2x, _x8}, /* 0x12 */
++ {_2x, _x8}, /* 0x13 */
++ {_2_5x, _x2}, /* 0x14 */
++ {_2_5x, _x4}, /* 0x15 */
++ {_2_5x, _x8}, /* 0x16 */
++ {_2_5x, _x8}, /* 0x17 */
++ {_3x, _x2}, /* 0x18 */
++ {_3x, _x4}, /* 0x19 */
++ {_3x, _x8}, /* 0x1A */
++ {_3x, _x8}, /* 0x1B */
+ };
+
+ /* ----------------------------------------------------------------- */
+@@ -92,91 +87,64 @@ corecnf_t corecnf_tab[] = {
+ /*
+ *
+ */
+-int get_clocks (void)
++int get_clocks(void)
+ {
+- volatile immap_t *im = (immap_t *)CFG_IMMRBAR;
++ volatile immap_t *im = (immap_t *) CFG_IMMR;
+ u32 pci_sync_in;
+- u8 spmf;
+- u8 clkin_div;
++ u8 spmf;
++ u8 clkin_div;
+ u32 sccr;
+ u32 corecnf_tab_index;
+- u8 corepll;
++ u8 corepll;
+ u32 lcrr;
+
+ u32 csb_clk;
++#if defined(CONFIG_MPC8349)
+ u32 tsec1_clk;
+ u32 tsec2_clk;
+- u32 core_clk;
+ u32 usbmph_clk;
+ u32 usbdr_clk;
+- u32 i2c_clk;
++#endif
++ u32 core_clk;
++ u32 i2c1_clk;
++ u32 i2c2_clk;
+ u32 enc_clk;
+ u32 lbiu_clk;
+ u32 lclk_clk;
+ u32 ddr_clk;
++#if defined (CONFIG_MPC8360)
++ u32 qepmf;
++ u32 qepdf;
++ u32 ddr_sec_clk;
++ u32 qe_clk;
++ u32 brg_clk;
++#endif
+
+- if ((im->sysconf.immrbar & IMMRBAR_BASE_ADDR) != (u32)im)
++ if ((im->sysconf.immrbar & IMMRBAR_BASE_ADDR) != (u32) im)
+ return -1;
+
+-#ifndef CFG_HRCW_HIGH
+-# error "CFG_HRCW_HIGH must be defined in board config file"
+-#endif /* CFG_HCWD_HIGH */
+-
+-#if (CFG_HRCW_HIGH & HRCWH_PCI_HOST)
+-
+-# ifndef CONFIG_83XX_CLKIN
+-# error "In PCI Host Mode, CONFIG_83XX_CLKIN must be defined in board config file"
+-# endif /* CONFIG_83XX_CLKIN */
+-# ifdef CONFIG_83XX_PCICLK
+-# warning "In PCI Host Mode, CONFIG_83XX_PCICLK in board config file is igonred"
+-# endif /* CONFIG_83XX_PCICLK */
+-
+- /* PCI Host Mode */
+- if (!(im->reset.rcwh & RCWH_PCIHOST)) {
+- /* though RCWH_PCIHOST is defined in CFG_HRCW_HIGH
+- * the im->reset.rcwhr PCI Host Mode is disabled
+- * FIXME: findout if there is a way to issue some warning */
+- return -2;
+- }
+- if (im->clk.spmr & SPMR_CKID) {
+- /* PCI Clock is half CONFIG_83XX_CLKIN */
+- pci_sync_in = CONFIG_83XX_CLKIN / 2;
+- }
+- else {
+- pci_sync_in = CONFIG_83XX_CLKIN;
+- }
+-
+-#else /* (CFG_HRCW_HIGH & HRCWH_PCI_HOST) */
++ clkin_div = ((im->clk.spmr & SPMR_CKID) >> SPMR_CKID_SHIFT);
+
+-# ifdef CONFIG_83XX_CLKIN
+-# warning "In PCI Agent Mode, CONFIG_83XX_CLKIN in board config file is igonred"
+-# endif /* CONFIG_83XX_CLKIN */
+-# ifndef CONFIG_83XX_PCICLK
+-# error "In PCI Agent Mode, CONFIG_83XX_PCICLK must be defined in board config file"
+-# endif /* CONFIG_83XX_PCICLK */
+-
+- /* PCI Agent Mode */
+- if (im->reset.rcwh & RCWH_PCIHOST) {
+- /* though RCWH_PCIHOST is not defined in CFG_HRCW_HIGH
+- * the im->reset.rcwhr PCI Host Mode is enabled */
+- return -3;
++ if (im->reset.rcwh & HRCWH_PCI_HOST) {
++#if defined(CONFIG_83XX_CLKIN)
++ pci_sync_in = CONFIG_83XX_CLKIN / (1 + clkin_div);
++#else
++ pci_sync_in = 0xDEADBEEF;
++#endif
++ } else {
++#if defined(CONFIG_83XX_PCICLK)
++ pci_sync_in = CONFIG_83XX_PCICLK;
++#else
++ pci_sync_in = 0xDEADBEEF;
++#endif
+ }
+- pci_sync_in = CONFIG_83XX_PCICLK;
+
+-#endif /* (CFG_HRCW_HIGH | RCWH_PCIHOST) */
+-
+- /* we have up to date pci_sync_in */
+ spmf = ((im->reset.rcwl & RCWL_SPMF) >> RCWL_SPMF_SHIFT);
+- clkin_div = ((im->clk.spmr & SPMR_CKID) >> SPMR_CKID_SHIFT);
+-
+- if ((im->reset.rcwl & RCWL_LBIUCM) || (im->reset.rcwl & RCWL_DDRCM)) {
+- csb_clk = (pci_sync_in * spmf * (1 + clkin_div)) / 2;
+- }
+- else {
+- csb_clk = pci_sync_in * spmf * (1 + clkin_div);
+- }
++ csb_clk = pci_sync_in * (1 + clkin_div) * spmf;
+
+ sccr = im->clk.sccr;
++
++#if defined(CONFIG_MPC8349)
+ switch ((sccr & SCCR_TSEC1CM) >> SCCR_TSEC1CM_SHIFT) {
+ case 0:
+ tsec1_clk = 0;
+@@ -212,25 +180,8 @@ int get_clocks (void)
+ /* unkown SCCR_TSEC2CM value */
+ return -5;
+ }
+- i2c_clk = tsec2_clk;
+
+- switch ((sccr & SCCR_ENCCM) >> SCCR_ENCCM_SHIFT) {
+- case 0:
+- enc_clk = 0;
+- break;
+- case 1:
+- enc_clk = csb_clk;
+- break;
+- case 2:
+- enc_clk = csb_clk / 2;
+- break;
+- case 3:
+- enc_clk = csb_clk / 3;
+- break;
+- default:
+- /* unkown SCCR_ENCCM value */
+- return -6;
+- }
++ i2c1_clk = tsec2_clk;
+
+ switch ((sccr & SCCR_USBMPHCM) >> SCCR_USBMPHCM_SHIFT) {
+ case 0:
+@@ -268,14 +219,42 @@ int get_clocks (void)
+ return -8;
+ }
+
+- if (usbmph_clk != 0
+- && usbdr_clk != 0
+- && usbmph_clk != usbdr_clk ) {
+- /* if USB MPH clock is not disabled and USB DR clock is not disabled than USB MPH & USB DR must have the same rate */
++ if (usbmph_clk != 0 && usbdr_clk != 0 && usbmph_clk != usbdr_clk) {
++ /* if USB MPH clock is not disabled and
++ * USB DR clock is not disabled then
++ * USB MPH & USB DR must have the same rate
++ */
+ return -9;
+ }
++#endif
++#if defined (CONFIG_MPC8360)
++ i2c1_clk = csb_clk;
++#endif
++ i2c2_clk = csb_clk; /* i2c-2 clk is equal to csb clk */
+
+- lbiu_clk = csb_clk * (1 + ((im->reset.rcwl & RCWL_LBIUCM) >> RCWL_LBIUCM_SHIFT));
++ switch ((sccr & SCCR_ENCCM) >> SCCR_ENCCM_SHIFT) {
++ case 0:
++ enc_clk = 0;
++ break;
++ case 1:
++ enc_clk = csb_clk;
++ break;
++ case 2:
++ enc_clk = csb_clk / 2;
++ break;
++ case 3:
++ enc_clk = csb_clk / 3;
++ break;
++ default:
++ /* unkown SCCR_ENCCM value */
++ return -6;
++ }
++#if defined(CONFIG_MPC8349) || defined(CONFIG_MPC8360)
++ lbiu_clk = csb_clk *
++ (1 + ((im->reset.rcwl & RCWL_LBIUCM) >> RCWL_LBIUCM_SHIFT));
++#else
++#error Unknown MPC83xx chip
++#endif
+ lcrr = (im->lbus.lcrr & LCRR_CLKDIV) >> LCRR_CLKDIV_SHIFT;
+ switch (lcrr) {
+ case 2:
+@@ -287,12 +266,20 @@ int get_clocks (void)
+ /* unknown lcrr */
+ return -10;
+ }
+-
+- ddr_clk = csb_clk * (1 + ((im->reset.rcwl & RCWL_DDRCM) >> RCWL_DDRCM_SHIFT));
+-
++#if defined(CONFIG_MPC8349) || defined(CONFIG_MPC8360)
++ ddr_clk = csb_clk *
++ (1 + ((im->reset.rcwl & RCWL_DDRCM) >> RCWL_DDRCM_SHIFT));
+ corepll = (im->reset.rcwl & RCWL_COREPLL) >> RCWL_COREPLL_SHIFT;
++#if defined (CONFIG_MPC8360)
++ ddr_sec_clk = csb_clk * (1 +
++ ((im->reset.rcwl & RCWL_LBIUCM) >> RCWL_LBIUCM_SHIFT));
++#endif
++#else
++#error Unknown MPC83xx chip
++#endif
++
+ corecnf_tab_index = ((corepll & 0x1F) << 2) | ((corepll & 0x60) >> 5);
+- if (corecnf_tab_index > (sizeof(corecnf_tab)/sizeof(corecnf_t)) ) {
++ if (corecnf_tab_index > (sizeof(corecnf_tab) / sizeof(corecnf_t))) {
+ /* corecnf_tab_index is too high, possibly worng value */
+ return -11;
+ }
+@@ -309,7 +296,7 @@ int get_clocks (void)
+ core_clk = 2 * csb_clk;
+ break;
+ case _2_5x:
+- core_clk = ( 5 * csb_clk) / 2;
++ core_clk = (5 * csb_clk) / 2;
+ break;
+ case _3x:
+ core_clk = 3 * csb_clk;
+@@ -319,46 +306,69 @@ int get_clocks (void)
+ return -12;
+ }
+
+- gd->csb_clk = csb_clk ;
+- gd->tsec1_clk = tsec1_clk ;
+- gd->tsec2_clk = tsec2_clk ;
+- gd->core_clk = core_clk ;
++#if defined (CONFIG_MPC8360)
++ qepmf = (im->reset.rcwl & RCWL_CEPMF) >> RCWL_CEPMF_SHIFT;
++ qepdf = (im->reset.rcwl & RCWL_CEPDF) >> RCWL_CEPDF_SHIFT;
++ qe_clk = (pci_sync_in * qepmf) / (1 + qepdf);
++ brg_clk = qe_clk / 2;
++#endif
++
++ gd->csb_clk = csb_clk;
++#if defined(CONFIG_MPC8349)
++ gd->tsec1_clk = tsec1_clk;
++ gd->tsec2_clk = tsec2_clk;
+ gd->usbmph_clk = usbmph_clk;
+- gd->usbdr_clk = usbdr_clk ;
+- gd->i2c_clk = i2c_clk ;
+- gd->enc_clk = enc_clk ;
+- gd->lbiu_clk = lbiu_clk ;
+- gd->lclk_clk = lclk_clk ;
+- gd->ddr_clk = ddr_clk ;
+- gd->pci_clk = pci_sync_in;
+-
++ gd->usbdr_clk = usbdr_clk;
++#endif
++ gd->core_clk = core_clk;
++ gd->i2c1_clk = i2c1_clk;
++ gd->i2c2_clk = i2c2_clk;
++ gd->enc_clk = enc_clk;
++ gd->lbiu_clk = lbiu_clk;
++ gd->lclk_clk = lclk_clk;
++ gd->ddr_clk = ddr_clk;
++#if defined (CONFIG_MPC8360)
++ gd->ddr_sec_clk = ddr_sec_clk;
++ gd->qe_clk = qe_clk;
++ gd->brg_clk = brg_clk;
++#endif
+ gd->cpu_clk = gd->core_clk;
+- gd->bus_clk = gd->lbiu_clk;
++ gd->bus_clk = gd->csb_clk;
+ return 0;
++
+ }
+
+ /********************************************
+ * get_bus_freq
+ * return system bus freq in Hz
+ *********************************************/
+-ulong get_bus_freq (ulong dummy)
++ulong get_bus_freq(ulong dummy)
+ {
+ return gd->csb_clk;
+ }
+
+-int print_clock_conf (void)
++int print_clock_conf(void)
+ {
+ printf("Clock configuration:\n");
+- printf(" Coherent System Bus: %4d MHz\n",gd->csb_clk/1000000);
+- printf(" Core: %4d MHz\n",gd->core_clk/1000000);
+- debug(" Local Bus Controller:%4d MHz\n",gd->lbiu_clk/1000000);
+- printf(" Local Bus: %4d MHz\n",gd->lclk_clk/1000000);
+- debug(" DDR: %4d MHz\n",gd->ddr_clk/1000000);
+- debug(" I2C: %4d MHz\n",gd->i2c_clk/1000000);
+- debug(" TSEC1: %4d MHz\n",gd->tsec1_clk/1000000);
+- debug(" TSEC2: %4d MHz\n",gd->tsec2_clk/1000000);
+- debug(" USB MPH: %4d MHz\n",gd->usbmph_clk/1000000);
+- debug(" USB DR: %4d MHz\n",gd->usbdr_clk/1000000);
+-
++ printf(" Coherent System Bus: %4d MHz\n", gd->csb_clk / 1000000);
++ printf(" Core: %4d MHz\n", gd->core_clk / 1000000);
++#if defined (CONFIG_MPC8360)
++ printf(" QE: %4d MHz\n", gd->qe_clk / 1000000);
++#endif
++ printf(" Local Bus Controller:%4d MHz\n", gd->lbiu_clk / 1000000);
++ printf(" Local Bus: %4d MHz\n", gd->lclk_clk / 1000000);
++ printf(" DDR: %4d MHz\n", gd->ddr_clk / 1000000);
++#if defined (CONFIG_MPC8360)
++ printf(" DDR Secondary: %4d MHz\n", gd->ddr_sec_clk / 1000000);
++#endif
++ printf(" SEC: %4d MHz\n", gd->enc_clk / 1000000);
++ printf(" I2C1: %4d MHz\n", gd->i2c1_clk / 1000000);
++ printf(" I2C2: %4d MHz\n", gd->i2c2_clk / 1000000);
++#if defined(CONFIG_MPC8349)
++ printf(" TSEC1: %4d MHz\n", gd->tsec1_clk / 1000000);
++ printf(" TSEC2: %4d MHz\n", gd->tsec2_clk / 1000000);
++ printf(" USB MPH: %4d MHz\n", gd->usbmph_clk / 1000000);
++ printf(" USB DR: %4d MHz\n", gd->usbdr_clk / 1000000);
++#endif
+ return 0;
+ }
+diff -Naupr u-boot-1.1.6/cpu/mpc83xx/start.S u-boot-1.1.6-fsl-1/cpu/mpc83xx/start.S
+--- u-boot-1.1.6/cpu/mpc83xx/start.S 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/cpu/mpc83xx/start.S 2006-11-10 11:24:29.000000000 -0600
+@@ -2,7 +2,7 @@
+ * Copyright (C) 1998 Dan Malek <dmalek@jlc.net>
+ * Copyright (C) 1999 Magnus Damm <kieraypc01.p.y.kie.era.ericsson.se>
+ * Copyright (C) 2000, 2001,2002 Wolfgang Denk <wd@denx.de>
+- * Copyright 2004 Freescale Semiconductor, Inc.
++ * Copyright Freescale Semiconductor, Inc. 2004, 2006. All rights reserved.
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+@@ -104,9 +104,9 @@ version_string:
+ #ifndef CONFIG_DEFAULT_IMMR
+ #error CONFIG_DEFAULT_IMMR must be defined
+ #endif /* CFG_DEFAULT_IMMR */
+-#ifndef CFG_IMMRBAR
+-#define CFG_IMMRBAR CONFIG_DEFAULT_IMMR
+-#endif /* CFG_IMMRBAR */
++#ifndef CFG_IMMR
++#define CFG_IMMR CONFIG_DEFAULT_IMMR
++#endif /* CFG_IMMR */
+
+ /*
+ * After configuration, a system reset exception is executed using the
+@@ -152,8 +152,8 @@ boot_cold: /* time t 3 */
+ nop
+ boot_warm: /* time t 5 */
+ mfmsr r5 /* save msr contents */
+- lis r3, CFG_IMMRBAR@h
+- ori r3, r3, CFG_IMMRBAR@l
++ lis r3, CFG_IMMR@h
++ ori r3, r3, CFG_IMMR@l
+ stw r3, IMMRBAR(r4)
+
+ /* Initialise the E300 processor core */
+@@ -226,7 +226,7 @@ in_flash:
+ GET_GOT /* initialize GOT access */
+
+ /* r3: IMMR */
+- lis r3, CFG_IMMRBAR@h
++ lis r3, CFG_IMMR@h
+ /* run low-level CPU init code (in Flash)*/
+ bl cpu_init_f
+
+@@ -446,7 +446,7 @@ init_e300_core: /* time t 10 */
+ mtspr SRR1, r3 /* Make SRR1 match MSR */
+
+
+- lis r3, CFG_IMMRBAR@h
++ lis r3, CFG_IMMR@h
+ #if defined(CONFIG_WATCHDOG)
+ /* Initialise the Wathcdog values and reset it (if req) */
+ /*------------------------------------------------------*/
+@@ -870,6 +870,18 @@ ppcDcbz:
+ dcbz r0,r3
+ blr
+
++ .globl ppcDWstore
++ppcDWstore:
++ lfd 1, 0(r4)
++ stfd 1, 0(r3)
++ blr
++
++ .globl ppcDWload
++ppcDWload:
++ lfd 1, 0(r3)
++ stfd 1, 0(r4)
++ blr
++
+ /*-------------------------------------------------------------------*/
+
+ /*
+@@ -1189,7 +1201,7 @@ map_flash_by_law1:
+ /* When booting from ROM (Flash or EPROM), clear the */
+ /* Address Mask in OR0 so ROM appears everywhere */
+ /*----------------------------------------------------*/
+- lis r3, (CFG_IMMRBAR)@h /* r3 <= CFG_IMMRBAR */
++ lis r3, (CFG_IMMR)@h /* r3 <= CFG_IMMR */
+ lwz r4, OR0@l(r3)
+ li r5, 0x7fff /* r5 <= 0x00007FFFF */
+ and r4, r4, r5
+@@ -1214,8 +1226,15 @@ map_flash_by_law1:
+ lis r4, (CFG_FLASH_BASE)@h
+ ori r4, r4, (CFG_FLASH_BASE)@l
+ stw r4, LBLAWBAR1(r3) /* LBLAWBAR1 <= CFG_FLASH_BASE */
+- lis r4, (0x80000016)@h
+- ori r4, r4, (0x80000016)@l
++
++ /* Store 0x80000012 + log2(CFG_FLASH_SIZE) into LBLAWAR1 */
++ lis r4, (0x80000012)@h
++ ori r4, r4, (0x80000012)@l
++ li r5, CFG_FLASH_SIZE
++1: srawi. r5, r5, 1 /* r5 = r5 >> 1 */
++ addi r4, r4, 1
++ bne 1b
++
+ stw r4, LBLAWAR1(r3) /* LBLAWAR1 <= 8MB Flash Size */
+ blr
+
+@@ -1234,17 +1253,23 @@ remap_flash_by_law0:
+ stw r5, BR0(r3) /* r5 <= (CFG_FLASH_BASE & 0xFFFF8000) | (BR0 & 0x00007FFF) */
+
+ lwz r4, OR0(r3)
+- lis r5, 0xFF80 /* 8M */
++ lis r5, ~((CFG_FLASH_SIZE << 4) - 1)
+ or r4, r4, r5
+- stw r4, OR0(r3) /* OR0 <= OR0 | 0xFF800000 */
++ stw r4, OR0(r3)
+
+ lis r4, (CFG_FLASH_BASE)@h
+ ori r4, r4, (CFG_FLASH_BASE)@l
+ stw r4, LBLAWBAR0(r3) /* LBLAWBAR0 <= CFG_FLASH_BASE */
+
+- lis r4, (0x80000016)@h
+- ori r4, r4, (0x80000016)@l
+- stw r4, LBLAWAR0(r3) /* LBLAWAR0 <= 8MB Flash Size */
++ /* Store 0x80000012 + log2(CFG_FLASH_SIZE) into LBLAWAR0 */
++ lis r4, (0x80000012)@h
++ ori r4, r4, (0x80000012)@l
++ li r5, CFG_FLASH_SIZE
++1: srawi. r5, r5, 1 /* r5 = r5 >> 1 */
++ addi r4, r4, 1
++ bne 1b
++ stw r4, LBLAWAR0(r3) /* LBLAWAR0 <= Flash Size */
++
+
+ xor r4, r4, r4
+ stw r4, LBLAWBAR1(r3)
+diff -Naupr u-boot-1.1.6/cpu/mpc83xx/traps.c u-boot-1.1.6-fsl-1/cpu/mpc83xx/traps.c
+--- u-boot-1.1.6/cpu/mpc83xx/traps.c 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/cpu/mpc83xx/traps.c 2006-11-30 12:34:13.000000000 -0600
+@@ -1,5 +1,8 @@
+ /*
+- * linux/arch/ppc/kernel/traps.c
++ * (C) Copyright 2000
++ * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
++ *
++ * Copyright (C) 1995-1996 Gary Thomas (gdt@linuxppc.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+@@ -15,19 +18,6 @@
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+- *
+- * Change log:
+- *
+- * Copyright (C) 1995-1996 Gary Thomas (gdt@linuxppc.org)
+- *
+- * Modified by Cort Dougan (cort@cs.nmt.edu)
+- * and Paul Mackerras (paulus@cs.anu.edu.au)
+- *
+- * (C) Copyright 2000
+- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
+- *
+- * 20050101: Eran Liberty (liberty@freescale.com)
+- * Initial file creating (porting from 85XX & 8260)
+ */
+
+ /*
+diff -Naupr u-boot-1.1.6/cpu/ppc4xx/405gp_pci.c u-boot-1.1.6-fsl-1/cpu/ppc4xx/405gp_pci.c
+--- u-boot-1.1.6/cpu/ppc4xx/405gp_pci.c 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/cpu/ppc4xx/405gp_pci.c 2006-11-30 12:34:13.000000000 -0600
+@@ -475,7 +475,11 @@ void pci_440_init (struct pci_controller
+ pci_set_region(hose->regions + reg_num++,
+ CFG_PCI_TARGBASE,
+ CFG_PCI_MEMBASE,
++#ifdef CFG_PCI_MEMSIZE
++ CFG_PCI_MEMSIZE,
++#else
+ 0x10000000,
++#endif
+ PCI_REGION_MEM );
+
+ #if defined(CONFIG_PCI_SYS_MEM_BUS) && defined(CONFIG_PCI_SYS_MEM_PHYS) && \
+diff -Naupr u-boot-1.1.6/cpu/ppc4xx/4xx_enet.c u-boot-1.1.6-fsl-1/cpu/ppc4xx/4xx_enet.c
+--- u-boot-1.1.6/cpu/ppc4xx/4xx_enet.c 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/cpu/ppc4xx/4xx_enet.c 2006-11-30 12:34:13.000000000 -0600
+@@ -264,10 +264,10 @@ int ppc_4xx_eth_setup_bridge(int devnum,
+ bis->bi_phymode[3] = BI_PHYMODE_ZMII;
+ break;
+ case 2:
+- zmiifer = ZMII_FER_SMII << ZMII_FER_V(0);
+- zmiifer = ZMII_FER_SMII << ZMII_FER_V(1);
+- zmiifer = ZMII_FER_SMII << ZMII_FER_V(2);
+- zmiifer = ZMII_FER_SMII << ZMII_FER_V(3);
++ zmiifer |= ZMII_FER_SMII << ZMII_FER_V(0);
++ zmiifer |= ZMII_FER_SMII << ZMII_FER_V(1);
++ zmiifer |= ZMII_FER_SMII << ZMII_FER_V(2);
++ zmiifer |= ZMII_FER_SMII << ZMII_FER_V(3);
+ bis->bi_phymode[0] = BI_PHYMODE_ZMII;
+ bis->bi_phymode[1] = BI_PHYMODE_ZMII;
+ bis->bi_phymode[2] = BI_PHYMODE_ZMII;
+@@ -470,8 +470,7 @@ static int ppc_4xx_eth_init (struct eth_
+ #else
+ if ((devnum == 0) || (devnum == 1)) {
+ out32 (ZMII_FER, (ZMII_FER_SMII | ZMII_FER_MDI) << ZMII_FER_V (devnum));
+- }
+- else { /* ((devnum == 2) || (devnum == 3)) */
++ } else { /* ((devnum == 2) || (devnum == 3)) */
+ out32 (ZMII_FER, ZMII_FER_MDI << ZMII_FER_V (devnum));
+ out32 (RGMII_FER, ((RGMII_FER_RGMII << RGMII_FER_V (2)) |
+ (RGMII_FER_RGMII << RGMII_FER_V (3))));
+@@ -561,22 +560,7 @@ static int ppc_4xx_eth_init (struct eth_
+ * otherwise, just check the speeds & feeds
+ */
+ if (hw_p->first_init == 0) {
+-#if defined(CONFIG_88E1111_CLK_DELAY)
+- /*
+- * On some boards (e.g. ALPR) the Marvell 88E1111 PHY needs
+- * the "RGMII transmit timing control" and "RGMII receive
+- * timing control" bits set, so that Gbit communication works
+- * without problems.
+- * Also set the "Transmitter disable" to 1 to enable the
+- * transmitter.
+- * After setting these bits a soft-reset must occur for this
+- * change to become active.
+- */
+- miiphy_read (dev->name, reg, 0x14, &reg_short);
+- reg_short |= (1 << 7) | (1 << 1) | (1 << 0);
+- miiphy_write (dev->name, reg, 0x14, reg_short);
+-#endif
+-#if defined(CONFIG_M88E1111_PHY) /* test-only: merge with CONFIG_88E1111_CLK_DELAY !!! */
++#if defined(CONFIG_M88E1111_PHY)
+ miiphy_write (dev->name, reg, 0x14, 0x0ce3);
+ miiphy_write (dev->name, reg, 0x18, 0x4101);
+ miiphy_write (dev->name, reg, 0x09, 0x0e00);
+@@ -808,7 +792,7 @@ static int ppc_4xx_eth_init (struct eth_
+ hw_p->rx[i].ctrl |= MAL_RX_CTRL_EMPTY | MAL_RX_CTRL_INTR;
+ hw_p->rx_ready[i] = -1;
+ #if 0
+- printf ("RX_BUFF %d @ 0x%08lx\n", i, (ulong) rx[i].data_ptr);
++ printf ("RX_BUFF %d @ 0x%08lx\n", i, (ulong) hw_p->rx[i].data_ptr);
+ #endif
+ }
+
+diff -Naupr u-boot-1.1.6/cpu/ppc4xx/cpu.c u-boot-1.1.6-fsl-1/cpu/ppc4xx/cpu.c
+--- u-boot-1.1.6/cpu/ppc4xx/cpu.c 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/cpu/ppc4xx/cpu.c 2006-12-06 10:33:49.000000000 -0600
+@@ -41,6 +41,10 @@
+ DECLARE_GLOBAL_DATA_PTR;
+ #endif
+
++#if defined(CONFIG_BOARD_RESET)
++void board_reset(void);
++#endif
++
+ #if defined(CONFIG_440)
+ #define FREQ_EBC (sys_info.freqEPB)
+ #else
+@@ -336,6 +340,10 @@ int checkcpu (void)
+ puts("SP Rev. B");
+ break;
+
++ case PVR_440SP_RC:
++ puts("SP Rev. C");
++ break;
++
+ case PVR_440SPe_RA:
+ puts("SPe Rev. A");
+ break;
+@@ -422,23 +430,19 @@ int ppc440spe_revB() {
+
+ int do_reset (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
+ {
+-#if defined(CONFIG_YOSEMITE) || defined(CONFIG_YELLOWSTONE)
+- /*give reset to BCSR*/
+- *(unsigned char*)(CFG_BCSR_BASE | 0x06) = 0x09;
+-
++#if defined(CONFIG_BOARD_RESET)
++ board_reset();
++#else
++#if defined(CFG_4xx_RESET_TYPE)
++ mtspr(dbcr0, CFG_4xx_RESET_TYPE << 28);
+ #else
+-
+ /*
+ * Initiate system reset in debug control register DBCR
+ */
+- __asm__ __volatile__("lis 3, 0x3000" ::: "r3");
+-#if defined(CONFIG_440)
+- __asm__ __volatile__("mtspr 0x134, 3");
+-#else
+- __asm__ __volatile__("mtspr 0x3f2, 3");
+-#endif
++ mtspr(dbcr0, 0x30000000);
++#endif /* defined(CFG_4xx_RESET_TYPE) */
++#endif /* defined(CONFIG_BOARD_RESET) */
+
+-#endif/* defined(CONFIG_YOSEMITE) || defined(CONFIG_YELLOWSTONE)*/
+ return 1;
+ }
+
+diff -Naupr u-boot-1.1.6/cpu/ppc4xx/cpu_init.c u-boot-1.1.6-fsl-1/cpu/ppc4xx/cpu_init.c
+--- u-boot-1.1.6/cpu/ppc4xx/cpu_init.c 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/cpu/ppc4xx/cpu_init.c 2006-11-30 12:34:13.000000000 -0600
+@@ -321,6 +321,10 @@ cpu_init_f (void)
+ #else
+ val |= 0xf0000000; /* generate system reset after 2.684 seconds */
+ #endif
++#if defined(CFG_4xx_RESET_TYPE)
++ val &= ~0x30000000; /* clear WRC bits */
++ val |= CFG_4xx_RESET_TYPE << 28; /* set board specific WRC type */
++#endif
+ mtspr(tcr, val);
+
+ val = mfspr(tsr);
+diff -Naupr u-boot-1.1.6/cpu/ppc4xx/sdram.c u-boot-1.1.6-fsl-1/cpu/ppc4xx/sdram.c
+--- u-boot-1.1.6/cpu/ppc4xx/sdram.c 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/cpu/ppc4xx/sdram.c 2006-11-30 12:34:13.000000000 -0600
+@@ -351,6 +351,14 @@ long int initdram(int board_type)
+ int i;
+ int tr1_bank1;
+
++#if defined(CONFIG_440GX) || defined(CONFIG_440EP) || defined(CONFIG_440GR) || defined(CONFIG_440SP)
++ /*
++ * Soft-reset SDRAM controller.
++ */
++ mtsdr(sdr_srst, SDR0_SRST_DMC);
++ mtsdr(sdr_srst, 0x00000000);
++#endif
++
+ for (i=0; i<N_MB0CF; i++) {
+ /*
+ * Disable memory controller.
+diff -Naupr u-boot-1.1.6/cpu/ppc4xx/start.S u-boot-1.1.6-fsl-1/cpu/ppc4xx/start.S
+--- u-boot-1.1.6/cpu/ppc4xx/start.S 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/cpu/ppc4xx/start.S 2006-11-30 12:34:13.000000000 -0600
+@@ -204,6 +204,18 @@ _start_440:
+ mfspr r1,mcsr
+ mtspr mcsr,r1
+ #endif
++
++ /*----------------------------------------------------------------*/
++ /* CCR0 init */
++ /*----------------------------------------------------------------*/
++ /* Disable store gathering & broadcast, guarantee inst/data
++ * cache block touch, force load/store alignment
++ * (see errata 1.12: 440_33)
++ */
++ lis r1,0x0030 /* store gathering & broadcast disable */
++ ori r1,r1,0x6000 /* cache touch */
++ mtspr ccr0,r1
++
+ /*----------------------------------------------------------------*/
+ /* Initialize debug */
+ /*----------------------------------------------------------------*/
+@@ -225,17 +237,6 @@ _start_440:
+ mtspr dbsr,r1 /* Clear all valid bits */
+ skip_debug_init:
+
+- /*----------------------------------------------------------------*/
+- /* CCR0 init */
+- /*----------------------------------------------------------------*/
+- /* Disable store gathering & broadcast, guarantee inst/data
+- * cache block touch, force load/store alignment
+- * (see errata 1.12: 440_33)
+- */
+- lis r1,0x0030 /* store gathering & broadcast disable */
+- ori r1,r1,0x6000 /* cache touch */
+- mtspr ccr0,r1
+-
+ #if defined (CONFIG_440SPE)
+ /*----------------------------------------------------------------+
+ | Initialize Core Configuration Reg1.
+diff -Naupr u-boot-1.1.6/CREDITS u-boot-1.1.6-fsl-1/CREDITS
+--- u-boot-1.1.6/CREDITS 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/CREDITS 2006-11-10 11:24:28.000000000 -0600
+@@ -465,3 +465,8 @@ N: James MacAulay
+ E: james.macaulay@amirix.com
+ D: Suppport for Amirix AP1000
+ W: www.amirix.com
++
++N: Timur Tabi
++E: timur@freescale.com
++D: Support for MPC8349E-mITX
++W: www.freescale.com
+diff -Naupr u-boot-1.1.6/doc/README.mpc8360emds u-boot-1.1.6-fsl-1/doc/README.mpc8360emds
+--- u-boot-1.1.6/doc/README.mpc8360emds 1969-12-31 18:00:00.000000000 -0600
++++ u-boot-1.1.6-fsl-1/doc/README.mpc8360emds 2006-12-06 10:33:49.000000000 -0600
+@@ -0,0 +1,126 @@
++Freescale MPC8360EMDS Board
++-----------------------------------------
++1. Board Switches and Jumpers
++1.0 There are four Dual-In-Line Packages(DIP) Switches on MPC8360EMDS board
++ For some reason, the HW designers describe the switch settings
++ in terms of 0 and 1, and then map that to physical switches where
++ the label "On" refers to logic 0 and "Off" is logic 1.
++
++ Switch bits are numbered 1 through, like, 4 6 8 or 10, but the
++ bits may contribute to signals that are numbered based at 0,
++ and some of those signals may be high-bit-number-0 too. Heed
++ well the names and labels and do not get confused.
++
++ "Off" == 1
++ "On" == 0
++
++ SW18 is switch 18 as silk-screened onto the board.
++ SW4[8] is the bit labled 8 on Switch 4.
++ SW2[1:6] refers to bits labeled 1 through 6 in order on switch 2.
++ SW3[7:1] refers to bits labeled 7 through 1 in order on switch 3.
++ SW3[1:8]= 0000_0001 refers to bits labeled 1 through 6 is set as "On"
++ and bits labeled 8 is set as "Off".
++
++1.1 For the MPC8360E PB PROTO Board
++
++ First, make sure the board default setting is consistent with the
++ document shipped with your board. Then apply the following setting:
++ SW3[1-8]= 0000_0100 (HRCW setting value is performed on local bus)
++ SW4[1-8]= 0011_0000 (Flash boot on local bus)
++ SW9[1-8]= 0110_0110 (PCI Mode enabled. HRCW is read from FLASH)
++ SW10[1-8]= 0000_1000 (core PLL setting)
++ SW11[1-8]= 0000_0100 (SW11 is on the another side of the board)
++ JP6 1-2
++ on board Oscillator: 66M
++
++
++2. Memory Map
++
++2.1. The memory map should look pretty much like this:
++
++ 0x0000_0000 0x7fff_ffff DDR 2G
++ 0x8000_0000 0x8fff_ffff PCI MEM prefetch 256M
++ 0x9000_0000 0x9fff_ffff PCI MEM non-prefetch 256M
++ 0xc000_0000 0xdfff_ffff Empty 512M
++ 0xe000_0000 0xe01f_ffff Int Mem Reg Space 2M
++ 0xe020_0000 0xe02f_ffff Empty 1M
++ 0xe030_0000 0xe03f_ffff PCI IO 1M
++ 0xe040_0000 0xefff_ffff Empty 252M
++ 0xf000_0000 0xf3ff_ffff Local Bus SDRAM 64M
++ 0xf400_0000 0xf7ff_ffff Empty 64M
++ 0xf800_0000 0xf800_7fff BCSR on CS1 32K
++ 0xf800_8000 0xf800_ffff PIB CS4 32K
++ 0xf801_0000 0xf801_7fff PIB CS5 32K
++ 0xfe00_0000 0xfeff_ffff FLASH on CS0 16M
++
++
++3. Definitions
++
++3.1 Explanation of NEW definitions in:
++
++ include/configs/MPC8360EMDS.h
++
++ CONFIG_MPC83XX MPC83xx family for both MPC8349 and MPC8360
++ CONFIG_MPC8360 MPC8360 specific
++ CONFIG_MPC8360EMDS MPC8360EMDS board specific
++
++4. Compilation
++
++ Assuming you're using BASH shell:
++
++ export CROSS_COMPILE=your-cross-compile-prefix
++ cd u-boot
++ make distclean
++ make MPC8360EMDS_config
++ make
++
++ MPC8360 support PCI in host and slave mode.
++
++ To make u-boot support PCI host 66M :
++ 1) DIP SW support PCI mode as described in Section 1.1.
++ 2) Make MPC8360EMDS_HOST_66_config
++
++ To make u-boot support PCI host 33M :
++ 1) DIP SW setting is similar as Section 1.1, except for SW3[4] is 1
++ 2) Make MPC8360EMDS_HOST_33_config
++
++ To make u-boot support PCI slave 66M :
++ 1) DIP SW setting is similar as Section 1.1, except for SW9[3] is 1
++ 2) Make MPC8360EMDS_SLAVE_config
++
++
++5. Downloading and Flashing Images
++
++5.0 Download over serial line using Kermit:
++
++ loadb
++ [Drop to kermit:
++ ^\c
++ send <u-boot-bin-image>
++ c
++ ]
++
++
++ Or via tftp:
++
++ tftp 10000 u-boot.bin
++
++5.1 Reflash U-boot Image using U-boot
++
++ tftp 20000 u-boot.bin
++ protect off fef00000 fef3ffff
++ erase fef00000 fef3ffff
++
++ cp.b 20000 fef00000 xxxx
++
++ or
++
++ cp.b 20000 fef00000 3ffff
++
++
++You have to supply the correct byte count with 'xxxx' from the TFTP result log.
++Maybe 3ffff will work too, that corresponds to the erased sectors.
++
++
++6. Notes
++ 1) The console baudrate for MPC8360EMDS is 115200bps.
+diff -Naupr u-boot-1.1.6/drivers/cfi_flash.c u-boot-1.1.6-fsl-1/drivers/cfi_flash.c
+--- u-boot-1.1.6/drivers/cfi_flash.c 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/drivers/cfi_flash.c 2006-11-30 12:34:13.000000000 -0600
+@@ -4,11 +4,12 @@
+ *
+ * Copyright (C) 2003 Arabella Software Ltd.
+ * Yuli Barcohen <yuli@arabellasw.com>
+- * Modified to work with AMD flashes
+ *
+ * Copyright (C) 2004
+ * Ed Okerson
+- * Modified to work with little-endian systems.
++ *
++ * Copyright (C) 2006
++ * Tolunay Orkun <listmember@orkun.us>
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+@@ -28,17 +29,6 @@
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+- * History
+- * 01/20/2004 - combined variants of original driver.
+- * 01/22/2004 - Write performance enhancements for parallel chips (Tolunay)
+- * 01/23/2004 - Support for x8/x16 chips (Rune Raknerud)
+- * 01/27/2004 - Little endian support Ed Okerson
+- *
+- * Tested Architectures
+- * Port Width Chip Width # of banks Flash Chip Board
+- * 32 16 1 28F128J3 seranoa/eagle
+- * 64 16 1 28F128J3 seranoa/falcon
+- *
+ */
+
+ /* The DEBUG define must be before common to enable debugging */
+@@ -54,21 +44,16 @@
+ * This file implements a Common Flash Interface (CFI) driver for U-Boot.
+ * The width of the port and the width of the chips are determined at initialization.
+ * These widths are used to calculate the address for access CFI data structures.
+- * It has been tested on an Intel Strataflash implementation and AMD 29F016D.
+ *
+ * References
+ * JEDEC Standard JESD68 - Common Flash Interface (CFI)
+ * JEDEC Standard JEP137-A Common Flash Interface (CFI) ID Codes
+ * Intel Application Note 646 Common Flash Interface (CFI) and Command Sets
+ * Intel 290667-008 3 Volt Intel StrataFlash Memory datasheet
++ * AMD CFI Specification, Release 2.0 December 1, 2001
++ * AMD/Spansion Application Note: Migration from Single-byte to Three-byte
++ * Device IDs, Publication Number 25538 Revision A, November 8, 2001
+ *
+- * TODO
+- *
+- * Use Primary Extended Query table (PRI) and Alternate Algorithm Query
+- * Table (ALT) to determine if protection is available
+- *
+- * Add support for other command sets Use the PRI and ALT to determine command set
+- * Verify erase and program timeouts.
+ */
+
+ #ifndef CFG_FLASH_BANKS_LIST
+@@ -114,6 +99,10 @@
+ #define AMD_ADDR_START ((info->portwidth == FLASH_CFI_8BIT) ? 0xAAA : 0x555)
+ #define AMD_ADDR_ACK ((info->portwidth == FLASH_CFI_8BIT) ? 0x555 : 0x2AA)
+
++#define FLASH_OFFSET_MANUFACTURER_ID 0x00
++#define FLASH_OFFSET_DEVICE_ID 0x01
++#define FLASH_OFFSET_DEVICE_ID2 0x0E
++#define FLASH_OFFSET_DEVICE_ID3 0x0F
+ #define FLASH_OFFSET_CFI 0x55
+ #define FLASH_OFFSET_CFI_RESP 0x10
+ #define FLASH_OFFSET_PRIMARY_VENDOR 0x13
+@@ -135,25 +124,20 @@
+ #define FLASH_OFFSET_USER_PROTECTION 0x85
+ #define FLASH_OFFSET_INTEL_PROTECTION 0x81
+
+-
+-#define FLASH_MAN_CFI 0x01000000
+-
+-#define CFI_CMDSET_NONE 0
+-#define CFI_CMDSET_INTEL_EXTENDED 1
+-#define CFI_CMDSET_AMD_STANDARD 2
+-#define CFI_CMDSET_INTEL_STANDARD 3
+-#define CFI_CMDSET_AMD_EXTENDED 4
+-#define CFI_CMDSET_MITSU_STANDARD 256
+-#define CFI_CMDSET_MITSU_EXTENDED 257
+-#define CFI_CMDSET_SST 258
+-
++#define CFI_CMDSET_NONE 0
++#define CFI_CMDSET_INTEL_EXTENDED 1
++#define CFI_CMDSET_AMD_STANDARD 2
++#define CFI_CMDSET_INTEL_STANDARD 3
++#define CFI_CMDSET_AMD_EXTENDED 4
++#define CFI_CMDSET_MITSU_STANDARD 256
++#define CFI_CMDSET_MITSU_EXTENDED 257
++#define CFI_CMDSET_SST 258
+
+ #ifdef CFG_FLASH_CFI_AMD_RESET /* needed for STM_ID_29W320DB on UC100 */
+ # undef FLASH_CMD_RESET
+-# define FLASH_CMD_RESET AMD_CMD_RESET /* use AMD-Reset instead */
++# define FLASH_CMD_RESET AMD_CMD_RESET /* use AMD-Reset instead */
+ #endif
+
+-
+ typedef union {
+ unsigned char c;
+ unsigned short w;
+@@ -168,7 +152,7 @@ typedef union {
+ volatile unsigned long long *llp;
+ } cfiptr_t;
+
+-#define NUM_ERASE_REGIONS 4
++#define NUM_ERASE_REGIONS 4 /* max. number of erase regions */
+
+ /* use CFG_MAX_FLASH_BANKS_DETECT if defined */
+ #ifdef CFG_MAX_FLASH_BANKS_DETECT
+@@ -200,6 +184,7 @@ static void flash_unlock_seq (flash_info
+ static int flash_isequal (flash_info_t * info, flash_sect_t sect, uint offset, uchar cmd);
+ static int flash_isset (flash_info_t * info, flash_sect_t sect, uint offset, uchar cmd);
+ static int flash_toggle (flash_info_t * info, flash_sect_t sect, uint offset, uchar cmd);
++static void flash_read_jedec_ids (flash_info_t * info);
+ static int flash_detect_cfi (flash_info_t * info);
+ static int flash_write_cfiword (flash_info_t * info, ulong dest, cfiword_t cword);
+ static int flash_full_status_check (flash_info_t * info, flash_sect_t sector,
+@@ -307,7 +292,7 @@ ushort flash_read_ushort (flash_info_t *
+ }
+
+ /*-----------------------------------------------------------------------
+- * read a long word by picking the least significant byte of each maiximum
++ * read a long word by picking the least significant byte of each maximum
+ * port size word. Swap for ppc format.
+ */
+ ulong flash_read_long (flash_info_t * info, flash_sect_t sect, uint offset)
+@@ -529,14 +514,42 @@ void flash_print_info (flash_info_t * in
+ (info->portwidth << 3), (info->chipwidth << 3));
+ printf (" Size: %ld MB in %d Sectors\n",
+ info->size >> 20, info->sector_count);
+- printf (" Erase timeout %ld ms, write timeout %ld ms, buffer write timeout %ld ms, buffer size %d\n",
++ printf (" ");
++ switch (info->vendor) {
++ case CFI_CMDSET_INTEL_STANDARD:
++ printf ("Intel Standard");
++ break;
++ case CFI_CMDSET_INTEL_EXTENDED:
++ printf ("Intel Extended");
++ break;
++ case CFI_CMDSET_AMD_STANDARD:
++ printf ("AMD Standard");
++ break;
++ case CFI_CMDSET_AMD_EXTENDED:
++ printf ("AMD Extended");
++ break;
++ default:
++ printf ("Unknown (%d)", info->vendor);
++ break;
++ }
++ printf (" command set, Manufacturer ID: 0x%02X, Device ID: 0x%02X",
++ info->manufacturer_id, info->device_id);
++ if (info->device_id == 0x7E) {
++ printf("%04X", info->device_id2);
++ }
++ printf ("\n Erase timeout: %ld ms, write timeout: %ld ms\n",
+ info->erase_blk_tout,
+- info->write_tout,
++ info->write_tout);
++ if (info->buffer_size > 1) {
++ printf (" Buffer write timeout: %ld ms, buffer size: %d bytes\n",
+ info->buffer_write_tout,
+ info->buffer_size);
++ }
+
+- puts (" Sector Start Addresses:");
++ puts ("\n Sector Start Addresses:");
+ for (i = 0; i < info->sector_count; ++i) {
++ if ((i % 5) == 0)
++ printf ("\n");
+ #ifdef CFG_FLASH_EMPTY_INFO
+ int k;
+ int size;
+@@ -560,18 +573,15 @@ void flash_print_info (flash_info_t * in
+ }
+ }
+
+- if ((i % 5) == 0)
+- printf ("\n");
+ /* print empty and read-only info */
+- printf (" %08lX%s%s",
++ printf (" %08lX %c %s ",
+ info->start[i],
+- erased ? " E" : " ",
+- info->protect[i] ? "RO " : " ");
++ erased ? 'E' : ' ',
++ info->protect[i] ? "RO" : " ");
+ #else /* ! CFG_FLASH_EMPTY_INFO */
+- if ((i % 5) == 0)
+- printf ("\n ");
+- printf (" %08lX%s",
+- info->start[i], info->protect[i] ? " (RO)" : " ");
++ printf (" %08lX %s ",
++ info->start[i],
++ info->protect[i] ? "RO" : " ");
+ #endif
+ }
+ putc ('\n');
+@@ -1071,6 +1081,55 @@ static int flash_toggle (flash_info_t *
+ }
+
+ /*-----------------------------------------------------------------------
++ * read jedec ids from device and set corresponding fields in info struct
++ *
++ * Note: assume cfi->vendor, cfi->portwidth and cfi->chipwidth are correct
++ *
++*/
++static void flash_read_jedec_ids (flash_info_t * info)
++{
++ info->manufacturer_id = 0;
++ info->device_id = 0;
++ info->device_id2 = 0;
++
++ switch (info->vendor) {
++ case CFI_CMDSET_INTEL_STANDARD:
++ case CFI_CMDSET_INTEL_EXTENDED:
++ flash_write_cmd(info, 0, 0, FLASH_CMD_RESET);
++ flash_write_cmd(info, 0, 0, FLASH_CMD_READ_ID);
++ udelay(1000); /* some flash are slow to respond */
++ info->manufacturer_id = flash_read_uchar (info,
++ FLASH_OFFSET_MANUFACTURER_ID);
++ info->device_id = flash_read_uchar (info,
++ FLASH_OFFSET_DEVICE_ID);
++ flash_write_cmd(info, 0, 0, FLASH_CMD_RESET);
++ break;
++ case CFI_CMDSET_AMD_STANDARD:
++ case CFI_CMDSET_AMD_EXTENDED:
++ flash_write_cmd(info, 0, 0, AMD_CMD_RESET);
++ flash_unlock_seq(info, 0);
++ flash_write_cmd(info, 0, AMD_ADDR_START, FLASH_CMD_READ_ID);
++ udelay(1000); /* some flash are slow to respond */
++ info->manufacturer_id = flash_read_uchar (info,
++ FLASH_OFFSET_MANUFACTURER_ID);
++ info->device_id = flash_read_uchar (info,
++ FLASH_OFFSET_DEVICE_ID);
++ if (info->device_id == 0x7E) {
++ /* AMD 3-byte (expanded) device ids */
++ info->device_id2 = flash_read_uchar (info,
++ FLASH_OFFSET_DEVICE_ID2);
++ info->device_id2 <<= 8;
++ info->device_id2 |= flash_read_uchar (info,
++ FLASH_OFFSET_DEVICE_ID3);
++ }
++ flash_write_cmd(info, 0, 0, AMD_CMD_RESET);
++ break;
++ default:
++ break;
++ }
++}
++
++/*-----------------------------------------------------------------------
+ * detect if flash is compatible with the Common Flash Interface (CFI)
+ * http://www.jedec.org/download/search/jesd68.pdf
+ *
+@@ -1120,15 +1179,31 @@ ulong flash_get_size (ulong base, int ba
+ uchar num_erase_regions;
+ int erase_region_size;
+ int erase_region_count;
++ int geometry_reversed = 0;
++
++ info->ext_addr = 0;
++ info->cfi_version = 0;
+ #ifdef CFG_FLASH_PROTECTION
+- int ext_addr;
+ info->legacy_unlock = 0;
+ #endif
+
+ info->start[0] = base;
+
+ if (flash_detect_cfi (info)) {
+- info->vendor = flash_read_ushort (info, 0, FLASH_OFFSET_PRIMARY_VENDOR);
++ info->vendor = flash_read_ushort (info, 0,
++ FLASH_OFFSET_PRIMARY_VENDOR);
++ flash_read_jedec_ids (info);
++ flash_write_cmd (info, 0, FLASH_OFFSET_CFI, FLASH_CMD_CFI);
++ num_erase_regions = flash_read_uchar (info,
++ FLASH_OFFSET_NUM_ERASE_REGIONS);
++ info->ext_addr = flash_read_ushort (info, 0,
++ FLASH_OFFSET_EXT_QUERY_T_P_ADDR);
++ if (info->ext_addr) {
++ info->cfi_version = (ushort) flash_read_uchar (info,
++ info->ext_addr + 3) << 8;
++ info->cfi_version |= (ushort) flash_read_uchar (info,
++ info->ext_addr + 4);
++ }
+ #ifdef DEBUG
+ flash_printqry (info, 0);
+ #endif
+@@ -1139,26 +1214,46 @@ ulong flash_get_size (ulong base, int ba
+ info->cmd_reset = FLASH_CMD_RESET;
+ #ifdef CFG_FLASH_PROTECTION
+ /* read legacy lock/unlock bit from intel flash */
+- ext_addr = flash_read_ushort (info, 0,
+- FLASH_OFFSET_EXT_QUERY_T_P_ADDR);
+- info->legacy_unlock =
+- flash_read_uchar (info, ext_addr + 5) & 0x08;
++ if (info->ext_addr) {
++ info->legacy_unlock = flash_read_uchar (info,
++ info->ext_addr + 5) & 0x08;
++ }
+ #endif
+ break;
+ case CFI_CMDSET_AMD_STANDARD:
+ case CFI_CMDSET_AMD_EXTENDED:
+ info->cmd_reset = AMD_CMD_RESET;
++ /* check if flash geometry needs reversal */
++ if (num_erase_regions <= 1)
++ break;
++ /* reverse geometry if top boot part */
++ if (info->cfi_version < 0x3131) {
++ /* CFI < 1.1, try to guess from device id */
++ if ((info->device_id & 0x80) != 0) {
++ geometry_reversed = 1;
++ }
++ break;
++ }
++ /* CFI >= 1.1, deduct from top/bottom flag */
++ /* note: ext_addr is valid since cfi_version > 0 */
++ if (flash_read_uchar(info, info->ext_addr + 0xf) == 3) {
++ geometry_reversed = 1;
++ }
+ break;
+ }
+
+ debug ("manufacturer is %d\n", info->vendor);
++ debug ("manufacturer id is 0x%x\n", info->manufacturer_id);
++ debug ("device id is 0x%x\n", info->device_id);
++ debug ("device id2 is 0x%x\n", info->device_id2);
++ debug ("cfi version is 0x%04x\n", info->cfi_version);
++
+ size_ratio = info->portwidth / info->chipwidth;
+ /* if the chip is x8/x16 reduce the ratio by half */
+ if ((info->interface == FLASH_CFI_X8X16)
+ && (info->chipwidth == FLASH_CFI_BY8)) {
+ size_ratio >>= 1;
+ }
+- num_erase_regions = flash_read_uchar (info, FLASH_OFFSET_NUM_ERASE_REGIONS);
+ debug ("size_ratio %d port %d bits chip %d bits\n",
+ size_ratio, info->portwidth << CFI_FLASH_SHIFT_WIDTH,
+ info->chipwidth << CFI_FLASH_SHIFT_WIDTH);
+@@ -1171,7 +1266,12 @@ ulong flash_get_size (ulong base, int ba
+ num_erase_regions, NUM_ERASE_REGIONS);
+ break;
+ }
+- tmp = flash_read_long (info, 0,
++ if (geometry_reversed)
++ tmp = flash_read_long (info, 0,
++ FLASH_OFFSET_ERASE_REGIONS +
++ (num_erase_regions - 1 - i) * 4);
++ else
++ tmp = flash_read_long (info, 0,
+ FLASH_OFFSET_ERASE_REGIONS +
+ i * 4);
+ erase_region_size =
+diff -Naupr u-boot-1.1.6/drivers/fsl_i2c.c u-boot-1.1.6-fsl-1/drivers/fsl_i2c.c
+--- u-boot-1.1.6/drivers/fsl_i2c.c 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/drivers/fsl_i2c.c 2006-11-30 12:34:13.000000000 -0600
+@@ -28,29 +28,52 @@
+ #include <asm/fsl_i2c.h> /* HW definitions */
+
+ #define I2C_TIMEOUT (CFG_HZ / 4)
+-#define I2C ((struct fsl_i2c *)(CFG_IMMR + CFG_I2C_OFFSET))
+
++#define I2C_READ_BIT 1
++#define I2C_WRITE_BIT 0
++
++/* Initialize the bus pointer to whatever one the SPD EEPROM is on.
++ * Default is bus 0. This is necessary because the DDR initialization
++ * runs from ROM, and we can't switch buses because we can't modify
++ * the global variables.
++ */
++#ifdef CFG_SPD_BUS_NUM
++static unsigned int i2c_bus_num __attribute__ ((section ("data"))) = CFG_SPD_BUS_NUM;
++#else
++static unsigned int i2c_bus_num __attribute__ ((section ("data"))) = 0;
++#endif
++
++static volatile struct fsl_i2c *i2c_dev[2] = {
++ (struct fsl_i2c *) (CFG_IMMR + CFG_I2C_OFFSET),
++#ifdef CFG_I2C2_OFFSET
++ (struct fsl_i2c *) (CFG_IMMR + CFG_I2C2_OFFSET)
++#endif
++};
+
+ void
+ i2c_init(int speed, int slaveadd)
+ {
+- /* stop I2C controller */
+- writeb(0x0, &I2C->cr);
+-
+- /* set clock */
+- writeb(0x3f, &I2C->fdr);
+-
+- /* set default filter */
+- writeb(0x10, &I2C->dfsrr);
++ volatile struct fsl_i2c *dev;
+
+- /* write slave address */
+- writeb(slaveadd, &I2C->adr);
++ dev = (struct fsl_i2c *) (CFG_IMMR + CFG_I2C_OFFSET);
+
+- /* clear status register */
+- writeb(0x0, &I2C->sr);
+-
+- /* start I2C controller */
+- writeb(I2C_CR_MEN, &I2C->cr);
++ writeb(0, &dev->cr); /* stop I2C controller */
++ writeb(0x3F, &dev->fdr); /* set bus speed */
++ writeb(0x3F, &dev->dfsrr); /* set default filter */
++ writeb(slaveadd << 1, &dev->adr); /* write slave address */
++ writeb(0x0, &dev->sr); /* clear status register */
++ writeb(I2C_CR_MEN, &dev->cr); /* start I2C controller */
++
++#ifdef CFG_I2C2_OFFSET
++ dev = (struct fsl_i2c *) (CFG_IMMR + CFG_I2C2_OFFSET);
++
++ writeb(0, &dev->cr); /* stop I2C controller */
++ writeb(0x3F, &dev->fdr); /* set bus speed */
++ writeb(0x3F, &dev->dfsrr); /* set default filter */
++ writeb(slaveadd, &dev->adr); /* write slave address */
++ writeb(0x0, &dev->sr); /* clear status register */
++ writeb(I2C_CR_MEN, &dev->cr); /* start I2C controller */
++#endif /* CFG_I2C2_OFFSET */
+ }
+
+ static __inline__ int
+@@ -58,7 +81,7 @@ i2c_wait4bus(void)
+ {
+ ulong timeval = get_timer(0);
+
+- while (readb(&I2C->sr) & I2C_SR_MBB) {
++ while (readb(&i2c_dev[i2c_bus_num]->sr) & I2C_SR_MBB) {
+ if (get_timer(timeval) > I2C_TIMEOUT) {
+ return -1;
+ }
+@@ -74,11 +97,11 @@ i2c_wait(int write)
+ ulong timeval = get_timer(0);
+
+ do {
+- csr = readb(&I2C->sr);
++ csr = readb(&i2c_dev[i2c_bus_num]->sr);
+ if (!(csr & I2C_SR_MIF))
+ continue;
+
+- writeb(0x0, &I2C->sr);
++ writeb(0x0, &i2c_dev[i2c_bus_num]->sr);
+
+ if (csr & I2C_SR_MAL) {
+ debug("i2c_wait: MAL\n");
+@@ -90,7 +113,7 @@ i2c_wait(int write)
+ return -1;
+ }
+
+- if (write == I2C_WRITE && (csr & I2C_SR_RXAK)) {
++ if (write == I2C_WRITE_BIT && (csr & I2C_SR_RXAK)) {
+ debug("i2c_wait: No RXACK\n");
+ return -1;
+ }
+@@ -107,11 +130,11 @@ i2c_write_addr (u8 dev, u8 dir, int rsta
+ {
+ writeb(I2C_CR_MEN | I2C_CR_MSTA | I2C_CR_MTX
+ | (rsta ? I2C_CR_RSTA : 0),
+- &I2C->cr);
++ &i2c_dev[i2c_bus_num]->cr);
+
+- writeb((dev << 1) | dir, &I2C->dr);
++ writeb((dev << 1) | dir, &i2c_dev[i2c_bus_num]->dr);
+
+- if (i2c_wait(I2C_WRITE) < 0)
++ if (i2c_wait(I2C_WRITE_BIT) < 0)
+ return 0;
+
+ return 1;
+@@ -123,12 +146,12 @@ __i2c_write(u8 *data, int length)
+ int i;
+
+ writeb(I2C_CR_MEN | I2C_CR_MSTA | I2C_CR_MTX,
+- &I2C->cr);
++ &i2c_dev[i2c_bus_num]->cr);
+
+ for (i = 0; i < length; i++) {
+- writeb(data[i], &I2C->dr);
++ writeb(data[i], &i2c_dev[i2c_bus_num]->dr);
+
+- if (i2c_wait(I2C_WRITE) < 0)
++ if (i2c_wait(I2C_WRITE_BIT) < 0)
+ break;
+ }
+
+@@ -141,25 +164,25 @@ __i2c_read(u8 *data, int length)
+ int i;
+
+ writeb(I2C_CR_MEN | I2C_CR_MSTA | ((length == 1) ? I2C_CR_TXAK : 0),
+- &I2C->cr);
++ &i2c_dev[i2c_bus_num]->cr);
+
+ /* dummy read */
+- readb(&I2C->dr);
++ readb(&i2c_dev[i2c_bus_num]->dr);
+
+ for (i = 0; i < length; i++) {
+- if (i2c_wait(I2C_READ) < 0)
++ if (i2c_wait(I2C_READ_BIT) < 0)
+ break;
+
+ /* Generate ack on last next to last byte */
+ if (i == length - 2)
+ writeb(I2C_CR_MEN | I2C_CR_MSTA | I2C_CR_TXAK,
+- &I2C->cr);
++ &i2c_dev[i2c_bus_num]->cr);
+
+ /* Generate stop on last byte */
+ if (i == length - 1)
+- writeb(I2C_CR_MEN | I2C_CR_TXAK, &I2C->cr);
++ writeb(I2C_CR_MEN | I2C_CR_TXAK, &i2c_dev[i2c_bus_num]->cr);
+
+- data[i] = readb(&I2C->dr);
++ data[i] = readb(&i2c_dev[i2c_bus_num]->dr);
+ }
+
+ return i;
+@@ -172,13 +195,13 @@ i2c_read(u8 dev, uint addr, int alen, u8
+ u8 *a = (u8*)&addr;
+
+ if (i2c_wait4bus() >= 0
+- && i2c_write_addr(dev, I2C_WRITE, 0) != 0
++ && i2c_write_addr(dev, I2C_WRITE_BIT, 0) != 0
+ && __i2c_write(&a[4 - alen], alen) == alen
+- && i2c_write_addr(dev, I2C_READ, 1) != 0) {
++ && i2c_write_addr(dev, I2C_READ_BIT, 1) != 0) {
+ i = __i2c_read(data, length);
+ }
+
+- writeb(I2C_CR_MEN, &I2C->cr);
++ writeb(I2C_CR_MEN, &i2c_dev[i2c_bus_num]->cr);
+
+ if (i == length)
+ return 0;
+@@ -193,12 +216,12 @@ i2c_write(u8 dev, uint addr, int alen, u
+ u8 *a = (u8*)&addr;
+
+ if (i2c_wait4bus() >= 0
+- && i2c_write_addr(dev, I2C_WRITE, 0) != 0
++ && i2c_write_addr(dev, I2C_WRITE_BIT, 0) != 0
+ && __i2c_write(&a[4 - alen], alen) == alen) {
+ i = __i2c_write(data, length);
+ }
+
+- writeb(I2C_CR_MEN, &I2C->cr);
++ writeb(I2C_CR_MEN, &i2c_dev[i2c_bus_num]->cr);
+
+ if (i == length)
+ return 0;
+@@ -237,5 +260,34 @@ i2c_reg_write(uchar i2c_addr, uchar reg,
+ i2c_write(i2c_addr, reg, 1, &val, 1);
+ }
+
++int i2c_set_bus_num(unsigned int bus)
++{
++#ifdef CFG_I2C2_OFFSET
++ if (bus > 1) {
++#else
++ if (bus > 0) {
++#endif
++ return -1;
++ }
++
++ i2c_bus_num = bus;
++
++ return 0;
++}
++
++int i2c_set_bus_speed(unsigned int speed)
++{
++ return -1;
++}
++
++unsigned int i2c_get_bus_num(void)
++{
++ return i2c_bus_num;
++}
++
++unsigned int i2c_get_bus_speed(void)
++{
++ return 0;
++}
+ #endif /* CONFIG_HARD_I2C */
+ #endif /* CONFIG_FSL_I2C */
+diff -Naupr u-boot-1.1.6/drivers/nand/nand_base.c u-boot-1.1.6-fsl-1/drivers/nand/nand_base.c
+--- u-boot-1.1.6/drivers/nand/nand_base.c 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/drivers/nand/nand_base.c 2006-12-06 10:33:49.000000000 -0600
+@@ -838,9 +838,9 @@ static int nand_wait(struct mtd_info *mt
+ unsigned long timeo;
+
+ if (state == FL_ERASING)
+- timeo = CFG_HZ * 400;
++ timeo = (CFG_HZ * 400) / 1000;
+ else
+- timeo = CFG_HZ * 20;
++ timeo = (CFG_HZ * 20) / 1000;
+
+ if ((state == FL_ERASING) && (this->options & NAND_IS_AND))
+ this->cmdfunc(mtd, NAND_CMD_STATUS_MULTI, -1, -1);
+@@ -852,8 +852,8 @@ static int nand_wait(struct mtd_info *mt
+ while (1) {
+ if (get_timer(0) > timeo) {
+ printf("Timeout!");
+- return 0;
+- }
++ return 0x01;
++ }
+
+ if (this->dev_ready) {
+ if (this->dev_ready(mtd))
+@@ -1713,6 +1713,7 @@ static int nand_write_ecc (struct mtd_in
+ goto out;
+ }
+ *retlen = written;
++ bufstart = (u_char*) &buf[written];
+
+ ofs = autoplace ? mtd->oobavail : mtd->oobsize;
+ if (eccbuf)
+@@ -2407,7 +2408,9 @@ int nand_scan (struct mtd_info *mtd, int
+ }
+
+ if (!nand_flash_ids[i].name) {
++#ifndef CFG_NAND_QUIET_TEST
+ printk (KERN_WARNING "No NAND device found!!!\n");
++#endif
+ this->select_chip(mtd, -1);
+ return 1;
+ }
+diff -Naupr u-boot-1.1.6/drivers/qe/Makefile u-boot-1.1.6-fsl-1/drivers/qe/Makefile
+--- u-boot-1.1.6/drivers/qe/Makefile 1969-12-31 18:00:00.000000000 -0600
++++ u-boot-1.1.6-fsl-1/drivers/qe/Makefile 2006-11-10 11:24:29.000000000 -0600
+@@ -0,0 +1,43 @@
++#
++# Copyright (C) 2006 Freescale Semiconductor, Inc.
++#
++# See file CREDITS for list of people who contributed to this
++# project.
++#
++# 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
++#
++
++include $(TOPDIR)/config.mk
++
++LIB := $(obj)qe.a
++
++COBJS := qe.o uccf.o uec.o uec_phy.o
++
++SRCS := $(COBJS:.o=.c)
++OBJS := $(addprefix $(obj),$(COBJS))
++
++all: $(LIB)
++
++$(LIB): $(obj).depend $(OBJS)
++ $(AR) $(ARFLAGS) $@ $(OBJS)
++
++#########################################################################
++
++include $(SRCTREE)/rules.mk
++
++sinclude $(obj).depend
++
++#########################################################################
+diff -Naupr u-boot-1.1.6/drivers/qe/qe.c u-boot-1.1.6-fsl-1/drivers/qe/qe.c
+--- u-boot-1.1.6/drivers/qe/qe.c 1969-12-31 18:00:00.000000000 -0600
++++ u-boot-1.1.6-fsl-1/drivers/qe/qe.c 2006-11-10 11:24:29.000000000 -0600
+@@ -0,0 +1,254 @@
++/*
++ * Copyright (C) 2006 Freescale Semiconductor, Inc.
++ *
++ * Dave Liu <daveliu@freescale.com>
++ * based on source code of Shlomi Gridish
++ *
++ * 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
++ */
++
++#include "common.h"
++#include "asm/errno.h"
++#include "asm/io.h"
++#include "asm/immap_qe.h"
++#include "qe.h"
++
++#if defined(CONFIG_QE)
++qe_map_t *qe_immr = NULL;
++static qe_snum_t snums[QE_NUM_OF_SNUM];
++
++void qe_issue_cmd(uint cmd, uint sbc, u8 mcn, u32 cmd_data)
++{
++ u32 cecr;
++
++ if (cmd == QE_RESET) {
++ out_be32(&qe_immr->cp.cecr,(u32) (cmd | QE_CR_FLG));
++ } else {
++ out_be32(&qe_immr->cp.cecdr, cmd_data);
++ out_be32(&qe_immr->cp.cecr, (sbc | QE_CR_FLG |
++ ((u32) mcn<<QE_CR_PROTOCOL_SHIFT) | cmd));
++ }
++ /* Wait for the QE_CR_FLG to clear */
++ do {
++ cecr = in_be32(&qe_immr->cp.cecr);
++ } while (cecr & QE_CR_FLG);
++
++ return;
++}
++
++uint qe_muram_alloc(uint size, uint align)
++{
++ DECLARE_GLOBAL_DATA_PTR;
++
++ uint retloc;
++ uint align_mask, off;
++ uint savebase;
++
++ align_mask = align - 1;
++ savebase = gd->mp_alloc_base;
++
++ if ((off = (gd->mp_alloc_base & align_mask)) != 0)
++ gd->mp_alloc_base += (align - off);
++
++ if ((off = size & align_mask) != 0)
++ size += (align - off);
++
++ if ((gd->mp_alloc_base + size) >= gd->mp_alloc_top) {
++ gd->mp_alloc_base = savebase;
++ printf("%s: ran out of ram.\n", __FUNCTION__);
++ }
++
++ retloc = gd->mp_alloc_base;
++ gd->mp_alloc_base += size;
++
++ memset((void *)&qe_immr->muram[retloc], 0, size);
++
++ __asm__ __volatile__("sync");
++
++ return retloc;
++}
++
++void *qe_muram_addr(uint offset)
++{
++ return (void *)&qe_immr->muram[offset];
++}
++
++static void qe_sdma_init(void)
++{
++ volatile sdma_t *p;
++ uint sdma_buffer_base;
++
++ p = (volatile sdma_t *)&qe_immr->sdma;
++
++ /* All of DMA transaction in bus 1 */
++ out_be32(&p->sdaqr, 0);
++ out_be32(&p->sdaqmr, 0);
++
++ /* Allocate 2KB temporary buffer for sdma */
++ sdma_buffer_base = qe_muram_alloc(2048, 64);
++ out_be32(&p->sdwbcr, sdma_buffer_base & QE_SDEBCR_BA_MASK);
++
++ /* Clear sdma status */
++ out_be32(&p->sdsr, 0x03000000);
++
++ /* Enable global mode on bus 1, and 2KB buffer size */
++ out_be32(&p->sdmr, QE_SDMR_GLB_1_MSK | (0x3 << QE_SDMR_CEN_SHIFT));
++}
++
++static u8 thread_snum[QE_NUM_OF_SNUM] = {
++ 0x04, 0x05, 0x0c, 0x0d,
++ 0x14, 0x15, 0x1c, 0x1d,
++ 0x24, 0x25, 0x2c, 0x2d,
++ 0x34, 0x35, 0x88, 0x89,
++ 0x98, 0x99, 0xa8, 0xa9,
++ 0xb8, 0xb9, 0xc8, 0xc9,
++ 0xd8, 0xd9, 0xe8, 0xe9
++};
++
++static void qe_snums_init(void)
++{
++ int i;
++
++ for (i = 0; i < QE_NUM_OF_SNUM; i++) {
++ snums[i].state = QE_SNUM_STATE_FREE;
++ snums[i].num = thread_snum[i];
++ }
++}
++
++int qe_get_snum(void)
++{
++ int snum = -EBUSY;
++ int i;
++
++ for (i = 0; i < QE_NUM_OF_SNUM; i++) {
++ if (snums[i].state == QE_SNUM_STATE_FREE) {
++ snums[i].state = QE_SNUM_STATE_USED;
++ snum = snums[i].num;
++ break;
++ }
++ }
++
++ return snum;
++}
++
++void qe_put_snum(u8 snum)
++{
++ int i;
++
++ for (i = 0; i < QE_NUM_OF_SNUM; i++) {
++ if (snums[i].num == snum) {
++ snums[i].state = QE_SNUM_STATE_FREE;
++ break;
++ }
++ }
++}
++
++void qe_init(uint qe_base)
++{
++ DECLARE_GLOBAL_DATA_PTR;
++
++ /* Init the QE IMMR base */
++ qe_immr = (qe_map_t *)qe_base;
++
++ gd->mp_alloc_base = QE_DATAONLY_BASE;
++ gd->mp_alloc_top = gd->mp_alloc_base + QE_DATAONLY_SIZE;
++
++ qe_sdma_init();
++ qe_snums_init();
++}
++
++void qe_reset(void)
++{
++ qe_issue_cmd(QE_RESET, QE_CR_SUBBLOCK_INVALID,
++ (u8) QE_CR_PROTOCOL_UNSPECIFIED, 0);
++}
++
++void qe_assign_page(uint snum, uint para_ram_base)
++{
++ u32 cecr;
++
++ out_be32(&qe_immr->cp.cecdr, para_ram_base);
++ out_be32(&qe_immr->cp.cecr, ((u32) snum<<QE_CR_ASSIGN_PAGE_SNUM_SHIFT)
++ | QE_CR_FLG | QE_ASSIGN_PAGE);
++
++ /* Wait for the QE_CR_FLG to clear */
++ do {
++ cecr = in_be32(&qe_immr->cp.cecr);
++ } while (cecr & QE_CR_FLG );
++
++ return;
++}
++
++/*
++ * brg: 0~15 as BRG1~BRG16
++ rate: baud rate
++ * BRG input clock comes from the BRGCLK (internal clock generated from
++ the QE clock, it is one-half of the QE clock), If need the clock source
++ from CLKn pin, we have te change the function.
++ */
++
++#define BRG_CLK (gd->brg_clk)
++
++int qe_set_brg(uint brg, uint rate)
++{
++ DECLARE_GLOBAL_DATA_PTR;
++ volatile uint *bp;
++ u32 divisor;
++ int div16 = 0;
++
++ if (brg >= QE_NUM_OF_BRGS)
++ return -EINVAL;
++ bp = (uint *)&qe_immr->brg.brgc1;
++ bp += brg;
++
++ divisor = (BRG_CLK / rate);
++ if (divisor > QE_BRGC_DIVISOR_MAX + 1) {
++ div16 = 1;
++ divisor /= 16;
++ }
++
++ *bp = ((divisor - 1) << QE_BRGC_DIVISOR_SHIFT) | QE_BRGC_ENABLE;
++ __asm__ __volatile__("sync");
++
++ if (div16) {
++ *bp |= QE_BRGC_DIV16;
++ __asm__ __volatile__("sync");
++ }
++
++ return 0;
++}
++
++/* Set ethernet MII clock master
++*/
++int qe_set_mii_clk_src(int ucc_num)
++{
++ u32 cmxgcr;
++
++ /* check if the UCC number is in range. */
++ if ((ucc_num > UCC_MAX_NUM - 1) || (ucc_num < 0)) {
++ printf("%s: ucc num not in ranges\n", __FUNCTION__);
++ return -EINVAL;
++ }
++
++ cmxgcr = in_be32(&qe_immr->qmx.cmxgcr);
++ cmxgcr &= ~QE_CMXGCR_MII_ENET_MNG_MASK;
++ cmxgcr |= (ucc_num <<QE_CMXGCR_MII_ENET_MNG_SHIFT);
++ out_be32(&qe_immr->qmx.cmxgcr, cmxgcr);
++
++ return 0;
++}
++
++#endif /* CONFIG_QE */
+diff -Naupr u-boot-1.1.6/drivers/qe/qe.h u-boot-1.1.6-fsl-1/drivers/qe/qe.h
+--- u-boot-1.1.6/drivers/qe/qe.h 1969-12-31 18:00:00.000000000 -0600
++++ u-boot-1.1.6-fsl-1/drivers/qe/qe.h 2006-11-10 11:24:29.000000000 -0600
+@@ -0,0 +1,237 @@
++/*
++ * Copyright (C) 2006 Freescale Semiconductor, Inc.
++ *
++ * Dave Liu <daveliu@freescale.com>
++ * based on source code of Shlomi Gridish
++ *
++ * 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
++ */
++
++#ifndef __QE_H__
++#define __QE_H__
++
++#include "common.h"
++
++#define QE_NUM_OF_SNUM 28
++#define QE_NUM_OF_BRGS 16
++#define UCC_MAX_NUM 8
++
++#define QE_DATAONLY_BASE (uint)(128)
++#define QE_DATAONLY_SIZE ((uint)(0xc000) - QE_DATAONLY_BASE)
++
++/* QE threads SNUM
++*/
++typedef enum qe_snum_state {
++ QE_SNUM_STATE_USED, /* used */
++ QE_SNUM_STATE_FREE /* free */
++} qe_snum_state_e;
++
++typedef struct qe_snum {
++ u8 num; /* snum */
++ qe_snum_state_e state; /* state */
++} qe_snum_t;
++
++/* QE RISC allocation
++*/
++typedef enum qe_risc_allocation {
++ QE_RISC_ALLOCATION_RISC1 = 1, /* RISC 1 */
++ QE_RISC_ALLOCATION_RISC2 = 2, /* RISC 2 */
++ QE_RISC_ALLOCATION_RISC1_AND_RISC2 = 3 /* RISC 1 or RISC 2 */
++} qe_risc_allocation_e;
++
++/* QE CECR commands for UCC fast.
++*/
++#define QE_CR_FLG 0x00010000
++#define QE_RESET 0x80000000
++#define QE_INIT_TX_RX 0x00000000
++#define QE_INIT_RX 0x00000001
++#define QE_INIT_TX 0x00000002
++#define QE_ENTER_HUNT_MODE 0x00000003
++#define QE_STOP_TX 0x00000004
++#define QE_GRACEFUL_STOP_TX 0x00000005
++#define QE_RESTART_TX 0x00000006
++#define QE_SWITCH_COMMAND 0x00000007
++#define QE_SET_GROUP_ADDRESS 0x00000008
++#define QE_INSERT_CELL 0x00000009
++#define QE_ATM_TRANSMIT 0x0000000a
++#define QE_CELL_POOL_GET 0x0000000b
++#define QE_CELL_POOL_PUT 0x0000000c
++#define QE_IMA_HOST_CMD 0x0000000d
++#define QE_ATM_MULTI_THREAD_INIT 0x00000011
++#define QE_ASSIGN_PAGE 0x00000012
++#define QE_START_FLOW_CONTROL 0x00000014
++#define QE_STOP_FLOW_CONTROL 0x00000015
++#define QE_ASSIGN_PAGE_TO_DEVICE 0x00000016
++#define QE_GRACEFUL_STOP_RX 0x0000001a
++#define QE_RESTART_RX 0x0000001b
++
++/* QE CECR Sub Block Code - sub block code of QE command.
++*/
++#define QE_CR_SUBBLOCK_INVALID 0x00000000
++#define QE_CR_SUBBLOCK_USB 0x03200000
++#define QE_CR_SUBBLOCK_UCCFAST1 0x02000000
++#define QE_CR_SUBBLOCK_UCCFAST2 0x02200000
++#define QE_CR_SUBBLOCK_UCCFAST3 0x02400000
++#define QE_CR_SUBBLOCK_UCCFAST4 0x02600000
++#define QE_CR_SUBBLOCK_UCCFAST5 0x02800000
++#define QE_CR_SUBBLOCK_UCCFAST6 0x02a00000
++#define QE_CR_SUBBLOCK_UCCFAST7 0x02c00000
++#define QE_CR_SUBBLOCK_UCCFAST8 0x02e00000
++#define QE_CR_SUBBLOCK_UCCSLOW1 0x00000000
++#define QE_CR_SUBBLOCK_UCCSLOW2 0x00200000
++#define QE_CR_SUBBLOCK_UCCSLOW3 0x00400000
++#define QE_CR_SUBBLOCK_UCCSLOW4 0x00600000
++#define QE_CR_SUBBLOCK_UCCSLOW5 0x00800000
++#define QE_CR_SUBBLOCK_UCCSLOW6 0x00a00000
++#define QE_CR_SUBBLOCK_UCCSLOW7 0x00c00000
++#define QE_CR_SUBBLOCK_UCCSLOW8 0x00e00000
++#define QE_CR_SUBBLOCK_MCC1 0x03800000
++#define QE_CR_SUBBLOCK_MCC2 0x03a00000
++#define QE_CR_SUBBLOCK_MCC3 0x03000000
++#define QE_CR_SUBBLOCK_IDMA1 0x02800000
++#define QE_CR_SUBBLOCK_IDMA2 0x02a00000
++#define QE_CR_SUBBLOCK_IDMA3 0x02c00000
++#define QE_CR_SUBBLOCK_IDMA4 0x02e00000
++#define QE_CR_SUBBLOCK_HPAC 0x01e00000
++#define QE_CR_SUBBLOCK_SPI1 0x01400000
++#define QE_CR_SUBBLOCK_SPI2 0x01600000
++#define QE_CR_SUBBLOCK_RAND 0x01c00000
++#define QE_CR_SUBBLOCK_TIMER 0x01e00000
++#define QE_CR_SUBBLOCK_GENERAL 0x03c00000
++
++/* QE CECR Protocol - For non-MCC, specifies mode for QE CECR command.
++*/
++#define QE_CR_PROTOCOL_UNSPECIFIED 0x00 /* For all other protocols */
++#define QE_CR_PROTOCOL_HDLC_TRANSPARENT 0x00
++#define QE_CR_PROTOCOL_ATM_POS 0x0A
++#define QE_CR_PROTOCOL_ETHERNET 0x0C
++#define QE_CR_PROTOCOL_L2_SWITCH 0x0D
++#define QE_CR_PROTOCOL_SHIFT 6
++
++/* QE ASSIGN PAGE command
++*/
++#define QE_CR_ASSIGN_PAGE_SNUM_SHIFT 17
++
++/* Communication Direction.
++*/
++typedef enum comm_dir {
++ COMM_DIR_NONE = 0,
++ COMM_DIR_RX = 1,
++ COMM_DIR_TX = 2,
++ COMM_DIR_RX_AND_TX = 3
++} comm_dir_e;
++
++/* Clocks and BRG's
++*/
++typedef enum qe_clock {
++ QE_CLK_NONE = 0,
++ QE_BRG1, /* Baud Rate Generator 1 */
++ QE_BRG2, /* Baud Rate Generator 2 */
++ QE_BRG3, /* Baud Rate Generator 3 */
++ QE_BRG4, /* Baud Rate Generator 4 */
++ QE_BRG5, /* Baud Rate Generator 5 */
++ QE_BRG6, /* Baud Rate Generator 6 */
++ QE_BRG7, /* Baud Rate Generator 7 */
++ QE_BRG8, /* Baud Rate Generator 8 */
++ QE_BRG9, /* Baud Rate Generator 9 */
++ QE_BRG10, /* Baud Rate Generator 10 */
++ QE_BRG11, /* Baud Rate Generator 11 */
++ QE_BRG12, /* Baud Rate Generator 12 */
++ QE_BRG13, /* Baud Rate Generator 13 */
++ QE_BRG14, /* Baud Rate Generator 14 */
++ QE_BRG15, /* Baud Rate Generator 15 */
++ QE_BRG16, /* Baud Rate Generator 16 */
++ QE_CLK1, /* Clock 1 */
++ QE_CLK2, /* Clock 2 */
++ QE_CLK3, /* Clock 3 */
++ QE_CLK4, /* Clock 4 */
++ QE_CLK5, /* Clock 5 */
++ QE_CLK6, /* Clock 6 */
++ QE_CLK7, /* Clock 7 */
++ QE_CLK8, /* Clock 8 */
++ QE_CLK9, /* Clock 9 */
++ QE_CLK10, /* Clock 10 */
++ QE_CLK11, /* Clock 11 */
++ QE_CLK12, /* Clock 12 */
++ QE_CLK13, /* Clock 13 */
++ QE_CLK14, /* Clock 14 */
++ QE_CLK15, /* Clock 15 */
++ QE_CLK16, /* Clock 16 */
++ QE_CLK17, /* Clock 17 */
++ QE_CLK18, /* Clock 18 */
++ QE_CLK19, /* Clock 19 */
++ QE_CLK20, /* Clock 20 */
++ QE_CLK21, /* Clock 21 */
++ QE_CLK22, /* Clock 22 */
++ QE_CLK23, /* Clock 23 */
++ QE_CLK24, /* Clock 24 */
++ QE_CLK_DUMMY
++} qe_clock_e;
++
++/* QE CMXGCR register
++*/
++#define QE_CMXGCR_MII_ENET_MNG_MASK 0x00007000
++#define QE_CMXGCR_MII_ENET_MNG_SHIFT 12
++
++/* QE CMXUCR registers
++ */
++#define QE_CMXUCR_TX_CLK_SRC_MASK 0x0000000F
++
++/* QE BRG configuration register
++*/
++#define QE_BRGC_ENABLE 0x00010000
++#define QE_BRGC_DIVISOR_SHIFT 1
++#define QE_BRGC_DIVISOR_MAX 0xFFF
++#define QE_BRGC_DIV16 1
++
++/* QE SDMA registers
++*/
++#define QE_SDSR_BER1 0x02000000
++#define QE_SDSR_BER2 0x01000000
++
++#define QE_SDMR_GLB_1_MSK 0x80000000
++#define QE_SDMR_ADR_SEL 0x20000000
++#define QE_SDMR_BER1_MSK 0x02000000
++#define QE_SDMR_BER2_MSK 0x01000000
++#define QE_SDMR_EB1_MSK 0x00800000
++#define QE_SDMR_ER1_MSK 0x00080000
++#define QE_SDMR_ER2_MSK 0x00040000
++#define QE_SDMR_CEN_MASK 0x0000E000
++#define QE_SDMR_SBER_1 0x00000200
++#define QE_SDMR_SBER_2 0x00000200
++#define QE_SDMR_EB1_PR_MASK 0x000000C0
++#define QE_SDMR_ER1_PR 0x00000008
++
++#define QE_SDMR_CEN_SHIFT 13
++#define QE_SDMR_EB1_PR_SHIFT 6
++
++#define QE_SDTM_MSNUM_SHIFT 24
++
++#define QE_SDEBCR_BA_MASK 0x01FFFFFF
++
++void qe_config_iopin(u8 port, u8 pin, int dir, int open_drain, int assign);
++void qe_issue_cmd(uint cmd, uint sbc, u8 mcn, u32 cmd_data);
++uint qe_muram_alloc(uint size, uint align);
++void *qe_muram_addr(uint offset);
++int qe_get_snum(void);
++void qe_put_snum(u8 snum);
++void qe_init(uint qe_base);
++void qe_reset(void);
++void qe_assign_page(uint snum, uint para_ram_base);
++int qe_set_brg(uint brg, uint rate);
++int qe_set_mii_clk_src(int ucc_num);
++
++#endif /* __QE_H__ */
+diff -Naupr u-boot-1.1.6/drivers/qe/uccf.c u-boot-1.1.6-fsl-1/drivers/qe/uccf.c
+--- u-boot-1.1.6/drivers/qe/uccf.c 1969-12-31 18:00:00.000000000 -0600
++++ u-boot-1.1.6-fsl-1/drivers/qe/uccf.c 2006-12-06 10:33:49.000000000 -0600
+@@ -0,0 +1,404 @@
++/*
++ * Copyright (C) 2006 Freescale Semiconductor, Inc.
++ *
++ * Dave Liu <daveliu@freescale.com>
++ * based on source code of Shlomi Gridish
++ *
++ * 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
++ */
++
++#include "common.h"
++#include "malloc.h"
++#include "asm/errno.h"
++#include "asm/io.h"
++#include "asm/immap_qe.h"
++#include "qe.h"
++#include "uccf.h"
++
++#if defined(CONFIG_QE)
++void ucc_fast_transmit_on_demand(ucc_fast_private_t *uccf)
++{
++ out_be16(&uccf->uf_regs->utodr, UCC_FAST_TOD);
++}
++
++u32 ucc_fast_get_qe_cr_subblock(int ucc_num)
++{
++ switch (ucc_num) {
++ case 0: return QE_CR_SUBBLOCK_UCCFAST1;
++ case 1: return QE_CR_SUBBLOCK_UCCFAST2;
++ case 2: return QE_CR_SUBBLOCK_UCCFAST3;
++ case 3: return QE_CR_SUBBLOCK_UCCFAST4;
++ case 4: return QE_CR_SUBBLOCK_UCCFAST5;
++ case 5: return QE_CR_SUBBLOCK_UCCFAST6;
++ case 6: return QE_CR_SUBBLOCK_UCCFAST7;
++ case 7: return QE_CR_SUBBLOCK_UCCFAST8;
++ default: return QE_CR_SUBBLOCK_INVALID;
++ }
++}
++
++static void ucc_get_cmxucr_reg(int ucc_num, volatile u32 **p_cmxucr,
++ u8 *reg_num, u8 *shift)
++{
++ switch (ucc_num) {
++ case 0: /* UCC1 */
++ *p_cmxucr = &(qe_immr->qmx.cmxucr1);
++ *reg_num = 1;
++ *shift = 16;
++ break;
++ case 2: /* UCC3 */
++ *p_cmxucr = &(qe_immr->qmx.cmxucr1);
++ *reg_num = 1;
++ *shift = 0;
++ break;
++ case 4: /* UCC5 */
++ *p_cmxucr = &(qe_immr->qmx.cmxucr2);
++ *reg_num = 2;
++ *shift = 16;
++ break;
++ case 6: /* UCC7 */
++ *p_cmxucr = &(qe_immr->qmx.cmxucr2);
++ *reg_num = 2;
++ *shift = 0;
++ break;
++ case 1: /* UCC2 */
++ *p_cmxucr = &(qe_immr->qmx.cmxucr3);
++ *reg_num = 3;
++ *shift = 16;
++ break;
++ case 3: /* UCC4 */
++ *p_cmxucr = &(qe_immr->qmx.cmxucr3);
++ *reg_num = 3;
++ *shift = 0;
++ break;
++ case 5: /* UCC6 */
++ *p_cmxucr = &(qe_immr->qmx.cmxucr4);
++ *reg_num = 4;
++ *shift = 16;
++ break;
++ case 7: /* UCC8 */
++ *p_cmxucr = &(qe_immr->qmx.cmxucr4);
++ *reg_num = 4;
++ *shift = 0;
++ break;
++ default:
++ break;
++ }
++}
++
++static int ucc_set_clk_src(int ucc_num, qe_clock_e clock, comm_dir_e mode)
++{
++ volatile u32 *p_cmxucr = NULL;
++ u8 reg_num = 0;
++ u8 shift = 0;
++ u32 clockBits;
++ u32 clockMask;
++ int source = -1;
++
++ /* check if the UCC number is in range. */
++ if ((ucc_num > UCC_MAX_NUM - 1) || (ucc_num < 0))
++ return -EINVAL;
++
++ if (! ((mode == COMM_DIR_RX) || (mode == COMM_DIR_TX))) {
++ printf("%s: bad comm mode type passed\n", __FUNCTION__);
++ return -EINVAL;
++ }
++
++ ucc_get_cmxucr_reg(ucc_num, &p_cmxucr, &reg_num, &shift);
++
++ switch (reg_num) {
++ case 1:
++ switch (clock) {
++ case QE_BRG1: source = 1; break;
++ case QE_BRG2: source = 2; break;
++ case QE_BRG7: source = 3; break;
++ case QE_BRG8: source = 4; break;
++ case QE_CLK9: source = 5; break;
++ case QE_CLK10: source = 6; break;
++ case QE_CLK11: source = 7; break;
++ case QE_CLK12: source = 8; break;
++ case QE_CLK15: source = 9; break;
++ case QE_CLK16: source = 10; break;
++ default: source = -1; break;
++ }
++ break;
++ case 2:
++ switch (clock) {
++ case QE_BRG5: source = 1; break;
++ case QE_BRG6: source = 2; break;
++ case QE_BRG7: source = 3; break;
++ case QE_BRG8: source = 4; break;
++ case QE_CLK13: source = 5; break;
++ case QE_CLK14: source = 6; break;
++ case QE_CLK19: source = 7; break;
++ case QE_CLK20: source = 8; break;
++ case QE_CLK15: source = 9; break;
++ case QE_CLK16: source = 10; break;
++ default: source = -1; break;
++ }
++ break;
++ case 3:
++ switch (clock) {
++ case QE_BRG9: source = 1; break;
++ case QE_BRG10: source = 2; break;
++ case QE_BRG15: source = 3; break;
++ case QE_BRG16: source = 4; break;
++ case QE_CLK3: source = 5; break;
++ case QE_CLK4: source = 6; break;
++ case QE_CLK17: source = 7; break;
++ case QE_CLK18: source = 8; break;
++ case QE_CLK7: source = 9; break;
++ case QE_CLK8: source = 10; break;
++ case QE_CLK16: source = 11; break;
++ default: source = -1; break;
++ }
++ break;
++ case 4:
++ switch (clock) {
++ case QE_BRG13: source = 1; break;
++ case QE_BRG14: source = 2; break;
++ case QE_BRG15: source = 3; break;
++ case QE_BRG16: source = 4; break;
++ case QE_CLK5: source = 5; break;
++ case QE_CLK6: source = 6; break;
++ case QE_CLK21: source = 7; break;
++ case QE_CLK22: source = 8; break;
++ case QE_CLK7: source = 9; break;
++ case QE_CLK8: source = 10; break;
++ case QE_CLK16: source = 11; break;
++ default: source = -1; break;
++ }
++ break;
++ default:
++ source = -1;
++ break;
++ }
++
++ if (source == -1) {
++ printf("%s: Bad combination of clock and UCC\n", __FUNCTION__);
++ return -ENOENT;
++ }
++
++ clockBits = (u32) source;
++ clockMask = QE_CMXUCR_TX_CLK_SRC_MASK;
++ if (mode == COMM_DIR_RX) {
++ clockBits <<= 4; /* Rx field is 4 bits to left of Tx field */
++ clockMask <<= 4; /* Rx field is 4 bits to left of Tx field */
++ }
++ clockBits <<= shift;
++ clockMask <<= shift;
++
++ out_be32(p_cmxucr, (in_be32(p_cmxucr) & ~clockMask) | clockBits);
++
++ return 0;
++}
++
++static uint ucc_get_reg_baseaddr(int ucc_num)
++{
++ uint base = 0;
++
++ /* check if the UCC number is in range */
++ if ((ucc_num > UCC_MAX_NUM - 1) || (ucc_num < 0)) {
++ printf("%s: the UCC num not in ranges\n", __FUNCTION__);
++ return 0;
++ }
++
++ switch (ucc_num) {
++ case 0: base = 0x00002000; break;
++ case 1: base = 0x00003000; break;
++ case 2: base = 0x00002200; break;
++ case 3: base = 0x00003200; break;
++ case 4: base = 0x00002400; break;
++ case 5: base = 0x00003400; break;
++ case 6: base = 0x00002600; break;
++ case 7: base = 0x00003600; break;
++ default: break;
++ }
++
++ base = (uint)qe_immr + base;
++ return base;
++}
++
++void ucc_fast_enable(ucc_fast_private_t *uccf, comm_dir_e mode)
++{
++ ucc_fast_t *uf_regs;
++ u32 gumr;
++
++ uf_regs = uccf->uf_regs;
++
++ /* Enable reception and/or transmission on this UCC. */
++ gumr = in_be32(&uf_regs->gumr);
++ if (mode & COMM_DIR_TX) {
++ gumr |= UCC_FAST_GUMR_ENT;
++ uccf->enabled_tx = 1;
++ }
++ if (mode & COMM_DIR_RX) {
++ gumr |= UCC_FAST_GUMR_ENR;
++ uccf->enabled_rx = 1;
++ }
++ out_be32(&uf_regs->gumr, gumr);
++}
++
++void ucc_fast_disable(ucc_fast_private_t *uccf, comm_dir_e mode)
++{
++ ucc_fast_t *uf_regs;
++ u32 gumr;
++
++ uf_regs = uccf->uf_regs;
++
++ /* Disable reception and/or transmission on this UCC. */
++ gumr = in_be32(&uf_regs->gumr);
++ if (mode & COMM_DIR_TX) {
++ gumr &= ~UCC_FAST_GUMR_ENT;
++ uccf->enabled_tx = 0;
++ }
++ if (mode & COMM_DIR_RX) {
++ gumr &= ~UCC_FAST_GUMR_ENR;
++ uccf->enabled_rx = 0;
++ }
++ out_be32(&uf_regs->gumr, gumr);
++}
++
++int ucc_fast_init(ucc_fast_info_t *uf_info, ucc_fast_private_t **uccf_ret)
++{
++ ucc_fast_private_t *uccf;
++ ucc_fast_t *uf_regs;
++
++ if (!uf_info)
++ return -EINVAL;
++
++ if ((uf_info->ucc_num < 0) || (uf_info->ucc_num > UCC_MAX_NUM - 1)) {
++ printf("%s: Illagal UCC number!\n", __FUNCTION__);
++ return -EINVAL;
++ }
++
++ uccf = (ucc_fast_private_t *)malloc(sizeof(ucc_fast_private_t));
++ if (!uccf) {
++ printf("%s: No memory for UCC fast data structure!\n",
++ __FUNCTION__);
++ return -ENOMEM;
++ }
++ memset(uccf, 0, sizeof(ucc_fast_private_t));
++
++ /* Save fast UCC structure */
++ uccf->uf_info = uf_info;
++ uccf->uf_regs = (ucc_fast_t *)ucc_get_reg_baseaddr(uf_info->ucc_num);
++
++ if (uccf->uf_regs == NULL) {
++ printf("%s: No memory map for UCC fast controller!\n",
++ __FUNCTION__);
++ return -ENOMEM;
++ }
++
++ uccf->enabled_tx = 0;
++ uccf->enabled_rx = 0;
++
++ uf_regs = uccf->uf_regs;
++ uccf->p_ucce = (u32 *) &(uf_regs->ucce);
++ uccf->p_uccm = (u32 *) &(uf_regs->uccm);
++
++ /* Init GUEMR register, UCC both Rx and Tx is Fast protocol */
++ out_8(&uf_regs->guemr, UCC_GUEMR_SET_RESERVED3 | UCC_GUEMR_MODE_FAST_RX
++ | UCC_GUEMR_MODE_FAST_TX);
++
++ /* Set GUMR, disable UCC both Rx and Tx, Ethernet protocol */
++ out_be32(&uf_regs->gumr, UCC_FAST_GUMR_ETH);
++
++ /* Set the Giga ethernet VFIFO stuff */
++ if (uf_info->eth_type == GIGA_ETH) {
++ /* Allocate memory for Tx Virtual Fifo */
++ uccf->ucc_fast_tx_virtual_fifo_base_offset =
++ qe_muram_alloc(UCC_GETH_UTFS_GIGA_INIT,
++ UCC_FAST_VIRT_FIFO_REGS_ALIGNMENT);
++
++ /* Allocate memory for Rx Virtual Fifo */
++ uccf->ucc_fast_rx_virtual_fifo_base_offset =
++ qe_muram_alloc(UCC_GETH_URFS_GIGA_INIT +
++ UCC_FAST_RX_VIRTUAL_FIFO_SIZE_PAD,
++ UCC_FAST_VIRT_FIFO_REGS_ALIGNMENT);
++
++ /* utfb, urfb are offsets from MURAM base */
++ out_be32(&uf_regs->utfb,
++ uccf->ucc_fast_tx_virtual_fifo_base_offset);
++ out_be32(&uf_regs->urfb,
++ uccf->ucc_fast_rx_virtual_fifo_base_offset);
++
++ /* Set Virtual Fifo registers */
++ out_be16(&uf_regs->urfs, UCC_GETH_URFS_GIGA_INIT);
++ out_be16(&uf_regs->urfet, UCC_GETH_URFET_GIGA_INIT);
++ out_be16(&uf_regs->urfset, UCC_GETH_URFSET_GIGA_INIT);
++ out_be16(&uf_regs->utfs, UCC_GETH_UTFS_GIGA_INIT);
++ out_be16(&uf_regs->utfet, UCC_GETH_UTFET_GIGA_INIT);
++ out_be16(&uf_regs->utftt, UCC_GETH_UTFTT_GIGA_INIT);
++ }
++
++ /* Set the Fast ethernet VFIFO stuff */
++ if (uf_info->eth_type == FAST_ETH) {
++ /* Allocate memory for Tx Virtual Fifo */
++ uccf->ucc_fast_tx_virtual_fifo_base_offset =
++ qe_muram_alloc(UCC_GETH_UTFS_INIT,
++ UCC_FAST_VIRT_FIFO_REGS_ALIGNMENT);
++
++ /* Allocate memory for Rx Virtual Fifo */
++ uccf->ucc_fast_rx_virtual_fifo_base_offset =
++ qe_muram_alloc(UCC_GETH_URFS_INIT +
++ UCC_FAST_RX_VIRTUAL_FIFO_SIZE_PAD,
++ UCC_FAST_VIRT_FIFO_REGS_ALIGNMENT);
++
++ /* utfb, urfb are offsets from MURAM base */
++ out_be32(&uf_regs->utfb,
++ uccf->ucc_fast_tx_virtual_fifo_base_offset);
++ out_be32(&uf_regs->urfb,
++ uccf->ucc_fast_rx_virtual_fifo_base_offset);
++
++ /* Set Virtual Fifo registers */
++ out_be16(&uf_regs->urfs, UCC_GETH_URFS_INIT);
++ out_be16(&uf_regs->urfet, UCC_GETH_URFET_INIT);
++ out_be16(&uf_regs->urfset, UCC_GETH_URFSET_INIT);
++ out_be16(&uf_regs->utfs, UCC_GETH_UTFS_INIT);
++ out_be16(&uf_regs->utfet, UCC_GETH_UTFET_INIT);
++ out_be16(&uf_regs->utftt, UCC_GETH_UTFTT_INIT);
++ }
++
++ /* Rx clock routing */
++ if (uf_info->rx_clock != QE_CLK_NONE) {
++ if (ucc_set_clk_src(uf_info->ucc_num,
++ uf_info->rx_clock, COMM_DIR_RX)) {
++ printf("%s: Illegal value for parameter 'RxClock'.\n",
++ __FUNCTION__);
++ return -EINVAL;
++ }
++ }
++
++ /* Tx clock routing */
++ if (uf_info->tx_clock != QE_CLK_NONE) {
++ if (ucc_set_clk_src(uf_info->ucc_num,
++ uf_info->tx_clock, COMM_DIR_TX)) {
++ printf("%s: Illegal value for parameter 'TxClock'.\n",
++ __FUNCTION__);
++ return -EINVAL;
++ }
++ }
++
++ /* Clear interrupt mask register to disable all of interrupts */
++ out_be32(&uf_regs->uccm, 0x0);
++
++ /* Writing '1' to clear all of envents */
++ out_be32(&uf_regs->ucce, 0xffffffff);
++
++ *uccf_ret = uccf;
++ return 0;
++}
++#endif /* CONFIG_QE */
+diff -Naupr u-boot-1.1.6/drivers/qe/uccf.h u-boot-1.1.6-fsl-1/drivers/qe/uccf.h
+--- u-boot-1.1.6/drivers/qe/uccf.h 1969-12-31 18:00:00.000000000 -0600
++++ u-boot-1.1.6-fsl-1/drivers/qe/uccf.h 2006-11-10 11:24:29.000000000 -0600
+@@ -0,0 +1,130 @@
++/*
++ * Copyright (C) 2006 Freescale Semiconductor, Inc.
++ *
++ * Dave Liu <daveliu@freescale.com>
++ * based on source code of Shlomi Gridish
++ *
++ * 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
++ */
++
++#ifndef __UCCF_H__
++#define __UCCF_H__
++
++#include "common.h"
++#include "qe.h"
++
++/* Fast or Giga ethernet
++*/
++typedef enum enet_type {
++ FAST_ETH,
++ GIGA_ETH,
++} enet_type_e;
++
++/* General UCC Extended Mode Register
++*/
++#define UCC_GUEMR_MODE_MASK_RX 0x02
++#define UCC_GUEMR_MODE_MASK_TX 0x01
++#define UCC_GUEMR_MODE_FAST_RX 0x02
++#define UCC_GUEMR_MODE_FAST_TX 0x01
++#define UCC_GUEMR_MODE_SLOW_RX 0x00
++#define UCC_GUEMR_MODE_SLOW_TX 0x00
++#define UCC_GUEMR_SET_RESERVED3 0x10 /* Bit 3 must be set 1 */
++
++/* General UCC FAST Mode Register
++*/
++#define UCC_FAST_GUMR_TCI 0x20000000
++#define UCC_FAST_GUMR_TRX 0x10000000
++#define UCC_FAST_GUMR_TTX 0x08000000
++#define UCC_FAST_GUMR_CDP 0x04000000
++#define UCC_FAST_GUMR_CTSP 0x02000000
++#define UCC_FAST_GUMR_CDS 0x01000000
++#define UCC_FAST_GUMR_CTSS 0x00800000
++#define UCC_FAST_GUMR_TXSY 0x00020000
++#define UCC_FAST_GUMR_RSYN 0x00010000
++#define UCC_FAST_GUMR_RTSM 0x00002000
++#define UCC_FAST_GUMR_REVD 0x00000400
++#define UCC_FAST_GUMR_ENR 0x00000020
++#define UCC_FAST_GUMR_ENT 0x00000010
++
++/* GUMR [MODE] bit maps
++*/
++#define UCC_FAST_GUMR_HDLC 0x00000000
++#define UCC_FAST_GUMR_QMC 0x00000002
++#define UCC_FAST_GUMR_UART 0x00000004
++#define UCC_FAST_GUMR_BISYNC 0x00000008
++#define UCC_FAST_GUMR_ATM 0x0000000a
++#define UCC_FAST_GUMR_ETH 0x0000000c
++
++/* Transmit On Demand (UTORD)
++*/
++#define UCC_SLOW_TOD 0x8000
++#define UCC_FAST_TOD 0x8000
++
++/* Fast Ethernet (10/100 Mbps)
++*/
++#define UCC_GETH_URFS_INIT 512 /* Rx virtual FIFO size */
++#define UCC_GETH_URFET_INIT 256 /* 1/2 urfs */
++#define UCC_GETH_URFSET_INIT 384 /* 3/4 urfs */
++#define UCC_GETH_UTFS_INIT 512 /* Tx virtual FIFO size */
++#define UCC_GETH_UTFET_INIT 256 /* 1/2 utfs */
++#define UCC_GETH_UTFTT_INIT 128
++
++/* Gigabit Ethernet (1000 Mbps)
++*/
++#define UCC_GETH_URFS_GIGA_INIT 4096/*2048*/ /* Rx virtual FIFO size */
++#define UCC_GETH_URFET_GIGA_INIT 2048/*1024*/ /* 1/2 urfs */
++#define UCC_GETH_URFSET_GIGA_INIT 3072/*1536*/ /* 3/4 urfs */
++#define UCC_GETH_UTFS_GIGA_INIT 8192/*2048*/ /* Tx virtual FIFO size */
++#define UCC_GETH_UTFET_GIGA_INIT 4096/*1024*/ /* 1/2 utfs */
++#define UCC_GETH_UTFTT_GIGA_INIT 0x400/*0x40*/ /* */
++
++/* UCC fast alignment
++*/
++#define UCC_FAST_RX_ALIGN 4
++#define UCC_FAST_MRBLR_ALIGNMENT 4
++#define UCC_FAST_VIRT_FIFO_REGS_ALIGNMENT 8
++
++/* Sizes
++*/
++#define UCC_FAST_RX_VIRTUAL_FIFO_SIZE_PAD 8
++
++/* UCC fast structure.
++*/
++typedef struct ucc_fast_info {
++ int ucc_num;
++ qe_clock_e rx_clock;
++ qe_clock_e tx_clock;
++ enet_type_e eth_type;
++} ucc_fast_info_t;
++
++typedef struct ucc_fast_private {
++ ucc_fast_info_t *uf_info;
++ ucc_fast_t *uf_regs; /* a pointer to memory map of UCC regs */
++ u32 *p_ucce; /* a pointer to the event register */
++ u32 *p_uccm; /* a pointer to the mask register */
++ int enabled_tx; /* whether UCC is enabled for Tx (ENT) */
++ int enabled_rx; /* whether UCC is enabled for Rx (ENR) */
++ u32 ucc_fast_tx_virtual_fifo_base_offset;
++ u32 ucc_fast_rx_virtual_fifo_base_offset;
++} ucc_fast_private_t;
++
++void ucc_fast_transmit_on_demand(ucc_fast_private_t *uccf);
++u32 ucc_fast_get_qe_cr_subblock(int ucc_num);
++void ucc_fast_enable(ucc_fast_private_t *uccf, comm_dir_e mode);
++void ucc_fast_disable(ucc_fast_private_t *uccf, comm_dir_e mode);
++int ucc_fast_init(ucc_fast_info_t *uf_info, ucc_fast_private_t **uccf_ret);
++
++#endif /* __UCCF_H__ */
+diff -Naupr u-boot-1.1.6/drivers/qe/uec.c u-boot-1.1.6-fsl-1/drivers/qe/uec.c
+--- u-boot-1.1.6/drivers/qe/uec.c 1969-12-31 18:00:00.000000000 -0600
++++ u-boot-1.1.6-fsl-1/drivers/qe/uec.c 2006-11-10 11:24:29.000000000 -0600
+@@ -0,0 +1,1266 @@
++/*
++ * Copyright (C) 2006 Freescale Semiconductor, Inc.
++ *
++ * Dave Liu <daveliu@freescale.com>
++ *
++ * 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
++ */
++
++#include "common.h"
++#include "net.h"
++#include "malloc.h"
++#include "asm/errno.h"
++#include "asm/io.h"
++#include "asm/immap_qe.h"
++#include "qe.h"
++#include "uccf.h"
++#include "uec.h"
++#include "uec_phy.h"
++
++#if defined(CONFIG_QE)
++
++#ifdef CONFIG_UEC_ETH1
++static uec_info_t eth1_uec_info = {
++ .uf_info = {
++ .ucc_num = CFG_UEC1_UCC_NUM,
++ .rx_clock = CFG_UEC1_RX_CLK,
++ .tx_clock = CFG_UEC1_TX_CLK,
++ .eth_type = CFG_UEC1_ETH_TYPE,
++ },
++ .num_threads_tx = UEC_NUM_OF_THREADS_4,
++ .num_threads_rx = UEC_NUM_OF_THREADS_4,
++ .riscTx = QE_RISC_ALLOCATION_RISC1_AND_RISC2,
++ .riscRx = QE_RISC_ALLOCATION_RISC1_AND_RISC2,
++ .tx_bd_ring_len = 16,
++ .rx_bd_ring_len = 16,
++ .phy_address = CFG_UEC1_PHY_ADDR,
++ .enet_interface = CFG_UEC1_INTERFACE_MODE,
++};
++#endif
++#ifdef CONFIG_UEC_ETH2
++static uec_info_t eth2_uec_info = {
++ .uf_info = {
++ .ucc_num = CFG_UEC2_UCC_NUM,
++ .rx_clock = CFG_UEC2_RX_CLK,
++ .tx_clock = CFG_UEC2_TX_CLK,
++ .eth_type = CFG_UEC2_ETH_TYPE,
++ },
++ .num_threads_tx = UEC_NUM_OF_THREADS_4,
++ .num_threads_rx = UEC_NUM_OF_THREADS_4,
++ .riscTx = QE_RISC_ALLOCATION_RISC1_AND_RISC2,
++ .riscRx = QE_RISC_ALLOCATION_RISC1_AND_RISC2,
++ .tx_bd_ring_len = 16,
++ .rx_bd_ring_len = 16,
++ .phy_address = CFG_UEC2_PHY_ADDR,
++ .enet_interface = CFG_UEC2_INTERFACE_MODE,
++};
++#endif
++
++static int uec_mac_enable(uec_private_t *uec, comm_dir_e mode)
++{
++ uec_t *uec_regs;
++ u32 maccfg1;
++
++ if (!uec) {
++ printf("%s: uec not initial\n", __FUNCTION__);
++ return -EINVAL;
++ }
++ uec_regs = uec->uec_regs;
++
++ maccfg1 = in_be32(&uec_regs->maccfg1);
++
++ if (mode & COMM_DIR_TX) {
++ maccfg1 |= MACCFG1_ENABLE_TX;
++ out_be32(&uec_regs->maccfg1, maccfg1);
++ uec->mac_tx_enabled = 1;
++ }
++
++ if (mode & COMM_DIR_RX) {
++ maccfg1 |= MACCFG1_ENABLE_RX;
++ out_be32(&uec_regs->maccfg1, maccfg1);
++ uec->mac_rx_enabled = 1;
++ }
++
++ return 0;
++}
++
++static int uec_mac_disable(uec_private_t *uec, comm_dir_e mode)
++{
++ uec_t *uec_regs;
++ u32 maccfg1;
++
++ if (!uec) {
++ printf("%s: uec not initial\n", __FUNCTION__);
++ return -EINVAL;
++ }
++ uec_regs = uec->uec_regs;
++
++ maccfg1 = in_be32(&uec_regs->maccfg1);
++
++ if (mode & COMM_DIR_TX) {
++ maccfg1 &= ~MACCFG1_ENABLE_TX;
++ out_be32(&uec_regs->maccfg1, maccfg1);
++ uec->mac_tx_enabled = 0;
++ }
++
++ if (mode & COMM_DIR_RX) {
++ maccfg1 &= ~MACCFG1_ENABLE_RX;
++ out_be32(&uec_regs->maccfg1, maccfg1);
++ uec->mac_rx_enabled = 0;
++ }
++
++ return 0;
++}
++
++static int uec_graceful_stop_tx(uec_private_t *uec)
++{
++ ucc_fast_t *uf_regs;
++ u32 cecr_subblock;
++ u32 ucce;
++
++ if (!uec || !uec->uccf) {
++ printf("%s: No handle passed.\n", __FUNCTION__);
++ return -EINVAL;
++ }
++
++ uf_regs = uec->uccf->uf_regs;
++
++ /* Clear the grace stop event */
++ out_be32(&uf_regs->ucce, UCCE_GRA);
++
++ /* Issue host command */
++ cecr_subblock =
++ ucc_fast_get_qe_cr_subblock(uec->uec_info->uf_info.ucc_num);
++ qe_issue_cmd(QE_GRACEFUL_STOP_TX, cecr_subblock,
++ (u8)QE_CR_PROTOCOL_ETHERNET, 0);
++
++ /* Wait for command to complete */
++ do {
++ ucce = in_be32(&uf_regs->ucce);
++ } while (! (ucce & UCCE_GRA));
++
++ uec->grace_stopped_tx = 1;
++
++ return 0;
++}
++
++static int uec_graceful_stop_rx(uec_private_t *uec)
++{
++ u32 cecr_subblock;
++ u8 ack;
++
++ if (!uec) {
++ printf("%s: No handle passed.\n", __FUNCTION__);
++ return -EINVAL;
++ }
++
++ if (!uec->p_rx_glbl_pram) {
++ printf("%s: No init rx global parameter\n", __FUNCTION__);
++ return -EINVAL;
++ }
++
++ /* Clear acknowledge bit */
++ ack = uec->p_rx_glbl_pram->rxgstpack;
++ ack &= ~GRACEFUL_STOP_ACKNOWLEDGE_RX;
++ uec->p_rx_glbl_pram->rxgstpack = ack;
++
++ /* Keep issuing cmd and checking ack bit until it is asserted */
++ do {
++ /* Issue host command */
++ cecr_subblock =
++ ucc_fast_get_qe_cr_subblock(uec->uec_info->uf_info.ucc_num);
++ qe_issue_cmd(QE_GRACEFUL_STOP_RX, cecr_subblock,
++ (u8)QE_CR_PROTOCOL_ETHERNET, 0);
++ ack = uec->p_rx_glbl_pram->rxgstpack;
++ } while (! (ack & GRACEFUL_STOP_ACKNOWLEDGE_RX ));
++
++ uec->grace_stopped_rx = 1;
++
++ return 0;
++}
++
++static int uec_restart_tx(uec_private_t *uec)
++{
++ u32 cecr_subblock;
++
++ if (!uec || !uec->uec_info) {
++ printf("%s: No handle passed.\n", __FUNCTION__);
++ return -EINVAL;
++ }
++
++ cecr_subblock =
++ ucc_fast_get_qe_cr_subblock(uec->uec_info->uf_info.ucc_num);
++ qe_issue_cmd(QE_RESTART_TX, cecr_subblock,
++ (u8)QE_CR_PROTOCOL_ETHERNET, 0);
++
++ uec->grace_stopped_tx = 0;
++
++ return 0;
++}
++
++static int uec_restart_rx(uec_private_t *uec)
++{
++ u32 cecr_subblock;
++
++ if (!uec || !uec->uec_info) {
++ printf("%s: No handle passed.\n", __FUNCTION__);
++ return -EINVAL;
++ }
++
++ cecr_subblock =
++ ucc_fast_get_qe_cr_subblock(uec->uec_info->uf_info.ucc_num);
++ qe_issue_cmd(QE_RESTART_RX, cecr_subblock,
++ (u8)QE_CR_PROTOCOL_ETHERNET, 0);
++
++ uec->grace_stopped_rx = 0;
++
++ return 0;
++}
++
++static int uec_open(uec_private_t *uec, comm_dir_e mode)
++{
++ ucc_fast_private_t *uccf;
++
++ if (!uec || !uec->uccf) {
++ printf("%s: No handle passed.\n", __FUNCTION__);
++ return -EINVAL;
++ }
++ uccf = uec->uccf;
++
++ /* check if the UCC number is in range. */
++ if (uec->uec_info->uf_info.ucc_num >= UCC_MAX_NUM) {
++ printf("%s: ucc_num out of range.\n", __FUNCTION__);
++ return -EINVAL;
++ }
++
++ /* Enable MAC */
++ uec_mac_enable(uec, mode);
++
++ /* Enable UCC fast */
++ ucc_fast_enable(uccf, mode);
++
++ /* RISC microcode start */
++ if ((mode & COMM_DIR_TX) && uec->grace_stopped_tx) {
++ uec_restart_tx(uec);
++ }
++ if ((mode & COMM_DIR_RX) && uec->grace_stopped_rx) {
++ uec_restart_rx(uec);
++ }
++
++ return 0;
++}
++
++static int uec_stop(uec_private_t *uec, comm_dir_e mode)
++{
++ ucc_fast_private_t *uccf;
++
++ if (!uec || !uec->uccf) {
++ printf("%s: No handle passed.\n", __FUNCTION__);
++ return -EINVAL;
++ }
++ uccf = uec->uccf;
++
++ /* check if the UCC number is in range. */
++ if (uec->uec_info->uf_info.ucc_num >= UCC_MAX_NUM) {
++ printf("%s: ucc_num out of range.\n", __FUNCTION__);
++ return -EINVAL;
++ }
++ /* Stop any transmissions */
++ if ((mode & COMM_DIR_TX) && !uec->grace_stopped_tx) {
++ uec_graceful_stop_tx(uec);
++ }
++ /* Stop any receptions */
++ if ((mode & COMM_DIR_RX) && !uec->grace_stopped_rx) {
++ uec_graceful_stop_rx(uec);
++ }
++
++ /* Disable the UCC fast */
++ ucc_fast_disable(uec->uccf, mode);
++
++ /* Disable the MAC */
++ uec_mac_disable(uec, mode);
++
++ return 0;
++}
++
++static int uec_set_mac_duplex(uec_private_t *uec, int duplex)
++{
++ uec_t *uec_regs;
++ u32 maccfg2;
++
++ if (!uec) {
++ printf("%s: uec not initial\n", __FUNCTION__);
++ return -EINVAL;
++ }
++ uec_regs = uec->uec_regs;
++
++ if (duplex == DUPLEX_HALF) {
++ maccfg2 = in_be32(&uec_regs->maccfg2);
++ maccfg2 &= ~MACCFG2_FDX;
++ out_be32(&uec_regs->maccfg2, maccfg2);
++ }
++
++ if (duplex == DUPLEX_FULL) {
++ maccfg2 = in_be32(&uec_regs->maccfg2);
++ maccfg2 |= MACCFG2_FDX;
++ out_be32(&uec_regs->maccfg2, maccfg2);
++ }
++
++ return 0;
++}
++
++static int uec_set_mac_if_mode(uec_private_t *uec, enet_interface_e if_mode)
++{
++ enet_interface_e enet_if_mode;
++ uec_info_t *uec_info;
++ uec_t *uec_regs;
++ u32 upsmr;
++ u32 maccfg2;
++
++ if (!uec) {
++ printf("%s: uec not initial\n", __FUNCTION__);
++ return -EINVAL;
++ }
++
++ uec_info = uec->uec_info;
++ uec_regs = uec->uec_regs;
++ enet_if_mode = if_mode;
++
++ maccfg2 = in_be32(&uec_regs->maccfg2);
++ maccfg2 &= ~MACCFG2_INTERFACE_MODE_MASK;
++
++ upsmr = in_be32(&uec->uccf->uf_regs->upsmr);
++ upsmr &= ~(UPSMR_RPM | UPSMR_TBIM | UPSMR_R10M | UPSMR_RMM);
++
++ switch (enet_if_mode) {
++ case ENET_100_MII:
++ case ENET_10_MII:
++ maccfg2 |= MACCFG2_INTERFACE_MODE_NIBBLE;
++ break;
++ case ENET_1000_GMII:
++ maccfg2 |= MACCFG2_INTERFACE_MODE_BYTE;
++ break;
++ case ENET_1000_TBI:
++ maccfg2 |= MACCFG2_INTERFACE_MODE_BYTE;
++ upsmr |= UPSMR_TBIM;
++ break;
++ case ENET_1000_RTBI:
++ maccfg2 |= MACCFG2_INTERFACE_MODE_BYTE;
++ upsmr |= (UPSMR_RPM | UPSMR_TBIM);
++ break;
++ case ENET_1000_RGMII:
++ maccfg2 |= MACCFG2_INTERFACE_MODE_BYTE;
++ upsmr |= UPSMR_RPM;
++ break;
++ case ENET_100_RGMII:
++ maccfg2 |= MACCFG2_INTERFACE_MODE_NIBBLE;
++ upsmr |= UPSMR_RPM;
++ break;
++ case ENET_10_RGMII:
++ maccfg2 |= MACCFG2_INTERFACE_MODE_NIBBLE;
++ upsmr |= (UPSMR_RPM | UPSMR_R10M);
++ break;
++ case ENET_100_RMII:
++ maccfg2 |= MACCFG2_INTERFACE_MODE_NIBBLE;
++ upsmr |= UPSMR_RMM;
++ break;
++ case ENET_10_RMII:
++ maccfg2 |= MACCFG2_INTERFACE_MODE_NIBBLE;
++ upsmr |= (UPSMR_R10M | UPSMR_RMM);
++ break;
++ default:
++ return -EINVAL;
++ break;
++ }
++ out_be32(&uec_regs->maccfg2, maccfg2);
++ out_be32(&uec->uccf->uf_regs->upsmr, upsmr);
++
++ return 0;
++}
++
++static int init_mii_management_configuration(uec_t *uec_regs)
++{
++ uint timeout = 0x1000;
++ u32 miimcfg = 0;
++
++ miimcfg = in_be32(&uec_regs->miimcfg);
++ miimcfg |= MIIMCFG_MNGMNT_CLC_DIV_INIT_VALUE;
++ out_be32(&uec_regs->miimcfg, miimcfg);
++
++ /* Wait until the bus is free */
++ while ((in_be32(&uec_regs->miimcfg) & MIIMIND_BUSY) && timeout--);
++ if (timeout <= 0) {
++ printf("%s: The MII Bus is stuck!", __FUNCTION__);
++ return -ETIMEDOUT;
++ }
++
++ return 0;
++}
++
++static int init_phy(struct eth_device *dev)
++{
++ uec_private_t *uec;
++ uec_t *uec_regs;
++ struct uec_mii_info *mii_info;
++ struct phy_info *curphy;
++ int err;
++
++ uec = (uec_private_t *)dev->priv;
++ uec_regs = uec->uec_regs;
++
++ uec->oldlink = 0;
++ uec->oldspeed = 0;
++ uec->oldduplex = -1;
++
++ mii_info = malloc(sizeof(*mii_info));
++ if (!mii_info) {
++ printf("%s: Could not allocate mii_info", dev->name);
++ return -ENOMEM;
++ }
++ memset(mii_info, 0, sizeof(*mii_info));
++
++ mii_info->speed = SPEED_1000;
++ mii_info->duplex = DUPLEX_FULL;
++ mii_info->pause = 0;
++ mii_info->link = 1;
++
++ mii_info->advertising = (ADVERTISED_10baseT_Half |
++ ADVERTISED_10baseT_Full |
++ ADVERTISED_100baseT_Half |
++ ADVERTISED_100baseT_Full |
++ ADVERTISED_1000baseT_Full);
++ mii_info->autoneg = 1;
++ mii_info->mii_id = uec->uec_info->phy_address;
++ mii_info->dev = dev;
++
++ mii_info->mdio_read = &read_phy_reg;
++ mii_info->mdio_write = &write_phy_reg;
++
++ uec->mii_info = mii_info;
++
++ if (init_mii_management_configuration(uec_regs)) {
++ printf("%s: The MII Bus is stuck!", dev->name);
++ err = -1;
++ goto bus_fail;
++ }
++
++ /* get info for this PHY */
++ curphy = get_phy_info(uec->mii_info);
++ if (!curphy) {
++ printf("%s: No PHY found", dev->name);
++ err = -1;
++ goto no_phy;
++ }
++
++ mii_info->phyinfo = curphy;
++
++ /* Run the commands which initialize the PHY */
++ if (curphy->init) {
++ err = curphy->init(uec->mii_info);
++ if (err)
++ goto phy_init_fail;
++ }
++
++ return 0;
++
++phy_init_fail:
++no_phy:
++bus_fail:
++ free(mii_info);
++ return err;
++}
++
++static void adjust_link(struct eth_device *dev)
++{
++ uec_private_t *uec = (uec_private_t *)dev->priv;
++ uec_t *uec_regs;
++ struct uec_mii_info *mii_info = uec->mii_info;
++
++ extern void change_phy_interface_mode(struct eth_device *dev,
++ enet_interface_e mode);
++ uec_regs = uec->uec_regs;
++
++ if (mii_info->link) {
++ /* Now we make sure that we can be in full duplex mode.
++ * If not, we operate in half-duplex mode. */
++ if (mii_info->duplex != uec->oldduplex) {
++ if (!(mii_info->duplex)) {
++ uec_set_mac_duplex(uec, DUPLEX_HALF);
++ printf("%s: Half Duplex\n", dev->name);
++ } else {
++ uec_set_mac_duplex(uec, DUPLEX_FULL);
++ printf("%s: Full Duplex\n", dev->name);
++ }
++ uec->oldduplex = mii_info->duplex;
++ }
++
++ if (mii_info->speed != uec->oldspeed) {
++ switch (mii_info->speed) {
++ case 1000:
++ break;
++ case 100:
++ printf ("switching to rgmii 100\n");
++ /* change phy to rgmii 100 */
++ change_phy_interface_mode(dev,
++ ENET_100_RGMII);
++ /* change the MAC interface mode */
++ uec_set_mac_if_mode(uec,ENET_100_RGMII);
++ break;
++ case 10:
++ printf ("switching to rgmii 10\n");
++ /* change phy to rgmii 10 */
++ change_phy_interface_mode(dev,
++ ENET_10_RGMII);
++ /* change the MAC interface mode */
++ uec_set_mac_if_mode(uec,ENET_10_RGMII);
++ break;
++ default:
++ printf("%s: Ack,Speed(%d)is illegal\n",
++ dev->name, mii_info->speed);
++ break;
++ }
++
++ printf("%s: Speed %dBT\n", dev->name, mii_info->speed);
++ uec->oldspeed = mii_info->speed;
++ }
++
++ if (!uec->oldlink) {
++ printf("%s: Link is up\n", dev->name);
++ uec->oldlink = 1;
++ }
++
++ } else { /* if (mii_info->link) */
++ if (uec->oldlink) {
++ printf("%s: Link is down\n", dev->name);
++ uec->oldlink = 0;
++ uec->oldspeed = 0;
++ uec->oldduplex = -1;
++ }
++ }
++}
++
++static void phy_change(struct eth_device *dev)
++{
++ uec_private_t *uec = (uec_private_t *)dev->priv;
++ uec_t *uec_regs;
++ int result = 0;
++
++ uec_regs = uec->uec_regs;
++
++ /* Delay 5s to give the PHY a chance to change the register state */
++ udelay(5000000);
++
++ /* Update the link, speed, duplex */
++ result = uec->mii_info->phyinfo->read_status(uec->mii_info);
++
++ /* Adjust the interface according to speed */
++ if ((0 == result) || (uec->mii_info->link == 0)) {
++ adjust_link(dev);
++ }
++}
++
++static int uec_set_mac_address(uec_private_t *uec, u8 *mac_addr)
++{
++ uec_t *uec_regs;
++ u32 mac_addr1;
++ u32 mac_addr2;
++
++ if (!uec) {
++ printf("%s: uec not initial\n", __FUNCTION__);
++ return -EINVAL;
++ }
++
++ uec_regs = uec->uec_regs;
++
++ /* if a station address of 0x12345678ABCD, perform a write to
++ MACSTNADDR1 of 0xCDAB7856,
++ MACSTNADDR2 of 0x34120000 */
++
++ mac_addr1 = (mac_addr[5] << 24) | (mac_addr[4] << 16) | \
++ (mac_addr[3] << 8) | (mac_addr[2]);
++ out_be32(&uec_regs->macstnaddr1, mac_addr1);
++
++ mac_addr2 = ((mac_addr[1] << 24) | (mac_addr[0] << 16)) & 0xffff0000;
++ out_be32(&uec_regs->macstnaddr2, mac_addr2);
++
++ return 0;
++}
++
++static int uec_convert_threads_num(uec_num_of_threads_e threads_num,
++ int *threads_num_ret)
++{
++ int num_threads_numerica;
++
++ switch (threads_num) {
++ case UEC_NUM_OF_THREADS_1:
++ num_threads_numerica = 1;
++ break;
++ case UEC_NUM_OF_THREADS_2:
++ num_threads_numerica = 2;
++ break;
++ case UEC_NUM_OF_THREADS_4:
++ num_threads_numerica = 4;
++ break;
++ case UEC_NUM_OF_THREADS_6:
++ num_threads_numerica = 6;
++ break;
++ case UEC_NUM_OF_THREADS_8:
++ num_threads_numerica = 8;
++ break;
++ default:
++ printf("%s: Bad number of threads value.",
++ __FUNCTION__);
++ return -EINVAL;
++ }
++
++ *threads_num_ret = num_threads_numerica;
++
++ return 0;
++}
++
++static void uec_init_tx_parameter(uec_private_t *uec, int num_threads_tx)
++{
++ uec_info_t *uec_info;
++ u32 end_bd;
++ u8 bmrx = 0;
++ int i;
++
++ uec_info = uec->uec_info;
++
++ /* Alloc global Tx parameter RAM page */
++ uec->tx_glbl_pram_offset = qe_muram_alloc(
++ sizeof(uec_tx_global_pram_t),
++ UEC_TX_GLOBAL_PRAM_ALIGNMENT);
++ uec->p_tx_glbl_pram = (uec_tx_global_pram_t *)
++ qe_muram_addr(uec->tx_glbl_pram_offset);
++
++ /* Zero the global Tx prameter RAM */
++ memset(uec->p_tx_glbl_pram, 0, sizeof(uec_tx_global_pram_t));
++
++ /* Init global Tx parameter RAM */
++
++ /* TEMODER, RMON statistics disable, one Tx queue */
++ out_be16(&uec->p_tx_glbl_pram->temoder, TEMODER_INIT_VALUE);
++
++ /* SQPTR */
++ uec->send_q_mem_reg_offset = qe_muram_alloc(
++ sizeof(uec_send_queue_qd_t),
++ UEC_SEND_QUEUE_QUEUE_DESCRIPTOR_ALIGNMENT);
++ uec->p_send_q_mem_reg = (uec_send_queue_mem_region_t *)
++ qe_muram_addr(uec->send_q_mem_reg_offset);
++ out_be32(&uec->p_tx_glbl_pram->sqptr, uec->send_q_mem_reg_offset);
++
++ /* Setup the table with TxBDs ring */
++ end_bd = (u32)uec->p_tx_bd_ring + (uec_info->tx_bd_ring_len - 1)
++ * SIZEOFBD;
++ out_be32(&uec->p_send_q_mem_reg->sqqd[0].bd_ring_base,
++ (u32)(uec->p_tx_bd_ring));
++ out_be32(&uec->p_send_q_mem_reg->sqqd[0].last_bd_completed_address,
++ end_bd);
++
++ /* Scheduler Base Pointer, we have only one Tx queue, no need it */
++ out_be32(&uec->p_tx_glbl_pram->schedulerbasepointer, 0);
++
++ /* TxRMON Base Pointer, TxRMON disable, we don't need it */
++ out_be32(&uec->p_tx_glbl_pram->txrmonbaseptr, 0);
++
++ /* TSTATE, global snooping, big endian, the CSB bus selected */
++ bmrx = BMR_INIT_VALUE;
++ out_be32(&uec->p_tx_glbl_pram->tstate, ((u32)(bmrx) << BMR_SHIFT));
++
++ /* IPH_Offset */
++ for (i = 0; i < MAX_IPH_OFFSET_ENTRY; i++) {
++ out_8(&uec->p_tx_glbl_pram->iphoffset[i], 0);
++ }
++
++ /* VTAG table */
++ for (i = 0; i < UEC_TX_VTAG_TABLE_ENTRY_MAX; i++) {
++ out_be32(&uec->p_tx_glbl_pram->vtagtable[i], 0);
++ }
++
++ /* TQPTR */
++ uec->thread_dat_tx_offset = qe_muram_alloc(
++ num_threads_tx * sizeof(uec_thread_data_tx_t) +
++ 32 *(num_threads_tx == 1), UEC_THREAD_DATA_ALIGNMENT);
++
++ uec->p_thread_data_tx = (uec_thread_data_tx_t *)
++ qe_muram_addr(uec->thread_dat_tx_offset);
++ out_be32(&uec->p_tx_glbl_pram->tqptr, uec->thread_dat_tx_offset);
++}
++
++static void uec_init_rx_parameter(uec_private_t *uec, int num_threads_rx)
++{
++ u8 bmrx = 0;
++ int i;
++ uec_82xx_address_filtering_pram_t *p_af_pram;
++
++ /* Allocate global Rx parameter RAM page */
++ uec->rx_glbl_pram_offset = qe_muram_alloc(
++ sizeof(uec_rx_global_pram_t), UEC_RX_GLOBAL_PRAM_ALIGNMENT);
++ uec->p_rx_glbl_pram = (uec_rx_global_pram_t *)
++ qe_muram_addr(uec->rx_glbl_pram_offset);
++
++ /* Zero Global Rx parameter RAM */
++ memset(uec->p_rx_glbl_pram, 0, sizeof(uec_rx_global_pram_t));
++
++ /* Init global Rx parameter RAM */
++ /* REMODER, Extended feature mode disable, VLAN disable,
++ LossLess flow control disable, Receive firmware statisic disable,
++ Extended address parsing mode disable, One Rx queues,
++ Dynamic maximum/minimum frame length disable, IP checksum check
++ disable, IP address alignment disable
++ */
++ out_be32(&uec->p_rx_glbl_pram->remoder, REMODER_INIT_VALUE);
++
++ /* RQPTR */
++ uec->thread_dat_rx_offset = qe_muram_alloc(
++ num_threads_rx * sizeof(uec_thread_data_rx_t),
++ UEC_THREAD_DATA_ALIGNMENT);
++ uec->p_thread_data_rx = (uec_thread_data_rx_t *)
++ qe_muram_addr(uec->thread_dat_rx_offset);
++ out_be32(&uec->p_rx_glbl_pram->rqptr, uec->thread_dat_rx_offset);
++
++ /* Type_or_Len */
++ out_be16(&uec->p_rx_glbl_pram->typeorlen, 3072);
++
++ /* RxRMON base pointer, we don't need it */
++ out_be32(&uec->p_rx_glbl_pram->rxrmonbaseptr, 0);
++
++ /* IntCoalescingPTR, we don't need it, no interrupt */
++ out_be32(&uec->p_rx_glbl_pram->intcoalescingptr, 0);
++
++ /* RSTATE, global snooping, big endian, the CSB bus selected */
++ bmrx = BMR_INIT_VALUE;
++ out_8(&uec->p_rx_glbl_pram->rstate, bmrx);
++
++ /* MRBLR */
++ out_be16(&uec->p_rx_glbl_pram->mrblr, MAX_RXBUF_LEN);
++
++ /* RBDQPTR */
++ uec->rx_bd_qs_tbl_offset = qe_muram_alloc(
++ sizeof(uec_rx_bd_queues_entry_t) + \
++ sizeof(uec_rx_prefetched_bds_t),
++ UEC_RX_BD_QUEUES_ALIGNMENT);
++ uec->p_rx_bd_qs_tbl = (uec_rx_bd_queues_entry_t *)
++ qe_muram_addr(uec->rx_bd_qs_tbl_offset);
++
++ /* Zero it */
++ memset(uec->p_rx_bd_qs_tbl, 0, sizeof(uec_rx_bd_queues_entry_t) + \
++ sizeof(uec_rx_prefetched_bds_t));
++ out_be32(&uec->p_rx_glbl_pram->rbdqptr, uec->rx_bd_qs_tbl_offset);
++ out_be32(&uec->p_rx_bd_qs_tbl->externalbdbaseptr,
++ (u32)uec->p_rx_bd_ring);
++
++ /* MFLR */
++ out_be16(&uec->p_rx_glbl_pram->mflr, MAX_FRAME_LEN);
++ /* MINFLR */
++ out_be16(&uec->p_rx_glbl_pram->minflr, MIN_FRAME_LEN);
++ /* MAXD1 */
++ out_be16(&uec->p_rx_glbl_pram->maxd1, MAX_DMA1_LEN);
++ /* MAXD2 */
++ out_be16(&uec->p_rx_glbl_pram->maxd2, MAX_DMA2_LEN);
++ /* ECAM_PTR */
++ out_be32(&uec->p_rx_glbl_pram->ecamptr, 0);
++ /* L2QT */
++ out_be32(&uec->p_rx_glbl_pram->l2qt, 0);
++ /* L3QT */
++ for (i = 0; i < 8; i++) {
++ out_be32(&uec->p_rx_glbl_pram->l3qt[i], 0);
++ }
++
++ /* VLAN_TYPE */
++ out_be16(&uec->p_rx_glbl_pram->vlantype, 0x8100);
++ /* TCI */
++ out_be16(&uec->p_rx_glbl_pram->vlantci, 0);
++
++ /* Clear PQ2 style address filtering hash table */
++ p_af_pram = (uec_82xx_address_filtering_pram_t *) \
++ uec->p_rx_glbl_pram->addressfiltering;
++
++ p_af_pram->iaddr_h = 0;
++ p_af_pram->iaddr_l = 0;
++ p_af_pram->gaddr_h = 0;
++ p_af_pram->gaddr_l = 0;
++}
++
++static int uec_issue_init_enet_rxtx_cmd(uec_private_t *uec,
++ int thread_tx, int thread_rx)
++{
++ uec_init_cmd_pram_t *p_init_enet_param;
++ u32 init_enet_param_offset;
++ uec_info_t *uec_info;
++ int i;
++ int snum;
++ u32 init_enet_offset;
++ u32 entry_val;
++ u32 command;
++ u32 cecr_subblock;
++
++ uec_info = uec->uec_info;
++
++ /* Allocate init enet command parameter */
++ uec->init_enet_param_offset = qe_muram_alloc(
++ sizeof(uec_init_cmd_pram_t), 4);
++ init_enet_param_offset = uec->init_enet_param_offset;
++ uec->p_init_enet_param = (uec_init_cmd_pram_t *)
++ qe_muram_addr(uec->init_enet_param_offset);
++
++ /* Zero init enet command struct */
++ memset((void *)uec->p_init_enet_param, 0, sizeof(uec_init_cmd_pram_t));
++
++ /* Init the command struct */
++ p_init_enet_param = uec->p_init_enet_param;
++ p_init_enet_param->resinit0 = ENET_INIT_PARAM_MAGIC_RES_INIT0;
++ p_init_enet_param->resinit1 = ENET_INIT_PARAM_MAGIC_RES_INIT1;
++ p_init_enet_param->resinit2 = ENET_INIT_PARAM_MAGIC_RES_INIT2;
++ p_init_enet_param->resinit3 = ENET_INIT_PARAM_MAGIC_RES_INIT3;
++ p_init_enet_param->resinit4 = ENET_INIT_PARAM_MAGIC_RES_INIT4;
++ p_init_enet_param->largestexternallookupkeysize = 0;
++
++ p_init_enet_param->rgftgfrxglobal |= ((u32)uec_info->num_threads_rx)
++ << ENET_INIT_PARAM_RGF_SHIFT;
++ p_init_enet_param->rgftgfrxglobal |= ((u32)uec_info->num_threads_tx)
++ << ENET_INIT_PARAM_TGF_SHIFT;
++
++ /* Init Rx global parameter pointer */
++ p_init_enet_param->rgftgfrxglobal |= uec->rx_glbl_pram_offset |
++ (u32)uec_info->riscRx;
++
++ /* Init Rx threads */
++ for (i = 0; i < (thread_rx + 1); i++) {
++ if ((snum = qe_get_snum()) < 0) {
++ printf("%s can not get snum\n", __FUNCTION__);
++ return -ENOMEM;
++ }
++
++ if (i==0) {
++ init_enet_offset = 0;
++ } else {
++ init_enet_offset = qe_muram_alloc(
++ sizeof(uec_thread_rx_pram_t),
++ UEC_THREAD_RX_PRAM_ALIGNMENT);
++ }
++
++ entry_val = ((u32)snum << ENET_INIT_PARAM_SNUM_SHIFT) |
++ init_enet_offset | (u32)uec_info->riscRx;
++ p_init_enet_param->rxthread[i] = entry_val;
++ }
++
++ /* Init Tx global parameter pointer */
++ p_init_enet_param->txglobal = uec->tx_glbl_pram_offset |
++ (u32)uec_info->riscTx;
++
++ /* Init Tx threads */
++ for (i = 0; i < thread_tx; i++) {
++ if ((snum = qe_get_snum()) < 0) {
++ printf("%s can not get snum\n", __FUNCTION__);
++ return -ENOMEM;
++ }
++
++ init_enet_offset = qe_muram_alloc(sizeof(uec_thread_tx_pram_t),
++ UEC_THREAD_TX_PRAM_ALIGNMENT);
++
++ entry_val = ((u32)snum << ENET_INIT_PARAM_SNUM_SHIFT) |
++ init_enet_offset | (u32)uec_info->riscTx;
++ p_init_enet_param->txthread[i] = entry_val;
++ }
++
++ __asm__ __volatile__("sync");
++
++ /* Issue QE command */
++ command = QE_INIT_TX_RX;
++ cecr_subblock = ucc_fast_get_qe_cr_subblock(
++ uec->uec_info->uf_info.ucc_num);
++ qe_issue_cmd(command, cecr_subblock, (u8) QE_CR_PROTOCOL_ETHERNET,
++ init_enet_param_offset);
++
++ return 0;
++}
++
++static int uec_startup(uec_private_t *uec)
++{
++ uec_info_t *uec_info;
++ ucc_fast_info_t *uf_info;
++ ucc_fast_private_t *uccf;
++ ucc_fast_t *uf_regs;
++ uec_t *uec_regs;
++ int num_threads_tx;
++ int num_threads_rx;
++ u32 utbipar;
++ enet_interface_e enet_interface;
++ u32 length;
++ u32 align;
++ qe_bd_t *bd;
++ u8 *buf;
++ int i;
++
++ if (!uec || !uec->uec_info) {
++ printf("%s: uec or uec_info not initial\n", __FUNCTION__);
++ return -EINVAL;
++ }
++
++ uec_info = uec->uec_info;
++ uf_info = &(uec_info->uf_info);
++
++ /* Check if Rx BD ring len is illegal */
++ if ((uec_info->rx_bd_ring_len < UEC_RX_BD_RING_SIZE_MIN) || \
++ (uec_info->rx_bd_ring_len % UEC_RX_BD_RING_SIZE_ALIGNMENT)) {
++ printf("%s: Rx BD ring len must be multiple of 4, and > 8.\n",
++ __FUNCTION__);
++ return -EINVAL;
++ }
++
++ /* Check if Tx BD ring len is illegal */
++ if (uec_info->tx_bd_ring_len < UEC_TX_BD_RING_SIZE_MIN) {
++ printf("%s: Tx BD ring length must not be smaller than 2.\n",
++ __FUNCTION__);
++ return -EINVAL;
++ }
++
++ /* Check if MRBLR is illegal */
++ if ((MAX_RXBUF_LEN == 0) || (MAX_RXBUF_LEN % UEC_MRBLR_ALIGNMENT)) {
++ printf("%s: max rx buffer length must be mutliple of 128.\n",
++ __FUNCTION__);
++ return -EINVAL;
++ }
++
++ /* Both Rx and Tx are stopped */
++ uec->grace_stopped_rx = 1;
++ uec->grace_stopped_tx = 1;
++
++ /* Init UCC fast */
++ if (ucc_fast_init(uf_info, &uccf)) {
++ printf("%s: failed to init ucc fast\n", __FUNCTION__);
++ return -ENOMEM;
++ }
++
++ /* Save uccf */
++ uec->uccf = uccf;
++
++ /* Convert the Tx threads number */
++ if (uec_convert_threads_num(uec_info->num_threads_tx,
++ &num_threads_tx)) {
++ return -EINVAL;
++ }
++
++ /* Convert the Rx threads number */
++ if (uec_convert_threads_num(uec_info->num_threads_rx,
++ &num_threads_rx)) {
++ return -EINVAL;
++ }
++
++ uf_regs = uccf->uf_regs;
++
++ /* UEC register is following UCC fast registers */
++ uec_regs = (uec_t *)(&uf_regs->ucc_eth);
++
++ /* Save the UEC register pointer to UEC private struct */
++ uec->uec_regs = uec_regs;
++
++ /* Init UPSMR, enable hardware statistics (UCC) */
++ out_be32(&uec->uccf->uf_regs->upsmr, UPSMR_INIT_VALUE);
++
++ /* Init MACCFG1, flow control disable, disable Tx and Rx */
++ out_be32(&uec_regs->maccfg1, MACCFG1_INIT_VALUE);
++
++ /* Init MACCFG2, length check, MAC PAD and CRC enable */
++ out_be32(&uec_regs->maccfg2, MACCFG2_INIT_VALUE);
++
++ /* Setup MAC interface mode */
++ uec_set_mac_if_mode(uec, uec_info->enet_interface);
++
++ /* Setup MII master clock source */
++ qe_set_mii_clk_src(uec_info->uf_info.ucc_num);
++
++ /* Setup UTBIPAR */
++ utbipar = in_be32(&uec_regs->utbipar);
++ utbipar &= ~UTBIPAR_PHY_ADDRESS_MASK;
++ enet_interface = uec->uec_info->enet_interface;
++ if (enet_interface == ENET_1000_TBI ||
++ enet_interface == ENET_1000_RTBI) {
++ utbipar |= (uec_info->phy_address + uec_info->uf_info.ucc_num)
++ << UTBIPAR_PHY_ADDRESS_SHIFT;
++ } else {
++ utbipar |= (0x10 + uec_info->uf_info.ucc_num)
++ << UTBIPAR_PHY_ADDRESS_SHIFT;
++ }
++
++ out_be32(&uec_regs->utbipar, utbipar);
++
++ /* Allocate Tx BDs */
++ length = ((uec_info->tx_bd_ring_len * SIZEOFBD) /
++ UEC_TX_BD_RING_SIZE_MEMORY_ALIGNMENT) *
++ UEC_TX_BD_RING_SIZE_MEMORY_ALIGNMENT;
++ if ((uec_info->tx_bd_ring_len * SIZEOFBD) %
++ UEC_TX_BD_RING_SIZE_MEMORY_ALIGNMENT) {
++ length += UEC_TX_BD_RING_SIZE_MEMORY_ALIGNMENT;
++ }
++
++ align = UEC_TX_BD_RING_ALIGNMENT;
++ uec->tx_bd_ring_offset = (u32)malloc((u32)(length + align));
++ if (uec->tx_bd_ring_offset != 0) {
++ uec->p_tx_bd_ring = (u8 *)((uec->tx_bd_ring_offset + align)
++ & ~(align - 1));
++ }
++
++ /* Zero all of Tx BDs */
++ memset((void *)(uec->tx_bd_ring_offset), 0, length + align);
++
++ /* Allocate Rx BDs */
++ length = uec_info->rx_bd_ring_len * SIZEOFBD;
++ align = UEC_RX_BD_RING_ALIGNMENT;
++ uec->rx_bd_ring_offset = (u32)(malloc((u32)(length + align)));
++ if (uec->rx_bd_ring_offset != 0) {
++ uec->p_rx_bd_ring = (u8 *)((uec->rx_bd_ring_offset + align)
++ & ~(align - 1));
++ }
++
++ /* Zero all of Rx BDs */
++ memset((void *)(uec->rx_bd_ring_offset), 0, length + align);
++
++ /* Allocate Rx buffer */
++ length = uec_info->rx_bd_ring_len * MAX_RXBUF_LEN;
++ align = UEC_RX_DATA_BUF_ALIGNMENT;
++ uec->rx_buf_offset = (u32)malloc(length + align);
++ if (uec->rx_buf_offset != 0) {
++ uec->p_rx_buf = (u8 *)((uec->rx_buf_offset + align)
++ & ~(align - 1));
++ }
++
++ /* Zero all of the Rx buffer */
++ memset((void *)(uec->rx_buf_offset), 0, length + align);
++
++ /* Init TxBD ring */
++ bd = (qe_bd_t *)uec->p_tx_bd_ring;
++ uec->txBd = bd;
++
++ for (i = 0; i < uec_info->tx_bd_ring_len; i++) {
++ BD_DATA_CLEAR(bd);
++ BD_STATUS_SET(bd, 0);
++ BD_LENGTH_SET(bd, 0);
++ bd ++;
++ }
++ BD_STATUS_SET((--bd), TxBD_WRAP);
++
++ /* Init RxBD ring */
++ bd = (qe_bd_t *)uec->p_rx_bd_ring;
++ uec->rxBd = bd;
++ buf = uec->p_rx_buf;
++ for (i = 0; i < uec_info->rx_bd_ring_len; i++) {
++ BD_DATA_SET(bd, buf);
++ BD_LENGTH_SET(bd, 0);
++ BD_STATUS_SET(bd, RxBD_EMPTY);
++ buf += MAX_RXBUF_LEN;
++ bd ++;
++ }
++ BD_STATUS_SET((--bd), RxBD_WRAP | RxBD_EMPTY);
++
++ /* Init global Tx parameter RAM */
++ uec_init_tx_parameter(uec, num_threads_tx);
++
++ /* Init global Rx parameter RAM */
++ uec_init_rx_parameter(uec, num_threads_rx);
++
++ /* Init ethernet Tx and Rx parameter command */
++ if (uec_issue_init_enet_rxtx_cmd(uec, num_threads_tx,
++ num_threads_rx)) {
++ printf("%s issue init enet cmd failed\n", __FUNCTION__);
++ return -ENOMEM;
++ }
++
++ return 0;
++}
++
++static int uec_init(struct eth_device* dev, bd_t *bd)
++{
++ uec_private_t *uec;
++ int err;
++
++ uec = (uec_private_t *)dev->priv;
++
++ if (uec->the_first_run == 0) {
++ /* Set up the MAC address */
++ if (dev->enetaddr[0] & 0x01) {
++ printf("%s: MacAddress is multcast address\n",
++ __FUNCTION__);
++ return -EINVAL;
++ }
++ uec_set_mac_address(uec, dev->enetaddr);
++ uec->the_first_run = 1;
++ }
++
++ err = uec_open(uec, COMM_DIR_RX_AND_TX);
++ if (err) {
++ printf("%s: cannot enable UEC device\n", dev->name);
++ return err;
++ }
++
++ return 0;
++}
++
++static void uec_halt(struct eth_device* dev)
++{
++ uec_private_t *uec = (uec_private_t *)dev->priv;
++ uec_stop(uec, COMM_DIR_RX_AND_TX);
++}
++
++static int uec_send(struct eth_device* dev, volatile void *buf, int len)
++{
++ uec_private_t *uec;
++ ucc_fast_private_t *uccf;
++ volatile qe_bd_t *bd;
++ volatile u16 status;
++ int i;
++ int result = 0;
++
++ uec = (uec_private_t *)dev->priv;
++ uccf = uec->uccf;
++ bd = uec->txBd;
++
++ /* Find an empty TxBD */
++ for (i = 0; BD_STATUS(bd) & TxBD_READY; i++) {
++ if (i > 0x100000) {
++ printf("%s: tx buffer not ready\n", dev->name);
++ return result;
++ }
++ }
++
++ /* Init TxBD */
++ BD_DATA_SET(bd, buf);
++ BD_LENGTH_SET(bd, len);
++ status = BD_STATUS(bd);
++ status &= BD_WRAP;
++ status |= (TxBD_READY | TxBD_LAST);
++ BD_STATUS_SET(bd, status);
++
++ /* Tell UCC to transmit the buffer */
++ ucc_fast_transmit_on_demand(uccf);
++
++ /* Wait for buffer to be transmitted */
++ status = BD_STATUS(bd);
++ for (i = 0; status & TxBD_READY; i++) {
++ if (i > 0x100000) {
++ printf("%s: tx error\n", dev->name);
++ return result;
++ }
++ status = BD_STATUS(bd);
++ }
++
++ /* Ok, the buffer be transimitted */
++ BD_ADVANCE(bd, status, uec->p_tx_bd_ring);
++ uec->txBd = bd;
++ result = 1;
++
++ return result;
++}
++
++static int uec_recv(struct eth_device* dev)
++{
++ uec_private_t *uec = dev->priv;
++ volatile qe_bd_t *bd;
++ volatile u16 status;
++ u16 len;
++ u8 *data;
++
++ bd = uec->rxBd;
++ status = BD_STATUS(bd);
++
++ while (!(status & RxBD_EMPTY)) {
++ if (!(status & RxBD_ERROR)) {
++ data = BD_DATA(bd);
++ len = BD_LENGTH(bd);
++ NetReceive(data, len);
++ } else {
++ printf("%s: Rx error\n", dev->name);
++ }
++ status &= BD_CLEAN;
++ BD_LENGTH_SET(bd, 0);
++ BD_STATUS_SET(bd, status | RxBD_EMPTY);
++ BD_ADVANCE(bd, status, uec->p_rx_bd_ring);
++ status = BD_STATUS(bd);
++ }
++ uec->rxBd = bd;
++
++ return 1;
++}
++
++int uec_initialize(int index)
++{
++ struct eth_device *dev;
++ int i;
++ uec_private_t *uec;
++ uec_info_t *uec_info;
++ int err;
++
++ dev = (struct eth_device *)malloc(sizeof(struct eth_device));
++ if (!dev)
++ return 0;
++ memset(dev, 0, sizeof(struct eth_device));
++
++ /* Allocate the UEC private struct */
++ uec = (uec_private_t *)malloc(sizeof(uec_private_t));
++ if (!uec) {
++ return -ENOMEM;
++ }
++ memset(uec, 0, sizeof(uec_private_t));
++
++ /* Init UEC private struct, they come from board.h */
++ if (index == 0) {
++#ifdef CONFIG_UEC_ETH1
++ uec_info = &eth1_uec_info;
++#endif
++ } else if (index == 1) {
++#ifdef CONFIG_UEC_ETH2
++ uec_info = &eth2_uec_info;
++#endif
++ } else {
++ printf("%s: index is illegal.\n", __FUNCTION__);
++ return -EINVAL;
++ }
++
++ uec->uec_info = uec_info;
++
++ sprintf(dev->name, "FSL UEC%d", index);
++ dev->iobase = 0;
++ dev->priv = (void *)uec;
++ dev->init = uec_init;
++ dev->halt = uec_halt;
++ dev->send = uec_send;
++ dev->recv = uec_recv;
++
++ /* Clear the ethnet address */
++ for (i = 0; i < 6; i++)
++ dev->enetaddr[i] = 0;
++
++ eth_register(dev);
++
++ err = uec_startup(uec);
++ if (err) {
++ printf("%s: Cannot configure net device, aborting.",dev->name);
++ return err;
++ }
++
++ err = init_phy(dev);
++ if (err) {
++ printf("%s: Cannot initialize PHY, aborting.\n", dev->name);
++ return err;
++ }
++
++ phy_change(dev);
++
++ return 1;
++}
++#endif /* CONFIG_QE */
+diff -Naupr u-boot-1.1.6/drivers/qe/uec.h u-boot-1.1.6-fsl-1/drivers/qe/uec.h
+--- u-boot-1.1.6/drivers/qe/uec.h 1969-12-31 18:00:00.000000000 -0600
++++ u-boot-1.1.6-fsl-1/drivers/qe/uec.h 2006-11-10 11:24:29.000000000 -0600
+@@ -0,0 +1,716 @@
++/*
++ * Copyright (C) 2006 Freescale Semiconductor, Inc.
++ *
++ * Dave Liu <daveliu@freescale.com>
++ * based on source code of Shlomi Gridish
++ *
++ * 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
++ */
++
++#ifndef __UEC_H__
++#define __UEC_H__
++
++#define MAX_TX_THREADS 8
++#define MAX_RX_THREADS 8
++#define MAX_TX_QUEUES 8
++#define MAX_RX_QUEUES 8
++#define MAX_PREFETCHED_BDS 4
++#define MAX_IPH_OFFSET_ENTRY 8
++#define MAX_ENET_INIT_PARAM_ENTRIES_RX 9
++#define MAX_ENET_INIT_PARAM_ENTRIES_TX 8
++
++/* UEC UPSMR (Protocol Specific Mode Register)
++ */
++#define UPSMR_ECM 0x04000000 /* Enable CAM Miss */
++#define UPSMR_HSE 0x02000000 /* Hardware Statistics Enable */
++#define UPSMR_PRO 0x00400000 /* Promiscuous */
++#define UPSMR_CAP 0x00200000 /* CAM polarity */
++#define UPSMR_RSH 0x00100000 /* Receive Short Frames */
++#define UPSMR_RPM 0x00080000 /* Reduced Pin Mode interfaces */
++#define UPSMR_R10M 0x00040000 /* RGMII/RMII 10 Mode */
++#define UPSMR_RLPB 0x00020000 /* RMII Loopback Mode */
++#define UPSMR_TBIM 0x00010000 /* Ten-bit Interface Mode */
++#define UPSMR_RMM 0x00001000 /* RMII/RGMII Mode */
++#define UPSMR_CAM 0x00000400 /* CAM Address Matching */
++#define UPSMR_BRO 0x00000200 /* Broadcast Address */
++#define UPSMR_RES1 0x00002000 /* Reserved feild - must be 1 */
++
++#define UPSMR_INIT_VALUE (UPSMR_HSE | UPSMR_RES1)
++
++/* UEC MACCFG1 (MAC Configuration 1 Register)
++ */
++#define MACCFG1_FLOW_RX 0x00000020 /* Flow Control Rx */
++#define MACCFG1_FLOW_TX 0x00000010 /* Flow Control Tx */
++#define MACCFG1_ENABLE_SYNCHED_RX 0x00000008 /* Enable Rx Sync */
++#define MACCFG1_ENABLE_RX 0x00000004 /* Enable Rx */
++#define MACCFG1_ENABLE_SYNCHED_TX 0x00000002 /* Enable Tx Sync */
++#define MACCFG1_ENABLE_TX 0x00000001 /* Enable Tx */
++
++#define MACCFG1_INIT_VALUE (0)
++
++/* UEC MACCFG2 (MAC Configuration 2 Register)
++ */
++#define MACCFG2_PREL 0x00007000
++#define MACCFG2_PREL_SHIFT (31 - 19)
++#define MACCFG2_PREL_MASK 0x0000f000
++#define MACCFG2_SRP 0x00000080
++#define MACCFG2_STP 0x00000040
++#define MACCFG2_RESERVED_1 0x00000020 /* must be set */
++#define MACCFG2_LC 0x00000010 /* Length Check */
++#define MACCFG2_MPE 0x00000008
++#define MACCFG2_FDX 0x00000001 /* Full Duplex */
++#define MACCFG2_FDX_MASK 0x00000001
++#define MACCFG2_PAD_CRC 0x00000004
++#define MACCFG2_CRC_EN 0x00000002
++#define MACCFG2_PAD_AND_CRC_MODE_NONE 0x00000000
++#define MACCFG2_PAD_AND_CRC_MODE_CRC_ONLY 0x00000002
++#define MACCFG2_PAD_AND_CRC_MODE_PAD_AND_CRC 0x00000004
++#define MACCFG2_INTERFACE_MODE_NIBBLE 0x00000100
++#define MACCFG2_INTERFACE_MODE_BYTE 0x00000200
++#define MACCFG2_INTERFACE_MODE_MASK 0x00000300
++
++#define MACCFG2_INIT_VALUE (MACCFG2_PREL | MACCFG2_RESERVED_1 | \
++ MACCFG2_LC | MACCFG2_PAD_CRC | MACCFG2_FDX)
++
++/* UEC Event Register
++*/
++#define UCCE_MPD 0x80000000
++#define UCCE_SCAR 0x40000000
++#define UCCE_GRA 0x20000000
++#define UCCE_CBPR 0x10000000
++#define UCCE_BSY 0x08000000
++#define UCCE_RXC 0x04000000
++#define UCCE_TXC 0x02000000
++#define UCCE_TXE 0x01000000
++#define UCCE_TXB7 0x00800000
++#define UCCE_TXB6 0x00400000
++#define UCCE_TXB5 0x00200000
++#define UCCE_TXB4 0x00100000
++#define UCCE_TXB3 0x00080000
++#define UCCE_TXB2 0x00040000
++#define UCCE_TXB1 0x00020000
++#define UCCE_TXB0 0x00010000
++#define UCCE_RXB7 0x00008000
++#define UCCE_RXB6 0x00004000
++#define UCCE_RXB5 0x00002000
++#define UCCE_RXB4 0x00001000
++#define UCCE_RXB3 0x00000800
++#define UCCE_RXB2 0x00000400
++#define UCCE_RXB1 0x00000200
++#define UCCE_RXB0 0x00000100
++#define UCCE_RXF7 0x00000080
++#define UCCE_RXF6 0x00000040
++#define UCCE_RXF5 0x00000020
++#define UCCE_RXF4 0x00000010
++#define UCCE_RXF3 0x00000008
++#define UCCE_RXF2 0x00000004
++#define UCCE_RXF1 0x00000002
++#define UCCE_RXF0 0x00000001
++
++#define UCCE_TXB (UCCE_TXB7 | UCCE_TXB6 | UCCE_TXB5 | UCCE_TXB4 | \
++ UCCE_TXB3 | UCCE_TXB2 | UCCE_TXB1 | UCCE_TXB0)
++#define UCCE_RXB (UCCE_RXB7 | UCCE_RXB6 | UCCE_RXB5 | UCCE_RXB4 | \
++ UCCE_RXB3 | UCCE_RXB2 | UCCE_RXB1 | UCCE_RXB0)
++#define UCCE_RXF (UCCE_RXF7 | UCCE_RXF6 | UCCE_RXF5 | UCCE_RXF4 | \
++ UCCE_RXF3 | UCCE_RXF2 | UCCE_RXF1 | UCCE_RXF0)
++#define UCCE_OTHER (UCCE_SCAR | UCCE_GRA | UCCE_CBPR | UCCE_BSY | \
++ UCCE_RXC | UCCE_TXC | UCCE_TXE)
++
++/* UEC TEMODR Register
++*/
++#define TEMODER_SCHEDULER_ENABLE 0x2000
++#define TEMODER_IP_CHECKSUM_GENERATE 0x0400
++#define TEMODER_PERFORMANCE_OPTIMIZATION_MODE1 0x0200
++#define TEMODER_RMON_STATISTICS 0x0100
++#define TEMODER_NUM_OF_QUEUES_SHIFT (15-15)
++
++#define TEMODER_INIT_VALUE 0xc000
++
++/* UEC REMODR Register
++*/
++#define REMODER_RX_RMON_STATISTICS_ENABLE 0x00001000
++#define REMODER_RX_EXTENDED_FEATURES 0x80000000
++#define REMODER_VLAN_OPERATION_TAGGED_SHIFT (31-9 )
++#define REMODER_VLAN_OPERATION_NON_TAGGED_SHIFT (31-10)
++#define REMODER_RX_QOS_MODE_SHIFT (31-15)
++#define REMODER_RMON_STATISTICS 0x00001000
++#define REMODER_RX_EXTENDED_FILTERING 0x00000800
++#define REMODER_NUM_OF_QUEUES_SHIFT (31-23)
++#define REMODER_DYNAMIC_MAX_FRAME_LENGTH 0x00000008
++#define REMODER_DYNAMIC_MIN_FRAME_LENGTH 0x00000004
++#define REMODER_IP_CHECKSUM_CHECK 0x00000002
++#define REMODER_IP_ADDRESS_ALIGNMENT 0x00000001
++
++#define REMODER_INIT_VALUE 0
++
++/* BMRx - Bus Mode Register */
++#define BMR_GLB 0x20
++#define BMR_BO_BE 0x10
++#define BMR_DTB_SECONDARY_BUS 0x02
++#define BMR_BDB_SECONDARY_BUS 0x01
++
++#define BMR_SHIFT 24
++#define BMR_INIT_VALUE (BMR_GLB | BMR_BO_BE)
++
++/* UEC UCCS (Ethernet Status Register)
++ */
++#define UCCS_BPR 0x02
++#define UCCS_PAU 0x02
++#define UCCS_MPD 0x01
++
++/* UEC MIIMCFG (MII Management Configuration Register)
++ */
++#define MIIMCFG_RESET_MANAGEMENT 0x80000000
++#define MIIMCFG_NO_PREAMBLE 0x00000010
++#define MIIMCFG_CLOCK_DIVIDE_SHIFT (31 - 31)
++#define MIIMCFG_CLOCK_DIVIDE_MASK 0x0000000f
++#define MIIMCFG_MANAGEMENT_CLOCK_DIVIDE_BY_4 0x00000001
++#define MIIMCFG_MANAGEMENT_CLOCK_DIVIDE_BY_6 0x00000002
++#define MIIMCFG_MANAGEMENT_CLOCK_DIVIDE_BY_8 0x00000003
++#define MIIMCFG_MANAGEMENT_CLOCK_DIVIDE_BY_10 0x00000004
++#define MIIMCFG_MANAGEMENT_CLOCK_DIVIDE_BY_14 0x00000005
++#define MIIMCFG_MANAGEMENT_CLOCK_DIVIDE_BY_20 0x00000006
++#define MIIMCFG_MANAGEMENT_CLOCK_DIVIDE_BY_28 0x00000007
++
++#define MIIMCFG_MNGMNT_CLC_DIV_INIT_VALUE \
++ MIIMCFG_MANAGEMENT_CLOCK_DIVIDE_BY_10
++
++/* UEC MIIMCOM (MII Management Command Register)
++ */
++#define MIIMCOM_SCAN_CYCLE 0x00000002 /* Scan cycle */
++#define MIIMCOM_READ_CYCLE 0x00000001 /* Read cycle */
++
++/* UEC MIIMADD (MII Management Address Register)
++ */
++#define MIIMADD_PHY_ADDRESS_SHIFT (31 - 23)
++#define MIIMADD_PHY_REGISTER_SHIFT (31 - 31)
++
++/* UEC MIIMCON (MII Management Control Register)
++ */
++#define MIIMCON_PHY_CONTROL_SHIFT (31 - 31)
++#define MIIMCON_PHY_STATUS_SHIFT (31 - 31)
++
++/* UEC MIIMIND (MII Management Indicator Register)
++ */
++#define MIIMIND_NOT_VALID 0x00000004
++#define MIIMIND_SCAN 0x00000002
++#define MIIMIND_BUSY 0x00000001
++
++/* UEC UTBIPAR (Ten Bit Interface Physical Address Register)
++ */
++#define UTBIPAR_PHY_ADDRESS_SHIFT (31 - 31)
++#define UTBIPAR_PHY_ADDRESS_MASK 0x0000001f
++
++/* UEC UESCR (Ethernet Statistics Control Register)
++ */
++#define UESCR_AUTOZ 0x8000
++#define UESCR_CLRCNT 0x4000
++#define UESCR_MAXCOV_SHIFT (15 - 7)
++#define UESCR_SCOV_SHIFT (15 - 15)
++
++/****** Tx data struct collection ******/
++/* Tx thread data, each Tx thread has one this struct.
++*/
++typedef struct uec_thread_data_tx {
++ u8 res0[136];
++} __attribute__ ((packed)) uec_thread_data_tx_t;
++
++/* Tx thread parameter, each Tx thread has one this struct.
++*/
++typedef struct uec_thread_tx_pram {
++ u8 res0[64];
++} __attribute__ ((packed)) uec_thread_tx_pram_t;
++
++/* Send queue queue-descriptor, each Tx queue has one this QD
++*/
++typedef struct uec_send_queue_qd {
++ u32 bd_ring_base; /* pointer to BD ring base address */
++ u8 res0[0x8];
++ u32 last_bd_completed_address; /* last entry in BD ring */
++ u8 res1[0x30];
++} __attribute__ ((packed)) uec_send_queue_qd_t;
++
++/* Send queue memory region */
++typedef struct uec_send_queue_mem_region {
++ uec_send_queue_qd_t sqqd[MAX_TX_QUEUES];
++} __attribute__ ((packed)) uec_send_queue_mem_region_t;
++
++/* Scheduler struct
++*/
++typedef struct uec_scheduler {
++ u16 cpucount0; /* CPU packet counter */
++ u16 cpucount1; /* CPU packet counter */
++ u16 cecount0; /* QE packet counter */
++ u16 cecount1; /* QE packet counter */
++ u16 cpucount2; /* CPU packet counter */
++ u16 cpucount3; /* CPU packet counter */
++ u16 cecount2; /* QE packet counter */
++ u16 cecount3; /* QE packet counter */
++ u16 cpucount4; /* CPU packet counter */
++ u16 cpucount5; /* CPU packet counter */
++ u16 cecount4; /* QE packet counter */
++ u16 cecount5; /* QE packet counter */
++ u16 cpucount6; /* CPU packet counter */
++ u16 cpucount7; /* CPU packet counter */
++ u16 cecount6; /* QE packet counter */
++ u16 cecount7; /* QE packet counter */
++ u32 weightstatus[MAX_TX_QUEUES]; /* accumulated weight factor */
++ u32 rtsrshadow; /* temporary variable handled by QE */
++ u32 time; /* temporary variable handled by QE */
++ u32 ttl; /* temporary variable handled by QE */
++ u32 mblinterval; /* max burst length interval */
++ u16 nortsrbytetime; /* normalized value of byte time in tsr units */
++ u8 fracsiz;
++ u8 res0[1];
++ u8 strictpriorityq; /* Strict Priority Mask register */
++ u8 txasap; /* Transmit ASAP register */
++ u8 extrabw; /* Extra BandWidth register */
++ u8 oldwfqmask; /* temporary variable handled by QE */
++ u8 weightfactor[MAX_TX_QUEUES]; /**< weight factor for queues */
++ u32 minw; /* temporary variable handled by QE */
++ u8 res1[0x70-0x64];
++} __attribute__ ((packed)) uec_scheduler_t;
++
++/* Tx firmware counters
++*/
++typedef struct uec_tx_firmware_statistics_pram {
++ u32 sicoltx; /* single collision */
++ u32 mulcoltx; /* multiple collision */
++ u32 latecoltxfr; /* late collision */
++ u32 frabortduecol; /* frames aborted due to tx collision */
++ u32 frlostinmactxer; /* frames lost due to internal MAC error tx */
++ u32 carriersenseertx; /* carrier sense error */
++ u32 frtxok; /* frames transmitted OK */
++ u32 txfrexcessivedefer;
++ u32 txpkts256; /* total packets(including bad) 256~511 B */
++ u32 txpkts512; /* total packets(including bad) 512~1023B */
++ u32 txpkts1024; /* total packets(including bad) 1024~1518B */
++ u32 txpktsjumbo; /* total packets(including bad) >1024 */
++} __attribute__ ((packed)) uec_tx_firmware_statistics_pram_t;
++
++/* Tx global parameter table
++*/
++typedef struct uec_tx_global_pram {
++ u16 temoder;
++ u8 res0[0x38-0x02];
++ u32 sqptr;
++ u32 schedulerbasepointer;
++ u32 txrmonbaseptr;
++ u32 tstate;
++ u8 iphoffset[MAX_IPH_OFFSET_ENTRY];
++ u32 vtagtable[0x8];
++ u32 tqptr;
++ u8 res2[0x80-0x74];
++} __attribute__ ((packed)) uec_tx_global_pram_t;
++
++
++/****** Rx data struct collection ******/
++/* Rx thread data, each Rx thread has one this struct.
++*/
++typedef struct uec_thread_data_rx {
++ u8 res0[40];
++} __attribute__ ((packed)) uec_thread_data_rx_t;
++
++/* Rx thread parameter, each Rx thread has one this struct.
++*/
++typedef struct uec_thread_rx_pram {
++ u8 res0[128];
++} __attribute__ ((packed)) uec_thread_rx_pram_t;
++
++/* Rx firmware counters
++*/
++typedef struct uec_rx_firmware_statistics_pram {
++ u32 frrxfcser; /* frames with crc error */
++ u32 fraligner; /* frames with alignment error */
++ u32 inrangelenrxer; /* in range length error */
++ u32 outrangelenrxer; /* out of range length error */
++ u32 frtoolong; /* frame too long */
++ u32 runt; /* runt */
++ u32 verylongevent; /* very long event */
++ u32 symbolerror; /* symbol error */
++ u32 dropbsy; /* drop because of BD not ready */
++ u8 res0[0x8];
++ u32 mismatchdrop; /* drop because of MAC filtering */
++ u32 underpkts; /* total frames less than 64 octets */
++ u32 pkts256; /* total frames(including bad)256~511 B */
++ u32 pkts512; /* total frames(including bad)512~1023 B */
++ u32 pkts1024; /* total frames(including bad)1024~1518 B */
++ u32 pktsjumbo; /* total frames(including bad) >1024 B */
++ u32 frlossinmacer;
++ u32 pausefr; /* pause frames */
++ u8 res1[0x4];
++ u32 removevlan;
++ u32 replacevlan;
++ u32 insertvlan;
++} __attribute__ ((packed)) uec_rx_firmware_statistics_pram_t;
++
++/* Rx interrupt coalescing entry, each Rx queue has one this entry.
++*/
++typedef struct uec_rx_interrupt_coalescing_entry {
++ u32 maxvalue;
++ u32 counter;
++} __attribute__ ((packed)) uec_rx_interrupt_coalescing_entry_t;
++
++typedef struct uec_rx_interrupt_coalescing_table {
++ uec_rx_interrupt_coalescing_entry_t entry[MAX_RX_QUEUES];
++} __attribute__ ((packed)) uec_rx_interrupt_coalescing_table_t;
++
++/* RxBD queue entry, each Rx queue has one this entry.
++*/
++typedef struct uec_rx_bd_queues_entry {
++ u32 bdbaseptr; /* BD base pointer */
++ u32 bdptr; /* BD pointer */
++ u32 externalbdbaseptr; /* external BD base pointer */
++ u32 externalbdptr; /* external BD pointer */
++} __attribute__ ((packed)) uec_rx_bd_queues_entry_t;
++
++/* Rx global paramter table
++*/
++typedef struct uec_rx_global_pram {
++ u32 remoder; /* ethernet mode reg. */
++ u32 rqptr; /* base pointer to the Rx Queues */
++ u32 res0[0x1];
++ u8 res1[0x20-0xC];
++ u16 typeorlen;
++ u8 res2[0x1];
++ u8 rxgstpack; /* ack on GRACEFUL STOP RX command */
++ u32 rxrmonbaseptr; /* Rx RMON statistics base */
++ u8 res3[0x30-0x28];
++ u32 intcoalescingptr; /* Interrupt coalescing table pointer */
++ u8 res4[0x36-0x34];
++ u8 rstate;
++ u8 res5[0x46-0x37];
++ u16 mrblr; /* max receive buffer length reg. */
++ u32 rbdqptr; /* RxBD parameter table description */
++ u16 mflr; /* max frame length reg. */
++ u16 minflr; /* min frame length reg. */
++ u16 maxd1; /* max dma1 length reg. */
++ u16 maxd2; /* max dma2 length reg. */
++ u32 ecamptr; /* external CAM address */
++ u32 l2qt; /* VLAN priority mapping table. */
++ u32 l3qt[0x8]; /* IP priority mapping table. */
++ u16 vlantype; /* vlan type */
++ u16 vlantci; /* default vlan tci */
++ u8 addressfiltering[64];/* address filtering data structure */
++ u32 exfGlobalParam; /* extended filtering global parameters */
++ u8 res6[0x100-0xC4]; /* Initialize to zero */
++} __attribute__ ((packed)) uec_rx_global_pram_t;
++
++#define GRACEFUL_STOP_ACKNOWLEDGE_RX 0x01
++
++
++/****** UEC common ******/
++/* UCC statistics - hardware counters
++*/
++typedef struct uec_hardware_statistics {
++ u32 tx64;
++ u32 tx127;
++ u32 tx255;
++ u32 rx64;
++ u32 rx127;
++ u32 rx255;
++ u32 txok;
++ u16 txcf;
++ u32 tmca;
++ u32 tbca;
++ u32 rxfok;
++ u32 rxbok;
++ u32 rbyt;
++ u32 rmca;
++ u32 rbca;
++} __attribute__ ((packed)) uec_hardware_statistics_t;
++
++/* InitEnet command parameter
++*/
++typedef struct uec_init_cmd_pram {
++ u8 resinit0;
++ u8 resinit1;
++ u8 resinit2;
++ u8 resinit3;
++ u16 resinit4;
++ u8 res1[0x1];
++ u8 largestexternallookupkeysize;
++ u32 rgftgfrxglobal;
++ u32 rxthread[MAX_ENET_INIT_PARAM_ENTRIES_RX]; /* rx threads */
++ u8 res2[0x38 - 0x30];
++ u32 txglobal; /* tx global */
++ u32 txthread[MAX_ENET_INIT_PARAM_ENTRIES_TX]; /* tx threads */
++ u8 res3[0x1];
++} __attribute__ ((packed)) uec_init_cmd_pram_t;
++
++#define ENET_INIT_PARAM_RGF_SHIFT (32 - 4)
++#define ENET_INIT_PARAM_TGF_SHIFT (32 - 8)
++
++#define ENET_INIT_PARAM_RISC_MASK 0x0000003f
++#define ENET_INIT_PARAM_PTR_MASK 0x00ffffc0
++#define ENET_INIT_PARAM_SNUM_MASK 0xff000000
++#define ENET_INIT_PARAM_SNUM_SHIFT 24
++
++#define ENET_INIT_PARAM_MAGIC_RES_INIT0 0x06
++#define ENET_INIT_PARAM_MAGIC_RES_INIT1 0x30
++#define ENET_INIT_PARAM_MAGIC_RES_INIT2 0xff
++#define ENET_INIT_PARAM_MAGIC_RES_INIT3 0x00
++#define ENET_INIT_PARAM_MAGIC_RES_INIT4 0x0400
++
++/* structure representing 82xx Address Filtering Enet Address in PRAM
++*/
++typedef struct uec_82xx_enet_address {
++ u8 res1[0x2];
++ u16 h; /* address (MSB) */
++ u16 m; /* address */
++ u16 l; /* address (LSB) */
++} __attribute__ ((packed)) uec_82xx_enet_address_t;
++
++/* structure representing 82xx Address Filtering PRAM
++*/
++typedef struct uec_82xx_address_filtering_pram {
++ u32 iaddr_h; /* individual address filter, high */
++ u32 iaddr_l; /* individual address filter, low */
++ u32 gaddr_h; /* group address filter, high */
++ u32 gaddr_l; /* group address filter, low */
++ uec_82xx_enet_address_t taddr;
++ uec_82xx_enet_address_t paddr[4];
++ u8 res0[0x40-0x38];
++} __attribute__ ((packed)) uec_82xx_address_filtering_pram_t;
++
++/* Buffer Descriptor
++*/
++typedef struct buffer_descriptor {
++ u16 status;
++ u16 len;
++ u32 data;
++} __attribute__ ((packed)) qe_bd_t, *p_bd_t;
++
++#define SIZEOFBD sizeof(qe_bd_t)
++
++/* Common BD flags
++*/
++#define BD_WRAP 0x2000
++#define BD_INT 0x1000
++#define BD_LAST 0x0800
++#define BD_CLEAN 0x3000
++
++/* TxBD status flags
++*/
++#define TxBD_READY 0x8000
++#define TxBD_PADCRC 0x4000
++#define TxBD_WRAP BD_WRAP
++#define TxBD_INT BD_INT
++#define TxBD_LAST BD_LAST
++#define TxBD_TXCRC 0x0400
++#define TxBD_DEF 0x0200
++#define TxBD_PP 0x0100
++#define TxBD_LC 0x0080
++#define TxBD_RL 0x0040
++#define TxBD_RC 0x003C
++#define TxBD_UNDERRUN 0x0002
++#define TxBD_TRUNC 0x0001
++
++#define TxBD_ERROR (TxBD_UNDERRUN | TxBD_TRUNC)
++
++/* RxBD status flags
++*/
++#define RxBD_EMPTY 0x8000
++#define RxBD_OWNER 0x4000
++#define RxBD_WRAP BD_WRAP
++#define RxBD_INT BD_INT
++#define RxBD_LAST BD_LAST
++#define RxBD_FIRST 0x0400
++#define RxBD_CMR 0x0200
++#define RxBD_MISS 0x0100
++#define RxBD_BCAST 0x0080
++#define RxBD_MCAST 0x0040
++#define RxBD_LG 0x0020
++#define RxBD_NO 0x0010
++#define RxBD_SHORT 0x0008
++#define RxBD_CRCERR 0x0004
++#define RxBD_OVERRUN 0x0002
++#define RxBD_IPCH 0x0001
++
++#define RxBD_ERROR (RxBD_LG | RxBD_NO | RxBD_SHORT | \
++ RxBD_CRCERR | RxBD_OVERRUN)
++
++/* BD access macros
++*/
++#define BD_STATUS(_bd) (((p_bd_t)(_bd))->status)
++#define BD_STATUS_SET(_bd, _val) (((p_bd_t)(_bd))->status = _val)
++#define BD_LENGTH(_bd) (((p_bd_t)(_bd))->len)
++#define BD_LENGTH_SET(_bd, _val) (((p_bd_t)(_bd))->len = _val)
++#define BD_DATA_CLEAR(_bd) (((p_bd_t)(_bd))->data = 0)
++#define BD_IS_DATA(_bd) (((p_bd_t)(_bd))->data)
++#define BD_DATA(_bd) ((u8 *)(((p_bd_t)(_bd))->data))
++#define BD_DATA_SET(_bd, _data) (((p_bd_t)(_bd))->data = (u32)(_data))
++#define BD_ADVANCE(_bd,_status,_base) \
++ (((_status) & BD_WRAP) ? (_bd) = ((p_bd_t)(_base)) : ++(_bd))
++
++/* Rx Prefetched BDs
++*/
++typedef struct uec_rx_prefetched_bds {
++ qe_bd_t bd[MAX_PREFETCHED_BDS]; /* prefetched bd */
++} __attribute__ ((packed)) uec_rx_prefetched_bds_t;
++
++/* Alignments
++ */
++#define UEC_RX_GLOBAL_PRAM_ALIGNMENT 64
++#define UEC_TX_GLOBAL_PRAM_ALIGNMENT 64
++#define UEC_THREAD_RX_PRAM_ALIGNMENT 128
++#define UEC_THREAD_TX_PRAM_ALIGNMENT 64
++#define UEC_THREAD_DATA_ALIGNMENT 256
++#define UEC_SEND_QUEUE_QUEUE_DESCRIPTOR_ALIGNMENT 32
++#define UEC_SCHEDULER_ALIGNMENT 4
++#define UEC_TX_STATISTICS_ALIGNMENT 4
++#define UEC_RX_STATISTICS_ALIGNMENT 4
++#define UEC_RX_INTERRUPT_COALESCING_ALIGNMENT 4
++#define UEC_RX_BD_QUEUES_ALIGNMENT 8
++#define UEC_RX_PREFETCHED_BDS_ALIGNMENT 128
++#define UEC_RX_EXTENDED_FILTERING_GLOBAL_PARAMETERS_ALIGNMENT 4
++#define UEC_RX_BD_RING_ALIGNMENT 32
++#define UEC_TX_BD_RING_ALIGNMENT 32
++#define UEC_MRBLR_ALIGNMENT 128
++#define UEC_RX_BD_RING_SIZE_ALIGNMENT 4
++#define UEC_TX_BD_RING_SIZE_MEMORY_ALIGNMENT 32
++#define UEC_RX_DATA_BUF_ALIGNMENT 64
++
++#define UEC_VLAN_PRIORITY_MAX 8
++#define UEC_IP_PRIORITY_MAX 64
++#define UEC_TX_VTAG_TABLE_ENTRY_MAX 8
++#define UEC_RX_BD_RING_SIZE_MIN 8
++#define UEC_TX_BD_RING_SIZE_MIN 2
++
++/* Ethernet speed
++*/
++typedef enum enet_speed {
++ ENET_SPEED_10BT, /* 10 Base T */
++ ENET_SPEED_100BT, /* 100 Base T */
++ ENET_SPEED_1000BT /* 1000 Base T */
++} enet_speed_e;
++
++/* Ethernet Address Type.
++*/
++typedef enum enet_addr_type {
++ ENET_ADDR_TYPE_INDIVIDUAL,
++ ENET_ADDR_TYPE_GROUP,
++ ENET_ADDR_TYPE_BROADCAST
++} enet_addr_type_e;
++
++/* TBI / MII Set Register
++*/
++typedef enum enet_tbi_mii_reg {
++ ENET_TBI_MII_CR = 0x00,
++ ENET_TBI_MII_SR = 0x01,
++ ENET_TBI_MII_ANA = 0x04,
++ ENET_TBI_MII_ANLPBPA = 0x05,
++ ENET_TBI_MII_ANEX = 0x06,
++ ENET_TBI_MII_ANNPT = 0x07,
++ ENET_TBI_MII_ANLPANP = 0x08,
++ ENET_TBI_MII_EXST = 0x0F,
++ ENET_TBI_MII_JD = 0x10,
++ ENET_TBI_MII_TBICON = 0x11
++} enet_tbi_mii_reg_e;
++
++/* UEC number of threads
++*/
++typedef enum uec_num_of_threads {
++ UEC_NUM_OF_THREADS_1 = 0x1, /* 1 */
++ UEC_NUM_OF_THREADS_2 = 0x2, /* 2 */
++ UEC_NUM_OF_THREADS_4 = 0x0, /* 4 */
++ UEC_NUM_OF_THREADS_6 = 0x3, /* 6 */
++ UEC_NUM_OF_THREADS_8 = 0x4 /* 8 */
++} uec_num_of_threads_e;
++
++/* UEC ethernet interface type
++*/
++typedef enum enet_interface {
++ ENET_10_MII,
++ ENET_10_RMII,
++ ENET_10_RGMII,
++ ENET_100_MII,
++ ENET_100_RMII,
++ ENET_100_RGMII,
++ ENET_1000_GMII,
++ ENET_1000_RGMII,
++ ENET_1000_TBI,
++ ENET_1000_RTBI
++} enet_interface_e;
++
++/* UEC initialization info struct
++*/
++typedef struct uec_info {
++ ucc_fast_info_t uf_info;
++ uec_num_of_threads_e num_threads_tx;
++ uec_num_of_threads_e num_threads_rx;
++ qe_risc_allocation_e riscTx;
++ qe_risc_allocation_e riscRx;
++ u16 rx_bd_ring_len;
++ u16 tx_bd_ring_len;
++ u8 phy_address;
++ enet_interface_e enet_interface;
++} uec_info_t;
++
++/* UEC driver initialized info
++*/
++#define MAX_RXBUF_LEN 1536
++#define MAX_FRAME_LEN 1518
++#define MIN_FRAME_LEN 64
++#define MAX_DMA1_LEN 1520
++#define MAX_DMA2_LEN 1520
++
++/* UEC driver private struct
++*/
++typedef struct uec_private {
++ uec_info_t *uec_info;
++ ucc_fast_private_t *uccf;
++ struct eth_device *dev;
++ uec_t *uec_regs;
++ /* enet init command parameter */
++ uec_init_cmd_pram_t *p_init_enet_param;
++ u32 init_enet_param_offset;
++ /* Rx and Tx paramter */
++ uec_rx_global_pram_t *p_rx_glbl_pram;
++ u32 rx_glbl_pram_offset;
++ uec_tx_global_pram_t *p_tx_glbl_pram;
++ u32 tx_glbl_pram_offset;
++ uec_send_queue_mem_region_t *p_send_q_mem_reg;
++ u32 send_q_mem_reg_offset;
++ uec_thread_data_tx_t *p_thread_data_tx;
++ u32 thread_dat_tx_offset;
++ uec_thread_data_rx_t *p_thread_data_rx;
++ u32 thread_dat_rx_offset;
++ uec_rx_bd_queues_entry_t *p_rx_bd_qs_tbl;
++ u32 rx_bd_qs_tbl_offset;
++ /* BDs specific */
++ u8 *p_tx_bd_ring;
++ u32 tx_bd_ring_offset;
++ u8 *p_rx_bd_ring;
++ u32 rx_bd_ring_offset;
++ u8 *p_rx_buf;
++ u32 rx_buf_offset;
++ volatile qe_bd_t *txBd;
++ volatile qe_bd_t *rxBd;
++ /* Status */
++ int mac_tx_enabled;
++ int mac_rx_enabled;
++ int grace_stopped_tx;
++ int grace_stopped_rx;
++ int the_first_run;
++ /* PHY specific */
++ struct uec_mii_info *mii_info;
++ int oldspeed;
++ int oldduplex;
++ int oldlink;
++} uec_private_t;
++
++#endif /* __UEC_H__ */
+diff -Naupr u-boot-1.1.6/drivers/qe/uec_phy.c u-boot-1.1.6-fsl-1/drivers/qe/uec_phy.c
+--- u-boot-1.1.6/drivers/qe/uec_phy.c 1969-12-31 18:00:00.000000000 -0600
++++ u-boot-1.1.6-fsl-1/drivers/qe/uec_phy.c 2006-12-06 10:33:49.000000000 -0600
+@@ -0,0 +1,607 @@
++/*
++ * Copyright (C) 2005 Freescale Semiconductor, Inc.
++ *
++ * Author: Shlomi Gridish
++ *
++ * Description: UCC GETH Driver -- PHY handling
++ * Driver for UEC on QE
++ * Based on 8260_io/fcc_enet.c
++ *
++ * 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.
++ *
++ */
++
++#include "common.h"
++#include "net.h"
++#include "malloc.h"
++#include "asm/errno.h"
++#include "asm/immap_qe.h"
++#include "asm/io.h"
++#include "qe.h"
++#include "uccf.h"
++#include "uec.h"
++#include "uec_phy.h"
++#include "miiphy.h"
++
++#if defined(CONFIG_QE)
++
++#define UEC_VERBOSE_DEBUG
++#define ugphy_printk(format, arg...) \
++ printf(format "\n", ## arg)
++
++#define ugphy_dbg(format, arg...) \
++ ugphy_printk(format , ## arg)
++#define ugphy_err(format, arg...) \
++ ugphy_printk(format , ## arg)
++#define ugphy_info(format, arg...) \
++ ugphy_printk(format , ## arg)
++#define ugphy_warn(format, arg...) \
++ ugphy_printk(format , ## arg)
++
++#ifdef UEC_VERBOSE_DEBUG
++#define ugphy_vdbg ugphy_dbg
++#else
++#define ugphy_vdbg(ugeth, fmt, args...) do { } while (0)
++#endif /* UEC_VERBOSE_DEBUG */
++
++static void config_genmii_advert (struct uec_mii_info *mii_info);
++static void genmii_setup_forced (struct uec_mii_info *mii_info);
++static void genmii_restart_aneg (struct uec_mii_info *mii_info);
++static int gbit_config_aneg (struct uec_mii_info *mii_info);
++static int genmii_config_aneg (struct uec_mii_info *mii_info);
++static int genmii_update_link (struct uec_mii_info *mii_info);
++static int genmii_read_status (struct uec_mii_info *mii_info);
++u16 phy_read (struct uec_mii_info *mii_info, u16 regnum);
++void phy_write (struct uec_mii_info *mii_info, u16 regnum, u16 val);
++
++/* Write value to the PHY for this device to the register at regnum, */
++/* waiting until the write is done before it returns. All PHY */
++/* configuration has to be done through the TSEC1 MIIM regs */
++void write_phy_reg (struct eth_device *dev, int mii_id, int regnum, int value)
++{
++ uec_private_t *ugeth = (uec_private_t *) dev->priv;
++ uec_t *ug_regs;
++ enet_tbi_mii_reg_e mii_reg = (enet_tbi_mii_reg_e) regnum;
++ u32 tmp_reg;
++
++ ug_regs = ugeth->uec_regs;
++
++ /* Stop the MII management read cycle */
++ out_be32 (&ug_regs->miimcom, 0);
++ /* Setting up the MII Mangement Address Register */
++ tmp_reg = ((u32) mii_id << MIIMADD_PHY_ADDRESS_SHIFT) | mii_reg;
++ out_be32 (&ug_regs->miimadd, tmp_reg);
++
++ /* Setting up the MII Mangement Control Register with the value */
++ out_be32 (&ug_regs->miimcon, (u32) value);
++
++ /* Wait till MII management write is complete */
++ while ((in_be32 (&ug_regs->miimind)) & MIIMIND_BUSY);
++
++ udelay (100000);
++}
++
++/* Reads from register regnum in the PHY for device dev, */
++/* returning the value. Clears miimcom first. All PHY */
++/* configuration has to be done through the TSEC1 MIIM regs */
++int read_phy_reg (struct eth_device *dev, int mii_id, int regnum)
++{
++ uec_private_t *ugeth = (uec_private_t *) dev->priv;
++ uec_t *ug_regs;
++ enet_tbi_mii_reg_e mii_reg = (enet_tbi_mii_reg_e) regnum;
++ u32 tmp_reg;
++ u16 value;
++
++ ug_regs = ugeth->uec_regs;
++
++ /* Setting up the MII Mangement Address Register */
++ tmp_reg = ((u32) mii_id << MIIMADD_PHY_ADDRESS_SHIFT) | mii_reg;
++ out_be32 (&ug_regs->miimadd, tmp_reg);
++
++ /* Perform an MII management read cycle */
++ out_be32 (&ug_regs->miimcom, 0);
++ out_be32 (&ug_regs->miimcom, MIIMCOM_READ_CYCLE);
++
++ /* Wait till MII management write is complete */
++ while ((in_be32 (&ug_regs->miimind)) &
++ (MIIMIND_NOT_VALID | MIIMIND_BUSY));
++
++ udelay (100000);
++
++ /* Read MII management status */
++ value = (u16) in_be32 (&ug_regs->miimstat);
++ if (value == 0xffff)
++ ugphy_warn
++ ("read wrong value : mii_id %d,mii_reg %d, base %08x",
++ mii_id, mii_reg, (u32) & (ug_regs->miimcfg));
++
++ return (value);
++}
++
++void mii_clear_phy_interrupt (struct uec_mii_info *mii_info)
++{
++ if (mii_info->phyinfo->ack_interrupt)
++ mii_info->phyinfo->ack_interrupt (mii_info);
++}
++
++void mii_configure_phy_interrupt (struct uec_mii_info *mii_info,
++ u32 interrupts)
++{
++ mii_info->interrupts = interrupts;
++ if (mii_info->phyinfo->config_intr)
++ mii_info->phyinfo->config_intr (mii_info);
++}
++
++/* Writes MII_ADVERTISE with the appropriate values, after
++ * sanitizing advertise to make sure only supported features
++ * are advertised
++ */
++static void config_genmii_advert (struct uec_mii_info *mii_info)
++{
++ u32 advertise;
++ u16 adv;
++
++ /* Only allow advertising what this PHY supports */
++ mii_info->advertising &= mii_info->phyinfo->features;
++ advertise = mii_info->advertising;
++
++ /* Setup standard advertisement */
++ adv = phy_read (mii_info, PHY_ANAR);
++ adv &= ~(ADVERTISE_ALL | ADVERTISE_100BASE4);
++ if (advertise & ADVERTISED_10baseT_Half)
++ adv |= ADVERTISE_10HALF;
++ if (advertise & ADVERTISED_10baseT_Full)
++ adv |= ADVERTISE_10FULL;
++ if (advertise & ADVERTISED_100baseT_Half)
++ adv |= ADVERTISE_100HALF;
++ if (advertise & ADVERTISED_100baseT_Full)
++ adv |= ADVERTISE_100FULL;
++ phy_write (mii_info, PHY_ANAR, adv);
++}
++
++static void genmii_setup_forced (struct uec_mii_info *mii_info)
++{
++ u16 ctrl;
++ u32 features = mii_info->phyinfo->features;
++
++ ctrl = phy_read (mii_info, PHY_BMCR);
++
++ ctrl &= ~(PHY_BMCR_DPLX | PHY_BMCR_100_MBPS |
++ PHY_BMCR_1000_MBPS | PHY_BMCR_AUTON);
++ ctrl |= PHY_BMCR_RESET;
++
++ switch (mii_info->speed) {
++ case SPEED_1000:
++ if (features & (SUPPORTED_1000baseT_Half
++ | SUPPORTED_1000baseT_Full)) {
++ ctrl |= PHY_BMCR_1000_MBPS;
++ break;
++ }
++ mii_info->speed = SPEED_100;
++ case SPEED_100:
++ if (features & (SUPPORTED_100baseT_Half
++ | SUPPORTED_100baseT_Full)) {
++ ctrl |= PHY_BMCR_100_MBPS;
++ break;
++ }
++ mii_info->speed = SPEED_10;
++ case SPEED_10:
++ if (features & (SUPPORTED_10baseT_Half
++ | SUPPORTED_10baseT_Full))
++ break;
++ default: /* Unsupported speed! */
++ ugphy_err ("%s: Bad speed!", mii_info->dev->name);
++ break;
++ }
++
++ phy_write (mii_info, PHY_BMCR, ctrl);
++}
++
++/* Enable and Restart Autonegotiation */
++static void genmii_restart_aneg (struct uec_mii_info *mii_info)
++{
++ u16 ctl;
++
++ ctl = phy_read (mii_info, PHY_BMCR);
++ ctl |= (PHY_BMCR_AUTON | PHY_BMCR_RST_NEG);
++ phy_write (mii_info, PHY_BMCR, ctl);
++}
++
++static int gbit_config_aneg (struct uec_mii_info *mii_info)
++{
++ u16 adv;
++ u32 advertise;
++
++ if (mii_info->autoneg) {
++ /* Configure the ADVERTISE register */
++ config_genmii_advert (mii_info);
++ advertise = mii_info->advertising;
++
++ adv = phy_read (mii_info, MII_1000BASETCONTROL);
++ adv &= ~(MII_1000BASETCONTROL_FULLDUPLEXCAP |
++ MII_1000BASETCONTROL_HALFDUPLEXCAP);
++ if (advertise & SUPPORTED_1000baseT_Half)
++ adv |= MII_1000BASETCONTROL_HALFDUPLEXCAP;
++ if (advertise & SUPPORTED_1000baseT_Full)
++ adv |= MII_1000BASETCONTROL_FULLDUPLEXCAP;
++ phy_write (mii_info, MII_1000BASETCONTROL, adv);
++
++ /* Start/Restart aneg */
++ genmii_restart_aneg (mii_info);
++ } else
++ genmii_setup_forced (mii_info);
++
++ return 0;
++}
++
++static int marvell_config_aneg (struct uec_mii_info *mii_info)
++{
++ /* The Marvell PHY has an errata which requires
++ * that certain registers get written in order
++ * to restart autonegotiation */
++ phy_write (mii_info, PHY_BMCR, PHY_BMCR_RESET);
++
++ phy_write (mii_info, 0x1d, 0x1f);
++ phy_write (mii_info, 0x1e, 0x200c);
++ phy_write (mii_info, 0x1d, 0x5);
++ phy_write (mii_info, 0x1e, 0);
++ phy_write (mii_info, 0x1e, 0x100);
++
++ gbit_config_aneg (mii_info);
++
++ return 0;
++}
++
++static int genmii_config_aneg (struct uec_mii_info *mii_info)
++{
++ if (mii_info->autoneg) {
++ config_genmii_advert (mii_info);
++ genmii_restart_aneg (mii_info);
++ } else
++ genmii_setup_forced (mii_info);
++
++ return 0;
++}
++
++static int genmii_update_link (struct uec_mii_info *mii_info)
++{
++ u16 status;
++
++ /* Do a fake read */
++ phy_read (mii_info, PHY_BMSR);
++
++ /* Read link and autonegotiation status */
++ status = phy_read (mii_info, PHY_BMSR);
++ if ((status & PHY_BMSR_LS) == 0)
++ mii_info->link = 0;
++ else
++ mii_info->link = 1;
++
++ /* If we are autonegotiating, and not done,
++ * return an error */
++ if (mii_info->autoneg && !(status & PHY_BMSR_AUTN_COMP))
++ return -EAGAIN;
++
++ return 0;
++}
++
++static int genmii_read_status (struct uec_mii_info *mii_info)
++{
++ u16 status;
++ int err;
++
++ /* Update the link, but return if there
++ * was an error */
++ err = genmii_update_link (mii_info);
++ if (err)
++ return err;
++
++ if (mii_info->autoneg) {
++ status = phy_read (mii_info, PHY_ANLPAR);
++
++ if (status & (PHY_ANLPAR_10FD | PHY_ANLPAR_TXFD))
++ mii_info->duplex = DUPLEX_FULL;
++ else
++ mii_info->duplex = DUPLEX_HALF;
++ if (status & (PHY_ANLPAR_TXFD | PHY_ANLPAR_TX))
++ mii_info->speed = SPEED_100;
++ else
++ mii_info->speed = SPEED_10;
++ mii_info->pause = 0;
++ }
++ /* On non-aneg, we assume what we put in BMCR is the speed,
++ * though magic-aneg shouldn't prevent this case from occurring
++ */
++
++ return 0;
++}
++
++static int marvell_read_status (struct uec_mii_info *mii_info)
++{
++ u16 status;
++ int err;
++
++ /* Update the link, but return if there
++ * was an error */
++ err = genmii_update_link (mii_info);
++ if (err)
++ return err;
++
++ /* If the link is up, read the speed and duplex */
++ /* If we aren't autonegotiating, assume speeds
++ * are as set */
++ if (mii_info->autoneg && mii_info->link) {
++ int speed;
++
++ status = phy_read (mii_info, MII_M1011_PHY_SPEC_STATUS);
++
++ /* Get the duplexity */
++ if (status & MII_M1011_PHY_SPEC_STATUS_FULLDUPLEX)
++ mii_info->duplex = DUPLEX_FULL;
++ else
++ mii_info->duplex = DUPLEX_HALF;
++
++ /* Get the speed */
++ speed = status & MII_M1011_PHY_SPEC_STATUS_SPD_MASK;
++ switch (speed) {
++ case MII_M1011_PHY_SPEC_STATUS_1000:
++ mii_info->speed = SPEED_1000;
++ break;
++ case MII_M1011_PHY_SPEC_STATUS_100:
++ mii_info->speed = SPEED_100;
++ break;
++ default:
++ mii_info->speed = SPEED_10;
++ break;
++ }
++ mii_info->pause = 0;
++ }
++
++ return 0;
++}
++
++static int marvell_ack_interrupt (struct uec_mii_info *mii_info)
++{
++ /* Clear the interrupts by reading the reg */
++ phy_read (mii_info, MII_M1011_IEVENT);
++
++ return 0;
++}
++
++static int marvell_config_intr (struct uec_mii_info *mii_info)
++{
++ if (mii_info->interrupts == MII_INTERRUPT_ENABLED)
++ phy_write (mii_info, MII_M1011_IMASK, MII_M1011_IMASK_INIT);
++ else
++ phy_write (mii_info, MII_M1011_IMASK, MII_M1011_IMASK_CLEAR);
++
++ return 0;
++}
++
++static int dm9161_init (struct uec_mii_info *mii_info)
++{
++ /* Reset the PHY */
++ phy_write (mii_info, PHY_BMCR, phy_read (mii_info, PHY_BMCR) |
++ PHY_BMCR_RESET);
++ /* PHY and MAC connect */
++ phy_write (mii_info, PHY_BMCR, phy_read (mii_info, PHY_BMCR) &
++ ~PHY_BMCR_ISO);
++#ifdef CONFIG_RMII_MODE
++ phy_write (mii_info, MII_DM9161_SCR, MII_DM9161_SCR_RMII_INIT);
++#else
++ phy_write (mii_info, MII_DM9161_SCR, MII_DM9161_SCR_INIT);
++#endif
++ config_genmii_advert (mii_info);
++ /* Start/restart aneg */
++ genmii_config_aneg (mii_info);
++ /* Delay to wait the aneg compeleted */
++ udelay (3000000);
++
++ return 0;
++}
++
++static int dm9161_config_aneg (struct uec_mii_info *mii_info)
++{
++ return 0;
++}
++
++static int dm9161_read_status (struct uec_mii_info *mii_info)
++{
++ u16 status;
++ int err;
++
++ /* Update the link, but return if there was an error */
++ err = genmii_update_link (mii_info);
++ if (err)
++ return err;
++ /* If the link is up, read the speed and duplex
++ If we aren't autonegotiating assume speeds are as set */
++ if (mii_info->autoneg && mii_info->link) {
++ status = phy_read (mii_info, MII_DM9161_SCSR);
++ if (status & (MII_DM9161_SCSR_100F | MII_DM9161_SCSR_100H))
++ mii_info->speed = SPEED_100;
++ else
++ mii_info->speed = SPEED_10;
++
++ if (status & (MII_DM9161_SCSR_100F | MII_DM9161_SCSR_10F))
++ mii_info->duplex = DUPLEX_FULL;
++ else
++ mii_info->duplex = DUPLEX_HALF;
++ }
++
++ return 0;
++}
++
++static int dm9161_ack_interrupt (struct uec_mii_info *mii_info)
++{
++ /* Clear the interrupt by reading the reg */
++ phy_read (mii_info, MII_DM9161_INTR);
++
++ return 0;
++}
++
++static int dm9161_config_intr (struct uec_mii_info *mii_info)
++{
++ if (mii_info->interrupts == MII_INTERRUPT_ENABLED)
++ phy_write (mii_info, MII_DM9161_INTR, MII_DM9161_INTR_INIT);
++ else
++ phy_write (mii_info, MII_DM9161_INTR, MII_DM9161_INTR_STOP);
++
++ return 0;
++}
++
++static void dm9161_close (struct uec_mii_info *mii_info)
++{
++}
++
++static struct phy_info phy_info_dm9161 = {
++ .phy_id = 0x0181b880,
++ .phy_id_mask = 0x0ffffff0,
++ .name = "Davicom DM9161E",
++ .init = dm9161_init,
++ .config_aneg = dm9161_config_aneg,
++ .read_status = dm9161_read_status,
++ .close = dm9161_close,
++};
++
++static struct phy_info phy_info_dm9161a = {
++ .phy_id = 0x0181b8a0,
++ .phy_id_mask = 0x0ffffff0,
++ .name = "Davicom DM9161A",
++ .features = MII_BASIC_FEATURES,
++ .init = dm9161_init,
++ .config_aneg = dm9161_config_aneg,
++ .read_status = dm9161_read_status,
++ .ack_interrupt = dm9161_ack_interrupt,
++ .config_intr = dm9161_config_intr,
++ .close = dm9161_close,
++};
++
++static struct phy_info phy_info_marvell = {
++ .phy_id = 0x01410c00,
++ .phy_id_mask = 0xffffff00,
++ .name = "Marvell 88E11x1",
++ .features = MII_GBIT_FEATURES,
++ .config_aneg = &marvell_config_aneg,
++ .read_status = &marvell_read_status,
++ .ack_interrupt = &marvell_ack_interrupt,
++ .config_intr = &marvell_config_intr,
++};
++
++static struct phy_info phy_info_genmii = {
++ .phy_id = 0x00000000,
++ .phy_id_mask = 0x00000000,
++ .name = "Generic MII",
++ .features = MII_BASIC_FEATURES,
++ .config_aneg = genmii_config_aneg,
++ .read_status = genmii_read_status,
++};
++
++static struct phy_info *phy_info[] = {
++ &phy_info_dm9161,
++ &phy_info_dm9161a,
++ &phy_info_marvell,
++ &phy_info_genmii,
++ NULL
++};
++
++u16 phy_read (struct uec_mii_info *mii_info, u16 regnum)
++{
++ return mii_info->mdio_read (mii_info->dev, mii_info->mii_id, regnum);
++}
++
++void phy_write (struct uec_mii_info *mii_info, u16 regnum, u16 val)
++{
++ mii_info->mdio_write (mii_info->dev, mii_info->mii_id, regnum, val);
++}
++
++/* Use the PHY ID registers to determine what type of PHY is attached
++ * to device dev. return a struct phy_info structure describing that PHY
++ */
++struct phy_info *get_phy_info (struct uec_mii_info *mii_info)
++{
++ u16 phy_reg;
++ u32 phy_ID;
++ int i;
++ struct phy_info *theInfo = NULL;
++
++ /* Grab the bits from PHYIR1, and put them in the upper half */
++ phy_reg = phy_read (mii_info, PHY_PHYIDR1);
++ phy_ID = (phy_reg & 0xffff) << 16;
++
++ /* Grab the bits from PHYIR2, and put them in the lower half */
++ phy_reg = phy_read (mii_info, PHY_PHYIDR2);
++ phy_ID |= (phy_reg & 0xffff);
++
++ /* loop through all the known PHY types, and find one that */
++ /* matches the ID we read from the PHY. */
++ for (i = 0; phy_info[i]; i++)
++ if (phy_info[i]->phy_id ==
++ (phy_ID & phy_info[i]->phy_id_mask)) {
++ theInfo = phy_info[i];
++ break;
++ }
++
++ /* This shouldn't happen, as we have generic PHY support */
++ if (theInfo == NULL) {
++ ugphy_info ("UEC: PHY id %x is not supported!", phy_ID);
++ return NULL;
++ } else {
++ ugphy_info ("UEC: PHY is %s (%x)", theInfo->name, phy_ID);
++ }
++
++ return theInfo;
++}
++
++void marvell_phy_interface_mode (struct eth_device *dev,
++ enet_interface_e mode)
++{
++ uec_private_t *uec = (uec_private_t *) dev->priv;
++ struct uec_mii_info *mii_info;
++
++ if (!uec->mii_info) {
++ printf ("%s: the PHY not intialized\n", __FUNCTION__);
++ return;
++ }
++ mii_info = uec->mii_info;
++
++ if (mode == ENET_100_RGMII) {
++ phy_write (mii_info, 0x00, 0x9140);
++ phy_write (mii_info, 0x1d, 0x001f);
++ phy_write (mii_info, 0x1e, 0x200c);
++ phy_write (mii_info, 0x1d, 0x0005);
++ phy_write (mii_info, 0x1e, 0x0000);
++ phy_write (mii_info, 0x1e, 0x0100);
++ phy_write (mii_info, 0x09, 0x0e00);
++ phy_write (mii_info, 0x04, 0x01e1);
++ phy_write (mii_info, 0x00, 0x9140);
++ phy_write (mii_info, 0x00, 0x1000);
++ udelay (100000);
++ phy_write (mii_info, 0x00, 0x2900);
++ phy_write (mii_info, 0x14, 0x0cd2);
++ phy_write (mii_info, 0x00, 0xa100);
++ phy_write (mii_info, 0x09, 0x0000);
++ phy_write (mii_info, 0x1b, 0x800b);
++ phy_write (mii_info, 0x04, 0x05e1);
++ phy_write (mii_info, 0x00, 0xa100);
++ phy_write (mii_info, 0x00, 0x2100);
++ udelay (1000000);
++ } else if (mode == ENET_10_RGMII) {
++ phy_write (mii_info, 0x14, 0x8e40);
++ phy_write (mii_info, 0x1b, 0x800b);
++ phy_write (mii_info, 0x14, 0x0c82);
++ phy_write (mii_info, 0x00, 0x8100);
++ udelay (1000000);
++ }
++}
++
++void change_phy_interface_mode (struct eth_device *dev, enet_interface_e mode)
++{
++#ifdef CONFIG_PHY_MODE_NEED_CHANGE
++ marvell_phy_interface_mode (dev, mode);
++#endif
++}
++#endif /* CONFIG_QE */
+diff -Naupr u-boot-1.1.6/drivers/qe/uec_phy.h u-boot-1.1.6-fsl-1/drivers/qe/uec_phy.h
+--- u-boot-1.1.6/drivers/qe/uec_phy.h 1969-12-31 18:00:00.000000000 -0600
++++ u-boot-1.1.6-fsl-1/drivers/qe/uec_phy.h 2006-12-06 10:33:49.000000000 -0600
+@@ -0,0 +1,259 @@
++/*
++ * Copyright (C) 2005 Freescale Semiconductor, Inc.
++ *
++ * Author: Shlomi Gridish <gridish@freescale.com>
++ *
++ * Description: UCC ethernet driver -- PHY handling
++ * Driver for UEC on QE
++ * Based on 8260_io/fcc_enet.c
++ *
++ * 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.
++ *
++ */
++#ifndef __UEC_PHY_H__
++#define __UEC_PHY_H__
++
++#define MII_end ((u32)-2)
++#define MII_read ((u32)-1)
++
++#define MIIMIND_BUSY 0x00000001
++#define MIIMIND_NOTVALID 0x00000004
++
++#define UGETH_AN_TIMEOUT 2000
++
++/* 1000BT control (Marvell & BCM54xx at least) */
++#define MII_1000BASETCONTROL 0x09
++#define MII_1000BASETCONTROL_FULLDUPLEXCAP 0x0200
++#define MII_1000BASETCONTROL_HALFDUPLEXCAP 0x0100
++
++/* Cicada Extended Control Register 1 */
++#define MII_CIS8201_EXT_CON1 0x17
++#define MII_CIS8201_EXTCON1_INIT 0x0000
++
++/* Cicada Interrupt Mask Register */
++#define MII_CIS8201_IMASK 0x19
++#define MII_CIS8201_IMASK_IEN 0x8000
++#define MII_CIS8201_IMASK_SPEED 0x4000
++#define MII_CIS8201_IMASK_LINK 0x2000
++#define MII_CIS8201_IMASK_DUPLEX 0x1000
++#define MII_CIS8201_IMASK_MASK 0xf000
++
++/* Cicada Interrupt Status Register */
++#define MII_CIS8201_ISTAT 0x1a
++#define MII_CIS8201_ISTAT_STATUS 0x8000
++#define MII_CIS8201_ISTAT_SPEED 0x4000
++#define MII_CIS8201_ISTAT_LINK 0x2000
++#define MII_CIS8201_ISTAT_DUPLEX 0x1000
++
++/* Cicada Auxiliary Control/Status Register */
++#define MII_CIS8201_AUX_CONSTAT 0x1c
++#define MII_CIS8201_AUXCONSTAT_INIT 0x0004
++#define MII_CIS8201_AUXCONSTAT_DUPLEX 0x0020
++#define MII_CIS8201_AUXCONSTAT_SPEED 0x0018
++#define MII_CIS8201_AUXCONSTAT_GBIT 0x0010
++#define MII_CIS8201_AUXCONSTAT_100 0x0008
++
++/* 88E1011 PHY Status Register */
++#define MII_M1011_PHY_SPEC_STATUS 0x11
++#define MII_M1011_PHY_SPEC_STATUS_1000 0x8000
++#define MII_M1011_PHY_SPEC_STATUS_100 0x4000
++#define MII_M1011_PHY_SPEC_STATUS_SPD_MASK 0xc000
++#define MII_M1011_PHY_SPEC_STATUS_FULLDUPLEX 0x2000
++#define MII_M1011_PHY_SPEC_STATUS_RESOLVED 0x0800
++#define MII_M1011_PHY_SPEC_STATUS_LINK 0x0400
++
++#define MII_M1011_IEVENT 0x13
++#define MII_M1011_IEVENT_CLEAR 0x0000
++
++#define MII_M1011_IMASK 0x12
++#define MII_M1011_IMASK_INIT 0x6400
++#define MII_M1011_IMASK_CLEAR 0x0000
++
++#define MII_DM9161_SCR 0x10
++#define MII_DM9161_SCR_INIT 0x0610
++#define MII_DM9161_SCR_RMII_INIT 0x0710
++
++/* DM9161 Specified Configuration and Status Register */
++#define MII_DM9161_SCSR 0x11
++#define MII_DM9161_SCSR_100F 0x8000
++#define MII_DM9161_SCSR_100H 0x4000
++#define MII_DM9161_SCSR_10F 0x2000
++#define MII_DM9161_SCSR_10H 0x1000
++
++/* DM9161 Interrupt Register */
++#define MII_DM9161_INTR 0x15
++#define MII_DM9161_INTR_PEND 0x8000
++#define MII_DM9161_INTR_DPLX_MASK 0x0800
++#define MII_DM9161_INTR_SPD_MASK 0x0400
++#define MII_DM9161_INTR_LINK_MASK 0x0200
++#define MII_DM9161_INTR_MASK 0x0100
++#define MII_DM9161_INTR_DPLX_CHANGE 0x0010
++#define MII_DM9161_INTR_SPD_CHANGE 0x0008
++#define MII_DM9161_INTR_LINK_CHANGE 0x0004
++#define MII_DM9161_INTR_INIT 0x0000
++#define MII_DM9161_INTR_STOP \
++(MII_DM9161_INTR_DPLX_MASK | MII_DM9161_INTR_SPD_MASK \
++ | MII_DM9161_INTR_LINK_MASK | MII_DM9161_INTR_MASK)
++
++/* DM9161 10BT Configuration/Status */
++#define MII_DM9161_10BTCSR 0x12
++#define MII_DM9161_10BTCSR_INIT 0x7800
++
++#define MII_BASIC_FEATURES (SUPPORTED_10baseT_Half | \
++ SUPPORTED_10baseT_Full | \
++ SUPPORTED_100baseT_Half | \
++ SUPPORTED_100baseT_Full | \
++ SUPPORTED_Autoneg | \
++ SUPPORTED_TP | \
++ SUPPORTED_MII)
++
++#define MII_GBIT_FEATURES (MII_BASIC_FEATURES | \
++ SUPPORTED_1000baseT_Half | \
++ SUPPORTED_1000baseT_Full)
++
++#define MII_READ_COMMAND 0x00000001
++
++#define MII_INTERRUPT_DISABLED 0x0
++#define MII_INTERRUPT_ENABLED 0x1
++
++#define SPEED_10 10
++#define SPEED_100 100
++#define SPEED_1000 1000
++
++/* Duplex, half or full. */
++#define DUPLEX_HALF 0x00
++#define DUPLEX_FULL 0x01
++
++/* Indicates what features are supported by the interface. */
++#define SUPPORTED_10baseT_Half (1 << 0)
++#define SUPPORTED_10baseT_Full (1 << 1)
++#define SUPPORTED_100baseT_Half (1 << 2)
++#define SUPPORTED_100baseT_Full (1 << 3)
++#define SUPPORTED_1000baseT_Half (1 << 4)
++#define SUPPORTED_1000baseT_Full (1 << 5)
++#define SUPPORTED_Autoneg (1 << 6)
++#define SUPPORTED_TP (1 << 7)
++#define SUPPORTED_AUI (1 << 8)
++#define SUPPORTED_MII (1 << 9)
++#define SUPPORTED_FIBRE (1 << 10)
++#define SUPPORTED_BNC (1 << 11)
++#define SUPPORTED_10000baseT_Full (1 << 12)
++
++#define ADVERTISED_10baseT_Half (1 << 0)
++#define ADVERTISED_10baseT_Full (1 << 1)
++#define ADVERTISED_100baseT_Half (1 << 2)
++#define ADVERTISED_100baseT_Full (1 << 3)
++#define ADVERTISED_1000baseT_Half (1 << 4)
++#define ADVERTISED_1000baseT_Full (1 << 5)
++#define ADVERTISED_Autoneg (1 << 6)
++#define ADVERTISED_TP (1 << 7)
++#define ADVERTISED_AUI (1 << 8)
++#define ADVERTISED_MII (1 << 9)
++#define ADVERTISED_FIBRE (1 << 10)
++#define ADVERTISED_BNC (1 << 11)
++#define ADVERTISED_10000baseT_Full (1 << 12)
++
++/* Advertisement control register. */
++#define ADVERTISE_SLCT 0x001f /* Selector bits */
++#define ADVERTISE_CSMA 0x0001 /* Only selector supported */
++#define ADVERTISE_10HALF 0x0020 /* Try for 10mbps half-duplex */
++#define ADVERTISE_10FULL 0x0040 /* Try for 10mbps full-duplex */
++#define ADVERTISE_100HALF 0x0080 /* Try for 100mbps half-duplex */
++#define ADVERTISE_100FULL 0x0100 /* Try for 100mbps full-duplex */
++#define ADVERTISE_100BASE4 0x0200 /* Try for 100mbps 4k packets */
++#define ADVERTISE_RESV 0x1c00 /* Unused... */
++#define ADVERTISE_RFAULT 0x2000 /* Say we can detect faults */
++#define ADVERTISE_LPACK 0x4000 /* Ack link partners response */
++#define ADVERTISE_NPAGE 0x8000 /* Next page bit */
++
++#define ADVERTISE_FULL (ADVERTISE_100FULL | ADVERTISE_10FULL | \
++ ADVERTISE_CSMA)
++#define ADVERTISE_ALL (ADVERTISE_10HALF | ADVERTISE_10FULL | \
++ ADVERTISE_100HALF | ADVERTISE_100FULL)
++
++/* Taken from mii_if_info and sungem_phy.h */
++struct uec_mii_info {
++ /* Information about the PHY type */
++ /* And management functions */
++ struct phy_info *phyinfo;
++
++ struct eth_device *dev;
++
++ /* forced speed & duplex (no autoneg)
++ * partner speed & duplex & pause (autoneg)
++ */
++ int speed;
++ int duplex;
++ int pause;
++
++ /* The most recently read link state */
++ int link;
++
++ /* Enabled Interrupts */
++ u32 interrupts;
++
++ u32 advertising;
++ int autoneg;
++ int mii_id;
++
++ /* private data pointer */
++ /* For use by PHYs to maintain extra state */
++ void *priv;
++
++ /* Provided by ethernet driver */
++ int (*mdio_read) (struct eth_device * dev, int mii_id, int reg);
++ void (*mdio_write) (struct eth_device * dev, int mii_id, int reg,
++ int val);
++};
++
++/* struct phy_info: a structure which defines attributes for a PHY
++ *
++ * id will contain a number which represents the PHY. During
++ * startup, the driver will poll the PHY to find out what its
++ * UID--as defined by registers 2 and 3--is. The 32-bit result
++ * gotten from the PHY will be ANDed with phy_id_mask to
++ * discard any bits which may change based on revision numbers
++ * unimportant to functionality
++ *
++ * There are 6 commands which take a ugeth_mii_info structure.
++ * Each PHY must declare config_aneg, and read_status.
++ */
++struct phy_info {
++ u32 phy_id;
++ char *name;
++ unsigned int phy_id_mask;
++ u32 features;
++
++ /* Called to initialize the PHY */
++ int (*init) (struct uec_mii_info * mii_info);
++
++ /* Called to suspend the PHY for power */
++ int (*suspend) (struct uec_mii_info * mii_info);
++
++ /* Reconfigures autonegotiation (or disables it) */
++ int (*config_aneg) (struct uec_mii_info * mii_info);
++
++ /* Determines the negotiated speed and duplex */
++ int (*read_status) (struct uec_mii_info * mii_info);
++
++ /* Clears any pending interrupts */
++ int (*ack_interrupt) (struct uec_mii_info * mii_info);
++
++ /* Enables or disables interrupts */
++ int (*config_intr) (struct uec_mii_info * mii_info);
++
++ /* Clears up any memory if needed */
++ void (*close) (struct uec_mii_info * mii_info);
++};
++
++struct phy_info *get_phy_info (struct uec_mii_info *mii_info);
++void write_phy_reg (struct eth_device *dev, int mii_id, int regnum,
++ int value);
++int read_phy_reg (struct eth_device *dev, int mii_id, int regnum);
++void mii_clear_phy_interrupt (struct uec_mii_info *mii_info);
++void mii_configure_phy_interrupt (struct uec_mii_info *mii_info,
++ u32 interrupts);
++#endif /* __UEC_PHY_H__ */
+diff -Naupr u-boot-1.1.6/drivers/tsec.c u-boot-1.1.6-fsl-1/drivers/tsec.c
+--- u-boot-1.1.6/drivers/tsec.c 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/drivers/tsec.c 2006-11-10 11:24:29.000000000 -0600
+@@ -610,11 +610,10 @@ static void adjust_link(struct eth_devic
+ regs->maccfg2 = ((regs->maccfg2 & ~(MACCFG2_IF))
+ | MACCFG2_MII);
+
+- /* If We're in reduced mode, we need
+- * to say whether we're 10 or 100 MB.
++ /* Set R100 bit in all modes although
++ * it is only used in RGMII mode
+ */
+- if ((priv->speed == 100)
+- && (priv->flags & TSEC_REDUCED))
++ if (priv->speed == 100)
+ regs->ecntrl |= ECNTRL_R100;
+ else
+ regs->ecntrl &= ~(ECNTRL_R100);
+@@ -816,6 +815,7 @@ struct phy_info phy_info_M88E1111S = {
+ {0x1d, 0x5, NULL},
+ {0x1e, 0x0, NULL},
+ {0x1e, 0x100, NULL},
++ {0x14, 0x0cd2, NULL}, /* Delay RGMII TX and RX */
+ {MIIM_GBIT_CONTROL, MIIM_GBIT_CONTROL_INIT, NULL},
+ {MIIM_ANAR, MIIM_ANAR_INIT, NULL},
+ {MIIM_CONTROL, MIIM_CONTROL_RESET, NULL},
+@@ -1110,10 +1110,8 @@ struct phy_info phy_info_dp83865 = {
+ };
+
+ struct phy_info *phy_info[] = {
+-#if 0
+- &phy_info_cis8201,
+-#endif
+ &phy_info_cis8204,
++ &phy_info_cis8201,
+ &phy_info_M88E1011S,
+ &phy_info_M88E1111S,
+ &phy_info_M88E1145,
+diff -Naupr u-boot-1.1.6/drivers/tsec.h u-boot-1.1.6-fsl-1/drivers/tsec.h
+--- u-boot-1.1.6/drivers/tsec.h 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/drivers/tsec.h 2006-11-10 11:24:29.000000000 -0600
+@@ -30,7 +30,7 @@
+ #if defined(CONFIG_MPC85xx) || defined(CONFIG_MPC86xx)
+ #define TSEC_BASE_ADDR (CFG_IMMR + CFG_TSEC1_OFFSET)
+ #elif defined(CONFIG_MPC83XX)
+- #define TSEC_BASE_ADDR (CFG_IMMRBAR + CFG_TSEC1_OFFSET)
++ #define TSEC_BASE_ADDR (CFG_IMMR + CFG_TSEC1_OFFSET)
+ #endif
+
+
+diff -Naupr u-boot-1.1.6/include/74xx_7xx.h u-boot-1.1.6-fsl-1/include/74xx_7xx.h
+--- u-boot-1.1.6/include/74xx_7xx.h 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/include/74xx_7xx.h 2006-12-06 10:33:49.000000000 -0600
+@@ -111,6 +111,7 @@ typedef enum __cpu_t {
+ CPU_750CX, CPU_750FX, CPU_750GX,
+ CPU_7400,
+ CPU_7410,
++ CPU_7448,
+ CPU_7450, CPU_7455, CPU_7457,
+ CPU_UNKNOWN} cpu_t;
+
+diff -Naupr u-boot-1.1.6/include/ACEX1K.h u-boot-1.1.6-fsl-1/include/ACEX1K.h
+--- u-boot-1.1.6/include/ACEX1K.h 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/include/ACEX1K.h 2006-11-30 12:34:13.000000000 -0600
+@@ -35,6 +35,11 @@ extern int ACEX1K_dump( Altera_desc *des
+ extern int ACEX1K_info( Altera_desc *desc );
+ extern int ACEX1K_reloc( Altera_desc *desc, ulong reloc_off );
+
++extern int CYC2_load( Altera_desc *desc, void *image, size_t size );
++extern int CYC2_dump( Altera_desc *desc, void *buf, size_t bsize );
++extern int CYC2_info( Altera_desc *desc );
++extern int CYC2_reloc( Altera_desc *desc, ulong reloc_off );
++
+ /* Slave Serial Implementation function table */
+ typedef struct {
+ Altera_pre_fn pre;
+@@ -48,6 +53,18 @@ typedef struct {
+ int relocated;
+ } Altera_ACEX1K_Passive_Serial_fns;
+
++/* Slave Serial Implementation function table */
++typedef struct {
++ Altera_pre_fn pre;
++ Altera_config_fn config;
++ Altera_status_fn status;
++ Altera_done_fn done;
++ Altera_write_fn write;
++ Altera_abort_fn abort;
++ Altera_post_fn post;
++ int relocated;
++} Altera_CYC2_Passive_Serial_fns;
++
+ /* Device Image Sizes
+ *********************************************************************/
+ /* ACEX1K */
+@@ -60,6 +77,8 @@ typedef struct {
+ #endif
+ #define Altera_EP1K100_SIZE (166965*8)
+
++#define Altera_EP2C35_SIZE 883905
++
+ /* Descriptor Macros
+ *********************************************************************/
+ /* ACEX1K devices */
+diff -Naupr u-boot-1.1.6/include/altera.h u-boot-1.1.6-fsl-1/include/altera.h
+--- u-boot-1.1.6/include/altera.h 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/include/altera.h 2006-11-30 12:34:13.000000000 -0600
+@@ -34,8 +34,10 @@
+ /* Altera Model definitions
+ *********************************************************************/
+ #define CFG_ACEX1K CFG_FPGA_DEV( 0x1 )
++#define CFG_CYCLON2 CFG_FPGA_DEV( 0x2 )
+
+ #define CFG_ALTERA_ACEX1K (CFG_FPGA_ALTERA | CFG_ACEX1K)
++#define CFG_ALTERA_CYCLON2 (CFG_FPGA_ALTERA | CFG_CYCLON2)
+ /* Add new models here */
+
+ /* Altera Interface definitions
+@@ -56,6 +58,7 @@ typedef enum { /* typedef Altera_ifac
+ typedef enum { /* typedef Altera_Family */
+ min_altera_type, /* insert all new types after this */
+ Altera_ACEX1K, /* ACEX1K Family */
++ Altera_CYC2, /* CYCLONII Family */
+ /* Add new models here */
+ max_altera_type /* insert all new types before this */
+ } Altera_Family; /* end, typedef Altera_Family */
+@@ -84,6 +87,7 @@ typedef int (*Altera_status_fn)( int coo
+ typedef int (*Altera_done_fn)( int cookie );
+ typedef int (*Altera_clk_fn)( int assert_clk, int flush, int cookie );
+ typedef int (*Altera_data_fn)( int assert_data, int flush, int cookie );
++typedef int (*Altera_write_fn)(void *buf, size_t len, int flush, int cookie);
+ typedef int (*Altera_abort_fn)( int cookie );
+ typedef int (*Altera_post_fn)( int cookie );
+
+diff -Naupr u-boot-1.1.6/include/asm-ppc/e300.h u-boot-1.1.6-fsl-1/include/asm-ppc/e300.h
+--- u-boot-1.1.6/include/asm-ppc/e300.h 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/include/asm-ppc/e300.h 2006-11-10 11:24:29.000000000 -0600
+@@ -12,6 +12,8 @@
+ #define PVR_83xx 0x80830000
+ #define PVR_8349_REV10 (PVR_83xx | 0x0010)
+ #define PVR_8349_REV11 (PVR_83xx | 0x0011)
++#define PVR_8360_REV10 (PVR_83xx | 0x0020)
++#define PVR_8360_REV11 (PVR_83xx | 0x0020)
+
+ /*
+ * Hardware Implementation-Dependent Register 0 (HID0)
+diff -Naupr u-boot-1.1.6/include/asm-ppc/fsl_i2c.h u-boot-1.1.6-fsl-1/include/asm-ppc/fsl_i2c.h
+--- u-boot-1.1.6/include/asm-ppc/fsl_i2c.h 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/include/asm-ppc/fsl_i2c.h 2006-11-30 12:34:13.000000000 -0600
+@@ -83,8 +83,4 @@ typedef struct fsl_i2c {
+ u8 res6[0xE8];
+ } fsl_i2c_t;
+
+-
+-#define I2C_READ 1
+-#define I2C_WRITE 0
+-
+ #endif /* _ASM_I2C_H_ */
+diff -Naupr u-boot-1.1.6/include/asm-ppc/global_data.h u-boot-1.1.6-fsl-1/include/asm-ppc/global_data.h
+--- u-boot-1.1.6/include/asm-ppc/global_data.h 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/include/asm-ppc/global_data.h 2006-11-10 11:24:29.000000000 -0600
+@@ -52,17 +52,29 @@ typedef struct global_data {
+ #if defined(CONFIG_MPC83XX)
+ /* There are other clocks in the MPC83XX */
+ u32 csb_clk;
++#if defined (CONFIG_MPC8349)
+ u32 tsec1_clk;
+ u32 tsec2_clk;
+- u32 core_clk;
+ u32 usbmph_clk;
+ u32 usbdr_clk;
+- u32 i2c_clk;
++#endif /* CONFIG_MPC8349 */
++ u32 core_clk;
++ u32 i2c1_clk;
++ u32 i2c2_clk;
+ u32 enc_clk;
+ u32 lbiu_clk;
+ u32 lclk_clk;
+ u32 ddr_clk;
+ u32 pci_clk;
++#if defined(CONFIG_QE)
++ u32 qe_clk;
++ u32 brg_clk;
++ uint mp_alloc_base;
++ uint mp_alloc_top;
++#endif /* CONFIG_QE */
++#if defined (CONFIG_MPC8360)
++ u32 ddr_sec_clk;
++#endif /* CONFIG_MPC8360 */
+ #endif
+ #if defined(CONFIG_MPC5xxx)
+ unsigned long ipb_clk;
+diff -Naupr u-boot-1.1.6/include/asm-ppc/i2c.h u-boot-1.1.6-fsl-1/include/asm-ppc/i2c.h
+--- u-boot-1.1.6/include/asm-ppc/i2c.h 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/include/asm-ppc/i2c.h 1969-12-31 18:00:00.000000000 -0600
+@@ -1,103 +0,0 @@
+-/*
+- * Freescale I2C Controller
+- *
+- * This software may be used and distributed according to the
+- * terms of the GNU Public License, Version 2, incorporated
+- * herein by reference.
+- *
+- * Copyright 2004 Freescale Semiconductor.
+- * (C) Copyright 2003, Motorola, Inc.
+- * author: Eran Liberty (liberty@freescale.com)
+- *
+- * 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
+- */
+-
+-#ifndef _ASM_I2C_H_
+-#define _ASM_I2C_H_
+-
+-#include <asm/types.h>
+-
+-typedef struct i2c
+-{
+- u8 adr; /**< I2C slave address */
+-#define I2C_ADR 0xFE
+-#define I2C_ADR_SHIFT 1
+-#define I2C_ADR_RES ~(I2C_ADR)
+- u8 res0[3];
+- u8 fdr; /**< I2C frequency divider register */
+-#define IC2_FDR 0x3F
+-#define IC2_FDR_SHIFT 0
+-#define IC2_FDR_RES ~(IC2_FDR)
+- u8 res1[3];
+- u8 cr; /**< I2C control redister */
+-#define I2C_CR_MEN 0x80
+-#define I2C_CR_MIEN 0x40
+-#define I2C_CR_MSTA 0x20
+-#define I2C_CR_MTX 0x10
+-#define I2C_CR_TXAK 0x08
+-#define I2C_CR_RSTA 0x04
+-#define I2C_CR_BCST 0x01
+- u8 res2[3];
+- u8 sr; /**< I2C status register */
+-#define I2C_SR_MCF 0x80
+-#define I2C_SR_MAAS 0x40
+-#define I2C_SR_MBB 0x20
+-#define I2C_SR_MAL 0x10
+-#define I2C_SR_BCSTM 0x08
+-#define I2C_SR_SRW 0x04
+-#define I2C_SR_MIF 0x02
+-#define I2C_SR_RXAK 0x01
+- u8 res3[3];
+- u8 dr; /**< I2C data register */
+-#define I2C_DR 0xFF
+-#define I2C_DR_SHIFT 0
+-#define I2C_DR_RES ~(I2C_DR)
+- u8 res4[3];
+- u8 dfsrr; /**< I2C digital filter sampling rate register */
+-#define I2C_DFSRR 0x3F
+-#define I2C_DFSRR_SHIFT 0
+-#define I2C_DFSRR_RES ~(I2C_DR)
+- u8 res5[3];
+- u8 res6[0xE8];
+-} i2c_t;
+-
+-#ifndef CFG_HZ
+-#error CFG_HZ is not defined in /include/configs/${BOARD}.h
+-#endif
+-#define I2C_TIMEOUT (CFG_HZ/4)
+-
+-#ifndef CFG_IMMRBAR
+-#error CFG_IMMRBAR is not defined in /include/configs/${BOARD}.h
+-#endif
+-
+-#ifndef CFG_I2C_OFFSET
+-#error CFG_I2C_OFFSET is not defined in /include/configs/${BOARD}.h
+-#endif
+-
+-#if defined(CONFIG_MPC8349EMDS) || defined(CONFIG_TQM834X)
+-/*
+- * MPC8349 have two i2c bus
+- */
+-extern i2c_t * mpc8349_i2c;
+-#define I2C mpc8349_i2c
+-#else
+-#define I2C ((i2c_t*)(CFG_IMMRBAR + CFG_I2C_OFFSET))
+-#endif
+-
+-#define I2C_READ 1
+-#define I2C_WRITE 0
+-
+-#endif /* _ASM_I2C_H_ */
+diff -Naupr u-boot-1.1.6/include/asm-ppc/immap_83xx.h u-boot-1.1.6-fsl-1/include/asm-ppc/immap_83xx.h
+--- u-boot-1.1.6/include/asm-ppc/immap_83xx.h 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/include/asm-ppc/immap_83xx.h 2006-12-06 10:33:49.000000000 -0600
+@@ -1,75 +1,116 @@
+ /*
+- * MPC8349 Internal Memory Map
+- * Copyright (c) 2004 Freescale Semiconductor.
+- * Eran Liberty (liberty@freescale.com)
++ * (C) Copyright 2004-2006 Freescale Semiconductor, Inc.
++ *
++ * MPC83xx Internal Memory Map
++ *
++ * History :
++ * 20060601: Daveliu (daveliu@freescale.com)
++ * TanyaJiang (tanya.jiang@freescale.com)
++ * Unified variable names for mpc83xx
++ * 2005 : Mandy Lavi (mandy.lavi@freescale.com)
++ * support for mpc8360e
++ * 2004 : Eran Liberty (liberty@freescale.com)
++ * Initialized for mpc8349
++ * based on:
++ * MPC8260 Internal Memory Map
++ * Copyright (c) 1999 Dan Malek (dmalek@jlc.net)
++ * MPC85xx Internal Memory Map
++ * Copyright(c) 2002,2003 Motorola Inc.
++ * Xianghua Xiao (x.xiao@motorola.com)
++ *
++ * 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
+ *
+- * based on:
+- * - MPC8260 Internal Memory Map
+- * Copyright (c) 1999 Dan Malek (dmalek@jlc.net)
+- * - MPC85xx Internal Memory Map
+- * Copyright(c) 2002,2003 Motorola Inc.
+- * Xianghua Xiao (x.xiao@motorola.com)
+ */
+-#ifndef __IMMAP_8349__
+-#define __IMMAP_8349__
++#ifndef __IMMAP_83xx__
++#define __IMMAP_83xx__
+
++#include <config.h>
+ #include <asm/types.h>
+-#include <asm/i2c.h>
++#include <asm/fsl_i2c.h>
+
+ /*
+ * Local Access Window.
+ */
+-typedef struct law8349 {
+- u32 bar; /* LBIU local access window base address register */
++typedef struct law83xx {
++ u32 bar; /* LBIU local access window base address register */
+ /* Identifies the 20 most-significant address bits of the base of local
+ * access window n. The specified base address should be aligned to the
+ * window size, as defined by LBLAWARn[SIZE].
+ */
+-#define LAWBAR_BAR 0xFFFFF000
++#define LAWBAR_BAR 0xFFFFF000
+ #define LAWBAR_RES ~(LAWBAR_BAR)
+- u32 ar; /* LBIU local access window attribute register */
+-} law8349_t;
++ u32 ar; /* LBIU local access window attribute register */
++} law83xx_t;
+
+ /*
+ * System configuration registers.
+ */
+-typedef struct sysconf8349 {
+- u32 immrbar; /* Internal memory map base address register */
++typedef struct sysconf83xx {
++ u32 immrbar; /* Internal memory map base address register */
+ u8 res0[0x04];
+- u32 altcbar; /* Alternate configuration base address register */
++ u32 altcbar; /* Alternate configuration base address register */
+ /* Identifies the12 most significant address bits of an alternate base
+ * address used for boot sequencer configuration accesses.
+ */
+ #define ALTCBAR_BASE_ADDR 0xFFF00000
+-#define ALTCBAR_RES ~(ALTCBAR_BASE_ADDR) /* Reserved. Write has no effect, read returns 0. */
++#define ALTCBAR_RES ~(ALTCBAR_BASE_ADDR) /* Reserved. Write has no effect, read returns 0. */
+ u8 res1[0x14];
+- law8349_t lblaw[4]; /* LBIU local access window */
++ law83xx_t lblaw[4]; /* LBIU local access window */
+ u8 res2[0x20];
+- law8349_t pcilaw[2]; /* PCI local access window */
++ law83xx_t pcilaw[2]; /* PCI local access window */
+ u8 res3[0x30];
+- law8349_t ddrlaw[2]; /* DDR local access window */
++ law83xx_t ddrlaw[2]; /* DDR local access window */
+ u8 res4[0x50];
+- u32 sgprl; /* System General Purpose Register Low */
+- u32 sgprh; /* System General Purpose Register High */
+- u32 spridr; /* System Part and Revision ID Register */
+-#define SPRIDR_PARTID 0xFFFF0000 /* Part Identification. */
+-#define SPRIDR_REVID 0x0000FFFF /* Revision Identification. */
++ u32 sgprl; /* System General Purpose Register Low */
++ u32 sgprh; /* System General Purpose Register High */
++ u32 spridr; /* System Part and Revision ID Register */
++#define SPRIDR_PARTID 0xFFFF0000 /* Part Identification. */
++#define SPRIDR_REVID 0x0000FFFF /* Revision Identification. */
+ u8 res5[0x04];
+- u32 spcr; /* System Priority Configuration Register */
+-#define SPCR_PCIHPE 0x10000000 /* PCI Highest Priority Enable. */
+-#define SPCR_PCIPR 0x03000000 /* PCI bridge system bus request priority. */
+-#define SPCR_TBEN 0x00400000 /* E300 PowerPC core time base unit enable. */
+-#define SPCR_COREPR 0x00300000 /* E300 PowerPC Core system bus request priority. */
+-#define SPCR_TSEC1DP 0x00003000 /* TSEC1 data priority. */
+-#define SPCR_TSEC1BDP 0x00000C00 /* TSEC1 buffer descriptor priority. */
+-#define SPCR_TSEC1EP 0x00000300 /* TSEC1 emergency priority. */
+-#define SPCR_TSEC2DP 0x00000030 /* TSEC2 data priority. */
+-#define SPCR_TSEC2BDP 0x0000000C /* TSEC2 buffer descriptor priority. */
+-#define SPCR_TSEC2EP 0x00000003 /* TSEC2 emergency priority. */
++ u32 spcr; /* System Priority Configuration Register */
++#define SPCR_PCIHPE 0x10000000 /* PCI Highest Priority Enable. */
++#define SPCR_PCIHPE_SHIFT (31-3)
++#define SPCR_PCIPR 0x03000000 /* PCI bridge system bus request priority. */
++#define SPCR_PCIPR_SHIFT (31-7)
++#define SPCR_OPT 0x00800000 /* Optimize */
++#define SPCR_TBEN 0x00400000 /* E300 PowerPC core time base unit enable. */
++#define SPCR_TBEN_SHIFT (31-9)
++#define SPCR_COREPR 0x00300000 /* E300 PowerPC Core system bus request priority. */
++#define SPCR_COREPR_SHIFT (31-11)
++#if defined (CONFIG_MPC8349)
++#define SPCR_TSEC1DP 0x00003000 /* TSEC1 data priority. */
++#define SPCR_TSEC1DP_SHIFT (31-19)
++#define SPCR_TSEC1BDP 0x00000C00 /* TSEC1 buffer descriptor priority. */
++#define SPCR_TSEC1BDP_SHIFT (31-21)
++#define SPCR_TSEC1EP 0x00000300 /* TSEC1 emergency priority. */
++#define SPCR_TSEC1EP_SHIFT (31-23)
++#define SPCR_TSEC2DP 0x00000030 /* TSEC2 data priority. */
++#define SPCR_TSEC2DP_SHIFT (31-27)
++#define SPCR_TSEC2BDP 0x0000000C /* TSEC2 buffer descriptor priority. */
++#define SPCR_TSEC2BDP_SHIFT (31-29)
++#define SPCR_TSEC2EP 0x00000003 /* TSEC2 emergency priority. */
++#define SPCR_TSEC2EP_SHIFT (31-31)
+ #define SPCR_RES ~(SPCR_PCIHPE | SPCR_PCIPR | SPCR_TBEN | SPCR_COREPR \
+ | SPCR_TSEC1DP | SPCR_TSEC1BDP | SPCR_TSEC1EP \
+ | SPCR_TSEC2DP | SPCR_TSEC2BDP | SPCR_TSEC2EP)
+- u32 sicrl; /* System General Purpose Register Low */
++#elif defined (CONFIG_MPC8360)
++#define SPCR_RES ~(SPCR_PCIHPE|SPCR_PCIPR|SPCR_OPT|SPCR_TBEN|SPCR_COREPR)
++#endif
++ u32 sicrl; /* System General Purpose Register Low */
++#if defined (CONFIG_MPC8349)
+ #define SICRL_LDP_A 0x80000000
+ #define SICRL_USB1 0x40000000
+ #define SICRL_USB0 0x20000000
+@@ -91,8 +132,18 @@ typedef struct sysconf8349 {
+ | SICRL_GPIO1_D | SICRL_GPIO1_E | SICRL_GPIO1_F \
+ | SICRL_GPIO1_G | SICRL_GPIO1_H | SICRL_GPIO1_I \
+ | SICRL_GPIO1_J | SICRL_GPIO1_K | SICRL_GPIO1_L )
+- u32 sicrh; /* System General Purpose Register High */
++#elif defined (CONFIG_MPC8360)
++#define SICRL_LDP_A 0xC0000000
++#define SICRL_LCLK_1 0x10000000
++#define SICRL_LCLK_2 0x08000000
++#define SICRL_SRCID_A 0x03000000
++#define SICRL_IRQ_CKSTP_A 0x00C00000
++#define SICRL_RES ~(SICRL_LDP_A | SICRL_LCLK_1 | SICRL_LCLK_2 | \
++ SICRL_SRCID_A | SICRL_IRQ_CKSTP_A)
++#endif
++ u32 sicrh; /* System General Purpose Register High */
+ #define SICRH_DDR 0x80000000
++#if defined (CONFIG_MPC8349)
+ #define SICRH_TSEC1_A 0x10000000
+ #define SICRH_TSEC1_B 0x08000000
+ #define SICRH_TSEC1_C 0x04000000
+@@ -117,7 +168,7 @@ typedef struct sysconf8349 {
+ #define SICRH_GPIO2_H 0x00000060
+ #define SICRH_TSOBI1 0x00000002
+ #define SICRH_TSOBI2 0x00000001
+-#define SICRh_RES ~( SICRH_DDR | SICRH_TSEC1_A | SICRH_TSEC1_B \
++#define SICRH_RES ~( SICRH_DDR | SICRH_TSEC1_A | SICRH_TSEC1_B \
+ | SICRH_TSEC1_C | SICRH_TSEC1_D | SICRH_TSEC1_E \
+ | SICRH_TSEC1_F | SICRH_TSEC2_A | SICRH_TSEC2_B \
+ | SICRH_TSEC2_C | SICRH_TSEC2_D | SICRH_TSEC2_E \
+@@ -126,207 +177,256 @@ typedef struct sysconf8349 {
+ | SICRH_GPIO2_D | SICRH_GPIO2_E | SICRH_GPIO2_F \
+ | SICRH_GPIO2_G | SICRH_GPIO2_H | SICRH_TSOBI1 \
+ | SICRH_TSOBI2)
++#elif defined (CONFIG_MPC8360)
++#define SICRH_SECONDARY_DDR 0x40000000
++#define SICRH_SDDROE 0x02000000 /* SDDRIOE bit from reset configuration word high. */
++#define SICRH_UC1EOBI 0x00000004 /* UCC1 Ethernet Output Buffer Impedance. */
++#define SICRH_UC2E1OBI 0x00000002 /* UCC2 Ethernet pin option 1 Output Buffer Impedance. */
++#define SICRH_UC2E2OBI 0x00000001 /* UCC2 Ethernet pin option 2 Output Buffer Impedance. */
++#define SICRH_RES ~(SICRH_DDR | SICRH_SECONDARY_DDR | SICRH_SDDROE | \
++ SICRH_UC2E1OBI | SICRH_UC2E2OBI | SICRH_UC2E2OBI)
++#endif
+ u8 res6[0xE4];
+-} sysconf8349_t;
++} sysconf83xx_t;
+
+ /*
+ * Watch Dog Timer (WDT) Registers
+ */
+-typedef struct wdt8349 {
++typedef struct wdt83xx {
+ u8 res0[4];
+- u32 swcrr; /* System watchdog control register */
+- u32 swcnr; /* System watchdog count register */
++ u32 swcrr; /* System watchdog control register */
++ u32 swcnr; /* System watchdog count register */
+ #define SWCNR_SWCN 0x0000FFFF Software Watchdog Count Field.
+ #define SWCNR_RES ~(SWCNR_SWCN)
+ u8 res1[2];
+- u16 swsrr; /* System watchdog service register */
++ u16 swsrr; /* System watchdog service register */
++#define SWSRR_WS 0x0000FFFF /* Software Watchdog Service Field. */
+ u8 res2[0xF0];
+-} wdt8349_t;
++} wdt83xx_t;
+
+ /*
+ * RTC/PIT Module Registers
+ */
+-typedef struct rtclk8349 {
+- u32 cnr; /* control register */
+-#define CNR_CLEN 0x00000080 /* Clock Enable Control Bit */
+-#define CNR_CLIN 0x00000040 /* Input Clock Control Bit */
+-#define CNR_AIM 0x00000002 /* Alarm Interrupt Mask Bit */
+-#define CNR_SIM 0x00000001 /* Second Interrupt Mask Bit */
+-#define CNR_RES ~(CNR_CLEN | CNR_CLIN | CNR_AIM | CNR_SIM)
+- u32 ldr; /* load register */
+- u32 psr; /* prescale register */
+- u32 ctr; /* register */
+- u32 evr; /* event register */
+-#define RTEVR_SIF 0x00000001 /* Second Interrupt Flag Bit */
+-#define RTEVR_AIF 0x00000002 /* Alarm Interrupt Flag Bit */
+-#define RTEVR_RES ~(EVR_SIF | EVR_AIF)
+- u32 alr; /* alarm register */
++typedef struct rtclk83xx {
++ u32 cnr; /* control register */
++#define CNR_CLEN 0x00000080 /* Clock Enable Control Bit */
++#define CNR_CLIN 0x00000040 /* Input Clock Control Bit */
++#define CNR_AIM 0x00000002 /* Alarm Interrupt Mask Bit */
++#define CNR_SIM 0x00000001 /* Second Interrupt Mask Bit */
++#define CNR_RES ~(CNR_CLEN | CNR_CLIN | CNR_AIM | CNR_SIM)
++ u32 ldr; /* load register */
++#define LDR_CLDV 0xFFFFFFFF /* Contains the 32-bit value to be
++ * loaded in a 32-bit RTC counter.*/
++ u32 psr; /* prescale register */
++#define PSR_PRSC 0xFFFFFFFF /* RTC Prescaler bits. */
++ u32 ctr; /* Counter value field register */
++#define CRT_CNTV 0xFFFFFFFF /* RTC Counter value field. */
++ u32 evr; /* event register */
++#define RTEVR_SIF 0x00000001 /* Second Interrupt Flag Bit */
++#define RTEVR_AIF 0x00000002 /* Alarm Interrupt Flag Bit */
++#define RTEVR_RES ~(RTEVR_SIF | RTEVR_AIF)
++#define PTEVR_PIF 0x00000001 /* Periodic interrupt flag bit. */
++#define PTEVR_RES ~(PTEVR_PIF)
++ u32 alr; /* alarm register */
+ u8 res0[0xE8];
+-} rtclk8349_t;
++} rtclk83xx_t;
+
+ /*
+ * Global timper module
+ */
+
+-typedef struct gtm8349 {
+- u8 cfr1; /* Timer1/2 Configuration */
+-#define CFR1_PCAS 0x80 /* Pair Cascade mode */
+-#define CFR1_BCM 0x40 /* Backward compatible mode */
+-#define CFR1_STP2 0x20 /* Stop timer */
+-#define CFR1_RST2 0x10 /* Reset timer */
+-#define CFR1_GM2 0x08 /* Gate mode for pin 2 */
+-#define CFR1_GM1 0x04 /* Gate mode for pin 1 */
+-#define CFR1_STP1 0x02 /* Stop timer */
+-#define CFR1_RST1 0x01 /* Reset timer */
+- u8 res0[3];
+- u8 cfr2; /* Timer3/4 Configuration */
+-#define CFR2_PCAS 0x80 /* Pair Cascade mode */
+-#define CFR2_SCAS 0x40 /* Super Cascade mode */
+-#define CFR2_STP4 0x20 /* Stop timer */
+-#define CFR2_RST4 0x10 /* Reset timer */
+-#define CFR2_GM4 0x08 /* Gate mode for pin 4 */
+-#define CFR2_GM3 0x04 /* Gate mode for pin 3 */
+-#define CFR2_STP3 0x02 /* Stop timer */
+-#define CFR2_RST3 0x01 /* Reset timer */
+- u8 res1[10];
+- u16 mdr1; /* Timer1 Mode Register */
+-#define MDR_SPS 0xff00 /* Secondary Prescaler value */
+-#define MDR_CE 0x00c0 /* Capture edge and enable interrupt */
+-#define MDR_OM 0x0020 /* Output mode */
+-#define MDR_ORI 0x0010 /* Output reference interrupt enable */
+-#define MDR_FRR 0x0008 /* Free run/restart */
+-#define MDR_ICLK 0x0006 /* Input clock source for the timer */
+-#define MDR_GE 0x0001 /* Gate enable */
+- u16 mdr2; /* Timer2 Mode Register */
+- u16 rfr1; /* Timer1 Reference Register */
+- u16 rfr2; /* Timer2 Reference Register */
+- u16 cpr1; /* Timer1 Capture Register */
+- u16 cpr2; /* Timer2 Capture Register */
+- u16 cnr1; /* Timer1 Counter Register */
+- u16 cnr2; /* Timer2 Counter Register */
+- u16 mdr3; /* Timer3 Mode Register */
+- u16 mdr4; /* Timer4 Mode Register */
+- u16 rfr3; /* Timer3 Reference Register */
+- u16 rfr4; /* Timer4 Reference Register */
+- u16 cpr3; /* Timer3 Capture Register */
+- u16 cpr4; /* Timer4 Capture Register */
+- u16 cnr3; /* Timer3 Counter Register */
+- u16 cnr4; /* Timer4 Counter Register */
+- u16 evr1; /* Timer1 Event Register */
+- u16 evr2; /* Timer2 Event Register */
+- u16 evr3; /* Timer3 Event Register */
+- u16 evr4; /* Timer4 Event Register */
+-#define GTEVR_REF 0x0002 /* Output reference event */
+-#define GTEVR_CAP 0x0001 /* Counter Capture event */
++typedef struct gtm83xx {
++ u8 cfr1; /* Timer1/2 Configuration */
++#define CFR1_PCAS 0x80 /* Pair Cascade mode */
++#define CFR1_BCM 0x40 /* Backward compatible mode */
++#define CFR1_STP2 0x20 /* Stop timer */
++#define CFR1_RST2 0x10 /* Reset timer */
++#define CFR1_GM2 0x08 /* Gate mode for pin 2 */
++#define CFR1_GM1 0x04 /* Gate mode for pin 1 */
++#define CFR1_STP1 0x02 /* Stop timer */
++#define CFR1_RST1 0x01 /* Reset timer */
++#define CFR1_RES ~(CFR1_PCAS | CFR1_STP2 | CFR1_RST2 | CFR1_GM2 |\
++ CFR1_GM1 | CFR1_STP1 | CFR1_RST1)
++ u8 res0[3];
++ u8 cfr2; /* Timer3/4 Configuration */
++#define CFR2_PCAS 0x80 /* Pair Cascade mode */
++#define CFR2_SCAS 0x40 /* Super Cascade mode */
++#define CFR2_STP4 0x20 /* Stop timer */
++#define CFR2_RST4 0x10 /* Reset timer */
++#define CFR2_GM4 0x08 /* Gate mode for pin 4 */
++#define CFR2_GM3 0x04 /* Gate mode for pin 3 */
++#define CFR2_STP3 0x02 /* Stop timer */
++#define CFR2_RST3 0x01 /* Reset timer */
++ u8 res1[10];
++ u16 mdr1; /* Timer1 Mode Register */
++#define MDR_SPS 0xff00 /* Secondary Prescaler value */
++#define MDR_CE 0x00c0 /* Capture edge and enable interrupt */
++#define MDR_OM 0x0020 /* Output mode */
++#define MDR_ORI 0x0010 /* Output reference interrupt enable */
++#define MDR_FRR 0x0008 /* Free run/restart */
++#define MDR_ICLK 0x0006 /* Input clock source for the timer */
++#define MDR_GE 0x0001 /* Gate enable */
++ u16 mdr2; /* Timer2 Mode Register */
++ u16 rfr1; /* Timer1 Reference Register */
++ u16 rfr2; /* Timer2 Reference Register */
++ u16 cpr1; /* Timer1 Capture Register */
++ u16 cpr2; /* Timer2 Capture Register */
++ u16 cnr1; /* Timer1 Counter Register */
++ u16 cnr2; /* Timer2 Counter Register */
++ u16 mdr3; /* Timer3 Mode Register */
++ u16 mdr4; /* Timer4 Mode Register */
++ u16 rfr3; /* Timer3 Reference Register */
++ u16 rfr4; /* Timer4 Reference Register */
++ u16 cpr3; /* Timer3 Capture Register */
++ u16 cpr4; /* Timer4 Capture Register */
++ u16 cnr3; /* Timer3 Counter Register */
++ u16 cnr4; /* Timer4 Counter Register */
++ u16 evr1; /* Timer1 Event Register */
++ u16 evr2; /* Timer2 Event Register */
++ u16 evr3; /* Timer3 Event Register */
++ u16 evr4; /* Timer4 Event Register */
++#define GTEVR_REF 0x0002 /* Output reference event */
++#define GTEVR_CAP 0x0001 /* Counter Capture event */
+ #define GTEVR_RES ~(EVR_CAP|EVR_REF)
+- u16 psr1; /* Timer1 Prescaler Register */
+- u16 psr2; /* Timer2 Prescaler Register */
+- u16 psr3; /* Timer3 Prescaler Register */
+- u16 psr4; /* Timer4 Prescaler Register */
+- u8 res[0xC0];
+-} gtm8349_t;
++ u16 psr1; /* Timer1 Prescaler Register */
++ u16 psr2; /* Timer2 Prescaler Register */
++ u16 psr3; /* Timer3 Prescaler Register */
++ u16 psr4; /* Timer4 Prescaler Register */
++#define GTPSR_PPS 0x00FF /* Primary Prescaler Bits. */
++#define GTPSR_RES ~(GTPSR_PPS)
++ u8 res[0xC0];
++} gtm83xx_t;
+
+ /*
+ * Integrated Programmable Interrupt Controller
+ */
+-typedef struct ipic8349 {
+- u32 sicfr; /* System Global Interrupt Configuration Register (SICFR) */
+-#define SICFR_HPI 0x7f000000 /* Highest Priority Interrupt */
+-#define SICFR_MPSB 0x00400000 /* Mixed interrupts Priority Scheme for group B */
+-#define SICFR_MPSA 0x00200000 /* Mixed interrupts Priority Scheme for group A */
+-#define SICFR_IPSD 0x00080000 /* Internal interrupts Priority Scheme for group D */
+-#define SICFR_IPSA 0x00010000 /* Internal interrupts Priority Scheme for group A */
+-#define SICFR_HPIT 0x00000300 /* HPI priority position IPIC output interrupt Type */
++typedef struct ipic83xx {
++ u32 sicfr; /* System Global Interrupt Configuration Register (SICFR) */
++#define SICFR_HPI 0x7f000000 /* Highest Priority Interrupt */
++#define SICFR_MPSB 0x00400000 /* Mixed interrupts Priority Scheme for group B */
++#define SICFR_MPSA 0x00200000 /* Mixed interrupts Priority Scheme for group A */
++#define SICFR_IPSD 0x00080000 /* Internal interrupts Priority Scheme for group D */
++#define SICFR_IPSA 0x00010000 /* Internal interrupts Priority Scheme for group A */
++#define SICFR_HPIT 0x00000300 /* HPI priority position IPIC output interrupt Type */
+ #define SICFR_RES ~(SICFR_HPI|SICFR_MPSB|SICFR_MPSA|SICFR_IPSD|SICFR_IPSA|SICFR_HPIT)
+- u32 sivcr; /* System Global Interrupt Vector Register (SIVCR) */
+-#define SICVR_IVECX 0xfc000000 /* Interrupt vector (for CE compatibility purpose only not used in 8349 IPIC implementation) */
+-#define SICVR_IVEC 0x0000007f /* Interrupt vector */
++ u32 sivcr; /* System Global Interrupt Vector Register (SIVCR) */
++#define SICVR_IVECX 0xfc000000 /* Interrupt vector (for CE compatibility purpose only not used in 8349 IPIC implementation) */
++#define SICVR_IVEC 0x0000007f /* Interrupt vector */
+ #define SICVR_RES ~(SICVR_IVECX|SICVR_IVEC)
+- u32 sipnr_h; /* System Internal Interrupt Pending Register - High (SIPNR_H) */
+-#define SIIH_TSEC1TX 0x80000000 /* TSEC1 Tx interrupt */
+-#define SIIH_TSEC1RX 0x40000000 /* TSEC1 Rx interrupt */
++ u32 sipnr_h; /* System Internal Interrupt Pending Register - High (SIPNR_H) */
++#if defined (CONFIG_MPC8349)
++#define SIIH_TSEC1TX 0x80000000 /* TSEC1 Tx interrupt */
++#define SIIH_TSEC1RX 0x40000000 /* TSEC1 Rx interrupt */
+ #define SIIH_TSEC1ER 0x20000000 /* TSEC1 Eror interrupt */
+-#define SIIH_TSEC2TX 0x10000000 /* TSEC2 Tx interrupt */
+-#define SIIH_TSEC2RX 0x08000000 /* TSEC2 Rx interrupt */
++#define SIIH_TSEC2TX 0x10000000 /* TSEC2 Tx interrupt */
++#define SIIH_TSEC2RX 0x08000000 /* TSEC2 Rx interrupt */
+ #define SIIH_TSEC2ER 0x04000000 /* TSEC2 Eror interrupt */
+ #define SIIH_USB2DR 0x02000000 /* USB2 DR interrupt */
+-#define SIIH_USB2MPH 0x01000000 /* USB2 MPH interrupt */
++#define SIIH_USB2MPH 0x01000000 /* USB2 MPH interrupt */
++#endif
++#if defined (CONFIG_MPC8360)
++#define SIIH_H_QE_H 0x80000000 /* QE high interrupt */
++#define SIIH_H_QE_L 0x40000000 /* QE low interrupt */
++#endif
+ #define SIIH_UART1 0x00000080 /* UART1 interrupt */
+ #define SIIH_UART2 0x00000040 /* UART2 interrupt */
+ #define SIIH_SEC 0x00000020 /* SEC interrupt */
+ #define SIIH_I2C1 0x00000004 /* I2C1 interrupt */
+-#define SIIH_I2C2 0x00000002 /* I2C1 interrupt */
++#define SIIH_I2C2 0x00000002 /* I2C2 interrupt */
++#if defined (CONFIG_MPC8349)
+ #define SIIH_SPI 0x00000001 /* SPI interrupt */
+ #define SIIH_RES ~(SIIH_TSEC1TX | SIIH_TSEC1RX | SIIH_TSEC1ER \
+ | SIIH_TSEC2TX | SIIH_TSEC2RX | SIIH_TSEC2ER \
+ | SIIH_USB2DR | SIIH_USB2MPH | SIIH_UART1 \
+ | SIIH_UART2 | SIIH_SEC | SIIH_I2C1 \
+ | SIIH_I2C2 | SIIH_SPI)
+- u32 sipnr_l; /* System Internal Interrupt Pending Register - Low (SIPNR_L) */
+-#define SIIL_RTCS 0x80000000 /* RTC SECOND interrupt */
+-#define SIIL_PIT 0x40000000 /* PIT interrupt */
+-#define SIIL_PCI1 0x20000000 /* PCI1 interrupt */
+-#define SIIL_PCI2 0x10000000 /* PCI2 interrupt */
+-#define SIIL_RTCA 0x08000000 /* RTC ALARM interrupt */
+-#define SIIL_MU 0x04000000 /* Message Unit interrupt */
+-#define SIIL_SBA 0x02000000 /* System Bus Arbiter interrupt */
+-#define SIIL_DMA 0x01000000 /* DMA interrupt */
+-#define SIIL_GTM4 0x00800000 /* GTM4 interrupt */
+-#define SIIL_GTM8 0x00400000 /* GTM8 interrupt */
+-#define SIIL_GPIO1 0x00200000 /* GPIO1 interrupt */
+-#define SIIL_GPIO2 0x00100000 /* GPIO2 interrupt */
+-#define SIIL_DDR 0x00080000 /* DDR interrupt */
+-#define SIIL_LBC 0x00040000 /* LBC interrupt */
+-#define SIIL_GTM2 0x00020000 /* GTM2 interrupt */
+-#define SIIL_GTM6 0x00010000 /* GTM6 interrupt */
+-#define SIIL_PMC 0x00008000 /* PMC interrupt */
+-#define SIIL_GTM3 0x00000800 /* GTM3 interrupt */
+-#define SIIL_GTM7 0x00000400 /* GTM7 interrupt */
+-#define SIIL_GTM1 0x00000020 /* GTM1 interrupt */
+-#define SIIL_GTM5 0x00000010 /* GTM5 interrupt */
+-#define SIIL_DPTC 0x00000001 /* DPTC interrupt (!!! Invisible for user !!!) */
++#endif
++#if defined (CONFIG_MPC8360)
++#define SIIH_RES ~(SIIH_H_QE_H | SIIH_H_QE_L | SIIH_H_UART1 | \
++ SIIH_H_UART2| SIIH_H_SEC | SIIH_H_I2C1 |SIIH_H_I2C2)
++#endif
++ u32 sipnr_l; /* System Internal Interrupt Pending Register - Low (SIPNR_L) */
++#define SIIL_RTCS 0x80000000 /* RTC SECOND interrupt */
++#define SIIL_PIT 0x40000000 /* PIT interrupt */
++#define SIIL_PCI1 0x20000000 /* PCI1 interrupt */
++#if defined (CONFIG_MPC8349)
++#define SIIL_PCI2 0x10000000 /* PCI2 interrupt */
++#endif
++#define SIIL_RTCA 0x08000000 /* RTC ALARM interrupt */
++#define SIIL_MU 0x04000000 /* Message Unit interrupt */
++#define SIIL_SBA 0x02000000 /* System Bus Arbiter interrupt */
++#define SIIL_DMA 0x01000000 /* DMA interrupt */
++#define SIIL_GTM4 0x00800000 /* GTM4 interrupt */
++#define SIIL_GTM8 0x00400000 /* GTM8 interrupt */
++#if defined (CONFIG_MPC8349)
++#define SIIL_GPIO1 0x00200000 /* GPIO1 interrupt */
++#define SIIL_GPIO2 0x00100000 /* GPIO2 interrupt */
++#endif
++#if defined (CONFIG_MPC8360)
++#define SIIL_QEP 0x00200000 /* QE ports interrupt */
++#define SIIL_SDDR 0x00100000 /* SDDR interrupt */
++#endif
++#define SIIL_DDR 0x00080000 /* DDR interrupt */
++#define SIIL_LBC 0x00040000 /* LBC interrupt */
++#define SIIL_GTM2 0x00020000 /* GTM2 interrupt */
++#define SIIL_GTM6 0x00010000 /* GTM6 interrupt */
++#define SIIL_PMC 0x00008000 /* PMC interrupt */
++#define SIIL_GTM3 0x00000800 /* GTM3 interrupt */
++#define SIIL_GTM7 0x00000400 /* GTM7 interrupt */
++#define SIIL_GTM1 0x00000020 /* GTM1 interrupt */
++#define SIIL_GTM5 0x00000010 /* GTM5 interrupt */
++#define SIIL_DPTC 0x00000001 /* DPTC interrupt (!!! Invisible for user !!!) */
++#if defined (CONFIG_MPC8349)
+ #define SIIL_RES ~(SIIL_RTCS | SIIL_PIT | SIIL_PCI1 | SIIL_PCI2 \
+ | SIIL_RTCA | SIIL_MU | SIIL_SBA | SIIL_DMA \
+ | SIIL_GTM4 | SIIL_GTM8 | SIIL_GPIO1 | SIIL_GPIO2 \
+ | SIIL_DDR | SIIL_LBC | SIIL_GTM2 | SIIL_GTM6 \
+ | SIIL_PMC |SIIL_GTM3 | SIIL_GTM7 | SIIL_GTM1 \
+ | SIIL_GTM5 |SIIL_DPTC )
+- u32 siprr_a; /* System Internal Interrupt Group A Priority Register (PRR) */
+- u8 res0[8];
+- u32 siprr_d; /* System Internal Interrupt Group D Priority Register (PRR) */
+- u32 simsr_h; /* System Internal Interrupt Mask Register - High (SIIH) */
+- u32 simsr_l; /* System Internal Interrupt Mask Register - Low (SIIL) */
+- u8 res1[4];
+- u32 sepnr; /* System External Interrupt Pending Register (SEI) */
+- u32 smprr_a; /* System Mixed Interrupt Group A Priority Register (PRR) */
+- u32 smprr_b; /* System Mixed Interrupt Group B Priority Register (PRR) */
+-#define PRR_0 0xe0000000 /* Priority Register, Position 0 programming */
+-#define PRR_1 0x1c000000 /* Priority Register, Position 1 programming */
+-#define PRR_2 0x03800000 /* Priority Register, Position 2 programming */
+-#define PRR_3 0x00700000 /* Priority Register, Position 3 programming */
+-#define PRR_4 0x0000e000 /* Priority Register, Position 4 programming */
+-#define PRR_5 0x00001c00 /* Priority Register, Position 5 programming */
+-#define PRR_6 0x00000380 /* Priority Register, Position 6 programming */
+-#define PRR_7 0x00000070 /* Priority Register, Position 7 programming */
++#endif
++#if defined (CONFIG_MPC8360)
++#define SIIL_RES ~(SIIL_RTCS |SIIL_PIT |SIIL_PCI1 |SIIL_RTCALR \
++ |SIIL_MU |SIIL_SBA |SIIL_DMA |SIIL_GTM4 |SIIL_GTM8 \
++ |SIIL_QEP | SIIL_SDDR| SIIL_DDR |SIIL_LBC |SIIL_GTM2 \
++ |SIIL_GTM6 |SIIL_PMC |SIIL_GTM3 |SIIL_GTM7 |SIIL_GTM1 \
++ |SIIL_GTM5 )
++#endif
++ u32 siprr_a; /* System Internal Interrupt Group A Priority Register (PRR) */
++ u8 res0[8];
++ u32 siprr_d; /* System Internal Interrupt Group D Priority Register (PRR) */
++ u32 simsr_h; /* System Internal Interrupt Mask Register - High (SIIH) */
++ u32 simsr_l; /* System Internal Interrupt Mask Register - Low (SIIL) */
++ u8 res1[4];
++ u32 sepnr; /* System External Interrupt Pending Register (SEI) */
++ u32 smprr_a; /* System Mixed Interrupt Group A Priority Register (PRR) */
++ u32 smprr_b; /* System Mixed Interrupt Group B Priority Register (PRR) */
++#define PRR_0 0xe0000000 /* Priority Register, Position 0 programming */
++#define PRR_1 0x1c000000 /* Priority Register, Position 1 programming */
++#define PRR_2 0x03800000 /* Priority Register, Position 2 programming */
++#define PRR_3 0x00700000 /* Priority Register, Position 3 programming */
++#define PRR_4 0x0000e000 /* Priority Register, Position 4 programming */
++#define PRR_5 0x00001c00 /* Priority Register, Position 5 programming */
++#define PRR_6 0x00000380 /* Priority Register, Position 6 programming */
++#define PRR_7 0x00000070 /* Priority Register, Position 7 programming */
+ #define PRR_RES ~(PRR_0|PRR_1|PRR_2|PRR_3|PRR_4|PRR_5|PRR_6|PRR_7)
+- u32 semsr; /* System External Interrupt Mask Register (SEI) */
+-#define SEI_IRQ0 0x80000000 /* IRQ0 external interrupt */
+-#define SEI_IRQ1 0x40000000 /* IRQ1 external interrupt */
+-#define SEI_IRQ2 0x20000000 /* IRQ2 external interrupt */
+-#define SEI_IRQ3 0x10000000 /* IRQ3 external interrupt */
+-#define SEI_IRQ4 0x08000000 /* IRQ4 external interrupt */
+-#define SEI_IRQ5 0x04000000 /* IRQ5 external interrupt */
+-#define SEI_IRQ6 0x02000000 /* IRQ6 external interrupt */
+-#define SEI_IRQ7 0x01000000 /* IRQ7 external interrupt */
+-#define SEI_SIRQ0 0x00008000 /* SIRQ0 external interrupt */
++ u32 semsr; /* System External Interrupt Mask Register (SEI) */
++#define SEI_IRQ0 0x80000000 /* IRQ0 external interrupt */
++#define SEI_IRQ1 0x40000000 /* IRQ1 external interrupt */
++#define SEI_IRQ2 0x20000000 /* IRQ2 external interrupt */
++#define SEI_IRQ3 0x10000000 /* IRQ3 external interrupt */
++#define SEI_IRQ4 0x08000000 /* IRQ4 external interrupt */
++#define SEI_IRQ5 0x04000000 /* IRQ5 external interrupt */
++#define SEI_IRQ6 0x02000000 /* IRQ6 external interrupt */
++#define SEI_IRQ7 0x01000000 /* IRQ7 external interrupt */
++#define SEI_SIRQ0 0x00008000 /* SIRQ0 external interrupt */
+ #define SEI_RES ~( SEI_IRQ0 | SEI_IRQ1 | SEI_IRQ2 | SEI_IRQ3 \
+ | SEI_IRQ4 | SEI_IRQ5 | SEI_IRQ6 | SEI_IRQ7 \
+ | SEI_SIRQ0)
+- u32 secnr; /* System External Interrupt Control Register (SECNR) */
+-#define SECNR_MIXB0T 0xc0000000 /* MIXB0 priority position IPIC output interrupt type */
+-#define SECNR_MIXB1T 0x30000000 /* MIXB1 priority position IPIC output interrupt type */
+-#define SECNR_MIXA0T 0x00c00000 /* MIXA0 priority position IPIC output interrupt type */
+-#define SECNR_SYSA1T 0x00300000 /* MIXA1 priority position IPIC output interrupt type */
++ u32 secnr; /* System External Interrupt Control Register (SECNR) */
++#define SECNR_MIXB0T 0xc0000000 /* MIXB0 priority position IPIC output interrupt type */
++#define SECNR_MIXB1T 0x30000000 /* MIXB1 priority position IPIC output interrupt type */
++#define SECNR_MIXA0T 0x00c00000 /* MIXA0 priority position IPIC output interrupt type */
++#define SECNR_SYSA1T 0x00300000 /* MIXA1 priority position IPIC output interrupt type */
+ #define SECNR_EDI0 0x00008000 /* IRQ0 external interrupt edge/level detect */
+ #define SECNR_EDI1 0x00004000 /* IRQ1 external interrupt edge/level detect */
+ #define SECNR_EDI2 0x00002000 /* IRQ2 external interrupt edge/level detect */
+@@ -339,176 +439,238 @@ typedef struct ipic8349 {
+ | SECNR_SYSA1T | SECNR_EDI0 | SECNR_EDI1 \
+ | SECNR_EDI2 | SECNR_EDI3 | SECNR_EDI4 \
+ | SECNR_EDI5 | SECNR_EDI6 | SECNR_EDI7)
+- u32 sersr; /* System Error Status Register (SERR) */
+- u32 sermr; /* System Error Mask Register (SERR) */
+-#define SERR_IRQ0 0x80000000 /* IRQ0 MCP request */
+-#define SERR_WDT 0x40000000 /* WDT MCP request */
+-#define SERR_SBA 0x20000000 /* SBA MCP request */
+-#define SERR_DDR 0x10000000 /* DDR MCP request */
+-#define SERR_LBC 0x08000000 /* LBC MCP request */
+-#define SERR_PCI1 0x04000000 /* PCI1 MCP request */
+-#define SERR_PCI2 0x02000000 /* PCI2 MCP request */
+-#define SERR_MU 0x01000000 /* MU MCP request */
+-#define SERR_RNC 0x00010000 /* MU MCP request (!!! Non-visible for users !!!) */
++ u32 sersr; /* System Error Status Register (SERR) */
++ u32 sermr; /* System Error Mask Register (SERR) */
++#define SERR_IRQ0 0x80000000 /* IRQ0 MCP request */
++#define SERR_WDT 0x40000000 /* WDT MCP request */
++#define SERR_SBA 0x20000000 /* SBA MCP request */
++#if defined (CONFIG_MPC8349)
++#define SERR_DDR 0x10000000 /* DDR MCP request */
++#define SERR_LBC 0x08000000 /* LBC MCP request */
++#define SERR_PCI1 0x04000000 /* PCI1 MCP request */
++#define SERR_PCI2 0x02000000 /* PCI2 MCP request */
++#endif
++#if defined (CONFIG_MPC8360)
++#define SERR_CIEE 0x10000000 /* CIEE MCP request */
++#define SERR_CMEE 0x08000000 /* CMEEMCP request */
++#define SERR_PCI 0x04000000 /* PCI MCP request */
++#endif
++#define SERR_MU 0x01000000 /* MU MCP request */
++#define SERR_RNC 0x00010000 /* MU MCP request (!!! Non-visible for users !!!) */
++#if defined (CONFIG_MPC8349)
+ #define SERR_RES ~( SERR_IRQ0 | SERR_WDT | SERR_SBA | SERR_DDR \
+ |SERR_LBC | SERR_PCI1 | SERR_PCI2 | SERR_MU \
+ |SERR_RNC )
+- u32 sercr; /* System Error Control Register (SERCR) */
+-#define SERCR_MCPR 0x00000001 /* MCP Route */
++#elif defined (CONFIG_MPC8360)
++#define SERR_RES ~( SERR_IRQ0|SERR_WDT |SERR_SBA |SERR_CIEE\
++ |SERR_CMEE|SERR_PCI|SERR_MU)
++#endif
++ u32 sercr; /* System Error Control Register (SERCR) */
++#define SERCR_MCPR 0x00000001 /* MCP Route */
+ #define SERCR_RES ~(SERCR_MCPR)
+- u8 res2[4];
+- u32 sifcr_h; /* System Internal Interrupt Force Register - High (SIIH) */
+- u32 sifcr_l; /* System Internal Interrupt Force Register - Low (SIIL) */
+- u32 sefcr; /* System External Interrupt Force Register (SEI) */
+- u32 serfr; /* System Error Force Register (SERR) */
+- u8 res3[0xA0];
+-} ipic8349_t;
++ u8 res2[4];
++ u32 sifcr_h; /* System Internal Interrupt Force Register - High (SIIH) */
++ u32 sifcr_l; /* System Internal Interrupt Force Register - Low (SIIL) */
++ u32 sefcr; /* System External Interrupt Force Register (SEI) */
++ u32 serfr; /* System Error Force Register (SERR) */
++ u32 scvcr; /* System Critical Interrupt Vector Register */
++#define SCVCR_CVECX 0xFC000000 /* Backward (MPC8260) compatible
++ critical interrupt vector. */
++#define SCVCR_CVEC 0x0000007F /* Critical interrupt vector */
++#define SCVCR_RES ~(SCVCR_CVECX|SCVCR_CVEC)
++ u32 smvcr; /* System Management Interrupt Vector Register */
++#define SMVCR_CVECX 0xFC000000 /* Backward (MPC8260) compatible
++ critical interrupt vector. */
++#define SMVCR_CVEC 0x0000007F /* Critical interrupt vector */
++#define SMVCR_RES ~(SMVCR_CVECX|SMVCR_CVEC)
++ u8 res3[0x98];
++} ipic83xx_t;
+
+ /*
+ * System Arbiter Registers
+ */
+-typedef struct arbiter8349 {
+- u32 acr; /* Arbiter Configuration Register */
+-#define ACR_COREDIS 0x10000000 /* Core disable. */
+-#define ACR_PIPE_DEP 0x00070000 /* Pipeline depth (number of outstanding transactions). */
+-#define ACR_PCI_RPTCNT 0x00007000 /* PCI repeat count. */
+-#define ACR_RPTCNT 0x00000700 /* Repeat count. */
+-#define ACR_APARK 0x00000030 /* Address parking. */
+-#define ACR_PARKM 0x0000000F /* Parking master. */
++typedef struct arbiter83xx {
++ u32 acr; /* Arbiter Configuration Register */
++#define ACR_COREDIS 0x10000000 /* Core disable. */
++#define ACR_COREDIS_SHIFT (31-7)
++#define ACR_PIPE_DEP 0x00070000 /* Pipeline depth (number of outstanding transactions). */
++#define ACR_PIPE_DEP_SHIFT (31-15)
++#define ACR_PCI_RPTCNT 0x00007000 /* PCI repeat count. */
++#define ACR_PCI_RPTCNT_SHIFT (31-19)
++#define ACR_RPTCNT 0x00000700 /* Repeat count. */
++#define ACR_RPTCNT_SHIFT (31-23)
++#define ACR_APARK 0x00000030 /* Address parking. */
++#define ACR_APARK_SHIFT (31-27)
++#define ACR_PARKM 0x0000000F /* Parking master. */
++#define ACR_PARKM_SHIFT (31-31)
+ #define ACR_RES ~(ACR_COREDIS|ACR_PIPE_DEP|ACR_PCI_RPTCNT|ACR_RPTCNT|ACR_APARK|ACR_PARKM)
+- u32 atr; /* Arbiter Timers Register */
+-#define ATR_DTO 0x00FF0000 /* Data time out. */
+-#define ATR_ATO 0x000000FF /* Address time out. */
++ u32 atr; /* Arbiter Timers Register */
++#define ATR_DTO 0x00FF0000 /* Data time out. */
++#define ATR_ATO 0x000000FF /* Address time out. */
+ #define ATR_RES ~(ATR_DTO|ATR_ATO)
+ u8 res[4];
+- u32 aer; /* Arbiter Event Register (AE)*/
+- u32 aidr; /* Arbiter Interrupt Definition Register (AE) */
+- u32 amr; /* Arbiter Mask Register (AE) */
+- u32 aeatr; /* Arbiter Event Attributes Register */
+-#define AEATR_EVENT 0x07000000 /* Event type. */
+-#define AEATR_MSTR_ID 0x001F0000 /* Master Id. */
+-#define AEATR_TBST 0x00000800 /* Transfer burst. */
+-#define AEATR_TSIZE 0x00000700 /* Transfer Size. */
+-#define AEATR_TTYPE 0x0000001F /* Transfer Type. */
++ u32 aer; /* Arbiter Event Register (AE) */
++ u32 aidr; /* Arbiter Interrupt Definition Register (AE) */
++ u32 amr; /* Arbiter Mask Register (AE) */
++ u32 aeatr; /* Arbiter Event Attributes Register */
++#define AEATR_EVENT 0x07000000 /* Event type. */
++#define AEATR_MSTR_ID 0x001F0000 /* Master Id. */
++#define AEATR_TBST 0x00000800 /* Transfer burst. */
++#define AEATR_TSIZE 0x00000700 /* Transfer Size. */
++#define AEATR_TTYPE 0x0000001F /* Transfer Type. */
+ #define AEATR_RES ~(AEATR_EVENT|AEATR_MSTR_ID|AEATR_TBST|AEATR_TSIZE|AEATR_TTYPE)
+- u32 aeadr; /* Arbiter Event Address Register */
+- u32 aerr; /* Arbiter Event Response Register (AE)*/
+-#define AE_ETEA 0x00000020 /* Transfer error. */
+-#define AE_RES_ 0x00000010 /* Reserved transfer type. */
+-#define AE_ECW 0x00000008 /* External control word transfer type. */
+-#define AE_AO 0x00000004 /* Address Only transfer type. */
+-#define AE_DTO 0x00000002 /* Data time out. */
+-#define AE_ATO 0x00000001 /* Address time out. */
++ u32 aeadr; /* Arbiter Event Address Register */
++ u32 aerr; /* Arbiter Event Response Register (AE) */
++#define AE_ETEA 0x00000020 /* Transfer error. */
++#define AE_RES_ 0x00000010 /* Reserved transfer type. */
++#define AE_ECW 0x00000008 /* External control word transfer type. */
++#define AE_AO 0x00000004 /* Address Only transfer type. */
++#define AE_DTO 0x00000002 /* Data time out. */
++#define AE_ATO 0x00000001 /* Address time out. */
+ #define AE_RSRV ~(AE_ETEA|AE_RES_|AE_ECW|AE_AO|AE_DTO|AE_ATO)
+ u8 res1[0xDC];
+-} arbiter8349_t;
++} arbiter83xx_t;
+
+ /*
+ * Reset Module
+ */
+-typedef struct reset8349 {
+- u32 rcwl; /* RCWL Register */
++typedef struct reset83xx {
++ u32 rcwl; /* RCWL Register */
+ #define RCWL_LBIUCM 0x80000000 /* LBIUCM */
+ #define RCWL_LBIUCM_SHIFT 31
+ #define RCWL_DDRCM 0x40000000 /* DDRCM */
+ #define RCWL_DDRCM_SHIFT 30
++#if defined (CONFIG_MPC8349)
+ #define RCWL_SVCOD 0x30000000 /* SVCOD */
+-#define RCWL_SPMF 0x0f000000 /* SPMF */
+-#define RCWL_SPMF_SHIFT 24
++#endif
++#define RCWL_SPMF 0x0f000000 /* SPMF */
++#define RCWL_SPMF_SHIFT 24
+ #define RCWL_COREPLL 0x007F0000 /* COREPLL */
+ #define RCWL_COREPLL_SHIFT 16
+ #define RCWL_CEVCOD 0x000000C0 /* CEVCOD */
+ #define RCWL_CEPDF 0x00000020 /* CEPDF */
++#define RCWL_CEPDF_SHIFT 5
+ #define RCWL_CEPMF 0x0000001F /* CEPMF */
+-#define RCWL_RES ~(RCWL_BIUCM|RCWL_DDRCM|RCWL_SVCOD|RCWL_SPMF|RCWL_COREPLL|RCWL_CEVCOD|RCWL_CEPDF|RCWL_CEPMF)
+- u32 rcwh; /* RCHL Register */
++#define RCWL_CEPMF_SHIFT 0
++#if defined (CONFIG_MPC8349)
++#define RCWL_RES ~(RCWL_LBIUCM|RCWL_DDRCM|RCWL_SVCOD|RCWL_SPMF|RCWL_COREPLL|RCWL_CEVCOD|RCWL_CEPDF|RCWL_CEPMF)
++#elif defined (CONFIG_MPC8360)
++#define RCWL_RES ~(RCWL_LBIUCM|RCWL_DDRCM|RCWL_SPMF|RCWL_COREPLL|RCWL_CEPDF|RCWL_CEPMF)
++#endif
++ u32 rcwh; /* RCHL Register */
+ #define RCWH_PCIHOST 0x80000000 /* PCIHOST */
+ #define RCWH_PCIHOST_SHIFT 31
++#if defined (CONFIG_MPC8349)
+ #define RCWH_PCI64 0x40000000 /* PCI64 */
+ #define RCWH_PCI1ARB 0x20000000 /* PCI1ARB */
+ #define RCWH_PCI2ARB 0x10000000 /* PCI2ARB */
++#elif defined (CONFIG_MPC8360)
++#define RCWH_PCIARB 0x20000000 /* PCI internal arbiter mode. */
++#define RCWH_PCICKDRV 0x10000000 /* PCI clock output drive. */
++#endif
+ #define RCWH_COREDIS 0x08000000 /* COREDIS */
+-#define RCWH_BMS 0x04000000 /* BMS */
++#define RCWH_BMS 0x04000000 /* BMS */
+ #define RCWH_BOOTSEQ 0x03000000 /* BOOTSEQ */
+-#define RCWH_SWEN 0x00800000 /* SWEN */
++#define RCWH_SWEN 0x00800000 /* SWEN */
+ #define RCWH_ROMLOC 0x00700000 /* ROMLOC */
++#if defined (CONFIG_MPC8349)
+ #define RCWH_TSEC1M 0x0000c000 /* TSEC1M */
+ #define RCWH_TSEC2M 0x00003000 /* TSEC2M */
+-#define RCWH_TPR 0x00000100 /* TPR */
+-#define RCWH_TLE 0x00000008 /* TLE */
+-#define RCWH_LALE 0x00000004 /* LALE */
++#define RCWH_TPR 0x00000100 /* TPR */
++#elif defined (CONFIG_MPC8360)
++#define RCWH_SDDRIOE 0x00000010 /* Secondary DDR IO Enable. */
++#endif
++#define RCWH_TLE 0x00000008 /* TLE */
++#define RCWH_LALE 0x00000004 /* LALE */
++#if defined (CONFIG_MPC8349)
+ #define RCWH_RES ~(RCWH_PCIHOST | RCWH_PCI64 | RCWH_PCI1ARB \
+ | RCWH_PCI2ARB | RCWH_COREDIS | RCWH_BMS \
+ | RCWH_BOOTSEQ | RCWH_SWEN | RCWH_ROMLOC \
+ | RCWH_TSEC1M | RCWH_TSEC2M | RCWH_TPR \
+ | RCWH_TLE | RCWH_LALE)
+- u8 res0[8];
+- u32 rsr; /* Reset status Register */
+-#define RSR_RSTSRC 0xE0000000 /* Reset source */
++#elif defined (CONFIG_MPC8360)
++#define RCWH_RES ~(RCWH_PCIHOST|RCWH_PCIARB|RCWH_PCICKDRV \
++ |RCWH_COREDIS|RCWH_BMS|RCWH_BOOTSEQ|RCWH_SWEN \
++ |RCWH_SDDRIOE |RCWH_TLE)
++#endif
++ u8 res0[8];
++ u32 rsr; /* Reset status Register */
++#define RSR_RSTSRC 0xE0000000 /* Reset source */
+ #define RSR_RSTSRC_SHIFT 29
+-#define RSR_BSF 0x00010000 /* Boot seq. fail */
+-#define RSR_BSF_SHIFT 16
+-#define RSR_SWSR 0x00002000 /* software soft reset */
+-#define RSR_SWSR_SHIFT 13
+-#define RSR_SWHR 0x00001000 /* software hard reset */
+-#define RSR_SWHR_SHIFT 12
+-#define RSR_JHRS 0x00000200 /* jtag hreset */
+-#define RSR_JHRS_SHIFT 9
+-#define RSR_JSRS 0x00000100 /* jtag sreset status */
+-#define RSR_JSRS_SHIFT 8
+-#define RSR_CSHR 0x00000010 /* checkstop reset status */
+-#define RSR_CSHR_SHIFT 4
+-#define RSR_SWRS 0x00000008 /* software watchdog reset status */
+-#define RSR_SWRS_SHIFT 3
+-#define RSR_BMRS 0x00000004 /* bus monitop reset status */
+-#define RSR_BMRS_SHIFT 2
+-#define RSR_SRS 0x00000002 /* soft reset status */
+-#define RSR_SRS_SHIFT 1
+-#define RSR_HRS 0x00000001 /* hard reset status */
+-#define RSR_HRS_SHIFT 0
++#define RSR_BSF 0x00010000 /* Boot seq. fail */
++#define RSR_BSF_SHIFT 16
++#define RSR_SWSR 0x00002000 /* software soft reset */
++#define RSR_SWSR_SHIFT 13
++#define RSR_SWHR 0x00001000 /* software hard reset */
++#define RSR_SWHR_SHIFT 12
++#define RSR_JHRS 0x00000200 /* jtag hreset */
++#define RSR_JHRS_SHIFT 9
++#define RSR_JSRS 0x00000100 /* jtag sreset status */
++#define RSR_JSRS_SHIFT 8
++#define RSR_CSHR 0x00000010 /* checkstop reset status */
++#define RSR_CSHR_SHIFT 4
++#define RSR_SWRS 0x00000008 /* software watchdog reset status */
++#define RSR_SWRS_SHIFT 3
++#define RSR_BMRS 0x00000004 /* bus monitop reset status */
++#define RSR_BMRS_SHIFT 2
++#define RSR_SRS 0x00000002 /* soft reset status */
++#define RSR_SRS_SHIFT 1
++#define RSR_HRS 0x00000001 /* hard reset status */
++#define RSR_HRS_SHIFT 0
+ #define RSR_RES ~(RSR_RSTSRC | RSR_BSF | RSR_SWSR | RSR_SWHR | RSR_JHRS | RSR_JSRS | RSR_CSHR | RSR_SWRS | RSR_BMRS | RSR_SRS | RSR_HRS)
+- u32 rmr; /* Reset mode Register */
+-#define RMR_CSRE 0x00000001 /* checkstop reset enable */
+-#define RMR_CSRE_SHIFT 0
++ u32 rmr; /* Reset mode Register */
++#define RMR_CSRE 0x00000001 /* checkstop reset enable */
++#define RMR_CSRE_SHIFT 0
+ #define RMR_RES ~(RMR_CSRE)
+- u32 rpr; /* Reset protection Register */
+- u32 rcr; /* Reset Control Register */
+-#define RCR_SWHR 0x00000002 /* software hard reset */
+-#define RCR_SWSR 0x00000001 /* software soft reset */
++ u32 rpr; /* Reset protection Register */
++ u32 rcr; /* Reset Control Register */
++#define RCR_SWHR 0x00000002 /* software hard reset */
++#define RCR_SWSR 0x00000001 /* software soft reset */
+ #define RCR_RES ~(RCR_SWHR | RCR_SWSR)
+- u32 rcer; /* Reset Control Enable Register */
+-#define RCER_CRE 0x00000001 /* software hard reset */
++ u32 rcer; /* Reset Control Enable Register */
++#define RCER_CRE 0x00000001 /* software hard reset */
+ #define RCER_RES ~(RCER_CRE)
+- u8 res1[0xDC];
+-} reset8349_t;
++ u8 res1[0xDC];
++} reset83xx_t;
+
+-typedef struct clk8349 {
+- u32 spmr; /* system PLL mode Register */
++typedef struct clk83xx {
++ u32 spmr; /* system PLL mode Register */
+ #define SPMR_LBIUCM 0x80000000 /* LBIUCM */
+ #define SPMR_DDRCM 0x40000000 /* DDRCM */
++#if defined (CONFIG_MPC8349)
+ #define SPMR_SVCOD 0x30000000 /* SVCOD */
+-#define SPMR_SPMF 0x0F000000 /* SPMF */
+-#define SPMR_CKID 0x00800000 /* CKID */
++#endif
++#define SPMR_SPMF 0x0F000000 /* SPMF */
++#define SPMR_CKID 0x00800000 /* CKID */
+ #define SPMR_CKID_SHIFT 23
+ #define SPMR_COREPLL 0x007F0000 /* COREPLL */
+ #define SPMR_CEVCOD 0x000000C0 /* CEVCOD */
+ #define SPMR_CEPDF 0x00000020 /* CEPDF */
+ #define SPMR_CEPMF 0x0000001F /* CEPMF */
++#if defined (CONFIG_MPC8349)
+ #define SPMR_RES ~(SPMR_LBIUCM | SPMR_DDRCM | SPMR_SVCOD \
+ | SPMR_SPMF | SPMR_CKID | SPMR_COREPLL \
+ | SPMR_CEVCOD | SPMR_CEPDF | SPMR_CEPMF)
+- u32 occr; /* output clock control Register */
++#elif defined (CONFIG_MPC8360)
++#define SPMR_RES ~(SPMR_LBIUCM | SPMR_DDRCM | SPMR_SPMF \
++ | SPMR_CKID | SPMR_COREPLL | SPMR_CEVCOD \
++ | SPMR_CEPDF | SPMR_CEPMF)
++#endif
++ u32 occr; /* output clock control Register */
+ #define OCCR_PCICOE0 0x80000000 /* PCICOE0 */
+ #define OCCR_PCICOE1 0x40000000 /* PCICOE1 */
+ #define OCCR_PCICOE2 0x20000000 /* PCICOE2 */
++#if defined (CONFIG_MPC8349)
+ #define OCCR_PCICOE3 0x10000000 /* PCICOE3 */
+ #define OCCR_PCICOE4 0x08000000 /* PCICOE4 */
+ #define OCCR_PCICOE5 0x04000000 /* PCICOE5 */
+ #define OCCR_PCICOE6 0x02000000 /* PCICOE6 */
+ #define OCCR_PCICOE7 0x01000000 /* PCICOE7 */
++#endif
+ #define OCCR_PCICD0 0x00800000 /* PCICD0 */
+ #define OCCR_PCICD1 0x00400000 /* PCICD1 */
+ #define OCCR_PCICD2 0x00200000 /* PCICD2 */
++#if defined (CONFIG_MPC8349)
+ #define OCCR_PCICD3 0x00100000 /* PCICD3 */
+ #define OCCR_PCICD4 0x00080000 /* PCICD4 */
+ #define OCCR_PCICD5 0x00040000 /* PCICD5 */
+@@ -522,72 +684,253 @@ typedef struct clk8349 {
+ | OCCR_PCICD1 | OCCR_PCICD2 | OCCR_PCICD3 \
+ | OCCR_PCICD4 | OCCR_PCICD5 | OCCR_PCICD6 \
+ | OCCR_PCICD7 | OCCR_PCI1CR | OCCR_PCI2CR )
+- u32 sccr; /* system clock control Register */
+-#define SCCR_TSEC1CM 0xc0000000 /* TSEC1CM */
++#endif
++#if defined (CONFIG_MPC8360)
++#define OCCR_PCICR 0x00000002 /* PCI clock rate */
++#define OCCR_RES ~(OCCR_PCICOE0|OCCR_PCICOE1|OCCR_PCICOE2 \
++ |OCCR_PCICD0|OCCR_PCICD1|OCCR_PCICD2|OCCR_PCICR )
++#endif
++ u32 sccr; /* system clock control Register */
++#if defined (CONFIG_MPC8349)
++#define SCCR_TSEC1CM 0xc0000000 /* TSEC1CM */
+ #define SCCR_TSEC1CM_SHIFT 30
+-#define SCCR_TSEC2CM 0x30000000 /* TSEC2CM */
++#define SCCR_TSEC2CM 0x30000000 /* TSEC2CM */
+ #define SCCR_TSEC2CM_SHIFT 28
+-#define SCCR_ENCCM 0x03000000 /* ENCCM */
++#endif
++#define SCCR_ENCCM 0x03000000 /* ENCCM */
+ #define SCCR_ENCCM_SHIFT 24
+-#define SCCR_USBMPHCM 0x00c00000 /* USBMPHCM */
++#if defined (CONFIG_MPC8349)
++#define SCCR_USBMPHCM 0x00c00000 /* USBMPHCM */
+ #define SCCR_USBMPHCM_SHIFT 22
+-#define SCCR_USBDRCM 0x00300000 /* USBDRCM */
++#define SCCR_USBDRCM 0x00300000 /* USBDRCM */
+ #define SCCR_USBDRCM_SHIFT 20
+-#define SCCR_PCICM 0x00010000 /* PCICM */
++#endif
++#define SCCR_PCICM 0x00010000 /* PCICM */
++#if defined (CONFIG_MPC8349)
+ #define SCCR_RES ~( SCCR_TSEC1CM | SCCR_TSEC2CM | SCCR_ENCCM \
+ | SCCR_USBMPHCM | SCCR_USBDRCM | SCCR_PCICM)
+- u8 res0[0xF4];
+-} clk8349_t;
++#endif
++#if defined (CONFIG_MPC8360)
++#define SCCR_RES ~(SCCR_ENCCM | SCCR_PCICM)
++#endif
++ u8 res0[0xF4];
++} clk83xx_t;
+
+ /*
+ * Power Management Control Module
+ */
+-typedef struct pmc8349 {
+- u32 pmccr; /* PMC Configuration Register */
+-#define PMCCR_SLPEN 0x00000001 /* System Low Power Enable */
+-#define PMCCR_DLPEN 0x00000002 /* DDR SDRAM Low Power Enable */
+-#define PMCCR_RES ~(PMCCR_SLPEN | PMCCR_DLPEN)
+- u32 pmcer; /* PMC Event Register */
+-#define PMCER_PMCI 0x00000001 /* PMC Interrupt */
++typedef struct pmc83xx {
++ u32 pmccr; /* PMC Configuration Register */
++#define PMCCR_SLPEN 0x00000001 /* System Low Power Enable */
++#define PMCCR_DLPEN 0x00000002 /* DDR SDRAM Low Power Enable */
++#if defined (CONFIG_MPC8360)
++#define PMCCR_SDLPEN 0x00000004 /* Secondary DDR SDRAM Low Power Enable */
++#define PMCCR_RES ~(PMCCR_SLPEN | PMCCR_DLPEN | PMCCR_SDLPEN)
++#elif defined (CONFIG_MPC8349)
++#define PMCCR_RES ~(PMCCR_SLPEN | PMCCR_DLPEN)
++#endif
++ u32 pmcer; /* PMC Event Register */
++#define PMCER_PMCI 0x00000001 /* PMC Interrupt */
+ #define PMCER_RES ~(PMCER_PMCI)
+- u32 pmcmr; /* PMC Mask Register */
+-#define PMCMR_PMCIE 0x0001 /* PMC Interrupt Enable */
++ u32 pmcmr; /* PMC Mask Register */
++#define PMCMR_PMCIE 0x0001 /* PMC Interrupt Enable */
+ #define PMCMR_RES ~(PMCMR_PMCIE)
+ u8 res0[0xF4];
+-} pmc8349_t;
+-
++} pmc83xx_t;
+
++#if defined (CONFIG_MPC8349)
+ /*
+ * general purpose I/O module
+ */
+-typedef struct gpio8349 {
+- u32 dir; /* direction register */
+- u32 odr; /* open drain register */
+- u32 dat; /* data register */
+- u32 ier; /* interrupt event register */
+- u32 imr; /* interrupt mask register */
+- u32 icr; /* external interrupt control register */
++typedef struct gpio83xx {
++ u32 dir; /* direction register */
++ u32 odr; /* open drain register */
++ u32 dat; /* data register */
++ u32 ier; /* interrupt event register */
++ u32 imr; /* interrupt mask register */
++ u32 icr; /* external interrupt control register */
+ u8 res0[0xE8];
+-} gpio8349_t;
++} gpio83xx_t;
++#endif
++
++#if defined (CONFIG_MPC8360)
++/*
++ * QE Ports Interrupts Registers
++ */
++typedef struct qepi83xx {
++ u8 res0[0xC];
++ u32 qepier; /* QE Ports Interrupt Event Register */
++#define QEPIER_PA15 0x80000000
++#define QEPIER_PA16 0x40000000
++#define QEPIER_PA29 0x20000000
++#define QEPIER_PA30 0x10000000
++#define QEPIER_PB3 0x08000000
++#define QEPIER_PB5 0x04000000
++#define QEPIER_PB12 0x02000000
++#define QEPIER_PB13 0x01000000
++#define QEPIER_PB26 0x00800000
++#define QEPIER_PB27 0x00400000
++#define QEPIER_PC27 0x00200000
++#define QEPIER_PC28 0x00100000
++#define QEPIER_PC29 0x00080000
++#define QEPIER_PD12 0x00040000
++#define QEPIER_PD13 0x00020000
++#define QEPIER_PD16 0x00010000
++#define QEPIER_PD17 0x00008000
++#define QEPIER_PD26 0x00004000
++#define QEPIER_PD27 0x00002000
++#define QEPIER_PE12 0x00001000
++#define QEPIER_PE13 0x00000800
++#define QEPIER_PE24 0x00000400
++#define QEPIER_PE25 0x00000200
++#define QEPIER_PE26 0x00000100
++#define QEPIER_PE27 0x00000080
++#define QEPIER_PE31 0x00000040
++#define QEPIER_PF20 0x00000020
++#define QEPIER_PG31 0x00000010
++#define QEPIER_RES ~(QEPIER_PA15|QEPIER_PA16|QEPIER_PA29|QEPIER_PA30|QEPIER_PB3 \
++ |QEPIER_PB5|QEPIER_PB12|QEPIER_PB13|QEPIER_PB26|QEPIER_PB27 \
++ |QEPIER_PC27|QEPIER_PC28|QEPIER_PC29|QEPIER_PD12|QEPIER_PD13 \
++ |QEPIER_PD16|QEPIER_PD17|QEPIER_PD26|QEPIER_PD27|QEPIER_PE12 \
++ |QEPIER_PE13|QEPIER_PE24|QEPIER_PE25|QEPIER_PE26|QEPIER_PE27 \
++ |QEPIER_PE31|QEPIER_PF20|QEPIER_PG31)
++ u32 qepimr; /* QE Ports Interrupt Mask Register */
++#define QEPIMR_PA15 0x80000000
++#define QEPIMR_PA16 0x40000000
++#define QEPIMR_PA29 0x20000000
++#define QEPIMR_PA30 0x10000000
++#define QEPIMR_PB3 0x08000000
++#define QEPIMR_PB5 0x04000000
++#define QEPIMR_PB12 0x02000000
++#define QEPIMR_PB13 0x01000000
++#define QEPIMR_PB26 0x00800000
++#define QEPIMR_PB27 0x00400000
++#define QEPIMR_PC27 0x00200000
++#define QEPIMR_PC28 0x00100000
++#define QEPIMR_PC29 0x00080000
++#define QEPIMR_PD12 0x00040000
++#define QEPIMR_PD13 0x00020000
++#define QEPIMR_PD16 0x00010000
++#define QEPIMR_PD17 0x00008000
++#define QEPIMR_PD26 0x00004000
++#define QEPIMR_PD27 0x00002000
++#define QEPIMR_PE12 0x00001000
++#define QEPIMR_PE13 0x00000800
++#define QEPIMR_PE24 0x00000400
++#define QEPIMR_PE25 0x00000200
++#define QEPIMR_PE26 0x00000100
++#define QEPIMR_PE27 0x00000080
++#define QEPIMR_PE31 0x00000040
++#define QEPIMR_PF20 0x00000020
++#define QEPIMR_PG31 0x00000010
++#define QEPIMR_RES ~(QEPIMR_PA15|QEPIMR_PA16|QEPIMR_PA29|QEPIMR_PA30|QEPIMR_PB3 \
++ |QEPIMR_PB5|QEPIMR_PB12|QEPIMR_PB13|QEPIMR_PB26|QEPIMR_PB27 \
++ |QEPIMR_PC27|QEPIMR_PC28|QEPIMR_PC29|QEPIMR_PD12|QEPIMR_PD13 \
++ |QEPIMR_PD16|QEPIMR_PD17|QEPIMR_PD26|QEPIMR_PD27|QEPIMR_PE12 \
++ |QEPIMR_PE13|QEPIMR_PE24|QEPIMR_PE25|QEPIMR_PE26|QEPIMR_PE27 \
++ |QEPIMR_PE31|QEPIMR_PF20|QEPIMR_PG31)
++ u32 qepicr; /* QE Ports Interrupt Control Register */
++#define QEPICR_PA15 0x80000000
++#define QEPICR_PA16 0x40000000
++#define QEPICR_PA29 0x20000000
++#define QEPICR_PA30 0x10000000
++#define QEPICR_PB3 0x08000000
++#define QEPICR_PB5 0x04000000
++#define QEPICR_PB12 0x02000000
++#define QEPICR_PB13 0x01000000
++#define QEPICR_PB26 0x00800000
++#define QEPICR_PB27 0x00400000
++#define QEPICR_PC27 0x00200000
++#define QEPICR_PC28 0x00100000
++#define QEPICR_PC29 0x00080000
++#define QEPICR_PD12 0x00040000
++#define QEPICR_PD13 0x00020000
++#define QEPICR_PD16 0x00010000
++#define QEPICR_PD17 0x00008000
++#define QEPICR_PD26 0x00004000
++#define QEPICR_PD27 0x00002000
++#define QEPICR_PE12 0x00001000
++#define QEPICR_PE13 0x00000800
++#define QEPICR_PE24 0x00000400
++#define QEPICR_PE25 0x00000200
++#define QEPICR_PE26 0x00000100
++#define QEPICR_PE27 0x00000080
++#define QEPICR_PE31 0x00000040
++#define QEPICR_PF20 0x00000020
++#define QEPICR_PG31 0x00000010
++#define QEPICR_RES ~(QEPICR_PA15|QEPICR_PA16|QEPICR_PA29|QEPICR_PA30|QEPICR_PB3 \
++ |QEPICR_PB5|QEPICR_PB12|QEPICR_PB13|QEPICR_PB26|QEPICR_PB27 \
++ |QEPICR_PC27|QEPICR_PC28|QEPICR_PC29|QEPICR_PD12|QEPICR_PD13 \
++ |QEPICR_PD16|QEPICR_PD17|QEPICR_PD26|QEPICR_PD27|QEPICR_PE12 \
++ |QEPICR_PE13|QEPICR_PE24|QEPICR_PE25|QEPICR_PE26|QEPICR_PE27 \
++ |QEPICR_PE31|QEPICR_PF20|QEPICR_PG31)
++ u8 res1[0xE8];
++} qepi83xx_t;
++
++/*
++ * general purpose I/O module
++ */
++typedef struct gpio_n {
++ u32 podr; /* Open Drain Register */
++ u32 pdat; /* Data Register */
++ u32 dir1; /* direction register 1 */
++ u32 dir2; /* direction register 2 */
++ u32 ppar1; /* Pin Assignment Register 1 */
++ u32 ppar2; /* Pin Assignment Register 2 */
++} gpio_n_t;
++
++typedef struct gpio83xx {
++ gpio_n_t ioport[0x7];
++ u8 res0[0x358];
++} gpio83xx_t;
++
++/*
++ * QE Secondary Bus Access Windows
++ */
++
++typedef struct qesba83xx {
++ u32 lbmcsar; /* Local bus memory controller start address */
++#define LBMCSAR_SA 0x000FFFFF /* 20 most-significant bits of the start address */
++#define LBMCSAR_RES ~(LBMCSAR_SA)
++ u32 sdmcsar; /* Secondary DDR memory controller start address */
++#define SDMCSAR_SA 0x000FFFFF /* 20 most-significant bits of the start address */
++#define SDMCSAR_RES ~(SDMCSAR_SA)
++ u8 res0[0x38];
++ u32 lbmcear; /* Local bus memory controller end address */
++#define LBMCEAR_EA 0x000FFFFF /* 20 most-significant bits of the end address */
++#define LBMCEAR_RES ~(LBMCEAR_EA)
++ u32 sdmcear; /* Secondary DDR memory controller end address */
++#define SDMCEAR_EA 0x000FFFFF /* 20 most-significant bits of the end address */
++#define SDMCEAR_RES ~(SDMCEAR_EA)
++ u8 res1[0x38];
++ u32 lbmcar; /* Local bus memory controller attributes */
++#define LBMCAR_WEN 0x00000001 /* Forward transactions to the QE local bus */
++#define LBMCAR_RES ~(LBMCAR_WEN)
++ u32 sdmcar; /* Secondary DDR memory controller attributes */
++#define SDMCAR_WEN 0x00000001 /* Forward transactions to the second DDR bus */
++#define SDMCAR_RES ~(SDMCAR_WEN)
++ u8 res2[0x778];
++} qesba83xx_t;
++#endif
+
+ /*
+ * DDR Memory Controller Memory Map
+ */
+-typedef struct ddr_cs_bnds{
++typedef struct ddr_cs_bnds {
+ u32 csbnds;
+ #define CSBNDS_SA 0x00FF0000
+-#define CSBNDS_SA_SHIFT 8
++#define CSBNDS_SA_SHIFT 8
+ #define CSBNDS_EA 0x000000FF
+-#define CSBNDS_EA_SHIFT 24
+- u8 res0[4];
++#define CSBNDS_EA_SHIFT 24
++ u8 res0[4];
+ } ddr_cs_bnds_t;
+
+-typedef struct ddr8349{
+- ddr_cs_bnds_t csbnds[4]; /**< Chip Select x Memory Bounds */
++typedef struct ddr83xx {
++ ddr_cs_bnds_t csbnds[4]; /**< Chip Select x Memory Bounds */
+ u8 res0[0x60];
+- u32 cs_config[4]; /**< Chip Select x Configuration */
+-#define CSCONFIG_EN 0x80000000
+-#define CSCONFIG_AP 0x00800000
++ u32 cs_config[4]; /**< Chip Select x Configuration */
++#define CSCONFIG_EN 0x80000000
++#define CSCONFIG_AP 0x00800000
+ #define CSCONFIG_ROW_BIT 0x00000700
+ #define CSCONFIG_ROW_BIT_12 0x00000000
+ #define CSCONFIG_ROW_BIT_13 0x00000100
+@@ -598,7 +941,7 @@ typedef struct ddr8349{
+ #define CSCONFIG_COL_BIT_10 0x00000002
+ #define CSCONFIG_COL_BIT_11 0x00000003
+ u8 res1[0x78];
+- u32 timing_cfg_1; /**< SDRAM Timing Configuration 1 */
++ u32 timing_cfg_1; /**< SDRAM Timing Configuration 1 */
+ #define TIMING_CFG1_PRETOACT 0x70000000
+ #define TIMING_CFG1_PRETOACT_SHIFT 28
+ #define TIMING_CFG1_ACTTOPRE 0x0F000000
+@@ -610,70 +953,70 @@ typedef struct ddr8349{
+ #define TIMING_CFG1_REFREC 0x0000F000
+ #define TIMING_CFG1_REFREC_SHIFT 12
+ #define TIMING_CFG1_WRREC 0x00000700
+-#define TIMING_CFG1_WRREC_SHIFT 8
++#define TIMING_CFG1_WRREC_SHIFT 8
+ #define TIMING_CFG1_ACTTOACT 0x00000070
+ #define TIMING_CFG1_ACTTOACT_SHIFT 4
+ #define TIMING_CFG1_WRTORD 0x00000007
+ #define TIMING_CFG1_WRTORD_SHIFT 0
+-#define TIMING_CFG1_CASLAT_20 0x00030000 /* CAS latency = 2.0 */
+-#define TIMING_CFG1_CASLAT_25 0x00040000 /* CAS latency = 2.5 */
++#define TIMING_CFG1_CASLAT_20 0x00030000 /* CAS latency = 2.0 */
++#define TIMING_CFG1_CASLAT_25 0x00040000 /* CAS latency = 2.5 */
+
+- u32 timing_cfg_2; /**< SDRAM Timing Configuration 2 */
+-#define TIMING_CFG2_CPO 0x0F000000
+-#define TIMING_CFG2_CPO_SHIFT 24
+-#define TIMING_CFG2_ACSM 0x00080000
++ u32 timing_cfg_2; /**< SDRAM Timing Configuration 2 */
++#define TIMING_CFG2_CPO 0x0F000000
++#define TIMING_CFG2_CPO_SHIFT 24
++#define TIMING_CFG2_ACSM 0x00080000
+ #define TIMING_CFG2_WR_DATA_DELAY 0x00001C00
+-#define TIMING_CFG2_WR_DATA_DELAY_SHIFT 10
+-#define TIMING_CFG2_CPO_DEF 0x00000000 /* default (= CASLAT + 1) */
++#define TIMING_CFG2_WR_DATA_DELAY_SHIFT 10
++#define TIMING_CFG2_CPO_DEF 0x00000000 /* default (= CASLAT + 1) */
+
+- u32 sdram_cfg; /**< SDRAM Control Configuration */
++ u32 sdram_cfg; /**< SDRAM Control Configuration */
+ #define SDRAM_CFG_MEM_EN 0x80000000
+-#define SDRAM_CFG_SREN 0x40000000
++#define SDRAM_CFG_SREN 0x40000000
+ #define SDRAM_CFG_ECC_EN 0x20000000
+-#define SDRAM_CFG_RD_EN 0x10000000
++#define SDRAM_CFG_RD_EN 0x10000000
+ #define SDRAM_CFG_SDRAM_TYPE 0x03000000
+ #define SDRAM_CFG_SDRAM_TYPE_SHIFT 24
+ #define SDRAM_CFG_DYN_PWR 0x00200000
+-#define SDRAM_CFG_32_BE 0x00080000
+-#define SDRAM_CFG_8_BE 0x00040000
+-#define SDRAM_CFG_NCAP 0x00020000
+-#define SDRAM_CFG_2T_EN 0x00008000
++#define SDRAM_CFG_32_BE 0x00080000
++#define SDRAM_CFG_8_BE 0x00040000
++#define SDRAM_CFG_NCAP 0x00020000
++#define SDRAM_CFG_2T_EN 0x00008000
+ #define SDRAM_CFG_SDRAM_TYPE_DDR 0x02000000
+
+ u8 res2[4];
+- u32 sdram_mode; /**< SDRAM Mode Configuration */
++ u32 sdram_mode; /**< SDRAM Mode Configuration */
+ #define SDRAM_MODE_ESD 0xFFFF0000
+ #define SDRAM_MODE_ESD_SHIFT 16
+ #define SDRAM_MODE_SD 0x0000FFFF
+-#define SDRAM_MODE_SD_SHIFT 0
+-#define DDR_MODE_EXT_MODEREG 0x4000 /* select extended mode reg */
+-#define DDR_MODE_EXT_OPMODE 0x3FF8 /* operating mode, mask */
+-#define DDR_MODE_EXT_OP_NORMAL 0x0000 /* normal operation */
+-#define DDR_MODE_QFC 0x0004 /* QFC / compatibility, mask */
+-#define DDR_MODE_QFC_COMP 0x0000 /* compatible to older SDRAMs */
+-#define DDR_MODE_WEAK 0x0002 /* weak drivers */
+-#define DDR_MODE_DLL_DIS 0x0001 /* disable DLL */
+-#define DDR_MODE_CASLAT 0x0070 /* CAS latency, mask */
+-#define DDR_MODE_CASLAT_15 0x0010 /* CAS latency 1.5 */
+-#define DDR_MODE_CASLAT_20 0x0020 /* CAS latency 2 */
+-#define DDR_MODE_CASLAT_25 0x0060 /* CAS latency 2.5 */
+-#define DDR_MODE_CASLAT_30 0x0030 /* CAS latency 3 */
+-#define DDR_MODE_BTYPE_SEQ 0x0000 /* sequential burst */
+-#define DDR_MODE_BTYPE_ILVD 0x0008 /* interleaved burst */
+-#define DDR_MODE_BLEN_2 0x0001 /* burst length 2 */
+-#define DDR_MODE_BLEN_4 0x0002 /* burst length 4 */
+-#define DDR_REFINT_166MHZ_7US 1302 /* exact value for 7.8125 µs */
+-#define DDR_BSTOPRE 256 /* use 256 cycles as a starting point */
+-#define DDR_MODE_MODEREG 0x0000 /* select mode register */
++#define SDRAM_MODE_SD_SHIFT 0
++#define DDR_MODE_EXT_MODEREG 0x4000 /* select extended mode reg */
++#define DDR_MODE_EXT_OPMODE 0x3FF8 /* operating mode, mask */
++#define DDR_MODE_EXT_OP_NORMAL 0x0000 /* normal operation */
++#define DDR_MODE_QFC 0x0004 /* QFC / compatibility, mask */
++#define DDR_MODE_QFC_COMP 0x0000 /* compatible to older SDRAMs */
++#define DDR_MODE_WEAK 0x0002 /* weak drivers */
++#define DDR_MODE_DLL_DIS 0x0001 /* disable DLL */
++#define DDR_MODE_CASLAT 0x0070 /* CAS latency, mask */
++#define DDR_MODE_CASLAT_15 0x0010 /* CAS latency 1.5 */
++#define DDR_MODE_CASLAT_20 0x0020 /* CAS latency 2 */
++#define DDR_MODE_CASLAT_25 0x0060 /* CAS latency 2.5 */
++#define DDR_MODE_CASLAT_30 0x0030 /* CAS latency 3 */
++#define DDR_MODE_BTYPE_SEQ 0x0000 /* sequential burst */
++#define DDR_MODE_BTYPE_ILVD 0x0008 /* interleaved burst */
++#define DDR_MODE_BLEN_2 0x0001 /* burst length 2 */
++#define DDR_MODE_BLEN_4 0x0002 /* burst length 4 */
++#define DDR_REFINT_166MHZ_7US 1302 /* exact value for 7.8125 µs */
++#define DDR_BSTOPRE 256 /* use 256 cycles as a starting point */
++#define DDR_MODE_MODEREG 0x0000 /* select mode register */
+
+ u8 res3[8];
+- u32 sdram_interval; /**< SDRAM Interval Configuration */
++ u32 sdram_interval; /**< SDRAM Interval Configuration */
+ #define SDRAM_INTERVAL_REFINT 0x3FFF0000
+ #define SDRAM_INTERVAL_REFINT_SHIFT 16
+ #define SDRAM_INTERVAL_BSTOPRE 0x00003FFF
+-#define SDRAM_INTERVAL_BSTOPRE_SHIFT 0
+- u8 res9[8];
+- u32 sdram_clk_cntl;
++#define SDRAM_INTERVAL_BSTOPRE_SHIFT 0
++ u8 res9[8];
++ u32 sdram_clk_cntl;
+ #define DDR_SDRAM_CLK_CNTL_SS_EN 0x80000000
+ #define DDR_SDRAM_CLK_CNTL_CLK_ADJUST_025 0x01000000
+ #define DDR_SDRAM_CLK_CNTL_CLK_ADJUST_05 0x02000000
+@@ -683,37 +1026,37 @@ typedef struct ddr8349{
+ u8 res4[0xCCC];
+ u32 data_err_inject_hi; /**< Memory Data Path Error Injection Mask High */
+ u32 data_err_inject_lo; /**< Memory Data Path Error Injection Mask Low */
+- u32 ecc_err_inject; /**< Memory Data Path Error Injection Mask ECC */
++ u32 ecc_err_inject; /**< Memory Data Path Error Injection Mask ECC */
+ #define ECC_ERR_INJECT_EMB (0x80000000>>22) /* ECC Mirror Byte */
+ #define ECC_ERR_INJECT_EIEN (0x80000000>>23) /* Error Injection Enable */
+ #define ECC_ERR_INJECT_EEIM (0xff000000>>24) /* ECC Erroe Injection Enable */
+ #define ECC_ERR_INJECT_EEIM_SHIFT 0
+ u8 res5[0x14];
+- u32 capture_data_hi; /**< Memory Data Path Read Capture High */
+- u32 capture_data_lo; /**< Memory Data Path Read Capture Low */
+- u32 capture_ecc; /**< Memory Data Path Read Capture ECC */
++ u32 capture_data_hi; /**< Memory Data Path Read Capture High */
++ u32 capture_data_lo; /**< Memory Data Path Read Capture Low */
++ u32 capture_ecc; /**< Memory Data Path Read Capture ECC */
+ #define CAPTURE_ECC_ECE (0xff000000>>24)
+ #define CAPTURE_ECC_ECE_SHIFT 0
+ u8 res6[0x14];
+- u32 err_detect; /**< Memory Error Detect */
+-#define ECC_ERROR_DETECT_MME (0x80000000>>0) /* Multiple Memory Errors */
++ u32 err_detect; /**< Memory Error Detect */
++#define ECC_ERROR_DETECT_MME (0x80000000>>0) /* Multiple Memory Errors */
+ #define ECC_ERROR_DETECT_MBE (0x80000000>>28) /* Multiple-Bit Error */
+ #define ECC_ERROR_DETECT_SBE (0x80000000>>29) /* Single-Bit ECC Error Pickup */
+ #define ECC_ERROR_DETECT_MSE (0x80000000>>31) /* Memory Select Error */
+- u32 err_disable; /**< Memory Error Disable */
++ u32 err_disable; /**< Memory Error Disable */
+ #define ECC_ERROR_DISABLE_MBED (0x80000000>>28) /* Multiple-Bit ECC Error Disable */
+ #define ECC_ERROR_DISABLE_SBED (0x80000000>>29) /* Sinle-Bit ECC Error disable */
+ #define ECC_ERROR_DISABLE_MSED (0x80000000>>31) /* Memory Select Error Disable */
+ #define ECC_ERROR_ENABLE ~(ECC_ERROR_DISABLE_MSED|ECC_ERROR_DISABLE_SBED|ECC_ERROR_DISABLE_MBED)
+- u32 err_int_en; /**< Memory Error Interrupt Enable */
++ u32 err_int_en; /**< Memory Error Interrupt Enable */
+ #define ECC_ERR_INT_EN_MBEE (0x80000000>>28) /* Multiple-Bit ECC Error Interrupt Enable */
+ #define ECC_ERR_INT_EN_SBEE (0x80000000>>29) /* Single-Bit ECC Error Interrupt Enable */
+ #define ECC_ERR_INT_EN_MSEE (0x80000000>>31) /* Memory Select Error Interrupt Enable */
+ #define ECC_ERR_INT_DISABLE ~(ECC_ERR_INT_EN_MBEE|ECC_ERR_INT_EN_SBEE|ECC_ERR_INT_EN_MSEE)
+ u32 capture_attributes; /**< Memory Error Attributes Capture */
+-#define ECC_CAPT_ATTR_BNUM (0xe0000000>>1) /* Data Beat Num */
++#define ECC_CAPT_ATTR_BNUM (0xe0000000>>1) /* Data Beat Num */
+ #define ECC_CAPT_ATTR_BNUM_SHIFT 28
+-#define ECC_CAPT_ATTR_TSIZ (0xc0000000>>6) /* Transaction Size */
++#define ECC_CAPT_ATTR_TSIZ (0xc0000000>>6) /* Transaction Size */
+ #define ECC_CAPT_ATTR_TSIZ_FOUR_DW 0
+ #define ECC_CAPT_ATTR_TSIZ_ONE_DW 1
+ #define ECC_CAPT_ATTR_TSIZ_TWO_DW 2
+@@ -738,209 +1081,207 @@ typedef struct ddr8349{
+ #define ECC_CAPT_ATTR_TTYP_R_M_W 0x3
+ #define ECC_CAPT_ATTR_TTYP_SHIFT 12
+ #define ECC_CAPT_ATTR_VLD (0x80000000>>31) /* Valid */
+- u32 capture_address; /**< Memory Error Address Capture */
++ u32 capture_address; /**< Memory Error Address Capture */
+ u32 capture_ext_address;/**< Memory Error Extended Address Capture */
+- u32 err_sbe; /**< Memory Single-Bit ECC Error Management */
+-#define ECC_ERROR_MAN_SBET (0xff000000>>8) /* Single-Bit Error Threshold 0..255*/
++ u32 err_sbe; /**< Memory Single-Bit ECC Error Management */
++#define ECC_ERROR_MAN_SBET (0xff000000>>8) /* Single-Bit Error Threshold 0..255 */
+ #define ECC_ERROR_MAN_SBET_SHIFT 16
+-#define ECC_ERROR_MAN_SBEC (0xff000000>>24) /* Single Bit Error Counter 0..255*/
++#define ECC_ERROR_MAN_SBEC (0xff000000>>24) /* Single Bit Error Counter 0..255 */
+ #define ECC_ERROR_MAN_SBEC_SHIFT 0
+ u8 res7[0xA4];
+ u32 debug_reg;
+ u8 res8[0xFC];
+-} ddr8349_t;
++} ddr83xx_t;
+
+ /*
+ * I2C1 Controller
+ */
+
+-
+ /*
+ * DUART
+ */
+-typedef struct duart8349{
++typedef struct duart83xx {
+ u8 urbr_ulcr_udlb; /**< combined register for URBR, UTHR and UDLB */
+- u8 uier_udmb; /**< combined register for UIER and UDMB */
++ u8 uier_udmb; /**< combined register for UIER and UDMB */
+ u8 uiir_ufcr_uafr; /**< combined register for UIIR, UFCR and UAFR */
+- u8 ulcr; /**< line control register */
+- u8 umcr; /**< MODEM control register */
+- u8 ulsr; /**< line status register */
+- u8 umsr; /**< MODEM status register */
+- u8 uscr; /**< scratch register */
++ u8 ulcr; /**< line control register */
++ u8 umcr; /**< MODEM control register */
++ u8 ulsr; /**< line status register */
++ u8 umsr; /**< MODEM status register */
++ u8 uscr; /**< scratch register */
+ u8 res0[8];
+- u8 udsr; /**< DMA status register */
++ u8 udsr; /**< DMA status register */
+ u8 res1[3];
+ u8 res2[0xEC];
+-} duart8349_t;
++} duart83xx_t;
+
+ /*
+ * Local Bus Controller Registers
+ */
+-typedef struct lbus_bank{
+- u32 br; /**< Base Register */
+- u32 or; /**< Base Register */
++typedef struct lbus_bank {
++ u32 br; /**< Base Register */
++ u32 or; /**< Base Register */
+ } lbus_bank_t;
+
+-typedef struct lbus8349 {
++typedef struct lbus83xx {
+ lbus_bank_t bank[8];
+ u8 res0[0x28];
+- u32 mar; /**< UPM Address Register */
++ u32 mar; /**< UPM Address Register */
+ u8 res1[0x4];
+- u32 mamr; /**< UPMA Mode Register */
+- u32 mbmr; /**< UPMB Mode Register */
+- u32 mcmr; /**< UPMC Mode Register */
++ 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 */
++ u32 mrtpr; /**< Memory Refresh Timer Prescaler Register */
++ u32 mdr; /**< UPM Data Register */
+ u8 res3[0x8];
+- u32 lsdmr; /**< SDRAM Mode Register */
++ u32 lsdmr; /**< SDRAM Mode Register */
+ u8 res4[0x8];
+- u32 lurt; /**< UPM Refresh Timer */
+- u32 lsrt; /**< SDRAM Refresh Timer */
++ u32 lurt; /**< UPM Refresh Timer */
++ u32 lsrt; /**< SDRAM Refresh Timer */
+ u8 res5[0x8];
+- u32 ltesr; /**< Transfer Error Status Register */
+- u32 ltedr; /**< Transfer Error Disable Register */
+- u32 lteir; /**< Transfer Error Interrupt Register */
+- u32 lteatr; /**< Transfer Error Attributes Register */
+- u32 ltear; /**< Transfer Error Address Register */
++ u32 ltesr; /**< Transfer Error Status Register */
++ 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 */
++ u32 lbcr; /**< Configuration Register */
+ #define LBCR_LDIS 0x80000000
+-#define LBCR_LDIS_SHIFT 31
++#define LBCR_LDIS_SHIFT 31
+ #define LBCR_BCTLC 0x00C00000
+ #define LBCR_BCTLC_SHIFT 22
+ #define LBCR_LPBSE 0x00020000
+ #define LBCR_LPBSE_SHIFT 17
+ #define LBCR_EPAR 0x00010000
+-#define LBCR_EPAR_SHIFT 16
++#define LBCR_EPAR_SHIFT 16
+ #define LBCR_BMT 0x0000FF00
+-#define LBCR_BMT_SHIFT 8
+- u32 lcrr; /**< Clock Ratio Register */
++#define LBCR_BMT_SHIFT 8
++ u32 lcrr; /**< Clock Ratio Register */
+ #define LCRR_DBYP 0x80000000
+-#define LCRR_DBYP_SHIFT 31
++#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_ECL_SHIFT 24
+ #define LCRR_EADC 0x00030000
+-#define LCRR_EADC_SHIFT 16
++#define LCRR_EADC_SHIFT 16
+ #define LCRR_CLKDIV 0x0000000F
+ #define LCRR_CLKDIV_SHIFT 0
+
+-
+ u8 res7[0x28];
+ u8 res8[0xF00];
+-} lbus8349_t;
++} lbus83xx_t;
+
++#if defined (CONFIG_MPC8349)
+ /*
+ * Serial Peripheral Interface
+ */
+-typedef struct spi8349
+-{
++typedef struct spi83xx {
+ u32 mode; /**< mode register */
+ u32 event; /**< event register */
+ u32 mask; /**< mask register */
+ u32 com; /**< command register */
+ u8 res0[0x10];
+- u32 tx; /**< transmit register */
+- u32 rx; /**< receive register */
++ u32 tx; /**< transmit register */
++ u32 rx; /**< receive register */
+ u8 res1[0xD8];
+-} spi8349_t;
+-
++} spi83xx_t;
++#endif
+
+ /*
+ * DMA/Messaging Unit
+ */
+-typedef struct dma8349 {
+- u32 res0[0xC]; /* 0x0-0x29 reseverd */
+- u32 omisr; /* 0x30 Outbound message interrupt status register */
+- u32 omimr; /* 0x34 Outbound message interrupt mask register */
+- u32 res1[0x6]; /* 0x38-0x49 reserved */
+-
+- u32 imr0; /* 0x50 Inbound message register 0 */
+- u32 imr1; /* 0x54 Inbound message register 1 */
+- u32 omr0; /* 0x58 Outbound message register 0 */
+- u32 omr1; /* 0x5C Outbound message register 1 */
+-
+- u32 odr; /* 0x60 Outbound doorbell register */
+- u32 res2; /* 0x64-0x67 reserved */
+- u32 idr; /* 0x68 Inbound doorbell register */
+- u32 res3[0x5]; /* 0x6C-0x79 reserved */
+-
+- u32 imisr; /* 0x80 Inbound message interrupt status register */
+- u32 imimr; /* 0x84 Inbound message interrupt mask register */
+- u32 res4[0x1E]; /* 0x88-0x99 reserved */
+-
+- u32 dmamr0; /* 0x100 DMA 0 mode register */
+- u32 dmasr0; /* 0x104 DMA 0 status register */
+- u32 dmacdar0; /* 0x108 DMA 0 current descriptor address register */
+- u32 res5; /* 0x10C reserved */
+- u32 dmasar0; /* 0x110 DMA 0 source address register */
+- u32 res6; /* 0x114 reserved */
+- u32 dmadar0; /* 0x118 DMA 0 destination address register */
+- u32 res7; /* 0x11C reserved */
+- u32 dmabcr0; /* 0x120 DMA 0 byte count register */
+- u32 dmandar0; /* 0x124 DMA 0 next descriptor address register */
+- u32 res8[0x16]; /* 0x128-0x179 reserved */
+-
+- u32 dmamr1; /* 0x180 DMA 1 mode register */
+- u32 dmasr1; /* 0x184 DMA 1 status register */
+- u32 dmacdar1; /* 0x188 DMA 1 current descriptor address register */
+- u32 res9; /* 0x18C reserved */
+- u32 dmasar1; /* 0x190 DMA 1 source address register */
+- u32 res10; /* 0x194 reserved */
+- u32 dmadar1; /* 0x198 DMA 1 destination address register */
+- u32 res11; /* 0x19C reserved */
+- u32 dmabcr1; /* 0x1A0 DMA 1 byte count register */
+- u32 dmandar1; /* 0x1A4 DMA 1 next descriptor address register */
+- u32 res12[0x16];/* 0x1A8-0x199 reserved */
+-
+- u32 dmamr2; /* 0x200 DMA 2 mode register */
+- u32 dmasr2; /* 0x204 DMA 2 status register */
+- u32 dmacdar2; /* 0x208 DMA 2 current descriptor address register */
+- u32 res13; /* 0x20C reserved */
+- u32 dmasar2; /* 0x210 DMA 2 source address register */
+- u32 res14; /* 0x214 reserved */
+- u32 dmadar2; /* 0x218 DMA 2 destination address register */
+- u32 res15; /* 0x21C reserved */
+- u32 dmabcr2; /* 0x220 DMA 2 byte count register */
+- u32 dmandar2; /* 0x224 DMA 2 next descriptor address register */
+- u32 res16[0x16];/* 0x228-0x279 reserved */
+-
+- u32 dmamr3; /* 0x280 DMA 3 mode register */
+- u32 dmasr3; /* 0x284 DMA 3 status register */
+- u32 dmacdar3; /* 0x288 DMA 3 current descriptor address register */
+- u32 res17; /* 0x28C reserved */
+- u32 dmasar3; /* 0x290 DMA 3 source address register */
+- u32 res18; /* 0x294 reserved */
+- u32 dmadar3; /* 0x298 DMA 3 destination address register */
+- u32 res19; /* 0x29C reserved */
+- u32 dmabcr3; /* 0x2A0 DMA 3 byte count register */
+- u32 dmandar3; /* 0x2A4 DMA 3 next descriptor address register */
+-
+- u32 dmagsr; /* 0x2A8 DMA general status register */
+- u32 res20[0x15];/* 0x2AC-0x2FF reserved */
+-} dma8349_t;
++typedef struct dma83xx {
++ u32 res0[0xC]; /* 0x0-0x29 reseverd */
++ u32 omisr; /* 0x30 Outbound message interrupt status register */
++ u32 omimr; /* 0x34 Outbound message interrupt mask register */
++ u32 res1[0x6]; /* 0x38-0x49 reserved */
++
++ u32 imr0; /* 0x50 Inbound message register 0 */
++ u32 imr1; /* 0x54 Inbound message register 1 */
++ u32 omr0; /* 0x58 Outbound message register 0 */
++ u32 omr1; /* 0x5C Outbound message register 1 */
++
++ u32 odr; /* 0x60 Outbound doorbell register */
++ u32 res2; /* 0x64-0x67 reserved */
++ u32 idr; /* 0x68 Inbound doorbell register */
++ u32 res3[0x5]; /* 0x6C-0x79 reserved */
++
++ u32 imisr; /* 0x80 Inbound message interrupt status register */
++ u32 imimr; /* 0x84 Inbound message interrupt mask register */
++ u32 res4[0x1E]; /* 0x88-0x99 reserved */
++
++ u32 dmamr0; /* 0x100 DMA 0 mode register */
++ u32 dmasr0; /* 0x104 DMA 0 status register */
++ u32 dmacdar0; /* 0x108 DMA 0 current descriptor address register */
++ u32 res5; /* 0x10C reserved */
++ u32 dmasar0; /* 0x110 DMA 0 source address register */
++ u32 res6; /* 0x114 reserved */
++ u32 dmadar0; /* 0x118 DMA 0 destination address register */
++ u32 res7; /* 0x11C reserved */
++ u32 dmabcr0; /* 0x120 DMA 0 byte count register */
++ u32 dmandar0; /* 0x124 DMA 0 next descriptor address register */
++ u32 res8[0x16]; /* 0x128-0x179 reserved */
++
++ u32 dmamr1; /* 0x180 DMA 1 mode register */
++ u32 dmasr1; /* 0x184 DMA 1 status register */
++ u32 dmacdar1; /* 0x188 DMA 1 current descriptor address register */
++ u32 res9; /* 0x18C reserved */
++ u32 dmasar1; /* 0x190 DMA 1 source address register */
++ u32 res10; /* 0x194 reserved */
++ u32 dmadar1; /* 0x198 DMA 1 destination address register */
++ u32 res11; /* 0x19C reserved */
++ u32 dmabcr1; /* 0x1A0 DMA 1 byte count register */
++ u32 dmandar1; /* 0x1A4 DMA 1 next descriptor address register */
++ u32 res12[0x16]; /* 0x1A8-0x199 reserved */
++
++ u32 dmamr2; /* 0x200 DMA 2 mode register */
++ u32 dmasr2; /* 0x204 DMA 2 status register */
++ u32 dmacdar2; /* 0x208 DMA 2 current descriptor address register */
++ u32 res13; /* 0x20C reserved */
++ u32 dmasar2; /* 0x210 DMA 2 source address register */
++ u32 res14; /* 0x214 reserved */
++ u32 dmadar2; /* 0x218 DMA 2 destination address register */
++ u32 res15; /* 0x21C reserved */
++ u32 dmabcr2; /* 0x220 DMA 2 byte count register */
++ u32 dmandar2; /* 0x224 DMA 2 next descriptor address register */
++ u32 res16[0x16]; /* 0x228-0x279 reserved */
++
++ u32 dmamr3; /* 0x280 DMA 3 mode register */
++ u32 dmasr3; /* 0x284 DMA 3 status register */
++ u32 dmacdar3; /* 0x288 DMA 3 current descriptor address register */
++ u32 res17; /* 0x28C reserved */
++ u32 dmasar3; /* 0x290 DMA 3 source address register */
++ u32 res18; /* 0x294 reserved */
++ u32 dmadar3; /* 0x298 DMA 3 destination address register */
++ u32 res19; /* 0x29C reserved */
++ u32 dmabcr3; /* 0x2A0 DMA 3 byte count register */
++ u32 dmandar3; /* 0x2A4 DMA 3 next descriptor address register */
++
++ u32 dmagsr; /* 0x2A8 DMA general status register */
++ u32 res20[0x15]; /* 0x2AC-0x2FF reserved */
++} dma83xx_t;
+
+ /* DMAMRn bits */
+-#define DMA_CHANNEL_START (0x00000001) /* Bit - DMAMRn CS */
+-#define DMA_CHANNEL_TRANSFER_MODE_DIRECT (0x00000004) /* Bit - DMAMRn CTM */
+-#define DMA_CHANNEL_SOURCE_ADRESSS_HOLD_EN (0x00001000) /* Bit - DMAMRn SAHE */
+-#define DMA_CHANNEL_SOURCE_ADDRESS_HOLD_1B (0x00000000) /* 2Bit- DMAMRn SAHTS 1byte */
+-#define DMA_CHANNEL_SOURCE_ADDRESS_HOLD_2B (0x00004000) /* 2Bit- DMAMRn SAHTS 2bytes */
+-#define DMA_CHANNEL_SOURCE_ADDRESS_HOLD_4B (0x00008000) /* 2Bit- DMAMRn SAHTS 4bytes */
+-#define DMA_CHANNEL_SOURCE_ADDRESS_HOLD_8B (0x0000c000) /* 2Bit- DMAMRn SAHTS 8bytes */
+-#define DMA_CHANNEL_SNOOP (0x00010000) /* Bit - DMAMRn DMSEN */
++#define DMA_CHANNEL_START (0x00000001) /* Bit - DMAMRn CS */
++#define DMA_CHANNEL_TRANSFER_MODE_DIRECT (0x00000004) /* Bit - DMAMRn CTM */
++#define DMA_CHANNEL_SOURCE_ADRESSS_HOLD_EN (0x00001000) /* Bit - DMAMRn SAHE */
++#define DMA_CHANNEL_SOURCE_ADDRESS_HOLD_1B (0x00000000) /* 2Bit- DMAMRn SAHTS 1byte */
++#define DMA_CHANNEL_SOURCE_ADDRESS_HOLD_2B (0x00004000) /* 2Bit- DMAMRn SAHTS 2bytes */
++#define DMA_CHANNEL_SOURCE_ADDRESS_HOLD_4B (0x00008000) /* 2Bit- DMAMRn SAHTS 4bytes */
++#define DMA_CHANNEL_SOURCE_ADDRESS_HOLD_8B (0x0000c000) /* 2Bit- DMAMRn SAHTS 8bytes */
++#define DMA_CHANNEL_SNOOP (0x00010000) /* Bit - DMAMRn DMSEN */
+
+ /* DMASRn bits */
+-#define DMA_CHANNEL_BUSY (0x00000004) /* Bit - DMASRn CB */
+-#define DMA_CHANNEL_TRANSFER_ERROR (0x00000080) /* Bit - DMASRn TE */
++#define DMA_CHANNEL_BUSY (0x00000004) /* Bit - DMASRn CB */
++#define DMA_CHANNEL_TRANSFER_ERROR (0x00000080) /* Bit - DMASRn TE */
+
+ /*
+ * PCI Software Configuration Registers
+ */
+-typedef struct pciconf8349 {
+- u32 config_address;
++typedef struct pciconf83xx {
++ u32 config_address;
+ #define PCI_CONFIG_ADDRESS_EN 0x80000000
+ #define PCI_CONFIG_ADDRESS_BN_SHIFT 16
+ #define PCI_CONFIG_ADDRESS_BN_MASK 0x00ff0000
+@@ -952,235 +1293,788 @@ typedef struct pciconf8349 {
+ #define PCI_CONFIG_ADDRESS_RN_MASK 0x000000fc
+ u32 config_data;
+ u32 int_ack;
+- u8 res[116];
+-} pciconf8349_t;
++ u8 res[116];
++} pciconf83xx_t;
+
+ /*
+ * PCI Outbound Translation Register
+ */
+ typedef struct pci_outbound_window {
+- u32 potar;
+- u8 res0[4];
+- u32 pobar;
+- u8 res1[4];
+- u32 pocmr;
+- u8 res2[4];
+-} pot8349_t;
++ u32 potar;
++ u8 res0[4];
++ u32 pobar;
++ u8 res1[4];
++ u32 pocmr;
++ u8 res2[4];
++} pot83xx_t;
++
+ /*
+ * Sequencer
+ */
+-typedef struct ios8349 {
+- pot8349_t pot[6];
++typedef struct ios83xx {
++ pot83xx_t pot[6];
+ #define POTAR_TA_MASK 0x000fffff
+-#define POBAR_BA_MASK 0x000fffff
+-#define POCMR_EN 0x80000000
+-#define POCMR_IO 0x40000000 /* 0--memory space 1--I/O space */
+-#define POCMR_SE 0x20000000 /* streaming enable */
+-#define POCMR_DST 0x10000000 /* 0--PCI1 1--PCI2*/
+-#define POCMR_CM_MASK 0x000fffff
+-#define POCMR_CM_4G 0x00000000
+-#define POCMR_CM_2G 0x00080000
+-#define POCMR_CM_1G 0x000C0000
+-#define POCMR_CM_512M 0x000E0000
+-#define POCMR_CM_256M 0x000F0000
+-#define POCMR_CM_128M 0x000F8000
+-#define POCMR_CM_64M 0x000FC000
+-#define POCMR_CM_32M 0x000FE000
+-#define POCMR_CM_16M 0x000FF000
+-#define POCMR_CM_8M 0x000FF800
+-#define POCMR_CM_4M 0x000FFC00
+-#define POCMR_CM_2M 0x000FFE00
+-#define POCMR_CM_1M 0x000FFF00
+-#define POCMR_CM_512K 0x000FFF80
+-#define POCMR_CM_256K 0x000FFFC0
+-#define POCMR_CM_128K 0x000FFFE0
+-#define POCMR_CM_64K 0x000FFFF0
+-#define POCMR_CM_32K 0x000FFFF8
+-#define POCMR_CM_16K 0x000FFFFC
+-#define POCMR_CM_8K 0x000FFFFE
+-#define POCMR_CM_4K 0x000FFFFF
+- u8 res0[0x60];
+- u32 pmcr;
+- u8 res1[4];
+- u32 dtcr;
+- u8 res2[4];
+-} ios8349_t;
++#define POBAR_BA_MASK 0x000fffff
++#define POCMR_EN 0x80000000
++#define POCMR_IO 0x40000000 /* 0--memory space 1--I/O space */
++#define POCMR_SE 0x20000000 /* streaming enable */
++#define POCMR_DST 0x10000000 /* 0--PCI1 1--PCI2 */
++#define POCMR_CM_MASK 0x000fffff
++#define POCMR_CM_4G 0x00000000
++#define POCMR_CM_2G 0x00080000
++#define POCMR_CM_1G 0x000C0000
++#define POCMR_CM_512M 0x000E0000
++#define POCMR_CM_256M 0x000F0000
++#define POCMR_CM_128M 0x000F8000
++#define POCMR_CM_64M 0x000FC000
++#define POCMR_CM_32M 0x000FE000
++#define POCMR_CM_16M 0x000FF000
++#define POCMR_CM_8M 0x000FF800
++#define POCMR_CM_4M 0x000FFC00
++#define POCMR_CM_2M 0x000FFE00
++#define POCMR_CM_1M 0x000FFF00
++#define POCMR_CM_512K 0x000FFF80
++#define POCMR_CM_256K 0x000FFFC0
++#define POCMR_CM_128K 0x000FFFE0
++#define POCMR_CM_64K 0x000FFFF0
++#define POCMR_CM_32K 0x000FFFF8
++#define POCMR_CM_16K 0x000FFFFC
++#define POCMR_CM_8K 0x000FFFFE
++#define POCMR_CM_4K 0x000FFFFF
++ u8 res0[0x60];
++ u32 pmcr;
++ u8 res1[4];
++ u32 dtcr;
++ u8 res2[4];
++} ios83xx_t;
+
+ /*
+ * PCI Controller Control and Status Registers
+ */
+-typedef struct pcictrl8349 {
+- u32 esr;
++typedef struct pcictrl83xx {
++ u32 esr;
+ #define ESR_MERR 0x80000000
+ #define ESR_APAR 0x00000400
+-#define ESR_PCISERR 0x00000200
+-#define ESR_MPERR 0x00000100
+-#define ESR_TPERR 0x00000080
+-#define ESR_NORSP 0x00000040
+-#define ESR_TABT 0x00000020
+- u32 ecdr;
++#define ESR_PCISERR 0x00000200
++#define ESR_MPERR 0x00000100
++#define ESR_TPERR 0x00000080
++#define ESR_NORSP 0x00000040
++#define ESR_TABT 0x00000020
++ u32 ecdr;
+ #define ECDR_APAR 0x00000400
+-#define ECDR_PCISERR 0x00000200
+-#define ECDR_MPERR 0x00000100
+-#define ECDR_TPERR 0x00000080
+-#define ECDR_NORSP 0x00000040
+-#define ECDR_TABT 0x00000020
++#define ECDR_PCISERR 0x00000200
++#define ECDR_MPERR 0x00000100
++#define ECDR_TPERR 0x00000080
++#define ECDR_NORSP 0x00000040
++#define ECDR_TABT 0x00000020
+ u32 eer;
+ #define EER_APAR 0x00000400
+-#define EER_PCISERR 0x00000200
+-#define EER_MPERR 0x00000100
+-#define EER_TPERR 0x00000080
+-#define EER_NORSP 0x00000040
+-#define EER_TABT 0x00000020
+- u32 eatcr;
+-#define EATCR_ERRTYPR_MASK 0x70000000
+-#define EATCR_ERRTYPR_APR 0x00000000 /* address parity error */
+-#define EATCR_ERRTYPR_WDPR 0x10000000 /* write data parity error */
+-#define EATCR_ERRTYPR_RDPR 0x20000000 /* read data parity error */
+-#define EATCR_ERRTYPR_MA 0x30000000 /* master abort */
+-#define EATCR_ERRTYPR_TA 0x40000000 /* target abort */
+-#define EATCR_ERRTYPR_SE 0x50000000 /* system error indication received */
+-#define EATCR_ERRTYPR_PEA 0x60000000 /* parity error indication received on a read */
+-#define EATCR_ERRTYPR_PEW 0x70000000 /* parity error indication received on a write */
++#define EER_PCISERR 0x00000200
++#define EER_MPERR 0x00000100
++#define EER_TPERR 0x00000080
++#define EER_NORSP 0x00000040
++#define EER_TABT 0x00000020
++ u32 eatcr;
++#define EATCR_ERRTYPR_MASK 0x70000000
++#define EATCR_ERRTYPR_APR 0x00000000 /* address parity error */
++#define EATCR_ERRTYPR_WDPR 0x10000000 /* write data parity error */
++#define EATCR_ERRTYPR_RDPR 0x20000000 /* read data parity error */
++#define EATCR_ERRTYPR_MA 0x30000000 /* master abort */
++#define EATCR_ERRTYPR_TA 0x40000000 /* target abort */
++#define EATCR_ERRTYPR_SE 0x50000000 /* system error indication received */
++#define EATCR_ERRTYPR_PEA 0x60000000 /* parity error indication received on a read */
++#define EATCR_ERRTYPR_PEW 0x70000000 /* parity error indication received on a write */
+ #define EATCR_BN_MASK 0x0f000000 /* beat number */
+-#define EATCR_BN_1st 0x00000000
+-#define EATCR_BN_2ed 0x01000000
+-#define EATCR_BN_3rd 0x02000000
+-#define EATCR_BN_4th 0x03000000
+-#define EATCR_BN_5th 0x0400000
+-#define EATCR_BN_6th 0x05000000
+-#define EATCR_BN_7th 0x06000000
+-#define EATCR_BN_8th 0x07000000
+-#define EATCR_BN_9th 0x08000000
++#define EATCR_BN_1st 0x00000000
++#define EATCR_BN_2ed 0x01000000
++#define EATCR_BN_3rd 0x02000000
++#define EATCR_BN_4th 0x03000000
++#define EATCR_BN_5th 0x0400000
++#define EATCR_BN_6th 0x05000000
++#define EATCR_BN_7th 0x06000000
++#define EATCR_BN_8th 0x07000000
++#define EATCR_BN_9th 0x08000000
+ #define EATCR_TS_MASK 0x00300000 /* transaction size */
+-#define EATCR_TS_4 0x00000000
+-#define EATCR_TS_1 0x00100000
+-#define EATCR_TS_2 0x00200000
+-#define EATCR_TS_3 0x00300000
+-#define EATCR_ES_MASK 0x000f0000 /* error source */
+-#define EATCR_ES_EM 0x00000000 /* external master */
+-#define EATCR_ES_DMA 0x00050000
+-#define EATCR_CMD_MASK 0x0000f000
+-#define EATCR_HBE_MASK 0x00000f00 /* PCI high byte enable*/
+-#define EATCR_BE_MASK 0x000000f0 /* PCI byte enable */
+-#define EATCR_HPB 0x00000004 /* high parity bit */
+-#define EATCR_PB 0x00000002 /* parity bit*/
+-#define EATCR_VI 0x00000001 /* error information valid */
+- u32 eacr;
+- u32 eeacr;
+- u32 edlcr;
+- u32 edhcr;
+- u32 gcr;
+- u32 ecr;
+- u32 gsr;
+- u8 res0[12];
+- u32 pitar2;
+- u8 res1[4];
+- u32 pibar2;
+- u32 piebar2;
+- u32 piwar2;
+- u8 res2[4];
+- u32 pitar1;
+- u8 res3[4];
+- u32 pibar1;
+- u32 piebar1;
+- u32 piwar1;
+- u8 res4[4];
+- u32 pitar0;
+- u8 res5[4];
+- u32 pibar0;
+- u8 res6[4];
+- u32 piwar0;
+- u8 res7[132];
++#define EATCR_TS_4 0x00000000
++#define EATCR_TS_1 0x00100000
++#define EATCR_TS_2 0x00200000
++#define EATCR_TS_3 0x00300000
++#define EATCR_ES_MASK 0x000f0000 /* error source */
++#define EATCR_ES_EM 0x00000000 /* external master */
++#define EATCR_ES_DMA 0x00050000
++#define EATCR_CMD_MASK 0x0000f000
++#if defined (CONFIG_MPC8349)
++#define EATCR_HBE_MASK 0x00000f00 /* PCI high byte enable */
++#endif
++#define EATCR_BE_MASK 0x000000f0 /* PCI byte enable */
++#if defined (CONFIG_MPC8349)
++#define EATCR_HPB 0x00000004 /* high parity bit */
++#endif
++#define EATCR_PB 0x00000002 /* parity bit */
++#define EATCR_VI 0x00000001 /* error information valid */
++ u32 eacr;
++ u32 eeacr;
++#if defined (CONFIG_MPC8349)
++ u32 edlcr;
++ u32 edhcr;
++#elif defined (CONFIG_MPC8360)
++ u32 edcr; /* was edlcr */
++ u8 res_edcr[0x4];
++#endif
++ u32 gcr;
++ u32 ecr;
++ u32 gsr;
++ u8 res0[12];
++ u32 pitar2;
++ u8 res1[4];
++ u32 pibar2;
++ u32 piebar2;
++ u32 piwar2;
++ u8 res2[4];
++ u32 pitar1;
++ u8 res3[4];
++ u32 pibar1;
++ u32 piebar1;
++ u32 piwar1;
++ u8 res4[4];
++ u32 pitar0;
++ u8 res5[4];
++ u32 pibar0;
++ u8 res6[4];
++ u32 piwar0;
++ u8 res7[132];
+ #define PITAR_TA_MASK 0x000fffff
+ #define PIBAR_MASK 0xffffffff
+ #define PIEBAR_EBA_MASK 0x000fffff
+ #define PIWAR_EN 0x80000000
+ #define PIWAR_PF 0x20000000
+-#define PIWAR_RTT_MASK 0x000f0000
+-#define PIWAR_RTT_NO_SNOOP 0x00040000
++#define PIWAR_RTT_MASK 0x000f0000
++#define PIWAR_RTT_NO_SNOOP 0x00040000
+ #define PIWAR_RTT_SNOOP 0x00050000
+-#define PIWAR_WTT_MASK 0x0000f000
+-#define PIWAR_WTT_NO_SNOOP 0x00004000
++#define PIWAR_WTT_MASK 0x0000f000
++#define PIWAR_WTT_NO_SNOOP 0x00004000
+ #define PIWAR_WTT_SNOOP 0x00005000
+-#define PIWAR_IWS_MASK 0x0000003F
+-#define PIWAR_IWS_4K 0x0000000B
+-#define PIWAR_IWS_8K 0x0000000C
+-#define PIWAR_IWS_16K 0x0000000D
+-#define PIWAR_IWS_32K 0x0000000E
+-#define PIWAR_IWS_64K 0x0000000F
+-#define PIWAR_IWS_128K 0x00000010
+-#define PIWAR_IWS_256K 0x00000011
+-#define PIWAR_IWS_512K 0x00000012
+-#define PIWAR_IWS_1M 0x00000013
+-#define PIWAR_IWS_2M 0x00000014
+-#define PIWAR_IWS_4M 0x00000015
+-#define PIWAR_IWS_8M 0x00000016
+-#define PIWAR_IWS_16M 0x00000017
+-#define PIWAR_IWS_32M 0x00000018
+-#define PIWAR_IWS_64M 0x00000019
+-#define PIWAR_IWS_128M 0x0000001A
+-#define PIWAR_IWS_256M 0x0000001B
+-#define PIWAR_IWS_512M 0x0000001C
+-#define PIWAR_IWS_1G 0x0000001D
+-#define PIWAR_IWS_2G 0x0000001E
+-} pcictrl8349_t;
++#define PIWAR_IWS_MASK 0x0000003F
++#define PIWAR_IWS_4K 0x0000000B
++#define PIWAR_IWS_8K 0x0000000C
++#define PIWAR_IWS_16K 0x0000000D
++#define PIWAR_IWS_32K 0x0000000E
++#define PIWAR_IWS_64K 0x0000000F
++#define PIWAR_IWS_128K 0x00000010
++#define PIWAR_IWS_256K 0x00000011
++#define PIWAR_IWS_512K 0x00000012
++#define PIWAR_IWS_1M 0x00000013
++#define PIWAR_IWS_2M 0x00000014
++#define PIWAR_IWS_4M 0x00000015
++#define PIWAR_IWS_8M 0x00000016
++#define PIWAR_IWS_16M 0x00000017
++#define PIWAR_IWS_32M 0x00000018
++#define PIWAR_IWS_64M 0x00000019
++#define PIWAR_IWS_128M 0x0000001A
++#define PIWAR_IWS_256M 0x0000001B
++#define PIWAR_IWS_512M 0x0000001C
++#define PIWAR_IWS_1G 0x0000001D
++#define PIWAR_IWS_2G 0x0000001E
++} pcictrl83xx_t;
+
++#if defined (CONFIG_MPC8349)
+ /*
+ * USB
+ */
+-typedef struct usb8349 {
++typedef struct usb83xx {
+ u8 fixme[0x2000];
+-} usb8349_t;
++} usb83xx_t;
+
+ /*
+ * TSEC
+ */
+-typedef struct tsec8349 {
++typedef struct tsec83xx {
+ u8 fixme[0x1000];
+-} tsec8349_t;
++} tsec83xx_t;
++#endif
+
+ /*
+ * Security
+ */
+-typedef struct security8349 {
++typedef struct security83xx {
+ u8 fixme[0x10000];
+-} security8349_t;
++} security83xx_t;
++
++#if defined (CONFIG_MPC8360)
++/*
++ * iram
++ */
++typedef struct iram83xx {
++ u32 iadd; /* I-RAM address register */
++ u32 idata; /* I-RAM data register */
++ u8 res0[0x78];
++} iram83xx_t;
++
++/*
++ * Interrupt Controller
++ */
++typedef struct irq83xx {
++ u32 cicr; /* QE system interrupt configuration */
++ u32 civec; /* QE system interrupt vector register */
++ u32 cripnr; /* QE RISC interrupt pending register */
++ u32 cipnr; /* QE system interrupt pending register */
++ u32 cipxcc; /* QE interrupt priority register */
++ u32 cipycc; /* QE interrupt priority register */
++ u32 cipwcc; /* QE interrupt priority register */
++ u32 cipzcc; /* QE interrupt priority register */
++ u32 cimr; /* QE system interrupt mask register */
++ u32 crimr; /* QE RISC interrupt mask register */
++ u32 cicnr; /* QE system interrupt control register */
++ u8 res0[0x4];
++ u32 ciprta; /* QE system interrupt priority register for RISC tasks A */
++ u32 ciprtb; /* QE system interrupt priority register for RISC tasks B */
++ u8 res1[0x4];
++ u32 cricr; /* QE system RISC interrupt control */
++ u8 res2[0x20];
++ u32 chivec; /* QE high system interrupt vector */
++ u8 res3[0x1C];
++} irq83xx_t;
++
++/*
++ * Communications Processor
++ */
++typedef struct cp83xx {
++ u32 cecr; /* QE command register */
++ u32 ceccr; /* QE controller configuration register */
++ u32 cecdr; /* QE command data register */
++ u8 res0[0xA];
++ u16 ceter; /* QE timer event register */
++ u8 res1[0x2];
++ u16 cetmr; /* QE timers mask register */
++ u32 cetscr; /* QE time-stamp timer control register */
++ u32 cetsr1; /* QE time-stamp register 1 */
++ u32 cetsr2; /* QE time-stamp register 2 */
++ u8 res2[0x8];
++ u32 cevter; /* QE virtual tasks event register */
++ u32 cevtmr; /* QE virtual tasks mask register */
++ u16 cercr; /* QE RAM control register */
++ u8 res3[0x2];
++ u8 res4[0x24];
++ u16 ceexe1; /* QE external request 1 event register */
++ u8 res5[0x2];
++ u16 ceexm1; /* QE external request 1 mask register */
++ u8 res6[0x2];
++ u16 ceexe2; /* QE external request 2 event register */
++ u8 res7[0x2];
++ u16 ceexm2; /* QE external request 2 mask register */
++ u8 res8[0x2];
++ u16 ceexe3; /* QE external request 3 event register */
++ u8 res9[0x2];
++ u16 ceexm3; /* QE external request 3 mask register */
++ u8 res10[0x2];
++ u16 ceexe4; /* QE external request 4 event register */
++ u8 res11[0x2];
++ u16 ceexm4; /* QE external request 4 mask register */
++ u8 res12[0x2];
++ u8 res13[0x280];
++} cp83xx_t;
++
++/*
++ * QE Multiplexer
++ */
++
++typedef struct qmx83xx {
++ u32 cmxgcr; /* CMX general clock route register */
++ u32 cmxsi1cr_l; /* CMX SI1 clock route low register */
++ u32 cmxsi1cr_h; /* CMX SI1 clock route high register */
++ u32 cmxsi1syr; /* CMX SI1 SYNC route register */
++ u32 cmxucr1; /* CMX UCC1, UCC3 clock route register */
++ u32 cmxucr2; /* CMX UCC5, UCC7 clock route register */
++ u32 cmxucr3; /* CMX UCC2, UCC4 clock route register */
++ u32 cmxucr4; /* CMX UCC6, UCC8 clock route register */
++ u32 cmxupcr; /* CMX UPC clock route register */
++ u8 res0[0x1C];
++} qmx83xx_t;
++
++/*
++* QE Timers
++*/
++
++typedef struct qet83xx {
++ u8 gtcfr1; /* Timer 1 and Timer 2 global configuration register */
++ u8 res0[0x3];
++ u8 gtcfr2; /* Timer 3 and timer 4 global configuration register */
++ u8 res1[0xB];
++ u16 gtmdr1; /* Timer 1 mode register */
++ u16 gtmdr2; /* Timer 2 mode register */
++ u16 gtrfr1; /* Timer 1 reference register */
++ u16 gtrfr2; /* Timer 2 reference register */
++ u16 gtcpr1; /* Timer 1 capture register */
++ u16 gtcpr2; /* Timer 2 capture register */
++ u16 gtcnr1; /* Timer 1 counter */
++ u16 gtcnr2; /* Timer 2 counter */
++ u16 gtmdr3; /* Timer 3 mode register */
++ u16 gtmdr4; /* Timer 4 mode register */
++ u16 gtrfr3; /* Timer 3 reference register */
++ u16 gtrfr4; /* Timer 4 reference register */
++ u16 gtcpr3; /* Timer 3 capture register */
++ u16 gtcpr4; /* Timer 4 capture register */
++ u16 gtcnr3; /* Timer 3 counter */
++ u16 gtcnr4; /* Timer 4 counter */
++ u16 gtevr1; /* Timer 1 event register */
++ u16 gtevr2; /* Timer 2 event register */
++ u16 gtevr3; /* Timer 3 event register */
++ u16 gtevr4; /* Timer 4 event register */
++ u16 gtps; /* Timer 1 prescale register */
++ u8 res2[0x46];
++} qet83xx_t;
++
++/*
++* spi
++*/
++
++typedef struct spi83xx {
++ u8 res0[0x20];
++ u32 spmode; /* SPI mode register */
++ u8 res1[0x2];
++ u8 spie; /* SPI event register */
++ u8 res2[0x1];
++ u8 res3[0x2];
++ u8 spim; /* SPI mask register */
++ u8 res4[0x1];
++ u8 res5[0x1];
++ u8 spcom; /* SPI command register */
++ u8 res6[0x2];
++ u32 spitd; /* SPI transmit data register (cpu mode) */
++ u32 spird; /* SPI receive data register (cpu mode) */
++ u8 res7[0x8];
++} spi83xx_t;
++
++/*
++* mcc
++*/
++
++typedef struct mcc83xx {
++ u32 mcce; /* MCC event register */
++ u32 mccm; /* MCC mask register */
++ u32 mccf; /* MCC configuration register */
++ u32 merl; /* MCC emergency request level register */
++ u8 res0[0xF0];
++} mcc83xx_t;
++
++/*
++* brg
++*/
++
++typedef struct brg83xx {
++ u32 brgc1; /* BRG1 configuration register */
++ u32 brgc2; /* BRG2 configuration register */
++ u32 brgc3; /* BRG3 configuration register */
++ u32 brgc4; /* BRG4 configuration register */
++ u32 brgc5; /* BRG5 configuration register */
++ u32 brgc6; /* BRG6 configuration register */
++ u32 brgc7; /* BRG7 configuration register */
++ u32 brgc8; /* BRG8 configuration register */
++ u32 brgc9; /* BRG9 configuration register */
++ u32 brgc10; /* BRG10 configuration register */
++ u32 brgc11; /* BRG11 configuration register */
++ u32 brgc12; /* BRG12 configuration register */
++ u32 brgc13; /* BRG13 configuration register */
++ u32 brgc14; /* BRG14 configuration register */
++ u32 brgc15; /* BRG15 configuration register */
++ u32 brgc16; /* BRG16 configuration register */
++ u8 res0[0x40];
++} brg83xx_t;
++
++/*
++* USB
++*/
++
++typedef struct usb83xx {
++ u8 usmod; /* USB mode register */
++ u8 usadd; /* USB address register */
++ u8 uscom; /* USB command register */
++ u8 res0[0x1];
++ u16 usep0; /* USB endpoint register 0 */
++ u16 usep1; /* USB endpoint register 1 */
++ u16 usep2; /* USB endpoint register 2 */
++ u16 usep3; /* USB endpoint register 3 */
++ u8 res1[0x4];
++ u16 usber; /* USB event register */
++ u8 res2[0x2];
++ u16 usbmr; /* USB mask register */
++ u8 res3[0x1];
++ u8 usbs; /* USB status register */
++ u32 ussft; /* USB start of frame timer */
++ u8 res4[0x24];
++} usb83xx_t;
++
++/*
++* SI
++*/
++
++typedef struct si1_83xx {
++ u16 siamr1; /* SI1 TDMA mode register */
++ u16 sibmr1; /* SI1 TDMB mode register */
++ u16 sicmr1; /* SI1 TDMC mode register */
++ u16 sidmr1; /* SI1 TDMD mode register */
++ u8 siglmr1_h; /* SI1 global mode register high */
++ u8 res0[0x1];
++ u8 sicmdr1_h; /* SI1 command register high */
++ u8 res2[0x1];
++ u8 sistr1_h; /* SI1 status register high */
++ u8 res3[0x1];
++ u16 sirsr1_h; /* SI1 RAM shadow address register high */
++ u8 sitarc1; /* SI1 RAM counter Tx TDMA */
++ u8 sitbrc1; /* SI1 RAM counter Tx TDMB */
++ u8 sitcrc1; /* SI1 RAM counter Tx TDMC */
++ u8 sitdrc1; /* SI1 RAM counter Tx TDMD */
++ u8 sirarc1; /* SI1 RAM counter Rx TDMA */
++ u8 sirbrc1; /* SI1 RAM counter Rx TDMB */
++ u8 sircrc1; /* SI1 RAM counter Rx TDMC */
++ u8 sirdrc1; /* SI1 RAM counter Rx TDMD */
++ u8 res4[0x8];
++ u16 siemr1; /* SI1 TDME mode register 16 bits */
++ u16 sifmr1; /* SI1 TDMF mode register 16 bits */
++ u16 sigmr1; /* SI1 TDMG mode register 16 bits */
++ u16 sihmr1; /* SI1 TDMH mode register 16 bits */
++ u8 siglmg1_l; /* SI1 global mode register low 8 bits */
++ u8 res5[0x1];
++ u8 sicmdr1_l; /* SI1 command register low 8 bits */
++ u8 res6[0x1];
++ u8 sistr1_l; /* SI1 status register low 8 bits */
++ u8 res7[0x1];
++ u16 sirsr1_l; /* SI1 RAM shadow address register low 16 bits */
++ u8 siterc1; /* SI1 RAM counter Tx TDME 8 bits */
++ u8 sitfrc1; /* SI1 RAM counter Tx TDMF 8 bits */
++ u8 sitgrc1; /* SI1 RAM counter Tx TDMG 8 bits */
++ u8 sithrc1; /* SI1 RAM counter Tx TDMH 8 bits */
++ u8 sirerc1; /* SI1 RAM counter Rx TDME 8 bits */
++ u8 sirfrc1; /* SI1 RAM counter Rx TDMF 8 bits */
++ u8 sirgrc1; /* SI1 RAM counter Rx TDMG 8 bits */
++ u8 sirhrc1; /* SI1 RAM counter Rx TDMH 8 bits */
++ u8 res8[0x8];
++ u32 siml1; /* SI1 multiframe limit register */
++ u8 siedm1; /* SI1 extended diagnostic mode register */
++ u8 res9[0xBB];
++} si1_83xx_t;
++
++/*
++* SI Routing Tables
++*/
++
++typedef struct sir83xx {
++ u8 tx[0x400];
++ u8 rx[0x400];
++ u8 res0[0x800];
++} sir83xx_t;
++
++/*
++* ucc
++*/
++
++typedef struct uslow {
++ u32 gumr_l; /* UCCx general mode register (low) */
++ u32 gumr_h; /* UCCx general mode register (high) */
++ u16 upsmr; /* UCCx protocol-specific mode register */
++ u8 res0[0x2];
++ u16 utodr; /* UCCx transmit on demand register */
++ u16 udsr; /* UCCx data synchronization register */
++ u16 ucce; /* UCCx event register */
++ u8 res1[0x2];
++ u16 uccm; /* UCCx mask register */
++ u8 res2[0x1];
++ u8 uccs; /* UCCx status register */
++ u8 res3[0x1E8];
++} uslow_t;
++
++typedef struct ufast {
++ u32 gumr; /* UCCx general mode register */
++ u32 upsmr; /* UCCx protocol-specific mode register */
++ u16 utodr; /* UCCx transmit on demand register */
++ u8 res0[0x2];
++ u16 udsr; /* UCCx data synchronization register */
++ u8 res1[0x2];
++ u32 ucce; /* UCCx event register */
++ u32 uccm; /* UCCx mask register. */
++ u8 uccs; /* UCCx status register */
++ u8 res2[0x7];
++ u32 urfb; /* UCC receive FIFO base */
++ u16 urfs; /* UCC receive FIFO size */
++ u8 res3[0x2];
++ u16 urfet; /* UCC receive FIFO emergency threshold */
++ u16 urfset; /* UCC receive FIFO special emergency threshold */
++ u32 utfb; /* UCC transmit FIFO base */
++ u16 utfs; /* UCC transmit FIFO size */
++ u8 res4[0x2];
++ u16 utfet; /* UCC transmit FIFO emergency threshold */
++ u8 res5[0x2];
++ u16 utftt; /* UCC transmit FIFO transmit threshold */
++ u8 res6[0x2];
++ u16 utpt; /* UCC transmit polling timer */
++ u32 urtry; /* UCC retry counter register */
++ u8 res7[0x4C];
++ u8 guemr; /* UCC general extended mode register */
++ u8 res8[0x3];
++ u8 res9[0x6C];
++ u32 maccfg1; /* Mac configuration register #1 */
++ u32 maccfg2; /* Mac configuration register #2 */
++ u16 ipgifg; /* Interframe gap register */
++ u8 res10[0x2];
++ u32 hafdup; /* Half-duplex register */
++ u8 res11[0xC];
++ u32 emtr; /* Ethernet MAC test register */
++ u32 miimcfg; /* MII mgmt configuration register */
++ u32 miimcom; /* MII mgmt command register */
++ u32 miimadd; /* MII mgmt address register */
++ u32 miimcon; /* MII mgmt control register */
++ u32 miistat; /* MII mgmt status register */
++ u32 miimnd; /* MII mgmt indication register */
++ u32 ifctl; /* Interface control register */
++ u32 ifstat; /* Interface status register */
++ u32 macstnaddr1; /* Station address part 1 register */
++ u32 macstnaddr2; /* Station address part 2 register */
++ u8 res12[0x8];
++ u32 uempr; /* UCC Ethernet MAC parameter register */
++ u32 utbipa; /* UCC TBI address */
++ u16 uescr; /* UCC Ethernet statistics control register */
++ u8 res13[0x26];
++ u32 tx64; /* Transmit and receive 64-byte frame counter */
++ u32 tx127; /* Transmit and receive 65- to 127-byte frame counter */
++ u32 tx255; /* Transmit and receive 128- to 255-byte frame counter */
++ u32 rx64; /* Receive and receive 64-byte frame counter */
++ u32 rx127; /* Receive and receive 65- to 127-byte frame counter */
++ u32 rx255; /* Receive and receive 128- to 255-byte frame counter */
++ u32 txok; /* Transmit good bytes counter */
++ u32 txcf; /* Transmit control frame counter */
++ u32 tmca; /* Transmit multicast control frame counter */
++ u32 tbca; /* Transmit broadcast packet counter */
++ u32 rxfok; /* Receive frame OK counter */
++ u32 rbyt; /* Receive good and bad bytes counter */
++ u32 rxbok; /* Receive bytes OK counter */
++ u32 rmca; /* Receive multicast packet counter */
++ u32 rbca; /* Receive broadcast packet counter */
++ u32 scar; /* Statistics carry register */
++ u32 scam; /* Statistics carry mask register */
++ u8 res14[0x3C];
++} ufast_t;
++
++typedef struct ucc83xx {
++ union {
++ uslow_t slow;
++ ufast_t fast;
++ };
++} ucc83xx_t;
++
++/*
++* MultiPHY UTOPIA POS Controllers
++*/
++
++typedef struct upc83xx {
++ u32 upgcr; /* UTOPIA/POS general configuration register */
++#define UPGCR_PROTOCOL 0x80000000 /* protocol ul2 or pl2 */
++#define UPGCR_TMS 0x40000000 /* Transmit master/slave mode */
++#define UPGCR_RMS 0x20000000 /* Receive master/slave mode */
++#define UPGCR_ADDR 0x10000000 /* Master MPHY Addr multiplexing: */
++#define UPGCR_DIAG 0x01000000 /* Diagnostic mode */
++ u32 uplpa; /* UTOPIA/POS last PHY address */
++ u32 uphec; /* ATM HEC register */
++ u32 upuc; /* UTOPIA/POS UCC configuration */
++ u32 updc1; /* UTOPIA/POS device 1 configuration */
++ u32 updc2; /* UTOPIA/POS device 2 configuration */
++ u32 updc3; /* UTOPIA/POS device 3 configuration */
++ u32 updc4; /* UTOPIA/POS device 4 configuration */
++ u32 upstpa; /* UTOPIA/POS STPA threshold */
++ u8 res0[0xC];
++ u32 updrs1_h; /* UTOPIA/POS device 1 rate select */
++ u32 updrs1_l; /* UTOPIA/POS device 1 rate select */
++ u32 updrs2_h; /* UTOPIA/POS device 2 rate select */
++ u32 updrs2_l; /* UTOPIA/POS device 2 rate select */
++ u32 updrs3_h; /* UTOPIA/POS device 3 rate select */
++ u32 updrs3_l; /* UTOPIA/POS device 3 rate select */
++ u32 updrs4_h; /* UTOPIA/POS device 4 rate select */
++ u32 updrs4_l; /* UTOPIA/POS device 4 rate select */
++ u32 updrp1; /* UTOPIA/POS device 1 receive priority low */
++ u32 updrp2; /* UTOPIA/POS device 2 receive priority low */
++ u32 updrp3; /* UTOPIA/POS device 3 receive priority low */
++ u32 updrp4; /* UTOPIA/POS device 4 receive priority low */
++ u32 upde1; /* UTOPIA/POS device 1 event */
++ u32 upde2; /* UTOPIA/POS device 2 event */
++ u32 upde3; /* UTOPIA/POS device 3 event */
++ u32 upde4; /* UTOPIA/POS device 4 event */
++ u16 uprp1;
++ u16 uprp2;
++ u16 uprp3;
++ u16 uprp4;
++ u8 res1[0x8];
++ u16 uptirr1_0; /* Device 1 transmit internal rate 0 */
++ u16 uptirr1_1; /* Device 1 transmit internal rate 1 */
++ u16 uptirr1_2; /* Device 1 transmit internal rate 2 */
++ u16 uptirr1_3; /* Device 1 transmit internal rate 3 */
++ u16 uptirr2_0; /* Device 2 transmit internal rate 0 */
++ u16 uptirr2_1; /* Device 2 transmit internal rate 1 */
++ u16 uptirr2_2; /* Device 2 transmit internal rate 2 */
++ u16 uptirr2_3; /* Device 2 transmit internal rate 3 */
++ u16 uptirr3_0; /* Device 3 transmit internal rate 0 */
++ u16 uptirr3_1; /* Device 3 transmit internal rate 1 */
++ u16 uptirr3_2; /* Device 3 transmit internal rate 2 */
++ u16 uptirr3_3; /* Device 3 transmit internal rate 3 */
++ u16 uptirr4_0; /* Device 4 transmit internal rate 0 */
++ u16 uptirr4_1; /* Device 4 transmit internal rate 1 */
++ u16 uptirr4_2; /* Device 4 transmit internal rate 2 */
++ u16 uptirr4_3; /* Device 4 transmit internal rate 3 */
++ u32 uper1; /* Device 1 port enable register */
++ u32 uper2; /* Device 2 port enable register */
++ u32 uper3; /* Device 3 port enable register */
++ u32 uper4; /* Device 4 port enable register */
++ u8 res2[0x150];
++} upc83xx_t;
++
++/*
++* SDMA
++*/
++
++typedef struct sdma83xx {
++ u32 sdsr; /* Serial DMA status register */
++ u32 sdmr; /* Serial DMA mode register */
++ u32 sdtr1; /* SDMA system bus threshold register */
++ u32 sdtr2; /* SDMA secondary bus threshold register */
++ u32 sdhy1; /* SDMA system bus hysteresis register */
++ u32 sdhy2; /* SDMA secondary bus hysteresis register */
++ u32 sdta1; /* SDMA system bus address register */
++ u32 sdta2; /* SDMA secondary bus address register */
++ u32 sdtm1; /* SDMA system bus MSNUM register */
++ u32 sdtm2; /* SDMA secondary bus MSNUM register */
++ u8 res0[0x10];
++ u32 sdaqr; /* SDMA address bus qualify register */
++ u32 sdaqmr; /* SDMA address bus qualify mask register */
++ u8 res1[0x4];
++ u32 sdwbcr; /* SDMA CAM entries base register */
++ u8 res2[0x38];
++} sdma83xx_t;
++
++/*
++* Debug Space
++*/
++
++typedef struct dbg83xx {
++ u32 bpdcr; /* Breakpoint debug command register */
++ u32 bpdsr; /* Breakpoint debug status register */
++ u32 bpdmr; /* Breakpoint debug mask register */
++ u32 bprmrr0; /* Breakpoint request mode risc register 0 */
++ u32 bprmrr1; /* Breakpoint request mode risc register 1 */
++ u8 res0[0x8];
++ u32 bprmtr0; /* Breakpoint request mode trb register 0 */
++ u32 bprmtr1; /* Breakpoint request mode trb register 1 */
++ u8 res1[0x8];
++ u32 bprmir; /* Breakpoint request mode immediate register */
++ u32 bprmsr; /* Breakpoint request mode serial register */
++ u32 bpemr; /* Breakpoint exit mode register */
++ u8 res2[0x48];
++} dbg83xx_t;
++
++/*
++* RISC Special Registers (Trap and Breakpoint)
++*/
++
++typedef struct rsp83xx {
++ u8 fixme[0x100];
++} rsp83xx_t;
++#endif
+
+ typedef struct immap {
+- sysconf8349_t sysconf; /* System configuration */
+- wdt8349_t wdt; /* Watch Dog Timer (WDT) Registers */
+- rtclk8349_t rtc; /* Real Time Clock Module Registers */
+- rtclk8349_t pit; /* Periodic Interval Timer */
+- gtm8349_t gtm[2]; /* Global Timers Module */
+- ipic8349_t ipic; /* Integrated Programmable Interrupt Controller */
+- arbiter8349_t arbiter; /* System Arbiter Registers */
+- reset8349_t reset; /* Reset Module */
+- clk8349_t clk; /* System Clock Module */
+- pmc8349_t pmc; /* Power Management Control Module */
+- gpio8349_t pgio[2]; /* general purpose I/O module */
++ sysconf83xx_t sysconf; /* System configuration */
++ wdt83xx_t wdt; /* Watch Dog Timer (WDT) Registers */
++ rtclk83xx_t rtc; /* Real Time Clock Module Registers */
++ rtclk83xx_t pit; /* Periodic Interval Timer */
++ gtm83xx_t gtm[2]; /* Global Timers Module */
++ ipic83xx_t ipic; /* Integrated Programmable Interrupt Controller */
++ arbiter83xx_t arbiter; /* System Arbiter Registers */
++ reset83xx_t reset; /* Reset Module */
++ clk83xx_t clk; /* System Clock Module */
++ pmc83xx_t pmc; /* Power Management Control Module */
++#if defined (CONFIG_MPC8349)
++ gpio83xx_t pgio[2]; /* general purpose I/O module */
++#elif defined (CONFIG_MPC8360)
++ qepi83xx_t qepi; /* QE Ports Interrupts Registers */
++#endif
+ u8 res0[0x200];
++#if defined (CONFIG_MPC8360)
++ u8 DLL_LBDDR[0x100];
++#endif
+ u8 DDL_DDR[0x100];
+ u8 DDL_LBIU[0x100];
++#if defined (CONFIG_MPC8349)
+ u8 res1[0xE00];
+- ddr8349_t ddr; /* DDR Memory Controller Memory */
+- i2c_t i2c[2]; /* I2C1 Controller */
++#elif defined (CONFIG_MPC8360)
++ u8 res1[0x200];
++ gpio83xx_t gpio; /* General purpose I/O module */
++ qesba83xx_t qesba; /* QE Secondary Bus Access Windows */
++#endif
++ ddr83xx_t ddr; /* DDR Memory Controller Memory */
++ fsl_i2c_t i2c[2]; /* I2C Controllers */
+ u8 res2[0x1300];
+- duart8349_t duart[2];/* DUART */
++ duart83xx_t duart[2]; /* DUART */
++#if defined (CONFIG_MPC8349)
+ u8 res3[0x900];
+- lbus8349_t lbus; /* Local Bus Controller Registers */
++ lbus83xx_t lbus; /* Local Bus Controller Registers */
+ u8 res4[0x1000];
+- spi8349_t spi; /* Serial Peripheral Interface */
++ spi83xx_t spi; /* Serial Peripheral Interface */
+ u8 res5[0xF00];
+- dma8349_t dma; /* DMA */
+- pciconf8349_t pci_conf[2]; /* PCI Software Configuration Registers */
+- ios8349_t ios; /* Sequencer */
+- pcictrl8349_t pci_ctrl[2]; /* PCI Controller Control and Status Registers */
++#elif defined (CONFIG_MPC8360)
++ u8 res3[0x900];
++ lbus83xx_t lbus; /* Local Bus Controller */
++ u8 res4[0x2000];
++#endif
++ dma83xx_t dma; /* DMA */
++#if defined (CONFIG_MPC8349)
++ pciconf83xx_t pci_conf[2]; /* PCI Software Configuration Registers */
++ ios83xx_t ios; /* Sequencer */
++ pcictrl83xx_t pci_ctrl[2]; /* PCI Controller Control and Status Registers */
+ u8 res6[0x19900];
+- usb8349_t usb;
+- tsec8349_t tsec[2];
++ usb83xx_t usb;
++ tsec83xx_t tsec[2];
+ u8 res7[0xA000];
+- security8349_t security;
++ security83xx_t security;
++#elif defined (CONFIG_MPC8360)
++ pciconf83xx_t pci_conf[1]; /* PCI Software Configuration Registers */
++ u8 res_5[128];
++ ios83xx_t ios; /* Sequencer (IOS) */
++ pcictrl83xx_t pci_ctrl[1]; /* PCI Controller Control and Status Registers */
++ u8 res6[0x4A00];
++ ddr83xx_t ddr_secondary; /* Secondary DDR Memory Controller Memory Map */
++ u8 res7[0x22000];
++ security83xx_t security;
++ u8 res8[0xC0000];
++ iram83xx_t iram; /* IRAM */
++ irq83xx_t irq; /* Interrupt Controller */
++ cp83xx_t cp; /* Communications Processor */
++ qmx83xx_t qmx; /* QE Multiplexer */
++ qet83xx_t qet; /* QE Timers */
++ spi83xx_t spi[0x2]; /* spi */
++ mcc83xx_t mcc; /* mcc */
++ brg83xx_t brg; /* brg */
++ usb83xx_t usb; /* USB */
++ si1_83xx_t si1; /* SI */
++ u8 res9[0x800];
++ sir83xx_t sir; /* SI Routing Tables */
++ ucc83xx_t ucc1; /* ucc1 */
++ ucc83xx_t ucc3; /* ucc3 */
++ ucc83xx_t ucc5; /* ucc5 */
++ ucc83xx_t ucc7; /* ucc7 */
++ u8 res10[0x600];
++ upc83xx_t upc1; /* MultiPHY UTOPIA POS Controller 1 */
++ ucc83xx_t ucc2; /* ucc2 */
++ ucc83xx_t ucc4; /* ucc4 */
++ ucc83xx_t ucc6; /* ucc6 */
++ ucc83xx_t ucc8; /* ucc8 */
++ u8 res11[0x600];
++ upc83xx_t upc2; /* MultiPHY UTOPIA POS Controller 2 */
++ sdma83xx_t sdma; /* SDMA */
++ dbg83xx_t dbg; /* Debug Space */
++ rsp83xx_t rsp[0x2]; /* RISC Special Registers (Trap and Breakpoint) */
++ u8 res12[0x300];
++ u8 res13[0x3A00];
++ u8 res14[0x8000]; /* 0x108000 - 0x110000 */
++ u8 res15[0xC000]; /* 0x110000 - 0x11C000 Multi-user RAM */
++ u8 res16[0x24000]; /* 0x11C000 - 0x140000 */
++ u8 res17[0xC0000]; /* 0x140000 - 0x200000 */
++#endif
+ } immap_t;
+
+-#endif /* __IMMAP_8349__ */
++#endif /* __IMMAP_83xx__ */
+diff -Naupr u-boot-1.1.6/include/asm-ppc/immap_qe.h u-boot-1.1.6-fsl-1/include/asm-ppc/immap_qe.h
+--- u-boot-1.1.6/include/asm-ppc/immap_qe.h 1969-12-31 18:00:00.000000000 -0600
++++ u-boot-1.1.6-fsl-1/include/asm-ppc/immap_qe.h 2006-11-10 11:24:29.000000000 -0600
+@@ -0,0 +1,550 @@
++/*
++ * QUICC Engine (QE) Internal Memory Map.
++ * The Internal Memory Map for devices with QE on them. This
++ * is the superset of all QE devices (8360, etc.).
++ *
++ * Copyright (c) 2006 Freescale Semiconductor, Inc.
++ * Author: Shlomi Gridih <gridish@freescale.com>
++ *
++ * 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.
++ */
++
++#ifndef __IMMAP_QE_H__
++#define __IMMAP_QE_H__
++
++/* QE I-RAM
++*/
++typedef struct qe_iram {
++ u32 iadd; /* I-RAM Address Register */
++ u32 idata; /* I-RAM Data Register */
++ u8 res0[0x78];
++} __attribute__ ((packed)) qe_iram_t;
++
++/* QE Interrupt Controller
++*/
++typedef struct qe_ic {
++ u32 qicr;
++ u32 qivec;
++ u32 qripnr;
++ u32 qipnr;
++ u32 qipxcc;
++ u32 qipycc;
++ u32 qipwcc;
++ u32 qipzcc;
++ u32 qimr;
++ u32 qrimr;
++ u32 qicnr;
++ u8 res0[0x4];
++ u32 qiprta;
++ u32 qiprtb;
++ u8 res1[0x4];
++ u32 qricr;
++ u8 res2[0x20];
++ u32 qhivec;
++ u8 res3[0x1C];
++} __attribute__ ((packed)) qe_ic_t;
++
++/* Communications Processor
++*/
++typedef struct cp_qe {
++ u32 cecr; /* QE command register */
++ u32 ceccr; /* QE controller configuration register */
++ u32 cecdr; /* QE command data register */
++ u8 res0[0xA];
++ u16 ceter; /* QE timer event register */
++ u8 res1[0x2];
++ u16 cetmr; /* QE timers mask register */
++ u32 cetscr; /* QE time-stamp timer control register */
++ u32 cetsr1; /* QE time-stamp register 1 */
++ u32 cetsr2; /* QE time-stamp register 2 */
++ u8 res2[0x8];
++ u32 cevter; /* QE virtual tasks event register */
++ u32 cevtmr; /* QE virtual tasks mask register */
++ u16 cercr; /* QE RAM control register */
++ u8 res3[0x2];
++ u8 res4[0x24];
++ u16 ceexe1; /* QE external request 1 event register */
++ u8 res5[0x2];
++ u16 ceexm1; /* QE external request 1 mask register */
++ u8 res6[0x2];
++ u16 ceexe2; /* QE external request 2 event register */
++ u8 res7[0x2];
++ u16 ceexm2; /* QE external request 2 mask register */
++ u8 res8[0x2];
++ u16 ceexe3; /* QE external request 3 event register */
++ u8 res9[0x2];
++ u16 ceexm3; /* QE external request 3 mask register */
++ u8 res10[0x2];
++ u16 ceexe4; /* QE external request 4 event register */
++ u8 res11[0x2];
++ u16 ceexm4; /* QE external request 4 mask register */
++ u8 res12[0x2];
++ u8 res13[0x280];
++} __attribute__ ((packed)) cp_qe_t;
++
++/* QE Multiplexer
++*/
++typedef struct qe_mux {
++ u32 cmxgcr; /* CMX general clock route register */
++ u32 cmxsi1cr_l; /* CMX SI1 clock route low register */
++ u32 cmxsi1cr_h; /* CMX SI1 clock route high register */
++ u32 cmxsi1syr; /* CMX SI1 SYNC route register */
++ u32 cmxucr1; /* CMX UCC1, UCC3 clock route register */
++ u32 cmxucr2; /* CMX UCC5, UCC7 clock route register */
++ u32 cmxucr3; /* CMX UCC2, UCC4 clock route register */
++ u32 cmxucr4; /* CMX UCC6, UCC8 clock route register */
++ u32 cmxupcr; /* CMX UPC clock route register */
++ u8 res0[0x1C];
++} __attribute__ ((packed)) qe_mux_t;
++
++/* QE Timers
++*/
++typedef struct qe_timers {
++ u8 gtcfr1; /* Timer 1 2 global configuration register */
++ u8 res0[0x3];
++ u8 gtcfr2; /* Timer 3 4 global configuration register */
++ u8 res1[0xB];
++ u16 gtmdr1; /* Timer 1 mode register */
++ u16 gtmdr2; /* Timer 2 mode register */
++ u16 gtrfr1; /* Timer 1 reference register */
++ u16 gtrfr2; /* Timer 2 reference register */
++ u16 gtcpr1; /* Timer 1 capture register */
++ u16 gtcpr2; /* Timer 2 capture register */
++ u16 gtcnr1; /* Timer 1 counter */
++ u16 gtcnr2; /* Timer 2 counter */
++ u16 gtmdr3; /* Timer 3 mode register */
++ u16 gtmdr4; /* Timer 4 mode register */
++ u16 gtrfr3; /* Timer 3 reference register */
++ u16 gtrfr4; /* Timer 4 reference register */
++ u16 gtcpr3; /* Timer 3 capture register */
++ u16 gtcpr4; /* Timer 4 capture register */
++ u16 gtcnr3; /* Timer 3 counter */
++ u16 gtcnr4; /* Timer 4 counter */
++ u16 gtevr1; /* Timer 1 event register */
++ u16 gtevr2; /* Timer 2 event register */
++ u16 gtevr3; /* Timer 3 event register */
++ u16 gtevr4; /* Timer 4 event register */
++ u16 gtps; /* Timer 1 prescale register */
++ u8 res2[0x46];
++} __attribute__ ((packed)) qe_timers_t;
++
++/* BRG
++*/
++typedef struct qe_brg {
++ u32 brgc1; /* BRG1 configuration register */
++ u32 brgc2; /* BRG2 configuration register */
++ u32 brgc3; /* BRG3 configuration register */
++ u32 brgc4; /* BRG4 configuration register */
++ u32 brgc5; /* BRG5 configuration register */
++ u32 brgc6; /* BRG6 configuration register */
++ u32 brgc7; /* BRG7 configuration register */
++ u32 brgc8; /* BRG8 configuration register */
++ u32 brgc9; /* BRG9 configuration register */
++ u32 brgc10; /* BRG10 configuration register */
++ u32 brgc11; /* BRG11 configuration register */
++ u32 brgc12; /* BRG12 configuration register */
++ u32 brgc13; /* BRG13 configuration register */
++ u32 brgc14; /* BRG14 configuration register */
++ u32 brgc15; /* BRG15 configuration register */
++ u32 brgc16; /* BRG16 configuration register */
++ u8 res0[0x40];
++} __attribute__ ((packed)) qe_brg_t;
++
++/* SPI
++*/
++typedef struct spi {
++ u8 res0[0x20];
++ u32 spmode; /* SPI mode register */
++ u8 res1[0x2];
++ u8 spie; /* SPI event register */
++ u8 res2[0x1];
++ u8 res3[0x2];
++ u8 spim; /* SPI mask register */
++ u8 res4[0x1];
++ u8 res5[0x1];
++ u8 spcom; /* SPI command register */
++ u8 res6[0x2];
++ u32 spitd; /* SPI transmit data register (cpu mode) */
++ u32 spird; /* SPI receive data register (cpu mode) */
++ u8 res7[0x8];
++} __attribute__ ((packed)) spi_t;
++
++/* SI
++*/
++typedef struct si1 {
++ u16 siamr1; /* SI1 TDMA mode register */
++ u16 sibmr1; /* SI1 TDMB mode register */
++ u16 sicmr1; /* SI1 TDMC mode register */
++ u16 sidmr1; /* SI1 TDMD mode register */
++ u8 siglmr1_h; /* SI1 global mode register high */
++ u8 res0[0x1];
++ u8 sicmdr1_h; /* SI1 command register high */
++ u8 res2[0x1];
++ u8 sistr1_h; /* SI1 status register high */
++ u8 res3[0x1];
++ u16 sirsr1_h; /* SI1 RAM shadow address register high */
++ u8 sitarc1; /* SI1 RAM counter Tx TDMA */
++ u8 sitbrc1; /* SI1 RAM counter Tx TDMB */
++ u8 sitcrc1; /* SI1 RAM counter Tx TDMC */
++ u8 sitdrc1; /* SI1 RAM counter Tx TDMD */
++ u8 sirarc1; /* SI1 RAM counter Rx TDMA */
++ u8 sirbrc1; /* SI1 RAM counter Rx TDMB */
++ u8 sircrc1; /* SI1 RAM counter Rx TDMC */
++ u8 sirdrc1; /* SI1 RAM counter Rx TDMD */
++ u8 res4[0x8];
++ u16 siemr1; /* SI1 TDME mode register 16 bits */
++ u16 sifmr1; /* SI1 TDMF mode register 16 bits */
++ u16 sigmr1; /* SI1 TDMG mode register 16 bits */
++ u16 sihmr1; /* SI1 TDMH mode register 16 bits */
++ u8 siglmg1_l; /* SI1 global mode register low 8 bits */
++ u8 res5[0x1];
++ u8 sicmdr1_l; /* SI1 command register low 8 bits */
++ u8 res6[0x1];
++ u8 sistr1_l; /* SI1 status register low 8 bits */
++ u8 res7[0x1];
++ u16 sirsr1_l; /* SI1 RAM shadow address register low 16 bits */
++ u8 siterc1; /* SI1 RAM counter Tx TDME 8 bits */
++ u8 sitfrc1; /* SI1 RAM counter Tx TDMF 8 bits */
++ u8 sitgrc1; /* SI1 RAM counter Tx TDMG 8 bits */
++ u8 sithrc1; /* SI1 RAM counter Tx TDMH 8 bits */
++ u8 sirerc1; /* SI1 RAM counter Rx TDME 8 bits */
++ u8 sirfrc1; /* SI1 RAM counter Rx TDMF 8 bits */
++ u8 sirgrc1; /* SI1 RAM counter Rx TDMG 8 bits */
++ u8 sirhrc1; /* SI1 RAM counter Rx TDMH 8 bits */
++ u8 res8[0x8];
++ u32 siml1; /* SI1 multiframe limit register */
++ u8 siedm1; /* SI1 extended diagnostic mode register */
++ u8 res9[0xBB];
++} __attribute__ ((packed)) si1_t;
++
++/* SI Routing Tables
++*/
++typedef struct sir {
++ u8 tx[0x400];
++ u8 rx[0x400];
++ u8 res0[0x800];
++} __attribute__ ((packed)) sir_t;
++
++/* USB Controller.
++*/
++typedef struct usb_ctlr {
++ u8 usb_usmod;
++ u8 usb_usadr;
++ u8 usb_uscom;
++ u8 res1[1];
++ u16 usb_usep1;
++ u16 usb_usep2;
++ u16 usb_usep3;
++ u16 usb_usep4;
++ u8 res2[4];
++ u16 usb_usber;
++ u8 res3[2];
++ u16 usb_usbmr;
++ u8 res4[1];
++ u8 usb_usbs;
++ u16 usb_ussft;
++ u8 res5[2];
++ u16 usb_usfrn;
++ u8 res6[0x22];
++} __attribute__ ((packed)) usb_t;
++
++/* MCC
++*/
++typedef struct mcc {
++ u32 mcce; /* MCC event register */
++ u32 mccm; /* MCC mask register */
++ u32 mccf; /* MCC configuration register */
++ u32 merl; /* MCC emergency request level register */
++ u8 res0[0xF0];
++} __attribute__ ((packed)) mcc_t;
++
++/* QE UCC Slow
++*/
++typedef struct ucc_slow {
++ u32 gumr_l; /* UCCx general mode register (low) */
++ u32 gumr_h; /* UCCx general mode register (high) */
++ u16 upsmr; /* UCCx protocol-specific mode register */
++ u8 res0[0x2];
++ u16 utodr; /* UCCx transmit on demand register */
++ u16 udsr; /* UCCx data synchronization register */
++ u16 ucce; /* UCCx event register */
++ u8 res1[0x2];
++ u16 uccm; /* UCCx mask register */
++ u8 res2[0x1];
++ u8 uccs; /* UCCx status register */
++ u8 res3[0x24];
++ u16 utpt;
++ u8 guemr; /* UCC general extended mode register */
++ u8 res4[0x200 - 0x091];
++} __attribute__ ((packed)) ucc_slow_t;
++
++typedef struct ucc_ethernet {
++ u32 maccfg1; /* mac configuration reg. 1 */
++ u32 maccfg2; /* mac configuration reg. 2 */
++ u32 ipgifg; /* interframe gap reg. */
++ u32 hafdup; /* half-duplex reg. */
++ u8 res1[0x10];
++ u32 miimcfg; /* MII management configuration reg */
++ u32 miimcom; /* MII management command reg */
++ u32 miimadd; /* MII management address reg */
++ u32 miimcon; /* MII management control reg */
++ u32 miimstat; /* MII management status reg */
++ u32 miimind; /* MII management indication reg */
++ u32 ifctl; /* interface control reg */
++ u32 ifstat; /* interface statux reg */
++ u32 macstnaddr1; /* mac station address part 1 reg */
++ u32 macstnaddr2; /* mac station address part 2 reg */
++ u8 res2[0x8];
++ u32 uempr; /* UCC Ethernet Mac parameter reg */
++ u32 utbipar; /* UCC tbi address reg */
++ u16 uescr; /* UCC Ethernet statistics control reg */
++ u8 res3[0x180 - 0x15A];
++ u32 tx64; /* Total number of frames (including bad
++ * frames) transmitted that were exactly
++ * of the minimal length (64 for un tagged,
++ * 68 for tagged, or with length exactly
++ * equal to the parameter MINLength */
++ u32 tx127; /* Total number of frames (including bad
++ * frames) transmitted that were between
++ * MINLength (Including FCS length==4)
++ * and 127 octets */
++ u32 tx255; /* Total number of frames (including bad
++ * frames) transmitted that were between
++ * 128 (Including FCS length==4) and 255
++ * octets */
++ u32 rx64; /* Total number of frames received including
++ * bad frames that were exactly of the
++ * mninimal length (64 bytes) */
++ u32 rx127; /* Total number of frames (including bad
++ * frames) received that were between
++ * MINLength (Including FCS length==4)
++ * and 127 octets */
++ u32 rx255; /* Total number of frames (including
++ * bad frames) received that were between
++ * 128 (Including FCS length==4) and 255
++ * octets */
++ u32 txok; /* Total number of octets residing in frames
++ * that where involved in succesfull
++ * transmission */
++ u16 txcf; /* Total number of PAUSE control frames
++ * transmitted by this MAC */
++ u8 res4[0x2];
++ u32 tmca; /* Total number of frames that were transmitted
++ * succesfully with the group address bit set
++ * that are not broadcast frames */
++ u32 tbca; /* Total number of frames transmitted
++ * succesfully that had destination address
++ * field equal to the broadcast address */
++ u32 rxfok; /* Total number of frames received OK */
++ u32 rxbok; /* Total number of octets received OK */
++ u32 rbyt; /* Total number of octets received including
++ * octets in bad frames. Must be implemented
++ * in HW because it includes octets in frames
++ * that never even reach the UCC */
++ u32 rmca; /* Total number of frames that were received
++ * succesfully with the group address bit set
++ * that are not broadcast frames */
++ u32 rbca; /* Total number of frames received succesfully
++ * that had destination address equal to the
++ * broadcast address */
++ u32 scar; /* Statistics carry register */
++ u32 scam; /* Statistics caryy mask register */
++ u8 res5[0x200 - 0x1c4];
++} __attribute__ ((packed)) uec_t;
++
++/* QE UCC Fast
++*/
++typedef struct ucc_fast {
++ u32 gumr; /* UCCx general mode register */
++ u32 upsmr; /* UCCx protocol-specific mode register */
++ u16 utodr; /* UCCx transmit on demand register */
++ u8 res0[0x2];
++ u16 udsr; /* UCCx data synchronization register */
++ u8 res1[0x2];
++ u32 ucce; /* UCCx event register */
++ u32 uccm; /* UCCx mask register. */
++ u8 uccs; /* UCCx status register */
++ u8 res2[0x7];
++ u32 urfb; /* UCC receive FIFO base */
++ u16 urfs; /* UCC receive FIFO size */
++ u8 res3[0x2];
++ u16 urfet; /* UCC receive FIFO emergency threshold */
++ u16 urfset; /* UCC receive FIFO special emergency
++ * threshold */
++ u32 utfb; /* UCC transmit FIFO base */
++ u16 utfs; /* UCC transmit FIFO size */
++ u8 res4[0x2];
++ u16 utfet; /* UCC transmit FIFO emergency threshold */
++ u8 res5[0x2];
++ u16 utftt; /* UCC transmit FIFO transmit threshold */
++ u8 res6[0x2];
++ u16 utpt; /* UCC transmit polling timer */
++ u8 res7[0x2];
++ u32 urtry; /* UCC retry counter register */
++ u8 res8[0x4C];
++ u8 guemr; /* UCC general extended mode register */
++ u8 res9[0x100 - 0x091];
++ uec_t ucc_eth;
++} __attribute__ ((packed)) ucc_fast_t;
++
++/* QE UCC
++*/
++typedef struct ucc_common {
++ u8 res1[0x90];
++ u8 guemr;
++ u8 res2[0x200 - 0x091];
++} __attribute__ ((packed)) ucc_common_t;
++
++typedef struct ucc {
++ union {
++ ucc_slow_t slow;
++ ucc_fast_t fast;
++ ucc_common_t common;
++ };
++} __attribute__ ((packed)) ucc_t;
++
++/* MultiPHY UTOPIA POS Controllers (UPC)
++*/
++typedef struct upc {
++ u32 upgcr; /* UTOPIA/POS general configuration register */
++ u32 uplpa; /* UTOPIA/POS last PHY address */
++ u32 uphec; /* ATM HEC register */
++ u32 upuc; /* UTOPIA/POS UCC configuration */
++ u32 updc1; /* UTOPIA/POS device 1 configuration */
++ u32 updc2; /* UTOPIA/POS device 2 configuration */
++ u32 updc3; /* UTOPIA/POS device 3 configuration */
++ u32 updc4; /* UTOPIA/POS device 4 configuration */
++ u32 upstpa; /* UTOPIA/POS STPA threshold */
++ u8 res0[0xC];
++ u32 updrs1_h; /* UTOPIA/POS device 1 rate select */
++ u32 updrs1_l; /* UTOPIA/POS device 1 rate select */
++ u32 updrs2_h; /* UTOPIA/POS device 2 rate select */
++ u32 updrs2_l; /* UTOPIA/POS device 2 rate select */
++ u32 updrs3_h; /* UTOPIA/POS device 3 rate select */
++ u32 updrs3_l; /* UTOPIA/POS device 3 rate select */
++ u32 updrs4_h; /* UTOPIA/POS device 4 rate select */
++ u32 updrs4_l; /* UTOPIA/POS device 4 rate select */
++ u32 updrp1; /* UTOPIA/POS device 1 receive priority low */
++ u32 updrp2; /* UTOPIA/POS device 2 receive priority low */
++ u32 updrp3; /* UTOPIA/POS device 3 receive priority low */
++ u32 updrp4; /* UTOPIA/POS device 4 receive priority low */
++ u32 upde1; /* UTOPIA/POS device 1 event */
++ u32 upde2; /* UTOPIA/POS device 2 event */
++ u32 upde3; /* UTOPIA/POS device 3 event */
++ u32 upde4; /* UTOPIA/POS device 4 event */
++ u16 uprp1;
++ u16 uprp2;
++ u16 uprp3;
++ u16 uprp4;
++ u8 res1[0x8];
++ u16 uptirr1_0; /* Device 1 transmit internal rate 0 */
++ u16 uptirr1_1; /* Device 1 transmit internal rate 1 */
++ u16 uptirr1_2; /* Device 1 transmit internal rate 2 */
++ u16 uptirr1_3; /* Device 1 transmit internal rate 3 */
++ u16 uptirr2_0; /* Device 2 transmit internal rate 0 */
++ u16 uptirr2_1; /* Device 2 transmit internal rate 1 */
++ u16 uptirr2_2; /* Device 2 transmit internal rate 2 */
++ u16 uptirr2_3; /* Device 2 transmit internal rate 3 */
++ u16 uptirr3_0; /* Device 3 transmit internal rate 0 */
++ u16 uptirr3_1; /* Device 3 transmit internal rate 1 */
++ u16 uptirr3_2; /* Device 3 transmit internal rate 2 */
++ u16 uptirr3_3; /* Device 3 transmit internal rate 3 */
++ u16 uptirr4_0; /* Device 4 transmit internal rate 0 */
++ u16 uptirr4_1; /* Device 4 transmit internal rate 1 */
++ u16 uptirr4_2; /* Device 4 transmit internal rate 2 */
++ u16 uptirr4_3; /* Device 4 transmit internal rate 3 */
++ u32 uper1; /* Device 1 port enable register */
++ u32 uper2; /* Device 2 port enable register */
++ u32 uper3; /* Device 3 port enable register */
++ u32 uper4; /* Device 4 port enable register */
++ u8 res2[0x150];
++} __attribute__ ((packed)) upc_t;
++
++/* SDMA
++*/
++typedef struct sdma {
++ u32 sdsr; /* Serial DMA status register */
++ u32 sdmr; /* Serial DMA mode register */
++ u32 sdtr1; /* SDMA system bus threshold register */
++ u32 sdtr2; /* SDMA secondary bus threshold register */
++ u32 sdhy1; /* SDMA system bus hysteresis register */
++ u32 sdhy2; /* SDMA secondary bus hysteresis register */
++ u32 sdta1; /* SDMA system bus address register */
++ u32 sdta2; /* SDMA secondary bus address register */
++ u32 sdtm1; /* SDMA system bus MSNUM register */
++ u32 sdtm2; /* SDMA secondary bus MSNUM register */
++ u8 res0[0x10];
++ u32 sdaqr; /* SDMA address bus qualify register */
++ u32 sdaqmr; /* SDMA address bus qualify mask register */
++ u8 res1[0x4];
++ u32 sdwbcr; /* SDMA CAM entries base register */
++ u8 res2[0x38];
++} __attribute__ ((packed)) sdma_t;
++
++/* Debug Space
++*/
++typedef struct dbg {
++ u32 bpdcr; /* Breakpoint debug command register */
++ u32 bpdsr; /* Breakpoint debug status register */
++ u32 bpdmr; /* Breakpoint debug mask register */
++ u32 bprmrr0; /* Breakpoint request mode risc register 0 */
++ u32 bprmrr1; /* Breakpoint request mode risc register 1 */
++ u8 res0[0x8];
++ u32 bprmtr0; /* Breakpoint request mode trb register 0 */
++ u32 bprmtr1; /* Breakpoint request mode trb register 1 */
++ u8 res1[0x8];
++ u32 bprmir; /* Breakpoint request mode immediate register */
++ u32 bprmsr; /* Breakpoint request mode serial register */
++ u32 bpemr; /* Breakpoint exit mode register */
++ u8 res2[0x48];
++} __attribute__ ((packed)) dbg_t;
++
++/* RISC Special Registers (Trap and Breakpoint)
++*/
++typedef struct rsp {
++ u8 fixme[0x100];
++} __attribute__ ((packed)) rsp_t;
++
++typedef struct qe_immap {
++ qe_iram_t iram; /* I-RAM */
++ qe_ic_t ic; /* Interrupt Controller */
++ cp_qe_t cp; /* Communications Processor */
++ qe_mux_t qmx; /* QE Multiplexer */
++ qe_timers_t qet; /* QE Timers */
++ spi_t spi[0x2]; /* spi */
++ mcc_t mcc; /* mcc */
++ qe_brg_t brg; /* brg */
++ usb_t usb; /* USB */
++ si1_t si1; /* SI */
++ u8 res11[0x800];
++ sir_t sir; /* SI Routing Tables */
++ ucc_t ucc1; /* ucc1 */
++ ucc_t ucc3; /* ucc3 */
++ ucc_t ucc5; /* ucc5 */
++ ucc_t ucc7; /* ucc7 */
++ u8 res12[0x600];
++ upc_t upc1; /* MultiPHY UTOPIA POS Controller 1 */
++ ucc_t ucc2; /* ucc2 */
++ ucc_t ucc4; /* ucc4 */
++ ucc_t ucc6; /* ucc6 */
++ ucc_t ucc8; /* ucc8 */
++ u8 res13[0x600];
++ upc_t upc2; /* MultiPHY UTOPIA POS Controller 2 */
++ sdma_t sdma; /* SDMA */
++ dbg_t dbg; /* Debug Space */
++ rsp_t rsp[0x2]; /* RISC Special Registers
++ * (Trap and Breakpoint) */
++ u8 res14[0x300];
++ u8 res15[0x3A00];
++ u8 res16[0x8000]; /* 0x108000 - 0x110000 */
++ u8 muram[0xC000]; /* 0x110000 - 0x11C000 Multi-user RAM */
++ u8 res17[0x24000]; /* 0x11C000 - 0x140000 */
++ u8 res18[0xC0000]; /* 0x140000 - 0x200000 */
++} __attribute__ ((packed)) qe_map_t;
++
++extern qe_map_t *qe_immr;
++
++#endif /* __IMMAP_QE_H__ */
+diff -Naupr u-boot-1.1.6/include/asm-ppc/processor.h u-boot-1.1.6-fsl-1/include/asm-ppc/processor.h
+--- u-boot-1.1.6/include/asm-ppc/processor.h 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/include/asm-ppc/processor.h 2006-12-06 10:33:49.000000000 -0600
+@@ -749,6 +749,7 @@
+ #define PVR_405EP_RB 0x51210950
+ #define PVR_440SP_RA 0x53221850
+ #define PVR_440SP_RB 0x53221891
++#define PVR_440SP_RC 0x53221892
+ #define PVR_440SPe_RA 0x53421890
+ #define PVR_440SPe_RB 0x53421891
+ #define PVR_601 0x00010000
+diff -Naupr u-boot-1.1.6/include/common.h u-boot-1.1.6-fsl-1/include/common.h
+--- u-boot-1.1.6/include/common.h 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/include/common.h 2006-11-30 12:34:13.000000000 -0600
+@@ -270,7 +270,7 @@ int misc_init_r (void);
+ void jumptable_init(void);
+
+ /* common/memsize.c */
+-int get_ram_size (volatile long *, long);
++long get_ram_size (volatile long *, long);
+
+ /* $(BOARD)/$(BOARD).c */
+ void reset_phy (void);
+@@ -402,6 +402,11 @@ void ppcSync(void);
+ void ppcDcbz(unsigned long value);
+ #endif
+
++#if defined (CONFIG_MPC83XX)
++void ppcDWload(unsigned int *addr, unsigned int *ret);
++void ppcDWstore(unsigned int *addr, unsigned int *value);
++#endif
++
+ /* $(CPU)/cpu.c */
+ int checkcpu (void);
+ int checkicache (void);
+diff -Naupr u-boot-1.1.6/include/configs/alpr.h u-boot-1.1.6-fsl-1/include/configs/alpr.h
+--- u-boot-1.1.6/include/configs/alpr.h 1969-12-31 18:00:00.000000000 -0600
++++ u-boot-1.1.6-fsl-1/include/configs/alpr.h 2006-11-30 12:34:13.000000000 -0600
+@@ -0,0 +1,346 @@
++/*
++ * (C) Copyright 2006
++ * Stefan Roese, DENX Software Engineering, sr@denx.de.
++ *
++ * See file CREDITS for list of people who contributed to this
++ * project.
++ *
++ * 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
++ */
++
++#ifndef __CONFIG_H
++#define __CONFIG_H
++
++/*-----------------------------------------------------------------------
++ * High Level Configuration Options
++ *----------------------------------------------------------------------*/
++#define CONFIG_ALPR 1 /* Board is ebony */
++#define CONFIG_440GX 1 /* Specifc GX support */
++#define CONFIG_4xx 1 /* ... PPC4xx family */
++#define CONFIG_BOARD_EARLY_INIT_F 1 /* Call board_pre_init */
++#define CONFIG_LAST_STAGE_INIT 1 /* call last_stage_init() */
++#undef CFG_DRAM_TEST /* Disable-takes long time! */
++#define CONFIG_SYS_CLK_FREQ 33333333 /* external freq to pll */
++
++/*-----------------------------------------------------------------------
++ * Base addresses -- Note these are effective addresses where the
++ * actual resources get mapped (not physical addresses)
++ *----------------------------------------------------------------------*/
++#define CFG_SDRAM_BASE 0x00000000 /* _must_ be 0 */
++#define CFG_FLASH_BASE 0xffe00000 /* start of FLASH */
++#define CFG_MONITOR_BASE 0xfffc0000 /* start of monitor */
++#define CFG_PCI_MEMBASE 0x80000000 /* mapped pci memory */
++#define CFG_PCI_MEMSIZE 0x40000000 /* size of mapped pci memory */
++#define CFG_PERIPHERAL_BASE 0xe0000000 /* internal peripherals */
++#define CFG_ISRAM_BASE 0xc0000000 /* internal SRAM */
++#define CFG_PCI_BASE 0xd0000000 /* internal PCI regs */
++#define CFG_PCI_MEMBASE1 CFG_PCI_MEMBASE + 0x10000000
++#define CFG_PCI_MEMBASE2 CFG_PCI_MEMBASE1 + 0x10000000
++#define CFG_PCI_MEMBASE3 CFG_PCI_MEMBASE2 + 0x10000000
++
++
++#define CFG_FPGA_BASE (CFG_PERIPHERAL_BASE + 0x08300000)
++#define CFG_NVRAM_BASE_ADDR (CFG_PERIPHERAL_BASE + 0x08000000)
++
++/*-----------------------------------------------------------------------
++ * Initial RAM & stack pointer (placed in internal SRAM)
++ *----------------------------------------------------------------------*/
++#define CFG_TEMP_STACK_OCM 1
++#define CFG_OCM_DATA_ADDR CFG_ISRAM_BASE
++#define CFG_INIT_RAM_ADDR CFG_ISRAM_BASE /* Initial RAM address */
++#define CFG_INIT_RAM_END 0x2000 /* End of used area in RAM */
++#define CFG_GBL_DATA_SIZE 128 /* num bytes initial data */
++
++#define CFG_GBL_DATA_OFFSET (CFG_INIT_RAM_END - CFG_GBL_DATA_SIZE)
++#define CFG_POST_WORD_ADDR (CFG_GBL_DATA_OFFSET - 0x4)
++#define CFG_INIT_SP_OFFSET CFG_POST_WORD_ADDR
++
++#define CFG_MONITOR_LEN (256 * 1024) /* Reserve 256 kB for Mon */
++#define CFG_MALLOC_LEN (128 * 1024) /* Reserve 128 kB for malloc*/
++
++/*-----------------------------------------------------------------------
++ * Serial Port
++ *----------------------------------------------------------------------*/
++#undef CFG_EXT_SERIAL_CLOCK
++#define CONFIG_BAUDRATE 115200
++#define CONFIG_UART1_CONSOLE /* define for uart1 as console */
++
++#define CFG_BAUDRATE_TABLE \
++ {300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200}
++
++/*-----------------------------------------------------------------------
++ * FLASH related
++ *----------------------------------------------------------------------*/
++#define CFG_FLASH_CFI 1 /* The flash is CFI compatible */
++#define CFG_FLASH_CFI_DRIVER 1 /* Use common CFI driver */
++#define CFG_MAX_FLASH_BANKS 1 /* max number of memory banks */
++#define CFG_MAX_FLASH_SECT 512 /* max number of sectors on one chip */
++#define CFG_FLASH_USE_BUFFER_WRITE 1 /* use buffered writes (20x faster) */
++#define CFG_FLASH_EMPTY_INFO /* print 'E' for empty sector on flinfo */
++#define CFG_FLASH_QUIET_TEST 1 /* don't warn upon unknown flash */
++
++#define CFG_ENV_IS_IN_FLASH 1 /* use FLASH for environment vars */
++
++#define CFG_ENV_SECT_SIZE 0x10000 /* size of one complete sector */
++#define CFG_ENV_ADDR (CFG_MONITOR_BASE-CFG_ENV_SECT_SIZE)
++#define CFG_ENV_SIZE 0x2000 /* Total Size of Environment Sector */
++
++/* Address and size of Redundant Environment Sector */
++#define CFG_ENV_ADDR_REDUND (CFG_ENV_ADDR-CFG_ENV_SECT_SIZE)
++#define CFG_ENV_SIZE_REDUND (CFG_ENV_SIZE)
++
++/*-----------------------------------------------------------------------
++ * DDR SDRAM
++ *----------------------------------------------------------------------*/
++#undef CONFIG_SPD_EEPROM /* Don't use SPD EEPROM for setup */
++#define CONFIG_SDRAM_BANK0 1 /* init onboard DDR SDRAM bank 0 */
++#undef CONFIG_SDRAM_ECC /* enable ECC support */
++#define CFG_SDRAM_TABLE { \
++ {(256 << 20), 13, 0x000C4001}, /* 256MB mode 3, 13x10(4)*/ \
++ {(64 << 20), 12, 0x00082001}} /* 64MB mode 2, 12x9(4) */
++
++/*-----------------------------------------------------------------------
++ * I2C
++ *----------------------------------------------------------------------*/
++#define CONFIG_HARD_I2C 1 /* I2C with hardware support */
++#undef CONFIG_SOFT_I2C /* I2C bit-banged */
++#define CFG_I2C_SPEED 100000 /* I2C speed and slave address */
++#define CFG_I2C_SLAVE 0x7F
++#define CFG_I2C_NOPROBES {0x69} /* Don't probe these addrs */
++
++/*-----------------------------------------------------------------------
++ * I2C EEPROM (PCF8594C)
++ *----------------------------------------------------------------------*/
++#define CFG_I2C_EEPROM_ADDR 0x54 /* EEPROM PCF8594C */
++#define CFG_I2C_EEPROM_ADDR_LEN 1 /* Bytes of address */
++/* mask of address bits that overflow into the "EEPROM chip address" */
++#define CFG_I2C_EEPROM_ADDR_OVERFLOW 0x07
++#define CFG_EEPROM_PAGE_WRITE_BITS 3 /* The Philips PCF8594C has */
++ /* 8 byte page write mode using */
++ /* last 3 bits of the address */
++#define CFG_EEPROM_PAGE_WRITE_DELAY_MS 40 /* and takes up to 40 msec */
++#define CFG_EEPROM_PAGE_WRITE_ENABLE
++
++#define CONFIG_PREBOOT "echo;" \
++ "echo Type \"run flash_nfs\" to mount root filesystem over NFS;" \
++ "echo"
++
++#undef CONFIG_BOOTARGS
++
++#define CONFIG_EXTRA_ENV_SETTINGS \
++ "netdev=eth3\0" \
++ "hostname=alpr\0" \
++ "nfsargs=setenv bootargs root=/dev/nfs rw " \
++ "nfsroot=${serverip}:${rootpath}\0" \
++ "ramargs=setenv bootargs root=/dev/ram rw\0" \
++ "addip=setenv bootargs ${bootargs} " \
++ "ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}" \
++ ":${hostname}:${netdev}:off panic=1\0" \
++ "addtty=setenv bootargs ${bootargs} console=ttyS1,${baudrate} " \
++ "mem=193M\0" \
++ "flash_nfs=run nfsargs addip addtty;" \
++ "bootm ${kernel_addr}\0" \
++ "flash_self=run ramargs addip addtty;" \
++ "bootm ${kernel_addr} ${ramdisk_addr}\0" \
++ "net_nfs=tftp 200000 ${bootfile};run nfsargs addip addtty;" \
++ "bootm\0" \
++ "rootpath=/opt/projects/alpr/nfs_root\0" \
++ "bootfile=/alpr/uImage\0" \
++ "kernel_addr=fff00000\0" \
++ "ramdisk_addr=fff10000\0" \
++ "load=tftp 100000 /alpr/u-boot/u-boot.bin\0" \
++ "update=protect off fffc0000 ffffffff;era fffc0000 ffffffff;" \
++ "cp.b 100000 fffc0000 40000;" \
++ "setenv filesize;saveenv\0" \
++ "upd=run load;run update\0" \
++ ""
++#define CONFIG_BOOTCOMMAND "run flash_self"
++
++#define CONFIG_BOOTDELAY 2 /* autoboot after 5 seconds */
++
++#define CONFIG_BAUDRATE 115200
++
++#define CONFIG_LOADS_ECHO 1 /* echo on for serial download */
++#define CFG_LOADS_BAUD_CHANGE 1 /* allow baudrate change */
++
++#define CONFIG_MII 1 /* MII PHY management */
++#define CONFIG_NET_MULTI 1
++#define CONFIG_PHY_ADDR 0x02 /* dummy setting, no EMAC0 used */
++#define CONFIG_PHY1_ADDR 0x03 /* dummy setting, no EMAC1 used */
++#define CONFIG_PHY2_ADDR 0x01 /* PHY address for EMAC2 */
++#define CONFIG_PHY3_ADDR 0x02 /* PHY address for EMAC3 */
++#define CONFIG_HAS_ETH0
++#define CONFIG_HAS_ETH1
++#define CONFIG_HAS_ETH2
++#define CONFIG_HAS_ETH3
++#define CONFIG_PHY_RESET 1 /* reset phy upon startup */
++#define CONFIG_M88E1111_PHY 1 /* needed for PHY specific setup*/
++#define CONFIG_PHY_GIGE 1 /* Include GbE speed/duplex detection */
++#define CFG_RX_ETH_BUFFER 32 /* Number of ethernet rx buffers & descriptors */
++
++#define CONFIG_NETCONSOLE /* include NetConsole support */
++
++#define CONFIG_COMMANDS (CONFIG_CMD_DFL | \
++ CFG_CMD_ASKENV | \
++ CFG_CMD_DHCP | \
++ CFG_CMD_DIAG | \
++ CFG_CMD_EEPROM | \
++ CFG_CMD_ELF | \
++ CFG_CMD_I2C | \
++ CFG_CMD_IRQ | \
++ CFG_CMD_MII | \
++ CFG_CMD_NET | \
++ CFG_CMD_NFS | \
++ CFG_CMD_PCI | \
++ CFG_CMD_PING | \
++ CFG_CMD_FPGA | \
++ CFG_CMD_NAND | \
++ CFG_CMD_REGINFO)
++
++/* this must be included AFTER the definition of CONFIG_COMMANDS (if any) */
++#include <cmd_confdefs.h>
++
++#undef CONFIG_WATCHDOG /* watchdog disabled */
++
++/*
++ * Miscellaneous configurable options
++ */
++#define CFG_LONGHELP /* undef to save memory */
++#define CFG_PROMPT "=> " /* Monitor Command Prompt */
++#if (CONFIG_COMMANDS & CFG_CMD_KGDB)
++#define CFG_CBSIZE 1024 /* Console I/O Buffer Size */
++#else
++#define CFG_CBSIZE 256 /* Console I/O Buffer Size */
++#endif
++#define CFG_PBSIZE (CFG_CBSIZE+sizeof(CFG_PROMPT)+16) /* Print Buffer Size */
++#define CFG_MAXARGS 16 /* max number of command args */
++#define CFG_BARGSIZE CFG_CBSIZE /* Boot Argument Buffer Size */
++
++#define CFG_MEMTEST_START 0x0400000 /* memtest works on */
++#define CFG_MEMTEST_END 0x0C00000 /* 4 ... 12 MB in DRAM */
++
++#define CFG_LOAD_ADDR 0x100000 /* default load address */
++#define CFG_EXTBDINFO 1 /* To use extended board_into (bd_t) */
++
++#define CFG_HZ 1000 /* decrementer freq: 1 ms ticks */
++
++#define CONFIG_CMDLINE_EDITING 1 /* add command line history */
++#define CONFIG_LOOPW 1 /* enable loopw command */
++#define CONFIG_MX_CYCLIC 1 /* enable mdc/mwc commands */
++#define CONFIG_ZERO_BOOTDELAY_CHECK /* check for keypress on bootdelay==0 */
++#define CONFIG_VERSION_VARIABLE 1 /* include version env variable */
++
++#define CFG_4xx_RESET_TYPE 0x2 /* use chip reset on this board */
++
++/*-----------------------------------------------------------------------
++ * PCI stuff
++ *-----------------------------------------------------------------------
++ */
++/* General PCI */
++#define CONFIG_PCI /* include pci support */
++#define CONFIG_PCI_PNP /* do pci plug-and-play */
++#define CONFIG_PCI_SCAN_SHOW /* show pci devices on startup */
++#define CFG_PCI_TARGBASE 0x80000000 /* PCIaddr mapped to CFG_PCI_MEMBASE */
++#define CONFIG_PCI_BOOTDELAY 1 /* enable pci bootdelay variable*/
++
++/* Board-specific PCI */
++#define CFG_PCI_PRE_INIT /* enable board pci_pre_init() */
++#define CFG_PCI_TARGET_INIT /* let board init pci target */
++#define CFG_PCI_MASTER_INIT
++
++#define CFG_PCI_SUBSYS_VENDORID 0x10e8 /* AMCC */
++#define CFG_PCI_SUBSYS_DEVICEID 0xcafe /* Whatever */
++
++/*-----------------------------------------------------------------------
++ * FPGA stuff
++ *-----------------------------------------------------------------------*/
++#define CONFIG_FPGA CFG_ALTERA_CYCLON2
++#define CFG_FPGA_CHECK_CTRLC
++#define CFG_FPGA_PROG_FEEDBACK
++#define CONFIG_FPGA_COUNT 1 /* Ich habe 2 ... aber in
++ Reihe geschaltet -> sollte gehen,
++ aufpassen mit Datasize ist jetzt
++ halt doppelt so gross ... Seite 306
++ ist das mit den multiple Device in PS
++ Mode erklaert ...*/
++
++/* FPGA program pin configuration */
++#define CFG_GPIO_CLK 18 /* FPGA clk pin (cpu output) */
++#define CFG_GPIO_DATA 19 /* FPGA data pin (cpu output) */
++#define CFG_GPIO_STATUS 20 /* FPGA status pin (cpu input) */
++#define CFG_GPIO_CONFIG 21 /* FPGA CONFIG pin (cpu output) */
++#define CFG_GPIO_CON_DON 22 /* FPGA CONFIG_DONE pin (cpu input) */
++
++#define CFG_GPIO_SEL_DPR 14 /* cpu output */
++#define CFG_GPIO_SEL_AVR 15 /* cpu output */
++#define CFG_GPIO_PROG_EN 23 /* cpu output */
++
++/*-----------------------------------------------------------------------
++ * Definitions for GPIO setup
++ *-----------------------------------------------------------------------*/
++#define CFG_GPIO_EREADY (0x80000000 >> 26)
++#define CFG_GPIO_REV0 (0x80000000 >> 14)
++#define CFG_GPIO_REV1 (0x80000000 >> 15)
++
++/*-----------------------------------------------------------------------
++ * NAND-FLASH stuff
++ *-----------------------------------------------------------------------*/
++#define CFG_MAX_NAND_DEVICE 4
++#define NAND_MAX_CHIPS CFG_MAX_NAND_DEVICE
++#define CFG_NAND_BASE 0xF0000000 /* NAND FLASH Base Address */
++#define CFG_NAND_BASE_LIST { CFG_NAND_BASE + 0, CFG_NAND_BASE + 2, \
++ CFG_NAND_BASE + 4, CFG_NAND_BASE + 6 }
++#define CFG_NAND_QUIET_TEST 1 /* don't warn upon unknown NAND flash */
++
++/*-----------------------------------------------------------------------
++ * External Bus Controller (EBC) Setup
++ *----------------------------------------------------------------------*/
++#define CFG_FLASH CFG_FLASH_BASE
++
++/* Memory Bank 0 (Flash Bank 0, NOR-FLASH) initialization */
++#define CFG_EBC_PB0AP 0x92015480
++#define CFG_EBC_PB0CR (CFG_FLASH | 0x3A000) /* BS=2MB,BU=R/W,BW=16bit */
++
++/* Memory Bank 1 (NAND-FLASH) initialization */
++#define CFG_EBC_PB1AP 0x01840380 /* TWT=3 */
++#define CFG_EBC_PB1CR (CFG_NAND_BASE | 0x18000) /* BS=1MB,BU=R/W,BW=8bit */
++
++/*
++ * For booting Linux, the board info and command line data
++ * have to be in the first 8 MB of memory, since this is
++ * the maximum mapped by the Linux kernel during initialization.
++ */
++#define CFG_BOOTMAPSZ (8 << 20) /* Initial Memory map for Linux */
++/*-----------------------------------------------------------------------
++ * Cache Configuration
++ */
++#define CFG_DCACHE_SIZE 32768 /* For AMCC 440 CPUs */
++#define CFG_CACHELINE_SIZE 32 /* ... */
++#define CFG_CACHELINE_SHIFT 5 /* log base 2 of the above value */
++
++/*
++ * Internal Definitions
++ *
++ * Boot Flags
++ */
++#define BOOTFLAG_COLD 0x01 /* Normal Power-On: Boot from FLASH */
++#define BOOTFLAG_WARM 0x02 /* Software reboot */
++
++#if (CONFIG_COMMANDS & CFG_CMD_KGDB)
++#define CONFIG_KGDB_BAUDRATE 230400 /* speed to run kgdb serial port */
++#define CONFIG_KGDB_SER_INDEX 2 /* which serial port to use */
++#endif
++#endif /* __CONFIG_H */
+diff -Naupr u-boot-1.1.6/include/configs/IceCube.h u-boot-1.1.6-fsl-1/include/configs/IceCube.h
+--- u-boot-1.1.6/include/configs/IceCube.h 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/include/configs/IceCube.h 2006-12-06 10:33:49.000000000 -0600
+@@ -172,6 +172,19 @@
+ #undef CFG_IPBSPEED_133 /* define for 133MHz speed */
+ #endif
+ #endif /* CONFIG_MPC5200 */
++
++/* pass open firmware flat tree */
++#define CONFIG_OF_FLAT_TREE 1
++#define CONFIG_OF_BOARD_SETUP 1
++
++/* maximum size of the flat tree (8K) */
++#define OF_FLAT_TREE_MAX_SIZE 8192
++
++#define OF_CPU "PowerPC,5200@0"
++#define OF_SOC "soc5200@f0000000"
++#define OF_TBCLK (bd->bi_busfreq / 8)
++#define OF_STDOUT_PATH "/soc5200@f0000000/serial@2000"
++
+ /*
+ * I2C configuration
+ */
+diff -Naupr u-boot-1.1.6/include/configs/MPC8349EMDS.h u-boot-1.1.6-fsl-1/include/configs/MPC8349EMDS.h
+--- u-boot-1.1.6/include/configs/MPC8349EMDS.h 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/include/configs/MPC8349EMDS.h 2006-11-10 11:24:30.000000000 -0600
+@@ -36,6 +36,7 @@
+ */
+ #define CONFIG_E300 1 /* E300 Family */
+ #define CONFIG_MPC83XX 1 /* MPC83XX family */
++#define CONFIG_MPC834X 1 /* MPC834X family */
+ #define CONFIG_MPC8349 1 /* MPC8349 specific */
+ #define CONFIG_MPC8349EMDS 1 /* MPC8349EMDS board specific */
+
+@@ -59,9 +60,20 @@
+ #endif
+ #endif
+
++#define CFG_SCCR_INIT (SCCR_DEFAULT & (~SCCR_CLK_MASK))
++#define CFG_SCCR_TSEC1CM SCCR_TSEC1CM_1 /* TSEC1 clock setting */
++#define CFG_SCCR_TSEC2CM SCCR_TSEC2CM_1 /* TSEC2 clock setting */
++#define CFG_SCCR_ENCCM SCCR_ENCCM_3 /* ENC clock setting */
++#define CFG_SCCR_USBCM SCCR_USBCM_3 /* USB clock setting */
++#define CFG_SCCR_VAL ( CFG_SCCR_INIT \
++ | CFG_SCCR_TSEC1CM \
++ | CFG_SCCR_TSEC2CM \
++ | CFG_SCCR_ENCCM \
++ | CFG_SCCR_USBCM )
++
+ #define CONFIG_BOARD_EARLY_INIT_F /* call board_pre_init */
+
+-#define CFG_IMMRBAR 0xE0000000
++#define CFG_IMMR 0xE0000000
+
+ #undef CFG_DRAM_TEST /* memory test, takes time */
+ #define CFG_MEMTEST_START 0x00000000 /* memtest region */
+@@ -299,8 +311,8 @@
+ #define CFG_BAUDRATE_TABLE \
+ {300, 600, 1200, 2400, 4800, 9600, 19200, 38400,115200}
+
+-#define CFG_NS16550_COM1 (CFG_IMMRBAR+0x4500)
+-#define CFG_NS16550_COM2 (CFG_IMMRBAR+0x4600)
++#define CFG_NS16550_COM1 (CFG_IMMR+0x4500)
++#define CFG_NS16550_COM2 (CFG_IMMR+0x4600)
+
+ /* Use the HUSH parser */
+ #define CFG_HUSH_PARSER
+@@ -308,20 +320,35 @@
+ #define CFG_PROMPT_HUSH_PS2 "> "
+ #endif
+
++/* pass open firmware flat tree */
++#define CONFIG_OF_FLAT_TREE 1
++#define CONFIG_OF_BOARD_SETUP 1
++
++/* maximum size of the flat tree (8K) */
++#define OF_FLAT_TREE_MAX_SIZE 8192
++
++#define OF_CPU "PowerPC,8349@0"
++#define OF_SOC "soc8349@e0000000"
++#define OF_TBCLK (bd->bi_busfreq / 4)
++#define OF_STDOUT_PATH "/soc8349@e0000000/serial@4500"
++
+ /* I2C */
+ #define CONFIG_HARD_I2C /* I2C with hardware support*/
+ #undef CONFIG_SOFT_I2C /* I2C bit-banged */
++#define CONFIG_FSL_I2C
++#define CONFIG_I2C_MULTI_BUS
++#define CONFIG_I2C_CMD_TREE
+ #define CFG_I2C_SPEED 400000 /* I2C speed and slave address */
+ #define CFG_I2C_SLAVE 0x7F
+-#define CFG_I2C_NOPROBES {0x69} /* Don't probe these addrs */
++#define CFG_I2C_NOPROBES {{0,0x69}} /* Don't probe these addrs */
+ #define CFG_I2C_OFFSET 0x3000
+ #define CFG_I2C2_OFFSET 0x3100
+
+ /* TSEC */
+ #define CFG_TSEC1_OFFSET 0x24000
+-#define CFG_TSEC1 (CFG_IMMRBAR+CFG_TSEC1_OFFSET)
++#define CFG_TSEC1 (CFG_IMMR+CFG_TSEC1_OFFSET)
+ #define CFG_TSEC2_OFFSET 0x25000
+-#define CFG_TSEC2 (CFG_IMMRBAR+CFG_TSEC2_OFFSET)
++#define CFG_TSEC2 (CFG_IMMR+CFG_TSEC2_OFFSET)
+
+ /* USB */
+ #define CFG_USE_MPC834XSYS_USB_PHY 1 /* Use SYS board PHY */
+@@ -615,8 +642,8 @@
+ #endif
+
+ /* IMMRBAR @ 0xE0000000, PCI IO @ 0xE2000000 & BCSR @ 0xE2400000 */
+-#define CFG_IBAT5L (CFG_IMMRBAR | BATL_PP_10 | BATL_CACHEINHIBIT | BATL_GUARDEDSTORAGE)
+-#define CFG_IBAT5U (CFG_IMMRBAR | BATU_BL_256M | BATU_VS | BATU_VP)
++#define CFG_IBAT5L (CFG_IMMR | BATL_PP_10 | BATL_CACHEINHIBIT | BATL_GUARDEDSTORAGE)
++#define CFG_IBAT5U (CFG_IMMR | BATU_BL_256M | BATU_VS | BATU_VP)
+
+ /* SDRAM @ 0xF0000000, stack in DCACHE 0xFDF00000 & FLASH @ 0xFE000000 */
+ #define CFG_IBAT6L (0xF0000000 | BATL_PP_10 | BATL_MEMCOHERENCE)
+@@ -666,11 +693,11 @@
+ #define CONFIG_ETH1ADDR 00:E0:0C:00:7E:21
+ #endif
+
+-#define CONFIG_IPADDR 192.168.205.5
++#define CONFIG_IPADDR 192.168.1.253
+
+ #define CONFIG_HOSTNAME mpc8349emds
+-#define CONFIG_ROOTPATH /opt/eldk/ppc_6xx
+-#define CONFIG_BOOTFILE /tftpboot/tqm83xx/uImage
++#define CONFIG_ROOTPATH /nfsroot/rootfs
++#define CONFIG_BOOTFILE uImage
+
+ #define CONFIG_SERVERIP 192.168.1.1
+ #define CONFIG_GATEWAYIP 192.168.1.1
+@@ -703,14 +730,31 @@
+ "bootm ${kernel_addr} ${ramdisk_addr}\0" \
+ "net_nfs=tftp 200000 ${bootfile};run nfsargs addip addtty;" \
+ "bootm\0" \
+- "rootpath=/opt/eldk/ppc_6xx\0" \
+- "bootfile=/tftpboot/mpc8349emds/uImage\0" \
+ "load=tftp 100000 /tftpboot/mpc8349emds/u-boot.bin\0" \
+ "update=protect off fe000000 fe03ffff; " \
+ "era fe000000 fe03ffff; cp.b 100000 fe000000 ${filesize}\0" \
+ "upd=run load;run update\0" \
++ "fdtaddr=400000\0" \
++ "fdtfile=mpc8349emds.dtb\0" \
+ ""
+
++#define CONFIG_NFSBOOTCOMMAND \
++ "setenv bootargs root=/dev/nfs rw " \
++ "nfsroot=$serverip:$rootpath " \
++ "ip=$ipaddr:$serverip:$gatewayip:$netmask:$hostname:$netdev:off " \
++ "console=$consoledev,$baudrate $othbootargs;" \
++ "tftp $loadaddr $bootfile;" \
++ "tftp $fdtaddr $fdtfile;" \
++ "bootm $loadaddr - $fdtaddr"
++
++#define CONFIG_RAMBOOTCOMMAND \
++ "setenv bootargs root=/dev/ram rw " \
++ "console=$consoledev,$baudrate $othbootargs;" \
++ "tftp $ramdiskaddr $ramdiskfile;" \
++ "tftp $loadaddr $bootfile;" \
++ "tftp $fdtaddr $fdtfile;" \
++ "bootm $loadaddr $ramdiskaddr $fdtaddr"
++
+ #define CONFIG_BOOTCOMMAND "run flash_self"
+
+ #endif /* __CONFIG_H */
+diff -Naupr u-boot-1.1.6/include/configs/MPC8349ITX.h u-boot-1.1.6-fsl-1/include/configs/MPC8349ITX.h
+--- u-boot-1.1.6/include/configs/MPC8349ITX.h 1969-12-31 18:00:00.000000000 -0600
++++ u-boot-1.1.6-fsl-1/include/configs/MPC8349ITX.h 2006-12-06 10:33:49.000000000 -0600
+@@ -0,0 +1,804 @@
++/*
++ * Copyright (C) Freescale Semiconductor, Inc. 2006. All rights reserved.
++ *
++ * See file CREDITS for list of people who contributed to this
++ * project.
++ *
++ * 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
++ */
++
++/*
++ MPC8349E-mITX board configuration file
++
++ Memory map:
++
++ 0x0000_0000-0x0FFF_FFFF DDR SDRAM (256 MB)
++ 0x8000_0000-0x9FFF_FFFF PCI1 memory space (512 MB)
++ 0xA000_0000-0xBFFF_FFFF PCI2 memory space (512 MB)
++ 0xE000_0000-0xEFFF_FFFF IMMR (1 MB)
++ 0xE200_0000-0xE2FF_FFFF PCI1 I/O space (16 MB)
++ 0xE300_0000-0xE3FF_FFFF PCI2 I/O space (16 MB)
++ 0xF000_0000-0xF000_FFFF Compact Flash
++ 0xF001_0000-0xF001_FFFF Local bus expansion slot
++ 0xF800_0000-0xF801_FFFF GBE L2 Switch VSC7385
++ 0xFF00_0000-0xFF7F_FFFF Alternative bank of Flash memory (8MB)
++ 0xFF80_0000-0xFFFF_FFFF Boot Flash (8 MB)
++
++ I2C address list:
++ Align. Board
++ Bus Addr Part No. Description Length Location
++ ----------------------------------------------------------------
++ I2C0 0x50 M24256-BWMN6P Board EEPROM 2 U64
++
++ I2C1 0x20 PCF8574 I2C Expander 0 U8
++ I2C1 0x21 PCF8574 I2C Expander 0 U10
++ I2C1 0x38 PCF8574A I2C Expander 0 U8
++ I2C1 0x39 PCF8574A I2C Expander 0 U10
++ I2C1 0x51 (DDR) DDR EEPROM 1 U1
++ I2C1 0x68 DS1339 RTC 1 U68
++
++ Note that a given board has *either* a pair of 8574s or a pair of 8574As.
++*/
++
++#ifndef __CONFIG_H
++#define __CONFIG_H
++
++#undef DEBUG
++
++/*
++ * High Level Configuration Options
++ */
++#define CONFIG_MPC834X /* MPC834x family (8343, 8347, 8349) */
++#define CONFIG_MPC8349 /* MPC8349 specific */
++
++#define CONFIG_PCI
++
++#define CONFIG_COMPACT_FLASH /* The CF card interface on the back of the board */
++#define CONFIG_RTC_DS1337
++
++/* I2C */
++#define CONFIG_HARD_I2C
++
++#ifdef CONFIG_HARD_I2C
++
++#define CONFIG_MISC_INIT_F
++#define CONFIG_MISC_INIT_R
++
++#define CONFIG_FSL_I2C
++#define CONFIG_I2C_MULTI_BUS
++#define CONFIG_I2C_CMD_TREE
++#define CFG_I2C_OFFSET 0x3000
++#define CFG_I2C2_OFFSET 0x3100
++#define CFG_SPD_BUS_NUM 1 /* The I2C bus for SPD */
++
++#define CFG_I2C_8574_ADDR1 0x20 /* I2C1, PCF8574 */
++#define CFG_I2C_8574_ADDR2 0x21 /* I2C1, PCF8574 */
++#define CFG_I2C_8574A_ADDR1 0x38 /* I2C1, PCF8574A */
++#define CFG_I2C_8574A_ADDR2 0x39 /* I2C1, PCF8574A */
++#define CFG_I2C_EEPROM_ADDR 0x50 /* I2C0, Board EEPROM */
++#define CFG_I2C_RTC_ADDR 0x68 /* I2C1, DS1339 RTC*/
++#define SPD_EEPROM_ADDRESS 0x51 /* I2C1, DDR */
++
++#define CFG_I2C_SPEED 400000 /* I2C speed and slave address */
++#define CFG_I2C_SLAVE 0x7F
++
++/* Don't probe these addresses: */
++#define CFG_I2C_NOPROBES {{1, CFG_I2C_8574_ADDR1}, \
++ {1, CFG_I2C_8574_ADDR2}, \
++ {1, CFG_I2C_8574A_ADDR1}, \
++ {1, CFG_I2C_8574A_ADDR2}}
++/* Bit definitions for the 8574[A] I2C expander */
++#define I2C_8574_REVISION 0x03 /* Board revision, 00=0.0, 01=0.1, 10=1.0 */
++#define I2C_8574_CF 0x08 /* 1=Compact flash absent, 0=present */
++#define I2C_8574_MPCICLKRN 0x10 /* MiniPCI Clk Run */
++#define I2C_8574_PCI66 0x20 /* 0=33MHz PCI, 1=66MHz PCI */
++#define I2C_8574_FLASHSIDE 0x40 /* 0=Reset vector from U4, 1=from U7*/
++
++#undef CONFIG_SOFT_I2C
++
++#endif
++
++#define CONFIG_TSEC_ENET /* tsec ethernet support */
++#define CONFIG_ENV_OVERWRITE
++
++#define PCI_66M
++#ifdef PCI_66M
++#define CONFIG_83XX_CLKIN 66666666 /* in Hz */
++#else
++#define CONFIG_83XX_CLKIN 33333333 /* in Hz */
++#endif
++
++#ifndef CONFIG_SYS_CLK_FREQ
++#ifdef PCI_66M
++#define CONFIG_SYS_CLK_FREQ 66666666
++#else
++#define CONFIG_SYS_CLK_FREQ 33333333
++#endif
++#endif
++
++#define CFG_IMMR 0xE0000000 /* The IMMR is relocated to here */
++
++#undef CFG_DRAM_TEST /* memory test, takes time */
++#define CFG_MEMTEST_START 0x00003000 /* memtest region */
++#define CFG_MEMTEST_END 0x07100000 /* only has 128M */
++
++/*
++ * DDR Setup
++ */
++#undef CONFIG_DDR_ECC /* only for ECC DDR module */
++#undef CONFIG_DDR_ECC_CMD /* use DDR ECC user commands */
++#define CONFIG_SPD_EEPROM /* use SPD EEPROM for DDR setup*/
++
++/*
++ * 32-bit data path mode.
++ *
++ * Please note that using this mode for devices with the real density of 64-bit
++ * effectively reduces the amount of available memory due to the effect of
++ * wrapping around while translating address to row/columns, for example in the
++ * 256MB module the upper 128MB get aliased with contents of the lower
++ * 128MB); normally this define should be used for devices with real 32-bit
++ * data path.
++ */
++#undef CONFIG_DDR_32BIT
++
++#define CFG_DDR_BASE 0x00000000 /* DDR is system memory*/
++#define CFG_SDRAM_BASE CFG_DDR_BASE
++#define CFG_DDR_SDRAM_BASE CFG_DDR_BASE
++#undef CONFIG_DDR_2T_TIMING
++#define CFG_83XX_DDR_USES_CS0
++
++#ifndef CONFIG_SPD_EEPROM
++/*
++ * Manually set up DDR parameters
++ */
++ #define CFG_DDR_SIZE 256 /* Mb */
++ #define CFG_DDR_CONFIG (CSCONFIG_EN | CSCONFIG_ROW_BIT_13 | CSCONFIG_COL_BIT_10)
++
++ #define CFG_DDR_TIMING_1 0x26242321
++ #define CFG_DDR_TIMING_2 0x00000800 /* P9-45, may need tuning */
++#endif
++
++/* FLASH on the Local Bus */
++#define CFG_FLASH_CFI /* use the Common Flash Interface */
++#define CFG_FLASH_CFI_DRIVER /* use the CFI driver */
++#define CFG_FLASH_BASE 0xFE000000 /* start of FLASH */
++#define CFG_FLASH_SIZE 16 /* FLASH size in MB */
++#define CFG_FLASH_EMPTY_INFO
++
++#define CFG_BR0_PRELIM (CFG_FLASH_BASE | BR_PS_16 | BR_V)
++#define CFG_OR0_PRELIM ((~(CFG_FLASH_SIZE - 1) << 20) | OR_UPM_XAM | \
++ OR_GPCM_CSNT | OR_GPCM_ACS_0b11 | OR_GPCM_XACS | OR_GPCM_SCY_15 | \
++ OR_GPCM_TRLX | OR_GPCM_EHTR | OR_GPCM_EAD)
++#define CFG_LBLAWBAR0_PRELIM CFG_FLASH_BASE /* Window base at flash base */
++#define CFG_LBLAWAR0_PRELIM 0x80000017 /* 16Mb window bytes */
++
++/* VSC7385 on the Local Bus */
++#define CFG_VSC7385_BASE 0xF8000000 /* start of VSC7385 */
++
++#define CFG_BR1_PRELIM (CFG_VSC7385_BASE | BR_PS_8 | BR_V)
++#define CFG_OR1_PRELIM (0xFFFE0000 /* 128KB */ | \
++ OR_GPCM_CSNT | OR_GPCM_XACS | OR_GPCM_SCY_15 | \
++ OR_GPCM_SETA | OR_GPCM_TRLX | OR_GPCM_EHTR | OR_GPCM_EAD)
++
++#define CFG_LBLAWBAR1_PRELIM CFG_VSC7385_BASE /* Access window base at VSC7385 base */
++#define CFG_LBLAWAR1_PRELIM 0x80000010 /* Access window size 128K */
++
++#define CFG_MAX_FLASH_BANKS 2 /* number of banks */
++#define CFG_MAX_FLASH_SECT 135 /* sectors per device */
++
++#define CFG_FLASH_BANKS_LIST {CFG_FLASH_BASE, CFG_FLASH_BASE + 0x800000}
++
++#undef CFG_FLASH_CHECKSUM
++#define CFG_FLASH_ERASE_TOUT 60000 /* Flash Erase Timeout (ms) */
++#define CFG_FLASH_WRITE_TOUT 500 /* Flash Write Timeout (ms) */
++
++#define CFG_LED_BASE 0xF9000000 /* start of LED and Board ID */
++#define CFG_BR2_PRELIM (CFG_LED_BASE | BR_PS_8 | BR_V)
++#define CFG_OR2_PRELIM (0xFFE00000 /* 2MB */ | \
++ OR_GPCM_CSNT | OR_GPCM_ACS_0b11 | OR_GPCM_XACS | \
++ OR_GPCM_SCY_9 | \
++ OR_GPCM_TRLX | OR_GPCM_EHTR | OR_GPCM_EAD)
++
++#ifdef CONFIG_COMPACT_FLASH
++
++#define CFG_CF_BASE 0xF0000000
++
++#define CFG_BR3_PRELIM (CFG_CF_BASE | BR_PS_16 | BR_MS_UPMA | BR_V)
++#define CFG_OR3_PRELIM (OR_UPM_AM | OR_UPM_BI)
++
++#define CFG_LBLAWBAR2_PRELIM CFG_CF_BASE /* Window base at flash base + LED & Board ID */
++#define CFG_LBLAWAR2_PRELIM 0x8000000F /* 64K bytes */
++
++#undef CONFIG_IDE_RESET
++#undef CONFIG_IDE_PREINIT
++
++#define CFG_IDE_MAXBUS 1
++#define CFG_IDE_MAXDEVICE 1
++
++#define CFG_ATA_IDE0_OFFSET 0x0000
++#define CFG_ATA_BASE_ADDR CFG_CF_BASE
++#define CFG_ATA_DATA_OFFSET 0x0000
++#define CFG_ATA_REG_OFFSET 0
++#define CFG_ATA_ALT_OFFSET 0x0200
++#define CFG_ATA_STRIDE 2
++
++#define ATA_RESET_TIME 1 /* If a CF card is not inserted, time out quickly */
++
++#endif
++
++#define CONFIG_DOS_PARTITION
++
++#define CFG_MID_FLASH_JUMP 0x7F000000
++#define CFG_MONITOR_BASE TEXT_BASE /* start of monitor */
++
++
++#if (CFG_MONITOR_BASE < CFG_FLASH_BASE)
++#define CFG_RAMBOOT
++#else
++#undef CFG_RAMBOOT
++#endif
++
++#define CONFIG_L1_INIT_RAM
++#define CFG_INIT_RAM_LOCK
++#define CFG_INIT_RAM_ADDR 0xFD000000 /* Initial RAM address */
++#define CFG_INIT_RAM_END 0x1000 /* End of used area in RAM*/
++
++#define CFG_GBL_DATA_SIZE 0x100 /* num bytes initial data */
++#define CFG_GBL_DATA_OFFSET (CFG_INIT_RAM_END - CFG_GBL_DATA_SIZE)
++#define CFG_INIT_SP_OFFSET CFG_GBL_DATA_OFFSET
++
++#define CFG_MONITOR_LEN (256 * 1024) /* Reserve 256 kB for Mon */
++#define CFG_MALLOC_LEN (128 * 1024) /* Reserved for malloc */
++
++/*
++ * Local Bus LCRR and LBCR regs
++ * LCRR: DLL bypass, Clock divider is 4
++ * External Local Bus rate is
++ * CLKIN * HRCWL_CSB_TO_CLKIN / HRCWL_LCL_BUS_TO_SCB_CLK / LCRR_CLKDIV
++ */
++#define CFG_LCRR (LCRR_DBYP | LCRR_CLKDIV_4)
++#define CFG_LBC_LBCR 0x00000000
++
++#undef CFG_LB_SDRAM /* if board has SRDAM on local bus */
++
++#ifdef CFG_LB_SDRAM
++/*local bus BR2, OR2 definition for SDRAM if soldered on the ADS board*/
++/*
++ * Base Register 2 and Option Register 2 configure SDRAM.
++ * The SDRAM base address, CFG_LBC_SDRAM_BASE, is 0xf0000000.
++ *
++ * For BR2, need:
++ * Base address of 0xf0000000 = BR[0:16] = 1111 0000 0000 0000 0
++ * port-size = 32-bits = BR2[19:20] = 11
++ * no parity checking = BR2[21:22] = 00
++ * SDRAM for MSEL = BR2[24:26] = 011
++ * Valid = BR[31] = 1
++ *
++ * 0 4 8 12 16 20 24 28
++ * 1111 0000 0000 0000 0001 1000 0110 0001 = F0001861
++ */
++
++#define CFG_LBC_SDRAM_BASE 0xf0000000 /* Localbus SDRAM */
++#define CFG_LBC_SDRAM_SIZE 64 /* LBC SDRAM is 64MB */
++
++#define CFG_LBLAWBAR2_PRELIM 0xF0000000
++#define CFG_LBLAWAR2_PRELIM 0x80000019 /* 64M */
++
++#define CFG_BR2_PRELIM (CFG_LBC_SDRAM_BASE | BR_PS_32 | BR_MS_SDRAM | BR_V)
++#define CFG_OR2_PRELIM (0xFC000000 /* 64 MB */ | \
++ OR_SDRAM_XAM | \
++ ((9 - 7) << OR_SDRAM_COLS_SHIFT) | \
++ ((13 - 9) << OR_SDRAM_ROWS_SHIFT) | \
++ OR_SDRAM_EAD)
++
++#define CFG_LBC_LSRT 0x32000000 /* LB sdram refresh timer, about 6us */
++#define CFG_LBC_MRTPR 0x20000000 /* LB refresh timer prescal, 266MHz/32*/
++
++/*
++ * LSDMR masks
++ */
++#define CFG_LBC_LSDMR_RFEN (1 << (31 - 1))
++#define CFG_LBC_LSDMR_BSMA1516 (3 << (31 - 10))
++#define CFG_LBC_LSDMR_BSMA1617 (4 << (31 - 10))
++#define CFG_LBC_LSDMR_RFCR5 (3 << (31 - 16))
++#define CFG_LBC_LSDMR_RFCR8 (5 << (31 - 16))
++#define CFG_LBC_LSDMR_RFCR16 (7 << (31 - 16))
++#define CFG_LBC_LSDMR_PRETOACT3 (3 << (31 - 19))
++#define CFG_LBC_LSDMR_PRETOACT6 (5 << (31 - 19))
++#define CFG_LBC_LSDMR_PRETOACT7 (7 << (31 - 19))
++#define CFG_LBC_LSDMR_ACTTORW3 (3 << (31 - 22))
++#define CFG_LBC_LSDMR_ACTTORW7 (7 << (31 - 22))
++#define CFG_LBC_LSDMR_ACTTORW6 (6 << (31 - 22))
++#define CFG_LBC_LSDMR_BL8 (1 << (31 - 23))
++#define CFG_LBC_LSDMR_WRC2 (2 << (31 - 27))
++#define CFG_LBC_LSDMR_WRC3 (3 << (31 - 27))
++#define CFG_LBC_LSDMR_WRC4 (0 << (31 - 27))
++#define CFG_LBC_LSDMR_BUFCMD (1 << (31 - 29))
++#define CFG_LBC_LSDMR_CL3 (3 << (31 - 31))
++
++#define CFG_LBC_LSDMR_OP_NORMAL (0 << (31 - 4))
++#define CFG_LBC_LSDMR_OP_ARFRSH (1 << (31 - 4))
++#define CFG_LBC_LSDMR_OP_SRFRSH (2 << (31 - 4))
++#define CFG_LBC_LSDMR_OP_MRW (3 << (31 - 4))
++#define CFG_LBC_LSDMR_OP_PRECH (4 << (31 - 4))
++#define CFG_LBC_LSDMR_OP_PCHALL (5 << (31 - 4))
++#define CFG_LBC_LSDMR_OP_ACTBNK (6 << (31 - 4))
++#define CFG_LBC_LSDMR_OP_RWINV (7 << (31 - 4))
++
++#define CFG_LBC_LSDMR_COMMON ( CFG_LBC_LSDMR_RFEN \
++ | CFG_LBC_LSDMR_BSMA1516 \
++ | CFG_LBC_LSDMR_RFCR8 \
++ | CFG_LBC_LSDMR_PRETOACT6 \
++ | CFG_LBC_LSDMR_ACTTORW3 \
++ | CFG_LBC_LSDMR_BL8 \
++ | CFG_LBC_LSDMR_WRC3 \
++ | CFG_LBC_LSDMR_CL3 \
++ )
++
++/*
++ * SDRAM Controller configuration sequence.
++ */
++#define CFG_LBC_LSDMR_1 ( CFG_LBC_LSDMR_COMMON \
++ | CFG_LBC_LSDMR_OP_PCHALL)
++#define CFG_LBC_LSDMR_2 ( CFG_LBC_LSDMR_COMMON \
++ | CFG_LBC_LSDMR_OP_ARFRSH)
++#define CFG_LBC_LSDMR_3 ( CFG_LBC_LSDMR_COMMON \
++ | CFG_LBC_LSDMR_OP_ARFRSH)
++#define CFG_LBC_LSDMR_4 ( CFG_LBC_LSDMR_COMMON \
++ | CFG_LBC_LSDMR_OP_MRW)
++#define CFG_LBC_LSDMR_5 ( CFG_LBC_LSDMR_COMMON \
++ | CFG_LBC_LSDMR_OP_NORMAL)
++#endif
++
++/*
++ * Serial Port
++ */
++#define CONFIG_CONS_INDEX 1
++#undef CONFIG_SERIAL_SOFTWARE_FIFO
++#define CFG_NS16550
++#define CFG_NS16550_SERIAL
++#define CFG_NS16550_REG_SIZE 1
++#define CFG_NS16550_CLK get_bus_freq(0)
++
++#define CFG_BAUDRATE_TABLE \
++ {300, 600, 1200, 2400, 4800, 9600, 19200, 38400,115200}
++
++#define CFG_NS16550_COM1 (CFG_IMMR + 0x4500)
++#define CFG_NS16550_COM2 (CFG_IMMR + 0x4600)
++
++/* Use the HUSH parser */
++#define CFG_HUSH_PARSER
++#ifdef CFG_HUSH_PARSER
++#define CFG_PROMPT_HUSH_PS2 "> "
++#endif
++
++/* pass open firmware flat tree */
++#define CONFIG_OF_FLAT_TREE 1
++#define CONFIG_OF_BOARD_SETUP 1
++
++/* maximum size of the flat tree (8K) */
++#define OF_FLAT_TREE_MAX_SIZE 8192
++
++#define OF_CPU "PowerPC,8349@0"
++#define OF_SOC "soc8349@e0000000"
++#define OF_TBCLK (bd->bi_busfreq / 4)
++#define OF_STDOUT_PATH "/soc8349@e0000000/serial@4500"
++
++#ifdef CONFIG_PCI
++
++#define CONFIG_MPC83XX_PCI2
++
++/*
++ * General PCI
++ * Addresses are mapped 1-1.
++ */
++#define CFG_PCI1_MEM_BASE 0x80000000
++#define CFG_PCI1_MEM_PHYS CFG_PCI1_MEM_BASE
++#define CFG_PCI1_MEM_SIZE 0x10000000 /* 256M */
++#define CFG_PCI1_MMIO_BASE (CFG_PCI1_MEM_BASE + CFG_PCI1_MEM_SIZE)
++#define CFG_PCI1_MMIO_PHYS CFG_PCI1_MMIO_BASE
++#define CFG_PCI1_MMIO_SIZE 0x10000000 /* 256M */
++#define CFG_PCI1_IO_BASE 0x00000000
++#define CFG_PCI1_IO_PHYS 0xE2000000
++#define CFG_PCI1_IO_SIZE 0x01000000 /* 16M */
++
++#ifdef CONFIG_MPC83XX_PCI2
++#define CFG_PCI2_MEM_BASE (CFG_PCI1_MMIO_BASE + CFG_PCI1_MMIO_SIZE)
++#define CFG_PCI2_MEM_PHYS CFG_PCI2_MEM_BASE
++#define CFG_PCI2_MEM_SIZE 0x10000000 /* 256M */
++#define CFG_PCI2_MMIO_BASE (CFG_PCI2_MEM_BASE + CFG_PCI2_MEM_SIZE)
++#define CFG_PCI2_MMIO_PHYS CFG_PCI2_MMIO_BASE
++#define CFG_PCI2_MMIO_SIZE 0x10000000 /* 256M */
++#define CFG_PCI2_IO_BASE 0x00000000
++#define CFG_PCI2_IO_PHYS (CFG_PCI1_IO_PHYS + CFG_PCI1_IO_SIZE)
++#define CFG_PCI2_IO_SIZE 0x01000000 /* 16M */
++#endif
++
++#define _IO_BASE 0x00000000 /* points to PCI I/O space */
++
++#define CONFIG_NET_MULTI
++#define CONFIG_PCI_PNP /* do pci plug-and-play */
++
++#ifdef CONFIG_RTL8139
++/* This macro is used by RTL8139 but not defined in PPC architecture */
++#define KSEG1ADDR(x) (x)
++#endif
++
++#ifndef CONFIG_PCI_PNP
++ #define PCI_ENET0_IOADDR 0x00000000
++ #define PCI_ENET0_MEMADDR CFG_PCI2_MEM_BASE
++ #define PCI_IDSEL_NUMBER 0x0f /* IDSEL = AD15 */
++#endif
++
++#define CONFIG_PCI_SCAN_SHOW /* show pci devices on startup */
++
++#endif
++
++/* TSEC */
++
++#ifdef CONFIG_TSEC_ENET
++
++#ifndef CONFIG_NET_MULTI
++#define CONFIG_NET_MULTI
++#endif
++
++#define CONFIG_MII
++#define CONFIG_PHY_GIGE /* In case CFG_CMD_MII is specified */
++
++#define CONFIG_MPC83XX_TSEC1
++
++#ifdef CONFIG_MPC83XX_TSEC1
++#define CONFIG_MPC83XX_TSEC1_NAME "TSEC0"
++#define CFG_TSEC1_OFFSET 0x24000
++#define TSEC1_PHY_ADDR 0x1c /* VSC8201 uses address 0x1c */
++#define TSEC1_PHYIDX 0
++#endif
++
++#ifdef CONFIG_MPC83XX_TSEC2
++#define CONFIG_MPC83XX_TSEC2_NAME "TSEC1"
++#define CFG_TSEC2_OFFSET 0x25000
++#define CONFIG_UNKNOWN_TSEC /* TSEC2 is proprietary */
++#define TSEC2_PHY_ADDR 4
++#define TSEC2_PHYIDX 0
++#endif
++
++#define CONFIG_ETHPRIME "Freescale TSEC"
++
++#endif
++
++
++/*
++ * Environment
++ */
++#ifndef CFG_RAMBOOT
++ #define CFG_ENV_IS_IN_FLASH
++ #define CFG_ENV_ADDR (CFG_MONITOR_BASE + 0x40000)
++ #define CFG_ENV_SECT_SIZE 0x20000 /* 128K(one sector) for env */
++ #define CFG_ENV_SIZE 0x2000
++#else
++ #define CFG_NO_FLASH /* Flash is not usable now */
++ #define CFG_ENV_IS_NOWHERE /* Store ENV in memory only */
++ #define CFG_ENV_ADDR (CFG_MONITOR_BASE - 0x1000)
++ #define CFG_ENV_SIZE 0x2000
++#endif
++
++#define CONFIG_LOADS_ECHO /* echo on for serial download */
++#define CFG_LOADS_BAUD_CHANGE /* allow baudrate change */
++
++/* CONFIG_COMMANDS */
++
++#ifdef CONFIG_COMPACT_FLASH
++#define CONFIG_COMMANDS_CF (CFG_CMD_IDE | CFG_CMD_FAT)
++#else
++#define CONFIG_COMMANDS_CF 0
++#endif
++
++#ifdef CONFIG_PCI
++#define CONFIG_COMMANDS_PCI CFG_CMD_PCI
++#else
++#define CONFIG_COMMANDS_PCI 0
++#endif
++
++#ifdef CONFIG_HARD_I2C
++#define CONFIG_COMMANDS_I2C CFG_CMD_I2C
++#else
++#define CONFIG_COMMANDS_I2C 0
++#endif
++
++#define CONFIG_COMMANDS (CONFIG_CMD_DFL | \
++ CONFIG_COMMANDS_CF | \
++ CFG_CMD_NET | \
++ CFG_CMD_PING | \
++ CONFIG_COMMANDS_I2C | \
++ CONFIG_COMMANDS_PCI | \
++ CFG_CMD_SDRAM | \
++ CFG_CMD_DATE | \
++ CFG_CMD_CACHE | \
++ CFG_CMD_IRQ)
++#include <cmd_confdefs.h>
++
++/* Watchdog */
++
++#undef CONFIG_WATCHDOG /* watchdog disabled */
++#ifdef CONFIG_WATCHDOG
++#define CFG_WATCHDOG_VALUE 0xFFFFFFC3
++#endif
++
++/*
++ * Miscellaneous configurable options
++ */
++#define CFG_LONGHELP /* undef to save memory */
++#define CFG_LOAD_ADDR 0x2000000 /* default load address */
++#define CFG_PROMPT "MPC8349E-mITX> " /* Monitor Command Prompt */
++
++#if (CONFIG_COMMANDS & CFG_CMD_KGDB)
++ #define CFG_CBSIZE 1024 /* Console I/O Buffer Size */
++#else
++ #define CFG_CBSIZE 256 /* Console I/O Buffer Size */
++#endif
++
++#define CFG_PBSIZE (CFG_CBSIZE + sizeof(CFG_PROMPT) + 16) /* Print Buffer Size */
++#define CFG_MAXARGS 16 /* max number of command args */
++#define CFG_BARGSIZE CFG_CBSIZE /* Boot Argument Buffer Size */
++#define CFG_HZ 1000 /* decrementer freq: 1ms ticks */
++
++/*
++ * For booting Linux, the board info and command line data
++ * have to be in the first 8 MB of memory, since this is
++ * the maximum mapped by the Linux kernel during initialization.
++ */
++#define CFG_BOOTMAPSZ (8 << 20) /* Initial Memory map for Linux*/
++
++/* Cache Configuration */
++#define CFG_DCACHE_SIZE 32768
++#define CFG_CACHELINE_SIZE 32
++#if (CONFIG_COMMANDS & CFG_CMD_KGDB)
++#define CFG_CACHELINE_SHIFT 5 /* log2 of the above value */
++#endif
++
++#define CFG_RCWH_PCIHOST 0x80000000 /* PCIHOST */
++
++#define CFG_HRCW_LOW (\
++ HRCWL_LCL_BUS_TO_SCB_CLK_1X1 |\
++ HRCWL_DDR_TO_SCB_CLK_1X1 |\
++ HRCWL_CSB_TO_CLKIN_4X1 |\
++ HRCWL_VCO_1X2 |\
++ HRCWL_CORE_TO_CSB_2X1)
++
++#ifdef PCI_64BIT
++#define CFG_HRCW_HIGH (\
++ HRCWH_PCI_HOST |\
++ HRCWH_64_BIT_PCI |\
++ HRCWH_PCI1_ARBITER_ENABLE |\
++ HRCWH_PCI2_ARBITER_DISABLE |\
++ HRCWH_CORE_ENABLE |\
++ HRCWH_FROM_0X00000100 |\
++ HRCWH_BOOTSEQ_DISABLE |\
++ HRCWH_SW_WATCHDOG_DISABLE |\
++ HRCWH_ROM_LOC_LOCAL_16BIT |\
++ HRCWH_TSEC1M_IN_GMII |\
++ HRCWH_TSEC2M_IN_GMII )
++#else
++#define CFG_HRCW_HIGH (\
++ HRCWH_PCI_HOST |\
++ HRCWH_32_BIT_PCI |\
++ HRCWH_PCI1_ARBITER_ENABLE |\
++ HRCWH_PCI2_ARBITER_DISABLE |\
++ HRCWH_CORE_ENABLE |\
++ HRCWH_FROM_0XFFF00100 |\
++ HRCWH_BOOTSEQ_DISABLE |\
++ HRCWH_SW_WATCHDOG_DISABLE |\
++ HRCWH_ROM_LOC_LOCAL_16BIT |\
++ HRCWH_TSEC1M_IN_GMII |\
++ HRCWH_TSEC2M_IN_GMII )
++#endif
++
++/* System performance */
++#define CFG_ACR_PIPE_DEP 3 /* Arbiter pipeline depth (0-3) */
++#define CFG_ACR_RPTCNT 3 /* Arbiter repeat count (0-7) */
++#define CFG_SPCR_TSEC1EP 3 /* TSEC1 emergency priority (0-3) */
++#define CFG_SPCR_TSEC2EP 3 /* TSEC2 emergency priority (0-3) */
++#define CFG_SCCR_TSEC1CM 1 /* TSEC1 clock mode (0-3) */
++#define CFG_SCCR_TSEC2CM 1 /* TSEC2 & I2C0 clock mode (0-3) */
++#define CFG_ACR_RPTCNT 3 /* Arbiter repeat count */
++
++/* System IO Config */
++#define CFG_SICRH SICRH_TSOBI1 /* Needed for gigabit to work on TSEC 1 */
++#define CFG_SICRL (SICRL_LDP_A | SICRL_USB1)
++
++#define CFG_HID0_INIT 0x000000000
++
++#define CFG_HID0_FINAL CFG_HID0_INIT
++
++#define CFG_HID2 HID2_HBE
++
++/* DDR @ 0x00000000 */
++#define CFG_IBAT0L (CFG_SDRAM_BASE | BATL_PP_10 | BATL_MEMCOHERENCE)
++#define CFG_IBAT0U (CFG_SDRAM_BASE | BATU_BL_256M | BATU_VS | BATU_VP)
++
++/* PCI @ 0x80000000 */
++#ifdef CONFIG_PCI
++#define CFG_IBAT1L (CFG_PCI1_MEM_BASE | BATL_PP_10 | BATL_MEMCOHERENCE)
++#define CFG_IBAT1U (CFG_PCI1_MEM_BASE | BATU_BL_256M | BATU_VS | BATU_VP)
++#define CFG_IBAT2L (CFG_PCI1_MMIO_BASE | BATL_PP_10 | BATL_CACHEINHIBIT | BATL_GUARDEDSTORAGE)
++#define CFG_IBAT2U (CFG_PCI1_MMIO_BASE | BATU_BL_256M | BATU_VS | BATU_VP)
++#else
++#define CFG_IBAT1L 0
++#define CFG_IBAT1U 0
++#define CFG_IBAT2L 0
++#define CFG_IBAT2U 0
++#endif
++
++#ifdef CONFIG_MPC83XX_PCI2
++#define CFG_IBAT3L (CFG_PCI2_MEM_BASE | BATL_PP_10 | BATL_MEMCOHERENCE)
++#define CFG_IBAT3U (CFG_PCI2_MEM_BASE | BATU_BL_256M | BATU_VS | BATU_VP)
++#define CFG_IBAT4L (CFG_PCI2_MMIO_BASE | BATL_PP_10 | BATL_CACHEINHIBIT | BATL_GUARDEDSTORAGE)
++#define CFG_IBAT4U (CFG_PCI2_MMIO_BASE | BATU_BL_256M | BATU_VS | BATU_VP)
++#else
++#define CFG_IBAT3L 0
++#define CFG_IBAT3U 0
++#define CFG_IBAT4L 0
++#define CFG_IBAT4U 0
++#endif
++
++/* IMMRBAR @ 0xE0000000, PCI IO @ 0xE2000000 & BCSR @ 0xE2400000 */
++#define CFG_IBAT5L (CFG_IMMR | BATL_PP_10 | BATL_CACHEINHIBIT | BATL_GUARDEDSTORAGE)
++#define CFG_IBAT5U (CFG_IMMR | BATU_BL_256M | BATU_VS | BATU_VP)
++
++/* SDRAM @ 0xF0000000, stack in DCACHE 0xFDF00000 & FLASH @ 0xFE000000 */
++#define CFG_IBAT6L (0xF0000000 | BATL_PP_10 | BATL_MEMCOHERENCE)
++#define CFG_IBAT6U (0xF0000000 | BATU_BL_256M | BATU_VS | BATU_VP)
++
++#define CFG_IBAT7L 0
++#define CFG_IBAT7U 0
++
++#define CFG_DBAT0L CFG_IBAT0L
++#define CFG_DBAT0U CFG_IBAT0U
++#define CFG_DBAT1L CFG_IBAT1L
++#define CFG_DBAT1U CFG_IBAT1U
++#define CFG_DBAT2L CFG_IBAT2L
++#define CFG_DBAT2U CFG_IBAT2U
++#define CFG_DBAT3L CFG_IBAT3L
++#define CFG_DBAT3U CFG_IBAT3U
++#define CFG_DBAT4L CFG_IBAT4L
++#define CFG_DBAT4U CFG_IBAT4U
++#define CFG_DBAT5L CFG_IBAT5L
++#define CFG_DBAT5U CFG_IBAT5U
++#define CFG_DBAT6L CFG_IBAT6L
++#define CFG_DBAT6U CFG_IBAT6U
++#define CFG_DBAT7L CFG_IBAT7L
++#define CFG_DBAT7U CFG_IBAT7U
++
++/*
++ * Internal Definitions
++ *
++ * Boot Flags
++ */
++#define BOOTFLAG_COLD 0x01 /* Normal Power-On: Boot from FLASH */
++#define BOOTFLAG_WARM 0x02 /* Software reboot */
++
++#if (CONFIG_COMMANDS & CFG_CMD_KGDB)
++#define CONFIG_KGDB_BAUDRATE 230400 /* speed of kgdb serial port */
++#define CONFIG_KGDB_SER_INDEX 2 /* which serial port to use */
++#endif
++
++
++/*
++ * Environment Configuration
++ */
++#define CONFIG_ENV_OVERWRITE
++
++#ifdef CONFIG_MPC83XX_TSEC1
++#define CONFIG_ETHADDR 00:E0:0C:00:8C:01
++#endif
++
++#ifdef CONFIG_MPC83XX_TSEC2
++#define CONFIG_HAS_ETH1
++#define CONFIG_ETH1ADDR 00:E0:0C:00:8C:02
++#endif
++
++#if 1
++#define CONFIG_IPADDR 10.82.19.159
++#define CONFIG_SERVERIP 10.82.48.106
++#define CONFIG_GATEWAYIP 10.82.19.254
++#define CONFIG_NETMASK 255.255.252.0
++#define CONFIG_NETDEV eth0
++
++#define CONFIG_HOSTNAME mpc8349emitx
++#define CONFIG_ROOTPATH /nfsroot0/u/timur/itx-ltib/rootfs
++#define CONFIG_BOOTFILE timur/uImage
++
++#define CONFIG_UBOOTPATH timur/u-boot.bin
++#else
++#define CONFIG_IPADDR 192.168.1.253
++#define CONFIG_SERVERIP 192.168.1.1
++#define CONFIG_GATEWAYIP 192.168.1.1
++#define CONFIG_NETMASK 255.255.252.0
++#define CONFIG_NETDEV eth0
++
++#define CONFIG_HOSTNAME mpc8349emitx
++#define CONFIG_ROOTPATH /nfsroot/rootfs
++#define CONFIG_BOOTFILE uImage
++
++#define CONFIG_UBOOTPATH u-boot.bin
++#endif
++
++#define CONFIG_UBOOTSTART fe700000
++#define CONFIG_UBOOTEND fe77ffff
++
++#define CONFIG_LOADADDR 200000 /* default location for tftp and bootm */
++
++#define CONFIG_BAUDRATE 115200
++
++#undef CONFIG_BOOTCOMMAND
++#ifdef CONFIG_BOOTCOMMAND
++#define CONFIG_BOOTDELAY 6
++#else
++#define CONFIG_BOOTDELAY -1 /* -1 disables auto-boot */
++#endif
++
++#define XMK_STR(x) #x
++#define MK_STR(x) XMK_STR(x)
++
++#define CONFIG_BOOTARGS \
++ "root=/dev/nfs rw" \
++ " nfsroot=" MK_STR(CONFIG_SERVERIP) ":" MK_STR(CONFIG_ROOTPATH) \
++ " ip=" MK_STR(CONFIG_IPADDR) ":" MK_STR(CONFIG_SERVERIP) ":" \
++ MK_STR(CONFIG_GATEWAYIP) ":" MK_STR(CONFIG_NETMASK) ":" \
++ MK_STR(CONFIG_HOSTNAME) ":" MK_STR(CONFIG_NETDEV) ":off" \
++ " console=ttyS0," MK_STR(CONFIG_BAUDRATE)
++
++#define CONFIG_EXTRA_ENV_SETTINGS \
++ "netdev=" MK_STR(CONFIG_NETDEV) "\0" \
++ "tftpflash=tftpboot $loadaddr " MK_STR(CONFIG_UBOOTPATH) "; " \
++ "erase " MK_STR(CONFIG_UBOOTSTART) " " MK_STR(CONFIG_UBOOTEND) "; " \
++ "cp.b $loadaddr " MK_STR(CONFIG_UBOOTSTART) " $filesize; " \
++ "cmp.b $loadaddr " MK_STR(CONFIG_UBOOTSTART) " $filesize\0" \
++ "tftpupdate=tftpboot $loadaddr " MK_STR(CONFIG_UBOOTPATH) "; " \
++ "protect off FEF00000 FEF7FFFF; " \
++ "erase FEF00000 FEF7FFFF; " \
++ "cp.b $loadaddr FEF00000 $filesize; " \
++ "protect on FEF00000 FEF7FFFF; " \
++ "cmp.b $loadaddr FEF00000 $filesize\0" \
++ "tftplinux=tftpboot $loadaddr $bootfile; bootm\0" \
++ "copyuboot=erase " MK_STR(CONFIG_UBOOTSTART) " " MK_STR(CONFIG_UBOOTEND) "; " \
++ "cp.b fef00000 " MK_STR(CONFIG_UBOOTSTART) " 80000\0" \
++ "fdtaddr=400000\0" \
++ "fdtfile=mpc8349emitx.dtb\0" \
++ ""
++
++#define CONFIG_NFSBOOTCOMMAND \
++ "setenv bootargs root=/dev/nfs rw " \
++ "nfsroot=$serverip:$rootpath " \
++ "ip=$ipaddr:$serverip:$gatewayip:$netmask:$hostname:$netdev:off " \
++ "console=$consoledev,$baudrate $othbootargs;" \
++ "tftp $loadaddr $bootfile;" \
++ "tftp $fdtaddr $fdtfile;" \
++ "bootm $loadaddr - $fdtaddr"
++
++#define CONFIG_RAMBOOTCOMMAND \
++ "setenv bootargs root=/dev/ram rw " \
++ "console=$consoledev,$baudrate $othbootargs;" \
++ "tftp $ramdiskaddr $ramdiskfile;" \
++ "tftp $loadaddr $bootfile;" \
++ "tftp $fdtaddr $fdtfile;" \
++ "bootm $loadaddr $ramdiskaddr $fdtaddr"
++
++
++#undef MK_STR
++#undef XMK_STR
++
++#endif
+diff -Naupr u-boot-1.1.6/include/configs/MPC8360EMDS.h u-boot-1.1.6-fsl-1/include/configs/MPC8360EMDS.h
+--- u-boot-1.1.6/include/configs/MPC8360EMDS.h 1969-12-31 18:00:00.000000000 -0600
++++ u-boot-1.1.6-fsl-1/include/configs/MPC8360EMDS.h 2006-12-06 10:33:49.000000000 -0600
+@@ -0,0 +1,635 @@
++/*
++ * Copyright (C) 2006 Freescale Semiconductor, Inc.
++ *
++ * Dave Liu <daveliu@freescale.com>
++ *
++ * 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
++ */
++
++#ifndef __CONFIG_H
++#define __CONFIG_H
++
++#undef DEBUG
++
++/*
++ * High Level Configuration Options
++ */
++#define CONFIG_E300 1 /* E300 family */
++#define CONFIG_QE 1 /* Has QE */
++#define CONFIG_MPC83XX 1 /* MPC83XX family */
++#define CONFIG_MPC8360 1 /* MPC8360 CPU specific */
++#define CONFIG_MPC8360EMDS 1 /* MPC8360EMDS board specific */
++
++/*
++ * System Clock Setup
++ */
++#ifdef CONFIG_PCISLAVE
++#define CONFIG_83XX_PCICLK 66000000 /* in HZ */
++#else
++#define CONFIG_83XX_CLKIN 66000000 /* in Hz */
++#endif
++
++#ifndef CONFIG_SYS_CLK_FREQ
++#define CONFIG_SYS_CLK_FREQ 66000000
++#endif
++
++/*
++ * Hardware Reset Configuration Word
++ */
++#define CFG_HRCW_LOW (\
++ HRCWL_LCL_BUS_TO_SCB_CLK_1X1 |\
++ HRCWL_DDR_TO_SCB_CLK_1X1 |\
++ HRCWL_CSB_TO_CLKIN_4X1 |\
++ HRCWL_VCO_1X2 |\
++ HRCWL_CE_PLL_VCO_DIV_4 |\
++ HRCWL_CE_PLL_DIV_1X1 |\
++ HRCWL_CE_TO_PLL_1X6 |\
++ HRCWL_CORE_TO_CSB_2X1)
++
++#ifdef CONFIG_PCISLAVE
++#define CFG_HRCW_HIGH (\
++ HRCWH_PCI_AGENT |\
++ HRCWH_PCI1_ARBITER_DISABLE |\
++ HRCWH_PCICKDRV_DISABLE |\
++ HRCWH_CORE_ENABLE |\
++ HRCWH_FROM_0XFFF00100 |\
++ HRCWH_BOOTSEQ_DISABLE |\
++ HRCWH_SW_WATCHDOG_DISABLE |\
++ HRCWH_ROM_LOC_LOCAL_16BIT)
++#else
++#define CFG_HRCW_HIGH (\
++ HRCWH_PCI_HOST |\
++ HRCWH_PCI1_ARBITER_ENABLE |\
++ HRCWH_PCICKDRV_ENABLE |\
++ HRCWH_CORE_ENABLE |\
++ HRCWH_FROM_0X00000100 |\
++ HRCWH_BOOTSEQ_DISABLE |\
++ HRCWH_SW_WATCHDOG_DISABLE |\
++ HRCWH_ROM_LOC_LOCAL_16BIT)
++#endif
++
++/*
++ * System IO Config
++ */
++#define CFG_SICRH 0x00000000
++#define CFG_SICRL 0x40000000
++
++#define CONFIG_BOARD_EARLY_INIT_F /* call board_pre_init */
++
++/*
++ * IMMR new address
++ */
++#define CFG_IMMR 0xE0000000
++
++/*
++ * DDR Setup
++ */
++#define CFG_DDR_BASE 0x00000000 /* DDR is system memory */
++#define CFG_SDRAM_BASE CFG_DDR_BASE
++#define CFG_DDR_SDRAM_BASE CFG_DDR_BASE
++
++#define CFG_83XX_DDR_USES_CS0
++
++#undef CONFIG_DDR_ECC /* only for ECC DDR module */
++#define CONFIG_DDR_ECC_CMD /* Use DDR ECC user commands */
++
++#define CONFIG_SPD_EEPROM /* Use SPD EEPROM for DDR setup */
++#if defined(CONFIG_SPD_EEPROM)
++/*
++ * Determine DDR configuration from I2C interface.
++ */
++#define SPD_EEPROM_ADDRESS 0x52 /* DDR SODIMM */
++#else
++/*
++ * Manually set up DDR parameters
++ */
++#define CFG_DDR_SIZE 256 /* MB */
++#define CFG_DDR_CONFIG (CSCONFIG_EN | CSCONFIG_ROW_BIT_13 | CSCONFIG_COL_BIT_9)
++#define CFG_DDR_TIMING_1 0x37344321 /* tCL-tRCD-tRP-tRAS=2.5-3-3-7 */
++#define CFG_DDR_TIMING_2 0x00000800 /* may need tuning */
++#define CFG_DDR_CONTROL 0x42008000 /* Self refresh,2T timing */
++#define CFG_DDR_MODE 0x20000162 /* DLL,normal,seq,4/2.5 */
++#define CFG_DDR_INTERVAL 0x045b0100 /* page mode */
++#endif
++
++/*
++ * Memory test
++ */
++#undef CFG_DRAM_TEST /* memory test, takes time */
++#define CFG_MEMTEST_START 0x00000000 /* memtest region */
++#define CFG_MEMTEST_END 0x00100000
++
++/*
++ * The reserved memory
++ */
++
++#define CFG_MONITOR_BASE TEXT_BASE /* start of monitor */
++
++#if (CFG_MONITOR_BASE < CFG_FLASH_BASE)
++#define CFG_RAMBOOT
++#else
++#undef CFG_RAMBOOT
++#endif
++
++#define CFG_MONITOR_LEN (256 * 1024) /* Reserve 256 kB for Mon */
++#define CFG_MALLOC_LEN (128 * 1024) /* Reserved for malloc */
++
++/*
++ * Initial RAM Base Address Setup
++ */
++#define CFG_INIT_RAM_LOCK 1
++#define CFG_INIT_RAM_ADDR 0xE6000000 /* Initial RAM address */
++#define CFG_INIT_RAM_END 0x1000 /* End of used area in RAM */
++#define CFG_GBL_DATA_SIZE 0x100 /* num bytes initial data */
++#define CFG_GBL_DATA_OFFSET (CFG_INIT_RAM_END - CFG_GBL_DATA_SIZE)
++
++/*
++ * Local Bus Configuration & Clock Setup
++ */
++#define CFG_LCRR (LCRR_DBYP | LCRR_CLKDIV_4)
++#define CFG_LBC_LBCR 0x00000000
++
++/*
++ * FLASH on the Local Bus
++ */
++#define CFG_FLASH_CFI /* use the Common Flash Interface */
++#define CFG_FLASH_CFI_DRIVER /* use the CFI driver */
++#define CFG_FLASH_BASE 0xFE000000 /* FLASH base address */
++#define CFG_FLASH_SIZE 16 /* FLASH size is 16M */
++
++#define CFG_LBLAWBAR0_PRELIM CFG_FLASH_BASE /* Window base at flash base */
++#define CFG_LBLAWAR0_PRELIM 0x80000018 /* 32MB window size */
++
++#define CFG_BR0_PRELIM (CFG_FLASH_BASE | /* Flash Base address */ \
++ (2 << BR_PS_SHIFT) | /* 16 bit port size */ \
++ BR_V) /* valid */
++#define CFG_OR0_PRELIM 0xfe006ff7 /* 16MB Flash size */
++
++#define CFG_MAX_FLASH_BANKS 1 /* number of banks */
++#define CFG_MAX_FLASH_SECT 128 /* sectors per device */
++
++#undef CFG_FLASH_CHECKSUM
++
++/*
++ * BCSR on the Local Bus
++ */
++#define CFG_BCSR 0xF8000000
++#define CFG_LBLAWBAR1_PRELIM CFG_BCSR /* Access window base at BCSR base */
++#define CFG_LBLAWAR1_PRELIM 0x8000000E /* Access window size 32K */
++
++#define CFG_BR1_PRELIM (CFG_BCSR|0x00000801) /* Port size=8bit, MSEL=GPCM */
++#define CFG_OR1_PRELIM 0xFFFFE9f7 /* length 32K */
++
++/*
++ * SDRAM on the Local Bus
++ */
++#define CFG_LBC_SDRAM_BASE 0xF0000000 /* SDRAM base address */
++#define CFG_LBC_SDRAM_SIZE 64 /* LBC SDRAM is 64MB */
++
++#define CFG_LB_SDRAM /* if board has SRDAM on local bus */
++
++#ifdef CFG_LB_SDRAM
++#define CFG_LBLAWBAR2_PRELIM CFG_LBC_SDRAM_BASE
++#define CFG_LBLAWAR2_PRELIM 0x80000019 /* 64MB */
++
++/*local bus BR2, OR2 definition for SDRAM if soldered on the EPB board */
++/*
++ * Base Register 2 and Option Register 2 configure SDRAM.
++ * The SDRAM base address, CFG_LBC_SDRAM_BASE, is 0xf0000000.
++ *
++ * For BR2, need:
++ * Base address of 0xf0000000 = BR[0:16] = 1111 0000 0000 0000 0
++ * port size = 32-bits = BR2[19:20] = 11
++ * no parity checking = BR2[21:22] = 00
++ * SDRAM for MSEL = BR2[24:26] = 011
++ * Valid = BR[31] = 1
++ *
++ * 0 4 8 12 16 20 24 28
++ * 1111 0000 0000 0000 0001 1000 0110 0001 = f0001861
++ *
++ * CFG_LBC_SDRAM_BASE should be masked and OR'ed into
++ * the top 17 bits of BR2.
++ */
++
++#define CFG_BR2_PRELIM 0xf0001861 /*Port size=32bit, MSEL=SDRAM */
++
++/*
++ * The SDRAM size in MB, CFG_LBC_SDRAM_SIZE, is 64.
++ *
++ * For OR2, need:
++ * 64MB mask for AM, OR2[0:7] = 1111 1100
++ * XAM, OR2[17:18] = 11
++ * 9 columns OR2[19-21] = 010
++ * 13 rows OR2[23-25] = 100
++ * EAD set for extra time OR[31] = 1
++ *
++ * 0 4 8 12 16 20 24 28
++ * 1111 1100 0000 0000 0110 1001 0000 0001 = fc006901
++ */
++
++#define CFG_OR2_PRELIM 0xfc006901
++
++#define CFG_LBC_LSRT 0x32000000 /* LB sdram refresh timer, about 6us */
++#define CFG_LBC_MRTPR 0x20000000 /* LB refresh timer prescal, 266MHz/32 */
++
++/*
++ * LSDMR masks
++ */
++#define CFG_LBC_LSDMR_OP_NORMAL (0 << (31 - 4))
++#define CFG_LBC_LSDMR_OP_ARFRSH (1 << (31 - 4))
++#define CFG_LBC_LSDMR_OP_SRFRSH (2 << (31 - 4))
++#define CFG_LBC_LSDMR_OP_MRW (3 << (31 - 4))
++#define CFG_LBC_LSDMR_OP_PRECH (4 << (31 - 4))
++#define CFG_LBC_LSDMR_OP_PCHALL (5 << (31 - 4))
++#define CFG_LBC_LSDMR_OP_ACTBNK (6 << (31 - 4))
++#define CFG_LBC_LSDMR_OP_RWINV (7 << (31 - 4))
++
++#define CFG_LBC_LSDMR_COMMON 0x0063b723
++
++/*
++ * SDRAM Controller configuration sequence.
++ */
++#define CFG_LBC_LSDMR_1 ( CFG_LBC_LSDMR_COMMON \
++ | CFG_LBC_LSDMR_OP_PCHALL)
++#define CFG_LBC_LSDMR_2 ( CFG_LBC_LSDMR_COMMON \
++ | CFG_LBC_LSDMR_OP_ARFRSH)
++#define CFG_LBC_LSDMR_3 ( CFG_LBC_LSDMR_COMMON \
++ | CFG_LBC_LSDMR_OP_ARFRSH)
++#define CFG_LBC_LSDMR_4 ( CFG_LBC_LSDMR_COMMON \
++ | CFG_LBC_LSDMR_OP_MRW)
++#define CFG_LBC_LSDMR_5 ( CFG_LBC_LSDMR_COMMON \
++ | CFG_LBC_LSDMR_OP_NORMAL)
++
++#endif
++
++/*
++ * Windows to access PIB via local bus
++ */
++#define CFG_LBLAWBAR3_PRELIM 0xf8008000 /* windows base 0xf8008000 */
++#define CFG_LBLAWAR3_PRELIM 0x8000000f /* windows size 64KB */
++
++/*
++ * CS4 on Local Bus, to PIB
++ */
++#define CFG_BR4_PRELIM 0xf8008801 /* CS4 base address at 0xf8008000 */
++#define CFG_OR4_PRELIM 0xffffe9f7 /* size 32KB, port size 8bit, GPCM */
++
++/*
++ * CS5 on Local Bus, to PIB
++ */
++#define CFG_BR5_PRELIM 0xf8010801 /* CS5 base address at 0xf8010000 */
++#define CFG_OR5_PRELIM 0xffffe9f7 /* size 32KB, port size 8bit, GPCM */
++
++/*
++ * Serial Port
++ */
++#define CONFIG_CONS_INDEX 1
++#undef CONFIG_SERIAL_SOFTWARE_FIFO
++#define CFG_NS16550
++#define CFG_NS16550_SERIAL
++#define CFG_NS16550_REG_SIZE 1
++#define CFG_NS16550_CLK get_bus_freq(0)
++
++#define CFG_BAUDRATE_TABLE \
++ {300, 600, 1200, 2400, 4800, 9600, 19200, 38400,115200}
++
++#define CFG_NS16550_COM1 (CFG_IMMR+0x4500)
++#define CFG_NS16550_COM2 (CFG_IMMR+0x4600)
++
++/* Use the HUSH parser */
++#define CFG_HUSH_PARSER
++#ifdef CFG_HUSH_PARSER
++#define CFG_PROMPT_HUSH_PS2 "> "
++#endif
++
++/* pass open firmware flat tree */
++#define CONFIG_OF_FLAT_TREE 1
++#define CONFIG_OF_BOARD_SETUP 1
++
++/* maximum size of the flat tree (8K) */
++#define OF_FLAT_TREE_MAX_SIZE 8192
++
++#define OF_CPU "PowerPC,8360@0"
++#define OF_SOC "soc8360@e0000000"
++#define OF_TBCLK (bd->bi_busfreq / 4)
++#define OF_STDOUT_PATH "/soc8360@e0000000/serial@4500"
++
++/* I2C */
++#define CONFIG_HARD_I2C /* I2C with hardware support */
++#undef CONFIG_SOFT_I2C /* I2C bit-banged */
++#define CONFIG_FSL_I2C
++#define CFG_I2C_SPEED 400000 /* I2C speed and slave address */
++#define CFG_I2C_SLAVE 0x7F
++#define CFG_I2C_NOPROBES {0x52} /* Don't probe these addrs */
++#define CFG_I2C_OFFSET 0x3000
++#define CFG_I2C2_OFFSET 0x3100
++
++/*
++ * Config on-board RTC
++ */
++#define CONFIG_RTC_DS1374 /* use ds1374 rtc via i2c */
++#define CFG_I2C_RTC_ADDR 0x68 /* at address 0x68 */
++
++/*
++ * General PCI
++ * Addresses are mapped 1-1.
++ */
++#define CFG_PCI_MEM_BASE 0x80000000
++#define CFG_PCI_MEM_PHYS CFG_PCI_MEM_BASE
++#define CFG_PCI_MEM_SIZE 0x10000000 /* 256M */
++#define CFG_PCI_MMIO_BASE 0x90000000
++#define CFG_PCI_MMIO_PHYS CFG_PCI_MMIO_BASE
++#define CFG_PCI_MMIO_SIZE 0x10000000 /* 256M */
++#define CFG_PCI_IO_BASE 0xE0300000
++#define CFG_PCI_IO_PHYS 0xE0300000
++#define CFG_PCI_IO_SIZE 0x100000 /* 1M */
++
++#define CFG_PCI_SLV_MEM_LOCAL CFG_SDRAM_BASE
++#define CFG_PCI_SLV_MEM_BUS 0x00000000
++#define CFG_PCI_SLV_MEM_SIZE 0x80000000
++
++
++#ifdef CONFIG_PCI
++
++#define CONFIG_NET_MULTI
++#define CONFIG_PCI_PNP /* do pci plug-and-play */
++
++#undef CONFIG_EEPRO100
++#undef CONFIG_PCI_SCAN_SHOW /* show pci devices on startup */
++#define CFG_PCI_SUBSYS_VENDORID 0x1957 /* Freescale */
++
++#endif /* CONFIG_PCI */
++
++
++#ifndef CONFIG_NET_MULTI
++#define CONFIG_NET_MULTI 1
++#endif
++
++/*
++ * QE UEC ethernet configuration
++ */
++#define CONFIG_UEC_ETH
++#define CONFIG_ETHPRIME "Freescale GETH"
++#define CONFIG_PHY_MODE_NEED_CHANGE
++
++#define CONFIG_UEC_ETH1 /* GETH1 */
++
++#ifdef CONFIG_UEC_ETH1
++#define CFG_UEC1_UCC_NUM 0 /* UCC1 */
++#define CFG_UEC1_RX_CLK QE_CLK_NONE
++#define CFG_UEC1_TX_CLK QE_CLK9
++#define CFG_UEC1_ETH_TYPE GIGA_ETH
++#define CFG_UEC1_PHY_ADDR 0
++#define CFG_UEC1_INTERFACE_MODE ENET_1000_GMII
++#endif
++
++#define CONFIG_UEC_ETH2 /* GETH2 */
++
++#ifdef CONFIG_UEC_ETH2
++#define CFG_UEC2_UCC_NUM 1 /* UCC2 */
++#define CFG_UEC2_RX_CLK QE_CLK_NONE
++#define CFG_UEC2_TX_CLK QE_CLK4
++#define CFG_UEC2_ETH_TYPE GIGA_ETH
++#define CFG_UEC2_PHY_ADDR 1
++#define CFG_UEC2_INTERFACE_MODE ENET_1000_GMII
++#endif
++
++/*
++ * Environment
++ */
++
++#ifndef CFG_RAMBOOT
++ #define CFG_ENV_IS_IN_FLASH 1
++ #define CFG_ENV_ADDR (CFG_MONITOR_BASE + 0x40000)
++ #define CFG_ENV_SECT_SIZE 0x40000 /* 256K(one sector) for env */
++ #define CFG_ENV_SIZE 0x2000
++#else
++ #define CFG_NO_FLASH 1 /* Flash is not usable now */
++ #define CFG_ENV_IS_NOWHERE 1 /* Store ENV in memory only */
++ #define CFG_ENV_ADDR (CFG_MONITOR_BASE - 0x1000)
++ #define CFG_ENV_SIZE 0x2000
++#endif
++
++#define CONFIG_LOADS_ECHO 1 /* echo on for serial download */
++#define CFG_LOADS_BAUD_CHANGE 1 /* allow baudrate change */
++
++#if defined(CFG_RAMBOOT)
++#if defined(CONFIG_PCI)
++#define CONFIG_COMMANDS ((CONFIG_CMD_DFL \
++ | CFG_CMD_PING \
++ | CFG_CMD_ASKENV \
++ | CFG_CMD_PCI \
++ | CFG_CMD_I2C) \
++ & \
++ ~(CFG_CMD_ENV \
++ | CFG_CMD_LOADS))
++#else
++#define CONFIG_COMMANDS ((CONFIG_CMD_DFL \
++ | CFG_CMD_PING \
++ | CFG_CMD_ASKENV \
++ | CFG_CMD_I2C) \
++ & \
++ ~(CFG_CMD_ENV \
++ | CFG_CMD_LOADS))
++#endif
++#else
++#if defined(CONFIG_PCI)
++#define CONFIG_COMMANDS (CONFIG_CMD_DFL \
++ | CFG_CMD_PCI \
++ | CFG_CMD_PING \
++ | CFG_CMD_ASKENV \
++ | CFG_CMD_I2C)
++#else
++#define CONFIG_COMMANDS (CONFIG_CMD_DFL \
++ | CFG_CMD_PING \
++ | CFG_CMD_ASKENV \
++ | CFG_CMD_I2C )
++#endif
++#endif
++
++#include <cmd_confdefs.h>
++
++#undef CONFIG_WATCHDOG /* watchdog disabled */
++
++/*
++ * Miscellaneous configurable options
++ */
++#define CFG_LONGHELP /* undef to save memory */
++#define CFG_LOAD_ADDR 0x2000000 /* default load address */
++#define CFG_PROMPT "=> " /* Monitor Command Prompt */
++
++#if (CONFIG_COMMANDS & CFG_CMD_KGDB)
++ #define CFG_CBSIZE 1024 /* Console I/O Buffer Size */
++#else
++ #define CFG_CBSIZE 256 /* Console I/O Buffer Size */
++#endif
++
++#define CFG_PBSIZE (CFG_CBSIZE+sizeof(CFG_PROMPT)+16) /* Print Buffer Size */
++#define CFG_MAXARGS 16 /* max number of command args */
++#define CFG_BARGSIZE CFG_CBSIZE /* Boot Argument Buffer Size */
++#define CFG_HZ 1000 /* decrementer freq: 1ms ticks */
++
++/*
++ * For booting Linux, the board info and command line data
++ * have to be in the first 8 MB of memory, since this is
++ * the maximum mapped by the Linux kernel during initialization.
++ */
++#define CFG_BOOTMAPSZ (8 << 20) /* Initial Memory map for Linux */
++
++/*
++ * Core HID Setup
++ */
++#define CFG_HID0_INIT 0x000000000
++#define CFG_HID0_FINAL HID0_ENABLE_MACHINE_CHECK
++#define CFG_HID2 HID2_HBE
++
++/*
++ * Cache Config
++ */
++#define CFG_DCACHE_SIZE 32768
++#define CFG_CACHELINE_SIZE 32
++#if (CONFIG_COMMANDS & CFG_CMD_KGDB)
++#define CFG_CACHELINE_SHIFT 5 /*log base 2 of the above value */
++#endif
++
++/*
++ * MMU Setup
++ */
++
++/* DDR: cache cacheable */
++#define CFG_IBAT0L (CFG_SDRAM_BASE | BATL_PP_10 | BATL_MEMCOHERENCE)
++#define CFG_IBAT0U (CFG_SDRAM_BASE | BATU_BL_256M | BATU_VS | BATU_VP)
++#define CFG_DBAT0L CFG_IBAT0L
++#define CFG_DBAT0U CFG_IBAT0U
++
++/* IMMRBAR & PCI IO: cache-inhibit and guarded */
++#define CFG_IBAT1L (CFG_IMMR | BATL_PP_10 | \
++ BATL_CACHEINHIBIT | BATL_GUARDEDSTORAGE)
++#define CFG_IBAT1U (CFG_IMMR | BATU_BL_4M | BATU_VS | BATU_VP)
++#define CFG_DBAT1L CFG_IBAT1L
++#define CFG_DBAT1U CFG_IBAT1U
++
++/* BCSR: cache-inhibit and guarded */
++#define CFG_IBAT2L (CFG_BCSR | BATL_PP_10 | \
++ BATL_CACHEINHIBIT | BATL_GUARDEDSTORAGE)
++#define CFG_IBAT2U (CFG_BCSR | BATU_BL_128K | BATU_VS | BATU_VP)
++#define CFG_DBAT2L CFG_IBAT2L
++#define CFG_DBAT2U CFG_IBAT2U
++
++/* FLASH: icache cacheable, but dcache-inhibit and guarded */
++#define CFG_IBAT3L (CFG_FLASH_BASE | BATL_PP_10 | BATL_MEMCOHERENCE)
++#define CFG_IBAT3U (CFG_FLASH_BASE | BATU_BL_32M | BATU_VS | BATU_VP)
++#define CFG_DBAT3L (CFG_FLASH_BASE | BATL_PP_10 | \
++ BATL_CACHEINHIBIT | BATL_GUARDEDSTORAGE)
++#define CFG_DBAT3U CFG_IBAT3U
++
++/* Local bus SDRAM: cacheable */
++#define CFG_IBAT4L (CFG_LBC_SDRAM_BASE | BATL_PP_10 | BATL_MEMCOHERENCE)
++#define CFG_IBAT4U (CFG_LBC_SDRAM_BASE | BATU_BL_64M | BATU_VS | BATU_VP)
++#define CFG_DBAT4L CFG_IBAT4L
++#define CFG_DBAT4U CFG_IBAT4U
++
++/* Stack in dcache: cacheable, no memory coherence */
++#define CFG_IBAT5L (CFG_INIT_RAM_ADDR | BATL_PP_10)
++#define CFG_IBAT5U (CFG_INIT_RAM_ADDR | BATU_BL_128K | BATU_VS | BATU_VP)
++#define CFG_DBAT5L CFG_IBAT5L
++#define CFG_DBAT5U CFG_IBAT5U
++
++#ifdef CONFIG_PCI
++/* PCI MEM space: cacheable */
++#define CFG_IBAT6L (CFG_PCI_MEM_PHYS | BATL_PP_10 | BATL_MEMCOHERENCE)
++#define CFG_IBAT6U (CFG_PCI_MEM_PHYS | BATU_BL_256M | BATU_VS | BATU_VP)
++#define CFG_DBAT6L CFG_IBAT6L
++#define CFG_DBAT6U CFG_IBAT6U
++/* PCI MMIO space: cache-inhibit and guarded */
++#define CFG_IBAT7L (CFG_PCI_MMIO_PHYS | BATL_PP_10 | \
++ BATL_CACHEINHIBIT | BATL_GUARDEDSTORAGE)
++#define CFG_IBAT7U (CFG_PCI_MMIO_PHYS | BATU_BL_256M | BATU_VS | BATU_VP)
++#define CFG_DBAT7L CFG_IBAT7L
++#define CFG_DBAT7U CFG_IBAT7U
++#else
++#define CFG_IBAT6L (0)
++#define CFG_IBAT6U (0)
++#define CFG_IBAT7L (0)
++#define CFG_IBAT7U (0)
++#define CFG_DBAT6L CFG_IBAT6L
++#define CFG_DBAT6U CFG_IBAT6U
++#define CFG_DBAT7L CFG_IBAT7L
++#define CFG_DBAT7U CFG_IBAT7U
++#endif
++
++/*
++ * Internal Definitions
++ *
++ * Boot Flags
++ */
++#define BOOTFLAG_COLD 0x01 /* Normal Power-On: Boot from FLASH */
++#define BOOTFLAG_WARM 0x02 /* Software reboot */
++
++#if (CONFIG_COMMANDS & CFG_CMD_KGDB)
++#define CONFIG_KGDB_BAUDRATE 230400 /* speed of kgdb serial port */
++#define CONFIG_KGDB_SER_INDEX 2 /* which serial port to use */
++#endif
++
++/*
++ * Environment Configuration
++ */
++
++#define CONFIG_ENV_OVERWRITE
++
++#if defined(CONFIG_UEC_ETH)
++#define CONFIG_ETHADDR 00:04:9f:ef:01:01
++#define CONFIG_HAS_ETH1
++#define CONFIG_ETH1ADDR 00:04:9f:ef:01:02
++#endif
++
++#define CONFIG_BAUDRATE 115200
++
++#define CONFIG_LOADADDR 200000 /* default location for tftp and bootm */
++
++#define CONFIG_BOOTDELAY 6 /* -1 disables auto-boot */
++#undef CONFIG_BOOTARGS /* the boot command will set bootargs */
++
++#define CONFIG_EXTRA_ENV_SETTINGS \
++ "netdev=eth0\0" \
++ "consoledev=ttyS0\0" \
++ "ramdiskaddr=1000000\0" \
++ "ramdiskfile=ramfs.83xx\0" \
++ "fdtaddr=400000\0" \
++ "fdtfile=mpc8349emds.dtb\0" \
++ ""
++
++#define CONFIG_NFSBOOTCOMMAND \
++ "setenv bootargs root=/dev/nfs rw " \
++ "nfsroot=$serverip:$rootpath " \
++ "ip=$ipaddr:$serverip:$gatewayip:$netmask:$hostname:$netdev:off " \
++ "console=$consoledev,$baudrate $othbootargs;" \
++ "tftp $loadaddr $bootfile;" \
++ "tftp $fdtaddr $fdtfile;" \
++ "bootm $loadaddr - $fdtaddr"
++
++#define CONFIG_RAMBOOTCOMMAND \
++ "setenv bootargs root=/dev/ram rw " \
++ "console=$consoledev,$baudrate $othbootargs;" \
++ "tftp $ramdiskaddr $ramdiskfile;" \
++ "tftp $loadaddr $bootfile;" \
++ "tftp $fdtaddr $fdtfile;" \
++ "bootm $loadaddr $ramdiskaddr $fdtaddr"
++
++
++#define CONFIG_BOOTCOMMAND CONFIG_NFSBOOTCOMMAND
++
++#endif /* __CONFIG_H */
+diff -Naupr u-boot-1.1.6/include/configs/p3mx.h u-boot-1.1.6-fsl-1/include/configs/p3mx.h
+--- u-boot-1.1.6/include/configs/p3mx.h 1969-12-31 18:00:00.000000000 -0600
++++ u-boot-1.1.6-fsl-1/include/configs/p3mx.h 2006-12-06 10:33:49.000000000 -0600
+@@ -0,0 +1,450 @@
++/*
++ * (C) Copyright 2006
++ * Stefan Roese, DENX Software Engineering, sr@denx.de.
++ *
++ * Based on original work by
++ * Roel Loeffen, (C) Copyright 2006 Prodrive B.V.
++ *
++ * See file CREDITS for list of people who contributed to this
++ * project.
++ *
++ * 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
++ */
++
++/************************************************************************
++ * p3mx.h - configuration for Prodrive P3M750 & P3M7448 boards
++ *
++ * The defines:
++ * CONFIG_P3M750 or
++ * CONFIG_P3M7448
++ * are written into include/config.h by the "make xxx_config" command
++ ***********************************************************************/
++#ifndef __CONFIG_H
++#define __CONFIG_H
++
++/*-----------------------------------------------------------------------
++ * High Level Configuration Options
++ *----------------------------------------------------------------------*/
++#define CONFIG_P3Mx /* used for both board versions */
++
++#if defined (CONFIG_P3M750)
++#define CONFIG_750FX /* 750GL/GX/FX */
++#define CFG_BOARD_NAME "P3M750"
++#define CFG_BUS_HZ 100000000
++#define CFG_BUS_CLK CFG_BUS_HZ
++#define CFG_TCLK 100000000
++#elif defined (CONFIG_P3M7448)
++#define CONFIG_74xx
++#define CFG_BOARD_NAME "P3M7448"
++#define CFG_BUS_HZ 133333333
++#define CFG_BUS_CLK CFG_BUS_HZ
++#define CFG_TCLK 133333333
++#endif
++#define CFG_GT_DUAL_CPU /* also for JTAG even with one cpu */
++
++/* which initialization functions to call for this board */
++#define CFG_BOARD_ASM_INIT 1
++#define CONFIG_BOARD_EARLY_INIT_F 1 /* Call board_early_init_f */
++#define CONFIG_BOARD_EARLY_INIT_R 1 /* Call board_early_init_f */
++#define CONFIG_MISC_INIT_R 1 /* Call misc_init_r() */
++#define CONFIG_ADD_RAM_INFO 1 /* Print additional info */
++
++/*-----------------------------------------------------------------------
++ * Base addresses -- Note these are effective addresses where the
++ * actual resources get mapped (not physical addresses)
++ *----------------------------------------------------------------------*/
++#define CFG_SDRAM_BASE 0x00000000
++#ifdef CONFIG_P3M750
++#define CFG_SDRAM1_BASE 0x10000000 /* each 256 MByte */
++#endif
++
++#define CFG_MONITOR_LEN (256 << 10) /* Reserve 256 kB for Monitor */
++#if defined (CONFIG_P3M750)
++#define CFG_FLASH_BASE 0xff800000 /* start of flash banks */
++#define CFG_BOOT_SIZE _8M /* boot flash */
++#elif defined (CONFIG_P3M7448)
++#define CFG_FLASH_BASE 0xff000000 /* start of flash banks */
++#define CFG_BOOT_SIZE _16M /* boot flash */
++#endif
++#define CFG_BOOT_SPACE CFG_FLASH_BASE /* BOOT_CS0 flash 0 */
++#define CFG_MONITOR_BASE 0xfff00000
++#define CFG_RESET_ADDRESS 0xfff00100
++#define CFG_MALLOC_LEN (256 << 10) /* Reserve 256 kB for malloc */
++#define CFG_MISC_REGION_BASE 0xf0000000
++
++#define CFG_DFL_GT_REGS 0xf1000000 /* boot time GT_REGS */
++#define CFG_GT_REGS 0xf1000000 /* GT Registers are mapped here */
++#define CFG_INT_SRAM_BASE 0x42000000 /* GT offers 256k internal SRAM */
++
++/*-----------------------------------------------------------------------
++ * Initial RAM & stack pointer (placed in internal SRAM)
++ *----------------------------------------------------------------------*/
++ /*
++ * When locking data in cache you should point the CFG_INIT_RAM_ADDRESS
++ * To an unused memory region. The stack will remain in cache until RAM
++ * is initialized
++*/
++#undef CFG_INIT_RAM_LOCK
++#define CFG_INIT_RAM_ADDR 0x42000000
++#define CFG_INIT_RAM_END 0x1000
++#define CFG_GBL_DATA_SIZE 128 /* size in bytes reserved for init data */
++#define CFG_GBL_DATA_OFFSET (CFG_INIT_RAM_END - CFG_GBL_DATA_SIZE)
++
++
++/*-----------------------------------------------------------------------
++ * Serial Port
++ *----------------------------------------------------------------------*/
++#define CONFIG_MPSC /* MV64460 Serial */
++#define CONFIG_MPSC_PORT 0
++#define CONFIG_BAUDRATE 115200 /* console baudrate */
++#define CFG_BAUDRATE_TABLE { 9600, 19200, 38400, 57600, 115200, 230400 }
++#define CONFIG_LOADS_ECHO 1 /* echo on for serial download */
++#define CFG_LOADS_BAUD_CHANGE 1 /* allow baudrate change */
++
++/*-----------------------------------------------------------------------
++ * Ethernet
++ *----------------------------------------------------------------------*/
++/* Change the default ethernet port, use this define (options: 0, 1, 2) */
++#define CFG_ETH_PORT ETH_0
++#define CONFIG_NET_MULTI
++#define MV_ETH_DEVS 2
++#define CONFIG_PHY_RESET 1 /* reset phy upon startup */
++#define CONFIG_PHY_GIGE 1 /* Include GbE speed/duplex detection */
++
++/*-----------------------------------------------------------------------
++ * FLASH related
++ *----------------------------------------------------------------------*/
++#define CFG_FLASH_CFI /* The flash is CFI compatible */
++#define CFG_FLASH_CFI_DRIVER /* Use common CFI driver */
++#define CFG_MAX_FLASH_BANKS 1 /* max number of memory banks */
++#define CFG_MAX_FLASH_SECT 512 /* max number of sectors on one chip */
++#define CFG_FLASH_ERASE_TOUT 120000 /* Timeout for Flash Erase (in ms) */
++#define CFG_FLASH_WRITE_TOUT 500 /* Timeout for Flash Write (in ms) */
++#define CFG_FLASH_USE_BUFFER_WRITE 1 /* use buffered writes (20x faster) */
++#define CFG_FLASH_PROTECTION 1 /* use hardware flash protection */
++#define CFG_FLASH_EMPTY_INFO /* print 'E' for empty sector on flinfo */
++
++#define CFG_ENV_IS_IN_FLASH 1 /* use FLASH for environment vars */
++#if defined (CONFIG_P3M750)
++#define CFG_ENV_SECT_SIZE 0x20000 /* one sector (1 device)*/
++#elif defined (CONFIG_P3M7448)
++#define CFG_ENV_SECT_SIZE 0x40000 /* two sectors (2 devices parallel */
++#endif
++#define CFG_ENV_SIZE 0x2000 /* Total Size of Environment Sector */
++#define CFG_ENV_ADDR (CFG_MONITOR_BASE + CFG_MONITOR_LEN)
++
++/*-----------------------------------------------------------------------
++ * DDR SDRAM
++ *----------------------------------------------------------------------*/
++#define CONFIG_MV64460_ECC
++
++/*-----------------------------------------------------------------------
++ * I2C
++ *----------------------------------------------------------------------*/
++#define CFG_I2C_SPEED 100000 /* I2C speed default */
++
++/* I2C RTC */
++#define CONFIG_RTC_M41T11 1
++#define CFG_I2C_RTC_ADDR 0x68
++#define CFG_M41T11_BASE_YEAR 1900 /* play along with linux */
++
++/*-----------------------------------------------------------------------
++ * PCI stuff
++ *----------------------------------------------------------------------*/
++#define PCI_HOST_ADAPTER 0 /* configure ar pci adapter */
++#define PCI_HOST_FORCE 1 /* configure as pci host */
++#define PCI_HOST_AUTO 2 /* detected via arbiter enable */
++
++#define CONFIG_PCI /* include pci support */
++#define CONFIG_PCI_HOST PCI_HOST_FORCE /* select pci host function */
++#define CONFIG_PCI_PNP /* do pci plug-and-play */
++#define CONFIG_PCI_SCAN_SHOW /* show devices on bus */
++
++/* PCI MEMORY MAP section */
++#define CFG_PCI0_MEM_BASE 0x80000000
++#define CFG_PCI0_MEM_SIZE _128M
++#define CFG_PCI1_MEM_BASE 0x88000000
++#define CFG_PCI1_MEM_SIZE _128M
++
++#define CFG_PCI0_0_MEM_SPACE (CFG_PCI0_MEM_BASE)
++#define CFG_PCI1_0_MEM_SPACE (CFG_PCI1_MEM_BASE)
++
++/* PCI I/O MAP section */
++#define CFG_PCI0_IO_BASE 0xfa000000
++#define CFG_PCI0_IO_SIZE _16M
++#define CFG_PCI1_IO_BASE 0xfb000000
++#define CFG_PCI1_IO_SIZE _16M
++
++#define CFG_PCI0_IO_SPACE (CFG_PCI0_IO_BASE)
++#define CFG_PCI0_IO_SPACE_PCI 0x00000000
++#define CFG_PCI1_IO_SPACE (CFG_PCI1_IO_BASE)
++#define CFG_PCI1_IO_SPACE_PCI 0x00000000
++
++#define CFG_ISA_IO_BASE_ADDRESS (CFG_PCI0_IO_BASE)
++
++#define CFG_PCI_IDSEL 0x30
++
++#undef CONFIG_BOOTARGS
++#define CONFIG_EXTRA_ENV_SETTINGS_COMMON \
++ "netdev=eth0\0" \
++ "nfsargs=setenv bootargs root=/dev/nfs rw " \
++ "nfsroot=${serverip}:${rootpath}\0" \
++ "ramargs=setenv bootargs root=/dev/ram rw\0" \
++ "addip=setenv bootargs ${bootargs} " \
++ "ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}" \
++ ":${hostname}:${netdev}:off panic=1\0" \
++ "addtty=setenv bootargs ${bootargs} console=ttyS0,${baudrate}\0"\
++ "flash_nfs=run nfsargs addip addtty;" \
++ "bootm ${kernel_addr}\0" \
++ "flash_self=run ramargs addip addtty;" \
++ "bootm ${kernel_addr} ${ramdisk_addr}\0" \
++ "net_nfs=tftp 200000 ${bootfile};run nfsargs addip addtty;" \
++ "bootm\0" \
++ "rootpath=/opt/eldk/ppc_6xx\0" \
++ "u-boot=p3mx/u-boot/u-boot.bin\0" \
++ "load=tftp 100000 ${u-boot}\0" \
++ "update=protect off fff00000 fff3ffff;era fff00000 fff3ffff;" \
++ "cp.b 100000 fff00000 40000;" \
++ "setenv filesize;saveenv\0" \
++ "upd=run load;run update\0" \
++ "serverip=11.0.0.152\0"
++
++#if defined (CONFIG_P3M750)
++#define CONFIG_EXTRA_ENV_SETTINGS \
++ CONFIG_EXTRA_ENV_SETTINGS_COMMON \
++ "hostname=p3m750\0" \
++ "bootfile=/tftpboot/p3mx/vxWorks.st\0" \
++ "kernel_addr=fc000000\0" \
++ "ramdisk_addr=fc180000\0" \
++ "vxfile=p3m750/vxWorks\0" \
++ "vxuser=ddg\0" \
++ "vxpass=ddg\0" \
++ "vxtarget=target\0" \
++ "vxflags=0x8\0" \
++ "vxargs=setenv bootargs mgi(0,0)host:${vxfile} h=${serverip} " \
++ "e=${ipaddr} u=${vxuser} pw=${vxpass} tn=${vxtarget} " \
++ "f=${vxflags}\0"
++#elif defined (CONFIG_P3M7448)
++#define CONFIG_EXTRA_ENV_SETTINGS \
++ CONFIG_EXTRA_ENV_SETTINGS_COMMON \
++ "hostname=p3m7448\0"
++#endif
++
++#if defined (CONFIG_P3M750)
++#define CONFIG_BOOTCOMMAND "tftp;run vxargs;bootvx"
++#elif defined (CONFIG_P3M7448)
++#define CONFIG_BOOTCOMMAND " "
++#endif
++
++#define CONFIG_BOOTDELAY 3 /* autoboot after 5 seconds */
++#define CONFIG_BOOTP_MASK (CONFIG_BOOTP_DEFAULT | \
++ CONFIG_BOOTP_BOOTFILESIZE)
++#define CONFIG_COMMANDS (CONFIG_CMD_DFL | \
++ CFG_CMD_ASKENV | \
++ CFG_CMD_DATE | \
++ CFG_CMD_DIAG | \
++ CFG_CMD_ELF | \
++ CFG_CMD_I2C | \
++ CFG_CMD_IRQ | \
++ CFG_CMD_MII | \
++ CFG_CMD_NET | \
++ CFG_CMD_NFS | \
++ CFG_CMD_PING | \
++ CFG_CMD_REGINFO | \
++ CFG_CMD_PCI | \
++ CFG_CMD_CACHE | \
++ CFG_CMD_SDRAM)
++
++/* this must be included AFTER the definition of CONFIG_COMMANDS (if any) */
++#include <cmd_confdefs.h>
++
++/*-----------------------------------------------------------------------
++ * Miscellaneous configurable options
++ *----------------------------------------------------------------------*/
++#define CFG_HUSH_PARSER
++#define CFG_PROMPT_HUSH_PS2 "> "
++
++#define CFG_LONGHELP /* undef to save memory */
++#define CFG_PROMPT "=> " /* Monitor Command Prompt */
++#if (CONFIG_COMMANDS & CFG_CMD_KGDB)
++#define CFG_CBSIZE 1024 /* Console I/O Buffer Size */
++#else
++#define CFG_CBSIZE 256 /* Console I/O Buffer Size */
++#endif
++#define CFG_PBSIZE (CFG_CBSIZE+sizeof(CFG_PROMPT)+16) /* Print Buffer Size */
++#define CFG_MAXARGS 16 /* max number of command args */
++#define CFG_BARGSIZE CFG_CBSIZE /* Boot Argument Buffer Size */
++
++#define CFG_MEMTEST_START 0x0400000 /* memtest works on */
++#define CFG_MEMTEST_END 0x0C00000 /* 4 ... 12 MB in DRAM */
++
++#define CFG_LOAD_ADDR 0x08000000 /* default load address */
++
++#define CFG_HZ 1000 /* decrementer freq: 1 ms ticks */
++
++#define CONFIG_CMDLINE_EDITING 1 /* add command line history */
++#define CONFIG_LOOPW 1 /* enable loopw command */
++#define CONFIG_MX_CYCLIC 1 /* enable mdc/mwc commands */
++#define CONFIG_ZERO_BOOTDELAY_CHECK /* check for keypress on bootdelay==0 */
++#define CONFIG_VERSION_VARIABLE 1 /* include version env variable */
++
++/*-----------------------------------------------------------------------
++ * Marvell MV64460 config settings
++ *----------------------------------------------------------------------*/
++/* Reset values for Port behavior (8bit/ 32bit, etc.) only corrected device width */
++#if defined (CONFIG_P3M750)
++#define CFG_BOOT_PAR 0x8FDFF87F /* 16 bit flash, disable burst*/
++#elif defined (CONFIG_P3M7448)
++#define CFG_BOOT_PAR 0x8FEFFFFF /* 32 bit flash, burst enabled */
++#endif
++
++/*
++ * MPP[0] Serial Port 0 TxD TxD OUT Connected to P14 (buffered)
++ * MPP[1] Serial Port 0 RxD RxD IN Connected to P14 (buffered)
++ * MPP[2] NC
++ * MPP[3] Serial Port 1 TxD TxD OUT Connected to P14 (buffered)
++ * MPP[4] PCI Monarch# GPIO IN Connected to P12
++ * MPP[5] Serial Port 1 RxD RxD IN Connected to P14 (buffered)
++ * MPP[6] PMC Carrier Interrupt 0 Int IN Connected to P14
++ * MPP[7] PMC Carrier Interrupt 1 Int IN Connected to P14
++ * MPP[8] Reserved Do not use
++ * MPP[9] Reserved Do not use
++ * MPP[10] Reserved Do not use
++ * MPP[11] Reserved Do not use
++ * MPP[12] Phy 0 Interrupt Int IN
++ * MPP[13] Phy 1 Interrupt Int IN
++ * MPP[14] NC
++ * MPP[15] NC
++ * MPP[16] PCI Interrupt C Int IN Connected to P11
++ * MPP[17] PCI Interrupt D Int IN Connected to P11
++ * MPP[18] Watchdog NMI# GPIO IN Connected to MPP[24]
++ * MPP[19] Watchdog Expired# WDE OUT Connected to rst logic
++ * MPP[20] Watchdog Status WD_STS IN Read back of rst by watchdog
++ * MPP[21] NC
++ * MPP[22] GP LED Green GPIO OUT
++ * MPP[23] GP LED Red GPIO OUT
++ * MPP[24] Watchdog NMI# Int OUT
++ * MPP[25] NC
++ * MPP[26] NC
++ * MPP[27] PCI Interrupt A Int IN Connected to P11
++ * MPP[28] NC
++ * MPP[29] PCI Interrupt B Int IN Connected to P11
++ * MPP[30] Module reset GPIO OUT Board reset
++ * MPP[31] PCI EReady GPIO IN Connected to P12
++ */
++#define CFG_MPP_CONTROL_0 0x00303022
++#define CFG_MPP_CONTROL_1 0x00000000
++#define CFG_MPP_CONTROL_2 0x00004000
++#define CFG_MPP_CONTROL_3 0x00000004
++#define CFG_GPP_LEVEL_CONTROL 0x280730D0
++
++/*----------------------------------------------------------------------
++ * Initial BAT mappings
++ */
++
++/* NOTES:
++ * 1) GUARDED and WRITE_THRU not allowed in IBATS
++ * 2) CACHEINHIBIT and WRITETHROUGH not allowed together in same BAT
++ */
++/* SDRAM */
++#define CFG_IBAT0L (CFG_SDRAM_BASE | BATL_PP_RW | BATL_CACHEINHIBIT)
++#define CFG_IBAT0U (CFG_SDRAM_BASE | BATU_BL_256M | BATU_VS | BATU_VP)
++#define CFG_DBAT0L (CFG_SDRAM_BASE | BATL_PP_RW | BATL_GUARDEDSTORAGE | BATL_CACHEINHIBIT)
++#define CFG_DBAT0U CFG_IBAT0U
++
++/* init ram */
++#define CFG_IBAT1L (CFG_INIT_RAM_ADDR | BATL_PP_RW | BATL_MEMCOHERENCE)
++#define CFG_IBAT1U (CFG_INIT_RAM_ADDR | BATU_BL_256K | BATU_VS | BATU_VP)
++#define CFG_DBAT1L CFG_IBAT1L
++#define CFG_DBAT1U CFG_IBAT1U
++
++/* PCI0, PCI1 in one BAT */
++#define CFG_IBAT2L BATL_NO_ACCESS
++#define CFG_IBAT2U CFG_DBAT2U
++#define CFG_DBAT2L (CFG_PCI0_MEM_BASE | BATL_CACHEINHIBIT | BATL_PP_RW | BATL_GUARDEDSTORAGE)
++#define CFG_DBAT2U (CFG_PCI0_MEM_BASE | BATU_BL_256M | BATU_VS | BATU_VP)
++
++/* GT regs, bootrom, all the devices, PCI I/O */
++#define CFG_IBAT3L (CFG_MISC_REGION_BASE | BATL_CACHEINHIBIT | BATL_PP_RW)
++#define CFG_IBAT3U (CFG_MISC_REGION_BASE | BATU_VS | BATU_VP | BATU_BL_256M)
++#define CFG_DBAT3L (CFG_MISC_REGION_BASE | BATL_CACHEINHIBIT | BATL_PP_RW | BATL_GUARDEDSTORAGE)
++#define CFG_DBAT3U CFG_IBAT3U
++
++#define CFG_IBAT4L (CFG_SDRAM1_BASE | BATL_PP_RW | BATL_CACHEINHIBIT)
++#define CFG_IBAT4U (CFG_SDRAM1_BASE | BATU_BL_256M | BATU_VS | BATU_VP)
++#define CFG_DBAT4L (CFG_SDRAM1_BASE | BATL_PP_RW | BATL_CACHEINHIBIT | BATL_GUARDEDSTORAGE)
++#define CFG_DBAT4U CFG_IBAT4U
++
++/* set rest out of range for Linux !!!!!!!!!!! */
++
++/* IBAT5 and DBAT5 */
++#define CFG_IBAT5L (0x20000000 | BATL_PP_RW | BATL_CACHEINHIBIT)
++#define CFG_IBAT5U (0x20000000 | BATU_BL_256M | BATU_VS | BATU_VP)
++#define CFG_DBAT5L (0x20000000 | BATL_PP_RW | BATL_CACHEINHIBIT | BATL_GUARDEDSTORAGE)
++#define CFG_DBAT5U CFG_IBAT5U
++
++/* IBAT6 and DBAT6 */
++#define CFG_IBAT6L (0x20000000 | BATL_PP_RW | BATL_CACHEINHIBIT)
++#define CFG_IBAT6U (0x20000000 | BATU_BL_256M | BATU_VS | BATU_VP)
++#define CFG_DBAT6L (0x20000000 | BATL_PP_RW | BATL_CACHEINHIBIT | BATL_GUARDEDSTORAGE)
++#define CFG_DBAT6U CFG_IBAT6U
++
++/* IBAT7 and DBAT7 */
++#define CFG_IBAT7L (0x20000000 | BATL_PP_RW | BATL_CACHEINHIBIT)
++#define CFG_IBAT7U (0x20000000 | BATU_BL_256M | BATU_VS | BATU_VP)
++#define CFG_DBAT7L (0x20000000 | BATL_PP_RW | BATL_CACHEINHIBIT | BATL_GUARDEDSTORAGE)
++#define CFG_DBAT7U CFG_IBAT7U
++
++/*
++ * For booting Linux, the board info and command line data
++ * have to be in the first 8 MB of memory, since this is
++ * the maximum mapped by the Linux kernel during initialization.
++ */
++#define CFG_BOOTMAPSZ (8<<20) /* Initial Memory map for Linux */
++#define CFG_VXWORKS_MAC_PTR 0x42010000 /* use some memory in SRAM that's not used!!! */
++
++/*-----------------------------------------------------------------------
++ * Cache Configuration
++ */
++#define CFG_CACHELINE_SIZE 32 /* For all MPC74xx CPUs */
++#if (CONFIG_COMMANDS & CFG_CMD_KGDB)
++#define CFG_CACHELINE_SHIFT 5 /* log base 2 of the above value */
++#endif
++
++/*-----------------------------------------------------------------------
++ * L2CR setup -- make sure this is right for your board!
++ * look in include/mpc74xx.h for the defines used here
++ */
++#define CFG_L2
++
++#if defined (CONFIG_750CX) || defined (CONFIG_750FX)
++#define L2_INIT 0
++#else
++#define L2_INIT (L2CR_L2SIZ_2M | L2CR_L2CLK_3 | L2CR_L2RAM_BURST | \
++ L2CR_L2OH_5 | L2CR_L2CTL | L2CR_L2WT)
++#endif
++
++#define L2_ENABLE (L2_INIT | L2CR_L2E)
++
++/*
++ * Internal Definitions
++ *
++ * Boot Flags
++ */
++#define BOOTFLAG_COLD 0x01 /* Normal Power-On: Boot from FLASH */
++#define BOOTFLAG_WARM 0x02 /* Software reboot */
++
++#endif /* __CONFIG_H */
+diff -Naupr u-boot-1.1.6/include/configs/sequoia.h u-boot-1.1.6-fsl-1/include/configs/sequoia.h
+--- u-boot-1.1.6/include/configs/sequoia.h 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/include/configs/sequoia.h 2006-11-30 12:34:13.000000000 -0600
+@@ -53,7 +53,7 @@
+
+ #define CFG_BOOT_BASE_ADDR 0xf0000000
+ #define CFG_SDRAM_BASE 0x00000000 /* _must_ be 0 */
+-#define CFG_FLASH_BASE 0xfe000000 /* start of FLASH */
++#define CFG_FLASH_BASE 0xfc000000 /* start of FLASH */
+ #define CFG_MONITOR_BASE TEXT_BASE
+ #define CFG_NAND_ADDR 0xd0000000 /* NAND Flash */
+ #define CFG_OCM_BASE 0xe0010000 /* ocm */
+@@ -102,6 +102,7 @@
+ #define CFG_ENV_IS_IN_FLASH 1 /* use FLASH for environment vars */
+ #else
+ #define CFG_ENV_IS_IN_NAND 1 /* use NAND for environment vars */
++#define CFG_ENV_IS_EMBEDDED 1 /* use embedded environment */
+ #endif
+
+ /*-----------------------------------------------------------------------
+@@ -234,10 +235,10 @@
+ "bootm ${kernel_addr} ${ramdisk_addr}\0" \
+ "net_nfs=tftp 200000 ${bootfile};run nfsargs addip addtty;" \
+ "bootm\0" \
+- "rootpath=/opt/eldk/ppc_4xx\0" \
++ "rootpath=/opt/eldk/ppc_4xxFP\0" \
+ "bootfile=/tftpboot/sequoia/uImage\0" \
+- "kernel_addr=FE000000\0" \
+- "ramdisk_addr=FE180000\0" \
++ "kernel_addr=FC000000\0" \
++ "ramdisk_addr=FC180000\0" \
+ "load=tftp 100000 /tftpboot/sequoia/u-boot.bin\0" \
+ "update=protect off FFFA0000 FFFFFFFF;era FFFA0000 FFFFFFFF;" \
+ "cp.b 100000 FFFA0000 60000\0" \
+@@ -378,7 +379,7 @@
+ #define CFG_NAND_CS 3 /* NAND chip connected to CSx */
+ /* Memory Bank 0 (NOR-FLASH) initialization */
+ #define CFG_EBC_PB0AP 0x03017300
+-#define CFG_EBC_PB0CR (CFG_FLASH | 0xba000)
++#define CFG_EBC_PB0CR (CFG_FLASH | 0xda000)
+
+ /* Memory Bank 3 (NAND-FLASH) initialization */
+ #define CFG_EBC_PB3AP 0x018003c0
+@@ -387,7 +388,7 @@
+ #define CFG_NAND_CS 0 /* NAND chip connected to CSx */
+ /* Memory Bank 3 (NOR-FLASH) initialization */
+ #define CFG_EBC_PB3AP 0x03017300
+-#define CFG_EBC_PB3CR (CFG_FLASH | 0xba000)
++#define CFG_EBC_PB3CR (CFG_FLASH | 0xda000)
+
+ /* Memory Bank 0 (NAND-FLASH) initialization */
+ #define CFG_EBC_PB0AP 0x018003c0
+diff -Naupr u-boot-1.1.6/include/configs/TQM5200.h u-boot-1.1.6-fsl-1/include/configs/TQM5200.h
+--- u-boot-1.1.6/include/configs/TQM5200.h 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/include/configs/TQM5200.h 2006-11-30 12:34:13.000000000 -0600
+@@ -217,43 +217,19 @@
+
+ #undef CONFIG_BOOTARGS
+
+-#ifdef CONFIG_STK52XX
+-# if defined(CONFIG_TQM5200_B)
+-# if defined(CFG_LOWBOOT)
+-# define ENV_UPDT \
+- "update=protect off FC000000 FC07FFFF;" \
+- "erase FC000000 FC07FFFF;" \
+- "cp.b 200000 FC000000 ${filesize};" \
+- "protect on FC000000 FC07FFFF\0"
+-# else /* highboot */
+-# define ENV_UPDT \
+- "update=protect off FFF00000 FFF7FFFF;" \
+- "erase FFF00000 FFF7FFFF;" \
++#if defined(CONFIG_TQM5200_B) && !defined(CFG_LOWBOOT)
++# define ENV_UPDT \
++ "update=protect off FFF00000 +${filesize};" \
++ "erase FFF00000 +${filesize};" \
+ "cp.b 200000 FFF00000 ${filesize};" \
+- "protect on FFF00000 FFF7FFFF\0"
+-# endif /* CFG_LOWBOOT */
+-# else /* !CONFIG_TQM5200_B */
+-# define ENV_UPDT \
+- "update=protect off FC000000 FC05FFFF;" \
+- "erase FC000000 FC05FFFF;" \
+- "cp.b 200000 FC000000 ${filesize};" \
+- "protect on FC000000 FC05FFFF\0"
+-# endif /* CONFIG_TQM5200_B */
+-#elif defined (CONFIG_CAM5200)
+-# define ENV_UPDT \
+- "update=protect off FC000000 FC03FFFF;" \
+- "erase FC000000 FC03FFFF;" \
+- "cp.b 200000 FC000000 ${filesize};" \
+- "protect on FC000000 FC03FFFF\0"
+-#elif defined (CONFIG_FO300)
++ "protect on FFF00000 +${filesize}\0"
++#else /* default lowboot configuration */
+ # define ENV_UPDT \
+- "update=protect off FC000000 FC05FFFF;" \
+- "erase FC000000 FC05FFFF;" \
++ "update=protect off FC000000 +${filesize};" \
++ "erase FC000000 +${filesize};" \
+ "cp.b 200000 FC000000 ${filesize};" \
+- "protect on FC000000 FC05FFFF\0"
+-#else
+-# error "Unknown Carrier Board"
+-#endif /* CONFIG_STK52XX */
++ "protect on FC000000 +${filesize}\0"
++#endif
+
+ #define CONFIG_EXTRA_ENV_SETTINGS \
+ "netdev=eth0\0" \
+@@ -432,7 +408,7 @@
+ */
+ #define CFG_ENV_IS_IN_FLASH 1
+ #define CFG_ENV_SIZE 0x4000 /* 16 k - keep small for fast booting */
+-#if defined(CONFIG_TQM5200_B)
++#if defined(CONFIG_TQM5200_B) || defined (CONFIG_CAM5200)
+ #define CFG_ENV_SECT_SIZE 0x40000
+ #else
+ #define CFG_ENV_SECT_SIZE 0x20000
+diff -Naupr u-boot-1.1.6/include/configs/TQM834x.h u-boot-1.1.6-fsl-1/include/configs/TQM834x.h
+--- u-boot-1.1.6/include/configs/TQM834x.h 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/include/configs/TQM834x.h 2006-11-10 11:24:30.000000000 -0600
+@@ -37,10 +37,11 @@
+ #define CONFIG_E300 1 /* E300 Family */
+ #define CONFIG_MPC83XX 1 /* MPC83XX family */
+ #define CONFIG_MPC834X 1 /* MPC834X specific */
++#define CONFIG_MPC8349 1 /* MPC8349 specific */
+ #define CONFIG_TQM834X 1 /* TQM834X board specific */
+
+ /* IMMR Base Addres Register, use Freescale default: 0xff400000 */
+-#define CFG_IMMRBAR 0xff400000
++#define CFG_IMMR 0xff400000
+
+ /* System clock. Primary input clock when in PCI host mode */
+ #define CONFIG_83XX_CLKIN 66666000 /* 66,666 MHz */
+@@ -56,6 +57,17 @@
+ */
+ #define CFG_LCRR (LCRR_DBYP | LCRR_CLKDIV_8)
+
++#define CFG_SCCR_INIT (SCCR_DEFAULT & (~SCCR_CLK_MASK))
++#define CFG_SCCR_TSEC1CM SCCR_TSEC1CM_1 /* TSEC1 clock setting */
++#define CFG_SCCR_TSEC2CM SCCR_TSEC2CM_1 /* TSEC2 clock setting */
++#define CFG_SCCR_ENCCM SCCR_ENCCM_3 /* ENC clock setting */
++#define CFG_SCCR_USBCM SCCR_USBCM_3 /* USB clock setting */
++#define CFG_SCCR_VAL ( CFG_SCCR_INIT \
++ | CFG_SCCR_TSEC1CM \
++ | CFG_SCCR_TSEC2CM \
++ | CFG_SCCR_ENCCM \
++ | CFG_SCCR_USBCM )
++
+ /* board pre init: do not call, nothing to do */
+ #undef CONFIG_BOARD_EARLY_INIT_F
+
+@@ -83,6 +95,7 @@
+ #define CFG_FLASH_CFI_DRIVER /* use the CFI driver */
+ #undef CFG_FLASH_CHECKSUM
+ #define CFG_FLASH_BASE 0x80000000 /* start of FLASH */
++#define CFG_FLASH_SIZE 8 /* FLASH size in MB */
+
+ /* buffered writes in the AMD chip set is not supported yet */
+ #undef CFG_FLASH_USE_BUFFER_WRITE
+@@ -197,14 +210,15 @@ extern int tqm834x_num_flash_banks;
+ #define CFG_BAUDRATE_TABLE \
+ {300, 600, 1200, 2400, 4800, 9600, 19200, 38400,115200}
+
+-#define CFG_NS16550_COM1 (CFG_IMMRBAR + 0x4500)
+-#define CFG_NS16550_COM2 (CFG_IMMRBAR + 0x4600)
++#define CFG_NS16550_COM1 (CFG_IMMR + 0x4500)
++#define CFG_NS16550_COM2 (CFG_IMMR + 0x4600)
+
+ /*
+ * I2C
+ */
+ #define CONFIG_HARD_I2C /* I2C with hardware support */
+ #undef CONFIG_SOFT_I2C /* I2C bit-banged */
++#define CONFIG_FSL_I2C
+ #define CFG_I2C_SPEED 400000 /* I2C speed: 400KHz */
+ #define CFG_I2C_SLAVE 0x7F /* slave address */
+ #define CFG_I2C_OFFSET 0x3000
+@@ -235,9 +249,9 @@ extern int tqm834x_num_flash_banks;
+ #define CONFIG_MII
+
+ #define CFG_TSEC1_OFFSET 0x24000
+-#define CFG_TSEC1 (CFG_IMMRBAR + CFG_TSEC1_OFFSET)
++#define CFG_TSEC1 (CFG_IMMR + CFG_TSEC1_OFFSET)
+ #define CFG_TSEC2_OFFSET 0x25000
+-#define CFG_TSEC2 (CFG_IMMRBAR + CFG_TSEC2_OFFSET)
++#define CFG_TSEC2 (CFG_IMMR + CFG_TSEC2_OFFSET)
+
+ #if defined(CONFIG_TSEC_ENET)
+
+@@ -460,8 +474,8 @@ extern int tqm834x_num_flash_banks;
+ #endif
+
+ /* IMMRBAR */
+-#define CFG_IBAT6L (CFG_IMMRBAR | BATL_PP_10 | BATL_CACHEINHIBIT | BATL_GUARDEDSTORAGE)
+-#define CFG_IBAT6U (CFG_IMMRBAR | BATU_BL_1M | BATU_VS | BATU_VP)
++#define CFG_IBAT6L (CFG_IMMR | BATL_PP_10 | BATL_CACHEINHIBIT | BATL_GUARDEDSTORAGE)
++#define CFG_IBAT6U (CFG_IMMR | BATU_BL_1M | BATU_VS | BATU_VP)
+
+ /* FLASH */
+ #define CFG_IBAT7L (CFG_FLASH_BASE | BATL_PP_10 | BATL_CACHEINHIBIT | BATL_GUARDEDSTORAGE)
+diff -Naupr u-boot-1.1.6/include/configs/v38b.h u-boot-1.1.6-fsl-1/include/configs/v38b.h
+--- u-boot-1.1.6/include/configs/v38b.h 1969-12-31 18:00:00.000000000 -0600
++++ u-boot-1.1.6-fsl-1/include/configs/v38b.h 2006-11-30 12:34:13.000000000 -0600
+@@ -0,0 +1,343 @@
++/*
++ * (C) Copyright 2003-2006 Wolfgang Denk, DENX Software Engineering,
++ * wd@denx.de.
++ *
++ * See file CREDITS for list of people who contributed to this project.
++ *
++ * 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
++ */
++
++#ifndef __CONFIG_H
++#define __CONFIG_H
++
++/*
++ * High Level Configuration Options
++ * (easy to change)
++ */
++#define CONFIG_MPC5xxx 1 /* This is an MPC5xxx CPU */
++#define CONFIG_MPC5200 1 /* This is an MPC5200 CPU */
++#define CONFIG_V38B 1 /* ...on V38B board */
++#define CFG_MPC5XXX_CLKIN 33000000 /* ...running at 33.000000MHz */
++
++#define CONFIG_RTC_PCF8563 1 /* has PCF8563 RTC */
++#define CONFIG_MPC5200_DDR 1 /* has DDR SDRAM */
++
++#undef CONFIG_HW_WATCHDOG /* don't use watchdog */
++
++#define CONFIG_NETCONSOLE 1
++
++#define CONFIG_BOARD_EARLY_INIT_R 1 /* do board-specific init */
++
++#define CFG_XLB_PIPELINING 1 /* gives better performance */
++
++#define BOOTFLAG_COLD 0x01 /* Normal Power-On: Boot from FLASH */
++#define BOOTFLAG_WARM 0x02 /* Software reboot */
++
++#define CFG_CACHELINE_SIZE 32 /* For MPC5xxx CPUs */
++#if (CONFIG_COMMANDS & CFG_CMD_KGDB)
++# define CFG_CACHELINE_SHIFT 5 /* log base 2 of the above value */
++#endif
++
++/*
++ * Serial console configuration
++ */
++#define CONFIG_PSC_CONSOLE 1 /* console is on PSC1 */
++#define CONFIG_BAUDRATE 115200 /* ... at 115200 bps */
++#define CFG_BAUDRATE_TABLE { 9600, 19200, 38400, 57600, 115200, 230400 }
++
++/*
++ * DDR
++ */
++#define SDRAM_DDR 1 /* is DDR */
++/* Settings for XLB = 132 MHz */
++#define SDRAM_MODE 0x018D0000
++#define SDRAM_EMODE 0x40090000
++#define SDRAM_CONTROL 0x704f0f00
++#define SDRAM_CONFIG1 0x73722930
++#define SDRAM_CONFIG2 0x47770000
++#define SDRAM_TAPDELAY 0x10000000
++
++/*
++ * PCI - no suport
++ */
++#undef CONFIG_PCI
++
++/*
++ * Partitions
++ */
++#define CONFIG_MAC_PARTITION 1
++#define CONFIG_DOS_PARTITION 1
++
++/*
++ * USB
++ */
++#define CONFIG_USB_OHCI
++#define CONFIG_USB_STORAGE
++#define CONFIG_USB_CLOCK 0x0001BBBB
++#define CONFIG_USB_CONFIG 0x00001000
++
++/*
++ * Supported commands
++ */
++#define CONFIG_COMMANDS (CONFIG_CMD_DFL | \
++ CFG_CMD_FAT | \
++ CFG_CMD_I2C | \
++ CFG_CMD_IDE | \
++ CFG_CMD_PING | \
++ CFG_CMD_DHCP | \
++ CFG_CMD_DIAG | \
++ CFG_CMD_IRQ | \
++ CFG_CMD_JFFS2 | \
++ CFG_CMD_MII | \
++ CFG_CMD_SDRAMi | \
++ CFG_CMD_DATE | \
++ CFG_CMD_USB | \
++ CFG_CMD_FAT)
++
++#define CONFIG_TIMESTAMP /* Print image info with timestamp */
++
++/* this must be included AFTER the definition of CONFIG_COMMANDS (if any) */
++#include <cmd_confdefs.h>
++
++/*
++ * Boot low with 16 MB Flash
++ */
++#define CFG_LOWBOOT 1
++#define CFG_LOWBOOT16 1
++
++/*
++ * Autobooting
++ */
++#define CONFIG_BOOTDELAY 3 /* autoboot after 3 seconds */
++
++#define CONFIG_PREBOOT "echo;" \
++ "echo Type \"run flash_nfs\" to mount root filesystem over NFS;" \
++ "echo"
++
++#undef CONFIG_BOOTARGS
++
++#define CONFIG_EXTRA_ENV_SETTINGS \
++ "bootcmd=run net_nfs\0" \
++ "bootdelay=3\0" \
++ "baudrate=115200\0" \
++ "preboot=echo;echo Type \"run flash_nfs\" to mount root " \
++ "filesystem over NFS; echo\0" \
++ "netdev=eth0\0" \
++ "ramargs=setenv bootargs root=/dev/ram rw\0" \
++ "addip=setenv bootargs $(bootargs) " \
++ "ip=$(ipaddr):$(serverip):$(gatewayip):" \
++ "$(netmask):$(hostname):$(netdev):off panic=1\0" \
++ "flash_nfs=run nfsargs addip;bootm $(kernel_addr)\0" \
++ "flash_self=run ramargs addip;bootm $(kernel_addr) " \
++ "$(ramdisk_addr)\0" \
++ "net_nfs=tftp 200000 $(bootfile);run nfsargs addip;bootm\0" \
++ "nfsargs=setenv bootargs root=/dev/nfs rw " \
++ "nfsroot=$(serverip):$(rootpath)\0" \
++ "hostname=v38b\0" \
++ "ethact=FEC ETHERNET\0" \
++ "rootpath=/opt/eldk-3.1.1/ppc_6xx\0" \
++ "update=prot off ff000000 ff03ffff; era ff000000 ff03ffff; " \
++ "cp.b 200000 ff000000 $(filesize);" \
++ "prot on ff000000 ff03ffff\0" \
++ "load=tftp 200000 $(u-boot)\0" \
++ "netmask=255.255.0.0\0" \
++ "ipaddr=192.168.160.18\0" \
++ "serverip=192.168.1.1\0" \
++ "ethaddr=00:e0:ee:00:05:2e\0" \
++ "bootfile=/tftpboot/v38b/uImage\0" \
++ "u-boot=/tftpboot/v38b/u-boot.bin\0" \
++ ""
++
++#define CONFIG_BOOTCOMMAND "run net_nfs"
++
++#if defined(CONFIG_MPC5200)
++/*
++ * IPB Bus clocking configuration.
++ */
++#undef CFG_IPBSPEED_133 /* define for 133MHz speed */
++#endif
++
++/*
++ * I2C configuration
++ */
++#define CONFIG_HARD_I2C 1 /* I2C with hardware support */
++#define CFG_I2C_MODULE 2 /* Select I2C module #1 or #2 */
++#define CFG_I2C_SPEED 100000 /* 100 kHz */
++#define CFG_I2C_SLAVE 0x7F
++
++/*
++ * EEPROM configuration
++ */
++#define CFG_I2C_EEPROM_ADDR 0x50 /* 1010000x */
++#define CFG_I2C_EEPROM_ADDR_LEN 1
++#define CFG_EEPROM_PAGE_WRITE_BITS 3
++#define CFG_EEPROM_PAGE_WRITE_DELAY_MS 70
++
++/*
++ * RTC configuration
++ */
++#define CFG_I2C_RTC_ADDR 0x51
++
++/*
++ * Flash configuration - use CFI driver
++ */
++#define CFG_FLASH_CFI 1 /* Flash is CFI conformant */
++#define CFG_FLASH_CFI_DRIVER 1 /* Use the common driver */
++#define CFG_FLASH_CFI_AMD_RESET 1
++#define CFG_FLASH_BASE 0xFF000000
++#define CFG_MAX_FLASH_BANKS 1 /* max num of flash banks */
++#define CFG_FLASH_BANKS_LIST { CFG_FLASH_BASE }
++#define CFG_FLASH_SIZE 0x01000000 /* 16 MiB */
++#define CFG_MAX_FLASH_SECT 256 /* max num of sects on one chip */
++#define CFG_FLASH_USE_BUFFER_WRITE 1 /* flash write speed-up */
++
++/*
++ * Environment settings
++ */
++#define CFG_ENV_IS_IN_FLASH 1
++#define CFG_ENV_ADDR (CFG_FLASH_BASE + 0x00040000)
++#define CFG_ENV_SIZE 0x10000
++#define CFG_ENV_SECT_SIZE 0x10000
++#define CONFIG_ENV_OVERWRITE 1
++
++/*
++ * Memory map
++ */
++#define CFG_MBAR 0xF0000000
++#define CFG_SDRAM_BASE 0x00000000
++#define CFG_DEFAULT_MBAR 0x80000000
++
++/* Use SRAM until RAM will be available */
++#define CFG_INIT_RAM_ADDR MPC5XXX_SRAM
++#define CFG_INIT_RAM_END MPC5XXX_SRAM_SIZE /* End of used area in DPRAM */
++
++#define CFG_GBL_DATA_SIZE 128 /* size in bytes reserved for initial data */
++#define CFG_GBL_DATA_OFFSET (CFG_INIT_RAM_END - CFG_GBL_DATA_SIZE)
++#define CFG_INIT_SP_OFFSET CFG_GBL_DATA_OFFSET
++
++#define CFG_MONITOR_BASE TEXT_BASE
++#if (CFG_MONITOR_BASE < CFG_FLASH_BASE)
++# define CFG_RAMBOOT 1
++#endif
++
++#define CFG_MONITOR_LEN (256 << 10) /* Reserve 256kB for Monitor */
++#define CFG_MALLOC_LEN (128 << 10) /* Reserve 128kB for malloc() */
++#define CFG_BOOTMAPSZ (8 << 20) /* Linux initial memory map */
++
++/*
++ * Ethernet configuration
++ */
++#define CONFIG_MPC5xxx_FEC 1
++#define CONFIG_PHY_ADDR 0x00
++#define CONFIG_MII 1
++
++/*
++ * GPIO configuration
++ */
++#define CFG_GPS_PORT_CONFIG 0x90001404
++
++/*
++ * Miscellaneous configurable options
++ */
++#define CFG_LONGHELP /* undef to save memory */
++#define CFG_PROMPT "=> " /* Monitor Command Prompt */
++#if (CONFIG_COMMANDS & CFG_CMD_KGDB)
++#define CFG_CBSIZE 1024 /* Console I/O Buffer Size */
++#else
++#define CFG_CBSIZE 256 /* Console I/O Buffer Size */
++#endif
++#define CFG_PBSIZE (CFG_CBSIZE+sizeof(CFG_PROMPT)+16) /* Print Buffer Size */
++#define CFG_MAXARGS 16 /* max number of command args */
++#define CFG_BARGSIZE CFG_CBSIZE /* Boot Argument Buffer Size */
++
++#define CFG_MEMTEST_START 0x00100000 /* memtest works on */
++#define CFG_MEMTEST_END 0x00f00000 /* 1 ... 15 MB in DRAM */
++
++#define CFG_LOAD_ADDR 0x100000 /* default load address */
++
++#define CFG_HZ 1000 /* decrementer freq: 1 ms ticks */
++
++/*
++ * Various low-level settings
++ */
++#define CFG_HID0_INIT HID0_ICE | HID0_ICFI
++#define CFG_HID0_FINAL HID0_ICE
++
++#define CFG_BOOTCS_START CFG_FLASH_BASE
++#define CFG_BOOTCS_SIZE CFG_FLASH_SIZE
++#define CFG_BOOTCS_CFG 0x00047801
++#define CFG_CS0_START CFG_FLASH_BASE
++#define CFG_CS0_SIZE CFG_FLASH_SIZE
++
++#define CFG_CS_BURST 0x00000000
++#define CFG_CS_DEADCYCLE 0x33333333
++
++#define CFG_RESET_ADDRESS 0xff000000
++
++/*
++ * IDE/ATA (supports IDE harddisk)
++ */
++#undef CONFIG_IDE_8xx_PCCARD /* Don't use IDE with PC Card Adapter */
++#undef CONFIG_IDE_8xx_DIRECT /* Direct IDE not supported */
++#undef CONFIG_IDE_LED /* LED for ide not supported */
++
++#define CONFIG_IDE_RESET /* reset for ide supported */
++#define CONFIG_IDE_PREINIT
++
++#define CFG_IDE_MAXBUS 1 /* max. 1 IDE bus */
++#define CFG_IDE_MAXDEVICE 1 /* max. 1 drive per IDE bus */
++
++#define CFG_ATA_IDE0_OFFSET 0x0000
++
++#define CFG_ATA_BASE_ADDR MPC5XXX_ATA
++
++#define CFG_ATA_DATA_OFFSET (0x0060) /* data I/O offset */
++
++#define CFG_ATA_REG_OFFSET (CFG_ATA_DATA_OFFSET) /* normal register accesses offset */
++
++#define CFG_ATA_ALT_OFFSET (0x005C) /* alternate registers offset */
++
++#define CFG_ATA_STRIDE 4 /* Interval between registers */
++
++/*
++ * Status LED
++ */
++#define CONFIG_STATUS_LED /* Status LED enabled */
++#define CONFIG_BOARD_SPECIFIC_LED /* version has board specific leds */
++
++#define CFG_LED_BASE MPC5XXX_GPT7_ENABLE /* Timer 7 GPIO */
++#ifndef __ASSEMBLY__
++typedef unsigned int led_id_t;
++
++#define __led_toggle(_msk) \
++ do { \
++ *((volatile long *) (CFG_LED_BASE)) ^= (_msk); \
++ } while(0)
++
++#define __led_set(_msk, _st) \
++ do { \
++ if ((_st)) \
++ *((volatile long *) (CFG_LED_BASE)) &= ~(_msk); \
++ else \
++ *((volatile long *) (CFG_LED_BASE)) |= (_msk); \
++ } while(0)
++
++#define __led_init(_msk, st) \
++ do { \
++ *((volatile long *) (CFG_LED_BASE)) |= 0x34; \
++ } while(0)
++#endif /* __ASSEMBLY__ */
++
++#endif /* __CONFIG_H */
+diff -Naupr u-boot-1.1.6/include/configs/V38B.h u-boot-1.1.6-fsl-1/include/configs/V38B.h
+--- u-boot-1.1.6/include/configs/V38B.h 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/include/configs/V38B.h 1969-12-31 18:00:00.000000000 -0600
+@@ -1,368 +0,0 @@
+-/*
+- * (C) Copyright 2003-2004 Wolfgang Denk, DENX Software Engineering,
+- * wd@denx.de.
+- *
+- * See file CREDITS for list of people who contributed to this project.
+- *
+- * 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
+- */
+-
+-#ifndef __CONFIG_H
+-#define __CONFIG_H
+-
+-#if 0
+-#define DEBUG 0xFFF
+-#endif
+-
+-#if 0
+-#define DEBUG 0x01
+-#endif
+-
+-/*
+- * High Level Configuration Options
+- * (easy to change)
+-*/
+-
+-#define CONFIG_MPC5xxx 1 /* This is an MPC5xxx CPU */
+-#define CONFIG_MPC5200 1 /* This is an MPC5200 CPU */
+-#define CONFIG_V38B 1 /* ... on V38B board */
+-#define CFG_MPC5XXX_CLKIN 33000000 /* ... running at 33.000000MHz */
+-
+-#define CONFIG_RTC_PCF8563 1 /* has PCF8563 RTC */
+-#define CONFIG_MPC5200_DDR 1 /* has DDR SDRAM */
+-#define CONFIG_HW_WATCHDOG 1 /* has watchdog */
+-
+-#define CONFIG_NETCONSOLE 1
+-
+-#define CONFIG_BOARD_EARLY_INIT_R 1 /* make flash read/write */
+-
+-#define CFG_XLB_PIPELINING 1 /* gives better performance */
+-
+-
+-#define BOOTFLAG_COLD 0x01 /* Normal Power-On: Boot from FLASH */
+-#define BOOTFLAG_WARM 0x02 /* Software reboot */
+-
+-#define CFG_CACHELINE_SIZE 32 /* For MPC5xxx CPUs */
+-#if (CONFIG_COMMANDS & CFG_CMD_KGDB)
+-# define CFG_CACHELINE_SHIFT 5 /* log base 2 of the above value */
+-#endif
+-
+-/*
+- * Serial console configuration
+- */
+-#define CONFIG_PSC_CONSOLE 1 /* console is on PSC1 */
+-#define CONFIG_BAUDRATE 115200 /* ... at 115200 bps */
+-#define CFG_BAUDRATE_TABLE { 9600, 19200, 38400, 57600, 115200, 230400 }
+-
+-
+-/*
+- * DDR
+- */
+-#define SDRAM_DDR 1 /* is DDR */
+-/* Settings for XLB = 132 MHz */
+-#define SDRAM_MODE 0x018D0000
+-#define SDRAM_EMODE 0x40090000
+-#define SDRAM_CONTROL 0x704f0f00
+-#define SDRAM_CONFIG1 0x73722930
+-#define SDRAM_CONFIG2 0x47770000
+-#define SDRAM_TAPDELAY 0x10000000
+-
+-
+-/*
+- * PCI - no suport
+- */
+-#undef CONFIG_PCI
+-
+-/*
+- * Partitions
+- */
+-#define CONFIG_MAC_PARTITION 1
+-#define CONFIG_DOS_PARTITION 1
+-
+-/*
+- * USB
+- */
+-#define CONFIG_USB_OHCI
+-#define CONFIG_USB_STORAGE
+-
+-#define CONFIG_TIMESTAMP /* Print image info with timestamp */
+-
+-/*
+- * Supported commands
+- */
+-#define CONFIG_COMMANDS (CONFIG_CMD_DFL | \
+- CFG_CMD_FAT | \
+- CFG_CMD_I2C | \
+- CFG_CMD_IDE | \
+- CFG_CMD_PING | \
+- CFG_CMD_DHCP | \
+- CFG_CMD_DIAG | \
+- CFG_CMD_IRQ | \
+- CFG_CMD_JFFS2 | \
+- CFG_CMD_MII | \
+- CFG_CMD_SDRAMi | \
+- CFG_CMD_DATE | \
+- CFG_CMD_USB | \
+- CFG_CMD_FAT)
+-
+-/* this must be included AFTER the definition of CONFIG_COMMANDS (if any) */
+-#include <cmd_confdefs.h>
+-
+-/*
+- * Boot low with 16 MB Flash
+- */
+-# define CFG_LOWBOOT 1
+-# define CFG_LOWBOOT16 1
+-
+-/*
+- * Autobooting
+- */
+-#define CONFIG_BOOTDELAY 3 /* autoboot after 3 seconds */
+-
+-#define CONFIG_PREBOOT "echo;" \
+- "echo Type \"run flash_nfs\" to mount root filesystem over NFS;" \
+- "echo"
+-
+-#undef CONFIG_BOOTARGS
+-
+-#define CONFIG_EXTRA_ENV_SETTINGS \
+- "netdev=eth0\0" \
+- "devno=5\0" \
+- "hostname=V38B_$(devno)\0" \
+- "ipaddr=10.100.99.$(devno)\0" \
+- "netmask=255.255.0.0\0" \
+- "serverip=10.100.10.90\0" \
+- "gatewayip=10.100.254.254\0" \
+- "ramargs=setenv bootargs root=/dev/ram rw\0" \
+- "rootpath=/opt/eldk/ppc_6xx\0" \
+- "bootfile=mpc5200/uImage\0" \
+- "bootcmd=run net_nfs\0" \
+- "addip=setenv bootargs $(bootargs) " \
+- "ip=$(ipaddr):$(serverip):$(gatewayip):" \
+- "$(netmask):$(hostname):$(netdev):off panic=1\0" \
+- "flash_nfs=run nfsargs addip;bootm $(kernel_addr)\0" \
+- "flash_self=run ramargs addip;bootm $(kernel_addr) " \
+- "$(ramdisk_addr)\0" \
+- "net_nfs=tftp 200000 $(bootfile);run nfsargs " \
+- "addip;bootm\0" \
+- "nfsargs=setenv bootargs root=/dev/nfs rw " \
+- "nfsroot=$(serverip):$(rootpath)\0" \
+- ""
+-
+-#define CONFIG_BOOTCOMMAND "run net_nfs"
+-
+-#if defined(CONFIG_MPC5200)
+-/*
+- * IPB Bus clocking configuration.
+- */
+-#undef CFG_IPBSPEED_133 /* define for 133MHz speed */
+-#endif
+-/*
+- * I2C configuration
+- */
+-#define CONFIG_HARD_I2C 1 /* I2C with hardware support */
+-#define CFG_I2C_MODULE 2 /* Select I2C module #1 or #2 */
+-
+-#define CFG_I2C_SPEED 100000 /* 100 kHz */
+-#define CFG_I2C_SLAVE 0x7F
+-
+-/*
+- * EEPROM configuration
+- */
+-#define CFG_I2C_EEPROM_ADDR 0x50 /* 1010000x */
+-#define CFG_I2C_EEPROM_ADDR_LEN 1
+-#define CFG_EEPROM_PAGE_WRITE_BITS 3
+-#define CFG_EEPROM_PAGE_WRITE_DELAY_MS 70
+-
+-/*
+- * RTC configuration
+- */
+-#define CFG_I2C_RTC_ADDR 0x51
+-
+-/*
+- * Flash configuration - use CFI driver
+- */
+-#define CFG_FLASH_CFI 1 /* Flash is CFI conformant */
+-#define CFG_FLASH_CFI_DRIVER 1 /* Use the common driver */
+-#define CFG_FLASH_CFI_AMD_RESET 1
+-#define CFG_FLASH_BASE 0xFF000000
+-#define CFG_MAX_FLASH_BANKS 1 /* max num of flash banks */
+-#define CFG_FLASH_BANKS_LIST { CFG_FLASH_BASE }
+-#define CFG_FLASH_SIZE 0x01000000 /* 16 MiB */
+-#define CFG_MAX_FLASH_SECT 256 /* max num of sects on one chip */
+-#define CFG_FLASH_USE_BUFFER_WRITE 1 /* flash write speed-up */
+-
+-/*
+- * Environment settings
+- */
+-#define CFG_ENV_IS_IN_FLASH 1
+-#define CFG_ENV_ADDR (CFG_FLASH_BASE + 0x00040000)
+-#define CFG_ENV_SIZE 0x10000
+-#define CFG_ENV_SECT_SIZE 0x10000
+-#define CONFIG_ENV_OVERWRITE 1
+-
+-/*
+- * Memory map
+- */
+-#define CFG_MBAR 0xF0000000
+-#define CFG_SDRAM_BASE 0x00000000
+-#define CFG_DEFAULT_MBAR 0x80000000
+-
+-/* Use SRAM until RAM will be available */
+-#define CFG_INIT_RAM_ADDR MPC5XXX_SRAM
+-#define CFG_INIT_RAM_END MPC5XXX_SRAM_SIZE /* End of used area in DPRAM */
+-
+-
+-#define CFG_GBL_DATA_SIZE 128 /* size in bytes reserved for initial data */
+-#define CFG_GBL_DATA_OFFSET (CFG_INIT_RAM_END - CFG_GBL_DATA_SIZE)
+-#define CFG_INIT_SP_OFFSET CFG_GBL_DATA_OFFSET
+-
+-#define CFG_MONITOR_BASE TEXT_BASE
+-#if (CFG_MONITOR_BASE < CFG_FLASH_BASE)
+-# define CFG_RAMBOOT 1
+-#endif
+-
+-#define CFG_MONITOR_LEN (192 << 10) /* Reserve 192 kB for Monitor */
+-#define CFG_MALLOC_LEN (128 << 10) /* Reserve 128 kB for malloc() */
+-#define CFG_BOOTMAPSZ (8 << 20) /* Initial Memory map for Linux */
+-
+-/*
+- * Ethernet configuration
+- */
+-#define CONFIG_MPC5xxx_FEC 1
+-#define CONFIG_PHY_ADDR 0x00
+-#define CONFIG_MII 1
+-
+-/*
+- * GPIO configuration
+- */
+-#define CFG_GPS_PORT_CONFIG 0x90000404
+-
+-/*
+- * Miscellaneous configurable options
+- */
+-#define CFG_LONGHELP /* undef to save memory */
+-#define CFG_PROMPT "=> " /* Monitor Command Prompt */
+-#if (CONFIG_COMMANDS & CFG_CMD_KGDB)
+-#define CFG_CBSIZE 1024 /* Console I/O Buffer Size */
+-#else
+-#define CFG_CBSIZE 256 /* Console I/O Buffer Size */
+-#endif
+-#define CFG_PBSIZE (CFG_CBSIZE+sizeof(CFG_PROMPT)+16) /* Print Buffer Size */
+-#define CFG_MAXARGS 16 /* max number of command args */
+-#define CFG_BARGSIZE CFG_CBSIZE /* Boot Argument Buffer Size */
+-
+-#define CFG_MEMTEST_START 0x00100000 /* memtest works on */
+-#define CFG_MEMTEST_END 0x00f00000 /* 1 ... 15 MB in DRAM */
+-
+-#define CFG_LOAD_ADDR 0x100000 /* default load address */
+-
+-#define CFG_HZ 1000 /* decrementer freq: 1 ms ticks */
+-
+-/*
+- * Various low-level settings
+- */
+-#if defined(CONFIG_MPC5200)
+-#define CFG_HID0_INIT HID0_ICE | HID0_ICFI
+-#define CFG_HID0_FINAL HID0_ICE
+-#else
+-#define CFG_HID0_INIT 0
+-#define CFG_HID0_FINAL 0
+-#endif
+-
+-
+-#define CFG_BOOTCS_START CFG_FLASH_BASE
+-#define CFG_BOOTCS_SIZE CFG_FLASH_SIZE
+-#define CFG_BOOTCS_CFG 0x00047801
+-#define CFG_CS0_START CFG_FLASH_BASE
+-#define CFG_CS0_SIZE CFG_FLASH_SIZE
+-
+-#define CFG_CS_BURST 0x00000000
+-#define CFG_CS_DEADCYCLE 0x33333333
+-
+-#define CFG_RESET_ADDRESS 0xff000000
+-
+-/*-----------------------------------------------------------------------
+- * USB stuff
+- *-----------------------------------------------------------------------
+- */
+-#define CONFIG_USB_CLOCK 0x0001BBBB
+-#define CONFIG_USB_CONFIG 0x00001000
+-
+-
+-/*-----------------------------------------------------------------------
+- * IDE/ATA stuff Supports IDE harddisk
+- *-----------------------------------------------------------------------
+- */
+-
+-#undef CONFIG_IDE_8xx_PCCARD /* Don't use IDE with PC Card Adapter */
+-
+-#undef CONFIG_IDE_8xx_DIRECT /* Direct IDE not supported */
+-#undef CONFIG_IDE_LED /* LED for ide not supported */
+-
+-#define CONFIG_IDE_RESET /* reset for ide supported */
+-#define CONFIG_IDE_PREINIT
+-
+-#define CFG_IDE_MAXBUS 1 /* max. 1 IDE bus */
+-#define CFG_IDE_MAXDEVICE 1 /* max. 1 drive per IDE bus */
+-
+-#define CFG_ATA_IDE0_OFFSET 0x0000
+-
+-#define CFG_ATA_BASE_ADDR MPC5XXX_ATA
+-
+-/* Offset for data I/O */
+-#define CFG_ATA_DATA_OFFSET (0x0060)
+-
+-/* Offset for normal register accesses */
+-#define CFG_ATA_REG_OFFSET (CFG_ATA_DATA_OFFSET)
+-
+-/* Offset for alternate registers */
+-#define CFG_ATA_ALT_OFFSET (0x005C)
+-
+-/* Interval between registers */
+-#define CFG_ATA_STRIDE 4
+-
+-/* Status LED */
+-
+-#define CONFIG_STATUS_LED /* Status LED enabled */
+-#define CONFIG_BOARD_SPECIFIC_LED /* version has board specific leds */
+-
+-#define CFG_LED_BASE (0xf0000600 + 0x70) /* Timer 7 GPIO */
+-
+-#ifndef __ASSEMBLY__
+-/* LEDs */
+-typedef unsigned int led_id_t;
+-
+-#define __led_toggle(_msk) \
+- do { \
+- *((volatile long *) (CFG_LED_BASE)) ^= (_msk); \
+- } while(0)
+-
+-#define __led_set(_msk, _st) \
+- do { \
+- if ((_st)) \
+- *((volatile long *) (CFG_LED_BASE)) &= ~(_msk); \
+- else \
+- *((volatile long *) (CFG_LED_BASE)) |= (_msk); \
+- } while(0)
+-
+-#define __led_init(_msk, st) \
+- { \
+- *((volatile long *) (CFG_LED_BASE)) |= 0x34; \
+- }
+-
+-#endif
+-
+-#endif /* __CONFIG_H */
+diff -Naupr u-boot-1.1.6/include/configs/yellowstone.h u-boot-1.1.6-fsl-1/include/configs/yellowstone.h
+--- u-boot-1.1.6/include/configs/yellowstone.h 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/include/configs/yellowstone.h 2006-11-30 12:34:13.000000000 -0600
+@@ -37,6 +37,7 @@
+
+ #define CONFIG_BOARD_EARLY_INIT_F 1 /* Call board_early_init_f */
+ #define CONFIG_MISC_INIT_R 1 /* call misc_init_r() */
++#define CONFIG_BOARD_RESET 1 /* call board_reset() */
+
+ /*-----------------------------------------------------------------------
+ * Base addresses -- Note these are effective addresses where the
+diff -Naupr u-boot-1.1.6/include/configs/yosemite.h u-boot-1.1.6-fsl-1/include/configs/yosemite.h
+--- u-boot-1.1.6/include/configs/yosemite.h 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/include/configs/yosemite.h 2006-11-30 12:34:13.000000000 -0600
+@@ -37,6 +37,7 @@
+
+ #define CONFIG_BOARD_EARLY_INIT_F 1 /* Call board_early_init_f */
+ #define CONFIG_MISC_INIT_R 1 /* call misc_init_r() */
++#define CONFIG_BOARD_RESET 1 /* call board_reset() */
+
+ /*-----------------------------------------------------------------------
+ * Base addresses -- Note these are effective addresses where the
+diff -Naupr u-boot-1.1.6/include/environment.h u-boot-1.1.6-fsl-1/include/environment.h
+--- u-boot-1.1.6/include/environment.h 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/include/environment.h 2006-11-30 12:34:13.000000000 -0600
+@@ -79,8 +79,7 @@
+ # ifdef CFG_ENV_OFFSET_REDUND
+ # define CFG_REDUNDAND_ENVIRONMENT
+ # endif
+-# if defined(CONFIG_NAND_U_BOOT)
+-/* Use embedded environment in NAND boot versions */
++# ifdef CFG_ENV_IS_EMBEDDED
+ # define ENV_IS_EMBEDDED 1
+ # endif
+ #endif /* CFG_ENV_IS_IN_NAND */
+diff -Naupr u-boot-1.1.6/include/flash.h u-boot-1.1.6-fsl-1/include/flash.h
+--- u-boot-1.1.6/include/flash.h 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/include/flash.h 2006-11-30 12:34:13.000000000 -0600
+@@ -43,9 +43,14 @@ typedef struct {
+ ulong write_tout; /* maximum write timeout */
+ ulong buffer_write_tout; /* maximum buffer write timeout */
+ ushort vendor; /* the primary vendor id */
+- ushort cmd_reset; /* Vendor specific reset command */
++ ushort cmd_reset; /* vendor specific reset command */
+ ushort interface; /* used for x8/x16 adjustments */
+ ushort legacy_unlock; /* support Intel legacy (un)locking */
++ uchar manufacturer_id; /* manufacturer id */
++ ushort device_id; /* device id */
++ ushort device_id2; /* extended device id */
++ ushort ext_addr; /* extended query table address */
++ ushort cfi_version; /* cfi version */
+ #endif
+ } flash_info_t;
+
+@@ -439,6 +444,7 @@ extern void flash_read_factory_serial(fl
+ #define FLASH_MAN_MT 0x00400000
+ #define FLASH_MAN_SHARP 0x00500000
+ #define FLASH_MAN_ATM 0x00600000
++#define FLASH_MAN_CFI 0x01000000
+
+
+ #define FLASH_TYPEMASK 0x0000FFFF /* extract FLASH type information */
+diff -Naupr u-boot-1.1.6/include/i2c.h u-boot-1.1.6-fsl-1/include/i2c.h
+--- u-boot-1.1.6/include/i2c.h 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/include/i2c.h 2006-11-10 11:24:30.000000000 -0600
+@@ -82,4 +82,49 @@ int i2c_write(uchar chip, uint addr, int
+ uchar i2c_reg_read (uchar chip, uchar reg);
+ void i2c_reg_write(uchar chip, uchar reg, uchar val);
+
++/*
++ * Functions for setting the current I2C bus and its speed
++ */
++
++/*
++ * i2c_set_bus_num:
++ *
++ * Change the active I2C bus. Subsequent read/write calls will
++ * go to this one.
++ *
++ * bus - bus index, zero based
++ *
++ * Returns: 0 on success, not 0 on failure
++ *
++ */
++int i2c_set_bus_num(unsigned int bus);
++
++/*
++ * i2c_get_bus_num:
++ *
++ * Returns index of currently active I2C bus. Zero-based.
++ */
++
++unsigned int i2c_get_bus_num(void);
++
++/*
++ * i2c_set_bus_speed:
++ *
++ * Change the speed of the active I2C bus
++ *
++ * speed - bus speed in Hz
++ *
++ * Returns: 0 on success, not 0 on failure
++ *
++ */
++int i2c_set_bus_speed(unsigned int);
++
++/*
++ * i2c_get_bus_speed:
++ *
++ * Returns speed of currently active I2C bus in Hz
++ */
++
++unsigned int i2c_get_bus_speed(void);
++
+ #endif /* _I2C_H_ */
+diff -Naupr u-boot-1.1.6/include/ioports.h u-boot-1.1.6-fsl-1/include/ioports.h
+--- u-boot-1.1.6/include/ioports.h 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/include/ioports.h 2006-12-06 10:33:49.000000000 -0600
+@@ -53,3 +53,13 @@ typedef struct {
+ * like the table in the 8260UM (and in the hymod manuals).
+ */
+ extern const iop_conf_t iop_conf_tab[4][32];
++
++typedef struct {
++ unsigned char port;
++ unsigned char pin;
++ int dir;
++ int open_drain;
++ int assign;
++} qe_iop_conf_t;
++
++#define QE_IOP_TAB_END (-1)
+diff -Naupr u-boot-1.1.6/include/mpc5xxx.h u-boot-1.1.6-fsl-1/include/mpc5xxx.h
+--- u-boot-1.1.6/include/mpc5xxx.h 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/include/mpc5xxx.h 2006-11-10 11:24:30.000000000 -0600
+@@ -188,7 +188,14 @@
+ #define MPC5XXX_WU_GPIO_ENABLE (MPC5XXX_WU_GPIO + 0x0000)
+ #define MPC5XXX_WU_GPIO_ODE (MPC5XXX_WU_GPIO + 0x0004)
+ #define MPC5XXX_WU_GPIO_DIR (MPC5XXX_WU_GPIO + 0x0008)
+-#define MPC5XXX_WU_GPIO_DATA (MPC5XXX_WU_GPIO + 0x000c)
++#define MPC5XXX_WU_GPIO_DATA_O (MPC5XXX_WU_GPIO + 0x000c)
++#define MPC5XXX_WU_GPIO_DATA_I (MPC5XXX_WU_GPIO + 0x0020)
++
++/* GPIO pins */
++#define GPIO_WKUP_7 0x80000000UL
++#define GPIO_PSC6_0 0x10000000UL
++#define GPIO_PSC3_9 0x04000000UL
++#define GPIO_PSC1_4 0x01000000UL
+
+ /* PCI registers */
+ #define MPC5XXX_PCI_CMD (MPC5XXX_PCI + 0x04)
+diff -Naupr u-boot-1.1.6/include/mpc83xx.h u-boot-1.1.6-fsl-1/include/mpc83xx.h
+--- u-boot-1.1.6/include/mpc83xx.h 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/include/mpc83xx.h 2006-11-10 11:24:30.000000000 -0600
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright 2004 Freescale Semiconductor, Inc.
++ * Copyright (C) 2004-2006 Freescale Semiconductor, Inc.
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+@@ -8,16 +8,6 @@
+ * 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
+ */
+
+ /*
+@@ -29,6 +19,7 @@
+ #ifndef __MPC83XX_H__
+ #define __MPC83XX_H__
+
++#include <config.h>
+ #if defined(CONFIG_E300)
+ #include <asm/e300.h>
+ #endif
+@@ -85,6 +76,33 @@
+ #define LBLAWBAR3 0x0038
+ #define LBLAWAR3 0x003C
+
++/*
++ * The device ID and revision numbers
++ */
++#define SPR_8349E_REV10 0x80300100
++#define SPR_8349_REV10 0x80310100
++#define SPR_8347E_REV10_TBGA 0x80320100
++#define SPR_8347_REV10_TBGA 0x80330100
++#define SPR_8347E_REV10_PBGA 0x80340100
++#define SPR_8347_REV10_PBGA 0x80350100
++#define SPR_8343E_REV10 0x80360100
++#define SPR_8343_REV10 0x80370100
++
++#define SPR_8349E_REV11 0x80300101
++#define SPR_8349_REV11 0x80310101
++#define SPR_8347E_REV11_TBGA 0x80320101
++#define SPR_8347_REV11_TBGA 0x80330101
++#define SPR_8347E_REV11_PBGA 0x80340101
++#define SPR_8347_REV11_PBGA 0x80350101
++#define SPR_8343E_REV11 0x80360101
++#define SPR_8343_REV11 0x80370101
++
++#define SPR_8360E_REV10 0x80480010
++#define SPR_8360_REV10 0x80490010
++#define SPR_8360E_REV11 0x80480011
++#define SPR_8360_REV11 0x80490011
++#define SPR_8360E_REV12 0x80480012
++#define SPR_8360_REV12 0x80490012
+
+ /*
+ * Base Registers & Option Registers
+@@ -116,9 +134,17 @@
+ #define BR_MS_UPMA 0x00000080 /* UPMA */
+ #define BR_MS_UPMB 0x000000A0 /* UPMB */
+ #define BR_MS_UPMC 0x000000C0 /* UPMC */
++#if defined (CONFIG_MPC8360)
++#define BR_ATOM 0x0000000C
++#define BR_ATOM_SHIFT 2
++#endif
+ #define BR_V 0x00000001
+ #define BR_V_SHIFT 0
++#if defined (CONFIG_MPC8349)
+ #define BR_RES ~(BR_BA|BR_PS|BR_DECC|BR_WP|BR_MSEL|BR_V)
++#elif defined (CONFIG_MPC8360)
++#define BR_RES ~(BR_BA|BR_PS|BR_DECC|BR_WP|BR_MSEL|BR_ATOM|BR_V)
++#endif
+
+ #define OR0 0x5004
+ #define OR1 0x500C
+@@ -201,14 +227,21 @@
+ #define HRCWH_PCI_AGENT 0x00000000
+ #define HRCWH_PCI_HOST 0x80000000
+
++#if defined (CONFIG_MPC8349)
+ #define HRCWH_32_BIT_PCI 0x00000000
+ #define HRCWH_64_BIT_PCI 0x40000000
++#endif
+
+ #define HRCWH_PCI1_ARBITER_DISABLE 0x00000000
+ #define HRCWH_PCI1_ARBITER_ENABLE 0x20000000
+
++#if defined (CONFIG_MPC8349)
+ #define HRCWH_PCI2_ARBITER_DISABLE 0x00000000
+ #define HRCWH_PCI2_ARBITER_ENABLE 0x10000000
++#elif defined (CONFIG_MPC8360)
++#define HRCWH_PCICKDRV_DISABLE 0x00000000
++#define HRCWH_PCICKDRV_ENABLE 0x10000000
++#endif
+
+ #define HRCWH_CORE_DISABLE 0x08000000
+ #define HRCWH_CORE_ENABLE 0x00000000
+@@ -225,11 +258,14 @@
+
+ #define HRCWH_ROM_LOC_DDR_SDRAM 0x00000000
+ #define HRCWH_ROM_LOC_PCI1 0x00100000
++#if defined (CONFIG_MPC8349)
+ #define HRCWH_ROM_LOC_PCI2 0x00200000
++#endif
+ #define HRCWH_ROM_LOC_LOCAL_8BIT 0x00500000
+ #define HRCWH_ROM_LOC_LOCAL_16BIT 0x00600000
+ #define HRCWH_ROM_LOC_LOCAL_32BIT 0x00700000
+
++#if defined (CONFIG_MPC8349)
+ #define HRCWH_TSEC1M_IN_RGMII 0x00000000
+ #define HRCWH_TSEC1M_IN_RTBI 0x00004000
+ #define HRCWH_TSEC1M_IN_GMII 0x00008000
+@@ -239,10 +275,22 @@
+ #define HRCWH_TSEC2M_IN_RTBI 0x00001000
+ #define HRCWH_TSEC2M_IN_GMII 0x00002000
+ #define HRCWH_TSEC2M_IN_TBI 0x00003000
++#endif
++
++#if defined (CONFIG_MPC8360)
++#define HRCWH_SECONDARY_DDR_DISABLE 0x00000000
++#define HRCWH_SECONDARY_DDR_ENABLE 0x00000010
++#endif
+
+ #define HRCWH_BIG_ENDIAN 0x00000000
+ #define HRCWH_LITTLE_ENDIAN 0x00000008
+
++#define HRCWH_LALE_NORMAL 0x00000000
++#define HRCWH_LALE_EARLY 0x00000004
++
++#define HRCWH_LDP_SET 0x00000000
++#define HRCWH_LDP_CLEAR 0x00000002
++
+ /*
+ * Hard Reset Configration Word - Low
+ */
+@@ -281,6 +329,47 @@
+ #define HRCWL_CORE_TO_CSB_2_5X1 0x00050000
+ #define HRCWL_CORE_TO_CSB_3X1 0x00060000
+
++#if defined (CONFIG_MPC8360)
++#define HRCWL_CE_PLL_VCO_DIV_4 0x00000000
++#define HRCWL_CE_PLL_VCO_DIV_8 0x00000040
++#define HRCWL_CE_PLL_VCO_DIV_2 0x00000080
++
++#define HRCWL_CE_PLL_DIV_1X1 0x00000000
++#define HRCWL_CE_PLL_DIV_2X1 0x00000020
++
++#define HRCWL_CE_TO_PLL_1X16_ 0x00000000
++#define HRCWL_CE_TO_PLL_1X2 0x00000002
++#define HRCWL_CE_TO_PLL_1X3 0x00000003
++#define HRCWL_CE_TO_PLL_1X4 0x00000004
++#define HRCWL_CE_TO_PLL_1X5 0x00000005
++#define HRCWL_CE_TO_PLL_1X6 0x00000006
++#define HRCWL_CE_TO_PLL_1X7 0x00000007
++#define HRCWL_CE_TO_PLL_1X8 0x00000008
++#define HRCWL_CE_TO_PLL_1X9 0x00000009
++#define HRCWL_CE_TO_PLL_1X10 0x0000000A
++#define HRCWL_CE_TO_PLL_1X11 0x0000000B
++#define HRCWL_CE_TO_PLL_1X12 0x0000000C
++#define HRCWL_CE_TO_PLL_1X13 0x0000000D
++#define HRCWL_CE_TO_PLL_1X14 0x0000000E
++#define HRCWL_CE_TO_PLL_1X15 0x0000000F
++#define HRCWL_CE_TO_PLL_1X16 0x00000010
++#define HRCWL_CE_TO_PLL_1X17 0x00000011
++#define HRCWL_CE_TO_PLL_1X18 0x00000012
++#define HRCWL_CE_TO_PLL_1X19 0x00000013
++#define HRCWL_CE_TO_PLL_1X20 0x00000014
++#define HRCWL_CE_TO_PLL_1X21 0x00000015
++#define HRCWL_CE_TO_PLL_1X22 0x00000016
++#define HRCWL_CE_TO_PLL_1X23 0x00000017
++#define HRCWL_CE_TO_PLL_1X24 0x00000018
++#define HRCWL_CE_TO_PLL_1X25 0x00000019
++#define HRCWL_CE_TO_PLL_1X26 0x0000001A
++#define HRCWL_CE_TO_PLL_1X27 0x0000001B
++#define HRCWL_CE_TO_PLL_1X28 0x0000001C
++#define HRCWL_CE_TO_PLL_1X29 0x0000001D
++#define HRCWL_CE_TO_PLL_1X30 0x0000001E
++#define HRCWL_CE_TO_PLL_1X31 0x0000001F
++#endif
++
+ /*
+ * LCRR - Clock Ratio Register (10.3.1.16)
+ */
+@@ -310,4 +399,31 @@
+ #define LCRR_CLKDIV_8 0x00000008
+ #define LCRR_CLKDIV_SHIFT 0
+
++/*
++ * SCCR-System Clock Control Register
++ */
++#define SCCR_TSEC1CM_0 0x00000000
++#define SCCR_TSEC1CM_1 0x40000000
++#define SCCR_TSEC1CM_2 0x80000000
++#define SCCR_TSEC1CM_3 0xC0000000
++#define SCCR_TSEC2CM_0 0x00000000
++#define SCCR_TSEC2CM_1 0x10000000
++#define SCCR_TSEC2CM_2 0x20000000
++#define SCCR_TSEC2CM_3 0x30000000
++#define SCCR_ENCCM_0 0x00000000
++#define SCCR_ENCCM_1 0x01000000
++#define SCCR_ENCCM_2 0x02000000
++#define SCCR_ENCCM_3 0x03000000
++#define SCCR_USBCM_0 0x00000000
++#define SCCR_USBCM_1 0x00500000
++#define SCCR_USBCM_2 0x00A00000
++#define SCCR_USBCM_3 0x00F00000
++
++#define SCCR_CLK_MASK ( SCCR_TSEC1CM_3 \
++ | SCCR_TSEC2CM_3 \
++ | SCCR_ENCCM_3 \
++ | SCCR_USBCM_3 )
++
++#define SCCR_DEFAULT 0xFFFFFFFF
++
+ #endif /* __MPC83XX_H__ */
+diff -Naupr u-boot-1.1.6/include/ppc440.h u-boot-1.1.6-fsl-1/include/ppc440.h
+--- u-boot-1.1.6/include/ppc440.h 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/include/ppc440.h 2006-12-06 10:33:49.000000000 -0600
+@@ -1350,26 +1350,26 @@
+
+ #if defined(CONFIG_440SPE) || defined(CONFIG_440EPX) || defined(CONFIG_440GRX)
+ #define UIC2_DCR_BASE 0xe0
+-#define uic2sr (UIC0_DCR_BASE+0x0) /* UIC2 status-Read Clear */
+-#define uic2srs (UIC0_DCR_BASE+0x1) /* UIC2 status-Read Set */
+-#define uic2er (UIC0_DCR_BASE+0x2) /* UIC2 enable */
+-#define uic2cr (UIC0_DCR_BASE+0x3) /* UIC2 critical */
+-#define uic2pr (UIC0_DCR_BASE+0x4) /* UIC2 polarity */
+-#define uic2tr (UIC0_DCR_BASE+0x5) /* UIC2 triggering */
+-#define uic2msr (UIC0_DCR_BASE+0x6) /* UIC2 masked status */
+-#define uic2vr (UIC0_DCR_BASE+0x7) /* UIC2 vector */
+-#define uic2vcr (UIC0_DCR_BASE+0x8) /* UIC2 vector configuration */
++#define uic2sr (UIC2_DCR_BASE+0x0) /* UIC2 status-Read Clear */
++#define uic2srs (UIC2_DCR_BASE+0x1) /* UIC2 status-Read Set */
++#define uic2er (UIC2_DCR_BASE+0x2) /* UIC2 enable */
++#define uic2cr (UIC2_DCR_BASE+0x3) /* UIC2 critical */
++#define uic2pr (UIC2_DCR_BASE+0x4) /* UIC2 polarity */
++#define uic2tr (UIC2_DCR_BASE+0x5) /* UIC2 triggering */
++#define uic2msr (UIC2_DCR_BASE+0x6) /* UIC2 masked status */
++#define uic2vr (UIC2_DCR_BASE+0x7) /* UIC2 vector */
++#define uic2vcr (UIC2_DCR_BASE+0x8) /* UIC2 vector configuration */
+
+ #define UIC3_DCR_BASE 0xf0
+-#define uic3sr (UIC1_DCR_BASE+0x0) /* UIC3 status-Read Clear */
+-#define uic3srs (UIC0_DCR_BASE+0x1) /* UIC3 status-Read Set */
+-#define uic3er (UIC1_DCR_BASE+0x2) /* UIC3 enable */
+-#define uic3cr (UIC1_DCR_BASE+0x3) /* UIC3 critical */
+-#define uic3pr (UIC1_DCR_BASE+0x4) /* UIC3 polarity */
+-#define uic3tr (UIC1_DCR_BASE+0x5) /* UIC3 triggering */
+-#define uic3msr (UIC1_DCR_BASE+0x6) /* UIC3 masked status */
+-#define uic3vr (UIC1_DCR_BASE+0x7) /* UIC3 vector */
+-#define uic3vcr (UIC1_DCR_BASE+0x8) /* UIC3 vector configuration */
++#define uic3sr (UIC3_DCR_BASE+0x0) /* UIC3 status-Read Clear */
++#define uic3srs (UIC3_DCR_BASE+0x1) /* UIC3 status-Read Set */
++#define uic3er (UIC3_DCR_BASE+0x2) /* UIC3 enable */
++#define uic3cr (UIC3_DCR_BASE+0x3) /* UIC3 critical */
++#define uic3pr (UIC3_DCR_BASE+0x4) /* UIC3 polarity */
++#define uic3tr (UIC3_DCR_BASE+0x5) /* UIC3 triggering */
++#define uic3msr (UIC3_DCR_BASE+0x6) /* UIC3 masked status */
++#define uic3vr (UIC3_DCR_BASE+0x7) /* UIC3 vector */
++#define uic3vcr (UIC3_DCR_BASE+0x8) /* UIC3 vector configuration */
+ #endif /* CONFIG_440SPE */
+
+ #if defined(CONFIG_440GX)
+@@ -3183,7 +3183,7 @@
+ #define GPIO0 0
+ #define GPIO1 1
+
+-#if defined(CONFIG_440GP)
++#if defined(CONFIG_440GP) || defined(CONFIG_440GX)
+ #define GPIO0_BASE (CFG_PERIPHERAL_BASE+0x00000700)
+
+ #define GPIO0_OR (GPIO0_BASE+0x0)
+diff -Naupr u-boot-1.1.6/lib_ppc/board.c u-boot-1.1.6-fsl-1/lib_ppc/board.c
+--- u-boot-1.1.6/lib_ppc/board.c 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/lib_ppc/board.c 2006-12-06 10:33:49.000000000 -0600
+@@ -511,7 +511,7 @@ void board_init_f (ulong bootflag)
+ bd->bi_mbar_base = CFG_MBAR; /* base of internal registers */
+ #endif
+ #if defined(CONFIG_MPC83XX)
+- bd->bi_immrbar = CFG_IMMRBAR;
++ bd->bi_immrbar = CFG_IMMR;
+ #endif
+ #if defined(CONFIG_MPC8220)
+ bd->bi_mbar_base = CFG_MBAR; /* base of internal registers */
+@@ -521,17 +521,17 @@ void board_init_f (ulong bootflag)
+ bd->bi_pevfreq = gd->pev_clk;
+ bd->bi_flbfreq = gd->flb_clk;
+
+- /* store bootparam to sram (backward compatible), here? */
+- {
+- u32 *sram = (u32 *)CFG_SRAM_BASE;
+- *sram++ = gd->ram_size;
+- *sram++ = gd->bus_clk;
+- *sram++ = gd->inp_clk;
+- *sram++ = gd->cpu_clk;
+- *sram++ = gd->vco_clk;
+- *sram++ = gd->flb_clk;
+- *sram++ = 0xb8c3ba11; /* boot signature */
+- }
++ /* store bootparam to sram (backward compatible), here? */
++ {
++ u32 *sram = (u32 *)CFG_SRAM_BASE;
++ *sram++ = gd->ram_size;
++ *sram++ = gd->bus_clk;
++ *sram++ = gd->inp_clk;
++ *sram++ = gd->cpu_clk;
++ *sram++ = gd->vco_clk;
++ *sram++ = gd->flb_clk;
++ *sram++ = 0xb8c3ba11; /* boot signature */
++ }
+ #endif
+
+ bd->bi_bootflags = bootflag; /* boot / reboot flag (for LynxOS) */
+diff -Naupr u-boot-1.1.6/MAINTAINERS u-boot-1.1.6-fsl-1/MAINTAINERS
+--- u-boot-1.1.6/MAINTAINERS 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/MAINTAINERS 2006-12-06 10:33:48.000000000 -0600
+@@ -277,10 +277,13 @@ Daniel Poirot <dan.poirot@windriver.com>
+
+ Stefan Roese <sr@denx.de>
+
++ P3M7448 MPC7448
++
+ uc100 MPC857
+
+ TQM85xx MPC8540/8541/8555/8560
+
++ alpr PPC440GX
+ bamboo PPC440EP
+ bunbinga PPC405EP
+ ebony PPC440GP
+@@ -293,6 +296,8 @@ Stefan Roese <sr@denx.de>
+ yellowstone PPC440GR
+ yosemite PPC440EP
+
++ P3M750 PPC750FX/GX/GL
++
+ Yusdi Santoso <yusdi_santoso@adaptec.com>
+
+ HIDDEN_DRAGON MPC8241/MPC8245
+@@ -339,6 +344,18 @@ John Zhan <zhanz@sinovee.com>
+
+ svm_sc8xx MPC8xx
+
++Timur Tabi <timur@freescale.com>
++
++ MPC8349E-mITX MPC8349
++
++Kim Phillips <kim.phillips@freescale.com>
++
++ MPC8349EMDS MPC8349
++
++Dave Liu <daveliu@freescale.com>
++
++ MPC8360EMDS MPC8360
++
+ -------------------------------------------------------------------------
+
+ Unknown / orphaned boards:
+diff -Naupr u-boot-1.1.6/MAKEALL u-boot-1.1.6-fsl-1/MAKEALL
+--- u-boot-1.1.6/MAKEALL 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/MAKEALL 2006-12-06 10:33:48.000000000 -0600
+@@ -74,21 +74,21 @@ LIST_8xx=" \
+ #########################################################################
+
+ LIST_4xx=" \
+- ADCIOP AP1000 AR405 ASH405 \
+- bamboo bubinga CANBT CMS700 \
+- CPCI2DP CPCI405 CPCI4052 CPCI405AB \
+- CPCI405DT CPCI440 CPCIISER4 CRAYL1 \
+- csb272 csb472 DASA_SIM DP405 \
+- DU405 ebony ERIC EXBITGEN \
+- G2000 HH405 HUB405 JSE \
+- KAREF luan METROBOX MIP405 \
+- MIP405T ML2 ml300 ocotea \
+- OCRTC ORSG p3p440 PCI405 \
+- pcs440ep PIP405 PLU405 PMC405 \
+- PPChameleonEVB sbc405 sequoia sequoia_nand \
+- VOH405 VOM405 W7OLMC W7OLMG \
+- walnut WUH405 XPEDITE1K yellowstone \
+- yosemite yucca bamboo \
++ ADCIOP alpr AP1000 AR405 \
++ ASH405 bamboo bubinga CANBT \
++ CMS700 CPCI2DP CPCI405 CPCI4052 \
++ CPCI405AB CPCI405DT CPCI440 CPCIISER4 \
++ CRAYL1 csb272 csb472 DASA_SIM \
++ DP405 DU405 ebony ERIC \
++ EXBITGEN G2000 HH405 HUB405 \
++ JSE KAREF luan METROBOX \
++ MIP405 MIP405T ML2 ml300 \
++ ocotea OCRTC ORSG p3p440 \
++ PCI405 pcs440ep PIP405 PLU405 \
++ PMC405 PPChameleonEVB sbc405 sequoia \
++ sequoia_nand VOH405 VOM405 W7OLMC \
++ W7OLMG walnut WUH405 XPEDITE1K \
++ yellowstone yosemite yucca \
+ "
+
+ #########################################################################
+@@ -130,7 +130,7 @@ LIST_8260=" \
+ #########################################################################
+
+ LIST_83xx=" \
+- TQM834x MPC8349EMDS \
++ TQM834x MPC8349EMDS MPC8349ITX MPC8360EMDS \
+ "
+
+
+@@ -151,11 +151,12 @@ LIST_85xx=" \
+
+ LIST_74xx=" \
+ DB64360 DB64460 EVB64260 P3G4 \
+- PCIPPC2 PCIPPC6 ZUMA \
++ p3m7448 PCIPPC2 PCIPPC6 ZUMA \
+ "
+
+ LIST_7xx=" \
+- BAB7xx CPCI750 ELPPC ppmc7xx \
++ BAB7xx CPCI750 ELPPC p3m750 \
++ ppmc7xx \
+ "
+
+ LIST_ppc="${LIST_5xx} ${LIST_5xxx} \
+diff -Naupr u-boot-1.1.6/Makefile u-boot-1.1.6-fsl-1/Makefile
+--- u-boot-1.1.6/Makefile 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/Makefile 2006-12-06 10:33:48.000000000 -0600
+@@ -93,7 +93,7 @@ MKCONFIG := $(SRCTREE)/mkconfig
+ export MKCONFIG
+
+ ifneq ($(OBJTREE),$(SRCTREE))
+-REMOTE_BUILD := 1
++REMOTE_BUILD := 1
+ export REMOTE_BUILD
+ endif
+
+@@ -174,9 +174,6 @@ endif
+ ifeq ($(CPU),ppc4xx)
+ OBJS += cpu/$(CPU)/resetvec.o
+ endif
+-ifeq ($(CPU),mpc83xx)
+-OBJS += cpu/$(CPU)/resetvec.o
+-endif
+ ifeq ($(CPU),mpc85xx)
+ OBJS += cpu/$(CPU)/resetvec.o
+ endif
+@@ -206,6 +203,9 @@ LIBS += dtt/libdtt.a
+ LIBS += drivers/libdrivers.a
+ LIBS += drivers/nand/libnand.a
+ LIBS += drivers/nand_legacy/libnand_legacy.a
++ifeq ($(CPU),mpc83xx)
++LIBS += drivers/qe/qe.a
++endif
+ LIBS += drivers/sk98lin/libsk98lin.a
+ LIBS += post/libpost.a post/cpu/libcpu.a
+ LIBS += common/libcommon.a
+@@ -378,8 +378,8 @@ Lite5200_LOWBOOT08_config \
+ icecube_5200_config \
+ icecube_5200_LOWBOOT_config \
+ icecube_5200_LOWBOOT08_config \
+-icecube_5200_DDR_config \
+-icecube_5200_DDR_LOWBOOT_config \
++icecube_5200_DDR_config \
++icecube_5200_DDR_LOWBOOT_config \
+ icecube_5200_DDR_LOWBOOT08_config \
+ icecube_5100_config: unconfig
+ @mkdir -p $(obj)include
+@@ -412,7 +412,7 @@ icecube_5100_config: unconfig
+ @$(MKCONFIG) -a IceCube ppc mpc5xxx icecube
+
+ v38b_config: unconfig
+- @./mkconfig -a V38B ppc mpc5xxx v38b
++ @./mkconfig -a v38b ppc mpc5xxx v38b
+
+ inka4x0_config: unconfig
+ @$(MKCONFIG) inka4x0 ppc mpc5xxx inka4x0
+@@ -458,7 +458,7 @@ prs200_highboot_DDR_config: unconfig
+ @[ -n "$(findstring _SDRAM,$@)" ] || \
+ { if [ -n "$(findstring mcc200,$@)" ]; \
+ then \
+- echo "... with DDR" ; \
++ echo "... with DDR" ; \
+ else \
+ if [ -n "$(findstring _DDR,$@)" ];\
+ then \
+@@ -865,9 +865,9 @@ RPXClassic_config: unconfig
+ RPXlite_config: unconfig
+ @$(MKCONFIG) $(@:_config=) ppc mpc8xx RPXlite
+
+-RPXlite_DW_64_config \
+-RPXlite_DW_LCD_config \
+-RPXlite_DW_64_LCD_config \
++RPXlite_DW_64_config \
++RPXlite_DW_LCD_config \
++RPXlite_DW_64_LCD_config \
+ RPXlite_DW_NVRAM_config \
+ RPXlite_DW_NVRAM_64_config \
+ RPXlite_DW_NVRAM_LCD_config \
+@@ -880,12 +880,12 @@ RPXlite_DW_config: unconfig
+ echo "... with 64MHz system clock ..."; \
+ }
+ @[ -z "$(findstring _LCD,$@)" ] || \
+- { echo "#define CONFIG_LCD" >>$(obj)include/config.h ; \
++ { echo "#define CONFIG_LCD" >>$(obj)include/config.h ; \
+ echo "#define CONFIG_NEC_NL6448BC20" >>$(obj)include/config.h ; \
+ echo "... with LCD display ..."; \
+ }
+ @[ -z "$(findstring _NVRAM,$@)" ] || \
+- { echo "#define CFG_ENV_IS_IN_NVRAM" >>$(obj)include/config.h ; \
++ { echo "#define CFG_ENV_IS_IN_NVRAM" >>$(obj)include/config.h ; \
+ echo "... with ENV in NVRAM ..."; \
+ }
+ @$(MKCONFIG) -a RPXlite_DW ppc mpc8xx RPXlite_dw
+@@ -984,6 +984,9 @@ xtract_4xx = $(subst _25,,$(subst _33,,$
+ ADCIOP_config: unconfig
+ @$(MKCONFIG) $(@:_config=) ppc ppc4xx adciop esd
+
++alpr_config: unconfig
++ @./mkconfig $(@:_config=) ppc ppc4xx alpr prodrive
++
+ AP1000_config:unconfig
+ @$(MKCONFIG) $(@:_config=) ppc ppc4xx ap1000 amirix
+
+@@ -1585,15 +1588,39 @@ r5200_config : unconfig
+ ## MPC83xx Systems
+ #########################################################################
+
+-MPC8349ADS_config: unconfig
+- @$(MKCONFIG) $(@:_config=) ppc mpc83xx mpc8349ads
+-
+ TQM834x_config: unconfig
+ @$(MKCONFIG) $(@:_config=) ppc mpc83xx tqm834x
+
+ MPC8349EMDS_config: unconfig
+ @$(MKCONFIG) $(@:_config=) ppc mpc83xx mpc8349emds
+
++MPC8360EMDS_config \
++MPC8360EMDS_HOST_33_config \
++MPC8360EMDS_HOST_66_config \
++MPC8360EMDS_SLAVE_config: unconfig
++ @echo "" >include/config.h ; \
++ if [ "$(findstring _HOST_,$@)" ] ; then \
++ echo -n "... PCI HOST " ; \
++ echo "#define CONFIG_PCI" >>include/config.h ; \
++ fi ; \
++ if [ "$(findstring _SLAVE_,$@)" ] ; then \
++ echo "...PCI SLAVE 66M" ; \
++ echo "#define CONFIG_PCI" >>include/config.h ; \
++ echo "#define CONFIG_PCISLAVE" >>include/config.h ; \
++ fi ; \
++ if [ "$(findstring _33_,$@)" ] ; then \
++ echo -n "...33M ..." ; \
++ echo "#define PCI_33M" >>include/config.h ; \
++ fi ; \
++ if [ "$(findstring _66_,$@)" ] ; then \
++ echo -n "...66M..." ; \
++ echo "#define PCI_66M" >>include/config.h ; \
++ fi ;
++ @$(MKCONFIG) -a MPC8360EMDS ppc mpc83xx mpc8360emds
++
++MPC8349ITX_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc mpc83xx mpc8349itx
++
+ #########################################################################
+ ## MPC85xx Systems
+ #########################################################################
+@@ -1721,6 +1748,16 @@ EVB64260_750CX_config: unconfig
+ P3G4_config: unconfig
+ @$(MKCONFIG) $(@:_config=) ppc 74xx_7xx evb64260
+
++p3m750_config \
++p3m7448_config: unconfig
++ @mkdir -p $(obj)include
++ @if [ "$(findstring 750_,$@)" ] ; then \
++ echo "#define CONFIG_P3M750" >>$(obj)include/config.h ; \
++ else \
++ echo "#define CONFIG_P3M7448" >>$(obj)include/config.h ; \
++ fi
++ @$(MKCONFIG) -a p3mx ppc 74xx_7xx p3mx prodrive
++
+ PCIPPC2_config \
+ PCIPPC6_config: unconfig
+ @$(MKCONFIG) $(@:_config=) ppc 74xx_7xx pcippc2
+@@ -1784,7 +1821,7 @@ ap966_config \
+ ap922_config \
+ ap922_XA10_config \
+ ap7_config \
+-ap720t_config \
++ap720t_config \
+ ap920t_config \
+ ap926ejs_config \
+ ap946es_config: unconfig
+@@ -1941,7 +1978,7 @@ cm4008_config : unconfig
+ cm41xx_config : unconfig
+ @$(MKCONFIG) $(@:_config=) arm arm920t cm41xx NULL ks8695
+
+-gth2_config : unconfig
++gth2_config : unconfig
+ @mkdir -p $(obj)include
+ @ >$(obj)include/config.h
+ @echo "#define CONFIG_GTH2 1" >>$(obj)include/config.h
+@@ -2087,19 +2124,19 @@ tb0229_config: unconfig
+ #########################################################################
+ ## MIPS32 AU1X00
+ #########################################################################
+-dbau1000_config : unconfig
++dbau1000_config : unconfig
+ @mkdir -p $(obj)include
+ @ >$(obj)include/config.h
+ @echo "#define CONFIG_DBAU1000 1" >>$(obj)include/config.h
+ @$(MKCONFIG) -a dbau1x00 mips mips dbau1x00
+
+-dbau1100_config : unconfig
++dbau1100_config : unconfig
+ @mkdir -p $(obj)include
+ @ >$(obj)include/config.h
+ @echo "#define CONFIG_DBAU1100 1" >>$(obj)include/config.h
+ @$(MKCONFIG) -a dbau1x00 mips mips dbau1x00
+
+-dbau1500_config : unconfig
++dbau1500_config : unconfig
+ @mkdir -p $(obj)include
+ @ >$(obj)include/config.h
+ @echo "#define CONFIG_DBAU1500 1" >>$(obj)include/config.h
+@@ -2117,7 +2154,7 @@ dbau1550_el_config : unconfig
+ @echo "#define CONFIG_DBAU1550 1" >>$(obj)include/config.h
+ @$(MKCONFIG) -a dbau1x00 mips mips dbau1x00
+
+-pb1000_config : unconfig
++pb1000_config : unconfig
+ @mkdir -p $(obj)include
+ @ >$(obj)include/config.h
+ @echo "#define CONFIG_PB1000 1" >>$(obj)include/config.h
+diff -Naupr u-boot-1.1.6/net/eth.c u-boot-1.1.6-fsl-1/net/eth.c
+--- u-boot-1.1.6/net/eth.c 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/net/eth.c 2006-12-06 10:33:49.000000000 -0600
+@@ -54,6 +54,7 @@ extern int scc_initialize(bd_t*);
+ extern int skge_initialize(bd_t*);
+ extern int tsec_initialize(bd_t*, int, char *);
+ extern int npe_initialize(bd_t *);
++extern int uec_initialize(int);
+
+ static struct eth_device *eth_devices, *eth_current;
+
+@@ -142,13 +143,10 @@ int eth_initialize(bd_t *bis)
+ miiphy_init();
+ #endif
+
+-#ifdef CONFIG_DB64360
++#if defined(CONFIG_DB64360) || defined(CONFIG_CPCI750)
+ mv6436x_eth_initialize(bis);
+ #endif
+-#ifdef CONFIG_CPCI750
+- mv6436x_eth_initialize(bis);
+-#endif
+-#ifdef CONFIG_DB64460
++#if defined(CONFIG_DB64460) || defined(CONFIG_P3Mx)
+ mv6446x_eth_initialize(bis);
+ #endif
+ #if defined(CONFIG_4xx) && !defined(CONFIG_IOP480) && !defined(CONFIG_AP1000)
+@@ -196,6 +194,12 @@ int eth_initialize(bd_t *bis)
+ tsec_initialize(bis, 3, CONFIG_MPC83XX_TSEC4_NAME);
+ # endif
+ #endif
++#if defined(CONFIG_UEC_ETH1)
++ uec_initialize(0);
++#endif
++#if defined(CONFIG_UEC_ETH2)
++ uec_initialize(1);
++#endif
+ #if defined(CONFIG_MPC86XX_TSEC1)
+ tsec_initialize(bis, 0, CONFIG_MPC86XX_TSEC1_NAME);
+ #endif
+diff -Naupr u-boot-1.1.6/README u-boot-1.1.6-fsl-1/README
+--- u-boot-1.1.6/README 2006-11-02 08:15:01.000000000 -0600
++++ u-boot-1.1.6-fsl-1/README 2006-11-30 12:34:13.000000000 -0600
+@@ -1207,7 +1207,12 @@ The following options need to be configu
+ clock chips. See common/cmd_i2c.c for a description of the
+ command line interface.
+
+- CONFIG_HARD_I2C selects the CPM hardware driver for I2C.
++ CONFIG_I2C_CMD_TREE is a recommended option that places
++ all I2C commands under a single 'i2c' root command. The
++ older 'imm', 'imd', 'iprobe' etc. commands are considered
++ deprecated and may disappear in the future.
++
++ CONFIG_HARD_I2C selects a hardware I2C controller.
+
+ CONFIG_SOFT_I2C configures u-boot to use a software (aka
+ bit-banging) driver instead of CPM or similar hardware
+@@ -1312,6 +1317,42 @@ The following options need to be configu
+ in u-boot bd_info structure based on u-boot environment
+ variable "i2cfast". (see also i2cfast)
+
++ CONFIG_I2C_MULTI_BUS
++
++ This option allows the use of multiple I2C buses, each of which
++ must have a controller. At any point in time, only one bus is
++ active. To switch to a different bus, use the 'i2c dev' command.
++ Note that bus numbering is zero-based.
++
++ CFG_I2C_NOPROBES
++
++ This option specifies a list of I2C devices that will be skipped
++ when the 'i2c probe' command is issued (or 'iprobe' using the legacy
++ command). If CONFIG_I2C_MULTI_BUS is set, specify a list of bus-device
++ pairs. Otherwise, specify a 1D array of device addresses
++
++ e.g.
++ #undef CONFIG_I2C_MULTI_BUS
++ #define CFG_I2C_NOPROBES {0x50,0x68}
++
++ will skip addresses 0x50 and 0x68 on a board with one I2C bus
++
++ #define CONFIG_I2C_MULTI_BUS
++ #define CFG_I2C_MULTI_NOPROBES {{0,0x50},{0,0x68},{1,0x54}}
++
++ will skip addresses 0x50 and 0x68 on bus 0 and address 0x54 on bus 1
++
++ CFG_SPD_BUS_NUM
++
++ If defined, then this indicates the I2C bus number for DDR SPD.
++ If not defined, then U-Boot assumes that SPD is on I2C bus 0.
++
++ CONFIG_FSL_I2C
++
++ Define this option if you want to use Freescale's I2C driver in
++ drivers/fsl_i2c.c.
++
++
+ - SPI Support: CONFIG_SPI
+
+ Enables SPI driver (so far only tested with
+@@ -1470,8 +1511,8 @@ The following options need to be configu
+
+ Enable auto completion of commands using TAB.
+
+- Note that this feature has NOT been implemented yet
+- for the "hush" shell.
++ Note that this feature has NOT been implemented yet
++ for the "hush" shell.
+
+
+ CFG_HUSH_PARSER
+@@ -2209,6 +2250,24 @@ Low Level (hardware related) configurati
+ CFG_POCMR2_MASK_ATTRIB: (MPC826x only)
+ Overrides the default PCI memory map in cpu/mpc8260/pci.c if set.
+
++- CONFIG_SPD_EEPROM
++ Get DDR timing information from an I2C EEPROM. Common with pluggable
++ memory modules such as SODIMMs
++ SPD_EEPROM_ADDRESS
++ I2C address of the SPD EEPROM
++
++- CFG_SPD_BUS_NUM
++ If SPD EEPROM is on an I2C bus other than the first one, specify here.
++ Note that the value must resolve to something your driver can deal with.
++
++- CFG_83XX_DDR_USES_CS0
++ Only for 83xx systems. If specified, then DDR should be configured
++ using CS0 and CS1 instead of CS2 and CS3.
++
++- CFG_83XX_DDR_USES_CS0
++ Only for 83xx systems. If specified, then DDR should be configured
++ using CS0 and CS1 instead of CS2 and CS3.
++
+ - CONFIG_ETHER_ON_FEC[12]
+ Define to enable FEC[12] on a 8xx series processor.
+
+@@ -3114,11 +3173,11 @@ loadaddr=200000
+ oftaddr=0x300000
+ => bootm $loadaddr - $oftaddr
+ ## Booting image at 00200000 ...
+- Image Name: Linux-2.6.17-dirty
+- Image Type: PowerPC Linux Kernel Image (gzip compressed)
+- Data Size: 1029343 Bytes = 1005.2 kB
++ Image Name: Linux-2.6.17-dirty
++ Image Type: PowerPC Linux Kernel Image (gzip compressed)
++ Data Size: 1029343 Bytes = 1005.2 kB
+ Load Address: 00000000
+- Entry Point: 00000000
++ Entry Point: 00000000
+ Verifying Checksum ... OK
+ Uncompressing Kernel Image ... OK
+ Booting using flat device tree at 0x300000
diff --git a/packages/uboot/u-boot-1.1.6/u-boot-1.1.6-fsl-1-streamline-the-83xx-immr-head-file.patch b/packages/uboot/u-boot-1.1.6/u-boot-1.1.6-fsl-1-streamline-the-83xx-immr-head-file.patch
new file mode 100644
index 0000000000..30981dc43c
--- /dev/null
+++ b/packages/uboot/u-boot-1.1.6/u-boot-1.1.6-fsl-1-streamline-the-83xx-immr-head-file.patch
@@ -0,0 +1,3640 @@
+ce4d6db21531bc35da7180436c6f49efac7c0461
+diff --git a/board/tqm834x/tqm834x.c b/board/tqm834x/tqm834x.c
+index 36d901f..9c35e22 100644
+--- a/board/tqm834x/tqm834x.c
++++ b/board/tqm834x/tqm834x.c
+@@ -148,14 +148,14 @@ int checkboard (void)
+ u32 w, f;
+
+ immr = (immap_t *)CFG_IMMR;
+- if (!(immr->reset.rcwh & RCWH_PCIHOST)) {
++ if (!(immr->reset.rcwh & HRCWH_PCI_HOST)) {
+ printf("PCI: NOT in host mode..?!\n");
+ return 0;
+ }
+
+ /* get bus width */
+ w = 32;
+- if (immr->reset.rcwh & RCWH_PCI64)
++ if (immr->reset.rcwh & HRCWH_64_BIT_PCI)
+ w = 64;
+
+ /* get clock */
+diff --git a/cpu/mpc83xx/cpu_init.c b/cpu/mpc83xx/cpu_init.c
+index e5725fb..7574fab 100644
+--- a/cpu/mpc83xx/cpu_init.c
++++ b/cpu/mpc83xx/cpu_init.c
+@@ -202,12 +202,12 @@ void cpu_init_f (volatile immap_t * im)
+ im->sysconf.lblaw[7].ar = CFG_LBLAWAR7_PRELIM;
+ #endif
+ #ifdef CFG_GPIO1_PRELIM
+- im->pgio[0].dir = CFG_GPIO1_DIR;
+- im->pgio[0].dat = CFG_GPIO1_DAT;
++ im->gpio[0].dir = CFG_GPIO1_DIR;
++ im->gpio[0].dat = CFG_GPIO1_DAT;
+ #endif
+ #ifdef CFG_GPIO2_PRELIM
+- im->pgio[1].dir = CFG_GPIO2_DIR;
+- im->pgio[1].dat = CFG_GPIO2_DAT;
++ im->gpio[1].dir = CFG_GPIO2_DIR;
++ im->gpio[1].dat = CFG_GPIO2_DAT;
+ #endif
+ }
+
+diff --git a/cpu/mpc83xx/qe_io.c b/cpu/mpc83xx/qe_io.c
+index ebe3487..8b3937a 100644
+--- a/cpu/mpc83xx/qe_io.c
++++ b/cpu/mpc83xx/qe_io.c
+@@ -35,7 +35,7 @@ void qe_config_iopin(u8 port, u8 pin, int dir, int open_drain, int assign)
+ u32 pin_1bit_mask;
+ u32 tmp_val;
+ volatile immap_t *im = (volatile immap_t *)CFG_IMMR;
+- volatile gpio83xx_t *par_io =(volatile gpio83xx_t *)&im->gpio;
++ volatile qepio83xx_t *par_io = (volatile qepio83xx_t *)&im->qepio;
+
+ /* Caculate pin location and 2bit mask and dir */
+ pin_2bit_mask = (u32)(0x3 << (NUM_OF_PINS-(pin%(NUM_OF_PINS/2)+1)*2));
+diff --git a/cpu/mpc83xx/speed.c b/cpu/mpc83xx/speed.c
+index 7e53b1e..40ba6b0 100644
+--- a/cpu/mpc83xx/speed.c
++++ b/cpu/mpc83xx/speed.c
+@@ -139,7 +139,7 @@ int get_clocks(void)
+ #endif
+ }
+
+- spmf = ((im->reset.rcwl & RCWL_SPMF) >> RCWL_SPMF_SHIFT);
++ spmf = ((im->reset.rcwl & HRCWL_SPMF) >> HRCWL_SPMF_SHIFT);
+ csb_clk = pci_sync_in * (1 + clkin_div) * spmf;
+
+ sccr = im->clk.sccr;
+@@ -251,7 +251,7 @@ int get_clocks(void)
+ }
+ #if defined(CONFIG_MPC8349) || defined(CONFIG_MPC8360)
+ lbiu_clk = csb_clk *
+- (1 + ((im->reset.rcwl & RCWL_LBIUCM) >> RCWL_LBIUCM_SHIFT));
++ (1 + ((im->reset.rcwl & HRCWL_LBIUCM) >> HRCWL_LBIUCM_SHIFT));
+ #else
+ #error Unknown MPC83xx chip
+ #endif
+@@ -268,11 +268,11 @@ int get_clocks(void)
+ }
+ #if defined(CONFIG_MPC8349) || defined(CONFIG_MPC8360)
+ ddr_clk = csb_clk *
+- (1 + ((im->reset.rcwl & RCWL_DDRCM) >> RCWL_DDRCM_SHIFT));
+- corepll = (im->reset.rcwl & RCWL_COREPLL) >> RCWL_COREPLL_SHIFT;
++ (1 + ((im->reset.rcwl & HRCWL_DDRCM) >> HRCWL_DDRCM_SHIFT));
++ corepll = (im->reset.rcwl & HRCWL_COREPLL) >> HRCWL_COREPLL_SHIFT;
+ #if defined (CONFIG_MPC8360)
+ ddr_sec_clk = csb_clk * (1 +
+- ((im->reset.rcwl & RCWL_LBIUCM) >> RCWL_LBIUCM_SHIFT));
++ ((im->reset.rcwl & HRCWL_LBIUCM) >> HRCWL_LBIUCM_SHIFT));
+ #endif
+ #else
+ #error Unknown MPC83xx chip
+@@ -307,8 +307,8 @@ int get_clocks(void)
+ }
+
+ #if defined (CONFIG_MPC8360)
+- qepmf = (im->reset.rcwl & RCWL_CEPMF) >> RCWL_CEPMF_SHIFT;
+- qepdf = (im->reset.rcwl & RCWL_CEPDF) >> RCWL_CEPDF_SHIFT;
++ qepmf = (im->reset.rcwl & HRCWL_CEPMF) >> HRCWL_CEPMF_SHIFT;
++ qepdf = (im->reset.rcwl & HRCWL_CEPDF) >> HRCWL_CEPDF_SHIFT;
+ qe_clk = (pci_sync_in * qepmf) / (1 + qepdf);
+ brg_clk = qe_clk / 2;
+ #endif
+diff --git a/include/asm-ppc/immap_83xx.h b/include/asm-ppc/immap_83xx.h
+index 43cde5e..67b035c 100644
+--- a/include/asm-ppc/immap_83xx.h
++++ b/include/asm-ppc/immap_83xx.h
+@@ -3,20 +3,11 @@
+ *
+ * MPC83xx Internal Memory Map
+ *
+- * History :
+- * 20060601: Daveliu (daveliu@freescale.com)
+- * TanyaJiang (tanya.jiang@freescale.com)
+- * Unified variable names for mpc83xx
+- * 2005 : Mandy Lavi (mandy.lavi@freescale.com)
+- * support for mpc8360e
+- * 2004 : Eran Liberty (liberty@freescale.com)
+- * Initialized for mpc8349
+- * based on:
+- * MPC8260 Internal Memory Map
+- * Copyright (c) 1999 Dan Malek (dmalek@jlc.net)
+- * MPC85xx Internal Memory Map
+- * Copyright(c) 2002,2003 Motorola Inc.
+- * Xianghua Xiao (x.xiao@motorola.com)
++ * Contributors:
++ * Dave Liu <daveliu@freescale.com>
++ * Tanya Jiang <tanya.jiang@freescale.com>
++ * Mandy Lavi <mandy.lavi@freescale.com>
++ * Eran Liberty <liberty@freescale.com>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+@@ -25,7 +16,7 @@
+ *
+ * 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
++ * 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
+@@ -37,36 +28,24 @@
+ #ifndef __IMMAP_83xx__
+ #define __IMMAP_83xx__
+
+-#include <config.h>
+ #include <asm/types.h>
+ #include <asm/fsl_i2c.h>
+
+ /*
+- * Local Access Window.
++ * Local Access Window
+ */
+ typedef struct law83xx {
+ u32 bar; /* LBIU local access window base address register */
+-/* Identifies the 20 most-significant address bits of the base of local
+- * access window n. The specified base address should be aligned to the
+- * window size, as defined by LBLAWARn[SIZE].
+- */
+-#define LAWBAR_BAR 0xFFFFF000
+-#define LAWBAR_RES ~(LAWBAR_BAR)
+ u32 ar; /* LBIU local access window attribute register */
+ } law83xx_t;
+
+ /*
+- * System configuration registers.
++ * System configuration registers
+ */
+ typedef struct sysconf83xx {
+ u32 immrbar; /* Internal memory map base address register */
+ u8 res0[0x04];
+ u32 altcbar; /* Alternate configuration base address register */
+-/* Identifies the12 most significant address bits of an alternate base
+- * address used for boot sequencer configuration accesses.
+- */
+-#define ALTCBAR_BASE_ADDR 0xFFF00000
+-#define ALTCBAR_RES ~(ALTCBAR_BASE_ADDR) /* Reserved. Write has no effect, read returns 0. */
+ u8 res1[0x14];
+ law83xx_t lblaw[4]; /* LBIU local access window */
+ u8 res2[0x20];
+@@ -77,115 +56,10 @@ typedef struct sysconf83xx {
+ u32 sgprl; /* System General Purpose Register Low */
+ u32 sgprh; /* System General Purpose Register High */
+ u32 spridr; /* System Part and Revision ID Register */
+-#define SPRIDR_PARTID 0xFFFF0000 /* Part Identification. */
+-#define SPRIDR_REVID 0x0000FFFF /* Revision Identification. */
+ u8 res5[0x04];
+ u32 spcr; /* System Priority Configuration Register */
+-#define SPCR_PCIHPE 0x10000000 /* PCI Highest Priority Enable. */
+-#define SPCR_PCIHPE_SHIFT (31-3)
+-#define SPCR_PCIPR 0x03000000 /* PCI bridge system bus request priority. */
+-#define SPCR_PCIPR_SHIFT (31-7)
+-#define SPCR_OPT 0x00800000 /* Optimize */
+-#define SPCR_TBEN 0x00400000 /* E300 PowerPC core time base unit enable. */
+-#define SPCR_TBEN_SHIFT (31-9)
+-#define SPCR_COREPR 0x00300000 /* E300 PowerPC Core system bus request priority. */
+-#define SPCR_COREPR_SHIFT (31-11)
+-#if defined (CONFIG_MPC8349)
+-#define SPCR_TSEC1DP 0x00003000 /* TSEC1 data priority. */
+-#define SPCR_TSEC1DP_SHIFT (31-19)
+-#define SPCR_TSEC1BDP 0x00000C00 /* TSEC1 buffer descriptor priority. */
+-#define SPCR_TSEC1BDP_SHIFT (31-21)
+-#define SPCR_TSEC1EP 0x00000300 /* TSEC1 emergency priority. */
+-#define SPCR_TSEC1EP_SHIFT (31-23)
+-#define SPCR_TSEC2DP 0x00000030 /* TSEC2 data priority. */
+-#define SPCR_TSEC2DP_SHIFT (31-27)
+-#define SPCR_TSEC2BDP 0x0000000C /* TSEC2 buffer descriptor priority. */
+-#define SPCR_TSEC2BDP_SHIFT (31-29)
+-#define SPCR_TSEC2EP 0x00000003 /* TSEC2 emergency priority. */
+-#define SPCR_TSEC2EP_SHIFT (31-31)
+-#define SPCR_RES ~(SPCR_PCIHPE | SPCR_PCIPR | SPCR_TBEN | SPCR_COREPR \
+- | SPCR_TSEC1DP | SPCR_TSEC1BDP | SPCR_TSEC1EP \
+- | SPCR_TSEC2DP | SPCR_TSEC2BDP | SPCR_TSEC2EP)
+-#elif defined (CONFIG_MPC8360)
+-#define SPCR_RES ~(SPCR_PCIHPE|SPCR_PCIPR|SPCR_OPT|SPCR_TBEN|SPCR_COREPR)
+-#endif
+- u32 sicrl; /* System General Purpose Register Low */
+-#if defined (CONFIG_MPC8349)
+-#define SICRL_LDP_A 0x80000000
+-#define SICRL_USB1 0x40000000
+-#define SICRL_USB0 0x20000000
+-#define SICRL_UART 0x0C000000
+-#define SICRL_GPIO1_A 0x02000000
+-#define SICRL_GPIO1_B 0x01000000
+-#define SICRL_GPIO1_C 0x00800000
+-#define SICRL_GPIO1_D 0x00400000
+-#define SICRL_GPIO1_E 0x00200000
+-#define SICRL_GPIO1_F 0x00180000
+-#define SICRL_GPIO1_G 0x00040000
+-#define SICRL_GPIO1_H 0x00020000
+-#define SICRL_GPIO1_I 0x00010000
+-#define SICRL_GPIO1_J 0x00008000
+-#define SICRL_GPIO1_K 0x00004000
+-#define SICRL_GPIO1_L 0x00003000
+-#define SICRL_RES ~(SICRL_LDP_A | SICRL_USB0 | SICRL_USB1 | SICRL_UART \
+- | SICRL_GPIO1_A | SICRL_GPIO1_B | SICRL_GPIO1_C \
+- | SICRL_GPIO1_D | SICRL_GPIO1_E | SICRL_GPIO1_F \
+- | SICRL_GPIO1_G | SICRL_GPIO1_H | SICRL_GPIO1_I \
+- | SICRL_GPIO1_J | SICRL_GPIO1_K | SICRL_GPIO1_L )
+-#elif defined (CONFIG_MPC8360)
+-#define SICRL_LDP_A 0xC0000000
+-#define SICRL_LCLK_1 0x10000000
+-#define SICRL_LCLK_2 0x08000000
+-#define SICRL_SRCID_A 0x03000000
+-#define SICRL_IRQ_CKSTP_A 0x00C00000
+-#define SICRL_RES ~(SICRL_LDP_A | SICRL_LCLK_1 | SICRL_LCLK_2 | \
+- SICRL_SRCID_A | SICRL_IRQ_CKSTP_A)
+-#endif
+- u32 sicrh; /* System General Purpose Register High */
+-#define SICRH_DDR 0x80000000
+-#if defined (CONFIG_MPC8349)
+-#define SICRH_TSEC1_A 0x10000000
+-#define SICRH_TSEC1_B 0x08000000
+-#define SICRH_TSEC1_C 0x04000000
+-#define SICRH_TSEC1_D 0x02000000
+-#define SICRH_TSEC1_E 0x01000000
+-#define SICRH_TSEC1_F 0x00800000
+-#define SICRH_TSEC2_A 0x00400000
+-#define SICRH_TSEC2_B 0x00200000
+-#define SICRH_TSEC2_C 0x00100000
+-#define SICRH_TSEC2_D 0x00080000
+-#define SICRH_TSEC2_E 0x00040000
+-#define SICRH_TSEC2_F 0x00020000
+-#define SICRH_TSEC2_G 0x00010000
+-#define SICRH_TSEC2_H 0x00008000
+-#define SICRH_GPIO2_A 0x00004000
+-#define SICRH_GPIO2_B 0x00002000
+-#define SICRH_GPIO2_C 0x00001000
+-#define SICRH_GPIO2_D 0x00000800
+-#define SICRH_GPIO2_E 0x00000400
+-#define SICRH_GPIO2_F 0x00000200
+-#define SICRH_GPIO2_G 0x00000180
+-#define SICRH_GPIO2_H 0x00000060
+-#define SICRH_TSOBI1 0x00000002
+-#define SICRH_TSOBI2 0x00000001
+-#define SICRH_RES ~( SICRH_DDR | SICRH_TSEC1_A | SICRH_TSEC1_B \
+- | SICRH_TSEC1_C | SICRH_TSEC1_D | SICRH_TSEC1_E \
+- | SICRH_TSEC1_F | SICRH_TSEC2_A | SICRH_TSEC2_B \
+- | SICRH_TSEC2_C | SICRH_TSEC2_D | SICRH_TSEC2_E \
+- | SICRH_TSEC2_F | SICRH_TSEC2_G | SICRH_TSEC2_H \
+- | SICRH_GPIO2_A | SICRH_GPIO2_B | SICRH_GPIO2_C \
+- | SICRH_GPIO2_D | SICRH_GPIO2_E | SICRH_GPIO2_F \
+- | SICRH_GPIO2_G | SICRH_GPIO2_H | SICRH_TSOBI1 \
+- | SICRH_TSOBI2)
+-#elif defined (CONFIG_MPC8360)
+-#define SICRH_SECONDARY_DDR 0x40000000
+-#define SICRH_SDDROE 0x02000000 /* SDDRIOE bit from reset configuration word high. */
+-#define SICRH_UC1EOBI 0x00000004 /* UCC1 Ethernet Output Buffer Impedance. */
+-#define SICRH_UC2E1OBI 0x00000002 /* UCC2 Ethernet pin option 1 Output Buffer Impedance. */
+-#define SICRH_UC2E2OBI 0x00000001 /* UCC2 Ethernet pin option 2 Output Buffer Impedance. */
+-#define SICRH_RES ~(SICRH_DDR | SICRH_SECONDARY_DDR | SICRH_SDDROE | \
+- SICRH_UC2E1OBI | SICRH_UC2E2OBI | SICRH_UC2E2OBI)
+-#endif
++ u32 sicrl; /* System I/O Configuration Register Low */
++ u32 sicrh; /* System I/O Configuration Register High */
+ u8 res6[0xE4];
+ } sysconf83xx_t;
+
+@@ -196,11 +70,8 @@ typedef struct wdt83xx {
+ u8 res0[4];
+ u32 swcrr; /* System watchdog control register */
+ u32 swcnr; /* System watchdog count register */
+-#define SWCNR_SWCN 0x0000FFFF Software Watchdog Count Field.
+-#define SWCNR_RES ~(SWCNR_SWCN)
+ u8 res1[2];
+ u16 swsrr; /* System watchdog service register */
+-#define SWSRR_WS 0x0000FFFF /* Software Watchdog Service Field. */
+ u8 res2[0xF0];
+ } wdt83xx_t;
+
+@@ -209,91 +80,46 @@ typedef struct wdt83xx {
+ */
+ typedef struct rtclk83xx {
+ u32 cnr; /* control register */
+-#define CNR_CLEN 0x00000080 /* Clock Enable Control Bit */
+-#define CNR_CLIN 0x00000040 /* Input Clock Control Bit */
+-#define CNR_AIM 0x00000002 /* Alarm Interrupt Mask Bit */
+-#define CNR_SIM 0x00000001 /* Second Interrupt Mask Bit */
+-#define CNR_RES ~(CNR_CLEN | CNR_CLIN | CNR_AIM | CNR_SIM)
+ u32 ldr; /* load register */
+-#define LDR_CLDV 0xFFFFFFFF /* Contains the 32-bit value to be
+- * loaded in a 32-bit RTC counter.*/
+ u32 psr; /* prescale register */
+-#define PSR_PRSC 0xFFFFFFFF /* RTC Prescaler bits. */
+- u32 ctr; /* Counter value field register */
+-#define CRT_CNTV 0xFFFFFFFF /* RTC Counter value field. */
++ u32 ctr; /* counter value field register */
+ u32 evr; /* event register */
+-#define RTEVR_SIF 0x00000001 /* Second Interrupt Flag Bit */
+-#define RTEVR_AIF 0x00000002 /* Alarm Interrupt Flag Bit */
+-#define RTEVR_RES ~(RTEVR_SIF | RTEVR_AIF)
+-#define PTEVR_PIF 0x00000001 /* Periodic interrupt flag bit. */
+-#define PTEVR_RES ~(PTEVR_PIF)
+ u32 alr; /* alarm register */
+ u8 res0[0xE8];
+ } rtclk83xx_t;
+
+ /*
+- * Global timper module
++ * Global timer module
+ */
+-
+ typedef struct gtm83xx {
+- u8 cfr1; /* Timer1/2 Configuration */
+-#define CFR1_PCAS 0x80 /* Pair Cascade mode */
+-#define CFR1_BCM 0x40 /* Backward compatible mode */
+-#define CFR1_STP2 0x20 /* Stop timer */
+-#define CFR1_RST2 0x10 /* Reset timer */
+-#define CFR1_GM2 0x08 /* Gate mode for pin 2 */
+-#define CFR1_GM1 0x04 /* Gate mode for pin 1 */
+-#define CFR1_STP1 0x02 /* Stop timer */
+-#define CFR1_RST1 0x01 /* Reset timer */
+-#define CFR1_RES ~(CFR1_PCAS | CFR1_STP2 | CFR1_RST2 | CFR1_GM2 |\
+- CFR1_GM1 | CFR1_STP1 | CFR1_RST1)
++ u8 cfr1; /* Timer1/2 Configuration */
+ u8 res0[3];
+- u8 cfr2; /* Timer3/4 Configuration */
+-#define CFR2_PCAS 0x80 /* Pair Cascade mode */
+-#define CFR2_SCAS 0x40 /* Super Cascade mode */
+-#define CFR2_STP4 0x20 /* Stop timer */
+-#define CFR2_RST4 0x10 /* Reset timer */
+-#define CFR2_GM4 0x08 /* Gate mode for pin 4 */
+-#define CFR2_GM3 0x04 /* Gate mode for pin 3 */
+-#define CFR2_STP3 0x02 /* Stop timer */
+-#define CFR2_RST3 0x01 /* Reset timer */
++ u8 cfr2; /* Timer3/4 Configuration */
+ u8 res1[10];
+- u16 mdr1; /* Timer1 Mode Register */
+-#define MDR_SPS 0xff00 /* Secondary Prescaler value */
+-#define MDR_CE 0x00c0 /* Capture edge and enable interrupt */
+-#define MDR_OM 0x0020 /* Output mode */
+-#define MDR_ORI 0x0010 /* Output reference interrupt enable */
+-#define MDR_FRR 0x0008 /* Free run/restart */
+-#define MDR_ICLK 0x0006 /* Input clock source for the timer */
+-#define MDR_GE 0x0001 /* Gate enable */
+- u16 mdr2; /* Timer2 Mode Register */
+- u16 rfr1; /* Timer1 Reference Register */
+- u16 rfr2; /* Timer2 Reference Register */
+- u16 cpr1; /* Timer1 Capture Register */
+- u16 cpr2; /* Timer2 Capture Register */
+- u16 cnr1; /* Timer1 Counter Register */
+- u16 cnr2; /* Timer2 Counter Register */
+- u16 mdr3; /* Timer3 Mode Register */
+- u16 mdr4; /* Timer4 Mode Register */
+- u16 rfr3; /* Timer3 Reference Register */
+- u16 rfr4; /* Timer4 Reference Register */
+- u16 cpr3; /* Timer3 Capture Register */
+- u16 cpr4; /* Timer4 Capture Register */
+- u16 cnr3; /* Timer3 Counter Register */
+- u16 cnr4; /* Timer4 Counter Register */
+- u16 evr1; /* Timer1 Event Register */
+- u16 evr2; /* Timer2 Event Register */
+- u16 evr3; /* Timer3 Event Register */
+- u16 evr4; /* Timer4 Event Register */
+-#define GTEVR_REF 0x0002 /* Output reference event */
+-#define GTEVR_CAP 0x0001 /* Counter Capture event */
+-#define GTEVR_RES ~(EVR_CAP|EVR_REF)
+- u16 psr1; /* Timer1 Prescaler Register */
+- u16 psr2; /* Timer2 Prescaler Register */
+- u16 psr3; /* Timer3 Prescaler Register */
+- u16 psr4; /* Timer4 Prescaler Register */
+-#define GTPSR_PPS 0x00FF /* Primary Prescaler Bits. */
+-#define GTPSR_RES ~(GTPSR_PPS)
++ u16 mdr1; /* Timer1 Mode Register */
++ u16 mdr2; /* Timer2 Mode Register */
++ u16 rfr1; /* Timer1 Reference Register */
++ u16 rfr2; /* Timer2 Reference Register */
++ u16 cpr1; /* Timer1 Capture Register */
++ u16 cpr2; /* Timer2 Capture Register */
++ u16 cnr1; /* Timer1 Counter Register */
++ u16 cnr2; /* Timer2 Counter Register */
++ u16 mdr3; /* Timer3 Mode Register */
++ u16 mdr4; /* Timer4 Mode Register */
++ u16 rfr3; /* Timer3 Reference Register */
++ u16 rfr4; /* Timer4 Reference Register */
++ u16 cpr3; /* Timer3 Capture Register */
++ u16 cpr4; /* Timer4 Capture Register */
++ u16 cnr3; /* Timer3 Counter Register */
++ u16 cnr4; /* Timer4 Counter Register */
++ u16 evr1; /* Timer1 Event Register */
++ u16 evr2; /* Timer2 Event Register */
++ u16 evr3; /* Timer3 Event Register */
++ u16 evr4; /* Timer4 Event Register */
++ u16 psr1; /* Timer1 Prescaler Register */
++ u16 psr2; /* Timer2 Prescaler Register */
++ u16 psr3; /* Timer3 Prescaler Register */
++ u16 psr4; /* Timer4 Prescaler Register */
+ u8 res[0xC0];
+ } gtm83xx_t;
+
+@@ -301,188 +127,31 @@ typedef struct gtm83xx {
+ * Integrated Programmable Interrupt Controller
+ */
+ typedef struct ipic83xx {
+- u32 sicfr; /* System Global Interrupt Configuration Register (SICFR) */
+-#define SICFR_HPI 0x7f000000 /* Highest Priority Interrupt */
+-#define SICFR_MPSB 0x00400000 /* Mixed interrupts Priority Scheme for group B */
+-#define SICFR_MPSA 0x00200000 /* Mixed interrupts Priority Scheme for group A */
+-#define SICFR_IPSD 0x00080000 /* Internal interrupts Priority Scheme for group D */
+-#define SICFR_IPSA 0x00010000 /* Internal interrupts Priority Scheme for group A */
+-#define SICFR_HPIT 0x00000300 /* HPI priority position IPIC output interrupt Type */
+-#define SICFR_RES ~(SICFR_HPI|SICFR_MPSB|SICFR_MPSA|SICFR_IPSD|SICFR_IPSA|SICFR_HPIT)
+- u32 sivcr; /* System Global Interrupt Vector Register (SIVCR) */
+-#define SICVR_IVECX 0xfc000000 /* Interrupt vector (for CE compatibility purpose only not used in 8349 IPIC implementation) */
+-#define SICVR_IVEC 0x0000007f /* Interrupt vector */
+-#define SICVR_RES ~(SICVR_IVECX|SICVR_IVEC)
+- u32 sipnr_h; /* System Internal Interrupt Pending Register - High (SIPNR_H) */
+-#if defined (CONFIG_MPC8349)
+-#define SIIH_TSEC1TX 0x80000000 /* TSEC1 Tx interrupt */
+-#define SIIH_TSEC1RX 0x40000000 /* TSEC1 Rx interrupt */
+-#define SIIH_TSEC1ER 0x20000000 /* TSEC1 Eror interrupt */
+-#define SIIH_TSEC2TX 0x10000000 /* TSEC2 Tx interrupt */
+-#define SIIH_TSEC2RX 0x08000000 /* TSEC2 Rx interrupt */
+-#define SIIH_TSEC2ER 0x04000000 /* TSEC2 Eror interrupt */
+-#define SIIH_USB2DR 0x02000000 /* USB2 DR interrupt */
+-#define SIIH_USB2MPH 0x01000000 /* USB2 MPH interrupt */
+-#endif
+-#if defined (CONFIG_MPC8360)
+-#define SIIH_H_QE_H 0x80000000 /* QE high interrupt */
+-#define SIIH_H_QE_L 0x40000000 /* QE low interrupt */
+-#endif
+-#define SIIH_UART1 0x00000080 /* UART1 interrupt */
+-#define SIIH_UART2 0x00000040 /* UART2 interrupt */
+-#define SIIH_SEC 0x00000020 /* SEC interrupt */
+-#define SIIH_I2C1 0x00000004 /* I2C1 interrupt */
+-#define SIIH_I2C2 0x00000002 /* I2C2 interrupt */
+-#if defined (CONFIG_MPC8349)
+-#define SIIH_SPI 0x00000001 /* SPI interrupt */
+-#define SIIH_RES ~(SIIH_TSEC1TX | SIIH_TSEC1RX | SIIH_TSEC1ER \
+- | SIIH_TSEC2TX | SIIH_TSEC2RX | SIIH_TSEC2ER \
+- | SIIH_USB2DR | SIIH_USB2MPH | SIIH_UART1 \
+- | SIIH_UART2 | SIIH_SEC | SIIH_I2C1 \
+- | SIIH_I2C2 | SIIH_SPI)
+-#endif
+-#if defined (CONFIG_MPC8360)
+-#define SIIH_RES ~(SIIH_H_QE_H | SIIH_H_QE_L | SIIH_H_UART1 | \
+- SIIH_H_UART2| SIIH_H_SEC | SIIH_H_I2C1 |SIIH_H_I2C2)
+-#endif
+- u32 sipnr_l; /* System Internal Interrupt Pending Register - Low (SIPNR_L) */
+-#define SIIL_RTCS 0x80000000 /* RTC SECOND interrupt */
+-#define SIIL_PIT 0x40000000 /* PIT interrupt */
+-#define SIIL_PCI1 0x20000000 /* PCI1 interrupt */
+-#if defined (CONFIG_MPC8349)
+-#define SIIL_PCI2 0x10000000 /* PCI2 interrupt */
+-#endif
+-#define SIIL_RTCA 0x08000000 /* RTC ALARM interrupt */
+-#define SIIL_MU 0x04000000 /* Message Unit interrupt */
+-#define SIIL_SBA 0x02000000 /* System Bus Arbiter interrupt */
+-#define SIIL_DMA 0x01000000 /* DMA interrupt */
+-#define SIIL_GTM4 0x00800000 /* GTM4 interrupt */
+-#define SIIL_GTM8 0x00400000 /* GTM8 interrupt */
+-#if defined (CONFIG_MPC8349)
+-#define SIIL_GPIO1 0x00200000 /* GPIO1 interrupt */
+-#define SIIL_GPIO2 0x00100000 /* GPIO2 interrupt */
+-#endif
+-#if defined (CONFIG_MPC8360)
+-#define SIIL_QEP 0x00200000 /* QE ports interrupt */
+-#define SIIL_SDDR 0x00100000 /* SDDR interrupt */
+-#endif
+-#define SIIL_DDR 0x00080000 /* DDR interrupt */
+-#define SIIL_LBC 0x00040000 /* LBC interrupt */
+-#define SIIL_GTM2 0x00020000 /* GTM2 interrupt */
+-#define SIIL_GTM6 0x00010000 /* GTM6 interrupt */
+-#define SIIL_PMC 0x00008000 /* PMC interrupt */
+-#define SIIL_GTM3 0x00000800 /* GTM3 interrupt */
+-#define SIIL_GTM7 0x00000400 /* GTM7 interrupt */
+-#define SIIL_GTM1 0x00000020 /* GTM1 interrupt */
+-#define SIIL_GTM5 0x00000010 /* GTM5 interrupt */
+-#define SIIL_DPTC 0x00000001 /* DPTC interrupt (!!! Invisible for user !!!) */
+-#if defined (CONFIG_MPC8349)
+-#define SIIL_RES ~(SIIL_RTCS | SIIL_PIT | SIIL_PCI1 | SIIL_PCI2 \
+- | SIIL_RTCA | SIIL_MU | SIIL_SBA | SIIL_DMA \
+- | SIIL_GTM4 | SIIL_GTM8 | SIIL_GPIO1 | SIIL_GPIO2 \
+- | SIIL_DDR | SIIL_LBC | SIIL_GTM2 | SIIL_GTM6 \
+- | SIIL_PMC |SIIL_GTM3 | SIIL_GTM7 | SIIL_GTM1 \
+- | SIIL_GTM5 |SIIL_DPTC )
+-#endif
+-#if defined (CONFIG_MPC8360)
+-#define SIIL_RES ~(SIIL_RTCS |SIIL_PIT |SIIL_PCI1 |SIIL_RTCALR \
+- |SIIL_MU |SIIL_SBA |SIIL_DMA |SIIL_GTM4 |SIIL_GTM8 \
+- |SIIL_QEP | SIIL_SDDR| SIIL_DDR |SIIL_LBC |SIIL_GTM2 \
+- |SIIL_GTM6 |SIIL_PMC |SIIL_GTM3 |SIIL_GTM7 |SIIL_GTM1 \
+- |SIIL_GTM5 )
+-#endif
+- u32 siprr_a; /* System Internal Interrupt Group A Priority Register (PRR) */
++ u32 sicfr; /* System Global Interrupt Configuration Register */
++ u32 sivcr; /* System Global Interrupt Vector Register */
++ u32 sipnr_h; /* System Internal Interrupt Pending Register - High */
++ u32 sipnr_l; /* System Internal Interrupt Pending Register - Low */
++ u32 siprr_a; /* System Internal Interrupt Group A Priority Register */
+ u8 res0[8];
+- u32 siprr_d; /* System Internal Interrupt Group D Priority Register (PRR) */
+- u32 simsr_h; /* System Internal Interrupt Mask Register - High (SIIH) */
+- u32 simsr_l; /* System Internal Interrupt Mask Register - Low (SIIL) */
++ u32 siprr_d; /* System Internal Interrupt Group D Priority Register */
++ u32 simsr_h; /* System Internal Interrupt Mask Register - High */
++ u32 simsr_l; /* System Internal Interrupt Mask Register - Low */
+ u8 res1[4];
+- u32 sepnr; /* System External Interrupt Pending Register (SEI) */
+- u32 smprr_a; /* System Mixed Interrupt Group A Priority Register (PRR) */
+- u32 smprr_b; /* System Mixed Interrupt Group B Priority Register (PRR) */
+-#define PRR_0 0xe0000000 /* Priority Register, Position 0 programming */
+-#define PRR_1 0x1c000000 /* Priority Register, Position 1 programming */
+-#define PRR_2 0x03800000 /* Priority Register, Position 2 programming */
+-#define PRR_3 0x00700000 /* Priority Register, Position 3 programming */
+-#define PRR_4 0x0000e000 /* Priority Register, Position 4 programming */
+-#define PRR_5 0x00001c00 /* Priority Register, Position 5 programming */
+-#define PRR_6 0x00000380 /* Priority Register, Position 6 programming */
+-#define PRR_7 0x00000070 /* Priority Register, Position 7 programming */
+-#define PRR_RES ~(PRR_0|PRR_1|PRR_2|PRR_3|PRR_4|PRR_5|PRR_6|PRR_7)
+- u32 semsr; /* System External Interrupt Mask Register (SEI) */
+-#define SEI_IRQ0 0x80000000 /* IRQ0 external interrupt */
+-#define SEI_IRQ1 0x40000000 /* IRQ1 external interrupt */
+-#define SEI_IRQ2 0x20000000 /* IRQ2 external interrupt */
+-#define SEI_IRQ3 0x10000000 /* IRQ3 external interrupt */
+-#define SEI_IRQ4 0x08000000 /* IRQ4 external interrupt */
+-#define SEI_IRQ5 0x04000000 /* IRQ5 external interrupt */
+-#define SEI_IRQ6 0x02000000 /* IRQ6 external interrupt */
+-#define SEI_IRQ7 0x01000000 /* IRQ7 external interrupt */
+-#define SEI_SIRQ0 0x00008000 /* SIRQ0 external interrupt */
+-#define SEI_RES ~( SEI_IRQ0 | SEI_IRQ1 | SEI_IRQ2 | SEI_IRQ3 \
+- | SEI_IRQ4 | SEI_IRQ5 | SEI_IRQ6 | SEI_IRQ7 \
+- | SEI_SIRQ0)
+- u32 secnr; /* System External Interrupt Control Register (SECNR) */
+-#define SECNR_MIXB0T 0xc0000000 /* MIXB0 priority position IPIC output interrupt type */
+-#define SECNR_MIXB1T 0x30000000 /* MIXB1 priority position IPIC output interrupt type */
+-#define SECNR_MIXA0T 0x00c00000 /* MIXA0 priority position IPIC output interrupt type */
+-#define SECNR_SYSA1T 0x00300000 /* MIXA1 priority position IPIC output interrupt type */
+-#define SECNR_EDI0 0x00008000 /* IRQ0 external interrupt edge/level detect */
+-#define SECNR_EDI1 0x00004000 /* IRQ1 external interrupt edge/level detect */
+-#define SECNR_EDI2 0x00002000 /* IRQ2 external interrupt edge/level detect */
+-#define SECNR_EDI3 0x00001000 /* IRQ3 external interrupt edge/level detect */
+-#define SECNR_EDI4 0x00000800 /* IRQ4 external interrupt edge/level detect */
+-#define SECNR_EDI5 0x00000400 /* IRQ5 external interrupt edge/level detect */
+-#define SECNR_EDI6 0x00000200 /* IRQ6 external interrupt edge/level detect */
+-#define SECNR_EDI7 0x00000100 /* IRQ7 external interrupt edge/level detect */
+-#define SECNR_RES ~( SECNR_MIXB0T | SECNR_MIXB1T | SECNR_MIXA0T \
+- | SECNR_SYSA1T | SECNR_EDI0 | SECNR_EDI1 \
+- | SECNR_EDI2 | SECNR_EDI3 | SECNR_EDI4 \
+- | SECNR_EDI5 | SECNR_EDI6 | SECNR_EDI7)
+- u32 sersr; /* System Error Status Register (SERR) */
+- u32 sermr; /* System Error Mask Register (SERR) */
+-#define SERR_IRQ0 0x80000000 /* IRQ0 MCP request */
+-#define SERR_WDT 0x40000000 /* WDT MCP request */
+-#define SERR_SBA 0x20000000 /* SBA MCP request */
+-#if defined (CONFIG_MPC8349)
+-#define SERR_DDR 0x10000000 /* DDR MCP request */
+-#define SERR_LBC 0x08000000 /* LBC MCP request */
+-#define SERR_PCI1 0x04000000 /* PCI1 MCP request */
+-#define SERR_PCI2 0x02000000 /* PCI2 MCP request */
+-#endif
+-#if defined (CONFIG_MPC8360)
+-#define SERR_CIEE 0x10000000 /* CIEE MCP request */
+-#define SERR_CMEE 0x08000000 /* CMEEMCP request */
+-#define SERR_PCI 0x04000000 /* PCI MCP request */
+-#endif
+-#define SERR_MU 0x01000000 /* MU MCP request */
+-#define SERR_RNC 0x00010000 /* MU MCP request (!!! Non-visible for users !!!) */
+-#if defined (CONFIG_MPC8349)
+-#define SERR_RES ~( SERR_IRQ0 | SERR_WDT | SERR_SBA | SERR_DDR \
+- |SERR_LBC | SERR_PCI1 | SERR_PCI2 | SERR_MU \
+- |SERR_RNC )
+-#elif defined (CONFIG_MPC8360)
+-#define SERR_RES ~( SERR_IRQ0|SERR_WDT |SERR_SBA |SERR_CIEE\
+- |SERR_CMEE|SERR_PCI|SERR_MU)
+-#endif
+- u32 sercr; /* System Error Control Register (SERCR) */
+-#define SERCR_MCPR 0x00000001 /* MCP Route */
+-#define SERCR_RES ~(SERCR_MCPR)
++ u32 sepnr; /* System External Interrupt Pending Register */
++ u32 smprr_a; /* System Mixed Interrupt Group A Priority Register */
++ u32 smprr_b; /* System Mixed Interrupt Group B Priority Register */
++ u32 semsr; /* System External Interrupt Mask Register */
++ u32 secnr; /* System External Interrupt Control Register */
++ u32 sersr; /* System Error Status Register */
++ u32 sermr; /* System Error Mask Register */
++ u32 sercr; /* System Error Control Register */
+ u8 res2[4];
+- u32 sifcr_h; /* System Internal Interrupt Force Register - High (SIIH) */
+- u32 sifcr_l; /* System Internal Interrupt Force Register - Low (SIIL) */
+- u32 sefcr; /* System External Interrupt Force Register (SEI) */
+- u32 serfr; /* System Error Force Register (SERR) */
++ u32 sifcr_h; /* System Internal Interrupt Force Register - High */
++ u32 sifcr_l; /* System Internal Interrupt Force Register - Low */
++ u32 sefcr; /* System External Interrupt Force Register */
++ u32 serfr; /* System Error Force Register */
+ u32 scvcr; /* System Critical Interrupt Vector Register */
+-#define SCVCR_CVECX 0xFC000000 /* Backward (MPC8260) compatible
+- critical interrupt vector. */
+-#define SCVCR_CVEC 0x0000007F /* Critical interrupt vector */
+-#define SCVCR_RES ~(SCVCR_CVECX|SCVCR_CVEC)
+ u32 smvcr; /* System Management Interrupt Vector Register */
+-#define SMVCR_CVECX 0xFC000000 /* Backward (MPC8260) compatible
+- critical interrupt vector. */
+-#define SMVCR_CVEC 0x0000007F /* Critical interrupt vector */
+-#define SMVCR_RES ~(SMVCR_CVECX|SMVCR_CVEC)
+ u8 res3[0x98];
+ } ipic83xx_t;
+
+@@ -491,43 +160,14 @@ typedef struct ipic83xx {
+ */
+ typedef struct arbiter83xx {
+ u32 acr; /* Arbiter Configuration Register */
+-#define ACR_COREDIS 0x10000000 /* Core disable. */
+-#define ACR_COREDIS_SHIFT (31-7)
+-#define ACR_PIPE_DEP 0x00070000 /* Pipeline depth (number of outstanding transactions). */
+-#define ACR_PIPE_DEP_SHIFT (31-15)
+-#define ACR_PCI_RPTCNT 0x00007000 /* PCI repeat count. */
+-#define ACR_PCI_RPTCNT_SHIFT (31-19)
+-#define ACR_RPTCNT 0x00000700 /* Repeat count. */
+-#define ACR_RPTCNT_SHIFT (31-23)
+-#define ACR_APARK 0x00000030 /* Address parking. */
+-#define ACR_APARK_SHIFT (31-27)
+-#define ACR_PARKM 0x0000000F /* Parking master. */
+-#define ACR_PARKM_SHIFT (31-31)
+-#define ACR_RES ~(ACR_COREDIS|ACR_PIPE_DEP|ACR_PCI_RPTCNT|ACR_RPTCNT|ACR_APARK|ACR_PARKM)
+ u32 atr; /* Arbiter Timers Register */
+-#define ATR_DTO 0x00FF0000 /* Data time out. */
+-#define ATR_ATO 0x000000FF /* Address time out. */
+-#define ATR_RES ~(ATR_DTO|ATR_ATO)
+ u8 res[4];
+- u32 aer; /* Arbiter Event Register (AE) */
+- u32 aidr; /* Arbiter Interrupt Definition Register (AE) */
+- u32 amr; /* Arbiter Mask Register (AE) */
++ u32 aer; /* Arbiter Event Register */
++ u32 aidr; /* Arbiter Interrupt Definition Register */
++ u32 amr; /* Arbiter Mask Register */
+ u32 aeatr; /* Arbiter Event Attributes Register */
+-#define AEATR_EVENT 0x07000000 /* Event type. */
+-#define AEATR_MSTR_ID 0x001F0000 /* Master Id. */
+-#define AEATR_TBST 0x00000800 /* Transfer burst. */
+-#define AEATR_TSIZE 0x00000700 /* Transfer Size. */
+-#define AEATR_TTYPE 0x0000001F /* Transfer Type. */
+-#define AEATR_RES ~(AEATR_EVENT|AEATR_MSTR_ID|AEATR_TBST|AEATR_TSIZE|AEATR_TTYPE)
+ u32 aeadr; /* Arbiter Event Address Register */
+- u32 aerr; /* Arbiter Event Response Register (AE) */
+-#define AE_ETEA 0x00000020 /* Transfer error. */
+-#define AE_RES_ 0x00000010 /* Reserved transfer type. */
+-#define AE_ECW 0x00000008 /* External control word transfer type. */
+-#define AE_AO 0x00000004 /* Address Only transfer type. */
+-#define AE_DTO 0x00000002 /* Data time out. */
+-#define AE_ATO 0x00000001 /* Address time out. */
+-#define AE_RSRV ~(AE_ETEA|AE_RES_|AE_ECW|AE_AO|AE_DTO|AE_ATO)
++ u32 aerr; /* Arbiter Event Response Register */
+ u8 res1[0xDC];
+ } arbiter83xx_t;
+
+@@ -535,184 +175,24 @@ typedef struct arbiter83xx {
+ * Reset Module
+ */
+ typedef struct reset83xx {
+- u32 rcwl; /* RCWL Register */
+-#define RCWL_LBIUCM 0x80000000 /* LBIUCM */
+-#define RCWL_LBIUCM_SHIFT 31
+-#define RCWL_DDRCM 0x40000000 /* DDRCM */
+-#define RCWL_DDRCM_SHIFT 30
+-#if defined (CONFIG_MPC8349)
+-#define RCWL_SVCOD 0x30000000 /* SVCOD */
+-#endif
+-#define RCWL_SPMF 0x0f000000 /* SPMF */
+-#define RCWL_SPMF_SHIFT 24
+-#define RCWL_COREPLL 0x007F0000 /* COREPLL */
+-#define RCWL_COREPLL_SHIFT 16
+-#define RCWL_CEVCOD 0x000000C0 /* CEVCOD */
+-#define RCWL_CEPDF 0x00000020 /* CEPDF */
+-#define RCWL_CEPDF_SHIFT 5
+-#define RCWL_CEPMF 0x0000001F /* CEPMF */
+-#define RCWL_CEPMF_SHIFT 0
+-#if defined (CONFIG_MPC8349)
+-#define RCWL_RES ~(RCWL_LBIUCM|RCWL_DDRCM|RCWL_SVCOD|RCWL_SPMF|RCWL_COREPLL|RCWL_CEVCOD|RCWL_CEPDF|RCWL_CEPMF)
+-#elif defined (CONFIG_MPC8360)
+-#define RCWL_RES ~(RCWL_LBIUCM|RCWL_DDRCM|RCWL_SPMF|RCWL_COREPLL|RCWL_CEPDF|RCWL_CEPMF)
+-#endif
+- u32 rcwh; /* RCHL Register */
+-#define RCWH_PCIHOST 0x80000000 /* PCIHOST */
+-#define RCWH_PCIHOST_SHIFT 31
+-#if defined (CONFIG_MPC8349)
+-#define RCWH_PCI64 0x40000000 /* PCI64 */
+-#define RCWH_PCI1ARB 0x20000000 /* PCI1ARB */
+-#define RCWH_PCI2ARB 0x10000000 /* PCI2ARB */
+-#elif defined (CONFIG_MPC8360)
+-#define RCWH_PCIARB 0x20000000 /* PCI internal arbiter mode. */
+-#define RCWH_PCICKDRV 0x10000000 /* PCI clock output drive. */
+-#endif
+-#define RCWH_COREDIS 0x08000000 /* COREDIS */
+-#define RCWH_BMS 0x04000000 /* BMS */
+-#define RCWH_BOOTSEQ 0x03000000 /* BOOTSEQ */
+-#define RCWH_SWEN 0x00800000 /* SWEN */
+-#define RCWH_ROMLOC 0x00700000 /* ROMLOC */
+-#if defined (CONFIG_MPC8349)
+-#define RCWH_TSEC1M 0x0000c000 /* TSEC1M */
+-#define RCWH_TSEC2M 0x00003000 /* TSEC2M */
+-#define RCWH_TPR 0x00000100 /* TPR */
+-#elif defined (CONFIG_MPC8360)
+-#define RCWH_SDDRIOE 0x00000010 /* Secondary DDR IO Enable. */
+-#endif
+-#define RCWH_TLE 0x00000008 /* TLE */
+-#define RCWH_LALE 0x00000004 /* LALE */
+-#if defined (CONFIG_MPC8349)
+-#define RCWH_RES ~(RCWH_PCIHOST | RCWH_PCI64 | RCWH_PCI1ARB \
+- | RCWH_PCI2ARB | RCWH_COREDIS | RCWH_BMS \
+- | RCWH_BOOTSEQ | RCWH_SWEN | RCWH_ROMLOC \
+- | RCWH_TSEC1M | RCWH_TSEC2M | RCWH_TPR \
+- | RCWH_TLE | RCWH_LALE)
+-#elif defined (CONFIG_MPC8360)
+-#define RCWH_RES ~(RCWH_PCIHOST|RCWH_PCIARB|RCWH_PCICKDRV \
+- |RCWH_COREDIS|RCWH_BMS|RCWH_BOOTSEQ|RCWH_SWEN \
+- |RCWH_SDDRIOE |RCWH_TLE)
+-#endif
++ u32 rcwl; /* Reset Configuration Word Low Register */
++ u32 rcwh; /* Reset Configuration Word High Register */
+ u8 res0[8];
+- u32 rsr; /* Reset status Register */
+-#define RSR_RSTSRC 0xE0000000 /* Reset source */
+-#define RSR_RSTSRC_SHIFT 29
+-#define RSR_BSF 0x00010000 /* Boot seq. fail */
+-#define RSR_BSF_SHIFT 16
+-#define RSR_SWSR 0x00002000 /* software soft reset */
+-#define RSR_SWSR_SHIFT 13
+-#define RSR_SWHR 0x00001000 /* software hard reset */
+-#define RSR_SWHR_SHIFT 12
+-#define RSR_JHRS 0x00000200 /* jtag hreset */
+-#define RSR_JHRS_SHIFT 9
+-#define RSR_JSRS 0x00000100 /* jtag sreset status */
+-#define RSR_JSRS_SHIFT 8
+-#define RSR_CSHR 0x00000010 /* checkstop reset status */
+-#define RSR_CSHR_SHIFT 4
+-#define RSR_SWRS 0x00000008 /* software watchdog reset status */
+-#define RSR_SWRS_SHIFT 3
+-#define RSR_BMRS 0x00000004 /* bus monitop reset status */
+-#define RSR_BMRS_SHIFT 2
+-#define RSR_SRS 0x00000002 /* soft reset status */
+-#define RSR_SRS_SHIFT 1
+-#define RSR_HRS 0x00000001 /* hard reset status */
+-#define RSR_HRS_SHIFT 0
+-#define RSR_RES ~(RSR_RSTSRC | RSR_BSF | RSR_SWSR | RSR_SWHR | RSR_JHRS | RSR_JSRS | RSR_CSHR | RSR_SWRS | RSR_BMRS | RSR_SRS | RSR_HRS)
+- u32 rmr; /* Reset mode Register */
+-#define RMR_CSRE 0x00000001 /* checkstop reset enable */
+-#define RMR_CSRE_SHIFT 0
+-#define RMR_RES ~(RMR_CSRE)
+- u32 rpr; /* Reset protection Register */
+- u32 rcr; /* Reset Control Register */
+-#define RCR_SWHR 0x00000002 /* software hard reset */
+-#define RCR_SWSR 0x00000001 /* software soft reset */
+-#define RCR_RES ~(RCR_SWHR | RCR_SWSR)
+- u32 rcer; /* Reset Control Enable Register */
+-#define RCER_CRE 0x00000001 /* software hard reset */
+-#define RCER_RES ~(RCER_CRE)
++ u32 rsr; /* Reset Status Register */
++ u32 rmr; /* Reset Mode Register */
++ u32 rpr; /* Reset protection Register */
++ u32 rcr; /* Reset Control Register */
++ u32 rcer; /* Reset Control Enable Register */
+ u8 res1[0xDC];
+ } reset83xx_t;
+
++/*
++ * Clock Module
++ */
+ typedef struct clk83xx {
+- u32 spmr; /* system PLL mode Register */
+-#define SPMR_LBIUCM 0x80000000 /* LBIUCM */
+-#define SPMR_DDRCM 0x40000000 /* DDRCM */
+-#if defined (CONFIG_MPC8349)
+-#define SPMR_SVCOD 0x30000000 /* SVCOD */
+-#endif
+-#define SPMR_SPMF 0x0F000000 /* SPMF */
+-#define SPMR_CKID 0x00800000 /* CKID */
+-#define SPMR_CKID_SHIFT 23
+-#define SPMR_COREPLL 0x007F0000 /* COREPLL */
+-#define SPMR_CEVCOD 0x000000C0 /* CEVCOD */
+-#define SPMR_CEPDF 0x00000020 /* CEPDF */
+-#define SPMR_CEPMF 0x0000001F /* CEPMF */
+-#if defined (CONFIG_MPC8349)
+-#define SPMR_RES ~(SPMR_LBIUCM | SPMR_DDRCM | SPMR_SVCOD \
+- | SPMR_SPMF | SPMR_CKID | SPMR_COREPLL \
+- | SPMR_CEVCOD | SPMR_CEPDF | SPMR_CEPMF)
+-#elif defined (CONFIG_MPC8360)
+-#define SPMR_RES ~(SPMR_LBIUCM | SPMR_DDRCM | SPMR_SPMF \
+- | SPMR_CKID | SPMR_COREPLL | SPMR_CEVCOD \
+- | SPMR_CEPDF | SPMR_CEPMF)
+-#endif
+- u32 occr; /* output clock control Register */
+-#define OCCR_PCICOE0 0x80000000 /* PCICOE0 */
+-#define OCCR_PCICOE1 0x40000000 /* PCICOE1 */
+-#define OCCR_PCICOE2 0x20000000 /* PCICOE2 */
+-#if defined (CONFIG_MPC8349)
+-#define OCCR_PCICOE3 0x10000000 /* PCICOE3 */
+-#define OCCR_PCICOE4 0x08000000 /* PCICOE4 */
+-#define OCCR_PCICOE5 0x04000000 /* PCICOE5 */
+-#define OCCR_PCICOE6 0x02000000 /* PCICOE6 */
+-#define OCCR_PCICOE7 0x01000000 /* PCICOE7 */
+-#endif
+-#define OCCR_PCICD0 0x00800000 /* PCICD0 */
+-#define OCCR_PCICD1 0x00400000 /* PCICD1 */
+-#define OCCR_PCICD2 0x00200000 /* PCICD2 */
+-#if defined (CONFIG_MPC8349)
+-#define OCCR_PCICD3 0x00100000 /* PCICD3 */
+-#define OCCR_PCICD4 0x00080000 /* PCICD4 */
+-#define OCCR_PCICD5 0x00040000 /* PCICD5 */
+-#define OCCR_PCICD6 0x00020000 /* PCICD6 */
+-#define OCCR_PCICD7 0x00010000 /* PCICD7 */
+-#define OCCR_PCI1CR 0x00000002 /* PCI1CR */
+-#define OCCR_PCI2CR 0x00000001 /* PCI2CR */
+-#define OCCR_RES ~(OCCR_PCICOE0 | OCCR_PCICOE1 | OCCR_PCICOE2 \
+- | OCCR_PCICOE3 | OCCR_PCICOE4 | OCCR_PCICOE5 \
+- | OCCR_PCICOE6 | OCCR_PCICOE7 | OCCR_PCICD0 \
+- | OCCR_PCICD1 | OCCR_PCICD2 | OCCR_PCICD3 \
+- | OCCR_PCICD4 | OCCR_PCICD5 | OCCR_PCICD6 \
+- | OCCR_PCICD7 | OCCR_PCI1CR | OCCR_PCI2CR )
+-#endif
+-#if defined (CONFIG_MPC8360)
+-#define OCCR_PCICR 0x00000002 /* PCI clock rate */
+-#define OCCR_RES ~(OCCR_PCICOE0|OCCR_PCICOE1|OCCR_PCICOE2 \
+- |OCCR_PCICD0|OCCR_PCICD1|OCCR_PCICD2|OCCR_PCICR )
+-#endif
+- u32 sccr; /* system clock control Register */
+-#if defined (CONFIG_MPC8349)
+-#define SCCR_TSEC1CM 0xc0000000 /* TSEC1CM */
+-#define SCCR_TSEC1CM_SHIFT 30
+-#define SCCR_TSEC2CM 0x30000000 /* TSEC2CM */
+-#define SCCR_TSEC2CM_SHIFT 28
+-#endif
+-#define SCCR_ENCCM 0x03000000 /* ENCCM */
+-#define SCCR_ENCCM_SHIFT 24
+-#if defined (CONFIG_MPC8349)
+-#define SCCR_USBMPHCM 0x00c00000 /* USBMPHCM */
+-#define SCCR_USBMPHCM_SHIFT 22
+-#define SCCR_USBDRCM 0x00300000 /* USBDRCM */
+-#define SCCR_USBDRCM_SHIFT 20
+-#endif
+-#define SCCR_PCICM 0x00010000 /* PCICM */
+-#if defined (CONFIG_MPC8349)
+-#define SCCR_RES ~( SCCR_TSEC1CM | SCCR_TSEC2CM | SCCR_ENCCM \
+- | SCCR_USBMPHCM | SCCR_USBDRCM | SCCR_PCICM)
+-#endif
+-#if defined (CONFIG_MPC8360)
+-#define SCCR_RES ~(SCCR_ENCCM | SCCR_PCICM)
+-#endif
++ u32 spmr; /* system PLL mode Register */
++ u32 occr; /* output clock control Register */
++ u32 sccr; /* system clock control Register */
+ u8 res0[0xF4];
+ } clk83xx_t;
+
+@@ -720,27 +200,14 @@ typedef struct clk83xx {
+ * Power Management Control Module
+ */
+ typedef struct pmc83xx {
+- u32 pmccr; /* PMC Configuration Register */
+-#define PMCCR_SLPEN 0x00000001 /* System Low Power Enable */
+-#define PMCCR_DLPEN 0x00000002 /* DDR SDRAM Low Power Enable */
+-#if defined (CONFIG_MPC8360)
+-#define PMCCR_SDLPEN 0x00000004 /* Secondary DDR SDRAM Low Power Enable */
+-#define PMCCR_RES ~(PMCCR_SLPEN | PMCCR_DLPEN | PMCCR_SDLPEN)
+-#elif defined (CONFIG_MPC8349)
+-#define PMCCR_RES ~(PMCCR_SLPEN | PMCCR_DLPEN)
+-#endif
+- u32 pmcer; /* PMC Event Register */
+-#define PMCER_PMCI 0x00000001 /* PMC Interrupt */
+-#define PMCER_RES ~(PMCER_PMCI)
+- u32 pmcmr; /* PMC Mask Register */
+-#define PMCMR_PMCIE 0x0001 /* PMC Interrupt Enable */
+-#define PMCMR_RES ~(PMCMR_PMCIE)
++ u32 pmccr; /* PMC Configuration Register */
++ u32 pmcer; /* PMC Event Register */
++ u32 pmcmr; /* PMC Mask Register */
+ u8 res0[0xF4];
+ } pmc83xx_t;
+
+-#if defined (CONFIG_MPC8349)
+ /*
+- * general purpose I/O module
++ * General purpose I/O module
+ */
+ typedef struct gpio83xx {
+ u32 dir; /* direction register */
+@@ -751,124 +218,20 @@ typedef struct gpio83xx {
+ u32 icr; /* external interrupt control register */
+ u8 res0[0xE8];
+ } gpio83xx_t;
+-#endif
+
+-#if defined (CONFIG_MPC8360)
+ /*
+ * QE Ports Interrupts Registers
+ */
+ typedef struct qepi83xx {
+ u8 res0[0xC];
+ u32 qepier; /* QE Ports Interrupt Event Register */
+-#define QEPIER_PA15 0x80000000
+-#define QEPIER_PA16 0x40000000
+-#define QEPIER_PA29 0x20000000
+-#define QEPIER_PA30 0x10000000
+-#define QEPIER_PB3 0x08000000
+-#define QEPIER_PB5 0x04000000
+-#define QEPIER_PB12 0x02000000
+-#define QEPIER_PB13 0x01000000
+-#define QEPIER_PB26 0x00800000
+-#define QEPIER_PB27 0x00400000
+-#define QEPIER_PC27 0x00200000
+-#define QEPIER_PC28 0x00100000
+-#define QEPIER_PC29 0x00080000
+-#define QEPIER_PD12 0x00040000
+-#define QEPIER_PD13 0x00020000
+-#define QEPIER_PD16 0x00010000
+-#define QEPIER_PD17 0x00008000
+-#define QEPIER_PD26 0x00004000
+-#define QEPIER_PD27 0x00002000
+-#define QEPIER_PE12 0x00001000
+-#define QEPIER_PE13 0x00000800
+-#define QEPIER_PE24 0x00000400
+-#define QEPIER_PE25 0x00000200
+-#define QEPIER_PE26 0x00000100
+-#define QEPIER_PE27 0x00000080
+-#define QEPIER_PE31 0x00000040
+-#define QEPIER_PF20 0x00000020
+-#define QEPIER_PG31 0x00000010
+-#define QEPIER_RES ~(QEPIER_PA15|QEPIER_PA16|QEPIER_PA29|QEPIER_PA30|QEPIER_PB3 \
+- |QEPIER_PB5|QEPIER_PB12|QEPIER_PB13|QEPIER_PB26|QEPIER_PB27 \
+- |QEPIER_PC27|QEPIER_PC28|QEPIER_PC29|QEPIER_PD12|QEPIER_PD13 \
+- |QEPIER_PD16|QEPIER_PD17|QEPIER_PD26|QEPIER_PD27|QEPIER_PE12 \
+- |QEPIER_PE13|QEPIER_PE24|QEPIER_PE25|QEPIER_PE26|QEPIER_PE27 \
+- |QEPIER_PE31|QEPIER_PF20|QEPIER_PG31)
+ u32 qepimr; /* QE Ports Interrupt Mask Register */
+-#define QEPIMR_PA15 0x80000000
+-#define QEPIMR_PA16 0x40000000
+-#define QEPIMR_PA29 0x20000000
+-#define QEPIMR_PA30 0x10000000
+-#define QEPIMR_PB3 0x08000000
+-#define QEPIMR_PB5 0x04000000
+-#define QEPIMR_PB12 0x02000000
+-#define QEPIMR_PB13 0x01000000
+-#define QEPIMR_PB26 0x00800000
+-#define QEPIMR_PB27 0x00400000
+-#define QEPIMR_PC27 0x00200000
+-#define QEPIMR_PC28 0x00100000
+-#define QEPIMR_PC29 0x00080000
+-#define QEPIMR_PD12 0x00040000
+-#define QEPIMR_PD13 0x00020000
+-#define QEPIMR_PD16 0x00010000
+-#define QEPIMR_PD17 0x00008000
+-#define QEPIMR_PD26 0x00004000
+-#define QEPIMR_PD27 0x00002000
+-#define QEPIMR_PE12 0x00001000
+-#define QEPIMR_PE13 0x00000800
+-#define QEPIMR_PE24 0x00000400
+-#define QEPIMR_PE25 0x00000200
+-#define QEPIMR_PE26 0x00000100
+-#define QEPIMR_PE27 0x00000080
+-#define QEPIMR_PE31 0x00000040
+-#define QEPIMR_PF20 0x00000020
+-#define QEPIMR_PG31 0x00000010
+-#define QEPIMR_RES ~(QEPIMR_PA15|QEPIMR_PA16|QEPIMR_PA29|QEPIMR_PA30|QEPIMR_PB3 \
+- |QEPIMR_PB5|QEPIMR_PB12|QEPIMR_PB13|QEPIMR_PB26|QEPIMR_PB27 \
+- |QEPIMR_PC27|QEPIMR_PC28|QEPIMR_PC29|QEPIMR_PD12|QEPIMR_PD13 \
+- |QEPIMR_PD16|QEPIMR_PD17|QEPIMR_PD26|QEPIMR_PD27|QEPIMR_PE12 \
+- |QEPIMR_PE13|QEPIMR_PE24|QEPIMR_PE25|QEPIMR_PE26|QEPIMR_PE27 \
+- |QEPIMR_PE31|QEPIMR_PF20|QEPIMR_PG31)
+ u32 qepicr; /* QE Ports Interrupt Control Register */
+-#define QEPICR_PA15 0x80000000
+-#define QEPICR_PA16 0x40000000
+-#define QEPICR_PA29 0x20000000
+-#define QEPICR_PA30 0x10000000
+-#define QEPICR_PB3 0x08000000
+-#define QEPICR_PB5 0x04000000
+-#define QEPICR_PB12 0x02000000
+-#define QEPICR_PB13 0x01000000
+-#define QEPICR_PB26 0x00800000
+-#define QEPICR_PB27 0x00400000
+-#define QEPICR_PC27 0x00200000
+-#define QEPICR_PC28 0x00100000
+-#define QEPICR_PC29 0x00080000
+-#define QEPICR_PD12 0x00040000
+-#define QEPICR_PD13 0x00020000
+-#define QEPICR_PD16 0x00010000
+-#define QEPICR_PD17 0x00008000
+-#define QEPICR_PD26 0x00004000
+-#define QEPICR_PD27 0x00002000
+-#define QEPICR_PE12 0x00001000
+-#define QEPICR_PE13 0x00000800
+-#define QEPICR_PE24 0x00000400
+-#define QEPICR_PE25 0x00000200
+-#define QEPICR_PE26 0x00000100
+-#define QEPICR_PE27 0x00000080
+-#define QEPICR_PE31 0x00000040
+-#define QEPICR_PF20 0x00000020
+-#define QEPICR_PG31 0x00000010
+-#define QEPICR_RES ~(QEPICR_PA15|QEPICR_PA16|QEPICR_PA29|QEPICR_PA30|QEPICR_PB3 \
+- |QEPICR_PB5|QEPICR_PB12|QEPICR_PB13|QEPICR_PB26|QEPICR_PB27 \
+- |QEPICR_PC27|QEPICR_PC28|QEPICR_PC29|QEPICR_PD12|QEPICR_PD13 \
+- |QEPICR_PD16|QEPICR_PD17|QEPICR_PD26|QEPICR_PD27|QEPICR_PE12 \
+- |QEPICR_PE13|QEPICR_PE24|QEPICR_PE25|QEPICR_PE26|QEPICR_PE27 \
+- |QEPICR_PE31|QEPICR_PF20|QEPICR_PG31)
+ u8 res1[0xE8];
+ } qepi83xx_t;
+
+ /*
+- * general purpose I/O module
++ * QE Parallel I/O Ports
+ */
+ typedef struct gpio_n {
+ u32 podr; /* Open Drain Register */
+@@ -879,238 +242,83 @@ typedef struct gpio_n {
+ u32 ppar2; /* Pin Assignment Register 2 */
+ } gpio_n_t;
+
+-typedef struct gpio83xx {
++typedef struct qegpio83xx {
+ gpio_n_t ioport[0x7];
+ u8 res0[0x358];
+-} gpio83xx_t;
++} qepio83xx_t;
+
+ /*
+ * QE Secondary Bus Access Windows
+ */
+-
+ typedef struct qesba83xx {
+ u32 lbmcsar; /* Local bus memory controller start address */
+-#define LBMCSAR_SA 0x000FFFFF /* 20 most-significant bits of the start address */
+-#define LBMCSAR_RES ~(LBMCSAR_SA)
+ u32 sdmcsar; /* Secondary DDR memory controller start address */
+-#define SDMCSAR_SA 0x000FFFFF /* 20 most-significant bits of the start address */
+-#define SDMCSAR_RES ~(SDMCSAR_SA)
+ u8 res0[0x38];
+ u32 lbmcear; /* Local bus memory controller end address */
+-#define LBMCEAR_EA 0x000FFFFF /* 20 most-significant bits of the end address */
+-#define LBMCEAR_RES ~(LBMCEAR_EA)
+ u32 sdmcear; /* Secondary DDR memory controller end address */
+-#define SDMCEAR_EA 0x000FFFFF /* 20 most-significant bits of the end address */
+-#define SDMCEAR_RES ~(SDMCEAR_EA)
+ u8 res1[0x38];
+- u32 lbmcar; /* Local bus memory controller attributes */
+-#define LBMCAR_WEN 0x00000001 /* Forward transactions to the QE local bus */
+-#define LBMCAR_RES ~(LBMCAR_WEN)
++ u32 lbmcar; /* Local bus memory controller attributes */
+ u32 sdmcar; /* Secondary DDR memory controller attributes */
+-#define SDMCAR_WEN 0x00000001 /* Forward transactions to the second DDR bus */
+-#define SDMCAR_RES ~(SDMCAR_WEN)
+- u8 res2[0x778];
++ u8 res2[0x378];
+ } qesba83xx_t;
+-#endif
+
+ /*
+ * DDR Memory Controller Memory Map
+ */
+ typedef struct ddr_cs_bnds {
+ u32 csbnds;
+-#define CSBNDS_SA 0x00FF0000
+-#define CSBNDS_SA_SHIFT 8
+-#define CSBNDS_EA 0x000000FF
+-#define CSBNDS_EA_SHIFT 24
+ u8 res0[4];
+ } ddr_cs_bnds_t;
+
+ typedef struct ddr83xx {
+- ddr_cs_bnds_t csbnds[4]; /**< Chip Select x Memory Bounds */
++ ddr_cs_bnds_t csbnds[4];/* Chip Select x Memory Bounds */
+ u8 res0[0x60];
+- u32 cs_config[4]; /**< Chip Select x Configuration */
+-#define CSCONFIG_EN 0x80000000
+-#define CSCONFIG_AP 0x00800000
+-#define CSCONFIG_ROW_BIT 0x00000700
+-#define CSCONFIG_ROW_BIT_12 0x00000000
+-#define CSCONFIG_ROW_BIT_13 0x00000100
+-#define CSCONFIG_ROW_BIT_14 0x00000200
+-#define CSCONFIG_COL_BIT 0x00000007
+-#define CSCONFIG_COL_BIT_8 0x00000000
+-#define CSCONFIG_COL_BIT_9 0x00000001
+-#define CSCONFIG_COL_BIT_10 0x00000002
+-#define CSCONFIG_COL_BIT_11 0x00000003
++ u32 cs_config[4]; /* Chip Select x Configuration */
+ u8 res1[0x78];
+- u32 timing_cfg_1; /**< SDRAM Timing Configuration 1 */
+-#define TIMING_CFG1_PRETOACT 0x70000000
+-#define TIMING_CFG1_PRETOACT_SHIFT 28
+-#define TIMING_CFG1_ACTTOPRE 0x0F000000
+-#define TIMING_CFG1_ACTTOPRE_SHIFT 24
+-#define TIMING_CFG1_ACTTORW 0x00700000
+-#define TIMING_CFG1_ACTTORW_SHIFT 20
+-#define TIMING_CFG1_CASLAT 0x00070000
+-#define TIMING_CFG1_CASLAT_SHIFT 16
+-#define TIMING_CFG1_REFREC 0x0000F000
+-#define TIMING_CFG1_REFREC_SHIFT 12
+-#define TIMING_CFG1_WRREC 0x00000700
+-#define TIMING_CFG1_WRREC_SHIFT 8
+-#define TIMING_CFG1_ACTTOACT 0x00000070
+-#define TIMING_CFG1_ACTTOACT_SHIFT 4
+-#define TIMING_CFG1_WRTORD 0x00000007
+-#define TIMING_CFG1_WRTORD_SHIFT 0
+-#define TIMING_CFG1_CASLAT_20 0x00030000 /* CAS latency = 2.0 */
+-#define TIMING_CFG1_CASLAT_25 0x00040000 /* CAS latency = 2.5 */
+-
+- u32 timing_cfg_2; /**< SDRAM Timing Configuration 2 */
+-#define TIMING_CFG2_CPO 0x0F000000
+-#define TIMING_CFG2_CPO_SHIFT 24
+-#define TIMING_CFG2_ACSM 0x00080000
+-#define TIMING_CFG2_WR_DATA_DELAY 0x00001C00
+-#define TIMING_CFG2_WR_DATA_DELAY_SHIFT 10
+-#define TIMING_CFG2_CPO_DEF 0x00000000 /* default (= CASLAT + 1) */
+-
+- u32 sdram_cfg; /**< SDRAM Control Configuration */
+-#define SDRAM_CFG_MEM_EN 0x80000000
+-#define SDRAM_CFG_SREN 0x40000000
+-#define SDRAM_CFG_ECC_EN 0x20000000
+-#define SDRAM_CFG_RD_EN 0x10000000
+-#define SDRAM_CFG_SDRAM_TYPE 0x03000000
+-#define SDRAM_CFG_SDRAM_TYPE_SHIFT 24
+-#define SDRAM_CFG_DYN_PWR 0x00200000
+-#define SDRAM_CFG_32_BE 0x00080000
+-#define SDRAM_CFG_8_BE 0x00040000
+-#define SDRAM_CFG_NCAP 0x00020000
+-#define SDRAM_CFG_2T_EN 0x00008000
+-#define SDRAM_CFG_SDRAM_TYPE_DDR 0x02000000
+-
++ u32 timing_cfg_1; /* SDRAM Timing Configuration 1 */
++ u32 timing_cfg_2; /* SDRAM Timing Configuration 2 */
++ u32 sdram_cfg; /* SDRAM Control Configuration */
+ u8 res2[4];
+- u32 sdram_mode; /**< SDRAM Mode Configuration */
+-#define SDRAM_MODE_ESD 0xFFFF0000
+-#define SDRAM_MODE_ESD_SHIFT 16
+-#define SDRAM_MODE_SD 0x0000FFFF
+-#define SDRAM_MODE_SD_SHIFT 0
+-#define DDR_MODE_EXT_MODEREG 0x4000 /* select extended mode reg */
+-#define DDR_MODE_EXT_OPMODE 0x3FF8 /* operating mode, mask */
+-#define DDR_MODE_EXT_OP_NORMAL 0x0000 /* normal operation */
+-#define DDR_MODE_QFC 0x0004 /* QFC / compatibility, mask */
+-#define DDR_MODE_QFC_COMP 0x0000 /* compatible to older SDRAMs */
+-#define DDR_MODE_WEAK 0x0002 /* weak drivers */
+-#define DDR_MODE_DLL_DIS 0x0001 /* disable DLL */
+-#define DDR_MODE_CASLAT 0x0070 /* CAS latency, mask */
+-#define DDR_MODE_CASLAT_15 0x0010 /* CAS latency 1.5 */
+-#define DDR_MODE_CASLAT_20 0x0020 /* CAS latency 2 */
+-#define DDR_MODE_CASLAT_25 0x0060 /* CAS latency 2.5 */
+-#define DDR_MODE_CASLAT_30 0x0030 /* CAS latency 3 */
+-#define DDR_MODE_BTYPE_SEQ 0x0000 /* sequential burst */
+-#define DDR_MODE_BTYPE_ILVD 0x0008 /* interleaved burst */
+-#define DDR_MODE_BLEN_2 0x0001 /* burst length 2 */
+-#define DDR_MODE_BLEN_4 0x0002 /* burst length 4 */
+-#define DDR_REFINT_166MHZ_7US 1302 /* exact value for 7.8125 µs */
+-#define DDR_BSTOPRE 256 /* use 256 cycles as a starting point */
+-#define DDR_MODE_MODEREG 0x0000 /* select mode register */
+-
++ u32 sdram_mode; /* SDRAM Mode Configuration */
+ u8 res3[8];
+- u32 sdram_interval; /**< SDRAM Interval Configuration */
+-#define SDRAM_INTERVAL_REFINT 0x3FFF0000
+-#define SDRAM_INTERVAL_REFINT_SHIFT 16
+-#define SDRAM_INTERVAL_BSTOPRE 0x00003FFF
+-#define SDRAM_INTERVAL_BSTOPRE_SHIFT 0
++ u32 sdram_interval; /* SDRAM Interval Configuration */
+ u8 res9[8];
+ u32 sdram_clk_cntl;
+-#define DDR_SDRAM_CLK_CNTL_SS_EN 0x80000000
+-#define DDR_SDRAM_CLK_CNTL_CLK_ADJUST_025 0x01000000
+-#define DDR_SDRAM_CLK_CNTL_CLK_ADJUST_05 0x02000000
+-#define DDR_SDRAM_CLK_CNTL_CLK_ADJUST_075 0x03000000
+-#define DDR_SDRAM_CLK_CNTL_CLK_ADJUST_1 0x04000000
+-
+ u8 res4[0xCCC];
+- u32 data_err_inject_hi; /**< Memory Data Path Error Injection Mask High */
+- u32 data_err_inject_lo; /**< Memory Data Path Error Injection Mask Low */
+- u32 ecc_err_inject; /**< Memory Data Path Error Injection Mask ECC */
+-#define ECC_ERR_INJECT_EMB (0x80000000>>22) /* ECC Mirror Byte */
+-#define ECC_ERR_INJECT_EIEN (0x80000000>>23) /* Error Injection Enable */
+-#define ECC_ERR_INJECT_EEIM (0xff000000>>24) /* ECC Erroe Injection Enable */
+-#define ECC_ERR_INJECT_EEIM_SHIFT 0
++ u32 data_err_inject_hi; /* Memory Data Path Error Injection Mask High */
++ u32 data_err_inject_lo; /* Memory Data Path Error Injection Mask Low */
++ u32 ecc_err_inject; /* Memory Data Path Error Injection Mask ECC */
+ u8 res5[0x14];
+- u32 capture_data_hi; /**< Memory Data Path Read Capture High */
+- u32 capture_data_lo; /**< Memory Data Path Read Capture Low */
+- u32 capture_ecc; /**< Memory Data Path Read Capture ECC */
+-#define CAPTURE_ECC_ECE (0xff000000>>24)
+-#define CAPTURE_ECC_ECE_SHIFT 0
++ u32 capture_data_hi; /* Memory Data Path Read Capture High */
++ u32 capture_data_lo; /* Memory Data Path Read Capture Low */
++ u32 capture_ecc; /* Memory Data Path Read Capture ECC */
+ u8 res6[0x14];
+- u32 err_detect; /**< Memory Error Detect */
+-#define ECC_ERROR_DETECT_MME (0x80000000>>0) /* Multiple Memory Errors */
+-#define ECC_ERROR_DETECT_MBE (0x80000000>>28) /* Multiple-Bit Error */
+-#define ECC_ERROR_DETECT_SBE (0x80000000>>29) /* Single-Bit ECC Error Pickup */
+-#define ECC_ERROR_DETECT_MSE (0x80000000>>31) /* Memory Select Error */
+- u32 err_disable; /**< Memory Error Disable */
+-#define ECC_ERROR_DISABLE_MBED (0x80000000>>28) /* Multiple-Bit ECC Error Disable */
+-#define ECC_ERROR_DISABLE_SBED (0x80000000>>29) /* Sinle-Bit ECC Error disable */
+-#define ECC_ERROR_DISABLE_MSED (0x80000000>>31) /* Memory Select Error Disable */
+-#define ECC_ERROR_ENABLE ~(ECC_ERROR_DISABLE_MSED|ECC_ERROR_DISABLE_SBED|ECC_ERROR_DISABLE_MBED)
+- u32 err_int_en; /**< Memory Error Interrupt Enable */
+-#define ECC_ERR_INT_EN_MBEE (0x80000000>>28) /* Multiple-Bit ECC Error Interrupt Enable */
+-#define ECC_ERR_INT_EN_SBEE (0x80000000>>29) /* Single-Bit ECC Error Interrupt Enable */
+-#define ECC_ERR_INT_EN_MSEE (0x80000000>>31) /* Memory Select Error Interrupt Enable */
+-#define ECC_ERR_INT_DISABLE ~(ECC_ERR_INT_EN_MBEE|ECC_ERR_INT_EN_SBEE|ECC_ERR_INT_EN_MSEE)
+- u32 capture_attributes; /**< Memory Error Attributes Capture */
+-#define ECC_CAPT_ATTR_BNUM (0xe0000000>>1) /* Data Beat Num */
+-#define ECC_CAPT_ATTR_BNUM_SHIFT 28
+-#define ECC_CAPT_ATTR_TSIZ (0xc0000000>>6) /* Transaction Size */
+-#define ECC_CAPT_ATTR_TSIZ_FOUR_DW 0
+-#define ECC_CAPT_ATTR_TSIZ_ONE_DW 1
+-#define ECC_CAPT_ATTR_TSIZ_TWO_DW 2
+-#define ECC_CAPT_ATTR_TSIZ_THREE_DW 3
+-#define ECC_CAPT_ATTR_TSIZ_SHIFT 24
+-#define ECC_CAPT_ATTR_TSRC (0xf8000000>>11) /* Transaction Source */
+-#define ECC_CAPT_ATTR_TSRC_E300_CORE_DT 0x0
+-#define ECC_CAPT_ATTR_TSRC_E300_CORE_IF 0x2
+-#define ECC_CAPT_ATTR_TSRC_TSEC1 0x4
+-#define ECC_CAPT_ATTR_TSRC_TSEC2 0x5
+-#define ECC_CAPT_ATTR_TSRC_USB (0x06|0x07)
+-#define ECC_CAPT_ATTR_TSRC_ENCRYPT 0x8
+-#define ECC_CAPT_ATTR_TSRC_I2C 0x9
+-#define ECC_CAPT_ATTR_TSRC_JTAG 0xA
+-#define ECC_CAPT_ATTR_TSRC_PCI1 0xD
+-#define ECC_CAPT_ATTR_TSRC_PCI2 0xE
+-#define ECC_CAPT_ATTR_TSRC_DMA 0xF
+-#define ECC_CAPT_ATTR_TSRC_SHIFT 16
+-#define ECC_CAPT_ATTR_TTYP (0xe0000000>>18) /* Transaction Type */
+-#define ECC_CAPT_ATTR_TTYP_WRITE 0x1
+-#define ECC_CAPT_ATTR_TTYP_READ 0x2
+-#define ECC_CAPT_ATTR_TTYP_R_M_W 0x3
+-#define ECC_CAPT_ATTR_TTYP_SHIFT 12
+-#define ECC_CAPT_ATTR_VLD (0x80000000>>31) /* Valid */
+- u32 capture_address; /**< Memory Error Address Capture */
+- u32 capture_ext_address;/**< Memory Error Extended Address Capture */
+- u32 err_sbe; /**< Memory Single-Bit ECC Error Management */
+-#define ECC_ERROR_MAN_SBET (0xff000000>>8) /* Single-Bit Error Threshold 0..255 */
+-#define ECC_ERROR_MAN_SBET_SHIFT 16
+-#define ECC_ERROR_MAN_SBEC (0xff000000>>24) /* Single Bit Error Counter 0..255 */
+-#define ECC_ERROR_MAN_SBEC_SHIFT 0
++ u32 err_detect; /* Memory Error Detect */
++ u32 err_disable; /* Memory Error Disable */
++ u32 err_int_en; /* Memory Error Interrupt Enable */
++ u32 capture_attributes; /* Memory Error Attributes Capture */
++ u32 capture_address; /* Memory Error Address Capture */
++ u32 capture_ext_address;/* Memory Error Extended Address Capture */
++ u32 err_sbe; /* Memory Single-Bit ECC Error Management */
+ u8 res7[0xA4];
+ u32 debug_reg;
+ u8 res8[0xFC];
+ } ddr83xx_t;
+
+ /*
+- * I2C1 Controller
+- */
+-
+-/*
+ * DUART
+ */
+ typedef struct duart83xx {
+- u8 urbr_ulcr_udlb; /**< combined register for URBR, UTHR and UDLB */
+- u8 uier_udmb; /**< combined register for UIER and UDMB */
+- u8 uiir_ufcr_uafr; /**< combined register for UIIR, UFCR and UAFR */
+- u8 ulcr; /**< line control register */
+- u8 umcr; /**< MODEM control register */
+- u8 ulsr; /**< line status register */
+- u8 umsr; /**< MODEM status register */
+- u8 uscr; /**< scratch register */
++ u8 urbr_ulcr_udlb; /* combined register for URBR, UTHR and UDLB */
++ u8 uier_udmb; /* combined register for UIER and UDMB */
++ u8 uiir_ufcr_uafr; /* combined register for UIIR, UFCR and UAFR */
++ u8 ulcr; /* line control register */
++ u8 umcr; /* MODEM control register */
++ u8 ulsr; /* line status register */
++ u8 umsr; /* MODEM status register */
++ u8 uscr; /* scratch register */
+ u8 res0[8];
+- u8 udsr; /**< DMA status register */
++ u8 udsr; /* DMA status register */
+ u8 res1[3];
+ u8 res2[0xEC];
+ } duart83xx_t;
+@@ -1119,75 +327,52 @@ typedef struct duart83xx {
+ * Local Bus Controller Registers
+ */
+ typedef struct lbus_bank {
+- u32 br; /**< Base Register */
+- u32 or; /**< Base Register */
++ u32 br; /* Base Register */
++ u32 or; /* Option Register */
+ } lbus_bank_t;
+
+ typedef struct lbus83xx {
+ lbus_bank_t bank[8];
+ u8 res0[0x28];
+- u32 mar; /**< UPM Address Register */
++ u32 mar; /* UPM Address Register */
+ u8 res1[0x4];
+- u32 mamr; /**< UPMA Mode Register */
+- u32 mbmr; /**< UPMB Mode Register */
+- u32 mcmr; /**< UPMC Mode Register */
++ 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 */
++ u32 mrtpr; /* Memory Refresh Timer Prescaler Register */
++ u32 mdr; /* UPM Data Register */
+ u8 res3[0x8];
+- u32 lsdmr; /**< SDRAM Mode Register */
++ u32 lsdmr; /* SDRAM Mode Register */
+ u8 res4[0x8];
+- u32 lurt; /**< UPM Refresh Timer */
+- u32 lsrt; /**< SDRAM Refresh Timer */
++ u32 lurt; /* UPM Refresh Timer */
++ u32 lsrt; /* SDRAM Refresh Timer */
+ u8 res5[0x8];
+- u32 ltesr; /**< Transfer Error Status Register */
+- u32 ltedr; /**< Transfer Error Disable Register */
+- u32 lteir; /**< Transfer Error Interrupt Register */
+- u32 lteatr; /**< Transfer Error Attributes Register */
+- u32 ltear; /**< Transfer Error Address Register */
++ u32 ltesr; /* Transfer Error Status Register */
++ 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_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
+- 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
+-
++ u32 lbcr; /* Configuration Register */
++ u32 lcrr; /* Clock Ratio Register */
+ u8 res7[0x28];
+ u8 res8[0xF00];
+ } lbus83xx_t;
+
+-#if defined (CONFIG_MPC8349)
+ /*
+ * Serial Peripheral Interface
+ */
+ typedef struct spi83xx {
+- u32 mode; /**< mode register */
+- u32 event; /**< event register */
+- u32 mask; /**< mask register */
+- u32 com; /**< command register */
++ u32 mode; /* mode register */
++ u32 event; /* event register */
++ u32 mask; /* mask register */
++ u32 com; /* command register */
+ u8 res0[0x10];
+- u32 tx; /**< transmit register */
+- u32 rx; /**< receive register */
+- u8 res1[0xD8];
++ u32 tx; /* transmit register */
++ u32 rx; /* receive register */
++ u8 res1[0xFD8];
+ } spi83xx_t;
+-#endif
+
+ /*
+ * DMA/Messaging Unit
+@@ -1197,21 +382,17 @@ typedef struct dma83xx {
+ u32 omisr; /* 0x30 Outbound message interrupt status register */
+ u32 omimr; /* 0x34 Outbound message interrupt mask register */
+ u32 res1[0x6]; /* 0x38-0x49 reserved */
+-
+ u32 imr0; /* 0x50 Inbound message register 0 */
+ u32 imr1; /* 0x54 Inbound message register 1 */
+ u32 omr0; /* 0x58 Outbound message register 0 */
+ u32 omr1; /* 0x5C Outbound message register 1 */
+-
+ u32 odr; /* 0x60 Outbound doorbell register */
+ u32 res2; /* 0x64-0x67 reserved */
+ u32 idr; /* 0x68 Inbound doorbell register */
+ u32 res3[0x5]; /* 0x6C-0x79 reserved */
+-
+ u32 imisr; /* 0x80 Inbound message interrupt status register */
+ u32 imimr; /* 0x84 Inbound message interrupt mask register */
+ u32 res4[0x1E]; /* 0x88-0x99 reserved */
+-
+ u32 dmamr0; /* 0x100 DMA 0 mode register */
+ u32 dmasr0; /* 0x104 DMA 0 status register */
+ u32 dmacdar0; /* 0x108 DMA 0 current descriptor address register */
+@@ -1223,7 +404,6 @@ typedef struct dma83xx {
+ u32 dmabcr0; /* 0x120 DMA 0 byte count register */
+ u32 dmandar0; /* 0x124 DMA 0 next descriptor address register */
+ u32 res8[0x16]; /* 0x128-0x179 reserved */
+-
+ u32 dmamr1; /* 0x180 DMA 1 mode register */
+ u32 dmasr1; /* 0x184 DMA 1 status register */
+ u32 dmacdar1; /* 0x188 DMA 1 current descriptor address register */
+@@ -1235,7 +415,6 @@ typedef struct dma83xx {
+ u32 dmabcr1; /* 0x1A0 DMA 1 byte count register */
+ u32 dmandar1; /* 0x1A4 DMA 1 next descriptor address register */
+ u32 res12[0x16]; /* 0x1A8-0x199 reserved */
+-
+ u32 dmamr2; /* 0x200 DMA 2 mode register */
+ u32 dmasr2; /* 0x204 DMA 2 status register */
+ u32 dmacdar2; /* 0x208 DMA 2 current descriptor address register */
+@@ -1247,7 +426,6 @@ typedef struct dma83xx {
+ u32 dmabcr2; /* 0x220 DMA 2 byte count register */
+ u32 dmandar2; /* 0x224 DMA 2 next descriptor address register */
+ u32 res16[0x16]; /* 0x228-0x279 reserved */
+-
+ u32 dmamr3; /* 0x280 DMA 3 mode register */
+ u32 dmasr3; /* 0x284 DMA 3 status register */
+ u32 dmacdar3; /* 0x288 DMA 3 current descriptor address register */
+@@ -1258,39 +436,15 @@ typedef struct dma83xx {
+ u32 res19; /* 0x29C reserved */
+ u32 dmabcr3; /* 0x2A0 DMA 3 byte count register */
+ u32 dmandar3; /* 0x2A4 DMA 3 next descriptor address register */
+-
+ u32 dmagsr; /* 0x2A8 DMA general status register */
+ u32 res20[0x15]; /* 0x2AC-0x2FF reserved */
+ } dma83xx_t;
+
+-/* DMAMRn bits */
+-#define DMA_CHANNEL_START (0x00000001) /* Bit - DMAMRn CS */
+-#define DMA_CHANNEL_TRANSFER_MODE_DIRECT (0x00000004) /* Bit - DMAMRn CTM */
+-#define DMA_CHANNEL_SOURCE_ADRESSS_HOLD_EN (0x00001000) /* Bit - DMAMRn SAHE */
+-#define DMA_CHANNEL_SOURCE_ADDRESS_HOLD_1B (0x00000000) /* 2Bit- DMAMRn SAHTS 1byte */
+-#define DMA_CHANNEL_SOURCE_ADDRESS_HOLD_2B (0x00004000) /* 2Bit- DMAMRn SAHTS 2bytes */
+-#define DMA_CHANNEL_SOURCE_ADDRESS_HOLD_4B (0x00008000) /* 2Bit- DMAMRn SAHTS 4bytes */
+-#define DMA_CHANNEL_SOURCE_ADDRESS_HOLD_8B (0x0000c000) /* 2Bit- DMAMRn SAHTS 8bytes */
+-#define DMA_CHANNEL_SNOOP (0x00010000) /* Bit - DMAMRn DMSEN */
+-
+-/* DMASRn bits */
+-#define DMA_CHANNEL_BUSY (0x00000004) /* Bit - DMASRn CB */
+-#define DMA_CHANNEL_TRANSFER_ERROR (0x00000080) /* Bit - DMASRn TE */
+-
+ /*
+ * PCI Software Configuration Registers
+ */
+ typedef struct pciconf83xx {
+ u32 config_address;
+-#define PCI_CONFIG_ADDRESS_EN 0x80000000
+-#define PCI_CONFIG_ADDRESS_BN_SHIFT 16
+-#define PCI_CONFIG_ADDRESS_BN_MASK 0x00ff0000
+-#define PCI_CONFIG_ADDRESS_DN_SHIFT 11
+-#define PCI_CONFIG_ADDRESS_DN_MASK 0x0000f800
+-#define PCI_CONFIG_ADDRESS_FN_SHIFT 8
+-#define PCI_CONFIG_ADDRESS_FN_MASK 0x00000700
+-#define PCI_CONFIG_ADDRESS_RN_SHIFT 0
+-#define PCI_CONFIG_ADDRESS_RN_MASK 0x000000fc
+ u32 config_data;
+ u32 int_ack;
+ u8 res[116];
+@@ -1313,34 +467,6 @@ typedef struct pci_outbound_window {
+ */
+ typedef struct ios83xx {
+ pot83xx_t pot[6];
+-#define POTAR_TA_MASK 0x000fffff
+-#define POBAR_BA_MASK 0x000fffff
+-#define POCMR_EN 0x80000000
+-#define POCMR_IO 0x40000000 /* 0--memory space 1--I/O space */
+-#define POCMR_SE 0x20000000 /* streaming enable */
+-#define POCMR_DST 0x10000000 /* 0--PCI1 1--PCI2 */
+-#define POCMR_CM_MASK 0x000fffff
+-#define POCMR_CM_4G 0x00000000
+-#define POCMR_CM_2G 0x00080000
+-#define POCMR_CM_1G 0x000C0000
+-#define POCMR_CM_512M 0x000E0000
+-#define POCMR_CM_256M 0x000F0000
+-#define POCMR_CM_128M 0x000F8000
+-#define POCMR_CM_64M 0x000FC000
+-#define POCMR_CM_32M 0x000FE000
+-#define POCMR_CM_16M 0x000FF000
+-#define POCMR_CM_8M 0x000FF800
+-#define POCMR_CM_4M 0x000FFC00
+-#define POCMR_CM_2M 0x000FFE00
+-#define POCMR_CM_1M 0x000FFF00
+-#define POCMR_CM_512K 0x000FFF80
+-#define POCMR_CM_256K 0x000FFFC0
+-#define POCMR_CM_128K 0x000FFFE0
+-#define POCMR_CM_64K 0x000FFFF0
+-#define POCMR_CM_32K 0x000FFFF8
+-#define POCMR_CM_16K 0x000FFFFC
+-#define POCMR_CM_8K 0x000FFFFE
+-#define POCMR_CM_4K 0x000FFFFF
+ u8 res0[0x60];
+ u32 pmcr;
+ u8 res1[4];
+@@ -1353,74 +479,13 @@ typedef struct ios83xx {
+ */
+ typedef struct pcictrl83xx {
+ u32 esr;
+-#define ESR_MERR 0x80000000
+-#define ESR_APAR 0x00000400
+-#define ESR_PCISERR 0x00000200
+-#define ESR_MPERR 0x00000100
+-#define ESR_TPERR 0x00000080
+-#define ESR_NORSP 0x00000040
+-#define ESR_TABT 0x00000020
+ u32 ecdr;
+-#define ECDR_APAR 0x00000400
+-#define ECDR_PCISERR 0x00000200
+-#define ECDR_MPERR 0x00000100
+-#define ECDR_TPERR 0x00000080
+-#define ECDR_NORSP 0x00000040
+-#define ECDR_TABT 0x00000020
+ u32 eer;
+-#define EER_APAR 0x00000400
+-#define EER_PCISERR 0x00000200
+-#define EER_MPERR 0x00000100
+-#define EER_TPERR 0x00000080
+-#define EER_NORSP 0x00000040
+-#define EER_TABT 0x00000020
+ u32 eatcr;
+-#define EATCR_ERRTYPR_MASK 0x70000000
+-#define EATCR_ERRTYPR_APR 0x00000000 /* address parity error */
+-#define EATCR_ERRTYPR_WDPR 0x10000000 /* write data parity error */
+-#define EATCR_ERRTYPR_RDPR 0x20000000 /* read data parity error */
+-#define EATCR_ERRTYPR_MA 0x30000000 /* master abort */
+-#define EATCR_ERRTYPR_TA 0x40000000 /* target abort */
+-#define EATCR_ERRTYPR_SE 0x50000000 /* system error indication received */
+-#define EATCR_ERRTYPR_PEA 0x60000000 /* parity error indication received on a read */
+-#define EATCR_ERRTYPR_PEW 0x70000000 /* parity error indication received on a write */
+-#define EATCR_BN_MASK 0x0f000000 /* beat number */
+-#define EATCR_BN_1st 0x00000000
+-#define EATCR_BN_2ed 0x01000000
+-#define EATCR_BN_3rd 0x02000000
+-#define EATCR_BN_4th 0x03000000
+-#define EATCR_BN_5th 0x0400000
+-#define EATCR_BN_6th 0x05000000
+-#define EATCR_BN_7th 0x06000000
+-#define EATCR_BN_8th 0x07000000
+-#define EATCR_BN_9th 0x08000000
+-#define EATCR_TS_MASK 0x00300000 /* transaction size */
+-#define EATCR_TS_4 0x00000000
+-#define EATCR_TS_1 0x00100000
+-#define EATCR_TS_2 0x00200000
+-#define EATCR_TS_3 0x00300000
+-#define EATCR_ES_MASK 0x000f0000 /* error source */
+-#define EATCR_ES_EM 0x00000000 /* external master */
+-#define EATCR_ES_DMA 0x00050000
+-#define EATCR_CMD_MASK 0x0000f000
+-#if defined (CONFIG_MPC8349)
+-#define EATCR_HBE_MASK 0x00000f00 /* PCI high byte enable */
+-#endif
+-#define EATCR_BE_MASK 0x000000f0 /* PCI byte enable */
+-#if defined (CONFIG_MPC8349)
+-#define EATCR_HPB 0x00000004 /* high parity bit */
+-#endif
+-#define EATCR_PB 0x00000002 /* parity bit */
+-#define EATCR_VI 0x00000001 /* error information valid */
+ u32 eacr;
+ u32 eeacr;
+-#if defined (CONFIG_MPC8349)
+ u32 edlcr;
+ u32 edhcr;
+-#elif defined (CONFIG_MPC8360)
+- u32 edcr; /* was edlcr */
+- u8 res_edcr[0x4];
+-#endif
+ u32 gcr;
+ u32 ecr;
+ u32 gsr;
+@@ -1443,41 +508,8 @@ typedef struct pcictrl83xx {
+ u8 res6[4];
+ u32 piwar0;
+ u8 res7[132];
+-#define PITAR_TA_MASK 0x000fffff
+-#define PIBAR_MASK 0xffffffff
+-#define PIEBAR_EBA_MASK 0x000fffff
+-#define PIWAR_EN 0x80000000
+-#define PIWAR_PF 0x20000000
+-#define PIWAR_RTT_MASK 0x000f0000
+-#define PIWAR_RTT_NO_SNOOP 0x00040000
+-#define PIWAR_RTT_SNOOP 0x00050000
+-#define PIWAR_WTT_MASK 0x0000f000
+-#define PIWAR_WTT_NO_SNOOP 0x00004000
+-#define PIWAR_WTT_SNOOP 0x00005000
+-#define PIWAR_IWS_MASK 0x0000003F
+-#define PIWAR_IWS_4K 0x0000000B
+-#define PIWAR_IWS_8K 0x0000000C
+-#define PIWAR_IWS_16K 0x0000000D
+-#define PIWAR_IWS_32K 0x0000000E
+-#define PIWAR_IWS_64K 0x0000000F
+-#define PIWAR_IWS_128K 0x00000010
+-#define PIWAR_IWS_256K 0x00000011
+-#define PIWAR_IWS_512K 0x00000012
+-#define PIWAR_IWS_1M 0x00000013
+-#define PIWAR_IWS_2M 0x00000014
+-#define PIWAR_IWS_4M 0x00000015
+-#define PIWAR_IWS_8M 0x00000016
+-#define PIWAR_IWS_16M 0x00000017
+-#define PIWAR_IWS_32M 0x00000018
+-#define PIWAR_IWS_64M 0x00000019
+-#define PIWAR_IWS_128M 0x0000001A
+-#define PIWAR_IWS_256M 0x0000001B
+-#define PIWAR_IWS_512M 0x0000001C
+-#define PIWAR_IWS_1G 0x0000001D
+-#define PIWAR_IWS_2G 0x0000001E
+ } pcictrl83xx_t;
+
+-#if defined (CONFIG_MPC8349)
+ /*
+ * USB
+ */
+@@ -1491,7 +523,6 @@ typedef struct usb83xx {
+ typedef struct tsec83xx {
+ u8 fixme[0x1000];
+ } tsec83xx_t;
+-#endif
+
+ /*
+ * Security
+@@ -1500,581 +531,82 @@ typedef struct security83xx {
+ u8 fixme[0x10000];
+ } security83xx_t;
+
+-#if defined (CONFIG_MPC8360)
+-/*
+- * iram
+- */
+-typedef struct iram83xx {
+- u32 iadd; /* I-RAM address register */
+- u32 idata; /* I-RAM data register */
+- u8 res0[0x78];
+-} iram83xx_t;
+-
+-/*
+- * Interrupt Controller
+- */
+-typedef struct irq83xx {
+- u32 cicr; /* QE system interrupt configuration */
+- u32 civec; /* QE system interrupt vector register */
+- u32 cripnr; /* QE RISC interrupt pending register */
+- u32 cipnr; /* QE system interrupt pending register */
+- u32 cipxcc; /* QE interrupt priority register */
+- u32 cipycc; /* QE interrupt priority register */
+- u32 cipwcc; /* QE interrupt priority register */
+- u32 cipzcc; /* QE interrupt priority register */
+- u32 cimr; /* QE system interrupt mask register */
+- u32 crimr; /* QE RISC interrupt mask register */
+- u32 cicnr; /* QE system interrupt control register */
+- u8 res0[0x4];
+- u32 ciprta; /* QE system interrupt priority register for RISC tasks A */
+- u32 ciprtb; /* QE system interrupt priority register for RISC tasks B */
+- u8 res1[0x4];
+- u32 cricr; /* QE system RISC interrupt control */
+- u8 res2[0x20];
+- u32 chivec; /* QE high system interrupt vector */
+- u8 res3[0x1C];
+-} irq83xx_t;
+-
+-/*
+- * Communications Processor
+- */
+-typedef struct cp83xx {
+- u32 cecr; /* QE command register */
+- u32 ceccr; /* QE controller configuration register */
+- u32 cecdr; /* QE command data register */
+- u8 res0[0xA];
+- u16 ceter; /* QE timer event register */
+- u8 res1[0x2];
+- u16 cetmr; /* QE timers mask register */
+- u32 cetscr; /* QE time-stamp timer control register */
+- u32 cetsr1; /* QE time-stamp register 1 */
+- u32 cetsr2; /* QE time-stamp register 2 */
+- u8 res2[0x8];
+- u32 cevter; /* QE virtual tasks event register */
+- u32 cevtmr; /* QE virtual tasks mask register */
+- u16 cercr; /* QE RAM control register */
+- u8 res3[0x2];
+- u8 res4[0x24];
+- u16 ceexe1; /* QE external request 1 event register */
+- u8 res5[0x2];
+- u16 ceexm1; /* QE external request 1 mask register */
+- u8 res6[0x2];
+- u16 ceexe2; /* QE external request 2 event register */
+- u8 res7[0x2];
+- u16 ceexm2; /* QE external request 2 mask register */
+- u8 res8[0x2];
+- u16 ceexe3; /* QE external request 3 event register */
+- u8 res9[0x2];
+- u16 ceexm3; /* QE external request 3 mask register */
+- u8 res10[0x2];
+- u16 ceexe4; /* QE external request 4 event register */
+- u8 res11[0x2];
+- u16 ceexm4; /* QE external request 4 mask register */
+- u8 res12[0x2];
+- u8 res13[0x280];
+-} cp83xx_t;
+-
+-/*
+- * QE Multiplexer
+- */
+-
+-typedef struct qmx83xx {
+- u32 cmxgcr; /* CMX general clock route register */
+- u32 cmxsi1cr_l; /* CMX SI1 clock route low register */
+- u32 cmxsi1cr_h; /* CMX SI1 clock route high register */
+- u32 cmxsi1syr; /* CMX SI1 SYNC route register */
+- u32 cmxucr1; /* CMX UCC1, UCC3 clock route register */
+- u32 cmxucr2; /* CMX UCC5, UCC7 clock route register */
+- u32 cmxucr3; /* CMX UCC2, UCC4 clock route register */
+- u32 cmxucr4; /* CMX UCC6, UCC8 clock route register */
+- u32 cmxupcr; /* CMX UPC clock route register */
+- u8 res0[0x1C];
+-} qmx83xx_t;
+-
+-/*
+-* QE Timers
+-*/
+-
+-typedef struct qet83xx {
+- u8 gtcfr1; /* Timer 1 and Timer 2 global configuration register */
+- u8 res0[0x3];
+- u8 gtcfr2; /* Timer 3 and timer 4 global configuration register */
+- u8 res1[0xB];
+- u16 gtmdr1; /* Timer 1 mode register */
+- u16 gtmdr2; /* Timer 2 mode register */
+- u16 gtrfr1; /* Timer 1 reference register */
+- u16 gtrfr2; /* Timer 2 reference register */
+- u16 gtcpr1; /* Timer 1 capture register */
+- u16 gtcpr2; /* Timer 2 capture register */
+- u16 gtcnr1; /* Timer 1 counter */
+- u16 gtcnr2; /* Timer 2 counter */
+- u16 gtmdr3; /* Timer 3 mode register */
+- u16 gtmdr4; /* Timer 4 mode register */
+- u16 gtrfr3; /* Timer 3 reference register */
+- u16 gtrfr4; /* Timer 4 reference register */
+- u16 gtcpr3; /* Timer 3 capture register */
+- u16 gtcpr4; /* Timer 4 capture register */
+- u16 gtcnr3; /* Timer 3 counter */
+- u16 gtcnr4; /* Timer 4 counter */
+- u16 gtevr1; /* Timer 1 event register */
+- u16 gtevr2; /* Timer 2 event register */
+- u16 gtevr3; /* Timer 3 event register */
+- u16 gtevr4; /* Timer 4 event register */
+- u16 gtps; /* Timer 1 prescale register */
+- u8 res2[0x46];
+-} qet83xx_t;
+-
+-/*
+-* spi
+-*/
+-
+-typedef struct spi83xx {
+- u8 res0[0x20];
+- u32 spmode; /* SPI mode register */
+- u8 res1[0x2];
+- u8 spie; /* SPI event register */
+- u8 res2[0x1];
+- u8 res3[0x2];
+- u8 spim; /* SPI mask register */
+- u8 res4[0x1];
+- u8 res5[0x1];
+- u8 spcom; /* SPI command register */
+- u8 res6[0x2];
+- u32 spitd; /* SPI transmit data register (cpu mode) */
+- u32 spird; /* SPI receive data register (cpu mode) */
+- u8 res7[0x8];
+-} spi83xx_t;
+-
+-/*
+-* mcc
+-*/
+-
+-typedef struct mcc83xx {
+- u32 mcce; /* MCC event register */
+- u32 mccm; /* MCC mask register */
+- u32 mccf; /* MCC configuration register */
+- u32 merl; /* MCC emergency request level register */
+- u8 res0[0xF0];
+-} mcc83xx_t;
+-
+-/*
+-* brg
+-*/
+-
+-typedef struct brg83xx {
+- u32 brgc1; /* BRG1 configuration register */
+- u32 brgc2; /* BRG2 configuration register */
+- u32 brgc3; /* BRG3 configuration register */
+- u32 brgc4; /* BRG4 configuration register */
+- u32 brgc5; /* BRG5 configuration register */
+- u32 brgc6; /* BRG6 configuration register */
+- u32 brgc7; /* BRG7 configuration register */
+- u32 brgc8; /* BRG8 configuration register */
+- u32 brgc9; /* BRG9 configuration register */
+- u32 brgc10; /* BRG10 configuration register */
+- u32 brgc11; /* BRG11 configuration register */
+- u32 brgc12; /* BRG12 configuration register */
+- u32 brgc13; /* BRG13 configuration register */
+- u32 brgc14; /* BRG14 configuration register */
+- u32 brgc15; /* BRG15 configuration register */
+- u32 brgc16; /* BRG16 configuration register */
+- u8 res0[0x40];
+-} brg83xx_t;
+-
+-/*
+-* USB
+-*/
+-
+-typedef struct usb83xx {
+- u8 usmod; /* USB mode register */
+- u8 usadd; /* USB address register */
+- u8 uscom; /* USB command register */
+- u8 res0[0x1];
+- u16 usep0; /* USB endpoint register 0 */
+- u16 usep1; /* USB endpoint register 1 */
+- u16 usep2; /* USB endpoint register 2 */
+- u16 usep3; /* USB endpoint register 3 */
+- u8 res1[0x4];
+- u16 usber; /* USB event register */
+- u8 res2[0x2];
+- u16 usbmr; /* USB mask register */
+- u8 res3[0x1];
+- u8 usbs; /* USB status register */
+- u32 ussft; /* USB start of frame timer */
+- u8 res4[0x24];
+-} usb83xx_t;
+-
+-/*
+-* SI
+-*/
+-
+-typedef struct si1_83xx {
+- u16 siamr1; /* SI1 TDMA mode register */
+- u16 sibmr1; /* SI1 TDMB mode register */
+- u16 sicmr1; /* SI1 TDMC mode register */
+- u16 sidmr1; /* SI1 TDMD mode register */
+- u8 siglmr1_h; /* SI1 global mode register high */
+- u8 res0[0x1];
+- u8 sicmdr1_h; /* SI1 command register high */
+- u8 res2[0x1];
+- u8 sistr1_h; /* SI1 status register high */
+- u8 res3[0x1];
+- u16 sirsr1_h; /* SI1 RAM shadow address register high */
+- u8 sitarc1; /* SI1 RAM counter Tx TDMA */
+- u8 sitbrc1; /* SI1 RAM counter Tx TDMB */
+- u8 sitcrc1; /* SI1 RAM counter Tx TDMC */
+- u8 sitdrc1; /* SI1 RAM counter Tx TDMD */
+- u8 sirarc1; /* SI1 RAM counter Rx TDMA */
+- u8 sirbrc1; /* SI1 RAM counter Rx TDMB */
+- u8 sircrc1; /* SI1 RAM counter Rx TDMC */
+- u8 sirdrc1; /* SI1 RAM counter Rx TDMD */
+- u8 res4[0x8];
+- u16 siemr1; /* SI1 TDME mode register 16 bits */
+- u16 sifmr1; /* SI1 TDMF mode register 16 bits */
+- u16 sigmr1; /* SI1 TDMG mode register 16 bits */
+- u16 sihmr1; /* SI1 TDMH mode register 16 bits */
+- u8 siglmg1_l; /* SI1 global mode register low 8 bits */
+- u8 res5[0x1];
+- u8 sicmdr1_l; /* SI1 command register low 8 bits */
+- u8 res6[0x1];
+- u8 sistr1_l; /* SI1 status register low 8 bits */
+- u8 res7[0x1];
+- u16 sirsr1_l; /* SI1 RAM shadow address register low 16 bits */
+- u8 siterc1; /* SI1 RAM counter Tx TDME 8 bits */
+- u8 sitfrc1; /* SI1 RAM counter Tx TDMF 8 bits */
+- u8 sitgrc1; /* SI1 RAM counter Tx TDMG 8 bits */
+- u8 sithrc1; /* SI1 RAM counter Tx TDMH 8 bits */
+- u8 sirerc1; /* SI1 RAM counter Rx TDME 8 bits */
+- u8 sirfrc1; /* SI1 RAM counter Rx TDMF 8 bits */
+- u8 sirgrc1; /* SI1 RAM counter Rx TDMG 8 bits */
+- u8 sirhrc1; /* SI1 RAM counter Rx TDMH 8 bits */
+- u8 res8[0x8];
+- u32 siml1; /* SI1 multiframe limit register */
+- u8 siedm1; /* SI1 extended diagnostic mode register */
+- u8 res9[0xBB];
+-} si1_83xx_t;
+-
+-/*
+-* SI Routing Tables
+-*/
+-
+-typedef struct sir83xx {
+- u8 tx[0x400];
+- u8 rx[0x400];
+- u8 res0[0x800];
+-} sir83xx_t;
+-
+-/*
+-* ucc
+-*/
+-
+-typedef struct uslow {
+- u32 gumr_l; /* UCCx general mode register (low) */
+- u32 gumr_h; /* UCCx general mode register (high) */
+- u16 upsmr; /* UCCx protocol-specific mode register */
+- u8 res0[0x2];
+- u16 utodr; /* UCCx transmit on demand register */
+- u16 udsr; /* UCCx data synchronization register */
+- u16 ucce; /* UCCx event register */
+- u8 res1[0x2];
+- u16 uccm; /* UCCx mask register */
+- u8 res2[0x1];
+- u8 uccs; /* UCCx status register */
+- u8 res3[0x1E8];
+-} uslow_t;
+-
+-typedef struct ufast {
+- u32 gumr; /* UCCx general mode register */
+- u32 upsmr; /* UCCx protocol-specific mode register */
+- u16 utodr; /* UCCx transmit on demand register */
+- u8 res0[0x2];
+- u16 udsr; /* UCCx data synchronization register */
+- u8 res1[0x2];
+- u32 ucce; /* UCCx event register */
+- u32 uccm; /* UCCx mask register. */
+- u8 uccs; /* UCCx status register */
+- u8 res2[0x7];
+- u32 urfb; /* UCC receive FIFO base */
+- u16 urfs; /* UCC receive FIFO size */
+- u8 res3[0x2];
+- u16 urfet; /* UCC receive FIFO emergency threshold */
+- u16 urfset; /* UCC receive FIFO special emergency threshold */
+- u32 utfb; /* UCC transmit FIFO base */
+- u16 utfs; /* UCC transmit FIFO size */
+- u8 res4[0x2];
+- u16 utfet; /* UCC transmit FIFO emergency threshold */
+- u8 res5[0x2];
+- u16 utftt; /* UCC transmit FIFO transmit threshold */
+- u8 res6[0x2];
+- u16 utpt; /* UCC transmit polling timer */
+- u32 urtry; /* UCC retry counter register */
+- u8 res7[0x4C];
+- u8 guemr; /* UCC general extended mode register */
+- u8 res8[0x3];
+- u8 res9[0x6C];
+- u32 maccfg1; /* Mac configuration register #1 */
+- u32 maccfg2; /* Mac configuration register #2 */
+- u16 ipgifg; /* Interframe gap register */
+- u8 res10[0x2];
+- u32 hafdup; /* Half-duplex register */
+- u8 res11[0xC];
+- u32 emtr; /* Ethernet MAC test register */
+- u32 miimcfg; /* MII mgmt configuration register */
+- u32 miimcom; /* MII mgmt command register */
+- u32 miimadd; /* MII mgmt address register */
+- u32 miimcon; /* MII mgmt control register */
+- u32 miistat; /* MII mgmt status register */
+- u32 miimnd; /* MII mgmt indication register */
+- u32 ifctl; /* Interface control register */
+- u32 ifstat; /* Interface status register */
+- u32 macstnaddr1; /* Station address part 1 register */
+- u32 macstnaddr2; /* Station address part 2 register */
+- u8 res12[0x8];
+- u32 uempr; /* UCC Ethernet MAC parameter register */
+- u32 utbipa; /* UCC TBI address */
+- u16 uescr; /* UCC Ethernet statistics control register */
+- u8 res13[0x26];
+- u32 tx64; /* Transmit and receive 64-byte frame counter */
+- u32 tx127; /* Transmit and receive 65- to 127-byte frame counter */
+- u32 tx255; /* Transmit and receive 128- to 255-byte frame counter */
+- u32 rx64; /* Receive and receive 64-byte frame counter */
+- u32 rx127; /* Receive and receive 65- to 127-byte frame counter */
+- u32 rx255; /* Receive and receive 128- to 255-byte frame counter */
+- u32 txok; /* Transmit good bytes counter */
+- u32 txcf; /* Transmit control frame counter */
+- u32 tmca; /* Transmit multicast control frame counter */
+- u32 tbca; /* Transmit broadcast packet counter */
+- u32 rxfok; /* Receive frame OK counter */
+- u32 rbyt; /* Receive good and bad bytes counter */
+- u32 rxbok; /* Receive bytes OK counter */
+- u32 rmca; /* Receive multicast packet counter */
+- u32 rbca; /* Receive broadcast packet counter */
+- u32 scar; /* Statistics carry register */
+- u32 scam; /* Statistics carry mask register */
+- u8 res14[0x3C];
+-} ufast_t;
+-
+-typedef struct ucc83xx {
+- union {
+- uslow_t slow;
+- ufast_t fast;
+- };
+-} ucc83xx_t;
+-
+-/*
+-* MultiPHY UTOPIA POS Controllers
+-*/
+-
+-typedef struct upc83xx {
+- u32 upgcr; /* UTOPIA/POS general configuration register */
+-#define UPGCR_PROTOCOL 0x80000000 /* protocol ul2 or pl2 */
+-#define UPGCR_TMS 0x40000000 /* Transmit master/slave mode */
+-#define UPGCR_RMS 0x20000000 /* Receive master/slave mode */
+-#define UPGCR_ADDR 0x10000000 /* Master MPHY Addr multiplexing: */
+-#define UPGCR_DIAG 0x01000000 /* Diagnostic mode */
+- u32 uplpa; /* UTOPIA/POS last PHY address */
+- u32 uphec; /* ATM HEC register */
+- u32 upuc; /* UTOPIA/POS UCC configuration */
+- u32 updc1; /* UTOPIA/POS device 1 configuration */
+- u32 updc2; /* UTOPIA/POS device 2 configuration */
+- u32 updc3; /* UTOPIA/POS device 3 configuration */
+- u32 updc4; /* UTOPIA/POS device 4 configuration */
+- u32 upstpa; /* UTOPIA/POS STPA threshold */
+- u8 res0[0xC];
+- u32 updrs1_h; /* UTOPIA/POS device 1 rate select */
+- u32 updrs1_l; /* UTOPIA/POS device 1 rate select */
+- u32 updrs2_h; /* UTOPIA/POS device 2 rate select */
+- u32 updrs2_l; /* UTOPIA/POS device 2 rate select */
+- u32 updrs3_h; /* UTOPIA/POS device 3 rate select */
+- u32 updrs3_l; /* UTOPIA/POS device 3 rate select */
+- u32 updrs4_h; /* UTOPIA/POS device 4 rate select */
+- u32 updrs4_l; /* UTOPIA/POS device 4 rate select */
+- u32 updrp1; /* UTOPIA/POS device 1 receive priority low */
+- u32 updrp2; /* UTOPIA/POS device 2 receive priority low */
+- u32 updrp3; /* UTOPIA/POS device 3 receive priority low */
+- u32 updrp4; /* UTOPIA/POS device 4 receive priority low */
+- u32 upde1; /* UTOPIA/POS device 1 event */
+- u32 upde2; /* UTOPIA/POS device 2 event */
+- u32 upde3; /* UTOPIA/POS device 3 event */
+- u32 upde4; /* UTOPIA/POS device 4 event */
+- u16 uprp1;
+- u16 uprp2;
+- u16 uprp3;
+- u16 uprp4;
+- u8 res1[0x8];
+- u16 uptirr1_0; /* Device 1 transmit internal rate 0 */
+- u16 uptirr1_1; /* Device 1 transmit internal rate 1 */
+- u16 uptirr1_2; /* Device 1 transmit internal rate 2 */
+- u16 uptirr1_3; /* Device 1 transmit internal rate 3 */
+- u16 uptirr2_0; /* Device 2 transmit internal rate 0 */
+- u16 uptirr2_1; /* Device 2 transmit internal rate 1 */
+- u16 uptirr2_2; /* Device 2 transmit internal rate 2 */
+- u16 uptirr2_3; /* Device 2 transmit internal rate 3 */
+- u16 uptirr3_0; /* Device 3 transmit internal rate 0 */
+- u16 uptirr3_1; /* Device 3 transmit internal rate 1 */
+- u16 uptirr3_2; /* Device 3 transmit internal rate 2 */
+- u16 uptirr3_3; /* Device 3 transmit internal rate 3 */
+- u16 uptirr4_0; /* Device 4 transmit internal rate 0 */
+- u16 uptirr4_1; /* Device 4 transmit internal rate 1 */
+- u16 uptirr4_2; /* Device 4 transmit internal rate 2 */
+- u16 uptirr4_3; /* Device 4 transmit internal rate 3 */
+- u32 uper1; /* Device 1 port enable register */
+- u32 uper2; /* Device 2 port enable register */
+- u32 uper3; /* Device 3 port enable register */
+- u32 uper4; /* Device 4 port enable register */
+- u8 res2[0x150];
+-} upc83xx_t;
+-
+-/*
+-* SDMA
+-*/
+-
+-typedef struct sdma83xx {
+- u32 sdsr; /* Serial DMA status register */
+- u32 sdmr; /* Serial DMA mode register */
+- u32 sdtr1; /* SDMA system bus threshold register */
+- u32 sdtr2; /* SDMA secondary bus threshold register */
+- u32 sdhy1; /* SDMA system bus hysteresis register */
+- u32 sdhy2; /* SDMA secondary bus hysteresis register */
+- u32 sdta1; /* SDMA system bus address register */
+- u32 sdta2; /* SDMA secondary bus address register */
+- u32 sdtm1; /* SDMA system bus MSNUM register */
+- u32 sdtm2; /* SDMA secondary bus MSNUM register */
+- u8 res0[0x10];
+- u32 sdaqr; /* SDMA address bus qualify register */
+- u32 sdaqmr; /* SDMA address bus qualify mask register */
+- u8 res1[0x4];
+- u32 sdwbcr; /* SDMA CAM entries base register */
+- u8 res2[0x38];
+-} sdma83xx_t;
+-
+-/*
+-* Debug Space
+-*/
+-
+-typedef struct dbg83xx {
+- u32 bpdcr; /* Breakpoint debug command register */
+- u32 bpdsr; /* Breakpoint debug status register */
+- u32 bpdmr; /* Breakpoint debug mask register */
+- u32 bprmrr0; /* Breakpoint request mode risc register 0 */
+- u32 bprmrr1; /* Breakpoint request mode risc register 1 */
+- u8 res0[0x8];
+- u32 bprmtr0; /* Breakpoint request mode trb register 0 */
+- u32 bprmtr1; /* Breakpoint request mode trb register 1 */
+- u8 res1[0x8];
+- u32 bprmir; /* Breakpoint request mode immediate register */
+- u32 bprmsr; /* Breakpoint request mode serial register */
+- u32 bpemr; /* Breakpoint exit mode register */
+- u8 res2[0x48];
+-} dbg83xx_t;
+-
+-/*
+-* RISC Special Registers (Trap and Breakpoint)
+-*/
+-
+-typedef struct rsp83xx {
+- u8 fixme[0x100];
+-} rsp83xx_t;
+-#endif
++#if defined(CONFIG_MPC8349)
++typedef struct immap {
++ sysconf83xx_t sysconf; /* System configuration */
++ wdt83xx_t wdt; /* Watch Dog Timer (WDT) Registers */
++ rtclk83xx_t rtc; /* Real Time Clock Module Registers */
++ rtclk83xx_t pit; /* Periodic Interval Timer */
++ gtm83xx_t gtm[2]; /* Global Timers Module */
++ ipic83xx_t ipic; /* Integrated Programmable Interrupt Controller */
++ arbiter83xx_t arbiter; /* System Arbiter Registers */
++ reset83xx_t reset; /* Reset Module */
++ clk83xx_t clk; /* System Clock Module */
++ pmc83xx_t pmc; /* Power Management Control Module */
++ gpio83xx_t gpio[2]; /* General purpose I/O module */
++ u8 res0[0x200];
++ u8 dll_ddr[0x100];
++ u8 dll_lbc[0x100];
++ u8 res1[0xE00];
++ ddr83xx_t ddr; /* DDR Memory Controller Memory */
++ fsl_i2c_t i2c[2]; /* I2C Controllers */
++ u8 res2[0x1300];
++ duart83xx_t duart[2]; /* DUART */
++ u8 res3[0x900];
++ lbus83xx_t lbus; /* Local Bus Controller Registers */
++ u8 res4[0x1000];
++ spi83xx_t spi; /* Serial Peripheral Interface */
++ dma83xx_t dma; /* DMA */
++ pciconf83xx_t pci_conf[2]; /* PCI Software Configuration Registers */
++ ios83xx_t ios; /* Sequencer */
++ pcictrl83xx_t pci_ctrl[2]; /* PCI Controller Control and Status Registers */
++ u8 res5[0x19900];
++ usb83xx_t usb;
++ tsec83xx_t tsec[2];
++ u8 res6[0xA000];
++ security83xx_t security;
++ u8 res7[0xC0000];
++} immap_t;
+
++#elif defined(CONFIG_MPC8360)
+ typedef struct immap {
+- sysconf83xx_t sysconf; /* System configuration */
+- wdt83xx_t wdt; /* Watch Dog Timer (WDT) Registers */
+- rtclk83xx_t rtc; /* Real Time Clock Module Registers */
+- rtclk83xx_t pit; /* Periodic Interval Timer */
+- gtm83xx_t gtm[2]; /* Global Timers Module */
+- ipic83xx_t ipic; /* Integrated Programmable Interrupt Controller */
+- arbiter83xx_t arbiter; /* System Arbiter Registers */
+- reset83xx_t reset; /* Reset Module */
+- clk83xx_t clk; /* System Clock Module */
+- pmc83xx_t pmc; /* Power Management Control Module */
+-#if defined (CONFIG_MPC8349)
+- gpio83xx_t pgio[2]; /* general purpose I/O module */
+-#elif defined (CONFIG_MPC8360)
+- qepi83xx_t qepi; /* QE Ports Interrupts Registers */
+-#endif
+- u8 res0[0x200];
+-#if defined (CONFIG_MPC8360)
+- u8 DLL_LBDDR[0x100];
+-#endif
+- u8 DDL_DDR[0x100];
+- u8 DDL_LBIU[0x100];
+-#if defined (CONFIG_MPC8349)
+- u8 res1[0xE00];
+-#elif defined (CONFIG_MPC8360)
+- u8 res1[0x200];
+- gpio83xx_t gpio; /* General purpose I/O module */
+- qesba83xx_t qesba; /* QE Secondary Bus Access Windows */
+-#endif
+- ddr83xx_t ddr; /* DDR Memory Controller Memory */
+- fsl_i2c_t i2c[2]; /* I2C Controllers */
+- u8 res2[0x1300];
+- duart83xx_t duart[2]; /* DUART */
+-#if defined (CONFIG_MPC8349)
+- u8 res3[0x900];
+- lbus83xx_t lbus; /* Local Bus Controller Registers */
+- u8 res4[0x1000];
+- spi83xx_t spi; /* Serial Peripheral Interface */
+- u8 res5[0xF00];
+-#elif defined (CONFIG_MPC8360)
+- u8 res3[0x900];
+- lbus83xx_t lbus; /* Local Bus Controller */
+- u8 res4[0x2000];
+-#endif
+- dma83xx_t dma; /* DMA */
+-#if defined (CONFIG_MPC8349)
+- pciconf83xx_t pci_conf[2]; /* PCI Software Configuration Registers */
+- ios83xx_t ios; /* Sequencer */
+- pcictrl83xx_t pci_ctrl[2]; /* PCI Controller Control and Status Registers */
+- u8 res6[0x19900];
+- usb83xx_t usb;
+- tsec83xx_t tsec[2];
+- u8 res7[0xA000];
+- security83xx_t security;
+-#elif defined (CONFIG_MPC8360)
+- pciconf83xx_t pci_conf[1]; /* PCI Software Configuration Registers */
+- u8 res_5[128];
+- ios83xx_t ios; /* Sequencer (IOS) */
+- pcictrl83xx_t pci_ctrl[1]; /* PCI Controller Control and Status Registers */
+- u8 res6[0x4A00];
+- ddr83xx_t ddr_secondary; /* Secondary DDR Memory Controller Memory Map */
+- u8 res7[0x22000];
+- security83xx_t security;
+- u8 res8[0xC0000];
+- iram83xx_t iram; /* IRAM */
+- irq83xx_t irq; /* Interrupt Controller */
+- cp83xx_t cp; /* Communications Processor */
+- qmx83xx_t qmx; /* QE Multiplexer */
+- qet83xx_t qet; /* QE Timers */
+- spi83xx_t spi[0x2]; /* spi */
+- mcc83xx_t mcc; /* mcc */
+- brg83xx_t brg; /* brg */
+- usb83xx_t usb; /* USB */
+- si1_83xx_t si1; /* SI */
+- u8 res9[0x800];
+- sir83xx_t sir; /* SI Routing Tables */
+- ucc83xx_t ucc1; /* ucc1 */
+- ucc83xx_t ucc3; /* ucc3 */
+- ucc83xx_t ucc5; /* ucc5 */
+- ucc83xx_t ucc7; /* ucc7 */
+- u8 res10[0x600];
+- upc83xx_t upc1; /* MultiPHY UTOPIA POS Controller 1 */
+- ucc83xx_t ucc2; /* ucc2 */
+- ucc83xx_t ucc4; /* ucc4 */
+- ucc83xx_t ucc6; /* ucc6 */
+- ucc83xx_t ucc8; /* ucc8 */
+- u8 res11[0x600];
+- upc83xx_t upc2; /* MultiPHY UTOPIA POS Controller 2 */
+- sdma83xx_t sdma; /* SDMA */
+- dbg83xx_t dbg; /* Debug Space */
+- rsp83xx_t rsp[0x2]; /* RISC Special Registers (Trap and Breakpoint) */
+- u8 res12[0x300];
+- u8 res13[0x3A00];
+- u8 res14[0x8000]; /* 0x108000 - 0x110000 */
+- u8 res15[0xC000]; /* 0x110000 - 0x11C000 Multi-user RAM */
+- u8 res16[0x24000]; /* 0x11C000 - 0x140000 */
+- u8 res17[0xC0000]; /* 0x140000 - 0x200000 */
+-#endif
++ sysconf83xx_t sysconf; /* System configuration */
++ wdt83xx_t wdt; /* Watch Dog Timer (WDT) Registers */
++ rtclk83xx_t rtc; /* Real Time Clock Module Registers */
++ rtclk83xx_t pit; /* Periodic Interval Timer */
++ u8 res0[0x200];
++ ipic83xx_t ipic; /* Integrated Programmable Interrupt Controller */
++ arbiter83xx_t arbiter; /* System Arbiter Registers */
++ reset83xx_t reset; /* Reset Module */
++ clk83xx_t clk; /* System Clock Module */
++ pmc83xx_t pmc; /* Power Management Control Module */
++ qepi83xx_t qepi; /* QE Ports Interrupts Registers */
++ u8 res1[0x300];
++ u8 dll_ddr[0x100];
++ u8 dll_lbc[0x100];
++ u8 res2[0x200];
++ qepio83xx_t qepio; /* QE Parallel I/O ports */
++ qesba83xx_t qesba; /* QE Secondary Bus Access Windows */
++ u8 res3[0x400];
++ ddr83xx_t ddr; /* DDR Memory Controller Memory */
++ fsl_i2c_t i2c[2]; /* I2C Controllers */
++ u8 res4[0x1300];
++ duart83xx_t duart[2]; /* DUART */
++ u8 res5[0x900];
++ lbus83xx_t lbus; /* Local Bus Controller Registers */
++ u8 res6[0x2000];
++ dma83xx_t dma; /* DMA */
++ pciconf83xx_t pci_conf[1]; /* PCI Software Configuration Registers */
++ u8 res7[128];
++ ios83xx_t ios; /* Sequencer (IOS) */
++ pcictrl83xx_t pci_ctrl[1]; /* PCI Controller Control and Status Registers */
++ u8 res8[0x4A00];
++ ddr83xx_t ddr_secondary; /* Secondary DDR Memory Controller Memory Map */
++ u8 res9[0x22000];
++ security83xx_t security;
++ u8 res10[0xC0000];
++ u8 qe[0x100000]; /* QE block */
+ } immap_t;
++#endif
+
+ #endif /* __IMMAP_83xx__ */
+diff --git a/include/mpc83xx.h b/include/mpc83xx.h
+index 03dd0ca..504b6a9 100644
+--- a/include/mpc83xx.h
++++ b/include/mpc83xx.h
+@@ -10,12 +10,6 @@
+ * the License, or (at your option) any later version.
+ */
+
+-/*
+- * mpc83xx.h
+- *
+- * MPC83xx specific definitions
+- */
+-
+ #ifndef __MPC83XX_H__
+ #define __MPC83XX_H__
+
+@@ -24,406 +18,941 @@
+ #include <asm/e300.h>
+ #endif
+
+-/*
+- * MPC83xx cpu provide RCR register to do reset thing specially. easier
+- * to implement
++/* MPC83xx cpu provide RCR register to do reset thing specially
+ */
+-
+ #define MPC83xx_RESET
+
+-/*
+- * System reset offset (PowerPC standard)
++/* System reset offset (PowerPC standard)
+ */
+-#define EXC_OFF_SYS_RESET 0x0100
++#define EXC_OFF_SYS_RESET 0x0100
+
+-/*
+- * Default Internal Memory Register Space (Freescale recomandation)
++/* IMMRBAR - Internal Memory Register Base Address
+ */
+-#define CONFIG_DEFAULT_IMMR 0xFF400000
++#define CONFIG_DEFAULT_IMMR 0xFF400000 /* Default IMMR base address */
++#define IMMRBAR 0x0000 /* Register offset to immr */
++#define IMMRBAR_BASE_ADDR 0xFFF00000 /* Base address mask */
++#define IMMRBAR_RES ~(IMMRBAR_BASE_ADDR)
+
+-/*
+- * Watchdog
++/* LAWBAR - Local Access Window Base Address Register
+ */
+-#define SWCRR 0x0204
+-#define SWCRR_SWTC 0xFFFF0000 /* Software Watchdog Time Count. */
+-#define SWCRR_SWEN 0x00000004 /* Watchdog Enable bit. */
+-#define SWCRR_SWRI 0x00000002 /* Software Watchdog Reset/Interrupt Select bit. */
+-#define SWCRR_SWPR 0x00000001 /* Software Watchdog Counter Prescale bit. */
+-#define SWCRR_RES ~(SWCRR_SWTC | SWCRR_SWEN | SWCRR_SWRI | SWCRR_SWPR)
++#define LBLAWBAR0 0x0020 /* Register offset to immr */
++#define LBLAWAR0 0x0024
++#define LBLAWBAR1 0x0028
++#define LBLAWAR1 0x002C
++#define LBLAWBAR2 0x0030
++#define LBLAWAR2 0x0034
++#define LBLAWBAR3 0x0038
++#define LBLAWAR3 0x003C
++#define LAWBAR_BAR 0xFFFFF000 /* Base address mask */
++
++/* SPRIDR - System Part and Revision ID Register
++ */
++#define SPRIDR_PARTID 0xFFFF0000 /* Part Identification */
++#define SPRIDR_REVID 0x0000FFFF /* Revision Identification */
++
++#define SPR_8349E_REV10 0x80300100
++#define SPR_8349_REV10 0x80310100
++#define SPR_8347E_REV10_TBGA 0x80320100
++#define SPR_8347_REV10_TBGA 0x80330100
++#define SPR_8347E_REV10_PBGA 0x80340100
++#define SPR_8347_REV10_PBGA 0x80350100
++#define SPR_8343E_REV10 0x80360100
++#define SPR_8343_REV10 0x80370100
++
++#define SPR_8349E_REV11 0x80300101
++#define SPR_8349_REV11 0x80310101
++#define SPR_8347E_REV11_TBGA 0x80320101
++#define SPR_8347_REV11_TBGA 0x80330101
++#define SPR_8347E_REV11_PBGA 0x80340101
++#define SPR_8347_REV11_PBGA 0x80350101
++#define SPR_8343E_REV11 0x80360101
++#define SPR_8343_REV11 0x80370101
++
++#define SPR_8360E_REV10 0x80480010
++#define SPR_8360_REV10 0x80490010
++#define SPR_8360E_REV11 0x80480011
++#define SPR_8360_REV11 0x80490011
++#define SPR_8360E_REV12 0x80480012
++#define SPR_8360_REV12 0x80490012
++
++/* SPCR - System Priority Configuration Register
++ */
++#define SPCR_PCIHPE 0x10000000 /* PCI Highest Priority Enable */
++#define SPCR_PCIHPE_SHIFT (31-3)
++#define SPCR_PCIPR 0x03000000 /* PCI bridge system bus request priority */
++#define SPCR_PCIPR_SHIFT (31-7)
++#define SPCR_OPT 0x00800000 /* Optimize */
++#define SPCR_TBEN 0x00400000 /* E300 PowerPC core time base unit enable */
++#define SPCR_TBEN_SHIFT (31-9)
++#define SPCR_COREPR 0x00300000 /* E300 PowerPC Core system bus request priority */
++#define SPCR_COREPR_SHIFT (31-11)
++
++#if defined(CONFIG_MPC8349)
++/* SPCR bits - MPC8349 specific */
++#define SPCR_TSEC1DP 0x00003000 /* TSEC1 data priority */
++#define SPCR_TSEC1DP_SHIFT (31-19)
++#define SPCR_TSEC1BDP 0x00000C00 /* TSEC1 buffer descriptor priority */
++#define SPCR_TSEC1BDP_SHIFT (31-21)
++#define SPCR_TSEC1EP 0x00000300 /* TSEC1 emergency priority */
++#define SPCR_TSEC1EP_SHIFT (31-23)
++#define SPCR_TSEC2DP 0x00000030 /* TSEC2 data priority */
++#define SPCR_TSEC2DP_SHIFT (31-27)
++#define SPCR_TSEC2BDP 0x0000000C /* TSEC2 buffer descriptor priority */
++#define SPCR_TSEC2BDP_SHIFT (31-29)
++#define SPCR_TSEC2EP 0x00000003 /* TSEC2 emergency priority */
++#define SPCR_TSEC2EP_SHIFT (31-31)
++#endif
+
+-#define SWCNR 0x0208
+-#define SWCNR_SWCN 0x0000FFFF Software Watchdog Count Field.
+-#define SWCNR_RES ~(SWCNR_SWCN)
++/* SICRL/H - System I/O Configuration Register Low/High
++ */
++#if defined(CONFIG_MPC8349)
++/* SICRL bits - MPC8349 specific */
++#define SICRL_LDP_A 0x80000000
++#define SICRL_USB1 0x40000000
++#define SICRL_USB0 0x20000000
++#define SICRL_UART 0x0C000000
++#define SICRL_GPIO1_A 0x02000000
++#define SICRL_GPIO1_B 0x01000000
++#define SICRL_GPIO1_C 0x00800000
++#define SICRL_GPIO1_D 0x00400000
++#define SICRL_GPIO1_E 0x00200000
++#define SICRL_GPIO1_F 0x00180000
++#define SICRL_GPIO1_G 0x00040000
++#define SICRL_GPIO1_H 0x00020000
++#define SICRL_GPIO1_I 0x00010000
++#define SICRL_GPIO1_J 0x00008000
++#define SICRL_GPIO1_K 0x00004000
++#define SICRL_GPIO1_L 0x00003000
++
++/* SICRH bits - MPC8349 specific */
++#define SICRH_DDR 0x80000000
++#define SICRH_TSEC1_A 0x10000000
++#define SICRH_TSEC1_B 0x08000000
++#define SICRH_TSEC1_C 0x04000000
++#define SICRH_TSEC1_D 0x02000000
++#define SICRH_TSEC1_E 0x01000000
++#define SICRH_TSEC1_F 0x00800000
++#define SICRH_TSEC2_A 0x00400000
++#define SICRH_TSEC2_B 0x00200000
++#define SICRH_TSEC2_C 0x00100000
++#define SICRH_TSEC2_D 0x00080000
++#define SICRH_TSEC2_E 0x00040000
++#define SICRH_TSEC2_F 0x00020000
++#define SICRH_TSEC2_G 0x00010000
++#define SICRH_TSEC2_H 0x00008000
++#define SICRH_GPIO2_A 0x00004000
++#define SICRH_GPIO2_B 0x00002000
++#define SICRH_GPIO2_C 0x00001000
++#define SICRH_GPIO2_D 0x00000800
++#define SICRH_GPIO2_E 0x00000400
++#define SICRH_GPIO2_F 0x00000200
++#define SICRH_GPIO2_G 0x00000180
++#define SICRH_GPIO2_H 0x00000060
++#define SICRH_TSOBI1 0x00000002
++#define SICRH_TSOBI2 0x00000001
++
++#elif defined(CONFIG_MPC8360)
++/* SICRL bits - MPC8360 specific */
++#define SICRL_LDP_A 0xC0000000
++#define SICRL_LCLK_1 0x10000000
++#define SICRL_LCLK_2 0x08000000
++#define SICRL_SRCID_A 0x03000000
++#define SICRL_IRQ_CKSTP_A 0x00C00000
++
++/* SICRH bits - MPC8360 specific */
++#define SICRH_DDR 0x80000000
++#define SICRH_SECONDARY_DDR 0x40000000
++#define SICRH_SDDROE 0x20000000
++#define SICRH_IRQ3 0x10000000
++#define SICRH_UC1EOBI 0x00000004
++#define SICRH_UC2E1OBI 0x00000002
++#define SICRH_UC2E2OBI 0x00000001
++#endif
+
+-#define SWSRR 0x020E
++/* SWCRR - System Watchdog Control Register
++ */
++#define SWCRR 0x0204 /* Register offset to immr */
++#define SWCRR_SWTC 0xFFFF0000 /* Software Watchdog Time Count */
++#define SWCRR_SWEN 0x00000004 /* Watchdog Enable bit */
++#define SWCRR_SWRI 0x00000002 /* Software Watchdog Reset/Interrupt Select bit */
++#define SWCRR_SWPR 0x00000001 /* Software Watchdog Counter Prescale bit */
++#define SWCRR_RES ~(SWCRR_SWTC | SWCRR_SWEN | SWCRR_SWRI | SWCRR_SWPR)
++
++/* SWCNR - System Watchdog Counter Register
++ */
++#define SWCNR 0x0208 /* Register offset to immr */
++#define SWCNR_SWCN 0x0000FFFF /* Software Watchdog Count mask */
++#define SWCNR_RES ~(SWCNR_SWCN)
+
+-/*
+- * Default Internal Memory Register Space (Freescale recomandation)
++/* SWSRR - System Watchdog Service Register
+ */
+-#define IMMRBAR 0x0000
+-#define IMMRBAR_BASE_ADDR 0xFFF00000 /* Identifies the 12 most-significant address bits of the base of the 1 MByte internal memory window. */
+-#define IMMRBAR_RES ~(IMMRBAR_BASE_ADDR)
++#define SWSRR 0x020E /* Register offset to immr */
+
+-/*
+- * Default Internal Memory Register Space (Freescale recomandation)
++/* ACR - Arbiter Configuration Register
+ */
+-#define LBLAWBAR0 0x0020
+-#define LBLAWAR0 0x0024
+-#define LBLAWBAR1 0x0028
+-#define LBLAWAR1 0x002C
+-#define LBLAWBAR2 0x0030
+-#define LBLAWAR2 0x0034
+-#define LBLAWBAR3 0x0038
+-#define LBLAWAR3 0x003C
++#define ACR_COREDIS 0x10000000 /* Core disable */
++#define ACR_COREDIS_SHIFT (31-7)
++#define ACR_PIPE_DEP 0x00070000 /* Pipeline depth */
++#define ACR_PIPE_DEP_SHIFT (31-15)
++#define ACR_PCI_RPTCNT 0x00007000 /* PCI repeat count */
++#define ACR_PCI_RPTCNT_SHIFT (31-19)
++#define ACR_RPTCNT 0x00000700 /* Repeat count */
++#define ACR_RPTCNT_SHIFT (31-23)
++#define ACR_APARK 0x00000030 /* Address parking */
++#define ACR_APARK_SHIFT (31-27)
++#define ACR_PARKM 0x0000000F /* Parking master */
++#define ACR_PARKM_SHIFT (31-31)
++
++/* ATR - Arbiter Timers Register
++ */
++#define ATR_DTO 0x00FF0000 /* Data time out */
++#define ATR_ATO 0x000000FF /* Address time out */
+
+-/*
+- * The device ID and revision numbers
+- */
+-#define SPR_8349E_REV10 0x80300100
+-#define SPR_8349_REV10 0x80310100
+-#define SPR_8347E_REV10_TBGA 0x80320100
+-#define SPR_8347_REV10_TBGA 0x80330100
+-#define SPR_8347E_REV10_PBGA 0x80340100
+-#define SPR_8347_REV10_PBGA 0x80350100
+-#define SPR_8343E_REV10 0x80360100
+-#define SPR_8343_REV10 0x80370100
+-
+-#define SPR_8349E_REV11 0x80300101
+-#define SPR_8349_REV11 0x80310101
+-#define SPR_8347E_REV11_TBGA 0x80320101
+-#define SPR_8347_REV11_TBGA 0x80330101
+-#define SPR_8347E_REV11_PBGA 0x80340101
+-#define SPR_8347_REV11_PBGA 0x80350101
+-#define SPR_8343E_REV11 0x80360101
+-#define SPR_8343_REV11 0x80370101
+-
+-#define SPR_8360E_REV10 0x80480010
+-#define SPR_8360_REV10 0x80490010
+-#define SPR_8360E_REV11 0x80480011
+-#define SPR_8360_REV11 0x80490011
+-#define SPR_8360E_REV12 0x80480012
+-#define SPR_8360_REV12 0x80490012
++/* AER - Arbiter Event Register
++ */
++#define AER_ETEA 0x00000020 /* Transfer error */
++#define AER_RES 0x00000010 /* Reserved transfer type */
++#define AER_ECW 0x00000008 /* External control word transfer type */
++#define AER_AO 0x00000004 /* Address Only transfer type */
++#define AER_DTO 0x00000002 /* Data time out */
++#define AER_ATO 0x00000001 /* Address time out */
++
++/* AEATR - Arbiter Event Address Register
++ */
++#define AEATR_EVENT 0x07000000 /* Event type */
++#define AEATR_MSTR_ID 0x001F0000 /* Master Id */
++#define AEATR_TBST 0x00000800 /* Transfer burst */
++#define AEATR_TSIZE 0x00000700 /* Transfer Size */
++#define AEATR_TTYPE 0x0000001F /* Transfer Type */
+
+-/*
+- * Base Registers & Option Registers
+- */
+-#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_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_SDRAM 0x00000060 /* SDRAM */
+-#define BR_MS_UPMA 0x00000080 /* UPMA */
+-#define BR_MS_UPMB 0x000000A0 /* UPMB */
+-#define BR_MS_UPMC 0x000000C0 /* UPMC */
+-#if defined (CONFIG_MPC8360)
+-#define BR_ATOM 0x0000000C
+-#define BR_ATOM_SHIFT 2
+-#endif
+-#define BR_V 0x00000001
+-#define BR_V_SHIFT 0
+-#if defined (CONFIG_MPC8349)
+-#define BR_RES ~(BR_BA|BR_PS|BR_DECC|BR_WP|BR_MSEL|BR_V)
+-#elif defined (CONFIG_MPC8360)
+-#define BR_RES ~(BR_BA|BR_PS|BR_DECC|BR_WP|BR_MSEL|BR_ATOM|BR_V)
++/* HRCWL - Hard Reset Configuration Word Low
++ */
++#define HRCWL_LBIUCM 0x80000000
++#define HRCWL_LBIUCM_SHIFT 31
++#define HRCWL_LCL_BUS_TO_SCB_CLK_1X1 0x00000000
++#define HRCWL_LCL_BUS_TO_SCB_CLK_2X1 0x80000000
++
++#define HRCWL_DDRCM 0x40000000
++#define HRCWL_DDRCM_SHIFT 30
++#define HRCWL_DDR_TO_SCB_CLK_1X1 0x00000000
++#define HRCWL_DDR_TO_SCB_CLK_2X1 0x40000000
++
++#define HRCWL_SPMF 0x0f000000
++#define HRCWL_SPMF_SHIFT 24
++#define HRCWL_CSB_TO_CLKIN_16X1 0x00000000
++#define HRCWL_CSB_TO_CLKIN_1X1 0x01000000
++#define HRCWL_CSB_TO_CLKIN_2X1 0x02000000
++#define HRCWL_CSB_TO_CLKIN_3X1 0x03000000
++#define HRCWL_CSB_TO_CLKIN_4X1 0x04000000
++#define HRCWL_CSB_TO_CLKIN_5X1 0x05000000
++#define HRCWL_CSB_TO_CLKIN_6X1 0x06000000
++#define HRCWL_CSB_TO_CLKIN_7X1 0x07000000
++#define HRCWL_CSB_TO_CLKIN_8X1 0x08000000
++#define HRCWL_CSB_TO_CLKIN_9X1 0x09000000
++#define HRCWL_CSB_TO_CLKIN_10X1 0x0A000000
++#define HRCWL_CSB_TO_CLKIN_11X1 0x0B000000
++#define HRCWL_CSB_TO_CLKIN_12X1 0x0C000000
++#define HRCWL_CSB_TO_CLKIN_13X1 0x0D000000
++#define HRCWL_CSB_TO_CLKIN_14X1 0x0E000000
++#define HRCWL_CSB_TO_CLKIN_15X1 0x0F000000
++
++#define HRCWL_VCO_BYPASS 0x00000000
++#define HRCWL_VCO_1X2 0x00000000
++#define HRCWL_VCO_1X4 0x00200000
++#define HRCWL_VCO_1X8 0x00400000
++
++#define HRCWL_COREPLL 0x007F0000
++#define HRCWL_COREPLL_SHIFT 16
++#define HRCWL_CORE_TO_CSB_BYPASS 0x00000000
++#define HRCWL_CORE_TO_CSB_1X1 0x00020000
++#define HRCWL_CORE_TO_CSB_1_5X1 0x00030000
++#define HRCWL_CORE_TO_CSB_2X1 0x00040000
++#define HRCWL_CORE_TO_CSB_2_5X1 0x00050000
++#define HRCWL_CORE_TO_CSB_3X1 0x00060000
++
++#if defined(CONFIG_MPC8360)
++#define HRCWL_CEVCOD 0x000000C0
++#define HRCWL_CEVCOD_SHIFT 6
++#define HRCWL_CE_PLL_VCO_DIV_4 0x00000000
++#define HRCWL_CE_PLL_VCO_DIV_8 0x00000040
++#define HRCWL_CE_PLL_VCO_DIV_2 0x00000080
++
++#define HRCWL_CEPDF 0x00000020
++#define HRCWL_CEPDF_SHIFT 5
++#define HRCWL_CE_PLL_DIV_1X1 0x00000000
++#define HRCWL_CE_PLL_DIV_2X1 0x00000020
++
++#define HRCWL_CEPMF 0x0000001F
++#define HRCWL_CEPMF_SHIFT 0
++#define HRCWL_CE_TO_PLL_1X16_ 0x00000000
++#define HRCWL_CE_TO_PLL_1X2 0x00000002
++#define HRCWL_CE_TO_PLL_1X3 0x00000003
++#define HRCWL_CE_TO_PLL_1X4 0x00000004
++#define HRCWL_CE_TO_PLL_1X5 0x00000005
++#define HRCWL_CE_TO_PLL_1X6 0x00000006
++#define HRCWL_CE_TO_PLL_1X7 0x00000007
++#define HRCWL_CE_TO_PLL_1X8 0x00000008
++#define HRCWL_CE_TO_PLL_1X9 0x00000009
++#define HRCWL_CE_TO_PLL_1X10 0x0000000A
++#define HRCWL_CE_TO_PLL_1X11 0x0000000B
++#define HRCWL_CE_TO_PLL_1X12 0x0000000C
++#define HRCWL_CE_TO_PLL_1X13 0x0000000D
++#define HRCWL_CE_TO_PLL_1X14 0x0000000E
++#define HRCWL_CE_TO_PLL_1X15 0x0000000F
++#define HRCWL_CE_TO_PLL_1X16 0x00000010
++#define HRCWL_CE_TO_PLL_1X17 0x00000011
++#define HRCWL_CE_TO_PLL_1X18 0x00000012
++#define HRCWL_CE_TO_PLL_1X19 0x00000013
++#define HRCWL_CE_TO_PLL_1X20 0x00000014
++#define HRCWL_CE_TO_PLL_1X21 0x00000015
++#define HRCWL_CE_TO_PLL_1X22 0x00000016
++#define HRCWL_CE_TO_PLL_1X23 0x00000017
++#define HRCWL_CE_TO_PLL_1X24 0x00000018
++#define HRCWL_CE_TO_PLL_1X25 0x00000019
++#define HRCWL_CE_TO_PLL_1X26 0x0000001A
++#define HRCWL_CE_TO_PLL_1X27 0x0000001B
++#define HRCWL_CE_TO_PLL_1X28 0x0000001C
++#define HRCWL_CE_TO_PLL_1X29 0x0000001D
++#define HRCWL_CE_TO_PLL_1X30 0x0000001E
++#define HRCWL_CE_TO_PLL_1X31 0x0000001F
+ #endif
+
+-#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
+-
+-/*
+- * Hard Reset Configration Word - High
++/* HRCWH - Hardware Reset Configuration Word High
+ */
+-#define HRCWH_PCI_AGENT 0x00000000
+-#define HRCWH_PCI_HOST 0x80000000
++#define HRCWH_PCI_HOST 0x80000000
++#define HRCWH_PCI_HOST_SHIFT 31
++#define HRCWH_PCI_AGENT 0x00000000
+
+-#if defined (CONFIG_MPC8349)
+-#define HRCWH_32_BIT_PCI 0x00000000
+-#define HRCWH_64_BIT_PCI 0x40000000
++#if defined(CONFIG_MPC8349)
++#define HRCWH_32_BIT_PCI 0x00000000
++#define HRCWH_64_BIT_PCI 0x40000000
+ #endif
+
+-#define HRCWH_PCI1_ARBITER_DISABLE 0x00000000
+-#define HRCWH_PCI1_ARBITER_ENABLE 0x20000000
++#define HRCWH_PCI1_ARBITER_DISABLE 0x00000000
++#define HRCWH_PCI1_ARBITER_ENABLE 0x20000000
++
++#define HRCWH_PCI_ARBITER_DISABLE 0x00000000
++#define HRCWH_PCI_ARBITER_ENABLE 0x20000000
+
+-#if defined (CONFIG_MPC8349)
+-#define HRCWH_PCI2_ARBITER_DISABLE 0x00000000
+-#define HRCWH_PCI2_ARBITER_ENABLE 0x10000000
+-#elif defined (CONFIG_MPC8360)
+-#define HRCWH_PCICKDRV_DISABLE 0x00000000
+-#define HRCWH_PCICKDRV_ENABLE 0x10000000
++#if defined(CONFIG_MPC8349)
++#define HRCWH_PCI2_ARBITER_DISABLE 0x00000000
++#define HRCWH_PCI2_ARBITER_ENABLE 0x10000000
++
++#elif defined(CONFIG_MPC8360)
++#define HRCWH_PCICKDRV_DISABLE 0x00000000
++#define HRCWH_PCICKDRV_ENABLE 0x10000000
+ #endif
+
+-#define HRCWH_CORE_DISABLE 0x08000000
+-#define HRCWH_CORE_ENABLE 0x00000000
++#define HRCWH_CORE_DISABLE 0x08000000
++#define HRCWH_CORE_ENABLE 0x00000000
+
+-#define HRCWH_FROM_0X00000100 0x00000000
+-#define HRCWH_FROM_0XFFF00100 0x04000000
++#define HRCWH_FROM_0X00000100 0x00000000
++#define HRCWH_FROM_0XFFF00100 0x04000000
+
+-#define HRCWH_BOOTSEQ_DISABLE 0x00000000
+-#define HRCWH_BOOTSEQ_NORMAL 0x01000000
+-#define HRCWH_BOOTSEQ_EXTENDED 0x02000000
++#define HRCWH_BOOTSEQ_DISABLE 0x00000000
++#define HRCWH_BOOTSEQ_NORMAL 0x01000000
++#define HRCWH_BOOTSEQ_EXTENDED 0x02000000
+
+-#define HRCWH_SW_WATCHDOG_DISABLE 0x00000000
+-#define HRCWH_SW_WATCHDOG_ENABLE 0x00800000
++#define HRCWH_SW_WATCHDOG_DISABLE 0x00000000
++#define HRCWH_SW_WATCHDOG_ENABLE 0x00800000
+
+-#define HRCWH_ROM_LOC_DDR_SDRAM 0x00000000
+-#define HRCWH_ROM_LOC_PCI1 0x00100000
+-#if defined (CONFIG_MPC8349)
+-#define HRCWH_ROM_LOC_PCI2 0x00200000
++#define HRCWH_ROM_LOC_DDR_SDRAM 0x00000000
++#define HRCWH_ROM_LOC_PCI1 0x00100000
++#if defined(CONFIG_MPC8349)
++#define HRCWH_ROM_LOC_PCI2 0x00200000
+ #endif
+-#define HRCWH_ROM_LOC_LOCAL_8BIT 0x00500000
+-#define HRCWH_ROM_LOC_LOCAL_16BIT 0x00600000
+-#define HRCWH_ROM_LOC_LOCAL_32BIT 0x00700000
+-
+-#if defined (CONFIG_MPC8349)
+-#define HRCWH_TSEC1M_IN_RGMII 0x00000000
+-#define HRCWH_TSEC1M_IN_RTBI 0x00004000
+-#define HRCWH_TSEC1M_IN_GMII 0x00008000
+-#define HRCWH_TSEC1M_IN_TBI 0x0000C000
+-
+-#define HRCWH_TSEC2M_IN_RGMII 0x00000000
+-#define HRCWH_TSEC2M_IN_RTBI 0x00001000
+-#define HRCWH_TSEC2M_IN_GMII 0x00002000
+-#define HRCWH_TSEC2M_IN_TBI 0x00003000
++#define HRCWH_ROM_LOC_LOCAL_8BIT 0x00500000
++#define HRCWH_ROM_LOC_LOCAL_16BIT 0x00600000
++#define HRCWH_ROM_LOC_LOCAL_32BIT 0x00700000
++
++#if defined(CONFIG_MPC8349)
++#define HRCWH_TSEC1M_IN_RGMII 0x00000000
++#define HRCWH_TSEC1M_IN_RTBI 0x00004000
++#define HRCWH_TSEC1M_IN_GMII 0x00008000
++#define HRCWH_TSEC1M_IN_TBI 0x0000C000
++#define HRCWH_TSEC2M_IN_RGMII 0x00000000
++#define HRCWH_TSEC2M_IN_RTBI 0x00001000
++#define HRCWH_TSEC2M_IN_GMII 0x00002000
++#define HRCWH_TSEC2M_IN_TBI 0x00003000
+ #endif
+
+-#if defined (CONFIG_MPC8360)
+-#define HRCWH_SECONDARY_DDR_DISABLE 0x00000000
+-#define HRCWH_SECONDARY_DDR_ENABLE 0x00000010
++#if defined(CONFIG_MPC8360)
++#define HRCWH_SECONDARY_DDR_DISABLE 0x00000000
++#define HRCWH_SECONDARY_DDR_ENABLE 0x00000010
+ #endif
+
+-#define HRCWH_BIG_ENDIAN 0x00000000
+-#define HRCWH_LITTLE_ENDIAN 0x00000008
++#define HRCWH_BIG_ENDIAN 0x00000000
++#define HRCWH_LITTLE_ENDIAN 0x00000008
+
+-#define HRCWH_LALE_NORMAL 0x00000000
+-#define HRCWH_LALE_EARLY 0x00000004
++#define HRCWH_LALE_NORMAL 0x00000000
++#define HRCWH_LALE_EARLY 0x00000004
+
+-#define HRCWH_LDP_SET 0x00000000
+-#define HRCWH_LDP_CLEAR 0x00000002
++#define HRCWH_LDP_SET 0x00000000
++#define HRCWH_LDP_CLEAR 0x00000002
+
+-/*
+- * Hard Reset Configration Word - Low
+- */
+-#define HRCWL_LCL_BUS_TO_SCB_CLK_1X1 0x00000000
+-#define HRCWL_LCL_BUS_TO_SCB_CLK_2X1 0x80000000
+-
+-#define HRCWL_DDR_TO_SCB_CLK_1X1 0x00000000
+-#define HRCWL_DDR_TO_SCB_CLK_2X1 0x40000000
+-
+-#define HRCWL_CSB_TO_CLKIN_16X1 0x00000000
+-#define HRCWL_CSB_TO_CLKIN_1X1 0x01000000
+-#define HRCWL_CSB_TO_CLKIN_2X1 0x02000000
+-#define HRCWL_CSB_TO_CLKIN_3X1 0x03000000
+-#define HRCWL_CSB_TO_CLKIN_4X1 0x04000000
+-#define HRCWL_CSB_TO_CLKIN_5X1 0x05000000
+-#define HRCWL_CSB_TO_CLKIN_6X1 0x06000000
+-#define HRCWL_CSB_TO_CLKIN_7X1 0x07000000
+-#define HRCWL_CSB_TO_CLKIN_8X1 0x08000000
+-#define HRCWL_CSB_TO_CLKIN_9X1 0x09000000
+-#define HRCWL_CSB_TO_CLKIN_10X1 0x0A000000
+-#define HRCWL_CSB_TO_CLKIN_11X1 0x0B000000
+-#define HRCWL_CSB_TO_CLKIN_12X1 0x0C000000
+-#define HRCWL_CSB_TO_CLKIN_13X1 0x0D000000
+-#define HRCWL_CSB_TO_CLKIN_14X1 0x0E000000
+-#define HRCWL_CSB_TO_CLKIN_15X1 0x0F000000
+-
+-#define HRCWL_VCO_BYPASS 0x00000000
+-#define HRCWL_VCO_1X2 0x00000000
+-#define HRCWL_VCO_1X4 0x00200000
+-#define HRCWL_VCO_1X8 0x00400000
+-
+-#define HRCWL_CORE_TO_CSB_BYPASS 0x00000000
+-#define HRCWL_CORE_TO_CSB_1X1 0x00020000
+-#define HRCWL_CORE_TO_CSB_1_5X1 0x00030000
+-#define HRCWL_CORE_TO_CSB_2X1 0x00040000
+-#define HRCWL_CORE_TO_CSB_2_5X1 0x00050000
+-#define HRCWL_CORE_TO_CSB_3X1 0x00060000
+-
+-#if defined (CONFIG_MPC8360)
+-#define HRCWL_CE_PLL_VCO_DIV_4 0x00000000
+-#define HRCWL_CE_PLL_VCO_DIV_8 0x00000040
+-#define HRCWL_CE_PLL_VCO_DIV_2 0x00000080
+-
+-#define HRCWL_CE_PLL_DIV_1X1 0x00000000
+-#define HRCWL_CE_PLL_DIV_2X1 0x00000020
+-
+-#define HRCWL_CE_TO_PLL_1X16_ 0x00000000
+-#define HRCWL_CE_TO_PLL_1X2 0x00000002
+-#define HRCWL_CE_TO_PLL_1X3 0x00000003
+-#define HRCWL_CE_TO_PLL_1X4 0x00000004
+-#define HRCWL_CE_TO_PLL_1X5 0x00000005
+-#define HRCWL_CE_TO_PLL_1X6 0x00000006
+-#define HRCWL_CE_TO_PLL_1X7 0x00000007
+-#define HRCWL_CE_TO_PLL_1X8 0x00000008
+-#define HRCWL_CE_TO_PLL_1X9 0x00000009
+-#define HRCWL_CE_TO_PLL_1X10 0x0000000A
+-#define HRCWL_CE_TO_PLL_1X11 0x0000000B
+-#define HRCWL_CE_TO_PLL_1X12 0x0000000C
+-#define HRCWL_CE_TO_PLL_1X13 0x0000000D
+-#define HRCWL_CE_TO_PLL_1X14 0x0000000E
+-#define HRCWL_CE_TO_PLL_1X15 0x0000000F
+-#define HRCWL_CE_TO_PLL_1X16 0x00000010
+-#define HRCWL_CE_TO_PLL_1X17 0x00000011
+-#define HRCWL_CE_TO_PLL_1X18 0x00000012
+-#define HRCWL_CE_TO_PLL_1X19 0x00000013
+-#define HRCWL_CE_TO_PLL_1X20 0x00000014
+-#define HRCWL_CE_TO_PLL_1X21 0x00000015
+-#define HRCWL_CE_TO_PLL_1X22 0x00000016
+-#define HRCWL_CE_TO_PLL_1X23 0x00000017
+-#define HRCWL_CE_TO_PLL_1X24 0x00000018
+-#define HRCWL_CE_TO_PLL_1X25 0x00000019
+-#define HRCWL_CE_TO_PLL_1X26 0x0000001A
+-#define HRCWL_CE_TO_PLL_1X27 0x0000001B
+-#define HRCWL_CE_TO_PLL_1X28 0x0000001C
+-#define HRCWL_CE_TO_PLL_1X29 0x0000001D
+-#define HRCWL_CE_TO_PLL_1X30 0x0000001E
+-#define HRCWL_CE_TO_PLL_1X31 0x0000001F
++/* RSR - Reset Status Register
++ */
++#define RSR_RSTSRC 0xE0000000 /* Reset source */
++#define RSR_RSTSRC_SHIFT 29
++#define RSR_BSF 0x00010000 /* Boot seq. fail */
++#define RSR_BSF_SHIFT 16
++#define RSR_SWSR 0x00002000 /* software soft reset */
++#define RSR_SWSR_SHIFT 13
++#define RSR_SWHR 0x00001000 /* software hard reset */
++#define RSR_SWHR_SHIFT 12
++#define RSR_JHRS 0x00000200 /* jtag hreset */
++#define RSR_JHRS_SHIFT 9
++#define RSR_JSRS 0x00000100 /* jtag sreset status */
++#define RSR_JSRS_SHIFT 8
++#define RSR_CSHR 0x00000010 /* checkstop reset status */
++#define RSR_CSHR_SHIFT 4
++#define RSR_SWRS 0x00000008 /* software watchdog reset status */
++#define RSR_SWRS_SHIFT 3
++#define RSR_BMRS 0x00000004 /* bus monitop reset status */
++#define RSR_BMRS_SHIFT 2
++#define RSR_SRS 0x00000002 /* soft reset status */
++#define RSR_SRS_SHIFT 1
++#define RSR_HRS 0x00000001 /* hard reset status */
++#define RSR_HRS_SHIFT 0
++#define RSR_RES ~(RSR_RSTSRC | RSR_BSF | RSR_SWSR | RSR_SWHR |\
++ RSR_JHRS | RSR_JSRS | RSR_CSHR | RSR_SWRS |\
++ RSR_BMRS | RSR_SRS | RSR_HRS)
++/* RMR - Reset Mode Register
++ */
++#define RMR_CSRE 0x00000001 /* checkstop reset enable */
++#define RMR_CSRE_SHIFT 0
++#define RMR_RES ~(RMR_CSRE)
++
++/* RCR - Reset Control Register
++ */
++#define RCR_SWHR 0x00000002 /* software hard reset */
++#define RCR_SWSR 0x00000001 /* software soft reset */
++#define RCR_RES ~(RCR_SWHR | RCR_SWSR)
++
++/* RCER - Reset Control Enable Register
++ */
++#define RCER_CRE 0x00000001 /* software hard reset */
++#define RCER_RES ~(RCER_CRE)
++
++/* SPMR - System PLL Mode Register
++ */
++#define SPMR_LBIUCM 0x80000000
++#define SPMR_DDRCM 0x40000000
++#define SPMR_SPMF 0x0F000000
++#define SPMR_CKID 0x00800000
++#define SPMR_CKID_SHIFT 23
++#define SPMR_COREPLL 0x007F0000
++#define SPMR_CEVCOD 0x000000C0
++#define SPMR_CEPDF 0x00000020
++#define SPMR_CEPMF 0x0000001F
++
++/* OCCR - Output Clock Control Register
++ */
++#define OCCR_PCICOE0 0x80000000
++#define OCCR_PCICOE1 0x40000000
++#define OCCR_PCICOE2 0x20000000
++#define OCCR_PCICOE3 0x10000000
++#define OCCR_PCICOE4 0x08000000
++#define OCCR_PCICOE5 0x04000000
++#define OCCR_PCICOE6 0x02000000
++#define OCCR_PCICOE7 0x01000000
++#define OCCR_PCICD0 0x00800000
++#define OCCR_PCICD1 0x00400000
++#define OCCR_PCICD2 0x00200000
++#define OCCR_PCICD3 0x00100000
++#define OCCR_PCICD4 0x00080000
++#define OCCR_PCICD5 0x00040000
++#define OCCR_PCICD6 0x00020000
++#define OCCR_PCICD7 0x00010000
++#define OCCR_PCI1CR 0x00000002
++#define OCCR_PCI2CR 0x00000001
++#define OCCR_PCICR OCCR_PCI1CR
++
++/* SCCR - System Clock Control Register
++ */
++#define SCCR_ENCCM 0x03000000
++#define SCCR_ENCCM_SHIFT 24
++#define SCCR_ENCCM_0 0x00000000
++#define SCCR_ENCCM_1 0x01000000
++#define SCCR_ENCCM_2 0x02000000
++#define SCCR_ENCCM_3 0x03000000
++
++#define SCCR_PCICM 0x00010000
++#define SCCR_PCICM_SHIFT 16
++
++/* SCCR bits - MPC8349 specific */
++#define SCCR_TSEC1CM 0xc0000000
++#define SCCR_TSEC1CM_SHIFT 30
++#define SCCR_TSEC1CM_0 0x00000000
++#define SCCR_TSEC1CM_1 0x40000000
++#define SCCR_TSEC1CM_2 0x80000000
++#define SCCR_TSEC1CM_3 0xC0000000
++
++#define SCCR_TSEC2CM 0x30000000
++#define SCCR_TSEC2CM_SHIFT 28
++#define SCCR_TSEC2CM_0 0x00000000
++#define SCCR_TSEC2CM_1 0x10000000
++#define SCCR_TSEC2CM_2 0x20000000
++#define SCCR_TSEC2CM_3 0x30000000
++
++#define SCCR_USBMPHCM 0x00c00000
++#define SCCR_USBMPHCM_SHIFT 22
++#define SCCR_USBDRCM 0x00300000
++#define SCCR_USBDRCM_SHIFT 20
++
++#define SCCR_USBCM_0 0x00000000
++#define SCCR_USBCM_1 0x00500000
++#define SCCR_USBCM_2 0x00A00000
++#define SCCR_USBCM_3 0x00F00000
++
++#define SCCR_CLK_MASK ( SCCR_TSEC1CM_3 \
++ | SCCR_TSEC2CM_3 \
++ | SCCR_ENCCM_3 \
++ | SCCR_USBCM_3 )
++
++#define SCCR_DEFAULT 0xFFFFFFFF
++
++/* CSn_BDNS - Chip Select memory Bounds Register
++ */
++#define CSBNDS_SA 0x00FF0000
++#define CSBNDS_SA_SHIFT 8
++#define CSBNDS_EA 0x000000FF
++#define CSBNDS_EA_SHIFT 24
++
++/* CSn_CONFIG - Chip Select Configuration Register
++ */
++#define CSCONFIG_EN 0x80000000
++#define CSCONFIG_AP 0x00800000
++#define CSCONFIG_ROW_BIT 0x00000700
++#define CSCONFIG_ROW_BIT_12 0x00000000
++#define CSCONFIG_ROW_BIT_13 0x00000100
++#define CSCONFIG_ROW_BIT_14 0x00000200
++#define CSCONFIG_COL_BIT 0x00000007
++#define CSCONFIG_COL_BIT_8 0x00000000
++#define CSCONFIG_COL_BIT_9 0x00000001
++#define CSCONFIG_COL_BIT_10 0x00000002
++#define CSCONFIG_COL_BIT_11 0x00000003
++
++/* TIMING_CFG_1 - DDR SDRAM Timing Configuration 1
++ */
++#define TIMING_CFG1_PRETOACT 0x70000000
++#define TIMING_CFG1_PRETOACT_SHIFT 28
++#define TIMING_CFG1_ACTTOPRE 0x0F000000
++#define TIMING_CFG1_ACTTOPRE_SHIFT 24
++#define TIMING_CFG1_ACTTORW 0x00700000
++#define TIMING_CFG1_ACTTORW_SHIFT 20
++#define TIMING_CFG1_CASLAT 0x00070000
++#define TIMING_CFG1_CASLAT_SHIFT 16
++#define TIMING_CFG1_REFREC 0x0000F000
++#define TIMING_CFG1_REFREC_SHIFT 12
++#define TIMING_CFG1_WRREC 0x00000700
++#define TIMING_CFG1_WRREC_SHIFT 8
++#define TIMING_CFG1_ACTTOACT 0x00000070
++#define TIMING_CFG1_ACTTOACT_SHIFT 4
++#define TIMING_CFG1_WRTORD 0x00000007
++#define TIMING_CFG1_WRTORD_SHIFT 0
++#define TIMING_CFG1_CASLAT_20 0x00030000 /* CAS latency = 2.0 */
++#define TIMING_CFG1_CASLAT_25 0x00040000 /* CAS latency = 2.5 */
++
++/* TIMING_CFG_2 - DDR SDRAM Timing Configuration 2
++ */
++#define TIMING_CFG2_CPO 0x0F000000
++#define TIMING_CFG2_CPO_SHIFT 24
++#define TIMING_CFG2_ACSM 0x00080000
++#define TIMING_CFG2_WR_DATA_DELAY 0x00001C00
++#define TIMING_CFG2_WR_DATA_DELAY_SHIFT 10
++#define TIMING_CFG2_CPO_DEF 0x00000000 /* default (= CASLAT + 1) */
++
++/* DDR_SDRAM_CFG - DDR SDRAM Control Configuration
++ */
++#define SDRAM_CFG_MEM_EN 0x80000000
++#define SDRAM_CFG_SREN 0x40000000
++#define SDRAM_CFG_ECC_EN 0x20000000
++#define SDRAM_CFG_RD_EN 0x10000000
++#define SDRAM_CFG_SDRAM_TYPE 0x03000000
++#define SDRAM_CFG_SDRAM_TYPE_SHIFT 24
++#define SDRAM_CFG_DYN_PWR 0x00200000
++#define SDRAM_CFG_32_BE 0x00080000
++#define SDRAM_CFG_8_BE 0x00040000
++#define SDRAM_CFG_NCAP 0x00020000
++#define SDRAM_CFG_2T_EN 0x00008000
++#define SDRAM_CFG_SDRAM_TYPE_DDR 0x02000000
++
++/* DDR_SDRAM_MODE - DDR SDRAM Mode Register
++ */
++#define SDRAM_MODE_ESD 0xFFFF0000
++#define SDRAM_MODE_ESD_SHIFT 16
++#define SDRAM_MODE_SD 0x0000FFFF
++#define SDRAM_MODE_SD_SHIFT 0
++#define DDR_MODE_EXT_MODEREG 0x4000 /* select extended mode reg */
++#define DDR_MODE_EXT_OPMODE 0x3FF8 /* operating mode, mask */
++#define DDR_MODE_EXT_OP_NORMAL 0x0000 /* normal operation */
++#define DDR_MODE_QFC 0x0004 /* QFC / compatibility, mask */
++#define DDR_MODE_QFC_COMP 0x0000 /* compatible to older SDRAMs */
++#define DDR_MODE_WEAK 0x0002 /* weak drivers */
++#define DDR_MODE_DLL_DIS 0x0001 /* disable DLL */
++#define DDR_MODE_CASLAT 0x0070 /* CAS latency, mask */
++#define DDR_MODE_CASLAT_15 0x0010 /* CAS latency 1.5 */
++#define DDR_MODE_CASLAT_20 0x0020 /* CAS latency 2 */
++#define DDR_MODE_CASLAT_25 0x0060 /* CAS latency 2.5 */
++#define DDR_MODE_CASLAT_30 0x0030 /* CAS latency 3 */
++#define DDR_MODE_BTYPE_SEQ 0x0000 /* sequential burst */
++#define DDR_MODE_BTYPE_ILVD 0x0008 /* interleaved burst */
++#define DDR_MODE_BLEN_2 0x0001 /* burst length 2 */
++#define DDR_MODE_BLEN_4 0x0002 /* burst length 4 */
++#define DDR_REFINT_166MHZ_7US 1302 /* exact value for 7.8125us */
++#define DDR_BSTOPRE 256 /* use 256 cycles as a starting point */
++#define DDR_MODE_MODEREG 0x0000 /* select mode register */
++
++/* DDR_SDRAM_INTERVAL - DDR SDRAM Interval Register
++ */
++#define SDRAM_INTERVAL_REFINT 0x3FFF0000
++#define SDRAM_INTERVAL_REFINT_SHIFT 16
++#define SDRAM_INTERVAL_BSTOPRE 0x00003FFF
++#define SDRAM_INTERVAL_BSTOPRE_SHIFT 0
++
++/* DDR_SDRAM_CLK_CNTL - DDR SDRAM Clock Control Register
++ */
++#define DDR_SDRAM_CLK_CNTL_SS_EN 0x80000000
++#define DDR_SDRAM_CLK_CNTL_CLK_ADJUST_025 0x01000000
++#define DDR_SDRAM_CLK_CNTL_CLK_ADJUST_05 0x02000000
++#define DDR_SDRAM_CLK_CNTL_CLK_ADJUST_075 0x03000000
++#define DDR_SDRAM_CLK_CNTL_CLK_ADJUST_1 0x04000000
++
++/* ECC_ERR_INJECT - Memory data path error injection mask ECC
++ */
++#define ECC_ERR_INJECT_EMB (0x80000000>>22) /* ECC Mirror Byte */
++#define ECC_ERR_INJECT_EIEN (0x80000000>>23) /* Error Injection Enable */
++#define ECC_ERR_INJECT_EEIM (0xff000000>>24) /* ECC Erroe Injection Enable */
++#define ECC_ERR_INJECT_EEIM_SHIFT 0
++
++/* CAPTURE_ECC - Memory data path read capture ECC
++ */
++#define CAPTURE_ECC_ECE (0xff000000>>24)
++#define CAPTURE_ECC_ECE_SHIFT 0
++
++/* ERR_DETECT - Memory error detect
++ */
++#define ECC_ERROR_DETECT_MME (0x80000000>>0) /* Multiple Memory Errors */
++#define ECC_ERROR_DETECT_MBE (0x80000000>>28) /* Multiple-Bit Error */
++#define ECC_ERROR_DETECT_SBE (0x80000000>>29) /* Single-Bit ECC Error Pickup */
++#define ECC_ERROR_DETECT_MSE (0x80000000>>31) /* Memory Select Error */
++
++/* ERR_DISABLE - Memory error disable
++ */
++#define ECC_ERROR_DISABLE_MBED (0x80000000>>28) /* Multiple-Bit ECC Error Disable */
++#define ECC_ERROR_DISABLE_SBED (0x80000000>>29) /* Sinle-Bit ECC Error disable */
++#define ECC_ERROR_DISABLE_MSED (0x80000000>>31) /* Memory Select Error Disable */
++#define ECC_ERROR_ENABLE ~(ECC_ERROR_DISABLE_MSED | ECC_ERROR_DISABLE_SBED |\
++ ECC_ERROR_DISABLE_MBED)
++/* ERR_INT_EN - Memory error interrupt enable
++ */
++#define ECC_ERR_INT_EN_MBEE (0x80000000>>28) /* Multiple-Bit ECC Error Interrupt Enable */
++#define ECC_ERR_INT_EN_SBEE (0x80000000>>29) /* Single-Bit ECC Error Interrupt Enable */
++#define ECC_ERR_INT_EN_MSEE (0x80000000>>31) /* Memory Select Error Interrupt Enable */
++#define ECC_ERR_INT_DISABLE ~(ECC_ERR_INT_EN_MBEE | ECC_ERR_INT_EN_SBEE |\
++ ECC_ERR_INT_EN_MSEE)
++/* CAPTURE_ATTRIBUTES - Memory error attributes capture
++ */
++#define ECC_CAPT_ATTR_BNUM (0xe0000000>>1) /* Data Beat Num */
++#define ECC_CAPT_ATTR_BNUM_SHIFT 28
++#define ECC_CAPT_ATTR_TSIZ (0xc0000000>>6) /* Transaction Size */
++#define ECC_CAPT_ATTR_TSIZ_FOUR_DW 0
++#define ECC_CAPT_ATTR_TSIZ_ONE_DW 1
++#define ECC_CAPT_ATTR_TSIZ_TWO_DW 2
++#define ECC_CAPT_ATTR_TSIZ_THREE_DW 3
++#define ECC_CAPT_ATTR_TSIZ_SHIFT 24
++#define ECC_CAPT_ATTR_TSRC (0xf8000000>>11) /* Transaction Source */
++#define ECC_CAPT_ATTR_TSRC_E300_CORE_DT 0x0
++#define ECC_CAPT_ATTR_TSRC_E300_CORE_IF 0x2
++#define ECC_CAPT_ATTR_TSRC_TSEC1 0x4
++#define ECC_CAPT_ATTR_TSRC_TSEC2 0x5
++#define ECC_CAPT_ATTR_TSRC_USB (0x06|0x07)
++#define ECC_CAPT_ATTR_TSRC_ENCRYPT 0x8
++#define ECC_CAPT_ATTR_TSRC_I2C 0x9
++#define ECC_CAPT_ATTR_TSRC_JTAG 0xA
++#define ECC_CAPT_ATTR_TSRC_PCI1 0xD
++#define ECC_CAPT_ATTR_TSRC_PCI2 0xE
++#define ECC_CAPT_ATTR_TSRC_DMA 0xF
++#define ECC_CAPT_ATTR_TSRC_SHIFT 16
++#define ECC_CAPT_ATTR_TTYP (0xe0000000>>18) /* Transaction Type */
++#define ECC_CAPT_ATTR_TTYP_WRITE 0x1
++#define ECC_CAPT_ATTR_TTYP_READ 0x2
++#define ECC_CAPT_ATTR_TTYP_R_M_W 0x3
++#define ECC_CAPT_ATTR_TTYP_SHIFT 12
++#define ECC_CAPT_ATTR_VLD (0x80000000>>31) /* Valid */
++
++/* ERR_SBE - Single bit ECC memory error management
++ */
++#define ECC_ERROR_MAN_SBET (0xff000000>>8) /* Single-Bit Error Threshold 0..255 */
++#define ECC_ERROR_MAN_SBET_SHIFT 16
++#define ECC_ERROR_MAN_SBEC (0xff000000>>24) /* Single Bit Error Counter 0..255 */
++#define ECC_ERROR_MAN_SBEC_SHIFT 0
++
++/* BR - Base Registers
++ */
++#define BR0 0x5000 /* Register offset to immr */
++#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_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_SDRAM 0x00000060 /* SDRAM */
++#define BR_MS_UPMA 0x00000080 /* UPMA */
++#define BR_MS_UPMB 0x000000A0 /* UPMB */
++#define BR_MS_UPMC 0x000000C0 /* UPMC */
++#if defined(CONFIG_MPC8360)
++#define BR_ATOM 0x0000000C
++#define BR_ATOM_SHIFT 2
+ #endif
++#define BR_V 0x00000001
++#define BR_V_SHIFT 0
+
+-/*
+- * LCRR - Clock Ratio Register (10.3.1.16)
+- */
+-#define LCRR_DBYP 0x80000000
+-#define LCRR_DBYP_SHIFT 31
+-#define LCRR_BUFCMDC 0x30000000
+-#define LCRR_BUFCMDC_1 0x10000000
+-#define LCRR_BUFCMDC_2 0x20000000
+-#define LCRR_BUFCMDC_3 0x30000000
+-#define LCRR_BUFCMDC_4 0x00000000
+-#define LCRR_BUFCMDC_SHIFT 28
+-#define LCRR_ECL 0x03000000
+-#define LCRR_ECL_4 0x00000000
+-#define LCRR_ECL_5 0x01000000
+-#define LCRR_ECL_6 0x02000000
+-#define LCRR_ECL_7 0x03000000
+-#define LCRR_ECL_SHIFT 24
+-#define LCRR_EADC 0x00030000
+-#define LCRR_EADC_1 0x00010000
+-#define LCRR_EADC_2 0x00020000
+-#define LCRR_EADC_3 0x00030000
+-#define LCRR_EADC_4 0x00000000
+-#define LCRR_EADC_SHIFT 16
+-#define LCRR_CLKDIV 0x0000000F
+-#define LCRR_CLKDIV_2 0x00000002
+-#define LCRR_CLKDIV_4 0x00000004
+-#define LCRR_CLKDIV_8 0x00000008
+-#define LCRR_CLKDIV_SHIFT 0
++#if defined(CONFIG_MPC8349)
++#define BR_RES ~(BR_BA | BR_PS | BR_DECC | BR_WP | BR_MSEL | BR_V)
++#elif defined(CONFIG_MPC8360)
++#define BR_RES ~(BR_BA | BR_PS | BR_DECC | BR_WP | BR_MSEL | BR_ATOM | BR_V)
++#endif
+
+-/*
+- * SCCR-System Clock Control Register
+- */
+-#define SCCR_TSEC1CM_0 0x00000000
+-#define SCCR_TSEC1CM_1 0x40000000
+-#define SCCR_TSEC1CM_2 0x80000000
+-#define SCCR_TSEC1CM_3 0xC0000000
+-#define SCCR_TSEC2CM_0 0x00000000
+-#define SCCR_TSEC2CM_1 0x10000000
+-#define SCCR_TSEC2CM_2 0x20000000
+-#define SCCR_TSEC2CM_3 0x30000000
+-#define SCCR_ENCCM_0 0x00000000
+-#define SCCR_ENCCM_1 0x01000000
+-#define SCCR_ENCCM_2 0x02000000
+-#define SCCR_ENCCM_3 0x03000000
+-#define SCCR_USBCM_0 0x00000000
+-#define SCCR_USBCM_1 0x00500000
+-#define SCCR_USBCM_2 0x00A00000
+-#define SCCR_USBCM_3 0x00F00000
+-
+-#define SCCR_CLK_MASK ( SCCR_TSEC1CM_3 \
+- | SCCR_TSEC2CM_3 \
+- | SCCR_ENCCM_3 \
+- | SCCR_USBCM_3 )
+-
+-#define SCCR_DEFAULT 0xFFFFFFFF
++/* OR - Option Registers
++ */
++#define OR0 0x5004 /* Register offset to immr */
++#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
++
++/* LBCR - Local Bus Configuration Register
++ */
++#define LBCR_LDIS 0x80000000
++#define LBCR_LDIS_SHIFT 31
++#define LBCR_BCTLC 0x00C00000
++#define LBCR_BCTLC_SHIFT 22
++#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
++
++/* LCRR - Clock Ratio Register
++ */
++#define LCRR_DBYP 0x80000000
++#define LCRR_DBYP_SHIFT 31
++#define LCRR_BUFCMDC 0x30000000
++#define LCRR_BUFCMDC_SHIFT 28
++#define LCRR_BUFCMDC_1 0x10000000
++#define LCRR_BUFCMDC_2 0x20000000
++#define LCRR_BUFCMDC_3 0x30000000
++#define LCRR_BUFCMDC_4 0x00000000
++#define LCRR_ECL 0x03000000
++#define LCRR_ECL_SHIFT 24
++#define LCRR_ECL_4 0x00000000
++#define LCRR_ECL_5 0x01000000
++#define LCRR_ECL_6 0x02000000
++#define LCRR_ECL_7 0x03000000
++#define LCRR_EADC 0x00030000
++#define LCRR_EADC_SHIFT 16
++#define LCRR_EADC_1 0x00010000
++#define LCRR_EADC_2 0x00020000
++#define LCRR_EADC_3 0x00030000
++#define LCRR_EADC_4 0x00000000
++#define LCRR_CLKDIV 0x0000000F
++#define LCRR_CLKDIV_SHIFT 0
++#define LCRR_CLKDIV_2 0x00000002
++#define LCRR_CLKDIV_4 0x00000004
++#define LCRR_CLKDIV_8 0x00000008
++
++/* DMAMR - DMA Mode Register
++ */
++#define DMA_CHANNEL_START 0x00000001 /* Bit - DMAMRn CS */
++#define DMA_CHANNEL_TRANSFER_MODE_DIRECT 0x00000004 /* Bit - DMAMRn CTM */
++#define DMA_CHANNEL_SOURCE_ADRESSS_HOLD_EN 0x00001000 /* Bit - DMAMRn SAHE */
++#define DMA_CHANNEL_SOURCE_ADDRESS_HOLD_1B 0x00000000 /* 2Bit- DMAMRn SAHTS 1byte */
++#define DMA_CHANNEL_SOURCE_ADDRESS_HOLD_2B 0x00004000 /* 2Bit- DMAMRn SAHTS 2bytes */
++#define DMA_CHANNEL_SOURCE_ADDRESS_HOLD_4B 0x00008000 /* 2Bit- DMAMRn SAHTS 4bytes */
++#define DMA_CHANNEL_SOURCE_ADDRESS_HOLD_8B 0x0000c000 /* 2Bit- DMAMRn SAHTS 8bytes */
++#define DMA_CHANNEL_SNOOP 0x00010000 /* Bit - DMAMRn DMSEN */
++
++/* DMASR - DMA Status Register
++ */
++#define DMA_CHANNEL_BUSY 0x00000004 /* Bit - DMASRn CB */
++#define DMA_CHANNEL_TRANSFER_ERROR 0x00000080 /* Bit - DMASRn TE */
++
++/* CONFIG_ADDRESS - PCI Config Address Register
++ */
++#define PCI_CONFIG_ADDRESS_EN 0x80000000
++#define PCI_CONFIG_ADDRESS_BN_SHIFT 16
++#define PCI_CONFIG_ADDRESS_BN_MASK 0x00ff0000
++#define PCI_CONFIG_ADDRESS_DN_SHIFT 11
++#define PCI_CONFIG_ADDRESS_DN_MASK 0x0000f800
++#define PCI_CONFIG_ADDRESS_FN_SHIFT 8
++#define PCI_CONFIG_ADDRESS_FN_MASK 0x00000700
++#define PCI_CONFIG_ADDRESS_RN_SHIFT 0
++#define PCI_CONFIG_ADDRESS_RN_MASK 0x000000fc
++
++/* POTAR - PCI Outbound Translation Address Register
++ */
++#define POTAR_TA_MASK 0x000fffff
++
++/* POBAR - PCI Outbound Base Address Register
++ */
++#define POBAR_BA_MASK 0x000fffff
++
++/* POCMR - PCI Outbound Comparision Mask Register
++ */
++#define POCMR_EN 0x80000000
++#define POCMR_IO 0x40000000 /* 0-memory space 1-I/O space */
++#define POCMR_SE 0x20000000 /* streaming enable */
++#define POCMR_DST 0x10000000 /* 0-PCI1 1-PCI2 */
++#define POCMR_CM_MASK 0x000fffff
++#define POCMR_CM_4G 0x00000000
++#define POCMR_CM_2G 0x00080000
++#define POCMR_CM_1G 0x000C0000
++#define POCMR_CM_512M 0x000E0000
++#define POCMR_CM_256M 0x000F0000
++#define POCMR_CM_128M 0x000F8000
++#define POCMR_CM_64M 0x000FC000
++#define POCMR_CM_32M 0x000FE000
++#define POCMR_CM_16M 0x000FF000
++#define POCMR_CM_8M 0x000FF800
++#define POCMR_CM_4M 0x000FFC00
++#define POCMR_CM_2M 0x000FFE00
++#define POCMR_CM_1M 0x000FFF00
++#define POCMR_CM_512K 0x000FFF80
++#define POCMR_CM_256K 0x000FFFC0
++#define POCMR_CM_128K 0x000FFFE0
++#define POCMR_CM_64K 0x000FFFF0
++#define POCMR_CM_32K 0x000FFFF8
++#define POCMR_CM_16K 0x000FFFFC
++#define POCMR_CM_8K 0x000FFFFE
++#define POCMR_CM_4K 0x000FFFFF
++
++/* PITAR - PCI Inbound Translation Address Register
++ */
++#define PITAR_TA_MASK 0x000fffff
++
++/* PIBAR - PCI Inbound Base/Extended Address Register
++ */
++#define PIBAR_MASK 0xffffffff
++#define PIEBAR_EBA_MASK 0x000fffff
++
++/* PIWAR - PCI Inbound Windows Attributes Register
++ */
++#define PIWAR_EN 0x80000000
++#define PIWAR_PF 0x20000000
++#define PIWAR_RTT_MASK 0x000f0000
++#define PIWAR_RTT_NO_SNOOP 0x00040000
++#define PIWAR_RTT_SNOOP 0x00050000
++#define PIWAR_WTT_MASK 0x0000f000
++#define PIWAR_WTT_NO_SNOOP 0x00004000
++#define PIWAR_WTT_SNOOP 0x00005000
++#define PIWAR_IWS_MASK 0x0000003F
++#define PIWAR_IWS_4K 0x0000000B
++#define PIWAR_IWS_8K 0x0000000C
++#define PIWAR_IWS_16K 0x0000000D
++#define PIWAR_IWS_32K 0x0000000E
++#define PIWAR_IWS_64K 0x0000000F
++#define PIWAR_IWS_128K 0x00000010
++#define PIWAR_IWS_256K 0x00000011
++#define PIWAR_IWS_512K 0x00000012
++#define PIWAR_IWS_1M 0x00000013
++#define PIWAR_IWS_2M 0x00000014
++#define PIWAR_IWS_4M 0x00000015
++#define PIWAR_IWS_8M 0x00000016
++#define PIWAR_IWS_16M 0x00000017
++#define PIWAR_IWS_32M 0x00000018
++#define PIWAR_IWS_64M 0x00000019
++#define PIWAR_IWS_128M 0x0000001A
++#define PIWAR_IWS_256M 0x0000001B
++#define PIWAR_IWS_512M 0x0000001C
++#define PIWAR_IWS_1G 0x0000001D
++#define PIWAR_IWS_2G 0x0000001E
+
+ #endif /* __MPC83XX_H__ */
diff --git a/packages/uboot/u-boot_1.1.6.bb b/packages/uboot/u-boot_1.1.6.bb
index bec1a619e4..e003c69d7b 100644
--- a/packages/uboot/u-boot_1.1.6.bb
+++ b/packages/uboot/u-boot_1.1.6.bb
@@ -1,12 +1,25 @@
require u-boot.inc
-PR = "r2"
+PR = "r3"
SRC_URI = "ftp://ftp.denx.de/pub/u-boot/u-boot-1.1.6.tar.bz2 \
- file://devkit-idp.patch;patch=1"
+ file://devkit-idp.patch;patch=1 \
+"
SRC_URI_append_sarge-at91 = " file://sarge-uboot.patch;patch=1"
+SRC_URI_append_mpc8323e-rdb = " file://u-boot-1.1.6-fsl-1-mpc83xx-20061206.patch;patch=1 \
+ file://u-boot-1.1.6-fsl-1-Fix-the-UEC-driver-bug-of-QE.patch;patch=1 \
+ file://u-boot-1.1.6-fsl-1-streamline-the-83xx-immr-head-file.patch;patch=1 \
+ file://u-boot-1.1.6-fsl-1-Add-support-for-the-MPC832XEMDS-board.patch;patch=1 \
+ file://u-boot-1.1.6-fsl-1-Add-the-MPC832XEMDS-board-readme.patch;patch=1 \
+ file://u-boot-1.1.6-fsl-1-Added-MPC8323E-RDB-board-support-2.patch;patch=1 \
+ file://u-boot-1.1.6-fsl-1-UEC-remove-udelay.patch;patch=1 \
+ file://u-boot-1.1.6-83xx-optimizations.patch;patch=1 \
+"
+
+
+
PACKAGE_ARCH = "${MACHINE_ARCH}"
UBOOT_MACHINE_sarge-at91 = "sarge_config"
diff --git a/packages/uboot/u-boot_1.3.0.bb b/packages/uboot/u-boot_1.3.0.bb
new file mode 100644
index 0000000000..2886ddecc8
--- /dev/null
+++ b/packages/uboot/u-boot_1.3.0.bb
@@ -0,0 +1,7 @@
+require u-boot.inc
+
+DEFAULT_PREFERENCE = "-1"
+
+SRC_URI = "ftp://ftp.denx.de/pub/u-boot/u-boot-${PV}.tar.bz2"
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
diff --git a/packages/uboot/u-boot_git.bb b/packages/uboot/u-boot_git.bb
index 55f56d841f..60ab0ab3f6 100644
--- a/packages/uboot/u-boot_git.bb
+++ b/packages/uboot/u-boot_git.bb
@@ -1,15 +1,10 @@
require u-boot.inc
PR="r1"
DEFAULT_PREFERENCE = "-1"
-DEFAULT_PREFERENCE_mpc8313e-rdb = "1"
-DEFAULT_PREFERENCE_mpc8323e-rdb = "1"
SRC_URI = "git://www.denx.de/git/u-boot.git;protocol=git "
SRC_URI_sequoia = "git://www.denx.de/git/u-boot.git;protocol=git;tag=cf3b41e0c1111dbb865b6e34e9f3c3d3145a6093 "
-SRC_URI_mpc8313e-rdb = "git://www.denx.de/git/u-boot.git;protocol=git;tag=c5441f61a3d8b7034f19fc1361183e936198e6dbb "
S = "${WORKDIR}/git"
PACKAGE_ARCH = "${MACHINE_ARCH}"
-
-#inherit base
diff --git a/packages/uboot/uboot-openmoko_svn.bb b/packages/uboot/uboot-openmoko_svn.bb
index a13b3df461..36ec1e130e 100644
--- a/packages/uboot/uboot-openmoko_svn.bb
+++ b/packages/uboot/uboot-openmoko_svn.bb
@@ -4,8 +4,9 @@ LICENSE = "GPL"
SECTION = "bootloader"
PRIORITY = "optional"
PROVIDES = "virtual/bootloader"
-PV = "1.2.0+git${SRCDATE}+svnr${SRCREV}"
-PR = "r2"
+LOCALVERSION = "+git${SRCDATE}+svnr${SRCREV}"
+PV = "1.3.0${LOCALVERSION}"
+PR = "r0"
SRCREV_FORMAT = "patches"
@@ -19,6 +20,7 @@ SRC_URI = "\
file://uboot-eabi-fix-HACK.patch \
file://uboot-20070311-tools_makefile_ln_sf.patch;patch=1 \
file://makefile-no-dirafter.patch;patch=1 \
+ file://glamo-ram-init.patch;patch=1 \
"
S = "${WORKDIR}/git"
diff --git a/packages/uclibc/uclibc-0.9.29/qemux86/.mtn2git_empty b/packages/uclibc/uclibc-0.9.29/qemux86/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/uclibc/uclibc-0.9.29/qemux86/.mtn2git_empty
diff --git a/packages/uclibc/uclibc-0.9.29/qemux86/uClibc.machine b/packages/uclibc/uclibc-0.9.29/qemux86/uClibc.machine
new file mode 100644
index 0000000000..44fec169c8
--- /dev/null
+++ b/packages/uclibc/uclibc-0.9.29/qemux86/uClibc.machine
@@ -0,0 +1,68 @@
+#
+# Automatically generated make config: don't edit
+# Fri Nov 23 15:49:33 2007
+#
+# TARGET_alpha is not set
+# TARGET_arm is not set
+# TARGET_bfin is not set
+# TARGET_cris is not set
+# TARGET_e1 is not set
+# TARGET_frv is not set
+# TARGET_h8300 is not set
+# TARGET_hppa is not set
+TARGET_i386=y
+# TARGET_i960 is not set
+# TARGET_ia64 is not set
+# TARGET_m68k is not set
+# TARGET_microblaze is not set
+# TARGET_mips is not set
+# TARGET_nios is not set
+# TARGET_nios2 is not set
+# TARGET_powerpc is not set
+# TARGET_sh is not set
+# TARGET_sh64 is not set
+# TARGET_sparc is not set
+# TARGET_v850 is not set
+# TARGET_vax is not set
+# TARGET_x86_64 is not set
+
+#
+# Target Architecture Features and Options
+#
+TARGET_ARCH="i386"
+FORCE_OPTIONS_FOR_ARCH=y
+CONFIG_GENERIC_386=y
+# CONFIG_386 is not set
+# CONFIG_486 is not set
+# CONFIG_586 is not set
+# CONFIG_586MMX is not set
+# CONFIG_686 is not set
+# CONFIG_PENTIUMII is not set
+# CONFIG_PENTIUMIII is not set
+# CONFIG_PENTIUM4 is not set
+# CONFIG_K6 is not set
+# CONFIG_K7 is not set
+# CONFIG_ELAN is not set
+# CONFIG_CRUSOE is not set
+# CONFIG_WINCHIPC6 is not set
+# CONFIG_WINCHIP2 is not set
+# CONFIG_CYRIXIII is not set
+# CONFIG_NEHEMIAH is not set
+TARGET_SUBARCH=""
+
+#
+# Using ELF file format
+#
+ARCH_LITTLE_ENDIAN=y
+
+#
+# Using Little Endian
+#
+ARCH_HAS_MMU=y
+ARCH_USE_MMU=y
+UCLIBC_HAS_FLOATS=y
+UCLIBC_HAS_FPU=y
+DO_C99_MATH=y
+KERNEL_HEADERS="/usr/include"
+HAVE_DOT_CONFIG=y
+
diff --git a/packages/uicmoc/uicmoc3-native_3.3.5.bb b/packages/uicmoc/uicmoc3-native_3.3.5.bb
index 35dada5b72..11b0c506dc 100644
--- a/packages/uicmoc/uicmoc3-native_3.3.5.bb
+++ b/packages/uicmoc/uicmoc3-native_3.3.5.bb
@@ -3,6 +3,7 @@ HOMEPAGE = "http://www.trolltech.com"
SECTION = "devel"
PRIORITY = "optional"
LICENSE = "GPL QPL"
+DEPENDS = "qmake-native"
PR = "r3"
SRC_URI = "ftp://ftp.trolltech.com/qt/source/qt-embedded-free-${PV}.tar.bz2 \
diff --git a/packages/uicmoc/uicmoc4-native_4.2.3.bb b/packages/uicmoc/uicmoc4-native_4.2.3.bb
deleted file mode 100644
index 27b5b5bb31..0000000000
--- a/packages/uicmoc/uicmoc4-native_4.2.3.bb
+++ /dev/null
@@ -1,43 +0,0 @@
-DESCRIPTION = "User-Interface-, Meta-Object-, and Resource Compiler for Qt/[X11|Mac|Embedded] version 4.x"
-DEPENDS = "libx11-native libxext-native"
-SECTION = "libs"
-PRIORITY = "optional"
-LICENSE = "GPL QPL"
-PR = "r1"
-
-SRC_URI = "ftp://ftp.trolltech.com/qt/source/qt-x11-opensource-src-${PV}.tar.gz"
-
-S = "${WORKDIR}/qt-x11-opensource-src-${PV}"
-
-inherit native
-
-EXTRA_OECONF = "-qt-libjpeg -qt-gif -system-zlib \
- -no-nis -no-cups -no-exceptions \
- -no-accessibility -no-libjpeg \
- -no-nas-sound -no-sm \
- -no-xshape -no-xinerama \
- -no-xcursor -no-xrandr \
- -no-xrender -no-fontconfig \
- -no-tablet -no-xkb \
- -no-libpng \
- -verbose -release -fast -static "
-EXTRA_OEMAKE = " "
-
-do_configure() {
- echo yes | ./configure ${EXTRA_OECONF} || die "Configuring qt failed. EXTRA_OECONF was ${EXTRA_OECONF}"
-}
-
-do_compile() {
- unset CC CXX CFLAGS LFLAGS CXXFLAGS CPPFLAGS
- cd ${S}/src/tools/moc && oe_runmake CC="${CC}" CXX="${CXX}"
- cd ${S}/src/corelib && oe_runmake CC="${CC}" CXX="${CXX}"
- cd ${S}/src/xml && oe_runmake CC="${CC}" CXX="${CXX}"
- cd ${S}/src/tools/uic && oe_runmake CC="${CC}" CXX="${CXX}"
- cd ${S}/src/tools/rcc && oe_runmake CC="${CC}" CXX="${CXX}"
-}
-
-do_stage() {
- install -m 0755 bin/moc ${STAGING_BINDIR}/moc4
- install -m 0755 bin/uic ${STAGING_BINDIR}/uic4
- install -m 0755 bin/rcc ${STAGING_BINDIR}/rcc4
-}
diff --git a/packages/uicmoc/uicmoc4-native_4.3.0.bb b/packages/uicmoc/uicmoc4-native_4.3.0.bb
deleted file mode 100644
index bc5aba4102..0000000000
--- a/packages/uicmoc/uicmoc4-native_4.3.0.bb
+++ /dev/null
@@ -1,53 +0,0 @@
-DESCRIPTION = "User-Interface-, Meta-Object-, and Resource Compiler for Qt/[X11|Mac|Embedded] version 4.x"
-DEPENDS = "libx11-native libxext-native zlib-native"
-SECTION = "libs"
-PRIORITY = "optional"
-LICENSE = "GPL QPL"
-PR = "r3"
-
-SRC_URI = "ftp://ftp.trolltech.com/qt/source/qt-x11-opensource-src-${PV}.tar.gz"
-
-S = "${WORKDIR}/qt-x11-opensource-src-${PV}"
-
-inherit native
-
-EXTRA_OECONF = "-prefix ${STAGING_DIR_NATIVE}/qt4 \
- -qt-libjpeg -qt-gif -system-zlib \
- -no-nis -no-cups -no-exceptions \
- -no-accessibility -no-libjpeg \
- -no-nas-sound -no-sm \
- -no-xshape -no-xinerama \
- -no-xcursor -no-xrandr \
- -no-xrender -no-fontconfig \
- -no-tablet -no-xkb \
- -no-libpng \
- -verbose -release -fast -static \
- -qt3support "
-EXTRA_OEMAKE = " "
-
-do_configure() {
- echo yes | ./configure ${EXTRA_OECONF} || die "Configuring qt failed. EXTRA_OECONF was ${EXTRA_OECONF}"
-}
-
-do_compile() {
- unset CC CXX CFLAGS LFLAGS CXXFLAGS CPPFLAGS
- cd ${S}/src/tools/moc && oe_runmake CC="${CC}" CXX="${CXX}"
- cd ${S}/src/corelib && oe_runmake CC="${CC}" CXX="${CXX}"
- cd ${S}/src/sql && oe_runmake CC="${CC}" CXX="${CXX}"
- cd ${S}/src/qt3support && oe_runmake CC="${CC}" CXX="${CXX}"
- cd ${S}/src/xml && oe_runmake CC="${CC}" CXX="${CXX}"
- cd ${S}/src/tools/uic && oe_runmake CC="${CC}" CXX="${CXX}"
- cd ${S}/src/tools/rcc && oe_runmake CC="${CC}" CXX="${CXX}"
- cd ${S}/src/network && oe_runmake CC="${CC}" CXX="${CXX}"
- cd ${S}/src/gui && oe_runmake CC="${CC}" CXX="${CXX}"
- cd ${S}/src/tools/uic3 && oe_runmake CC="${CC}" CXX="${CXX}"
-}
-
-do_stage() {
- install -m 0755 bin/moc ${STAGING_BINDIR}/moc4
- install -m 0755 bin/uic ${STAGING_BINDIR}/uic4
- install -m 0755 bin/uic3 ${STAGING_BINDIR}/uic34
- install -m 0755 bin/rcc ${STAGING_BINDIR}/rcc4
- install -d ${STAGING_DIR_NATIVE}/qt4/
- install -m 0644 tools/porting/src/q3porting.xml ${STAGING_DIR_NATIVE}/qt4/
-}
diff --git a/packages/update-rc.d/files/.mtn2git_empty b/packages/update-rc.d/files/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/update-rc.d/files/.mtn2git_empty
diff --git a/packages/update-rc.d/files/add-verbose.patch b/packages/update-rc.d/files/add-verbose.patch
new file mode 100644
index 0000000000..0f068308f6
--- /dev/null
+++ b/packages/update-rc.d/files/add-verbose.patch
@@ -0,0 +1,47 @@
+--- update-rc.d/update-rc.d.org 2005-01-03 00:30:47.000000000 +0200
++++ update-rc.d/update-rc.d 2007-12-01 19:41:08.000000000 +0200
+@@ -19,6 +19,7 @@
+ notreally=0
+ force=0
+ dostart=0
++verbose=0
+
+ usage()
+ {
+@@ -28,6 +29,7 @@
+ update-rc.d [-n] [-r <root>] [-s] <basename> start|stop NN runlvl [runlvl] [...] .
+ -n: not really
+ -f: force
++ -v: verbose
+ -r: alternate root path (default is /)
+ -s: invoke start methods if appropriate to current runlevel
+ EOF
+@@ -69,7 +71,7 @@
+ lev=`echo $2 | cut -d/ -f1`
+ nn=`echo $2 | cut -d/ -f2`
+ fn="${etcd}${lev}.d/${startstop}${nn}${bn}"
+- echo " $fn -> ../init.d/$bn"
++ [ $verbose -eq 1 ] && echo " $fn -> ../init.d/$bn"
+ if [ $notreally -eq 0 ]; then
+ mkdir -p `dirname $fn`
+ ln -s ../init.d/$bn $fn
+@@ -89,7 +91,7 @@
+ exit 0
+ fi
+
+- echo " Adding system startup for $initd/$bn ..."
++ echo " Adding system startup for $initd/$bn."
+
+ for i in $startlinks; do
+ dolink S $i
+@@ -105,6 +107,10 @@
+ shift
+ continue
+ ;;
++ -v) verbose=1
++ shift
++ continue
++ ;;
+ -f) force=1
+ shift
+ continue
diff --git a/packages/update-rc.d/update-rc.d_0.7.bb b/packages/update-rc.d/update-rc.d_0.7.bb
index 8070197b82..dd370e6ff8 100644
--- a/packages/update-rc.d/update-rc.d_0.7.bb
+++ b/packages/update-rc.d/update-rc.d_0.7.bb
@@ -3,9 +3,10 @@ PRIORITY = "standard"
DESCRIPTION = "Manage symlinks in /etc/rcN.d"
LICENSE = "GPL"
S = "${WORKDIR}/update-rc.d"
-PR = "r0"
+PR = "r1"
-SRC_URI = "${HANDHELDS_CVS};module=apps/update-rc.d;tag=r0_7"
+SRC_URI = "${HANDHELDS_CVS};module=apps/update-rc.d;tag=r0_7 \
+ file://add-verbose.patch;patch=1"
PACKAGE_ARCH = "all"
diff --git a/packages/vala/.mtn2git_empty b/packages/vala/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/vala/.mtn2git_empty
diff --git a/packages/vala/vala-native_0.1.4.bb b/packages/vala/vala-native_0.1.4.bb
new file mode 100644
index 0000000000..8de1b9258c
--- /dev/null
+++ b/packages/vala/vala-native_0.1.4.bb
@@ -0,0 +1,5 @@
+require vala_${PV}.bb
+
+inherit native
+DEPENDS = "glib-native-2.0"
+
diff --git a/packages/vala/vala_0.1.4.bb b/packages/vala/vala_0.1.4.bb
new file mode 100644
index 0000000000..0d357945b7
--- /dev/null
+++ b/packages/vala/vala_0.1.4.bb
@@ -0,0 +1,15 @@
+DESCRIPTION = "Vala is a C#-like language dedicated to ease GObject programming. Vala compiles to C"
+SECTION = "devel"
+DEPENDS = "glib-2.0"
+HOMEPAGE = "http://live.gnome.org/Vala"
+LICENSE = "LGPL"
+
+SRC_URI = "http://download.gnome.org/sources/vala/0.1/vala-${PV}.tar.bz2"
+S = "${WORKDIR}/vala-${PV}"
+
+inherit autotools lib_package
+
+do_stage() {
+ autotools_stage_all
+}
+
diff --git a/packages/vte/vte_0.16.8.bb b/packages/vte/vte_0.16.8.bb
index 213bd0afbe..57a3aca74d 100644
--- a/packages/vte/vte_0.16.8.bb
+++ b/packages/vte/vte_0.16.8.bb
@@ -1,5 +1,6 @@
DESCRIPTION = "vte is a virtual terminal emulator"
LICENSE = "LGPL"
+DEPENDS += " glib-2.0 gtk+"
RDEPENDS = "termcap"
PR = "r3"
diff --git a/packages/webcam-server/webcam-server_0.50.bb b/packages/webcam-server/webcam-server_0.50.bb
index df7873c382..db28520606 100644
--- a/packages/webcam-server/webcam-server_0.50.bb
+++ b/packages/webcam-server/webcam-server_0.50.bb
@@ -11,8 +11,12 @@ DESCRIPTION = "webcam_server is a program that allows others to view your webcam
HOMEPAGE = "http://webcamserver.sourceforge.net/"
LICENSE = "GPL"
+PR = "r1"
+
######################################################################################
+DEPENDS = "jpeg"
+
SRC_URI = "${SOURCEFORGE_MIRROR}/webcamserver/webcam_server-${PV}.tar.gz"
S = "${WORKDIR}/webcam_server-${PV}"
diff --git a/packages/wesnoth/.mtn2git_empty b/packages/wesnoth/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/wesnoth/.mtn2git_empty
diff --git a/packages/wesnoth/wesnoth_svn.bb b/packages/wesnoth/wesnoth_svn.bb
new file mode 100644
index 0000000000..430abe7d0f
--- /dev/null
+++ b/packages/wesnoth/wesnoth_svn.bb
@@ -0,0 +1,19 @@
+DESCRIPTION = "fantasy turn-based strategy game"
+PV = "0.01+svnr${SRCREV}"
+PR = "r1"
+SECTION = "games"
+LICENSE = "GPL"
+DEPENDS += "libsdl-image libsdl-mixer libsdl-net"
+SRC_URI = "svn://svn.gna.org/svn/wesnoth;module=trunk;proto=http"
+
+EXTRA_OECONF += " --enable-tinygui --disable-python --enable-lite --enable-lowmem"
+
+S = "${WORKDIR}/trunk"
+
+inherit autotools
+
+addtask autogen after do_patch before do_configure
+
+do_autogen() {
+ cd ${WORKDIR}/trunk/ && ./autogen.sh --host=armv4t-angstrom-linux-gnueabi
+}
diff --git a/packages/wifi-radar/wifi-radar_1.9.6.bb b/packages/wifi-radar/wifi-radar_1.9.6.bb
index 59d24b9d74..57eb9e33fb 100644
--- a/packages/wifi-radar/wifi-radar_1.9.6.bb
+++ b/packages/wifi-radar/wifi-radar_1.9.6.bb
@@ -3,11 +3,11 @@ DESCRIPTION="WiFi Radar is a Python/PyGTK2 utility for managing WiFi profiles."
HOMEPAGE="http://www.bitbuilder.com/wifi_radar/"
LICENSE = "GPL"
-PR = "r1"
+PR = "r2"
PACKAGE_ARCH = "all"
-RDEPENDS = "python-core python-pygtk2 python-re python-io python-pygobject python-pycairo"
+RDEPENDS = "python-core python-pygtk python-re python-io python-pygobject python-pycairo"
SRC_URI="http://wifi-radar.systemimager.org/pub/${PN}-${PV}.tar.bz2 \
file://wifi-radar.patch;patch=1 \
diff --git a/packages/wifistix/wifistix-modules/mcf25 b/packages/wifistix/wifistix-modules/mcf25
new file mode 100644
index 0000000000..b0d5a7ef21
--- /dev/null
+++ b/packages/wifistix/wifistix-modules/mcf25
@@ -0,0 +1,2 @@
+mcf25
+
diff --git a/packages/wifistix/wifistix-modules/wifistix.conf b/packages/wifistix/wifistix-modules/wifistix.conf
index 117d8a2281..7554d4b19f 100644
--- a/packages/wifistix/wifistix-modules/wifistix.conf
+++ b/packages/wifistix/wifistix-modules/wifistix.conf
@@ -1,4 +1,4 @@
-install pcmcia /sbin/modprobe --ignore-install pcmcia && modprobe pxa2xx-cs
-
alias wlan0 mcf25
+install cfio /sbin/modprobe proc-gpio && echo GPIO out set > /proc/gpio/GPIO80 && /sbin/pccardctl eject && /sbin/modprobe --ignore-install cfio && /sbin/pccardctl insert && modprobe pxa2xx-cs
+
diff --git a/packages/wifistix/wifistix-modules_5.0.16.p0.bb b/packages/wifistix/wifistix-modules_5.0.16.p0.bb
index 923f24e27a..787c631d16 100644
--- a/packages/wifistix/wifistix-modules_5.0.16.p0.bb
+++ b/packages/wifistix/wifistix-modules_5.0.16.p0.bb
@@ -9,12 +9,14 @@ PR = "r0"
SRC_URI = "http://files.gumstix.com/cf8385-5.0.16.p0-26306.tbz \
file://wifistix.conf \
+ file://mcf25 \
file://marvell-devicename.patch;patch=1 \
file://marvell-devicetable.patch;patch=1 \
file://marvell-gumstix.patch;patch=1 \
file://sbi-no-inline.patch;patch=1 \
file://2.6.17-new-pcmcia-layer.patch;patch=1 \
file://bad-cast.patch;patch=1 \
+ file://sk_buff.patch;patch=1 \
file://struct-changes.patch;patch=1 \
file://no-more-config-h.patch;patch=1 \
file://realtime-kernel.patch;patch=1 \
@@ -41,10 +43,14 @@ do_install() {
install -m 0755 -d ${D}${sysconfdir}/modprobe.d
install -m 0644 ${WORKDIR}/wifistix.conf ${D}${sysconfdir}/modprobe.d/wifistix.conf
+ install -m 0755 -d ${D}${sysconfdir}/modutils
+ install -m 0644 ${WORKDIR}/mcf25 ${D}${sysconfdir}/modutils/mcf25
}
PACKAGES = "${PN}"
FILES_${PN} = "${base_libdir}/modules/"
FILES_${PN} += "${sysconfdir}/modprobe.d/"
+FILES_${PN} += "${sysconfdir}/modutils/"
CONFFILES_${PN} = "${sysconfdir}/modprobe.d/wifistix.conf"
+CONFFILES_${PN} += "${sysconfdir}/modutils/mcf25"
diff --git a/packages/wireless-tools/wireless-tools/wireless-tools.if-pre-up b/packages/wireless-tools/wireless-tools/wireless-tools.if-pre-up
index 11fbced462..2518a5c834 100755
--- a/packages/wireless-tools/wireless-tools/wireless-tools.if-pre-up
+++ b/packages/wireless-tools/wireless-tools/wireless-tools.if-pre-up
@@ -60,10 +60,6 @@ if [ -n "$IF_WIRELESS_RETRY" ]; then
$IWCONFIG "$IFACE" retry $IF_WIRELESS_RETRY
fi
-if [ -n "$IF_WIRELESS_ESSID" ]; then
- $IWCONFIG "$IFACE" essid "$IF_WIRELESS_ESSID"
-fi
-
if [ -n "$IF_WIRELESS_NICK" ]; then
$IWCONFIG "$IFACE" nick "$IF_WIRELESS_NICK"
fi
@@ -116,6 +112,10 @@ if [ -n "$IF_WIRELESS_CHANNEL" ]; then
$IWCONFIG "$IFACE" channel $IF_WIRELESS_CHANNEL
fi
+if [ -n "$IF_WIRELESS_ESSID" ]; then
+ $IWCONFIG "$IFACE" essid "$IF_WIRELESS_ESSID"
+fi
+
if [ -n "$IF_WIRELESS_COMMIT" ]; then
$IWCONFIG "$IFACE" commit
fi
diff --git a/packages/wireless-tools/wireless-tools_28+29pre21.bb b/packages/wireless-tools/wireless-tools_28+29pre21.bb
index b42af6fee2..41bd546b6d 100644
--- a/packages/wireless-tools/wireless-tools_28+29pre21.bb
+++ b/packages/wireless-tools/wireless-tools_28+29pre21.bb
@@ -1,5 +1,7 @@
require wireless-tools.inc
+PR = "r1"
+
SRC_URI += "http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/wireless_tools.29.pre21.tar.gz \
file://zzz-wireless.if-pre-up"
S = "${WORKDIR}/wireless_tools.29"
diff --git a/packages/wlan-ng/wlan-ng-modules-0.2.7/2.6.22-fixes.patch b/packages/wlan-ng/wlan-ng-modules-0.2.7/2.6.22-fixes.patch
new file mode 100644
index 0000000000..affc6567dc
--- /dev/null
+++ b/packages/wlan-ng/wlan-ng-modules-0.2.7/2.6.22-fixes.patch
@@ -0,0 +1,221 @@
+Index: linux-wlan-ng-0.2.7/src/prism2/driver/prism2sta.c
+===================================================================
+--- linux-wlan-ng-0.2.7.orig/src/prism2/driver/prism2sta.c 2007-11-13 15:09:52.686428934 +0300
++++ linux-wlan-ng-0.2.7/src/prism2/driver/prism2sta.c 2007-11-13 16:44:19.386567678 +0300
+@@ -1438,9 +1438,15 @@
+ return;
+ }
+
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 20)
++void prism2sta_processing_defer(struct work_struct *work)
++{
++ hfa384x_t *hw = container_of(work, hfa384x_t, link_bh);
++#else
+ void prism2sta_processing_defer(void *data)
+ {
+ hfa384x_t *hw = (hfa384x_t *) data;
++#endif
+ wlandevice_t *wlandev = hw->wlandev;
+ hfa384x_bytestr32_t ssid;
+ int result;
+@@ -1540,7 +1546,11 @@
+ WLAN_MACMODE_IBSS_STA : WLAN_MACMODE_ESS_STA;
+
+ /* Get the ball rolling on the comms quality stuff */
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 20)
++ prism2sta_commsqual_defer(&hw->commsqual_bh);
++#else
+ prism2sta_commsqual_defer(hw);
++#endif
+ }
+ break;
+
+@@ -2413,9 +2423,15 @@
+ }
+ #endif
+
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 20)
++void prism2sta_commsqual_defer(struct work_struct *work)
++{
++ hfa384x_t *hw = container_of(work, hfa384x_t, commsqual_bh);
++#else
+ void prism2sta_commsqual_defer(void *data)
+ {
+ hfa384x_t *hw = (hfa384x_t *) data;
++#endif
+ wlandevice_t *wlandev = hw->wlandev;
+ hfa384x_bytestr32_t ssid;
+ int result = 0;
+Index: linux-wlan-ng-0.2.7/src/p80211/p80211conv.c
+===================================================================
+--- linux-wlan-ng-0.2.7.orig/src/p80211/p80211conv.c 2007-11-13 14:33:27.646440199 +0300
++++ linux-wlan-ng-0.2.7/src/p80211/p80211conv.c 2007-11-13 14:56:45.678436613 +0300
+@@ -497,7 +497,11 @@
+ }
+
+ skb->protocol = eth_type_trans(skb, netdev);
++#if ( LINUX_VERSION_CODE < KERNEL_VERSION(2,6,22) )
+ skb->mac.raw = (unsigned char *) e_hdr; /* new MAC header */
++#else
++ skb->mac_header = (unsigned char *) e_hdr;
++#endif
+
+ /* jkriegl: process signal and noise as set in hfa384x_int_rx() */
+ /* jkriegl: only process signal/noise if requested by iwspy */
+Index: linux-wlan-ng-0.2.7/src/p80211/p80211netdev.c
+===================================================================
+--- linux-wlan-ng-0.2.7.orig/src/p80211/p80211netdev.c 2007-11-13 14:56:08.098439975 +0300
++++ linux-wlan-ng-0.2.7/src/p80211/p80211netdev.c 2007-11-13 14:57:22.326437672 +0300
+@@ -389,7 +389,11 @@
+
+ /* set up various data fields */
+ skb->dev = dev;
++#if ( LINUX_VERSION_CODE < KERNEL_VERSION(2,6,22) )
+ skb->mac.raw = skb->data ;
++#else
++ skb_reset_mac_header(skb);
++#endif
+ skb->ip_summed = CHECKSUM_NONE;
+ skb->pkt_type = PACKET_OTHERHOST;
+ skb->protocol = htons(ETH_P_80211_RAW);
+Index: linux-wlan-ng-0.2.7/src/prism2/driver/hfa384x_usb.c
+===================================================================
+--- linux-wlan-ng-0.2.7.orig/src/prism2/driver/hfa384x_usb.c 2007-11-13 14:58:29.000000000 +0300
++++ linux-wlan-ng-0.2.7/src/prism2/driver/hfa384x_usb.c 2007-11-13 16:41:35.914446535 +0300
+@@ -128,6 +128,9 @@
+ #include <linux/netdevice.h>
+ #include <linux/timer.h>
+ #include <asm/io.h>
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,20))
++#include <linux/workqueue.h>
++#endif
+ #include <linux/delay.h>
+ #include <asm/byteorder.h>
+ #include <asm/bitops.h>
+@@ -246,8 +249,13 @@
+ wlandevice_t *wlandev,
+ hfa384x_usb_rxfrm_t *rxfrm);
+
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 20)
++static void
++hfa384x_usb_defer(struct work_struct *work);
++#else
+ static void
+ hfa384x_usb_defer(void *hw);
++#endif
+
+ static int
+ submit_rx_urb(hfa384x_t *hw, int flags);
+@@ -257,7 +265,7 @@
+
+ /*---------------------------------------------------*/
+ /* Callbacks */
+-#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0))
++#if ( (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) || (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,19)) )
+ static void
+ hfa384x_usbout_callback(struct urb *urb);
+ static void
+@@ -578,10 +586,17 @@
+ * Call context:
+ * process (by design)
+ ----------------------------------------------------------------*/
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 20)
+ static void
+-hfa384x_usb_defer(void *data)
++hfa384x_usb_defer(struct work_struct *work)
++{
++ hfa384x_t *hw = container_of(work, hfa384x_t, usb_work);
++#else
++static void
++hfa384x_usb_defer(void *hw)
+ {
+ hfa384x_t *hw = data;
++#endif
+ struct net_device *netdev = hw->wlandev->netdev;
+
+ DBFENTER;
+@@ -711,8 +726,13 @@
+ tasklet_init(&hw->completion_bh,
+ hfa384x_usbctlx_completion_task,
+ (unsigned long)hw);
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 20)
++ INIT_WORK(&hw->link_bh, prism2sta_processing_defer);
++ INIT_WORK(&hw->usb_work, hfa384x_usb_defer);
++#else
+ INIT_WORK(&hw->link_bh, prism2sta_processing_defer, hw);
+ INIT_WORK(&hw->usb_work, hfa384x_usb_defer, hw);
++#endif
+
+ init_timer(&hw->throttle);
+ hw->throttle.function = hfa384x_usb_throttlefn;
+@@ -733,7 +753,11 @@
+ hw->link_status = HFA384x_LINK_NOTCONNECTED;
+ hw->state = HFA384x_STATE_INIT;
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,20))
++ INIT_WORK(&hw->commsqual_bh, prism2sta_commsqual_defer);
++#else
+ INIT_WORK(&hw->commsqual_bh, prism2sta_commsqual_defer, hw);
++#endif
+ init_timer(&hw->commsqual_timer);
+ hw->commsqual_timer.data = (unsigned long) hw;
+ hw->commsqual_timer.function = prism2sta_commsqual_timer;
+@@ -3847,7 +3871,7 @@
+ * Call context:
+ * interrupt
+ ----------------------------------------------------------------*/
+-#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0))
++#if ( (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) || (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,19)) )
+ void hfa384x_usbin_callback(struct urb *urb)
+ #else
+ void hfa384x_usbin_callback(struct urb *urb, struct pt_regs *regs)
+@@ -4253,7 +4277,11 @@
+ /* The prism2 series does not return the CRC */
+ memset(skb_put(skb, WLAN_CRC_LEN), 0xff, WLAN_CRC_LEN);
+
++#if ( LINUX_VERSION_CODE < KERNEL_VERSION(2,6,22) )
+ skb->mac.raw = skb->data;
++#else
++ skb_reset_mac_header(skb);
++#endif
+
+ /* Attach the rxmeta, set some stuff */
+ p80211skb_rxmeta_attach(wlandev, skb);
+@@ -4506,7 +4534,7 @@
+ * Call context:
+ * interrupt
+ ----------------------------------------------------------------*/
+-#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0))
++#if ( (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) || (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,19)) )
+ void hfa384x_usbout_callback(struct urb *urb)
+ #else
+ void hfa384x_usbout_callback(struct urb *urb, struct pt_regs *regs)
+@@ -4587,7 +4615,7 @@
+ * Call context:
+ * interrupt
+ ----------------------------------------------------------------*/
+-#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0))
++#if ( (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) || (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,19)) )
+ void hfa384x_ctlxout_callback(struct urb *urb)
+ #else
+ void hfa384x_ctlxout_callback(struct urb *urb, struct pt_regs *regs)
+Index: linux-wlan-ng-0.2.7/src/prism2/include/prism2/prism2mgmt.h
+===================================================================
+--- linux-wlan-ng-0.2.7.orig/src/prism2/include/prism2/prism2mgmt.h 2007-11-13 15:08:28.000000000 +0300
++++ linux-wlan-ng-0.2.7/src/prism2/include/prism2/prism2mgmt.h 2007-11-13 15:09:37.469456438 +0300
+@@ -168,9 +168,14 @@
+ UINT8 *prism2buf, p80211pstrd_t *pstr, hfa384x_t *priv );
+ int prism2mgmt_get_grpaddr_index( UINT32 did );
+
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 20)
++void prism2sta_processing_defer(struct work_struct *work);
++void prism2sta_commsqual_defer(struct work_struct *work);
++#else
+ void prism2sta_processing_defer(void *data);
+-
+ void prism2sta_commsqual_defer(void *data);
++#endif
++
+ void prism2sta_commsqual_timer(unsigned long data);
+
+ /*=============================================================*/
diff --git a/packages/wlan-ng/wlan-ng-modules-0.2.8+svn20071030/.mtn2git_empty b/packages/wlan-ng/wlan-ng-modules-0.2.8+svn20071030/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/wlan-ng/wlan-ng-modules-0.2.8+svn20071030/.mtn2git_empty
diff --git a/packages/wlan-ng/wlan-ng-modules-0.2.8+svn20071030/config.in b/packages/wlan-ng/wlan-ng-modules-0.2.8+svn20071030/config.in
new file mode 100644
index 0000000000..a2bc086629
--- /dev/null
+++ b/packages/wlan-ng/wlan-ng-modules-0.2.8+svn20071030/config.in
@@ -0,0 +1,21 @@
+WLAN_VERSION=0
+WLAN_PATCHLEVEL=2
+WLAN_SUBLEVEL=8
+WLAN_EXTRAVERSION=svn20071030
+#LINUX_SRC=$(KERNEL_SOURCE)
+PCMCIA_SRC=
+PREFIX=
+INST_EXEDIR=/sbin
+#TARGET_ROOT_ON_HOST=
+#RC_DIR=/etc/init.d
+PCMCIA_DIR=/etc/pcmcia
+SYSV_INIT=y
+INSTALL_DEPMOD=
+WLAN_DEBUG=n
+CROSS_COMPILE_ENABLED=n
+CROSS_COMPILE=
+HOST_COMPILE=
+PRISM2_PLX=n
+PRISM2_PCMCIA=n
+PRISM2_PCI=n
+PRISM2_USB=y
diff --git a/packages/wlan-ng/wlan-ng-modules-0.2.8+svn20071030/only-the-modules.patch b/packages/wlan-ng/wlan-ng-modules-0.2.8+svn20071030/only-the-modules.patch
new file mode 100644
index 0000000000..abb3b137da
--- /dev/null
+++ b/packages/wlan-ng/wlan-ng-modules-0.2.8+svn20071030/only-the-modules.patch
@@ -0,0 +1,26 @@
+Index: trunk/src/Makefile
+===================================================================
+--- trunk.orig/src/Makefile 2006-08-23 12:50:56.000000000 +0200
++++ trunk/src/Makefile 2006-08-23 12:52:45.000000000 +0200
+@@ -44,7 +44,7 @@
+
+ -include ../config.mk
+
+-DIRS=mkmeta shared wlanctl nwepgen wlancfg p80211 prism2
++DIRS=mkmeta shared p80211 prism2
+
+ ifneq ($(wildcard *.addon),)
+ DIRS+=`cat *.addon`
+Index: trunk/src/prism2/Makefile
+===================================================================
+--- trunk.orig/src/prism2/Makefile 2006-08-23 12:50:55.000000000 +0200
++++ trunk/src/prism2/Makefile 2006-08-23 12:52:09.000000000 +0200
+@@ -44,7 +44,7 @@
+
+ -include ../../config.mk
+
+-DIRS=driver ridlist download
++DIRS=driver ridlist
+
+ ifneq ($(wildcard *.addon),)
+ DIRS+=`cat *.addon`
diff --git a/packages/wlan-ng/wlan-ng-modules_0.2.7.bb b/packages/wlan-ng/wlan-ng-modules_0.2.7.bb
index 169b72dd0b..bacd662680 100644
--- a/packages/wlan-ng/wlan-ng-modules_0.2.7.bb
+++ b/packages/wlan-ng/wlan-ng-modules_0.2.7.bb
@@ -1,6 +1,9 @@
require wlan-ng-modules.inc
-SRC_URI += "ftp://ftp.linux-wlan.org/pub/linux-wlan-ng/linux-wlan-ng-${PV}.tar.bz2"
+PR = "r1"
+
+SRC_URI += "ftp://ftp.linux-wlan.org/pub/linux-wlan-ng/linux-wlan-ng-${PV}.tar.bz2 \
+ file://2.6.22-fixes.patch;patch=1"
S = "${WORKDIR}/linux-wlan-ng-${PV}"
diff --git a/packages/wlan-ng/wlan-ng-modules_0.2.8+svn20071030.bb b/packages/wlan-ng/wlan-ng-modules_0.2.8+svn20071030.bb
new file mode 100644
index 0000000000..8e885b5ad2
--- /dev/null
+++ b/packages/wlan-ng/wlan-ng-modules_0.2.8+svn20071030.bb
@@ -0,0 +1,9 @@
+require wlan-ng-modules.inc
+
+SRCDATE = "20071030"
+PV = "0.2.8+svn${SRCDATE}"
+
+SRC_URI += "svn://svn.shaftnet.org/linux-wlan-ng;module=trunk "
+
+S = "${WORKDIR}/trunk"
+
diff --git a/packages/wlan-ng/wlan-ng-utils-0.2.8/.mtn2git_empty b/packages/wlan-ng/wlan-ng-utils-0.2.8/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/wlan-ng/wlan-ng-utils-0.2.8/.mtn2git_empty
diff --git a/packages/wlan-ng/wlan-ng-utils-0.2.8/config.in b/packages/wlan-ng/wlan-ng-utils-0.2.8/config.in
new file mode 100644
index 0000000000..298935770d
--- /dev/null
+++ b/packages/wlan-ng/wlan-ng-utils-0.2.8/config.in
@@ -0,0 +1,21 @@
+WLAN_VERSION=0
+WLAN_PATCHLEVEL=2
+WLAN_SUBLEVEL=8
+WLAN_EXTRAVERSION=
+#LINUX_SRC=$(KERNEL_SOURCE)
+PCMCIA_SRC=.
+PREFIX=
+INST_EXEDIR=/sbin
+#TARGET_ROOT_ON_HOST=
+#RC_DIR=/etc/init.d
+PCMCIA_DIR=/etc/pcmcia
+SYSV_INIT=y
+INSTALL_DEPMOD=
+WLAN_DEBUG=n
+CROSS_COMPILE_ENABLED=n
+CROSS_COMPILE=
+HOST_COMPILE=
+PRISM2_PLX=y
+PRISM2_PCMCIA=y
+PRISM2_PCI=y
+PRISM2_USB=y
diff --git a/packages/wlan-ng/wlan-ng-utils-0.2.8/only-the-utils.patch b/packages/wlan-ng/wlan-ng-utils-0.2.8/only-the-utils.patch
new file mode 100644
index 0000000000..af1f442a4c
--- /dev/null
+++ b/packages/wlan-ng/wlan-ng-utils-0.2.8/only-the-utils.patch
@@ -0,0 +1,26 @@
+Index: trunk/src/Makefile
+===================================================================
+--- trunk.orig/src/Makefile 2006-08-21 16:24:58.000000000 +0200
++++ trunk/src/Makefile 2006-08-23 12:49:08.000000000 +0200
+@@ -44,7 +44,7 @@
+
+ -include ../config.mk
+
+-DIRS=mkmeta shared wlanctl nwepgen wlancfg p80211 prism2
++DIRS=mkmeta shared wlanctl nwepgen wlancfg prism2
+
+ ifneq ($(wildcard *.addon),)
+ DIRS+=`cat *.addon`
+Index: trunk/src/prism2/Makefile
+===================================================================
+--- trunk.orig/src/prism2/Makefile 2006-08-21 16:24:57.000000000 +0200
++++ trunk/src/prism2/Makefile 2006-08-23 12:48:32.000000000 +0200
+@@ -44,7 +44,7 @@
+
+ -include ../../config.mk
+
+-DIRS=driver ridlist download
++DIRS=ridlist download
+
+ ifneq ($(wildcard *.addon),)
+ DIRS+=`cat *.addon`
diff --git a/packages/wlan-ng/wlan-ng-utils_0.2.8.bb b/packages/wlan-ng/wlan-ng-utils_0.2.8.bb
new file mode 100644
index 0000000000..e37d548a9f
--- /dev/null
+++ b/packages/wlan-ng/wlan-ng-utils_0.2.8.bb
@@ -0,0 +1,7 @@
+require wlan-ng-utils.inc
+
+SRC_URI += "file://scripts-makefile-hostcc.patch;patch=1 \
+ file://pcmciasrc.patch;patch=1 \
+ file://hostldflags.patch;patch=1"
+
+PR = "r0"
diff --git a/packages/x11vnc/x11vnc_0.9.3.bb b/packages/x11vnc/x11vnc_0.9.3.bb
index edd165374f..04ac87b444 100644
--- a/packages/x11vnc/x11vnc_0.9.3.bb
+++ b/packages/x11vnc/x11vnc_0.9.3.bb
@@ -3,7 +3,7 @@ SECTION = "x11/utils"
HOMEPAGE = "http://www.karlrunge.com/x11vnc/"
AUTHOR = "Karl Runge"
LICENSE = "GPL"
-DEPENDS = "openssl virtual/libx11 libxext avahi jpeg-62 zlib"
+DEPENDS = "openssl virtual/libx11 libxext avahi jpeg zlib"
SRC_URI = "http://www.karlrunge.com/x11vnc/x11vnc-0.9.3.tar.gz"
diff --git a/packages/xfce/xfce-mcs-manager.inc b/packages/xfce/xfce-mcs-manager.inc
index e4fa10f07f..d90e82081e 100644
--- a/packages/xfce/xfce-mcs-manager.inc
+++ b/packages/xfce/xfce-mcs-manager.inc
@@ -3,7 +3,7 @@
# Released under the MIT license (see packages/COPYING)
DESCRIPTION="XFCE4 Settings manager."
-DEPENDS="libxfcegui4 libxfce4mcs"
+DEPENDS="libxfcegui4 libxfce4mcs intltool-native"
SECTION = "x11"
PR = "r1"
diff --git a/packages/xkbd/xkbd-0.8.15/add-default-common-slides.patch b/packages/xkbd/xkbd-0.8.15/add-default-common-slides.patch
new file mode 100644
index 0000000000..0423ee1eed
--- /dev/null
+++ b/packages/xkbd/xkbd-0.8.15/add-default-common-slides.patch
@@ -0,0 +1,44 @@
+diff -r 6b20ef8fbdee src/kb.c
+--- a/src/kb.c Tue Nov 27 21:28:21 2007 +0200
++++ b/src/kb.c Tue Nov 27 22:27:09 2007 +0200
+@@ -954,6 +954,13 @@ void kb_send_keypress(button *b)
+ int slide_flag = 0;
+
+ struct keycodeEntry vk_keycodes[10];
++
++ static KeySym ksSpace, ksBackSpace, ksReturn;
++ if (!ksSpace) {
++ ksSpace = XStringToKeysym("space");
++ ksBackSpace = XStringToKeysym("BackSpace");
++ ksReturn = XStringToKeysym("Return");
++ }
+
+ if (b->kb->state & KB_STATE_SHIFT || b->kb->state & KB_STATE_CAPS)
+ {
+@@ -981,20 +988,17 @@ void kb_send_keypress(button *b)
+ ks = b->slide_up_ks;
+ if (ks == 0) ks = b->shift_ks;
+ break;
+- case down : /* hold ctrl */
++ case down :
+ ks = b->slide_down_ks;
+- if (ks == 0) slide_flag = KB_STATE_CTRL;
++ if (ks == 0) ks = ksReturn;
+ break;
+- case left : /* hold alt */
++ case left :
+ ks = b->slide_left_ks;
+- if (ks == 0)
+- {
+- ks = b->mod_ks;
+- slide_flag = KB_STATE_MOD;
+- }
++ if (ks == 0) ks = ksBackSpace;
+ break;
+- case right : /* hold alt */
++ case right :
+ ks = b->slide_right_ks;
++ if (ks == 0) ks = ksSpace;
+ break;
+ case none:
+ break;
diff --git a/packages/xkbd/xkbd-0.8.15/differentiate-desktop-name.patch b/packages/xkbd/xkbd-0.8.15/differentiate-desktop-name.patch
new file mode 100644
index 0000000000..60617a671c
--- /dev/null
+++ b/packages/xkbd/xkbd-0.8.15/differentiate-desktop-name.patch
@@ -0,0 +1,12 @@
+diff -r 1eb4100bbe39 xkbd.desktop
+--- a/xkbd.desktop Wed Nov 28 02:14:35 2007 +0200
++++ b/xkbd.desktop Wed Nov 28 02:15:01 2007 +0200
+@@ -1,6 +1,6 @@
+ [Desktop Entry]
+-Name=Keyboard
+-Comment=Virtual Keyboard
++Name=Ol' Good Keyboard
++Comment=xkbd the Virtual Keyboard
+ Exec=xkbd
+ Type=Application
+ Icon=xkbd.png
diff --git a/packages/xkbd/xkbd-layout-ru/.mtn2git_empty b/packages/xkbd/xkbd-layout-ru/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/xkbd/xkbd-layout-ru/.mtn2git_empty
diff --git a/packages/xkbd/xkbd-layout-ru/en-ru-123.xkbd b/packages/xkbd/xkbd-layout-ru/en-ru-123.xkbd
new file mode 100644
index 0000000000..0b4ca0f056
--- /dev/null
+++ b/packages/xkbd/xkbd-layout-ru/en-ru-123.xkbd
@@ -0,0 +1,1353 @@
+#Птн, 01 Ðпр 2005 01:56:58 +0300
+#It was downloaded from http://whitenoise.ssrlab.com/pda/xkbd
+#Copyright:
+#This software is copyright (c) 2005 by Dmitry Zhadinets
+#You are free to distribute this keyboard file under the terms of
+#the GNU General Public License.
+#Version: 0.1.1
+#For posting bugreports use this way <whitenoise at ssrlab dot com>
+<global>
+ render xft
+ font Verdana-6|fixed
+ col 200:255:200
+ down_col 100:100:200
+ txt_col 0:0:0
+ border_col 128:128:128
+ button_style rounded
+</global>
+<layout>
+ <row>
+ <key>
+ key_span_width 1
+ bg 196:216:248
+ default Esc
+ default_ks Escape
+ </key>
+ <key>
+ key_span_width 1
+ bg 248:255:196
+ default `
+ default_ks quoteleft
+ shift ~
+ shift_ks asciitilde
+ </key>
+ <key>
+ key_span_width 1
+ bg 248:216:196
+ default 1
+ default_ks 1
+ shift !
+ shift_ks exclam
+ </key>
+ <key>
+ key_span_width 1
+ bg 248:216:196
+ default 2
+ default_ks 2
+ shift @
+ shift_ks at
+ </key>
+ <key>
+ key_span_width 1
+ bg 248:216:196
+ default 3
+ default_ks 3
+ shift #
+ shift_ks numbersign
+ </key>
+ <key>
+ key_span_width 1
+ bg 248:216:196
+ default 4
+ default_ks 4
+ shift $
+ shift_ks dollar
+ </key>
+ <key>
+ key_span_width 1
+ bg 248:216:196
+ default 5
+ default_ks 5
+ shift %
+ shift_ks percent
+ </key>
+ <key>
+ key_span_width 1
+ bg 248:216:196
+ default 6
+ default_ks 6
+ shift ^
+ shift_ks asciicircum
+ </key>
+ <key>
+ key_span_width 1
+ bg 248:216:196
+ default 7
+ default_ks 7
+ shift &
+ shift_ks ampersand
+ </key>
+ <key>
+ key_span_width 1
+ bg 248:216:196
+ default 8
+ default_ks 8
+ shift *
+ shift_ks asterisk
+ </key>
+ <key>
+ key_span_width 1
+ bg 248:216:196
+ default 9
+ default_ks 9
+ shift (
+ shift_ks parenleft
+ </key>
+ <key>
+ key_span_width 1
+ bg 248:216:196
+ default 0
+ default_ks 0
+ shift )
+ shift_ks parenright
+ </key>
+ <key>
+ key_span_width 1
+ bg 248:255:196
+ default -
+ default_ks minus
+ shift _
+ shift_ks underscore
+ </key>
+ <key>
+ key_span_width 1
+ bg 248:255:196
+ default =
+ default_ks equal
+ shift +
+ shift_ks plus
+ </key>
+ <key>
+ key_span_width 1
+ bg 196:216:248
+# img /usr/share/xkbd/img/backspace.xpm
+ default <-
+ default_ks BackSpace
+ </key>
+ </row>
+ <row>
+ <key>
+ key_span_width 1
+ bg 196:216:248
+ default Tab
+ default_ks Tab
+ </key>
+ <key>
+ key_span_width 1
+ default q
+ default_ks q
+ shift Q
+ shift_ks Q
+ obey_capslock yes
+ </key>
+ <key>
+ key_span_width 1
+ default w
+ default_ks w
+ shift W
+ shift_ks W
+ obey_capslock yes
+ </key>
+ <key>
+ key_span_width 1
+ default e
+ default_ks e
+ shift E
+ shift_ks E
+ obey_capslock yes
+ </key>
+ <key>
+ key_span_width 1
+ default r
+ default_ks r
+ shift R
+ shift_ks R
+ obey_capslock yes
+ </key>
+ <key>
+ key_span_width 1
+ default t
+ default_ks t
+ shift T
+ shift_ks T
+ obey_capslock yes
+ </key>
+ <key>
+ key_span_width 1
+ default y
+ default_ks y
+ shift Y
+ shift_ks Y
+ obey_capslock yes
+ </key>
+ <key>
+ key_span_width 1
+ default u
+ default_ks u
+ shift U
+ shift_ks U
+ obey_capslock yes
+ </key>
+ <key>
+ key_span_width 1
+ default i
+ default_ks i
+ shift I
+ shift_ks I
+ obey_capslock yes
+ </key>
+ <key>
+ key_span_width 1
+ default o
+ default_ks o
+ shift O
+ shift_ks O
+ obey_capslock yes
+ </key>
+ <key>
+ key_span_width 1
+ default p
+ default_ks p
+ shift P
+ shift_ks P
+ obey_capslock yes
+ </key>
+ <key>
+ key_span_width 1
+ bg 248:255:196
+ default [
+ default_ks bracketleft
+ shift {
+ shift_ks braceleft
+ </key>
+ <key>
+ key_span_width 1
+ bg 248:255:196
+ default ]
+ default_ks bracketright
+ shift }
+ shift_ks braceright
+ </key>
+ <key>
+ key_span_width 1
+ bg 248:255:196
+ default \
+ default_ks backslash
+ shift |
+ shift_ks bar
+ </key>
+ </row>
+ <row>
+ <key>
+ key_span_width 1
+ bg 196:216:248
+ default CAP
+ default_ks Caps_Lock
+ </key>
+ <key>
+ key_span_width 1
+ default a
+ default_ks a
+ shift A
+ shift_ks A
+ obey_capslock yes
+ </key>
+ <key>
+ key_span_width 1
+ default s
+ default_ks s
+ shift S
+ shift_ks S
+ obey_capslock yes
+ </key>
+ <key>
+ key_span_width 1
+ default d
+ default_ks d
+ shift D
+ shift_ks D
+ obey_capslock yes
+ </key>
+ <key>
+ key_span_width 1
+ default f
+ default_ks f
+ shift F
+ shift_ks F
+ obey_capslock yes
+ </key>
+ <key>
+ key_span_width 1
+ default g
+ default_ks g
+ shift G
+ shift_ks G
+ obey_capslock yes
+ </key>
+ <key>
+ key_span_width 1
+ default h
+ default_ks h
+ shift H
+ shift_ks H
+ obey_capslock yes
+ </key>
+ <key>
+ key_span_width 1
+ default j
+ default_ks j
+ shift J
+ shift_ks J
+ obey_capslock yes
+ </key>
+ <key>
+ key_span_width 1
+ default k
+ default_ks k
+ shift K
+ shift_ks K
+ obey_capslock yes
+ </key>
+ <key>
+ key_span_width 1
+ default l
+ default_ks l
+ shift L
+ shift_ks L
+ obey_capslock yes
+ </key>
+ <key>
+ key_span_width 1
+ bg 248:255:196
+ default ;
+ default_ks semicolon
+ shift :
+ shift_ks colon
+ </key>
+ <key>
+ key_span_width 1
+ bg 248:255:196
+ default '
+ default_ks quoteright
+ shift "
+ shift_ks quotedbl
+ </key>
+ <key>
+ key_span_width 1
+ bg 196:216:248
+ default Ret
+ default_ks Return
+ </key>
+ </row>
+ <row>
+ <key>
+ key_span_width 1
+ bg 196:216:248
+ default SH
+ default_ks Shift_L
+ </key>
+ <key>
+ key_span_width 1
+ default z
+ default_ks z
+ shift Z
+ shift_ks Z
+ obey_capslock yes
+ </key>
+ <key>
+ key_span_width 1
+ default x
+ default_ks x
+ shift X
+ shift_ks X
+ obey_capslock yes
+ </key>
+ <key>
+ key_span_width 1
+ default c
+ default_ks c
+ shift C
+ shift_ks C
+ obey_capslock yes
+ </key>
+ <key>
+ key_span_width 1
+ default v
+ default_ks v
+ shift V
+ shift_ks V
+ obey_capslock yes
+ </key>
+ <key>
+ key_span_width 1
+ default b
+ default_ks b
+ shift B
+ shift_ks B
+ obey_capslock yes
+ </key>
+ <key>
+ key_span_width 1
+ default n
+ default_ks n
+ shift N
+ shift_ks N
+ obey_capslock yes
+ </key>
+ <key>
+ key_span_width 1
+ default m
+ default_ks m
+ shift M
+ shift_ks M
+ obey_capslock yes
+ </key>
+ <key>
+ key_span_width 1
+ bg 248:255:196
+ default ,
+ default_ks comma
+ shift <
+ shift_ks less
+ </key>
+ <key>
+ key_span_width 1
+ bg 248:255:196
+ default .
+ default_ks period
+ shift >
+ shift_ks greater
+
+ </key>
+ <key>
+ key_span_width 1
+ bg 248:255:196
+ default /
+ default_ks slash
+ shift ?
+ shift_ks question
+ </key>
+ <key>
+ key_span_width 1
+ bg 196:216:248
+ default SH
+ default_ks Shift_R
+ </key>
+ </row>
+ <row>
+ <key>
+ bg 196:216:248
+ default Ctrl
+ default_ks Control_L
+ </key>
+ <key>
+ bg 255:255:255
+ default RU
+ switch 1
+ </key>
+ <key>
+ bg 255:255:255
+ default 123
+ switch 2
+ </key>
+ <key>
+ bg 200:200:200
+ default_ks space
+ width 60
+ </key>
+ <key>
+ bg 196:216:248
+ default Alt
+ default_ks Alt_L
+ </key>
+ <key>
+ bg 255:255:255
+ default <
+ default_ks Left
+ </key>
+ <key>
+ bg 255:255:255
+ default >
+ default_ks Right
+ </key>
+ <key>
+ bg 255:255:255
+ default ^
+ default_ks Up
+ </key>
+ <key>
+ bg 255:255:255
+ default v
+ default_ks Down
+ </key>
+ </row>
+</layout>
+<layout>
+ <row>
+ <key>
+ key_span_width 1
+ bg 196:216:248
+ default Esc
+ default_ks Escape
+ </key>
+ <key>
+ key_span_width 1
+ default Ñ‘
+ default_ks Cyrillic_io
+ shift Ð
+ shift_ks Cyrillic_IO
+ obey_capslock yes
+ </key>
+ <key>
+ key_span_width 1
+ bg 248:216:196
+ default 1
+ default_ks 1
+ shift !
+ shift_ks exclam
+ </key>
+ <key>
+ key_span_width 1
+ bg 248:216:196
+ default 2
+ default_ks 2
+ shift "
+ shift_ks quotedbl
+ </key>
+ <key>
+ key_span_width 1
+ bg 248:216:196
+ default 3
+ default_ks 3
+ shift â„–
+ shift_ks numerosign
+ </key>
+ <key>
+ key_span_width 1
+ bg 248:216:196
+ default 4
+ default_ks 4
+ shift ;
+ shift_ks semicolon
+ </key>
+ <key>
+ key_span_width 1
+ bg 248:216:196
+ default 5
+ default_ks 5
+ shift %
+ shift_ks percent
+ </key>
+ <key>
+ key_span_width 1
+ bg 248:216:196
+ default 6
+ default_ks 6
+ shift :
+ shift_ks colon
+ </key>
+ <key>
+ key_span_width 1
+ bg 248:216:196
+ default 7
+ default_ks 7
+ shift ?
+ shift_ks question
+ </key>
+ <key>
+ key_span_width 1
+ bg 248:216:196
+ default 8
+ default_ks 8
+ shift *
+ shift_ks asterisk
+ </key>
+ <key>
+ key_span_width 1
+ bg 248:216:196
+ default 9
+ default_ks 9
+ shift (
+ shift_ks parenleft
+ </key>
+ <key>
+ key_span_width 1
+ bg 248:216:196
+ default 0
+ default_ks 0
+ shift )
+ shift_ks parenright
+ </key>
+ <key>
+ key_span_width 1
+ bg 248:255:196
+ default -
+ default_ks minus
+ shift _
+ shift_ks underscore
+ </key>
+ <key>
+ key_span_width 1
+ bg 248:255:196
+ default =
+ default_ks equal
+ shift +
+ shift_ks plus
+ </key>
+ <key>
+ key_span_width 1
+ bg 196:216:248
+# img /usr/share/xkbd/img/backspace.xpm
+ default <-
+ default_ks BackSpace
+ </key>
+ </row>
+ <row>
+ <key>
+ key_span_width 1
+ bg 196:216:248
+ default Tab
+ default_ks Tab
+ </key>
+ <key>
+ key_span_width 1
+ default й
+ default_ks Cyrillic_shorti
+ shift Й
+ shift_ks Cyrillic_SHORTI
+ obey_capslock yes
+ </key>
+ <key>
+ key_span_width 1
+ default ц
+ default_ks Cyrillic_tse
+ shift Ц
+ shift_ks Cyrillic_TSE
+ obey_capslock yes
+ </key>
+ <key>
+ key_span_width 1
+ default у
+ default_ks Cyrillic_u
+ shift У
+ shift_ks Cyrillic_U
+ obey_capslock yes
+ </key>
+ <key>
+ key_span_width 1
+ default к
+ default_ks Cyrillic_ka
+ shift К
+ shift_ks Cyrillic_KA
+ obey_capslock yes
+ </key>
+ <key>
+ key_span_width 1
+ default е
+ default_ks Cyrillic_ie
+ shift Е
+ shift_ks Cyrillic_IE
+ obey_capslock yes
+ </key>
+ <key>
+ key_span_width 1
+ default н
+ default_ks Cyrillic_en
+ shift Ð
+ shift_ks Cyrillic_EN
+ obey_capslock yes
+ </key>
+ <key>
+ key_span_width 1
+ default г
+ default_ks Cyrillic_ghe
+ shift Г
+ shift_ks Cyrillic_GHE
+ obey_capslock yes
+ </key>
+ <key>
+ key_span_width 1
+ default ш
+ default_ks Cyrillic_sha
+ shift Ш
+ shift_ks Cyrillic_SHA
+ obey_capslock yes
+ </key>
+ <key>
+ key_span_width 1
+ default щ
+ default_ks Cyrillic_shcha
+ shift Щ
+ shift_ks Cyrillic_SHCHA
+ obey_capslock yes
+ </key>
+ <key>
+ key_span_width 1
+ default з
+ default_ks Cyrillic_ze
+ shift З
+ shift_ks Cyrillic_ZE
+ obey_capslock yes
+ </key>
+ <key>
+ key_span_width 1
+ default Ñ…
+ default_ks Cyrillic_ha
+ shift Х
+ shift_ks Cyrillic_HA
+ obey_capslock yes
+ </key>
+ <key>
+ key_span_width 1
+ default ÑŠ
+ default_ks Cyrillic_hardsign
+ shift Ъ
+ shift_ks Cyrillic_HARDSIGN
+ obey_capslock yes
+ </key>
+ <key>
+ key_span_width 1
+ bg 248:255:196
+ default \
+ default_ks backslash
+ shift |
+ shift_ks bar
+ </key>
+ </row>
+ <row>
+ <key>
+ key_span_width 1
+ bg 196:216:248
+ default CAP
+ default_ks Caps_Lock
+ </key>
+ <key>
+ key_span_width 1
+ default Ñ„
+ default_ks Cyrillic_ef
+ shift Ф
+ shift_ks Cyrillic_EF
+ obey_capslock yes
+ </key>
+ <key>
+ key_span_width 1
+ default Ñ‹
+ default_ks Cyrillic_yeru
+ shift Ы
+ shift_ks Cyrillic_YERU
+ obey_capslock yes
+ </key>
+ <key>
+ key_span_width 1
+ default в
+ default_ks Cyrillic_ve
+ shift Ð’
+ shift_ks Cyrillic_VE
+ obey_capslock yes
+ </key>
+ <key>
+ key_span_width 1
+ default а
+ default_ks Cyrillic_a
+ shift Ð
+ shift_ks Cyrillic_A
+ obey_capslock yes
+ </key>
+ <key>
+ key_span_width 1
+ default п
+ default_ks Cyrillic_pe
+ shift П
+ shift_ks Cyrillic_PE
+ obey_capslock yes
+ </key>
+ <key>
+ key_span_width 1
+ default р
+ default_ks Cyrillic_er
+ shift Р
+ shift_ks Cyrillic_ER
+ obey_capslock yes
+ </key>
+ <key>
+ key_span_width 1
+ default о
+ default_ks Cyrillic_o
+ shift О
+ shift_ks Cyrillic_O
+ obey_capslock yes
+ </key>
+ <key>
+ key_span_width 1
+ default л
+ default_ks Cyrillic_el
+ shift Л
+ shift_ks Cyrillic_EL
+ obey_capslock yes
+ </key>
+ <key>
+ key_span_width 1
+ default д
+ default_ks Cyrillic_de
+ shift Д
+ shift_ks Cyrillic_DE
+ obey_capslock yes
+ </key>
+ <key>
+ key_span_width 1
+ default ж
+ default_ks Cyrillic_zhe
+ shift Ж
+ shift_ks Cyrillic_ZHE
+ obey_capslock yes
+ </key>
+ <key>
+ key_span_width 1
+ default Ñ
+ default_ks Cyrillic_e
+ shift Э
+ shift_ks Cyrillic_E
+ obey_capslock yes
+ </key>
+ <key>
+ key_span_width 1
+ bg 196:216:248
+ default Ret
+ default_ks Return
+ </key>
+ </row>
+ <row>
+ <key>
+ key_span_width 1
+ bg 196:216:248
+ default SH
+ default_ks Shift_L
+ </key>
+ <key>
+ key_span_width 1
+ default Ñ
+ default_ks Cyrillic_ya
+ shift Я
+ shift_ks Cyrillic_YA
+ obey_capslock yes
+ </key>
+ <key>
+ key_span_width 1
+ default ч
+ default_ks Cyrillic_che
+ shift Ч
+ shift_ks Cyrillic_CHE
+ obey_capslock yes
+ </key>
+ <key>
+ key_span_width 1
+ default Ñ
+ default_ks Cyrillic_es
+ shift С
+ shift_ks Cyrillic_ES
+ obey_capslock yes
+ </key>
+ <key>
+ key_span_width 1
+ default м
+ default_ks Cyrillic_em
+ shift М
+ shift_ks Cyrillic_EM
+ obey_capslock yes
+ </key>
+ <key>
+ key_span_width 1
+ default и
+ default_ks Cyrillic_i
+ shift И
+ shift_ks Cyrillic_I
+ obey_capslock yes
+ </key>
+ <key>
+ key_span_width 1
+ default Ñ‚
+ default_ks Cyrillic_te
+ shift Т
+ shift_ks Cyrillic_TE
+ obey_capslock yes
+ </key>
+ <key>
+ key_span_width 1
+ default ь
+ default_ks Cyrillic_softsign
+ shift Ь
+ shift_ks Cyrillic_SOFTSIGN
+ obey_capslock yes
+ </key>
+ <key>
+ key_span_width 1
+ default б
+ default_ks Cyrillic_be
+ shift Б
+ shift_ks Cyrillic_BE
+ obey_capslock yes
+ </key>
+ <key>
+ key_span_width 1
+ default ÑŽ
+ default_ks Cyrillic_yu
+ shift Ю
+ shift_ks Cyrillic_YU
+ obey_capslock yes
+ </key>
+ <key>
+ key_span_width 1
+ bg 248:255:196
+ default .
+ default_ks period
+ shift ,
+ shift_ks comma
+ </key>
+ <key>
+ key_span_width 1
+ bg 196:216:248
+ default SH
+ default_ks Shift_R
+ </key>
+ </row>
+ <row>
+ <key>
+ bg 196:216:248
+ default Ctrl
+ default_ks Control_L
+ </key>
+ <key>
+ bg 255:255:255
+ default EN
+ switch 0
+ </key>
+ <key>
+ bg 255:255:255
+ default 123
+ switch 2
+ </key>
+ <key>
+ bg 200:200:200
+ default_ks space
+ width 60
+ </key>
+ <key>
+ bg 196:216:248
+ default Alt
+ default_ks Alt_L
+ </key>
+ <key>
+ bg 255:255:255
+ default <
+ default_ks Left
+ </key>
+ <key>
+ bg 255:255:255
+ default >
+ default_ks Right
+ </key>
+ <key>
+ bg 255:255:255
+ default ^
+ default_ks Up
+ </key>
+ <key>
+ bg 255:255:255
+ default v
+ default_ks Down
+ </key>
+ </row>
+</layout>
+#[ ] ; : 1 2 3 + @ ± $ <-
+#{ } , . 4 5 6 - # _ € Tab
+#( ) ' " 7 8 9 * % ° ₤ Space
+#< > \ | ^ 0 = / & â„– â‚£ Reurn
+# English Russian <>^v
+<layout>
+ <row>
+ <key>
+ key_span_width 1
+ bg 248:255:196
+ default [
+ default_ks bracketleft
+ </key>
+ <key>
+ key_span_width 1
+ bg 248:255:196
+ default ]
+ default_ks bracketright
+ </key>
+ <key>
+ key_span_width 1
+ bg 248:255:196
+ default ;
+ default_ks semicolon
+ </key>
+ <key>
+ key_span_width 1
+ bg 248:255:196
+ default :
+ default_ks colon
+ </key>
+ <key>
+ bg 248:216:196
+ key_span_width 1
+ default $
+ default_ks dollar
+ </key>
+
+ <key>
+ width 1
+ </key>
+
+ <key>
+ key_span_width 1
+ default 1
+ default_ks 1
+ </key>
+ <key>
+ key_span_width 1
+ default 2
+ default_ks 2
+ </key>
+ <key>
+ key_span_width 1
+ default 3
+ default_ks 3
+ </key>
+ <key>
+ width 1
+ </key>
+ <key>
+ bg 248:216:196
+ key_span_width 1
+ default +
+ default_ks plus
+ </key>
+ <key>
+ bg 248:255:196
+ key_span_width 1
+ default @
+ default_ks at
+ </key>
+ <key>
+ bg 248:255:196
+ key_span_width 1
+ default ±
+ default_ks plusminus
+ </key>
+
+ <key>
+ bg 248:255:196
+ key_span_width 1
+ default ®
+ default_ks registered
+ </key>
+ <key>
+ bg 196:216:248
+ key_span_width 1
+# img /usr/share/xkbd/img/backspace.xpm
+ default <-
+ default_ks BackSpace
+ </key>
+ </row>
+ <row>
+ <key>
+ key_span_width 1
+ bg 248:255:196
+ default {
+ default_ks braceleft
+ </key>
+ <key>
+ key_span_width 1
+ bg 248:255:196
+ default }
+ default_ks braceright
+ </key>
+ <key>
+ key_span_width 1
+ bg 248:255:196
+ default ,
+ default_ks comma
+ </key>
+ <key>
+ key_span_width 1
+ bg 248:255:196
+ default .
+ default_ks period
+ default_ks period
+ </key>
+ <key>
+ bg 248:216:196
+ key_span_width 1
+ default €
+ default_ks EuroSign
+ </key>
+ <key>
+ width 1
+ </key>
+ <key>
+ key_span_width 1
+ default 4
+ default_ks 4
+ </key>
+ <key>
+ key_span_width 1
+ default 5
+ default_ks 5
+ </key>
+ <key>
+ key_span_width 1
+ default 6
+ default_ks 6
+ </key>
+ <key>
+ width 1
+ </key>
+ <key>
+ bg 248:216:196
+ key_span_width 1
+ default -
+ default_ks minus
+ </key>
+ <key>
+ bg 248:255:196
+ key_span_width 1
+ default #
+ default_ks numbersign
+ </key>
+ <key>
+ bg 248:255:196
+ key_span_width 1
+ default _
+ default_ks underscore
+ </key>
+
+ <key>
+ bg 248:255:196
+ key_span_width 1
+ default ©
+ default_ks copyright
+ </key>
+ <key>
+ bg 196:216:248
+ key_span_width 1
+ default Esc
+ default_ks Escape
+ </key>
+ </row>
+ <row>
+ <key>
+ key_span_width 1
+ bg 248:255:196
+ default (
+ default_ks parenleft
+ </key>
+ <key>
+ key_span_width 1
+ bg 248:255:196
+ default )
+ default_ks parenright
+ </key>
+ <key>
+ key_span_width 1
+ bg 248:255:196
+ default '
+ default_ks quoteright
+ </key>
+ <key>
+ key_span_width 1
+ bg 248:255:196
+ default "
+ default_ks quotedbl
+ </key>
+ <key>
+ bg 248:216:196
+ key_span_width 1
+ default ₤
+ default_ks sterling
+ </key>
+ <key>
+ width 1
+ </key>
+ <key>
+ key_span_width 1
+ default 7
+ default_ks 7
+ </key>
+ <key>
+ key_span_width 1
+ default 8
+ default_ks 8
+ </key>
+ <key>
+ key_span_width 1
+ default 9
+ default_ks 9
+ </key>
+ <key>
+ width 1
+ </key>
+ <key>
+ bg 248:216:196
+ key_span_width 1
+ default *
+ default_ks asterisk
+ </key>
+ <key>
+ bg 248:255:196
+ key_span_width 1
+ default %
+ default_ks percent
+ </key>
+ <key>
+ bg 248:255:196
+ key_span_width 1
+ default °
+ default_ks degree
+ </key>
+
+ <key>
+ bg 248:255:196
+ key_span_width 1
+ default ¤
+ default_ks currency
+ </key>
+ <key>
+ bg 196:216:248
+ key_span_width 1
+ default Ret
+ default_ks Return
+ </key>
+ </row>
+ <row>
+ <key>
+ key_span_width 1
+ bg 248:255:196
+ default <
+ default_ks less
+ </key>
+ <key>
+ key_span_width 1
+ bg 248:255:196
+ default >
+ default_ks greater
+ </key>
+ <key>
+ key_span_width 1
+ bg 248:255:196
+ default \
+ default_ks backslash
+ </key>
+ <key>
+ key_span_width 1
+ bg 248:255:196
+ default |
+ default_ks bar
+ </key>
+ <key>
+ bg 248:216:196
+ key_span_width 1
+ default ¥
+ default_ks yen
+ </key>
+ <key>
+ width 1
+ </key>
+ <key>
+ key_span_width 1
+ bg 248:255:196
+ default ^
+ default_ks asciicircum
+ </key>
+ <key>
+ key_span_width 1
+ default 0
+ default_ks 0
+ </key>
+ <key>
+ key_span_width 1
+ bg 248:255:196
+ default =
+ default_ks equal
+ </key>
+ <key>
+ width 1
+ </key>
+ <key>
+ bg 248:216:196
+ key_span_width 1
+ default /
+ default_ks slash
+ </key>
+ <key>
+ bg 248:255:196
+ key_span_width 1
+ default &
+ default_ks ampersand
+ </key>
+ <key>
+ bg 248:255:196
+ key_span_width 1
+ default â„–
+ default_ks numerosign
+ </key>
+ <key>
+ bg 248:255:196
+ key_span_width 1
+ default â„¢
+ default_ks trademark
+ </key>
+
+
+
+ <key>
+ bg 200:200:200
+ key_span_width 1
+ default Spc
+ default_ks space
+ </key>
+ </row>
+ <row>
+ <key>
+ bg 255:255:255
+ default English
+ switch 0
+ </key>
+ <key>
+ bg 255:255:255
+ default Russian
+ switch 1
+ </key>
+ <key>
+ bg 255:255:255
+ default <
+ default_ks Left
+ </key>
+ <key>
+ bg 255:255:255
+ default >
+ default_ks Right
+ </key>
+ <key>
+ bg 255:255:255
+ default ^
+ default_ks Up
+ </key>
+ <key>
+ bg 255:255:255
+ default v
+ default_ks Down
+ </key>
+ </row>
+</layout>
diff --git a/packages/xkbd/xkbd-layout-ru_0.1.1.bb b/packages/xkbd/xkbd-layout-ru_0.1.1.bb
index e65d91b7c0..53fbb3c7aa 100644
--- a/packages/xkbd/xkbd-layout-ru_0.1.1.bb
+++ b/packages/xkbd/xkbd-layout-ru_0.1.1.bb
@@ -3,16 +3,16 @@ SECTION = "x11"
PRIORITY = "optional"
LICENSE = "GPL"
PACKAGE_ARCH = "all"
-PR = "r0"
+PR = "r1"
RDEPENDS = "xkbd"
-SRC_URI = "http://whitenoise.ssrlab.com/pda/xkbd/xkbd-ru-en-123_0.1.1.tar.gz"
+#SRC_URI = "http://whitenoise.ssrlab.com/pda/xkbd/xkbd-ru-en-123_0.1.1.tar.gz"
+SRC_URI = "file://en-ru-123.xkbd"
S = "${WORKDIR}"
do_install () {
install -d ${D}${prefix}/share/xkbd
- cd usr/share/xkbd/
for i in *.xkbd; do
install -m 644 $i ${D}${prefix}/share/xkbd/${i}
done
diff --git a/packages/xkbd/xkbd_0.8.15.bb b/packages/xkbd/xkbd_0.8.15.bb
index 2d070fd7ad..cd41bc68f1 100644
--- a/packages/xkbd/xkbd_0.8.15.bb
+++ b/packages/xkbd/xkbd_0.8.15.bb
@@ -2,9 +2,11 @@ SRC_URI = "http://handhelds.org/~mallum/xkbd/xkbd-${PV}-CVS.tar.gz \
file://libtool-lossage.patch;patch=1;pnum=1 \
file://fix-equalsign.patch;patch=1 \
file://fix-circumkey.patch;patch=1 \
+ file://add-default-common-slides.patch;patch=1 \
+ file://differentiate-desktop-name.patch;patch=1 \
file://xkbd.png"
LICENSE = "GPL"
-PR = "r2"
+PR = "r4"
SECTION = "x11"
DEPENDS = "libxpm libxtst libxft"
diff --git a/packages/xorg-data/xbitmaps_1.0.1.bb b/packages/xorg-data/xbitmaps_1.0.1.bb
index 7d9dc18c84..6e5d7fe5ba 100644
--- a/packages/xorg-data/xbitmaps_1.0.1.bb
+++ b/packages/xorg-data/xbitmaps_1.0.1.bb
@@ -2,5 +2,5 @@ require xorg-data-common.inc
DESCRIPTION = "Common X11 Bitmaps"
LICENSE = "MIT"
-DEPENDS += "libxmu xbitmaps"
+DEPENDS += "libxmu"
diff --git a/packages/xorg-driver/xf86-video-ati_6.7.196.bb b/packages/xorg-driver/xf86-video-ati_6.7.196.bb
new file mode 100644
index 0000000000..994b8b6a3c
--- /dev/null
+++ b/packages/xorg-driver/xf86-video-ati_6.7.196.bb
@@ -0,0 +1,6 @@
+require xorg-driver-video.inc
+PE = "1"
+
+#DESCRIPTION = ""
+
+DEPENDS += " xineramaproto xf86miscproto drm xf86driproto"
diff --git a/packages/xorg-driver/xf86-video-vmware_10.15.2.bb b/packages/xorg-driver/xf86-video-vmware_10.15.2.bb
new file mode 100644
index 0000000000..994b8b6a3c
--- /dev/null
+++ b/packages/xorg-driver/xf86-video-vmware_10.15.2.bb
@@ -0,0 +1,6 @@
+require xorg-driver-video.inc
+PE = "1"
+
+#DESCRIPTION = ""
+
+DEPENDS += " xineramaproto xf86miscproto drm xf86driproto"
diff --git a/packages/xorg-driver/xf86-video-xgi_1.5.0.bb b/packages/xorg-driver/xf86-video-xgi_1.5.0.bb
new file mode 100644
index 0000000000..994b8b6a3c
--- /dev/null
+++ b/packages/xorg-driver/xf86-video-xgi_1.5.0.bb
@@ -0,0 +1,6 @@
+require xorg-driver-video.inc
+PE = "1"
+
+#DESCRIPTION = ""
+
+DEPENDS += " xineramaproto xf86miscproto drm xf86driproto"
diff --git a/packages/xorg-driver/xorg-driver-common.inc b/packages/xorg-driver/xorg-driver-common.inc
index 8053e6c236..3b3c205e9e 100644
--- a/packages/xorg-driver/xorg-driver-common.inc
+++ b/packages/xorg-driver/xorg-driver-common.inc
@@ -2,7 +2,7 @@ DESCRIPTION = "X driver"
HOMEPAGE = "http://www.x.org"
SECTION = "x11/drivers"
LICENSE = "MIT-X"
-PR = "r1"
+PR = "r2"
DEPENDS = "randrproto xorg-server xproto"
@@ -27,7 +27,7 @@ do_stage() {
do_configure_prepend() {
incdir=${STAGING_INCDIR}/xorg
- for f in dri.h sarea.h dristruct.h exa.h; do
+ for f in dri.h sarea.h dristruct.h exa.h damage.h; do
path="$incdir/$f"
if [ -f "$path" ]; then
p=`echo "$path" | sed 'y%*+%pp%;s%[^_[:alnum:]]%_%g'`
diff --git a/packages/xorg-lib/libx11-native_1.0.3.bb b/packages/xorg-lib/libx11-native_1.0.3.bb
new file mode 100644
index 0000000000..d9e0d05844
--- /dev/null
+++ b/packages/xorg-lib/libx11-native_1.0.3.bb
@@ -0,0 +1,28 @@
+DESCRIPTION = "Base X libs."
+SECTION = "x11/libs"
+PRIORITY = "optional"
+LICENSE = "XFree86"
+PE = "1"
+
+FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/libx11"
+
+DEPENDS = "xproto-native xextproto-native libxau-native xtrans-native libxdmcp-native xcmiscproto-native xf86bigfontproto-native kbproto-native inputproto-native bigreqsproto-native util-macros-native"
+PROVIDES = "x11-native"
+
+XORG_PN = "libX11"
+
+SRC_URI = "${XORG_MIRROR}/individual/lib/${XORG_PN}-${PV}.tar.bz2"
+S = "${WORKDIR}/libX11-${PV}"
+
+inherit native autotools pkgconfig
+
+EXTRA_OECONF="--enable-malloc0returnsnull"
+
+do_compile() {
+ (
+ unset CC LD CXX CCLD
+ oe_runmake -C src/util 'CC=${BUILD_CC}' 'LD=${BUILD_LD}' 'CXX=${BUILD_CXX}' 'CCLD=${BUILD_CCLD}' 'CFLAGS=-D_GNU_SOURCE ${BUILD_CFLAGS}' 'LDFLAGS=${BUILD_LDFLAGS}' 'CXXFLAGS=${BUILD_CXXFLAGS}' 'CPPFLAGS=${BUILD_CPPFLAGS}' makekeys
+ )
+ rm -f ${STAGING_INCDIR}/X11/Xlib.h
+ oe_runmake
+}
diff --git a/packages/xorg-lib/libx11-native_1.1.1.bb b/packages/xorg-lib/libx11-native_1.1.1.bb
new file mode 100644
index 0000000000..3f31dc21a4
--- /dev/null
+++ b/packages/xorg-lib/libx11-native_1.1.1.bb
@@ -0,0 +1,28 @@
+DESCRIPTION = "Base X libs."
+SECTION = "x11/libs"
+PRIORITY = "optional"
+LICENSE = "XFree86"
+PE = "1"
+
+FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/libx11"
+
+DEPENDS = "xproto-native xextproto-native libxau-native xtrans-native libxdmcp-native xcmiscproto-native xf86bigfontproto-native kbproto-native inputproto-native bigreqsproto-native util-macros-native"
+PROVIDES = "x11-native"
+
+XORG_PN = "libX11"
+
+SRC_URI = "${XORG_MIRROR}/individual/lib/${XORG_PN}-1.1.1.tar.bz2"
+S = "${WORKDIR}/libX11-${PV}"
+
+inherit native autotools pkgconfig
+
+EXTRA_OECONF += "--without-xcb"
+
+do_compile() {
+ (
+ unset CC LD CXX CCLD
+ oe_runmake -C src/util 'CC=${BUILD_CC}' 'LD=${BUILD_LD}' 'CXX=${BUILD_CXX}' 'CCLD=${BUILD_CCLD}' 'CFLAGS=-D_GNU_SOURCE ${BUILD_CFLAGS}' 'LDFLAGS=${BUILD_LDFLAGS}' 'CXXFLAGS=${BUILD_CXXFLAGS}' 'CPPFLAGS=${BUILD_CPPFLAGS}' makekeys
+ )
+ rm -f ${STAGING_INCDIR}/X11/Xlib.h
+ oe_runmake
+}
diff --git a/packages/xorg-lib/pixman_0.9.6.bb b/packages/xorg-lib/pixman_0.9.6.bb
index dec40fac4d..1269ff46a7 100644
--- a/packages/xorg-lib/pixman_0.9.6.bb
+++ b/packages/xorg-lib/pixman_0.9.6.bb
@@ -1,6 +1,14 @@
-require xorg-lib-common.inc
-
-DESCRIPTION = "Library for lowlevel pixel operations"
-DEPENDS = "virtual/libx11"
+SECTION = "libs"
+PRIORITY = "optional"
+DESCRIPTION = "Low-level pixel manipulation library."
+LICENSE = "X11"
SRC_URI = "http://cairographics.org/releases/pixman-${PV}.tar.gz"
+S = "${WORKDIR}/pixman-${PV}"
+
+inherit autotools pkgconfig
+
+do_stage () {
+ autotools_stage_all
+}
+
diff --git a/packages/xorg-xserver/xorg-xserver-common.inc b/packages/xorg-xserver/xorg-xserver-common.inc
index 8ee6c3e04e..2e8535ef30 100644
--- a/packages/xorg-xserver/xorg-xserver-common.inc
+++ b/packages/xorg-xserver/xorg-xserver-common.inc
@@ -31,9 +31,9 @@ FILES_${PN}-utils = "${bindir}/scanpci ${bindir}/pcitweak ${bindir}/ioport ${bin
FILES_${PN} = "${bindir} ${libdir}/X11/Options ${libdir}/X11/Cards ${libdir}/X11/getconfig ${libdir}/X11/etc ${libdir}/xserver/SecurityPolicy ${libdir}/modules ${libdir}/xorg/modules /etc/X11 "
FILES_${PN}-doc += "${libdir}/X11/doc /usr/share/X11/xkb/compiled/README.compiled"
-FILES_${PN}-dbg += "${libdir}//xorg/modules/.debug \
+FILES_${PN}-dbg += "${libdir}/xorg/modules/.debug \
${libdir}/xorg/modules/*/.debug \
- ${libdir}//xorg/modules/*/*/.debug \
+ ${libdir}/xorg/modules/*/*/.debug \
"
do_stage() {
diff --git a/packages/xorg-xserver/xserver-kdrive-1.3.0.0/build-glamo.patch b/packages/xorg-xserver/xserver-kdrive-1.3.0.0/build-glamo.patch
new file mode 100644
index 0000000000..208e599ee1
--- /dev/null
+++ b/packages/xorg-xserver/xserver-kdrive-1.3.0.0/build-glamo.patch
@@ -0,0 +1,91 @@
+Index: xorg-server-1.3.0.0/configure.ac
+===================================================================
+--- xorg-server-1.3.0.0.orig/configure.ac 2007-11-22 17:40:34.000000000 +0800
++++ xorg-server-1.3.0.0/configure.ac 2007-11-22 17:59:56.000000000 +0800
+@@ -1576,6 +1576,7 @@
+ AM_CONDITIONAL(H3600_TS, false)
+ AM_CONDITIONAL(KDRIVEVESA, [test x"$ac_cv_header_sys_vm86_h" = xyes])
+ AM_CONDITIONAL(KDRIVEFBDEV, [test x"$ac_cv_header_linux_fb_h" = xyes])
++AM_CONDITIONAL(KDRIVEGLAMO, [test x"$ac_cv_header_sys_vm86_h" = xyes -o x"$ac_cv_header_linux_fb_h" = xyes])
+
+ # Xephyr needs nanosleep() which is in librt on Solaris
+ AC_CHECK_FUNC([nanosleep], [],
+@@ -1824,6 +1825,7 @@
+ hw/kdrive/chips/Makefile
+ hw/kdrive/ephyr/Makefile
+ hw/kdrive/epson/Makefile
++hw/kdrive/glamo/Makefile
+ hw/kdrive/fake/Makefile
+ hw/kdrive/fbdev/Makefile
+ hw/kdrive/w100/Makefile
+Index: xorg-server-1.3.0.0/hw/kdrive/Makefile.am
+===================================================================
+--- xorg-server-1.3.0.0.orig/hw/kdrive/Makefile.am 2007-11-22 17:40:34.000000000 +0800
++++ xorg-server-1.3.0.0/hw/kdrive/Makefile.am 2007-11-22 17:54:54.000000000 +0800
+@@ -7,6 +7,10 @@
+ FBDEV_SUBDIRS = fbdev epson
+ endif
+
++if KDRIVEGLAMO
++GLAMO_SUBDIRS = glamo
++endif
++
+ if KDRIVEW100
+ W100_SUBDIRS = w100
+ endif
+@@ -30,8 +34,9 @@
+ $(FBDEV_SUBDIRS) \
+ $(W100_SUBDIRS) \
+ $(VESA_SUBDIRS) \
++ $(GLAMO_SUBDIRS) \
+ $(XEPHYR_SUBDIRS) \
+ fake
+
+ DIST_SUBDIRS = vesa ati chips epson i810 mach64 mga neomagic nvidia pm2 r128 \
+- smi via fbdev sdl ephyr src linux fake sis300
++ smi via fbdev sdl ephyr src linux fake sis300 glamo
+Index: xorg-server-1.3.0.0/hw/kdrive/glamo/Makefile.am
+===================================================================
+--- xorg-server-1.3.0.0.orig/hw/kdrive/glamo/Makefile.am 2007-11-22 17:40:34.000000000 +0800
++++ xorg-server-1.3.0.0/hw/kdrive/glamo/Makefile.am 2007-11-22 17:40:35.000000000 +0800
+@@ -41,11 +41,14 @@
+
+ Xglamo_LDADD = \
+ $(GLAMO_LIBS) \
+- @KDRIVE_LIBS@
++ @KDRIVE_LIBS@ \
++ @XSERVER_LIBS@
+
+ Xglamo_DEPENDENCIES = \
+ libglamo.a \
+- @KDRIVE_LOCAL_LIBS@
++ $(FBDEV_LIBS) \
++ $(VESA_LIBS) \
++ $(DRI_LIBS)
+
+ relink:
+ rm -f $(bin_PROGRAMS) && make $(bin_PROGRAMS)
+Index: xorg-server-1.3.0.0/hw/kdrive/glamo/glamo_stub.c
+===================================================================
+--- xorg-server-1.3.0.0.orig/hw/kdrive/glamo/glamo_stub.c 2007-11-22 17:40:34.000000000 +0800
++++ xorg-server-1.3.0.0/hw/kdrive/glamo/glamo_stub.c 2007-11-22 17:40:35.000000000 +0800
+@@ -49,16 +49,10 @@
+ void
+ InitInput(int argc, char **argv)
+ {
+- KdKeyboardInfo *ki;
+-
+- KdAddKeyboardDriver(&LinuxKeyboardDriver);
+- KdAddPointerDriver(&LinuxMouseDriver);
+-#ifdef TSLIB
+- KdAddPointerDriver(&TsDriver);
++ KdInitInput (&LinuxEvdevMouseFuncs, &LinuxEvdevKeyboardFuncs);
++#ifdef TOUCHSCREEN
++ KdAddMouseDriver (&TsFuncs);
+ #endif
+-
+- ki = KdParseKeyboard("keybd");
+- KdAddKeyboard(ki);
+ }
+
+ void
diff --git a/packages/xorg-xserver/xserver-kdrive-1.3.0.0/smedia-glamo.patch b/packages/xorg-xserver/xserver-kdrive-1.3.0.0/smedia-glamo.patch
new file mode 100644
index 0000000000..4ad3573c95
--- /dev/null
+++ b/packages/xorg-xserver/xserver-kdrive-1.3.0.0/smedia-glamo.patch
@@ -0,0 +1,3702 @@
+Index: xserver/hw/kdrive/glamo/Makefile.am
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ xserver/hw/kdrive/glamo/Makefile.am 2007-09-25 19:32:10.000000000 +0800
+@@ -0,0 +1,51 @@
++if KDRIVEFBDEV
++FBDEV_INCLUDES =-I$(top_srcdir)/hw/kdrive/fbdev
++FBDEV_LIBS = $(top_builddir)/hw/kdrive/fbdev/libfbdev.a
++endif
++
++if KDRIVEVESA
++VESA_INCLUDES = -I$(top_srcdir)/hw/kdrive/vesa
++VESA_LIBS = $(top_builddir)/hw/kdrive/vesa/libvesa.a
++endif
++
++INCLUDES = \
++ @KDRIVE_INCS@ \
++ $(DRI_INCLUDES) \
++ $(FBDEV_INCLUDES) \
++ $(VESA_INCLUDES) \
++ @KDRIVE_CFLAGS@
++
++bin_PROGRAMS = Xglamo
++
++noinst_LIBRARIES = libglamo.a
++
++libglamo_a_SOURCES = \
++ glamo_dma.c \
++ glamo_dma.h \
++ glamo_draw.c \
++ glamo_draw.h \
++ glamo.c \
++ glamo.h \
++ glamo-regs.h \
++ glamo_video.c
++
++Xglamo_SOURCES = \
++ glamo_stub.c
++
++GLAMO_LIBS = \
++ libglamo.a \
++ $(FBDEV_LIBS) \
++ $(VESA_LIBS) \
++ $(DRI_LIBS) \
++ @KDRIVE_LIBS@
++
++Xglamo_LDADD = \
++ $(GLAMO_LIBS) \
++ @KDRIVE_LIBS@
++
++Xglamo_DEPENDENCIES = \
++ libglamo.a \
++ @KDRIVE_LOCAL_LIBS@
++
++relink:
++ rm -f $(bin_PROGRAMS) && make $(bin_PROGRAMS)
+Index: xserver/hw/kdrive/glamo/glamo-regs.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ xserver/hw/kdrive/glamo/glamo-regs.h 2007-09-25 19:00:20.000000000 +0800
+@@ -0,0 +1,685 @@
++#ifndef _GLAMO_REGS_H
++#define _GLAMO_REGS_H
++
++/* Smedia Glamo 336x/337x driver
++ *
++ * (C) 2007 by OpenMoko, Inc.
++ * Author: Harald Welte <laforge@openmoko.org>
++ * All rights reserved.
++ *
++ * 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
++ */
++
++enum glamo_regster_offsets {
++ GLAMO_REGOFS_GENERIC = 0x0000,
++ GLAMO_REGOFS_HOSTBUS = 0x0200,
++ GLAMO_REGOFS_MEMORY = 0x0300,
++ GLAMO_REGOFS_VIDCAP = 0x0400,
++ GLAMO_REGOFS_ISP = 0x0500,
++ GLAMO_REGOFS_JPEG = 0x0800,
++ GLAMO_REGOFS_MPEG = 0x0c00,
++ GLAMO_REGOFS_LCD = 0x1100,
++ GLAMO_REGOFS_MMC = 0x1400,
++ GLAMO_REGOFS_MPROC0 = 0x1500,
++ GLAMO_REGOFS_MPROC1 = 0x1580,
++ GLAMO_REGOFS_CMDQUEUE = 0x1600,
++ GLAMO_REGOFS_RISC = 0x1680,
++ GLAMO_REGOFS_2D = 0x1700,
++ GLAMO_REGOFS_3D = 0x1b00,
++};
++
++
++enum glamo_register_generic {
++ GLAMO_REG_GCONF1 = 0x0000,
++ GLAMO_REG_GCONF2 = 0x0002,
++#define GLAMO_REG_DEVICE_ID GLAMO_REG_GCONF2
++ GLAMO_REG_GCONF3 = 0x0004,
++#define GLAMO_REG_REVISION_ID GLAMO_REG_GCONF3
++ GLAMO_REG_IRQ_GEN1 = 0x0006,
++#define GLAMO_REG_IRQ_ENABLE GLAMO_REG_IRQ_GEN1
++ GLAMO_REG_IRQ_GEN2 = 0x0008,
++#define GLAMO_REG_IRQ_SET GLAMO_REG_IRQ_GEN2
++ GLAMO_REG_IRQ_GEN3 = 0x000a,
++#define GLAMO_REG_IRQ_CLEAR GLAMO_REG_IRQ_GEN3
++ GLAMO_REG_IRQ_GEN4 = 0x000c,
++#define GLAMO_REG_IRQ_STATUS GLAMO_REG_IRQ_GEN4
++ GLAMO_REG_CLOCK_HOST = 0x0010,
++ GLAMO_REG_CLOCK_MEMORY = 0x0012,
++ GLAMO_REG_CLOCK_LCD = 0x0014,
++ GLAMO_REG_CLOCK_MMC = 0x0016,
++ GLAMO_REG_CLOCK_ISP = 0x0018,
++ GLAMO_REG_CLOCK_JPEG = 0x001a,
++ GLAMO_REG_CLOCK_3D = 0x001c,
++ GLAMO_REG_CLOCK_2D = 0x001e,
++ GLAMO_REG_CLOCK_RISC1 = 0x0020, /* 3365 only? */
++ GLAMO_REG_CLOCK_RISC2 = 0x0022, /* 3365 only? */
++ GLAMO_REG_CLOCK_MPEG = 0x0024,
++ GLAMO_REG_CLOCK_MPROC = 0x0026,
++
++ GLAMO_REG_CLOCK_GEN5_1 = 0x0030,
++ GLAMO_REG_CLOCK_GEN5_2 = 0x0032,
++ GLAMO_REG_CLOCK_GEN6 = 0x0034,
++ GLAMO_REG_CLOCK_GEN7 = 0x0036,
++ GLAMO_REG_CLOCK_GEN8 = 0x0038,
++ GLAMO_REG_CLOCK_GEN9 = 0x003a,
++ GLAMO_REG_CLOCK_GEN10 = 0x003c,
++ GLAMO_REG_CLOCK_GEN11 = 0x003e,
++ GLAMO_REG_PLL_GEN1 = 0x0040,
++ GLAMO_REG_PLL_GEN2 = 0x0042,
++ GLAMO_REG_PLL_GEN3 = 0x0044,
++ GLAMO_REG_PLL_GEN4 = 0x0046,
++ GLAMO_REG_PLL_GEN5 = 0x0048,
++ GLAMO_REG_GPIO_GEN1 = 0x0050,
++ GLAMO_REG_GPIO_GEN2 = 0x0052,
++ GLAMO_REG_GPIO_GEN3 = 0x0054,
++ GLAMO_REG_GPIO_GEN4 = 0x0056,
++ GLAMO_REG_GPIO_GEN5 = 0x0058,
++ GLAMO_REG_GPIO_GEN6 = 0x005a,
++ GLAMO_REG_GPIO_GEN7 = 0x005c,
++ GLAMO_REG_GPIO_GEN8 = 0x005e,
++ GLAMO_REG_GPIO_GEN9 = 0x0060,
++ GLAMO_REG_GPIO_GEN10 = 0x0062,
++ GLAMO_REG_DFT_GEN1 = 0x0070,
++ GLAMO_REG_DFT_GEN2 = 0x0072,
++ GLAMO_REG_DFT_GEN3 = 0x0074,
++ GLAMO_REG_DFT_GEN4 = 0x0076,
++
++ GLAMO_REG_DFT_GEN5 = 0x01e0,
++ GLAMO_REG_DFT_GEN6 = 0x01f0,
++};
++
++#define GLAMO_REG_HOSTBUS(x) (GLAMO_REGOFS_HOSTBUS-2+(x*2))
++
++#define REG_MEM(x) (GLAMO_REGOFS_MEMORY+(x))
++#define GLAMO_REG_MEM_TIMING(x) (GLAMO_REG_MEM_TIMING1-2+(x*2))
++
++enum glamo_register_mem {
++ GLAMO_REG_MEM_TYPE = REG_MEM(0x00),
++ GLAMO_REG_MEM_GEN = REG_MEM(0x02),
++ GLAMO_REG_MEM_TIMING1 = REG_MEM(0x04),
++ GLAMO_REG_MEM_TIMING2 = REG_MEM(0x06),
++ GLAMO_REG_MEM_TIMING3 = REG_MEM(0x08),
++ GLAMO_REG_MEM_TIMING4 = REG_MEM(0x0a),
++ GLAMO_REG_MEM_TIMING5 = REG_MEM(0x0c),
++ GLAMO_REG_MEM_TIMING6 = REG_MEM(0x0e),
++ GLAMO_REG_MEM_TIMING7 = REG_MEM(0x10),
++ GLAMO_REG_MEM_TIMING8 = REG_MEM(0x12),
++ GLAMO_REG_MEM_TIMING9 = REG_MEM(0x14),
++ GLAMO_REG_MEM_TIMING10 = REG_MEM(0x16),
++ GLAMO_REG_MEM_TIMING11 = REG_MEM(0x18),
++ GLAMO_REG_MEM_POWER1 = REG_MEM(0x1a),
++ GLAMO_REG_MEM_POWER2 = REG_MEM(0x1c),
++ GLAMO_REG_MEM_LCD_BUF1 = REG_MEM(0x1e),
++ GLAMO_REG_MEM_LCD_BUF2 = REG_MEM(0x20),
++ GLAMO_REG_MEM_LCD_BUF3 = REG_MEM(0x22),
++ GLAMO_REG_MEM_LCD_BUF4 = REG_MEM(0x24),
++ GLAMO_REG_MEM_BIST1 = REG_MEM(0x26),
++ GLAMO_REG_MEM_BIST2 = REG_MEM(0x28),
++ GLAMO_REG_MEM_BIST3 = REG_MEM(0x2a),
++ GLAMO_REG_MEM_BIST4 = REG_MEM(0x2c),
++ GLAMO_REG_MEM_BIST5 = REG_MEM(0x2e),
++ GLAMO_REG_MEM_MAH1 = REG_MEM(0x30),
++ GLAMO_REG_MEM_MAH2 = REG_MEM(0x32),
++ GLAMO_REG_MEM_DRAM1 = REG_MEM(0x34),
++ GLAMO_REG_MEM_DRAM2 = REG_MEM(0x36),
++ GLAMO_REG_MEM_CRC = REG_MEM(0x38),
++};
++
++#define GLAMO_MEM_TYPE_MASK 0x03
++
++enum glamo_reg_mem_dram1 {
++ GLAMO_MEM_DRAM1_EN_SDRAM_CLK = (1 << 11),
++ GLAMO_MEM_DRAM1_SELF_REFRESH = (1 << 12),
++};
++
++enum glamo_reg_mem_dram2 {
++ GLAMO_MEM_DRAM2_DEEP_PWRDOWN = (1 << 12),
++};
++
++enum glamo_irq {
++ GLAMO_IRQ_HOSTBUS = 0x0001,
++ GLAMO_IRQ_JPEG = 0x0002,
++ GLAMO_IRQ_MPEG = 0x0004,
++ GLAMO_IRQ_MPROC1 = 0x0008,
++ GLAMO_IRQ_MPROC0 = 0x0010,
++ GLAMO_IRQ_CMDQUEUE = 0x0020,
++ GLAMO_IRQ_2D = 0x0040,
++ GLAMO_IRQ_MMC = 0x0080,
++ GLAMO_IRQ_RISC = 0x0100,
++};
++
++enum glamo_reg_clock_host {
++ GLAMO_CLOCK_HOST_DG_BCLK = 0x0001,
++ GLAMO_CLOCK_HOST_DG_M0CLK = 0x0004,
++ GLAMO_CLOCK_HOST_RESET = 0x1000,
++};
++
++enum glamo_reg_clock_mem {
++ GLAMO_CLOCK_MEM_DG_M1CLK = 0x0001,
++ GLAMO_CLOCK_MEM_EN_M1CLK = 0x0002,
++ GLAMO_CLOCK_MEM_DG_MOCACLK = 0x0004,
++ GLAMO_CLOCK_MEM_EN_MOCACLK = 0x0008,
++ GLAMO_CLOCK_MEM_RESET = 0x1000,
++ GLAMO_CLOCK_MOCA_RESET = 0x2000,
++};
++
++enum glamo_reg_clock_lcd {
++ GLAMO_CLOCK_LCD_DG_DCLK = 0x0001,
++ GLAMO_CLOCK_LCD_EN_DCLK = 0x0002,
++ GLAMO_CLOCK_LCD_DG_DMCLK = 0x0004,
++ GLAMO_CLOCK_LCD_EN_DMCLK = 0x0008,
++ //
++ GLAMO_CLOCK_LCD_EN_DHCLK = 0x0020,
++ GLAMO_CLOCK_LCD_DG_M5CLK = 0x0040,
++ GLAMO_CLOCK_LCD_EN_M5CLK = 0x0080,
++ GLAMO_CLOCK_LCD_RESET = 0x1000,
++};
++
++enum glamo_reg_clock_mmc {
++ GLAMO_CLOCK_MMC_DG_TCLK = 0x0001,
++ GLAMO_CLOCK_MMC_EN_TCLK = 0x0002,
++ GLAMO_CLOCK_MMC_DG_M9CLK = 0x0004,
++ GLAMO_CLOCK_MMC_EN_M9CLK = 0x0008,
++ GLAMO_CLOCK_MMC_RESET = 0x1000,
++};
++
++enum glamo_reg_clock_isp {
++ GLAMO_CLOCK_ISP_DG_I1CLK = 0x0001,
++ GLAMO_CLOCK_ISP_EN_I1CLK = 0x0002,
++ GLAMO_CLOCK_ISP_DG_CCLK = 0x0004,
++ GLAMO_CLOCK_ISP_EN_CCLK = 0x0008,
++ //
++ GLAMO_CLOCK_ISP_EN_SCLK = 0x0020,
++ GLAMO_CLOCK_ISP_DG_M2CLK = 0x0040,
++ GLAMO_CLOCK_ISP_EN_M2CLK = 0x0080,
++ GLAMO_CLOCK_ISP_DG_M15CLK = 0x0100,
++ GLAMO_CLOCK_ISP_EN_M15CLK = 0x0200,
++ GLAMO_CLOCK_ISP1_RESET = 0x1000,
++ GLAMO_CLOCK_ISP2_RESET = 0x2000,
++};
++
++enum glamo_reg_clock_jpeg {
++ GLAMO_CLOCK_JPEG_DG_JCLK = 0x0001,
++ GLAMO_CLOCK_JPEG_EN_JCLK = 0x0002,
++ GLAMO_CLOCK_JPEG_DG_M3CLK = 0x0004,
++ GLAMO_CLOCK_JPEG_EN_M3CLK = 0x0008,
++ GLAMO_CLOCK_JPEG_RESET = 0x1000,
++};
++
++enum glamo_reg_clock_2d {
++ GLAMO_CLOCK_2D_DG_GCLK = 0x0001,
++ GLAMO_CLOCK_2D_EN_GCLK = 0x0002,
++ GLAMO_CLOCK_2D_DG_M7CLK = 0x0004,
++ GLAMO_CLOCK_2D_EN_M7CLK = 0x0008,
++ GLAMO_CLOCK_2D_DG_M6CLK = 0x0010,
++ GLAMO_CLOCK_2D_EN_M6CLK = 0x0020,
++ GLAMO_CLOCK_2D_RESET = 0x1000,
++ GLAMO_CLOCK_2D_CQ_RESET = 0x2000,
++};
++
++enum glamo_reg_clock_3d {
++ GLAMO_CLOCK_3D_DG_ECLK = 0x0001,
++ GLAMO_CLOCK_3D_EN_ECLK = 0x0002,
++ GLAMO_CLOCK_3D_DG_RCLK = 0x0004,
++ GLAMO_CLOCK_3D_EN_RCLK = 0x0008,
++ GLAMO_CLOCK_3D_DG_M8CLK = 0x0010,
++ GLAMO_CLOCK_3D_EN_M8CLK = 0x0020,
++ GLAMO_CLOCK_3D_BACK_RESET = 0x1000,
++ GLAMO_CLOCK_3D_FRONT_RESET = 0x2000,
++};
++
++enum glamo_reg_clock_mpeg {
++ GLAMO_CLOCK_MPEG_DG_X0CLK = 0x0001,
++ GLAMO_CLOCK_MPEG_EN_X0CLK = 0x0002,
++ GLAMO_CLOCK_MPEG_DG_X1CLK = 0x0004,
++ GLAMO_CLOCK_MPEG_EN_X1CLK = 0x0008,
++ GLAMO_CLOCK_MPEG_DG_X2CLK = 0x0010,
++ GLAMO_CLOCK_MPEG_EN_X2CLK = 0x0020,
++ GLAMO_CLOCK_MPEG_DG_X3CLK = 0x0040,
++ GLAMO_CLOCK_MPEG_EN_X3CLK = 0x0080,
++ GLAMO_CLOCK_MPEG_DG_X4CLK = 0x0100,
++ GLAMO_CLOCK_MPEG_EN_X4CLK = 0x0200,
++ GLAMO_CLOCK_MPEG_DG_X6CLK = 0x0400,
++ GLAMO_CLOCK_MPEG_EN_X6CLK = 0x0800,
++ GLAMO_CLOCK_MPEG_ENC_RESET = 0x1000,
++ GLAMO_CLOCK_MPEG_DEC_RESET = 0x2000,
++};
++
++enum glamo_reg_clock51 {
++ GLAMO_CLOCK_GEN51_EN_DIV_MCLK = 0x0001,
++ GLAMO_CLOCK_GEN51_EN_DIV_SCLK = 0x0002,
++ GLAMO_CLOCK_GEN51_EN_DIV_JCLK = 0x0004,
++ GLAMO_CLOCK_GEN51_EN_DIV_DCLK = 0x0008,
++ GLAMO_CLOCK_GEN51_EN_DIV_DMCLK = 0x0010,
++ GLAMO_CLOCK_GEN51_EN_DIV_DHCLK = 0x0020,
++ GLAMO_CLOCK_GEN51_EN_DIV_GCLK = 0x0040,
++ GLAMO_CLOCK_GEN51_EN_DIV_TCLK = 0x0080,
++ /* FIXME: higher bits */
++};
++
++enum glamo_reg_clock52 {
++ GLAMO_CLOCK_GEN52_EN_DIV_ACLK = 0x0001,
++ GLAMO_CLOCK_GEN52_EN_DIV_AMCLK = 0x0002,
++ GLAMO_CLOCK_GEN52_EN_DIV_OCLK = 0x0004,
++ GLAMO_CLOCK_GEN52_EN_DIV_ZCLK = 0x0008,
++ GLAMO_CLOCK_GEN52_EN_DIV_ICLK = 0x0010,
++ /* FIXME: higher bits */
++};
++
++enum glamo_reg_hostbus2 {
++ GLAMO_HOSTBUS2_MMIO_EN_ISP = 0x0001,
++ GLAMO_HOSTBUS2_MMIO_EN_JPEG = 0x0002,
++ GLAMO_HOSTBUS2_MMIO_EN_MPEG = 0x0004,
++ GLAMO_HOSTBUS2_MMIO_EN_LCD = 0x0008,
++ GLAMO_HOSTBUS2_MMIO_EN_MMC = 0x0010,
++ GLAMO_HOSTBUS2_MMIO_EN_MICROP0 = 0x0020,
++ GLAMO_HOSTBUS2_MMIO_EN_MICROP1 = 0x0040,
++ GLAMO_HOSTBUS2_MMIO_EN_CQ = 0x0080,
++ GLAMO_HOSTBUS2_MMIO_EN_RISC = 0x0100,
++ GLAMO_HOSTBUS2_MMIO_EN_2D = 0x0200,
++ GLAMO_HOSTBUS2_MMIO_EN_3D = 0x0400,
++};
++
++/* LCD Controller */
++
++#define REG_LCD(x) (x)
++enum glamo_reg_lcd {
++ GLAMO_REG_LCD_MODE1 = REG_LCD(0x00),
++ GLAMO_REG_LCD_MODE2 = REG_LCD(0x02),
++ GLAMO_REG_LCD_MODE3 = REG_LCD(0x04),
++ GLAMO_REG_LCD_WIDTH = REG_LCD(0x06),
++ GLAMO_REG_LCD_HEIGHT = REG_LCD(0x08),
++ GLAMO_REG_LCD_POLARITY = REG_LCD(0x0a),
++ GLAMO_REG_LCD_A_BASE1 = REG_LCD(0x0c),
++ GLAMO_REG_LCD_A_BASE2 = REG_LCD(0x0e),
++ GLAMO_REG_LCD_B_BASE1 = REG_LCD(0x10),
++ GLAMO_REG_LCD_B_BASE2 = REG_LCD(0x12),
++ GLAMO_REG_LCD_C_BASE1 = REG_LCD(0x14),
++ GLAMO_REG_LCD_C_BASE2 = REG_LCD(0x16),
++ GLAMO_REG_LCD_PITCH = REG_LCD(0x18),
++ /* RES */
++ GLAMO_REG_LCD_HORIZ_TOTAL = REG_LCD(0x1c),
++ /* RES */
++ GLAMO_REG_LCD_HORIZ_RETR_START = REG_LCD(0x20),
++ /* RES */
++ GLAMO_REG_LCD_HORIZ_RETR_END = REG_LCD(0x24),
++ /* RES */
++ GLAMO_REG_LCD_HORIZ_DISP_START = REG_LCD(0x28),
++ /* RES */
++ GLAMO_REG_LCD_HORIZ_DISP_END = REG_LCD(0x2c),
++ /* RES */
++ GLAMO_REG_LCD_VERT_TOTAL = REG_LCD(0x30),
++ /* RES */
++ GLAMO_REG_LCD_VERT_RETR_START = REG_LCD(0x34),
++ /* RES */
++ GLAMO_REG_LCD_VERT_RETR_END = REG_LCD(0x38),
++ /* RES */
++ GLAMO_REG_LCD_VERT_DISP_START = REG_LCD(0x3c),
++ /* RES */
++ GLAMO_REG_LCD_VERT_DISP_END = REG_LCD(0x40),
++ /* RES */
++ GLAMO_REG_LCD_POL = REG_LCD(0x44),
++ GLAMO_REG_LCD_DATA_START = REG_LCD(0x46),
++ GLAMO_REG_LCD_FRATE_CONTRO = REG_LCD(0x48),
++ GLAMO_REG_LCD_DATA_CMD_HDR = REG_LCD(0x4a),
++ GLAMO_REG_LCD_SP_START = REG_LCD(0x4c),
++ GLAMO_REG_LCD_SP_END = REG_LCD(0x4e),
++ GLAMO_REG_LCD_CURSOR_BASE1 = REG_LCD(0x50),
++ GLAMO_REG_LCD_CURSOR_BASE2 = REG_LCD(0x52),
++ GLAMO_REG_LCD_CURSOR_PITCH = REG_LCD(0x54),
++ GLAMO_REG_LCD_CURSOR_X_SIZE = REG_LCD(0x56),
++ GLAMO_REG_LCD_CURSOR_Y_SIZE = REG_LCD(0x58),
++ GLAMO_REG_LCD_CURSOR_X_POS = REG_LCD(0x5a),
++ GLAMO_REG_LCD_CURSOR_Y_POS = REG_LCD(0x5c),
++ GLAMO_REG_LCD_CURSOR_PRESET = REG_LCD(0x5e),
++ GLAMO_REG_LCD_CURSOR_FG_COLOR = REG_LCD(0x60),
++ /* RES */
++ GLAMO_REG_LCD_CURSOR_BG_COLOR = REG_LCD(0x64),
++ /* RES */
++ GLAMO_REG_LCD_CURSOR_DST_COLOR = REG_LCD(0x68),
++ /* RES */
++ GLAMO_REG_LCD_STATUS1 = REG_LCD(0x80),
++ GLAMO_REG_LCD_STATUS2 = REG_LCD(0x82),
++ GLAMO_REG_LCD_STATUS3 = REG_LCD(0x84),
++ GLAMO_REG_LCD_STATUS4 = REG_LCD(0x86),
++ /* RES */
++ GLAMO_REG_LCD_COMMAND1 = REG_LCD(0xa0),
++ GLAMO_REG_LCD_COMMAND2 = REG_LCD(0xa2),
++ /* RES */
++ GLAMO_REG_LCD_WFORM_DELAY1 = REG_LCD(0xb0),
++ GLAMO_REG_LCD_WFORM_DELAY2 = REG_LCD(0xb2),
++ /* RES */
++ GLAMO_REG_LCD_GAMMA_CORR = REG_LCD(0x100),
++ /* RES */
++ GLAMO_REG_LCD_GAMMA_R_ENTRY01 = REG_LCD(0x110),
++ GLAMO_REG_LCD_GAMMA_R_ENTRY23 = REG_LCD(0x112),
++ GLAMO_REG_LCD_GAMMA_R_ENTRY45 = REG_LCD(0x114),
++ GLAMO_REG_LCD_GAMMA_R_ENTRY67 = REG_LCD(0x116),
++ GLAMO_REG_LCD_GAMMA_R_ENTRY8 = REG_LCD(0x118),
++ /* RES */
++ GLAMO_REG_LCD_GAMMA_G_ENTRY01 = REG_LCD(0x130),
++ GLAMO_REG_LCD_GAMMA_G_ENTRY23 = REG_LCD(0x132),
++ GLAMO_REG_LCD_GAMMA_G_ENTRY45 = REG_LCD(0x134),
++ GLAMO_REG_LCD_GAMMA_G_ENTRY67 = REG_LCD(0x136),
++ GLAMO_REG_LCD_GAMMA_G_ENTRY8 = REG_LCD(0x138),
++ /* RES */
++ GLAMO_REG_LCD_GAMMA_B_ENTRY01 = REG_LCD(0x150),
++ GLAMO_REG_LCD_GAMMA_B_ENTRY23 = REG_LCD(0x152),
++ GLAMO_REG_LCD_GAMMA_B_ENTRY45 = REG_LCD(0x154),
++ GLAMO_REG_LCD_GAMMA_B_ENTRY67 = REG_LCD(0x156),
++ GLAMO_REG_LCD_GAMMA_B_ENTRY8 = REG_LCD(0x158),
++ /* RES */
++ GLAMO_REG_LCD_SRAM_DRIVING1 = REG_LCD(0x160),
++ GLAMO_REG_LCD_SRAM_DRIVING2 = REG_LCD(0x162),
++ GLAMO_REG_LCD_SRAM_DRIVING3 = REG_LCD(0x164),
++};
++
++enum glamo_reg_lcd_mode1 {
++ GLAMO_LCD_MODE1_PWRSAVE = 0x0001,
++ GLAMO_LCD_MODE1_PARTIAL_PRT = 0x0002,
++ GLAMO_LCD_MODE1_HWFLIP = 0x0004,
++ GLAMO_LCD_MODE1_LCD2 = 0x0008,
++ /* RES */
++ GLAMO_LCD_MODE1_PARTIAL_MODE = 0x0020,
++ GLAMO_LCD_MODE1_CURSOR_DSTCOLOR = 0x0040,
++ GLAMO_LCD_MODE1_PARTIAL_ENABLE = 0x0080,
++ GLAMO_LCD_MODE1_TVCLK_IN_ENABLE = 0x0100,
++ GLAMO_LCD_MODE1_HSYNC_HIGH_ACT = 0x0200,
++ GLAMO_LCD_MODE1_VSYNC_HIGH_ACT = 0x0400,
++ GLAMO_LCD_MODE1_HSYNC_FLIP = 0x0800,
++ GLAMO_LCD_MODE1_GAMMA_COR_EN = 0x1000,
++ GLAMO_LCD_MODE1_DITHER_EN = 0x2000,
++ GLAMO_LCD_MODE1_CURSOR_EN = 0x4000,
++ GLAMO_LCD_MODE1_ROTATE_EN = 0x8000,
++};
++
++enum glamo_reg_lcd_mode2 {
++ GLAMO_LCD_MODE2_CRC_CHECK_EN = 0x0001,
++ GLAMO_LCD_MODE2_DCMD_PER_LINE = 0x0002,
++ GLAMO_LCD_MODE2_NOUSE_BDEF = 0x0004,
++ GLAMO_LCD_MODE2_OUT_POS_MODE = 0x0008,
++ GLAMO_LCD_MODE2_FRATE_CTRL_EN = 0x0010,
++ GLAMO_LCD_MODE2_SINGLE_BUFFER = 0x0020,
++ GLAMO_LCD_MODE2_SER_LSB_TO_MSB = 0x0040,
++ /* FIXME */
++};
++
++enum glamo_reg_lcd_mode3 {
++ /* LCD color source data format */
++ GLAMO_LCD_SRC_RGB565 = 0x0000,
++ GLAMO_LCD_SRC_ARGB1555 = 0x4000,
++ GLAMO_LCD_SRC_ARGB4444 = 0x8000,
++ /* interface type */
++ GLAMO_LCD_MODE3_LCD = 0x1000,
++ GLAMO_LCD_MODE3_RGB = 0x0800,
++ GLAMO_LCD_MODE3_CPU = 0x0000,
++ /* mode */
++ GLAMO_LCD_MODE3_RGB332 = 0x0000,
++ GLAMO_LCD_MODE3_RGB444 = 0x0100,
++ GLAMO_LCD_MODE3_RGB565 = 0x0200,
++ GLAMO_LCD_MODE3_RGB666 = 0x0300,
++ /* depth */
++ GLAMO_LCD_MODE3_6BITS = 0x0000,
++ GLAMO_LCD_MODE3_8BITS = 0x0010,
++ GLAMO_LCD_MODE3_9BITS = 0x0020,
++ GLAMO_LCD_MODE3_16BITS = 0x0030,
++ GLAMO_LCD_MODE3_18BITS = 0x0040,
++};
++
++enum glamo_lcd_cmd_type {
++ GLAMO_LCD_CMD_TYPE_DISP = 0x0000,
++ GLAMO_LCD_CMD_TYPE_PARALLEL = 0x4000,
++ GLAMO_LCD_CMD_TYPE_SERIAL = 0x8000,
++ GLAMO_LCD_CMD_TYPE_SERIAL_DIRECT= 0xc000,
++};
++#define GLAMO_LCD_CMD_TYPE_MASK 0xc000
++
++enum glamo_lcd_cmds {
++ GLAMO_LCD_CMD_DATA_DISP_FIRE = 0x00,
++ GLAMO_LCD_CMD_DATA_DISP_SYNC = 0x01, /* RGB only */
++ /* switch to command mode, no display */
++ GLAMO_LCD_CMD_DATA_FIRE_NO_DISP = 0x02,
++ /* display until VSYNC, switch to command */
++ GLAMO_LCD_CMD_DATA_FIRE_VSYNC = 0x11,
++ /* display until HSYNC, switch to command */
++ GLAMO_LCD_CMD_DATA_FIRE_HSYNC = 0x12,
++ /* display until VSYNC, 1 black frame, VSYNC, switch to command */
++ GLAMO_LCD_CMD_DATA_FIRE_VSYNC_B = 0x13,
++ /* don't care about display and switch to command */
++ GLAMO_LCD_CMD_DATA_FIRE_FREE = 0x14, /* RGB only */
++ /* don't care about display, keep data display but disable data,
++ * and switch to command */
++ GLAMO_LCD_CMD_DATA_FIRE_FREE_D = 0x15, /* RGB only */
++};
++
++enum glamo_core_revisions {
++ GLAMO_CORE_REV_A0 = 0x0000,
++ GLAMO_CORE_REV_A1 = 0x0001,
++ GLAMO_CORE_REV_A2 = 0x0002,
++ GLAMO_CORE_REV_A3 = 0x0003,
++};
++
++#define REG_ISP(x) (GLAMO_REGOFS_ISP+(x))
++
++enum glamo_register_isp {
++ GLAMO_REG_ISP_EN1 = REG_ISP(0x00),
++ GLAMO_REG_ISP_EN2 = REG_ISP(0x02),
++ GLAMO_REG_ISP_EN3 = REG_ISP(0x04),
++ GLAMO_REG_ISP_EN4 = REG_ISP(0x06),
++ GLAMO_REG_ISP_CAP_0_ADDRL = REG_ISP(0x08),
++ GLAMO_REG_ISP_CAP_0_ADDRH = REG_ISP(0x0a),
++ GLAMO_REG_ISP_CAP_1_ADDRL = REG_ISP(0x0c),
++ GLAMO_REG_ISP_CAP_1_ADDRH = REG_ISP(0x0e),
++ GLAMO_REG_ISP_DEC_Y_ADDRL = REG_ISP(0x10),
++ GLAMO_REG_ISP_DEC_Y_ADDRH = REG_ISP(0x12),
++ GLAMO_REG_ISP_DEC_U_ADDRL = REG_ISP(0x14),
++ GLAMO_REG_ISP_DEC_U_ADDRH = REG_ISP(0x16),
++ GLAMO_REG_ISP_DEC_V_ADDRL = REG_ISP(0x18),
++ GLAMO_REG_ISP_DEC_V_ADDRH = REG_ISP(0x1a),
++ GLAMO_REG_ISP_CAP_SEG_HEIGHT = REG_ISP(0x1c),
++ GLAMO_REG_ISP_CAP_PITCH = REG_ISP(0x1e),
++ GLAMO_REG_ISP_CAP_HEIGHT = REG_ISP(0x20),
++ GLAMO_REG_ISP_CAP_WIDTH = REG_ISP(0x22),
++ GLAMO_REG_ISP_DEC_PITCH_Y = REG_ISP(0x24),
++ GLAMO_REG_ISP_DEC_PITCH_UV = REG_ISP(0x26),
++ GLAMO_REG_ISP_DEC_HEIGHT = REG_ISP(0x28),
++ GLAMO_REG_ISP_DEC_WIDTH = REG_ISP(0x2a),
++ GLAMO_REG_ISP_ONFLY_MODE1 = REG_ISP(0x2c),
++ GLAMO_REG_ISP_ONFLY_MODE2 = REG_ISP(0x2e),
++ GLAMO_REG_ISP_ONFLY_MODE3 = REG_ISP(0x30),
++ GLAMO_REG_ISP_ONFLY_MODE4 = REG_ISP(0x32),
++ GLAMO_REG_ISP_ONFLY_MODE5 = REG_ISP(0x34),
++ //
++ GLAMO_REG_ISP_YUV2RGB_11 = REG_ISP(0x50),
++ GLAMO_REG_ISP_YUV2RGB_21 = REG_ISP(0x52),
++ GLAMO_REG_ISP_YUV2RGB_32 = REG_ISP(0x54),
++ GLAMO_REG_ISP_YUV2RGB_33 = REG_ISP(0x56),
++ GLAMO_REG_ISP_YUV2RGB_RG = REG_ISP(0x58),
++ GLAMO_REG_ISP_YUV2RGB_B = REG_ISP(0x5a),
++ //
++ GLAMO_REG_ISP_PORT1_SCALEH = REG_ISP(0x76),
++ GLAMO_REG_ISP_PORT1_SCALEV = REG_ISP(0x78),
++ GLAMO_REG_ISP_PORT2_SCALEH = REG_ISP(0x7a),
++ GLAMO_REG_ISP_PORT2_SCALEV = REG_ISP(0x7c),
++ GLAMO_REG_ISP_DEC_SCALEH = REG_ISP(0x7e),
++ GLAMO_REG_ISP_DEC_SCALEV = REG_ISP(0x80),
++ GLAMO_REG_ISP_TURBO = REG_ISP(0x82),
++ GLAMO_REG_ISP_PORT1_CAP_EN = REG_ISP(0x84),
++ GLAMO_REG_ISP_PORT1_CAP_0_ADDRL = REG_ISP(0x86),
++ GLAMO_REG_ISP_PORT1_CAP_0_ADDRH = REG_ISP(0x88),
++ GLAMO_REG_ISP_PORT1_CAP_1_ADDRL = REG_ISP(0x8a),
++ GLAMO_REG_ISP_PORT1_CAP_1_ADDRH = REG_ISP(0x8c),
++ GLAMO_REG_ISP_PORT1_CAP_WIDTH = REG_ISP(0x8e),
++ GLAMO_REG_ISP_PORT1_CAP_HEIGHT = REG_ISP(0x90),
++ GLAMO_REG_ISP_PORT1_CAP_PITCH = REG_ISP(0x92),
++ GLAMO_REG_ISP_PORT1_CAP_CLIP_L = REG_ISP(0x94),
++ GLAMO_REG_ISP_PORT1_CAP_CLIP_R = REG_ISP(0x96),
++ GLAMO_REG_ISP_PORT1_CAP_CLIP_T = REG_ISP(0x98),
++ GLAMO_REG_ISP_PORT1_CAP_CLIP_B = REG_ISP(0x9a),
++ GLAMO_REG_ISP_PORT1_DEC_EN = REG_ISP(0x9c),
++ GLAMO_REG_ISP_PORT1_DEC_0_ADDRL = REG_ISP(0x9e),
++ GLAMO_REG_ISP_PORT1_DEC_0_ADDRH = REG_ISP(0xa0),
++ GLAMO_REG_ISP_PORT1_DEC_1_ADDRL = REG_ISP(0xa2),
++ GLAMO_REG_ISP_PORT1_DEC_1_ADDRH = REG_ISP(0xa4),
++ GLAMO_REG_ISP_PORT1_DEC_WIDTH = REG_ISP(0xa6),
++ GLAMO_REG_ISP_PORT1_DEC_HEIGHT = REG_ISP(0xa8),
++ GLAMO_REG_ISP_PORT1_DEC_PITCH = REG_ISP(0xaa),
++ GLAMO_REG_ISP_PORT1_DEC_CLIP_L = REG_ISP(0xac),
++ GLAMO_REG_ISP_PORT1_DEC_CLIP_R = REG_ISP(0xae),
++ GLAMO_REG_ISP_PORT1_DEC_CLIP_T = REG_ISP(0xb0),
++ GLAMO_REG_ISP_PORT1_DEC_CLIP_B = REG_ISP(0xb2),
++ GLAMO_REG_ISP_PORT2_EN = REG_ISP(0xb4),
++ GLAMO_REG_ISP_PORT2_0_Y_ADDRL = REG_ISP(0xb6),
++ GLAMO_REG_ISP_PORT2_0_Y_ADDRH = REG_ISP(0xb8),
++ GLAMO_REG_ISP_PORT2_0_U_ADDRL = REG_ISP(0xba),
++ GLAMO_REG_ISP_PORT2_0_U_ADDRH = REG_ISP(0xbc),
++ GLAMO_REG_ISP_PORT2_0_V_ADDRL = REG_ISP(0xbe),
++ GLAMO_REG_ISP_PORT2_0_V_ADDRH = REG_ISP(0xc0),
++ GLAMO_REG_ISP_PORT2_1_Y_ADDRL = REG_ISP(0xc2),
++ GLAMO_REG_ISP_PORT2_1_Y_ADDRH = REG_ISP(0xc4),
++ GLAMO_REG_ISP_PORT2_1_U_ADDRL = REG_ISP(0xc6),
++ GLAMO_REG_ISP_PORT2_1_U_ADDRH = REG_ISP(0xc8),
++ GLAMO_REG_ISP_PORT2_1_V_ADDRL = REG_ISP(0xca),
++ GLAMO_REG_ISP_PORT2_1_V_ADDRH = REG_ISP(0xcc),
++ GLAMO_REG_ISP_PORT2_2_Y_ADDRL = REG_ISP(0xce),
++ GLAMO_REG_ISP_PORT2_2_Y_ADDRH = REG_ISP(0xd0),
++ GLAMO_REG_ISP_PORT2_2_U_ADDRL = REG_ISP(0xd2),
++ GLAMO_REG_ISP_PORT2_2_U_ADDRH = REG_ISP(0xd4),
++ GLAMO_REG_ISP_PORT2_2_V_ADDRL = REG_ISP(0xd6),
++ GLAMO_REG_ISP_PORT2_2_V_ADDRH = REG_ISP(0xd8),
++ GLAMO_REG_ISP_PORT2_WIDTH = REG_ISP(0xda),
++ GLAMO_REG_ISP_PORT2_HEIGHT = REG_ISP(0xdc),
++ GLAMO_REG_ISP_PORT2_Y_PITCH = REG_ISP(0xde),
++ GLAMO_REG_ISP_PORT2_UV_PITCH = REG_ISP(0xe0),
++ //
++ GLAMO_REG_ISP_RGB2YUV_11_12 = REG_ISP(0xf6),
++ GLAMO_REG_ISP_RGB2YUV_13_21 = REG_ISP(0xf8),
++ GLAMO_REG_ISP_RGB2YUV_22_23 = REG_ISP(0xfa),
++ GLAMO_REG_ISP_RGB2YUV_31_32 = REG_ISP(0xfc),
++ GLAMO_REG_ISP_RGB2YUV_33 = REG_ISP(0xfe),
++ //
++ GLAMO_REG_ISP_PORT1_SCALEH_MATRIX = REG_ISP(0x10c),
++ //
++ GLAMO_REG_ISP_PORT1_SCALEV_MATRIX = REG_ISP(0x120),
++ //
++ GLAMO_REG_ISP_PORT2_SCALEH_MATRIX = REG_ISP(0x134),
++ //
++ GLAMO_REG_ISP_PORT2_SCALEV_MATRIX = REG_ISP(0x148),
++ //
++ GLAMO_REG_ISP_DEC_SCALEH_MATRIX = REG_ISP(0x15c),
++ //
++ GLAMO_REG_ISP_DEC_SCALEV_MATRIX = REG_ISP(0x170),
++ //
++ GLAMO_REG_ISP_STATUS = REG_ISP(0x184),
++};
++
++enum glamo_reg_isp_en1 {
++ GLAMO_ISP_EN1_FIRE_ISP = 0x0001,
++ GLAMO_ISP_EN1_FIRE_CAP = 0x0002,
++ GLAMO_ISP_EN1_VIDEO_CONF = 0x0004,
++ GLAMO_ISP_EN1_BAYER_SRC = 0x0008,
++ //
++ GLAMO_ISP_EN1_YUV_PACK = 0x0040,
++ GLAMO_ISP_EN1_PLANE_MODE = 0x0080,
++ GLAMO_ISP_EN1_YUV_INPUT = 0x0100,
++ GLAMO_ISP_EN1_YUV420 = 0x0200,
++ //
++};
++
++enum glamo_reg_isp_en3 {
++ //
++ GLAMO_ISP_EN3_SCALE_IMPROVE = 0x0040,
++ GLAMO_ISP_EN3_PLANE_MODE = 0x0080,
++ GLAMO_ISP_EN3_YUV_INPUT = 0x0100,
++ GLAMO_ISP_EN3_YUV420 = 0x0200,
++ //
++};
++
++enum glamo_reg_isp_port1_en {
++ GLAMO_ISP_PORT1_EN_OUTPUT = 0x0001,
++// GLAMO_ISP_PORT1_EN_SCALE = 0x0002,
++ GLAMO_ISP_PORT1_EN_CLIP = 0x0004,
++ GLAMO_ISP_PORT1_EN_CLIP_OUT = 0x0008,
++ GLAMO_ISP_PORT1_EN_DUAL_BUF = 0x0010,
++};
++
++enum glamo_reg_isp_port2_en {
++ GLAMO_ISP_PORT2_EN_OUTPUT = 0x0001,
++ GLAMO_ISP_PORT2_EN_SCALE = 0x0002,
++ GLAMO_ISP_PORT2_EN_JPEG = 0x0010,
++ GLAMO_ISP_PORT2_EN_MPEG = 0x0020,
++ GLAMO_ISP_PORT2_EN_ENCODE = 0x0040,
++ GLAMO_ISP_PORT2_EN_DECODE = 0x0080,
++};
++
++#define REG_CQ(x) (GLAMO_REGOFS_CMDQUEUE+(x))
++
++enum glamo_register_cq {
++ GLAMO_REG_CQ_BASE_ADDRL = REG_CQ(0x00),
++ GLAMO_REG_CQ_BASE_ADDRH = REG_CQ(0x02),
++ GLAMO_REG_CQ_LEN = REG_CQ(0x04),
++ GLAMO_REG_CQ_WRITE_ADDRL = REG_CQ(0x06),
++ GLAMO_REG_CQ_WRITE_ADDRH = REG_CQ(0x08),
++ GLAMO_REG_CQ_FLIP = REG_CQ(0x0a),
++ GLAMO_REG_CQ_CONTROL = REG_CQ(0x0c),
++ GLAMO_REG_CQ_READ_ADDRL = REG_CQ(0x0e),
++ GLAMO_REG_CQ_READ_ADDRH = REG_CQ(0x10),
++ GLAMO_REG_CQ_STATUS = REG_CQ(0x12),
++};
++
++#define REG_2D(x) (GLAMO_REGOFS_2D+(x))
++
++enum glamo_register_2d {
++ GLAMO_REG_2D_SRC_ADDRL = REG_2D(0x00),
++ GLAMO_REG_2D_SRC_ADDRH = REG_2D(0x02),
++ GLAMO_REG_2D_SRC_PITCH = REG_2D(0x04),
++ GLAMO_REG_2D_SRC_X = REG_2D(0x06),
++ GLAMO_REG_2D_SRC_Y = REG_2D(0x08),
++ GLAMO_REG_2D_DST_X = REG_2D(0x0a),
++ GLAMO_REG_2D_DST_Y = REG_2D(0x0c),
++ GLAMO_REG_2D_DST_ADDRL = REG_2D(0x0e),
++ GLAMO_REG_2D_DST_ADDRH = REG_2D(0x10),
++ GLAMO_REG_2D_DST_PITCH = REG_2D(0x12),
++ GLAMO_REG_2D_DST_HEIGHT = REG_2D(0x14),
++ GLAMO_REG_2D_RECT_WIDTH = REG_2D(0x16),
++ GLAMO_REG_2D_RECT_HEIGHT = REG_2D(0x18),
++ GLAMO_REG_2D_PAT_ADDRL = REG_2D(0x1a),
++ GLAMO_REG_2D_PAT_ADDRH = REG_2D(0x1c),
++ GLAMO_REG_2D_PAT_FG = REG_2D(0x1e),
++ GLAMO_REG_2D_PAT_BG = REG_2D(0x20),
++ GLAMO_REG_2D_SRC_FG = REG_2D(0x22),
++ GLAMO_REG_2D_SRC_BG = REG_2D(0x24),
++ GLAMO_REG_2D_MASK1 = REG_2D(0x26),
++ GLAMO_REG_2D_MASK2 = REG_2D(0x28),
++ GLAMO_REG_2D_MASK3 = REG_2D(0x2a),
++ GLAMO_REG_2D_MASK4 = REG_2D(0x2c),
++ GLAMO_REG_2D_ROT_X = REG_2D(0x2e),
++ GLAMO_REG_2D_ROT_Y = REG_2D(0x30),
++ GLAMO_REG_2D_LEFT_CLIP = REG_2D(0x32),
++ GLAMO_REG_2D_TOP_CLIP = REG_2D(0x34),
++ GLAMO_REG_2D_RIGHT_CLIP = REG_2D(0x36),
++ GLAMO_REG_2D_BOTTOM_CLIP = REG_2D(0x38),
++ GLAMO_REG_2D_COMMAND1 = REG_2D(0x3A),
++ GLAMO_REG_2D_COMMAND2 = REG_2D(0x3C),
++ GLAMO_REG_2D_COMMAND3 = REG_2D(0x3E),
++ GLAMO_REG_2D_SAFE = REG_2D(0x40),
++ GLAMO_REG_2D_STATUS = REG_2D(0x42),
++ GLAMO_REG_2D_ID1 = REG_2D(0x44),
++ GLAMO_REG_2D_ID2 = REG_2D(0x46),
++ GLAMO_REG_2D_ID3 = REG_2D(0x48),
++};
++
++#endif /* _GLAMO_REGS_H */
+Index: xserver/hw/kdrive/glamo/glamo.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ xserver/hw/kdrive/glamo/glamo.c 2007-09-26 17:44:47.000000000 +0800
+@@ -0,0 +1,498 @@
++/*
++ * Copyright © 2007 OpenMoko, Inc.
++ *
++ * This driver is based on Xati,
++ * Copyright © 2003 Eric Anholt
++ *
++ * Permission to use, copy, modify, distribute, and sell this software and its
++ * documentation for any purpose is hereby granted without fee, provided that
++ * the above copyright notice appear in all copies and that both that copyright
++ * notice and this permission notice appear in supporting documentation, and
++ * that the name of the copyright holders not be used in advertising or
++ * publicity pertaining to distribution of the software without specific,
++ * written prior permission. The copyright holders make no representations
++ * about the suitability of this software for any purpose. It is provided "as
++ * is" without express or implied warranty.
++ *
++ * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
++ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
++ * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
++ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
++ * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
++ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
++ * OF THIS SOFTWARE.
++ */
++
++#ifdef HAVE_CONFIG_H
++#include <kdrive-config.h>
++#endif
++#include "glamo.h"
++#if defined(USE_DRI) && defined(GLXEXT)
++#include "glamo_sarea.h"
++#endif
++
++static Bool
++GLAMOCardInit(KdCardInfo *card)
++{
++ GLAMOCardInfo *glamoc;
++ Bool initialized = FALSE;
++
++ glamoc = xcalloc(sizeof(GLAMOCardInfo), 1);
++ if (glamoc == NULL)
++ return FALSE;
++
++#ifdef KDRIVEFBDEV
++ if (!initialized && fbdevInitialize(card, &glamoc->backend_priv.fbdev)) {
++ glamoc->use_fbdev = TRUE;
++ initialized = TRUE;
++ glamoc->backend_funcs.cardfini = fbdevCardFini;
++ glamoc->backend_funcs.scrfini = fbdevScreenFini;
++ glamoc->backend_funcs.initScreen = fbdevInitScreen;
++ glamoc->backend_funcs.finishInitScreen = fbdevFinishInitScreen;
++ glamoc->backend_funcs.createRes = fbdevCreateResources;
++ glamoc->backend_funcs.preserve = fbdevPreserve;
++ glamoc->backend_funcs.restore = fbdevRestore;
++ glamoc->backend_funcs.dpms = fbdevDPMS;
++ glamoc->backend_funcs.enable = fbdevEnable;
++ glamoc->backend_funcs.disable = fbdevDisable;
++ glamoc->backend_funcs.getColors = fbdevGetColors;
++ glamoc->backend_funcs.putColors = fbdevPutColors;
++#ifdef RANDR
++ glamoc->backend_funcs.randrSetConfig = fbdevRandRSetConfig;
++#endif
++ }
++#endif
++#ifdef KDRIVEVESA
++ if (!initialized && vesaInitialize(card, &glamoc->backend_priv.vesa)) {
++ glamoc->use_vesa = TRUE;
++ initialized = TRUE;
++ glamoc->backend_funcs.cardfini = vesaCardFini;
++ glamoc->backend_funcs.scrfini = vesaScreenFini;
++ glamoc->backend_funcs.initScreen = vesaInitScreen;
++ glamoc->backend_funcs.finishInitScreen = vesaFinishInitScreen;
++ glamoc->backend_funcs.createRes = vesaCreateResources;
++ glamoc->backend_funcs.preserve = vesaPreserve;
++ glamoc->backend_funcs.restore = vesaRestore;
++ glamoc->backend_funcs.dpms = vesaDPMS;
++ glamoc->backend_funcs.enable = vesaEnable;
++ glamoc->backend_funcs.disable = vesaDisable;
++ glamoc->backend_funcs.getColors = vesaGetColors;
++ glamoc->backend_funcs.putColors = vesaPutColors;
++#ifdef RANDR
++ glamoc->backend_funcs.randrSetConfig = vesaRandRSetConfig;
++#endif
++ }
++#endif
++
++ if (!initialized || !GLAMOMapReg(card, glamoc)) {
++ xfree(glamoc);
++ return FALSE;
++ }
++
++#ifdef USE_DRI
++ /* We demand identification by busid, not driver name */
++ glamoc->drmFd = drmOpen(NULL, glamoc->busid);
++ if (glamoc->drmFd < 0)
++ ErrorF("Failed to open DRM, DRI disabled.\n");
++#endif /* USE_DRI */
++
++ card->driver = glamoc;
++
++ glamoc->is_3362 = TRUE;
++ ErrorF("Using GLAMO 3362 card\n");
++
++ return TRUE;
++}
++
++static void
++GLAMOCardFini(KdCardInfo *card)
++{
++ GLAMOCardInfo *glamoc = (GLAMOCardInfo *)card->driver;
++
++ GLAMOUnmapReg(card, glamoc);
++ glamoc->backend_funcs.cardfini(card);
++}
++
++/*
++ * Once screen->off_screen_base is set, this function
++ * allocates the remaining memory appropriately
++ */
++
++static void
++GLAMOSetOffscreen (KdScreenInfo *screen)
++{
++ GLAMOCardInfo(screen);
++#if defined(USE_DRI) && defined(GLXEXT)
++ GLAMOScreenInfo *glamos = (GLAMOScreenInfo *)screen->driver;
++ int l;
++#endif
++ int screen_size;
++ char *mmio = glamoc->reg_base;
++
++ /* check (and adjust) pitch */
++ if (mmio)
++ {
++ int byteStride = screen->fb[0].byteStride;
++ int bitStride;
++ int pixelStride;
++ int bpp = screen->fb[0].bitsPerPixel;
++
++ /*
++ * Ensure frame buffer is correctly aligned
++ */
++ if (byteStride & 0x3f)
++ {
++ byteStride = (byteStride + 0x3f) & ~0x3f;
++ bitStride = byteStride * 8;
++ pixelStride = bitStride / bpp;
++
++ screen->fb[0].byteStride = byteStride;
++ screen->fb[0].pixelStride = pixelStride;
++ }
++ }
++
++ screen_size = screen->fb[0].byteStride * screen->height;
++
++ screen->off_screen_base = screen_size;
++
++#if defined(USE_DRI) && defined(GLXEXT)
++ /* Reserve a static area for the back buffer the same size as the
++ * visible screen. XXX: This would be better initialized in glamo_dri.c
++ * when GLX is set up, but the offscreen memory manager's allocations
++ * don't last through VT switches, while the kernel's understanding of
++ * offscreen locations does.
++ */
++ glamos->frontOffset = 0;
++ glamos->frontPitch = screen->fb[0].byteStride;
++
++ if (screen->off_screen_base + screen_size <= screen->memory_size) {
++ glamos->backOffset = screen->off_screen_base;
++ glamos->backPitch = screen->fb[0].byteStride;
++ screen->off_screen_base += screen_size;
++ }
++
++ /* Reserve the depth span for Rage 128 */
++ if (!glamoc->is_3362 && screen->off_screen_base +
++ screen->fb[0].byteStride <= screen->memory_size) {
++ glamos->spanOffset = screen->off_screen_base;
++ screen->off_screen_base += screen->fb[0].byteStride;
++ }
++
++ /* Reserve the static depth buffer, which happens to be the same
++ * bitsPerPixel as the screen.
++ */
++ if (screen->off_screen_base + screen_size <= screen->memory_size) {
++ glamos->depthOffset = screen->off_screen_base;
++ glamos->depthPitch = screen->fb[0].byteStride;
++ screen->off_screen_base += screen_size;
++ }
++
++ /* Reserve approx. half of remaining offscreen memory for local
++ * textures. Round down to a whole number of texture regions.
++ */
++ glamos->textureSize = (screen->memory_size - screen->off_screen_base) / 2;
++ l = GLAMOLog2(glamos->textureSize / GLAMO_NR_TEX_REGIONS);
++ if (l < GLAMO_LOG_TEX_GRANULARITY)
++ l = GLAMO_LOG_TEX_GRANULARITY;
++ glamos->textureSize = (glamos->textureSize >> l) << l;
++ if (glamos->textureSize >= 512 * 1024) {
++ glamos->textureOffset = screen->off_screen_base;
++ screen->off_screen_base += glamos->textureSize;
++ } else {
++ /* Minimum texture size is for 2 256x256x32bpp textures */
++ glamos->textureSize = 0;
++ }
++#endif /* USE_DRI && GLXEXT */
++}
++
++static Bool
++GLAMOScreenInit(KdScreenInfo *screen)
++{
++ GLAMOScreenInfo *glamos;
++ GLAMOCardInfo(screen);
++ Bool success = FALSE;
++
++ glamos = xcalloc(sizeof(GLAMOScreenInfo), 1);
++ if (glamos == NULL)
++ return FALSE;
++
++ glamos->glamoc = glamoc;
++ glamos->screen = screen;
++ screen->driver = glamos;
++
++ if (screen->fb[0].depth == 0)
++ screen->fb[0].depth = 16;
++#ifdef KDRIVEFBDEV
++ if (glamoc->use_fbdev) {
++ success = fbdevScreenInitialize(screen,
++ &glamos->backend_priv.fbdev);
++ }
++#endif
++#ifdef KDRIVEVESA
++ if (glamoc->use_vesa) {
++ success = vesaScreenInitialize(screen,
++ &glamos->backend_priv.vesa);
++ }
++#endif
++
++ if (!success) {
++ screen->driver = NULL;
++ xfree(glamos);
++ return FALSE;
++ }
++
++ GLAMOSetOffscreen (screen);
++
++ return TRUE;
++}
++
++#ifdef RANDR
++static Bool
++GLAMORandRSetConfig (ScreenPtr pScreen,
++ Rotation randr,
++ int rate,
++ RRScreenSizePtr pSize)
++{
++ KdScreenPriv(pScreen);
++ KdScreenInfo *screen = pScreenPriv->screen;
++ GLAMOCardInfo *glamoc = screen->card->driver;
++ Bool ret;
++
++ GLAMODrawDisable (pScreen);
++ ret = glamoc->backend_funcs.randrSetConfig(pScreen, randr, rate, pSize);
++ GLAMOSetOffscreen (screen);
++ /*
++ * Set frame buffer mapping
++ */
++ (*pScreen->ModifyPixmapHeader) (fbGetScreenPixmap (pScreen),
++ pScreen->width,
++ pScreen->height,
++ screen->fb[0].depth,
++ screen->fb[0].bitsPerPixel,
++ screen->fb[0].byteStride,
++ screen->fb[0].frameBuffer);
++
++ GLAMODrawEnable (pScreen);
++ return ret;
++}
++
++static Bool
++GLAMORandRInit (ScreenPtr pScreen)
++{
++ rrScrPrivPtr pScrPriv;
++
++ pScrPriv = rrGetScrPriv(pScreen);
++ pScrPriv->rrSetConfig = GLAMORandRSetConfig;
++ return TRUE;
++}
++#endif
++
++static void
++GLAMOScreenFini(KdScreenInfo *screen)
++{
++ GLAMOScreenInfo *glamos = (GLAMOScreenInfo *)screen->driver;
++ GLAMOCardInfo *glamoc = screen->card->driver;
++
++#ifdef XV
++ GLAMOFiniVideo(screen->pScreen);
++#endif
++
++ glamoc->backend_funcs.scrfini(screen);
++ xfree(glamos);
++ screen->driver = 0;
++}
++
++Bool
++GLAMOMapReg(KdCardInfo *card, GLAMOCardInfo *glamoc)
++{
++ glamoc->reg_base = (char *)KdMapDevice(GLAMO_REG_BASE(card),
++ GLAMO_REG_SIZE(card));
++
++ if (glamoc->reg_base == NULL)
++ return FALSE;
++
++ KdSetMappedMode(GLAMO_REG_BASE(card), GLAMO_REG_SIZE(card),
++ KD_MAPPED_MODE_REGISTERS);
++
++ return TRUE;
++}
++
++void
++GLAMOUnmapReg(KdCardInfo *card, GLAMOCardInfo *glamoc)
++{
++ if (glamoc->reg_base) {
++ KdResetMappedMode(GLAMO_REG_BASE(card), GLAMO_REG_SIZE(card),
++ KD_MAPPED_MODE_REGISTERS);
++ KdUnmapDevice((void *)glamoc->reg_base, GLAMO_REG_SIZE(card));
++ glamoc->reg_base = 0;
++ }
++}
++
++static Bool
++GLAMOInitScreen(ScreenPtr pScreen)
++{
++ KdScreenPriv(pScreen);
++ GLAMOCardInfo(pScreenPriv);
++
++#ifdef XV
++ GLAMOInitVideo(pScreen);
++#endif
++ return glamoc->backend_funcs.initScreen(pScreen);
++}
++
++static Bool
++GLAMOFinishInitScreen(ScreenPtr pScreen)
++{
++ KdScreenPriv(pScreen);
++ GLAMOCardInfo(pScreenPriv);
++
++ if (!glamoc->backend_funcs.finishInitScreen(pScreen))
++ return FALSE;
++#ifdef RANDR
++ if (!GLAMORandRInit (pScreen))
++ return FALSE;
++#endif
++ return TRUE;
++}
++
++static Bool
++GLAMOCreateResources(ScreenPtr pScreen)
++{
++ KdScreenPriv(pScreen);
++ GLAMOCardInfo(pScreenPriv);
++
++ return glamoc->backend_funcs.createRes(pScreen);
++}
++
++static void
++GLAMOPreserve(KdCardInfo *card)
++{
++ GLAMOCardInfo *glamoc = card->driver;
++
++ glamoc->backend_funcs.preserve(card);
++}
++
++static void
++GLAMORestore(KdCardInfo *card)
++{
++ GLAMOCardInfo *glamoc = card->driver;
++
++ GLAMOUnmapReg(card, glamoc);
++
++ glamoc->backend_funcs.restore(card);
++}
++
++static Bool
++GLAMODPMS(ScreenPtr pScreen, int mode)
++{
++ KdScreenPriv(pScreen);
++ GLAMOCardInfo(pScreenPriv);
++
++ return glamoc->backend_funcs.dpms(pScreen, mode);
++}
++
++static Bool
++GLAMOEnable(ScreenPtr pScreen)
++{
++ KdScreenPriv(pScreen);
++ GLAMOCardInfo(pScreenPriv);
++
++ if (!glamoc->backend_funcs.enable(pScreen))
++ return FALSE;
++
++ if ((glamoc->reg_base == NULL) && !GLAMOMapReg(pScreenPriv->screen->card,
++ glamoc))
++ return FALSE;
++
++ GLAMOSetOffscreen (pScreenPriv->screen);
++
++ return TRUE;
++}
++
++static void
++GLAMODisable(ScreenPtr pScreen)
++{
++ KdScreenPriv(pScreen);
++#if defined(USE_DRI) && defined(GLXEXT)
++ GLAMOScreenInfo(pScreenPriv);
++#endif /* USE_DRI && GLXEXT */
++ GLAMOCardInfo(pScreenPriv);
++
++ GLAMOUnmapReg(pScreenPriv->card, glamoc);
++
++ glamoc->backend_funcs.disable(pScreen);
++}
++
++static void
++GLAMOGetColors(ScreenPtr pScreen, int fb, int n, xColorItem *pdefs)
++{
++ KdScreenPriv(pScreen);
++ GLAMOCardInfo(pScreenPriv);
++
++ glamoc->backend_funcs.getColors(pScreen, fb, n, pdefs);
++}
++
++static void
++GLAMOPutColors(ScreenPtr pScreen, int fb, int n, xColorItem *pdefs)
++{
++ KdScreenPriv(pScreen);
++ GLAMOCardInfo(pScreenPriv);
++
++ glamoc->backend_funcs.putColors(pScreen, fb, n, pdefs);
++}
++
++/* Compute log base 2 of val. */
++int
++GLAMOLog2(int val)
++{
++ int bits;
++
++ for (bits = 0; val != 0; val >>= 1, ++bits)
++ ;
++ return bits - 1;
++}
++
++KdCardFuncs GLAMOFuncs = {
++ GLAMOCardInit, /* cardinit */
++ GLAMOScreenInit, /* scrinit */
++ GLAMOInitScreen, /* initScreen */
++ GLAMOFinishInitScreen, /* finishInitScreen */
++ GLAMOCreateResources, /* createRes */
++ GLAMOPreserve, /* preserve */
++ GLAMOEnable, /* enable */
++ GLAMODPMS, /* dpms */
++ GLAMODisable, /* disable */
++ GLAMORestore, /* restore */
++ GLAMOScreenFini, /* scrfini */
++ GLAMOCardFini, /* cardfini */
++
++#if 0
++ GLAMOCursorInit, /* initCursor */
++ GLAMOCursorEnable, /* enableCursor */
++ GLAMOCursorDisable, /* disableCursor */
++ GLAMOCursorFini, /* finiCursor */
++ GLAMORecolorCursor, /* recolorCursor */
++#else
++ 0, /* initCursor */
++ 0, /* enableCursor */
++ 0, /* disableCursor */
++ 0, /* finiCursor */
++ 0, /* recolorCursor */
++#endif
++
++
++#if 1
++ GLAMODrawInit, /* initAccel */
++ GLAMODrawEnable, /* enableAccel */
++ GLAMODrawDisable, /* disableAccel */
++ GLAMODrawFini, /* finiAccel */
++#else
++ 0, /* initAccel */
++ 0, /* enableAccel */
++ 0, /* disableAccel */
++ 0, /* finiAccel */
++#endif
++
++ GLAMOGetColors, /* getColors */
++ GLAMOPutColors, /* putColors */
++};
+Index: xserver/hw/kdrive/glamo/glamo.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ xserver/hw/kdrive/glamo/glamo.h 2007-09-26 17:45:48.000000000 +0800
+@@ -0,0 +1,386 @@
++/*
++ * Copyright © 2007 OpenMoko, Inc.
++ *
++ * This driver is based on Xati,
++ * Copyright © 2003 Eric Anholt
++ *
++ * Permission to use, copy, modify, distribute, and sell this software and its
++ * documentation for any purpose is hereby granted without fee, provided that
++ * the above copyright notice appear in all copies and that both that copyright
++ * notice and this permission notice appear in supporting documentation, and
++ * that the name of the copyright holders not be used in advertising or
++ * publicity pertaining to distribution of the software without specific,
++ * written prior permission. The copyright holders make no representations
++ * about the suitability of this software for any purpose. It is provided "as
++ * is" without express or implied warranty.
++ *
++ * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
++ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
++ * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
++ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
++ * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
++ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
++ * OF THIS SOFTWARE.
++ */
++
++#ifndef _GLAMO_H_
++#define _GLAMO_H_
++
++#ifdef HAVE_CONFIG_H
++#include <kdrive-config.h>
++#endif
++
++#ifdef KDRIVEFBDEV
++#include <fbdev.h>
++#endif
++#ifdef KDRIVEVESA
++#include <vesa.h>
++#endif
++
++#include "kxv.h"
++
++#undef XF86DRI
++#ifdef XF86DRI
++#define USE_DRI
++#include "xf86drm.h"
++#include "dri.h"
++#ifdef GLXEXT
++#include "GL/glxint.h"
++#include "GL/glxtokens.h"
++#include "glamo_dripriv.h"
++#endif
++#endif
++
++#define GLAMO_REG_BASE(c) ((c)->attr.address[0])
++#define GLAMO_REG_SIZE(c) (0x2400)
++
++#ifdef __powerpc__
++
++static __inline__ void
++MMIO_OUT16(__volatile__ void *base, const unsigned long offset,
++ const unsigned int val)
++{
++ __asm__ __volatile__(
++ "stwbrx %1,%2,%3\n\t"
++ "eieio"
++ : "=m" (*((volatile unsigned char *)base+offset))
++ : "r" (val), "b" (base), "r" (offset));
++}
++
++static __inline__ CARD32
++MMIO_IN16(__volatile__ void *base, const unsigned long offset)
++{
++ register unsigned int val;
++ __asm__ __volatile__(
++ "lwbrx %0,%1,%2\n\t"
++ "eieio"
++ : "=r" (val)
++ : "b" (base), "r" (offset),
++ "m" (*((volatile unsigned char *)base+offset)));
++ return val;
++}
++
++#else
++
++#define MMIO_OUT16(mmio, a, v) (*(VOL16 *)((mmio) + (a)) = (v))
++#define MMIO_IN16(mmio, a) (*(VOL16 *)((mmio) + (a)))
++
++#endif
++
++typedef volatile CARD8 VOL8;
++typedef volatile CARD16 VOL16;
++typedef volatile CARD32 VOL32;
++
++struct backend_funcs {
++ void (*cardfini)(KdCardInfo *);
++ void (*scrfini)(KdScreenInfo *);
++ Bool (*initScreen)(ScreenPtr);
++ Bool (*finishInitScreen)(ScreenPtr pScreen);
++ Bool (*createRes)(ScreenPtr);
++ void (*preserve)(KdCardInfo *);
++ void (*restore)(KdCardInfo *);
++ Bool (*dpms)(ScreenPtr, int);
++ Bool (*enable)(ScreenPtr);
++ void (*disable)(ScreenPtr);
++ void (*getColors)(ScreenPtr, int, int, xColorItem *);
++ void (*putColors)(ScreenPtr, int, int, xColorItem *);
++#ifdef RANDR
++ Bool (*randrSetConfig) (ScreenPtr, Rotation, int, RRScreenSizePtr);
++#endif
++};
++
++typedef struct _GLAMOCardInfo {
++ union {
++#ifdef KDRIVEFBDEV
++ FbdevPriv fbdev;
++#endif
++#ifdef KDRIVEVESA
++ VesaCardPrivRec vesa;
++#endif
++ } backend_priv;
++ struct backend_funcs backend_funcs;
++
++ char *reg_base;
++ Bool is_3362;
++ CARD32 crtc_pitch;
++ CARD32 crtc2_pitch;
++#ifdef USE_DRI
++ int drmFd;
++#endif /* USE_DRI */
++ Bool use_fbdev, use_vesa;
++} GLAMOCardInfo;
++
++#define getGLAMOCardInfo(kd) ((GLAMOCardInfo *) ((kd)->card->driver))
++#define GLAMOCardInfo(kd) GLAMOCardInfo *glamoc = getGLAMOCardInfo(kd)
++
++typedef struct _GLAMOCursor {
++ int width, height;
++ int xhot, yhot;
++
++ Bool has_cursor;
++ CursorPtr pCursor;
++ Pixel source, mask;
++ KdOffscreenArea *area;
++} GLAMOCursor;
++
++typedef struct _GLAMOPortPriv {
++ int brightness;
++ int saturation;
++ RegionRec clip;
++ CARD32 size;
++ KdOffscreenArea *off_screen;
++ DrawablePtr pDraw;
++ PixmapPtr pPixmap;
++
++ CARD32 src_offset;
++ CARD32 src_pitch;
++ CARD8 *src_addr;
++
++ int id;
++ int src_x1, src_y1, src_x2, src_y2;
++ int dst_x1, dst_y1, dst_x2, dst_y2;
++ int src_w, src_h, dst_w, dst_h;
++} GLAMOPortPrivRec, *GLAMOPortPrivPtr;
++
++typedef struct _dmaBuf {
++ int size;
++ int used;
++ void *address;
++#ifdef USE_DRI
++ drmBufPtr drmBuf;
++#endif
++} dmaBuf;
++
++typedef struct _GLAMOScreenInfo {
++ union {
++#ifdef KDRIVEFBDEV
++ FbdevScrPriv fbdev;
++#endif
++#ifdef KDRIVEVESA
++ VesaScreenPrivRec vesa;
++#endif
++ } backend_priv;
++ KaaScreenInfoRec kaa;
++
++ GLAMOCardInfo *glamoc;
++ KdScreenInfo *screen;
++
++ int scratch_offset;
++ int scratch_next;
++ KdOffscreenArea *scratch_area;
++
++ GLAMOCursor cursor;
++
++ KdVideoAdaptorPtr pAdaptor;
++ int num_texture_ports;
++
++ Bool using_dri; /* If we use the DRM for DMA. */
++
++ KdOffscreenArea *dma_space; /* For "DMA" from framebuffer. */
++ CARD16 *ring_addr; /* Beginning of ring buffer. */
++ int ring_write; /* Index of write ptr in ring. */
++ int ring_read; /* Index of read ptr in ring. */
++ int ring_len;
++
++ dmaBuf *indirectBuffer;
++ int indirectStart;
++
++#ifdef USE_DRI
++ Bool dma_started;
++
++ drmSize registerSize;
++ drmHandle registerHandle;
++ drmHandle fbHandle;
++
++ drmSize gartSize;
++ drmHandle agpMemHandle; /* Handle from drmAgpAlloc */
++ unsigned long gartOffset;
++ unsigned char *AGP; /* Map */
++ int agpMode;
++ drmSize pciSize;
++ drmHandle pciMemHandle;
++
++ /* ring buffer data */
++ unsigned long ringStart; /* Offset into AGP space */
++ drmHandle ringHandle; /* Handle from drmAddMap */
++ drmSize ringMapSize; /* Size of map */
++ int ringSize; /* Size of ring (MB) */
++ unsigned char *ring; /* Map */
++
++ unsigned long ringReadOffset; /* Offset into AGP space */
++ drmHandle ringReadPtrHandle; /* Handle from drmAddMap */
++ drmSize ringReadMapSize; /* Size of map */
++ unsigned char *ringReadPtr; /* Map */
++
++ /* vertex/indirect buffer data */
++ unsigned long bufStart; /* Offset into AGP space */
++ drmHandle bufHandle; /* Handle from drmAddMap */
++ drmSize bufMapSize; /* Size of map */
++ int bufSize; /* Size of buffers (MB) */
++ unsigned char *buf; /* Map */
++ int bufNumBufs; /* Number of buffers */
++ drmBufMapPtr buffers; /* Buffer map */
++
++ /* AGP Texture data */
++ unsigned long gartTexStart; /* Offset into AGP space */
++ drmHandle gartTexHandle; /* Handle from drmAddMap */
++ drmSize gartTexMapSize; /* Size of map */
++ int gartTexSize; /* Size of AGP tex space (MB) */
++ unsigned char *gartTex; /* Map */
++ int log2GARTTexGran;
++
++ int DMAusecTimeout; /* CCE timeout in usecs */
++
++ /* DRI screen private data */
++ int frontOffset;
++ int frontPitch;
++ int backOffset;
++ int backPitch;
++ int depthOffset;
++ int depthPitch;
++ int spanOffset;
++ int textureOffset;
++ int textureSize;
++ int log2TexGran;
++
++ int irqEnabled;
++
++ int serverContext;
++
++ DRIInfoPtr pDRIInfo;
++#ifdef GLXEXT
++ int numVisualConfigs;
++ __GLXvisualConfig *pVisualConfigs;
++ GLAMOConfigPrivPtr pVisualConfigsPriv;
++#endif /* GLXEXT */
++#endif /* USE_DRI */
++} GLAMOScreenInfo;
++
++#define getGLAMOScreenInfo(kd) ((GLAMOScreenInfo *) ((kd)->screen->driver))
++#define GLAMOScreenInfo(kd) GLAMOScreenInfo *glamos = getGLAMOScreenInfo(kd)
++
++typedef union { float f; CARD32 i; } fi_type;
++
++/* Surely there's a better way to go about this */
++static inline CARD32
++GLAMOFloatAsInt(float val)
++{
++ fi_type fi;
++
++ fi.f = val;
++ return fi.i;
++}
++
++#define GET_FLOAT_BITS(x) GLAMOFloatAsInt(x)
++
++static inline void
++MMIOSetBitMask(char *mmio, CARD32 reg, CARD16 mask, CARD16 val)
++{
++ CARD16 tmp;
++
++ val &= mask;
++
++ tmp = MMIO_IN16(mmio, reg);
++ tmp &= ~mask;
++ tmp |= val;
++
++ MMIO_OUT16(mmio, reg, tmp);
++}
++
++/* glamo.c */
++Bool
++GLAMOMapReg(KdCardInfo *card, GLAMOCardInfo *glamoc);
++
++void
++GLAMOUnmapReg(KdCardInfo *card, GLAMOCardInfo *glamoc);
++
++/* glamo_draw.c */
++void
++GLAMODrawSetup(ScreenPtr pScreen);
++
++Bool
++GLAMODrawInit(ScreenPtr pScreen);
++
++void
++GLAMODrawEnable(ScreenPtr pScreen);
++
++void
++GLAMODrawDisable(ScreenPtr pScreen);
++
++void
++GLAMODrawFini(ScreenPtr pScreen);
++
++/* glamo_dri.c */
++#ifdef USE_DRI
++Bool
++GLAMODRIScreenInit(ScreenPtr pScreen);
++
++void
++GLAMODRICloseScreen(ScreenPtr pScreen);
++
++void
++GLAMODRIDMAStart(GLAMOScreenInfo *glamos);
++
++void
++GLAMODRIDMAStop(GLAMOScreenInfo *glamos);
++
++void
++GLAMODRIDMAReset(GLAMOScreenInfo *glamos);
++
++void
++GLAMODRIDispatchIndirect(GLAMOScreenInfo *glamos, Bool discard);
++
++drmBufPtr
++GLAMODRIGetBuffer(GLAMOScreenInfo *glamos);
++
++#endif /* USE_DRI */
++
++/* glamo_cursor.c */
++Bool
++GLAMOCursorInit(ScreenPtr pScreen);
++
++void
++GLAMOCursorEnable(ScreenPtr pScreen);
++
++void
++GLAMOCursorDisable(ScreenPtr pScreen);
++
++void
++GLAMOCursorFini(ScreenPtr pScreen);
++
++void
++GLAMORecolorCursor(ScreenPtr pScreen, int ndef, xColorItem *pdef);
++
++int
++GLAMOLog2(int val);
++
++/* glamo_video.c */
++Bool
++GLAMOInitVideo(ScreenPtr pScreen);
++
++void
++GLAMOFiniVideo(ScreenPtr pScreen);
++
++extern KdCardFuncs GLAMOFuncs;
++
++#endif /* _GLAMO_H_ */
+Index: xserver/hw/kdrive/glamo/glamo_dma.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ xserver/hw/kdrive/glamo/glamo_dma.c 2007-09-26 17:45:16.000000000 +0800
+@@ -0,0 +1,410 @@
++/*
++ * Copyright © 2007 OpenMoko, Inc.
++ *
++ * This driver is based on Xati,
++ * Copyright © 2004 Eric Anholt
++ *
++ * Permission to use, copy, modify, distribute, and sell this software and its
++ * documentation for any purpose is hereby granted without fee, provided that
++ * the above copyright notice appear in all copies and that both that copyright
++ * notice and this permission notice appear in supporting documentation, and
++ * that the name of the copyright holders not be used in advertising or
++ * publicity pertaining to distribution of the software without specific,
++ * written prior permission. The copyright holders make no representations
++ * about the suitability of this software for any purpose. It is provided "as
++ * is" without express or implied warranty.
++ *
++ * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
++ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
++ * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
++ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
++ * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
++ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
++ * OF THIS SOFTWARE.
++ */
++
++#include <sys/time.h>
++
++#include "glamo.h"
++#include "glamo-regs.h"
++#include "glamo_dma.h"
++#include "glamo_draw.h"
++
++#ifdef USE_DRI
++#include "radeon_common.h"
++#include "glamo_sarea.h"
++#endif /* USE_DRI */
++
++#define DEBUG_FIFO 1
++
++#if DEBUG_FIFO
++static void
++GLAMODebugFifo(GLAMOScreenInfo *glamos)
++{
++ GLAMOCardInfo *glamoc = glamos->glamoc;
++ char *mmio = glamoc->reg_base;
++ CARD32 offset;
++
++ ErrorF("GLAMO_REG_CQ_STATUS: 0x%04x\n",
++ MMIO_IN16(mmio, GLAMO_REG_CQ_STATUS));
++
++ offset = MMIO_IN16(mmio, GLAMO_REG_CQ_WRITE_ADDRL);
++ offset |= (MMIO_IN16(mmio, GLAMO_REG_CQ_WRITE_ADDRH) << 16) & 0x7;
++ ErrorF("GLAMO_REG_CQ_WRITE_ADDR: 0x%08x\n", (unsigned int) offset);
++
++ offset = MMIO_IN16(mmio, GLAMO_REG_CQ_READ_ADDRL);
++ offset |= (MMIO_IN16(mmio, GLAMO_REG_CQ_READ_ADDRH) << 16) & 0x7;
++ ErrorF("GLAMO_REG_CQ_READ_ADDR: 0x%08x\n", (unsigned int) offset);
++}
++#endif
++
++void
++GLAMOEngineReset(ScreenPtr pScreen, enum glamo_engine engine)
++{
++ KdScreenPriv(pScreen);
++ GLAMOCardInfo(pScreenPriv);
++ CARD32 reg;
++ CARD16 mask;
++ char *mmio = glamoc->reg_base;
++
++ if (!mmio)
++ return;
++
++ switch (engine) {
++ case GLAMO_ENGINE_ISP:
++ reg = GLAMO_REG_CLOCK_ISP;
++ mask = GLAMO_CLOCK_ISP2_RESET;
++ break;
++ case GLAMO_ENGINE_CQ:
++ reg = GLAMO_REG_CLOCK_2D;
++ mask = GLAMO_CLOCK_2D_CQ_RESET;
++ break;
++ case GLAMO_ENGINE_2D:
++ reg = GLAMO_REG_CLOCK_2D;
++ mask = GLAMO_CLOCK_2D_RESET;
++ break;
++ }
++
++ MMIOSetBitMask(mmio, reg, mask, 0xffff);
++ usleep(1000);
++ MMIOSetBitMask(mmio, reg, mask, 0);
++ usleep(1000);
++}
++
++void
++GLAMOEngineDisable(ScreenPtr pScreen, enum glamo_engine engine)
++{
++ KdScreenPriv(pScreen);
++ GLAMOCardInfo(pScreenPriv);
++ char *mmio = glamoc->reg_base;
++
++ if (!mmio)
++ return;
++
++ return;
++}
++
++void
++GLAMOEngineEnable(ScreenPtr pScreen, enum glamo_engine engine)
++{
++ KdScreenPriv(pScreen);
++ GLAMOCardInfo(pScreenPriv);
++ char *mmio = glamoc->reg_base;
++
++ if (!mmio)
++ return;
++
++ switch (engine) {
++ case GLAMO_ENGINE_ISP:
++ MMIOSetBitMask(mmio, GLAMO_REG_CLOCK_ISP,
++ GLAMO_CLOCK_ISP_EN_M2CLK |
++ GLAMO_CLOCK_ISP_EN_I1CLK,
++ 0xffff);
++ MMIOSetBitMask(mmio, GLAMO_REG_CLOCK_GEN5_2,
++ GLAMO_CLOCK_GEN52_EN_DIV_ICLK,
++ 0xffff);
++ MMIOSetBitMask(mmio, GLAMO_REG_CLOCK_GEN5_1,
++ GLAMO_CLOCK_GEN51_EN_DIV_JCLK,
++ 0xffff);
++ MMIOSetBitMask(mmio, GLAMO_REG_HOSTBUS(2),
++ GLAMO_HOSTBUS2_MMIO_EN_ISP,
++ 0xffff);
++ break;
++ case GLAMO_ENGINE_CQ:
++ MMIOSetBitMask(mmio, GLAMO_REG_CLOCK_2D,
++ GLAMO_CLOCK_2D_EN_M6CLK,
++ 0xffff);
++ MMIOSetBitMask(mmio, GLAMO_REG_HOSTBUS(2),
++ GLAMO_HOSTBUS2_MMIO_EN_CQ,
++ 0xffff);
++ MMIOSetBitMask(mmio, GLAMO_REG_CLOCK_GEN5_1,
++ GLAMO_CLOCK_GEN51_EN_DIV_MCLK,
++ 0xffff);
++ break;
++ case GLAMO_ENGINE_2D:
++ MMIOSetBitMask(mmio, GLAMO_REG_CLOCK_2D,
++ GLAMO_CLOCK_2D_EN_M7CLK |
++ GLAMO_CLOCK_2D_EN_GCLK |
++ GLAMO_CLOCK_2D_DG_M7CLK |
++ GLAMO_CLOCK_2D_DG_GCLK,
++ 0xffff);
++ MMIOSetBitMask(mmio, GLAMO_REG_HOSTBUS(2),
++ GLAMO_HOSTBUS2_MMIO_EN_2D,
++ 0xffff);
++ MMIOSetBitMask(mmio, GLAMO_REG_CLOCK_GEN5_1,
++ GLAMO_CLOCK_GEN51_EN_DIV_GCLK,
++ 0xffff);
++ break;
++ }
++}
++
++void
++GLAMOWaitIdle(GLAMOScreenInfo *glamos)
++{
++ GLAMOCardInfo *glamoc = glamos->glamoc;
++ char *mmio = glamoc->reg_base;
++ CARD16 status;
++ TIMEOUT_LOCALS;
++
++ if (glamos->indirectBuffer != NULL)
++ GLAMOFlushIndirect(glamos, 0);
++
++#ifdef USE_DRI
++ if (glamos->using_dri) {
++ int ret = 0;
++ int cmd = (glamoc->is_3362 ? DRM_RADEON_CP_IDLE :
++ DRM_R128_CCE_IDLE);
++ WHILE_NOT_TIMEOUT(2) {
++ ret = drmCommandNone(glamoc->drmFd, cmd);
++ if (ret != -EBUSY)
++ break;
++ }
++ if (TIMEDOUT()) {
++ GLAMODebugFifo(glamos);
++ FatalError("Timed out idling CCE (card hung)\n");
++ }
++ if (ret != 0)
++ ErrorF("Failed to idle DMA, returned %d\n", ret);
++ return;
++ }
++#endif
++
++ WHILE_NOT_TIMEOUT(.5) {
++ status = MMIO_IN16(mmio, GLAMO_REG_CQ_STATUS);
++ if ((status & (1 << 2)) && !(status & (1 << 8)))
++ break;
++ }
++ if (TIMEDOUT()) {
++ ErrorF("Timeout idling accelerator, resetting...\n");
++ GLAMOEngineReset(glamos->screen->pScreen, GLAMO_ENGINE_CQ);
++ GLAMODrawSetup(glamos->screen->pScreen);
++ }
++
++#if DEBUG_FIFO
++ ErrorF("Idle?\n");
++ GLAMODebugFifo(glamos);
++#endif
++}
++
++dmaBuf *
++GLAMOGetDMABuffer(GLAMOScreenInfo *glamos)
++{
++ dmaBuf *buf;
++
++ buf = (dmaBuf *)xalloc(sizeof(dmaBuf));
++ if (buf == NULL)
++ return NULL;
++
++#ifdef USE_DRI
++ if (glamos->using_dri) {
++ buf->drmBuf = GLAMODRIGetBuffer(glamos);
++ if (buf->drmBuf == NULL) {
++ xfree(buf);
++ return NULL;
++ }
++ buf->size = buf->drmBuf->total;
++ buf->used = buf->drmBuf->used;
++ buf->address = buf->drmBuf->address;
++ return buf;
++ }
++#endif /* USE_DRI */
++
++ buf->size = glamos->ring_len / 2;
++ buf->address = xalloc(buf->size);
++ if (buf->address == NULL) {
++ xfree(buf);
++ return NULL;
++ }
++ buf->used = 0;
++
++ return buf;
++}
++
++static void
++GLAMODispatchIndirectDMA(GLAMOScreenInfo *glamos)
++{
++ GLAMOCardInfo *glamoc = glamos->glamoc;
++ dmaBuf *buf = glamos->indirectBuffer;
++ char *mmio = glamoc->reg_base;
++ CARD16 *addr;
++ int count, ring_count;
++ TIMEOUT_LOCALS;
++
++ addr = (CARD16 *)((char *)buf->address + glamos->indirectStart);
++ count = (buf->used - glamos->indirectStart) / 2;
++ ring_count = glamos->ring_len / 2;
++
++ WHILE_NOT_TIMEOUT(.5) {
++ if (count <= 0)
++ break;
++
++ glamos->ring_addr[glamos->ring_write++] = *addr++;
++ if (glamos->ring_write >= ring_count)
++ glamos->ring_write = 0;
++
++ while (glamos->ring_write == glamos->ring_read)
++ {
++ glamos->ring_read =
++ MMIO_IN16(mmio, GLAMO_REG_CQ_READ_ADDRL);
++ glamos->ring_read |=
++ (MMIO_IN16(mmio, GLAMO_REG_CQ_READ_ADDRH) & 0x7) << 16;
++ }
++
++ count--;
++ }
++ if (TIMEDOUT()) {
++ ErrorF("Timeout submitting packets, resetting...\n");
++ GLAMOEngineReset(glamos->screen->pScreen, GLAMO_ENGINE_CQ);
++ GLAMODrawSetup(glamos->screen->pScreen);
++ }
++
++ MMIO_OUT16(mmio, GLAMO_REG_CQ_WRITE_ADDRH,
++ (glamos->ring_write >> 15) & 0x7);
++ MMIO_OUT16(mmio, GLAMO_REG_CQ_WRITE_ADDRL,
++ (glamos->ring_write << 1) & 0xffff);
++}
++
++void
++GLAMOFlushIndirect(GLAMOScreenInfo *glamos, Bool discard)
++{
++ dmaBuf *buf = glamos->indirectBuffer;
++
++ if ((glamos->indirectStart == buf->used) && !discard)
++ return;
++
++#if DEBUG_FIFO
++ ErrorF("Dispatching %d DWORDS\n", (buf->used - glamos->indirectStart) /
++ 4);
++#endif
++
++#ifdef USE_DRI
++ if (glamos->using_dri) {
++ buf->drmBuf->used = buf->used;
++ GLAMODRIDispatchIndirect(glamos, discard);
++ if (discard) {
++ buf->drmBuf = GLAMODRIGetBuffer(glamos);
++ buf->size = buf->drmBuf->total;
++ buf->used = buf->drmBuf->used;
++ buf->address = buf->drmBuf->address;
++ glamos->indirectStart = 0;
++ } else {
++ /* Start on a double word boundary */
++ glamos->indirectStart = buf->used = (buf->used + 7) & ~7;
++ }
++ return;
++ }
++#endif /* USE_DRI */
++
++ GLAMODispatchIndirectDMA(glamos);
++
++ buf->used = 0;
++ glamos->indirectStart = 0;
++}
++
++static Bool
++GLAMODMAInit(ScreenPtr pScreen)
++{
++ KdScreenPriv(pScreen);
++ GLAMOScreenInfo(pScreenPriv);
++ GLAMOCardInfo(pScreenPriv);
++ char *mmio = glamoc->reg_base;
++ int cq_len = 63;
++
++ glamos->ring_len = (cq_len + 1) * 1024;
++
++ glamos->dma_space = KdOffscreenAlloc(pScreen, glamos->ring_len + 4,
++ 16, TRUE, NULL, NULL);
++ if (!glamos->dma_space)
++ return FALSE;
++
++ glamos->ring_addr = (CARD16 *) (pScreenPriv->screen->memory_base +
++ glamos->dma_space->offset);
++ glamos->ring_read = 0;
++ glamos->ring_write = 0;
++
++ /* make the decoder happy? */
++ glamos->ring_addr[glamos->ring_len / 2] = 0x0;
++ glamos->ring_addr[glamos->ring_len / 2 + 1] = 0x0;
++
++ GLAMOEngineEnable(glamos->screen->pScreen, GLAMO_ENGINE_CQ);
++ GLAMOEngineReset(glamos->screen->pScreen, GLAMO_ENGINE_CQ);
++
++ MMIO_OUT16(mmio, GLAMO_REG_CQ_BASE_ADDRL,
++ glamos->dma_space->offset & 0xffff);
++ MMIO_OUT16(mmio, GLAMO_REG_CQ_BASE_ADDRH,
++ (glamos->dma_space->offset >> 16) & 0x7f);
++ MMIO_OUT16(mmio, GLAMO_REG_CQ_LEN, cq_len);
++
++ MMIO_OUT16(mmio, GLAMO_REG_CQ_WRITE_ADDRH, 0);
++ MMIO_OUT16(mmio, GLAMO_REG_CQ_WRITE_ADDRL, 0);
++ MMIO_OUT16(mmio, GLAMO_REG_CQ_READ_ADDRH, 0);
++ MMIO_OUT16(mmio, GLAMO_REG_CQ_READ_ADDRL, 0);
++ MMIO_OUT16(mmio, GLAMO_REG_CQ_CONTROL,
++ 1 << 12 |
++ 5 << 8 |
++ 8 << 4);
++
++ return TRUE;
++}
++
++void
++GLAMODMASetup(ScreenPtr pScreen)
++{
++ KdScreenPriv(pScreen);
++ GLAMOScreenInfo(pScreenPriv);
++
++#ifdef USE_DRI
++ if (glamos->using_dri)
++ GLAMODRIDMAStart(glamos);
++#endif /* USE_DRI */
++
++ if (!glamos->using_dri)
++ GLAMODMAInit(pScreen);
++
++ glamos->indirectBuffer = GLAMOGetDMABuffer(glamos);
++ if (glamos->indirectBuffer == FALSE)
++ FatalError("Failed to allocate DMA buffer.\n");
++
++ if (glamos->using_dri)
++ ErrorF("Initialized DRI DMA\n");
++ else
++ ErrorF("Initialized DMA\n");
++}
++
++void
++GLAMODMATeardown(ScreenPtr pScreen)
++{
++ KdScreenPriv(pScreen);
++ GLAMOScreenInfo(pScreenPriv);
++
++ GLAMOWaitIdle(glamos);
++
++#ifdef USE_DRI
++ if (glamos->using_dri)
++ GLAMODRIDMAStop(glamos);
++#endif /* USE_DRI */
++
++ xfree(glamos->indirectBuffer->address);
++ xfree(glamos->indirectBuffer);
++ glamos->indirectBuffer = NULL;
++}
+Index: xserver/hw/kdrive/glamo/glamo_dma.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ xserver/hw/kdrive/glamo/glamo_dma.h 2007-09-25 19:17:53.000000000 +0800
+@@ -0,0 +1,159 @@
++/*
++ * Copyright © 2007 OpenMoko, Inc.
++ *
++ * This driver is based on Xati,
++ * Copyright © 2004 Eric Anholt
++ *
++ * Permission to use, copy, modify, distribute, and sell this software and its
++ * documentation for any purpose is hereby granted without fee, provided that
++ * the above copyright notice appear in all copies and that both that copyright
++ * notice and this permission notice appear in supporting documentation, and
++ * that the name of the copyright holders not be used in advertising or
++ * publicity pertaining to distribution of the software without specific,
++ * written prior permission. The copyright holders make no representations
++ * about the suitability of this software for any purpose. It is provided "as
++ * is" without express or implied warranty.
++ *
++ * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
++ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
++ * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
++ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
++ * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
++ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
++ * OF THIS SOFTWARE.
++ */
++
++#ifndef _GLAMO_DMA_H_
++#define _GLAMO_DMA_H_
++
++#define CCE_DEBUG 1
++
++#if !CCE_DEBUG
++#define DMA_PACKET0(reg, count) \
++ (reg)
++#else
++#define DMA_PACKET0(reg, count) \
++ (__packet0count = (count), __reg = (reg), \
++ (reg))
++#endif
++#define DMA_PACKET1(reg1, reg2) \
++ (GLAMO_CCE_PACKET1 | \
++ (((reg2) >> 2) << GLAMO_CCE_PACKET1_REG_2_SHIFT) | ((reg1) >> 2))
++#define DMA_PACKET3(type, count) \
++ ((type) | (((count) - 1) << 16))
++
++#if !CCE_DEBUG
++
++#define RING_LOCALS CARD16 *__head; int __count
++#define BEGIN_DMA(n) \
++do { \
++ if ((glamos->indirectBuffer->used + 2 * (n)) > \
++ glamos->indirectBuffer->size) { \
++ GLAMOFlushIndirect(glamos, 1); \
++ } \
++ __head = (CARD16 *)((char *)glamos->indirectBuffer->address + \
++ glamos->indirectBuffer->used); \
++ __count = 0; \
++} while (0)
++#define END_DMA() do { \
++ glamos->indirectBuffer->used += __count * 2; \
++} while (0)
++
++#else
++
++#define RING_LOCALS \
++ CARD16 *__head; int __count, __total, __reg, __packet0count
++#define BEGIN_DMA(n) \
++do { \
++ if ((glamos->indirectBuffer->used + 2 * (n)) > \
++ glamos->indirectBuffer->size) { \
++ GLAMOFlushIndirect(glamos, 1); \
++ } \
++ __head = (CARD16 *)((char *)glamos->indirectBuffer->address + \
++ glamos->indirectBuffer->used); \
++ __count = 0; \
++ __total = n; \
++ __reg = 0; \
++ __packet0count = 0; \
++} while (0)
++#define END_DMA() do { \
++ if (__count != __total) \
++ FatalError("count != total (%d vs %d) at %s:%d\n", \
++ __count, __total, __FILE__, __LINE__); \
++ glamos->indirectBuffer->used += __count * 2; \
++} while (0)
++
++#endif
++
++#define OUT_RING(val) do { \
++ __head[__count++] = (val); \
++} while (0)
++
++#define OUT_RING_REG(reg, val) do { \
++ if (__reg != reg) \
++ FatalError("unexpected reg (0x%x vs 0x%x) at %s:%d\n", \
++ reg, __reg, __FILE__, __LINE__); \
++ if (__packet0count-- <= 0) \
++ FatalError("overrun of packet0 at %s:%d\n", \
++ __FILE__, __LINE__); \
++ __head[__count++] = (val); \
++ __reg += 4; \
++} while (0)
++
++#define OUT_RING_F(x) OUT_RING(GET_FLOAT_BITS(x))
++
++#define OUT_REG(reg, val) \
++do { \
++ OUT_RING(DMA_PACKET0(reg, 1)); \
++ OUT_RING(val); \
++} while (0)
++
++#define TIMEOUT_LOCALS struct timeval _target, _curtime
++
++static inline Bool
++tv_le(struct timeval *tv1, struct timeval *tv2)
++{
++ if (tv1->tv_sec < tv2->tv_sec ||
++ (tv1->tv_sec == tv2->tv_sec && tv1->tv_usec < tv2->tv_usec))
++ return TRUE;
++ else
++ return FALSE;
++}
++
++#define WHILE_NOT_TIMEOUT(_timeout) \
++ gettimeofday(&_target, NULL); \
++ _target.tv_usec += ((_timeout) * 1000000); \
++ _target.tv_sec += _target.tv_usec / 1000000; \
++ _target.tv_usec = _target.tv_usec % 1000000; \
++ while (gettimeofday(&_curtime, NULL), tv_le(&_curtime, &_target))
++
++#define TIMEDOUT() (!tv_le(&_curtime, &_target))
++
++dmaBuf *
++GLAMOGetDMABuffer(GLAMOScreenInfo *glamos);
++
++void
++GLAMOFlushIndirect(GLAMOScreenInfo *glamos, Bool discard);
++
++void
++GLAMODMASetup(ScreenPtr pScreen);
++
++void
++GLAMODMATeardown(ScreenPtr pScreen);
++
++enum glamo_engine {
++ GLAMO_ENGINE_ISP,
++ GLAMO_ENGINE_CQ,
++ GLAMO_ENGINE_2D,
++};
++
++void
++GLAMOEngineEnable(ScreenPtr pScreen, enum glamo_engine engine);
++
++void
++GLAMOEngineDisable(ScreenPtr pScreen, enum glamo_engine engine);
++
++void
++GLAMOEngineReset(ScreenPtr pScreen, enum glamo_engine engine);
++
++#endif /* _GLAMO_DMA_H_ */
+Index: xserver/hw/kdrive/glamo/glamo_draw.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ xserver/hw/kdrive/glamo/glamo_draw.c 2007-09-26 17:46:30.000000000 +0800
+@@ -0,0 +1,522 @@
++/*
++ * Copyright © 2007 OpenMoko, Inc.
++ *
++ * This driver is based on Xati,
++ * Copyright © 2003 Eric Anholt
++ *
++ * Permission to use, copy, modify, distribute, and sell this software and its
++ * documentation for any purpose is hereby granted without fee, provided that
++ * the above copyright notice appear in all copies and that both that copyright
++ * notice and this permission notice appear in supporting documentation, and
++ * that the name of the copyright holders not be used in advertising or
++ * publicity pertaining to distribution of the software without specific,
++ * written prior permission. The copyright holders make no representations
++ * about the suitability of this software for any purpose. It is provided "as
++ * is" without express or implied warranty.
++ *
++ * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
++ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
++ * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
++ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
++ * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
++ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
++ * OF THIS SOFTWARE.
++ */
++
++#ifdef HAVE_CONFIG_H
++#include <kdrive-config.h>
++#endif
++#include "glamo.h"
++#include "glamo-regs.h"
++#include "glamo_dma.h"
++#include "glamo_draw.h"
++#include "kaa.h"
++
++static const CARD8 GLAMOSolidRop[16] = {
++ /* GXclear */ 0x00, /* 0 */
++ /* GXand */ 0xa0, /* src AND dst */
++ /* GXandReverse */ 0x50, /* src AND NOT dst */
++ /* GXcopy */ 0xf0, /* src */
++ /* GXandInverted*/ 0x0a, /* NOT src AND dst */
++ /* GXnoop */ 0xaa, /* dst */
++ /* GXxor */ 0x5a, /* src XOR dst */
++ /* GXor */ 0xfa, /* src OR dst */
++ /* GXnor */ 0x05, /* NOT src AND NOT dst */
++ /* GXequiv */ 0xa5, /* NOT src XOR dst */
++ /* GXinvert */ 0x55, /* NOT dst */
++ /* GXorReverse */ 0xf5, /* src OR NOT dst */
++ /* GXcopyInverted*/ 0x0f, /* NOT src */
++ /* GXorInverted */ 0xaf, /* NOT src OR dst */
++ /* GXnand */ 0x5f, /* NOT src OR NOT dst */
++ /* GXset */ 0xff, /* 1 */
++};
++
++static const CARD8 GLAMOBltRop[16] = {
++ /* GXclear */ 0x00, /* 0 */
++ /* GXand */ 0x88, /* src AND dst */
++ /* GXandReverse */ 0x44, /* src AND NOT dst */
++ /* GXcopy */ 0xcc, /* src */
++ /* GXandInverted*/ 0x22, /* NOT src AND dst */
++ /* GXnoop */ 0xaa, /* dst */
++ /* GXxor */ 0x66, /* src XOR dst */
++ /* GXor */ 0xee, /* src OR dst */
++ /* GXnor */ 0x11, /* NOT src AND NOT dst */
++ /* GXequiv */ 0x99, /* NOT src XOR dst */
++ /* GXinvert */ 0x55, /* NOT dst */
++ /* GXorReverse */ 0xdd, /* src OR NOT dst */
++ /* GXcopyInverted*/ 0x33, /* NOT src */
++ /* GXorInverted */ 0xbb, /* NOT src OR dst */
++ /* GXnand */ 0x77, /* NOT src OR NOT dst */
++ /* GXset */ 0xff, /* 1 */
++};
++
++GLAMOScreenInfo *accel_glamos;
++CARD32 settings, color, src_pitch_offset, dst_pitch_offset;
++
++int sample_count;
++float sample_offsets_x[255];
++float sample_offsets_y[255];
++
++void
++GLAMODrawSetup(ScreenPtr pScreen)
++{
++ GLAMOEngineEnable(pScreen, GLAMO_ENGINE_2D);
++ GLAMOEngineReset(pScreen, GLAMO_ENGINE_2D);
++}
++
++static void
++GLAMOWaitMarker(ScreenPtr pScreen, int marker)
++{
++ KdScreenPriv(pScreen);
++ GLAMOScreenInfo(pScreenPriv);
++
++ ENTER_DRAW(0);
++ GLAMOWaitIdle(glamos);
++ LEAVE_DRAW(0);
++}
++
++#if GLAMO_TRACE_DRAW
++void
++GLAMOEnterDraw (PixmapPtr pPix, const char *function)
++{
++ if (pPix != NULL) {
++ KdScreenPriv(pPix->drawable.pScreen);
++ CARD32 offset;
++
++ offset = ((CARD8 *)pPix->devPrivate.ptr -
++ pScreenPriv->screen->memory_base);
++
++ ErrorF ("Enter %s 0x%x (%dx%dx%d/%d)\n", function, (unsigned int) offset,
++ pPix->drawable.width, pPix->drawable.height, pPix->drawable.depth,
++ (unsigned int) pPix->drawable.bitsPerPixel);
++ } else
++ ErrorF ("Enter %s\n", function);
++}
++
++void
++GLAMOLeaveDraw (PixmapPtr pPix, const char *function)
++{
++ if (pPix != NULL) {
++ KdScreenPriv(pPix->drawable.pScreen);
++ CARD32 offset;
++
++ offset = ((CARD8 *)pPix->devPrivate.ptr -
++ pScreenPriv->screen->memory_base);
++
++ ErrorF ("Leave %s 0x%x\n", function, (unsigned int) offset);
++ } else
++ ErrorF ("Leave %s\n", function);
++}
++#endif
++
++static Bool
++GLAMOPrepareSolid(PixmapPtr pPix, int alu, Pixel pm, Pixel fg)
++{
++ KdScreenPriv(pPix->drawable.pScreen);
++ GLAMOScreenInfo(pScreenPriv);
++ CARD32 offset, pitch;
++ FbBits mask;
++ RING_LOCALS;
++
++ if (pPix->drawable.bitsPerPixel != 16)
++ GLAMO_FALLBACK(("Only 16bpp is supported\n"));
++
++ mask = FbFullMask(16);
++ if ((pm & mask) != mask)
++ GLAMO_FALLBACK(("Can't do planemask 0x%08x\n", (unsigned int) pm));
++
++ accel_glamos = glamos;
++
++ settings = GLAMOSolidRop[alu] << 8;
++ offset = ((CARD8 *) pPix->devPrivate.ptr -
++ pScreenPriv->screen->memory_base);
++ pitch = pPix->devKind;
++
++ ENTER_DRAW(pPix);
++
++ BEGIN_DMA(12);
++ OUT_REG(GLAMO_REG_2D_DST_ADDRL, offset & 0xffff);
++ OUT_REG(GLAMO_REG_2D_DST_ADDRH, (offset >> 16) & 0x7f);
++ OUT_REG(GLAMO_REG_2D_DST_PITCH, pitch);
++ OUT_REG(GLAMO_REG_2D_DST_HEIGHT, pPix->drawable.height);
++ OUT_REG(GLAMO_REG_2D_PAT_FG, fg);
++ OUT_REG(GLAMO_REG_2D_COMMAND2, settings);
++ END_DMA();
++
++ LEAVE_DRAW(pPix);
++
++ return TRUE;
++}
++
++static void
++GLAMOSolid(int x1, int y1, int x2, int y2)
++{
++ ENTER_DRAW(0);
++ GLAMOScreenInfo *glamos = accel_glamos;
++ RING_LOCALS;
++
++ BEGIN_DMA(14);
++ OUT_REG(GLAMO_REG_2D_DST_X, x1);
++ OUT_REG(GLAMO_REG_2D_DST_Y, y1);
++ OUT_REG(GLAMO_REG_2D_RECT_WIDTH, x2 - x1);
++ OUT_REG(GLAMO_REG_2D_RECT_HEIGHT, y2 - y1);
++ OUT_REG(GLAMO_REG_2D_COMMAND3, 0);
++ OUT_REG(GLAMO_REG_2D_ID1, 0);
++ OUT_REG(GLAMO_REG_2D_ID2, 0);
++ END_DMA();
++ LEAVE_DRAW(0);
++}
++
++static void
++GLAMODoneSolid(void)
++{
++ ENTER_DRAW(0);
++ LEAVE_DRAW(0);
++}
++
++static Bool
++GLAMOPrepareCopy(PixmapPtr pSrc, PixmapPtr pDst, int dx, int dy, int alu, Pixel pm)
++{
++ KdScreenPriv(pDst->drawable.pScreen);
++ GLAMOScreenInfo(pScreenPriv);
++ CARD32 src_offset, src_pitch;
++ CARD32 dst_offset, dst_pitch;
++ FbBits mask;
++ RING_LOCALS;
++
++ if (pSrc->drawable.bitsPerPixel != 16 ||
++ pDst->drawable.bitsPerPixel != 16)
++ GLAMO_FALLBACK(("Only 16bpp is supported"));
++
++ mask = FbFullMask(16);
++ if ((pm & mask) != mask)
++ GLAMO_FALLBACK(("Can't do planemask 0x%08x", (unsigned int) pm));
++
++ accel_glamos = glamos;
++
++ src_offset = ((CARD8 *) pSrc->devPrivate.ptr -
++ pScreenPriv->screen->memory_base);
++ src_pitch = pSrc->devKind;
++
++ dst_offset = ((CARD8 *) pDst->devPrivate.ptr -
++ pScreenPriv->screen->memory_base);
++ dst_pitch = pDst->devKind;
++
++ settings = GLAMOBltRop[alu] << 8;
++
++ ENTER_DRAW (pDst);
++
++ BEGIN_DMA(16);
++
++ OUT_REG(GLAMO_REG_2D_SRC_ADDRL, src_offset & 0xffff);
++ OUT_REG(GLAMO_REG_2D_SRC_ADDRH, (src_offset >> 16) & 0x7f);
++ OUT_REG(GLAMO_REG_2D_SRC_PITCH, src_pitch);
++
++ OUT_REG(GLAMO_REG_2D_DST_ADDRL, dst_offset & 0xffff);
++ OUT_REG(GLAMO_REG_2D_DST_ADDRH, (dst_offset >> 16) & 0x7f);
++ OUT_REG(GLAMO_REG_2D_DST_PITCH, dst_pitch);
++ OUT_REG(GLAMO_REG_2D_DST_HEIGHT, pDst->drawable.height);
++
++ OUT_REG(GLAMO_REG_2D_COMMAND2, settings);
++
++ END_DMA();
++
++ LEAVE_DRAW(pDst);
++
++ return TRUE;
++}
++
++static void
++GLAMOCopy(int srcX, int srcY, int dstX, int dstY, int w, int h)
++{
++ GLAMOScreenInfo *glamos = accel_glamos;
++ RING_LOCALS;
++
++ BEGIN_DMA(18);
++ OUT_REG(GLAMO_REG_2D_SRC_X, srcX);
++ OUT_REG(GLAMO_REG_2D_SRC_Y, srcY);
++ OUT_REG(GLAMO_REG_2D_DST_X, dstX);
++ OUT_REG(GLAMO_REG_2D_DST_Y, dstY);
++ OUT_REG(GLAMO_REG_2D_RECT_WIDTH, w);
++ OUT_REG(GLAMO_REG_2D_RECT_HEIGHT, h);
++ OUT_REG(GLAMO_REG_2D_COMMAND3, 0);
++ OUT_REG(GLAMO_REG_2D_ID1, 0);
++ OUT_REG(GLAMO_REG_2D_ID2, 0);
++ END_DMA();
++}
++
++static void
++GLAMODoneCopy(void)
++{
++ ENTER_DRAW(0);
++ LEAVE_DRAW(0);
++}
++
++static Bool
++GLAMOUploadToScreen(PixmapPtr pDst, char *src, int src_pitch)
++{
++ int width, height, bpp, i;
++ CARD8 *dst_offset;
++ int dst_pitch;
++
++ dst_offset = (CARD8 *)pDst->devPrivate.ptr;
++ dst_pitch = pDst->devKind;
++ width = pDst->drawable.width;
++ height = pDst->drawable.height;
++ bpp = pDst->drawable.bitsPerPixel;
++ bpp /= 8;
++
++ for (i = 0; i < height; i++)
++ {
++ memcpy(dst_offset, src, width * bpp);
++
++ dst_offset += dst_pitch;
++ src += src_pitch;
++ }
++
++ ErrorF("hostdata upload %d,%d %dbpp\n", width, height, bpp);
++
++ return TRUE;
++}
++
++
++#if 0
++static Bool
++GLAMOUploadToScratch(PixmapPtr pSrc, PixmapPtr pDst)
++{
++ KdScreenPriv(pSrc->drawable.pScreen);
++ GLAMOCardInfo(pScreenPriv);
++ GLAMOScreenInfo(pScreenPriv);
++ int dst_pitch, src_pitch, w, i, size, bytes;
++ unsigned char *dst, *src;
++ RING_LOCALS;
++
++ ENTER_DRAW(pSrc);
++ /* Align width to log 2, useful for R128 composite. This should be a
++ * KAA flag we check for (and supported in kaa.c in general) since many
++ * older bits of hardware are going to want POT pitches.
++ */
++ w = pSrc->drawable.width;
++ if (glamos->kaa.flags & KAA_OFFSCREEN_ALIGN_POT)
++ w = 1 << (GLAMOLog2(w - 1) + 1);
++ dst_pitch = (w * pSrc->drawable.bitsPerPixel / 8 +
++ glamos->kaa.pitchAlign - 1) & ~(glamos->kaa.pitchAlign - 1);
++
++ size = dst_pitch * pSrc->drawable.height;
++ if (size > glamos->scratch_area->size)
++ GLAMO_FALLBACK(("Pixmap too large for scratch (%d,%d)\n",
++ pSrc->drawable.width, pSrc->drawable.height));
++
++ glamos->scratch_next = (glamos->scratch_next + glamos->kaa.offsetAlign - 1) &
++ ~(glamos->kaa.offsetAlign - 1);
++ if (glamos->scratch_next + size > glamos->scratch_area->offset +
++ glamos->scratch_area->size) {
++ /* Only sync when we've used all of the scratch area. */
++ kaaWaitSync(pSrc->drawable.pScreen);
++ glamos->scratch_next = glamos->scratch_area->offset;
++ }
++ memcpy(pDst, pSrc, sizeof(*pDst));
++ pDst->devKind = dst_pitch;
++ pDst->devPrivate.ptr = pScreenPriv->screen->memory_base +
++ glamos->scratch_next;
++ glamos->scratch_next += size;
++
++ src = pSrc->devPrivate.ptr;
++ src_pitch = pSrc->devKind;
++ dst = pDst->devPrivate.ptr;
++ bytes = src_pitch < dst_pitch ? src_pitch : dst_pitch;
++
++ i = pSrc->drawable.height;
++ while (i--) {
++ memcpy(dst, src, bytes);
++ dst += dst_pitch;
++ src += src_pitch;
++ }
++
++ /* Flush the pixel cache */
++ if (glamoc->is_3362) {
++ BEGIN_DMA(4);
++ OUT_REG(RADEON_REG_RB3D_DSTCACHE_CTLSTAT,
++ RADEON_RB3D_DC_FLUSH_ALL);
++ OUT_REG(GLAMO_REG_WAIT_UNTIL, RADEON_WAIT_HOST_IDLECLEAN);
++ END_DMA();
++ } else {
++ BEGIN_DMA(2);
++ OUT_REG(R128_REG_PC_GUI_CTLSTAT, R128_PC_FLUSH_ALL);
++ END_DMA();
++ }
++
++ LEAVE_DRAW(pSrc);
++ return TRUE;
++}
++#endif
++
++static void
++GLAMOBlockHandler(pointer blockData, OSTimePtr timeout, pointer readmask)
++{
++ ScreenPtr pScreen = (ScreenPtr) blockData;
++ KdScreenPriv(pScreen);
++ GLAMOScreenInfo(pScreenPriv);
++
++ /* When the server is going to sleep, make sure that all DMA data has
++ * been flushed.
++ */
++ if (glamos->indirectBuffer)
++ GLAMOFlushIndirect(glamos, 1);
++}
++
++static void
++GLAMOWakeupHandler(pointer blockData, int result, pointer readmask)
++{
++}
++
++Bool
++GLAMODrawInit(ScreenPtr pScreen)
++{
++ KdScreenPriv(pScreen);
++ GLAMOScreenInfo(pScreenPriv);
++
++ ErrorF("Screen: %d/%d depth/bpp\n", pScreenPriv->screen->fb[0].depth,
++ pScreenPriv->screen->fb[0].bitsPerPixel);
++
++ RegisterBlockAndWakeupHandlers(GLAMOBlockHandler, GLAMOWakeupHandler,
++ pScreen);
++
++ glamos->using_dri = FALSE;
++#ifdef USE_DRI
++ glamos->using_dri = GLAMODRIScreenInit(pScreen);
++#endif /* USE_DRI */
++
++ memset(&glamos->kaa, 0, sizeof(KaaScreenInfoRec));
++ glamos->kaa.waitMarker = GLAMOWaitMarker;
++ glamos->kaa.PrepareSolid = GLAMOPrepareSolid;
++ glamos->kaa.Solid = GLAMOSolid;
++ glamos->kaa.DoneSolid = GLAMODoneSolid;
++ glamos->kaa.PrepareCopy = GLAMOPrepareCopy;
++ glamos->kaa.Copy = GLAMOCopy;
++ glamos->kaa.DoneCopy = GLAMODoneCopy;
++ /* Other acceleration will be hooked in in DrawEnable depending on
++ * what type of DMA gets initialized.
++ */
++
++ glamos->kaa.flags = KAA_OFFSCREEN_PIXMAPS;
++ glamos->kaa.offsetAlign = 2;
++ glamos->kaa.pitchAlign = 2;
++
++ kaaInitTrapOffsets(8, sample_offsets_x, sample_offsets_y, 0.0, 0.0);
++ sample_count = (1 << 8) - 1;
++
++ if (!kaaDrawInit(pScreen, &glamos->kaa))
++ return FALSE;
++
++ return TRUE;
++}
++
++#if 0
++static void
++GLAMOScratchSave(ScreenPtr pScreen, KdOffscreenArea *area)
++{
++ KdScreenPriv(pScreen);
++ GLAMOScreenInfo(pScreenPriv);
++
++ glamos->scratch_area = NULL;
++}
++#endif
++
++void
++GLAMODrawEnable(ScreenPtr pScreen)
++{
++ KdScreenPriv(pScreen);
++ GLAMOScreenInfo(pScreenPriv);
++
++ GLAMODMASetup(pScreen);
++ GLAMODrawSetup(pScreen);
++
++ glamos->scratch_area = NULL;
++ glamos->kaa.PrepareBlend = NULL;
++ glamos->kaa.Blend = NULL;
++ glamos->kaa.DoneBlend = NULL;
++ glamos->kaa.CheckComposite = NULL;
++ glamos->kaa.PrepareComposite = NULL;
++ glamos->kaa.Composite = NULL;
++ glamos->kaa.DoneComposite = NULL;
++ glamos->kaa.UploadToScreen = NULL;
++ glamos->kaa.UploadToScratch = NULL;
++
++#ifdef USE_DRI
++ if (glamos->using_dri) {
++ if (!glamoc->is_3362) {
++ /*glamos->kaa.PrepareTrapezoids = R128PrepareTrapezoids;
++ glamos->kaa.Trapezoids = R128Trapezoids;
++ glamos->kaa.DoneTrapezoids = R128DoneTrapezoids;*/
++ } else if (glamoc->is_r100 || glamoc->is_r200) {
++ glamos->kaa.PrepareTrapezoids = RadeonPrepareTrapezoids;
++ glamos->kaa.Trapezoids = RadeonTrapezoids;
++ glamos->kaa.DoneTrapezoids = RadeonDoneTrapezoids;
++ }
++ }
++#endif /* USE_DRI */
++
++ glamos->kaa.UploadToScreen = GLAMOUploadToScreen;
++
++ /* Reserve a scratch area. It'll be used for storing glyph data during
++ * Composite operations, because glyphs aren't in real pixmaps and thus
++ * can't be migrated.
++ */
++#if 0
++ glamos->scratch_area = KdOffscreenAlloc(pScreen, 131072,
++ glamos->kaa.offsetAlign, TRUE, GLAMOScratchSave, glamos);
++ if (glamos->scratch_area != NULL) {
++ glamos->scratch_next = glamos->scratch_area->offset;
++ glamos->kaa.UploadToScratch = GLAMOUploadToScratch;
++ }
++#endif
++
++ kaaMarkSync(pScreen);
++}
++
++void
++GLAMODrawDisable(ScreenPtr pScreen)
++{
++ kaaWaitSync(pScreen);
++ GLAMODMATeardown(pScreen);
++}
++
++void
++GLAMODrawFini(ScreenPtr pScreen)
++{
++#ifdef USE_DRI
++ KdScreenPriv(pScreen);
++ GLAMOScreenInfo(pScreenPriv);
++ if (glamos->using_dri) {
++ GLAMODRICloseScreen(pScreen);
++ glamos->using_dri = FALSE;
++ }
++#endif /* USE_DRI */
++
++ RemoveBlockAndWakeupHandlers(GLAMOBlockHandler, GLAMOWakeupHandler,
++ pScreen);
++
++ kaaDrawFini(pScreen);
++}
++
+Index: xserver/hw/kdrive/glamo/glamo_draw.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ xserver/hw/kdrive/glamo/glamo_draw.h 2007-09-25 19:02:01.000000000 +0800
+@@ -0,0 +1,59 @@
++/*
++ * Copyright © 2007 OpenMoko, Inc.
++ *
++ * This driver is based on Xati,
++ * Copyright © 2004 Eric Anholt
++ *
++ * Permission to use, copy, modify, distribute, and sell this software and its
++ * documentation for any purpose is hereby granted without fee, provided that
++ * the above copyright notice appear in all copies and that both that copyright
++ * notice and this permission notice appear in supporting documentation, and
++ * that the name of the copyright holders not be used in advertising or
++ * publicity pertaining to distribution of the software without specific,
++ * written prior permission. The copyright holders make no representations
++ * about the suitability of this software for any purpose. It is provided "as
++ * is" without express or implied warranty.
++ *
++ * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
++ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
++ * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
++ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
++ * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
++ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
++ * OF THIS SOFTWARE.
++ */
++
++#ifndef _GLAMO_DRAW_H_
++#define _GLAMO_DRAW_H_
++
++void GLAMOWaitIdle(GLAMOScreenInfo *glamos);
++
++#define GLAMO_TRACE_FALL 1
++#define GLAMO_TRACE_DRAW 1
++
++#if GLAMO_TRACE_FALL
++#define GLAMO_FALLBACK(x) \
++do { \
++ ErrorF("%s: ", __FUNCTION__); \
++ ErrorF x; \
++ return FALSE; \
++} while (0)
++#else
++#define GLAMO_FALLBACK(x) return FALSE
++#endif
++
++#if GLAMO_TRACE_DRAW
++#define ENTER_DRAW(pix) GLAMOEnterDraw(pix, __FUNCTION__)
++#define LEAVE_DRAW(pix) GLAMOLeaveDraw(pix, __FUNCTION__)
++
++void
++GLAMOEnterDraw (PixmapPtr pPixmap, const char *function);
++
++void
++GLAMOLeaveDraw (PixmapPtr pPixmap, const char *function);
++#else /* GLAMO_TRACE */
++#define ENTER_DRAW(pix)
++#define LEAVE_DRAW(pix)
++#endif /* !GLAMO_TRACE */
++
++#endif /* _GLAMO_DRAW_H_ */
+Index: xserver/hw/kdrive/glamo/glamo_stub.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ xserver/hw/kdrive/glamo/glamo_stub.c 2007-09-26 17:45:27.000000000 +0800
+@@ -0,0 +1,84 @@
++/*
++ * Copyright © 2007 OpenMoko, Inc.
++ *
++ * This driver is based on Xati,
++ * Copyright © 2003 Eric Anholt
++ *
++ * Permission to use, copy, modify, distribute, and sell this software and its
++ * documentation for any purpose is hereby granted without fee, provided that
++ * the above copyright notice appear in all copies and that both that copyright
++ * notice and this permission notice appear in supporting documentation, and
++ * that the name of the copyright holders not be used in advertising or
++ * publicity pertaining to distribution of the software without specific,
++ * written prior permission. The copyright holders make no representations
++ * about the suitability of this software for any purpose. It is provided "as
++ * is" without express or implied warranty.
++ *
++ * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
++ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
++ * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
++ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
++ * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
++ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
++ * OF THIS SOFTWARE.
++ */
++
++#ifdef HAVE_CONFIG_H
++#include <kdrive-config.h>
++#endif
++#include "glamo.h"
++#include "klinux.h"
++
++void
++InitCard(char *name)
++{
++ KdCardAttr attr;
++
++ attr.io = 0;
++ attr.address[0] = 0x8000000;
++ attr.naddr = 1;
++ KdCardInfoAdd(&GLAMOFuncs, &attr, 0);
++}
++
++void
++InitOutput(ScreenInfo *pScreenInfo, int argc, char **argv)
++{
++ KdInitOutput(pScreenInfo, argc, argv);
++}
++
++void
++InitInput(int argc, char **argv)
++{
++ KdKeyboardInfo *ki;
++
++ KdAddKeyboardDriver(&LinuxKeyboardDriver);
++ KdAddPointerDriver(&LinuxMouseDriver);
++#ifdef TSLIB
++ KdAddPointerDriver(&TsDriver);
++#endif
++
++ ki = KdParseKeyboard("keybd");
++ KdAddKeyboard(ki);
++}
++
++void
++ddxUseMsg (void)
++{
++ KdUseMsg();
++#ifdef KDRIVEVESA
++ vesaUseMsg();
++#endif
++}
++
++int
++ddxProcessArgument(int argc, char **argv, int i)
++{
++ int ret;
++
++#ifdef KDRIVEVESA
++ if (!(ret = vesaProcessArgument (argc, argv, i)))
++#endif
++ ret = KdProcessArgument(argc, argv, i);
++
++ return ret;
++}
+Index: xserver/hw/kdrive/glamo/glamo_video.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ xserver/hw/kdrive/glamo/glamo_video.c 2007-09-26 17:47:55.000000000 +0800
+@@ -0,0 +1,798 @@
++/*
++ * Copyright © 2007 OpenMoko, Inc.
++ *
++ * This driver is based on Xati,
++ * Copyright © 2004 Keith Packard
++ * Copyright © 2005 Eric Anholt
++ *
++ * Permission to use, copy, modify, distribute, and sell this software and its
++ * documentation for any purpose is hereby granted without fee, provided that
++ * the above copyright notice appear in all copies and that both that copyright
++ * notice and this permission notice appear in supporting documentation, and
++ * that the name of the copyright holders not be used in advertising or
++ * publicity pertaining to distribution of the software without specific,
++ * written prior permission. The copyright holders make no representations
++ * about the suitability of this software for any purpose. It is provided "as
++ * is" without express or implied warranty.
++ *
++ * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
++ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
++ * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
++ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
++ * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
++ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
++ * OF THIS SOFTWARE.
++ */
++
++#ifdef HAVE_CONFIG_H
++#include <kdrive-config.h>
++#endif
++#include "glamo.h"
++#include "glamo_dma.h"
++#include "glamo_draw.h"
++#include "glamo-regs.h"
++#include "kaa.h"
++
++#include <X11/extensions/Xv.h>
++#include "fourcc.h"
++
++#define MAKE_ATOM(a) MakeAtom(a, sizeof(a) - 1, TRUE)
++
++static Atom xvBrightness, xvSaturation;
++
++#define IMAGE_MAX_WIDTH 2048
++#define IMAGE_MAX_HEIGHT 2048
++
++static void
++GLAMOStopVideo(KdScreenInfo *screen, pointer data, Bool exit)
++{
++ ScreenPtr pScreen = screen->pScreen;
++ GLAMOPortPrivPtr pPortPriv = (GLAMOPortPrivPtr)data;
++
++ REGION_EMPTY(screen->pScreen, &pPortPriv->clip);
++
++ if (pPortPriv->off_screen) {
++ KdOffscreenFree (pScreen, pPortPriv->off_screen);
++ pPortPriv->off_screen = 0;
++ }
++}
++
++static int
++GLAMOSetPortAttribute(KdScreenInfo *screen, Atom attribute, int value,
++ pointer data)
++{
++ return BadMatch;
++}
++
++static int
++GLAMOGetPortAttribute(KdScreenInfo *screen, Atom attribute, int *value,
++ pointer data)
++{
++ return BadMatch;
++}
++
++static void
++GLAMOQueryBestSize(KdScreenInfo *screen, Bool motion, short vid_w, short vid_h,
++ short drw_w, short drw_h, unsigned int *p_w, unsigned int *p_h,
++ pointer data)
++{
++ *p_w = drw_w;
++ *p_h = drw_h;
++}
++
++/* GLAMOClipVideo -
++
++ Takes the dst box in standard X BoxRec form (top and left
++ edges inclusive, bottom and right exclusive). The new dst
++ box is returned. The source boundaries are given (x1, y1
++ inclusive, x2, y2 exclusive) and returned are the new source
++ boundaries in 16.16 fixed point.
++*/
++
++static void
++GLAMOClipVideo(BoxPtr dst, INT32 *x1, INT32 *x2, INT32 *y1, INT32 *y2,
++ BoxPtr extents, INT32 width, INT32 height)
++{
++ INT32 vscale, hscale, delta;
++ int diff;
++
++ hscale = ((*x2 - *x1) << 16) / (dst->x2 - dst->x1);
++ vscale = ((*y2 - *y1) << 16) / (dst->y2 - dst->y1);
++
++ *x1 <<= 16; *x2 <<= 16;
++ *y1 <<= 16; *y2 <<= 16;
++
++ diff = extents->x1 - dst->x1;
++ if (diff > 0) {
++ dst->x1 = extents->x1;
++ *x1 += diff * hscale;
++ }
++ diff = dst->x2 - extents->x2;
++ if (diff > 0) {
++ dst->x2 = extents->x2;
++ *x2 -= diff * hscale;
++ }
++ diff = extents->y1 - dst->y1;
++ if (diff > 0) {
++ dst->y1 = extents->y1;
++ *y1 += diff * vscale;
++ }
++ diff = dst->y2 - extents->y2;
++ if (diff > 0) {
++ dst->y2 = extents->y2;
++ *y2 -= diff * vscale;
++ }
++
++ if (*x1 < 0) {
++ diff = (- *x1 + hscale - 1)/ hscale;
++ dst->x1 += diff;
++ *x1 += diff * hscale;
++ }
++ delta = *x2 - (width << 16);
++ if (delta > 0) {
++ diff = (delta + hscale - 1)/ hscale;
++ dst->x2 -= diff;
++ *x2 -= diff * hscale;
++ }
++ if (*y1 < 0) {
++ diff = (- *y1 + vscale - 1)/ vscale;
++ dst->y1 += diff;
++ *y1 += diff * vscale;
++ }
++ delta = *y2 - (height << 16);
++ if (delta > 0) {
++ diff = (delta + vscale - 1)/ vscale;
++ dst->y2 -= diff;
++ *y2 -= diff * vscale;
++ }
++}
++
++static void
++GlamoDisplayVideo(KdScreenInfo *screen, GLAMOPortPrivPtr pPortPriv)
++{
++ ScreenPtr pScreen = screen->pScreen;
++ KdScreenPriv(pScreen);
++ GLAMOScreenInfo(pScreenPriv);
++ PixmapPtr pPixmap = pPortPriv->pPixmap;
++ CARD32 dst_offset, dst_pitch;
++ int dstxoff, dstyoff, srcDatatype;
++ RING_LOCALS;
++
++ BoxPtr pBox = REGION_RECTS(&pPortPriv->clip);
++ int nBox = REGION_NUM_RECTS(&pPortPriv->clip);
++
++ dst_offset = ((CARD8 *)pPixmap->devPrivate.ptr -
++ pScreenPriv->screen->memory_base);
++ dst_pitch = pPixmap->devKind;
++
++#ifdef COMPOSITE
++ dstxoff = -pPixmap->screen_x + pPixmap->drawable.x;
++ dstyoff = -pPixmap->screen_y + pPixmap->drawable.y;
++#else
++ dstxoff = 0;
++ dstyoff = 0;
++#endif
++
++ BEGIN_DMA(14);
++ OUT_REG(GLAMO_REG_ISP_YUV2RGB_11, 0x0167);
++ OUT_REG(GLAMO_REG_ISP_YUV2RGB_21, 0x01c5);
++ OUT_REG(GLAMO_REG_ISP_YUV2RGB_32, 0x00b6);
++ OUT_REG(GLAMO_REG_ISP_YUV2RGB_33, 0x0058);
++ OUT_REG(GLAMO_REG_ISP_YUV2RGB_RG, 0xb3 << 8 | 0x89);
++ OUT_REG(GLAMO_REG_ISP_YUV2RGB_B, 0xe2);
++
++ /* TODO weight matrix */
++
++ OUT_REG(GLAMO_REG_ISP_PORT2_EN, GLAMO_ISP_PORT2_EN_DECODE);
++
++ END_DMA();
++
++ if (pPortPriv->id == FOURCC_UYVY)
++ srcDatatype = 3;
++ else
++ srcDatatype = 1;
++
++ BEGIN_DMA(8);
++#if 0
++ OUT_REG(GLAMO_REG_ISP_EN3, GLAMO_ISP_EN3_SCALE_IMPROVE |
++ GLAMO_ISP_EN3_PLANE_MODE |
++ GLAMO_ISP_EN3_YUV_INPUT |
++ GLAMO_ISP_EN3_YUV420);
++ OUT_REG(GLAMO_REG_ISP_PORT1_DEC_EN, GLAMO_ISP_PORT1_EN_OUTPUT);
++
++ OUT_REG(GLAMO_REG_ISP_DEC_SCALEH, 1 << 11);
++ OUT_REG(GLAMO_REG_ISP_DEC_SCALEV, 1 << 11);
++
++ {
++ struct {
++ int src_block_y;
++ int src_block_x;
++ int src_block_h;
++ int src_block_w;
++ int jpeg_out_y;
++ int jpeg_out_x;
++ int fifo_full_cnt;
++ int in_length;
++ int fifo_data_cnt;
++ int in_height;
++ } onfly;
++
++ onfly.src_block_y = 32;
++ onfly.src_block_x = 32;
++ onfly.src_block_h = 36;
++ onfly.src_block_w = 35;
++ onfly.jpeg_out_y = 32;
++ onfly.jpeg_out_x = 32;
++ onfly.fifo_full_cnt = 0;
++ onfly.in_length = onfly.jpeg_out_x + 3;
++ onfly.fifo_data_cnt = onfly.src_block_w * onfly.src_block_h / 2;
++ onfly.in_height = onfly.jpeg_out_y + 2;
++
++ OUT_REG(GLAMO_REG_ISP_ONFLY_MODE1, onfly.src_block_y << 10 | onfly.src_block_x << 2);
++ OUT_REG(GLAMO_REG_ISP_ONFLY_MODE2, onfly.src_block_h << 8 | onfly.src_block_w);
++ OUT_REG(GLAMO_REG_ISP_ONFLY_MODE3, onfly.jpeg_out_y << 8 | onfly.jpeg_out_x);
++ OUT_REG(GLAMO_REG_ISP_ONFLY_MODE4, onfly.fifo_full_cnt << 8 | onfly.in_length);
++ OUT_REG(GLAMO_REG_ISP_ONFLY_MODE5, onfly.fifo_data_cnt << 6 | onfly.in_height);
++ }
++#endif
++
++ OUT_REG(GLAMO_REG_ISP_EN1,
++ GLAMO_ISP_EN1_YUV420 |
++ GLAMO_ISP_EN1_YUV_INPUT |
++ GLAMO_ISP_EN1_YUV_PACK |
++ ((srcDatatype << 4) & 0x7));
++
++ OUT_REG(GLAMO_REG_ISP_PORT1_CAP_EN,
++ GLAMO_ISP_PORT1_EN_OUTPUT);
++
++ OUT_REG(GLAMO_REG_ISP_CAP_PITCH, pPortPriv->src_pitch);
++ OUT_REG(GLAMO_REG_ISP_PORT1_CAP_PITCH, dst_pitch);
++
++ END_DMA();
++
++ while (nBox--) {
++ int srcX, srcY, dstX, dstY, srcw, srch, dstw, dsth;
++ CARD32 srcO, dstO;
++
++ dstX = pBox->x1 + dstxoff;
++ dstY = pBox->y1 + dstyoff;
++ dstw = pBox->x2 - pBox->x1;
++ dsth = pBox->y2 - pBox->y1;
++ srcX = (pBox->x1 - pPortPriv->dst_x1) *
++ pPortPriv->src_w / pPortPriv->dst_w;
++ srcY = (pBox->y1 - pPortPriv->dst_y1) *
++ pPortPriv->src_h / pPortPriv->dst_h;
++ srcw = pPortPriv->src_w - srcX; /* XXX */
++ srch = pPortPriv->src_h - srcY; /* XXX */
++
++ srcO = pPortPriv->src_offset + srcY * pPortPriv->src_pitch + srcX * 2;
++ dstO = dst_offset + dstY * dst_pitch + dstX * 2;
++
++ BEGIN_DMA(18);
++
++ OUT_REG(GLAMO_REG_ISP_CAP_0_ADDRL, srcO & 0xffff);
++ OUT_REG(GLAMO_REG_ISP_CAP_0_ADDRH, (srcO >> 16) & 0x7f);
++ OUT_REG(GLAMO_REG_ISP_CAP_HEIGHT, srch);
++ OUT_REG(GLAMO_REG_ISP_CAP_WIDTH, srcw);
++
++ OUT_REG(GLAMO_REG_ISP_PORT1_CAP_0_ADDRL, dstO & 0xffff);
++ OUT_REG(GLAMO_REG_ISP_PORT1_CAP_0_ADDRH, (dstO >> 16) & 0x7f);
++ OUT_REG(GLAMO_REG_ISP_PORT1_CAP_WIDTH, dstw);
++ OUT_REG(GLAMO_REG_ISP_PORT1_CAP_HEIGHT, dsth);
++
++ /* fire */
++ OUT_REG(GLAMO_REG_ISP_EN1, GLAMO_ISP_EN1_FIRE_ISP);
++ OUT_REG(GLAMO_REG_ISP_EN1, 0);
++
++ END_DMA();
++
++ GLAMOWaitIdle(glamos);
++
++ pBox++;
++ }
++#ifdef DAMAGEEXT
++ /* XXX: Shouldn't this be in kxv.c instead? */
++ DamageDamageRegion(pPortPriv->pDraw, &pPortPriv->clip);
++#endif
++ kaaMarkSync(pScreen);
++}
++
++static void
++GLAMOVideoSave(ScreenPtr pScreen, KdOffscreenArea *area)
++{
++ KdScreenPriv(pScreen);
++ GLAMOScreenInfo(pScreenPriv);
++ GLAMOPortPrivPtr pPortPriv = glamos->pAdaptor->pPortPrivates[0].ptr;
++
++ if (pPortPriv->off_screen == area)
++ pPortPriv->off_screen = 0;
++}
++
++static int
++GLAMOPutImage(KdScreenInfo *screen, DrawablePtr pDraw,
++ short src_x, short src_y,
++ short drw_x, short drw_y,
++ short src_w, short src_h,
++ short drw_w, short drw_h,
++ int id,
++ unsigned char *buf,
++ short width,
++ short height,
++ Bool sync,
++ RegionPtr clipBoxes,
++ pointer data)
++{
++ ScreenPtr pScreen = screen->pScreen;
++ KdScreenPriv(pScreen);
++ GLAMOCardInfo(pScreenPriv);
++ GLAMOScreenInfo(pScreenPriv);
++ GLAMOPortPrivPtr pPortPriv = (GLAMOPortPrivPtr)data;
++ char *mmio = glamoc->reg_base;
++ INT32 x1, x2, y1, y2;
++ int randr = RR_Rotate_0 /* XXX */;
++ int srcPitch, srcPitch2, dstPitch;
++ int top, left, npixels, nlines, size;
++ BoxRec dstBox;
++ int dst_width = width, dst_height = height;
++ int rot_x1, rot_y1, rot_x2, rot_y2;
++ int dst_x1, dst_y1, dst_x2, dst_y2;
++ int rot_src_w, rot_src_h, rot_drw_w, rot_drw_h;
++
++ /* Clip */
++ x1 = src_x;
++ x2 = src_x + src_w;
++ y1 = src_y;
++ y2 = src_y + src_h;
++
++ dstBox.x1 = drw_x;
++ dstBox.x2 = drw_x + drw_w;
++ dstBox.y1 = drw_y;
++ dstBox.y2 = drw_y + drw_h;
++
++ GLAMOClipVideo(&dstBox, &x1, &x2, &y1, &y2,
++ REGION_EXTENTS(pScreen, clipBoxes), width, height);
++
++ src_w = (x2 - x1) >> 16;
++ src_h = (y2 - y1) >> 16;
++ drw_w = dstBox.x2 - dstBox.x1;
++ drw_h = dstBox.y2 - dstBox.y1;
++
++ if ((x1 >= x2) || (y1 >= y2))
++ return Success;
++
++ if (mmio == NULL)
++ return BadAlloc;
++
++ if (randr & (RR_Rotate_0|RR_Rotate_180)) {
++ dst_width = width;
++ dst_height = height;
++ rot_src_w = src_w;
++ rot_src_h = src_h;
++ rot_drw_w = drw_w;
++ rot_drw_h = drw_h;
++ } else {
++ dst_width = height;
++ dst_height = width;
++ rot_src_w = src_h;
++ rot_src_h = src_w;
++ rot_drw_w = drw_h;
++ rot_drw_h = drw_w;
++ }
++
++ switch (randr & RR_Rotate_All) {
++ case RR_Rotate_0:
++ default:
++ dst_x1 = dstBox.x1;
++ dst_y1 = dstBox.y1;
++ dst_x2 = dstBox.x2;
++ dst_y2 = dstBox.y2;
++ rot_x1 = x1;
++ rot_y1 = y1;
++ rot_x2 = x2;
++ rot_y2 = y2;
++ break;
++ case RR_Rotate_90:
++ dst_x1 = dstBox.y1;
++ dst_y1 = screen->height - dstBox.x2;
++ dst_x2 = dstBox.y2;
++ dst_y2 = screen->height - dstBox.x1;
++ rot_x1 = y1;
++ rot_y1 = (src_w << 16) - x2;
++ rot_x2 = y2;
++ rot_y2 = (src_w << 16) - x1;
++ break;
++ case RR_Rotate_180:
++ dst_x1 = screen->width - dstBox.x2;
++ dst_y1 = screen->height - dstBox.y2;
++ dst_x2 = screen->width - dstBox.x1;
++ dst_y2 = screen->height - dstBox.y1;
++ rot_x1 = (src_w << 16) - x2;
++ rot_y1 = (src_h << 16) - y2;
++ rot_x2 = (src_w << 16) - x1;
++ rot_y2 = (src_h << 16) - y1;
++ break;
++ case RR_Rotate_270:
++ dst_x1 = screen->width - dstBox.y2;
++ dst_y1 = dstBox.x1;
++ dst_x2 = screen->width - dstBox.y1;
++ dst_y2 = dstBox.x2;
++ rot_x1 = (src_h << 16) - y2;
++ rot_y1 = x1;
++ rot_x2 = (src_h << 16) - y1;
++ rot_y2 = x2;
++ break;
++ }
++
++ switch(id) {
++ case FOURCC_YV12:
++ case FOURCC_I420:
++ dstPitch = ((dst_width << 1) + 15) & ~15;
++ srcPitch = (width + 3) & ~3;
++ srcPitch2 = ((width >> 1) + 3) & ~3;
++ size = dstPitch * dst_height;
++ break;
++ case FOURCC_UYVY:
++ case FOURCC_YUY2:
++ default:
++ dstPitch = ((dst_width << 1) + 15) & ~15;
++ srcPitch = (width << 1);
++ srcPitch2 = 0;
++ size = dstPitch * dst_height;
++ break;
++ }
++
++ if (pPortPriv->off_screen != NULL && size != pPortPriv->size) {
++ KdOffscreenFree(screen->pScreen, pPortPriv->off_screen);
++ pPortPriv->off_screen = 0;
++ }
++
++ if (pPortPriv->off_screen == NULL) {
++ pPortPriv->off_screen = KdOffscreenAlloc(screen->pScreen,
++ size * 2, 64, TRUE, GLAMOVideoSave, pPortPriv);
++ if (pPortPriv->off_screen == NULL)
++ return BadAlloc;
++ }
++
++
++ if (pDraw->type == DRAWABLE_WINDOW)
++ pPortPriv->pPixmap =
++ (*pScreen->GetWindowPixmap)((WindowPtr)pDraw);
++ else
++ pPortPriv->pPixmap = (PixmapPtr)pDraw;
++
++ /* Migrate the pixmap to offscreen if necessary. */
++ if (!kaaPixmapIsOffscreen(pPortPriv->pPixmap))
++ kaaMoveInPixmap(pPortPriv->pPixmap);
++
++ if (!kaaPixmapIsOffscreen(pPortPriv->pPixmap)) {
++ return BadAlloc;
++ }
++
++ pPortPriv->src_offset = pPortPriv->off_screen->offset;
++ pPortPriv->src_addr = (CARD8 *)(pScreenPriv->screen->memory_base +
++ pPortPriv->src_offset);
++ pPortPriv->src_pitch = dstPitch;
++ pPortPriv->size = size;
++ pPortPriv->pDraw = pDraw;
++
++ /* copy data */
++ top = rot_y1 >> 16;
++ left = (rot_x1 >> 16) & ~1;
++ npixels = ((((rot_x2 + 0xffff) >> 16) + 1) & ~1) - left;
++
++ /* Since we're probably overwriting the area that might still be used
++ * for the last PutImage request, wait for idle.
++ */
++ GLAMOWaitIdle(glamos);
++
++ switch(id) {
++ case FOURCC_YV12:
++ case FOURCC_I420:
++ top &= ~1;
++ nlines = ((((rot_y2 + 0xffff) >> 16) + 1) & ~1) - top;
++ /* pack the source as YUY2 to vram */
++ KdXVCopyPlanarData(screen, buf, pPortPriv->src_addr, randr,
++ srcPitch, srcPitch2, dstPitch, rot_src_w, rot_src_h,
++ height, top, left, nlines, npixels, id);
++ break;
++ case FOURCC_UYVY:
++ case FOURCC_YUY2:
++ default:
++ nlines = ((rot_y2 + 0xffff) >> 16) - top;
++ KdXVCopyPackedData(screen, buf, pPortPriv->src_addr, randr,
++ srcPitch, dstPitch, rot_src_w, rot_src_h, top, left,
++ nlines, npixels);
++ break;
++ }
++
++ /* update cliplist */
++ if (!REGION_EQUAL(screen->pScreen, &pPortPriv->clip, clipBoxes)) {
++ REGION_COPY(screen->pScreen, &pPortPriv->clip, clipBoxes);
++ }
++
++ pPortPriv->id = id;
++ pPortPriv->src_x1 = rot_x1;
++ pPortPriv->src_y1 = rot_y1;
++ pPortPriv->src_x2 = rot_x2;
++ pPortPriv->src_y2 = rot_y2;
++ pPortPriv->src_w = rot_src_w;
++ pPortPriv->src_h = rot_src_h;
++ pPortPriv->dst_x1 = dst_x1;
++ pPortPriv->dst_y1 = dst_y1;
++ pPortPriv->dst_x2 = dst_x2;
++ pPortPriv->dst_y2 = dst_y2;
++ pPortPriv->dst_w = rot_drw_w;
++ pPortPriv->dst_h = rot_drw_h;
++
++ GlamoDisplayVideo(screen, pPortPriv);
++
++ return Success;
++}
++
++static int
++GLAMOReputImage(KdScreenInfo *screen, DrawablePtr pDraw, short drw_x, short drw_y,
++ RegionPtr clipBoxes, pointer data)
++{
++ ScreenPtr pScreen = screen->pScreen;
++ GLAMOPortPrivPtr pPortPriv = (GLAMOPortPrivPtr)data;
++ BoxPtr pOldExtents = REGION_EXTENTS(screen->pScreen, &pPortPriv->clip);
++ BoxPtr pNewExtents = REGION_EXTENTS(screen->pScreen, clipBoxes);
++
++ if (pOldExtents->x1 != pNewExtents->x1 ||
++ pOldExtents->x2 != pNewExtents->x2 ||
++ pOldExtents->y1 != pNewExtents->y1 ||
++ pOldExtents->y2 != pNewExtents->y2)
++ return BadMatch;
++
++ if (pDraw->type == DRAWABLE_WINDOW)
++ pPortPriv->pPixmap =
++ (*pScreen->GetWindowPixmap)((WindowPtr)pDraw);
++ else
++ pPortPriv->pPixmap = (PixmapPtr)pDraw;
++
++ if (!kaaPixmapIsOffscreen(pPortPriv->pPixmap))
++ kaaMoveInPixmap(pPortPriv->pPixmap);
++
++ if (!kaaPixmapIsOffscreen(pPortPriv->pPixmap)) {
++ ErrorF("err\n");
++ return BadAlloc;
++ }
++
++
++ /* update cliplist */
++ if (!REGION_EQUAL(screen->pScreen, &pPortPriv->clip, clipBoxes))
++ REGION_COPY(screen->pScreen, &pPortPriv->clip, clipBoxes);
++
++ /* XXX: What do the drw_x and drw_y here mean for us? */
++
++ GlamoDisplayVideo(screen, pPortPriv);
++
++ return Success;
++}
++
++static int
++GLAMOQueryImageAttributes(KdScreenInfo *screen, int id, unsigned short *w,
++ unsigned short *h, int *pitches, int *offsets)
++{
++ int size, tmp;
++
++ if (*w > IMAGE_MAX_WIDTH)
++ *w = IMAGE_MAX_WIDTH;
++ if (*h > IMAGE_MAX_HEIGHT)
++ *h = IMAGE_MAX_HEIGHT;
++
++ *w = (*w + 1) & ~1;
++ if (offsets)
++ offsets[0] = 0;
++
++ switch (id)
++ {
++ case FOURCC_YV12:
++ case FOURCC_I420:
++ *h = (*h + 1) & ~1;
++ size = (*w + 3) & ~3;
++ if (pitches)
++ pitches[0] = size;
++ size *= *h;
++ if (offsets)
++ offsets[1] = size;
++ tmp = ((*w >> 1) + 3) & ~3;
++ if (pitches)
++ pitches[1] = pitches[2] = tmp;
++ tmp *= (*h >> 1);
++ size += tmp;
++ if (offsets)
++ offsets[2] = size;
++ size += tmp;
++ break;
++ case FOURCC_UYVY:
++ case FOURCC_YUY2:
++ default:
++ size = *w << 1;
++ if (pitches)
++ pitches[0] = size;
++ size *= *h;
++ break;
++ }
++
++ return size;
++}
++
++
++/* client libraries expect an encoding */
++static KdVideoEncodingRec DummyEncoding[1] =
++{
++ {
++ 0,
++ "XV_IMAGE",
++ IMAGE_MAX_WIDTH, IMAGE_MAX_HEIGHT,
++ {1, 1}
++ }
++};
++
++#define NUM_FORMATS 1
++
++static KdVideoFormatRec Formats[NUM_FORMATS] =
++{
++ {16, TrueColor}
++};
++
++#define NUM_ATTRIBUTES 0
++
++static KdAttributeRec Attributes[NUM_ATTRIBUTES] =
++{
++};
++
++#define NUM_IMAGES 4
++
++static KdImageRec Images[NUM_IMAGES] =
++{
++ XVIMAGE_YUY2,
++ XVIMAGE_YV12,
++ XVIMAGE_I420,
++ XVIMAGE_UYVY
++};
++
++static KdVideoAdaptorPtr
++GLAMOSetupImageVideo(ScreenPtr pScreen)
++{
++ KdScreenPriv(pScreen);
++ GLAMOScreenInfo(pScreenPriv);
++ KdVideoAdaptorPtr adapt;
++ GLAMOPortPrivPtr pPortPriv;
++ int i;
++
++ glamos->num_texture_ports = 16;
++
++ adapt = xcalloc(1, sizeof(KdVideoAdaptorRec) + glamos->num_texture_ports *
++ (sizeof(GLAMOPortPrivRec) + sizeof(DevUnion)));
++ if (adapt == NULL)
++ return NULL;
++
++ adapt->type = XvWindowMask | XvInputMask | XvImageMask;
++ adapt->flags = VIDEO_CLIP_TO_VIEWPORT;
++ adapt->name = "GLAMO Texture Video";
++ adapt->nEncodings = 1;
++ adapt->pEncodings = DummyEncoding;
++ adapt->nFormats = NUM_FORMATS;
++ adapt->pFormats = Formats;
++ adapt->nPorts = glamos->num_texture_ports;
++ adapt->pPortPrivates = (DevUnion*)(&adapt[1]);
++
++ pPortPriv =
++ (GLAMOPortPrivPtr)(&adapt->pPortPrivates[glamos->num_texture_ports]);
++
++ for (i = 0; i < glamos->num_texture_ports; i++)
++ adapt->pPortPrivates[i].ptr = &pPortPriv[i];
++
++ adapt->nAttributes = NUM_ATTRIBUTES;
++ adapt->pAttributes = Attributes;
++ adapt->pImages = Images;
++ adapt->nImages = NUM_IMAGES;
++ adapt->PutVideo = NULL;
++ adapt->PutStill = NULL;
++ adapt->GetVideo = NULL;
++ adapt->GetStill = NULL;
++ adapt->StopVideo = GLAMOStopVideo;
++ adapt->SetPortAttribute = GLAMOSetPortAttribute;
++ adapt->GetPortAttribute = GLAMOGetPortAttribute;
++ adapt->QueryBestSize = GLAMOQueryBestSize;
++ adapt->PutImage = GLAMOPutImage;
++ adapt->ReputImage = GLAMOReputImage;
++ adapt->QueryImageAttributes = GLAMOQueryImageAttributes;
++
++ /* gotta uninit this someplace */
++ REGION_INIT(pScreen, &pPortPriv->clip, NullBox, 0);
++
++ glamos->pAdaptor = adapt;
++
++ xvBrightness = MAKE_ATOM("XV_BRIGHTNESS");
++ xvSaturation = MAKE_ATOM("XV_SATURGLAMOON");
++
++ return adapt;
++}
++
++static void GLAMOPowerUp(ScreenPtr pScreen)
++{
++ GLAMOEngineEnable(pScreen, GLAMO_ENGINE_ISP);
++ GLAMOEngineReset(pScreen, GLAMO_ENGINE_ISP);
++
++ /* HW_DEBUG_0?? */
++ //MMIOSetBitMask(mmio, REG_ISP(0x102), 0x0020, 0);
++}
++
++static void GLAMOPowerDown(ScreenPtr pScreen)
++{
++ GLAMOEngineReset(pScreen, GLAMO_ENGINE_ISP);
++
++ /* ... and stop the clock */
++}
++
++Bool GLAMOInitVideo(ScreenPtr pScreen)
++{
++ KdScreenPriv(pScreen);
++ GLAMOScreenInfo(pScreenPriv);
++ GLAMOCardInfo(pScreenPriv);
++ KdScreenInfo *screen = pScreenPriv->screen;
++ KdVideoAdaptorPtr *adaptors, *newAdaptors = NULL;
++ KdVideoAdaptorPtr newAdaptor = NULL;
++ int num_adaptors;
++
++ glamos->pAdaptor = NULL;
++
++ if (glamoc->reg_base == NULL)
++ return FALSE;
++
++ num_adaptors = KdXVListGenericAdaptors(screen, &adaptors);
++
++ newAdaptor = GLAMOSetupImageVideo(pScreen);
++
++ if (newAdaptor) {
++ GLAMOPowerUp(pScreen);
++
++ if (!num_adaptors) {
++ num_adaptors = 1;
++ adaptors = &newAdaptor;
++ } else {
++ newAdaptors = xalloc((num_adaptors + 1) *
++ sizeof(KdVideoAdaptorPtr *));
++ if (newAdaptors) {
++ memcpy(newAdaptors, adaptors, num_adaptors *
++ sizeof(KdVideoAdaptorPtr));
++ newAdaptors[num_adaptors] = newAdaptor;
++ adaptors = newAdaptors;
++ num_adaptors++;
++ }
++ }
++ }
++
++ if (num_adaptors)
++ KdXVScreenInit(pScreen, adaptors, num_adaptors);
++
++ if (newAdaptors)
++ xfree(newAdaptors);
++
++ return TRUE;
++}
++
++void
++GLAMOFiniVideo(ScreenPtr pScreen)
++{
++ KdScreenPriv(pScreen);
++ GLAMOScreenInfo(pScreenPriv);
++ KdVideoAdaptorPtr adapt = glamos->pAdaptor;
++ GLAMOPortPrivPtr pPortPriv;
++ int i;
++
++ if (!adapt)
++ return;
++
++ GLAMOPowerDown(pScreen);
++
++ for (i = 0; i < glamos->num_texture_ports; i++) {
++ pPortPriv = (GLAMOPortPrivPtr)(&adapt->pPortPrivates[i].ptr);
++ REGION_UNINIT(pScreen, &pPortPriv->clip);
++ }
++ xfree(adapt);
++ glamos->pAdaptor = NULL;
++}
diff --git a/packages/xorg-xserver/xserver-kdrive-common.inc b/packages/xorg-xserver/xserver-kdrive-common.inc
index b0d5e39813..6ea9c8439f 100644
--- a/packages/xorg-xserver/xserver-kdrive-common.inc
+++ b/packages/xorg-xserver/xserver-kdrive-common.inc
@@ -9,6 +9,7 @@ PACKAGES =+ "xserver-kdrive-fbdev \
xserver-kdrive-xephyr \
xserver-kdrive-epson \
xserver-kdrive-ati \
+ xserver-kdrive-glamo \
xserver-kdrive-chips \
xserver-kdrive-i810 \
xserver-kdrive-mach64 \
@@ -32,6 +33,7 @@ DESCRIPTION_xserver-kdrive-epson = "X server from freedesktop.org, supporting Ep
DESCRIPTION_xserver-kdrive-sdl = "X server from freedesktop.org, SDL version"
DESCRIPTION_xserver-kdrive-w100 = "X server from freedesktop.org, supporting the ATI imageon w100 chipset"
DESCRIPTION_xserver-kdrive-ati = "X server from freedesktop.org, supporting ATI devices"
+DESCRIPTION_xserver-kdrive-glamo = "X server from freedesktop.org, supporting Smedia Glamo chipset"
DESCRIPTION_xserver-kdrive-chips = "X server from freedesktop.org, supporting Chips chipsets"
DESCRIPTION_xserver-kdrive-i810 = "X server from freedesktop.org, supporting Intel chipsets"
DESCRIPTION_xserver-kdrive-imageon = "X server from freedesktop.org, supporting the ATI imageon 100 chipset"
@@ -54,6 +56,7 @@ FILES_xserver-kdrive-epson = "${bindir}/Xepson"
FILES_xserver-kdrive-sdl = "${bindir}/Xsdl"
FILES_xserver-kdrive-w100 = "${bindir}/Xw100"
FILES_xserver-kdrive-ati = "${bindir}/Xati"
+FILES_xserver-kdrive-glamo = "${bindir}/Xglamo"
FILES_xserver-kdrive-chips = "${bindir}/Xchips"
FILES_xserver-kdrive-i810 = "${bindir}/Xi810"
FILES_xserver-kdrive-imageon = "${bindir}/Ximageon"
@@ -74,6 +77,7 @@ RDEPENDS_xserver-kdrive-epson = "${PN}"
RDEPENDS_xserver-kdrive-sdl = "${PN}"
RDEPENDS_xserver-kdrive-w100 = "${PN}"
RDEPENDS_xserver-kdrive-ati = "${PN}"
+RDEPENDS_xserver-kdrive-glamo = "${PN}"
RDEPENDS_xserver-kdrive-chips = "${PN}"
RDEPENDS_xserver-kdrive-i810 = "${PN}"
RDEPENDS_xserver-kdrive-mach64 = "${PN}"
diff --git a/packages/xorg-xserver/xserver-kdrive/00-xglamo-logs.patch b/packages/xorg-xserver/xserver-kdrive/00-xglamo-logs.patch
new file mode 100644
index 0000000000..8fc8ff46b9
--- /dev/null
+++ b/packages/xorg-xserver/xserver-kdrive/00-xglamo-logs.patch
@@ -0,0 +1,386 @@
+Index: xorg-server-1.3.0.0/hw/kdrive/glamo/Makefile.am
+===================================================================
+--- xorg-server-1.3.0.0.orig/hw/kdrive/glamo/Makefile.am 2007-11-28 18:44:27.000000000 +0100
++++ xorg-server-1.3.0.0/hw/kdrive/glamo/Makefile.am 2007-11-28 18:44:28.000000000 +0100
+@@ -20,6 +20,7 @@
+ noinst_LIBRARIES = libglamo.a
+
+ libglamo_a_SOURCES = \
++ glamo-log.h \
+ glamo_dma.c \
+ glamo_dma.h \
+ glamo_draw.c \
+Index: xorg-server-1.3.0.0/hw/kdrive/glamo/glamo-log.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ xorg-server-1.3.0.0/hw/kdrive/glamo/glamo-log.h 2007-11-29 09:05:53.000000000 +0100
+@@ -0,0 +1,63 @@
++/*
++ * Copyright © 2007 OpenMoko, Inc.
++ *
++ * This driver is based on Xati,
++ * Copyright © 2004 Eric Anholt
++ *
++ * Permission to use, copy, modify, distribute, and sell this software and its
++ * documentation for any purpose is hereby granted without fee, provided that
++ * the above copyright notice appear in all copies and that both that copyright
++ * notice and this permission notice appear in supporting documentation, and
++ * that the name of the copyright holders not be used in advertising or
++ * publicity pertaining to distribution of the software without specific,
++ * written prior permission. The copyright holders make no representations
++ * about the suitability of this software for any purpose. It is provided "as
++ * is" without express or implied warranty.
++ *
++ * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
++ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
++ * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
++ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
++ * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
++ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
++ * OF THIS SOFTWARE.
++ *
++ * Author: Dodji Seketeli <dodji@openedhand.com>
++ */
++#ifndef _GLAMO_LOG_H_
++#define _GLAMO_LOG_H_
++#ifdef HAVE_CONFIG_H
++#include <kdrive-config.h>
++#endif
++
++#include <assert.h>
++#include "os.h"
++
++#ifdef NDEBUG
++/*we are not in debug mode*/
++#define GLAMO_LOG
++#define GLAMO_LOG_ERROR
++
++#else /*NDEBUG*/
++
++#define ERROR_LOG_LEVEL 3
++#define INFO_LOG_LEVEL 4
++
++#ifndef GLAMO_LOG
++#define GLAMO_LOG(...) \
++LogMessageVerb(X_NOTICE, INFO_LOG_LEVEL, "in %s:%d:%s: ",\
++ __FILE__, __LINE__, __func__) ; \
++LogMessageVerb(X_NOTICE, INFO_LOG_LEVEL, __VA_ARGS__)
++#endif /*GLAMO_LOG*/
++
++#ifndef GLAMO_LOG_ERROR
++#define GLAMO_LOG_ERROR(...) \
++LogMessageVerb(X_NOTICE, ERROR_LOG_LEVEL, "Error:in %s:%d:%s: ",\
++ __FILE__, __LINE__, __func__) ; \
++LogMessageVerb(X_NOTICE, ERROR_LOG_LEVEL, __VA_ARGS__)
++#endif /*GLAMO_LOG_ERROR*/
++
++#endif /*NDEBUG*/
++
++#endif /*_GLAMO_LOG_H_*/
++
+Index: xorg-server-1.3.0.0/hw/kdrive/glamo/glamo_draw.c
+===================================================================
+--- xorg-server-1.3.0.0.orig/hw/kdrive/glamo/glamo_draw.c 2007-11-28 18:44:27.000000000 +0100
++++ xorg-server-1.3.0.0/hw/kdrive/glamo/glamo_draw.c 2007-11-29 09:33:11.000000000 +0100
+@@ -26,6 +26,7 @@
+ #ifdef HAVE_CONFIG_H
+ #include <kdrive-config.h>
+ #endif
++#include "glamo-log.h"
+ #include "glamo.h"
+ #include "glamo-regs.h"
+ #include "glamo_dma.h"
+@@ -90,45 +91,11 @@
+ KdScreenPriv(pScreen);
+ GLAMOScreenInfo(pScreenPriv);
+
+- ENTER_DRAW(0);
++ GLAMO_LOG("enter");
+ GLAMOWaitIdle(glamos);
+- LEAVE_DRAW(0);
++ GLAMO_LOG("leave");
+ }
+
+-#if GLAMO_TRACE_DRAW
+-void
+-GLAMOEnterDraw (PixmapPtr pPix, const char *function)
+-{
+- if (pPix != NULL) {
+- KdScreenPriv(pPix->drawable.pScreen);
+- CARD32 offset;
+-
+- offset = ((CARD8 *)pPix->devPrivate.ptr -
+- pScreenPriv->screen->memory_base);
+-
+- ErrorF ("Enter %s 0x%x (%dx%dx%d/%d)\n", function, (unsigned int) offset,
+- pPix->drawable.width, pPix->drawable.height, pPix->drawable.depth,
+- (unsigned int) pPix->drawable.bitsPerPixel);
+- } else
+- ErrorF ("Enter %s\n", function);
+-}
+-
+-void
+-GLAMOLeaveDraw (PixmapPtr pPix, const char *function)
+-{
+- if (pPix != NULL) {
+- KdScreenPriv(pPix->drawable.pScreen);
+- CARD32 offset;
+-
+- offset = ((CARD8 *)pPix->devPrivate.ptr -
+- pScreenPriv->screen->memory_base);
+-
+- ErrorF ("Leave %s 0x%x\n", function, (unsigned int) offset);
+- } else
+- ErrorF ("Leave %s\n", function);
+-}
+-#endif
+-
+ static Bool
+ GLAMOPrepareSolid(PixmapPtr pPix, int alu, Pixel pm, Pixel fg)
+ {
+@@ -152,7 +119,7 @@
+ pScreenPriv->screen->memory_base);
+ pitch = pPix->devKind;
+
+- ENTER_DRAW(pPix);
++ GLAMO_LOG("enter");
+
+ BEGIN_DMA(12);
+ OUT_REG(GLAMO_REG_2D_DST_ADDRL, offset & 0xffff);
+@@ -163,7 +130,7 @@
+ OUT_REG(GLAMO_REG_2D_COMMAND2, settings);
+ END_DMA();
+
+- LEAVE_DRAW(pPix);
++ GLAMO_LOG("leave");
+
+ return TRUE;
+ }
+@@ -171,7 +138,7 @@
+ static void
+ GLAMOSolid(int x1, int y1, int x2, int y2)
+ {
+- ENTER_DRAW(0);
++ GLAMO_LOG("enter");
+ GLAMOScreenInfo *glamos = accel_glamos;
+ RING_LOCALS;
+
+@@ -184,14 +151,12 @@
+ OUT_REG(GLAMO_REG_2D_ID1, 0);
+ OUT_REG(GLAMO_REG_2D_ID2, 0);
+ END_DMA();
+- LEAVE_DRAW(0);
++ GLAMO_LOG("leave");
+ }
+
+ static void
+ GLAMODoneSolid(void)
+ {
+- ENTER_DRAW(0);
+- LEAVE_DRAW(0);
+ }
+
+ static Bool
+@@ -204,6 +169,8 @@
+ FbBits mask;
+ RING_LOCALS;
+
++ GLAMO_LOG("enter");
++
+ if (pSrc->drawable.bitsPerPixel != 16 ||
+ pDst->drawable.bitsPerPixel != 16)
+ GLAMO_FALLBACK(("Only 16bpp is supported"));
+@@ -224,8 +191,6 @@
+
+ settings = GLAMOBltRop[alu] << 8;
+
+- ENTER_DRAW (pDst);
+-
+ BEGIN_DMA(16);
+
+ OUT_REG(GLAMO_REG_2D_SRC_ADDRL, src_offset & 0xffff);
+@@ -241,7 +206,7 @@
+
+ END_DMA();
+
+- LEAVE_DRAW(pDst);
++ GLAMO_LOG("leave");
+
+ return TRUE;
+ }
+@@ -268,8 +233,10 @@
+ static void
+ GLAMODoneCopy(void)
+ {
+- ENTER_DRAW(0);
+- LEAVE_DRAW(0);
++ GLAMOScreenInfo *glamos = accel_glamos;
++ GLAMO_LOG("enter");
++ GLAMOFlushIndirect(glamos, 1);
++ GLAMO_LOG("leave");
+ }
+
+ static Bool
+@@ -279,6 +246,7 @@
+ CARD8 *dst_offset;
+ int dst_pitch;
+
++ GLAMO_LOG("enter");
+ dst_offset = (CARD8 *)pDst->devPrivate.ptr;
+ dst_pitch = pDst->devKind;
+ width = pDst->drawable.width;
+@@ -294,83 +262,9 @@
+ src += src_pitch;
+ }
+
+- ErrorF("hostdata upload %d,%d %dbpp\n", width, height, bpp);
+-
+ return TRUE;
+ }
+
+-
+-#if 0
+-static Bool
+-GLAMOUploadToScratch(PixmapPtr pSrc, PixmapPtr pDst)
+-{
+- KdScreenPriv(pSrc->drawable.pScreen);
+- GLAMOCardInfo(pScreenPriv);
+- GLAMOScreenInfo(pScreenPriv);
+- int dst_pitch, src_pitch, w, i, size, bytes;
+- unsigned char *dst, *src;
+- RING_LOCALS;
+-
+- ENTER_DRAW(pSrc);
+- /* Align width to log 2, useful for R128 composite. This should be a
+- * KAA flag we check for (and supported in kaa.c in general) since many
+- * older bits of hardware are going to want POT pitches.
+- */
+- w = pSrc->drawable.width;
+- if (glamos->kaa.flags & KAA_OFFSCREEN_ALIGN_POT)
+- w = 1 << (GLAMOLog2(w - 1) + 1);
+- dst_pitch = (w * pSrc->drawable.bitsPerPixel / 8 +
+- glamos->kaa.pitchAlign - 1) & ~(glamos->kaa.pitchAlign - 1);
+-
+- size = dst_pitch * pSrc->drawable.height;
+- if (size > glamos->scratch_area->size)
+- GLAMO_FALLBACK(("Pixmap too large for scratch (%d,%d)\n",
+- pSrc->drawable.width, pSrc->drawable.height));
+-
+- glamos->scratch_next = (glamos->scratch_next + glamos->kaa.offsetAlign - 1) &
+- ~(glamos->kaa.offsetAlign - 1);
+- if (glamos->scratch_next + size > glamos->scratch_area->offset +
+- glamos->scratch_area->size) {
+- /* Only sync when we've used all of the scratch area. */
+- kaaWaitSync(pSrc->drawable.pScreen);
+- glamos->scratch_next = glamos->scratch_area->offset;
+- }
+- memcpy(pDst, pSrc, sizeof(*pDst));
+- pDst->devKind = dst_pitch;
+- pDst->devPrivate.ptr = pScreenPriv->screen->memory_base +
+- glamos->scratch_next;
+- glamos->scratch_next += size;
+-
+- src = pSrc->devPrivate.ptr;
+- src_pitch = pSrc->devKind;
+- dst = pDst->devPrivate.ptr;
+- bytes = src_pitch < dst_pitch ? src_pitch : dst_pitch;
+-
+- i = pSrc->drawable.height;
+- while (i--) {
+- memcpy(dst, src, bytes);
+- dst += dst_pitch;
+- src += src_pitch;
+- }
+-
+- /* Flush the pixel cache */
+- if (glamoc->is_3362) {
+- BEGIN_DMA(4);
+- OUT_REG(RADEON_REG_RB3D_DSTCACHE_CTLSTAT,
+- RADEON_RB3D_DC_FLUSH_ALL);
+- OUT_REG(GLAMO_REG_WAIT_UNTIL, RADEON_WAIT_HOST_IDLECLEAN);
+- END_DMA();
+- } else {
+- BEGIN_DMA(2);
+- OUT_REG(R128_REG_PC_GUI_CTLSTAT, R128_PC_FLUSH_ALL);
+- END_DMA();
+- }
+-
+- LEAVE_DRAW(pSrc);
+- return TRUE;
+-}
+-#endif
+-
+ static void
+ GLAMOBlockHandler(pointer blockData, OSTimePtr timeout, pointer readmask)
+ {
+Index: xorg-server-1.3.0.0/hw/kdrive/glamo/glamo_dma.c
+===================================================================
+--- xorg-server-1.3.0.0.orig/hw/kdrive/glamo/glamo_dma.c 2007-11-28 18:44:27.000000000 +0100
++++ xorg-server-1.3.0.0/hw/kdrive/glamo/glamo_dma.c 2007-11-28 22:13:23.000000000 +0100
+@@ -25,6 +25,7 @@
+
+ #include <sys/time.h>
+
++#include "glamo-log.h"
+ #include "glamo.h"
+ #include "glamo-regs.h"
+ #include "glamo_dma.h"
+@@ -35,9 +36,7 @@
+ #include "glamo_sarea.h"
+ #endif /* USE_DRI */
+
+-#define DEBUG_FIFO 1
+-
+-#if DEBUG_FIFO
++#ifndef NDEBUG
+ static void
+ GLAMODebugFifo(GLAMOScreenInfo *glamos)
+ {
+@@ -273,7 +272,7 @@
+ count--;
+ }
+ if (TIMEDOUT()) {
+- ErrorF("Timeout submitting packets, resetting...\n");
++ GLAMO_LOG_ERROR("Timeout submitting packets, resetting...\n");
+ GLAMOEngineReset(glamos->screen->pScreen, GLAMO_ENGINE_CQ);
+ GLAMODrawSetup(glamos->screen->pScreen);
+ }
+@@ -292,11 +291,6 @@
+ if ((glamos->indirectStart == buf->used) && !discard)
+ return;
+
+-#if DEBUG_FIFO
+- ErrorF("Dispatching %d DWORDS\n", (buf->used - glamos->indirectStart) /
+- 4);
+-#endif
+-
+ #ifdef USE_DRI
+ if (glamos->using_dri) {
+ buf->drmBuf->used = buf->used;
+@@ -384,11 +378,6 @@
+ glamos->indirectBuffer = GLAMOGetDMABuffer(glamos);
+ if (glamos->indirectBuffer == FALSE)
+ FatalError("Failed to allocate DMA buffer.\n");
+-
+- if (glamos->using_dri)
+- ErrorF("Initialized DRI DMA\n");
+- else
+- ErrorF("Initialized DMA\n");
+ }
+
+ void
+Index: xorg-server-1.3.0.0/configure.ac
+===================================================================
+--- xorg-server-1.3.0.0.orig/configure.ac 2007-11-29 09:07:21.000000000 +0100
++++ xorg-server-1.3.0.0/configure.ac 2007-11-29 09:15:38.000000000 +0100
+@@ -866,6 +866,10 @@
+
+ if ! test "x$DEBUGGING" = xyes; then
+ AC_DEFINE(NDEBUG, 1, [Disable some debugging code])
++ AC_MSG_NOTICE([disabled debugging])
++else
++ AC_MSG_NOTICE([enabled debugging])
++
+ fi
+
+ AC_DEFINE(USE_RGB_TXT, 1, [Use rgb.txt directly])
diff --git a/packages/xorg-xserver/xserver-kdrive/01-xglamo-scrolling-artifact-fix.patch b/packages/xorg-xserver/xserver-kdrive/01-xglamo-scrolling-artifact-fix.patch
new file mode 100644
index 0000000000..1ca96b954d
--- /dev/null
+++ b/packages/xorg-xserver/xserver-kdrive/01-xglamo-scrolling-artifact-fix.patch
@@ -0,0 +1,15 @@
+Index: xorg-server-1.3.0.0/hw/kdrive/glamo/glamo_draw.c
+===================================================================
+--- xorg-server-1.3.0.0.orig/hw/kdrive/glamo/glamo_draw.c 2007-11-30 09:54:00.000000000 +0100
++++ xorg-server-1.3.0.0/hw/kdrive/glamo/glamo_draw.c 2007-11-30 09:55:05.000000000 +0100
+@@ -314,8 +314,8 @@
+ */
+
+ glamos->kaa.flags = KAA_OFFSCREEN_PIXMAPS;
+- glamos->kaa.offsetAlign = 2;
+- glamos->kaa.pitchAlign = 2;
++ glamos->kaa.offsetAlign = 0;
++ glamos->kaa.pitchAlign = 0;
+
+ kaaInitTrapOffsets(8, sample_offsets_x, sample_offsets_y, 0.0, 0.0);
+ sample_count = (1 << 8) - 1;
diff --git a/packages/xorg-xserver/xserver-kdrive/02-xglamo-no-dri.patch b/packages/xorg-xserver/xserver-kdrive/02-xglamo-no-dri.patch
new file mode 100644
index 0000000000..43315121da
--- /dev/null
+++ b/packages/xorg-xserver/xserver-kdrive/02-xglamo-no-dri.patch
@@ -0,0 +1,438 @@
+Index: xorg-server-1.3.0.0/hw/kdrive/glamo/glamo.c
+===================================================================
+--- xorg-server-1.3.0.0.orig/hw/kdrive/glamo/glamo.c 2007-11-28 18:44:27.000000000 +0100
++++ xorg-server-1.3.0.0/hw/kdrive/glamo/glamo.c 2007-11-30 10:18:43.000000000 +0100
+@@ -27,9 +27,6 @@
+ #include <kdrive-config.h>
+ #endif
+ #include "glamo.h"
+-#if defined(USE_DRI) && defined(GLXEXT)
+-#include "glamo_sarea.h"
+-#endif
+
+ static Bool
+ GLAMOCardInit(KdCardInfo *card)
+@@ -89,13 +86,6 @@
+ return FALSE;
+ }
+
+-#ifdef USE_DRI
+- /* We demand identification by busid, not driver name */
+- glamoc->drmFd = drmOpen(NULL, glamoc->busid);
+- if (glamoc->drmFd < 0)
+- ErrorF("Failed to open DRM, DRI disabled.\n");
+-#endif /* USE_DRI */
+-
+ card->driver = glamoc;
+
+ glamoc->is_3362 = TRUE;
+@@ -122,10 +112,6 @@
+ GLAMOSetOffscreen (KdScreenInfo *screen)
+ {
+ GLAMOCardInfo(screen);
+-#if defined(USE_DRI) && defined(GLXEXT)
+- GLAMOScreenInfo *glamos = (GLAMOScreenInfo *)screen->driver;
+- int l;
+-#endif
+ int screen_size;
+ char *mmio = glamoc->reg_base;
+
+@@ -152,57 +138,7 @@
+ }
+
+ screen_size = screen->fb[0].byteStride * screen->height;
+-
+ screen->off_screen_base = screen_size;
+-
+-#if defined(USE_DRI) && defined(GLXEXT)
+- /* Reserve a static area for the back buffer the same size as the
+- * visible screen. XXX: This would be better initialized in glamo_dri.c
+- * when GLX is set up, but the offscreen memory manager's allocations
+- * don't last through VT switches, while the kernel's understanding of
+- * offscreen locations does.
+- */
+- glamos->frontOffset = 0;
+- glamos->frontPitch = screen->fb[0].byteStride;
+-
+- if (screen->off_screen_base + screen_size <= screen->memory_size) {
+- glamos->backOffset = screen->off_screen_base;
+- glamos->backPitch = screen->fb[0].byteStride;
+- screen->off_screen_base += screen_size;
+- }
+-
+- /* Reserve the depth span for Rage 128 */
+- if (!glamoc->is_3362 && screen->off_screen_base +
+- screen->fb[0].byteStride <= screen->memory_size) {
+- glamos->spanOffset = screen->off_screen_base;
+- screen->off_screen_base += screen->fb[0].byteStride;
+- }
+-
+- /* Reserve the static depth buffer, which happens to be the same
+- * bitsPerPixel as the screen.
+- */
+- if (screen->off_screen_base + screen_size <= screen->memory_size) {
+- glamos->depthOffset = screen->off_screen_base;
+- glamos->depthPitch = screen->fb[0].byteStride;
+- screen->off_screen_base += screen_size;
+- }
+-
+- /* Reserve approx. half of remaining offscreen memory for local
+- * textures. Round down to a whole number of texture regions.
+- */
+- glamos->textureSize = (screen->memory_size - screen->off_screen_base) / 2;
+- l = GLAMOLog2(glamos->textureSize / GLAMO_NR_TEX_REGIONS);
+- if (l < GLAMO_LOG_TEX_GRANULARITY)
+- l = GLAMO_LOG_TEX_GRANULARITY;
+- glamos->textureSize = (glamos->textureSize >> l) << l;
+- if (glamos->textureSize >= 512 * 1024) {
+- glamos->textureOffset = screen->off_screen_base;
+- screen->off_screen_base += glamos->textureSize;
+- } else {
+- /* Minimum texture size is for 2 256x256x32bpp textures */
+- glamos->textureSize = 0;
+- }
+-#endif /* USE_DRI && GLXEXT */
+ }
+
+ static Bool
+@@ -413,9 +349,6 @@
+ GLAMODisable(ScreenPtr pScreen)
+ {
+ KdScreenPriv(pScreen);
+-#if defined(USE_DRI) && defined(GLXEXT)
+- GLAMOScreenInfo(pScreenPriv);
+-#endif /* USE_DRI && GLXEXT */
+ GLAMOCardInfo(pScreenPriv);
+
+ GLAMOUnmapReg(pScreenPriv->card, glamoc);
+Index: xorg-server-1.3.0.0/hw/kdrive/glamo/glamo_dma.c
+===================================================================
+--- xorg-server-1.3.0.0.orig/hw/kdrive/glamo/glamo_dma.c 2007-11-28 22:13:23.000000000 +0100
++++ xorg-server-1.3.0.0/hw/kdrive/glamo/glamo_dma.c 2007-11-30 10:25:49.000000000 +0100
+@@ -31,11 +31,6 @@
+ #include "glamo_dma.h"
+ #include "glamo_draw.h"
+
+-#ifdef USE_DRI
+-#include "radeon_common.h"
+-#include "glamo_sarea.h"
+-#endif /* USE_DRI */
+-
+ #ifndef NDEBUG
+ static void
+ GLAMODebugFifo(GLAMOScreenInfo *glamos)
+@@ -168,26 +163,6 @@
+ if (glamos->indirectBuffer != NULL)
+ GLAMOFlushIndirect(glamos, 0);
+
+-#ifdef USE_DRI
+- if (glamos->using_dri) {
+- int ret = 0;
+- int cmd = (glamoc->is_3362 ? DRM_RADEON_CP_IDLE :
+- DRM_R128_CCE_IDLE);
+- WHILE_NOT_TIMEOUT(2) {
+- ret = drmCommandNone(glamoc->drmFd, cmd);
+- if (ret != -EBUSY)
+- break;
+- }
+- if (TIMEDOUT()) {
+- GLAMODebugFifo(glamos);
+- FatalError("Timed out idling CCE (card hung)\n");
+- }
+- if (ret != 0)
+- ErrorF("Failed to idle DMA, returned %d\n", ret);
+- return;
+- }
+-#endif
+-
+ WHILE_NOT_TIMEOUT(.5) {
+ status = MMIO_IN16(mmio, GLAMO_REG_CQ_STATUS);
+ if ((status & (1 << 2)) && !(status & (1 << 8)))
+@@ -214,20 +189,6 @@
+ if (buf == NULL)
+ return NULL;
+
+-#ifdef USE_DRI
+- if (glamos->using_dri) {
+- buf->drmBuf = GLAMODRIGetBuffer(glamos);
+- if (buf->drmBuf == NULL) {
+- xfree(buf);
+- return NULL;
+- }
+- buf->size = buf->drmBuf->total;
+- buf->used = buf->drmBuf->used;
+- buf->address = buf->drmBuf->address;
+- return buf;
+- }
+-#endif /* USE_DRI */
+-
+ buf->size = glamos->ring_len / 2;
+ buf->address = xalloc(buf->size);
+ if (buf->address == NULL) {
+@@ -290,25 +251,6 @@
+
+ if ((glamos->indirectStart == buf->used) && !discard)
+ return;
+-
+-#ifdef USE_DRI
+- if (glamos->using_dri) {
+- buf->drmBuf->used = buf->used;
+- GLAMODRIDispatchIndirect(glamos, discard);
+- if (discard) {
+- buf->drmBuf = GLAMODRIGetBuffer(glamos);
+- buf->size = buf->drmBuf->total;
+- buf->used = buf->drmBuf->used;
+- buf->address = buf->drmBuf->address;
+- glamos->indirectStart = 0;
+- } else {
+- /* Start on a double word boundary */
+- glamos->indirectStart = buf->used = (buf->used + 7) & ~7;
+- }
+- return;
+- }
+-#endif /* USE_DRI */
+-
+ GLAMODispatchIndirectDMA(glamos);
+
+ buf->used = 0;
+@@ -367,13 +309,7 @@
+ KdScreenPriv(pScreen);
+ GLAMOScreenInfo(pScreenPriv);
+
+-#ifdef USE_DRI
+- if (glamos->using_dri)
+- GLAMODRIDMAStart(glamos);
+-#endif /* USE_DRI */
+-
+- if (!glamos->using_dri)
+- GLAMODMAInit(pScreen);
++ GLAMODMAInit(pScreen);
+
+ glamos->indirectBuffer = GLAMOGetDMABuffer(glamos);
+ if (glamos->indirectBuffer == FALSE)
+@@ -388,11 +324,6 @@
+
+ GLAMOWaitIdle(glamos);
+
+-#ifdef USE_DRI
+- if (glamos->using_dri)
+- GLAMODRIDMAStop(glamos);
+-#endif /* USE_DRI */
+-
+ xfree(glamos->indirectBuffer->address);
+ xfree(glamos->indirectBuffer);
+ glamos->indirectBuffer = NULL;
+Index: xorg-server-1.3.0.0/hw/kdrive/glamo/glamo.h
+===================================================================
+--- xorg-server-1.3.0.0.orig/hw/kdrive/glamo/glamo.h 2007-11-30 10:24:13.000000000 +0100
++++ xorg-server-1.3.0.0/hw/kdrive/glamo/glamo.h 2007-11-30 10:25:06.000000000 +0100
+@@ -39,18 +39,6 @@
+
+ #include "kxv.h"
+
+-#undef XF86DRI
+-#ifdef XF86DRI
+-#define USE_DRI
+-#include "xf86drm.h"
+-#include "dri.h"
+-#ifdef GLXEXT
+-#include "GL/glxint.h"
+-#include "GL/glxtokens.h"
+-#include "glamo_dripriv.h"
+-#endif
+-#endif
+-
+ #define GLAMO_REG_BASE(c) ((c)->attr.address[0])
+ #define GLAMO_REG_SIZE(c) (0x2400)
+
+@@ -124,9 +112,6 @@
+ Bool is_3362;
+ CARD32 crtc_pitch;
+ CARD32 crtc2_pitch;
+-#ifdef USE_DRI
+- int drmFd;
+-#endif /* USE_DRI */
+ Bool use_fbdev, use_vesa;
+ } GLAMOCardInfo;
+
+@@ -166,9 +151,6 @@
+ int size;
+ int used;
+ void *address;
+-#ifdef USE_DRI
+- drmBufPtr drmBuf;
+-#endif
+ } dmaBuf;
+
+ typedef struct _GLAMOScreenInfo {
+@@ -194,8 +176,6 @@
+ KdVideoAdaptorPtr pAdaptor;
+ int num_texture_ports;
+
+- Bool using_dri; /* If we use the DRM for DMA. */
+-
+ KdOffscreenArea *dma_space; /* For "DMA" from framebuffer. */
+ CARD16 *ring_addr; /* Beginning of ring buffer. */
+ int ring_write; /* Index of write ptr in ring. */
+@@ -204,76 +184,6 @@
+
+ dmaBuf *indirectBuffer;
+ int indirectStart;
+-
+-#ifdef USE_DRI
+- Bool dma_started;
+-
+- drmSize registerSize;
+- drmHandle registerHandle;
+- drmHandle fbHandle;
+-
+- drmSize gartSize;
+- drmHandle agpMemHandle; /* Handle from drmAgpAlloc */
+- unsigned long gartOffset;
+- unsigned char *AGP; /* Map */
+- int agpMode;
+- drmSize pciSize;
+- drmHandle pciMemHandle;
+-
+- /* ring buffer data */
+- unsigned long ringStart; /* Offset into AGP space */
+- drmHandle ringHandle; /* Handle from drmAddMap */
+- drmSize ringMapSize; /* Size of map */
+- int ringSize; /* Size of ring (MB) */
+- unsigned char *ring; /* Map */
+-
+- unsigned long ringReadOffset; /* Offset into AGP space */
+- drmHandle ringReadPtrHandle; /* Handle from drmAddMap */
+- drmSize ringReadMapSize; /* Size of map */
+- unsigned char *ringReadPtr; /* Map */
+-
+- /* vertex/indirect buffer data */
+- unsigned long bufStart; /* Offset into AGP space */
+- drmHandle bufHandle; /* Handle from drmAddMap */
+- drmSize bufMapSize; /* Size of map */
+- int bufSize; /* Size of buffers (MB) */
+- unsigned char *buf; /* Map */
+- int bufNumBufs; /* Number of buffers */
+- drmBufMapPtr buffers; /* Buffer map */
+-
+- /* AGP Texture data */
+- unsigned long gartTexStart; /* Offset into AGP space */
+- drmHandle gartTexHandle; /* Handle from drmAddMap */
+- drmSize gartTexMapSize; /* Size of map */
+- int gartTexSize; /* Size of AGP tex space (MB) */
+- unsigned char *gartTex; /* Map */
+- int log2GARTTexGran;
+-
+- int DMAusecTimeout; /* CCE timeout in usecs */
+-
+- /* DRI screen private data */
+- int frontOffset;
+- int frontPitch;
+- int backOffset;
+- int backPitch;
+- int depthOffset;
+- int depthPitch;
+- int spanOffset;
+- int textureOffset;
+- int textureSize;
+- int log2TexGran;
+-
+- int irqEnabled;
+-
+- int serverContext;
+-
+- DRIInfoPtr pDRIInfo;
+-#ifdef GLXEXT
+- int numVisualConfigs;
+- __GLXvisualConfig *pVisualConfigs;
+- GLAMOConfigPrivPtr pVisualConfigsPriv;
+-#endif /* GLXEXT */
+-#endif /* USE_DRI */
+ } GLAMOScreenInfo;
+
+ #define getGLAMOScreenInfo(kd) ((GLAMOScreenInfo *) ((kd)->screen->driver))
+@@ -330,31 +240,6 @@
+ void
+ GLAMODrawFini(ScreenPtr pScreen);
+
+-/* glamo_dri.c */
+-#ifdef USE_DRI
+-Bool
+-GLAMODRIScreenInit(ScreenPtr pScreen);
+-
+-void
+-GLAMODRICloseScreen(ScreenPtr pScreen);
+-
+-void
+-GLAMODRIDMAStart(GLAMOScreenInfo *glamos);
+-
+-void
+-GLAMODRIDMAStop(GLAMOScreenInfo *glamos);
+-
+-void
+-GLAMODRIDMAReset(GLAMOScreenInfo *glamos);
+-
+-void
+-GLAMODRIDispatchIndirect(GLAMOScreenInfo *glamos, Bool discard);
+-
+-drmBufPtr
+-GLAMODRIGetBuffer(GLAMOScreenInfo *glamos);
+-
+-#endif /* USE_DRI */
+-
+ /* glamo_cursor.c */
+ Bool
+ GLAMOCursorInit(ScreenPtr pScreen);
+Index: xorg-server-1.3.0.0/hw/kdrive/glamo/glamo_draw.c
+===================================================================
+--- xorg-server-1.3.0.0.orig/hw/kdrive/glamo/glamo_draw.c 2007-11-30 09:55:05.000000000 +0100
++++ xorg-server-1.3.0.0/hw/kdrive/glamo/glamo_draw.c 2007-11-30 10:26:02.000000000 +0100
+@@ -296,11 +296,6 @@
+ RegisterBlockAndWakeupHandlers(GLAMOBlockHandler, GLAMOWakeupHandler,
+ pScreen);
+
+- glamos->using_dri = FALSE;
+-#ifdef USE_DRI
+- glamos->using_dri = GLAMODRIScreenInit(pScreen);
+-#endif /* USE_DRI */
+-
+ memset(&glamos->kaa, 0, sizeof(KaaScreenInfoRec));
+ glamos->kaa.waitMarker = GLAMOWaitMarker;
+ glamos->kaa.PrepareSolid = GLAMOPrepareSolid;
+@@ -357,20 +352,6 @@
+ glamos->kaa.UploadToScreen = NULL;
+ glamos->kaa.UploadToScratch = NULL;
+
+-#ifdef USE_DRI
+- if (glamos->using_dri) {
+- if (!glamoc->is_3362) {
+- /*glamos->kaa.PrepareTrapezoids = R128PrepareTrapezoids;
+- glamos->kaa.Trapezoids = R128Trapezoids;
+- glamos->kaa.DoneTrapezoids = R128DoneTrapezoids;*/
+- } else if (glamoc->is_r100 || glamoc->is_r200) {
+- glamos->kaa.PrepareTrapezoids = RadeonPrepareTrapezoids;
+- glamos->kaa.Trapezoids = RadeonTrapezoids;
+- glamos->kaa.DoneTrapezoids = RadeonDoneTrapezoids;
+- }
+- }
+-#endif /* USE_DRI */
+-
+ glamos->kaa.UploadToScreen = GLAMOUploadToScreen;
+
+ /* Reserve a scratch area. It'll be used for storing glyph data during
+@@ -399,15 +380,6 @@
+ void
+ GLAMODrawFini(ScreenPtr pScreen)
+ {
+-#ifdef USE_DRI
+- KdScreenPriv(pScreen);
+- GLAMOScreenInfo(pScreenPriv);
+- if (glamos->using_dri) {
+- GLAMODRICloseScreen(pScreen);
+- glamos->using_dri = FALSE;
+- }
+-#endif /* USE_DRI */
+-
+ RemoveBlockAndWakeupHandlers(GLAMOBlockHandler, GLAMOWakeupHandler,
+ pScreen);
+
diff --git a/packages/xorg-xserver/xserver-kdrive/03-xglamo-no-vesa.patch b/packages/xorg-xserver/xserver-kdrive/03-xglamo-no-vesa.patch
new file mode 100644
index 0000000000..2c44bd8d3d
--- /dev/null
+++ b/packages/xorg-xserver/xserver-kdrive/03-xglamo-no-vesa.patch
@@ -0,0 +1,141 @@
+Index: xorg-server-1.3.0.0/hw/kdrive/glamo/glamo.c
+===================================================================
+--- xorg-server-1.3.0.0.orig/hw/kdrive/glamo/glamo.c 2007-11-30 10:18:43.000000000 +0100
++++ xorg-server-1.3.0.0/hw/kdrive/glamo/glamo.c 2007-11-30 10:35:27.000000000 +0100
+@@ -38,9 +38,7 @@
+ if (glamoc == NULL)
+ return FALSE;
+
+-#ifdef KDRIVEFBDEV
+ if (!initialized && fbdevInitialize(card, &glamoc->backend_priv.fbdev)) {
+- glamoc->use_fbdev = TRUE;
+ initialized = TRUE;
+ glamoc->backend_funcs.cardfini = fbdevCardFini;
+ glamoc->backend_funcs.scrfini = fbdevScreenFini;
+@@ -58,29 +56,6 @@
+ glamoc->backend_funcs.randrSetConfig = fbdevRandRSetConfig;
+ #endif
+ }
+-#endif
+-#ifdef KDRIVEVESA
+- if (!initialized && vesaInitialize(card, &glamoc->backend_priv.vesa)) {
+- glamoc->use_vesa = TRUE;
+- initialized = TRUE;
+- glamoc->backend_funcs.cardfini = vesaCardFini;
+- glamoc->backend_funcs.scrfini = vesaScreenFini;
+- glamoc->backend_funcs.initScreen = vesaInitScreen;
+- glamoc->backend_funcs.finishInitScreen = vesaFinishInitScreen;
+- glamoc->backend_funcs.createRes = vesaCreateResources;
+- glamoc->backend_funcs.preserve = vesaPreserve;
+- glamoc->backend_funcs.restore = vesaRestore;
+- glamoc->backend_funcs.dpms = vesaDPMS;
+- glamoc->backend_funcs.enable = vesaEnable;
+- glamoc->backend_funcs.disable = vesaDisable;
+- glamoc->backend_funcs.getColors = vesaGetColors;
+- glamoc->backend_funcs.putColors = vesaPutColors;
+-#ifdef RANDR
+- glamoc->backend_funcs.randrSetConfig = vesaRandRSetConfig;
+-#endif
+- }
+-#endif
+-
+ if (!initialized || !GLAMOMapReg(card, glamoc)) {
+ xfree(glamoc);
+ return FALSE;
+@@ -158,18 +133,8 @@
+
+ if (screen->fb[0].depth == 0)
+ screen->fb[0].depth = 16;
+-#ifdef KDRIVEFBDEV
+- if (glamoc->use_fbdev) {
+- success = fbdevScreenInitialize(screen,
+- &glamos->backend_priv.fbdev);
+- }
+-#endif
+-#ifdef KDRIVEVESA
+- if (glamoc->use_vesa) {
+- success = vesaScreenInitialize(screen,
+- &glamos->backend_priv.vesa);
+- }
+-#endif
++
++ success = fbdevScreenInitialize(screen, &glamos->backend_priv.fbdev);
+
+ if (!success) {
+ screen->driver = NULL;
+Index: xorg-server-1.3.0.0/hw/kdrive/glamo/glamo.h
+===================================================================
+--- xorg-server-1.3.0.0.orig/hw/kdrive/glamo/glamo.h 2007-11-30 10:25:06.000000000 +0100
++++ xorg-server-1.3.0.0/hw/kdrive/glamo/glamo.h 2007-11-30 10:35:17.000000000 +0100
+@@ -30,13 +30,7 @@
+ #include <kdrive-config.h>
+ #endif
+
+-#ifdef KDRIVEFBDEV
+ #include <fbdev.h>
+-#endif
+-#ifdef KDRIVEVESA
+-#include <vesa.h>
+-#endif
+-
+ #include "kxv.h"
+
+ #define GLAMO_REG_BASE(c) ((c)->attr.address[0])
+@@ -99,12 +93,7 @@
+
+ typedef struct _GLAMOCardInfo {
+ union {
+-#ifdef KDRIVEFBDEV
+ FbdevPriv fbdev;
+-#endif
+-#ifdef KDRIVEVESA
+- VesaCardPrivRec vesa;
+-#endif
+ } backend_priv;
+ struct backend_funcs backend_funcs;
+
+@@ -112,7 +101,6 @@
+ Bool is_3362;
+ CARD32 crtc_pitch;
+ CARD32 crtc2_pitch;
+- Bool use_fbdev, use_vesa;
+ } GLAMOCardInfo;
+
+ #define getGLAMOCardInfo(kd) ((GLAMOCardInfo *) ((kd)->card->driver))
+@@ -155,12 +143,7 @@
+
+ typedef struct _GLAMOScreenInfo {
+ union {
+-#ifdef KDRIVEFBDEV
+ FbdevScrPriv fbdev;
+-#endif
+-#ifdef KDRIVEVESA
+- VesaScreenPrivRec vesa;
+-#endif
+ } backend_priv;
+ KaaScreenInfoRec kaa;
+
+Index: xorg-server-1.3.0.0/hw/kdrive/glamo/glamo_stub.c
+===================================================================
+--- xorg-server-1.3.0.0.orig/hw/kdrive/glamo/glamo_stub.c 2007-11-28 18:44:27.000000000 +0100
++++ xorg-server-1.3.0.0/hw/kdrive/glamo/glamo_stub.c 2007-11-30 10:34:10.000000000 +0100
+@@ -59,9 +59,6 @@
+ ddxUseMsg (void)
+ {
+ KdUseMsg();
+-#ifdef KDRIVEVESA
+- vesaUseMsg();
+-#endif
+ }
+
+ int
+@@ -69,9 +66,6 @@
+ {
+ int ret;
+
+-#ifdef KDRIVEVESA
+- if (!(ret = vesaProcessArgument (argc, argv, i)))
+-#endif
+ ret = KdProcessArgument(argc, argv, i);
+
+ return ret;
diff --git a/packages/xorg-xserver/xserver-kdrive_1.3.0.0.bb b/packages/xorg-xserver/xserver-kdrive_1.3.0.0.bb
index 7822e4079a..83ef9ea611 100644
--- a/packages/xorg-xserver/xserver-kdrive_1.3.0.0.bb
+++ b/packages/xorg-xserver/xserver-kdrive_1.3.0.0.bb
@@ -3,7 +3,7 @@ require xserver-kdrive-common.inc
DEPENDS += "libxkbfile libxcalibrate"
PE = "1"
-PR = "r19"
+PR = "r21"
SRC_URI = "${XORG_MIRROR}/individual/xserver/xorg-server-${PV}.tar.bz2 \
${KDRIVE_COMMON_PATCHES} \
@@ -19,9 +19,18 @@ SRC_URI = "${XORG_MIRROR}/individual/xserver/xorg-server-${PV}.tar.bz2 \
file://w100.patch;patch=1 \
file://w100-autofoo.patch;patch=1 \
file://w100-fix-offscreen-bmp.patch;patch=1 \
- file://xorg-avr32-support.diff;patch=1 \
- file://kdrive-1.3-18bpp.patch;patch=1 \
- file://gumstix-kmode.patch;patch=1 \
+ file://kdrive-1.3-18bpp.patch;patch=1 \
+ file://gumstix-kmode.patch;patch=1 \
+ file://smedia-glamo.patch;patch=1 \
+ file://build-glamo.patch;patch=1 \
+ file://00-xglamo-logs.patch;patch=1 \
+ file://01-xglamo-scrolling-artifact-fix.patch;patch=1 \
+ file://02-xglamo-no-dri.patch;patch=1 \
+ file://03-xglamo-no-vesa.patch;patch=1 \
+"
+
+SRC_URI_append_avr32 = " \
+ file://xorg-avr32-support.diff;patch=1 \
"
S = "${WORKDIR}/xorg-server-${PV}"
diff --git a/packages/xorg-xserver/xserver-xorg_1.3.0.0.bb b/packages/xorg-xserver/xserver-xorg_1.3.0.0.bb
index 37ed418144..c8a3c42ed5 100644
--- a/packages/xorg-xserver/xserver-xorg_1.3.0.0.bb
+++ b/packages/xorg-xserver/xserver-xorg_1.3.0.0.bb
@@ -2,7 +2,7 @@ MESA_VER = "6.5.2"
require xorg-xserver-common.inc
PE = "1"
-PR = "r3"
+PR = "r4"
SRC_URI += "file://drmfix.patch;patch=1"
diff --git a/packages/xournal/xournal_0.4.0.1.bb b/packages/xournal/xournal_0.4.0.1.bb
index 5a8a1b74b7..f62648863b 100644
--- a/packages/xournal/xournal_0.4.0.1.bb
+++ b/packages/xournal/xournal_0.4.0.1.bb
@@ -1,9 +1,11 @@
HOMEPAGE = "http://xournal.sf.net/"
DESCRIPTION = "Xournal is an application for notetaking, sketching, keeping a journal using a stylus."
DEPENDS = "gtk+ libgnomecanvas libgnomeprintui"
+# For pdftopnm:
+RDEPENDS = "poppler"
SECTION = "x11"
LICENSE = "GPL"
-PR = "r0"
+PR = "r1"
SRC_URI = "http://xournal.sourceforge.net/xournal-${PV}.tar.gz \
file://xournal.desktop"
diff --git a/packages/xournal/xournal_0.4.1.bb b/packages/xournal/xournal_0.4.1.bb
new file mode 100644
index 0000000000..51958d545b
--- /dev/null
+++ b/packages/xournal/xournal_0.4.1.bb
@@ -0,0 +1,15 @@
+HOMEPAGE = "http://xournal.sf.net/"
+DESCRIPTION = "Xournal is an application for notetaking, sketching, keeping a journal using a stylus."
+DEPENDS = "gtk+ libgnomecanvas libgnomeprintui"
+# For pdftopnm:
+RDEPENDS = "poppler"
+SECTION = "x11"
+LICENSE = "GPL"
+PR = "r0"
+
+SRC_URI = "http://xournal.sourceforge.net/xournal-${PV}.tar.gz \
+ "
+
+inherit autotools pkgconfig
+
+
diff --git a/packages/xserver-kdrive-common/xserver-kdrive-common/Xserver b/packages/xserver-kdrive-common/xserver-kdrive-common/Xserver
index c5c0fd6cac..417b29ca2a 100644
--- a/packages/xserver-kdrive-common/xserver-kdrive-common/Xserver
+++ b/packages/xserver-kdrive-common/xserver-kdrive-common/Xserver
@@ -2,7 +2,6 @@
#
# note xinit needs full server path
-XSERVER=/usr/bin/Xipaq
if [ -f /usr/bin/Xfbdev ]; then
XSERVER=/usr/bin/Xfbdev
fi
@@ -12,9 +11,6 @@ fi
if [ -f /usr/bin/Xorg ]; then
XSERVER=/usr/bin/Xorg
fi
-if [ -f /usr/bin/Xomap ]; then
- XSERVER=/usr/bin/Xomap
-fi
. /etc/profile
@@ -104,15 +100,28 @@ case `module_id` in
"Compulab CM-x270")
modprobe mbxfb
ARGS="$ARGS -fb /dev/fb1" ;;
- "GTA01" | "GTA02")
+ "GTA01")
if [ `screen_width` -gt 330 ] ; then
DPI=285
else
DPI=140
fi
ARGS="$ARGS -dpi ${DPI} -screen ${SCREEN_SIZE}" ;;
+ "GTA02")
+ if [ `screen_width` -gt 330 ] ; then
+ DPI=285
+ else
+ DPI=140
+ fi
+ ARGS="$ARGS -dpi ${DPI} -screen ${SCREEN_SIZE}"
+ XSERVER=/usr/bin/Xglamo
+ ;;
+ "Nokia N770")
+ ARGS="$ARGS -dpi 225 -screen ${SCREEN_SIZE} -mouse tslib"
+ XSERVER=/usr/bin/Xomap ;;
"Nokia N800")
- ARGS="$ARGS -dpi 225 -screen ${SCREEN_SIZE} -mouse tslib" ;;
+ ARGS="$ARGS -dpi 225 -screen ${SCREEN_SIZE} -mouse tslib"
+ XSERVER=/usr/bin/Xomap ;;
"Motorola Ezx Platform")
ARGS="$ARGS -dpi 170 -screen ${SCREEN_SIZE}" ;;
*)
diff --git a/packages/xserver-kdrive-common/xserver-kdrive-common/openmoko/Xserver b/packages/xserver-kdrive-common/xserver-kdrive-common/openmoko/Xserver
index f7fe52d84e..99a4138473 100644
--- a/packages/xserver-kdrive-common/xserver-kdrive-common/openmoko/Xserver
+++ b/packages/xserver-kdrive-common/xserver-kdrive-common/openmoko/Xserver
@@ -15,6 +15,9 @@ fi
if [ -f /usr/bin/Xomap ]; then
XSERVER=/usr/bin/Xomap
fi
+if [ -f /usr/bin/Xglamo ]; then
+ XSERVER=/usr/bin/Xglamo
+fi
. /etc/profile
diff --git a/packages/xserver-kdrive-common/xserver-kdrive-common_0.1.bb b/packages/xserver-kdrive-common/xserver-kdrive-common_0.1.bb
index 93b9d9e83d..db50c6c1c4 100644
--- a/packages/xserver-kdrive-common/xserver-kdrive-common_0.1.bb
+++ b/packages/xserver-kdrive-common/xserver-kdrive-common_0.1.bb
@@ -2,7 +2,7 @@ DESCRIPTION = "Common X11 scripts"
LICENSE = "GPL"
SECTION = "x11"
RDEPENDS_${PN} = "xmodmap libxrandr xdpyinfo xtscal xinit"
-PR = "r21"
+PR = "r24"
SRC_URI = "\
file://Xdefaults \
diff --git a/packages/zaurus-updater/akita/updater.sh b/packages/zaurus-updater/akita/updater.sh
index 5399e5254e..ad2c27b012 100644
--- a/packages/zaurus-updater/akita/updater.sh
+++ b/packages/zaurus-updater/akita/updater.sh
@@ -181,53 +181,53 @@ do
/sbin/verchg -v $VTMPNAME $TMPHEAD $MODULEID $MODULESIZE > /dev/null 2>&1
/sbin/verchg -m $MTMPNAME $TMPHEAD $MODULEID $MODULESIZE > /dev/null 2>&1
- if [ "$MODEL" = "SL-C1000" ] && [ $TARGETTYPE = Kernel ]; then
- echo $TARGETFILE':'$DATASIZE'bytes'
- echo ' ' > /tmp/data
- /sbin/nandlogical $LOGOCAL_MTD WRITE 0x60100 16 /tmp/data > /dev/null 2>&1
- /sbin/nandlogical $LOGOCAL_MTD WRITE 0xe0000 $DATASIZE $TARGETFILE > /dev/null 2>&1
- /sbin/nandlogical $LOGOCAL_MTD WRITE 0x21bff0 16 /tmp/data > /dev/null 2>&1
- #loop
- else
- while [ $DATAPOS -lt $DATASIZE ]
- do
- #data create
- bcut -a $DATAPOS -s $ONESIZE -o $TMPDATA $TARGETFILE
- TMPSIZE=`wc -c $TMPDATA`
- TMPSIZE=`echo $TMPSIZE | cut -d' ' -f1`
- DATAPOS=`expr $DATAPOS + $TMPSIZE`
-
- #handle data file
- #echo 'ADDR='$ADDR
- #echo 'SIZE='$TMPSIZE
- #echo 'TMPDATA='$TMPDATA
- if [ $ISLOGICAL = 0 ]
- then
- next_addr=`/sbin/nandcp -a $ADDR $TMPDATA $TARGET_MTD 2>/dev/null | fgrep "mtd address" | cut -d- -f2 | cut -d\( -f1`
- if [ "$next_addr" = "" ]; then
- echo "ERROR:flash write"
- rm $TMPDATA > /dev/null 2>&1
- RESULT=3
- break;
+ if [ "$MODEL" = "SL-C1000" ] && [ $TARGETTYPE = Kernel ]; then
+ echo $TARGETFILE':'$DATASIZE'bytes'
+ echo ' ' > /tmp/data
+ /sbin/nandlogical $LOGOCAL_MTD WRITE 0x60100 16 /tmp/data > /dev/null 2>&1
+ /sbin/nandlogical $LOGOCAL_MTD WRITE 0xe0000 $DATASIZE $TARGETFILE > /dev/null 2>&1
+ /sbin/nandlogical $LOGOCAL_MTD WRITE 0x21bff0 16 /tmp/data > /dev/null 2>&1
+ #loop
+ else
+ while [ $DATAPOS -lt $DATASIZE ]
+ do
+ #data create
+ bcut -a $DATAPOS -s $ONESIZE -o $TMPDATA $TARGETFILE
+ TMPSIZE=`wc -c $TMPDATA`
+ TMPSIZE=`echo $TMPSIZE | cut -d' ' -f1`
+ DATAPOS=`expr $DATAPOS + $TMPSIZE`
+
+ #handle data file
+ #echo 'ADDR='$ADDR
+ #echo 'SIZE='$TMPSIZE
+ #echo 'TMPDATA='$TMPDATA
+ if [ $ISLOGICAL = 0 ]
+ then
+ next_addr=`/sbin/nandcp -a $ADDR $TMPDATA $TARGET_MTD 2>/dev/null | fgrep "mtd address" | cut -d- -f2 | cut -d\( -f1`
+ if [ "$next_addr" = "" ]; then
+ echo "ERROR:flash write"
+ rm $TMPDATA > /dev/null 2>&1
+ RESULT=3
+ break;
+ fi
+ ADDR=$next_addr
+ else
+ /sbin/nandlogical $LOGOCAL_MTD WRITE $ADDR $DATASIZE $TMPDATA > /dev/null 2>&1
+ ADDR=`expr $ADDR + $TMPSIZE`
fi
- ADDR=$next_addr
- else
- /sbin/nandlogical $LOGOCAL_MTD WRITE $ADDR $DATASIZE $TMPDATA > /dev/null 2>&1
- ADDR=`expr $ADDR + $TMPSIZE`
- fi
- rm $TMPDATA > /dev/null 2>&1
+ rm $TMPDATA > /dev/null 2>&1
- #progress
- SPNUM=0
- while [ $SPNUM -lt $PROGSTEP ]
- do
- echo -n '.'
- SPNUM=`expr $SPNUM + 1`
+ #progress
+ SPNUM=0
+ while [ $SPNUM -lt $PROGSTEP ]
+ do
+ echo -n '.'
+ SPNUM=`expr $SPNUM + 1`
+ done
done
- done
- fi
+ fi
echo ''
diff --git a/packages/zaurus-updater/c7x0/updater.sh b/packages/zaurus-updater/c7x0/updater.sh
deleted file mode 100644
index 290030ca2d..0000000000
--- a/packages/zaurus-updater/c7x0/updater.sh
+++ /dev/null
@@ -1,242 +0,0 @@
-#!/bin/sh
-
-
-DATAPATH=$1
-TMPPATH=/tmp/update
-TMPDATA=$TMPPATH/tmpdata.bin
-TMPHEAD=$TMPPATH/tmphead.bin
-
-WFLG_KERNEL=0
-WFLG_INITRD=0
-WFLG_MVERSION=0
-
-RO_MTD_LINE=`cat /proc/mtd | grep "root" | tail -n 1`
-if [ "$RO_MTD_LINE" = "" ]; then
- RO_MTD_LINE=`cat /proc/mtd | grep "\<NAND\>.*\<2\>" | tail -n 1`
-fi
-RO_MTD_NO=`echo $RO_MTD_LINE | cut -d: -f1 | cut -dd -f2`
-RO_MTD_SIZE_HEX=`echo $RO_MTD_LINE | cut -d" " -f2`
-RO_MTD=/dev/mtd$RO_MTD_NO
-RO_MTDBLK=/dev/mtdblock$RO_MTD_NO
-RO_MTD_SIZE=`dc 0x$RO_MTD_SIZE_HEX 1024 /`
-
-RW_MTD_LINE=`cat /proc/mtd | grep "home" | tail -n 1`
-if [ "$RW_MTD_LINE" = "" ]; then
- RW_MTD_LINE=`cat /proc/mtd | grep "\<NAND\>.*\<2\>" | tail -n 1`
-fi
-RW_MTD_NO=`echo $RW_MTD_LINE | cut -d: -f1 | cut -dd -f2`
-RW_MTD_SIZE_HEX=`echo $RW_MTD_LINE | cut -d" " -f2`
-RW_MTD=/dev/mtd$RW_MTD_NO
-RW_MTDBLK=/dev/mtdblock$RW_MTD_NO
-RW_MTD_SIZE=`dc 0x$RW_MTD_SIZE_HEX 1024 /`
-
-LOGOCAL_MTD=/dev/mtd1
-
-VERBLOCK=0x48000
-MVRBLOCK=0x70000
-
-RESULT=0
-
-Cleanup(){
- rm -f $VTMPNAME > /dev/null 2>&1
- rm -f $MTMPNAME > /dev/null 2>&1
- rm $CTRLPATH/* > /dev/null 2>&1
- rm $DATAPATH/* > /dev/null 2>&1
- exit $1
-}
-trap 'Cleanup 1' 1 15
-trap '' 2 3
-
-
-### Check model ###
-/sbin/writerominfo
-MODEL=`cat /proc/deviceinfo/product`
-echo 'MODEL:'$MODEL
-case "$MODEL" in
- SL-7500) ;;
- SL-C700) ;;
- SL-C750) ;;
- SL-C760) ;;
- SL-C860) ;;
- SL-B500) ;;
- SL-5600) ;;
- *)
- echo 'ERROR:Invalid model!'
- echo 'Please reset'
- while true
- do
- done
- ;;
-esac
-
-mkdir -p $TMPPATH > /dev/null 2>&1
-
-cd $DATAPATH/
-
-for TARGETFILE in zImage.bin zimage.bin ZIMAGE.BIN initrd.bin INITRD.BIN mversion.bin MVERSION.BIN
-do
- if [ -e $TARGETFILE ]
- then
- rm -f $TMPPATH/*.bin > /dev/null 2>&1
- DATASIZE=`wc -c $TARGETFILE`
- DATASIZE=`echo $DATASIZE | cut -d' ' -f1`
-
- #echo $TARGETFILE':'$DATASIZE'bytes'
- TARGETTYPE=Invalid
- case "$TARGETFILE" in
- zImage.bin) TARGETTYPE=Kernel;;
- zimage.bin) TARGETTYPE=Kernel;;
- ZIMAGE.BIN) TARGETTYPE=Kernel;;
- initrd.bin) TARGETTYPE=RoFs;;
- INITRD.BIN) TARGETTYPE=RoFs;;
- mversion.bin) TARGETTYPE=MasterVer;;
- MVERSION.BIN) TARGETTYPE=MasterVer;;
- *)
- continue
- ;;
- esac
-
- case "$TARGETTYPE" in
- Kernel)
- if [ $WFLG_KERNEL != 0 ]
- then
- continue
- fi
- WFLG_KERNEL=1
- echo 'kernel'
- ISLOGICAL=1
- MODULEID=5
- MODULESIZE=0x13C000
- ADDR=`dc 0xE0000`
- ISFORMATTED=1
- DATAPOS=0
- ONESIZE=524288
- HDTOP=`expr $DATASIZE - 16`
- /sbin/bcut -a $HDTOP -s 16 -o $TMPHEAD $TARGETFILE
- ;;
- RoFs)
- if [ $WFLG_INITRD != 0 ]
- then
- continue
- fi
- WFLG_INITRD=1
- echo 'RO file system'
- ISLOGICAL=0
- MODULEID=6
- MODULESIZE=0x1900000
- ADDR=0
- ISFORMATTED=0
- TARGET_MTD=$RO_MTD
- DATAPOS=16
- ONESIZE=1048576
- /sbin/bcut -s 16 -o $TMPHEAD $TARGETFILE
- ;;
- MasterVer)
- if [ $WFLG_MVERSION != 0 ]
- then
- continue
- fi
- WFLG_MVERSION=1
- echo 'Master version'
- MTMPNAME=$TMPPATH'/mtmp'`date '+%s'`'.tmp'
- /sbin/nandlogical $LOGOCAL_MTD READ $MVRBLOCK 0x4000 $MTMPNAME > /dev/null 2>&1
- /sbin/verchg -m $MTMPNAME $TARGETFILE 0 0 > /dev/null 2>&1
- /sbin/nandlogical $LOGOCAL_MTD WRITE $MVRBLOCK 0x4000 $MTMPNAME > /dev/null 2>&1
- rm -f $MTMPNAME > /dev/null 2>&1
- echo 'Success!'
- continue
- ;;
- *)
- continue
- ;;
- esac
-
-
- #format?
- if [ $ISFORMATTED = 0 ]
- then
- echo -n 'Flash erasing...'
- /sbin/eraseall $TARGET_MTD 2> /dev/null > /dev/null
- #/sbin/eraseall $TARGET_MTD 2
- echo 'done'
- ISFORMATTED=1
- fi
-
- echo ''
- echo '0% 100%'
- PROGSTEP=`expr $DATASIZE / $ONESIZE + 1`
- PROGSTEP=`expr 25 / $PROGSTEP`
- if [ $PROGSTEP = 0 ]
- then
- PROGSTEP=1
- fi
-
- #00 means header information
- VTMPNAME=$TMPPATH'/vtmp'`date '+%s'`'.tmp'
- MTMPNAME=$TMPPATH'/mtmp'`date '+%s'`'.tmp'
- /sbin/nandlogical $LOGOCAL_MTD READ $VERBLOCK 0x4000 $VTMPNAME > /dev/null 2>&1
- /sbin/nandlogical $LOGOCAL_MTD READ $MVRBLOCK 0x4000 $MTMPNAME > /dev/null 2>&1
-
- #echo 'found header'
- /sbin/verchg -v $VTMPNAME $TMPHEAD $MODULEID $MODULESIZE > /dev/null 2>&1
- /sbin/verchg -m $MTMPNAME $TMPHEAD $MODULEID $MODULESIZE > /dev/null 2>&1
-
- #loop
- while [ $DATAPOS -lt $DATASIZE ]
- do
- #data create
- bcut -a $DATAPOS -s $ONESIZE -o $TMPDATA $TARGETFILE
- TMPSIZE=`wc -c $TMPDATA`
- TMPSIZE=`echo $TMPSIZE | cut -d' ' -f1`
- DATAPOS=`expr $DATAPOS + $TMPSIZE`
-
- #handle data file
- #echo 'ADDR='$ADDR
- #echo 'SIZE='$TMPSIZE
- if [ $ISLOGICAL = 0 ]
- then
- next_addr=`/sbin/nandcp -a $ADDR $TMPDATA $TARGET_MTD 2>/dev/null | fgrep "mtd address" | cut -d- -f2 | cut -d\( -f1`
- if [ "$next_addr" = "" ]; then
- echo "ERROR:flash write"
- rm $TMPDATA > /dev/null 2>&1
- RESULT=3
- break;
- fi
- ADDR=$next_addr
- else
- /sbin/nandlogical $LOGOCAL_MTD WRITE $ADDR $DATASIZE $TMPDATA > /dev/null 2>&1
- ADDR=`expr $ADDR + $TMPSIZE`
- fi
-
- rm $TMPDATA > /dev/null 2>&1
-
- #progress
- SPNUM=0
- while [ $SPNUM -lt $PROGSTEP ]
- do
- echo -n '.'
- SPNUM=`expr $SPNUM + 1`
- done
- done
-
- echo ''
-
-#finish
- rm -f $TMPPATH/*.bin > /dev/null 2>&1
-
- if [ $RESULT = 0 ]
- then
- /sbin/nandlogical $LOGOCAL_MTD WRITE $VERBLOCK 0x4000 $VTMPNAME > /dev/null 2>&1
- /sbin/nandlogical $LOGOCAL_MTD WRITE $MVRBLOCK 0x4000 $MTMPNAME > /dev/null 2>&1
-
- rm -f $VTMPNAME > /dev/null 2>&1
- rm -f $MTMPNAME > /dev/null 2>&1
- echo 'Success!'
- else
- echo 'Error!'
- exit $RESULT
- fi
- fi
-done
-
-exit 0
diff --git a/packages/zaurus-updater/spitz/updater.sh b/packages/zaurus-updater/spitz/updater.sh
deleted file mode 100755
index a748334cc7..0000000000
--- a/packages/zaurus-updater/spitz/updater.sh
+++ /dev/null
@@ -1,280 +0,0 @@
-#!/bin/sh
-
-#
-# Noodles' simpler update script. SL-C3000 only for the moment.
-#
-
-DATAPATH=$1
-TMPPATH=/tmp/update
-TMPDATA=$TMPPATH/tmpdata.bin
-TMPHEAD=$TMPPATH/tmphead.bin
-
-WFLG_KERNEL=0
-WFLG_INITRD=0
-WFLG_HDD=0
-
-RO_MTD_LINE=`cat /proc/mtd | grep "root" | tail -n 1`
-if [ "$RO_MTD_LINE" = "" ]; then
- RO_MTD_LINE=`cat /proc/mtd | grep "\<NAND\>.*\<2\>" | tail -n 1`
-fi
-RO_MTD_NO=`echo $RO_MTD_LINE | cut -d: -f1 | cut -dd -f2`
-RO_MTD_SIZE_HEX=`echo $RO_MTD_LINE | cut -d" " -f2`
-RO_MTD=/dev/mtd$RO_MTD_NO
-RO_MTDBLK=/dev/mtdblock$RO_MTD_NO
-RO_MTD_SIZE=`dc 0x$RO_MTD_SIZE_HEX 1024 /`
-
-RW_MTD_LINE=`cat /proc/mtd | grep "home" | tail -n 1`
-if [ "$RW_MTD_LINE" = "" ]; then
- RW_MTD_LINE=`cat /proc/mtd | grep "\<NAND\>.*\<2\>" | tail -n 1`
-fi
-RW_MTD_NO=`echo $RW_MTD_LINE | cut -d: -f1 | cut -dd -f2`
-RW_MTD_SIZE_HEX=`echo $RW_MTD_LINE | cut -d" " -f2`
-RW_MTD=/dev/mtd$RW_MTD_NO
-RW_MTDBLK=/dev/mtdblock$RW_MTD_NO
-RW_MTD_SIZE=`dc 0x$RW_MTD_SIZE_HEX 1024 /`
-
-LOGOCAL_MTD=/dev/mtd1
-
-VERBLOCK=0x48000
-MVRBLOCK=0x70000
-
-RESULT=0
-
-Cleanup(){
- rm -f $VTMPNAME > /dev/null 2>&1
- rm -f $MTMPNAME > /dev/null 2>&1
- rm $CTRLPATH/* > /dev/null 2>&1
- exit $1
-}
-trap 'Cleanup 1' 1 15
-trap '' 2 3
-
-get_dev_pcmcia()
-{
-while read SOCKET CLASS DRIVER INSTANCE DEVS MAJOR MINOR;
-do
- echo $DEVS
-done
-}
-get_dev_pcmcia_slot()
-{
- grep "^$1" /var/lib/pcmcia/stab | get_dev_pcmcia
-}
-sleep 1
-IDE1=`get_dev_pcmcia_slot 1`
-if [ "$IDE1" = "" ]; then
- echo "Error!! There is no HDD. Now retrying..."
- while [ "$IDE1" = "" ]; do
- IDE1=`get_dev_pcmcia_slot 1`
- done
- echo "Found HDD!!"
-fi
-
-#LINUXFMT=ext2
-LINUXFMT=ext3
-MKE2FSOPT=
-if [ "$LINUXFMT" = "ext3" ]; then
- MKE2FSOPT=-j
-fi
-
-
-### Check model ###
-/sbin/writerominfo
-MODEL=`cat /proc/deviceinfo/product`
-if [ "$MODEL" != "SL-C3000" ] && [ "$MODEL" != "SL-C3100" ] && [ "$MODEL" != "SL-C3200" ]
-then
- echo 'MODEL:'$MODEL
- echo 'ERROR:Invalid model!'
- echo 'Please reset'
- while true
- do
- done
-fi
-
-### Check that we have a valid tar
-for TARNAME in gnu-tar GNU-TAR
-do
- if [ -e $DATAPATH/$TARNAME ]
- then
- TARBIN=$DATAPATH/$TARNAME
- fi
-done
-
-if [ ! -e $TARBIN ]; then
- echo 'Please place a valid copy of tar as "gnu-tar" on your card'
- echo 'Please reset'
- while true
- do
- done
-fi
-
-mkdir -p $TMPPATH > /dev/null 2>&1
-
-cd $DATAPATH/
-
-#
-# First do the kernel.
-#
-for TARGETFILE in zImage.bin zimage.bin ZIMAGE.BIN
-do
- if [ -e $TARGETFILE -a $WFLG_KERNEL = 0 ]
- then
- # Get the size of the kernel.
- DATASIZE=`wc -c $TARGETFILE`
- DATASIZE=`echo $DATASIZE | cut -d' ' -f1`
-
- echo 'Updating kernel.'
- echo $TARGETFILE':'$DATASIZE' bytes'
- /sbin/nandlogical $LOGOCAL_MTD WRITE 0xe0000 $DATASIZE \
- $TARGETFILE > /dev/null 2>&1
-
- WFLG_KERNEL=1
-
- fi
-done
-
-#
-# Now do the initrd.
-#
-for TARGETFILE in initrd.bin INITRD.BIN
-do
- if [ -e $TARGETFILE -a $WFLG_INITRD = 0 ]
- then
- rm -f $TMPPATH/*.bin > /dev/null 2>&1
- DATASIZE=`wc -c $TARGETFILE`
- DATASIZE=`echo $DATASIZE | cut -d' ' -f1`
-
- WFLG_INITRD=1
- echo 'RO file system'
- MODULEID=6
- MODULESIZE=0x500000
- ADDR=0
- TARGET_MTD=$RO_MTD
- DATAPOS=16
- ONESIZE=1048576
- /sbin/bcut -s 16 -o $TMPHEAD $TARGETFILE
-
- echo -n 'Flash erasing...'
- /sbin/eraseall $TARGET_MTD 2> /dev/null > /dev/null
- echo 'done'
-
- echo ''
- echo '0% 100%'
- PROGSTEP=`expr $DATASIZE / $ONESIZE + 1`
- PROGSTEP=`expr 28 / $PROGSTEP`
- if [ $PROGSTEP = 0 ]
- then
- PROGSTEP=1
- fi
-
- #00 means header information
- VTMPNAME=$TMPPATH'/vtmp'`date '+%s'`'.tmp'
- MTMPNAME=$TMPPATH'/mtmp'`date '+%s'`'.tmp'
- /sbin/nandlogical $LOGOCAL_MTD READ $VERBLOCK 0x4000 $VTMPNAME > /dev/null 2>&1
- /sbin/nandlogical $LOGOCAL_MTD READ $MVRBLOCK 0x4000 $MTMPNAME > /dev/null 2>&1
-
- #echo 'found header'
- /sbin/verchg -v $VTMPNAME $TMPHEAD $MODULEID $MODULESIZE > /dev/null 2>&1
- /sbin/verchg -m $MTMPNAME $TMPHEAD $MODULEID $MODULESIZE > /dev/null 2>&1
-
- #loop
- while [ $DATAPOS -lt $DATASIZE ]
- do
- #data create
- bcut -a $DATAPOS -s $ONESIZE -o $TMPDATA $TARGETFILE
- TMPSIZE=`wc -c $TMPDATA`
- TMPSIZE=`echo $TMPSIZE | cut -d' ' -f1`
- DATAPOS=`expr $DATAPOS + $TMPSIZE`
-
- #handle data file
- #echo 'ADDR='$ADDR
- #echo 'SIZE='$TMPSIZE
- next_addr=`/sbin/nandcp -a $ADDR $TMPDATA $TARGET_MTD 2>/dev/null | fgrep "mtd address" | cut -d- -f2 | cut -d\( -f1`
- if [ "$next_addr" = "" ]; then
- echo "ERROR:flash write"
- rm $TMPDATA > /dev/null 2>&1
- RESULT=3
- break;
- fi
- ADDR=$next_addr
-
- rm $TMPDATA > /dev/null 2>&1
-
- #progress
- SPNUM=0
- while [ $SPNUM -lt $PROGSTEP ]
- do
- echo -n '.'
- SPNUM=`expr $SPNUM + 1`
- done
- done
-
- echo ''
-
- #finish
- rm -f $TMPPATH/*.bin > /dev/null 2>&1
-
- if [ $RESULT = 0 ]
- then
- /sbin/nandlogical $LOGOCAL_MTD WRITE $VERBLOCK 0x4000 $VTMPNAME > /dev/null 2>&1
- /sbin/nandlogical $LOGOCAL_MTD WRITE $MVRBLOCK 0x4000 $MTMPNAME > /dev/null 2>&1
-
- rm -f $VTMPNAME > /dev/null 2>&1
- rm -f $MTMPNAME > /dev/null 2>&1
- echo 'Success!'
- else
- echo 'Error!'
- exit $RESULT
- fi
- fi
-done
-
-## HDD image
-for TARGETFILE in hdimage1.tgz HDIMAGE1.TGZ
-do
- if [ -e $TARGETFILE ]; then
- if [ $WFLG_HDD != 0 ]
- then
- continue
- fi
- WFLG_HDD=1
- echo ''
- echo 'HDD RO file system'
- if [ ! -f /hdd1/NotAvailable ]; then
- umount /hdd1
- fi
- echo 'Now formatting...'
- mke2fs $MKE2FSOPT /dev/${IDE1}1 2> /dev/null > /dev/null
- e2fsck -p /dev/${IDE1}1 > /dev/null
- if [ "$?" != "0" ]; then
- echo "Error!"
- exit "$?"
- fi
-
- mount -t $LINUXFMT -o noatime /dev/${IDE1}1 /hdd1
- if [ "$?" != "0" ]; then
- echo "Error!"
- exit "$?"
- fi
-
- cd /hdd1
- echo 'Now extracting...'
- gzip -dc $DATAPATH/$TARGETFILE | $TARBIN xf -
- if [ "$?" != "0" ]; then
- echo "Error!"
- exit "$?"
- fi
-
- echo 'Success!'
-
- #This can be useful for debugging
- #/bin/sh -i
-
- # remount as RO
- cd /
- umount /hdd1
- mount -t $LINUXFMT -o ro,noatime /dev/${IDE1}1 /hdd1
- fi
-done
-
-exit 0
diff --git a/packages/zaurus-updater/tosa/updater.sh b/packages/zaurus-updater/tosa/updater.sh
deleted file mode 100644
index 6d30aba231..0000000000
--- a/packages/zaurus-updater/tosa/updater.sh
+++ /dev/null
@@ -1,241 +0,0 @@
-#!/bin/sh
-
-
-DATAPATH=$1
-TMPPATH=/tmp/update
-TMPDATA=$TMPPATH/tmpdata.bin
-TMPHEAD=$TMPPATH/tmphead.bin
-
-
-RO_MTD_LINE=`cat /proc/mtd | grep "root" | tail -n 1`
-if [ "$RO_MTD_LINE" = "" ]; then
- RO_MTD_LINE=`cat /proc/mtd | grep "\<NAND\>.*\<2\>" | tail -n 1`
-fi
-RO_MTD_NO=`echo $RO_MTD_LINE | cut -d: -f1 | cut -dd -f2`
-RO_MTD_SIZE_HEX=`echo $RO_MTD_LINE | cut -d" " -f2`
-RO_MTD=/dev/mtd$RO_MTD_NO
-RO_MTDBLK=/dev/mtdblock$RO_MTD_NO
-RO_MTD_SIZE=`dc 0x$RO_MTD_SIZE_HEX 1024 /`
-
-RW_MTD_LINE=`cat /proc/mtd | grep "home" | tail -n 1`
-if [ "$RW_MTD_LINE" = "" ]; then
- RW_MTD_LINE=`cat /proc/mtd | grep "\<NAND\>.*\<2\>" | tail -n 1`
-fi
-RW_MTD_NO=`echo $RW_MTD_LINE | cut -d: -f1 | cut -dd -f2`
-RW_MTD_SIZE_HEX=`echo $RW_MTD_LINE | cut -d" " -f2`
-RW_MTD=/dev/mtd$RW_MTD_NO
-RW_MTDBLK=/dev/mtdblock$RW_MTD_NO
-RW_MTD_SIZE=`dc 0x$RW_MTD_SIZE_HEX 1024 /`
-
-LOGOCAL_MTD=/dev/mtd1
-
-VERBLOCK=0x48000
-MVRBLOCK=0x70000
-
-RESULT=0
-
-Cleanup(){
- rm -f $VTMPNAME > /dev/null 2>&1
- rm -f $MTMPNAME > /dev/null 2>&1
- rm $CTRLPATH/* > /dev/null 2>&1
- rm $DATAPATH/* > /dev/null 2>&1
- exit $1
-}
-trap 'Cleanup 1' 1 15
-trap '' 2 3
-
-
-### Check model ###
-/sbin/writerominfo
-MODEL=`cat /proc/deviceinfo/product`
-if [ "$MODEL" != "SL-6000" ] > /dev/null 2>&1
-then
- echo 'MODEL:'$MODEL
- echo 'ERROR:Invalid model!'
- echo 'Please reset'
- while true
- do
- done
-fi
-
-mkdir -p $TMPPATH > /dev/null 2>&1
-
-cd $DATAPATH/
-
-if [ -e consolescroll ]
-then
- ./consolescroll
-fi
-
-for TARGETFILE in zImage zImage.bin zimage.bin ZIMAGE ZIMAGE.BIN initrd.bin INITRD.BIN mversion.bin MVERSION.BIN
-do
- if [ -e $TARGETFILE ]
- then
- rm -f $TMPPATH/*.bin > /dev/null 2>&1
- DATASIZE=`wc -c $TARGETFILE`
- DATASIZE=`echo $DATASIZE | cut -d' ' -f1`
-
- #echo $TARGETFILE':'$DATASIZE'bytes'
- TARGETTYPE=Invalid
- case "$TARGETFILE" in
- zImage) TARGETTYPE=Kernel;;
- zimage.bin) TARGETTYPE=Kernel;;
- ZIMAGE) TARGETTYPE=Kernel;;
- initrd.bin) TARGETTYPE=RoFs;;
- INITRD.BIN) TARGETTYPE=RoFs;;
- mversion.bin) TARGETTYPE=MasterVer;;
- MVERSION.BIN) TARGETTYPE=MasterVer;;
- *)
- continue
- ;;
- esac
- case "$TARGETTYPE" in
- Kernel)
- echo 'kernel'
- ISLOGICAL=1
- MODULEID=5
- MODULESIZE=0x13C000
- ADDR=`dc 0xE0000`
- ISFORMATTED=1
- DATAPOS=0
- ONESIZE=524288
- HDTOP=`expr $DATASIZE - 16`
- /sbin/bcut -a $HDTOP -s 16 -o $TMPHEAD $TARGETFILE
- ;;
- RoFs)
- echo 'RO file system'
- ISLOGICAL=0
- MODULEID=6
- MODULESIZE=0x1E00000
- ADDR=0
- ISFORMATTED=0
- TARGET_MTD=$RO_MTD
- DATAPOS=16
- ONESIZE=1048576
- /sbin/bcut -s 16 -o $TMPHEAD $TARGETFILE
- ;;
- MasterVer)
- echo 'Maser version'
- MTMPNAME=$TMPPATH'/mtmp'`date '+%s'`'.tmp'
- /sbin/nandlogical $LOGOCAL_MTD READ $MVRBLOCK 0x4000 $MTMPNAME > /dev/null 2>&1
- /sbin/verchg -m $MTMPNAME $TARGETFILE 0 0 > /dev/null 2>&1
- /sbin/nandlogical $LOGOCAL_MTD WRITE $MVRBLOCK 0x4000 $MTMPNAME > /dev/null 2>&1
- rm -f $MTMPNAME > /dev/null 2>&1
- echo 'Success!'
- continue
- ;;
- *)
- continue;
- ;;
- esac
-
- #check version
- /sbin/bcut -s 6 -o $TMPDATA $TMPHEAD
- if [ `cat $TMPDATA` != "SHARP!" ] > /dev/null 2>&1
- then
- #no version info...
- rm -f $TMPHEAD > /dev/null 2>&1
- DATAPOS=0
- fi
-
- #format?
- if [ $ISFORMATTED = 0 ]
- then
- echo -n 'Flash erasing...'
- /sbin/eraseall $TARGET_MTD 2> /dev/null > /dev/null
- #/sbin/eraseall $TARGET_MTD 2
- echo 'done'
- ISFORMATTED=1
- fi
-
- echo ''
- echo '0% 100%'
- PROGSTEP=`expr $DATASIZE / $ONESIZE + 1`
- PROGSTEP=`expr 28 / $PROGSTEP`
- if [ $PROGSTEP = 0 ]
- then
- PROGSTEP=1
- fi
-
- #header information
- if [ -e $TMPHEAD ]
- then
- VTMPNAME=$TMPPATH'/vtmp'`date '+%s'`'.tmp'
- MTMPNAME=$TMPPATH'/mtmp'`date '+%s'`'.tmp'
- /sbin/nandlogical $LOGOCAL_MTD READ $VERBLOCK 0x4000 $VTMPNAME > /dev/null 2>&1
- /sbin/nandlogical $LOGOCAL_MTD READ $MVRBLOCK 0x4000 $MTMPNAME > /dev/null 2>&1
-
- #echo 'found header'
- /sbin/verchg -v $VTMPNAME $TMPHEAD $MODULEID $MODULESIZE > /dev/null 2>&1
- /sbin/verchg -m $MTMPNAME $TMPHEAD $MODULEID $MODULESIZE > /dev/null 2>&1
- fi
-
- #loop
- while [ $DATAPOS -lt $DATASIZE ]
- do
- #data create
- bcut -a $DATAPOS -s $ONESIZE -o $TMPDATA $TARGETFILE
- TMPSIZE=`wc -c $TMPDATA`
- TMPSIZE=`echo $TMPSIZE | cut -d' ' -f1`
- DATAPOS=`expr $DATAPOS + $TMPSIZE`
-
- #handle data file
- #echo 'ADDR='$ADDR
- #echo 'SIZE='$TMPSIZE
- if [ $ISLOGICAL = 0 ]
- then
- next_addr=`/sbin/nandcp -a $ADDR $TMPDATA $TARGET_MTD 2>/dev/null | fgrep "mtd address" | cut -d- -f2 | cut -d\( -f1`
- if [ "$next_addr" = "" ]; then
- echo "ERROR:flash write"
- rm $TMPDATA > /dev/null 2>&1
- RESULT=3
- break;
- fi
- ADDR=$next_addr
- else
- /sbin/nandlogical $LOGOCAL_MTD WRITE $ADDR $DATASIZE $TMPDATA > /dev/null 2>&1
- ADDR=`expr $ADDR + $TMPSIZE`
- fi
-
- rm $TMPDATA > /dev/null 2>&1
-
- #progress
- SPNUM=0
- while [ $SPNUM -lt $PROGSTEP ]
- do
- echo -n '.'
- SPNUM=`expr $SPNUM + 1`
- done
- done
-
- echo ''
-
-#finish
- rm -f $TMPPATH/*.bin > /dev/null 2>&1
-
- if [ $RESULT = 0 ]
- then
- if [ -e $VTMPNAME ]
- then
- /sbin/nandlogical $LOGOCAL_MTD WRITE $VERBLOCK 0x4000 $VTMPNAME > /dev/null 2>&1
- rm -f $VTMPNAME > /dev/null 2>&1
- fi
- if [ -e $MTMPNAME ]
- then
- /sbin/nandlogical $LOGOCAL_MTD WRITE $MVRBLOCK 0x4000 $MTMPNAME > /dev/null 2>&1
- rm -f $MTMPNAME > /dev/null 2>&1
- fi
- echo 'Success!'
- else
- echo 'Error!'
-# exit $RESULT
- fi
- fi
-done
-
-#exit 0
-
-echo 'Please reset'
-while true
-do
-done
diff --git a/packages/zaurus-updater/zaurus-updater.bb b/packages/zaurus-updater/zaurus-updater.bb
index c4e0d87bc7..ecf713d32c 100644
--- a/packages/zaurus-updater/zaurus-updater.bb
+++ b/packages/zaurus-updater/zaurus-updater.bb
@@ -1,7 +1,7 @@
DESCRIPTION = "Encrypted shellscript for the Zaurus ROM update"
DEPENDS = "encdec-updater-native"
LICENSE = "zaurus-updater"
-PR = "r7"
+PR = "r17"
PACKAGES = ""
PACKAGE_ARCH = "${MACHINE_ARCH}"
diff --git a/packages/zaurus-updater/zaurus-updater/.mtn2git_empty b/packages/zaurus-updater/zaurus-updater/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/zaurus-updater/zaurus-updater/.mtn2git_empty
diff --git a/packages/zaurus-updater/zaurus-updater/updater.sh b/packages/zaurus-updater/zaurus-updater/updater.sh
new file mode 100644
index 0000000000..26848cd5a7
--- /dev/null
+++ b/packages/zaurus-updater/zaurus-updater/updater.sh
@@ -0,0 +1,401 @@
+#!/bin/sh
+#
+# One updater.sh to rule them all
+#
+# 2006.10.24 Marcin 'Hrw' Juszkiewicz
+# - started work on common updater.sh
+# - works on poodle, c760, spitz
+# - breaks on tosa
+#
+# 2007.10.08 Marcin 'Hrw' Juszkiewicz
+# - do not allow to flash files bigger then partition size
+# - created functions for common stuff
+#
+# 2007.11.18 Dmitry 'Lumag' Baryshkov
+# - fixes
+# - tosa unbreak
+#
+# 2007.11.19 Marcin 'Hrw' Juszkiewicz
+# - size check unbreak
+# - c760/c860 has bigger rootfs - use it
+#
+# 2007.11.23 Koen Kooi
+# - consistent error messages
+# - fix flashing from case sensitive filesystem (e.g. ext2)
+#
+# 2007.11.23 Matthias 'CoreDump' Hentges
+# - Always treat MTD_PART_SIZE as HEX when comparing sizes
+# - Thanks to ZeroChaos for debugging
+#
+# 2007.12.04 Matthias 'CoreDump' Hentges
+# - Unb0rk flashing of Akita kernels
+#
+# 2007.12.10 Marcin 'Hrw' Juszkiewicz
+# - Reformatted file - please use spaces not tabs
+# - "version check" is only on Tosa and Poodle - breaks other machines
+#
+
+DATAPATH=$1
+TMPPATH=/tmp/update
+TMPDATA=$TMPPATH/tmpdata.bin
+TMPHEAD=$TMPPATH/tmphead.bin
+
+FLASHED_KERNEL=0
+FLASHED_ROOTFS=0
+UNPACKED_ROOTFS=0 # spitz only
+
+RO_MTD_LINE=`cat /proc/mtd | grep "root" | tail -n 1`
+if [ "$RO_MTD_LINE" = "" ]; then
+ RO_MTD_LINE=`cat /proc/mtd | grep "\<NAND\>.*\<2\>" | tail -n 1`
+fi
+RO_MTD_NO=`echo $RO_MTD_LINE | cut -d: -f1 | cut -dd -f2`
+RO_MTD=/dev/mtd$RO_MTD_NO
+ROOTFS_SIZE=`echo $RO_MTD_LINE | cut -d" " -f2`
+
+LOGOCAL_MTD=/dev/mtd1
+
+VERBLOCK=0x48000
+MVRBLOCK=0x70000
+
+RESULT=0
+
+Cleanup()
+{
+ rm -f $VTMPNAME > /dev/null 2>&1
+ rm -f $MTMPNAME > /dev/null 2>&1
+ exit $1
+}
+
+trap 'Cleanup 1' 1 15
+trap '' 2 3
+
+get_dev_pcmcia()
+{
+ while read SOCKET CLASS DRIVER INSTANCE DEVS MAJOR MINOR;
+ do
+ echo $DEVS
+ done
+}
+
+get_dev_pcmcia_slot()
+{
+ grep "^$1" /var/lib/pcmcia/stab | get_dev_pcmcia
+}
+
+check_for_hdd()
+{
+ IDE1=`get_dev_pcmcia_slot 1`
+ if [ "$IDE1" = "" ]; then
+ echo "Error: There is no microdrive. Retrying..."
+ while [ "$IDE1" = "" ]; do
+ IDE1=`get_dev_pcmcia_slot 1`
+ done
+ echo "Microdrive found."
+ fi
+
+ LINUXFMT=ext3
+ MKE2FSOPT=-j
+}
+
+check_for_tar()
+{
+ ### Check that we have a valid tar
+ for TARNAME in gnu-tar GNU-TAR
+ do
+ if [ -e $DATAPATH/$TARNAME ]
+ then
+ TARBIN=$DATAPATH/$TARNAME
+ fi
+ done
+
+ if [ ! -e $TARBIN ]; then
+ echo 'Error: Please place a valid copy of tar as "gnu-tar" on your card.'
+ echo 'Please reset'
+ while true
+ do
+ done
+ fi
+}
+
+do_rootfs_extraction()
+{
+ UNPACKED_ROOTFS=1
+ echo 'HDD root file system'
+ if [ ! -f /hdd1/NotAvailable ]; then
+ umount /hdd1
+ fi
+ echo 'Now formatting...'
+ mke2fs $MKE2FSOPT /dev/${IDE1}1 > /dev/null 2>&1
+ e2fsck -p /dev/${IDE1}1 > /dev/null
+ if [ "$?" != "0" ]; then
+ echo "Error: Unable to create filesystem on microdrive!"
+ exit "$?"
+ fi
+
+ mount -t $LINUXFMT -o noatime /dev/${IDE1}1 /hdd1
+ if [ "$?" != "0" ]; then
+ echo "Error: Unable to mount microdrive!"
+ exit "$?"
+ fi
+
+ cd /hdd1
+ echo 'Now extracting...'
+ gzip -dc $DATAPATH/$TARGETFILE | $TARBIN xf -
+ if [ "$?" != "0" ]; then
+ echo "Error: Unable to extract root filesystem archive!"
+ exit "$?"
+ fi
+
+ echo 'Done.'
+
+ # remount as RO
+ cd /
+ umount /hdd1
+ mount -t $LINUXFMT -o ro,noatime /dev/${IDE1}1 /hdd1
+}
+
+do_flashing()
+{
+ if [ $DATASIZE -gt `printf "%d" $MTD_PART_SIZE` ]
+ then
+ echo "Error: File is too big to flash!"
+ echo "$FLASH_TYPE: [$DATASIZE] > [`printf "%d" ${MTD_PART_SIZE}`]"
+ return
+ fi
+
+ if [ "$ZAURUS" = "tosa" ] || [ "$ZAURUS" = "poodle" ]
+ then
+ #check version
+ /sbin/bcut -s 6 -o $TMPDATA $TMPHEAD
+ if [ `cat $TMPDATA` != "SHARP!" ] > /dev/null 2>&1
+ then
+ #no version info...
+ rm -f $TMPHEAD > /dev/null 2>&1
+ DATAPOS=0
+ fi
+ fi
+
+ if [ $ISFORMATTED = 0 ]
+ then
+ /sbin/eraseall $TARGET_MTD > /dev/null 2>&1
+ ISFORMATTED=1
+ fi
+
+ echo ''
+ echo '0% 100%'
+ PROGSTEP=`expr $DATASIZE / $ONESIZE + 1`
+ PROGSTEP=`expr 25 / $PROGSTEP`
+ if [ $PROGSTEP = 0 ]
+ then
+ PROGSTEP=1
+ fi
+
+ if [ -e $TMPHEAD ]
+ then
+ VTMPNAME=$TMPPATH'/vtmp'`date '+%s'`'.tmp'
+ MTMPNAME=$TMPPATH'/mtmp'`date '+%s'`'.tmp'
+ /sbin/nandlogical $LOGOCAL_MTD READ $VERBLOCK 0x4000 $VTMPNAME > /dev/null 2>&1
+ /sbin/nandlogical $LOGOCAL_MTD READ $MVRBLOCK 0x4000 $MTMPNAME > /dev/null 2>&1
+
+ /sbin/verchg -v $VTMPNAME $TMPHEAD $MODULEID $MTD_PART_SIZE > /dev/null 2>&1
+ /sbin/verchg -m $MTMPNAME $TMPHEAD $MODULEID $MTD_PART_SIZE > /dev/null 2>&1
+ fi
+
+ # Looks like Akita is quite unique when it comes to kernel flashing
+
+ if [ "$ZAURUS" = "akita" ] && [ $FLASH_TYPE = kernel ]; then
+ echo $TARGETFILE':'$DATASIZE'bytes'
+ echo ' ' > /tmp/data
+ /sbin/nandlogical $LOGOCAL_MTD WRITE 0x60100 16 /tmp/data > /dev/null 2>&1
+ /sbin/nandlogical $LOGOCAL_MTD WRITE 0xe0000 $DATASIZE $TARGETFILE > /dev/null 2>&1
+ /sbin/nandlogical $LOGOCAL_MTD WRITE 0x21bff0 16 /tmp/data > /dev/null 2>&1
+ else
+ #loop
+ while [ $DATAPOS -lt $DATASIZE ]
+ do
+ #data create
+ bcut -a $DATAPOS -s $ONESIZE -o $TMPDATA $TARGETFILE
+ TMPSIZE=`wc -c $TMPDATA`
+ TMPSIZE=`echo $TMPSIZE | cut -d' ' -f1`
+ DATAPOS=`expr $DATAPOS + $TMPSIZE`
+
+ #handle data file
+ if [ $ISLOGICAL = 0 ]
+ then
+ next_addr=`/sbin/nandcp -a $ADDR $TMPDATA $TARGET_MTD 2>/dev/null | fgrep "mtd address" | cut -d- -f2 | cut -d\( -f1`
+ if [ "$next_addr" = "" ]; then
+ echo "Error: flash write"
+ rm $TMPDATA > /dev/null 2>&1
+ RESULT=3
+ break;
+ fi
+ ADDR=$next_addr
+ else
+ /sbin/nandlogical $LOGOCAL_MTD WRITE $ADDR $DATASIZE $TMPDATA > /dev/null 2>&1
+ ADDR=`expr $ADDR + $TMPSIZE`
+ fi
+
+ rm $TMPDATA > /dev/null 2>&1
+
+ #progress
+ SPNUM=0
+ while [ $SPNUM -lt $PROGSTEP ]
+ do
+ echo -n '.'
+ SPNUM=`expr $SPNUM + 1`
+ done
+ done
+ fi
+ echo ''
+
+ #finish
+ rm -f $TMPPATH/*.bin > /dev/null 2>&1
+
+ if [ $RESULT = 0 ]
+ then
+ if [ -e $VTMPNAME ]
+ then
+ /sbin/nandlogical $LOGOCAL_MTD WRITE $VERBLOCK 0x4000 $VTMPNAME > /dev/null 2>&1
+ rm -f $VTMPNAME > /dev/null 2>&1
+ fi
+ if [ -e $MTMPNAME ]
+ then
+ /sbin/nandlogical $LOGOCAL_MTD WRITE $MVRBLOCK 0x4000 $MTMPNAME > /dev/null 2>&1
+ rm -f $MTMPNAME > /dev/null 2>&1
+ fi
+ echo 'Done.'
+ else
+ echo 'Error!'
+ fi
+}
+
+### Check model ###
+/sbin/writerominfo
+MODEL=`cat /proc/deviceinfo/product`
+case "$MODEL" in
+ SL-B500|SL-5600)
+ ZAURUS='poodle'
+ ;;
+ SL-6000)
+ ZAURUS='tosa'
+ ;;
+ SL-C1000)
+ ZAURUS='akita'
+ ;;
+ SL-C700|SL-C750|SL-7500|SL-C760|SL-C860)
+ ZAURUS='c7x0'
+ ;;
+ SL-C3000|SL-C3100|SL-C3200)
+ ZAURUS='c3x00'
+ check_for_hdd
+ check_for_tar
+ ;;
+ *)
+ echo 'MODEL: '$MODEL 'is unsupported'
+ echo ''
+ echo 'Please reset'
+ while true
+ do
+ done
+ ;;
+esac
+
+echo 'MODEL: '$MODEL' ('$ZAURUS')'
+
+mkdir -p $TMPPATH > /dev/null 2>&1
+
+cd $DATAPATH/
+
+for TARGETFILE in zimage zImage zImage.bin zimage.bin ZIMAGE ZIMAGE.BIN initrd.bin INITRD.BIN hdimage1.tgz HDIMAGE1.TGZ
+do
+ if [ ! -e $TARGETFILE ]
+ then
+ continue
+ fi
+
+ rm -f $TMPPATH/*.bin > /dev/null 2>&1
+ DATASIZE=`wc -c $TARGETFILE`
+ DATASIZE=`echo $DATASIZE | cut -d' ' -f1`
+
+ # make TARGETFILE lowercase
+ TARGETFILE_LC=`echo $TARGETFILE|tr A-Z a-z`
+
+ case "$TARGETFILE_LC" in
+
+ zimage|zimage.bin)
+ if [ $FLASHED_KERNEL != 0 ]
+ then
+ continue
+ fi
+ FLASHED_KERNEL=1
+ ISLOGICAL=1
+ MODULEID=5
+ MTD_PART_SIZE=0x13C000
+ ADDR=`dc 0xE0000`
+ ISFORMATTED=1
+ DATAPOS=0
+ ONESIZE=524288
+ HDTOP=`expr $DATASIZE - 16`
+ /sbin/bcut -a $HDTOP -s 16 -o $TMPHEAD $TARGETFILE
+ FLASH_TYPE="kernel"
+ do_flashing
+ FLASH_TYPE=""
+ ;;
+
+ initrd.bin)
+ if [ $FLASHED_ROOTFS != 0 ]
+ then
+ continue
+ fi
+ echo 'root file system'
+ FLASHED_ROOTFS=1
+ ISLOGICAL=0
+ MODULEID=6
+ MTD_PART_SIZE="0x$ROOTFS_SIZE"
+ ADDR=0
+ ISFORMATTED=0
+ TARGET_MTD=$RO_MTD
+ DATAPOS=16
+ ONESIZE=1048576
+ /sbin/bcut -s 16 -o $TMPHEAD $TARGETFILE
+ FLASH_TYPE="rootfs"
+ do_flashing
+ FLASH_TYPE=""
+ ;;
+
+ hdimage1.tgz)
+ if [ $UNPACKED_ROOTFS = 0 ]
+ then
+ do_rootfs_extraction
+ fi
+ ;;
+
+ *)
+ ;;
+ esac
+done
+
+# starting shell to test -- remove this from final release
+/bin/sh
+
+# reboot
+exit 0
+
+# bcut usage: bcut [OPTION] <input file>
+
+# -a: start position
+# -s: cut size
+# -o: output file
+
+# ModuleId informations used by verchg Sharp binary:
+#
+# 0 - master
+# 1 - Maintaince
+# 2 - Diagnostics
+# 3 - rescue kernel
+# 4 - rescue rootfs
+# 5 - normal kernel
+# 6 - normal rootfs
+# 7 - /home/
+# 8 - parameter (whatever it means)
+#
diff --git a/packages/zaurusd/files/zaurus-hinge.bl-off b/packages/zaurusd/files/zaurus-hinge.bl-off
index 888f90bfc5..ec3cefb2ca 100644
--- a/packages/zaurusd/files/zaurus-hinge.bl-off
+++ b/packages/zaurusd/files/zaurus-hinge.bl-off
@@ -6,5 +6,13 @@
# Filename: zaurus-hinge.bl-off
# Date: 04-Jun-06
-test -z "${ZD_BINDIR}" && ZD_BINDIR="/usr/bin"
-${ZD_BINDIR}/bl off
+#test -z "${ZD_BINDIR}" && ZD_BINDIR="/usr/bin"
+#${ZD_BINDIR}/bl off
+
+
+STEP=5
+DRIVER="`ls /sys/class/backlight/|head -n 1`"
+BRIGHTNESS_FILE="/sys/class/backlight/$DRIVER/brightness"
+
+cat "$BRIGHTNESS_FILE" > /var/run/display_brightness.tmp
+echo 0 > "$BRIGHTNESS_FILE"
diff --git a/packages/zaurusd/files/zaurus-hinge.bl-on b/packages/zaurusd/files/zaurus-hinge.bl-on
index 6d416ad8c4..61598155f2 100644
--- a/packages/zaurusd/files/zaurus-hinge.bl-on
+++ b/packages/zaurusd/files/zaurus-hinge.bl-on
@@ -8,3 +8,45 @@
test -z "${ZD_BINDIR}" && ZD_BINDIR="/usr/bin"
${ZD_BINDIR}/bl on
+
+# If the backlight does not come back on after a suspend, the driver is
+# still "on" (hence "bl on" does nothing) with a brightness of "0"
+
+( if test "`bl | awk '{print $2}'`" = "0"
+then
+ x=0
+ while test "$x" != 4
+ do
+ bl 10
+ usleep 10
+ bl 50
+ usleep 10
+
+ let x=$x+1
+ done
+
+ if mkdir /var/run/display_brightness.lock
+ then
+ if test -e /var/run/display_brightness.tmp
+ then
+ OLD_VALUE="`cat /var/run/display_brightness.tmp`"
+ echo "OLD BRIGHTNESS SETTING FOUND: $OLD_VALUE"
+
+ if test "$OLD_VALUE" -gt 1
+ then
+ STEP=5
+ DRIVER="`ls /sys/class/backlight/|head -n 1`"
+ BRIGHTNESS_FILE="/sys/class/backlight/$DRIVER/brightness"
+
+ echo "SETTING $OLD_VALUE!"
+ echo "$OLD_VALUE" > "$BRIGHTNESS_FILE"
+ rm /var/run/display_brightness.tmp
+ echo "FINISH!"
+ fi
+ fi
+ rm -rf /var/run/display_brightness.lock
+ else
+ echo "BRIGHTNESS IS LOCKED"
+ fi
+fi ) &
+
diff --git a/packages/zaurusd/files/zaurus-hinge.matchbox-landscape b/packages/zaurusd/files/zaurus-hinge.matchbox-landscape
index e7b92b5140..a048769f7d 100644
--- a/packages/zaurusd/files/zaurus-hinge.matchbox-landscape
+++ b/packages/zaurusd/files/zaurus-hinge.matchbox-landscape
@@ -16,6 +16,10 @@
# urg mbinputmgr should kill below
killproc ${ZD_BINDIR}/matchbox-keyboard
killproc ${ZD_BINDIR}/matchbox-stroke
+
if [ -x ${ZD_BINDIR}/xrandr ]; then
- xrandr -o normal
+ if ! ( xrandr | awk '{print $4}' | grep -q normal )
+ then
+ ${ZD_BINDIR}/xrandr -o normal
+ fi
fi
diff --git a/packages/zaurusd/files/zaurus-hinge.matchbox-portrait b/packages/zaurusd/files/zaurus-hinge.matchbox-portrait
index bd04d328cc..291617cd02 100644
--- a/packages/zaurusd/files/zaurus-hinge.matchbox-portrait
+++ b/packages/zaurusd/files/zaurus-hinge.matchbox-portrait
@@ -1,7 +1,10 @@
#!/bin/sh
if [ -x ${ZD_BINDIR}/xrandr ]; then
- ${ZD_BINDIR}/xrandr -o left
+ if ! ( xrandr | awk '{print $4}' | grep -q left )
+ then
+ ${ZD_BINDIR}/xrandr -o left
+ fi
fi
# just to be extra safe
sleep 1
diff --git a/packages/zaurusd/zaurusd_svn.bb b/packages/zaurusd/zaurusd_svn.bb
index 2b918bbaa3..8bc0b2ba58 100644
--- a/packages/zaurusd/zaurusd_svn.bb
+++ b/packages/zaurusd/zaurusd_svn.bb
@@ -4,7 +4,7 @@ LICENSE = "GPL"
DEPENDS = "tslib"
RDEPENDS = "procps"
PV = "0.0+svn${SRCDATE}"
-PR = "r10"
+PR = "r14"
SRC_URI = "svn://svn.o-hand.com/repos/misc/trunk;module=zaurusd;proto=http \
file://zaurus-hinge.in \
diff --git a/site/arm-common b/site/arm-common
index fb050dbcf1..5d3e68a18a 100644
--- a/site/arm-common
+++ b/site/arm-common
@@ -74,6 +74,9 @@ ac_cv_func_fnmatch_works=${ac_cv_func_fnmatch_works=yes}
# gettext
am_cv_func_working_getline=${am_cv_func_working_getline=yes}
+# gio
+ac_cv_func_getgrgid_r=${ac_cv_func_getgrgid_r=yes}
+
# glib
glib_cv_sizeof_gmutex=${glib_cv_sizeof_gmutex=24}
glib_cv_sizeof_system_thread=${glib_cv_sizeof_system_thread=4}
diff --git a/site/arm-darwin b/site/arm-darwin
new file mode 100644
index 0000000000..77a46dc862
--- /dev/null
+++ b/site/arm-darwin
@@ -0,0 +1,5 @@
+ac_cv_lib_m_sin=${ac_cv_lib_m_sin=yes}
+ac_cv_func_posix_spawn=${ac_cv_func_posix_spawn=no}
+glib_cv_stack_grows=${glib_cv_stack_grows=no}
+glib_cv_uscore=${glib_cv_uscore=no}
+ac_cv_func_posix_getpwuid_r=${ac_cv_func_posix_getpwuid_r=yes}
diff --git a/site/arm-linux b/site/arm-linux
index 9aea75b5a9..868d982ec4 100644
--- a/site/arm-linux
+++ b/site/arm-linux
@@ -4,6 +4,7 @@ ac_cv_func_setgrent_void=yes
ac_cv_func_malloc_0_nonnull=yes
ac_cv_func_malloc_works=yes
ac_cv_func_posix_getpwuid_r=${ac_cv_func_posix_getpwuid_r=yes}
+ac_cv_func_posix_getgrgid_r=${ac_cv_func_posix_getgrgid_r=yes}
ac_cv_func_setvbuf_reversed=no
ac_cv_sizeof___int64=${ac_cv_sizeof___int64=0}
ac_cv_sizeof_char=${ac_cv_sizeof_char=1}
diff --git a/site/common-glibc b/site/common-glibc
index edbf4b41ee..0ec53423f1 100644
--- a/site/common-glibc
+++ b/site/common-glibc
@@ -33,3 +33,14 @@ mono_cv_uscore=${mono_cv_uscore=no}
# guile
ac_cv_func_pthread_attr_getstack=${ac_cv_func_pthread_attr_getstack=yes}
+#gcc-zlib
+ac_cv_func_getpagesize=${ac_cv_func_getpagesize=yes}
+ac_cv_func_memcpy=${ac_cv_func_memcpy=yes}
+ac_cv_func_strerror=${ac_cv_func_strerror=yes}
+
+# squid
+ac_cv_af_unix_large_dgram=${ac_cv_af_unix_large_dgram=yes}
+ac_cv_func_setresuid=${ac_cv_func_setresuid=yes}
+ac_cv_func_va_copy=${ac_cv_func_va_copy=yes}
+ac_cv_func___va_copy=${ac_cv_func___va_copy=yes}
+ac_cv_epoll_works=${ac_cv_epoll_works=yes}